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

15
หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ 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) คือ จะแยก ข้อมูลออกเป็นกรณีที่เป็นไปไม่ได้ทิ้ง จนเหลือกรณีที่เป็นไปได้ รูปแบบของกำรใช้เหตุผลประกอบกำรแก้ปัญหำ อำจแตกต่ำงกันขึ้นอยู่กับเงื่อนไข ในบำงปัญหำอำจจะขจัดให้เหลือกรณีเดียวไม่ได้ แต่อำจจะทำให้เหลือกรณี น้อยที่สุด

Upload: others

Post on 01-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

หลักการแก้ปัญหา กับภาษาคอมพิวเตอร ์

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) คือ จะแยกข้อมูลออกเป็นกรณีท่ีเป็นไปไม่ได้ทิ้ง จนเหลือกรณีที่เป็นไปได้ รูปแบบของกำรใช้เหตุผลประกอบกำรแก้ปัญหำอำจแตกต่ำงกันขึ้นอยู่กับเงื่อนไข ในบำงปัญหำอำจจะขจัดให้เหลือกรณีเดียวไม่ได้ แต่อำจจะท ำให้เหลือกรณีน้อยที่สุด

Page 2: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

นอกจำกวิธีกำรแก้ปัญหำที่ยกตัวอย่ำงมำซึ่งได้แก่ วิธีกำรลองผิดลองถูก กำรใช้เหตุผล กำรใช้วิธีขจัด ยังมีวิธีกำรแก้ปัญหำอีกมำกมำยที่ผู้แก้ปัญหำสำมำรถเลือกใช้ให้เข้ำกับตัวปัญหำและประสบกำรณ์ของผู้แก้ปัญหำเอง แต่อย่ำงไรก็ตำม วิธีกำรเหล่ำนั้นล้วนมีขั้นตอนที่คล้ำยคลึงกัน และจำกกำรศึกษำพฤติกรรมในกำรเรียนรู้และแก้ปัญหำของมนุษย์พบว่ำ โดยปกติมนุษย์มีกระบวนกำรในกำรแก้ปัญหำ ซึ่งประกอบด้วย 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

Page 3: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

(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) หลังจำกท่ีลงมือแก้ปัญหำแล้ว ต้องตรวจสอบให้แน่ใจว่ำวิธีกำรนี้ให้ผลลัพธ์ที่ถูกต้อง โดยผู้แก้ปัญหำต้องตรวจสอบว่ำขั้นตอนวิธีที่สร้ำงข้ึนสอดคล้องกับรำยละเอียดของปัญหำ ซึ่งได้แก่ ข้อมูลเข้ำ และข้อมูลออก เพ่ือให้มั่นใจว่ำสำมำรถรองรับข้อมุเข้ำได้ในทุกกรณีอย่ำงถูกต้องและสมบูรณ์ ในขณะเดียวกันก็ต้องปรับปรุงวิธีกำรเพ่ือให้กำรแก้ปัญหำนี้ได้ผลลัพธ์ที่ดีที่สุด

Page 4: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

ขั้นตอนทั้ง 4 ขั้นตอนดังกล่ำวข้ำงต้น เป็นเสมือนขั้นบันได (stair) ที่ท ำให้มนุษย์สำมำรถประสบควำมส ำเร็จในกำรแก้ปัญหำต่ำงๆ ได้ รวมทั้งกำรเขียนหรือพัฒนำโปรแกรมคอมพิวเตอร์เพ่ือแก้ปัญหำก็ต้องใช้กระบวนกำรตำมข้ันตอนทั้ง 4 นี้เช่นกัน 2. การจ าลองความคิด ขัน้ตอนที่ส ำคัญในกำรแก้ปัญหำคือกำรวำงแผน กำรวำงแผนที่ดีจะช่วยให้กำรแก้ปัญหำเป็นไปได้โดยง่ำย ผู้ที่สำมำรถวำงแผนในกำรแก้ปัญหำได้ดีนอกจำกจะต้องใช้ประสบกำรณ์ควำมรู้ และควำมมีเหตุผลแล้ว ยังควรรู้จักวำงแผนให้เป็นขั้นตอนอย่ำงเป็นระเบียบด้วย กำรจ ำลองควำมคิดเป็นส่วนหนึ่งในขั้นตอนที่สองของกำรแก้ปัญหำ กำรจ ำลองควำมคิดออกมำในลักษณะเป็นข้อควำม หรือเป็นแผนภำพจะช่วยให้สำมำรถแก้ปัญหำได้ดี โดยเฉพำะปัญหำที่ยุ่งยำกซับซ้อน กำรวำงแผนจะเป็นแนวทำงในกำรด ำเนินกำรแก้ปัญหำต่อไป อีกท้ังเป็นกำรแสดงแบบเพื่อให้ผู้ที่เก่ียวข้องได้เข้ำใจและสำมำรถปฏิบัติตำมในแนวทำงเดียวกัน ทั้งนี้ก็ด้วยวัตถุประสงค์อย่ำงเดียวกับกลุ่มกิจกำรก่อสร้ำง ซึ่งจ ำเป็นต้องมีแบบแปลนเป็นเครื่องมือติดต่อสื่อสำรระหว่ำงผู้ออกแบบและผู้ก่อสร้ำง แบบแปลนเหล่ำนั้นจะอยู่ในรูปลักษณะของกำรวำดภำพหรือแสดงเครื่องหมำยซึ่งเป็นที่เข้ำใจกันระหว่ำงผู้เกี่ยวข้อง แบบแปลนจะต้องจัดท ำให้เสร็จก่อนที่จะลงมือก่อสร้ำง โดยผ่ำนกำรตรวจสอบ ทบทวนและพิจำรณำจำกผู้เที่ยวข้องหลำยฝ่ำย เมื่อเห็นว่ำเป็นที่ถูกต้องและพอใจของทุกฝ่ำยแล้ว จึงก่อสร้ำงตำมแบบนั้น แต่ถ้ำยังไม่เป็นที่พอใจ ก็จะพิจำรณำแก้ไขแบบแปลนส่วนนั้นๆ เสียก่อนจะได้ไม่ต้องรื้อถอนหรือทุบทิ้งภำยหลัง และเม่ือต้องกำรซ่อมแซมหรือต่อเติมก็น ำเอำแบบแปลนเดิมมำตรวจสอบและเพ่ิมแบบแปลนในส่วนนั้นได้โดยง่ำย กำรใช้แบบแปลนจึงเป็นสิ่งที่จ ำเป็นระหว่ำงช่ำงก่อสร้ำง ผู้ออกแบบและผู้เกี่ยวข้องอ่ืนๆ เป็นอย่ำงมำก เพรำะประหยัดเวลำ ค่ำใช้จ่ำยและเข้ำใจง่ำย เมื่อสรุปรวมแล้วแบบแปลนเหล่ำนั้นก็คือข้อตกลงให้สร้ำงอำคำรของผู้จ้ำงกับผู้รับจ้ำงที่อยู่ในรูปแบบกะทัดรัด แทนที่จะเขียนเป็นข้อควำมที่เป็นลำยลักษณ์อักษรอย่ำงยืดยำว และยังเป็นเครื่องมือให้ช่ำงใช้ในกำรก่อสร้ำงอีกด้วย เครื่องมือที่ใช้ในกำรจ ำลองควำมคิดมักจะประกอบขึ้นด้วยเครื่องหมำยที่แตกต่ำงกันหลำยอย่ำง แต่พอสรุปได้เป็น 2 ลักษณะ คือ

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

(1) จอดรถหลบข้ำงทำง (2) คลำยสกรูยึดล้อ (3) น ำแม่แรงออกยกรถ (4) ถอดล้อออก น ำยำงอะไหล่มำเปลี่ยน (5) ขันสกรูเข้ำ เก็บยำงท่ีช ำรุดเพ่ือไปซ่อม (6) คลำยแม่แรง เก็บแม่แรง

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

Page 5: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

สำมำรถน ำไปใช้ได้ตำมควำมเหมำะสมต่อไป ซึ่งมีรำยละเอียด รูปแบบและควำมหมำยที่ควรทรำบตำมตำรำงต่อไปนี้

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

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

กำรท ำงำนด้วยมือ (manual operation)

แทนจุดที่มีกำรท ำงำนด้วยแรงคน

กำรน ำข้อมูลเข้ำ – ออกโดยทั่วไป (general input/output)

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

แถบบันทึกข้อมูล (magnetic tape)

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

จำนบันทึกข้อมูล (magnetic disk)

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

กำรน ำข้อมูลเข้ำด้วยมือ (manual input)

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

กำรแสดงข้อมลู (display)

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

กำรท ำเอกสำร (document)

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

กำรตัดสินใจ (decision)

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

กำรปฏิบัติงำน (process)

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

กำรเตรียมกำร (preparation)

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

กำรเรยีกโปรแกรมภำยนอก (external subroutine)

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

กำรเรยีกโปรแกรมภำยใน (internal subroutine)

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

กำรเรยีงข้อมูล (sort)

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

Page 6: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

ทิศทำง (flow line)

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

หมำยเหต ุ(annotation)

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

กำรติดต่อทำงไกล (communication link)

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

จุดเช่ือมต่อ (connector)

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

จุดเช่ือมต่อหน้ำกระดำษ (off page connector)

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

เริ่มต้นและลงท้ำย (terminal)

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

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

การจ าลองความคิดเป็นข้อความ เริ่มต้น ตื่นนอน อำบน้ ำ ไปโรงเรียน จบ

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

ตัวอย่างที่ 6 กำรจ ำลองควำมคิดในกำรหำผลบวกของ 1, 2, 3, …, 20 (นั่นคือ จะหำค่ำ 1+2+3+…+20)

การจ าลองความคิดเป็นข้อความ เริ่มต้น

เริม่ตน้

ตื่นนอน

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

ไปโรงเรยีน

จบ

Page 7: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

1. ก ำหนดให้ N มีค่ำเริ่มต้นเป็น 0 2. ก ำหนดให้ K มีค่ำเริ่มต้นเป็น 1 3. น ำค่ำ K มำรวมกับค่ำ N เดิม ได้ผลลัพธ์เท่ำไรไปเก็บไว้ที่ N 4. น ำค่ำ 1 มำรวมกับค่ำ K เดิม ได้ผลลัพธ์เท่ำไรไปเก็บไว้ที่ K 5. เปรียบเทียบค่ำ K กับ 20 ถ้ำ K น้อยกว่ำหรือเท่ำกับ 20 ให้วนกลับไปท ำในขั้นที่

3 และท ำค ำสั่งถัดลงมำตำมล ำดับ แต่ถ้ำ K มำกกว่ำ 20 ให้แสดงค ำตอบ จบ

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

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

เริม่ตน้

N = 0

K = 1

พมิพผ์ลลพัธ ์

จบ

K > 20

K = K+1

N = N+K

จรงิ

เทจ็

Page 8: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

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

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

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

ค าสัง่ที ่1

ค าสัง่ที ่2

ค าสัง่ที ่n

Page 9: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

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

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

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

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

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

เงื่อนไข

ค าสัง่

ค าสัง่ จรงิ

เทจ็

เงื่อนไข

ค าสัง่ ค าสัง่ ค าสัง่ ค าสัง่ ... กรณทีี ่1 กรณทีี ่2 กรณทีี ่3 กรณทีี ่4

Page 10: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

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

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

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

สัญลักษณ์

เงื่อนไข

ค าสัง่

จรงิ

เทจ็

ค าสัง่

เงื่อนไข

ค าสัง่

เทจ็

ค าสัง่

จรงิ

Page 11: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

เริม่ตน้

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

ผลบวก (sum) = 0

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

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

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

A = sum / 5

จบ

N ≤ 5 จรงิ

เทจ็

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

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

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

sum = sum + data

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

N = N + 1

Page 12: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

ตัวอย่าง การวิเคราะห์และออกแบบโปรแกรม 1.ประโยคปัญหำ “ต้องกำรโปรแกรม ที่ท ำกำรเปลี่ยนค่ำควำมสูง จำกหน่วยวัดเป็นเมตร ไปเป็นฟุตกับนิ้ว โดยให้โปรแกรม ถำมควำมสูงของท่ำนมีหน่วยเป็นเมตร และท ำกำรแปลงค่ำมีหน่วยเป็นฟุตกับนิ้ว (1 ฟุต เท่ำกับ 12 นิ้ว, 1 นิ้ว เท่ำกับ 2.54 เซนติเมตร) พร้อมกับแสดงซูโดโค้ดและโฟลชำร์ตของโปรแกรม” 2.วิเครำะห์ปัญหำ กำรแก้ปัญหำนี้จะต้องเอำควำมสูงเป็นแปลงเป็นเซนติเมตรแล้วเอำค่ำท่ีได้มำหำนิ้วแล้วจึงแปลงเป็นฟุต ข้อมูลที่ต้องกำรน ำมำใช้ ดังต่อไปนี้ 2.1 ควำมต้องกำรของข้อมูล ปัญหำกำรรับค่ำ Input tallness –ค่ำควำมสูง หน่วยเมตร ปัญหำกำรแสดงผล Input foots – ค่ำควำมสูงเป็นฟุต Input inch – ค่ำควำมสูงเป็นนิ้ว สูตรกำรค ำนวณ 1 ฟุต = 12 นิ้ว 1 นิ้ว = 2.54 เซนติเมตร 1 เมตร = 100 เซนติเมตร 3. กำรออกแบบอัลกอริธึม อัลกอริธึมของกำรแก้ไขปัญหำนี้ มีลักษณะตรงไปตรงมำ กำรท ำงำนเป็นไปตำมล ำดับ โดยเบื้องต้นเขียน ออกมำได้ดังนี้ อัลกอริธึมเบื้องต้น

1. รับค่ำควำมสูงของท่ำนมีหน่วยเป็นเมตร 2. ค ำนวณหำค่ำควำมสูงของค่ำที่อ่ำนเข้ำมำ 3. หำค่ำที่เป็นฟุตและนิ้ว 4. แสดงค่ำควำมสูงจำกเมตรเป็นฟุตและนิ้ว

อัลกอริธึมขัดเกลำ 2 2.1 แปลงเมตรให้เซนติเมตรโดยเอำ ควำมสูงที่เมตรรับค่ำคูณ 100/1 2.2 แปลงเซนติเมตรเป็นนิ้ว โดย เอำเซนติเมตรที่ได้ คูณ 1/ 2.54 ซม. อัลกอริธึมขัดเกลำ 3 3.1 แปลงนิ้วให้เป็นฟุต โดย 12 นิ้ว = 1 ฟุต

Page 13: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

เมื่อน ามาเขียนในรูปแบบซูโด้โค้ด ได้เป็นดังนี ้ Flowchart

INPUT tallness Total centimeter= (tallness * 100)/1 Total inch = (Total centimeter*1)/2.54 Total foot= (Total inch *1)/12 Display Total inch Display Total foot

Start

tallness

Total centimeter= (tallness * 100)/1

Total inch = (Total centimeter*1)/2.54

Total foot= (Total inch *1)/12

Total inch

Total foot

Stop

Page 14: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

1.ประโยคปัญหำ “ต้องกำรโปรแกรม ในกำรรับค่ำตัวแปรสองตัวจำก ผู้ใช้แล้วแสดงค่ำตัวแปรที่มีค่ำมำกสุด แสดงซูโดโค้ดและโฟลชำร์ตของโปรแกรม” 2.วิเครำะห์ปัญหำ ผลลัพธ์ คือ ตัวแปรที่มีค่ำมำกสุด ก ำหนดให้เป็น Max ข้อมูลเข้ำ คือ ตัวแปรสองตัว ก ำหนดให้เป็น A และ B กำรประมวลผลคือกำรเปรียบเทียบค่ำตัวแปรหำค่ำมำกสุด ข้อมูลที่ต้องกำรน ำมำใช้ ดังต่อไปนี้ 2.1 ควำมต้องกำรของข้อมูล ปัญหำกำรรับค่ำ Input A –ค่ำตัวเลขตัวแรกให้เป็น A เป็นจ ำนวนจริง Input B –ค่ำตัวเลขตัวที่สองให้เป็น B เป็นจ ำนวนจริง ปัญหำกำรแสดงผล ถ้ำจ ำนวน A มีค่ำมำกกว่ำ B เป็นจริง ให้แสดงค่ำมำก เป็นค่ำ A แต่ถ้ำจ ำนวน A มีค่ำมำกกว่ำ B เป็นเท็จ ให้แสดงค่ำมำกเป็นค่ำ B สูตรกำรค ำนวณ A > B 3. กำรออกแบบอัลกอริธึม อัลกอริธึมของกำรแก้ไขปัญหำนี้ มีลักษณะกำรตัดสินใจ กำรท ำงำนแบบมีเงื่อนไข โดยเบื้องต้นเขียน ออกมำได้ดังนี้ อัลกอริธึมเบื้องต้น

1. รับค่ำตัวเลข A 2. รับค่ำตัวเลข B 3. เปรียบเทียบจ ำนวน 2 จ ำนวน

ถ้ำจ ำนวน A มีค่ำมำกกว่ำ B เป็นจริง ให้แสดงค่ำมำก เป็นค่ำ A แต่ถ้ำจ ำนวน A มีค่ำมำกกว่ำ B เป็นเท็จ ให้แสดงค่ำมำกเป็นค่ำ B 4. แสดงค่ำมำกออกทำงหน้ำจอ

เมื่อน ามาเขียนในรูปแบบซูโด้โค้ด ได้เป็นดังนี ้

INPUT A, B if A>B Max = A else Max = B; Display Max

Page 15: หลักการแก้ปัญหา กับภาษาคอมพิวเตอร์ · การเลือกเครื่องมือและออกแบบขั้นตอนวิธี

Flowchart

A > B

No Yes

Read A,B

START

STOP

Max = A

Max = B

Max