หลักการแก้ปัญหา
TRANSCRIPT
หลักการแกปญหา
กับภาษาคอมพิวเตอร รายวิชา ง40102 หลักการแกปญหาและการโปรแกรม
1.หลักการแกปญหา
ในชีวิตประจําวันทุกคนตองเคยพบกับปญหาตางๆ ไมวาจะเปนปญหาดานการเรียน การงาน การเงิน หรือแมแตการเลนเกม เมื่อพบกับปญหา แตละคนมีวิธีที่จะจัดการหรือแกปญหาเหลานั้นแตกตางกันไป ซึ่งแตละวิธีการอาจใหผลลัพธที่เหมือนหรือแตกตางกันเล็กนอย ทั้งนี้ข้ึนอยูกับความรู ความสามารถ และประสบการณของบุคคลผูนั้น อยางไรก็ตาม หากเรานําวิธีการแกปญหาตางวิธีนั้นมาวิเคราะหใหดี จะพบวาสามารถสรุปวิธีการเหลานั้นเปนทฤษฎีซึ่งมีรูปแบบที่แนนอนได และบางครั้งตองอาศัยการเรียนรูในระดับสูงเพ่ือแกปญหาบางอยางใหสมบูรณแบบ แตกอนที่เราจะศึกษาตอไป ลองพิจารณาปญหาตอไปนี ้
ตัวอยางที่ 1 เกมทายใจ
คือเกมใหผูเลนทายตัวเลข 3 ตัว ในการเลนเกมตองใชผูเลน 2 คน คนที่หนึ่งคือ ผูกําหนด เปนคนกําหนดเลข 3 ตัวที่ไมซ้ํากัน โดยเลือกจากกลุมตัวเลข 1-9 และอีกคนหนึ่งคือผูทาย เปนผูทายตัวเลข 3 ตัวที่ไมซ้ํากันที่ผูกําหนดไดกําหนดไวแลว หลังจากที่ผูทายทายเลขแตละครั้ง ผูกําหนดตองใหรายละเอียดวาตัวเลขทีท่ายมานั้นถูกตองก่ีตัว และในกรณีที่ตัวเลขที่ทายมาถูกตําแหนงดวยก็ตอง
บอกวาถูกตําแหนงก่ีตัว เชน ถาตัวเลขที่กําหนดไวเปน 815 และผูทายทายวา 123 ผูกําหนดตองแจงวาตัวเลขที่ทายนั้นถูก 1 ตัว และไมมีตัวใดถูกตําแหนง ตารางที่ 1 เปนตารางแสดงขอมูลการเลนเกม
ตารางที่ 1 ขอมูลการเลนเกมทายใจ
เลขที่ทาย จํานวนตัวเลขที่ถูก จํานวนตําแหนงที่ถูก 123
415
425
416
715
815
1
2
1
1
2
3
-
2
1
1
2
3
จะเห็นวาการแกปญหาดังกลาวขางตน นอกจากจะใชวิธีลองผิดลองถูกในการทายครั้งแรกๆ แลวยังมีการใชเหตุผลประกอบการแกปญหาซึ่งเราเรียกวิธีการดังกลาววา “วิธีขจัด” (method of elimination) คือ จะแยกขอมูลออกเปนกรณีที่เปนไปไมไดทิ้ง จนเหลือกรณีที่เปนไปได รูปแบบของการใชเหตุผลประกอบการแกปญหาอาจแตกตางกันข้ึนอยูกับเงื่อนไข ในบางปญหาอาจจะขจัดใหเหลือกรณีเดียวไมได แตอาจจะทําใหเหลือกรณีนอยที่สุด
นอกจากวิธีการแกปญหาที่ยกตัวอยางมาซึ่งไดแก วิธีการลองผิดลองถูก การใชเหตุผล การใชวิธีขจัด ยังมีวิธีการแกปญหาอีกมากมายที่ผูแกปญหาสามารถเลือกใชใหเขากับตัวปญหาและประสบการณของผูแกปญหาเอง แตอยางไรก็ตาม วิธีการเหลานั้นลวนมีข้ันตอนที่คลายคลึงกัน และจากการศึกษาพฤติกรรมในการเรียนรูและแกปญหาของมนุษยพบวา โดยปกติมนุษยมีกระบวนการในการแกปญหา ซึ่งประกอบดวย 4 ข้ันตอน ดังนี ้
การวิเคราะหและกําหนดรายละเอียดของปญหา
การวิเคราะหและกําหนดรายละเอียดของปญหา (State the problem) ข้ันตอนนี้เปนข้ันตอนแรกสุดกอนที่จะลงมือแกปญหา แตผูแกปญหามักจะมองขามความสําคัญของข้ันตอนนี้อยูเสมอ จุดประสงคของข้ันตอนนี้ คือการทําความเขาใจกับปญหาเพ่ือแยกใหออกวาขอมูลที่กําหนดมาในปญหาหรือเงื่อนไขของปญหาคืออะไร และสิ่งที่ตองการคืออะไร อีกทั้งวิธีการที่ใชประมวลผล ในการวิเคราะหปญหาใด กลาวโดยสรุปมีองคประกอบในการวิเคราะห ดังนี ้
1.1 การระบุขอมูลเขา ไดแก การพิจารณาขอมูลและเงื่อนไขที่กําหนดมาในปญหา
1.2 การระบุขอมูลออก ไดแก การพิจารณาเปาหมายหรือสิ่งที่ตองหาคําตอบ
1.3 การกําหนดวิธีประมวลผล ไดแก การพิจารณาข้ันตอนวิธีหาคําตอบหรือขอมูลออก
ตัวอยางที่ 2 แสดงการวิเคราะหและกําหนดรายละเอียดของการหาคาเฉลี่ยของจํานวนเต็ม 5 จํานวน ไดแก 0 3 4 8 และ 12
จากองคประกอบในการวิเคราะหและกําหนดรายละเอียดของปญหา
(1) การระบุขอมูลเขา
ในที่นี้โจทยกําหนดใหหาคาเฉลี่ยของจํานวนเต็ม 5 จํานวน ดังนั้น ขอมูลเขาไดแก จํานวน 0 3 4 8 และ 12
(2) การระบุขอมูลออก
จากโจทยสิ่งที่เปนคําตอบของปญหาคือ คาเฉลี่ย (X) ของจํานวนทั้งหา
(3) การกําหนดวิธีประมวลผล
จากสิ่งที่โจทยตองการ “คาเฉลี่ย” หมายถึง ผลรวมของจํานวนทั้ง 5 หารดวย 5 ดังนั้น ข้ันตอนของการประมวลผลประกอบดวย
3.1) รับคาจํานวนทั้ง 5 จํานวน
3.2) นําจํานวนเต็มทั้ง 5 มาบวกเขาดวยกัน
3.3) นําผลลัพธจากขอ 3.2) มาหารดวย 5
ตัวอยางที่ 3 แสดงการวิเคราะหและกําหนดรายละเอียดของการหาคา X เมื่อ X คือจํานวนเต็มจํานวนหนึ่งในกลุมจํานวนเต็ม 5 จํานวน ที่มีคาเฉลี่ยเปน 10 และจํานวนอีก 4 จํานวนไดแก 3 4 8 และ 12
จากองคประกอบในการวิเคราะหและกําหนดรายละเอียดของปญหา
(1) การระบุขอมูลเขา
จากโจทยขอมูลเขา ไดแก
1.1) จํานวนอีก 4 จํานวน คือ 3 4 8 12
1.2) คาเฉลี่ยของจํานวนทั้ง 5 จํานวน คือ 10
(2) การระบุขอมูลออก
จากโจทยสิ่งที่เปนผลลัพธ คือ คา X
(3) การกําหนดวิธีประมวลผล
จากโจทยและความหมายของ “คาเฉลี่ย” เราสามารถสรุปข้ันตอนของการประมวลผลไดดังนี ้
3.1) หาคาผลรวมของจํานวนเต็มทั้ง 5 โดยนําคาเฉลี่ยคูณดวยจํานวนของเลขจํานวนเต็ม นั่นคือ 10 x 5 = 50
3.2) จากความหมายของ “ผลรวม” จะได 3+4+8+12+X = 50
3.3) แกสมการ 27+X = 50 (จะได X = 23 ซึ่งคือผลลัพธ)
การเลือกเครื่องมือและออกแบบขั้นตอนวิธี
การเลือกเครื่องมือและออกแบบข้ันตอนวิธี (Tools and Algorithm development) ข้ันตอนนี้เปนข้ันตอนของการวางแผนในการแกปญหาอยางละเอียดถี่ถวน หลังจากที่เราทําความเขาใจกับปญหา พิจารณาขอมูลและเงื่อนไขที่มีอยู และสิ่งที่ตองการหาในข้ันตอนที่ 1 แลว เราสามารถคาดคะเนวิธกีารที่จะใชในการแกปญหา ข้ันตอนนี้จําเปนตองอาศัยประสบการณของผูแกปญหาเปนหลัก หากผูแกปญหาเคยพบกับปญหาทํานองนี้มาแลวก็สามารถดําเนินการตามแนวทางที่เคยปฏิบัติมา
ข้ันตอนนี้จะเริ่มจากการเลือกเครื่องมือที่ใชในการแกปญหา โดยพิจารณาความเหมาะสมระหวางเครื่องมือกับเงื่อนไขตางๆ ของปญหาซึ่งหมายรวมถึงความสามารถของเครื่องมือในการแกปญหาดังกลาว และสิ่งที่สําคัญคือความคุนเคยในการใชงานเครื่องมือนั้นๆ ของผูแกปญหา
อีกสิ่งหนึ่งที่สําคัญในการแกปญหา คือยุทธวิธีที่ใชในการแกปญหาหรอืที่เราเรียกวา ขั้นตอนวิธี (algorithm) ในการแกปญหา หลังจากที่เราไดเครื่องมือชวยแกปญหาแลว ผูแกปญหาตองวางแผนวาจะใชเครื่องมือดังกลาวเพ่ือใหไดผลลัพธที่ถูกตองและดีที่สุด การออกแบบข้ันตอนวิธีในการแกปญหา ผูแกปญหาควรใชแผนภาพหรือเครื่องมือในการแสดงข้ันตอนการทํางานเพ่ือใหงายตอความเขาใน เชน ผังงาน (flowchart) ที่จําลองข้ันตอนวิธีการแกปญหาในรูปของสัญลักษณ รหัสลําลอง (pseudo code) ซึ่งเปนการจําลองข้ันตอนวิธีการแกปญหาในรูปของคําบรรยาย การใชเครื่องมือชวยออกแบบดังกลาวนอกจากแสดงกระบวนการทีช่ัดเจนแลว ยังชวยใหผูแกปญหาสามารถหาขอผิดพลาดของวิธีการที่ใชไดงายและแกไขไดอยางรวดเร็ว
การดําเนินการแกปญหา
การดําเนินการแกปญหา (Implementation) หลังจากที่ไดออกแบบข้ันตอนวิธีเรียบรอยแลว ข้ันตอนนี้เปนข้ันตอนที่ตองลงมือแกปญหาโดยใชเครื่องมือที่ไดเลือกไว หากการแกปญหาดังกลาวใชคอมพิวเตอรเขามาชวยงาน ข้ันตอนนี้ก็เปนการใชโปรแกรมสําเร็จหรือใชภาษาคอมพิวเตอรเขียนโปรแกรมแกปญหา ข้ันตอนนี้ตองอาศัยความรูเก่ียวกับเครื่องมือที่เลือกใชซึ่งผูแกปญหาตองศึกษาใหเขาใจและเชี่ยวชาญ ในขณะที่ดําเนินการหากพบแนวทางที่ดีกวาที่ออกแบบไวก็สามารถปรับเปลี่ยนได
การตรวจสอบและปรับปรุง
การตรวจสอบและปรับปรุง (Refinement) หลังจากที่ลงมือแกปญหาแลว ตองตรวจสอบใหแนใจวาวิธีการนี้ใหผลลัพธที่ถูกตอง โดยผูแกปญหาตองตรวจสอบวาข้ันตอนวิธีที่สรางข้ึนสอดคลองกับรายละเอียดของปญหา ซึ่งไดแก ขอมูลเขา และขอมูลออก เพ่ือใหมั่นใจวาสามารถรองรับขอมุเขาไดในทุกกรณีอยางถูกตองและสมบูรณ ในขณะเดียวกันก็ตองปรับปรุงวิธีการเพ่ือใหการแกปญหานี้ไดผลลัพธที่ดีที่สุด
ข้ันตอนทั้ง 4 ข้ันตอนดังกลาวขางตน เปนเสมือนข้ันบันได (stair) ที่ทําใหมนุษยสามารถประสบความสําเร็จในการแกปญหาตางๆ ได รวมทั้งการเขียนหรือพัฒนาโปรแกรมคอมพิวเตอรเพ่ือแกปญหาก็ตองใชกระบวนการตามข้ันตอนทั้ง 4 นี้เชนกัน
2. การจําลองความคิด
ข้ันตอนที่สําคัญในการแกปญหาคือการวางแผน การวางแผนที่ดีจะชวยใหการแกปญหาเปนไปไดโดยงาย ผูที่สามารถวางแผนในการแกปญหาไดดีนอกจากจะตองใชประสบการณความรู และความมีเหตุผลแลว ยังควรรูจักวางแผนใหเปนข้ันตอนอยางเปนระเบียบดวย
การจําลองความคิดเปนสวนหนึ่งในข้ันตอนที่สองของการแกปญหา การจําลองความคิดออกมาในลักษณะเปนขอความ หรือเปนแผนภาพจะชวยใหสามารถแกปญหาไดดี โดยเฉพาะปญหาที่ยุงยากซับซอน การวางแผนจะเปนแนวทางในการดําเนินการแกปญหาตอไป อีกทั้งเปนการแสดงแบบเพ่ือใหผูที่เก่ียวของไดเขาใจและสามารถปฏิบัติตามในแนวทางเดียวกัน
ทั้งนี้ก็ดวยวัตถุประสงคอยางเดียวกับกลุมกิจการกอสราง ซึ่งจําเปนตองมีแบบแปลนเปนเครื่องมือติดตอสื่อสารระหวางผูออกแบบและผูกอสราง แบบแปลนเหลานั้นจะอยูในรูปลักษณะของการวาดภาพหรือแสดงเครื่องหมายซึ่งเปนที่เขาใจกันระหวางผูเก่ียวของ แบบแปลนจะตองจัดทําใหเสร็จกอนที่จะลงมือกอสราง โดยผานการตรวจสอบ ทบทวนและพิจารณาจากผูเที่ยวของหลายฝาย เมื่อเห็นวาเปนที่ถูกตองและพอใจของทุกฝายแลว จึงกอสรางตามแบบนั้น แตถายังไมเปนที่พอใจ ก็จะพิจารณาแกไขแบบแปลนสวนนั้นๆ เสียกอนจะไดไมตองรื้อถอนหรือทุบทิ้งภายหลัง และเมื่อตองการซอมแซมหรือตอเติมก็นําเอาแบบแปลนเดิมมาตรวจสอบและเพ่ิมแบบแปลนในสวนนั้นไดโดยงาย การใชแบบแปลนจึงเปนสิ่งที่จําเปนระหวางชางกอสราง ผูออกแบบและผูเก่ียวของอ่ืนๆ เปนอยางมาก เพราะประหยัดเวลา คาใชจายและเขาใจงาย เมื่อสรุปรวมแลวแบบแปลนเหลานั้นก็คือขอตกลงใหสรางอาคารของผูจางกับผูรับจางที่อยูในรูปแบบกะทัดรัด แทนที่จะเขียนเปนขอความที่เปนลายลักษณอักษรอยางยืดยาว และยังเปนเครื่องมือใหชางใชในการกอสรางอีกดวย
เครื่องมือที่ใชในการจําลองความคิดมักจะประกอบข้ึนดวยเครื่องหมายที่แตกตางกันหลายอยาง แตพอสรุปไดเปน 2 ลักษณะ คือ
ขอความหรือคําบรรยาย
เปนการเขียนเคาโครงดวยการบรรยายเปนภาษาที่มนุษยใชสื่อสารกัน เพ่ือใหทราบถึงข้ันตอนการทํางานของการแกปญหาแตละตอน ในบางครั้งอาจใชคําสั่งของภาษาที่ใชเขียนโปรแกรมก็ได
ตัวอยางที่ 4 คําบรรยายแสดงข้ันตอนการเปลี่ยนยางรถเมื่อยางแตกขณะขับรถ
(1) จอดรถหลบขางทาง
(2) คลายสกรูยึดลอ
(3) นําแมแรงออกยกรถ
(4) ถอดลอออก นํายางอะไหลมาเปลี่ยน
(5) ขันสกรูเขา เก็บยางที่ชํารุดเพ่ือไปซอม
(6) คลายแมแรง เก็บแมแรง
สัญลักษณ
เครื่องหมายรูปแบบตางๆ ซึ่งใชสําหรับสื่อสารความหมายใหเขาใจตรงกัน สถาบันมาตรฐานแหงชาติอเมริกา (The American National Standard Institute, ANSI) ไดกําหนดสัญลักษณไวเปนมาตรฐานแลว สามารถนําไปใชไดตามความเหมาะสมตอไป ซึ่งมีรายละเอียด รูปแบบและความหมายที่ควรทราบตามตารางตอไปนี ้
ตารางที่ 2 ความหมายของสัญลักษณ
สัญลักษณ ชื่อเรียก ความหมาย
การทํางานดวยมือ
(manual operation)
แทนจุดที่มีการทํางานดวยแรงคน
การนําขอมูลเขา – ออกโดยทั่วไป
(general input/output)
แทนจุดที่จํานําขอมูลเขาหรือออกจากระบบคอมพิวเตอรโดยไมระบุชนิดของอุปกรณ
แถบบันทึกขอมูล
(magnetic tape)
แทนจุดที่นําขอมูลเขาหรือออกจากโปรแกรมดวยแถบบันทึกขอมูล
จานบันทึกขอมูล
(magnetic disk)
แทนจุดที่นําขอมูลเขาหรือออกจากโปรแกรมดวยจานบันทึกขอมูล
การนําขอมูลเขาดวยมือ
(manual input)
แทนจุดที่จะนําขอมูลเขาดวยมือ
การแสดงขอมูล
(display)
แทนจุดที่แสดงขอมูลดวยจอภาพ
การทําเอกสาร
(document)
แทนจุดที่มีขอมูลเปนเอกสารหรือแสดงขอมูลดวยเครื่องพิมพ
การตัดสินใจ
(decision)
แทนจุดที่จะตองเลือกปฏิบัติอยางใดอยางหนึ่ง
การปฏิบัติงาน
(process)
แทนจุดที่มีการปฏิบัติงานอยางใดอยางหนึ่ง
การเตรียมการ
(preparation)
แทนจุดกําหนดช่ือขอมูลหรือคาเริ่มตนตางๆ
การเรียกโปรแกรมภายนอก
(external subroutine)
แทนจุดเรียกใชโปรแกรมยอยที่ไมไดอยูในโปรแกรมนั้น
การเรียกโปรแกรมภายใน
(internal subroutine)
แทนจุดเรียกใชโปรแกรมยอยที่อยูในโปรแกรมนั้น
การเรียงขอมูล
(sort)
แทนจุดที่มีการเรียงขอมูลใหมตามขอกําหนด
ทิศทาง
(flow line)
แทนทิศทางขั้นตอนการดําเนินงานซึ่งจะปฏิบัติตอเนื่องกันตามหัวลูกศรช้ี
หมายเหตุ
(annotation)
แทนจุดที่แสดงรายละเอียดเพิ่มเติมหรือหมายเหตุของจุดตางๆ ที่แสดงในผังงานดวยสัญลักษณไมชัดเจน
การติดตอทางไกล
(communication link)
แทนชวงที่มีการติดตอหรือยายขอมูลดวยระบบการติดตอทางไกล
จุดเช่ือมตอ
(connector)
แทนจุดเช่ือมตอของผังงานเมื่อใชสัญลักษณเพื่อใหดูงาย
จุดเช่ือมตอหนากระดาษ
(off page connector)
แทนจุดเช่ือมตอของผังงานที่อยูคนละหนากระดาษ
เริ่มตนและลงทาย
(terminal)
แทนจุดเริ่มตนและลงทายของผังงานของโปรแกรมหลักและโปรแกรมยอย
ตัวอยางที่ 5 การวางแผนการไปโรงเรียน
การจําลองความคิดเปนขอความ
เริ่มตน
ตื่นนอน
อาบน้ํา
ไปโรงเรียน
จบ
การจําลองความคิดเปนสัญลักษณ
เริ่มตน
ตื่นนอน
อาบนํ้าแตงตัว
ไปโรงเรียน
จบ
ตัวอยางที่ 6 การจําลองความคิดในการหาผลบวกของ 1, 2, 3, …, 20 (นั่นคือ จะหาคา 1+2+3+…+20)
การจําลองความคิดเปนขอความ
เริ่มตน
1. กําหนดให N มีคาเริ่มตนเปน 0
2. กําหนดให K มีคาเริ่มตนเปน 1
3. นําคา K มารวมกับคา N เดิม ไดผลลัพธเทาไรไปเก็บไวที่ N
4. นําคา 1 มารวมกับคา K เดิม ไดผลลัพธเทาไรไปเก็บไวที่ K
5. เปรียบเทียบคา K กับ 20 ถา K นอยกวาหรือเทากับ 20 ใหวนกลับไปทําในข้ันที่ 3 และทําคําสั่งถัดลงมาตามลําดับ แตถา K มากกวา 20 ใหแสดงคําตอบ
จบ
การจําลองความคิดเปนสัญลักษณ
เริ่มตน
N = 0
K = 1
พิมพผลลัพธ
จบ
K > 20
K = K+1
N = N+K
จริง
เท็จ
3. การเขียนโปรแกรม
จากการศึกษาหลักการข้ันตอนการแกปญหาในหัวขอที่ 1 และ 2 ที่ ผานมา หลังจากที่เราสามารถวิเคราะหปญหา และสรางแบบจําลองความคิดเพ่ือแสดงข้ันตอนในการแกปญหาแลว ข้ันตอนตอไปคือการลงมือแกปญหาตามข้ันตอนที่ออกแบบไว โดยใชเครื่องมือชวยในการแกปญหา ในที่นี้หากเครื่องมือที่นักเรียนเลือกคือภาษาคอมพิวเตอร ข้ันตอนในการลงมือแกปญหาก็คือข้ันตอนของการเขียนโปรแกรมคอมพิวเตอรซึ่ง ถือไดวาเปนข้ันตอนหนึ่งที่สําคัญในการแกปญหาดวยคอมพิวเตอร
การเขียนโปรแกรม (Programming) หมายถึง กระบวนการใชภาษาคอมพิวเตอรเพ่ือกําหนดโครงสรางของขอมูล และกําหนดข้ันตอนวิธีเพ่ือใชแกปญหาตามที่ไดออกแบบไว โดยอาศัยหลักเกณฑการเขียนโปรแกรมคอมพิวเตอรของแตละภาษา
กอนการเขียนโปรแกรม ผูพัฒนาโปรแกรมจะตองเลือกภาษาคอมพิวเตอรที่จะนํามาใชชวยงานโดยพิจารณาจากปจจัยตางๆ ในการทํางาน เชน ลักษณะของปญหา ความถนัดของผูเขียนโปรแกรม สภาพแวดลอมในการทํางานของระบบคอมพิวเตอร เปนตน เนื่องจากในปจจุบันมีภาษาคอมพิวเตอรใหเลือกใชไดหลายภาษา เชน ภาษาปาสคาล ภาษาซี ภาษาจาวา ภาษาเดลฟาย เปนตน ถึงแมแตละภาษาจะมีรูปแบบและหลักการในการสรางงานที่แตกตางกัน แตทุกภาษาจะตองมีโครงสรางควบคุมหลักทั้ง 3 แบบ ไดแก โครงสรางแบบลําดับ (sequential structure) โครงสรางแบบมีทางเลือก (selection structure) และโครงสรางแบบทําซ้ํา (repetition structure)
โครงสรางแบบลําดับ (Sequential structure)
คือ โครงสรางแสดงข้ันตอนการทํางานที่เปนไปตามลําดับกอนหลัง และแตละข้ันตอนจะถูกประมวลผลเพียงครั้งเดียวทานั้น สามารถแสดงการทํางานของโครงสรางนี้ โดยใชผังงานไดดังรูปที่ 1
คําส่ังที่ 1
คําส่ังที่ 2
คําส่ังที่ n
รูปท่ี 1 การทํางานของโครงสรางแบบลําดับ
โครงสรางแบบมีทางเลือก (Selection structure)
คือ โครงสรางที่มีเงื่อนไข ข้ันตอนการทํางานบางข้ันตอนตองมีการตัดสินใจเพ่ือเลือกวิธีการประมวลผลข้ันตอไป และจะมีบางข้ันตอนที่ไมไดรับการประมวลผล การตัดสินใจอาจมทีางเลือก 2 ทางหรือมากกวาก็ได โครงสรางที่มีทางเลือกเพียง 2 ทาง เราเรียกชื่อวาโครงสรางแบบ if…then…else และโครงสรางที่มีทางเลือกมากกวา 2 ทาง เราเรียกชื่อวา โครงสรางแบบ case ซึ่งสามารถแสดงการทํางานของโครงสรางนี้โดยใชผังงานไดดังรูปที่ 2 และ 3
เง่ือนไข
คําส่ัง
คําส่ัง
จริง
เท็จ
รูปท่ี 2 การทํางานของโครงสรางแบบมีทางเลือก if…then…else
กรณีที่ 4
เง่ือนไข
คําส่ัง
คําส่ัง
คําส่ัง
คําส่ัง
...
กรณีที่ 1
กรณีที่ 2
กรณีที่ 3
รูปท่ี 3 การทํางานของโครงสรางแบบมีทางเลือก case
โครงสรางแบบทําซํ้า (Repetition structure)
คือ โครงสรางที่ข้ันตอนการทํางานบางข้ันตอนไดรับการประมวลผลมากกวา 1 ครั้ง ทั้งนี้ข้ึนอยูกับเงื่อนไขบางประการ โครงสรางแบบทําซ้ํานี้ตองมีการตัดสินใจในการทํางานซ้ํา และลักษณะการทํางานของโครงสรางแบบนี้มี 2 ลักษณะ ไดแก
แบบที่มีการตรวจสอบเงื่อนไขในการทําซ้ําทุกครั้งกอนดําเนินการกิจกรรมใดๆ ถาเงื่อนไขเปนจริงจะทํางานซ้ําไปเรื่อยๆ และหยุดเมื่อเงื่อนไขเปนเท็จ เรียกการทํางานลักษณะนี้วา การทําซํ้าแบบ do while
แบบที่ทํากิจกรรมซ้ําเรื่อยๆ จนกระทั่งเงื่อนไขที่กําหนดเปนจริงแลวจึงหยุดการทํางาน โดยแตละครั้งที่เสร็จสิ้นการดําเนินการแตละรอบจะตองมีการตรวจสอบเงื่อนไข เรียกการทําซ้ําลักษณะนี้วา การทําซํ้าแบบ do until
ผังงานแสดงข้ันตอนการทํางานของโครงสรางแบบทําซ้ําทั้งสองแบบ แสดงดังรูปที่ 4 และ 5
เง่ือนไข
คําส่ัง
จริง
เท็จ
คําส่ัง
รูปท่ี 4 การทํางานของการทําซ้ําแบบ do while
เง่ือนไข
คําส่ัง
เท็จ
คําส่ัง
จริง
รูปท่ี 5 การทํางานของการทําซ้ําแบบ do until
ตัวอยางที่ 7 แสดงผังงานที่จําลองข้ันตอนวิธีการหาคาเฉลี่ยของจํานวนเต็ม 5 จํานวน ใหอยูในรูปของสัญลักษณ
เริ่มตน
กําหนดคาเริ่มตน
ผลบวก (sum) = 0
กําหนดคาเริ่มตน
ตัวนับจํานวนขอมูลเขา (N) =1
คํานวณคาเฉลี่ยเก็บในตัวแปร A
A = sum / 5
จบ
N ≤ 5
จริง
เท็จ
รับตัวเลขเปนขอมูลเขาทีละตัว
เก็บในตัวแปรช่ือ data
เพิ่มคาผลบวก
sum = sum + data
เพิ่มคาตัวนับจํานวน
N = N + 1