Bài trước mình đã giới thiệu sơ lượt về vòng lặp trong C# và chúng ta cũng đã tìm hiểu về vòng lặp for trong C#. Vậy có một vấn đề đặt ra đối với vòng lặp for đó là chúng ta không biết trước được số lần lặp của đoạn lệnh. Ví dụ nhập vào một số nguyên dương lớn hơn 10, nếu số đó không thỏa thì nhập lại. Rõ ràng chúng ta hoàn toàn không thể biết người dùng sẽ nhập bao nhiêu lần cả. Vì thế nên vòng lặp while sẽ giúp chúng ta giải quyết vấn đề này.
Vậy vòng lặp while là gì ? Nó có cấu trúc như thế nào ? Sử dụng nó ra làm sao ? Chúng ta hãy cùng tìm hiểu nhé !
1. Cấu trúc vòng lặp while
Như đã nói ở phần mở đầu thì đối với vòng lặp whilechúng ta không xác định trước được số lần lặp của lệnh hoặc khối lệnh trong thân vòng lặp. Khi sử dụng vòng lặp whilethì điều kiện lặp sẽ được kiểm tra trước khi chúng ta thực thi các lệnh trong thân vòng lặp.
Cú pháp sử dụng vòng lặp whilenhư sau:
|
1
2
|
while (biểu thức điều kiện)<Câu lệnh thực hiện> |
Trong đó:
- Biểu thức điều kiện là điều kiện để các lệnh được thực hiện, biểu thức này bắt buộc phải trả về giá trị
truehoặcfalse - Nếu trong
whilecó nhiều câu lệnh được thực hiện thì phải để nó trong khối lệnh{ }.
Cách thức hoạt động:
Đầu tiên mời các bạn xem sơ đồ sau rồi mình sẽ giải thích.
Trước tiên, vòng lặp while sẽ thực hiện xác định giá trị của biểu thức điều kiện. Nếu biểu thức điều kiện trả về giá trị true thì các lệnh, khối lệnh trong thân vòng lặp sẽ được thực hiện. Sau đó nó lại quay về kiểm tra điều kiện lặp có đúng hay không. Nếu điều kiện lặp trả về giá trị false thì các lệnh sẽ không được thực hiện và bỏ qua vòng lặp để đi đến lệnh tiếp theo trong chương trình.
Có một số lưu ý nhỏ khi bạn sử dụng vòng lặp whileđó là:
- Ta thấy trước khi thực hiện lệnh trong thân của vòng lặp thì nó sẽ kiểm tra biểu thức điều kiện trước tiên. Vậy để vòng lặp hoạt động thì biểu thức ban đầu của chúng ta sẽ trả về giá trị
true. - Sau mỗi lần lặp nó đều quay về và kiểm tra biểu thức điều kiện vậy để thoát khỏi tình trạng lặp vô hạn gây ra hiện tượng treo máy thì chúng ta cần có lệnh làm thay đổi giá trị của biểu thức để đảm bảo rằng sau một số lần lặp nhất định thì ta sẽ nhận được giá trị
falsetừ biểu thức điều kiện và kết thúc vòng lặp. Nếu trong thân vòng lặp không có lệnh làm thay đổi giá trị biểu thức thì ta cần có từ khóabreakđể thoát khỏi vòng lặp. (Mình sẽ nói sau về từ khóa này nhé 😀).
2. Ví dụ
Ta sẽ quay trở lại vấn đề đã đặt ra ở phần mở đầu nhé. Đó là nhập vào một số nguyên dương lớn hơn 10, nếu sai thì thông báo và nhập lại, nếu đúng thì xuất số ấy ra màn hình.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace freetuts.net{ class freetuts { static void Main(string[] args) { Console.WriteLine("\nnhap vao so tu nhien lon hon 10 "); int x = Convert.ToInt16(Console.ReadLine()); while(x<10) { Console.WriteLine("\nxin loi {0} < 10 ban oi!!! nhap lai giup minh nhe ahihi", x ); x = Convert.ToInt16(Console.ReadLine()); } Console.WriteLine("\nso ban vua nhap la: " + x); Console.WriteLine("\nfreetuts chuc ban hoc tot !!!"); Console.ReadKey(); } }} |
Khi biên dịch và nhập một số thử nghiệm ta có kết quả như sau:
Quá trình nó chạy như sau:
- Xuất ra màn hình yêu cầu nhập.
- Khi bạn nhập vào
x = 1thì ta thấyx < 10nên lệnh trong vòng lặp thực hiện và yêu cầu bạn nhập lại. - Tương tự bạn nhập
x = 2ta thấy đều thỏax < 10nên lệnh trong vòng lặp lại tiếp tục được thực thi. - Tương tự bạn nhập
x = 3ta thấy đều thỏax < 10nên lệnh trong vòng lặp lại tiếp tục được thực thi. - Tương tự bạn nhập
x = 4ta thấy đều thỏax < 10nên lệnh trong vòng lặp lại tiếp tục được thực thi. - Tương tự bạn nhập
<strong>x = 5</strong>ta thấy đều thỏax < 10nên lệnh trong vòng lặp lại tiếp tục được thực thi. - Cuối cùng bạn nhập vào
x = 20thì ta thấy không thỏa điều kiện lặp vìx > 10sau sẽ thoát khỏi vòng lặp và xuất giá trị x ra màn hình.
3. Lời kết
Vậy mình đã cùng các bạn tìm hiểu thêm về một cấu trúc lặp, các bạn đã hiểu hơn về vòng lặp while trong C# chưa nhỉ ? Các bạn hãy luyện tập tập nhiều nhé. Cảm ơn các bạn đã theo dõi bài viết này.
Theo:freetuts.net



