หลักการแก้ปัญหา

20
หลักการแกปญหา กับภาษาคอมพิวเตอร รายวิชา ง40102 หลักการแกปญหาและการโปรแกรม 1.หลักการแกปญหา ในชีวิตประจําวันทุกคนตองเคยพบกับปญหาตางๆ ไมวาจะเปนปญหาดานการเรียน การงาน การเงิน หรือแมแตการเลนเกม เมื่อพบกับปญหา แตละคนมีวิธีที่จะจัดการหรือแกปญหาเหลานั้น แตกตางกันไป ซึ่งแตละวิธีการอาจใหผลลัพธที่เหมือนหรือแตกตางกันเล็กนอย ทั้งนี้ขึ้นอยูกับ ความรู ความสามารถ และประสบการณของบุคคลผูนั้น อยางไรก็ตาม หากเรานําวิธีการแกปญหาตาง วิธีนั้นมาวิเคราะหใหดี จะพบวาสามารถสรุปวิธีการเหลานั้นเปนทฤษฎีซึ่งมีรูปแบบที่แนนอนได และ บางครั้งตองอาศัยการเรียนรูในระดับสูงเพื่อแกปญหาบางอยางใหสมบูรณแบบ แตกอนที่เราจะศึกษา ตอไป ลองพิจารณาปญหาตอไปนีตัวอยางที่ 1 เกมทายใจ คือเกมใหผูเลนทายตัวเลข 3 ตัว ในการเลนเกมตองใชผูเลน 2 คน คนที่หนึ่งคือ ผูกําหนด เปนคนกําหนดเลข 3 ตัวที่ไมซ้ํากัน โดยเลือกจากกลุมตัวเลข 1-9 และอีกคนหนึ่งคือผูทาย เปนผูทาย ตัวเลข 3 ตัวที่ไมซ้ํากันที่ผูกําหนดไดกําหนดไวแลว หลังจากที่ผูทายทายเลขแตละครั้ง ผูกําหนดตอง ใหรายละเอียดวาตัวเลขที่ทายมานั้นถูกตองกี่ตัว และในกรณีที่ตัวเลขที่ทายมาถูกตําแหนงดวยก็ตอง

Upload: sarun-suksri

Post on 25-Jun-2015

438 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: หลักการแก้ปัญหา

หลักการแกปญหา

กับภาษาคอมพิวเตอร รายวิชา ง40102 หลักการแกปญหาและการโปรแกรม

1.หลักการแกปญหา

ในชีวิตประจําวันทุกคนตองเคยพบกับปญหาตางๆ ไมวาจะเปนปญหาดานการเรียน การงาน การเงิน หรือแมแตการเลนเกม เมื่อพบกับปญหา แตละคนมีวิธีที่จะจัดการหรือแกปญหาเหลานั้นแตกตางกันไป ซึ่งแตละวิธีการอาจใหผลลัพธที่เหมือนหรือแตกตางกันเล็กนอย ทั้งนี้ข้ึนอยูกับความรู ความสามารถ และประสบการณของบุคคลผูนั้น อยางไรก็ตาม หากเรานําวิธีการแกปญหาตางวิธีนั้นมาวิเคราะหใหดี จะพบวาสามารถสรุปวิธีการเหลานั้นเปนทฤษฎีซึ่งมีรูปแบบที่แนนอนได และบางครั้งตองอาศัยการเรียนรูในระดับสูงเพ่ือแกปญหาบางอยางใหสมบูรณแบบ แตกอนที่เราจะศึกษาตอไป ลองพิจารณาปญหาตอไปนี ้

ตัวอยางที่ 1 เกมทายใจ

คือเกมใหผูเลนทายตัวเลข 3 ตัว ในการเลนเกมตองใชผูเลน 2 คน คนที่หนึ่งคือ ผูกําหนด เปนคนกําหนดเลข 3 ตัวที่ไมซ้ํากัน โดยเลือกจากกลุมตัวเลข 1-9 และอีกคนหนึ่งคือผูทาย เปนผูทายตัวเลข 3 ตัวที่ไมซ้ํากันที่ผูกําหนดไดกําหนดไวแลว หลังจากที่ผูทายทายเลขแตละครั้ง ผูกําหนดตองใหรายละเอียดวาตัวเลขทีท่ายมานั้นถูกตองก่ีตัว และในกรณีที่ตัวเลขที่ทายมาถูกตําแหนงดวยก็ตอง

Page 2: หลักการแก้ปัญหา

บอกวาถูกตําแหนงก่ีตัว เชน ถาตัวเลขที่กําหนดไวเปน 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 ข้ันตอน ดังนี ้

การวิเคราะหและกําหนดรายละเอียดของปญหา

Page 3: หลักการแก้ปัญหา

การวิเคราะหและกําหนดรายละเอียดของปญหา (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

Page 4: หลักการแก้ปัญหา

ตัวอยางที่ 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 แลว เราสามารถคาดคะเนวิธกีารที่จะใชในการแกปญหา ข้ันตอนนี้จําเปนตองอาศัยประสบการณของผูแกปญหาเปนหลัก หากผูแกปญหาเคยพบกับปญหาทํานองนี้มาแลวก็สามารถดําเนินการตามแนวทางที่เคยปฏิบัติมา

Page 5: หลักการแก้ปัญหา

ข้ันตอนนี้จะเริ่มจากการเลือกเครื่องมือที่ใชในการแกปญหา โดยพิจารณาความเหมาะสมระหวางเครื่องมือกับเงื่อนไขตางๆ ของปญหาซึ่งหมายรวมถึงความสามารถของเครื่องมือในการแกปญหาดังกลาว และสิ่งที่สําคัญคือความคุนเคยในการใชงานเครื่องมือนั้นๆ ของผูแกปญหา

อีกสิ่งหนึ่งที่สําคัญในการแกปญหา คือยุทธวิธีที่ใชในการแกปญหาหรอืที่เราเรียกวา ขั้นตอนวิธี (algorithm) ในการแกปญหา หลังจากที่เราไดเครื่องมือชวยแกปญหาแลว ผูแกปญหาตองวางแผนวาจะใชเครื่องมือดังกลาวเพ่ือใหไดผลลัพธที่ถูกตองและดีที่สุด การออกแบบข้ันตอนวิธีในการแกปญหา ผูแกปญหาควรใชแผนภาพหรือเครื่องมือในการแสดงข้ันตอนการทํางานเพ่ือใหงายตอความเขาใน เชน ผังงาน (flowchart) ที่จําลองข้ันตอนวิธีการแกปญหาในรูปของสัญลักษณ รหัสลําลอง (pseudo code) ซึ่งเปนการจําลองข้ันตอนวิธีการแกปญหาในรูปของคําบรรยาย การใชเครื่องมือชวยออกแบบดังกลาวนอกจากแสดงกระบวนการทีช่ัดเจนแลว ยังชวยใหผูแกปญหาสามารถหาขอผิดพลาดของวิธีการที่ใชไดงายและแกไขไดอยางรวดเร็ว

การดําเนินการแกปญหา

การดําเนินการแกปญหา (Implementation) หลังจากที่ไดออกแบบข้ันตอนวิธีเรียบรอยแลว ข้ันตอนนี้เปนข้ันตอนที่ตองลงมือแกปญหาโดยใชเครื่องมือที่ไดเลือกไว หากการแกปญหาดังกลาวใชคอมพิวเตอรเขามาชวยงาน ข้ันตอนนี้ก็เปนการใชโปรแกรมสําเร็จหรือใชภาษาคอมพิวเตอรเขียนโปรแกรมแกปญหา ข้ันตอนนี้ตองอาศัยความรูเก่ียวกับเครื่องมือที่เลือกใชซึ่งผูแกปญหาตองศึกษาใหเขาใจและเชี่ยวชาญ ในขณะที่ดําเนินการหากพบแนวทางที่ดีกวาที่ออกแบบไวก็สามารถปรับเปลี่ยนได

การตรวจสอบและปรับปรุง

การตรวจสอบและปรับปรุง (Refinement) หลังจากที่ลงมือแกปญหาแลว ตองตรวจสอบใหแนใจวาวิธีการนี้ใหผลลัพธที่ถูกตอง โดยผูแกปญหาตองตรวจสอบวาข้ันตอนวิธีที่สรางข้ึนสอดคลองกับรายละเอียดของปญหา ซึ่งไดแก ขอมูลเขา และขอมูลออก เพ่ือใหมั่นใจวาสามารถรองรับขอมุเขาไดในทุกกรณีอยางถูกตองและสมบูรณ ในขณะเดียวกันก็ตองปรับปรุงวิธีการเพ่ือใหการแกปญหานี้ไดผลลัพธที่ดีที่สุด

ข้ันตอนทั้ง 4 ข้ันตอนดังกลาวขางตน เปนเสมือนข้ันบันได (stair) ที่ทําใหมนุษยสามารถประสบความสําเร็จในการแกปญหาตางๆ ได รวมทั้งการเขียนหรือพัฒนาโปรแกรมคอมพิวเตอรเพ่ือแกปญหาก็ตองใชกระบวนการตามข้ันตอนทั้ง 4 นี้เชนกัน

Page 6: หลักการแก้ปัญหา

2. การจําลองความคิด

ข้ันตอนที่สําคัญในการแกปญหาคือการวางแผน การวางแผนที่ดีจะชวยใหการแกปญหาเปนไปไดโดยงาย ผูที่สามารถวางแผนในการแกปญหาไดดีนอกจากจะตองใชประสบการณความรู และความมีเหตุผลแลว ยังควรรูจักวางแผนใหเปนข้ันตอนอยางเปนระเบียบดวย

การจําลองความคิดเปนสวนหนึ่งในข้ันตอนที่สองของการแกปญหา การจําลองความคิดออกมาในลักษณะเปนขอความ หรือเปนแผนภาพจะชวยใหสามารถแกปญหาไดดี โดยเฉพาะปญหาที่ยุงยากซับซอน การวางแผนจะเปนแนวทางในการดําเนินการแกปญหาตอไป อีกทั้งเปนการแสดงแบบเพ่ือใหผูที่เก่ียวของไดเขาใจและสามารถปฏิบัติตามในแนวทางเดียวกัน

ทั้งนี้ก็ดวยวัตถุประสงคอยางเดียวกับกลุมกิจการกอสราง ซึ่งจําเปนตองมีแบบแปลนเปนเครื่องมือติดตอสื่อสารระหวางผูออกแบบและผูกอสราง แบบแปลนเหลานั้นจะอยูในรูปลักษณะของการวาดภาพหรือแสดงเครื่องหมายซึ่งเปนที่เขาใจกันระหวางผูเก่ียวของ แบบแปลนจะตองจัดทําใหเสร็จกอนที่จะลงมือกอสราง โดยผานการตรวจสอบ ทบทวนและพิจารณาจากผูเที่ยวของหลายฝาย เมื่อเห็นวาเปนที่ถูกตองและพอใจของทุกฝายแลว จึงกอสรางตามแบบนั้น แตถายังไมเปนที่พอใจ ก็จะพิจารณาแกไขแบบแปลนสวนนั้นๆ เสียกอนจะไดไมตองรื้อถอนหรือทุบทิ้งภายหลัง และเมื่อตองการซอมแซมหรือตอเติมก็นําเอาแบบแปลนเดิมมาตรวจสอบและเพ่ิมแบบแปลนในสวนนั้นไดโดยงาย การใชแบบแปลนจึงเปนสิ่งที่จําเปนระหวางชางกอสราง ผูออกแบบและผูเก่ียวของอ่ืนๆ เปนอยางมาก เพราะประหยัดเวลา คาใชจายและเขาใจงาย เมื่อสรุปรวมแลวแบบแปลนเหลานั้นก็คือขอตกลงใหสรางอาคารของผูจางกับผูรับจางที่อยูในรูปแบบกะทัดรัด แทนที่จะเขียนเปนขอความที่เปนลายลักษณอักษรอยางยืดยาว และยังเปนเครื่องมือใหชางใชในการกอสรางอีกดวย

เครื่องมือที่ใชในการจําลองความคิดมักจะประกอบข้ึนดวยเครื่องหมายที่แตกตางกันหลายอยาง แตพอสรุปไดเปน 2 ลักษณะ คือ

ขอความหรือคําบรรยาย

เปนการเขียนเคาโครงดวยการบรรยายเปนภาษาที่มนุษยใชสื่อสารกัน เพ่ือใหทราบถึงข้ันตอนการทํางานของการแกปญหาแตละตอน ในบางครั้งอาจใชคําสั่งของภาษาที่ใชเขียนโปรแกรมก็ได

ตัวอยางที่ 4 คําบรรยายแสดงข้ันตอนการเปลี่ยนยางรถเมื่อยางแตกขณะขับรถ

Page 7: หลักการแก้ปัญหา

(1) จอดรถหลบขางทาง

(2) คลายสกรูยึดลอ

(3) นําแมแรงออกยกรถ

(4) ถอดลอออก นํายางอะไหลมาเปลี่ยน

(5) ขันสกรูเขา เก็บยางที่ชํารุดเพ่ือไปซอม

(6) คลายแมแรง เก็บแมแรง

สัญลักษณ

เครื่องหมายรูปแบบตางๆ ซึ่งใชสําหรับสื่อสารความหมายใหเขาใจตรงกัน สถาบันมาตรฐานแหงชาติอเมริกา (The American National Standard Institute, ANSI) ไดกําหนดสัญลักษณไวเปนมาตรฐานแลว สามารถนําไปใชไดตามความเหมาะสมตอไป ซึ่งมีรายละเอียด รูปแบบและความหมายที่ควรทราบตามตารางตอไปนี ้

Page 8: หลักการแก้ปัญหา

ตารางที่ 2 ความหมายของสัญลักษณ

สัญลักษณ ชื่อเรียก ความหมาย

การทํางานดวยมือ

(manual operation)

แทนจุดที่มีการทํางานดวยแรงคน

การนําขอมูลเขา – ออกโดยทั่วไป

(general input/output)

แทนจุดที่จํานําขอมูลเขาหรือออกจากระบบคอมพิวเตอรโดยไมระบุชนิดของอุปกรณ

แถบบันทึกขอมูล

(magnetic tape)

แทนจุดที่นําขอมูลเขาหรือออกจากโปรแกรมดวยแถบบันทึกขอมูล

จานบันทึกขอมูล

(magnetic disk)

แทนจุดที่นําขอมูลเขาหรือออกจากโปรแกรมดวยจานบันทึกขอมูล

การนําขอมูลเขาดวยมือ

(manual input)

แทนจุดที่จะนําขอมูลเขาดวยมือ

การแสดงขอมูล

(display)

แทนจุดที่แสดงขอมูลดวยจอภาพ

การทําเอกสาร

(document)

แทนจุดที่มีขอมูลเปนเอกสารหรือแสดงขอมูลดวยเครื่องพิมพ

การตัดสินใจ

(decision)

แทนจุดที่จะตองเลือกปฏิบัติอยางใดอยางหนึ่ง

การปฏิบัติงาน

(process)

แทนจุดที่มีการปฏิบัติงานอยางใดอยางหนึ่ง

การเตรียมการ

(preparation)

แทนจุดกําหนดช่ือขอมูลหรือคาเริ่มตนตางๆ

การเรียกโปรแกรมภายนอก

(external subroutine)

แทนจุดเรียกใชโปรแกรมยอยที่ไมไดอยูในโปรแกรมนั้น

การเรียกโปรแกรมภายใน

(internal subroutine)

แทนจุดเรียกใชโปรแกรมยอยที่อยูในโปรแกรมนั้น

Page 9: หลักการแก้ปัญหา

การเรียงขอมูล

(sort)

แทนจุดที่มีการเรียงขอมูลใหมตามขอกําหนด

ทิศทาง

(flow line)

แทนทิศทางขั้นตอนการดําเนินงานซึ่งจะปฏิบัติตอเนื่องกันตามหัวลูกศรช้ี

หมายเหตุ

(annotation)

แทนจุดที่แสดงรายละเอียดเพิ่มเติมหรือหมายเหตุของจุดตางๆ ที่แสดงในผังงานดวยสัญลักษณไมชัดเจน

การติดตอทางไกล

(communication link)

แทนชวงที่มีการติดตอหรือยายขอมูลดวยระบบการติดตอทางไกล

จุดเช่ือมตอ

(connector)

แทนจุดเช่ือมตอของผังงานเมื่อใชสัญลักษณเพื่อใหดูงาย

จุดเช่ือมตอหนากระดาษ

(off page connector)

แทนจุดเช่ือมตอของผังงานที่อยูคนละหนากระดาษ

เริ่มตนและลงทาย

(terminal)

แทนจุดเริ่มตนและลงทายของผังงานของโปรแกรมหลักและโปรแกรมยอย

Page 10: หลักการแก้ปัญหา

ตัวอยางที่ 5 การวางแผนการไปโรงเรียน

การจําลองความคิดเปนขอความ

เริ่มตน

ตื่นนอน

อาบน้ํา

ไปโรงเรียน

จบ

การจําลองความคิดเปนสัญลักษณ

เริ่มตน

ตื่นนอน

อาบนํ้าแตงตัว

ไปโรงเรียน

จบ

Page 11: หลักการแก้ปัญหา

ตัวอยางที่ 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

Page 12: หลักการแก้ปัญหา

N = N+K

จริง

เท็จ

3. การเขียนโปรแกรม

จากการศึกษาหลักการข้ันตอนการแกปญหาในหัวขอที่ 1 และ 2 ที่ ผานมา หลังจากที่เราสามารถวิเคราะหปญหา และสรางแบบจําลองความคิดเพ่ือแสดงข้ันตอนในการแกปญหาแลว ข้ันตอนตอไปคือการลงมือแกปญหาตามข้ันตอนที่ออกแบบไว โดยใชเครื่องมือชวยในการแกปญหา ในที่นี้หากเครื่องมือที่นักเรียนเลือกคือภาษาคอมพิวเตอร ข้ันตอนในการลงมือแกปญหาก็คือข้ันตอนของการเขียนโปรแกรมคอมพิวเตอรซึ่ง ถือไดวาเปนข้ันตอนหนึ่งที่สําคัญในการแกปญหาดวยคอมพิวเตอร

Page 13: หลักการแก้ปัญหา

การเขียนโปรแกรม (Programming) หมายถึง กระบวนการใชภาษาคอมพิวเตอรเพ่ือกําหนดโครงสรางของขอมูล และกําหนดข้ันตอนวิธีเพ่ือใชแกปญหาตามที่ไดออกแบบไว โดยอาศัยหลักเกณฑการเขียนโปรแกรมคอมพิวเตอรของแตละภาษา

กอนการเขียนโปรแกรม ผูพัฒนาโปรแกรมจะตองเลือกภาษาคอมพิวเตอรที่จะนํามาใชชวยงานโดยพิจารณาจากปจจัยตางๆ ในการทํางาน เชน ลักษณะของปญหา ความถนัดของผูเขียนโปรแกรม สภาพแวดลอมในการทํางานของระบบคอมพิวเตอร เปนตน เนื่องจากในปจจุบันมีภาษาคอมพิวเตอรใหเลือกใชไดหลายภาษา เชน ภาษาปาสคาล ภาษาซี ภาษาจาวา ภาษาเดลฟาย เปนตน ถึงแมแตละภาษาจะมีรูปแบบและหลักการในการสรางงานที่แตกตางกัน แตทุกภาษาจะตองมีโครงสรางควบคุมหลักทั้ง 3 แบบ ไดแก โครงสรางแบบลําดับ (sequential structure) โครงสรางแบบมีทางเลือก (selection structure) และโครงสรางแบบทําซ้ํา (repetition structure)

โครงสรางแบบลําดับ (Sequential structure)

คือ โครงสรางแสดงข้ันตอนการทํางานที่เปนไปตามลําดับกอนหลัง และแตละข้ันตอนจะถูกประมวลผลเพียงครั้งเดียวทานั้น สามารถแสดงการทํางานของโครงสรางนี้ โดยใชผังงานไดดังรูปที่ 1

คําส่ังที่ 1

คําส่ังที่ 2

คําส่ังที่ n

Page 14: หลักการแก้ปัญหา

รูปท่ี 1 การทํางานของโครงสรางแบบลําดับ

โครงสรางแบบมีทางเลือก (Selection structure)

คือ โครงสรางที่มีเงื่อนไข ข้ันตอนการทํางานบางข้ันตอนตองมีการตัดสินใจเพ่ือเลือกวิธีการประมวลผลข้ันตอไป และจะมีบางข้ันตอนที่ไมไดรับการประมวลผล การตัดสินใจอาจมทีางเลือก 2 ทางหรือมากกวาก็ได โครงสรางที่มีทางเลือกเพียง 2 ทาง เราเรียกชื่อวาโครงสรางแบบ if…then…else และโครงสรางที่มีทางเลือกมากกวา 2 ทาง เราเรียกชื่อวา โครงสรางแบบ case ซึ่งสามารถแสดงการทํางานของโครงสรางนี้โดยใชผังงานไดดังรูปที่ 2 และ 3

เง่ือนไข

คําส่ัง

คําส่ัง

จริง

Page 15: หลักการแก้ปัญหา

เท็จ

รูปท่ี 2 การทํางานของโครงสรางแบบมีทางเลือก if…then…else

กรณีที่ 4

เง่ือนไข

คําส่ัง

คําส่ัง

คําส่ัง

คําส่ัง

...

Page 16: หลักการแก้ปัญหา

กรณีที่ 1

กรณีที่ 2

กรณีที่ 3

รูปท่ี 3 การทํางานของโครงสรางแบบมีทางเลือก case

Page 17: หลักการแก้ปัญหา

โครงสรางแบบทําซํ้า (Repetition structure)

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

แบบที่มีการตรวจสอบเงื่อนไขในการทําซ้ําทุกครั้งกอนดําเนินการกิจกรรมใดๆ ถาเงื่อนไขเปนจริงจะทํางานซ้ําไปเรื่อยๆ และหยุดเมื่อเงื่อนไขเปนเท็จ เรียกการทํางานลักษณะนี้วา การทําซํ้าแบบ do while

แบบที่ทํากิจกรรมซ้ําเรื่อยๆ จนกระทั่งเงื่อนไขที่กําหนดเปนจริงแลวจึงหยุดการทํางาน โดยแตละครั้งที่เสร็จสิ้นการดําเนินการแตละรอบจะตองมีการตรวจสอบเงื่อนไข เรียกการทําซ้ําลักษณะนี้วา การทําซํ้าแบบ do until

ผังงานแสดงข้ันตอนการทํางานของโครงสรางแบบทําซ้ําทั้งสองแบบ แสดงดังรูปที่ 4 และ 5

เง่ือนไข

คําส่ัง

จริง

เท็จ

คําส่ัง

รูปท่ี 4 การทํางานของการทําซ้ําแบบ do while

Page 18: หลักการแก้ปัญหา

เง่ือนไข

คําส่ัง

เท็จ

คําส่ัง

จริง

รูปท่ี 5 การทํางานของการทําซ้ําแบบ do until

ตัวอยางที่ 7 แสดงผังงานที่จําลองข้ันตอนวิธีการหาคาเฉลี่ยของจํานวนเต็ม 5 จํานวน ใหอยูในรูปของสัญลักษณ

เริ่มตน

กําหนดคาเริ่มตน

ผลบวก (sum) = 0

กําหนดคาเริ่มตน

ตัวนับจํานวนขอมูลเขา (N) =1

Page 19: หลักการแก้ปัญหา

คํานวณคาเฉลี่ยเก็บในตัวแปร A

A = sum / 5

จบ

N ≤ 5

จริง

เท็จ

รับตัวเลขเปนขอมูลเขาทีละตัว

เก็บในตัวแปรช่ือ data

เพิ่มคาผลบวก

sum = sum + data

เพิ่มคาตัวนับจํานวน

N = N + 1

Page 20: หลักการแก้ปัญหา