หน่วยที่ 1 แนวคิดเชิงคำนวณ

หน่วยที่ 1 แนวคิดเชิงคำนวณ

1.1 ขั้นตอนวิธี

1.2 การแยกส่วนประกอบและการย่อยปัญหา

1.3 การหารูปแบบ
1.4 การคิดเชิงนามธรรม

แนวคิดเชิงคำนวณ (Computational Thinking)

การแยกส่วนประกอบ และการย่อยปัญหา (Decomposition)

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

แนวคิดเชิงคำนวณมีองค์ประกอบที่สำคัญ 4 ส่วน ได้แก่ การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) การพิจารณารูปแบบ (Pattern Recognition) การคิดเชิงนามธรรม (Abstraction) การออกแบบอัลกอริทึม (Algorithm) ในบทเรียนนี้จะกล่าวเพียง การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) เท่านั้น โดยมีรายละเอียดดังนี้


ภาพที่ 1 แนวคิดเชิงคำนวณ

ที่มา https://www.bbc.co.uk/bitesize/guides/zqqfyrd/revision/1, BBC

การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)

เป็นการแยกส่วนประกอบเป็นวิธีคิดรูปแบบหนึ่งของแนวคิดเชิงคำนวณ เป็นการพิจารณาเพื่อ แบ่งปัญหาหรืองานออกเป็นส่วนย่อย ทำให้สามารถ จัดการกับปัญหาหรืองานได้ง่ายขึ้น การแตกปัญหาที่ซับซ้อนให้เป็นปัญหาย่อยที่มีขนาดเล็กลงและซับซ้อนน้อยลง เพื่อช่วยให้การวิเคราะห์และออกแบบวิธีการแก้ปัญหาทำได้ง่ายขึ้น ในการเขียนโปรแกรมคอมพิวเตอร์ เช่น การเขียนโปรแกรมแยกเป็นส่วน ๆ แยกเป็นแพ็กเกจ แยกเป็นโมดูล หรือมองเป็น layer หรือการแบ่งปัญหาเมื่อจะแก้ไขอุปกรณ์ เช่น การแยกส่วนประกอบของพัดลม แบ่งเป็นใบพัด มอเตอร์ ตะแกรงหน้า ขอบตะแกรง ฝาครอบ ฐานพัดลม เป็นต้น หรือ การแยกส่วนประกอบของรถจักรยาน แบ่งเป็น ล้อหน้า ล้อหลัง หลังอาน โซ่ โช๊ค แฮนด์ มือเบรก เป็นต้น ถ้ามองในรายละเอียดของล้อจักรยานจะเห็น ว่าประกอบด้วย ยางล้อ วงล้อ และซี่ลวด หรือถ้าพิจารณาชุด ขับเคลื่อนก็จะพบว่าประกอบด้วยเฟือง โซ่ และบันได เป็นต้น


ภาพที่ 2 องค์ประกอบของจักรยาย

ที่มา หนังสือเรียน สสวท.

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

กรณีตัวอย่างการแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)

1. รถของกวิน

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

การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)

1. แบตเตอรี่หมด

2. น้ำมันเชื้อเพลิงหมด

3. เครื่องยนต์มีปัญหา


ภาพที่ 3 รถของครูกวิน

ที่มา https://www.freepik.com/free-vector/car-dealer-showing-new-red-sports-auto_1311576.htm#page=4&query=car+people&position=27, iconicbestiary

2. การพาจรวดไปดาวอังคาร

จากเว็บไซต์ https://csunplugged.org/en/topics/kidbots/unit-plan/sending-a-rocket-to-mars/ เป็นกิจกรรมที่จะให้จรวดเดินทางไปดาวอังคาร โดยใช้ลูกศรในการเดิน การหมุน เพื่อทำภาระกิจพิชิตดาวอังคารให้สำเร็จ เพื่อฝึกกระบวนการคิดเป็นขั้นตอนของผู้เรียน และกระบวนการแก้ปัญหา


ภาพที่ 4 ส่งจรวดไปดาวอังคาร

ที่มา https://csunplugged.org/en/topics/kidbots/unit-plan/sending-a-rocket-to-mars, csunplugged.org

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

การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition)

1. เดินตรงไป 2 ช่อง

2. เลี้ยวขวา

3. เดินตรงไป 3 ช่อง

3. พัดลม

นอกจากการเขียนโปรแกรมสิ่งของในชีวิตประจำวันเช่น จะเรียนรู้ว่าพัดลมทำงานอย่างไร ก็ให้พิจารณาแยกชิ้นส่วนของพัดลมว่ามีอะไรบ้างและศึกษาทีละชิ้น


ภาพที่ 5 ส่วนประกอบพัดลม

https://www.baanlaesuan.com/45800/maintenance/fan, สุพจน์ เพชรศักดิ์วงศ์

การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) ของพัดลม

1. มอเตอร์พร้อมกะโหลกหลังและฐานพัดลม

2. ตะแกรงหลัง

3. ใบพัด

4. ตะแกรงหน้า

4. การเดินทาง

หากจะเดินทางไปเที่ยวหัวหิน จะมีการวางแผนเดินทางอย่างไร ซึ่งอาจแยกย่อยวิธีเดินทางเป็น 4 รูปแบบ เช่น ขับรถไปเอง นั่งรถทัวร์ นั่งรถตู้ หรือนั่งรถไฟ จากนั้นก็มาวิเคราะห์ถึงข้อดีข้อเสียแต่ละวิธีการ


ภาพที่ 6 การเลือกการเดินทาง

ที่มา https://www.freepik.com/free-vector/city-transport-with-bike-car-bus-tram-symbols-isometric-vector-illustration_3997940.htm#page=2&query=transportation&position=30, macrovector

การแบ่งปัญหาใหญ่เป็นปัญหาย่อย (Decomposition) ของพัดลม

1. ขับรถไปเอง

2. นั่งรถทัวร์

3. นั่งรถตู้

4. นั่งรถไฟ

วิเคราะห์ถึงข้อดีข้อเสียแต่ละวิธีการรวมถึงการคำนวณค่าใช้จ่ายของแต่ละวิธีการเดินทางเพื่อเลือกการเดินทางที่ดีที่สุด

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

แหล่งที่มา

ชาญวิทย์ ศรีอุดม. (2562, 12 สิงหาคม). แนวคิดเชิงคำนวณ. สืบค้นเมื่อ 12 สิงหาคม 2562. จาก http://charnwit.in.th/?p=1302#.XX8Q4dUzbIU.

สถาบันส่งเสริมการสอนวิทยาศาสตร์และเทคโนโลยี. (2562). เทคโนโลยี (วิทยาการคำนวณ). สำนักพิมพ์จุฬาลงกรณ์ : กรุงเทพมหานคร.

csunplugged.org. (2562, 12 สิงหาคม). กิจกรรมส่งจรวดไปดาวอังคาร สืบค้นเมื่อ 12 สิงหาคม 2562, จาก https://csunplugged.org/en/topics/kidbots/unit-plan/sending-a-rocket-to-mars.

Tim Bell, Ian H. Witten and Mike Fellows. (2562). ซีเอส อันปลั๊กโปรแกรมเสริมสมรรถนะและขยายความสามารถของเด็กระดับประถมศึกษา. สถาบันเทคโนโลยีนานาชาติสิรินธร มหาวิทยาลัยธรรมศาสตร์ : ปทุมธานี