การใช้งาน switch ในภาษา C: คู่มือพื้นฐานและตัวอย่างโค้ดสำหรับมือใหม่

1. บทนำ

โครงสร้างควบคุมแบบ “switch” ที่ใช้บ่อยในการเขียนโปรแกรม เป็นเครื่องมือที่ช่วยให้การแบ่งเงื่อนไขเป็นเรื่องง่ายและชัดเจนมาก ในภาษา C เอง การใช้ switch ช่วยจัดระเบียบทางเลือกหลาย ๆ แบบให้โค้ดอ่านง่ายขึ้น และลดโอกาสเกิดบั๊ก ในบทความนี้จะอธิบายการใช้ switch ในภาษา C ตั้งแต่พื้นฐานไปจนถึงตัวอย่างการประยุกต์ใช้ พร้อมตัวอย่างโค้ดจริง

2. switch ในภาษา C คืออะไร?

“switch” เป็นโครงสร้างที่ใช้เปรียบเทียบค่าของตัวแปรกับหลาย ๆ ค่า แล้วดำเนินการตามแต่ละกรณี เหมาะอย่างยิ่งกับเงื่อนไขที่เป็นตัวเลขหรือ enum (ชนิดข้อมูลแบบกำหนดเอง) เช่น การแบ่งเมนูตามหมายเลขที่ผู้ใช้เลือก จะทำให้เขียนโปรแกรมแบบมีทางเลือกหลากหลายได้อย่างกระชับ

switch (เงื่อนไข) {
case ค่า1:
// ดำเนินการสำหรับค่า1
break;
case ค่า2:
// ดำเนินการสำหรับค่า2
break;
default:
// กรณีที่ไม่ตรงกับค่าใด ๆ
}

ในโครงสร้างนี้ โค้ดที่อยู่ใน case จะทำงานตามค่าของตัวแปรที่กำหนดใน switch ถ้าไม่มี case ไหนตรงกัน จะดำเนินการใน default จึงเหมาะสำหรับจัดการข้อผิดพลาดหรือค่าที่ไม่คาดคิด

3. โครงสร้างพื้นฐานของ switch

ต่อไปคือตัวอย่างการใช้งานพื้นฐาน ในโปรแกรมนี้จะแสดงข้อความตามแต้มลูกเต๋าที่ออก

int main(void) {
int dice = 3;
switch (dice) {
case 1:
printf("ออกแต้ม 1");
break;
case 2:
printf("ออกแต้ม 2");
break;
case 3:
printf("ออกแต้ม 3");
break;
case 4:
printf("ออกแต้ม 4");
break;
case 5:
printf("ออกแต้ม 5");
break;
case 6:
printf("ออกแต้ม 6");
break;
default:
printf("แต้มไม่ถูกต้อง");
break;
}
return 0;
}

ในตัวอย่างนี้ เมื่อค่า dice เป็น 3 จะแสดงข้อความว่า “ออกแต้ม 3” หากใส่ค่าที่ไม่ถูกต้อง ระบบจะใช้ default แสดงข้อความ “แต้มไม่ถูกต้อง” เพื่อรองรับข้อผิดพลาด

4. ตัวอย่างการใช้ switch: เลือกเมนูอาหาร

switch เหมาะสำหรับกรณีที่ต้องแบ่งการทำงานตามค่าที่ผู้ใช้กรอก เช่น ในตัวอย่างนี้จะแสดงข้อความตามเมนูอาหารที่ผู้ใช้เลือก

int main(void) {
int choice;
printf("เมนู:");
printf("1. แฮมเบอร์เกอร์");
printf("2. พิซซ่า");
printf("3. พาสต้า");
printf("กรุณาเลือกหมายเลข: ");
scanf("%d", &choice);

switch (choice) {
    case 1:
        printf("คุณเลือกแฮมเบอร์เกอร์");
break;
case 2:
printf("คุณเลือกพิซซ่า");
break;
case 3:
printf("คุณเลือกพาสต้า");
break;
default:
printf("การเลือกไม่ถูกต้อง");
break;
}
return 0;
}

โปรแกรมนี้จะแสดงข้อความตามเมนูที่เลือก การใช้ switch ทำให้โค้ดกระชับ อ่านง่าย และสะดวกต่อการปรับปรุงในอนาคต

5. ความแตกต่างระหว่าง switch กับ if: เลือกใช้อย่างไร?

ทั้ง switch และ if ใช้แบ่งเงื่อนไขได้เหมือนกัน แต่มีจุดเด่นต่างกัน

สถานการณ์ที่ควรใช้ switch

  • เมื่อค่าที่ต้องเปรียบเทียบเป็นค่าคงที่ (เช่น หมายเลขเมนู รหัสสถานะ)
  • เมื่อเงื่อนไขง่าย ๆ ต้องการแบ่งตามค่าแบบเจาะจง

สถานการณ์ที่ควรใช้ if

  • เมื่อเงื่อนไขซับซ้อน เช่น ต้องใช้ช่วงของตัวเลข หรือสัญลักษณ์เปรียบเทียบอื่น ๆ
  • เมื่อเงื่อนไขอ้างอิงกับตัวแปรหลายตัว หรือใช้ตรรกะมากกว่าแค่เทียบค่า

switch เหมาะกับเงื่อนไขที่แบ่งตามค่าชัดเจน ส่วน if ยืดหยุ่นกว่า เหมาะกับกรณีซับซ้อน ควรเลือกใช้ตามความเหมาะสม

6. ข้อผิดพลาดที่พบบ่อยและวิธีหลีกเลี่ยง

ตัวอย่างข้อผิดพลาดที่พบบ่อยเมื่อนำ switch ไปใช้ และวิธีแก้ไข

1. ลืมใช้ break ทำให้เกิดฟอลล์ทรู (fallthrough)
ถ้าลืมใส่ break หลัง case โค้ดใน case ถัดไปจะถูกรันด้วย (ฟอลล์ทรู) ยกเว้นกรณีต้องการให้เป็นแบบนั้นจริง ๆ ควรใส่ break ทุกครั้งที่จบแต่ละ case

2. ไม่ใช้ default
ถ้าอาจเจอค่าที่ไม่คาดคิดจากผู้ใช้ ควรใช้ default สำหรับจัดการข้อผิดพลาด ช่วยลดความเสี่ยงที่โปรแกรมจะทำงานผิดปกติ

7. ประยุกต์ใช้ switch กับ enum

อีกวิธีหนึ่งที่จะทำให้ switch มีประสิทธิภาพมากขึ้นคือการใช้ enum (ชนิดข้อมูลแบบกำหนดชื่อ) ช่วยให้ใช้ชื่อแทนค่าตัวเลข โค้ดจึงอ่านง่ายและเข้าใจตรงกันมากขึ้น

enum Fruit { APPLE, BANANA, ORANGE };
int main(void) {
enum Fruit fruit = BANANA;
switch (fruit) {
    case APPLE:
        printf("คุณเลือกแอปเปิล");
break;
case BANANA:
printf("คุณเลือกกล้วย");
break;
case ORANGE:
printf("คุณเลือกส้ม");
break;
default:
printf("การเลือกไม่ถูกต้อง");
break;
}
return 0;
}

ตัวอย่างนี้นิยามตัวเลือกผลไม้ด้วย enum แล้วแบ่งการทำงานใน switch โค้ดจึงอ่านง่ายและดูแลรักษาสะดวกขึ้น

8. สรุป

switch ในภาษา C เหมาะสำหรับกรณีที่ต้องแบ่งเงื่อนไขตามค่าชัดเจน ช่วยให้เขียนโค้ดแบ่งทางเลือกแบบง่ายและอ่านง่ายกว่าการใช้ if ในบางกรณี ลองนำ switch ไปประยุกต์ใช้ในโปรแกรมของคุณเพื่อให้โค้ดมีประสิทธิภาพและดูดีขึ้น

年収訴求