Cách sử dụng vòng lặp do while trong C: Hướng dẫn chi tiết và ví dụ thực tế

1. Giới thiệu

Tầm quan trọng của xử lý lặp trong ngôn ngữ C

Trong lập trình, “xử lý lặp” là việc thực hiện đi thực hiện lại cùng một thao tác nhiều lần và rất quan trọng. Trong ngôn ngữ C, các câu lệnh như for, while và đặc biệt là do while được sử dụng để xử lý lặp. Bài viết này sẽ tập trung vào do while, giải thích từ cách sử dụng cơ bản đến ví dụ thực tiễn.

年収訴求

2. Cơ bản về do while

Cú pháp cơ bản của do while

Câu lệnh do while đảm bảo rằng nội dung trong vòng lặp sẽ được thực hiện ít nhất một lần. Cú pháp như sau:

do {
    // Xử lý cần thực hiện
} while (điều_kiện);

Trong cấu trúc này, phần bên trong do sẽ được thực thi trước, sau đó điều kiện mới được kiểm tra. Nếu điều kiện là true thì vòng lặp sẽ tiếp tục, nếu là false thì vòng lặp kết thúc.

Khác biệt với câu lệnh while

Với while, điều kiện được kiểm tra trước khi thực hiện vòng lặp, chỉ khi điều kiện là true thì mới thực hiện nội dung trong vòng lặp. Ngược lại, do while sẽ thực hiện nội dung vòng lặp trước rồi mới kiểm tra điều kiện, vì vậy luôn được thực hiện ít nhất một lần.

3. Ứng dụng của do while

Lặp lại khi nhập liệu từ người dùng

do while rất hữu ích khi cần xác thực đầu vào từ người dùng. Ví dụ, khi yêu cầu nhập mật khẩu, bạn có thể sử dụng do while để kiểm tra giá trị nhập vào, và nếu chưa đúng thì yêu cầu nhập lại một cách dễ dàng.

Xử lý lặp trong trò chơi

Trong lập trình game, do while được dùng khi cần lặp lại thao tác cho đến khi người chơi chọn một hành động cụ thể, ví dụ như tiếp tục chơi game. Vòng lặp tiếp tục miễn là người chơi chọn “Tiếp tục”.

4. Ví dụ về do while trong mã nguồn

Ví dụ cơ bản về do while

Dưới đây là ví dụ cơ bản về cách sử dụng do while trong C.

#include <stdio.h>

int main() {
    int i = 0;

    do {
        printf("Đếm: %dn", i);
        i++;
    } while (i < 5);

    return 0;
}

Trong ví dụ này, phần xử lý trong do sẽ thực hiện trước, vòng lặp tiếp tục miễn là giá trị của i nhỏ hơn 5. Kết quả sẽ in ra các số từ 0 đến 4.

Ví dụ nhập liệu từ người dùng

Dưới đây là ví dụ về việc lặp lại việc nhập cho đến khi người dùng nhập đúng điều kiện.

#include <stdio.h>

int main() {
    int number;

    do {
        printf("Vui lòng nhập số từ 1 đến 10: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("Số bạn vừa nhập: %dn", number);

    return 0;
}

Đoạn mã này sẽ yêu cầu người dùng nhập lại nếu giá trị nằm ngoài khoảng từ 1 đến 10. Vòng lặp sẽ tiếp tục cho đến khi nhập đúng.

5. Vòng lặp vô hạn và cách kiểm soát

Tạo vòng lặp vô hạn

Bạn cũng có thể tạo vòng lặp vô hạn với do while. Vòng lặp vô hạn là vòng lặp mà điều kiện luôn true, nên sẽ lặp mãi mãi.

do {
    // Xử lý lặp vô hạn
} while (1);

Cách kiểm soát vòng lặp vô hạn

Để kiểm soát vòng lặp vô hạn, bạn có thể sử dụng break hoặc continue.

  • Câu lệnh break: Dùng để thoát khỏi vòng lặp.
  • Câu lệnh continue: Bỏ qua phần còn lại của vòng lặp hiện tại và chuyển sang lần lặp tiếp theo.

Dưới đây là ví dụ về vòng lặp vô hạn với break:

#include <stdio.h>

int main() {
    int count = 0;

    do {
        printf("Số lần lặp: %dn", count);
        count++;
        if (count > 5) {
            break;
        }
    } while (1);

    return 0;
}

Trong đoạn mã này, khi count lớn hơn 5, lệnh break sẽ được thực thi và vòng lặp kết thúc.

6. Sử dụng nhiều điều kiện trong do while

Cách dùng nhiều điều kiện

Trong do while, bạn có thể kết hợp nhiều điều kiện bằng toán tử logic như && (AND) hoặc || (OR).

do {
    // Xử lý cần thực hiện
} while (điều_kiện_1 && điều_kiện_2);

Ví dụ với điều kiện phức tạp

Ví dụ sau đây kiểm tra xem người dùng nhập số trong khoảng từ 1 đến 100, nếu không thì yêu cầu nhập lại.

#include <stdio.h>

int main() {
    int number;

    do {
        printf("Vui lòng nhập số từ 1 đến 100: ");
        scanf("%d", &number);
    } while (number < 1 || number > 100);

    printf("Số bạn vừa nhập: %dn", number);

    return 0;
}

Chỉ khi giá trị nhập vào từ 1 đến 100 thì vòng lặp mới kết thúc, nếu không sẽ yêu cầu nhập lại.

7. Tổng kết

do while rất hữu ích khi bạn muốn đảm bảo nội dung vòng lặp được thực hiện ít nhất một lần. Nếu biết kết hợp giữa whiledo while sẽ giúp chương trình linh hoạt hơn. Hãy nắm vững cách kiểm soát vòng lặp bằng break, continue cũng như ứng dụng điều kiện phức tạp để thành thạo xử lý lặp trong C.

8. Bài tập thực hành và đáp án mẫu

Bài tập

Hãy viết một chương trình yêu cầu người dùng nhập một số nguyên từ 1 đến 10. Nếu nhập sai thì yêu cầu nhập lại, nếu nhập đúng thì in ra giá trị gấp đôi số vừa nhập.

Đáp án mẫu

#include <stdio.h>

int main() {
    int number;

    do {
        printf("Vui lòng nhập số từ 1 đến 10: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("Giá trị gấp đôi số đã nhập: %dn", number * 2);

    return 0;
}

Bài tập này sử dụng do while để kiểm tra đầu vào và yêu cầu nhập lại nếu nhập sai phạm vi.

9. Thông tin liên quan & Bước tiếp theo

Sau khi hiểu về do while, bạn nên học thêm về các cấu trúc lặp khác như forwhile. Ngoài ra, chủ đề quan trọng tiếp theo trong C là “con trỏ” (pointer). Hiểu về con trỏ sẽ giúp bạn lập trình ở mức nâng cao hơn. Hãy tìm hiểu tiếp nhé!

侍エンジニア塾