จากบล็อกไปยังข้อความ: Scratch ถึง Python สำหรับเด็ก 9–12 ปี
คำแนะนำทีละขั้นตอนเพื่อช่วยให้เด็กเปลี่ยนจากบล็อก Scratch ไปเป็นโค้ด Python จริง พร้อมแบบฝึกหัดที่เป็นรูปธรรมและข้อผิดพลาดทั่วไป
เด็กที่สร้างโปรเจกต์ Scratch มาแล้วสักไม่กี่อันมักจะเจอกำแพงประมาณอายุ 10 หรือ 11 ปี: บล็อกดูเหมือนง่ายเกินไปสำหรับสิ่งที่พวกเขาต้องการสร้าง กำแพงนั้นคือช่วงเวลาที่เหมาะสมในการแนะนำ Python นี่คือคำแนะนำที่วางเส้นทางซึ่งรักษาส่วนต่างๆ ของ Scratch ที่เด็กเข้าใจแล้ว (sprites, loops, events) และจับคู่กับโค้ดจริง แทนที่จะเอาพวกเขาเข้าไปในไวยากรณ์โดยไม่มีสะพาน
ทำไมการกระโดดจึงดูยากกว่าที่ควรจะเป็น
Scratch ซ่อนสามสิ่ง: ประเภทของตัวแปร, การเยื้อง, และข้อผิดพลาดของไวยากรณ์ ซึ่งจะเห็นได้ทันทีใน Python เด็กที่ลากบล็อก "repeat 10" ไม่เคยต้องคิดเกี่ยวกับโคลอนหรือวงเล็บ สัปดาห์แรกกับ Python ส่วนใหญ่เป็นการปรับตัวให้รับข้อความข้อผิดพลาดสีแดงโดยไม่ยอมแพ้ บอกพวกเขาตั้งแต่ต้น: โปรแกรมเมอร์มืออาชีพเห็นข้อความข้อผิดพลาดนับสิบครั้งต่อวัน มันไม่ใช่สัญญาณว่าพวกเขาไม่เก่งเรื่องนี้
ใช้ Trinket.io หรือ Replit ในเบราว์เซอร์เพื่อไม่ต้องต่อสู้กับขั้นตอนการติดตั้งก่อน บันทึกการติดตั้งเดสก์ท็อป (Python 3.12+ จาก python.org บวก Thonny เป็นตัวแก้ไข) สำหรับเมื่อพวกเขาหลงใหลแล้ว
จับคู่แนวคิด Scratch กับ Python โดยตรง
ทำการเปรียบเทียบนี้อย่างชัดแจ้ง ซ้ายขวา แทนที่จะเริ่มต้นจากศูนย์:
- "when green flag clicked" → เพียงแค่รัน
.pyfile - "repeat 10" →
for i in range(10): - "forever" →
while True: - "if <> then" →
if condition: - "ask and wait" →
input("question: ") - variables (บล็อกสีส้ม) →
score = 0
ให้พวกเขาเขียนสิ่งเทียบเท่า Scratch นี้ก่อน เพราะมันเกือบจะแปลตรงตัว:
score = 0
for i in range(5):
score = score + 10
print("Score is now:", score)
รันมัน แล้วถามว่าจะเกิดอะไรขึ้นถ้า range(5) กลายเป็น range(20) การทำนายผลลัพธ์ก่อนรันโค้ดเป็นนิสัยดีที่สุดตัวเดียวที่จะเลาะลอมที่นี่
สามโปรเจกต์ที่รักษาแรงจูงใจสูง
เกมเดาตัวเลข เป็นโปรเจกต์แรกแบบคลาสสิกเพราะมันใช้ input(), if/elif/else, และ loop และมันทำงานอย่างแท้จริงเหมือนโปรแกรมจริง:
import random
secret = random.randint(1, 20)
guess = 0
while guess != secret:
guess = int(input("Guess a number 1-20: "))
if guess < secret:
print("Too low")
elif guess > secret:
print("Too high")
print("You got it!")
เซิมเพ็ตแบบข้อความ (ให้อาหาร, เล่น, นอน, ตรวจสอบสถิติ) ทำงานได้ดีต่อมาเพราะเด็กสร้างสิ่งที่คล้ายกันใน Scratch ด้วย sprite costumes แล้ว ตอนนี้มันคือ dictionaries: pet = {"hunger": 5, "energy": 8}
ประการที่สาม ไปยัง turtle graphics เพื่อผลตอบแทนภาพ:
import turtle
t = turtle.Turtle()
for i in range(4):
t.forward(100)
t.right(90)
สิ่งนี้วาดสี่เหลี่ยมจัตุรัสและสะท้อนแบบ "move 10 steps, turn 90 degrees" จากเครื่องมือ pen ของ Scratch โดยตรง เด็กสังเกตเห็นความคล้ายคลึงทันที ซึ่งสำคัญต่อความเชื่อมั่นมากกว่าการบรรยายเกี่ยวกับไวยากรณ์
จัดการข้อผิดพลาดโดยไม่ทำให้แรงจูงใจสูญหาย
คาดหวัง IndentationError และ NameError บ่อยครั้งในเดือนแรก อย่าแก้ไขสำหรับพวกเขา — อ่านข้อความข้อผิดพลาดออกมาดังๆ ด้วยกันและหาหมายเลขบรรทัดที่ชี้ไป ข้อผิดพลาดของ Python มักจะบอกว่าเป็นปัญหาอะไรอย่างแน่นอน ("expected an indented block") แม้ว่าถ้อยคำจะแห้ง ภายในสองสามสัปดาห์ส่วนใหญ่เด็กเริ่มอ่าน tracebacks เร็วกว่าผู้ใหญ่ที่ช่วยเหลือพวกเขา
กับดักที่แท้จริง: Python มีการแยกตัวพิมพ์ใหญ่-เล็กและ Scratch ไม่มี Score และ score เป็นตัวแปรต่างกัน สิ่งนี้ทำให้เด็กเกือบทั้งหมดที่มาจากบล็อกติดขัด ดังนั้นให้เตือนตั้งแต่เร็วๆ แทนที่จะปล่อยให้พวกเขาค้นพบมันผ่านความหงุดหงิด
ความเร็วประมาณสี่สัปดาห์ที่ใช้ได้
สัปดาห์ที่ 1: ตัวแปร, print(), input(), ตัวดำเนินการทางคณิตศาสตร์พื้นฐาน สัปดาห์ที่ 2: if/elif/else กับเกมเดา สัปดาห์ที่ 3: for และ while loops สร้างเซิมเพ็ต สัปดาห์ที่ 4: functions — ห่อหุ้มการกระทำของเซิมเพ็ตเป็นโค้ดสไตล์ def feed(pet): ซึ่งเป็นการกระโดดแนวคิดที่ใหญ่ที่สุดตั้งแต่บล็อกกำหนดเองของ Scratch เพียงแค่คำใบ้
อย่ารีบเร่งผ่านสัปดาห์ที่ 4 Functions คือที่ที่การคิดแบบ "programmer" เริ่มต้นจริงๆ และเด็กที่ข้ามไปยังโปรเจกต์ที่ใหญ่ขึ้นโดยไม่เข้าใจมันมักจะเขียนโค้ดที่รกและคัดลอก ซึ่งเป็นเรื่องยากที่จะดีบัก
ถ้าเด็กของคุณสนุกกับการเปลี่ยนแปลงนี้ Korra Studio มีคำแนะนำ Python สำหรับผู้เริ่มต้นเพิ่มเติมและส่วนวิทยาศาสตร์คอมพิวเตอร์ทั่วไปที่คุ้มค่าสำรวจต่อไป
เขียนด้วยความช่วยเหลือของ AI ตรวจสอบและเผยแพร่โดย Michal Pilch (CISSP), Korra Studio
นี่คือบันทึกหนึ่งจากฐานความรู้ของ Korra Studio — แพลตฟอร์มจับคู่หัวข้อแต่ละหัวข้อกับการฝึกสอนแบบ 1-to-1
เริ่มใช้งานฟรีarrow_forward