สื่อวีดิทัศน์การสอน เรื่อง :: การเลือกทำงานของโปรแกรม คำสั่ง switch-case ::   

———————————————————————————————————————————

คำสั่งเลือกการทำงาน switch-case 1
       คำสั่ง 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)


———————————————————————————————————————————