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 เพื่อตรวจสอบความเท่าเทียมกันของตัวเลขสองตัว

ถ้า Statement

  1. ในโปรแกรมข้างต้น เราได้เตรียมใช้งานตัวแปรสองตัวด้วย num1, num2 โดยมีค่าเป็น 1, 2 ตามลำดับ
  2. จากนั้น เราได้ใช้ if กับนิพจน์ทดสอบเพื่อตรวจสอบว่าตัวเลขใดมีค่าน้อยที่สุดและตัวเลขใดมากที่สุด เราได้ใช้นิพจน์เชิงสัมพันธ์ใน if build เนื่องจากค่าของ num1 น้อยกว่า num2 เงื่อนไขจึงประเมินเป็นจริง
  3. ดังนั้นมันจะพิมพ์คำสั่งภายในบล็อกของ 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

คำสั่ง 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

คำสั่ง If-Else

  1. เราได้เริ่มต้นตัวแปรด้วยค่า 19 แล้ว เราต้องค้นหาว่าตัวเลขนั้นมากกว่าหรือน้อยกว่า 10 โดยใช้โปรแกรม 'C' เมื่อต้องการทำเช่นนี้ เราได้ใช้โครงสร้าง if-else
  2. ที่นี่เราได้ระบุเงื่อนไข num<10 เนื่องจากเราต้องเปรียบเทียบค่าของเรากับ 10
  3. อย่างที่คุณเห็นบล็อกแรกจะเป็นบล็อกจริงเสมอ ซึ่งหมายความว่าหากค่าของนิพจน์ทดสอบเป็นจริง บล็อกแรกซึ่งก็คือ If จะถูกดำเนินการ
  4. บล็อกที่สองเป็นบล็อกอื่น บล็อกนี้มีคำสั่งที่จะถูกดำเนินการหากค่าของนิพจน์ทดสอบกลายเป็นเท็จ ในโปรแกรมของเรา ค่า 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 ที่ซ้อนกัน

คำสั่ง If-else ที่ซ้อนกัน

  1. ประการแรก เราได้ประกาศตัวแปร num ที่มีค่าเป็น 1 จากนั้นเราจึงใช้โครงสร้าง if-else
  2. ใน if-else ภายนอก เงื่อนไขที่ให้มาจะตรวจสอบว่าตัวเลขน้อยกว่า 10 หรือไม่ หากเงื่อนไขเป็นจริง เงื่อนไขนั้นก็จะดำเนินการ วงใน- ในกรณีนี้ เงื่อนไขเป็นจริง ดังนั้นบล็อกด้านในจึงได้รับการประมวลผล
  3. ในบล็อกด้านใน เรามีเงื่อนไขที่ตรวจสอบว่าตัวแปรของเรามีค่า 1 หรือไม่ เมื่อเงื่อนไขเป็นจริง ตัวแปรจะประมวลผลบล็อก If มิฉะนั้นจะประมวลผลบล็อก else ในกรณีนี้ เงื่อนไขจะเป็นจริง ดังนั้นบล็อก If จะถูกดำเนินการและค่าจะถูกแสดงบนหน้าจอผลลัพธ์
  4. โปรแกรมข้างต้นจะพิมพ์ค่าของ 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 ที่ซ้อนกัน

  1. เราได้เริ่มต้นตัวแปรด้วยเครื่องหมาย ในโครงสร้างแลดเดอร์ else-if เราได้จัดเตรียมเงื่อนไขต่างๆ
  2. ค่าจากเครื่องหมายตัวแปรจะถูกเปรียบเทียบกับเงื่อนไขแรก เนื่องจากเป็นจริง ข้อความที่เกี่ยวข้องกับเงื่อนไขนี้จะถูกพิมพ์บนหน้าจอเอาต์พุต
  3. หากเงื่อนไขการทดสอบแรกกลายเป็นเท็จ ก็จะถูกเปรียบเทียบกับเงื่อนไขที่สอง
  4. กระบวนการนี้จะดำเนินต่อไปจนกว่าจะประเมินนิพจน์ทั้งหมด มิฉะนั้น การควบคุมจะออกจากบันได else-if และคำสั่งเริ่มต้นจะถูกพิมพ์

ลองแก้ไขค่าและสังเกตการเปลี่ยนแปลงในเอาต์พุต

สรุป

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

จดหมายข่าว Guru99 รายวัน

เริ่มต้นวันใหม่ของคุณด้วยข่าวสาร AI ล่าสุดและสำคัญที่สุดที่ส่งมอบทันที