II.5 Các vòng lặp,…

Một phần của tài liệu Giao trinh visual basic 2008x (Trang 43 - 48)

I. Giới thiệu lập trình hướng đối tượng

II.5 Các vòng lặp,…

Vòng lặp là cái mà cứ lặp đi và lặp lại một việc gì đó. Nó rất tiện trong việc lập trình . Hãy xem ví dụ sau đây:

Giả sử bạn muốn tính kết quả của các số từ 1 đến 4. Bạn có thể làm như sau:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Dim answer AsInteger

2.

3. answer = 1 + 2 + 3 + 4

4.

5. MsgBox answer

Đoạn code trên rất đơn giản và cũng không dài lắm. Nhưng bạn thử nghĩ nếu chúng ta muốn cộng một nghìn số liên tiếp thì sao? Nó là công việc rất vất vả nếu cứ gõ từng số(:| . Nhưng công việc này sẽ được đơn giản đi nhờ vòng lặp(Loop).

Bạn hãy nhớ là vòng lặp sẽ được lặp lại cho đến khi nào nó được ngừng chứ sẽ không diễn ra liên tục.

1- Vòng lặp For  For Loop

Dạng đầu tiên của vòng lặp mà chúng ta tìm hiểu gọi là For Loop. Nó là một dạng cơ bản của vòng lặp mà bạn sẽ sử dụng trong lập trình. Hãy bắt đầu nghiên cứu nó nào

button đó và gõ đoạn mã sau vào:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Dim answer AsInteger

2. Dim startNumber AsInteger

3.

4. answer = 0

5.

6. For startNumber = 1To4

7.

8. answer = answer + startNumber 9.

10. Next startNumber 11.

12. MsgBox answer

Chạy chương trình, nhấn lên button. Số 10 được hiển thị lên một hộp thông báo. Chúng ta hãy khảo sát đoạn code trên:

Đầu tiên khai báo 2 biến và gán biến answer thành 0. Tiếp theo ta viết code cho vòng lặp:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. For startNumber = 1To4

2.

3. answer = answer + startNumber 4.

5. Next startNumber

Chúng ta bắt đầu vòng lặp bằng cách nói với VB dạng vòng lặp mà ta muốn sử dụng. Trên đây là vòng lặp For:

For startNumber = 1 To 4 Tiếp theo ta cần nói với VB số mà ta muốn vòng lặp bắt đầu:

For startNumber = 1 To 4 (adsbygoogle = window.adsbygoogle || []).push({});

Ở đây là ta nói: "Vòng lặp sẽ bắt đầu từ số 1". Biến startNumber có thể sử dụng vào việc mà bạn thích. Một tên biến rất phổ biến để bắt đầu một vòng lặp là kí tự i (i=1).

Tiếp đến, ta nói với VB số mà vòng lặp kết thúc:

For startNumber = 1 To 4

Từ To đứng trước một số hoặc một biến để nói với VB số lần mà bạn muốn vòng lặp thực hiện. Ở đây ta nói với VB lặp cho đến khi startNumber bằng 4.

Dòng lệnh để nói với VB tiếp tục thực hiện vòng lặp là: Next startNumber

Khi VB thực hiện dòng lệnh này, nó kiểm tra biến startNumber và cộng thêm cho nó 1. Nói cách khác, lấy số tiếp theo của nó sau khi đã biến đã được kiểm tra.

Sau việc làm trên VB sẽ lại quay trở lại For. Việc này là một vòng lặp. Để dừng vòng lặp lại, nó kiểm tra biến startNumber, và xem nó có bằng số kết thúc không. Trong trường hợp này thì số kết thúc là 4. Bởi vì Next startNumber cộng 1 vào startNumber, sau đó startNumber mang giá trị 2. Nếu startNumber mang giá trị 2, VB có thể dừng vòng lặp lại được chưa? Chưa thể bởi vì vòng lặp sẽ kết thúc cho đến khi nhận giá trị 4. Vòng lặp được tiếp tục. Khi startNumber lớn hơn số kết thúc, VB thoát khỏi vòng lặp và thực hiện tiếp các đoạn code đằng sau.

Hãy nhớ rằng tại sao chúng ta lại sử dụng vòng lặp: nó giúp cho việc biên dịch code lặp đi lặp lại. Để kiểm chứng điều này, hãy sửa đoạn code thành:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Dim startNumber AsInteger

2.

3. For startNumber = 1To4

4.

5. MsgBox("Start Number = "& startNumber) 6.

7. Next startNumber

Chạy chương trình, và nhấn vào button. Có chuyện gì xảy ra? Bạn sẽ thấy có những hộp thoại lần lượt hiện ra với những dòng chữ sau:

Start Number = 1 Start Number = 2 Start Number = 3 Start Number = 4

Mỗi lần thực vòng lặp, một hộp thông báo được thi hành. Bạn sẽ nhấn OK 4 lần - startNumber = 1 to 4

Tóm tắt:

Tổng kết lại ta có:

1. Một vòng lặp For cần một số để bắt đầu và một số kết thúc.

2. Một vòng lặp For cũng cần một lệnh để lấy số tiếp theo trong vòng lặp. 3. Một vòng lặp có đoạn code như sau:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. For i = startNumber To endNumber 2.

3. Next i

Ở đoạn code trên ta sử dụng 2 biến dùng để bắt đầu và để kết thúc vòng lặp. Vòng lặp được bắt đầu với biến i. Khi VB thực hiện lặp, nó sẽ cộng thêm một vào biến i. Bạn có thể hình dung như sau:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Dim startNumber AsInteger

2. Dim endNumber AsInteger

3. Dim i AsInteger

4.

5. startNumber = 1

6. endNumber = 4 (adsbygoogle = window.adsbygoogle || []).push({});

7.

8. For i = startNumber To endNumber 9. Msgbox i

10. Next i

Đưa code cho button của bạn và thử chạy nó. Học đoạn code trên bạn sẽ hiểu nó hoạt động thế nào.

Bây giờ việc cộng hơn 1000 số liên tiếp với nhau sẽ không còn là quá khó nữa đúng không  For Each Loop :

Vòng lặp For Each giúp bạn có thể liệt kê các giá trị trong một mảng một cách nhanh nhất mà không cần phải viết code nhiều.

Ví dụ:

- Thêm 1 button lên form - Thêm 1 Listbox lên form

- Nháy kép chuột lên button gõ đoạn code sau vào:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Dim chuoi(4)AsString

2. Dim hien asString

3. chuoi(0) = "Only Nguyen"

4. chuoi(1) = "is"

5. chuoi(2) = "my"

6. chuoi(3) = "best"

7. chuoi(4) = "friend"

8. ForEach hien in chuoi 9. ListBox1.Items.Add(hien) 10. Next hien

Khảo sát đoạn code trên:

- Đầu tiên ta khai báo mảng chuoi và biến hien. - Tiếp đến gán các giá trị cho chuoi

- Dùng vòng lặp For Each để gán lần lượt từng giá trị của chuoi vào hien

- Ở giữa vòng lặp là câu lệnh giúp bạn có thể thêm các thành phần vào ListBox1 - Cuối cùng dùng Next để thực hiện tiếp vòng lặp

Dùng For Each bạn sẽ không khó khăn khi liệt kê các giá trị trong mảng nữa đúng không

2 -

Loop :While, Repeat Until  Do Loop :

Cũng giống như vòng lặp For, vòng lặp Do cũng dùng để thực hiện lặp đi lặp lại một đoạn code. Tuy nhiên vòng lặp Do có những đặc tính thuận lợi giúp bạn viết code dễ dàng hơn. Trong vòng lặp Do bạn có thể sử dụng các từ khóa While và Until

Để tìm hiểu kĩ hơn về vòng lặp Do, chúng ta hãy thực hành luôn

Tạo một project mới, thêm 1 button lên form. Nhấn kép chuột lên button và thêm đoạn code sau vào:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Dim number asInteger

2. 3. number = 1 3. number = 1 4. 5. DoWhile number <5 6. MsgBox number 7. number = number + 1 8. Loop

Chạy thử chương trình. Nhấn chuột lên button, bạn sẽ thấy các hộp thoại hiển thị từ 1 tới 4 lần lượt hiện lên. (adsbygoogle = window.adsbygoogle || []).push({});

Hãy xem xét đoạn code trên. Đầu tiên ta khai báo biến number và gán cho number bằng 1. Tiếp đến khai báo vòng lặp Do While number < 5. Hàm MsgBox giúp bạn hiện lên các câu thông báo. Sau đó biến number sẽ được cộng thêm 1 vào. Khi gặp Loop nó lại quay lại Do và kiểm tra điều kiện. Nếu thấy điều kiện đúng là number < 5, vòng lặp sẽ được thực hiện tiếp. Ngược lại nếu điều kiện sai(number = 5 hoặc number > 5) thì vòng lặp sẽ được dừng lại.

Bạn cũng có thể thêm "While ...." xuống phía dưới đằng sau từ "Loop" như sau:

1. Do

2.

3. number = number + 1

4.

5. LoopWhile number <5

Đoạn code này khác với đoạn code ở phía trên. Đầu tiên nó biên dịch đoạn code ở sau từ "Do" trước. Tiếp đến kiểm tra điều kiện ở phía dưới. Nếu điều kiện đúng thì tiếp tục lặp, nếu sai thì vòng lặp sẽ dừng lại.

Do ... Until

Một dạng khác của vòng lặp Do - Do .... Until Hãy sửa đoạn code trên của bạn thành:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Do Until number >= 5 2. 3. MsgBox number 4. number = number + 1 5. 6. Loop

Đoạn code dùng vòng lặp Do Until sẽ thực hiện như sau:

- Đầu tiên nó kiểm tra điều kiện, nếu thấy điều kiện sai thì bắt đầu thực hiện code phía dưới. - Lặp lại ban đầu và kiểm tra điều kiện lại

- Sai tiếp tục thực hiện cho đến khi điều kiện đúng thì thôi. Vòng lặp Do .... Until trái ngược với Do ....While đúng không. Từ khóa Until cũng có thể cho xuống phía dưới như sau:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. Do 2. 3. MsgBox number 4. number = number + 1 5.

6. Loop Until number >= 5

Đoạn mã ở giữa sẽ được biên dịch trước rồi mới kiểm tra điều kiện bên dưới, nếu điều kiện thì tiếp tục biên dịch lại cho đến khi điều kiện đúng thì ngừng lại.

3 - Events

WithEvents là thuộc phần lập trình các Events cho Object. Để hiểu nó hãy xem vd sau:

Tạo 1 project mới, thêm 1 class và viết code cho nó:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả 1. PublicClass Class1

2. PublicEvent TheEvent() 3.

4. PublicSub Work()

5. RaiseEvent TheEvent() 6. EndSub

7. EndClass

Thêm 1 button lên form và viết code cho form:

1.

2. PublicClass Form1

3. DimWithEvents obj AsNew Class1 4.

5. PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As (adsbygoogle = window.adsbygoogle || []).push({});

System.EventArgs)Handles Button1.Click 6. obj.Work()

7. EndSub

8.

9. PrivateSub obj_TheEvent()Handles obj.TheEvent 10. MsgBox("Xu li event tu class")

11. EndSub

12. EndClass

Đầu tiên ta khai báo đối tượng obj bằng WithEvents để nó kế thừa các Event từ trong Class 1. Sub obj_TheEvent để xử lí cho Event từ class. Ở đây là xử lí TheEvent.

Sử dụng chung Event của các control:

Với VB.NET, một điểm dễ thấy ở đây là mỗi một Sub được gán cho một Control để điều khiển Event của Control đó. Vậy thì, Một Sub có thể nắm giữ Event của nhiều Control được không? Câu trả lời là CÓ.

Ví dụ: Bạn có 2 TextBox là TextBox1 và TextBox2. Hai sự kiện này bạn muốn kết hợp chung lại với nhau, vậy thì code sẽ là:

Số dòng Bật/Tắt | Mở rộng/Rút gọn | Chọn tất cả

1. PrivateSub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As

System.EventArgs)Handles TextBox1.TextChanged, TextBox2.TextChanged 2. 'Do something here

3. EndSub

sender sẽ đại diện cho Control trong sub này.

Nếu bạn muốn chạy các Sub đó, có thể sử dụng được chúng với lệnh gọi: TextBox_TextChanged(TextBox1, System.EventArgs.Empty)

Tham chiếu trên sẽ thực thi sự kiện TextChanged ở TextBox1 với sự kiện rỗng.

Một phần của tài liệu Giao trinh visual basic 2008x (Trang 43 - 48)