บทที่ 9
การทางานแบบมีทางเลือก
ประเภทของการทางานแบบมีทางเลือก
การทางานแบบเลือกทานั้นสามารถแบ่งทิศทางการทางานของโปรแกรมได้
ดังนี้
1. การทางานแบบมีทางเลือกเดียว (Single Selection)
2. การทางานแบบสองทางเลือก (Double Selection)
เงื่อนไข
สาหรับการทางานแบบมีทางเลือกเดียวและแบบสองทางเลือก จะต้องมีการ
ตรวจสอบเงื่อนไขเพื่อเป็นตัวพิจารณาว่าจะทาโปรแกรมในทิศทางใดต่อไป การ
ตรวจสอบเงื่อนไขนั้น ผลลัพธ์ที่ได้จะเป็นค่าทางบูลีน คือ มีค่าเป็นไปได้ 2 กรณี คือ
เป็นจริง (true) หรือเป็นเท็จ (false)
กรณีการเลือกทาแบบทางเลือกเดียว ถ้าหากเงื่อนไขเป็นจริง โปรแกรมจะทา
ชุดคาสั่งที่กาหนด แต่ถ้าหากเงื่อนไขเป็นเท็จโปรแกรมจะไม่ทาชุดคาสั่ง ส่วนการเลือก
ทาแบบสองทางเลือก (รูป ข) ถ้าหากเงื่อนไขเป็นจริง โปรแกรมจะทาชุดคาสั่งที่ 1
แต่ถ้าหากเงื่อนไขเป็นเท็จโปรแกรมจะทาชุดคาสั่งที่ 2
ในส่วนของการตรวจสอบเงื่อนไขนั้น จะเป็นการเขียนนิพจน์ที่แสดง
ความสัมพันธ์ระหว่างตัวแปรกับตัวแปร หรือระหว่างตัวแปรกับค่าคงที่ โดยจะนาตัว
ดาเนินการมาใช้ซึ่งส่วนใหญ่แล้วจะเป็นตัวดาเนินการเปรียบเทียบและดาเนินการทาง
ลอจิกดังที่ได้ศึกษามาในบทที่ 3
สาหรับคาอธิบายที่ใช้ในการเลือกทาจะใช้ในการเลือกทาจะใช้คาว่า “ถ้า” ,
“แล้ว” และ “มิฉะนั้นแล้ว” เป็นคาเริ่มต้นจากนั้นจะตามด้วยเงื่อนไขที่ใช้ตัดสินใจ
การเขียนคาอธิบายโปรแกรมจากผังงานแบบมีทางเลือก
ถ้าหากมีผังงานที่มีการเลือกทา ไม่ว่าจะเป็นแบบทางเดียวหรือแบบสองทาง
แล้วต้องการเขียนคาอธิบายการทางาน สิ่งแรกที่ต้องกระทาคือ พยายามแยก
กระบวนการทางานทั้งหมดออกจากผังงานเป็นส่วน ๆ ก่อน จากนั้นให้พิจารณาทิศ
ทางการทางานของโปรแกรมทีละขั้นตอน แล้วจึงเขียนคาอธิบายการทางานออกมา
โดยอธิบายการทางานควรมีหมายเลขบรรทัดด้วย และหมายเลขนี้ควรมีหมายเลข
ตามลาดับของสัญลักษณ์ของผังงาน
ตัวอย่าง
จงเขียนผังงานและคาอธิบายโปรแกรมที่ตรวจสอบอายุ ถ้าหากอายุมากกว่า
25 ปี ให้แสดงคาว่า “เป็นผู้ใหญ่แล้ว” แต่ถ้าอายุไม่เกิน 25 ให้ทางานต่อไป
วิธีทา กาหนดให้ตัวแปร x เป็นอายุที่รับเข้าไป และแยกการทางานของ
โปรแกรมออกเป็นสองทิศทาง คือทิศทางที่เงื่อนไขเป็นจริง จะเขียนผังงานและ
คาอธิบายโปรแกรมได้ดังนี้
การเขียนซูโดโค้ดสาหรับงานแบบมีทางเลือก
จากที่ได้ศึกษาการเขียนซูโดโค้ดมาแล้วในบทที่ 7 จะพบว่าซูโดโค้ดที่
นามาใช้การเขียนโปรแกรมแบบเลือกทาจะใช้คาว่า IF หรือ IF-THEN-ELSE และ
ENDIF ถ้าหากต้องการนามาเขียนแทนคาอธิบายการทางานของโปรแกรมจะใช้คาว่า
“IF” แทนคาอธิบายว่า “ถ้า” ใช้คาว่า “THEN” แทนคาอธิบายว่า “แล้ว” และใช้คาว่า
“ELST” แทนคาอธิบายว่า “มิฉะนั้น” และจบประโยคการเลือกทาด้วย ENDIF
จากปัญหาในตัวอย่างที่ 9.2 ถ้าหากนาคาอธิบายโปรแกรมในลักษณะของ
ข้อความมาเขียนเป็น
ซูโดโค้ดจะเขียนได้ดังนี้
คาอธิบายโปรแกรม
ซูโดโค้ด
สาหรับกรณีที่เป็นการเลือกทาแบบทางเดียวดังต่ออย่างที่ 9.1 จะเห็นว่าใน
คาอธิบายโปรแกรมจะไม่มีคาว่า “มิฉะนั้น” เมื่อนามาเขียนเป็นซูโดโค้ดก็จะไม่มีคาว่า
“ELSE” ดังนั้นอธิบายโปรแกรมในตัวอย่างที่ 9.1 สามารถเขียนเป็นซูโดโค้ดได้ดังนี้
คาอธิบายโปรแกรม
ซูโดโค้ด
การเขียนผังงานจากซูโดโค้ดแบบมีทางเลือก
ผังงานนอกจากจะเขียนขึ้นมาจากการวิเคราะห์ปัญหาแล้ว ยังเขียนขึ้นมา
จากซูโดโค้ดได้เช่นกันสาหรับกรณีที่โปรแกรมเป็นแบบมีทางเลือก ให้พยายามแยก
ประโยค IF ออกมาเป็นกลุ่ม ๆ แล้ว พิจารณาว่าถ้าเงื่อนไขเป็นจริงจะทาทิศทางใด
เงื่อนไขเป็นเท็จจะทาทิศทางใด
จากรูป จะเห็นว่าการตรวจสอบเงื่อนไขหลังคาว่า IF จะนาไปเขียนใน
สี่เหลี่ยมขนมปียกปูน และนาชุดคาสั่งที่เป็นจริงมาเขียนในสัญลักษณ์การประมวลผล
เมื่อเป็นจริง นาชุดคาสั่งหลัง ELSE มาเขียนในสัญลักษณ์การประมวลผลเมื่อเป็นเท็จ
สาหรับโปรแกรมที่มีเงื่อนไขการเลือกทาซ้อนกันก็ใช้วิธีการแยกประโยค IF ออกมา
เป็นกลุ่มในลักษณะเดียวกัน
การทางานแบบมีทางเลือกหลายทาง
สาหรับการทางานที่มีทางเลือกหลายทางนั้นสามารถเขียนประโยค IF
..THEN..ELSE มาซ้อนกันได้ แต่ถ้าหากมีทางเลือกมากขึ้นจะทาให้การเขียนแบบ IF
ดูแล้วซับซ้อนและไม่ค่อยสะดวก ดังนั้นจึงมีการนาคาว่า “CASE” , “OF” และ
“ENDCASE” มาใช้ พิจารณารูป
เมื่อการทางานของระบบเข้าสู่เงื่อนไขการเลือกทา ระบบจะตรวจสอบว่า
คงคงที่ที่ได้จากการตรวจสอบเงื่อนไข (CASE) ถ้าหากทราบว่ามีค่าเท่ากับค่าคงที่
หรือ CASE ใด ก็จะกระโดดไปทากิจกรรมที่อยู่ใน CASE นั้น แต่ถ้าหากไม่เท่ากับ
CASE ใดเลยก็จะตรวจสอบ CASE ใหม่ หรือไม่ก็ไม่ทากิจกรรมใดเลย
กรณีศึกษาการทางานแบบมีทางเลือก
สาหรับในหัวข้อนี้จะแสดงตัวอย่างงานที่มีการทางานแบบเลือกทาเพื่อเป็น
แนวทางในการเขียนโปรแกรมต่อไป
ตัวอย่าง
จงเขียนโปรแกรมรับเลขจานวนเต็ม แล้วให้คอมพิวเตอร์แสดงค่าสมบูรณ์
ของเลขนั้นออกมาก
วิธีทา จากการวิเคราะห์ปัญหาของโจทย์จะพบว่าข้อมูลอินพุตคือจานวน
เต็ม เอาต์พุตก็เป็นเลขจานวนเต็มที่เป็นค่าสัมบูรณ์ของเลขนั้น สาหรับวิธีการ
ประมวลผลทาโดยตรวจสอบว่าเลขที่รับเข้ามานั้นมีค่ามากกว่า 0 หรือไม่ ถ้ามากกว่า
ให้แสดงเลขนั้น ถ้าน้อยกว่าให้ทาเป็นค่าบวกโดยนาค่า -1 ไปคูณ
สาหรับการตรวจสอบความถูกต้องของขั้นตอนการทางาน สามารถทาโดย
การสมมุติค่าตัวแปรขึ้นมาแล้วทดลองแทนค่าดังขั้นตอนต่อไปนี้
1. สร้างตัวเลขทดสอบทางอินพุต
2. ลองคิดคาตอบการประมวลผลด้วยตนเอง
char_1 b a
char_2 g s
char_3 k z
3. สร้างตารางขึ้นมาแสดงการทางานและดูค่าตัวแปรทีละขั้นตอน
char_1 char_2 char_3 Temp
ขอ
1 k b g
2 b k k
3 g k k
4 g b
5 ง ง ง
1 z s a
2 s z z
3 a z z
4 a s
5 ง ง ง

บทที่ 9 การทำงานแบบมีทางเลือก