🌱 C++ Vòng lặp while / do..while (while loop)
Bài viết này sẽ giới thiệu về 2 loại vòng lặp còn lại là vòng while và do..while.
👉 Vòng lặp while trong C++
🔻 Cú pháp vòng while trong C++
while (condition)
{
// body of the loop
}
Vòng while sẽ kiểm tra condition,
- condition = true, chương trình sẽ thực hiện các lệnh bên trong dấu ngoặc nhọn, sau đó tiếp tục quay lại kiểm tra điều kiện.
- condition = false, chương trình sẽ thoát khỏi vòng lặp.
➢ Phần condition thường được triển khai bằng các toán tử quan hệ (Relational) và toán tử logical.
🔻 Lưu đồ thuật toán của vòng lặp while
Hoạt động của vòng lặp while trong C++ |
🔻 Ví dụ 1. Hiển thị các số nguyên từ 1 đến 5
#include <iostream>
using namespace std;
int main()
{
int i = 1;
while (i <= 5)
{
cout << i << " ";
++i;
}
return 0;
}
Run This Code
➥ Các bạn có thể bấm "Run This Code", kết quả hiển thị trên màn hình console như sau.
1 2 3 4 5
➢ Hoạt động của vòng lặp trên,
Lần lặp | Biến đếm | i <= 5 | Action |
---|---|---|---|
1 | i = 1 | true | 1 được in ra. i tăng lên 2 . |
2 | i = 2 | true | 2 được in ra. i tăng lên 3 . |
3 | i = 3 | true | 3 được in ra. i tăng lên 4 .
|
4 | i = 4 | true | 4 được in ra. i tăng lên 5 .
|
5 | i = 5 | true | 5 được in ra. i tăng lên 6 .
|
6 | i = 6 | false | Vòng lặp kết thúc |
Hoạt động của vòng lặp trên có thể thực hiện tương tự như bài viết trước về for loop, tuy nhiên dễ thấy cách viết của for loop tự nhiên và dễ triển khai hơn - do for phù hợp hơn với những vòng lặp biết trước số lần lặp.
🔻 Ví dụ 2. Cho phép người dùng nhập ký tự cho đến khi nhập vào 'e' thì thoát
#include <iostream>
using namespace std;
int main()
{
char user_input;
int taskcount = 0;
// take input from the user
cout << "Enter a character: ";
cin >> user_input;
while ('e' != user_input)
{
taskcount++;
cout << "Number of Task = " << taskcount << endl;
cin >> user_input;
}
cout << "End of process, number of task = " << taskcount << endl;
return 0;
}
Run This Code
➥ Các bạn có thể bấm "Run This Code", và nhập các ký tự, chương trình sẽ chạy cho đến khi user nhập phím 'e'. Kết quả hiển thị trên màn hình console như sau.
Enter a character: r
Number of Task = 1
Enter a character: s
Number of Task = 2
Enter a character: e
End of process, number of task = 2
Với ví dụ này thì dễ thấy, vòng lặp while rất phù hợp cho những vòng lặp không biết trước số lần lặp.
➥ Ví dụ, đợi một sự kiện từ user (Ví dụ 2 ở trên user nhập từ bàn phím nên không biết trước số lần lặp), hoặc đợi các sự kiện từ phần cứng (Ví dụ như đợi các cờ trạng thái thay đổi).
👉 Vòng lặp do..while trong C++
Đối với ví dụ 2 ở vòng lặp while, có thể thấy chúng ta cần sử dụng câu lệnh cin >> user_input; đến 2 lần, và 1 điểm bất lợi của câu lệnh này, khi nhập lần đầu user nhập 'e', thì sẽ không có task nào được thực hiện cả!
Trên thực tế, với các bài toán ứng dụng, có nhiều trường hợp chúng ta cần đảm bảo một đoạn code được thực thi ít nhất một lần trong vòng lặp. Ví dụ, thực hiện task ít nhất một lần trong ví dụ 2 ở trên. Ở đây, C++ cung cấp cho chúng ta câu lệnh do..while.
🔻 Cú pháp vòng do..while trong C++
do
{
// body of loop;
}
while (condition);
Ở đây, chương trình sẽ thực thi đoạn code trong dấu ngoặc nhọn, sau đó mới kiểm trả condition. Tới đây thì nó hoạt động giống như vòng while.
🔻 Lưu đồ thuật toán của vòng lặp while
Hoạt động của vòng lặp do..while trong C++ |
🔻 Ví dụ 3. Cho phép người dùng nhập ký tự cho đến khi nhập vào 'e' thì thoát. Đảm bảo task được thực thi ít nhất một lần
#include <iostream>
using namespace std;
int main()
{
char user_input = 'a'; // default task
int taskcount = 0;
do
{
taskcount++;
cout << "Number of Task = " << taskcount << endl;
cout << "Enter a character: ";
cin >> user_input;
}
while ('e' != user_input);
cout << "End of process, number of task = " << taskcount << endl;
return 0;
}
Run This Code
➥ Các bạn có thể bấm "Run This Code", kết quả hiển thị trên màn hình console sẽ tương tự như ví dụ 2.
Tương tự như vòng lặp while, vòng lặp do..while cũng được sử dụng cho các vòng lặp không biết trước số lần lặp.
>>>= Follow ngay =<<<
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊