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();

}