หน้าแรก
คำชี้แจงก่อนเรียน
รายละเอียดรายวิชา

 แบบทดสอบก่อนเรียน
 หน่วยที่ 1 ภาษาคอมพิวเตอร์เบื้องต้น
 หน่วยที่ 2 เริ่มต้นกับภาษาซี
 หน่วยที่ 3 ข้อมูลพื้นฐานและตัวดำเนินการ
 หน่วยที่ 4 คำสั่งพื้นฐานในภาษาซี
 หน่วยที่ 5 คำสั่งควบคุมแบบทางเลือก
แบบทดสอบก่อนเรียนประจำหน่วย
5.1 คำสั่ง if-else
5.2 คำสั่ง if-else if-else
แบบฝึกหัดที่ 5.1
5.3 คำสั่ง switch
5.4 การใช้คำสั่งแบบทางเลือกเชิงซ้อน
แบบฝึกหัดที่ 5.2
แบบทดสอบหลังเรียนประจำหน่วย
 หน่วยที่ 6 คำสั่งควบคุมแบบวนซ้ำ
 แบบทดสอบหลังเรียน
 บรรณานุกรม

แจ้งข่าว
 แหล่งเรียนรู้เพิ่มเติม
 ติดต่อครูผู้สอน
 ผู้พัฒนาบทเรียน
 

 
 
มีความรู้ความเข้าใจในการใช้คำสั่งควบคุมแบบทางเลือก
 
 
1. บอกวิธีการใช้คำสั่ง if - else และนำไปเขียนโปรแกรมได้
2. บอกวิธีการใช้คำสั่ง if - else if - else และนำไปเขียนโปรแกรมได้
3. บอกวิธีการใช้คำสั่ง switch และนำไปเขียนโปรแกรมได้
4. อธิบายการใช้คำสั่งแบบทางเลือกเชิงซ้อน และนำไปเขียนโปรแกรมได้
 
5.1 คำสั่ง if-else
5.2 คำสั่ง if-else if-else
5.3 คำสั่ง switch
5.4 การใช้คำสั่งแบบทางเลือกเชิงซ้อน
 
| 5.1.1 คำสั่ง if-else | 5.1.2 คำสั่ง if |
 
 
หน่วยที่ 5 คำสั่งควบคุมแบบทางเลือก
 
จากโปรแกรมที่ได้ศึกษามาจากหน่วยที่ 4 คำสั่งพื้นฐานในภาษาซี จะเป็นการทำงานทีละคำสั่งตามลำดับขั้น สามารถเขียนผังงาน (Flowchart) ได้ดังภาพ
 
แสดงรูปแบบผังงานแบบตามลำดับขั้นทั่วไป

 
ลักษณะของการทำงานทีละคำสั่งแบบตามลำดับขั้นนั้น คำสั่งทุกคำสั่งจะถูกประมวลผลตั้งแต่เริ่มต้นจนสิ้นสุดโปรแกรม ถือเป็นโปรแกรมการทำงานที่ไม่ซับซ้อน
 
ในภาษาซียังมีคำสั่งควบคุมแบบอื่น ที่ให้เลือกทำหรือไม่ทำคำสั่งก็ได้ ตามเงื่อนไขที่กำหนดไว้ ลักษณะนี้เรียกว่า โครงสร้างแบบทางเลือก มีคำสั่งควบคุมแบบทางเลือก ดังต่อไปนี้
 
จากหน่วยที่ 3 ข้อมูลพื้นฐานและตัวดำเนินการ ได้เรียนรู้ตัวดำเนินการเปรียบเทียบ ตัวดำเนินการตรรกะและนิพจน์ แล้ว ซึ่งสามารถนำมาประยุกต์ใช้กับหน่วยนี้ในส่วนของการกำหนดเงื่อนไขทางเลือก โปรแกรมจะซับซ้อนมากหรือน้อย ก็ขึ้นอยู่กับเงื่อนไขว่าซับซ้อนมากน้อยระดับใด หากเงื่อนไขซับซ้อนมาก โปรแกรมก็จะซับซ้อนมาก หากเงื่อนไขซับซ้อนน้อย โปรแกรมก็จะซับซ้อนน้อยด้วยเช่นกัน
 
 
5.1.1 คำสั่ง if-else
 
ผังงานแสดงการทำงานแบบทางเลือก (แบบ 2 ทาง)
 
 
คำสั่ง if-else ใช้สำหรับการเขี่ยนโปรแกรมเลือกทำตามเงื่อนไขทางเลือกที่กำหนด
มีรูปแบบดังนี้
 
 
รูปแบบคำสั่ง if-else


if (เงื่อนไขทางเลือก)

คำสั่ง จริง;

else

คำสั่ง เท็จ;


if (เงื่อนไขทางเลือก) {

คำสั่ง จริง 1;
คำสั่ง จริง 2;
.
.
.

คำสั่ง จริง n;

} else {

คำสั่ง เท็จ 1;
คำสั่ง เท็จ 2;
.
.
.

คำสั่ง เท็จ n;

}

 

เงื่อนไขทางเลือก หมายถึง นิพจน์ใด ๆ ที่สามารถประเมินค่าได้
ในกรณีที่ เงื่อนไขทางเลือก มีค่าไม่เท่ากับศูนย์ แสดงว่ามีค่าเป็นจริง จะทำคำสั่งหลังเงื่อนไข
แต่กรณีที่ เงื่อนไขทางเลือก มีค่าเท่ากับศูนย์ แสดงว่ามีค่าเป็นเท็จ จะทำคำสั่งหลัง else
 
ข้อสังเกต หากมีคำสั่งใน if มากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย {}

 

 
 
5.1.2 คำสั่ง if
 
ผังงานแสดงการทำงานแบบทางเลือก (แบบทางเดียว)
 
 
คำสั่ง if ใช้สำหรับให้ทำคำสั่ง เฉพาะกรณีที่เงือนไขทางเลือก เป็นจริง
และไม่ต้องทำอะไร เมื่อเงื่อนไขเป็นเท็จ มีรูปแบบดังนี้
 
 
รูปแบบคำสั่ง if


if (เงื่อนไขทางเลือก)

คำสั่ง จริง;




if (เงื่อนไขทางเลือก) {

คำสั่ง จริง 1;
คำสั่ง จริง 2;
.
.
.

คำสั่ง จริง n;

}

 

้อสังเกต 1. หากเงื่อนไขทางเลือก มีค่าเป็นเท็จ จะไม่มีการประมวลผลคำสั่งใด ๆ
 
2. หากมีคำสั่งใน if มากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย {}
 
 
   
ตัวอย่างที่ 1 จงเขียนโปรแกรมตัดเกรด ผ่าน/ตก ( ex5-01.c )
  โดยคะแนน >= 50 ผ่าน และ คะแนน < 50 ตก
 
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int score ; /* ประกาศตัวแปร score เป็นชนิดจำนวนเต็ม (สำหรับเก็บคะแนน) */
/*4*/ printf("Input Score : "); /* แสดงข้อความ "Input Score : " เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*5*/ scanf("%d" , &score); /* รับค่าคะแนนเป็นจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร score เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*6*/ if (score >= 50) /* ตรวจสอบ ค่า score มากกว่าหรือเท่ากับ 50 จริงหรือไม่ ถ้าจริง เริ่มทำคำสั่งหลังเงื่อนไข บรรทัดที่ 7 ถ้าเท็จ เริ่มทำคำสั่งหลัง else บรรทัดที่ 9 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*7*/ printf("%d -> Pass" , score); /* แสดงข้อความ "%d -> Pass" โดยแสดงค่า score ใน %d เสร็จแล้วไปทำคำสั่งบรรทัดที่ 10 */
/*8*/ else /* ทำกรณีผลการตรวจสอบเงื่อนไข ในคำสั่งบรรทัดที่ 6 เป็นเท็จ */
/*9*/ printf("%d -> Fail" , score); /* แสดงข้อความ "%d -> Fail" โดยแสดงค่า score ใน %d เสร็จแล้วไปทำคำสั่งบรรทัดที่ 10 */
/*10*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*11*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม
   
   
ตัวอย่างที่ 2 จงเขียนโปรแกรมตรวจสอบเลขคู่เลขคี่ ( ex5-02.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int num ; /* ประกาศตัวแปร num เป็นชนิดจำนวนเต็ม */
/*4*/ printf("Input Number : "); /* แสดงข้อความ "Input Number : " เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*5*/ scanf("%d" , &num); /* รับค่าจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร num เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*6*/ if (num % 2 == 0) /* ตรวจสอบ ค่า num % 2 เท่ากับ 0 จริงหรือไม่ ถ้าจริง เริ่มทำคำสั่งหลังเงื่อนไข บรรทัดที่ 7 ถ้าเท็จ เริ่มทำคำสั่งหลัง else บรรทัดที่ 9 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*7*/ printf("%d is Even." , num); /* แสดงข้อความ "%d is Even." โดยแสดงค่า num ใน %d เสร็จแล้วไปทำคำสั่งบรรทัดที่ 10 */
/*8*/ else /* ทำกรณีผลการตรวจสอบเงื่อนไข ในคำสั่งบรรทัดที่ 6 เป็นเท็จ */
/*9*/ printf("%d is Odd." , num); /* แสดงข้อความ "%d is Odd." โดยแสดงค่า num ใน %d เสร็จแล้วไปทำคำสั่งบรรทัดที่ 10 */
/*10*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*11*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม
   
 
   
ตัวอย่างที่ 3 จงเขียนโปรแกรมรับค่าจำนวนจริง 2 จำนวน แล้วหาผลหาร โดยจำนวนแรกเป็นตัวตั้ง จำนวนที่ 2 เป็นตัวหาร หากตัวหารเป็น 0 ให้แจ้งข้อความว่า "cannot devide by zero." ( ex5-03.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ float x , y ; /* ประกาศตัวแปร x และ y เป็นชนิดจำนวนจริง */
/*4*/ printf("<<< x divide by y >>>\n"); /* แสดงข้อความ "<<< x divide by y >>>" ทางจอภาพ แจ้งผู้ใช้โปรแกรม แล้วขึ้นบรรทัดใหม่ */
/*5*/ printf("Input Number x : "); /* แสดงข้อความ "Input Number x : " เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*6*/ scanf("%f" , &x); /* รับค่าจำนวนจริง จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร x เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*7*/ printf("Input Number y : "); /* แสดงข้อความ "Input Number y : " เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*8*/ scanf("%f" , &y); /* รับค่าจำนวนจริง จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร y เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*9*/ if (y == 0.0) /* ตรวจสอบ ค่า y เท่ากับ 0 จริงหรือไม่ ถ้าจริง เริ่มทำคำสั่งหลังเงื่อนไข บรรทัดที่ 10 ถ้าเท็จ เริ่มทำคำสั่งหลัง else บรรทัดที่ 12 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*10*/ printf("\ncannot devide by zero."); /* ขึ้นบรรทัดใหม่ แล้วแสดงข้อความ "cannot devide by zero." เสร็จแล้วไปทำคำสั่งบรรทัดที่ 13 */
/*11*/ else /* ทำกรณีผลการตรวจสอบเงื่อนไข ในคำสั่งบรรทัดที่ 9 เป็นเท็จ */
/*12*/ printf("\n%.2f/%.2f = %.2f" , x , y ,x/y); /* ขึ้นบรรทัดใหม่ แล้วแสดงข้อความ "%.2f/%.2f = %.2f" โดยแสดงค่า x ใน %.2f ตัวแรก แสดงค่า y ใน %.2f ตัว 2 และแสดงค่า x / y ใน %.2f ตัว 3 เป็นจำนวนจริงทศนิยม 2 ตำแหน่ง เสร็จแล้วไปทำคำสั่งบรรทัดที่ 13 */
/*13*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*14*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม (ทั้งกรณีเงื่อนไขเป็นจริงและเท็จ)
   
   
 
   
ตัวอย่างที่ 4 จงเขียนโปรแกรมรับจำนวนเต็ม 2 จำนวน แล้วเรียงจำนวนจากน้อยไปมาก
( ex5-04.c )
   
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int a , b , temp ; /* ประกาศตัวแปร a b และ temp เป็นชนิดจำนวนเต็ม (a และ b สำหรับเก็บจำนวนที่จะนำมาสลับกัน ส่วน temp เอาไว้พักข้อมูลชั่วคราว) */
/*4*/ printf("swap (small -> big)\n"); /* แสดงข้อความ "swap (small -> big)" แจ้งผู้ใช้โปรแกรม แล้วขึ้นบรรทัดใหม่ */
/*5*/ printf("Input Number a : "); /* แสดงข้อความ "Input Number a : " เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*6*/ scanf("%d" , &a); /* รับค่าจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร a เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*7*/ printf("Input Number b : "); /* แสดงข้อความ "Input Number b : " เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*8*/ scanf("%d" , &b); /* รับค่าจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร b เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*9*/ if (a > b) { /* ตรวจสอบ ค่า a มากกว่า ค่า b จริงหรือไม่ ถ้าจริง เริ่มทำคำสั่งหลังเงื่อนไข บรรทัดที่ 10 ถ้าเท็จ (ในโปรแกรมนี้ไม่มีคำสั่งกรณีเป็นเท็จ) ให้ไปทำคำสั่งบรรทัดที่ 14 (มีคำสั่งย่อยมากกว่า 1 คำสั่ง ต้องเขียนคำสั่งย่อยภายในเครื่องหมาย { } */
/*10*/ temp = a; /* เป็นคำสั่งกำหนดค่า โดยนำค่า a ไปเก็บไว้ในตัวแปร temp */
/*11*/ a = b; /* เป็นคำสั่งกำหนดค่า โดยนำค่า b ไปเก็บไว้ในตัวแปร a */
/*12*/ b = temp; /* เป็นคำสั่งกำหนดค่า โดยนำค่า temp ไปเก็บไว้ในตัวแปร b */
/*13*/ } /* สิ้นสุด block ขอบเขตของคำสั่ง if กรณีเป็นจริง (ในบรรทัดที่ 9) */
/*14*/ printf("\n%d %d" , a , b); /* ขึ้นบรรทัดใหม่ 1 บรรทัด แล้วแสดงข้อความ "%d %d" โดยแสดงค่า a ใน %d ตัวแรก และแสดงค่า b ใน %d ตัวที่ 2 */
/*15*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*16*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม
   
 
 
 
คำสั่ง if-else if-else เป็นคำสั่งควบคุมแบบทางเลือก แบบมีเงื่อนไขทางเลือกหลายเงื่อนไข ลักษณะการทำงานจะตรวจสอบเงื่อนไขทางเลือก ลำดับบนสุดก่อน หากตรวจสอบแล้ว พบว่า เงื่อนไขทางเลือก

- มีค่าเป็นจริง จะทำคำสั่งที่อยู่ถัดจากเงื่อนไขทางเลือกนั้น แล้วจะออกจากคำสั่ง if ไปทำคำสั่งถัดไป โดยไม่ตรวจสอบเงื่อนไขทางเลือกที่เหลืออีก

- มีค่าเป็นเท็จ จะตรวจสอบเงื่อนไขทางเลือกลำดับถัดไป

- มีค่าเป็นเท็จทั้งหมด (ไม่มีเงื่อนไขใดเป็นจริงเลย) จะทำคำสั่งที่อยู่ถัดจาก else
 
ผังงานแสดงการทำงาน คำสั่ง if-else if-else
 
 
คำสั่ง if-else if-else มีรูปแบบการใช้ ดังนี้
 
 
รูปแบบคำสั่ง if-else if-else


if (เงื่อนไขทางเลือก 1)

คำสั่งเงื่อนไขทางเลือก 1 เป็นจริง;

else if (เงื่อนไขทางเลือก 2)

คำสั่งเงื่อนไขทางเลือก 2 เป็นจริง;

else if (เงื่อนไขทางเลือก 3)

คำสั่งเงื่อนไขทางเลือก 3 เป็นจริง;

else if (เงื่อนไขทางเลือก.....)
.
.
.

else if (เงื่อนไขทางเลือก M)

คำสั่งเงื่อนไขทางเลือก M เป็นจริง;

else

คำสั่งเงื่อนไขทางเลือก M เป็นเท็จ;


if (เงื่อนไขทางเลือก 1){

คำสั่ง 1 เงื่อนไขทางเลือก 1 เป็นจริง;

คำสั่ง 2 เงื่อนไขทางเลือก 1 เป็นจริง;

คำสั่ง 3 เงื่อนไขทางเลือก 1 เป็นจริง;
.
.
.
คำสั่ง N เงื่อนไขทางเลือก 1 เป็นจริง;

}else if (เงื่อนไขทางเลือก 2){

คำสั่ง 1 เงื่อนไขทางเลือก 2 เป็นจริง;

คำสั่ง 2 เงื่อนไขทางเลือก 2 เป็นจริง;

คำสั่ง 3 เงื่อนไขทางเลือก 2 เป็นจริง;
.
.
.
คำสั่ง N เงื่อนไขทางเลือก 2 เป็นจริง;

}else if (เงื่อนไขทางเลือก 3){

คำสั่ง 1 เงื่อนไขทางเลือก 3 เป็นจริง;

คำสั่ง 2 เงื่อนไขทางเลือก 3 เป็นจริง;

คำสั่ง 3 เงื่อนไขทางเลือก 3 เป็นจริง;
.
.
.
คำสั่ง N เงื่อนไขทางเลือก 3 เป็นจริง;

}else if (เงื่อนไขทางเลือก.....){
.
.
.

}else if (เงื่อนไขทางเลือก M){

คำสั่ง 1 เงื่อนไขทางเลือก M เป็นจริง;

คำสั่ง 2 เงื่อนไขทางเลือก M เป็นจริง;

คำสั่ง 3 เงื่อนไขทางเลือก M เป็นจริง;
.
.
.
คำสั่ง N เงื่อนไขทางเลือก M เป็นจริง;

}else{

คำสั่ง 1 เงื่อนไขทางเลือก M เป็นเท็จ;

คำสั่ง 2 เงื่อนไขทางเลือก M เป็นเท็จ;

คำสั่ง 3 เงื่อนไขทางเลือก M เป็นเท็จ;
.
.
.
คำสั่ง N เงื่อนไขทางเลือก M เป็นเท็จ;

}

 

ข้อสังเกต หากมีคำสั่งใน if มากกว่า 1 คำสั่ง ต้องเขียนคำสั่งภายใต้เครื่องหมาย {}

 

   
ตัวอย่างที่ 5 จงเขียนโปรแกรมตัดเกรด 5 เกรด ตามช่วงคะแนน ดังนี้ ( ex5-05.c )
 
ช่วงคะแนน เกรด
>= 80 4.00
>= 70 และ < 80 3.00
>= 60 และ < 70 2.00
>= 50 และ < 60 1.00
< 50 0.00
จากโจทย์ เขียนผังงาน แสดงการแก้ปัญหา ได้ดังนี้
   
   
จากผังงาน เขียนโปรแกรมได้ดังนี้
   
บรรทัด รหัสต้นฉบับ (Source Code) อธิบายคำสั่ง
/*1*/ #include <stdio.h> /* เป็นคำสั่งของตัวประมวลผลก่อนซี จะมีผลให้แฟ้ม stdio.h ซึ่งเป็นแฟ้มส่วนหัวที่ใช้เก็บรวบรวมคำสั่งเกี่ยวกับการรับและแสดงผลข้อมูล ถูกอ่านเข้ามาเพื่อประมวลผลร่วมกับโปรแกรมนี้ */
/*2*/ int main() { /* ประกาศ main เป็นฟังก์ชันหลัก ชนิดจำนวนเต็ม และเริ่มต้น block ของฟังก์ชัน main (เริ่มต้นโปรแกรม) */
/*3*/ int score; /* ประกาศตัวแปร score เป็นชนิดจำนวนเต็ม */
/*4*/ float grade; /* ประกาศตัวแปร grade เป็นชนิดจำนวนจริง */
/*5*/ printf("+++ Grade +++\n"); /* แสดงข้อความ "+++ Grade +++" แจ้งผู้ใช้โปรแกรม แล้วขึ้นบรรทัดใหม่ */
/*6*/ printf("Input Score : "); /* แสดงข้อความ "Input Score : " เพื่อแจ้งให้ผู้ใช้โปรแกรมทราบว่า ต้องป้อนข้อมูลอะไร */
/*7*/ scanf("%d" , &score); /* รับค่าจำนวนเต็ม จากแป้นพิมพ์ นำไปเก็บไว้ในตัวแปร score เมื่อป้อนข้อมูลเสร็จแล้ว ต้องกดแป้น Enter เพื่อยืนยันข้อมูลและทำคำสั่งถัดไป */
/*8*/ if (score >= 80) /* ตรวจสอบ ค่า score มากกว่าหรือเท่ากับ 80 จริงหรือไม่ ถ้าจริง ทำคำสั่งหลังเงื่อนไข บรรทัดที่ 9 ถ้าเท็จ ทำคำสั่งบรรทัดที่ 10 */
/*9*/ grade = 4.00; /* เป็นคำสั่งกำหนดค่า โดยนำ 4.00 ไปเก็บไว้ในตัวแปร grade เสร็จแล้วให้ไปเริ่มทำคำสั่งบรรทัดที่ 18 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*10*/ else if (score >= 70) /* ตรวจสอบ ค่า score มากกว่าหรือเท่ากับ 70 จริงหรือไม่ ถ้าจริง ทำคำสั่งหลังเงื่อนไข บรรทัดที่ 11 ถ้าเท็จ ทำคำสั่งบรรทัดที่ 12 */
/*11*/ grade = 3.00; /* เป็นคำสั่งกำหนดค่า โดยนำ 3.00 ไปเก็บไว้ในตัวแปร grade เสร็จแล้วให้ไปเริ่มทำคำสั่งบรรทัดที่ 18 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*12*/ else if (score >= 60) /* ตรวจสอบ ค่า score มากกว่าหรือเท่ากับ 60 จริงหรือไม่ ถ้าจริง ทำคำสั่งหลังเงื่อนไข บรรทัดที่ 13 ถ้าเท็จ ทำคำสั่งบรรทัดที่ 14 */
/*13*/ grade = 2.00; /* เป็นคำสั่งกำหนดค่า โดยนำ 2.00 ไปเก็บไว้ในตัวแปร grade เสร็จแล้วให้ไปเริ่มทำคำสั่งบรรทัดที่ 18 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*14*/ else if (score >= 50) /* ตรวจสอบ ค่า score มากกว่าหรือเท่ากับ 50 จริงหรือไม่ ถ้าจริง ทำคำสั่งหลังเงื่อนไข บรรทัดที่ 15 ถ้าเท็จ ทำคำสั่งหลัง else บรรทัดที่ 17 */
/*15*/ grade = 1.00; /* เป็นคำสั่งกำหนดค่า โดยนำ 1.00 ไปเก็บไว้ในตัวแปร grade เสร็จแล้วให้ไปเริ่มทำคำสั่งบรรทัดที่ 18 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*16*/ else /* ทำเมื่อกรณีตรวจสอบเงื่อนไขบรรทัดที่ 14 เป็นเท็จ */
/*17*/ grade = 0.00; /* เป็นคำสั่งกำหนดค่า โดยนำ 0.00 ไปเก็บไว้ในตัวแปร grade เสร็จแล้วให้ไปเริ่มทำคำสั่งบรรทัดที่ 18 (มีคำสั่งย่อยคำสั่งเดียวไม่ต้องใส่ { } ก็ได้) */
/*18*/ printf("\nScore : %d -> Grade : %.2f" , score , grade); /* ขึ้นบรรทัดใหม่ 1 บรรทัด แล้วแสดงข้อความ "Score : %d -> Grade : %.2f" โดยแสดงค่า score ใน %d และแสดงค่า grade ใน %.2f เป็นทศนิยม 2 ตำแหน่ง */
/*19*/ return 0; /* คืนค่า 0 ให้ฟังก์ชัน main โปรแกรมทำงานถูกต้องสมบูรณ์ */
/*20*/ } /* สิ้นสุด block ของฟังก์ชัน main (สิ้นสุดโปรแกรม) */
   
ตัวอย่างผลการรันโปรแกรม