Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

คำสั่ง Switch ใน C++: วิธีการใช้งาน

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

คำสั่งเงื่อนไขเป็นฟีเจอร์พื้นฐานของทุกภาษาโปรแกรมมิ่ง ใช้ควบคุมโฟลว์โปรแกรมและระบุว่าจะรันบล็อกโค้ดไหนเมื่อไหร่

คำสั่งเงื่อนไขหลักใน C++ คือ if และ if ... else นอกจากนี้ C++ มีคำสั่ง switch คำสั่งนี้ประเมินนิพจน์ (expression) กับหลายกรณี (cases) และรันบล็อกโค้ดที่ตรงกับ case นั้น คำสั่ง switch ทำงานคล้าย if ที่มี if ... else หลายชั้น

บทช่วยสอนนี้จะอธิบายการใช้ switch ใน C++ รวมถึงคำสั่ง break และ default พร้อมตัวอย่าง จนจบคุณจะเชี่ยวชาญ switch statement แล้ว

คำสั่งเงื่อนไข C++

คำสั่งเงื่อนไขอย่าง if และ if ... else ใช้ตัดสินใจในโปรแกรม เช่น if สั่งรันโค้ดถ้าผู้ใช้อายุมากกว่า 16 หรือวันนี้เป็นวันพุธ

if และ if ... else เป็นรูปแบบทั่วไป รันโค้ดถ้าเงื่อนไขจริง มิฉะนั้นไม่ทำอะไร ตัวอย่าง if ใน C++:

int age = 15;
if (age > 16) {
    cout<<"This user is over the age of 16."
}

โค้ดตรวจสอบตัวแปร age ว่า > 16 ถ้าจริง พิมพ์ข้อความ มิฉะนั้นไม่ทำอะไร ในตัวอย่าง age=15 เงื่อนไขเป็นเท็จ จึงไม่รันโค้ดใน if

แต่ถ้าต้องการตรวจสอบหลายเงื่อนไขล่ะ? นั่นคือที่มาของ switch statement แม้จะใช้ if ... else ซ้อนกันได้ แต่ทำให้โค้ดยุ่งยากและอ่านยาก นักพัฒนาจึงมักใช้ switch เพื่อประเมินนิพจน์กับหลาย cases

คำสั่ง Switch ใน C++

คำสั่ง switch (หรือ switch ... case) ใช้ตรวจสอบว่านิพจน์เท่ากับ case ไหนในหลาย cases หากนิพจน์ตรงกับ (equals) case ใด case หนึ่ง โค้ดที่เกี่ยวข้องกับ case นั้นจะถูกรัน

Switch statements ประกอบด้วย case statements หนึ่งหรือหลายอัน โปรแกรมใช้ case statements ประกาศเงื่อนไขที่จะเปรียบเทียบกับนิพจน์เป้าหมาย

Switch statements รับนิพจน์ทดสอบ (expression) รอบด้วยวงเล็บ และ case statements หนึ่งขึ้นไป วางในวงเล็บปีกกา

รูปแบบไวยากรณ์:

switch (expression) {
    case firstCase:
        // โค้ดที่รันถ้า expression ตรง firstCase
        break;
    case secondCase:
        // โค้ดที่รันถ้า expression ตรง secondCase
        break;
    default:
        // โค้ดที่รันถ้าไม่มี case ใดตรง
}

ตรรกะของ switch statement ข้างต้น:

  1. โปรแกรมประเมิน expression
  2. เปรียบเทียบ expression กับ firstCase หากตรง รันโค้ดในบล็อก firstCase แล้วคำสั่ง break จะทำงาน จบ switch block

หมายเหตุ: break จะอธิบายในส่วนต่อไป โดยสรุปคือบอกโปรแกรมให้ข้ามไปต่อหลัง switch block

  1. หาก expression ไม่ตรง firstCase จะเปรียบเทียบกับ secondCase
  2. หากตรง secondCase รันโค้ดในบล็อก secondCase แล้ว break จบ switch block
  3. หาก expression ไม่ตรง case ใดเลย จะรันโค้ดใน default case statement

หมายเหตุ: default เป็นคำสั่งบอกโปรแกรมว่าทำอะไรถ้าไม่มี case ใดตรงกับ expression ใน switch block

ใน switch statement โปรแกรมจะตรวจสอบ case แรกก่อน หากไม่จริง จะตรวจ case ต่อไปเรื่อยๆ จนกว่าจะมีเงื่อนไขเป็นจริง หรือตรวจครบทุก case แล้ว

ตัวอย่างการใช้ Switch ใน C++

ตัวอย่างทีละขั้นตอน: เขียนโปรแกรมบอกว่าเหลือกี่วันถึงวันหยุดสุดสัปดาห์ แต่ละวันแทนด้วยจำนวนเต็ม: จันทร์=1, อังคาร=2, พุธ=3, ...

โปรแกรมรับวันปัจจุบัน (เป็นจำนวนเต็ม) เปรียบเทียบกับชุด cases แต่ละ case สั่งพิมพ์จำนวนวันที่เหลือถึงวันหยุด

โค้ด:

#include <iostream>
using namespace std;
int main() {
    int dayOfWeek = 3;
    switch (dayOfWeek) {
        case 1: cout<<"There are 5 days until the weekend!"; break;
        case 2: cout<<"There are 4 days until the weekend!"; break;
        case 3: cout<<"There are 3 days until the weekend!"; break;
        case 4: cout<<"There are 2 days until the weekend!"; break;
        case 5: cout<<"There is 1 day until the weekend!"; break;
    }
}

ผลลัพธ์:

There are 3 days until the weekend.

อธิบาย: ประกาศตัวแปร dayOfWeek เก็บวันปัจจุบันเป็นจำนวนเต็ม ใช้ switch มี 5 cases โปรแกรมตรวจ case 1: dayOfWeek == 1? หากจริง พิมพ์ข้อความ แล้ว break ออกจาก switch หากไม่จริง ไป case 2 ... จนกว่าจะเจอ case ที่ตรง (แล้ว break จบ switch) หรือจบทุก case

ตัวอย่าง dayOfWeek = 3 (พุธ) โปรแกรมพิมพ์ "There are 3 days until the weekend!" แล้ว break จบ switch block

คำสั่ง Break ใน C++

Switch statements มักใช้ break ในทุก case ตัวอย่างข้างต้น เมื่อโปรแกรมรัน break โค้ดในบล็อกนั้นจะหยุดทำงาน และโปรแกรมอื่นต่อจากนั้นจะทำงานต่อ

break ใช้กับ switch เพื่อหยุดการประเมิน case ต่อๆ ไปใน switch statement

ตัวอย่าง break ใน switch (จากตัวอย่างข้างต้น):

...
case 3: cout<<"There are 3 days until the weekend!"; break;
...

หาก dayOfWeek == 3 โปรแกรมรัน break ทำให้ไม่ประเมิน case 4, 5 ต่อ เพราะ dayOfWeek เป็น 3 ไม่สามารถเป็น 4 หรือ 5 ได้ พิมพ์ข้อความ แล้ว switch หยุดทำงาน

คำสั่ง Default ใน C++

ใน C++ default เป็นคำสั่งทางเลือก (optional) บอกโค้ดว่าทำอะไรถ้าไม่มี case ใดเป็นจริง

ตัวอย่างข้างต้นครอบคลุมแค่วันธรรมดา หากเป็นวันหยุดสุดสัปดาห์ โปรแกรมจะไม่ทำอะไร แต่ถ้าใช้ default สั่งได้ว่าพิมพ์ "It's the weekend!" เมื่อเป็นเสาร์หรืออาทิตย์

โค้ดเพิ่ม default:

...
case 5: cout<<"There is 1 day until the weekend!"; break;
default: cout<<"It's the weekend!"; break;
...

ตามโค้ด หาก dayOfWeek ไม่ตรง case 1-5 (คือเป็น 6 หรือ 7) จะรัน default พิมพ์ "It's the weekend!"

สรุป

คำสั่ง switch ใช้ใน C++ เพื่อประเมินนิพจน์กับหลายผลลัพธ์ที่เป็นไปได้ หากนิพจน์ตรง case ใด โปรแกรมจะรันโค้ดของ case นั้น หากไม่มี case ใดตรง โปรแกรมจะรันโค้ดใน default statement (ถ้าระบุ)

บทช่วยสอนนี้อธิบายการใช้ switch statement และคำสั่ง break, default พร้อมตัวอย่าง ตอนนี้คุณพร้อมใช้ switch statements ในโค้ดอย่างมืออาชีพแล้ว!