Điều kiện, vòng lặp và switch
if chọn theo điều kiện, switch xử lý case rời rạc và loop lặp block đến điểm dừng.
Điều kiện, vòng lặp và switch là gì?
if chọn theo điều kiện, switch xử lý case rời rạc và loop lặp block đến điểm dừng.
Kết hợp branch và loop trong chương trình phân loại.
Đ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.
Code ví dụ bằng C và C++
main.c
#include <stdio.h>
int main(void) {
int scores[] = {92, 71, 84};
int total = 0;
for (int i = 0; i < 3; ++i) total += scores[i];
int average = total / 3;
switch (average / 10) {
case 10: case 9: puts("Grade A"); break;
case 8: puts("Grade B"); break;
default: puts("Keep practicing");
}
return 0;
}
Grade B
C++
main.cpp
#include <iostream>
#include <vector>
int main() {
std::vector<int> scores{92, 71, 84};
int total = 0;
for (int score : scores) total += score;
switch ((total / static_cast<int>(scores.size())) / 10) {
case 10: case 9: std::cout << "Grade A\n"; break;
case 8: std::cout << "Grade B\n"; break;
default: std::cout << "Keep practicing\n";
}
}
Grade B
So sánh C và C++
Cú pháp gần như giống nhau; nên luôn dùng braces, tránh switch fall-through ngoài ý muốn và giữ index trong giới hạn mảng.
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.