Giải sử, cần viết chương trình xuất các số từ 1 đến 10. Đơn giản là sử dụng 10 câu lệnh cout<<. Nhưng cần viết chương trình xuất các số từ 1 đến 1000. Sử dụng 1000 câu lệnh cout<< thì sẽ là một pha xử lý thật “cồng kềnh”.
Giải pháp là sử dụng cấu trúc lặp để thực hiện các công việc mang tính lặp lại khi thỏa mãn điều kiện nào đó. Có 3 lệnh lặp trong C++ là for, while, do…while. Bài này sẽ giới thiệu cách sử dụng vòng lặp while.
1. Cú pháp vòng lặp while
while (<điều kiện lặp>)
{
//code block
}
với <điều kiện lặp> thường là biểu thức với các toán tử quan hệ, kết quả trả về là true (0) hoặc false (0).
Nguyên lý hoạt động của vòng lặp while như sau:
Kiểm tra <điều kiện lặp>, nếu <điều kiện lặp> đúng (true) thì dòng lệnh trong while sẽ được thực thi.
Quá trình kiểm tra <điều kiện lặp> và thực thi dòng lệnh trong while sẽ chấm dứt cho đến khi <điều kiện lặp> sai (false). Tức là, nếu bất cứ khi nào <điều kiện lặp> sai (false) thì vòng lặp while sẽ chấm dứt.
Chương trình C++ in ra số từ 1 đến 5 sử dụng vòng lặp while
#include <iostream>
using namespace std;
int main()
{
int i = 1;
// while loop from 1 to 5
while (i <= 5) {
cout << i << " ";
++i;
}
return 0;
}
Kết quả
1 2 3 4 5
Chương trình trên thực hiện các lần lặp trong while như sau:
Lần lặp | Biến i | Điều kiện lặp i<=5 | Thực thi |
1 | i=1 | true | In ra 1 và tăng i lên 2 |
2 | i=2 | true | In ra 2 và tăng i lên 3 |
3 | i=3 | true | In ra 3 và tăng i lên 4 |
4 | i=4 | true | In ra 4 và tăng i lên 5 |
5 | i=5 | true | In ra 5 và tăng i lên 6 |
6 | i=6 | false | Vòng lặp chấm dứt |
2. Một số lưu ý khi sử dụng while
Câu lệnh while có thể lồng nhau
if (n < 10 && m < 20)
{
while (n >= 1)
{
while (m >= 1)
{
cout<<m<<endl;
m--;
}
n--;
}
}
Câu lệnh while có thể không thực hiện lần nào do điều kiện lặp ngay từ lần đầu đã không thỏa mãn
int n = 1;
while (n > 10)
{
cout<<n<<endl;
n--;
}
Không được thêm “;” ngay sau lệnh while
int n = 0;
while (n < 10);//while sẽ không thực thi được
{
cout<<n<<endl;
n++;
}
while (n < 10)
{
};//while sẽ không thực thi được
{
cout<<n<<endl;
n++;
}
Câu lệnh while có thể bị lặp vô hạn
int n = 1;
while (n < 10)//n=1, n-- thì điều kiện lặp vô hạn
{
cout<<n<<endl;
n--;
}
n = 1;
while (n < 10){//n=1 thì điều kiện lặp vô hạn
cout<<n<<endl;
}
Lưu ý: Khi sử dụng vòng lặp while phải tránh sai cú pháp và điều kiện lặp vô hạn.