Vòng lặp while trong C#
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 while
chú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 while
thì đ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 while
như sau:
Bài viết này được đăng tại [free tuts .net]
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ị
true
hoặcfalse
- Nếu trong
while
có 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ị
false
từ 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é :D).
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.
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 = 1
thì ta thấyx < 10
nê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 = 2
ta thấy đều thỏax < 10
nê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 = 3
ta thấy đều thỏax < 10
nê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 = 4
ta thấy đều thỏax < 10
nê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 = 5
ta thấy đều thỏax < 10
nê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 = 20
thì ta thấy không thỏa điều kiện lặp vìx > 10
sau 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ứ để lại comment phía dưới nếu bạn có bất kỳ thắc mắc gì nhé ! Sau đây mình xin đưa ra một số bài tập để các bạn hiểu rõ thêm về vòng lặp while trong C#
các bạn cố gắng luyện tập nhé. https://freetuts.net chúc các bạn học tốt !!!