เงื่อนไข ลูป และ switch
รวม branch และ loop ในโปรแกรมขนาดเล็ก
เงื่อนไข ลูป และ switch คืออะไร?
if เลือกด้วยเงื่อนไข switch จัดการ case และ loop ทำ block ซ้ำ
ประเด็นสำคัญ
- เปิด compiler warning และแก้ทุกคำเตือน
- รู้ type และ lifetime ของทุกค่า
- ตรวจ input และขอบเขต array ให้ชัดเจน
ดูการทำงาน
เลื่อนแถบเพื่อเปลี่ยนคะแนน ผังงานจะไฮไลต์เส้นทางที่โปรแกรมเดินผ่าน และบรรทัดโค้ดที่ตรงกันจะถูกเน้น
ตัวอย่างโค้ด C และ 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
เปรียบเทียบ C และ C++
ไวยากรณ์เกือบเหมือนกัน ควรใช้ braces ป้องกัน fall-through และรักษา index ให้อยู่ในขอบเขต array
C
C แสดง API แบบ procedural และรายละเอียด representation อย่างชัดเจน
C++
C++ รักษา low-level model และเพิ่ม type ที่ปลอดภัยกว่า
แบบฝึกหัด
รันทั้งสองเวอร์ชันแล้วแก้ไขเพื่อสังเกตความแตกต่างของภาษา
- เพิ่ม input ผิดและค่าขอบเขต
- Compile ด้วย -Wall -Wextra -Wpedantic
- แยก declaration และ implementation
ฝึกด้วยโจทย์
ใช้สิ่งที่เรียนในบทนี้แก้ปัญหาจริง ทุกโจทย์รันในเบราว์เซอร์ พร้อมการทดสอบทันทีและรีวิวจาก AI
- Letter Grade Turn a test score into a letter grade. ง่าย
- Fizz Buzz สร้างลำดับโดยใช้การหารด้วย 3 และ 5 ง่าย
- Triangle Classification Classify three side lengths as invalid, equilateral, isosceles, or scalene. ง่าย