Tin học dại cương - Chương 8: Các lệnh thực thi VB

pdf 27 trang vanle 2500
Bạn đang xem 20 trang mẫu của tài liệu "Tin học dại cương - Chương 8: Các lệnh thực thi VB", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdftin_hoc_dai_cuong_chuong_8_cac_lenh_thuc_thi_vb.pdf

Nội dung text: Tin học dại cương - Chương 8: Các lệnh thực thi VB

  1. MÔN TIN HỌC Ch ươ ng 8 CÁC LỆNH THỰC THI VB 8.1 T ổng quát v ề ngôn ng ữ VB 8.2 Các l ệnh gán. 8.3 Các l ệnh ki ểm tra điều ki ện & r ẽ nhánh 8.4 Các l ệnh l ặp 8.5 V ấn đề l ồng nhau gi ữa các l ệnh 8.6 Thoát độ t ng ột kh ỏi kh ỏi c ấp điều khi ển 8.7 L ệnh g ọi hàm/th ủ t ục Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 209
  2. 8.1 Tổng quát về các l ệnh thực thi VB  Ta đã bi ết gi ải thu ật để gi ải quy ết 1 vấn đề nào đó là trình tự các công vi ệc nh ỏ hơn, nếu ta th ực hi ện đúng trình tự các công vi ệc nh ỏ hơn này thì sẽ gi ải quy ết đượ c vấn đề lớn.  VB (hay ngôn ng ữ lập trình khác) cung cấp 1 tập các lệnh th ực thi, mỗi lệnh th ực thi đượ c dùng để miêu tả 1 công vi ệc nh ỏ trong 1 gi ải thu ật với ý tưở ng chung nh ư sau:  Nếu tồn tại lệnh th ực thi miêu tả đượ c công vi ệc nh ỏ của gi ải thu ật thì ta dùng lệnh th ực thi này.  Nếu công vi ệc nh ỏ vẫn còn quá ph ức tạp và không có lệnh th ực thi nào miêu tả đượ c thì ta dùng lệnh gọi th ủ tục (Function, Sub, Property) trong đó th ủ tục là trình tự các lệnh th ực hi ện công vi ệc nh ỏ này  Hầu hết các lệnh th ực thi có ch ứa bi ểu th ức và dùng kết qu ả của bi ểu th ức này để quy ết đị nh công vi ệc kế ti ếp cần đượ c th ực hi ện ⇒ ta th ườ ng gọi các lệnh th ực thi là các cấu trúc điều khi ển. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 210
  3. Tổng quát về các l ệnh thực thi VB (tt)  Để dễ học, dễ nh ớ và dễ dùng, VB (c ũng nh ư các ngôn ng ữ khác) ch ỉ cung cấp 1 số lượ ng rất nh ỏ các lệnh th ực thi:  Nhóm lệnh không điều khi ển: o Lệnh gán dữ li ệu vào 1 bi ến. o Lệnh gán tham kh ảo đế n đố i tượ ng vào 1 bi ến tham kh ảo.  Nhóm lệnh tạo quy ết đị nh: o Lệnh ki ểm tra điều ki ện lu ận lý If Then Else o Lệnh ki ểm tra điều ki ện số học Select Case  Nhóm lệnh lặp: o Lệnh lặp Do Loop o Lệnh lặp For Next o Lệnh lặp For Each Next  Nhóm lệnh gọi th ủ tục: o Lệnh gọi th ủ tục o Lệnh thoát kh ỏi cấu trúc điều khi ển Exit Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 211
  4. 8.2 Lệnh gán dữ li ệu  Lệnh đượ c dùng nhi ều nh ất trong 1 ch ươ ng trình là lệnh gán giá tr ị dữ li ệu vào 1 vùng nh ớ để lưu tr ữ lại dữ li ệu này hầu sử dụng lại nó sau đó. Chúng ta đã th ấy lệnh này nhi ều lần trong các ch ươ ng tr ướ c, bây gi ờ chúng ta nói rõ hơn về nó. Cú pháp: lvar = expr  bi ểu th ức bên ph ải sẽ đượ c tính để tạo ra kết qu ả (1 giá tr ị cụ th ể thu ộc 1 ki ểu cụ th ể), giá tr ị này sẽ đượ c gán vào ô nh ớ do lvar qui đị nh. Tr ướ c khi gán, VB sẽ ki ểm tra ki ểu của 2 ph ần tử (qui tắc ki ểm tra sẽ đượ c trình bày sau).  lvar th ườ ng là 1 bi ến dữ li ệu cơ bản, nh ưng có th ể đệ qui theo qui tắc: o nếu lvar là bi ến dãy thì 1 ph ần tử dãy có th ể là lvar. o nếu lvar là bi ến dữ li ệu ng ườ i dùng thì 1 field của nó có th ể là lvar. o nếu lvar là bi ến đố i tượ ng thì 1 thu ộc tính của đố i tượ ng có th ể là lvar. Ví dụ: dblDispValue = dblDispValue + intNegative * d * (10 ^ -bytPosDigit) Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 212
  5. Lệnh gán tham khảo đến đối t ượng  Nh ư đã đượ c trình bày trong ch ươ ng 5, bi ến đố i tượ ng (có ki ểu là Object hay tên class module nào đó) ch ỉ ch ứa tham kh ảo đế n đố i tượ ng ch ứ không ch ứa tr ực ti ếp đố i tượ ng. Khi mới đị nh ngh ĩa, nh ững bi ến này ch ưa tham kh ảo đế n đố i tượ ng cụ th ể nào, do đó tr ướ c khi dùng chúng, ta ph ải gán tham kh ảo của đố i tượ ng cụ th ể vào bi ến. Cú pháp: Set lvar = expr  bi ểu th ức bên ph ải sẽ đượ c tính để tạo ra kết qu ả là 1 tham kh ảo đế n đố i tượ ng, tham kh ảo này sẽ đượ c gán vào ô nh ớ do lvar qui đị nh. Tr ướ c khi gán, VB sẽ ki ểm tra ki ểu của 2 ph ần tử (qui tắc ki ểm tra sẽ đượ c trình bày sau).  lvar th ườ ng là 1 bi ến đố i tượ ng cơ bản, nh ưng có th ể đệ qui theo qui tắc: o nếu lvar là bi ến dãy thì 1 ph ần tử dãy có th ể là lvar. o nếu lvar là bi ến dữ li ệu ng ườ i dùng thì 1 field của nó có th ể là lvar. o nếu lvar là bi ến đố i tượ ng thì 1 thu ộc tính của đố i tượ ng có th ể là lvar. Ví dụ: Set objClipbd = New Clipboard Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 213
  6. 8.3 Lệnh ki ểm tra điều ki ện luận lý IF  Cho phép dựa vào kết qu ả lu ận lý (tính đượ c từ 1 bi ểu th ức lu ận lý) để quy ết đị nh thi hành 1 trong 2 nhánh lệnh. Sau khi th ực hi ện 1 trong 2 nhánh lệnh, ch ươ ng trình sẽ ti ếp tục thi hành lệnh ngay sau lệnh IF. Có nhi ều cú pháp khác nhau: Cú pháp 1a: If condition Then Statement1 [Else Statement2 ]  condition là 1 bi ểu th ức lu ận lý miêu tả điều ki ện cần ki ểm tra, nó có kết qu ả True/False.  Statement1, Statement2 là lệnh th ực thi VB bất kỳ.  nếu kết qu ả là True thì thi hành Statement1.  nếu kết qu ả là False và có dùng Else thì thi hành Statement2. Ví dụ: If blnThaybenh Then MsgBox("Th ầy bệnh. Sinh viên về ngh ỉ") Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 214
  7. Lệnh ki ểm tra điều ki ện luận lý IF (tt) Cú pháp 2: If condition Then [Statement]+ End If  condition là 1 bi ểu th ức lu ận lý miêu tả điều ki ện cần ki ểm tra, nó có kết qu ả True/False.  [Statement]+ là danh sách các lệnh th ực thi VB bất kỳ.  nếu kết qu ả là True thì thi hành các lệnh [Statement]+ , nếu kết qu ả là False thi thôi. Ví dụ: If del >=0 Then x1 = (-b-sqr(del))/(2*a) x2 = (-b+sqr(del))/(2*a) MsgBox("x1= " & x1 & " ,x2= " & x2) End If Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 215
  8. Lệnh ki ểm tra điều ki ện luận lý IF (tt) Cú pháp 3: If condition Then [Statement1]+ Else [Statement2]+ End If  condition là 1 bi ểu th ức lu ận lý miêu tả điều ki ện cần ki ểm tra, nó có kết qu ả True/False.  [Statement1]+, [Statement2]+ là danh sách các lệnh th ực thi VB bất kỳ.  nếu kết qu ả là True thì thi hành các lệnh [Statement1]+ , nếu kết qu ả là False thì thi hành các lệnh [Statement2]+ . Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 216
  9. Lệnh ki ểm tra điều ki ện luận lý IF (tt) Ví dụ: If del >=0 Then x1 = (-b-sqr(del))/(2*a) x2 = (-b+sqr(del))/(2*a) MsgBox("x1= " & x1 & " ,x2= " & x2) Else MsgBox("Ph ươ ng trình vô nghi ệm") End If Ví d ụ: hi ệu ch ỉnh tr ị ph ần t ử Display khi ng ườ i dùng nh ập thêm ký s ố d If (blnFpoint) Then ' ph ần l ẻ bytPosDigit = bytPosDigit + 1 dblDispValue = dblDispValue + intPosNeg * d * (10 ^ -bytPosDigit) Else ' ph ần nguyên dblDispValue = dblDispValue * 10 + intPosNeg * d End If Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 217
  10. Lệnh ki ểm tra điều ki ện số học Select Cú pháp: Select Case condition Case expr1 [Statement1]+ Case expr2 [Statement2]+ Case Else [Statementn]+ End Select  condition là 1 bi ểu th ức số học miêu tả điều ki ện cần ki ểm tra, nó có giá tr ị số.  [Statement1]+, [Statement2]+ là danh sách các lệnh th ực thi VB bất kỳ.  tùy giá tr ị của điều ki ện trùng với nhánh Case nào mà các lệnh VB trong nhánh đó đượ c thi hành, sau đó VB sẽ thi hành lệnh ngay sau lệnh Select. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 218
  11. Lệnh ki ểm tra điều ki ện số học Select (tt) Thí d ụ sau là l ệnh Select ph ục v ụ vi ệc th ực hi ện 1 nút l ệnh trong trình MiniCalculator mà ta s ẽ th ực hành: Select Case bytOperationId Case IDC_ADD ' phép c ộng dblDispValue = dblOldValue + dblDispValue txtDisplay.Text = Str(dblDispValue) Case IDC_SUB ' phép tr ừ dblDispValue = dblOldValue - dblDispValue txtDisplay.Text = Str(dblDispValue) Case IDC_MUL ' phép nhân dblDispValue = dblOldValue * dblDispValue txtDisplay.Text = Str(dblDispValue) Case IDC_DIV ' phép chia dblDispValue = dblOldValue / dblDispValue txtDisplay.Text = Str(dblDispValue) End Select Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 219
  12. Lệnh ki ểm tra điều ki ện số học On GoSub VB còn cung c ấp 1 l ệnh khác để ki ểm tra điều ki ện s ố h ọc, nh ưng y ếu hơn l ệnh Select, đó là l ệnh On GoSub (th ực ra đây là l ệnh c ủa ngôn ng ữ Basic nguyên th ủy, Microsoft th ấy ch ưa trong sáng nên mới cung c ấp thêm l ệnh Select). Cú pháp nh ư sau: On condition GoSub label1, label2, label3,  condition là 1 bi ểu th ức số học và nên có giá tr ị từ 1 tới n, trong đó n là số lượ ng nhãn lệnh đượ c li ệt kê sau từ khóa GoSub.  nếu giá tr ị của condition là i thì máy sẽ gọi 'subroutine' bắt đầ u từ lệnh có nhãn là labeli.  'subroutine' là 1 danh sách gồm nhi ều lệnh để th ực hi ện 1 công vi ệc nào đó (có th ể lớn, có th ể nh ỏ) với đặ c điểm lệnh cu ối trong danh sách là lệnh Return để tr ả điều khi ển về lệnh gọi GoSub.  Để xác đị nh đượ c lệnh cần nh ảy đế n, VB cho phép dùng 1 nhãn gợi nh ớ (danh hi ệu) hay 1 nhãn số (s ố) kết hợp với lệnh cần tham kh ảo (đừ ng lạm dụng tính ch ất này để đặ t nhãn cho mọi lệnh trong ch ươ ng trình). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 220
  13. Lệnh ki ểm tra điều ki ện số học On GoSub (tt) Đoạn code sau có công d ụng nh ư slide thí d ụ dùng l ệnh Select case (n ếu IDC_ADD = 1, IDC_SUB = 2, IDC_MUL = 3, IDC_DIV = 4): On bytOperationId GoSub LblAdd, LblSub, LblMul, LblDiv LblAdd: dblDispValue = dblOldValue + dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr ả đìều khi ển v ề l ệnh GoSub LblSub: dblDispValue = dblOldValue - dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr ả đìều khi ển v ề l ệnh GoSub LblMul: dblDispValue = dblOldValue * dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr ả đìều khi ển v ề l ệnh GoSub LblDiv: dblDispValue = dblOldValue / dblDispValue txtDisplay.Text = Str(dblDispValue) return ' tr ả đìều khi ển v ề l ệnh GoSub Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 221
  14. Lệnh ki ểm tra điều ki ện số học On GoTo 1 bi ến th ể khác c ủa On GoSub là On Goto, ở đây điều khi ển s ẽ không tr ả l ại lệnh On Goto n ữa. Đoạn code sau có công d ụng nh ư slide tr ướ c: On bytOperationId GoTo LblAdd, LblSub, LblMul, LblDiv Continue: LblAdd: dblDispValue = dblOldValue + dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue ' nh ảy không điều ki ện v ề nhãn Continue LblSub: dblDispValue = dblOldValue - dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue LblMul: dblDispValue = dblOldValue * dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue LblDiv: dblDispValue = dblOldValue / dblDispValue txtDisplay.Text = Str(dblDispValue) Goto Continue Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 222
  15. 8.4 Lệnh l ặp Do Loop Cú pháp 1: Do While condition [Statement]+ Loop  condition là 1 bi ểu th ức lu ận lý miêu tả điều ki ện cần ki ểm tra, nó có kết qu ả True/False.  [Statement ]+ là danh sách các lệnh th ực thi VB bất kỳ.  tính giá tr ị condition , nếu kết qu ả là True thì thi hành các lệnh [Statement]+ , rồi lặp lại qui trình trên đế n lúc condition có giá tr ị False thì ng ừng vòng lặp ⇒ thích hợp cho vi ệc lặp từ 0 tới n lần. Ví dụ: tính 10! giaithua = 1 i = 1 Do While i <=10 giaithua = giaithua * i i = i+1 Loop Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 223
  16. Lệnh l ặp While Wend  VB còn cung cấp 1 lệnh khác có ch ức năng gi ống nh ư lệnh Do While Loop, cú pháp của nó nh ư sau: While condition [Statement]+ Wend  condition là 1 bi ểu th ức lu ận lý miêu tả điều ki ện cần ki ểm tra, nó có kết qu ả True/False.  [Statement ]+ là danh sách các lệnh th ực thi VB bất kỳ.  tính giá tr ị condition , nếu kết qu ả là True thì thi hành các lệnh [Statement]+ , rồi lặp lại qui trình trên đế n lúc condition có giá tr ị False thì ng ừng vòng lặp ⇒ thích hợp cho vi ệc lặp từ 0 tới n lần. Ví dụ: tính 10! giaithua = 1 i = 1 While i <=10 giaithua = giaithua * i i = i+1 Wend Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 224
  17. Lệnh l ặp Do Loop (tt) Cú pháp 2: Do [Statement]+ Loop While condition  condition là 1 bi ểu th ức lu ận lý miêu tả điều ki ện cần ki ểm tra, nó có kết qu ả True/False.  [Statement ]+ là danh sách các lệnh th ực thi VB bất kỳ.  thi hành các lệnh [Statement]+ rồi ki ểm tra condition , nếu có giá tr ị True thì lặp lại qui trình trên đế n lúc nó có giá tr ị False thì ng ừng vòng lặp ⇒ thích hợp cho vi ệc lặp từ 1 tới n lần. Ví dụ: tính 10! giaithua = 1 i = 1 Do giaithua = giaithua * i i = i+1 Loop While i <=10 Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 225
  18. Lệnh l ặp Do Loop (tt) Cú pháp 3: Do Until condition [Statement]+ Loop Cú pháp 4: Do [Statement]+ Loop Until condition  condition là 1 bi ểu th ức lu ận lý miêu tả điều ki ện cần ki ểm tra, nó có kết qu ả True/False.  [Statement ]+ là danh sách các lệnh th ực thi VB bất kỳ.  gi ống với cú pháp 1 và 2 nh ưng thay vì điều ki ện th ực hi ện vòng lặp là True thì bây gi ờ ng ượ c lại là False mới thi hành vòng lặp. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 226
  19. Lệnh l ặp For Next Cú pháp 1: For counter = start To end [Step increment ] [Statement]+ Next [counter]  counter là bi ến điều khi ển số lần lặp, start là bi ểu th ức qui đị nh giá tr ị đầ u của counter , end qui đị nh giá tr ị cu ối, increment miêu tả bướ c tăng (âm là gi ảm, default là 1).  [Statement ]+ là danh sách các lệnh th ực thi VB bất kỳ.  thi hành các lệnh [Statement]+ với số lần đượ c qui đị nh bởi bi ến điều khi ển. Ví dụ: tính 10! giaithua =1 for i = 1 to 10 giaithua = giaithua * i Next i Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 227
  20. Lệnh l ặp For Next (tt) Cú pháp 2: For Each element In group [Statement]+ Next [element]  group là 1 collection các đố i tượ ng hay 1 dãy các ph ần tử. element là bi ến để ch ứa từng đố i tượ ng hay từng ph ần tử trong group.  Statement là 1 lệnh th ực thi VB bất kỳ.  thi hành các lệnh [Statement]+ với từng ph ần tử trong 1 dãy hay với từng đố i tượ ng trong 1 collection. Ví dụ: hi ển th ị các đố i tượ ng đồ họa của 1 ứng dụng Dim objGraphObj As Object For Each GraphObj In GraphObjList GraphObj.Draw ' hi ển th ị đố i tượ ng Next GraphObj Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 228
  21. 8.5 Các l ệnh l ồng nhau  Nh ư ta đã th ấy trong cú pháp của hầu hết các lệnh VB đề u có ch ứa thành ph ần Statement, đây là 1 lệnh th ực thi VB bất kỳ ⇒ ta gọi cú pháp đị nh ngh ĩa lệnh VB là đệ qui ⇒ tạo ra các lệnh VB lồng nhau. Ta gọi cấp ngoài cùng là cấp 1, các lệnh hi ện di ện trong cú pháp của lệnh cấp 1 đượ c gọi là lệnh cấp 2, các lệnh hi ện di ện trong cú pháp của lệnh cấp 2 đượ c gọi là lệnh cấp 3, Để dễ đọ c, các lệnh cấp th ứ i nên dóng hàng nh ờ n ký tự Tab. Ví dụ: đoạn ch ươ ng trình tính ma tr ận tổng của 2 ma tr ận Dim A(N,N) As Double, B(N,N) As Double Dim C(N,N) As Double For i = 1 to n ' duy ệt theo hàng For j = 1 to n ' duy ệt theo cột C(i,j) = A(i,j) + B(i,j) Next j Next i Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 229
  22. 8.6 Vấn đề thoát đột ngột khỏi c ấp điều khi ển  Nh ư ta đã th ấy trong cú pháp của hầu hết các lệnh VB đề u có ch ứa thành ph ần [Statement]+. Theo trình tự thi hành thông th ườ ng, các lệnh bên trong này sẽ đượ c th ực thi tu ần tự, hết lệnh này đế n lệnh khác cho đế n lệnh cu ối, lúc này thì vi ệc thi hành lệnh cha mới có th ể kết thúc. Tuy nhiên trong 1 vài tr ạng thái thi hành đặ c bi ệt, ta mu ốn thoát ra kh ỏi lệnh cha độ t ng ột ch ứ không mu ốn th ực thi hết các lệnh con trong danh sách. Để ph ục vụ yêu cầu này, VB cung cấp lệnh Exit với cú pháp sau đây: Exit [For | Do | Property | Sub | Function ]  Lưu ý VB cho phép dùng Exit để thoát kh ỏi tr ực ti ếp ra nhi ều cấp. VB không cung cấp lệnh Exit If và Exit While để thoát kh ỏi lệnh If và lệnh While ⇒ dùng lệnh Do Loop thay th ế lệnh While và/ho ặc lệnh Goto (đượ c trình bày sau). Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 230
  23. Vấn đề thoát đột ngột khỏi c ấp điều khi ển (tt)  Để th ấy vi ệc dùng các l ệnh l ồng nhau và yêu c ầu c ần thoát kh ỏi độ t ng ột 1 c ấp điều khi ển nào đó, ta hãy xem th ủ t ục sau, nó cho phép in ra t ất c ả các font ch ữ mà có th ể dùng để hi ển th ị lên màn hình l ẫn in ra máy in. Private Sub Form_Click() Dim objSFont As Object, objPFont As Object ' duy ệt t ừng font màn hình For Each objSFont In Screen.Fonts() ' duy ệt t ừng font máy in For Each objPFont In Printer.Fonts() If objSFont = objPFont Then Print objSfont End If Next objPFont Next objSFont End Sub Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 231
  24. Vấn đề thoát đột ngột khỏi c ấp điều khi ển (tt)  Quan sát l ệnh If ta th ấy r ằng điều ki ện ch ỉ đúng t ối đa 1 l ần trong vòng lặp objPFont, do đó khi đã th ỏa điều ki ện r ồi thì ta nên thoát kh ỏi vòng lặp này ngay ( để th ời gian ch ạy ít h ơn ⇒ hi ệu qu ả h ơn). Private Sub Form_Click() Dim objSFont As Object, objPFont As Object ' duy ệt t ừng font màn hình For Each objSFont In Screen.Fonts() ' duy ệt t ừng font máy in For Each objPFont In Printer.Fonts() If objSFont = objPFont Then Print objSfont Exit For 'thoát độ t ng ột kh ỏi vòng For trong cùng End If Next objPFont Next objSFont End Sub Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 232
  25. Vấn đề thoát khỏi c ấp điều khi ển đột ngột (tt)  Cũng thí d ụ ở slide tr ướ c, nh ưng n ếu ta ch ỉ mu ốn in tên font ch ữ đầ u tiên đượ c dùng b ởi c ả màn hình và máy in, thì ta ph ải dùng l ệnh Exit Sub sau khi đã in tên font đầ u tiên này. Private Sub Form_Click() Dim SFont As objObject, objPFont As Object ' duy ệt t ừng font màn hình For Each objSFont In Screen.Fonts() ' duy ệt t ừng font máy in For Each objPFont In Printer.Fonts() If objSFont = objPFont Then Print objSfont Exit Sub 'thoát độ t ng ột kh ỏi th ủ t ục End If Next objPFont Next objSFont End Sub Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 233
  26. 8.7 Lệnh gọi thủ t ục  Th ủ tục là ph ươ ng ti ện phân chia code của module (class, form, standard) ra nhi ều đơ n vị nh ỏ hơn để dễ qu ản lý và sử dụng. Đây là vấn đề khá lớn và sẽ đượ c trình bày chi ti ết trong ch ươ ng kế.  Ở đây chúng ta gi ới thi ệu 1 vài ý tưở ng ban đầ u về th ủ tục đủ để gi ới thi ệu lệnh gọi (s ử dụng) chúng. Th ủ tục là 1 danh sách các lệnh VB th ực hi ện 1 ch ức năng rõ ràng (và th ườ ng đơ n gi ản), các lệnh này đượ c họp thành 1 đơ n vị và đượ c gán cho 1 tên nh ận dạng, tên này nên gợi ý đượ c ch ức năng của th ủ tục (thí dụ ta đặ t danh sách các lệnh VB tính cos của góc x trong 1 đơ n vị và đặ t tên cho nó là Cos).  Để th ủ tục có độ sử dụng cao, khi đị nh ngh ĩa nó ng ườ i ta kết hợp 1 danh sách tham số hình th ức với nó. Mỗi tham số hình th ức miêu tả 1 dữ li ệu mà th ủ tục sẽ xử lý khi th ủ tục đượ c thi hành. Các tham số là ph ươ ng ti ện trao đổ i dữ li ệu gi ữa lệnh gọi và code của th ủ tục. Thí dụ ta kết hợp với th ủ tục Cos 1 tham số là góc x, ta nói Cos (x) là th ủ tục tính Cos của góc x. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 234
  27. Lệnh gọi thủ t ục (tt)  Sau khi đã đị nh ngh ĩa th ủ t ục, ta có th ể dùng (g ọi) nó. Th ủ t ục ch ỉ đượ c thi hành khi ng ườ i ta g ọi nó b ằng l ệnh g ọi th ủ t ục. Cú pháp c ủa lệnh g ọi nh ư sau: [Call] name [arglist] Ví dụ: gi ả sử ta đã đị nh ngh ĩa (vi ết) 1 th ủ tục sau đây: Private Sub Update_Display(d As Byte) nó cho phép hi ệu ch ỉnh giá tr ị Display sau khi ng ườ i dùng ấn thêm ký số d. Nh ư vậy khi ng ườ i dùng ấn thêm ký số 5, ta sẽ th ực hi ện gọi th ủ tục nh ư sau: Call Update_Display (5) hay: Update_Display (5) Lưu ý: Trong tr ườ ng hợp gọi th ủ tục không có bất kỳ tham số nào ta nên dùng thêm từ khóa "Call' để ch ươ ng trình trong sáng, dễ đọ c. Môn: Tin h ọc Khoa Công ngh ệ Thông tin Ch ươ ng 8: Các l ệnh th ực thi VB Tr ườ ng ĐH Bách Khoa Tp.HCM Slide 235