Skip to main content

การเขียนโปรแกรมกับการพัฒนาทักษะด้านการคิด

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

อัลกอริทึม คืออะไร (What is Algorithm?)

ราชบัณฑิตยสถาน ได้บัญญัติคำว่าอัลกอริทึม (Algorithm) เป็นภาษาไทยว่าขั้นตอนวิธี[1] ซึ่งมีความหมายคือ เป็นลำดับของขั้นตอนการคำนวณที่ใช้แก้ปัญหา โดยการเปลี่ยนข้อมูลนำเข้าของปัญหา (input) ออกมาเป็นผลลัพธ์ (output) ขั้นตอนวิธีดังกล่าวนั้นจะสามารถนำมาเขียนเป็นโปรแกรมในคอมพิวเตอร์ได้ [2]

ในการแก้ปัญหาโดยใช้คอมพิวเตอร์นั้น  การออกแบบวิธีแก้ปัญหาอย่างเป็นขั้นตอนและง่ายต่อการทำความเข้าใจเป็นสิ่งสำคัญมาก  เพราะจะทำให้สามารถเขียนโปรแกรมจากขั้นตอนวิธีที่ได้ออกแบบไว้ได้ง่าย   ตัวอย่างเครื่องมือที่ใช้เพื่อการออกแบบขั้นตอนวิธี  เช่น รหัสลำลอง (pseudocode)  เป็นการเขียนขั้นตอนวิธีการแก้ปัญหา  โดยการอธิบายเป็นข้อความทีละขั้น

image001
รูปที่  1 ตัวอย่างรหัสลำลอง

ผังงาน (Flowchart) เป็นการใช้สัญลักษณ์ในการแสดงรายละเอียดและลำดับของแต่ละขั้นตอนที่ใช้แก้ปัญหา[3]

image002รูปที่ 2 ตัวอย่างผังงาน

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

programming, skill, thinking, การโปรแกรม, เขียนโปรแกรม