Trang Chủ

Khóa Học Cơ Bản
Microsoft Visual Basic.NET

phụ trách: Vũ Năng Hiền
 

 

 

Bài 06

Bài 08

Index Page

Ai về bến Ngự cho ta nhắn cùng
Nhớ chăng non nước Hương Bình
Có những ngày xanh, Lưu luyến bao tình
Vương mối tơ mành
Đêm Tàn Bến Ngự - Dương Thiệu Tước

 

Bài 7
Kiểm soát nguồn mã
(Controlling Flow in Program)

Trong bài này, ta bàn về cách thức kiểm soát việc xử lý các giải đáp phân tích được trong algorithm, tỷ như:

  • Nếu trong trường hợp ... này, hãy làm chuyện A.

  • Nếu không thì làm chuyện B.

Rằng:

Có yêu thời nói rằng yêu
Chẳng yêu, thì nói một điều cho xong
Làm chi dở đục, dở trong
Lờ đờ như nước, cho lòng chẳng an

Khả năng chuẩn bị quyết định sẽ làm chuyện này hay chuyện kia có điều kiện, Anh Ngữ gọi là branching.

Ngoài ra, ta cũng tham khảo về cách thức lập đi lập lại (looping) một nguồn mã bao nhiêu lần tùy ý hay khi nào thỏa mãn điều kiện định trước.

Một cách tổng quát, ta sẽ bàn về cách thức dùng:

  • If

  • Select Case

  • For loops

  • Do loops

7.1 Làm một quyết định dùng khóa từ (keyword) If

Ta thường thấy một quyết định (making decisions) cần chuẩn bị và thi hành trong phương thức cơ bản (Algorithm). Với If , ta có thể khiến cho máy vi tính có vẻ như một con người có cá tính riêng biệt có thể quyết định muốn làm chuyện này hay chuyện kia tùy ý.

Quyết định kiểu Conditional Logic trong nguồn mã gồm 2 loại:

  • Loại để tìm hiểu ta đang xử lý phần nào trong algorithm hoặc đối phó với các trở ngại định trước hay bất ngờ. Thí dụ như: ta muốn mở 10 tập tin để đọc, trước hết ta cần kiểm tra xem tập tin có hiện diện hay không? Nếu không, ta sẽ phải làm gì? Nếu có, ta cần  kiểm tra xem khi nào tập tin đó được đọc hết? Sau đó, ta sẽ lập lại các bước kiểm tra đó với tập tin kế.

  • Loại để thi hành các phần khác nhau trong algorithm dựa trên dữ kiện nào đó. Thí dụ như: ta muốn gởi email đến 10 khách hàng trong danh sách với điều kiện khách hàng đó có máy vi tính, nếu không ta phải điện thoại hay in thư gởi đến khách hàng.

Các cú pháp (syntax) khi dùng If như sau:

Cú pháp 1:

Cách đơn giản nhất khi làm một quyết định.

If (điều kiện) Then
    (mã thi hành nếu điều kiện thỏa mãn, nghĩa là = True)
End If

Thí dụ:

    'Tuyên bố biến số và giá trị cho intYourAge
    Dim intYourAge
    intYourAge = 70
    'Quyết định và công bố kết quả
    If intYourAge => 65 Then
        MessageBox.Show ("You should retire")
    End If  

Cú pháp 2:

Quyết định với 2 tình trạng trái ngược nhau.

If (điều kiện) Then
    (mã thi hành nếu điều kiện thỏa mãn, nghĩa là = True)
Else
    (mã thi hành nếu điều kiện không được thỏa mãn, nghĩa là = False)
End If

Thí dụ:

    'Tuyên bố biến số và giá trị cho intYourAge
    Dim intYourAge
    intYourAge = 40
    'Quyết định và công bố kết quả
    If intYourAge => 65 Then
        MessageBox.Show ("You should retire.")
    Else
       MessageBox.Show ("You are too young to retire.") 
    End If  

Cú pháp 3:

Quyết định với nhiều tình trạng thay đổi hay khác nhau.

If (điều kiện 1) Then
    (mã thi hành nếu điều kiện 1 thỏa mãn, nghĩa là điều kiện 1 = True)
ElseIf (điều kiện 2) Then
    (mã thi hành nếu điều kiện 2 được thỏa mãn, nghĩa là điều kiện 2 = True)
Else
    (mã thi hành khi không điều kiện nào thỏa mãn, nghĩa là điều kiện 1 và điều kiện 2 đều = False)
End If

Thí dụ:

    'Tuyên bố biến số và giá trị cho intYourAge
    Dim intYourAge
    intYourAge = 50
    'Quyết định và công bố kết quả
    If intYourAge => 65 Then
        MessageBox.Show ("You should retire.")
    ElseIf intYourAge => 45 Then
       MessageBox.Show ("You should pay more to your current scheme.")
    Else
       MessageBox.Show ("You are too young to worry about.") 
    End If  

Cú pháp 4:

Quyết định trong quyết định (Nested If).

If (điều kiện 1) Then
    (mã thi hành nếu điều kiện 1 thỏa mãn, nghĩa là điều kiện 1 = True)
    If (điều kiện 2) Then
    (mã thi hành nếu điều kiện 1 và 2 được thỏa mãn, nghĩa là điều kiện 1 = true và điều kiện 2 = True)
    End If
End If

Thí dụ:

    'Tuyên bố biến số và giá trị cho intYourAge
    Dim intYourAge
    intYourAge = 65
    'Quyết định và công bố kết quả
    If intYourAge > 55 Then
        MessageBox.Show ("You should retire.")
        If intYourAge = 65 Then
            MessageBox.Show ("You must retire.")
        End If
    End If  

Chú thích:

Nếu ta trên 55 tuổi, MessageBox sẽ hiển thị hàng chữ 'You should retire', nhưng nếu ta đúng 65, MessageBox sẽ hiển thị hàng chữ 'You must retire'. Sở dỉ có điều kiện trong điều kiện trên 55 tuổi như vậy là vì tuổi ta có thể là 60 hay 70 miễn sao trên 55 là được, do đó ta kèm thêm một điều kiện nữa để có thể hiển thị hàng chữ 'You must retire' khi nào số tuổi vừa đúng 65.

Cú pháp 5:

Dùng If chỉ trong một hàng mã có thể gọn gàng hơn nhưng không cung cấp cấu trúc algorithm rõ ràng và thường khó đọc hơn.

If (điều kiện) Then (mã thi hành nếu điều kiện = True) Else (mã thi hành nếu điều kiện = False)

hoặc

If (điều kiện) Then (nếu điều kiện =True, thi hành mã 1: mã 2 : mã 3: ...)

Lưu ý: kiểu cú pháp 5 không cần phải có End If ở cuối hàng.

Thí dụ:

   Dim count As Integer
   If count = 8 Then MessageBox.Show ("Count = 8") Else MessageBox.Show ("Count is not 8")
   If count = 8 Then MessageBox.Show ("Count = 8") : count = count + 1 : MessageBox.Show ("Count is now " & count)

Chú thích:

Ở hàng If đầu tiên, ta tuyên bố biến số (variables) count , so sánh với giá trị 8 và hiển thị kết quả.

Hàng If thứ nhì, ta hiển thị kết quả, sau đó cộng thêm 1 vào cùng 1 biến số (variables) count, như vậy count (cuối cùng) = count (với giá trị là 8) + 1 sẽ bằng 9 và hiển thị kết quả Count is now 9.

Tuy nhiên, với chỉ 1 hàng mã như vậy, ta nhận thấy khó đọc và khó theo dõi các bước tiến hành trong algorithm. Trong trường hợp có chừng 10, 20 hàng mã, các bạn thữ xem nguồn mã của ta ... 'rối mù' lên như thế nào? Kiểu viết này cần phải tránh tối đa khi soạn nguồn mã.

Thữ so sánh với mã sau đây với từng bước phân biệt rõ ràng theo 1 quy ước ... 'đá ngầm' =8-)) chung là mã được viết từ trên xuống dưới, ta thấy mã dễ đọc, dễ hiểu hơn gấp bội lần:

   Dim count As Integer
  If count = 8 Then
     MessageBox.Show ("Count = 8")
     count = count + 1
     MessageBox.Show ("Count is now " & count)
  End If

7.2 Comparison Operators

Khi dùng If để kiểm tra các diều kiện, không những ta chỉ so sánh bằng ( = ) không thôi, mà còn so sánh nhiều kiểu khác nhau nữa. Gọi chung là các dấu so sánh (Comparision Operators) gồm có:

  • < > : là dấu không bằng (Not Equal To)

  • < : dấu nhỏ hơn

  • > : dấu lớn hơn

  • < = : dấu nhỏ hơn hoặc bằng

  • > = : dấu lớn hơn hoặc bằng

  • AND : dùng kiểm tra hơn 1 điều kiện

  • OR : dùng kiểm tra điều kiện này hoặc điều kiện nọ

Vài thí dụ:

   If yourSurName < > "Vu" Then
      MessageBox.Show("You are not my relative")
   End If
   If yourAge < 18 Then
      MessageBox.Show("You can not drive a car")
   End If
   If yourSurName > 21 Then
      MessageBox.Show("You can marry")
   End If
   If yourAge <= 64 Then
      MessageBox.Show("You can not retire")
   End If
  If yourAge >= 65 Then
      MessageBox.Show("You must retire")
   End If
  If yourAge >= 18 AND yourHeigth >= 1.60 Then
      MessageBox.Show("You can be a movie star")
   End If
  If yourPreferredDrink = "Rượu" OR yourPreferredDrink = "Bia" Then
      MessageBox.Show("You are ... dân nhậu")
   End If

Chú thích:

Nhắc thêm ở đây về cách dùng ANDOR trong điều kiện. Ta biết khi điều kiện được kiểm tra sẽ cho biết giá trị là True (hay 1, hay 'ON', hay là Tắc hoặc Đóng) hoặc False (hay 0, hay 'OFF', hay là Mở hoặc Khoá). Wow, tiếng Việt cũng ... phong phú quá nhỉ, diển tả một việc mà có cả 2, 3 chữ lận.

Để dễ nhớ, ta thiết lập bảng sau:

AND operator:

Điều kiện A Điều kiện B Kết quả Chú thích
0 0 0  Nếu A False và B False, kết quả sau cùng là False
0 1 0  Nếu A False và B True, kết quả sau cùng là False
1 0 0  Nếu A True và B False, kết quả sau cùng là False
1 1 1  Nếu A True và B True, kết quả sau cùng là True. Ta thấy chỉ có một trường hợp bằng True với dấu AND khi nào cả 2 đều True.

OR operator:

Điều kiện A Điều kiện B Kết quả Chú thích
0 0 0  Nếu A Fasle và B False, kết quả sau cùng là False. Ta thấy chỉ có một trường hợp bằng False với dấu OR khi nào cả 2 đều False.
0 1 1  Nếu A False và B True, kết quả sau cùng là True
1 0 1  Nếu A True và B False, kết quả sau cùng là True
1 1 1  Nếu A True và B True, kết quả sau cùng là True.

7.3 So sánh câu (String Comparison)

Khi so sánh chữ hay câu, ta thường gặp trở ngại khi không lưu ý đến các chữ thường hay chữ Hoa (case sensitive). Nhớ là đối với máy vi tính, khi so sánh như vậy, chữ a thường khác với chữ A Hoa vì chúng có giá trị khác nhau.

Thí dụ 1:

   Dim mySociety As String
   mySociety = "VOVISOFT"
   If mySociety = "Vovisoft" Then
      MessageBox.Show("You are a Vovisoft's member")
   Else
      MessageBox.Show("You are not a Vovisoft's member")
   End IF

Thí dụ 2: dùng Compare method của String object so sánh 2 chữ hay câu như sau:

   Dim mySociety As String
   mySociety = "VOVISOFT"
   If String.Compare (mySociety, "Vovisoft", True) = 0 Then
      MessageBox.Show("You are a Vovisoft's member")
   Else
      MessageBox.Show("You are not a Vovisoft's member")
   End IF

Chú thích:

String.Compare dùng để so sánh 2 giá trị của String và trả về 1 số nguyên (Integer) sau khi so sánh. Nếu method trả về số 0, nghĩa là 2 chữ hay câu giống nhau về giá trị, ngoài ra sẽ trả về số khác số 0.

7.4 Select Case

Đây là loại thứ nhì trong Conditional Logic để thi hành các phần khác nhau trong algorithm dựa trên những điều kiện khác nhau nào đó. Thí dụ như:

  • Nếu là khách hàng A, gởi email đến địa chỉ khách hàng A.

  • Nếu là khách hàng B, gởi email đến địa chỉ khách hàng B.

  • Nếu là khách hàng C, gởi email đến địa chỉ khách hàng C.

  • Nếu là khách hàng D, gởi email đến địa chỉ khách hàng D.

  • Nếu là khách hàng E, gởi email đến địa chỉ khách hàng E.

Ta có thể dùng If ... Then ... ElseIf ... End If như sau:

If khách hàng = "A" Then
  
gởi email đến địa chỉ khách hàng A
ElseIf
khách hàng = "B" Then
  
gởi email đến địa chỉ khách hàng B
ElseIf
khách hàng = "C" Then
  
gởi email đến địa chỉ khách hàng C
ElseIf
khách hàng = "D" Then
  
gởi email đến địa chỉ khách hàng D
ElseIf
khách hàng = "E" Then
  
gởi email đến địa chỉ khách hàng E
End If

Tuy nhiên, nếu ta muốn đổi khách hàng thành công ty chẳng hạn, ta phải thay đổi chữ khách hàng ở từng câu If một, như vậy quả là phiền phức và không đạt năng suất cao như cách dùng cú pháp Select Case :

Cú pháp 1 (Syntax 1):

Select Case công ty
    Case "A"
       
gởi email đến địa chỉ công ty A
    Case "B"
       
gởi email đến địa chỉ công ty B
    Case "C"
       
gởi email đến địa chỉ công ty C
    Case "D"
       
gởi email đến địa chỉ công ty D
    Case "E"
       
gởi email đến địa chỉ công ty E
End Select

Lưu ý:

Khi dùng Select Case, nhớ để ý chữ thường và chữ Hoa là 2 chữ khác biệt nhau, tỷ như: công ty A khác với công ty a.

Cú pháp 2:

Dùng Select Case để chọn trường hợp gồm nhiều điều kiện có một giải đáp chung:

Select Case strMyContactName
    Case "A", "B", "E"
        MessageBox.Show ("Chào các bạn học viên khoá VB.NET", "Greeting")

    Case "C", "D"
        MessageBox.Show ("Chào các bạn mới tham gia khoá VB.NET", "Greeting")

End Select

Trong đó, ta thấy trường hợp A, B và E có chung một giải đáp nhưng khác với trường hợp C và D.

Cú pháp 3:

Dùng Select Case cho các trường hợp ngoại lệ Case Else:

Select Case strMyContactName
    Case "A", "B", "E", "C", D"
        MessageBox.Show ("Chào các bạn học viên khoá VB.NET", "Greeting")

    Case Else
        MessageBox.Show ("Chào quí vị quan khách tham quan khoá VB.NET", "Greeting")

End Select

7.5 Looping Logic

Looping Logic dùng trong trường hợp cần lập đi lập lại nhiều lần (hay đúng hơn nữa, một số lần nhất định) việc thi hành một công tác nào đó, tỷ như: cộng thêm 10 sản phẩm vào bảng liệt kê sản phẩm của công ty, hiển thị (display) 5 CD nhạc tuyệt phẩm hàng đầu trong năm ...

2 loại cơ bản của Looping Logic - For loop và Do loops bao gồm:

  • For ... Next

  • For Each ... In ... Next

  • Do Until ... Loop

  • Do While ... Loop

  • Các trường hợp đặc biệt

Cú pháp 1:

For số lần đếm từ số ... đến số ...
    (thi hành công việc nào đó)
Next

Thí dụ 1:

    'Tuyên bố biến số dùng làm counter
    Dim intCounter
 
   For intCounter = 1 To 10
    MessageBox.Show ("Vovisoft", "Greeting")
   Next 

Thí dụ 2:

    'Tuyên bố biến số dùng làm counter
    Dim intCounter
 
   For intCounter = 10 To 100 Step 10
    MessageBox.Show ("Vovisoft", "Greeting")
   Next 

Chú thích:

Thí dụ 1, tạo biến số (variables) intCounter để đếm từ 1 đến 10, mỗi lần đếm như vậy trong For ... Next loop, ta hiển thị 1 window với hàng chữ Vovisoft.

Thí dụ 2, mỗi lần đếm ta nhảy 10 bước (hay cộng thêm 10 vào số lần đếm) bắt đầu với inCounter = 10 là lần đầu tiên, kế là 20, 30, ... đến 100.

Cú pháp 2:

For Each ... In ...
    (thi hành công việc nào đó)
Next

Thí dụ: Liệt kê tất cả các ngăn chứa phụ (subfolders) trong dĩa C (root directory trong drive C)

    'Tuyên bố biến số loại array dùng lưu trữ các ngăn chứa phụ (subfolders)
    Dim subFolders( ) As DirectoryInfo
    subFolders = New DirectoryInfo("C:\").GetDirectories
   'Loop để liệt kê tất cả các ngăn chứa phụ (subfolders) trong dĩa C
    Dim subFolder As DirectoryInfo 
    For Each subFolder In subFolders
        lstData.Items.Add (subFolder.FullName)
    Next

Chú thích:

Tuyên bố và tạo biến số (variables) loại Array trực thuộc object DirectoryInfo. Dùng method GetDirectories của object DirectoryInfo để lấy và lưu trữ các ngăn chứa phụ trong dĩa C.

Sau đó, dùng For Each ... Next loop kiểm tra từng khoản (món) một trong array subFolders và cộng tên của món đó vào bảng liệt kê tên lstData.

Cú pháp 3:

Do Until (điều kiện)
    (thi hành công việc nào đó)
Loop

Thí dụ: Liệt kê từng số ngẫu nhiên và chấm dứt loop khi nào số đó là số 10

    'Bố trí object tạo số ngẫu nhiên
    Dim random As New Random( )
   'Tuyên bố và bố trí 1 biến số chứa số ngẫu nhiên mặc định là 0
    Dim intRandomNumber As Integer = 0

    'Loop cho đến khi nào số intRandomNumber = 10
    Do Until intRandomNumber = 10
        'Tạo 1 số ngẫu nhiên
        intRandomNumber = random.Next (25)

        'cộng vào bảng liệt kê tên lstData
        lstData.Items.Add (intRandomNumber)
    Loop

Chú thích:

Ta dùng random là 1 instance của object Random để tạo số ngẫu nhiên (random number generator) trong Do Until ... Loop và lưu trữ giá trị đó vào biến số (variables) intRandomNumber. Khi nào giá trị số này bằng 10, ta chấm dứt việc cộng số vào bảng liệt kê tên lstData.

Cú pháp 4:

Ngược lại với Do Until ... Loop là Do While ... Loop. Do While ... Loop chỉ thi hành khi nào điều kiện bằng True, ngược lại với Do Until ... Loop sẽ chấm dứt khi nào điều kiện bằng True.

Do While (điều kiện)
    (thi hành công việc nào đó)
Loop

Thí dụ: Liệt kê từng số ngẫu nhiên và chấm dứt loop khi nào số đó = 10 hay lớn hơn 10

    'Bố trí object tạo số ngẫu nhiên
    Dim random As New Random( )
   'Tuyên bố và bố trí 1 biến số chứa số ngẫu nhiên mặc định là 0
    Dim intRandomNumber As Integer = 0

    'Loop khi số intRandomNumber < 10
    Do While intRandomNumber < 10
        'Tạo 1 số ngẫu nhiên
        intRandomNumber = random.Next (25)

        'cộng vào bảng liệt kê tên lstData
        lstData.Items.Add (intRandomNumber)
    Loop

Chú thích:

Ta dùng random là 1 instance của object Random để tạo số ngẫu nhiên (random number generator) trong Do While ... Loop và lưu trữ giá trị đó vào biến số (variables) intRandomNumber. Khi nào giá trị số này nhỏ hơn 10, ta cộng số đó vào bảng liệt kê tên lstData, nếu không, ta chấm dứt loop.

Cú pháp 5:

Đây là phiên bản khác của Do Until và Do While:

Do
    (thi hành công việc nào đó)
Loop While (điều kiện)

Do
    (thi hành công việc nào đó)
Loop Until (điều kiện)

Lưu ý:

Phiên bản này khác phiên bản trước ở chổ:

  • Thi hành công việc trước

  • Sau đó mới kiểm tra điều kiện để tiếp tục hay chấm dứt loop, như vậy tối thiểu, công việc được thi hành 1 lần.

Các trường hợp đặc biệt:

1. Nested Loops:

Nhiều trường hợp cần đến 2 hay nhiều loop trong algorithm, tỷ như:

   'Tuyên bố và bố trí hàng và cột
    Dim intRow, intColume As Integer

    'Loop hàng từ hàng thứ nhất đến hàng 10
    For intRow = 1 To 10
        'Trong mỗi hàng, loop từng cột một từ cột thứ nhất đến cột 5
        For intColume = 1 To 5
            'hiển thị hàng và cột vào bảng liệt kê tên lstData
            lstData.Items.Add ("Hàng " & intRow & " và cột " & intColume)
        Next
    Next

Chú thích:

Ta dùng 2 lần For ... Next (nested loop) để hiển thị hàng trước cột sau trong bảng liệt kê tên lstData theo thứ tự sau:

Hàng 1 và cột 1
Hàng 1 và cột 2
Hàng 1 và cột 3
Hàng 1 và cột 4
Hàng 1 và cột 5
Hàng 2 và cột 1
Hàng 2 và cột 2
Hàng 2 và cột 3
Hàng 2 và cột 4
Hàng 2 và cột 5
...
...
Hàng 10 và cột 1
Hàng 10 và cột 2
Hàng 10 và cột 3
Hàng 10 và cột 4
Hàng 10 và cột 5

2. Exit For, Exit Do:

Dùng Exit For hay Exit Do để chấm dứt loop (quit) vô điều kiện.

3. Infinite Loop:

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ố trí giao diện với 1 listbox và 1 nút (button):

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
        'thu thập bảng liệt kê các ngăn chứa
        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:

Chạy thử ứng dụng Flow Control và nhấp nút Go:

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:

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 Go, bảng sẽ hiển thị các con số từ 10 xuống 1.

 

First day posted: 25/05/2005
Last updated: 20/06/2005
Version: 1.5

Trang được viếng thăm

Server object error 'ASP 0177 : 800401f3'

Server.CreateObject Failed

/vbnetbasic/Bai07/Bai07.asp, line 1031

800401f3