switch…case ใน C (สลับคำสั่งใน C) พร้อมตัวอย่าง

คำสั่ง Switch ใน C คืออะไร?

สลับคำสั่งใน C ทดสอบค่าของตัวแปรและเปรียบเทียบกับหลายๆ กรณี เมื่อพบกรณีที่ตรงกันแล้ว จะดำเนินการชุดคำสั่งที่เชื่อมโยงกับกรณีนั้นๆ

แต่ละกรณีในบล็อกของสวิตช์จะมีชื่อ/หมายเลขที่แตกต่างกันซึ่งเรียกว่าตัวระบุ ค่าที่ผู้ใช้ให้ไว้จะถูกนำไปเปรียบเทียบกับกรณีทั้งหมดภายในบล็อกสวิตช์จนกว่าจะพบค่าที่ตรงกัน

หากไม่พบการจับคู่ตัวพิมพ์ คำสั่งเริ่มต้นจะถูกดำเนินการ และตัวควบคุมจะออกจากบล็อกสวิตช์

สลับไวยากรณ์กรณี

ไวยากรณ์ทั่วไปของวิธีการใช้ switch-case ในโปรแกรม 'C' มีดังนี้:

switch( expression )
{
	case value-1:
			Block-1;
			Break;
	case value-2:
			Block-2;
			Break;
	case value-n:
			Block-n;
			Break;
	default:
			Block-1;
			Break;
}
Statement-x;
  • นิพจน์อาจเป็นนิพจน์จำนวนเต็มหรือนิพจน์อักขระก็ได้
  • ค่า-1, 2, n คือป้ายกำกับเคสซึ่งใช้เพื่อระบุแต่ละเคสแยกกัน โปรดจำไว้ว่าเลเบลเคสไม่ควรเหมือนกันเนื่องจากอาจทำให้เกิดปัญหาขณะรันโปรแกรมได้ สมมติว่าเรามีสองกรณีที่มีป้ายกำกับเดียวกันกับ '1' จากนั้นในขณะที่รันโปรแกรม เคสที่ปรากฏก่อนจะถูกดำเนินการแม้ว่าคุณจะต้องการให้โปรแกรมรันเคสที่สองก็ตาม สิ่งนี้สร้างปัญหาในโปรแกรมและไม่ได้ให้ผลลัพธ์ที่ต้องการ
  • ป้ายกำกับเคสจะลงท้ายด้วยเครื่องหมายโคลอน ( : ) เสมอ แต่ละกรณีเหล่านี้เชื่อมโยงกับบล็อก
  • บล็อกคืออะไรแต่มีคำสั่งหลายคำสั่งที่ถูกจัดกลุ่มไว้สำหรับกรณีเฉพาะ
  • เมื่อใดก็ตามที่สวิตช์ถูกดำเนินการ ค่าของการทดสอบนิพจน์จะถูกเปรียบเทียบกับทุกกรณีที่เรากำหนดไว้ภายในสวิตช์ สมมติว่านิพจน์ทดสอบมีค่า 4 ค่านี้จะถูกเปรียบเทียบกับทุกกรณีจนกระทั่งพบกรณีที่มีป้ายกำกับสี่ในโปรแกรม ทันทีที่พบเคส บล็อกคำสั่งที่เกี่ยวข้องกับเคสนั้นจะถูกดำเนินการ และการควบคุมจะออกจากสวิตช์
  • คีย์เวิร์ดแบ่งในแต่ละกรณีบ่งชี้จุดสิ้นสุดของกรณีเฉพาะ หากเราไม่ทำการหยุดพักในแต่ละกรณี แม้ว่าจะดำเนินการกับกรณีเฉพาะแล้ว สวิตช์ใน C จะดำเนินการดำเนินการทุกกรณีต่อไปจนกว่าจะถึงจุดสิ้นสุด สิ่งนี้ไม่ควรเกิดขึ้น ดังนั้นเราจึงต้องใส่คำว่า break ในแต่ละกรณีเสมอ ตัวแบ่งจะยุติเคสเมื่อดำเนินการ และตัวควบคุมจะหลุดออกจากสวิตช์
  • กรณีเริ่มต้นคือกรณีเสริม เมื่อใดก็ตามที่ค่าของ test-expression ไม่ตรงกับกรณีใดๆ ภายในสวิตช์ ค่าเริ่มต้นจะถูกดำเนินการ มิฉะนั้น ไม่จำเป็นต้องเขียนค่าเริ่มต้นในสวิตช์
  • เมื่อสวิตช์ถูกดำเนินการ การควบคุมจะไปที่คำสั่ง-x และการทำงานของโปรแกรมจะดำเนินต่อไป

สลับผังงานคำสั่ง

แผนภาพต่อไปนี้แสดงให้เห็นวิธีการเลือกเคสในเคสสวิตช์:

สลับผังงานคำสั่ง
สวิตช์ทำงานอย่างไร

ตัวอย่างเคสสวิตช์ใน C

โปรแกรมต่อไปนี้แสดงการใช้สวิตช์:

#include <stdio.h>
    int main() {
        int num = 8;
        switch (num) {
            case 7:
                printf("Value is 7");
                break;
            case 8:
                printf("Value is 8");
                break;
            case 9:
                printf("Value is 9");
                break;
            default:
                printf("Out of range");
                break;
        }
        return 0;
    }

Output:

Value is 8

ตัวอย่างเคสสวิตช์ใน C

  1. ในโปรแกรมที่กำหนดเราได้อธิบายการเริ่มต้นก ตัวแปร ตัวเลขที่มีค่า 8
  2. โครงสร้างสวิตช์ใช้เพื่อเปรียบเทียบค่าที่เก็บไว้ในตัวแปร num และดำเนินการบล็อกคำสั่งที่เกี่ยวข้องกับกรณีที่ตรงกัน
  3. ในโปรแกรมนี้ เนื่องจากค่าที่เก็บไว้ในตัวแปร num คือ 8 สวิตช์จะดำเนินการเคสที่มีป้ายกำกับเคสเป็น XNUMX หลังจากดำเนินการเคสแล้ว การควบคุมจะหลุดออกจากสวิตช์และโปรแกรมจะสิ้นสุดลงด้วยผลลัพธ์ที่สำเร็จโดย การพิมพ์ค่าบนหน้าจอเอาท์พุต

ลองเปลี่ยนค่าของตัวแปร num และสังเกตการเปลี่ยนแปลงในเอาต์พุต

ตัวอย่างเช่น เราพิจารณาโปรแกรมต่อไปนี้ซึ่งเป็นค่าเริ่มต้น:

#include <stdio.h>
int main() {
int language = 10;
  switch (language) {
  case 1:
    printf("C#\n");
    break;
  case 2:
    printf("C\n");
    break;
  case 3:
    printf("C++\n");
    break;
  default:
    printf("Other programming language\n");}}

Output:

Other programming language

เมื่อทำงานกับ switch case ใน C คุณจะจัดกลุ่มหลายเคสด้วยป้ายกำกับที่ไม่ซ้ำกัน คุณต้องแนะนำคำสั่งแบ่งในแต่ละกรณีเพื่อแยกสาขาที่ส่วนท้ายของคำสั่ง switch

กรณีเริ่มต้นที่เป็นทางเลือกจะทำงานเมื่อไม่มีการจับคู่อื่นๆ

เราพิจารณาคำสั่งสวิตช์ดังต่อไปนี้:

#include <stdio.h>
int main() {
int number=5;
switch (number) {
  case 1:
  case 2:
  case 3:
    printf("One, Two, or Three.\n");
    break;
  case 4:
  case 5:
  case 6:
    printf("Four, Five, or Six.\n");
    break;
  default:
    printf("Greater than Six.\n");}}

Output:

Four, Five, or Six.

สวิตช์ที่ซ้อนกันใน C

In Cเราก็สามารถมีสวิตช์ตัวในฝังอยู่ในสวิตช์ตัวนอกได้ นอกจากนี้ ค่าคงที่เคสของสวิตช์ด้านในและด้านนอกอาจมีค่าร่วมกันและไม่มีข้อขัดแย้งใดๆ

เราพิจารณาโปรแกรมต่อไปนี้ซึ่งผู้ใช้จะต้องพิมพ์ ID ของตัวเอง หาก ID ถูกต้องโปรแกรมจะขอให้ป้อนรหัสผ่าน หากรหัสผ่านถูกต้องโปรแกรมจะพิมพ์ชื่อผู้ใช้ มิฉะนั้นโปรแกรมจะพิมพ์รหัสผ่านไม่ถูกต้อง และหากไม่มี ID โปรแกรมจะพิมพ์ ID ไม่ถูกต้อง

#include <stdio.h>
int main() {
        int ID = 500;
        int password = 000;
        printf("Plese Enter Your ID:\n ");
        scanf("%d", & ID);
        switch (ID) {
            case 500:
                printf("Enter your password:\n ");
                scanf("%d", & password);
                switch (password) {
                    case 000:
                        printf("Welcome Dear Programmer\n");
                        break;
                    default:
                        printf("incorrect password");
                        break;
                }
                break;
            default:
                printf("incorrect ID");
                break;
        }
}

Output:

Plese Enter Your ID:
 500
Enter your password:
 000
Welcome Dear Programmer

สวิตช์ที่ซ้อนกันใน C

  1. ในโปรแกรมที่กำหนด เราได้อธิบายการเริ่มต้นตัวแปรสองตัว: ID และรหัสผ่าน
  2. โครงสร้างสวิตช์ภายนอกใช้เพื่อเปรียบเทียบค่าที่ป้อนใน ID ตัวแปร มันดำเนินการบล็อกคำสั่งที่เกี่ยวข้องกับกรณีที่ตรงกัน (เมื่อ ID==500)
  3. หากคำสั่งบล็อกถูกดำเนินการกับกรณีที่ตรงกัน สวิตช์ภายในจะถูกใช้เพื่อเปรียบเทียบค่าที่ป้อนในรหัสผ่านตัวแปร และดำเนินการคำสั่งที่เชื่อมโยงกับกรณีที่ตรงกัน (เมื่อรหัสผ่าน==000)
  4. หากเป็นกรณีอื่น เคสสวิตช์จะทริกเกอร์เคสเริ่มต้นและพิมพ์ข้อความที่เหมาะสมเกี่ยวกับโครงร่างโปรแกรม

ทำไมเราต้องมีเคสสวิตช์?

มีปัญหาที่อาจเกิดขึ้นประการหนึ่งกับ คำสั่ง if-else ซึ่งก็คือความซับซ้อนของโปรแกรมจะเพิ่มขึ้นทุกครั้งที่มีทางเลือกอื่นเพิ่มขึ้น หากคุณใช้โครงสร้าง if-else หลายรายการในโปรแกรม โปรแกรมอาจอ่านและทำความเข้าใจได้ยาก บางครั้งอาจทำให้ผู้พัฒนาโปรแกรมเองเกิดความสับสนได้

วิธีแก้ไขปัญหานี้คือคำสั่ง switch

กฎสำหรับคำสั่งสวิตช์

  • นิพจน์จะต้องดำเนินการกับผลลัพธ์เสมอ
  • เลเบลเคสต้องเป็นค่าคงที่และไม่ซ้ำกัน
  • ป้ายกำกับกรณีต้องลงท้ายด้วยเครื่องหมายโคลอน ( : )
  • ต้องมีคีย์เวิร์ดแบ่งในแต่ละกรณี
  • มีป้ายกำกับเริ่มต้นได้เพียงป้ายกำกับเดียวเท่านั้น
  • เราสามารถซ้อนคำสั่ง switch หลายคำสั่งได้

สรุป

  • สวิตช์คือโครงสร้างการตัดสินใจใน 'C. '
  • สวิตช์ใช้ในโปรแกรมที่เกี่ยวข้องกับการตัดสินใจหลายอย่าง
  • สวิตช์จะต้องมีนิพจน์การทดสอบที่ปฏิบัติการได้
  • แต่ละกรณีต้องมีคีย์เวิร์ดตัวแบ่ง
  • ป้ายกำกับกรณีต้องเป็นค่าคงที่และไม่ซ้ำกัน
  • ค่าเริ่มต้นคือตัวเลือก
  • คำสั่งสวิตช์หลายรายการสามารถซ้อนกันภายในกันได้