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++
#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;
}
1 2 3 4 5
halved 4 times
tries = 3
1 3 5 7
#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';
}
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 dùng API thủ tục nhỏ gọn và thể hiện chi tiết biểu diễn rõ ràng.
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.
- Sum of Odd Numbers Add every odd number up to a limit. Dễ
- Countdown to Liftoff Count down from a number and end with Liftoff! Dễ
- Multiplication Table Row List the first multiples of a number. Dễ