บทความทั้งหมด

สูตรอาหารก็คือโปรแกรม: อัลกอริทึมในชีวิตประจำวัน

ไข่หนึ่งฟองทางซ้าย ลูกศร ชามผสมที่มีช้อนไม้ตรงกลาง ลูกศรอีกอัน และจานที่มีคุกกี้ทางขวา อ่านจากซ้ายไปขวาเหมือนขั้นตอน

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

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

สูตรอาหารมีส่วนประกอบเหมือนโปรแกรม

ก่อนลงมือทำ อ่านสูตรด้วยกันและตั้งชื่อให้แต่ละส่วน

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

กับเด็กเล็กไม่ต้องใช้คำว่า "ข้อมูลเข้า" หรือ "การทำซ้ำ" แค่ถามว่า "เราต้องใช้อะไรบ้าง" "เราทำอะไรก่อน" และ "ตอนจบเราจะได้อะไร" ก็พอ

เลือกเมนูง่าย ๆ ที่ปลอดภัย และให้ผู้ใหญ่จัดการทุกอย่างที่ร้อนหรือมีคม เช่น ถ้วยโยเกิร์ตผลไม้ แซนด์วิช สมูทตี้ หรือขนมที่ไม่ต้องใช้ไฟ

ลำดับสำคัญไหม

คำถามชวนคิดที่ดีมากคือ ขั้นตอนไหนสลับที่กันได้ และขั้นไหนสลับไม่ได้

ลองดูถ้วยโยเกิร์ต

  1. ใส่โยเกิร์ตลงในถ้วย
  2. ใส่ผลไม้หั่นชิ้นเล็ก
  3. ราดน้ำผึ้งข้างบน
  4. กิน

ขั้นที่ 2 กับ 3 สลับกันได้ไหม น่าจะได้ แค่หน้าตาต่างไปนิดหน่อย แล้วขั้นที่ 1 กับ 4 ล่ะ ไม่ได้แน่นอน! คุยกันทีละคู่ "ถ้าทำขั้นนี้ก่อนจะเป็นอย่างไร"

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

เล่น "พ่อแม่หุ่นยนต์"

เกมนี้เด็ก ๆ ชอบมาก พ่อแม่กลายเป็นหุ่นยนต์ที่ทำตามคำสั่ง ตรงตามคำพูดทุกคำ ไม่มากไม่น้อยไปกว่านั้น

ลูกออกคำสั่งให้ทำแซนด์วิช ถ้าลูกพูดว่า "เอาแยมใส่ขนมปัง" พ่อแม่ก็วางขวดแยมที่ปิดฝาอยู่ไว้บนขนมปัง ถ้าลูกพูดว่า "หยิบมีด" แต่ไม่บอกว่ามือไหน ก็ทำหน้างง

  • ให้บรรยากาศสนุกไว้ และหยุดก่อนที่ลูกจะหงุดหงิด
  • หัวเราะกันสักพักแล้ว ช่วยลูกให้คำสั่งแม่นยำขึ้น "เปิดฝาขวด ใช้ช้อนตักแยมนิดหน่อย ทาลงบนขนมปังหนึ่งแผ่น"
  • สลับบทบาท ให้ลูกเป็นหุ่นยนต์บ้าง

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

เพิ่มการทำซ้ำและเงื่อนไข

เมื่อลูกคุ้นกับขั้นตอนตามลำดับแล้ว ลองหาขั้นตอนพิเศษสองแบบในสูตรอาหาร

  • การทำซ้ำ: "คน 10 ครั้ง" "เติมทีละช้อนจนเต็มชาม" นับไปด้วยกันขณะทำซ้ำ
  • เงื่อนไข (ถ้า...): "ถ้ากล้วยลูกใหญ่เกินไป ให้หั่นครึ่ง" "ถ้าส่วนผสมแห้ง ให้เติมน้ำนิดหน่อย" ถามลูกว่า "รอบนี้ต้องทำขั้นนั้นไหม"

การหา "ทำซ้ำ" กับ "ถ้า" ในคำแนะนำประจำวัน เป็นการทำความรู้จักกับชิ้นส่วนพื้นฐานของทุกโปรแกรมอย่างนุ่มนวล

เขียนสูตรอาหารของตัวเอง

สุดท้าย ชวนลูกเขียน (หรือวาด) สูตรอาหารให้คนอื่นทำตาม

  • วาดแต่ละขั้นตอนในกรอบของตัวเอง โยงกรอบด้วยลูกศร
  • ใส่เลขลำดับขั้นตอน
  • ทดลองสูตร ให้ผู้ใหญ่ทำตามที่เขียนไว้ทุกอย่าง แล้วดูว่าผลออกมาถูกไหม
  • ถ้ามีอะไรผิด หาขั้นตอนที่ต้องแก้ นักเขียนโปรแกรมเรียกสิ่งนี้ว่า การดีบัก

เด็กที่ยังเขียนไม่ได้ วาดภาพแต่ละขั้นตอนแล้วอธิบายด้วยคำพูดได้

ใน Dologi ปริศนา "ขับรถ" ทำงานแบบเดียวกัน ลูกเรียงคำสั่งให้รถวิ่งผ่านเขาวงกตไปหาดวงดาว และถ้ามีคำสั่งเดียวผิดตำแหน่ง รถก็จะไปโผล่ที่อื่น

สรุป

  • สูตรอาหารคืออัลกอริทึม วัตถุดิบเข้า ผ่านขั้นตอนตามลำดับ ได้อาหารออกมา
  • ถามลูกว่าขั้นไหนสลับที่ได้ และขั้นไหนต้องมาก่อน
  • เล่น "พ่อแม่หุ่นยนต์" เพื่อให้เห็นว่าทำไมคำสั่งต้องแม่นยำ
  • หาขั้นตอนทำซ้ำและขั้นตอน "ถ้า" แล้วให้ลูกเขียนและทดลองสูตรของตัวเอง

อ่านเพิ่มเติม: แบ่งงานใหญ่เป็นขั้นตอนเล็ก ๆ: ฝึกลูกคิดทีละขั้น