Vòng lặp Do While…Loop

Một phần của tài liệu Lập trình với Microsoft Visual Studio pptx (Trang 88 - 107)

Vòng lặp "Do While...Loop" thực hiện một khối các lệnh lặp đi lặp lại trong khi một điều kiện xác định vẫn đúng. Ngay khi điều kiện trở thành sai vòng lặp kết thúc và khối lệnh không còn được thực hiện nữa. Phần của Do While...Loop, là điều kiện được sử dụng để điều khiển nó. Đây là cú pháp của lệnh Do While...Loop trong Visual Basic.NET:

Do While (DieuKien)

MaLenh 1 MaLenh 2 MaLenh n

Loop

Các từ "Do", "While" và "Loop" là từ khoá. Chúng được hiển thị với màu xanh da trời. Điều kiện được bao trong cặp dấu ngoặc đơn. Điều kiện có thể là bất cứ biểu thức lô gíc nào mà giá trị của nó hoặc là đúng hoặc là sai. Ví dụ X < 4. Mã lệnh mà bạn muốn thực hiện lặp đi lặp lại được đặt giữa lệnh Do While và Loop. Tại mỗi lần lặp, điều kiện lại được xem xét. Nếu điều kiện còn đúng (True), mã lệnh tiếp tục được thực hiện. Nếu điều kiện sai thi vòng lặp kết thúc.

Tạo một ứng dụng Window tên là DoWhileLoop. Thêm nút lệnh vào Form1. Nhấp đúp vào Button1 để soạn thảo mã lệnh cho sự kiện nhấn nút lệnh của nó như sau:

Dim WhileValue As Integer WhileValue = 0 Do While (WhileValue < 2) MessageBox.Show(WhileValue) WhileValue = WhileValue + 1 Loop

Dịch và chạy chương trình. Nhấn nút Button1. Một hộp thông báo hiển thị 0. Nhấn OK. Một hộp thông báo hiển thị 1. Nhấn OK. Quay trở

lại Form.

Đoạn mã này làm việc như thế nào? Chúng ta khai báo biến WhileValue và khởi tạo cho nó bằng 0. Sau mỗi lần lặp giá trị của WhileValue được tăng lên 1. Tại đầu vòng lặp lệnh Do While kiểm tra điều kiện WhileValue < 2. Nếu điều kiện đúng thì hộp thông báo được hiển thị và WhileValue được tăng lên 1. Ngược lại thì vòng lặp kết thúc. Vòng lặp thực hiện hai lần trước khi điều kiện trở thành sai. Lần đầu thông báo hiển thị 0. Lần thứ hai thông báo hiển thị 1. lần thứ ba, WhileValue = 2. Biểu thức lô gíc 2 < 2 là sai. Vòng lặp kết thúc và Hộp thông báo không hiển thị nữa.

3. Chy lnh Do While…Loop trong chếđộ g li

Sử dụng công cụ gỡ lỗi của Visual Studio.NET để dừng lại ở cửa sổ mã lệnh và xem ứng dụng DoWhileLoop chạy từng dòng lệnh.

1. Trong cửa sổ lệnh đặt điểm dừng lệnh trên lệnh Do While.

2. Chạy chương trình. Mã lệnh chạy đến điểm dừng thì dừng lại và làm sáng dòng lệnh chứa điểm dừng.

3. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng

Do While (WhileValue < 2)

Di chuyển con trỏ trên WhileValue. Ta thấy giá trị của nó là 0. 4. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng.

MessageBox.Show(WhileValue)

Một thông báo hiển thị giá trị 0. Nhấn OK.

5. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng.

WhileValue = WhileValue + 1

Giá trị của WhileValue được tăng lên 1. 6. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng

Loop

Lệnh loop được thực hiện lần nữa. 7. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng

Do While (WhileValue < 2)

Di chuyển con trỏ trên WhileValue. Ta thấy giá trị của nó là 1.

8. Nhấn phím F11 để chạy dòng đang lệnh đang được làm sáng

MessageBox.Show(WhileValue)

Hộp thông báo hiển thị 1. Nhấn OK. 9. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng

Biến WhileValue được tăng lên 2. 10. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng.

Loop (adsbygoogle = window.adsbygoogle || []).push({});

Lệnh loop lại được thực hiện.

11. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng.

Do While (WhileValue < 2)

Di chuyển con trỏ trên WhileValue. Ta thấy giá trị của nó là 2. Điều kiện WhileValue < 2 trở thành sai. Vì thế vòng lặp kết thúc. Hộp thông báo không hiển thị nữa và giá trị của WhileValue không tăng lên nữa.

12. Nhấn phím F11 để chạy dòng lệnh đang được làm sáng.

End Sub

Sự kiện nhấn nút kết thúc. Form được hiển thị trở lại.

Trên đây bạn đã xem cách lệnh Do While...Loop làm việc. Bây giờ hãy xem tiếp lệnh Do Until...Loop.

4. Vòng lp Do Until…Loop

Lệnh Do Until...Loop thực hiện đoạn lệnh lặp đi lặp lại cho đến khi điều kiện trở thành đúng. Điều kiện có thể là bất kỳ biểu thức lô gíc nào mà biểu thức này có giá trị hoặc là đúng hoặc sai. Đây là cú pháp của lệnh Do Until...Loop trong Visual Basic.NET:

Do Until (DieuKien) MaLenh 1 MaLenh 2 . .. MaLenh n Loop

Các từ "Do", "Until" và "Loop" là từ khoá. Chúng có màu xanh da trời. Điều kiện được kiểm tra ở ngay đầu vòng lặp. Nếu điều kiện vẫn còn sai thì lệnh vẵn tiếp tục được thực hiện. Khi điều kiện trong lệnh Do Until trở thành đúng thì vòng lặp kết thúc.

Làm một ví dụ Do Until...Loop trong Visual Basic.NET. Tạo một ứng dụng Window tên là DoUntilLoop. Thêm một nút lệnh vào Form1. Nhấp đúp vào nút Button1 để soạn thảo mã lệnh cho sự kiện nhấn nút nhấn nút như sau:

Dim UntilValue As Integer

UntilValue = 0

Do Until (UntilValue > 1)

MessageBox.Show(UntilValue) UntilValue = UntilValue + 1

Loop

Dịch và chạy chương trình. Nhấn nút lệnh Button1. Hộp thông báo hiển thị 0. Nhấn OK. Hộp thông báo hiển thị 1. Nhấn nút OK. Vòng lặp kết thúc, Form được hiển thị trở lại.

Mã lệnh Do Until...Loop làm việc như thế nào? Đầu tiên, chúng ta khai báo biến UntilValue và khởi tạo giá trị ban đầu cho nó bằng 0. Biến UntilValue được sử dụng trong lệnh so sánh (biểu thức điều kiện) dùng để quyết định xem có tiếp tục thực hiện vòng lặp nữa không hay dừng lại. Mỗi lần vòng lặp thực hiện thì giá trị của UntilValue được tăng lên 1. Lệnh Do Until chứa lệnh so sánh, lệnh này được dùng để kiểm tra xem giá trị của UntilValue có lớn hơn 1 không. Ở lần lặp đầu tiên giá trị của UntilValue là 0. Biểu thức điều kiện có giá trị sai vì thế vòng lặp tiếp tục được thực hiện. Hộp thông báo xuất hiện và giá trị của UntilValue được tăng lên. Ở lần lặp thứ hai, giá trị của UntilValue là 1. Biểu thức lô gíc điều kiện vẫn sai, mã lệnh trong vòng lặp vẫn tiếp tục được thực hiện. Ở lần lặp thứ ba, giá trị của UntilValue là 2. Biểu thức lô gíc điều kiện 2>1 trở thành đúng, vòng lặp được kết thúc.

5. Hot động ca lnh lp

Bây giờ hãy xem các ví dụ Do While...Loop và Do Until...Loop. Chúng sử dụng biểu thức lô gíc điều kiện. Các biểu thức này không phụ thuộc trực tiếp biến đếm lặp. Ví dụ Do While...Loop thứ nhất với biểu thức lô gíc điều kiện được dùng để kiểm tra xem giá trị của biến có còn lớn hơn hoặc bằng 0 không. Khi giá trị của biến nhỏ hơn không thì vòng lặp kết thúc.

Tạo một ứng dụng Window tên là LoopsInAction. Thêm một nút lệnh vào Form1. Thay đổi thuộc tính Text của Button1 thành "Đếm Lùi". Nhấp đúp vào Button1 để soạn thảo mã lệnh cho sự kiện nhấn nút của nó như sau:

Dim LoopIndex As Integer = 0

Dim WhileController As Integer = 167

Do While (WhileController >= 0)

LoopIndex = LoopIndex + 1

WhileController = WhileController - (23 * LoopIndex)

Loop

MessageBox.Show(WhileController) (adsbygoogle = window.adsbygoogle || []).push({});

Dịch và chạy chương trình LoopsInAction. Nhấn vào nút "Đếm Lùi". Hộp thông báo xuất hiện và hiển thị -63. Mã lệnh này làm việc như thế nào? Chúng ta khai báo hai biến nguyên, LoopIndex và WhileController, và khởi tạo các giá trị ban đầu cho chúng. Sau mỗi lần vòng

lặp được thực hiện Biến LoopIndex được tăng lên 1, một giá trị mới của biến WhileController được tính toán bằng cách sử dụng một biểu thức phức tạp một chút. Giá trị mới của WhileController được tính bằng cách lấy giá trị cũ của WhileController trừ đi giá trị của LoopIndex nhân với 23. Vì thế sau mỗi lần lặp giá trị của WhileController càng ngày càng nhỏ đi. Sẽ rất là khó mà đoán được vòng lặp sẽ thực hiện bao nhiêu lần trước khi giá trị của biến WhileController nhỏ hơn 0 và vòng lặp kết thúc. Nhưng điều này thực sự không cần thiết, Vì biểu thức lô gíc điều kiện điều khiển vòng lặp chỉ quan tâm đến giá trị của biến WhileController và không quan tâm đến giá trị của LoopIndex.

Ví dụ Do While...Loop thứ hai với biểu thức lô gíc phụ thuộc vào việc nút lựa chọn RadioButton3 có được chọn hay không. Mỗi lần lặp là một nút lựa chọn được kiểm tra.

Trong ứng dụng LoopsInAction, thêm một nút lệnh thứ hai vào Form1. Thay đổi thuộc tính Text của Button2 thành "While". Thêm ba nút lựa chọn vào Form1. Nhấp đúp vào Button2 để soạn thảo mã lệnh cho sự kiện nhấn nút của nó như sau:

Dim LoopIndex As Integer = 0 RadioButton1.Checked = True

Do While (RadioButton3.Checked = False)

LoopIndex = LoopIndex + 1 If LoopIndex = 1 Then

RadioButton1.Checked = True

ElseIf LoopIndex = 2 Then

RadioButton2.Checked = True

ElseIf LoopIndex = 3 Then

RadioButton3.Checked = True

End If

Loop

MessageBox.Show(LoopIndex)

Dịch và chạy chương trình. Để ý rằng RadioButton1 được chọn. Nhấn nút "While". RadioButton3 được chọn bằng mã lệnh và hộp thông báo hiển thị chỉ số vòng lặp. Nếu mắt bạn đủ nhanh, hoặc bạn sử dụng một máy tính thực sự chậm, bạn có thể nhìn thấy RadioButton2 được chọn trong giây lát khi vòng lặp thực hiện.

Cái gì đang xảy ra ở đây. Chúng ta khai báo biến LoopIndex để giám sát số lần lặp được thực hiện. Tuy nhiên, chúng ta không sử dụng biến LoopIndex trong biểu thức lô gíc điều kiện (biểu thức điều khiển lệnh Do While...Loop). Mà chúng ta sử dụng biến LoopIndex làm điều kiện để chọn nút lựa chọn trong mỗi lần lặp. Biểu thức điều kiện của lệnh Do While...Loop kiểm tra xem nút lựa chọn RadioButton3 đã được chọn chưa. Vòng lặp kết thúc ngay sau khi nút RadioButton3 được chọn (RadioButton3.Checked=True).

Ví dụ Do Until...Loop thứ ba. Biểu thức lô gíc điều kiện so sánh thuộc tính Text của Textbox với biến chuỗi, giá trị của biến này thay đổi theo từng lần lặp. Thêm hộp văn bản vào Form1 của ứng dụng ActionLoops. Giữ nguyên giá trị của thuộc tính Text của TextBox1 là "TextBox1". Thêm nút lệnh thứ ba vào Form1 và thay đổi thuộc tính Text của nó thành "TextMatch". Nhấp đúp vào Button3 để soạn thảo mã lệnh cho sự kiện nhấn nút của nó:

Dim MatchText As String = ""

Dim LoopIndex As Integer = 0

Do Until (MatchText = TextBox1.Text)

LoopIndex = LoopIndex + 1 If LoopIndex = 2 Then MatchText = "Text" End If If LoopIndex = 3 Then MatchText = "Box1" End If If LoopIndex = 4 Then MatchText = "TextBox1" End If Loop

MessageBox.Show("Sau " & LoopIndex & " ln lp

đã khp.")

Dịch và chạy chương trình. Nhấn nút "Text Match". Hộp thông báo xuất hiện và hiển thị giá trị LoopIndex khi chuỗi văn bản so khớp với nhau.

Trong lệnh Do Until...Loop này. Biến LoopIndex chỉ được dùng để xác định giá trị của biến MatchText. Biểu thức điều kiện so sánh giá trị của MatchText với thuộc tính Text của TextBox1. Ở lần lặp thứ tư giá trị của biến LoopIndex là 4 và MatchText="TextBox1". Biểu thức lô gíc điều kiện trở thành đúng (vì "TextBox1"="TextBox1"), vòng lặp kết thúc.

Điều gì sẽ xảy ra nếu thuộc tính Text của TextBox1 được đặt thành một chuỗi ký tự khác. Bạn có thể thêm lệnh "If..Then" khác để cho mã lệnh vẫn tiếp tục được thực hiện không?

6. Dng khác ca lnh lp

Lệnh Do While...Loop và Do Until...Loop có thể được viết theo dạng khác tức là điều kiện được đặt ở cuối của vòng lặp. Trong trường hợp này biểu thức điều kiện được viết ngay sau mã lệnh. Mã lệnh luôn luôn được thực hiện ít nhất là một lần sau đó điều kiện mới được kiểm tra. Những dạng này gồm các lệnh Do...Loop While và Do...Loop Until . Đây là ví dụ về lệnh Do…Loop While:

Dim WhileValue As Integer (adsbygoogle = window.adsbygoogle || []).push({});

WhileValue = 0

Do

MessageBox.Show(WhileValue) WhileValue = WhileValue + 1

Loop While (WhileValue < 2)

Đây là ví dụ của lệnh Do...LoopUntil:

Dim UntilValue As Integer

UntilValue = 0

Do

Gợi ý

Tên biến LoopIndex ởđây là tùy chọn. Nó có thể là LoopCounter, LoopVariable, X, hoặc là cái gì đó khác. Gợi ý Đểđiều kiện ở cuối lệnh lặp đảm bảo đoạn mã trong vòng lặp thực hiện ít nhất một lần.

MessageBox.Show(UntilValue) UntilValue = UntilValue + 1

Loop Until (UntilValue > 1)

Để ý rằng trong cả hai trường hợp, biểu thức điều kiện bây giờ là một bộ phận của lệnh Loop hơn là bộ phận của lệnh Do. Các lệnh sau Do và trước Loop được thực hiện ít nhất một lần. Sau đó biểu thức điều kiện được kiểm tra để xác định xem vòng lặp có tiếp tục nữa không. Trong ví dụ trên, nếu UntilValue được khởi tạo là 5 thì hộp thông báo sẽ hiển thị 5 trước khi thực hiện kiểm tra biểu thức điều kiện.

7. Lnh Exit Do

Bạn có nhớ Cliff dậy cách thoát khỏi vòng lặp For...Next bằng cách sử dụng lệnh Exit For. Bạn cũng có thể thoát ra khỏi các lệnh lặp Do While...Loop, Do Until...Loop, Do...Loop While và Do...Loop Until theo cách tương tự như thế bằng cách sử dụng lệnh "Exit Do". Bạn sử dụng lệnh If...Then để cung cấp một biểu thức lô gíc nhằm điều khiển sự thực hiện của lệnh Exit Do. Nếu biểu thức lô gíc có giá trị đúng thì lệnh Exit Do được thực hiện và vòng lặp kết thúc. Sử dụng Exit Do khi bạn muốn thoát khỏi vòng lặp trước khi biểu thức lô gíc của lệnh lặp thoả mãn điều kiện thoát khỏi vòng lặp.

Hãy viết mã lệnh để thoát khỏi vòng lặp Do Until...Loop. Tạo một ứng dụng Window tên là ExitDo. Thêm một nút lệnh vào Form1. Nhấp đúp vào nút Button1 để soạn thảo mã lệnh cho sự kiện nhấn nút của nó như dưới đây (các mã lệnh này cũng giống như mã lệnh của ứng dụng DoLoopUntil):

Dim UntilValue As Integer

UntilValue = 0 Do Until (UntilValue > 10) MessageBox.Show(UntilValue) UntilValue = UntilValue + 1 If UntilValue = 5 Then Exit Do End If Loop

MessageBox.Show("Giá tr thoát= " & UntilValue)

Dịch và chạy chương trình. Nhấn nút Button1. Trong mỗi lần lặp, giá trị của UntilValue sẽ tăng lên 1 và hộp thông báo sẽ hiển thị đếm lặp (0,1,2,3 and 4). Bạn phải nhấn nút OK trong từng lần lặp. Khi giá trị của UntilValue bằng 5, biểu thức so sánh của lệnh If...Then có giá trị đúng. Lệnh Exit Do được thực hiện. Vòng lặp kết thúc và mã lệnh ở dòng đầu tiên ngay sau lệnh Loop Until được thực hiện, nó hiển thị lại giá trị của UntilValue tại thời điểm vòng lặp kết thúc. Mã lệnh hiển thị hộp thông báo với nội dung là "Giá trị thoát = 5". Nhấn nút OK để trở về.

Bạn có thể sử dụng chính lệnh Exit Do này trong mã lệnh Do While...Loop để kết thúc vòng lặp trước khi biểu thức điều kiện của nó trở thành sai.

BÀI 12. HÀM

1. Th tc là gì?

Thủ tục con (gọi là thủ tục cho tiện) giống như là một chương trình nhỏ (mini-program). Bạn viết chúng để thực hiện các tác vụ cụ thể trong ứng dụng. Khi bạn viết một ứng dụng, hãy chia nhỏ nó thành chức năng nhỏ hơn và viết thủ tục thực hiện từng chức năng nhỏ này. Ứng dụng có thể chứa số thủ tục bằng số thủ tục mà bạn cần. Nhưng cố gắng viết các thủ tục sao cho các thủ tục này chứa một chức năng cụ thể của ứng dụng.

Tại sao lại sử dụng thủ tục? Thủ tục giúp bạn viết lệnh và gỡ lỗi chương trình dễ ràng hơn vì chúng chúng chia các chức năng của ứng dụng thành các chức năng nhỏ hơn. Viết và gỡ lỗi vài thủ tục con ngắn thì dễ ràng hơn viết và gỡ lỗi toàn bộ ứng dụng rất nhiều. Một khi bạn đã gỡ lỗi thủ tục thì nó đã sẵn sàng cho bạn sử dụng. Nó sẽ làm việc vào bất cứ khi nào bạn cần sử dụng nó.

Dùng thủ tục là một cách giúp bạn tiết kiệm rất nhiều thời gian, khi bạn có nhiều mã lệnh phức tạp mà bạn muốn truy nhập chúng từ các phần khác nhau của ứng dụng. Chúng có thể được sử dụng một cách lặp đi lặp lại. Một khi bạn viết một thủ tục, nó có thể được sử dụng tại bất cứ nơi đâu trong ứng dụng. Thậm chí thủ tục có thể sử dụng các thủ tục khác. Các bạn thử tưởng tượng xem!

Thủ tục cũng là cách dùng để chia công việc lập trình trong các ứng dụng lớn. Mỗi lập trình viên thường được phân công viết các thủ tục của ứng dụng. Họ chịu trách nhiệm viết và gỡ lỗi các thủ tục do họ viết và đảm bảo rằng chúng làm việc được với các phần khác của chương trình.

Một vài sử dụng phổ biến của thủ tục là để thực hiện tính toán, định dạng và hiển thị thông tin, tuỳ biến giao diện người dùng, nhắc nhở người dùng nhập dữ liệu, cung cấp đầu vào và đầu ra cho chương trình.

2. Viết th tc ca bn

Bây giờ các bạn sẽ viết thủ tục con sau đó sẽ học cách sử dụng nó trong ứng dụng. Chúng ta sẽ bắt đầu bằng việc học cú pháp của cách viết thủ tục. Đây là cú pháp của thủ tục. (adsbygoogle = window.adsbygoogle || []).push({});

Private Sub TenThuTuc()

Lenh 1 lenh 2

Một phần của tài liệu Lập trình với Microsoft Visual Studio pptx (Trang 88 - 107)