ตำราส่วนใหญ่ให้เด็กเริ่มด้วย print("Hello World") ซึ่งถูกต้องตามหลักการ แต่ไม่มีเด็กคนไหนตื่นเต้นกับมัน เพราะมันไม่ตอบสนองอะไรเลย
โปรแกรมแรกที่ดีต้องมี 3 อย่าง
- รับข้อมูลจากเด็ก — เพื่อให้รู้สึกว่าโปรแกรมคุยกับเขา
- ตอบต่างกันตามคำตอบ — เพื่อให้เห็นว่าโปรแกรมตัดสินใจได้
- เขียนจบใน 10 บรรทัด — เพื่อให้สำเร็จก่อนหมดสมาธิ
โปรแกรมที่ครูพิมใช้สอนจริง
name = input("หนูชื่ออะไรคะ? ")
age = int(input("อายุเท่าไหร่? "))
print("สวัสดี " + name + "!")
if age >= 10:
print("โตพอจะเขียน Python ได้สบายเลย")
else:
print("อายุน้อยแต่เก่งมากนะ")
print("อีก 10 ปี " + name + " จะอายุ", age + 10)
เด็กจะพิมพ์ชื่อตัวเองแล้วเห็นคอมพิวเตอร์เรียกชื่อตัวเอง — ความรู้สึกตรงนั้นคือสิ่งที่ Hello World ให้ไม่ได้
ในโค้ด 10 บรรทัดนี้ เด็กได้เรียนอะไรบ้าง
| สิ่งที่ได้ | อยู่ตรงไหน |
|---|---|
| ตัวแปร | name และ age |
| รับข้อมูลจากผู้ใช้ | input() |
| ชนิดข้อมูลและการแปลง | int() ทำไมต้องมี |
| เงื่อนไข | if / else |
| คณิตศาสตร์ในโปรแกรม | age + 10 |
ให้เด็กแก้ต่อเองทันที
ตรงนี้สำคัญที่สุด — พอโปรแกรมทำงานแล้ว อย่าไปบทถัดไป ให้เด็กลองแก้เอง เช่น
- เพิ่มคำถามว่าชอบสีอะไร แล้วเอาไปทักในประโยคต่อไป
- เปลี่ยนเงื่อนไขเป็น 3 ระดับ ด้วย
elif - คำนวณว่าอีกกี่ปีจะอายุ 60
เด็กที่ได้แก้โค้ดของตัวเองในวันแรก จะกลับมาเปิดคอมวันรุ่งขึ้นเอง ส่วนเด็กที่แค่พิมพ์ตามตำรามักไม่กลับมา
ข้อผิดพลาดที่เจอบ่อยและวิธีบอกเด็ก
ValueError: invalid literal for int() — แปลว่าเด็กพิมพ์ตัวหนังสือลงในช่องอายุ บอกเด็กว่า "คอมมันขอตัวเลข แต่หนูให้ตัวหนังสือไป" เท่านี้เด็กเข้าใจทันที ไม่ต้องอธิบายศัพท์เทคนิค
อยากเห็นว่าเด็กที่ผ่านจุดนี้ไปแล้วเขียนอะไรได้บ้าง ลองดูผลงานคอร์ส Python ของนักเรียนจริง — มีทั้งเกม โปรแกรมสุ่ม และแบบทดสอบที่เขาคิดเองทั้งหมดค่ะ