Translate

วันพุธที่ 21 พฤษภาคม พ.ศ. 2557

บทที่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();
}

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

4 ความคิดเห็น:

  1. Did you realize there's a 12 word phrase you can say to your man... that will induce deep emotions of love and instinctual attraction for you buried within his chest?

    Because deep inside these 12 words is a "secret signal" that triggers a man's impulse to love, look after and guard you with his entire heart...

    ===> 12 Words Who Fuel A Man's Love Impulse

    This impulse is so built-in to a man's brain that it will drive him to try better than ever before to to be the best lover he can be.

    Matter of fact, fueling this mighty impulse is absolutely important to getting the best ever relationship with your man that the moment you send your man a "Secret Signal"...

    ...You'll immediately find him expose his heart and mind for you in a way he never experienced before and he will identify you as the one and only woman in the galaxy who has ever truly understood him.

    ตอบลบ
  2. เข้าใจง่ายมาก ขอบคุณนะคะ

    ตอบลบ
  3. thanks for the article. easy to understand. You can refer for more about C Languag from here.
    thanks in advance

    ตอบลบ