C คำสั่งแบบมีเงื่อนไข: IF, IF Else และ Nested IF Else พร้อมตัวอย่าง
คำสั่งแบบมีเงื่อนไขในภาษา C คืออะไร?
งบเงื่อนไขใน C การเขียนโปรแกรมใช้ในการตัดสินใจตามเงื่อนไข คำสั่งแบบมีเงื่อนไขจะดำเนินการตามลำดับเมื่อไม่มีเงื่อนไขรอบคำสั่ง หากคุณใส่เงื่อนไขบางอย่างให้กับกลุ่มคำสั่ง ขั้นตอนการดำเนินการอาจเปลี่ยนแปลงไปขึ้นอยู่กับผลลัพธ์ที่ประเมินโดยเงื่อนไขนั้น กระบวนการนี้เรียกว่าการตัดสินใจใน 'C'
ในการเขียนโปรแกรม 'C' คำสั่งเงื่อนไขสามารถทำได้ด้วยความช่วยเหลือของโครงสร้างสองแบบต่อไปนี้:
1. หากคำสั่ง
2.คำสั่ง 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 มีตัวดำเนินการเชิงสัมพันธ์ 6 ตัวที่สามารถนำมาใช้เพื่อสร้างนิพจน์บูลีนสำหรับการตัดสินใจและการทดสอบเงื่อนไขซึ่งส่งคืนค่าจริงหรือเท็จ:
< น้อยกว่า
<= น้อยกว่าหรือเท่ากับ
> มากกว่า
>= มากกว่าหรือเท่ากับ
== เท่ากับ
!= ไม่เท่ากับ
โปรดสังเกตว่าการทดสอบแบบเท่ากัน (==) นั้นแตกต่างจากตัวดำเนินการกำหนดค่า (=) เนื่องจากเป็นหนึ่งในปัญหาที่พบบ่อยที่สุดที่โปรแกรมเมอร์ต้องเผชิญเนื่องจากสับสนระหว่างการทดสอบทั้งสอง
ตัวอย่างเช่น:
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 is เป็นเวอร์ชันขยายของ If รูปแบบทั่วไปของ if-else มีดังนี้:
if (test-expression) { True block of statements } Else { False block of statements } Statements;
โครงสร้างประเภทนี้ หากค่าของนิพจน์ทดสอบเป็นจริง บล็อกคำสั่งจริงจะถูกดำเนินการ หากค่าของ test-expression เป็นเท็จ บล็อกคำสั่ง false จะถูกดำเนินการ ไม่ว่าในกรณีใด หลังจากดำเนินการแล้ว การควบคุมจะถูกโอนไปยังคำสั่งที่ปรากฏนอกบล็อกของ 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 จะถูกดำเนินการและค่าจะถูกแสดงบนหน้าจอผลลัพธ์
- โปรแกรมข้างต้นจะพิมพ์ค่าของ a ตัวแปร และออกมาพร้อมกับความสำเร็จ
ลองเปลี่ยนค่าของตัวแปรดูว่าโปรแกรมทำงานอย่างไร
หมายเหตุ: ในการซ้อน 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;
โครงสร้างประเภทนี้เรียกว่าบันไดแบบอื่นถ้า โดยทั่วไปแล้วห่วงโซ่นี้จะดูเหมือนบันไดดังนั้นจึงถูกเรียกว่าเป็นบันไดแบบอื่น นิพจน์การทดสอบจะถูกประเมินจากบนลงล่าง เมื่อใดก็ตามที่พบนิพจน์ทดสอบที่แท้จริง คำสั่งที่เกี่ยวข้องจะถูกดำเนินการ เมื่อ n test-expression ทั้งหมดกลายเป็นเท็จ ดังนั้นคำสั่ง 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 และคำสั่งเริ่มต้นจะถูกพิมพ์
ลองแก้ไขค่าและสังเกตการเปลี่ยนแปลงในเอาต์พุต
สรุป
- คำสั่งการตัดสินใจหรือการแยกสาขาจะใช้เพื่อเลือกหนึ่งเส้นทางตามผลลัพธ์ของนิพจน์ที่ได้รับการประเมิน
- มันถูกเรียกว่าเป็นคำสั่งควบคุมเพราะมันควบคุมการไหลของการทำงานของโปรแกรม
- 'C' จัดให้มีโครงสร้าง if, if-else สำหรับคำสั่งการตัดสินใจ
- นอกจากนี้เรายังสามารถซ้อน if-else ไว้ภายในกันและกันได้เมื่อต้องทดสอบหลายเส้นทาง
- บันไดแบบ else-if ถูกใช้เมื่อเราต้องตรวจสอบวิธีต่างๆ ตามผลลัพธ์ของนิพจน์