หน่วยที่ 4 การเลือกทำตามเงื่อนไข (ต่อ)

คำสั่ง switch

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

รูปแบบ
switch (เงื่อนไข condition)
{
case ค่าคงที่ constant 1:
          คำสั่ง Statements 1;
          break;
case ค่าคงที่ constant 2:
          คำสั่ง Statements 2;
          break;
- - -
case ค่าคงที่ constant N:
          คำสั่ง Statements N;
          break;
default : คำสั่ง Statements M

}

 ข้อควรระวังในการใช้คำสั่ง  switch 

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

ตัวอย่างโปรแกรม?

#include<stdio.h>
void main(void)
{
      float  gradepoint;
      char grade;
            printf("\nEnter grade of student ");
            grade = getche( );
            switch(toupper(grade)) {
                  case 'A':
                        gradepoint = 4.0; break;
                  case 'B':
                        gradepoint = 3.0; break;
                  case 'C':
                        gradepoint = 2.0; break;
                  case 'D':
                        gradepoint = 1.0; break;
                  default:  gradepoint = 0.0;
            } /* end switch */
            printf("\nGrade Point of Student#is %.2f\n",gradepoint);

          printf("\n\nPress any key back to program...");
          getch();   //ใช้รับค่าการกดแป้นพิมพ์ทำให้สามารถดูผลลัพธ์ก่อนออกจากโปรแกรม
/* end main */

/* หมายเหตุ  คำสั่ง switch อาจไม่มี default  ได้ และ เงื่อนไขที่มีค่าไม่ตรงกับค่าคงที่ใดๆ จะไม่มีคำสั่งใดเลยที่ถูกประมวลผล */

/* หมายเหตุ

  • ฟังก์ชัน  islower()  ฟังก์ชันที่ใช้ตรวจสอบว่าตัวอักขระในตัวแปร  เป็นตัวพิมพ์เล็กหรือไม่ ถ้าเป็นตัวพิมพ์เล็กฟังก์ชันจะส่งค่ากลับเป็นจำนวนเต็มที่ไม่ใช่ 0 แต่ถ้าไม่ใช่ตัวพิมพ์เล็กจะส่งค่ากลับเป็น 0
  • ฟังก์ชัน  isupper()  ฟังก์ชันที่ใช้ตรวจสอบว่าตัวอักขระในตัวแปร  เป็นตัวพิมพ์ใหญ่หรือไม่ ถ้าเป็นตัวพิมพ์ใหญ่ ฟังก์ชันจะส่งค่ากลับเป็นจำนวนเต็มที่ไม่ใช่ 0 แต่ถ้าไม่ใช่ตัวพิมพ์ใหญ่จะส่งค่ากลับเป็น 0
  • ฟังก์ชัน  tolower()  ฟังก์ชันที่ใช้เปลี่ยนตัวพิมพ์ใหญ่ที่เก็บอยู่ในตัวแปรให้เป็นตัวพิมพ์เล็ก
  • ฟังก์ชัน  toupper()  ฟังก์ชันที่ใช้เปลี่ยนตัวพิมพ์เล็กที่เก็บอยู่ในตัวแปรให้เป็นตัวพิมพ์ใหญ่

*/