"ใส่โยเกิร์ตก่อน แล้วใส่ผลไม้ สุดท้ายราดน้ำผึ้งข้างบน" ทุกครั้งที่ลูกทำตามสูตรอาหาร ลูกกำลังทำตาม อัลกอริทึม คือรายการขั้นตอนที่ชัดเจนและเรียงลำดับ ซึ่งเปลี่ยนสิ่งที่มีตอนเริ่มให้กลายเป็นผลลัพธ์ตอนท้าย
นั่นแหละคือโปรแกรมคอมพิวเตอร์ ไม่ต้องใช้หน้าจอเพื่อสอนแนวคิดนี้ ห้องครัวเป็นหนึ่งในที่ที่ดีที่สุดสำหรับสำรวจเรื่องนี้ เพราะขั้นตอนเป็นของจริง ผลลัพธ์มองเห็นได้ และความผิดพลาดมักตลก (แถมกินได้ด้วย)
สูตรอาหารมีส่วนประกอบเหมือนโปรแกรม
ก่อนลงมือทำ อ่านสูตรด้วยกันและตั้งชื่อให้แต่ละส่วน
| ในสูตรอาหาร | ในโปรแกรม |
|---|---|
| วัตถุดิบ | ข้อมูลเข้า: สิ่งที่มีตอนเริ่ม |
| ขั้นตอนที่มีเลขเรียงลำดับ | คำสั่ง ทำทีละข้อตามลำดับ |
| "คน 10 ครั้ง" | การทำซ้ำ: ทำขั้นตอนเดิมซ้ำ |
| "ถ้าข้นเกินไป ให้เติมนมหนึ่งช้อน" | เงื่อนไข: ทำบางอย่างก็ต่อเมื่อ... |
| อาหารที่ทำเสร็จ | ผลลัพธ์ |
กับเด็กเล็กไม่ต้องใช้คำว่า "ข้อมูลเข้า" หรือ "การทำซ้ำ" แค่ถามว่า "เราต้องใช้อะไรบ้าง" "เราทำอะไรก่อน" และ "ตอนจบเราจะได้อะไร" ก็พอ
เลือกเมนูง่าย ๆ ที่ปลอดภัย และให้ผู้ใหญ่จัดการทุกอย่างที่ร้อนหรือมีคม เช่น ถ้วยโยเกิร์ตผลไม้ แซนด์วิช สมูทตี้ หรือขนมที่ไม่ต้องใช้ไฟ
ลำดับสำคัญไหม
คำถามชวนคิดที่ดีมากคือ ขั้นตอนไหนสลับที่กันได้ และขั้นไหนสลับไม่ได้
ลองดูถ้วยโยเกิร์ต
- ใส่โยเกิร์ตลงในถ้วย
- ใส่ผลไม้หั่นชิ้นเล็ก
- ราดน้ำผึ้งข้างบน
- กิน
ขั้นที่ 2 กับ 3 สลับกันได้ไหม น่าจะได้ แค่หน้าตาต่างไปนิดหน่อย แล้วขั้นที่ 1 กับ 4 ล่ะ ไม่ได้แน่นอน! คุยกันทีละคู่ "ถ้าทำขั้นนี้ก่อนจะเป็นอย่างไร"
ลูกจะค้นพบว่าบางขั้นตอน แยกกันได้ (สลับลำดับแล้วผลแทบไม่เปลี่ยน) และบางขั้นตอน ต้องพึ่ง ขั้นอื่น (ขั้นหนึ่งต้องมาก่อนอีกขั้น) นี่เป็นหนึ่งในแนวคิดหลักของการวางแผนและการเขียนโปรแกรม
เล่น "พ่อแม่หุ่นยนต์"
เกมนี้เด็ก ๆ ชอบมาก พ่อแม่กลายเป็นหุ่นยนต์ที่ทำตามคำสั่ง ตรงตามคำพูดทุกคำ ไม่มากไม่น้อยไปกว่านั้น
ลูกออกคำสั่งให้ทำแซนด์วิช ถ้าลูกพูดว่า "เอาแยมใส่ขนมปัง" พ่อแม่ก็วางขวดแยมที่ปิดฝาอยู่ไว้บนขนมปัง ถ้าลูกพูดว่า "หยิบมีด" แต่ไม่บอกว่ามือไหน ก็ทำหน้างง
- ให้บรรยากาศสนุกไว้ และหยุดก่อนที่ลูกจะหงุดหงิด
- หัวเราะกันสักพักแล้ว ช่วยลูกให้คำสั่งแม่นยำขึ้น "เปิดฝาขวด ใช้ช้อนตักแยมนิดหน่อย ทาลงบนขนมปังหนึ่งแผ่น"
- สลับบทบาท ให้ลูกเป็นหุ่นยนต์บ้าง
บทเรียนคือคอมพิวเตอร์ก็เหมือนหุ่นยนต์ ทำแค่สิ่งที่ถูกสั่ง ขั้นตอนที่ชัดเจนและแม่นยำจึงสำคัญ
เพิ่มการทำซ้ำและเงื่อนไข
เมื่อลูกคุ้นกับขั้นตอนตามลำดับแล้ว ลองหาขั้นตอนพิเศษสองแบบในสูตรอาหาร
- การทำซ้ำ: "คน 10 ครั้ง" "เติมทีละช้อนจนเต็มชาม" นับไปด้วยกันขณะทำซ้ำ
- เงื่อนไข (ถ้า...): "ถ้ากล้วยลูกใหญ่เกินไป ให้หั่นครึ่ง" "ถ้าส่วนผสมแห้ง ให้เติมน้ำนิดหน่อย" ถามลูกว่า "รอบนี้ต้องทำขั้นนั้นไหม"
การหา "ทำซ้ำ" กับ "ถ้า" ในคำแนะนำประจำวัน เป็นการทำความรู้จักกับชิ้นส่วนพื้นฐานของทุกโปรแกรมอย่างนุ่มนวล
เขียนสูตรอาหารของตัวเอง
สุดท้าย ชวนลูกเขียน (หรือวาด) สูตรอาหารให้คนอื่นทำตาม
- วาดแต่ละขั้นตอนในกรอบของตัวเอง โยงกรอบด้วยลูกศร
- ใส่เลขลำดับขั้นตอน
- ทดลองสูตร ให้ผู้ใหญ่ทำตามที่เขียนไว้ทุกอย่าง แล้วดูว่าผลออกมาถูกไหม
- ถ้ามีอะไรผิด หาขั้นตอนที่ต้องแก้ นักเขียนโปรแกรมเรียกสิ่งนี้ว่า การดีบัก
เด็กที่ยังเขียนไม่ได้ วาดภาพแต่ละขั้นตอนแล้วอธิบายด้วยคำพูดได้
ใน Dologi ปริศนา "ขับรถ" ทำงานแบบเดียวกัน ลูกเรียงคำสั่งให้รถวิ่งผ่านเขาวงกตไปหาดวงดาว และถ้ามีคำสั่งเดียวผิดตำแหน่ง รถก็จะไปโผล่ที่อื่น
สรุป
- สูตรอาหารคืออัลกอริทึม วัตถุดิบเข้า ผ่านขั้นตอนตามลำดับ ได้อาหารออกมา
- ถามลูกว่าขั้นไหนสลับที่ได้ และขั้นไหนต้องมาก่อน
- เล่น "พ่อแม่หุ่นยนต์" เพื่อให้เห็นว่าทำไมคำสั่งต้องแม่นยำ
- หาขั้นตอนทำซ้ำและขั้นตอน "ถ้า" แล้วให้ลูกเขียนและทดลองสูตรของตัวเอง
อ่านเพิ่มเติม: แบ่งงานใหญ่เป็นขั้นตอนเล็ก ๆ: ฝึกลูกคิดทีละขั้น
