โครงสร้างควบคุม

โครงสร้างแบบทางเลือก (selection structure)

คำสั่งควบคุมแบบทางเลือก หรือ โครงสร้างแบบทางเลือก เป็นโครงสร้างที่ใช้สำหรับกำหนดทางเลือกการประมวลผลคำสั่ง โดยขึ้นอยู่กับเงื่อนไขทางเลือกที่เขียนอยู่ในรูปของนิพจน์เปรียบเทียบ (relational expression) หรือ นิพจน์ตรรกะ (boolean expression) ซึ่งใช้ตัวดำเนินการเปรียบเทียบ หรือตัวดำเนินการตรรกะเป็นตัวดำเนินการของพจน์

คำสั่งควบคุมแบบทางเลือก

คำสั่ง if และ if-else

คำสั่ง if

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

คำสั่ง if-else

รูปแบบของคำสั่ง if – else เป็นดังนี้
เงื่อนไขทางเลือก ที่เขียนอยู่ระหว่างเครื่องหมาย ( และ ) เป็นนิพจน์ใด ๆ ที่สามารถประเมินค่าได้
- ในกรณีที่ เงื่อนไขทางเลือก มีค่าเป็น จริง และไม่เท่ากับ 0 จะประมวลผลคำสั่ง 1
- ในกรณีที่ เงื่อนไขทางเลือก มีค่าเป็น เท็จ และเท่ากับ 0 จะประมวลผลคำสั่ง 2

คำสั่ง if-else เชิงซ้อน (Nested if)

คำสั่ง if – else เชิงซ้อน คือ คำสั่ง if – else ที่มีคำสั่ง if – else ซ้อนอยู่ในส่วน else ประโยคเงื่อนไขในลักษณะนี้ อาจสร้างความสับสนแก่ผู้เขียนโปรแกรมได้ จึงต้องมีความระมัดระวัง

รูปแบบของคำสั่ง if – else เชิงซ้อน เป็นดัง

คำสั่ง if – else เชิงซ้อนเป็นรูปแบบการทำงานแบบหลายทางเลือก โดยจะมีคำสั่งเพียงเดียวเท่านั้นที่จะถูกเลือกให้ประมวลผล ขึ้นอยู่กับว่า เงื่อนไขทางเลือก ใดเป็นจริง และในกรณีที่ไม่มี เงื่อนไขทางเลือก ใดเป็นจริงเลย คำสั่งn จะถูกประมวลผล

พิจารณาคำสั่ง if ในรูปแบบต่อไปนี้ ซึ่งมีคำสั่ง if – else ซ้อนอยู่ด้านใน

- ถ้าเงื่อนไขทางเลือก1 และ เงื่อนไขทางเลือก2 มีค่า จริง แล้วโปรแกรมจะประมวลผล คำสั่ง1 ก่อนที่จะประมวลผล คำสั่ง3

- ถ้า เงื่อนไขทางเลือก1 มีค่า จริง ขณะที่ เงื่อนไขทางเลือก2 มีค่าเท็จ แล้วโปรแกรมจะประมวลผล คำสั่ง2 ก่อนที่จะประมวลผล คำสั่ง3

- และถ้า เงื่อนไขทางเลือก1 มีค่า เท็จ แล้วโปรแกรมจะประมวลผล คำสั่ง3 เพียงคำสั่งเดียวเท่านั้น

นั่นคือ ในคำสั่ง if – else ( หรือคำสั่ง if – else เชิงซ้อน ) else จะถูกจับคู่กับ if ก่อนหน้าที่อยู่ใกล้ที่สุดเสมอ ซึ่งในที่นี้คือ if ( เงื่อนไขทางเลือก2 )

ดังนั้น ในกรณีที่ต้องการให้ คำสั่ง2 ถูกประมวลผล เงื่อนไขทางเลือก1 มีค่า เท็จ ก่อนที่จะประมวลผล คำสั่ง3 จะต้องเพิ่มเครื่องหมาย { และ } ตามรูปแบบด้านล่าง และในที่นี้ if ( เงื่อนไขทางเลือก2 ) จัดเป็นคำสั่ง if ที่ซ้อนอยู่ในคำสั่ง if – else ของ if ( เงื่อนไขทางเลือก1 )

คำสั่ง switch

รูปแบบของคำสั่ง switch เป็นดังนี้

นิพจน์ และ ค่าคงที่ ของนิพจน์ในแต่ละ case จะต้องเป็นชนิดจำนวนเต็ม และมีค่าไม่ซ้ำกัน

ถ้า นิพจน์ มีค่าเท่ากับ ค่าคงที่1 แล้ว คำสั่ง1 จะถูกประมวลผลเป็นลำดับแรก ตามด้วย คำสั่ง2 จนกระทั่งถึง คำสั่ง ของ default ตามลำดับ

ในกรณีที่ นิพจน์ มีค่าเท่ากับ ค่าคงที่2 การประมวลผลจะเริ่มต้นที่ คำสั่ง2 จนกระทั่งถึง คำสั่ง ของ default ตามลำดับ

คำสั่ง switch อาจไม่มีกรณี default ได้แต่ในกรณีที่มี default และ นิพจน์ มีค่าไม่ตรงกับ ค่าคงที่ ใดๆ เลย แล้ว คำสั่ง ของกรณี default จะเป็นเพียงคำสั่งเดียวที่ถูกประมวลผล

และในกรณีที่ไม่มี default และ นิพจน์ มีค่าไม่ตรงกับ ค่าคงที่ ใดๆจะไม่มีคำสั่งใดเลยที่ถูกประมวลผล

ในกรณีที่ต้องการให้คำสั่งของ case ใด case หนึ่งเท่านั้นถูกประมวลผล นักเขียนโปรแกรมจะต้องเพิ่ม คำสั่ง break เป็นคำสั่งสุดท้ายในแต่ละ case