ตำราส่วนใหญ่ให้เด็กเริ่มด้วย 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 ของนักเรียนจริง — มีทั้งเกม โปรแกรมสุ่ม และแบบทดสอบที่เขาคิดเองทั้งหมดค่ะ