บทที่ 4
- 3. 1. คาสั่ง if-else เชิงซ้อน
คาสั่ง if - else เชิงซ้อน คือ คาสั่ง if - else ที่มีคาสั่ง if - else ซ้อนอยู่ใน
ส่วน else
ซึ่งมีรูปแบบดังนี้
- 5. คาสั่ง if - else เชิงซ้อนเป็นรูปแบบการทางานแบบหลายทางเลือก โดย
จะมีคาสั่งเพียง
คาสั่งเดียวเท่านั้นที่จะถูกเลือกให้ประมวลผล ขึ้นอยู่กับว่า เงื่อนไขทางเลือก
ใดเป็นจริง และในกรณีที่
ไม่มี เงื่อนไขทางเลือก ใดเป็นจริงเลย คาสั่ง n จะถูกประมวลผล
คาสั่ง 1, คาสั่ง 2, คาสั่ง 3, …, คาสั่ง n อาจเป็นคาสั่งอย่างง่ายหรือคาสั่ง
เชิงประกอบ
- 8. พิจารณาค่าของตัวแปร y สาหรับโปรแกรมข้างต้นเป็น 3 กรณี ดังนี้
กรณีที่1 ถ้า y มีค่าเท่ากับ 100 จะได้ว่านิพจน์ y > TARGET มีค่าเป็นจริง แล้วฟังก์ชัน
Printf ( ) ในบรรทัดที่ 13 จะถูกประมวลผล
กรณีที่ 2 ถ้า y มีค่าเท่ากับ 9 จะได้ว่านิพจน์ y > TARGET มีค่าเป็นเท็จ และนิพจน์
y < TARGET มีค่าเป็นจริงแล้ว ฟังก์ชัน printf ( ) ในบรรทัดที่15 จะถูกประมวลผล
กรณีที่3 ถ้า y มีค่าเท่ากับ 25 จะได้ว่านิพจน์ y > TARGET และนิพจน์ y <
TARGET
มีค่าเป็นเท็จทั้งคู่ ดังนั้น ฟังก์ชัน printf ( ) ในบรรทัดที่17 จะถูกประมวลผล
- 9. พิจารณาคาสั่ง if ในรูปแบบต่อไปนี้ ซึ่งมีคาสั่ง if - else ซ้อนอูู่้้านใน
ถ้าเงื่อนไขทางเลือก 1 และเงื่อนไขทางเลือก 2 มีค่าจริง แล้วโปรแกรมจะประมวลผล
คาสั่ง 1 ก่อนที่จะประมวลผล คาสั่ง 3
ถ้าเงื่อนไขทางเลือก 1 มีค่าจริง ขณะที่เงื่อนไขทางเลือก 2 มีค่าเท็จ แล้วโปรแกรมจะ
ประมวลผล คาสั่ง 2 ก่อนที่จะประมวลผล คาสั่ง 3
และถ้าเงื่อนไขทางเลือก 1 มีค่าเท็จ แล้วโปรแกรมจะประมวลผล คาสั่ง 3 เพียงคาสั่งเดียว
เท่านั้น
- 10. นั่นคือ ในคาสั่ง if - else (หรือคาสั่ง if - else เชิงซ้อน ) else จะถูกจับคู่กับ if ก่อน
หน้าที่
อยู่ใกล้ที่สุด เสมอ ซึ่งในที่นี้คือ if ( เงื่อนไขทางเลือก 2 )
ดังนั้น ในกรณีที่ต้องการให้ คาสั่ง 2 ถูกประมวลผล เงื่อนไขทางเลือก 1 มีค่าเท็จก่อนที่จะ
ประมวลผล คาสั่ง 3 จะต้องเพิ่มเครื่องหมาย {และ} ตามรูปแบบด้านล่าง และในที่ if ( เงื่อนไข
ทางเลือก 2 ) จัดเป็นคาสั่ง if ที่ซ้อนอยู่ในคาสั่ง if - else ของ if ( เงื่อนไขทางเลือก 1 )
- 12. เมื่อคอมไพล์โปรแกรมจะพบข้อผิดพลาดในบรรทัดที่15 เนื่องจากไม่มีคาสั่ง if ใดที่อียู่
ก่อน
บรรทัดที่15 จะใช้คู่กับ else นี้ได้ นั่นคือ คาสั่ง if ในบรรทัดที่12 จะใช้คู่กับ else
ในบรรทัด
ที่ 18 และคาสั่ง if ในบรรทัดที่13 เป็นคาสั่ง if ที่ไม่มีelse
ในการแก้ไขโปรแกรม Beware.cpp ให้ถูกต้อง นักเขียนโปรแกรมจะต้องลบ
เครื่องหมาย {
และ } ในบรรทัดที่ 13 และ 17 ตามลาดับ เพื่อให้ else ในบรรทัดที่15 ใช้คู่กับ if ใน
บรรทัดที่13
ได้อย่างถูกต้อง
- 15. นิพจน์และค่าคงที่ของนิพจน์ในแต่ละ case จะต้องเป็นชนิดจานวนเต็ม และมีค่า
ไม่ซ้ากัน
ถ้า นิพจน์มีค่าเท่ากับ ค่าคงที่ 1 แล้ว คาสั่ง1 จะถูกประมวลผลเป็นลาดับแรก ตาม
ด้วย คาสั่ง2
จนกระทั่งถึง คาสั่ง ของ default ตามลาดับ
ในกรณีที่นิพจน์ มีค่าเท่ากับ ค่าคงที่ 2 การประมวลผลจะเริ่มต้นที่คาสั่ง2
จนกระทั่งถึง คาสั่ง
ของ default ตามลาดับ
คาสั่ง switch อาจไม่มี default ได้แต่ในกรณีที่มีdefault นิพจน์มีค่าไม่
ตรงกับ ค่าคงที่ใดๆ เลยแล้ว คาสั่ง ของกรณี default จะเป็นเพียงคา สั่งเดียว
ที่ถูกประมวลผลและในกรณีที่ไม่มีdefault และ นิพจน์มีค่าไม่ตรงกับ ค่าคงที่
ใดๆจะไม่มีคาสั่งใดเลยที่ถูกประมวลผล
- 17. ผลลัพธ์ คือ
ผลลัพธ์ข้างต้นเป็นผลจากการป้อนอักขระ 5 ให้โปรแกรม นั้น คือ ในกรณีที่อักขระที่รับ
ค่าเข้ามามีค่าเป็น 1 – 9 โปรแกรมจะประมวลผลฟังก์ชัน printf () ของ case ที่ตรงกัน
และตรงกัน และน้อยกว่าจนครบทุกกรณี และในกรณีที่อักขระที่รับเข้ามาเป็นอักขระอื่น ๆ
โปรแกรมจะประมวลผลฟังก์ชัน Printf () ในกรณี default เพียงเท่านั้น
ในกรณีที่ต้องการให้คา สั่งของ case ใด case หนึ่งเท่านั้นถูกประมวลผล นักเขียนโปรแกรม
จะต้องเพิ่มคาสั่ง break เป็นคาสั่งสุดท้ายในแต่ละ case