สื่อวีดิทัศน์การสอน เรื่อง :: การเลือกทำงานของโปรแกรม คำสั่ง switch-case ::
———————————————————————————————————————————
คำสั่งเลือกการทำงาน switch-case
คำสั่ง switch-case นี้จะใช้ในกรณีที่มีหลายทางเลือก แต่ใช้ค่าของตัวแปรเพียงตัวเดียวมาตรวจสอบกับค่าคงที่ ถ้าตรวจสอบแล้วมีค่าตรงกับค่าคงที่ใดก็จะไปทำงานส่วนการทำงานของค่าคงที่นั้น และหากค่าที่นำมาตรวจสอบไม่ตรงกับค่าคงที่ใด ๆ ก็จะทำงานในส่วนของ default
รูปแบบคำสั่ง
switch(Variable)
{
case Constant1 :
Statement; break;
case Constant2 :
Statement; break;
case Constant3 :
Statement; break;
case Constant4 :
Statement; break; default :
Statement;
} |
หรือการทำงานในแต่ละเงื่อนไขแบบหลายคำสั่ง สามารถเขียนชุดคำสั่ง (Statement)
เพิ่มได้แล้วจบด้วยคำสั่ง break;
switch(Variable)
{
case Constant1 :
Statement;
Statement; break;
case Constant2 :
Statement;
Statement; break;
case Constant3 :
Statement;
Statement; break;
case Constant4 :
Statement;
Statement; break; default :
Statement;
Statement;
} |
ตัวอย่างโปรแกรม
คุณครูต้องการทราบเกรดของนักเรียนแต่ละคนในรายวิชาวิทยาการคำนวณ ว่าเกรดที่นักเรียน
ได้รับอยู่ในช่วงคะแนนใดจากที่กำหนดให้ เช่น เกรด A ให้แสดงข้อความ Your score 80-100
points เป็นต้น
จึงให้นักเรียนเขียนโปรแกรมเพื่อรับข้อมูลเป็นเกรดของนักเรียนแต่ละคน ดังนี้
“ให้นักเรียนเขียนโปรแกรมโดยแสดงข้อความ Enter your grade (A-E) : บนจอภาพ
พร้อมรับค่าตัวแปร grade แบบ %c (ตัวอักขระ) และตรวจสอบเงื่อนไขว่าตรงกับค่าใด ซึ่งตัวอักษรที่
สามารถตรวจสอบได้ตรงกับเงื่อนไขคือ ตัวอักษร A ถึง E จากนั้นให้โปรแกรมแสดงช่วงของคะแนน
นั้น ๆ ออกมาบนจอภาพ แต่ถ้าหากค่าของตัวแปร grade ไม่ตรงกับค่าใด ก็ให้ไปทำงานที่ default
และแสดงข้อความว่า "Please enter character (A-E) only, Thank you" ออกมาบนจอภาพ
ช่วงคะแนนที่กำหนดให้
คะแนนอยู่ในช่วง |
80 ถึง 100 |
ได้เกรด A |
คะแนนอยู่ในช่วง |
70 ถึง 79 |
ได้เกรด B |
คะแนนอยู่ในช่วง |
60 ถึง 69 |
ได้เกรด C |
คะแนนอยู่ในช่วง |
50 ถึง 59 |
ได้เกรด D |
คะแนนอยู่ในช่วง |
0 ถึง 49 |
ได้เกรด E |
วิเคราะห์ปัญหา (Analysis)
สิ่งที่โจทย์กำหนด :: กำหนดให้ตัวแปร grade เก็บข้อมูลเกรดของนักเรียนแต่ละคน โดยใช้
Format Code ชนิด Character กำหนดการรับค่าตัวแปร gradeแบบ %c (ตัวอักษร) กำหนด
การตรวจสอบเงื่อนไขว่าตรงกับค่าใด ซึ่งตัวอักษรที่สามารถตรวจสอบได้ ตรงกับเงื่อนไขคือตัวอักษร
A ถึง E จากนั้นให้โปรแกรมแสดงช่วงของคะแนนนั้น ๆ ออกมาบนจอภาพ แต่หากไม่ใช่ ค่าของ
ตัวแปร grade ไม่ตรงกับค่าใดให้ไปทำงานที่ default และแสดงข้อความว่า "Please enter
character (A-E) only, Thank you" ออกมาบนจอภาพ
สิ่งที่โจทย์ต้องการ :: แสดงเกรดของนักเรียนแต่ละคนด้วยค่าของ
ตัวแปร grade จากการรับ
ข้อมูลเข้ามาในระบบ หากตัวแปร grade ตรวจสอบเงื่อนไขว่าตรงกับค่าใด ซึ่งตัวอักษรที่สามารถ
ตรวจสอบได้ตรงกับเงื่อนไขคือ ตัวอักษร A ถึง E จากนั้นให้โปรแกรมแสดงช่วงของคะแนนนั้น ๆ
ออกมาบนจอภาพ แต่หากไม่ใช่ ค่าของตัวแปร grade
ไม่ตรงกับค่าใด ให้ไปทำงานที่ default
และแสดงข้อความว่า "Please enter character (A-E) only, Thank you" ออกมาบนจอภาพ
การแก้ปัญหา (Problem Solving) ตามแนวทางการคิดเชิงคำนวณ โดยการคิดแบบ "ขั้นตอนวิธี" (Algorithm) ดังนี้
Pseudo Code |
Algorithm switch-case
1. char grade
2. Print Enter your grade (A-E) :
3. Input grade
4. switch(grade)
4.1 case 'A':
4.1.1 Print Your score 80-100 points
4.1.2 break;
4.2 case 'B':
4.2.1 Print Your score 70-79 points
4.2.2 break;
4.3 case 'C':
4.3.1 Print Your score 60-69 points
4.3.2 break;
4.4 case 'D':
4.4.1 Print Your score 50-59 points
4.4.2 break;
4.5 case 'E':
4.5.1 Print Your score 0-49 points
4.5.2 break;
4.6 default:
4.6.1 Print Please enter character (A-E) only, Thank you
5. End |
Flowchart |
|
เขียนโปรแกรม (Coding)
บรรทัดที่ |
โปรแกรม |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
#include <stdio.h>
char grade;
int main( )
{
printf(" Enter your grade (A-E) : ");
scanf("%c",&grade);
switch(grade)
{
case 'A':
printf("Your score 80-100 points\n");
break;
case 'B':
printf("Your score 70-79 points\n");
break;
case 'C':
printf("Your score 60-69 points\n");
break;
case 'D':
printf("Your score 50-59 points\n");
break;
case 'E':
printf("Your score 0-49 points\n");
break;
default:
printf("Please enter character (A-E) only, Thank you");
}
} |
อธิบายโปรแกรม
บรรทัดที่ 1 |
กำหนดใช้งานไลบรารีชื่อ stdio.h |
บรรทัดที่ 2 |
กำหนดตัวแปรชนิด character ชื่อ grade |
บรรทัดที่ 3 |
กำหนดชุดโปรแกรมหลัก int main( ) |
บรรทัดที่ 4 |
เริ่มชุดโปรแกรมหลัก int main( ) ด้วย { |
บรรทัดที่ 5 |
แสดงข้อความบนจอภาพ Enter your grade (A-E) : |
บรรทัดที่ 6 |
รับค่าตัวแปร grade จากผู้ใช้งาน |
บรรทัดที่ 7 |
นำค่าที่เก็บไว้ในตัวแปร grade มาตรวจสอบเงื่อนไขว่าตรงกับค่าใด |
บรรทัดที่ 8-26 |
เป็นช่วงของการตรวจสอบเงื่อนไขตัวแปร grade ว่าตรงกับค่าใด
ซึ่งตัวอักษรที่สามารถตรวจสอบได้ตรงกับเงื่อนไขคือตัวอักษร
A ถึง E จากนั้นโปรแกรมก็จะแสดงช่วงของคะแนนนั้น ๆ ออกมาบนจอภาพ แต่หากไม่ค่าของตัวแปร grade ไม่ตรงกับค่าใด ก็จะไปทำงานที่ default แล้วก็จะแสดงข้อความ "Please enter character (A-E) only, Thank you" ออกมาบนจอภาพ |
บรรทัดที่ 27 |
สิ้นสุดการทำงานของโปรแกรมหลัก int main( ) ด้วยเครื่องหมาย } |
ผลลัพธ์บนจอภาพ
โปรแกรมจะแสดงข้อความ Enter your grade (A-E) ตามด้วยค่าของตัวแปร grade ที่เก็บ
ข้อมูลเกรดของนักเรียนแต่ละคน จากการรับข้อมูลเข้ามาในระบบ ถ้าหากตัวแปร grade ตรวจสอบ
เงื่อนไขว่าตรงกับค่าใด ซึ่งตัวอักษรที่สามารถตรวจสอบได้ตรงกับเงื่อนไขคือตัวอักษร
A ถึง E จากนั้น
โปรแกรมก็จะแสดงช่วงของคะแนนนั้น ๆ ออกมาบนจอภาพ แต่หากไม่ใช่ ค่าของตัวแปร grade ไม่ตรง
กับค่าใด ก็จะไปทำงานที่ default แล้วก็จะแสดงข้อความ "Please enter character (A-E) only,
Thank you" ออกมาบนจอภาพ
Enter your grade (A-E) : A (ผู้ใช้งานกรอกตัวอักษร A เข้ามาแล้วกดปุ่ม Enter)
Your score 80-100 points (แสดงข้อความบนจอภาพ) |
(แหล่งข้อมูล... คู่มือเรียนรู้ภาษาซีด้วยตนเอง / ผศ.รุ่งทิวา เสาร์สิงห์)
การทดสอบการทำงานของโปรแกรมจากเว็บ https://repl.it/languages/c
คลิกเครื่องหมาย เพื่อดูผลผลลัพธ์การทำงานของโปรแกรมด้านล่าง
(ลิงค์สำรอง https://repl.it/repls/IvorySereneNumerators)
——————————————————————————————————————————— |