คำสั่ง Switch..case สามารถใช้ได้ในกรณีใด

Prerequisite - Switch Statement in C Switch is a control statement that allows a value to change control of execution…

www.geeksforgeeks.org

Interesting facts about switch statement in C

Switch เป็นคำสั่งควบคุมที่อนุญาตให้ค่าเปลี่ยนการควบคุมการดำเนินการ ต่อไปนี้เป็นข้อเท็จจริงที่น่าสนใจเกี่ยวกับคำสั่ง switch (เปลี่ยน)

  1. นิพจน์ที่ใช้ใน switch จะต้องเป็นประเภทหนึ่ง (int, char และ enum) ไม่อนุญาตให้ใช้ประเภทอื่นในการแสดงออก
// float is not allowed in switch#include <stdio.h>
int main(){
float x = 1.1;
switch (x){
case 1.1: printf("Choice is 1");
break;
default: printf("Choice other than 1, 2 and 3");
break;
}
return 0;
}
Output: Compiler Error: switch quantity not an integer

ใน Java อนุญาตให้ใช้สตริงได้ในสวิตช์ (ดูที่นี่)

2. ข้อความทั้งหมดที่ตามหลังตัวพิมพ์ที่ตรงกันดำเนินการจนกว่าจะถึงคำสั่ง break

// There is no break in all cases (ไม่มีการหยุดพักในทุกกรณี)#include <stdio.h>
int main(){
int x = 2;
switch (x){
case 1: printf("Choice is 1\n");
case 2: printf("Choice is 2\n");
case 3: printf("Choice is 3\n");
default: printf("Choice other than 1, 2 and 3\n");
}
return 0;
}
Output:
Choice is 2
Choice is 3
Choice other than 1, 2 and 3

// There is no break in some cases (ไม่มีการหยุดพักในบางกรณี)#include <stdio.h>
int main(){
int x = 2;
switch (x){
case 1: printf("Choice is 1\n");
case 2: printf("Choice is 2\n");
case 3: printf("Choice is 3\n");
case 4: printf("Choice is 4\n");
break;
default: printf("Choice other than 1, 2, 3 and 4\n");
break;
}
printf("After Switch");
return 0;
}
Output:
Choice is 2
Choice is 3
Choice is 4
After Switch

3. บล็อกเริ่มต้นสามารถวางได้ทุกที่ ตำแหน่งเริ่มต้นไม่สำคัญว่าจะยังคงดำเนินการหากไม่พบที่ตรงกัน

// The default block is placed above other cases.
(บล็อกเริ่มต้นถูกวางไว้เหนือกรณีอื่นๆ)
#include <stdio.h>
int main(){
int x = 4;
switch (x){
default: printf("Choice other than 1 and 2");
break;
case 1: printf("Choice is 1");
break;
case 2: printf("Choice is 2");
break;
}
return 0;
}
Output: Choice other than 1 and 2

4. นิพจน์ที่สำคัญที่ใช้ใน ป้ายกำกับ จะต้องเป็นนิพจน์คงที่

// A program with variable expressions in labels
โปรแกรมที่มีนิพจน์ตัวแปรในป้ายกำกับ
#include <stdio.h>
int main(){
int x = 2;
int arr[] = {1, 2, 3};
switch (x){
case arr[0]: printf("Choice 1\n");
case arr[1]: printf("Choice 2\n");
case arr[2]: printf("Choice 3\n");
}
return 0;
}
Output:Compiler Error: case label does not reduce to an integer constant

5. ข้อความที่เขียนไว้ด้านบนจะไม่ถูกดำเนินการหลังจากคำสั่งสวิตช์การควบคุมการถ่ายโอนไปยังกรณีที่ตรงกันคำสั่งที่เขียนก่อนกรณีจะไม่ถูกดำเนินการ

ในภาษา C มีคำสั่งควบคุมหลายประเภทที่เราสามารถใช้ได้ เช่น if, if-else, for, while, do-while เป็นต้น ซึ่งคำสั่งควบคุมการทำงานของโปรแกรมนั้นจะมีสองประเภทคือ คำสั่งเลือกเงื่อนไขและคำสั่งวนซ้ำ

คำสั่งเลือกเงื่อนไข

คำสั่ง If

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

if (expression)
{
    // statements
}

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

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}

ในการทำงานของโปรแกรมเป็นการใช้คำสั่ง if เพื่อเปรียบเงื่อนไขต่างๆ โดยแต่ละบล็อคคำสั่งจะทำงานเมื่อเงื่อนไขเป็นจริงเท่านั้น บล็อคแรกจะทำงานเพราะว่า 10 มีค่าเท่ากับ 10 บล็อคที่สองจะไม่ทำงานเพราะว่า 3 ไม่น้อยว่า 1 และสำหรับบล็อคสุดท้ายจะทำงาน เพราะว่า a เป็นจำนวนคู่

และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อรัน คุณจะเห็นว่ามีแค่ block 1 และ 3 ที่แสดงผลเพราะว่าเงื่อนไขของ if เป็นจริง

block 1 is executed
block 3 is executed

คำสั่ง If else

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

#include <stdio.h>

main()
{
    int score;
    scanf ("%d", &score);

    if (score < 50)
        printf("Your grade is F");
    else if (score < 60)
        printf("Your grade is D");
    else if (score < 70)
        printf("Your grade is C");
    else if (score < 80)
        printf("Your grade is B");
    else
        printf("Congratulation! You got grade A");
}

ในตัวอย่างนี้เป็นโปรแกรมสำหรับการคำนวณเกรด โดยโปรแกรมจะให้คุณสามารถใส่เกรดเข้ามา และเปรียบเทียบเงื่อนไขโดยใช้คะแนนตรวจสอบ คุณจะสังเกตเห็นว่าเราสามารถ ใช้ else if ได้ถ้าหากมีหลายเงื่อนไข และใช้คำสั่ง else เป็นเงื่อนไข default ในกรณีที่ไม่ตรงกับเงื่อนไขใดๆ เลย

74
Your grade is B

นี่เป็นผลลัพธ์การทำงานของโปรแกรมเมื่อเราได้กรอกคะแนนเป็น 74 ซึ่งตรงกับเงือนไขของเกรด B

คำสั่ง Switch case

Switch case เป็นคำสั่งเงื่อนไขที่ทำงานคล้ายกับ if แต่ส่วนมากจะใช้สำหรับการเปรียบเทียบกับค่าคงที่และต้องเป็นข้อมูลประเภท Integer หรือ Char เท่านั้น มาดูตัวอย่างของการใช้คำสั่ง Switch

#include <stdio.h>

main()
{
    int number = 5;

    switch (number)
    {
    case 1:
        printf("n is 1");
        break;
    case 2:
        printf("n is 2");
        break;
    case 3:
        printf("n is 3");
        break;
    default:
        printf("Unknown");
    }
}

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

คำสั่งวนซ้ำ

คำสั่ง while loop

หลังจากที่คุณได้รู้จักคำสั่งเงื่อนไขพื้นฐานไปแล้ว ต่อไปคุณจะได้รู้จักคำสั่งของการทำงานซ้ำ ซึ่งสามารถให้เราประมวลผลส่วนของโปรแกรมที่ต้องการได้

คำสั่งวนซ้ำที่ง่ายที่สุดคือคำสั่ง while loop โดยการทำงานของคำสั่ง while loop จะทำงานเมื่อเงื่อนไขเป็นจริง และจะสิ้นสุดการทำงานจนกว่าเงื่อนไขจะเป็นเท็จ มาดูตัวอย่างของโปรแกรม

#include <stdio.h>

main()
{
    int n = 1;

    while (n <= 10)
    {
        printf("%d, ", n);
        n++;
    }
}

ในตัวอย่างเป็นการใช้คำสั่ง while เพื่อแสดงผลตัวเลข 1 ถึง 10 โดยเราได้กำหนดค่าเริ่มต้นให้ n เท่ากับ 1 และจะเพิ่มขึ้นในการแสดงผลแต่ละครั้ง จนกว่าจะมากกว่า 10 จึงสิ้นสุดการทำงานของโปรแกรม และจะได้ผลลัพธ์ดังนี้

1, 2, 3, 4, 5, 6, 7, 8, 9, 10,

คำสั่ง do-while loop

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

#include <stdio.h>

main()
{
    int n = 1;

    do
    {
        printf("Enter number: ");
        scanf ("%d", &n);
        printf("You have entered %d\n", n);
    }
    while (n != 0);

    printf("The program is terminated");
}

ในตัวอย่างนี้ เป็นโปรแกรมที่จะรับค่าจากคีย์บอร์ด โดยจะรับตัวเลขเข้ามาและแสดงผลตัวเลขที่ได้รับเข้ามา และจะสิ้นสุดการทำงานเมื่อตัวเลขเป็น 0

1
You have entered 1
3
You have entered 3
0
You have entered 0
The program is terminated

คำสั่ง for loop

คำสั่ง for loop เป็นคำสั่งวนซ้ำที่เราสามารถกำหนดค่าเริ่มต้นเงื่อนไขและการเปลี่ยนแปลงของค่าได้ ในตอนแรกครั้งเดียว โดยมีรูปแบบดังนี้

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}
0

คำสั่ง for loop สามารถใช้ได้เหมือนกับ คำสั่ง while loop และ do while loop แต่โดยทั่วไปแล้ว เรามักจะใช้คำสั่ง for loop กับการวนซ้ำในจำนวนรวบที่แน่นอน หรือมันมักจะถูกใช้กับอาเรย์ มาดูตัวอย่างการใช้งาน

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}
1

ในตัวอย่างเป็นการใช้คำสั่ง for loop เพื่อวนซ้ำแสดงผลลัพธ์เลข 1 ถึง 10 เหมือนกับตัวอย่างของคำสั่ง while loop ก่อนหน้า มาดูตัวอย่างเพิ่มเติมในการใช้คำสั่ง for loop

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}
2

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

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}
3

คำสั่ง break

คำสั่ง break เป็นคำสั่งที่ใช้สำหรับหยุดการทำงาน loop ในทันที โดยจะไม่สนใจเงื่อนไขของ loop ว่ายังเป็นจริงอยู่หรือไม่ มาดูตัวอย่างการใช้งานในการแสดงผลตัวเลข 1 ถึง 10

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}
4

ในการทำงานของโปรแกรม โปรแกรมจะวนเพียง 3 รอบ เพราะว่าเมื่อ i มีค่าเป็น 3 เราได้ใช้คำสั่ง break เพื่อให้สิ้นสุดการทำงานของ for loop ทันที โดยจะไม่สนใจกว่าเงื่อนไขของ for loop จะยังคงเป็นจริง และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อรัน

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}
5

คำสั่ง continue

คำสั่ง continue เป็นคำสั่งสำหรับการข้ามการทำงานในรอบปัจจุบัน และทำงานในรอบใหม่ทันที มาดูตัวอย่าง

#include <stdio.h>

main()
{
    if (10 == 10)
    {
        printf("block 1 is executed.\n");
    }

    if (3 < 1)
    {
        printf("block 2 is executed.\n");
    }

    int a = 10;
    if (a % 2 == 0)
    {
        printf("block 3 is executed.\n");
    }
}
6

ในตัวอย่างโปรแกรมจะทำงานคำสั่ง continue ถ้าหาก i หาร 2 มีเศษเป็น 0 หรือจำนวนคู่ ดังนั้นโปรแกรมจะได้ดังนี้