การเขียนโปรแกรมกับการพัฒนาทักษะด้านการคิด
อาชีพโปรแกรมเมอร์เป็นอาชีพที่หลายๆ คนใฝ่ฝัน เพราะมีรายได้สูงและเป็นที่ต้องการของตลาดแรงงาน สืบเนื่องจากการเจริญเติบโตทางด้านอุตสาหกรรมซอฟต์แวร์ที่มีการแข่งขันสูง ส่งผลให้สถาบันการศึกษาหลายแห่งมีหลักสูตรการเรียนการสอนการเขียนโปรแกรมตั้งแต่ระดับมัธยมศึกษาจนถึงระดับอุดมศึกษา การสอนให้นักเรียนเป็นโปรแกรมเมอร์ได้นั้นจึงไม่ใช่เรื่องง่าย การเขียนโปรแกรมคอมพิวเตอร์เป็นทักษะอย่างหนึ่งที่ต้องฝึกฝนจนเกิดความชำนาญ ซึ่งต้องอาศัยทักษะด้านการคิดวิเคราะห์ การใช้เหตุผลและการแก้ปัญหาอย่างเป็นขั้นตอน รวมไปถึงการใช้ขั้นตอนวิธีหรืออัลกอริทึม (Algorithm) ในการถ่ายทอดความคิดอย่างเป็นระบบจึงจะนำไปสู่การเขียนโปรแกรมที่มีประสิทธิภาพ
อัลกอริทึม คืออะไร (What is Algorithm?)
ราชบัณฑิตยสถาน ได้บัญญัติคำว่าอัลกอริทึม (Algorithm) เป็นภาษาไทยว่าขั้นตอนวิธี[1] ซึ่งมีความหมายคือ เป็นลำดับของขั้นตอนการคำนวณที่ใช้แก้ปัญหา โดยการเปลี่ยนข้อมูลนำเข้าของปัญหา (input) ออกมาเป็นผลลัพธ์ (output) ขั้นตอนวิธีดังกล่าวนั้นจะสามารถนำมาเขียนเป็นโปรแกรมในคอมพิวเตอร์ได้ [2]
ในการแก้ปัญหาโดยใช้คอมพิวเตอร์นั้น การออกแบบวิธีแก้ปัญหาอย่างเป็นขั้นตอนและง่ายต่อการทำความเข้าใจเป็นสิ่งสำคัญมาก เพราะจะทำให้สามารถเขียนโปรแกรมจากขั้นตอนวิธีที่ได้ออกแบบไว้ได้ง่าย ตัวอย่างเครื่องมือที่ใช้เพื่อการออกแบบขั้นตอนวิธี เช่น รหัสลำลอง (pseudocode) เป็นการเขียนขั้นตอนวิธีการแก้ปัญหา โดยการอธิบายเป็นข้อความทีละขั้น
ผังงาน (Flowchart) เป็นการใช้สัญลักษณ์ในการแสดงรายละเอียดและลำดับของแต่ละขั้นตอนที่ใช้แก้ปัญหา[3]
รหัสลำลองหรือผังงานจึงเป็นการเขียนความคิดในการแก้ปัญหาที่เป็นขั้นตอนวิธีออกมาในรูปแบบของข้อความหรือสัญลักษณ์เพื่อให้สามารถตรวจสอบได้ว่าขั้นตอนวิธีนั้นสามารถแก้ปัญหาได้หรือไม่ ซึ่งปัญหาแต่ละปัญหาอาจจะมีวิธีในการแก้ปัญหาได้หลายวิธีซึ่งขั้นตอนวิธีในการแก้ปัญหาของแต่ละคนก็จะแตกต่างกันออกไปตัวอย่างการแสดงขั้นตอนวิธีในการแก้ปัญหาของการหา ผลรวมของจำนวนนับตั้งแต่ 1 – N ดังนี้
ขั้นตอนวิธีของนักเรียนคนที่ 1 | ขั้นตอนวิธีของนักเรียนคนที่ 2 |
ภาพที่ 3 ผังงานในการแสดงขั้นตอนวิธีในการหาผลรวมของจำนวนนับตั้งแต่ 1 – N
จะเห็นได้ว่านักเรียนทั้งสองคนแสดงลำดับขั้นตอนวิธีในการแก้ปัญหาที่แตกต่างกันแต่ได้ผลลัพธ์เหมือนกัน จากผังงานนักเรียนคนที่ 1 คิดขั้นตอนวิธีการหาผลลัพธ์จากการนำตัวเลขทั้งหมดบวกกันไปเรื่อยๆ จนถึงจำนวนที่ N หรือตัวสุดท้าย ทำให้มีการประมวลผลหรือคำนวณถึง N ครั้งกว่าจะได้ผลลัพธ์ สำหรับนักเรียนคนที่ 2 คำนวณโดยใช้สูตรมีการประมวลผลเพียงครั้งเดียวก็สามารถหาผลลัพธ์ได้ซึ่งมาจากการเรียนรู้และประสบการณ์ในการเรียนวิชาคณิตศาสตร์ ดังนั้นนอกจากสองวิธีที่กล่าวมาอาจยังมีวิธีในการแก้ปัญหานี้อีก
ดังนั้นผู้สอนจะต้องสอนให้ผู้เรียนได้เรียนรู้ขั้นตอนวิธีที่หลากหลาย ชี้แนะแนวทางในการแก้ปัญหาให้ผู้เรียนสามารถเลือกใช้ขั้นตอนวิธีที่ดีที่สุดในการแก้ปัญหา การสอนกระบวนการคิดแก้ปัญหานั้นจะต้องสอนให้ผู้เรียนได้ใช้เหตุผลในการการหาคำตอบ อาจจะใช้การลองผิดลองถูก การแยกคำตอบที่ไม่ต้องการ หรือใช้วิธีการอื่นๆ ที่สามารถเลือกใช้ให้เหมาะสมกับตัวปัญหาและประสบการณ์ของผู้แก้ปัญหาเอง วิธีการเหล่านี้มีขั้นตอนหลักที่คล้ายคลึงกัน ซึ่งประกอบด้วย 4 ขั้นตอน[5] ได้แก่ 1) การวิเคราะห์และกำหนดรายละเอียดของปัญหา 2) การเลือกเครื่องมือและออกแบบขั้นตอนวิธีในการแก้ปัญหา 3) การดำเนินการแก้ปัญหา 4) การตรวจสอบและปรับปรุงวิธีการ การฝึกให้ผู้เรียนมีทักษะกระบวนการคิดแก้ปัญหานั้นผู้สอนจะต้องหารูปแบบของปัญหาที่หลากหลายเพื่อสร้างประสบการณ์ในการแก้ปัญหาให้กับผู้เรียน และฝึกให้ผู้เรียนได้ใช้วิธีการแก้ปัญหาให้ครบตามหลักและวิธีการแก้ปัญหา จะทำให้ผู้เรียนมีทักษะด้านการคิดที่สูงขึ้นซึ่งวิธีการเหล่านี้จะนำไปใช้ในการฝึกเขียนโปรแกรมได้อย่างมีประสิทธิภาพ
การเรียนรู้ขั้นตอนวิธีจำเป็นต่อการเขียนโปรแกรมอย่างยิ่งเพราะเป็นการพัฒนาทักษะในด้านการคิดให้ผู้เรียนสามารถแก้ปัญหาอย่างมีขั้นตอนวิธีนำไปสู่เป้าหมายหรือผลลัพธ์ที่ต้องการ ขั้นตอนวิธีในการแก้ปัญหาที่ดีจะช่วยให้ประหยัดทั้งเวลาและทรัพยากรต่างๆ ได้อย่างมาก ซึ่งเป็นหลักการที่นักเขียนโปรแกรมทุกคนต้องมี หากนำกระบวนการคิดตามขั้นตอนวิธีไปใช้วางแผนหรือเป็นแนวทางในการดำเนินชีวิตเพื่อให้ได้เป้าหมายที่ต้องการ โดยกำหนดขั้นตอนการดำเนินชีวิตและปฏิบัติตามทุกขั้นตอนก็จะทำให้ประสบความสำเร็จในชีวิตได้อย่างแน่นอน
ยกร่างบทความโดย นายพลกฤษณ์ รินทรึก โรงเรียนจำปาหลวงวิทยาคม จ.กาฬสินธุ์
บรรณาธิการโดย คณะบรรณาธิการสาขาคอมพิวเตอร์ สสวท
อ้างอิง
[1] ราชบัณฑิตยสถาน, พจนานุกรม ฉบับราชบัณฑิตยสถาน พ.ศ. 2546,2546 หน้า 5
[2] สมชาย ประสิทธิ์จูตระกูล, การออกแบบและวิเคราะห์อัลกอริทึม, 2545, หน้า 1
[3] Wikipedia:The Free Encyclopedia,ขั้นตอนวิธี[ออนไลน์]. เข้าถึงจาก http://th.wikipedia.org/wiki/ขั้นตอนวิธี [2015,Jan 21]
[4] สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี กระทรวงศึกษาธิการ,เทคโนโลยีสารสนเทศและการสื่อสาร ชั้นมัธยมศึกษาปีที่ 4-6,พ.ศ.2555,หน้า 191
[5] สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี กระทรวงศึกษาธิการ,เทคโนโลยีสารสนเทศและการสื่อสาร ชั้นมัธยมศึกษาปีที่ 4-6,พ.ศ.2555,หน้า 188-193