Sử dụng vòng lặp do while và sự khác nhau với while

Đây là bài 19/43 bài của series môn học Nhập môn lập trình

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ặpBiến iĐiều kiện lặp i<=5Thực thi
 i=1Không kiểm traIn ra 1 và tăng i lên 2
1i=2trueIn ra 2 và tăng i lên 3
2i=3trueIn ra 3 và tăng i lên 4
3i=4trueIn ra 4 và tăng i lên 5
4i=5trueIn ra 5 và tăng i lên 6
5i=6falseVò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 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.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Cú pháp và cách sử dụng vòng lặp while trong C++Cú pháp và cách sử dụng vòng lặp for trong C++ >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.