บทความนี้ยังอยู่ในเรื่องของ คำสั่งควบคุม( Control Statement )เป็นบทที่ต่อจาก บทความ คำสั่งควบคุม ภาษาซี 2 นะครับคราวนี้จะมาพูดถึงการใช้คำสั่ง if ซ้อน if (nested if) ครับผม เอาละเรามาดูกันดีกว่าว่ามันเป็นยังไง
การใช้คำสั่ง if ซ้อน if ( nested if )
if(เงื่อนไข){ | |||
รูปแบบ | |||
การใช้คำสั่ง if ซ้อน if นี้ เป็นวิธีที่ช่วยให้การตรวจสอบเงื่อนไขสมบูรณ์มากยิ่งขึ้น เนื่อจาก สามารถตรวจสอบได้หลายเงื่อนไข จากรูป แบบการใช้งานและแผนฝังความคิดด้านล่างนั้น ซึ่งเป็นตัวอย่างการใช้ if ซ้อน if รูปแบบที่หนึ่ง หากตรวจสอบเงื่อนไขที่ 1 แล้วพบว่าเป็นจริง ก็ จะทำงานตามคำสั่งที่ 1 แต่ถ้าเงื่อนไขที่ 1 เป็นเท็จ ก็จะมาทำการตรวจสอลเงื่อนไขถัดไปก็คือ เงื่อนไขที่2 ซึ่งหากเงื่อนไขที่ 2 เป็นจริงก็จะทำคำสั่งที2 แต่ถ้าเงื่อนไขที่ 2 เป็นเท็จ ก็จะมาทำการตรวจสอลเงื่อนไขถัดไปก็คือ เงื่อนไขที่3 ซึ่งหากเงื่อนไขที่ 3 เป็นจริงก็จะทำคำสั่งที3แต่ถ้าเงื่อนไขที่ 3 เป็นเท็จ ก็จะมาทำเงื่อนไขที่4 ทันทีเพราะไม่เงื่อนไขให้ตรวจสอบแล้ว และเมื่อทำการตรวจสอบเงื่อนไขและประมวลผลตามคำสั่งของ nested if เรียบร้อยแล้วก็จะทำงานในคำสั่งถัดลงไป ในที่นี้คือคำสั่งที่5
หากอ่านแล้วงง เรามาดูภาพกันดีกว่า
ดีขึ้นใหมครับ
งันเดียวผมจะแสดงตัวอย่างสองโปรแกรมโปรแกรมนี้จะทำงานเหมือนกันและด้ผลลัพธ์เหมือนกัน แต่จะให้ดูวิธีเขียนโปรแกรมนะครับ
โจทย์ จงเขียนโปรแกรม รับคะแนนจากการสอบ วิชา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 ความคิดเห็น:
แสดงความคิดเห็น