คำสั่งควบคุม ภาษาซี 3

ภาษา c

บทความนี้ยังอยู่ในเรื่องของ คำสั่งควบคุม( Control Statement )เป็นบทที่ต่อจาก บทความ คำสั่งควบคุม ภาษาซี 2 นะครับคราวนี้จะมาพูดถึงการใช้คำสั่ง if ซ้อน if (nested if) ครับผม เอาละเรามาดูกันดีกว่าว่ามันเป็นยังไง

การใช้คำสั่ง if ซ้อน if ( nested if )

     

    if(เงื่อนไข){
           คำสั่งที่1;
      }
     else if{
       คำสั่งที่ 2;
      }
     else if{
       คำสั่งที่ 3;
      }
     else{
       คำสั่งที่ 4;
      }
    คำสังที่ 5;

รูปแบบ
     

การใช้คำสั่ง if ซ้อน if นี้ เป็นวิธีที่ช่วยให้การตรวจสอบเงื่อนไขสมบูรณ์มากยิ่งขึ้น เนื่อจาก สามารถตรวจสอบได้หลายเงื่อนไข จากรูป แบบการใช้งานและแผนฝังความคิดด้านล่างนั้น ซึ่งเป็นตัวอย่างการใช้ if ซ้อน if รูปแบบที่หนึ่ง หากตรวจสอบเงื่อนไขที่ 1 แล้วพบว่าเป็นจริง ก็ จะทำงานตามคำสั่งที่ 1 แต่ถ้าเงื่อนไขที่ 1 เป็นเท็จ ก็จะมาทำการตรวจสอลเงื่อนไขถัดไปก็คือ เงื่อนไขที่2 ซึ่งหากเงื่อนไขที่ 2 เป็นจริงก็จะทำคำสั่งที2 แต่ถ้าเงื่อนไขที่ 2 เป็นเท็จ ก็จะมาทำการตรวจสอลเงื่อนไขถัดไปก็คือ เงื่อนไขที่3 ซึ่งหากเงื่อนไขที่ 3 เป็นจริงก็จะทำคำสั่งที3แต่ถ้าเงื่อนไขที่ 3 เป็นเท็จ  ก็จะมาทำเงื่อนไขที่4 ทันทีเพราะไม่เงื่อนไขให้ตรวจสอบแล้ว และเมื่อทำการตรวจสอบเงื่อนไขและประมวลผลตามคำสั่งของ nested if เรียบร้อยแล้วก็จะทำงานในคำสั่งถัดลงไป ในที่นี้คือคำสั่งที่5

หากอ่านแล้วงง เรามาดูภาพกันดีกว่า

ภาษา c

ดีขึ้นใหมครับ

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

โจทย์ จงเขียนโปรแกรม รับคะแนนจากการสอบ วิชาcompro แล้วมาแสดงเกรด โดยกำหนดให้ เกรด A มีคะแนนตั้งแต่ 90 ขึ้นไป B 70 ขึ้นไป C ตั้งแต่ 60 ขึ้นไป D ก็ 50 ขึ้นไป ที่เหลือนอกจากนั้นก็ให้ F ครับ

มาเริ่มกันที่เขียนโดย แบบ if – else

1:   #include<stdio.h>
2:    
4:   main(){
5:      int points;
6:        printf("Please enter points ?:");
7:         scanf("%d",&points);
8:        
9:          if(points >= 90){
10:                 printf("C language programming subject\n");
11:                 printf("You get grade A\n");
12:        }else
13:                  if(points >=70)
14:                  printf("You get grade B\n");
15:                    else
16:                      if(points >=60)
17:                      printf("You get grade C\n");
18:                         else
19:                             if(points >=50) 
20:                             printf("You get grade D\n");
21:                               else
22:                             printf("You get grade F\n");
23:          printf(" See you again! Next course");
24:   }

โหโคตะระยาว ยุ่งเหยิง ดูอยาก แถม งงอีกต่างหากใช่ประครับ งันเรามาดูในอีกรูปแบบ

เขียนในรูปแบบ nested if

1:   #include<stdio.h>
2:    
4:   main(){
5:      int points;
6:        printf("Please enter points ?:");
7:         scanf("%d",&points);
8:        
9:          if(points >= 90){
10:                 printf("C language programming subject\n");
11:                 printf("You get grade A\n");
12:        } else if(points >=70)
13:                 printf("You get grade B\n");
14:          else if(points >=60)
15:                 printf("You get grade C\n");
16:          else  if(points >=50)
17:                 printf("You get grade D\n");
18:          else
19:                 printf("You get grade F\n");
20:          printf(" See you again! Next course");
21:        }

ฮัดชา ดูดีกว่า ง่ายกว่า  คือผมอยากให้ทุกท่านเข้าใจว่า ทุกคำสังมันมีประโยชน์หมดนั้นละครับแต่เราควรเลือกใช้ให้เหมาะสมกับแต่ละโปรแกรม งันเอาเป็นว่าเรามาดูผลการรันโปรแกรมกันดีกว่านะครับ

รันครั้งที่ 1

 
ผลลัพธ์โปรแกรม
 
     Please enter points ?:95
     C language programming subject
     You get grade A
     See you again! Next course

รันครั้งที่2

 
ผลลัพธ์โปรแกรม
 
     Please enter points ?:51
     You get grade D
     See you again! Next course

รันครั้งที่3

 
ผลลัพธ์โปรแกรม
 
     Please enter points ?:40
     You get grade F
     See you again! Next course

if-else ยังมีอีกรูปแบบให้ใช้กันนะครับ เรียกกันว่า รูปแบบย่อเรามาดูกันเถอะว่ามันเป็นจะใด

คำสั่งเงือนไข if-else แบบย่อ

รูปแบบคำสั่งเงื่อนไข if-else แบบย่อ เป็นแบบนี้

     

    นิพจน์เงื่อนไข ? นิพจน์ที่ 1 : นิพจน์ที่ 2

รูปแบบ
     

การทำงานของมันจะทำการพิจารณาจากนิพจน์ที่เป็นเงื่อนไขที่อยู่ทางซ้ายสุด ซึ่งหากพิจารณาแล้วเป็นจริง จะได้ผลลัพธ์เป็นค่าของนิพจน์ที่ 1 แต่หากเป็นเท็จจะได้ผลลัพธ์เป็นค่าของนิพจน์ ที่2 เช่น

  • (3>4)? 3:4 อธิบาย 3>4 เป็นเท็จ ดั้งนั้นผลลัพธ์ที่ได้คือ 4
  • (4>3)? 3:4 อธิบาย 4>3 เป็นจริง ดั้งนั้นผลลัพธ์ที่ได้คือ 3

เรามาดูตัวอย่างโปรแกรมกันเถอะครับ

1:   #include<stdio.h>
2:    
4:   main(){
5:            int  num1, num2, max;
6:            printf("Please enter number1 :");
7:            scanf("%d",&num1);
8:            printf("Please enter number2 :");
9:            scanf("%d",&num2);
10:            max=(num1>num2) ? num1:num2;
11:            printf("Max value is %d",max);
12:        }

เห็นที่ผมเน่นไว้ปะครับนั้นคือการใช้ if-else แบบย่อนั้นละครับละมันก็เทียเท่ากับ

  if(num1>num2)
         printf("Max value is %d ",num1);
      else
         printf("Max value is %d ",num2);
เลยนะครับ เราก็สามารถประยัดลงไปได้สองบรรณทัด เอาเป็นว่าเรามาดูการรันโปรแกรมกันดีกว่า

รันครั้งที่1

 
ผลลัพธ์โปรแกรม
 
     Please enter number1 :40
     Please enter number2 :100
     Max value is 100

รันครั้งที่2

 
ผลลัพธ์โปรแกรม
 
     Please enter number1 :400
     Please enter number2 :100
     Max value is 400

อธิบายโปรแกรม  โปรแกรมนี้จะทำการรับตัวเลขชนิด int เข้ามา 2 ตัวแล้วทำเปรียบเทียบหาค่าที่สูงสุดแสดงออกมาครับ

เอาละงันผมขอจบเพียงเท่านี้ก่อนนะครับ ไว้ติดตามอ่านต่อที่  คำสั่งควบคุม ภาษาซี 4 สุดท้ายนี้มีอะไรไม่เข้าใจก็สอบถามได้เลยนะครับ

0 ความคิดเห็น:

แสดงความคิดเห็น