4. คำสั่ง switch…case .
เป็นคำสั่งที่ใช้ทดสอบเงื่อนไขและมีทางเลือกของการตัดสินใจหลายทาง ทำนองเดียวกับคำสั่ง if else if แต่นิยมใช้คำสั่ง switch มากกว่า เพราะมีรูปแบบที่เข้าใจได้ง่าย สะดวกในการแก้ไขในกรณีที่มีการผิดพลาด การเลือกใช้ switch ยังมีข้อจำกัดบางประการเนื่องจากค่าคงที่(constant) หลัง case จะต้องเป็นชนิด int หรือ char เท่านั้น ดังนั้นในการพิจารณาเลือกใช้ if หรือ switch จะต้องพิจาณาในส่วนนี้ด้วย
โครงสร้างแบบมีทางเลือก
�
switch (expression)
{
case (constant-1) : statements;
break;
case (constant-2): statements;
break;
…
case (constant-n): statements;
break;
default : statements;
}
expression ของ switch จะถูกใช้เพื่อเปรียบเทียบค่าว่าตรงกับ constant ของ case ใด โดยโปรแกรมจะปฏิบัติตามคำสั่งต่าง ๆ ใน case นั้น ส่วนคำสั่ง break; จะเป็นคำสั่งให้ออกจากคำสั่ง switch �ในกรณีที่ไม่มีคำสั่ง break โปรแกรมจะปฏิบัติเรียงตามลำดับตลอดทุกคำสั่ง
ในทุก case ที่อยู่ต่อกัน ในกรณีที่ค่าของ expression ของswitch ไม่ตรงกับ constant ของ case ใด� โปรแกรมจะปฏิบัติตามคำสั่งใน default โดยข้อสังเกตในแต่ละ case
อาจมีคำสั่งหลายคำสั่งไม่ต้องใช้เครื่องหมาย { } คร่อมดังกรณีของคำสั่ง if แบบต่างๆ
main()
{
char operator1 ;
int ans,x,y;
x=10; y=2;
printf(" x = 10 , y = 12\n");
printf("Enter operator : ");
operator1=getche();
switch (operator1)
{
case '+' : ans =x + y; printf(“\nanswer = %d",ans); break;
case '-' : ans=x-y; printf(“\nanswer = %d",ans); break;
case '*' : ans=x*y; printf(“\nanswer = %d",ans); break;
case '/' : ans=x/y; printf(“\nanswer = %d",ans); break;
default : printf(“\nThis program can use only +,-,*,/ \n");
}
}
EX.1
โปรแกรมเครื่องคิดเลข
แบบฝึกหัด
ให้เขียนโปรแกรมตู้เติมเงินโทรศัพท์โดยโดยใช้คำสั่ง switch case ให้ผู้ใช้�เลือกเครือข่ายต่างๆ ดังนี้ �A = Ais D = Dtac T = True move h และอื่นๆให้ออกจากโปรแกรม
�
เมื่อผู้ใช้เลือก Ais ให้แสดงข้อความว่า Welcome to AIS.
Dtac ให้แสดงข้อความว่า Welcome to Dtac.
True move h ให้แสดงข้อความว่า Welcome to True move h.
โดยผู้ใช้รับ เบอร์โทรศัพท์ , จำนวนเงิน และแสดงข้อความขอบคุณหลังจากที่เติมเงิน�เรียบร้อยแล้ว