Open top menu
วันอาทิตย์ที่ 23 สิงหาคม พ.ศ. 2558



คำสั่ง if else if

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

               ตัวอย่างที่ 3  
ปรแกรมการใช้งาน  nested - if  หรือ   if - else - if 
                     โจทย์ :  จงเขียนโปรแกรมตัดเกรด กำหนดให้รับค่าคะแนนผ่านทางแป้นพิมพ์ และแสดงผลเกรดผ่านทางจอภาพ  กำหนดเงื่อนไขการตัดเกรด ดังนี้
                      คะแนนระหว่าง  80  ถึง  100  ได้เกรด  4
                      คะแนนระหว่าง  60  ถึง    79  ได้เกรด  3
                      คะแนนระหว่าง  50  ถึง    59  ได้เกรด  2
                      คะแนนระหว่าง  40  ถึง    49  ได้เกรด  1
                      คะแนนระหว่าง    0  ถึง    39  ได้เกรด  0
                      จากโจทย์สามารถเขียนผังงาน (Flow chart) ได้ดังนี้
                  จากผังงานนำมาเขียนโปรแกรมได้ดังนี้
 


Source code
คำอธิบายโปรแกรม
1
2
3
4
5

6

7

8

#include <stdio.h> 
#include <conio.h> 
 main()
{
      float score;


      printf("Enter your score: ");
     

     scanf("%f", &score);




//
ประกาศตัวแปร score
   
เป็นชนิดจำนวนตัวเลขทศนิยม


// แสดงข้อความ Enter your score:


// รอรับคะแนนจากแป้นพิมพ์มาเก็บ
   
ที่ตัวแปร score
9

10
11

12
13

14
      if(score < 0 || score > 100){
        printf("Enter score 0 - 100 \n");
    }
else if(score >= 80){
          printf("Score = %.2f , grade: 4 \n", score);
    }

else if(score >= 60){
          printf("Score = %.2f , grade: 3 \n", score);
     }
      
else if(score >= 50){
          printf("Score = %.2f ,grade: 2 \n", score);
    }
// ตรวจสอบว่า score อยู่ระหว่าง 0-100   ใช่หรือไม่ ถ้าไม่ใช่แสดง Enter score 0 - 100

// ตรวจสอบว่า score >= 80
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 4 (%.2f =ทศนิยม2 ตำแหน่ง)

//
ตรวจสอบว่า score >= 60
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 3(%.2f =ทศนิยม2 ตำแหน่ง)

//
ตรวจสอบว่า score >= 50
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 2(%.2f =ทศนิยม2 ตำแหน่ง)
15
16

17
18
19
      else if(score >= 40){
          printf("Score = %.2f ,grade: 1 \n", score);
    }
else{
          printf("Score = %.2f ,grade: 0 \n", score);
    }
      getch();
 
}
// ตรวจสอบว่า score >= 40
   
ใช่หรือไม่? ถ้าใช่แสดงผลเกรด 1(%.2f =ทศนิยม2 ตำแหน่ง)


//
ถ้าไม่ใช่แสดงผลเกรด
0

      ผลที่ได้จากการ Run
                 ถ้าป้อนคะแนนอยู่ระหว่าง 80 - 100  จะได้เกรด 4 เช่น ถ้าป้อน  89


                 ถ้าป้อนคะแนนอยู่ระหว่าง  0 - 39  จะได้เกรด 0 เช่น ถ้าป้อน  35

แบบทดสอบ
คำสั่ง if else if
 โจทย์ :  จงเขียนโปรแกรมตัดเกรด กำหนดให้รับค่าคะแนนผ่านทางแป้นพิมพ์ และแสดงผลเกรดผ่านทางจอภาพ  กำหนดเงื่อนไขการตัดเกรด ดังนี้

                      คะแนนระหว่าง  80  ถึง  100  ได้เกรด  A

                      คะแนนระหว่าง  75  ถึง    79  ได้เกรด  B+


                      คะแนนระหว่าง  70 ถึง    74 ได้เกรด    B


                      คะแนนระหว่าง  65  ถึง    69  ได้เกรด  C+


                      คะแนนระหว่าง    60  ถึง    64  ได้เกรด  C


                          คะแนนระหว่าง    55 ถึง    59  ได้เกรด  D+

                     คะแนนระหว่าง    50 ถึง    54  ได้เกรด  D


                      คะแนนระหว่าง    0 ถึง    49  ได้เกรด   E