คำสั่งเงื่อนไขในภาษาซี: If, Else, If ซ้อน พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
คำสั่งเงื่อนไขในภาษาซีควบคุมการไหลของโปรแกรมโดยการเรียกใช้บล็อกโค้ดก็ต่อเมื่อเงื่อนไขที่ทดสอบมีค่าเป็นจริงเท่านั้น ซึ่งช่วยให้สามารถตัดสินใจได้ผ่านโครงสร้าง if, if-else, nested และ else-if ladder

คำสั่งแบบมีเงื่อนไขในภาษา C คืออะไร?
คำสั่งเงื่อนไขในภาษาซีใช้สำหรับการตัดสินใจโดยอิงจากเงื่อนไข คำสั่งเงื่อนไขจะทำงานตามลำดับเมื่อไม่มีเงื่อนไขอื่นล้อมรอบ หากคุณใส่เงื่อนไขให้กับกลุ่มคำสั่ง การทำงานของโปรแกรมอาจเปลี่ยนแปลงไปตามผลลัพธ์ที่ได้จากเงื่อนไขนั้น กระบวนการนี้เรียกว่าการตัดสินใจในภาษาซี
แตกต่าง ลูปในภาษาซี โค้ดที่ทำซ้ำนั้น คำสั่งเงื่อนไขจะเลือกเส้นทางใดเส้นทางหนึ่ง
ในการเขียนโปรแกรม 'C' คำสั่งเงื่อนไขสามารถทำได้ด้วยความช่วยเหลือของโครงสร้างสองแบบต่อไปนี้:
- ถ้าคำสั่ง
- คำสั่ง if-else
นอกจากนี้ยังเรียกว่าเป็นการแตกแขนงเนื่องจากโปรแกรมจะตัดสินใจว่าคำสั่งใดที่จะดำเนินการตามเงื่อนไขที่ประเมิน
ถ้าคำสั่ง
มันเป็นหนึ่งในคำสั่งเงื่อนไขที่ทรงพลัง หากคำสั่งมีหน้าที่รับผิดชอบในการปรับเปลี่ยนขั้นตอนการทำงานของโปรแกรม ถ้าคำสั่งจะใช้โดยมีเงื่อนไขเสมอ เงื่อนไขจะได้รับการประเมินก่อนที่จะดำเนินการคำสั่งใดๆ ภายในเนื้อหาของ If ไวยากรณ์ของคำสั่ง if เป็นดังนี้:
if (condition)
instruction;
เงื่อนไขประเมินเป็นจริงหรือเท็จ True จะเป็นค่าที่ไม่ใช่ศูนย์เสมอ และ false คือค่าที่มีศูนย์ คำสั่งอาจเป็นคำสั่งเดียวหรือบล็อคโค้ดที่ล้อมรอบด้วยเครื่องหมายปีกกา { }
โปรแกรมต่อไปนี้แสดงตัวอย่างการใช้โครงสร้าง if ในการเขียนโปรแกรม 'C':
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
Output:
num1 is smaller than num2
โปรแกรมด้านบนแสดงการใช้โครงสร้าง if เพื่อตรวจสอบความเท่าเทียมกันของตัวเลขสองตัว
- ในโปรแกรมข้างต้น เราได้เตรียมใช้งานตัวแปรสองตัวด้วย num1, num2 โดยมีค่าเป็น 1, 2 ตามลำดับ
- จากนั้น เราได้ใช้ if กับนิพจน์ทดสอบเพื่อตรวจสอบว่าตัวเลขใดมีค่าน้อยที่สุดและตัวเลขใดมากที่สุด เราได้ใช้นิพจน์เชิงสัมพันธ์ใน if build เนื่องจากค่าของ num1 น้อยกว่า num2 เงื่อนไขจึงประเมินเป็นจริง
- ดังนั้นมันจะพิมพ์คำสั่งภายในบล็อกของ If หลังจากนั้นการควบคุมจะออกไปนอกบล็อกและโปรแกรมจะสิ้นสุดลงพร้อมกับผลลัพธ์ที่สำเร็จ
เชิงสัมพันธ์ Operaโปร
ภาษา C มีตัวดำเนินการเชิงสัมพันธ์หกตัวที่สามารถใช้ในการสร้างนิพจน์บูลีนเพื่อตัดสินใจและทดสอบเงื่อนไข ซึ่งจะส่งคืนค่าจริงหรือเท็จ:
<— น้อยกว่า<=— น้อยกว่าหรือเท่ากับ>— มากกว่า>=— มากกว่าหรือเท่ากับ==— เท่ากับ!=— ไม่เท่ากับ
โปรดสังเกตว่าการทดสอบแบบเท่ากัน (==) นั้นแตกต่างจากตัวดำเนินการกำหนดค่า (=) เนื่องจากเป็นหนึ่งในปัญหาที่พบบ่อยที่สุดที่โปรแกรมเมอร์ต้องเผชิญเนื่องจากสับสนระหว่างการทดสอบทั้งสอง
ตัวอย่างเช่น:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
Output:
You succeed
โปรดทราบว่าเงื่อนไขที่ประเมินเป็นค่าที่ไม่ใช่ศูนย์จะถือว่าเป็นจริง
ตัวอย่างเช่น:
int present = 1; if (present) printf("There is someone present in the classroom \n");
Output:
There is someone present in the classroom
คำสั่ง If-Else
คำสั่ง if-else เป็นรูปแบบที่ขยายเพิ่มเติมจากคำสั่ง if รูปแบบทั่วไปของ if-else มีดังนี้:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
ในโครงสร้างแบบนี้ ถ้าค่าของนิพจน์ทดสอบเป็นจริง บล็อกคำสั่งที่เป็นจริงจะถูกดำเนินการ ถ้าค่าของนิพจน์ทดสอบเป็นเท็จ บล็อกคำสั่งที่เป็นเท็จจะถูกดำเนินการ ไม่ว่ากรณีใดก็ตาม หลังจากดำเนินการเสร็จสิ้น การควบคุมจะถูกโอนไปยังคำสั่งที่ปรากฏอยู่นอกบล็อก If โดยอัตโนมัติ
โปรแกรมต่อไปนี้แสดงให้เห็นการใช้โครงสร้าง if-else:
เราจะเริ่มต้นตัวแปรด้วยค่าจำนวนหนึ่งและเขียนโปรแกรมเพื่อพิจารณาว่าค่านั้นน้อยกว่าสิบหรือมากกว่าสิบ
เริ่มกันเลย.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
Output:
The value is greater than 10
- เราได้เริ่มต้นตัวแปรด้วยค่า 19 แล้ว เราต้องค้นหาว่าตัวเลขนั้นมากกว่าหรือน้อยกว่า 10 โดยใช้โปรแกรม 'C' เมื่อต้องการทำเช่นนี้ เราได้ใช้โครงสร้าง if-else
- ที่นี่เราได้ระบุเงื่อนไข num<10 เนื่องจากเราต้องเปรียบเทียบค่าของเรากับ 10
- อย่างที่คุณเห็นบล็อกแรกจะเป็นบล็อกจริงเสมอ ซึ่งหมายความว่าหากค่าของนิพจน์ทดสอบเป็นจริง บล็อกแรกซึ่งก็คือ If จะถูกดำเนินการ
- บล็อกที่สองเป็นบล็อกอื่น บล็อกนี้มีคำสั่งที่จะถูกดำเนินการหากค่าของนิพจน์ทดสอบกลายเป็นเท็จ ในโปรแกรมของเรา ค่า num มากกว่าสิบ ดังนั้นเงื่อนไขการทดสอบจะกลายเป็นเท็จ และบล็อกอื่นจะถูกดำเนินการ ดังนั้นเอาต์พุตของเราจะมาจากบล็อกอื่นซึ่งก็คือ "ค่ามากกว่า 10" หลังจาก if-else โปรแกรมจะยุติการทำงานด้วยผลลัพธ์ที่สำเร็จ
ในการเขียนโปรแกรม 'C' เราสามารถใช้โครงสร้าง if-else หลายโครงสร้างภายในกันและกัน ซึ่งเรียกว่าการซ้อนคำสั่ง if-else
นิพจน์ตามเงื่อนไข
อีกวิธีหนึ่งในการแสดงคำสั่ง if-else คือการใช้ตัวดำเนินการ ?: ในนิพจน์เงื่อนไข ตัวดำเนินการ ?: จะมีเพียงคำสั่งเดียวที่เชื่อมโยงกับ if และ else
ตัวอย่างเช่น:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
Output:
y =2
คำสั่ง If-else ที่ซ้อนกัน
เมื่อจำเป็นต้องมีชุดการตัดสินใจ ระบบจะใช้ if-else แบบซ้อนกัน การซ้อนหมายถึงการใช้โครงสร้าง if-else อันหนึ่งภายในอีกอันหนึ่ง
มาเขียนโปรแกรมเพื่อแสดงการใช้ if-else แบบซ้อนกัน
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
Output:
The value is:1
โปรแกรมด้านบนจะตรวจสอบว่าตัวเลขน้อยกว่าหรือมากกว่า 10 และพิมพ์ผลลัพธ์โดยใช้โครงสร้าง if-else ที่ซ้อนกัน
- ประการแรก เราได้ประกาศตัวแปร num ที่มีค่าเป็น 1 จากนั้นเราจึงใช้โครงสร้าง if-else
- ในคำสั่ง if-else ภายนอก เงื่อนไขที่กำหนดจะตรวจสอบว่าตัวเลขนั้นน้อยกว่า 10 หรือไม่ ถ้าเงื่อนไขเป็นจริง คำสั่งภายในจึงจะถูกดำเนินการ ในกรณีนี้ เงื่อนไขเป็นจริง ดังนั้นคำสั่งภายในจึงถูกประมวลผล
- ในบล็อกด้านใน เรามีเงื่อนไขอีกครั้งที่ตรวจสอบว่าตัวแปรของเรามีค่าเป็น 1 หรือไม่ เมื่อเงื่อนไขเป็นจริง ระบบจะประมวลผลบล็อก If มิฉะนั้นจะประมวลผลบล็อก else ในกรณีนี้ เงื่อนไขเป็นจริง ดังนั้นบล็อก If จึงถูกดำเนินการและค่าจะถูกพิมพ์ลงบนหน้าจอแสดงผล
- โปรแกรมข้างต้นจะพิมพ์ค่าของตัวแปรและจบการทำงานด้วยข้อความว่าสำเร็จ
ลองเปลี่ยนค่าของ ตัวแปร ดูว่าโปรแกรมทำงานอย่างไร
หมายเหตุ: ในคำสั่ง if-else ที่ซ้อนกัน เราต้องระมัดระวังเรื่องการเว้นวรรค เพราะมีโครงสร้าง if-else หลายชั้นเกี่ยวข้องอยู่ ทำให้ยากที่จะแยกแยะแต่ละโครงสร้างได้ การเว้นวรรคที่ถูกต้องจะช่วยให้อ่านโปรแกรมได้ง่ายขึ้น
คำสั่ง Else-if ที่ซ้อนกัน
Nested else-if ถูกใช้เมื่อจำเป็นต้องมีการตัดสินใจแบบหลายเส้นทาง
ไวยากรณ์ทั่วไปของวิธีสร้างแลดเดอร์ else-if ในการเขียนโปรแกรม 'C' มีดังนี้:
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
โครงสร้างประเภทนี้เรียกว่า "บันไดเอ้ก" (else-if ladder) เนื่องจากมีลักษณะคล้ายบันได จึงเรียกว่าบันไดเอ้ก" เงื่อนไขการทดสอบจะถูกประเมินจากบนลงล่าง เมื่อใดก็ตามที่พบเงื่อนไขการทดสอบที่เป็นจริง คำสั่งที่เกี่ยวข้องจะถูกดำเนินการ เมื่อเงื่อนไขการทดสอบทั้ง n ข้อเป็นเท็จ คำสั่ง else ทั่วไปจะถูกดำเนินการ
เรามาดูการทำงานจริงด้วยความช่วยเหลือของโปรแกรมกันดีกว่า
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
Output:
First class
โปรแกรมข้างต้นจะพิมพ์เกรดตามคะแนนในการทดสอบ เราได้ใช้โครงสร้างขั้นบันไดelse-ifในโปรแกรมด้านบน
- เราได้เริ่มต้นตัวแปรด้วยเครื่องหมาย ในโครงสร้างแลดเดอร์ else-if เราได้จัดเตรียมเงื่อนไขต่างๆ
- ค่าจากเครื่องหมายตัวแปรจะถูกเปรียบเทียบกับเงื่อนไขแรก เนื่องจากเป็นจริง ข้อความที่เกี่ยวข้องกับเงื่อนไขนี้จะถูกพิมพ์บนหน้าจอเอาต์พุต
- หากเงื่อนไขการทดสอบแรกกลายเป็นเท็จ ก็จะถูกเปรียบเทียบกับเงื่อนไขที่สอง
- กระบวนการนี้จะดำเนินต่อไปจนกว่าจะประเมินนิพจน์ทั้งหมดเสร็จสิ้น มิฉะนั้นการควบคุมจะออกจากโครงสร้าง else-if และจะแสดงข้อความเริ่มต้น (default statement)
ลองแก้ไขค่าและสังเกตการเปลี่ยนแปลงในเอาต์พุต





