3. ข้อความสั่ง if ซ้อน
3. ข้อความสั่ง if ซ้อน
การนำข้อความสั่ง if หรือ if-else ไปใส่ไว้ภายในข้อความสั่ง if หรือ if-else ซึ่งข้อความสั่งที่อยู่ภายในนี้ อาจเป็นข้อความสั่ง if หรือ if-else ก็ได้ และอาจซ้อนกันได้โดยไม่จำกัดจำนวนข้อความสั่ง
ข้อความสั่ง if ซ้อน รูปแบบที่ 1 (ข้อความสั่ง if-else อยู่หลัง if)
if(นิพจน์ 1) // 1
if(นิพจน์ 2) // 2
if … // 3
… ; // 4
else … // 5
… ; // 6
else … // 7
… ; // 8
else … // 9
… ; // 10
ถ้านิพจน์ 1 ให้ผลลัพธ์เป็นจริง จะกระทำการข้อความสั่ง if(นิพจน์ 2) ในบรรทัดที่ 2 ในการกระทำการบรรทัดที่ 2 ถ้านิพจน์ 2 ให้ผลลัพธ์เป็นจริง จะกระทำการข้อความสั่ง if ในบรรทัดที่ 3
แต่ถ้านิพจน์ 2 ให้ผลลัพธ์เป็นเท็จ จะกระทำการข้อความสั่งหลัง else ในบรรทัดที่ 7
แต่ถ้านิพจน์ 1 ให้ผลลัพธ์เป็นเท็จ จะกระทำการข้อความสั่งหลัง else ในบรรทัดที่ 9 และ 10
ตัวอย่าง 3.8 การใช้ข้อความสั่ง if ซ้อน if
#include <stdio.h> // 1
int main() // 2
{
float x, y, z; // 3
scanf("%f %f",&x, &y); // 4
if(x > 0) // 5
if(y != 0) // 6
{
z = x / y; // 7
printf("\n %f / %f = %f",x, y, z); // 8
}
} // 9
ตัวอย่าง 3.9 การใช้ข้อความสั่ง if-else
#include <stdio.h>
int main() {
float x, y, z;
scanf("%f %f",&x, &y);
if(x > 0)
if(y != 0)
{
z = x / y;
printf("z = %f",z);
}
else
printf("can’t be divided by zero");
else
{
z = x * y;
printf("z = %f",z);
}
}
ข้อความสั่ง if-else รูปแบบที่ 2 (ข้อความสั่ง if-else อยู่หลัง else)
if(นิพจน์ 1)
ข้อความสั่ง A;
else if(นิพจน์ 2)
ข้อความสั่ง B;
else if …
…
else
ข้อความสั่ง N;
ถ้านิพจน์ 1 ให้ผลลัพธ์เป็นจริง จะทำงานตามข้อความสั่ง A แต่ถ้านิพจน์ 1 ให้ผลลัพธ์เป็นเท็จ จะตรวจสอบผลลัพธ์ของนิพจน์ 2
ถ้านิพจน์ 2 ให้ผลลัพธ์เป็นจริง จะทำงานตามข้อความสั่ง B แต่ถ้านิพจน์ 2 ให้ผลลัพธ์เป็นเท็จ ให้ไปตรวจสอบผลลัพธ์ของนิพจน์ถัดไป
จนกระทั่งสุดท้าย หากไม่มีนิพจน์ใด เป็นจริงเลย จึงจะไปทำงานตามข้อความสั่ง N
ตัวอย่าง 3.10 การใช้ข้อความสั่ง if ซ้อน เพื่อหาค่าสูงสุด
#include <stdio.h> // 1
int main() // 2
{
int a, b, c, max; // 3
printf("Enter three integer : "); // 4
scanf("%d %d %d",&a, &b, &c); // 5
max = c; // 6
if(a > max) // 7
max = a; // 8
else if(b > max) // 9
max = b; // 10
printf("Maximum is : %d\n",max); // 11
}
ตัวอย่าง 3.11 การใช้ข้อความสั่ง if ซ้อน
#include <stdio.h> // 1
int main() // 2
{
int x, y, z; // 3
scanf("%f %f",&x, &y); // 4
if(x > 0) // 5
if(y > 0) // 6
z = x / y; // 7
else // 8
z = x - y; // 9
else // 10
if(x < 0) // 11
if(y > 0) // 12
z = x * y; // 13
else // 14
z = x + y; // 15
printf("z = %f",z); // 16
}
ตัวอย่าง 3.12 การใช้งานคำสั่ง 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");
}
}
ผลลัพธ์การทำงานของโปรแกรม
n is positive.
ตัวอย่าง 3.13 โปรแกรมคำนวณเกรด จากคะแนนที่กรอกเข้ามา
#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");
}
}
ผลลัพธ์การทำงานของโปรแกรม [1]
Enter your score: 92
Your grade is A.
ผลลัพธ์การทำงานของโปรแกรม [2]
Enter your score: 58
Your grade is D.
ผลลัพธ์การทำงานของโปรแกรม [3]
Enter your score: 120
Invalid score, it must be between 0 - 100.
จัดทำโดย นางสาวทิพย์สุคนธ์ พันธ์กิ่ง กลุ่มสาระการเรียนรู้วิทยาศาสตร์และเทคโนโลยี
โรงเรียนบุญวัฒนา สำนักงานเขตพื้นที่การศึกษามัธยมศึกษานครราชสีมา