Professional Documents
Culture Documents
01418112-65 Chapter 6 (W 06)
01418112-65 Chapter 6 (W 06)
คำสั่งควบคุม
CONTROL STATEMENT
• เป็นคำสั่งที่ใช้เลือกทำโดยพศจารณาจากเงื่อนไขที่กำหนด
รูปแบบ • หากคำสั่งเงื่อนไขที่กำหนดเป็นจรศงแล้ว
เท็จ
เงื่อนไข • คำสั่งต่าง ๆ ที่อยู่ภายในบล็อกของเงื่อนไข if
จรศง ก็จะได้รับการประมวลผล (ซึ่งอาจมีมากกว่า
if (เงื่อนไข) คำสั่งที่ 1 1 คำสั่ง)
{ • แต่ถ้าตรวจสอบแล้วพบว่าเงื่อนไขเป็นเท็จ
คำสั่งที่ 1; • คำสั่งที่อยู่ภายในบล็อกของเงื่อนไข if
} ก็จะไม่ได้รับการประมวลผล คือ จะข้ามไป
คำสั่งที่ 2; คำสั่งที่ 2 ทำการประมวลผลคำสั่งที่อยู่ถัดจากบล็อก
ของ if ทันที
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if
ตัวอย่าง โปรแกรมแสดงการทำงานของคำสั่งเงื่อนไข if
1 #include <stdio.h> ผลลัพธ์ของโปรแกรม
2 main() เป็นคำสั่งภายในบล็อกของ if
3 { How old are you? : 15
คำสั่งนี้อยู่นอกบล็อกของ if
4 int age; You are young
5 printf("How old are you? : "); You are 15 years old
6 scanf("%d",&age);
7 if(age < 18)
8 printf("You are young\n"); How old are you? : 18
9 printf("You are %d years old",age); You are 18 years old
10 }
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if
ตัวอย่าง โปรแกรมแสดงการทำงานของคำสั่งเงื่อนไข if
1 #include <stdio.h> ผลลัพธ์ของโปรแกรม
2 main()
3 {
4 int age; How old are you? : 15
5 printf("How old are you? : "); You are less than 18 years old
6 scanf("%d", &age);
7 if(age < 18) You are young
8 { You are 15 years old
9 printf("You are less than 18 years old\n");
10 printf("You are young\n");
11 } How old are you? : 18
12 printf("You are %d years old", age); You are 18 years old
13 }
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if
อธศบายโปรแกรม
• ทำการตรวจสอบเงื่อนไขว่า หากอายุน้อยกว่า 18 ปี ให้พศมพ์ข้อความ "You are
young" ซึ่งสังเกตโปรแกรมนี้ให้ดี บรรทัดที่ 9 เท่านั้น ที่เป็นคำสัง่ ภายในบล็อกของ
คำสั่ง if ส่วนบรรทัดที่ 10 เป็นคำสั่งนอกบล็อกของ if ดังจะเห็นได้จากผลลัพธ์ที่แสดง
ดังนี้
o หากเงื่อนไขที่ตรวจสอบเป็นจรศง ข้อความในบรรทัดที่ 9 ก็จะพศมพ์ หลังจากนั้นก็จะ
ทำคำสั่งที่นอกเงื่อนไข if ต่อไป คือ พศมพ์ข้อความในบรรทัดที่ 10
o แต่หากเงื่อนไขที่ตรวจสอบเป็นเท็จ ข้อความในบรรทัดที่ 9 ที่เป็นคำสั่งในส่วนของ
เงื่อนไข if ก็จะไม่ถูกประมวลผล แต่ละข้ามการทำงานไปประมวลผลในบรรทัดที่ 10
ทันที
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if
อธศบายโปรแกรม
• ทั้งสองตัวอย่างบนแตกต่างกันตรงที่มีการนำเครื่องหมาย { } มาใช้คลุมคำสั่งที่อยู่ภายใน
บล็อกของ if กล่าวคือ หากภายในบล็อกของเงื่อนไข if มีคำสั่งที่ต้องทำงานเพียง 1 คำสั่ง
เหมือนโปรแกรมที่ 1 ก็ไม่จำเป็นต้องใส่ { } ให้กับบล็อกของ if (แต่ถ้าจะใส่ก็ไม่ผศด)
• แต่สำหรับโปรแกรมที่ 2 นี้เมื่อตรวจสอบว่าอายุน้อยกว่า 18 แล้ว จะมี 2 คำสั่งที่ต้องทำ คือ
บรรทัดที่ 9 และ 10
• ดังนั้น ต้องใส่ { } คลุมด้วย (เมื่อทำบรรทัดที่ 9 และ 10 เรียบร้อยแล้ว ก็จะไปทำงานที่
บรรทัดที่ 12 ต่อไป) และหากอายุมากกว่าหรือเท่ากับ 18 ก็จะข้ามการทำงานในบล็อกของ
if ไปทำบรรทัดที่ 12 ทันที
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if-else
รูปแบบ • เป็นคำสั่งที่ช่วยให้ตรวจสอบเงื่อนไข
สมบูรณ์มากขึ้น
if (เงื่อนไข) เท็จ • โดยหากตรวจสอบเงื่อนไขของคำสัง่
เงื่อนไข
{ จรศง if แล้วเป็นเท็จ ก็จะเข้ามาทำงาน
คำสั่งที่ 1; ภายในบล็อกของคำสั่ง else แทน
คำสั่งที่ 1 คำสั่งที่ 2
} • กล่าวคือ หากตรวจสอบเงื่อนไขเป็น
else เท็จ ก็จะประมวลผลคำสั่งในบล็อก
{ ของ else แทน และ
• เมื่อตรวจสอบเงื่อนไขและประมวลผล
คำสั่งที่ 2; คำสั่งที่ 3 ตามคำสั่งเงื่อนไข if-else เรียบร้อย
}
แล้ว ก็จะทำงานตามคำสั่งที่อยู่
คำสั่งที่ 3; ถัดจาก if-else นั้นต่อไป
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if-else
ตัวอย่าง โปรแกรมแสดงการทำงานของคำสั่งเงื่อนไข if-else
1 #include <stdio.h> ผลลัพธ์ของโปรแกรม
2 main()
3 {
4 int points; Please enter points : 49
5 printf("Please enter points : "); Fail...Attempt again
6 scanf("%d", &points); Bye bye...see you again next semester
7 if(points >= 50)
8 printf("Pass exam...Congratulations\n");
9 else
10 printf("Fail...Attempt again\n"); Please enter points : 79
11 printf("Bye bye...see you again next semester"); Pass exam...Congratulations
12 } Bye bye...see you again next semester
13
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if-else
อธศบายโปรแกรม
• ทำการรับค่าคะแนน (point) เข้ามาในโปรแกรม จากนั้นตรวจสอบด้วยเงื่อนไข if-else
o หากคะแนนมากกว่าหรือเท่ากับ 50 ให้พศมพ์ข้อความ
"Pass exam...Congratulations" และออกจากบล็อกการทำงานของคำสั่ง
เงื่อนไข if-else ไปทำงานในคำสั่งถัดไป คือ พศมพ์ข้อความ "Bye bye...see you
again next semester“
o หากคะแนนน้อยกว่า 50 ให้พศมพ์ข้อความ "Fail...Attempt again“
และออกจากบล็อกการทำงานของคำสั่งเงื่อนไข if-else ไปทำงานในคำสั่งถัดไป
คือ พศมพ์ข้อความ "Bye bye...see you again next semester“
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if-else
ตัวอย่าง โปรแกรมแสดงการหาอายุจากปี ค.ท. ที่กรอก
1 #include <stdio.h>
2 #define THIS_YEAR 2023 ผลลัพธ์ของโปรแกรม
3 main()
4 {
5 int year; What year were you born? : 2532
6 printf("What year were you born? : ");
7 scanf("%d", &year); Please insert year
8 if(year > THIS_YEAR)
9 {
Insert in C.E. format
10 printf("Please insert year\n"); Finish! Goodbye
11 printf("Insert in C.E. format\n");
12 }
13 else
14 {
15 year = THIS_YEAR - year; What year were you born? : 1991
16 printf("You are %d years old\n", year); You are 32 years old
17 }
18 printf("Finish! Goodbye"); Finish ! Goodbye
19 }
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if-else
อธศบายโปรแกรม
• บรรทัดที่ 2 ทำการกำหนดค่าคงที่แบบ Defined Constant ชื่อ THIS_YEAR ให้มีค่าเท่ากับ 2022
• บรรทัดที่ 7 ทำการรับค่าปี ค.ท. ที่เกศดเข้ามาในโปรแกรม และบรรทัดที่ 8 ทำการตรวจสอบค่าปีเกศดที่
รับเข้ามาว่ามากกว่า 2022 หรือไม่ หากมากกว่า 2022 แสดงว่าผู้ใช้ป้อนปีเกศดเข้ามาเป็น พ.ท. ให้
พศมพ์ข้อความในบรรทัดที่ 10-11 เตือนให้กรอกปีเป็น ค.ท. แต่หากปีที่ปอ้ นเข้ามามีค่าไม่มากกว่า
2022 ก็จะเข้าสู่บล็อกการทำงานของ else ในบรรทัดที่ 15 ซึ่งทำการหาอายุโดยนำค่า 2022 ลบ
ด้วยค่าปีเกศดที่ป้อนเข้ามา จะได้ค่าอายุออกมา และในบรรทัดที่ 16 ทำการพศมพ์ค่าผลลัพธ์นั้นออก
ทางหน้าจอ ซึ่งเมื่อตรวจสอบการทำงานด้วยคำสั่งเงื่อนไข if-else เรียบร้อยแล้ว จะออกจาก
บล็อกการทำงานของคำสั่ง if-else ไปทำคำสั่งถัดไป คือ พศมพ์ข้อความในบรรทัดที่ 18
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if ซ้อน if (nested if)
รูปแบบ เท็จ
เงื่อนไขที่ 1
if (เงื่อนไขที่ 1)
{ เท็จ
เงื่อนไขที่ 2
คำสั่งที่ 1;
} เท็จ
else if (เงื่อนไขที่ 2) เงื่อนไขที่ 3
{ จรศง
คำสั่งที่ 2;
จรศง จรศง
} คำสั่งที่ 1 คำสั่งที่ 2 คำสั่งที่ 3 คำสั่งที่ 4
else if (เงื่อนไขที่ 3)
{
คำสั่งที่ 3;
}
else
{
คำสั่งที่ 4;
}
คำสั่งที่ 5; คำสั่งที่ 5
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if ซ้อน if (nested if)
ตัวอย่าง โปรแกรมแสดงการหาเกรดจากคะแนน
1 #include <stdio.h> 1 #include <stdio.h>
2 main() คำสั่งเงื่อนไข if-else 2 main() คำสั่งเงื่อนไข if ซ้อน if ผลลัพธ์ของโปรแกรม
3 { 3 { (nested if)
4 int points; 4 int points;
5 printf("Please enter points : "); 5 printf("Please enter points : ");
6 scanf("%d", &points); 6 scanf("%d", &points); Please enter points : 55
7 if(points >= 80) 7 if(points >= 80) You get grade D
8 { 8 { See you again ! Next course
9 printf("Congratulations\n"); 9 printf("Congratulations\n");
10 printf("C Language programming subject\n"); 10 printf("C Language programming subject\n");
11 printf("You get grade A\n"); 11 printf("You get grade A\n");
12 } 12 }
13 else 13 else if(points >= 70) Please enter points : 80
14 if(points >= 70) 14 printf("You get grade B\n"); Congratulations
15 printf("You get grade B\n"); 15 else if(points >= 60) C Language programming subject
16 else 16 printf("You get grade C\n"); You get grade A
17 if(points >= 60) 17 else if(points >= 50) See you again ! Next course
18 printf("You get grade C\n"); 18 printf("You get grade D\n");
19 else 19 else
20 if(points >= 50) 20 printf("You get grade F\n");
21 printf("You get grade D\n"); 21 printf("See you again! Next course"); Please enter points : 45
22 else 22 }
You get grade F
23 printf("You get grade F\n");
See you again ! Next course
24 printf("See you again! Next course");
25 }
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if ซ้อน if (nested if)
อธศบายโปรแกรม
• ตัวอย่างโปรแกรมคำสั่งเงื่อนไข if-else และคำสั่งเงื่อนไข if ซ้อน if (nested if)
• เป็นโปรแกรมเหมือนกันทุกประการ เพียงแต่เขียนในรูปแบบที่แตกต่างกันเท่ากัน
• โปรแกรมนี้จะคำนวณเกรดจากคะแนนที่ป้อนเข้ามา โดยใช้คำสั่งในรูปแบบ if ซ้อน if
ในการตรวจสอบ ซึ่งหลักการทำงานที่เหมือนกับคำสั่งเงื่อนไข if และ if-else
ในตัวอย่างที่ผ่านมา คือ หากตรวจสอบเงื่อนไขใดแล้วพบว่าเป็นจรศง ก็จะทำงาน
ตามคำสั่งของบล็อกนั้น ๆ เช่น หาก ได้คะแนน 75 คะแนน จะได้ว่าเงื่อนไขที่ 2 คือ
point >= 70 เป็นจรศง ดังนั้น จึงแสดงข้อความว่า "You get grade B“ และ
เมื่อตรวจสอบและทำงานตามคำสั่งในส่วนของ nested if เรียบร้อยแล้ว ก็แสดง
ข้อความว่า "See you again! Next course" เสมอ
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข if-else แบบย่อ
อธศบายโปรแกรม
รันครั้งที่ 1 รันครั้งที่ 2
คำสั่งเงื่อนไข (Condition Statement) คำสั่งเงื่อนไข switch-case
รันครั้งที่ 1 รันครั้งที่ 2