C/C++ Basics

Vòng lặp: for, while và do-while

Vòng lặp chạy cùng một khối lệnh nhiều lần. for hợp với số bước biết trước, while lặp đến khi điều kiện sai, còn do-while luôn chạy thân vòng lặp ít nhất một lần.

Vòng lặp: for, while và do-while là gì?

Vòng lặp chạy cùng một khối lệnh nhiều lần. for hợp với số bước biết trước, while lặp đến khi điều kiện sai, còn do-while luôn chạy thân vòng lặp ít nhất một lần.

Lặp lại công việc với vòng lặp for, while và do-while, cùng break và continue.

Điểm quan trọng

  • Luôn bật compiler warning và xử lý mọi cảnh báo.
  • Hiểu rõ type và lifetime của từng giá trị.
  • Kiểm tra input và giới hạn mảng rõ ràng.

Xem cách hoạt động

Nhấn Từng bước để chạy vòng lặp từng bước một. Quan sát điều kiện được kiểm tra, thân vòng lặp chạy và bảng theo dõi thêm từng dòng.

Code ví dụ bằng C và C++

C
Chạy code →
main.c
#include <stdio.h>

int main(void) {
    /* for: start; condition; step */
    for (int i = 1; i <= 5; i++) {
        printf("%d ", i);
    }
    printf("\n");

    /* while: repeat as long as the condition holds */
    int n = 20;
    int steps = 0;
    while (n > 1) {
        n /= 2;
        steps++;
    }
    printf("halved %d times\n", steps);

    /* do-while: the body runs at least once */
    int tries = 0;
    do {
        tries++;
    } while (tries < 3);
    printf("tries = %d\n", tries);

    /* break leaves the loop, continue skips to the next round */
    for (int i = 1; i <= 10; i++) {
        if (i % 2 == 0) continue;
        if (i > 7) break;
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}
Output dự kiến
1 2 3 4 5 
halved 4 times
tries = 3
1 3 5 7
C++
Chạy code →
main.cpp
#include <iostream>
#include <vector>

int main() {
    // for: start; condition; step
    for (int i = 1; i <= 5; i++) {
        std::cout << i << ' ';
    }
    std::cout << '\n';

    // while: repeat as long as the condition holds
    int n = 20;
    int steps = 0;
    while (n > 1) {
        n /= 2;
        steps++;
    }
    std::cout << "halved " << steps << " times\n";

    // do-while: the body runs at least once
    int tries = 0;
    do {
        tries++;
    } while (tries < 3);
    std::cout << "tries = " << tries << '\n';

    // range-based for visits every element of a container
    std::vector<int> values{1, 3, 5, 7};
    int sum = 0;
    for (int value : values) {
        sum += value;
    }
    std::cout << "sum = " << sum << '\n';
}
Output dự kiến
1 2 3 4 5 
halved 4 times
tries = 3
sum = 16

So sánh C và C++

Phần đầu của for gồm giá trị khởi đầu, điều kiện và bước nhảy. break thoát vòng lặp sớm và continue nhảy sang lượt tiếp theo. C++ có thêm vòng for theo phạm vi, đi qua mọi phần tử của container mà không cần chỉ số.

C

C dùng API thủ tục nhỏ gọn và thể hiện chi tiết biểu diễn rõ ràng.

C++

C++ giữ mô hình low-level nhưng bổ sung type thư viện và abstraction an toàn hơn.

Bài tập mở rộng

Chạy cả hai phiên bản rồi thay đổi để quan sát khác biệt về bảo đảm của từng ngôn ngữ.

  • Thêm input sai và boundary value.
  • Biên dịch với -Wall -Wextra -Wpedantic.
  • Tách declaration dùng lại vào header và implementation file.

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách