เงื่อนไข(switch case)
เงื่อนไข(switch case)เป็นเงื่อนไขเช่นเดียวกับ if-else แต่จะมีความเที่ยงตรงที่สูงกว่า และใช้ได้ค่อยข้างจำกัด โดยส่วนใหญ่แล้วจะใช้ในการควบคุมการแสดงผลทางเมาส์ และคีย์บอร์ด แต่ก็สามารถนำมาใช้เป็นเงื่อนไขเช่นเดียวกับ if-else ซึ่งการใช้นั้นจะต้องใช้ตามรูปแบบหรือ syntax ของมันครับ หากไม่ต้องกับรูปแบบแล้วเงื่อนไขก็จะใช้ไม่ได้หรือerror นั่นเองครับ การใช้ switch case นั้นนิยมใช้กับ main manu ครับ เพื่อที่จะได้เลือกใช้ฟังก์ชันย่อยๆต่อไปรูปแบบการใช้งาน
switch ( ตัวแปร )
{
case ' ตัวอักขระ ' :
สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง
break;
case ค่าคงที่ :
สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นจริง
break;
default :
สิ่งที่ต้องการทำหากผลของเงื่อนไขเป็นเท็จ
}
อธิบายโปรแกรม
จะเห็นว่าค่าตัวแปรที่ใช้ในการเงื่อนไข จะอยู่หลัง switch และเงื่อนไขจะอยู่หลัง case ส่วนสิ่งที่จะทำหากผลของเงื่อนไขเป็นจริง อยู่ใต้เครื่องหมาย : สิ่งที่สำคัญที่สุดคือคำสั่ง break เพราะหากไม่ใส่คำสั่งนี้โปรแกรมจะทำงานต่อไปโดยแสดงผลให้เราดูเพียงไม่กี่วินาที ซึ่งในความเป็นจริงเราดูไม่ทันหรอกครับ เพราะเฉพาะใส่ไปซะ break เนี่ย ส่วนdefault คือนอกเหนือจาก case อื่นๆที่กล่าวมาครับ หมายหมายเหมือนกับ else ครับ อีกสิ่งที่แตกต่างกันคือเงื่อนไขครับ หากเป็นตัวอักขระให้ใส่เครื่องหมาย '...' แต่ถ้าเป็นค่าคงที่ไม่ต้องใส่ครับ
เปรียบเทียบกับ if-else
switch case
switch ( A )
{
case 1 :
printf("Yes");
break;
case 2 :
printf("No");
break;
default :
printf("Error");
}
if-else
if ( A == 1)
{
printf("Yes");
}
else if ( A == 2)
{
printf("No");
}
else
{
printf("Error");
}
ซึ่่งทั้งสองโปรแกรมนี้มีการประมวลผล และแสดงผลเหมือนกัน
--------------------------------------------------------------
ตัวอย่างการใช้งาน
1.ตัวอย่างแรกง่ายๆก่อนนะครับ
#include <stdio.h>
main()
{
int A;
printf("i = ");
scanf("%d",&A);
switch ( A )
{
case 1 :
printf("Yes");
break;
case 2 :
printf("No");
break;
default :
printf("Error");
}
getch();
}
จะเห็นว่าเมื่อรับข้อมูลค่าตัวแปรA แล้วจากนั้นจะตรวจสอบเงื่อนไข หากตัวแปรA มีค่าเท่ากับ 1 จะแสดงผลทางหน้าจอคือ Yes หากตัวแปรA มีค่าเท่ากับ 2 จะแสดงผลทางหน้าจอคือ No และถ้าไม่ต้องกับเงื่อนไขใดๆเลย จะแสดงผลทางหน้าจอคือ Error
--------------------------------------------------------------
2.ตัวอย่างที่สองเริ่มยากขึ้นมานะครบนะครับ
#include <stdio.h>
main()
{
char A;
printf("Your grad : ");
A=getchar();
switch ( A )
{
case 'a' :
printf("Excellent!");
break;
case 'b' :
printf("Well!");
break;
case 'c' :
printf("Good!");
break;
case 'd' :
printf("So-so!");
break;
case 'e' :
printf("Badly!");
break;
case 'f' :
printf("Oh god!");
break;
default :
printf("Error");
}
getch();
}
จะเห็นว่าเมื่อรับข้อมูลค่าตัวแปรA ที่เป็นตัวอักขระ แล้วจากนั้นจะตรวจสอบเงื่อนไข หากตัวแปรA มีค่าเท่ากับ a จะแสดงผลทางหน้าจอคือ Excellent! หากตัวแปรA มีค่าเท่ากับ b จะแสดงผลทางหน้าจอคือ Well! หากตัวแปรA มีค่าเท่ากับ c จะแสดงผลทางหน้าจอคือ Good!หากตัวแปรA มีค่าเท่ากับ d จะแสดงผลทางหน้าจอคือ So-so! หากตัวแปรA มีค่าเท่ากับ e จะแสดงผลทางหน้าจอคือ Badly! หากตัวแปรA มีค่าเท่ากับ f จะแสดงผลทางหน้าจอคือ Oh god! และถ้าไม่ต้องกับเงื่อนไขใดๆเลย จะแสดงผลทางหน้าจอคือ Error
--------------------------------------------------------------
แบบฝึกหัด (Exercise)
2. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน1ครั้ง และ กำหนดให้ตัวแปรA=1 และB=2 แล้วตรวจสอบเงื่อนไข ถ้าอักขระนั้น คือ a ให้ทำการ A+B ถ้าอักขระนั้น คือ b ให้ทำการ A-B ถ้าอักขระนั้น คือ c ให้ทำการ A*B ถ้าอักขระนั้น คือ d ให้ทำการ A/B ถ้าอักขระนั้น คือ e ให้ทำการ A%B แล้วแสดงผลลัพธ์ออกจากทางหน้าจอ
----------------------------------------------------------------
เฉลย
1.ข้อแรกนะครับ
#include <stdio.h>
main()
{
int A;
printf("input : ");
scanf("%d",&A);
switch (A)
{
case 7 :
printf("Yes");
break;
default :
printf("No");
}
getch();
}
2.ข้อสองยากขึ้นมานิดหน่อยครับ
#include <stdio.h>
main()
{
int A=1,B=2,C;
char S;
printf("input : ");
S=getchar();
switch (S)
{
case 'a' :
C=A+B;
break;
case 'b' :
C=A-B;
break;
case 'c' :
C=A*B;
break;
case 'd' :
C=A/B;
break;
case 'e' :
C=A%B;
break;
}
printf("%d",C);
getch();
}
---------------------------------------------------------------------------