SlideShare a Scribd company logo
ใบความรูที่ 3.4
                                     โครงสราง switch...case

         ถึงแมวาการจัดการเงื่อนไขหลาย ๆ เงื่อนไขในคราวเดียวกันจะสามารถทําไดโดยอาศัยโครงสราง
if แบบหลายชั้น ภาษา C# ยังไดเตรียมโครงสราง switch...case เพื่อใชในการจัดการเงื่อนไขหลาย
เงื่อนไขโดยเฉพาะ การใชงานโครงสราง switch...case อยูในรูปแบบดังนี้
  switch (expression)
  {
     case constant-expression-1:
        statements;
        break;
     case constant-expression-2:
        statements;
        break;
     case constant-expression-3:
        statements;
        break;
     :
     default:
        statements;
        break;
  }

         ภาษา C# ยอมใหนิพจนที่ใชในตําแหนง expression เปนนิพจนแบบจํานวนเต็ม (integer)
แบบอักขระ (char) หรือแบบขอความ (string) เทานั้น หลังจากที่คาของ expression ถูกตรวจสอบ
โปรแกรมจะกระโดดไปทํางาน ณ คําสั่ง case ที่ระบุคาของ constant-expression ไวตรงกับคา
ของ expression ที่ประเมินได คําสั่งตาง ๆ ที่อยูถัดจากคําสั่ง case นั้น ๆ จะถูกเรียกใชงานตามลําดับ
ไปเรื่อย ๆ จนกวาโปรแกรมจะพบคําสั่ง break ซึ่งมีผลทําใหโปรแกรมหยุดการทํางานภายในโครงสราง
switch...case         นั้น และกระโดดไปยั งคํ าสั่ งที่ตอไปนอกโครงสราง หากไม พ บ constant-
expression ใดที่มีคาตรงกับ expression โปรแกรมจะกระโดดไปยังจุดที่มีการระบุดวยคําสั่ง
default




                                     สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี                  59
ตัวอยางที่ 3.5 โปรแกรมตอไปนี้แสดงแตมคะแนนตามระดับคะแนน (A,B,C,D,F) ที่ปอนโดยผูใช
                      ระดับคะแนน (grade)     แตมระดับคะแนน (grade point)
                              A                          4.0
                              B                          3.0
                              C                          2.0
                              D                          1.0
                              F                          0.0

 using System;
 class GradePoint {
   static void Main() {
     string grade;
     Console.Write("Please input your grade: ");
     grade = Console.ReadLine();
     switch (grade) {
       case "A" : Console.WriteLine("Your point is 4.0."); break;
       case "a" : Console.WriteLine("Your point is 4.0."); break;
       case "B" : Console.WriteLine("Your point is 3.0."); break;
       case "b" : Console.WriteLine("Your point is 3.0."); break;
       case "C" : Console.WriteLine("Your point is 2.0."); break;
       case "c" : Console.WriteLine("Your point is 2.0."); break;
       case "D" : Console.WriteLine("Your point is 1.0."); break;
       case "d" : Console.WriteLine("Your point is 1.0."); break;
       case "F" : Console.WriteLine("Your point is 0.0."); break;
       case "f" : Console.WriteLine("Your point is 0.0."); break;
       default: Console.WriteLine("Invalid input!!"); break;
     }
   }
 }

ตัวอยางผลการทํางาน
 Please input your grade: A
 Your point is 4.0.


 Please input your grade: B
 Your point is 3.0.


 Please input your grade: e
 Invalid input!!




60                                สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี
แมวาโปรแกรมขางตนจะทํางานไดอยางถูกตอง โปรแกรมดังกลาวยังคอนขางยาวอีกทั้งโปรแกรม
ยังมีคําสั่งที่ถูกใชซํ้า ๆ กันอยูหลายแหงเนื่องจากการปอนระดับคะแนนดวยตัวอักษรตัวใหญและตัวเล็กจะ
ใหผลเหมือนกัน ภาษา C# อนุญาตใหคาสั่ง case หลาย ๆ คําสั่งควบคุมชุดคําสั่งรวมกันไดดังตัวอยาง
                                          ํ
 using System;
 class GradePoint {
   static void Main() {
     string grade;
     Console.Write("Please input your grade: ");
     grade = Console.ReadLine();
     switch (grade) {
       case "A" :
       case "a" : Console.WriteLine("Your point is 4.0."); break;
       case "B" :
       case "b" : Console.WriteLine("Your point is 3.0."); break;
       case "C" :
       case "c" : Console.WriteLine("Your point is 2.0."); break;
       case "D" :
       case "d" : Console.WriteLine("Your point is 1.0."); break;
       case "F" :
       case "f" : Console.WriteLine("Your point is 0.0."); break;
       default: Console.WriteLine("Invalid input!!"); break;
     }
   }
 }

        โปรแกรมนี้ยังสามารถทําใหสั้นลงไดอีกโดยการใชตัวแปรเสริมอีกตัวเพื่อเก็บแตมระดับคะแนน
แลวจึงนําคาของตัวแปรพิมพออกทางหนาจอโดยใชคําสั่ง Console.WriteLine ในคราวเดียวกอน
จบโปรแกรม ดังแสดง
 using System;
 class GradePoint {
   static void Main() {
     string grade;
     double point = -1;
     Console.Write("Please input your grade: ");
     grade = Console.ReadLine();
     switch (grade) {
       case "A" : case "a" : point = 4.0; break;
       case "B" : case "b" : point = 3.0; break;
       case "C" : case "c" : point = 2.0; break;
       case "D" : case "d" : point = 1.0; break;
       case "F" : case "f" : point = 0.0; break;
       default: Console.WriteLine("Invalid input!!"); break;
     }
     if (point >= 0)
        Console.WriteLine("Your point is {0:f1}.", point);
   }
 }




                                    สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี                  61
ตัวอยางที่ 3.6 โปรแกรมตอไปนี้เปนโปรแกรมเครื่องคิดเลขอยางงาย เมือเริ่มทํางานโปรแกรมจะใหผูใช
                                                                    ่
ปอนคาตัวเลขจํานวนจริงสองคา พรอมระบุตัวดําเนินการทางคณิตศาสตรที่ตองการโดยเปนไดเพียง + หรือ
- จากนั้นโปรแกรมจะแสดงผลลัพธจากการคํานวณ หากผูใชปอนตัวดําเนินการอื่นนอกเหนือจาก + หรือ -
โปรแกรมจะรายงานความผิดพลาด
 1: using System;
 2: class Calculator {
 3:    static void Main() {
 4:       double n1, n2, ans = 0;
 5:       char op;
 6:       Console.Write("Enter the first number: ");
 7:       n1 = double.Parse(Console.ReadLine());
 8:       Console.Write("Enter the second number: ");
 9:       n2 = double.Parse(Console.ReadLine());
 10:      Console.Write("Enter the operator: ");
 11:      op = char.Parse(Console.ReadLine());
 12:      switch(op) {
 13:        case '+': ans = n1+n2; break;
 14:        case '-': ans = n1-n2; break;
 15:        default: op = ' '; break;
 16:      }
 17:      if (op == ' ')
 18:        Console.WriteLine("Invalid operator!");
 19:      else
 20:        Console.WriteLine("{0}{1}{2} = {3}", n1, op, n2, ans);
 21:   }
 22: }

        สังเกตบรรทัดที่ 15 ซึ่งใชจัดการกรณีที่ผูใชปอนตัวดําเนินการอื่นนอกเหนือจาก + หรือ - บรรทัดนี้
จะเปลี่ยนคาของตัวแปร op ใหเปนชองวาง (' ') เพื่อนําไปเช็คที่ทายโปรแกรมอีกทีหนึ่ง
ตัวอยางผลการทํางาน
  Enter the first number: 8
  Enter the second number: 10
  Enter the operator: +
  8+10 = 18




62                                    สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี

More Related Content

PDF
บทที่1 พื้นฐานโปรแกรมภาษาซี
PDF
3.5 การแสดงผลและการรับข้อมูล
PDF
C Programming
PDF
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)
PDF
3.5 การแสดงผลและการรับข้อมูล
PDF
ภาษาซีเบื้องต้น
PDF
59170259 ผลคุณี
บทที่1 พื้นฐานโปรแกรมภาษาซี
3.5 การแสดงผลและการรับข้อมูล
C Programming
การเขียนคำสั่งขั้นพื้นฐาน(ภาษาC)
3.5 การแสดงผลและการรับข้อมูล
ภาษาซีเบื้องต้น
59170259 ผลคุณี

What's hot (16)

PDF
แนวคิดในการเขียนโปรแกรม
DOC
การเขียนโปรแกรมภาษาซี
PDF
59170249 ธิดารัตน์
PDF
PDF
3.2 ตัวแปรและคำสงวน
PPT
โครงสร้างภาษาซี
PPT
โครงสร้างของภาษา C
PDF
7 2โครงสร้าง
PDF
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
PDF
3.3. ชนิดของข้อมูล
PDF
Computer programming
PPT
2. โครงสร้างภาษาซี
PDF
Pbl2 docx
PDF
Pbl2 นะแนนxปิ้น
PPT
C language
PPTX
ฟังก์ชันในภาษา
แนวคิดในการเขียนโปรแกรม
การเขียนโปรแกรมภาษาซี
59170249 ธิดารัตน์
3.2 ตัวแปรและคำสงวน
โครงสร้างภาษาซี
โครงสร้างของภาษา C
7 2โครงสร้าง
ใบความรู้ที่ 1 ความรู้พื้นฐานโปรแกรมภาษาซี
3.3. ชนิดของข้อมูล
Computer programming
2. โครงสร้างภาษาซี
Pbl2 docx
Pbl2 นะแนนxปิ้น
C language
ฟังก์ชันในภาษา
Ad

Similar to Know3 4 (20)

PPT
04 conditional
PPT
05 loops
PDF
PDF
chapter 3 คำสั่งควบคุม
PDF
PPT
Program Statement Structure พื้นฐานโครงสร้างประโยคคำสั่งภาษาโปรแกรมคอมพิวเตอร์
PPT
C slide
PDF
Java week2
PPTX
c# part1.pptx
PDF
Computer programming
PPT
06 for loops
PPT
Java Programming [6/12] : Object Oriented Java Programming
04 conditional
05 loops
chapter 3 คำสั่งควบคุม
Program Statement Structure พื้นฐานโครงสร้างประโยคคำสั่งภาษาโปรแกรมคอมพิวเตอร์
C slide
Java week2
c# part1.pptx
Computer programming
06 for loops
Java Programming [6/12] : Object Oriented Java Programming
Ad

More from โรงเรียนอุตรดิตถ์ดรุณี (20)

Know3 4

  • 1. ใบความรูที่ 3.4 โครงสราง switch...case ถึงแมวาการจัดการเงื่อนไขหลาย ๆ เงื่อนไขในคราวเดียวกันจะสามารถทําไดโดยอาศัยโครงสราง if แบบหลายชั้น ภาษา C# ยังไดเตรียมโครงสราง switch...case เพื่อใชในการจัดการเงื่อนไขหลาย เงื่อนไขโดยเฉพาะ การใชงานโครงสราง switch...case อยูในรูปแบบดังนี้ switch (expression) { case constant-expression-1: statements; break; case constant-expression-2: statements; break; case constant-expression-3: statements; break; : default: statements; break; } ภาษา C# ยอมใหนิพจนที่ใชในตําแหนง expression เปนนิพจนแบบจํานวนเต็ม (integer) แบบอักขระ (char) หรือแบบขอความ (string) เทานั้น หลังจากที่คาของ expression ถูกตรวจสอบ โปรแกรมจะกระโดดไปทํางาน ณ คําสั่ง case ที่ระบุคาของ constant-expression ไวตรงกับคา ของ expression ที่ประเมินได คําสั่งตาง ๆ ที่อยูถัดจากคําสั่ง case นั้น ๆ จะถูกเรียกใชงานตามลําดับ ไปเรื่อย ๆ จนกวาโปรแกรมจะพบคําสั่ง break ซึ่งมีผลทําใหโปรแกรมหยุดการทํางานภายในโครงสราง switch...case นั้น และกระโดดไปยั งคํ าสั่ งที่ตอไปนอกโครงสราง หากไม พ บ constant- expression ใดที่มีคาตรงกับ expression โปรแกรมจะกระโดดไปยังจุดที่มีการระบุดวยคําสั่ง default สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี 59
  • 2. ตัวอยางที่ 3.5 โปรแกรมตอไปนี้แสดงแตมคะแนนตามระดับคะแนน (A,B,C,D,F) ที่ปอนโดยผูใช ระดับคะแนน (grade) แตมระดับคะแนน (grade point) A 4.0 B 3.0 C 2.0 D 1.0 F 0.0 using System; class GradePoint { static void Main() { string grade; Console.Write("Please input your grade: "); grade = Console.ReadLine(); switch (grade) { case "A" : Console.WriteLine("Your point is 4.0."); break; case "a" : Console.WriteLine("Your point is 4.0."); break; case "B" : Console.WriteLine("Your point is 3.0."); break; case "b" : Console.WriteLine("Your point is 3.0."); break; case "C" : Console.WriteLine("Your point is 2.0."); break; case "c" : Console.WriteLine("Your point is 2.0."); break; case "D" : Console.WriteLine("Your point is 1.0."); break; case "d" : Console.WriteLine("Your point is 1.0."); break; case "F" : Console.WriteLine("Your point is 0.0."); break; case "f" : Console.WriteLine("Your point is 0.0."); break; default: Console.WriteLine("Invalid input!!"); break; } } } ตัวอยางผลการทํางาน Please input your grade: A Your point is 4.0. Please input your grade: B Your point is 3.0. Please input your grade: e Invalid input!! 60 สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี
  • 3. แมวาโปรแกรมขางตนจะทํางานไดอยางถูกตอง โปรแกรมดังกลาวยังคอนขางยาวอีกทั้งโปรแกรม ยังมีคําสั่งที่ถูกใชซํ้า ๆ กันอยูหลายแหงเนื่องจากการปอนระดับคะแนนดวยตัวอักษรตัวใหญและตัวเล็กจะ ใหผลเหมือนกัน ภาษา C# อนุญาตใหคาสั่ง case หลาย ๆ คําสั่งควบคุมชุดคําสั่งรวมกันไดดังตัวอยาง ํ using System; class GradePoint { static void Main() { string grade; Console.Write("Please input your grade: "); grade = Console.ReadLine(); switch (grade) { case "A" : case "a" : Console.WriteLine("Your point is 4.0."); break; case "B" : case "b" : Console.WriteLine("Your point is 3.0."); break; case "C" : case "c" : Console.WriteLine("Your point is 2.0."); break; case "D" : case "d" : Console.WriteLine("Your point is 1.0."); break; case "F" : case "f" : Console.WriteLine("Your point is 0.0."); break; default: Console.WriteLine("Invalid input!!"); break; } } } โปรแกรมนี้ยังสามารถทําใหสั้นลงไดอีกโดยการใชตัวแปรเสริมอีกตัวเพื่อเก็บแตมระดับคะแนน แลวจึงนําคาของตัวแปรพิมพออกทางหนาจอโดยใชคําสั่ง Console.WriteLine ในคราวเดียวกอน จบโปรแกรม ดังแสดง using System; class GradePoint { static void Main() { string grade; double point = -1; Console.Write("Please input your grade: "); grade = Console.ReadLine(); switch (grade) { case "A" : case "a" : point = 4.0; break; case "B" : case "b" : point = 3.0; break; case "C" : case "c" : point = 2.0; break; case "D" : case "d" : point = 1.0; break; case "F" : case "f" : point = 0.0; break; default: Console.WriteLine("Invalid input!!"); break; } if (point >= 0) Console.WriteLine("Your point is {0:f1}.", point); } } สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี 61
  • 4. ตัวอยางที่ 3.6 โปรแกรมตอไปนี้เปนโปรแกรมเครื่องคิดเลขอยางงาย เมือเริ่มทํางานโปรแกรมจะใหผูใช ่ ปอนคาตัวเลขจํานวนจริงสองคา พรอมระบุตัวดําเนินการทางคณิตศาสตรที่ตองการโดยเปนไดเพียง + หรือ - จากนั้นโปรแกรมจะแสดงผลลัพธจากการคํานวณ หากผูใชปอนตัวดําเนินการอื่นนอกเหนือจาก + หรือ - โปรแกรมจะรายงานความผิดพลาด 1: using System; 2: class Calculator { 3: static void Main() { 4: double n1, n2, ans = 0; 5: char op; 6: Console.Write("Enter the first number: "); 7: n1 = double.Parse(Console.ReadLine()); 8: Console.Write("Enter the second number: "); 9: n2 = double.Parse(Console.ReadLine()); 10: Console.Write("Enter the operator: "); 11: op = char.Parse(Console.ReadLine()); 12: switch(op) { 13: case '+': ans = n1+n2; break; 14: case '-': ans = n1-n2; break; 15: default: op = ' '; break; 16: } 17: if (op == ' ') 18: Console.WriteLine("Invalid operator!"); 19: else 20: Console.WriteLine("{0}{1}{2} = {3}", n1, op, n2, ans); 21: } 22: } สังเกตบรรทัดที่ 15 ซึ่งใชจัดการกรณีที่ผูใชปอนตัวดําเนินการอื่นนอกเหนือจาก + หรือ - บรรทัดนี้ จะเปลี่ยนคาของตัวแปร op ใหเปนชองวาง (' ') เพื่อนําไปเช็คที่ทายโปรแกรมอีกทีหนึ่ง ตัวอยางผลการทํางาน Enter the first number: 8 Enter the second number: 10 Enter the operator: + 8+10 = 18 62 สถาบันสงเสริมการสอนวิทยาศาสตรและเทคโนโลยี