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 do while.
1. Cú pháp vòng lặp do while
do {
//code block
}while (<điều kiện lặp>);
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 do while như sau:
Thực thi dòng lệnh trong do while trước. Sau đó, kiểm tra <điều kiện lặp>, nếu <điều kiện lặp> đúng (true) thì thực thi dòng lệnh trong do while lần nữa.
Quá trình kiểm tra <điều kiện lặp> và thực thi dòng lệnh trong do 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 do while sẽ chấm dứt.
Chương trình C++ in ra số từ 1 đến 5 sử dụng do while
#include <iostream>
using namespace std;
int main()
{
int i = 1;
// do...while loop from 1 to 5
do{
cout << i << " ";
++i;
}while (i <= 5);
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 do while như sau:
Lần lặp | Biến i | Điều kiện lặp i<=5 | Thực thi |
i=1 | Không kiểm tra | In ra 1 và tăng i lên 2 | |
1 | i=2 | true | In ra 2 và tăng i lên 3 |
2 | i=3 | true | In ra 3 và tăng i lên 4 |
3 | i=4 | true | In ra 4 và tăng i lên 5 |
4 | i=5 | true | In ra 5 và tăng i lên 6 |
5 | i=6 | false | Vòng lặp chấm dứt |
2. Một số lưu ý khi sử dụng do while
Câu lệnh do while có thể lồng nhau
int a = 1, b;
do
{
b = 1;
do
{
cout<<a + b<<endl;
b = b + 2;
}while (b < 20);
a++;
}while (a < 20);
Câu lệnh do while có thể bị lặp vô hạn
int n = 1;
do
{
cout<<n<<endl;
n--;
}while (n < 10);
n = 1;
do{
cout<<n<<endl;
}while (n < 10);
Thiếu dấu “;” sau điều kiện của do while
int i = 1;
do{
cout << i << " ";
++i;
}while (i <= 5) //lỗi, thiếu dấu ;
3. Sự khác nhau giữa while và do while
Vòng lặp do while là một biến thể của vòng lặp while với một điểm khác biệt quan trọng. Đó là những dòng lệnh của vòng lặp do while sẽ được thực thi một lần trước khi điều kiện được kiểm tra.
Xem kết quả của 2 chương trình sau để thấy rõ sự khác nhau giữa while và do while:
Chương trình sử dụng while
#include <iostream>
using namespace std;
int main()
{
int n = 1;
while (n > 10)
{
cout<<n<<endl;
n--;
}
system("pause");
}
Kết quả: không in ra gì
Chương trình sử dụng do while
#include <iostream>
using namespace std;
int main()
{
int n = 1;
do
{
cout<<n<<endl;
n--;
}while (n > 10);
system("pause");
}
Kết quả: in ra được giá trị của n là 1
1
Các bạn cần lưu ý sự khác nhau này trước khi quyết định dùng while hoặc do while.
I agree with your point of view, your article has given me a lot of help and benefited me a lot. Thanks. Hope you continue to write such excellent articles.