Translate

บทที่5 เงื่อนไข(switch case)

เงื่อนไข(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)


1. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน1ครั้ง แล้วตรวจสอบเงื่อนไข ถ้าจำนวนนั้น เท่ากับ 7 ให้แสดงคำว่า Yes นอกจากนั้นให้แสดงคำว่า No

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

---------------------------------------------------------------------------

ไม่มีความคิดเห็น:

แสดงความคิดเห็น