🌱 C++ Vòng lặp while / do..while (while loop)

🌱 C++ Vòng lặp while / do..while (while loop)

Ở bài viết trước mình đã giới thiệu về các loại vòng lặp trong C++, và đi chi tiết vào vòng lặp for - Một loại vòng lặp thường dùng cho những trường hợp biết trước số lần lặp.

    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 whiledo..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

cpp-while-loop-working
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ặpBiến đếmi <= 5Action
1i = 1true1 được in ra. i tăng lên 2.
2i = 2true2 được in ra. i tăng lên 3.
3i = 3true3 được in ra. i tăng lên 4.
4i = 4true4 được in ra. i tăng lên 5.
5i = 5true5 được in ra. i tăng lên 6.
6i = 6falseVò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

cpp-do-while-loop-working
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 😊

                                                       

Nguyễn Văn Nghĩa

Mình là một người thích học hỏi và chia sẻ các kiến thức về Nhúng IOT.

Đăng nhận xét

Mới hơn Cũ hơn