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

16
บบบ บบบบบบ บบบบบบบบ บบบบบ

Upload: -

Post on 10-Aug-2015

40 views

Category:

Education


0 download

TRANSCRIPT

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

บทท�� 9การทางานแบบม�ทาง

เล�อก

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

ประเภทของการท�างานแบบม�ทางเล�อก การทางานแบบเล�อกทาน��นสามารถแบ�งท�ศทางการ

ทางานของโปรแกรมได�ด�งน��1. การทางานแบบม�ทางเล�อกเด�ยว (Single

Selection)2. การทางานแบบสองทางเล�อก (Double

Selection)

เง��อนไข

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

สาหร�บการทางานแบบม�ทางเล�อกเด�ยวและแบบสองทางเล�อก จะต�องม�การตรวจสอบเง��อนไขเพ��อเป&นต�วพ�จารณาว�าจะทาโปรแกรมในท�ศทางใดต�อไป การตรวจสอบเง��อนไขน��น ผลล�พธ+ท��ได�จะเป&นค�าทางบ-ล�น ค�อ ม�ค�าเป&นไปได� 2 กรณ� ค�อเป&นจร�ง (true) หร�อเป&นเท.จ (false)

กรณ�การเล�อกทาแบบทางเล�อกเด�ยว ถ�าหากเง��อนไขเป&นจร�ง โปรแกรมจะทาช0ดคาส��งท��กาหนด แต�ถ�าหากเง��อนไขเป&นเท.จโปรแกรมจะไม�ทาช0ดคาส��ง ส�วนการเล�อกทาแบบสองทางเล�อก (ร-ป ข) ถ�าหากเง��อนไขเป&นจร�ง โปรแกรมจะทาช0ดคาส��งท�� 1 แต�ถ�าหากเง��อนไขเป&นเท.จโปรแกรมจะทาช0ดคาส��งท�� 2

ในส�วนของการตรวจสอบเง��อนไขน��น จะเป&นการเข�ยนน�พจน+ท��แสดงความส�มพ�นธ+ระหว�างต�วแปรก�บต�วแปร หร�อระหว�างต�วแปรก�บค�าคงท�� โดยจะนาต�วดาเน�นการมาใช�ซ2�งส�วนใหญ�แล�วจะเป&นต�วดาเน�นการเปร�ยบเท�ยบและดาเน�นการทางลอจ�กด�งท��ได�ศ2กษามาในบทท�� 3

สาหร�บคาอธ�บายท��ใช�ในการเล�อกทาจะใช�ในการเล�อกทาจะใช�คาว�า ถ�า “ ” , “แล�ว และ ม�ฉะน��นแล�ว เป&นคาเร��มต�นจากน��นจะตามด�วยเง��อนไขท��ใช�” “ ”ต�ดส�นใจ

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

การเข�ยนคำ�าอธ�บายโปรแกรมจากผ�งงานแบบม�ทางเล�อกถ�าหากม�ผ�งงานท��ม�การเล�อกทา ไม�ว�าจะเป&นแบบทางเด�ยวหร�อแบบ

สองทางแล�วต�องการเข�ยนคาอธ�บายการทางาน ส��งแรกท��ต�องกระทาค�อ พยายามแยกกระบวนการทางานท��งหมดออกจากผ�งงานเป&นส�วน ๆ ก�อน จากน��นให�พ�จารณาท�ศทางการทางานของโปรแกรมท�ละข��นตอน แล�วจ2งเข�ยนคาอธ�บายการทางานออกมา โดยอธ�บายการทางานควรม�หมายเลขบรรท�ดด�วย และหมายเลขน��ควรม�หมายเลขตามลาด�บของส�ญล�กษณ+ของผ�งงาน

ต�วอย�างจงเข�ยนผ�งงานและคาอธ�บายโปรแกรมท��ตรวจสอบอาย0 ถ�าหากอาย0

มากกว�า 25 ป7 ให�แสดงคาว�า เป&นผ-�ใหญ�แล�ว แต�ถ�าอาย0ไม�เก�น “ ” 25 ให�ทางานต�อไป

ว�ธ�ทา กาหนดให�ต�วแปร x เป&นอาย0ท��ร �บเข�าไป และแยกการทางานของโปรแกรมออกเป&นสองท�ศทาง ค�อท�ศทางท��เง��อนไขเป&นจร�ง จะเข�ยนผ�งงานและคาอธ�บายโปรแกรมได�ด�งน��

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

การเข�ยนซ!โดโคำ#ดสำ�าหร�บงานแบบม�ทางเล�อกจากท��ได�ศ2กษาการเข�ยนซ-โดโค�ดมาแล�วในบทท�� 7 จะ

พบว�าซ-โดโค�ดท��นามาใช�การเข�ยนโปรแกรมแบบเล�อกทาจะใช�คาว�า IF หร�อ IF-THEN-ELSE และ ENDIF ถ�าหากต�องการนามาเข�ยนแทนคาอธ�บายการทางานของโปรแกรมจะใช�คาว�า “IF” แทนคาอธ�บายว�า ถ�า ใช�คาว�า “ ” “THEN” แทนคาอธ�บายว�า แล�ว และใช�คาว�า “ ” “ELST” แทนคาอธ�บายว�า ม�ฉะน��น และจบประโยคการเล�อกทาด�วย “ ”ENDIF

จากป8ญหาในต�วอย�างท�� 9.2 ถ�าหากนาคาอธ�บายโปรแกรมในล�กษณะของข�อความมาเข�ยนเป&นซ-โดโค�ดจะเข�ยนได�ด�งน��

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

คำ�าอธ�บายโปรแกรม

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

ซ!โดโคำ#ด

สาหร�บกรณ�ท��เป&นการเล�อกทาแบบทางเด�ยวด�งต�ออย�างท�� 9.1 จะเห.นว�าในคาอธ�บายโปรแกรมจะไม�ม�คาว�า ม�“ฉะน��น เม��อนามาเข�ยนเป&นซ-โดโค�ดก.จะไม�ม�คาว�า ” “ELSE” ด�งน��นอธ�บายโปรแกรมในต�วอย�างท�� 9.1 สามารถเข�ยนเป&นซ-โดโค�ดได�ด�งน��

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

คำ�าอธ�บายโปรแกรม

ซ!โดโคำ#ด

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

การเข�ยนผ�งงานจากซ!โดโคำ#ดแบบม�ทางเล�อก ผ�งงานนอกจากจะเข�ยนข2�นมาจากการว�เคราะห+ป8ญหาแล�ว ย�งเข�ยนข2�นมาจากซ-โดโค�ดได�เช�นก�นสาหร�บกรณ�ท��โปรแกรมเป&นแบบม�ทางเล�อก ให�พยายามแยกประโยค IF ออกมาเป&นกล0�ม ๆ แล�ว พ�จารณาว�าถ�าเง��อนไขเป&นจร�งจะทาท�ศทางใด เง��อนไขเป&นเท.จจะทาท�ศทางใด

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

จากร-ป จะเห.นว�าการตรวจสอบเง��อนไขหล�งคาว�า IF จะนาไปเข�ยนในส��เหล��ยมขนมป7ยกป-น และนาช0ดคาส��งท��เป&นจร�งมาเข�ยนในส�ญล�กษณ+การประมวลผลเม��อเป&นจร�ง นาช0ดคาส��งหล�ง ELSE มาเข�ยนในส�ญล�กษณ+การประมวลผลเม��อเป&นเท.จ สาหร�บโปรแกรมท��ม�เง��อนไขการเล�อกทาซ�อนก�นก.ใช�ว�ธ�การแยกประโยค IF ออกมาเป&นกล0�มในล�กษณะเด�ยวก�น

การท�างานแบบม�ทางเล�อกหลายทางสาหร�บการทางานท��ม�ทางเล�อกหลายทางน��นสามารถ

เข�ยนประโยค IF ..THEN..ELSE มาซ�อนก�นได� แต�ถ�าหากม�ทางเล�อกมากข2�นจะทาให�การเข�ยนแบบ IF ด-แล�วซ�บซ�อนและไม�ค�อยสะดวก ด�งน��นจ2งม�การนาคาว�า “CASE” , “OF” และ “ENDCASE” มาใช� พ�จารณาร-ป

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

เม��อการทางานของระบบเข�าส-�เง��อนไขการเล�อกทา ระบบจะตรวจสอบว�าคงคงท��ท��ได�จากการตรวจสอบเง��อนไข (CASE) ถ�าหากทราบว�าม�ค�าเท�าก�บค�าคงท��หร�อ CASE ใด ก.จะกระโดดไปทาก�จกรรมท��อย-�ใน CASE น��น แต�ถ�าหากไม�เท�าก�บ CASE ใดเลยก.จะตรวจสอบ CASE ใหม� หร�อไม�ก.ไม�ทาก�จกรรมใดเลย

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

กรณ�ศ(กษาการท�างานแบบม�ทางเล�อกสาหร�บในห�วข�อน��จะแสดงต�วอย�างงานท��ม�การทางาน

แบบเล�อกทาเพ��อเป&นแนวทางในการเข�ยนโปรแกรมต�อไป

ต�วอย�าง จงเข�ยนโปรแกรมร�บเลขจานวนเต.ม แล�วให�คอมพ�วเตอร+แสดงค�าสมบ-รณ+ของเลขน��นออกมาก

ว�ธ�ท�า จากการว�เคราะห+ป8ญหาของโจทย+จะพบว�าข�อม-ลอ�นพ0ตค�อจานวนเต.ม เอาต+พ0ตก.เป&นเลขจานวนเต.มท��เป&นค�าส�มบ-รณ+ของเลขน��น สาหร�บว�ธ�การประมวลผลทาโดยตรวจสอบว�าเลขท��ร �บเข�ามาน��นม�ค�ามากกว�า 0 หร�อไม� ถ�ามากกว�าให�แสดงเลขน��น ถ�าน�อยกว�าให�ทาเป&นค�าบวกโดยนาค�า -1 ไปค-ณ

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

สาหร�บการตรวจสอบความถ-กต�องของข��นตอนการทางาน สามารถทาโดยการสมม0ต�ค�าต�วแปรข2�นมาแล�วทดลองแทนค�าด�งข��นตอนต�อไปน��1 .สร�างต�วเลขทดสอบทางอ�นพ0ต

2. ลองค�ดคาตอบการประมวลผลด�วยตนเองªÂ¦� � o°¤¼»Â¦� � � � o°¤¼» É °� � � � � char_1 b a char_2 g s char_3 k z

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

3. สร�างตารางข2�นมาแสดงการทางานและด-ค�าต�วแปรท�ละข��นตอน

Ê °� � � � char_1 char_2 char_3 Temp o°¤¼»Â¦� � � �

1 k b g 2 b k k 3 g k k 4 g b 5  ¨� � �  ¨� � �  ¨� � �

o°¤¼» É °� � � � � 1 z s a

2 s z z 3 a z z

4 a s 5  ¨� � �  ¨� � �  ¨� � �