จุดประสงค์ (เมื่อเรียนจบแล้ว นักเรียนสามารถ)
อธิบายกระบวนการคิดตามแนวคิดเชิงคำนวณ ซึ่งประกอบไปด้วยการแบ่งปัญหาใหญ่เป็นปัญหาย่อย การพิจารณารูปแบบการคิดเชิงนามธรรม และการออกแบบอัลกอริทึม
ออกแบบอัลกอริทึมเพื่อการแกัปัญหาโดยใช้แนวคิดเชิงคำนวณ
แนวคิดเชิงคำนวณ (computational thinking) เป็นกระบวนการวิเคราะห์ปัญหา เพื่อให้ได้แนวทางการหาคำตอบอย่างเป็นขั้นตอนที่สามารถนำไปปฏิบัติได้โดยบุคคลหรือคอมพิวเตอร์อย่างถูกต้องและแม่นยำ ซึ่งเรียกว่า อัลกอริทึม ทักษะการใช้แนวคิดเชิงคำนวณจึงสำคัญต่อการแก้ปัญหา ช่วยให้สามารถสื่อสารแนวคิดกับผู้อื่นได้อย่างมีประสิทธิภาพ รวมถึงช่วยพัฒนาพื้นฐานในการเขียนโปรแกรม คอมพิวเตอร์ด้วย
แนวคิดเชิงคำนวณมีองค์ประกอบที่สำคัญ 4 ส่วน ได้แก่
1. การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (decomposition) เป็นการแตกปัญหาที่ขับซ้อนให้เป็นปัญหาย่อยที่มีขนาดเล็กลงและซับซ้อนน้อยลง เพื่อช่วยให้การวิเคราะห์และออกแบบวิธีการแก้ปัญหาทำได้ง่ายขึ้น
2. การพิจารณารูปแบบ (pattern recognition) เป็นการวิเคราะห์หาความเหมือนหรือคล้ายคลึงกันระหว่างปัญหาย่อยที่แตกออกมา หรือความคล้ายคลึงกับปัญหาอื่น ๆ ที่มีผู้ออกแบบวิธีการแก้ไขไว้ก่อนแล้ว
3. การคิดเชิงนามธรรม (abstraction) เป็นการแยกรายละเอียดที่สำคัญและจำเป็นต่อการแก้ปัญหาออกจากรายละเอียดที่ไม่จำเป็น ซึ่งรวมไปถึงการแทนกลุ่มของปัญหา ขั้นตอน หรือกระบวนการที่มีรายละเอียด ปลีกย่อยหลายขั้นตอนด้วยขั้นตอนใหม่เพียงขั้นตอนเดียว
4. การออกแบบอัลกอริทีม (algorithm) เป็นการพัฒนากระบวนการหาคำตอบให้เป็นขั้นตอนที่บุคคล
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย ทำให้ความซับซ้อนของปัญหาลดลง ส่งผลให้สามารถออกแบบขั้นตอนการแก้ปัญหาได้ง่ายิ่งขึ้น ตัวอย่างที่ 1.1 ภาพวาดหมู่บ้าน
นักเรียนวาดภาพหมู่บ้าน แล้วบอกให้เพื่อนวาดภาพหมู่บ้านให้เหมือนกับภาพที่นักเรียนวาดให้มากที่สุด โดยไม่แสดงภาพให้เพื่อนเห็น (ภาพตัวอย่าง 1 ช่องมี 20 หน่วย จุดมุมล่างซ้าย คือพิกัด 0,0)
การอธิบายรายละเอียดของภาพเพื่อให้เพื่อนวาดตามแบ่ง ดังนี้
ในภาพมีบ้านกี่หลัง
ขั้นตอนการวาดภาพหลังแรกเป็นอย่างไรและอยู่ตำแหน่งใด
ขั้นตอนวาดบ้านหลังที่ 2 เป็นอย่างไร และอยู่ตำแหน่งใด
ขั้นตอนวาดบ้านหลังที่ 3 เป็นอย่างไร และอยู่ตำแหน่งใด
ปัญหาจากตัวอย่างที่ 1.1 นั้นค่อนข้างง่ายและชัดเจนเนื่องจากมีข้อกำหนดและผลลัพธ์ที่แน่นอน
ปัญหาในชีวิตประจำวันมีหลากหลาย เช่น ในตอนนี้นักเรียนสามารถบวกเลขสองหลัก 2 จำนวนเข้าด้วยกันได้ง่ายด้วยตนเอง แต่น้อง ๆ ระดับอนุบาลอาจบวกเลขได้เพียงหนึ่งหลัก นักเรียนจะมีวิธีการสอนน้องอย่างไรให้สามารถบวกเลขสองหลักได้
ปัญหาบางประเภทสามารถแบ่งออกเป็นปัญหาย่อยที่อาจจะมีรูปแบบเดียวกันหรือคล้ายกัน นักเรียนสามารถนำรูปแบบปัญหาหนึ่งไปประยุกต์ใช้อีกปัญหาอื่น ๆ ได้ ทำให้ลดขั้นตอนในการออกแบบ ตัวอย่างที่ 1.2 รูปแบบในการวาดหมู่บ้าน
ปัญหาย่อยที่ 1 ในภาพมีบ้านกี่หลัง คำตอบ 3 หลัง
ปัญหาย่อยที่ 2 ขั้นตอนการวาดภาพหลังแรกเป็นอย่างไรและอยู่ตำแหน่งใด คำตอบ ตัวบ้านวาดสี่เหลี่ยมจตุรัส ขนาดด้านละ 100 หน่วย ตำแหน่ง 0,0 และวาดหลังคาด้วยรูป 3 เหลี่ยมด้านเท่าขนาดด้านละ 100 หน่วย
ปัญหาย่อยที่ 3 ขั้นตอนวาดบ้านหลังที่ 2 เป็นอย่างไร และอยู่ตำแหน่งใด คำตอบ ตัวบ้านวาดสี่เหลี่ยมจตุรัส ขนาดด้านละ 50 หน่วย ตำแหน่ง 120,90 และวาดหลังคาด้วยรูป 3 เหลี่ยมด้านเท่าขนาดด้านละ 50 หน่วย
ปัญหาย่อยที่ 4 ขั้นตอนวาดบ้านหลังที่ 3 เป็นอย่างไร และอยู่ตำแหน่งใด คำตอบ ตัวบ้านวาดสี่เหลี่ยมจตุรัส ขนาดด้านละ 80 หน่วย ตำแหน่ง 200,10 และวาดหลังคาด้วยรูป 3 เหลี่ยมด้านเท่าขนาดด้านละ 80 หน่วย
แม้ว่ากระบวนการข้างต้นสามารถสื่อความได้ครบถ้วน และผู้ที่นำไปปฏิบัติตามีแนวโน้มที่จะวาดภาพหมู่บ้านได้ใกล้เคียงกับต้นฉบับ แต่เราสามารถทำกระบวนการนี้ให้กระชับขึ้น โดยอาศัยการพิจารณารูปแบบบ้านทั้งสามหลัง ที่มีองค์ประกอบคล้ายกัน คือ ตัวบ้าน หลังคา ตำแหน่งมุมล่างซ้าย และขนาด เป็นองค์ประกอบหลัก แต่มีสีและค่าที่แตกต่างกัน
การคิดเชิงนามธรรม (abstraction) คือ กระบวนการคัดแยกคุณลักษณะที่สำคัญออกจากรายละเอียด รวมถึงการซ่อนรายละเอียด ขั้นตอนและกระบวนการที่มีปลีกย่อยให้เป็นขั้นตอนเดียว
จากการวิเคราะห์รูปแบบของบ้านในตัวอย่างที่ 1.2 บ้านแต่ละหลังมีรูปแบบคล้ายกัน คือ มีตัวบ้านและหลังคาที่มีสีแตกต่างกัน การซ่อนรายละเอียดสามารถนำมาอธิบายการวาดบ้านแต่ละหลัง ได้ดังนี้
อัลกอริทึม หมายถึง รายการคำสั่งที่อธิบายขั้นตอนในการแกปัญหา โดยแต่ละคำสั่งนั้นต้องเป็นคำสั่งที่ให้ผู้อื่นนำไปฏิบัติตามได้โดยไม่มีความกำกวม มักอยู่ในรูปรหัสลำลอง (pseudo code) หรือผังงาน (flowchart) ในกรณีที่ใช้คอมพิวเตอร์แก้ปัญหา อัลกอริทึมจะต้องถูกแปลงให้อยู่ในรูปของภาษาโปรแกรม เพื่อให้คอมพิวเตอร์สามารถนำไปปฏิบัติตามได้
ตัวอย่างที่ 1.4 อัลกอริทึมวาดภาพหมู่บ้าน สำหรับคนนำไปวาด
ขั้นตอนหลัก
วาดรูปบ้านขนาด 100 หน่วย ที่ตำแหน่ง 0,0
วาดรูปบ้านขนาด 50 หน่วย ที่ตำแหน่ง 120,90
วาดรูปบ้านขนาด 80 หน่วย ที่ตำแหน่ง 200,10
ขั้นตอนย่อย
วาดรูปสี่เหลี่ยมจตุรัสความยาวด้านละ s หน่วย ให้มีมุมล่างซ้ายที่พิกัด (x,y)
วาดรูปสามเหลี่ยมด้านเท่าขนาด s หน่วยไว้บนสี่เหลี่ยมจตุรัส
ตัวอย่างที่ 1.5 อัลกอริทึมวาดภาพหมู่บ้าน สำหรับสร้างเป็นโปรแกรมคอมพิวเตอร์
ขั้นตอนหลัก
วาดรูปบ้านขนาด 100 หน่วย ที่ตำแหน่ง (0,0)
วาดรูปบ้านขนาด 50 หน่วย ที่ตำแหน่ง (120,90)
วาดรูปบ้านขนาด 80 หน่วย ที่ตำแหน่ง (200,10)
ขั้นตอนย่อย 1 การวาดรูปบ้านสี่เหลี่ยมจตุรัสขนาด s หน่วย
ทำคำสั่งต่อไปนี้ซ้ำ 4 รอบ
เดินหน้า s หน่วย
หันซ้าย 90 องศา
ขั้นตอนย่อย 2 การวาดรูปสามเหลี่ยมด้านเท่าขนาด s หน่วย
ทำคำสั่งต่อไปนี้ซ้ำ 3 รอบ
เดินหน้า s หน่วย
หันซ้าย 120 องศา
ขั้นตอนย่อย 3 การวาดรูปบ้านขนาด s หน่วย ที่ตำแหน่ง (x,y)
ยกปากกา
เคลื่อนไปยังตำแหน่ง (x,y)
วางปากกา
กำหนดทิศทางไปด้านขวา
วาดรูปสี่เหลี่ยมจตุรัสขนาด s หน่วย
หัดซ้าย 90 องศา
เดินหน้า s หน่วย
หันขวา 90 องศา
วาดรูปสามเหลี่ยนด้านเท่าขนาด s หน่วย
ตัวอย่างที่ 1.6 สอนน้องจัดหนังสือ
สมมติว่านักเรียนต้องการสอนน้องให้รู้จักการจัดเรียงหน้งสือตามลำดับความสูงให้เป็นระเบียบเพื่อให้มีความสวยงามและง่ายต่อการค้นหา นักเรียนต้องคิดกระบวนการเป็นขั้นตอน เพื่อให้น้องสามารถปฏิบัติตามได้ง่าย ไม่ว่าจะมีหน้งสือกี่เล่ม และมีลำดับเริ่มต้นแบบใดก็ได้ นักเรียนมีขั้นตอนในการจัดเรียงอย่างไร
การแบ่งปัญหาใหญ่เป็นปัญหาย่อย
การพยายามจัดหนังสือกองใหญ่ทั้งกองนั้นอาจเกิดความยุ่งยาก การแบ่งปัญหาใหญ่เป็นปัญหาย่อยช่วยทำให้การออกแบบขั้นตอนการแก้ปัญหาทำได้เป็นระบบมากขึ้น โดยอาจแบ่งเป็นปัญหาย่อย ดังนี้
ปัญญหาย่อยที่ 1 หนังสือเล่มใดควรจัดไว้เป็นลำดับแรก
ปัญหาย่อยที่ 2 ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกมาเป็นหนังสือที่วางไว้อยู่ลำดับที่สอง
ปัญหาย่อยที่ 3 ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางไว้ลำดับที่ สาม
การพิจารณารูปแบบในการสอนน้องจัดหนังสือ
ปัญญหาย่อยที่ 1 หนังสือเล่มใดควรจัดไว้เป็นลำดับแรก คำตอบ หนังสือเล่มที่มีความสูงมากที่สุด
ปัญหาย่อยที่ 2 ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกมาเป็นหนังสือที่วางไว้อยู่ลำดับที่สอง คำตอบ หนังสือที่มีความสูงที่สุดในกองที่เหลือ
ปัญหาย่อยที่ 3 ในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางไว้ลำดับที่ สาม คำตอบ หนังสือที่มีความสูงที่สุดในกองที่เหลือ
ปัญหาย่อยสุดท้าย
เห็นได้ว่าปัญหาย่อยมีรูปแบบเดียวกัน และมุ่งหาคำตอบในลักษณะเดียวกัน คือ ปัญหาย่อยในกองหนังสือที่เหลือ หนังสือเล่มใดควรเลือกออกมาเป็นหนังสือที่วางอยู่ลำดับถัดไป คำตอบ หนังสือที่มีความสูงมากที่สุดในกองหน้งสือที่เหลืออยู่
การคิดเชิงนามธรรมในปัญหาสอนน้องจัดหนังสือ
เนื่องจากขั้นตอนที่นำไปปฏิบัติตามต้องการเพียงจัดเรียงหนังสือตามลำดับจากสูงไปตำ่ รายละเอียดที่จำเป็นเพื่อใช้ในการตัดสินใจเลือกหนังสือจึงมีเพียงความสูงของหนังสือแต่ละเล่ม ในขณะที่สีและความหนาของหนังสือนั้นถือว่าเป็นรายละเอียดที่ไม่จำเป็น จึงสามารถตัดออกไปได้ในกระบวนการแก้ปัญหา
อัลกอริทึมสำหรับสอนน้องจัดหนังสือ
ขั้นตอนหลัก
ทำขั้นตอนต่อไปนี้ซ้ำจนกระทั้งไม่มีหนังสือเหลืออยู่ในกอง
เลือกหนังสือที่มีความสูงมากที่สุดในกอง
นำหนังสือที่เลือกจากขั้นตอนที่ 1 จัดเรียงไว้บนโต๊ะ โดยวางไว้ถัดจากแถวหน้งสือที่จัดไว้แล้วก่อนหน้านี้ ถ้ายังไม่มีหนังสือในแถวให้วางหนังสือเล่มนี้ไว้เป็นเล่มแรก
สรุปท้ายบท
แนวคิดเชิงคำนวณเป็นวิธีการวิเคราะห์ปัญหาอย่างหนึ่งเพื่อให้ได้แนวทางการหาคำตอบออกมาเป็นขั้นตอน หรือเรียกว่าอัลกอริทึม ซึ่งสามารถนำไปถ่ายทอดให้บุคคลอื่นหรือคอมพิวเตอร์ปฏิบัติตามได้อย่างถูกต้องและแม่นยำ แนวคิดเชิงคำนวณมี 4 องค์ประกอบ คือ การแบ่งปัญหาใหญ่เป็นปัญหาย่อย การพิจารณารูปแบบ การคิดเชิงนามธรรมและการออกแบบอัลกอริทึม ในการแก้ปัญหาโดยใช้องค์ประกอบทั้ง 4 นั้นอาจไม่ได้นำมาใช้ตามลำดับ หรือใช้ครบทุกองค์ประกอบ บางปัญหาอาจมีการพิจารณาหลายองค์ประกอบไปพร้อมกันได้