คำสั่ง if else ในภาษา C

26 April 2021

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

  • คำสั่ง if
  • คำสั่ง if else
  • คำสั่ง if else-if
  • คำสั่ง if แบบซ้อนกัน

คำสั่ง if

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

if (condition) {
    // statements
}

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

if (condition)
    // statement

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

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

if_example.c
#include <stdio.h>

int main()
{
    int n = 10;
    if (n == 10) {
        printf("n is exactly 10\n");
    }
    if (n % 2 == 0) {
        printf("n is an even number\n");
    }
    if (n < 5) {
        printf("n is less than 5\n");
    }
    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

n is exactly 10
n is an even number

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

if (n == 10) {
    printf("n is exactly 10\n");
}
if (n % 2 == 0) {
    printf("n is an even number\n");
}

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

if (n < 5) {
    printf("n is less than 5\n");
}

ส่วนในบล็อคสุดท้ายเป็นการตรวจสอบว่าค่าในตัวแปร n มีค่าน้อยกว่า 5 หรือไม่ เนื่องจากนี่ทำให้เงื่อนไขไม่เป็นจริง ดังนั้นโปรแกรมข้ามการทำงานของบล็อคนี้ไป และนี่เป็นวิธีที่คำสั่ง if ทำงานในภาษา C

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

if_example2.c
#include <stdio.h>

int main()
{
    // Number of iPads left in stock
    int inStock = 10;
    int money;

    printf("Hello, how much money do you have? ");
    scanf("%d", &money);

    if (inStock > 0 && money >= 100) {
        money -= 100;
        printf("You can buy this iPad with 100 USD.\n");
        printf("You have left %d USD\n", money);
    }

    printf("Bye.\n");
    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเราได้กรอกจำนวนเงินเป็น 150

Hello, how much money do you have? 150
You can buy this iPad with 100 USD.
You have left 50 USD
Bye.

เมื่อรันโปรแกรมมันจะถามให้คุณกรอกจำนวนเงินที่มี จากนั้นโปรแกรมจะทำการตรวจสอบว่ามีสินค้าเพียงพออยู่ในคลังสินค้าเพื่อขายหรือไม่ และตรวจสอบว่าคุณจะต้องมีเงินเพียงพอที่จะซื้อมันในราคา 100 USD หรือไม่

if (inStock > 0 && money >= 100) {
    money -= 100;
    printf("You can buy this iPad with 100 USD.\n");
    printf("You have left %d USD\n", money);
}

นี่เป็นการกำหนดเงื่อนไขจากที่กล่าวมา เราได้ตรวจสอบว่ามีสินค้าคงเหลือในตัวแปร inStock หรือไม่ และมีเงินมีมากกว่าหรือเท่ากับ 100 USD หรือไม่ โดยการเชื่อมเงื่อนไขย่อยทั้งสองด้วยตัวดำเนินการ AND ถ้าหากเงื่อนไขเป็นจริงโปรแกรมจะทำงานในบล็อคของคำสั่ง if ทำการหักเงินออกไป และแสดงข้อความแจ้งให้ทราบออกทางหน้าจอ

int inStock = 10;
int money;

คุณสามารถลองทำให้เงื่อนไขไม่เป็นจริงได้โดยการเปลี่ยนค่าในตัวแปร inStock เป็นศูนย์ เพื่อบ่งบอกว่าตอนนี้ไม่ม่ีสินค้าเหลือแล้ว หรือกรอกจำนวนเงินที่น้อยกว่า 100 USD ซึ่งน้อยกว่าราคาของ iPad และเมื่อมีอย่างน้อยหนึ่งเงื่อนไขที่ไม่เป็นจริง โปรแกรมจะข้ามการทำงานของบล็อคคำสั่ง if ไป

คำสั่ง if else

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

if (condition) {
    // statements when condition is true
} else {
    // statements when condition is not true
}

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

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

if_else_example1.c
#include <stdio.h>

int main()
{
    int n;
    printf("Enter a number: ");
    scanf("%d", &n);

    if (n % 2 == 0) {
        printf("%d is even number\n", n);
    } else {
        printf("%d is odd number\n", n);
    }
    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เราได้รันโปรแกรมสองครั้งและกรอกตัวเลขเป็น 2 และ 5 ตามลำดับ

Enter a number: 2
2 is even number
Enter a number: 5
5 is even number

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

if (n % 2 == 0) {

ในการตรวจสอบว่าตัวเลขเป็นจำนวนคู่ในภาษา C นั้นสามารถทำได้โดยนำตัวเลขมาหารเอาเศษด้วยตัวดำเนินการ % โดยการหารมันด้วย 2 หากหารแล้วไม่เหลือเศษแสดงว่าตัวเลขเป็นจำนวนคู่ และเป็นจำนวนคี่ในทางตรงกันข้าม

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

login_example.c
#include <stdio.h>
#include <string.h>

int main()
{
    char username[20];
    char password[20];

    printf("Login\n");

    printf("Username: ");
    scanf("%s", username);
    printf("Password: ");
    scanf("%s", password);

    if (strcmp(username, "Metin") == 0 && strcmp(password, "1234") == 0) {
        printf("Hi %s,\nLogin success.\n", username);
    } else {
        printf("Invalid username or password.\n");
    }
    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เราได้รันโปรแกรมสองครั้ง ครั้งแรกกรอก Username และรหัสผ่านเป็นค่าที่ถูกต้อง และจากนั้นกรอกผิด

Login
Username: Metin
Password: 1234
Hi Metin,
Login success.
Login
Username: Metin
Password: abcd
Invalid username or password.

เมื่อโปรแกรมเริ่มต้นการทำงาน มันจะถามให้ผู้ใช้งานกรอก Username และรหัสผ่าน และเก็บไว้ในตัวแปร String สองตัวได้แก่ username และ password ตามลำดับ สำหรับนำไปตรวจสอบว่าค่าที่กรอกเข้ามานั้นถูกต้องหรือไม่ด้วยคำสั่ง if else

เพื่อความเรียบง่ายของตัวอย่าง เราได้กำหนดให้ Username และรหัสผ่านที่ถูกต้องเป็น Metin และ 1234 ตามลำดับ ในความเป็นจริงแล้วค่าเหล่านี้ควรถูกอ่านมาจากฐานข้อมูลหรือไฟล์ระบบเพื่อนำมาตรวจสอบ

if (strcmp(username, "Metin") == 0 && strcmp(password, "1234") == 0) {
    printf("Hi %s,\nLogin success.\n", username);
} else {
    printf("Invalid username or password.\n");
}

เราใช้ฟังก์ชัน strcmp เพื่อตรวจสอบว่าค่าของ String ทั้งสองเท่ากันหรือไม่ และฟังก์ชันจะส่งค่ากลับเป็น 0 ในกรณีที่เท่ากัน เราทำเช่นนี้กับทั้ง Username และรหัสผ่านจากนั้นเชื่อมเงื่อนไขเข้าด้วยกันด้วยตัวดำเนินการ AND

คำสั่ง if else-if

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

if (condition1) {
    // statements for condition1
} else if (condition2) {
    // statements for condition2
} else if (condition3) {
    // statements for condition3
} else {
    // when no previous conditions are fulfilled
}

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

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

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

number_signs.c
#include <stdio.h>

int main()
{
    int n = -5;
    if (n > 0) {
        printf("n is positive.\n");
    } else if (n < 0) {
        printf("n is negative.\n");
    } else {
        printf("n is zero.\n");
    }
    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม

n is positive.

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

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

grading.c
#include <stdio.h>

int main()
{
    int score;
    printf("Enter your score: ");
    scanf("%d", &score);

    if (score >= 80 && score <= 100) {
        printf("Your grade is A.\n");
    } else if (score >= 70 && score <= 79) {
        printf("Your grade is B.\n");
    } else if (score >= 60 && score <= 69) {
        printf("Your grade is C.\n");
    } else if (score >= 50 && score <= 59) {
        printf("Your grade is D.\n");
    } else if (score >= 0 && score <= 49) {
        printf("Your grade is F.\n");
    } else {
        printf("Invalid score, ");
        printf("it must be between 0 - 100.\n");
    }
    return 0;
}

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเราได้รันโปรแกรมสามครั้งและกรอกคะแนนเป็น 92, 58 และ 120 ตามลำดับ

Enter your score: 92
Your grade is A.
Enter your score: 58
Your grade is D.
Enter your score: 120
Invalid score, it must be between 0 - 100.

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

เราสามารถละเว้นบล็อคของคำสั่ง else ได้ แต่ถ้าหากเราทำ ในกรณีที่คะแนนไม่อยู่ในระหว่าง 0 - 100 จะไม่มีการทำงานอะไรเกิดขึ้น

คำสั่ง if แบบซ้อนกัน

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

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

grading2.c
#include <stdio.h>

int main()
{
    int score;
    printf("Enter your score: ");
    scanf("%d", &score);

    if (score >= 0 && score <= 100) {
        if (score >= 80) {
            printf("Your grade is A.\n");
        } else if (score >= 70) {
            printf("Your grade is B.\n");
        } else if (score >= 60) {
            printf("Your grade is C.\n");
        } else if (score >= 50) {
            printf("Your grade is D.\n");
        } else {
            printf("Your grade is F.\n");
        }
    } else {
        printf("Invalid score, ");
        printf("it must be between 0 - 100.\n");
    }
    return 0;
}

ในตัวอย่างนี้ ให้ผลลัพธ์การทำงานเช่นเดียวกันกับตัวอย่างก่อนหน้า แต่เราเปลี่ยนวิธีเขียนมาเป็นการใช้งานการซ้อนกันของคำสั่ง if else แทน

if (score >= 0 && score <= 100) {
    // check for grades
    ...
} else {
    printf("Invalid score, ");
    printf("it must be between 0 - 100.\n");
}

แทนที่จะตรวจสอบคะแนนสำหรับหาเกรดในทันที เราได้ทำการตรวจสอบก่อนว่าคะแนนที่กรอกเข้ามานั้นถูกต้องหรือไม่ ถ้าหากคะแนนอยู่ในช่วงระหว่าง 0 - 100 โปรแกรมจะงานในคำสั่ง if ด้านในเพื่อคำนวณหาเกรดต่อไป

if (score >= 80) {
    printf("Your grade is A.\n");
} else if (score >= 70) {
    printf("Your grade is B.\n");
} else if (score >= 60) {
    printf("Your grade is C.\n");
} else if (score >= 50) {
    printf("Your grade is D.\n");
} else {
    printf("Your grade is F.\n");
}

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

อย่างไรก็ตาม ทั้งหมดนี้ไม่มีกฏตายตัวว่าคุณควรเขียนอย่างไร คุณสามารถเลือกใช้วิธีไหนก็ได้ตามที่ต้องการ สิ่งที่สำคัญก็คือเพื่อให้โปรแกรมทำงานและให้ผลลัพธ์ตามที่คาดหวังไว้ได้ก็พอแล้ว

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

บทความนี้เป็นประโยชน์หรือไม่?Yes·No