พื้นฐาน C/C++

เงื่อนไข ลูป และ switch

if เลือกด้วยเงื่อนไข switch จัดการ case และ loop ทำ block ซ้ำ

เงื่อนไข ลูป และ switch คืออะไร?

if เลือกด้วยเงื่อนไข switch จัดการ case และ loop ทำ block ซ้ำ

รวม branch และ loop ในโปรแกรมขนาดเล็ก

ประเด็นสำคัญ

  • เปิด compiler warning และแก้ทุกคำเตือน
  • รู้ type และ lifetime ของทุกค่า
  • ตรวจ input และขอบเขต array ให้ชัดเจน

ตัวอย่างโค้ด C และ 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