ฟังก์ชัน SWITCH … CASE
ในเนื้อหาที่ผ่านมา นักเรียนได้พบกับเงื่อนไขสองทางเลือก และเงื่อนไขสองทางเลือกหลายๆเงื่อนไขในโจทย์เดียว แล้วถ้าหากเงื่อนไขเดียวแต่มีหลายทางเลือกล่ะ จะเป็นอย่างไร ?
ให้นักเรียนพิจารณาดูข้อความต่อไปนี้
นักเรียนชอบสีในข้อใดมากที่สุด
A. สีฟ้า
B. สีแดง
C. สีเหลือง
D. สีชมพู
E. สีขาว
จากข้อความ เงื่อนไขเดียวเท่านั้นคือชอบสีใดมากที่สุดจาก 5 ตัวเลือก เราสามารถเขียนผังงาน (Flowchart) ได้ดังนี้
จากผังงานสามารถใช้ if else เขียนโค้ดโปรแกรมได้ดังนี้
#include<stdio.h>
#include<conio.h>
main(){
char ch;
puts(“A. Blue”);
puts(“B. Red”);
puts(“C. Yellow”);
puts(“D. Pink”);
puts(“E. White”);
printf(“What’s your favorite color ( A – E ) :”);
scanf(“%c”,&ch);
if(ch==’A’){ printf(“Blue”); }
else if(ch==’B’){ printf(“Red”); }
else if(ch==’C’){ printf(“Yellow”); }
else if(ch==’D’){ printf(“Pink”); }
else{ printf(“White”); }
getch();
}
จากโค้ดโปรแกรมนักเรียนจะเห็นว่าในการเปรียบเทียบว่าเลือกสีอะไรจะต้องสร้างเงื่อนไขขึ้นมาทุกครั้ง แล้วถ้าหากว่าเราไม่ใช้ฟังก์ชัน IF ELSE ล่ะ จะใช้ฟังก์ชันอะไรดี?
ในการโปรแกรมเงื่อนไขแบบหลายตัวเลือก ภาษาซีมีฟังก์ชัน SWITCH…CASE ไว้จัดการกับตัวเลือกเหล่านั้นครับ
รูปแบบฟังก์ชัน SWITCH…CASE
SWITCH ( ตัวแปร )
{
case ค่าที่ 1: คำสั่ง ; Break;
case ค่าที่ 2: คำสั่ง ; Break;
case ค่าที่ 3: คำสั่ง ; Break;
case ค่าที่ n: คำสั่ง ; Break;
default: ถ้าไม่เข้ากับเงื่อนไขใด ๆ จะมาทำคำสั่งที่นี่
}
จากผังงานเราสามารถเขียนโปรแกรมโดยใช้ SWITCH…CASE ได้ดังนี้
#include<stdio.h>
#include<conio.h>
main(){
char ch;
puts(“A. Blue”);
puts(“B. Red”);
puts(“C. Yellow”);
puts(“D. Pink”);
puts(“E. White”);
printf(“What’s your favorite color ( A – E ) :”);
scanf(“%c”,&ch);
switch(ch)
{ case ‘A’: printf(“Blue”) ; break ;
case ‘B’: printf(“Red”) ; break ;
case ‘C’: printf(“Yellow”) ; break ;
case ‘D’: printf(“Pink”) ; break ;
case ‘E’: printf(“White”) ; break ;
default : printf(“Every Color”);
}
getch();
}
นักเรียนจะสังเกตเห็นได้ว่าเราเขียนคำสั่งสั้นขึ้น ซึ่งให้ผลลัพธ์เหมือนกัน ฟังก์ชันนี้เหมาะสำหรับทำอะไรแนวๆ เมนู ประมาณนั้น ขอให้นักเรียนรู้จักประยุกต์ใช้ฟังก์ชันแต่ละฟังก์ชันให้เหมาะกับการใช้งานด้วยนะครับ …
