คำสั่งควบคุม ภาษาซี 4

ภาษา c

สวัสดีครับบทความนี้ก็จะเป็นบทความที่ต่อจาก คำสั่งควบคุม ภาษาซี 3 นะครับยังเป็นเรื่องราวของ คำสั่งควบคุม เช่นเดิมโดยบทความนี้จะกล่าวถึง คำสั่งเงื่อนไข switch-case นะครับ เป็นเงื่อนไขการเลือกทำโดยการเลือก case มันเป็นยังไงรูปแบบน่าตายังไงเราไปดูกันดีกว่า
คำสั่งเงื่อนไข switch - case

     

    switch(ตัวแปร/นิพจน์ที่จะตรวจสอบ) {
       case ค่าที่ 1:
           คำสั่งที่ 1;
           break;
       case ค่าที่ 2:
           คำสั่งที่ 2;
           break;
       case ค่าที่ 3:
           คำสั่งที่ 3;
           break;
       default :
           คำสั่งที่ 4;
        }

รูปแบบ
     

เป็นคำสั่งที่ใช้เลือกทำงานตามคำสั่งต่างๆโดย พิจารณาจากค่าของตัวแปรหรือนิพจน์ที่กำหนดว่าตรงกับกรณี(case)ใด กล่าวคือ ถ้าคำสั่ง switch ตรวจสอบค่าของตัวแปรหรือนิพจน์ที่กำหนดแล้วพบว่าตรงกับ case ใด ก็จะทำงานตามคำสั่งภายใต้ case นั้นแต่หากตรวจสอบแล้วไม่ตรงกับ case ใดๆเลย ก็จะเข้าสู่การทำงานภายใต้ส่วนของ default ทั้งนี้คำสั่ง switch – case จะมีหรือไม่มี ในส่วนของ default ก็ได้

  • ถัามี default ก็อย่างที่เคยกล่าวไว้ ว่าถ้าไม่ตรงกับ case ใดเลยก็จะเข้าไปทำงานที่ default
  • ถ้าไม่มี defaul ถ้าไม่ตรงกับ case ใดเลย switch – case ก็จะทำงานเลย

เรามาดูแผนผังความคิดเพื่อเพิ่มความเข้าใจเถอะครับ

ภาษา cนี้เป็นโฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่ิอนไข switch-case

จากรูปแบบการทำงานของคำสั่งเงื่อนไข switch – case จะสังเกตุเห็นว่าในแต่ละ case เมื่อทำงานตามคำสั่งของ case นั้นๆเรียลร้อยแล้ว จะต้องจบด้วยคำสั่ง break ทุกครั้ง ยกเว้นกรณี default เนื่องจากเป็นกรณีสุดท้ายจึงไม่จำเป็นต้องใส่คำสั่ง break ครับซึ่งสาเหตุที่ต้องใส่คำสั่ง break นั้นเป็นเพราะว่า เมื่อทำงานใน case นั้นๆเรียบร้อยแล้ว หากไม่มีคำสั่ง break โปรแกรมจะทำงานตามคำสั่งใน case อื่นๆที่อยู่ถัดไปด้วย ด้่งนั้นจึงจำเป็นต้องใส่คำสั่ง break ในการควบคุมให้โปรแกรมกระโดดออกจากการทำงานของคำสั่งเงื่อนไข switch – case เพื่อให้ไปทำคำสั่งที่อยู่นอกชุดคำสั่ง switch – case ต่อไป

 
Note
 

ระวังอย่าลืมใส่คำสั่ง break ปิดท้ายแต่ละ case ด้วยนะครับ เพราะถ้าหากไม่ใส่แล้วละก็ โปรแกรมจะทำจะทำการประมวลผลทุกคำสั่งที่อยู่ตามหลัง case ทั้งหมด ซึ่งจะทำให้โปรแกรมผิดไปจากที่เราต้องการนะครับ

เรามาดตัวอย่างโปรแกรมแสดงการทำงานของคำสั่งเงื่อนไข switch – case กันหน่อยนะครับ

1:   #include<stdio.h>
2:   #include<math.h>
3:    
4:    
5:      main(){
6:        int choice ;
7:        double num1,num2;
8:        
9:          printf("#############################\n");
10:          printf("#         Please select Choice       #\n");
11:          printf("#############################\n");
12:          printf("##           1.Plus (+)                ##\n");
13:          printf("##           2.Minus (-)               ##\n");
14:          printf("##           3.Multiply (*)            ##\n");
15:          printf("##           4.Divide (/)               ##\n");
16:          printf("##           5.Power                  ##\n");
17:          printf("#############################\n");
18:          printf("\n\t select : ");
19:          scanf("%d",&choice);
20:          printf("\n Enter number 1 :");
21:          scanf("%d",&num1);
22:          printf("\n Enter number 2 :");
23:          scanf("%d",&num2);
24:       switch(choice){
25:        case 1:
26:          printf("%3.2lf + %3.2lf = %3.2lf\n",num1,num2,num1+num2);
27:          break ;
28:        case 2:
29:          printf("%3.2lf - %3.2lf = %3.2lf\n",num1,num2,num1-num2);
30:          break ;
31:        case 3:
32:          printf("%3.2lf * %3.2lf = %3.2lf\n",num1,num2,num1*num2);
33:          break ;
34:        case 4:
35:          printf("%3.2lf / %3.2lf = %3.2lf\n",num1,num2,num1 / num2);
36:          break ;
37:        case 5:
38:          printf("%3.2lf power %3.2lf = %3.2lf\n",num1,num2,pow(num1, num2));
39:          break ;
40:        default:
41:          printf("please select choice 1-5 only\n");
42:           }
43:        }

เรามาดูผลการรันโปรแกรมกันดีกว่า

รันครั้งที่ 1

 
ผลลัพธ์โปรแกรม
 
     #############################
     # Please select Choice #
     #############################
     ##              1.Plus (+)               ##
     ##              2.Minus (-)              ##
     ##              3.Multiply (*)           ##
     ##              4.Divide (/)              ##
     ##              5.Power                 ##
     #############################

             select : 1
     Enter number 1 : 2
     Enter number 2 : 0
     2.00 + 0.00 = 2.00

รันครั้งที่2

 
ผลลัพธ์โปรแกรม
 
     #############################
     # Please select Choice #
     #############################
     ##              1.Plus (+)               ##
     ##              2.Minus (-)              ##
     ##              3.Multiply (*)           ##
     ##              4.Divide (/)              ##
     ##              5.Power                 ##
     #############################

             select : 5
     Enter number 1 : 2
     Enter number 2 : 0
     2.00 powor 0.00 = 1.00

รันครั้งที่3

 
ผลลัพธ์โปรแกรม
 
     #############################
     # Please select Choice #
     #############################
     ##              1.Plus (+)               ##
     ##              2.Minus (-)              ##
     ##              3.Multiply (*)           ##
     ##              4.Divide (/)              ##
     ##              5.Power                 ##
     #############################

             select : 9
     Enter number 1 : 2
     Enter number 2 : 0
     please select choice 1-5 only

อธิบายโปรแกรมนะครับ

บรรทัดที่ 2 ทำการinclude ไฟล์ math.h ซึ่งเป็นเฮดเดอร์ไฟล์ของภาษาซีที่รวบรวมการประกาศของฟังก์ชั่นที่ใช้ทำงานต่างๆด้านคณิตศาสตร์ไว้ สาเหตุที่ต้องการรวมไฟล์นี้เข้าไว้ในโปรแกรมเนื่องจากในโปรแกรมมีการเรียกใช้ฟังก์ชั่นทางคณิตศาสตร์ที่ บรรทัดที่38 คือฟังก์ชั่น pow() เพื่อคำนวนเลขยกกำลัง โดย pow() เป็นฟังก์ชั่นที่มีการประกาศอยู่ในเฮดเดอร์ไฟล์ math.h ดังนั้น จึงต้องรวมเฮดเดอร์ไฟล์นี้เข้าไว้ในโปรแกรมด้วย

     หากลองนำโปรแกรมตัวอย่างข้างบนมาเปลี่ยนแปลงโดยลบคำสั่ง break ออกจาก case ทุก case ของโปรแกรม ผลลัพธ์ที่ได้จะเป็นดังนี้

ผลลัพธ์ของโปรแกรมเมื่อลบคำสั่ง break ภายในทุก case ออก

รันครั้งที่1

 
ผลลัพธ์โปรแกรม
 
     #############################
     # Please select Choice #
     #############################
     ##              1.Plus (+)               ##
     ##              2.Minus (-)              ##
     ##              3.Multiply (*)           ##
     ##              4.Divide (/)              ##
     ##              5.Power                 ##
     #############################

             select : 1
     Enter number 1 : 2
     Enter number 2 : 3
     2.00 + 3.00 = 5.00
     2.00 - 3.00 = -1.00
     2.00 * 3.00 = 6.00
     2.00 / 3.00 = 0.67
     2.00 pawer 3.00 = 8.00
     please select choice 1-5 only

รันครั้งที่2

 
ผลลัพธ์โปรแกรม
 
     #############################
     # Please select Choice #
     #############################
     ##              1.Plus (+)               ##
     ##              2.Minus (-)              ##
     ##              3.Multiply (*)           ##
     ##              4.Divide (/)              ##
     ##              5.Power                 ##
     #############################

             select : 4
     Enter number 1 : 2
     Enter number 2 : 3
     2.00 / 3.00 = 0.67
     2.00 pawer 3.00 = 8.00
     please select choice 1-5 only

ผลลัพธ์ของโปรแกรมเมื่อลบคำสั่ง default  ออก

รันครั้งที่1

 
ผลลัพธ์โปรแกรม
 
     #############################
     # Please select Choice #
     #############################
     ##              1.Plus (+)               ##
     ##              2.Minus (-)              ##
     ##              3.Multiply (*)           ##
     ##              4.Divide (/)              ##
     ##              5.Power                 ##
     #############################

             select : 1
     Enter number 1 : 2
     Enter number 2 : 3
     2.00 + 3.00 = 5.00

รันครั้งที่2

 
ผลลัพธ์โปรแกรม
 
     #############################
     # Please select Choice #
     #############################
     ##              1.Plus (+)               ##
     ##              2.Minus (-)              ##
     ##              3.Multiply (*)           ##
     ##              4.Divide (/)              ##
     ##              5.Power                 ##
     #############################

             select : 9
     Enter number 1 : 2
     Enter number 2 : 3

 
Note
 

ตัวแปรหรือนิพจน์ที่จะนำมาเป็นเงื่อนไขของ switch-case จะต้องเป็นชนิดเลขจำนวนเต็ม(integral type) ได้แก่ int, long, short, char เท่านั้น

หวังไว้ว่าบทความนี้จะทำให้ทุกท่านที่อ่านบทความนี้จะทำให้เข้าใจเรื่อง switch-case ไม่มากก็น้อย ขอบคุณครับ แต่เรื่องของ คำสั่งควบคุม ภาษาซี ยังไม่จบนะครับยังมีต่อในบทความต่อไป เป็นเรื่อง คำสั่งทำซ้ำ หรือ รู้จักกันดีใขชื่อ loop นะครับ อ่านได้ที่ คำสั่งควบคุม ภาษาซี 5 ครับ

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

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