Vấn đề các lệnh lồng nhau, thoát đột ngột khỏ i1 cấu trúc điều khiển.

Một phần của tài liệu Giáo trình: Máy tính số potx (Trang 112 - 115)

I E= T*R

8.5Vấn đề các lệnh lồng nhau, thoát đột ngột khỏ i1 cấu trúc điều khiển.

CÁC LỆNH THỰC THI VB

8.5Vấn đề các lệnh lồng nhau, thoát đột ngột khỏ i1 cấu trúc điều khiển.

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

Vấn đề thoát đột ngột khỏi cấp điều khiển

Generated by Foxit PDF Creator © Foxit Software

http://www.foxitsoftware.com For evaluation only.

 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).

 Để 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

 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

http://www.foxitsoftware.com For evaluation only.

' 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

 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

Generated by Foxit PDF Creator © Foxit Software

http://www.foxitsoftware.com For evaluation only.

End Sub

Một phần của tài liệu Giáo trình: Máy tính số potx (Trang 112 - 115)