Coi chừng, khi tạo và bố trí loop, ta có thể sa vào ... nghiệp chướng không lối thoát =8-((, tỷ như:
'Tuyên bố biến số
Dim counter As Integer = 0 'Loop bế tắc không lối thoát Do
counter += 1
Loop Until counter = 0
Chú thích:
Mặc dù trước khi vào loop, counter = 0 nhưng với counter += 1 được thi hành trước khi kiểm tra điều kiện counter = 0, ở đây có nghĩa là counter (hiện tại) bằng counter (trước đó là 0) cộng thêm 1 như vậy giá trị của counter bây giờ bằng 1 (vì 0 + 1 = 1).
Đến khi kiểm tra điều kiện counter = 0 ở câu Loop Until counter = 0, điều kiện này sẽ là False, do đó loop bắt đầu lập lại với counter = 2, 3, 4, ... cho đến ... 'muôn đời'. =8-((
Cách trị khi sa vào Infinite Loop:
• Trường hợp chạy ứng dụng (application) trong MS Visual Studio.NET, chọn Debug | Stop
Debugging để chấm dứt.
• Trường hợp chạy ứng dụng (application) bên ngoài MS Visual Studio.NET, nhấp các nút Ctrl
+ Alt + Delete và chọn Task Manager, sau đó chọn ứng dụng (application) có hàng chữ kèm
'Not Responding' trong phần mục Status và nhấp nút End để chấm dứt.
• Cuối cùng, kiểm tra và điều chỉnh lại điều kiện để chấm dứt loop.
Bài tập về Looping Logic: Bước 1:
Tạo dự án Flow Control lưu trữ dưới ngăn chứa Dev. Mục đích dự án này nhằm hiển thị tất cả các ngăn chứa phụ trong dĩa D vào trong 1 bảng liệt kê khi user nhấp nút có nhãn hiệu Go.
Khởi động MS Visual Studio.NET và chọn Visual Basic Projects, Windows Application với tên (Name) là Flow Control ở vị trí D:\Dev như hình sau:
Bước 2:
Bước 3:
• Chọn Form và chọn Properties Windows để đổi tiêu đề (text) Form thành Flow Control.
• Chọn listbox và chọn Properties Windows để đổi tên (Name) thành lstData.
• Chọn nút (button) và chọn Properties Windows để đổi tên (Name) nút thành cmdGo và text =
Go.
Bước 4:
Nhấp đôi vào nút Go để mở 1 window Form1.vb và gõ mã như sau: 1. Gỏ hàng chữ Imports System.IO phiá trên hàng Public Class Form1
2. Gỏ mã vào subroutine cmdGo_Click ( ) như sau (kiểm tra nguồn mã theo hình đính kèm):
Imports System.IO
Private Sub cmdGo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdGo.Click
Dim subfolders( ) As DirectoryInfo
subfolders = New DirectoryInfo("D:\").GetDirectories 'loop
Dim subfolder As DirectoryInfo For Each subfolder In subfolders 'cộng các ngăn chứa phụ vào bảng lstData.Items.Add(subfolder.FullName) Next
End Sub
Chú thích:
Imports dùng cộng thêm nguồn mã System.IO đã thiết kế sẵn trong nền .NET Framework, cho phép
ta dùng object DirectoryInfo và các methods, các đặc tính (properties) liên hệ đến việc tổ chức các tập tin trong máy để truy cập các thông tin cần thiết, tỷ như: thu thập hay hiển thị tên các ngăn chứa, ... Tạo biến số (variables) subfolders loại Array dùng lưu trữ khi truy cập và thu thập các ngăn chứa trong dĩa D:\ với method GetDirectories.
Lưu ý khi cần dùng method (hay property) của 1 object, ta phải bố trí nguồn mã với tên object kèm theo 1 dấu chấm (.) trước tên của method (hay property), tỷ như:
DirectoryInfo("D:\").GetDirectories subfolder.FullName
Cuối cùng, dùng For Each ... In ... Next loop để hiển thị tên các ngăn chứa trong bảng liệt kê. Ta có thể diển đạt như sau: cứ mỗi (For Each) món - ở đây, món hiểu là subfolder trong (In) array subfolders, cộng tên món đó vào bảng liệt kê lstData.
Bước 5:
7.6 Branching Logic
Branching Logic kiểm soát việc tách rời nguồn mã chính, giống như dòng Cửu Long chia thành 9 nhánh phụ rồi cũng hội tụ lại hay trở về nguồn sông mẹ (branching). Thí dụ ở đây tuy không chính xác lắm nhưng cũng đủ cho ta khái niệm về branching, thực tế dòng Cửu Long chia 9 nhánh chảy thẳng ra đại dương.
Ta dùng Method (nhắc lại method là nguồn mã độc lập dùng thực hiện công việc ta muốn làm trong ứng dụng) để thực hiện việc chia nhánh:
• Subroutine: với Sub ... End Sub
• Function: với Function ... End Function
(Xem lại bài 6 về cách dùng Subroutine và Function)
Bài làm ở nhà (Homework)Bài tập 1: Bài tập 1:
Tạo dự án Greeting (giống như trong bài 6) nhưng lần này chỉ có hộp chữ (textbox) và 1 nút (button) tên 'Translation' dùng để hiển thị các câu chào tiếng Nhật khi ta gõ:
• Good Morning vào trong hộp chữ và nhấp nút Translation, ta hiển thị windows có
câu Konichi wa.
• Good Afternoon vào trong hộp chữ và nhấp nút Translation, ta hiển thị windows có
câu Kon ban wa.
• Good Nigth vào trong hộp chữ và nhấp nút Translation, ta hiển thị windows có câu O Yashumi Nasai.
Bài tập 2:
Tạo dự án Count Down có giao diện gồm 1 bảng liệt kê số và 1 nút tên Go. Khi nhấn nút