สวัสดีครับบทความนี้ก็จะเป็นบทความที่ต่อจาก คำสั่งควบคุม ภาษาซี 3 นะครับยังเป็นเรื่องราวของ คำสั่งควบคุม เช่นเดิมโดยบทความนี้จะกล่าวถึง คำสั่งเงื่อนไข switch-case นะครับ เป็นเงื่อนไขการเลือกทำโดยการเลือก case มันเป็นยังไงรูปแบบน่าตายังไงเราไปดูกันดีกว่า
คำสั่งเงื่อนไข switch - case
switch(ตัวแปร/นิพจน์ที่จะตรวจสอบ) { | |||
รูปแบบ | |||
เป็นคำสั่งที่ใช้เลือกทำงานตามคำสั่งต่างๆโดย พิจารณาจากค่าของตัวแปรหรือนิพจน์ที่กำหนดว่าตรงกับกรณี(case)ใด กล่าวคือ ถ้าคำสั่ง switch ตรวจสอบค่าของตัวแปรหรือนิพจน์ที่กำหนดแล้วพบว่าตรงกับ case ใด ก็จะทำงานตามคำสั่งภายใต้ case นั้นแต่หากตรวจสอบแล้วไม่ตรงกับ case ใดๆเลย ก็จะเข้าสู่การทำงานภายใต้ส่วนของ default ทั้งนี้คำสั่ง switch – case จะมีหรือไม่มี ในส่วนของ default ก็ได้
- ถัามี default ก็อย่างที่เคยกล่าวไว้ ว่าถ้าไม่ตรงกับ case ใดเลยก็จะเข้าไปทำงานที่ default
- ถ้าไม่มี defaul ถ้าไม่ตรงกับ case ใดเลย switch – case ก็จะทำงานเลย
เรามาดูแผนผังความคิดเพื่อเพิ่มความเข้าใจเถอะครับ
นี้เป็นโฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่ิอนไข 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 ความคิดเห็น:
แสดงความคิดเห็น