switch
คำสั่ง switch
ในกรณีที่มีทางเลือกการทำงานหลาย ๆ ทางเลือก การเขียนโปรแกรมโดยใช้ switch จะสะดวกและเข้าใจได้ง่ายกว่าการใช้ฟังก์ชัน if
รูปแบบ
switch(variable)
{ case constant 1 : statement 11;
statement 12;
:
break;
case constant 2 : statement 21;
statement 22;
:
break;
case constant 3 : statement 31;
statement 32;
:
break;
:
:
case constant n : statement n1;
statement n2;
:
break;
default : statement d1;
statement d2;
:
}
โดยที่ variable คือ ตัวแปรชนิด char หรือ int หรือเป็นนิพจน์ใด ๆ โดยค่าที่เก็บในตัวแปรจะนำมาตรวจสอบว่า
ตรงกับ constant กรณีใดที่อยู่ใน case โปรแกรมก็จะดำเนินการตามคำสั่งที่อยู่ใน case นั้น
constant 1 , constant 2 , … ,constant n คือ ค่าคงที่ชนิด char หรือ int ที่มีชนิดเดียวกันกับในส่วนของ vaiable สำหรับเป็นเงื่อนไขที่จะเลือกดำเนินการ
statement คือ คำสั่งหรือชุดคำสั่งที่ต้องการให้ดำเนินการเมื่อเป็นไปตามเงื่อนไขในแต่ละกรณี ถ้าเป็นชุด คำสั่งไม่ต้องเขียนภายใต้เครื่องหมาย { } เนื่องจากจะดำเนินการตามคำสั่งที่อยู่ใน case นั้นไปเรื่อย ๆ จนกว่าจะพบ คำสั่ง break หรือเครื่องหมายปีกกาปิด ( } ) ซึ่งเป็นเครื่องหมายแสดงจุดสิ้นสุดของคำสั่ง switch
break คือ คำสั่งให้จบการทำงานในแต่ละกรณี แล้วไปทำงานที่คำสั่งที่อยู่ถัดจาก switch ซึ่งคำสั่ง break จะต้องใส่ไว้เป็นคำสั่งสุดท้ายของทุก ๆ กรณี (ยกเว้นกรณี default)
default เป็นกรณีที่ให้กระทำ เมื่อไม่มีค่าของ variable ตรงกับ constant ใดๆ ซึ่งการเขียนคำสั่ง switch อาจจะไม่มี default ก็ได้
ตัวอย่าง รับค่าตัวเลขจำนวนเต็มที่ผู้ใช้ป้อน แล้วแสดงเลขที่ผู้ใช้ป้อนและเลขโรมัน โดยช่วงตัวเลขให้ผู้ใช้ป้อนอยู่ระหว่าง 1 ถึง 5 แต่ถ้าผู้ใช้ป้อนเลขที่ไม่ได้อยู่ในช่วงนี้โปรแกรมจะไม่แสดงข้อความอะไร แต่จะมีเคอร์เซอร์กระพริบเพื่อรอการกดแป้นใด ๆ เพื่อจบโปรแกรม
#include <stdio.h>
#include <conio.h>
main()
{ int num;
printf("input num (1-5) : ");
scanf("%d",&num);
printf("\nRoman numerals");
switch(num)
{ case 1 : printf("\n%d <==> I ",num);
break;
case 2 : printf("\n%d <==> II ",num);
break;
case 3 : printf("\n%d <==> III",num);
break;
case 4 : printf("\n%d <==> IV",num);
break;
case 5 : printf("\n%d <==> V",num);
break;
}
getch();
}
ตัวอย่าง รับข้อมูลตัวอักษร 1 ตัวที่ผู้ใช้เลือก ซึ่งใช้แทนชื่อวันที่ผู้ใช้เกิด จากนั้นจะแสดงอัญมณีประจำวันเกิด โดยที่
ถ้าผู้ใช้ป้อน 1 จะแสดงข้อความ date of birth is Sunday
Jewel for sunday is Ruby
ถ้าผู้ใช้ป้อน 2 จะแสดงข้อความ date of birth is Monday
Jewel for Monday is Yellow Sapphire
ถ้าผู้ใช้ป้อน 3 จะแสดงข้อความ date of birth is Tueday
Jewel for Tueday is Coral
ถ้าผู้ใช้ป้อน 4 จะแสดงข้อความ date of birth is Wednesday
Jewel for Wednesday is Emerald
ถ้าผู้ใช้ป้อน 5 จะแสดงข้อความ date of birth is Thursday
Jewel for Thursday is Fire Opal
ถ้าผู้ใช้ป้อน 6 จะแสดงข้อความ date of birth is Friday
Jewel for Friday is Blue Sapphire
ถ้าผู้ใช้ป้อน 7 จะแสดงข้อความ date of birth is Saturday
Jewel for Saturday is Amethyst
แต่ถ้าผู้ใช้ป้อนตัวอักษรอื่น ๆ จะแสดงข้อความ !! Please select 1- 7 !!
#include <stdio.h>
#include <conio.h>
main()
{ char choice;
printf("\n****************\n");
printf(" date of birth");
printf("\n****************\n");
printf("1. Sunday\n");
printf("2. Monday\n");
printf("3. Tueday\n");
printf("4. Wednesday\n");
printf("5. Thursday\n");
printf("6. Friday\n");
printf("7. Saturday\n");
printf("\n****************\n");
printf("select choice : ");
choice = getche();
switch(choice)
{ case '1' : printf("\n\ndate of birth is Sunday\n");
printf("Jewel for sunday is Ruby");
break;
case '2' : printf("\n\ndate of birth is Monday\n");
printf("Jewel for Monday is Yellow Sapphire");
break;
case '3' : printf("\n\ndate of birth is Tueday\n");
printf("Jewel for Tueday is Coral");
break;
case '4' : printf("\n\ndate of birth is Wednesday\n");
printf("Jewel for Wednesday is Emerald");
break;
case '5' : printf("\n\ndate of birth is Thursday\n");
printf("Jewel for Thursday is Fire Opal");
break;
case '6' : printf("\n\ndate of birth is Friday\n");
printf("Jewel for Friday is Blue Sapphire");
break;
case '7' : printf("\n\ndate of birth is Saturday\n");
printf("Jewel for Saturday is Amethyst");
break;
default : printf("\n\n!! Please select 1- 7 !!");
}
getch();
}