ในบทนี้ นักเรียนจะได้เรียนรู้การใช้งานคำสั่ง 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 สำหรับตรวจสอบค่าในตัวแปร
#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 เครื่องใหม่ได้หรือไม่ โดยการตรวจสอบค่าจากหลายตัวแปรเพื่อสร้างเงื่อนไข
#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
#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 และรหัสผ่าน นี่จะเหมือนกับที่นักเรียนพบเห็นทั่วไปโดยเฉพาะอย่างยิ่งบนเว็บไซต์ที่ต้องเข้าสู่ระบบก่อนการใช้งาน
#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 เพื่อตรวจสอบว่าตัวเลขเป็นจำนวนเต็มบวก เต็มลบ หรือศูนย์ สังเกตว่านี่เป็นการทำงานที่เป็นไปได้แบบสามทางเลือก
#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
#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 ในบางครั้ง นี่จะช่วยให้โปรแกรมสั้นและกระชับลงและอาจช่วยเพิ่มประสิทธิภาพการทำงานของโปรแกรมได้ นี่เป็นตัวอย่าง
#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 เพื่อควบคุมการทำงานของโปรแกรมให้สามารถตัดสินใจทำงานแบบหลายทางเลือกตามเงื่อนไขที่กำหนด เราได้แสดงตัวอย่างการใช้งานในรูปแบบต่างๆ เพื่อให้นักเรียนเข้าใจการทำงานของคำสั่งมากขึ้น