- 1 1. บทนำ: คำสั่งเงื่อนไข (Conditional Statements) ในภาษา C คืออะไร?
- 2 2. โครงสร้างพื้นฐานและการใช้งาน switch-case
- 3 3. คุณสมบัติและข้อควรระวังของ switch-case
- 4 4. การเลือกใช้ if-else กับ switch-case: ควรเลือกแบบไหน?
- 5 5. ตัวอย่างการประยุกต์ใช้ switch-case
- 6 6. ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
- 7 7. สรุปและก้าวต่อไป
1. บทนำ: คำสั่งเงื่อนไข (Conditional Statements) ในภาษา C คืออะไร?
ความสำคัญและบทบาทของคำสั่งเงื่อนไข
ในการเขียนโปรแกรม คำสั่งเงื่อนไขมีบทบาทสำคัญอย่างมาก เพราะช่วยให้โปรแกรมสามารถทำงานที่แตกต่างกันตามเงื่อนไขที่กำหนด ส่งผลให้โค้ดมีความยืดหยุ่นและมีประสิทธิภาพมากขึ้น
พื้นฐานของคำสั่งเงื่อนไขในภาษา C
ในภาษา C มีวิธีการหลัก 2 วิธีในการสร้างเงื่อนไข:
- if-else statement
- switch-case statement
ในบรรดาวิธีเหล่านี้ switch-case เหมาะสำหรับการจัดการหลายเงื่อนไขได้อย่างมีประสิทธิภาพ โดยเฉพาะเมื่อมีตัวเลือกที่ชัดเจน
บทบาทและสถานการณ์ที่ใช้ switch-case
switch-case
เป็นโครงสร้างควบคุมที่ใช้ในการเลือกการทำงานตามค่าของตัวแปร เหมาะสำหรับสถานการณ์ดังนี้:
- โปรแกรมเลือกเมนู
- การจัดหมวดหมู่ตามตัวเลขหรือตัวอักษร
- การจัดการสถานะอย่างง่าย
ตัวอย่างสถานการณ์การใช้งาน
เช่น โปรแกรมที่ทำงานต่างกันตามหมายเลขเมนู หากผู้ใช้เลือก “1” โปรแกรมจะแสดง “เริ่มต้น” และหากเลือก “2” จะแสดง “สิ้นสุด”
ข้อดีของการเรียนรู้ switch-case
- โค้ดกระชับและอ่านง่าย
- ช่วยจัดระเบียบเงื่อนไขได้ชัดเจน ลดความผิดพลาด
- เพิ่มประสิทธิภาพของโปรแกรม
บทความนี้จะอธิบายโครงสร้างพื้นฐาน ตัวอย่างการใช้งาน และข้อควรระวังของ switch-case อย่างละเอียด เพื่อให้คุณเข้าใจลึกซึ้งและนำไปใช้ในงานจริงได้

2. โครงสร้างพื้นฐานและการใช้งาน switch-case
โครงสร้างพื้นฐาน
ตัวอย่างโครงสร้างพื้นฐานของ switch-case
:
switch (expression) {
case ค่าที่1:
// คำสั่งที่1
break;
case ค่าที่2:
// คำสั่งที่2
break;
default:
// คำสั่งอื่น ๆ
}
โค้ดตัวอย่าง: โปรแกรมตรวจสอบวันในสัปดาห์
#include <stdio.h>
int main() {
int day;
printf("กรุณาใส่ตัวเลขวัน (1〜7): ");
scanf("%d", &day);
switch (day) {
case 1:
printf("วันจันทร์\n");
break;
case 2:
printf("วันอังคาร\n");
break;
case 3:
printf("วันพุธ\n");
break;
case 4:
printf("วันพฤหัสบดี\n");
break;
case 5:
printf("วันศุกร์\n");
break;
case 6:
printf("วันเสาร์\n");
break;
case 7:
printf("วันอาทิตย์\n");
break;
default:
printf("ข้อมูลไม่ถูกต้อง\n");
}
return 0;
}
จุดสำคัญของตัวอย่างนี้
- การใช้
break
หลังแต่ละ case เพื่อควบคุมลำดับการทำงาน - การใช้
default
เพื่อรองรับกรณีที่ผู้ใช้ใส่ค่าที่ไม่ถูกต้อง
ข้อดีของการใช้ switch-case
- อ่านง่ายขึ้น: เงื่อนไขถูกเขียนแบบเรียบง่ายและชัดเจน
- ลดจำนวนโค้ด: สามารถจัดการหลายเงื่อนไขของตัวแปรเดียวได้อย่างกระชับ
- ลดข้อผิดพลาด: สามารถจัดการอินพุตที่ไม่คาดคิดได้ง่าย
3. คุณสมบัติและข้อควรระวังของ switch-case
คุณสมบัติ 1: เรียบง่ายและอ่านง่าย
switch-case
ช่วยให้การจัดการหลายเงื่อนไขเป็นไปอย่างกระชับและอ่านง่าย
คุณสมบัติ 2: ใช้กับค่าประเภทจำนวนเต็มและตัวอักษร
switch-case
ถูกออกแบบมาเพื่อใช้กับค่า int
และ char
ข้อควรระวัง
1. อย่าลืมใส่ break
int num = 1;
switch (num) {
case 1:
printf("One\n");
case 2:
printf("Two\n");
default:
printf("Other\n");
}
ผลลัพธ์:
One
Two
Other
วิธีแก้ไข:
int num = 1;
switch (num) {
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
default:
printf("Other\n");
}
2. ใช้ได้เฉพาะค่าคงที่ (constant)
int x = 10;
switch (x) {
case x: // error
printf("เกิดข้อผิดพลาด\n");
break;
}
เวอร์ชันแก้ไข:
#define VALUE 10
switch (x) {
case VALUE:
printf("สำเร็จ\n");
break;
}
สรุป
- อย่าลืม break – ป้องกันการไหลต่อ (fall-through) โดยไม่ตั้งใจ
- ใช้เฉพาะค่าคงที่ – ไม่สามารถใช้ตัวแปรหรือ expression ได้
- จัดโครงสร้างให้เป็นระเบียบ – ใช้คอมเมนต์และการเว้นบรรทัดเพื่อให้อ่านง่าย

4. การเลือกใช้ if-else กับ switch-case: ควรเลือกแบบไหน?
ความแตกต่างพื้นฐาน
1. วิธีการประเมินเงื่อนไข
- if-else ใช้ตรวจสอบเงื่อนไขเชิงตรรกะ เช่น การเปรียบเทียบหรือหลายเงื่อนไขซับซ้อน
- switch-case ใช้ตรวจสอบค่าที่แน่นอน (เช่น ค่าคงที่หรือตัวอักษร) เท่านั้น
ตารางเปรียบเทียบ
หัวข้อเปรียบเทียบ | if-else | switch-case |
---|---|---|
รูปแบบเงื่อนไข | รองรับเงื่อนไขเชิงตรรกะหรือช่วงค่า | จำกัดเฉพาะค่าที่เป็นจำนวนเต็มหรือตัวอักษร |
ความสามารถในการอ่าน | ซับซ้อนเมื่อมีหลายเงื่อนไข | เข้าใจง่ายเมื่อมีหลายตัวเลือกที่ชัดเจน |
ความเร็ว | อาจช้ากว่าในบางกรณี | คอมไพเลอร์สามารถปรับให้ทำงานได้รวดเร็ว |
การขยาย | ยืดหยุ่นในการเพิ่มเงื่อนไข | จำกัดที่ค่าคงที่ จึงขยายได้น้อยกว่า |
การใช้งานที่เหมาะสม | ใช้กับเงื่อนไขที่ซับซ้อนหรือช่วงค่า | เหมาะกับการเลือกค่าที่แน่นอน เช่น เมนู |
ตัวอย่างการใช้งาน
ตัวอย่าง if-else:
int score = 85;
if (score >= 90) {
printf("ดีมาก\n");
} else if (score >= 70) {
printf("ดี\n");
} else {
printf("พอใช้\n");
}
ตัวอย่าง switch-case:
int grade = 2;
switch (grade) {
case 1:
printf("ดีมาก\n");
break;
case 2:
printf("ดี\n");
break;
case 3:
printf("พอใช้\n");
break;
default:
printf("ไม่ผ่าน\n");
}
5. ตัวอย่างการประยุกต์ใช้ switch-case
1. รวมหลาย case เข้าด้วยกัน
char grade = 'A';
switch (grade) {
case 'A':
case 'B':
printf("ผ่าน\n");
break;
case 'C':
printf("สอบใหม่\n");
break;
default:
printf("ไม่ผ่าน\n");
}
2. ใช้ประโยชน์จากการ fall-through
int score = 85;
switch (score / 10) {
case 10:
case 9:
printf("ยอดเยี่ยม\n");
break;
case 8:
case 7:
printf("ดี\n");
break;
default:
printf("ไม่ผ่าน\n");
}
3. switch-case ซ้อนกัน
int menu = 1;
int subMenu = 2;
switch (menu) {
case 1:
switch (subMenu) {
case 1:
printf("เมนูย่อย 1-1\n");
break;
case 2:
printf("เมนูย่อย 1-2\n");
break;
}
break;
case 2:
printf("เมนู 2\n");
break;
}
6. ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
1. ลืมใส่ break
int num = 1;
switch (num) {
case 1:
printf("One\n");
case 2:
printf("Two\n");
default:
printf("Other\n");
}
วิธีแก้ไข:
int num = 1;
switch (num) {
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
default:
printf("Other\n");
}
2. ใช้ตัวแปรใน case แทนค่าคงที่
int x = 10;
switch (x) {
case x: // error
printf("ค่าคือ 10\n");
break;
}
เวอร์ชันแก้ไข:
#define VALUE 10
switch (x) {
case VALUE:
printf("สำเร็จ\n");
break;
}
3. ละเว้น default
int num = 5;
switch (num) {
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
}
วิธีแก้ไข:
switch (num) {
case 1:
printf("One\n");
break;
case 2:
printf("Two\n");
break;
default:
printf("Other\n");
}

7. สรุปและก้าวต่อไป
1. สรุปประเด็นสำคัญ
- โครงสร้างพื้นฐานและการใช้งาน
switch-case
เป็นโครงสร้างควบคุมที่ช่วยให้เลือกทำงานตามค่าที่กำหนดได้สะดวก- โค้ดอ่านง่าย เหมาะกับการแยกเงื่อนไขชัดเจน
- คุณสมบัติและข้อควรระวัง
switch-case
ใช้ได้เฉพาะค่าคงที่ประเภทจำนวนเต็มหรืออักขระ- หากลืม
break
จะทำให้เกิดการไหลต่อ (fall-through) โดยไม่ตั้งใจ
- การเลือกใช้กับ if-else
- if-else เหมาะกับเงื่อนไขซับซ้อนหรือช่วงค่า
- switch-case เหมาะกับค่าที่แน่นอน เช่น ตัวเลือกเมนู
- การประยุกต์ใช้
- รวมหลาย case เข้าด้วยกัน หรือใช้ fall-through เพื่อประเมินช่วงค่า
- ซ้อน
switch-case
หรือใช้ร่วมกับฟังก์ชันเพื่อจัดการโค้ดที่ซับซ้อน
- ข้อผิดพลาดและวิธีแก้ไข
- ข้อผิดพลาดที่พบบ่อย เช่น ลืม break, ใช้ตัวแปรใน case, ละเว้น default
- การเข้าใจแนวทางแก้ไขช่วยให้ดีบักได้ง่ายขึ้น
2. ก้าวต่อไป
1. ทดลองสร้างโปรแกรมจริง
ลองสร้างโปรแกรม เช่น:
- เครื่องคิดเลข: ใช้
switch-case
สำหรับการคำนวณ - แอปเลือกเมนู: สร้างเมนูหลายระดับและควบคุมการทำงาน
- ระบบจัดการผลการเรียน: แบ่งเกรดอัตโนมัติตามคะแนน
2. เรียนรู้หัวข้อที่เกี่ยวข้อง
เพื่อพัฒนาเพิ่มเติม:
- if-else ขั้นสูง: เทคนิคเพิ่มเติมในการเขียนเงื่อนไข
- ลูป (for, while): รวมการทำซ้ำกับการใช้เงื่อนไข
- ฟังก์ชันและโครงสร้างข้อมูล (struct): สำหรับโปรแกรมขนาดใหญ่
3. การปรับปรุงและดีบักโค้ด
- ใช้เครื่องมือ debug: เพื่อหาข้อผิดพลาดและแก้ไขอย่างรวดเร็ว
- ทำ code review: แลกเปลี่ยนความคิดเห็นเพื่อเพิ่มคุณภาพโค้ด
3. บทสรุป
switch-case
เป็นเครื่องมือที่ทรงพลังในการจัดการเงื่อนไขในภาษา C การเรียนรู้ทั้งพื้นฐานและการประยุกต์ใช้อย่างถูกต้องจะช่วยเพิ่มประสิทธิภาพและความเข้าใจในโค้ด
คุณสามารถพัฒนาทักษะได้อย่างมั่นใจด้วยการฝึกเขียนโค้ดจริง และก้าวไปสู่การเรียนรู้หัวข้อขั้นสูงเพื่อยกระดับทักษะการเขียนโปรแกรมของคุณ