Bài tập

C++ Vòng lặp while và do...while

Huy Erick

Trong lập trình máy tính, vòng lặp được sử dụng để lặp lại một khối lệnh. Ví dụ, giả sử chúng ta muốn hiển thị một thông báo 100 lần. Thay vì viết câu lệnh...

Trong lập trình máy tính, vòng lặp được sử dụng để lặp lại một khối lệnh. Ví dụ, giả sử chúng ta muốn hiển thị một thông báo 100 lần. Thay vì viết câu lệnh in 100 lần, ta có thể sử dụng vòng lặp.

Đó chỉ là một ví dụ đơn giản; chúng ta có thể đạt được hiệu suất và sự tinh vi hơn nữa trong các chương trình của mình bằng cách sử dụng hiệu quả các vòng lặp.

3 loại vòng lặp trong C++.

  1. Vòng lặp for (for loop)
  2. Vòng lặp while (while loop)
  3. Vòng lặp do...while (do...while loop)

Trong bài hướng dẫn trước đó, chúng ta đã tìm hiểu về vòng lặp for trong C++. Ở đây, chúng ta sẽ tìm hiểu về vòng lặp while và do...while.

Vòng lặp while trong C++

Cú pháp của vòng lặp while như sau:

while (điều kiện) {
    // nội dung của vòng lặp
}

Ở đây,

  • Một vòng lặp while đánh giá điều kiện.
  • Nếu điều kiện đánh giá đúng, mã lệnh bên trong vòng lặp while được thực thi.
  • Điều kiện được đánh giá lại.
  • Quá trình này tiếp tục cho đến khi điều kiện là sai.
  • Khi điều kiện đánh giá sai, vòng lặp kết thúc.

Để biết thêm về các điều kiện, hãy truy cập C++ Relational and Logical Operators.

Sơ đồ luồng của vòng lặp while

Ví dụ 1: Hiển thị các số từ 1 đến 5

#include 
using namespace std;

int main() {
    int i = 1;

    // vòng lặp while từ 1 đến 5
    while (i = 5) {
        cout  i  " ";
        ++i;
    }

    return 0;
}

Kết quả

1 2 3 4 5

Dưới đây là cách chương trình hoạt động.

Ví dụ 2: Tính tổng của các số dương

#include 
using namespace std;

int main() {
    int number;
    int sum = 0;

    // yêu cầu người dùng nhập số
    cout  "Nhập một số: ";
    cin >> number;

    // vòng lặp while tiếp tục cho đến khi số âm được nhập vào
    while (number >= 0) {
        // cộng các số dương lại với nhau
        sum += number;

        // yêu cầu người dùng nhập số mới nếu số nhập vào là số dương
        cout  "Nhập một số: ";
        cin >> number;
    }

    // hiển thị tổng
    cout  "\nTổng là "  sum  endl;

    return 0;
}

Kết quả

Nhập một số: 6
Nhập một số: 12
Nhập một số: 7
Nhập một số: 0
Nhập một số: -2
Tổng là 25

Trong chương trình này, người dùng được yêu cầu nhập một số, số đó được lưu trữ trong biến number.

Để tính tổng các số, chúng ta khai báo một biến sum và khởi tạo giá trị bằng 0.

Vòng lặp while tiếp tục cho đến khi người dùng nhập một số âm. Trong mỗi lần lặp, số được nhập vào sẽ được cộng vào biến sum.

Khi người dùng nhập một số âm, vòng lặp kết thúc. Cuối cùng, tổng được hiển thị.

Vòng lặp do...while trong C++

Vòng lặp do...while là một biến thể của vòng lặp while với một khác biệt quan trọng: nội dung của vòng lặp do...while được thực thi một lần trước khi kiểm tra điều kiện.

Cú pháp của vòng lặp do...while như sau:

do {
    // nội dung của vòng lặp
} while (điều kiện);

Ở đây,

  • Nội dung của vòng lặp được thực thi lần đầu tiên. Sau đó, điều kiện được đánh giá.
  • Nếu điều kiện đánh giá đúng, mã lệnh bên trong vòng lặp do được thực thi một lần nữa.
  • Điều kiện được đánh giá một lần nữa.
  • Quá trình này tiếp tục cho đến khi điều kiện là sai. Sau đó, vòng lặp kết thúc.

Sơ đồ luồng của vòng lặp do...while

Ví dụ 3: Hiển thị các số từ 1 đến 5

#include 
using namespace std;

int main() {
    int i = 1;

    // vòng lặp do...while từ 1 đến 5
    do {
        cout  i  " ";
        ++i;
    } while (i = 5);

    return 0;
}

Kết quả

1 2 3 4 5

Dưới đây là cách chương trình hoạt động.

Ví dụ 4: Tính tổng của các số dương

#include 
using namespace std;

int main() {
    int number = 0;
    int sum = 0;

    do {
        sum += number;

        // yêu cầu người dùng nhập số
        cout  "Nhập một số: ";
        cin >> number;
    } while (number >= 0);

    // hiển thị tổng
    cout  "\nTổng là "  sum  endl;

    return 0;
}

Kết quả 1

Nhập một số: 6
Nhập một số: 12
Nhập một số: 7
Nhập một số: 0
Nhập một số: -2
Tổng là 25

Ở đây, vòng lặp do...while tiếp tục cho đến khi người dùng nhập một số âm. Khi số âm được nhập vào, vòng lặp kết thúc; số âm không được cộng vào biến sum.

Kết quả 2

Nhập một số: -6
Tổng là 0.

Nội dung của vòng lặp do chỉ được thực thi một lần nếu người dùng nhập một số âm.

Vòng lặp vô hạn (Infinite while loop)

Nếu điều kiện của vòng lặp luôn đúng, vòng lặp sẽ chạy vô hạn (cho đến khi bộ nhớ đầy). Ví dụ,

// vòng lặp while vô hạn
while (true) {
    // nội dung của vòng lặp
}

Dưới đây là một ví dụ về vòng lặp do...while vô hạn.

// vòng lặp do...while vô hạn
int count = 1;
do {
    // nội dung của vòng lặp
} while (count == 1);

Trong các chương trình trên, điều kiện luôn đúng. Do đó, nội dung của vòng lặp sẽ chạy vô hạn.

Vòng lặp for vs while

Vòng lặp for thường được sử dụng khi số lần lặp biết trước. Ví dụ,

// Vòng lặp này được lặp 5 lần
for (int i = 1; i = 5; ++i) {
    // nội dung của vòng lặp
}

Ở đây, chúng ta biết rằng vòng lặp for sẽ được thực thi 5 lần.

Tuy nhiên, vòng lặp while và do...while thường được sử dụng khi số lần lặp không được biết trước. Ví dụ,

while (điều kiện) {
    // nội dung của vòng lặp
}

Kiểm tra các ví dụ sau để tìm hiểu thêm:

1