ฝึกคิด ฝึกโค้ด ในงานมินิเมกเกอร์แฟร์

งานมินิเมกเกอร์แฟร์ครั้งแรกของประเทศไทย ณ ลานหน้า Hard Rock Cafe สยามสแควร์ ได้ผ่านไปแล้วเมื่ออาทิตย์ที่ผ่านมา ส่วนหนึ่งของงาน คือ กิจกรรม (Workshop) ที่ Space@Siam ผมก็มีโอกาสได้ออกแบบกิจกรรมฝึกคิดฝึกโค้ด ซึ่งเป็นกิจกรรมฝึกเขียนโค้ดด้วยบัตรคำสั่ง กิจกรรมนี้ ได้ไอเดียมาจาก LightBot ซึ่งเป็นเครื่องมือออนไลน์ที่สอนให้เขียนโปรแกรมผ่านการเล่นเกมสนุกๆ เรานำแนวคิดของเกมนี้ มาทำเป็นกิจกรรมกระดาษ ที่ไม่ต้องใช้คอมพิวเตอร์ หรือ แท็บเล็ต เป็นกิจกรรมที่ช่วยกันคิดช่วยกันวางคำสั่ง เพื่อแก้โจทย์ปัญหา กิจกรรมนี้เหมาะกับผู้ที่ไม่มีประสบการณ์ในการเขียนโค้ดมาก่อน เด็กเล็กๆ ก็เล่นได้ หรือทำกิจกรรมกันทั้งครอบครัวก็ได้ กิจกรรมนี้จะสอนทักษะการคิด วางแผนหาทางแก้ปัญหา ซึ่งมีได้หลายคำตอบ รวมถึงแนวคิดหลักการในการเขียนโค้ด ทดสอบโค้ด (Testing) และแก้โค้ด (Debugging) การเขียนโค้ด หรือเขียนโปรแกรม เป็นส่วนหนึ่งที่สำคัญสำหรับเมกเกอร์ ที่ใช้บอร์ดอิเล็กทรอนิกส์ ในการสร้างสรรค์ผลงาน การเขียนโค้ดกระดาษแม้จะนำไปใช้งานจริงไม่ได้ แต่เป็นการฝึก "คิด" อย่างที่นักเขียนโปรแกรม "คิด" จริงๆ ไม่ว่าจะเขียนโปรแกรมด้วยภาษาใดก็ตาม ก็จะอยู่บนพื้นฐานการคิดชุดเดียวกัน กิจกรรมนี้น่าจะเป็นประโยชน์อย่างมากกับเด็กๆ หรือ ผู้เริ่มต้นหัดเขียนโปรแกรม รวมถึงโรงเรียน หรือผู้ปกครองที่มีข้อจำกัดในอุปกรณ์คอมพิวเตอร์ …

Advertisements

ทำไมเด็กๆ ควรเรียนเขียนโปรแกรม

"ทุกๆ คนในประเทศนี้ ควรเรียนการเขียนโปรแกรม เพราะมันสอนให้คุณคิดเป็น" Steve Jobs https://www.youtube.com/watch?feature=player_embedded&v=dU1xS07N-FA ในวีดีโอ จะเห็นเด็กเล็กๆ เค้าก็ได้เรียน Scratch กัน อยากเห็นเด็กไทย ได้เรียน Scratch กันบ้าง ถ้าทำได้ทุกโรงเรียนก็คงดีไม่น้อย อ่านต่อที่ Code.org

Kodu Grammar 4

ที่ผ่านมา Kodu Grammar 1 2 3 เป็นไวยากรณ์สำหรับกฎเพียงข้อเดียว ที่เริ่มต้นด้วยตัวแปร Rule แต่สำหรับโปรแกรมเกมใน Kodu สามารถมีได้หลายกฎและองค์ประกอบอื่นๆ อีก ในคราวนี้เรามามองไวยากรณ์ที่กว้างขึ้น ครอบคลุมทั้งโปรแกรม ซึ่งจะมีตัวแปรเพิ่มขึ้นมาอีก จุดเริ่มต้นของไวยากรณ์ของโปรแกรมเกมคือ Game ซึ่งประกอบไปด้วยตัวละคร Actors หลายๆ ตัว ในหนึ่งเกม Game --> Actors ตัวละครถือว่าเป็นวัตถุ Object หรือกลุ่มของวัตถุ Object Actors ซึ่งไม่ระบุจำนวน ขึ้นกับแต่ละเกม Actors --> Object | Object Actors ไวยากรณ์รูปแบบนี้ จะเห็นว่าตัวแปร (ในที่นี้คือ Actors ด้านซ้าย) สามารถแทนที่ด้วยตัวมันเอง (Actors ด้านขวาสุด) ไวยากรณ์ในลักษณะนี้ คล้ายกับฟังก์ชันที่เรียกตัวเอง (Recursive function) ถ้าเลือกแทนที่ด้วย Object Actors โดยมีจุดสิ้นสุดของการวนซ้ำ ถ้าเลือกใช้ตัวแปร Object วัตถุสามารถเขียนโปรแกรมได้อย่างน้อยหนึ่งหน้า Page หรือมากกว่านั้น แต่ไม่เกิน 12 หน้า …

Kodu Grammar 3

จุดเริ่มต้นของกฎสำหรับสร้างภาษา (Production Rules) ที่ใช้ในการเขียนโปรแกรมคือ 1. Rule --> Condition Action Rule คือกฎของเกมที่ต้องการจะสร้าง Condition เป็นเงื่อนไขของเหตุการณ์ Action สิ่งที่จะทำเมื่อเงื่อนไขนั้นเป็นจริง กฎนี้ยังใช้งานไม่ได้ เนื่องจากด้านขวามือมีแต่ตัวแปร (Variable) ซึ่งไม่สามารถแทนที่ได้ด้วยไอคอนใน Kodu ดังนั้นมาดูกฎข้ออื่นกันต่อว่า ตัวแปรเหล่านี้เปลี่ยนไปเป็นอะไรได้บ้าง 2. Condition --> Sensor Filter 3. Action --> Actuator Selector Modifier Sensor (การรับรู้) Filter (ตัวกรอง) Actuator (ตัวกระทำ) Selector (ตัวเลือก) Modifier (ตัวขยาย) ทั้งหมดนี้ก็ยังเป็นตัวแปรอยู่ แทนที่ด้วยไอคอนไม่ได้ แต่สามารถแทนที่กันเองได้ กฎการแทนที่ เป็นกฎที่ทำให้ไวยากรณ์ขยายออกไปได้ด้วยการแทนคำจากกฎข้อหนึ่งไปแทนคำในกฎอีกข้อหนึ่ง คือแทนคำที่เป็นตัวแปรทางซ้ายมือ ด้วยคำทางขวามือ (อาจเป็น Variable หรือ Terminal ก็ได้) ยกตัวอย่างในกรณีนี้ เราสามารถนำ Sensor Filter …

Kodu Grammar 2

เกมใน Kodu ถูกขับเคลื่อนด้วยเหตุการณ์ต่างๆ ระหว่างโปรแกรมทำงาน หรือระหว่างการเล่นเกม ดังนั้นการเขียนโปรแกรมจึงขึ้นกับเหตุการณ์เหล่านั้น และสามารถแสดงเป็นกฎได้ดังนี้ When Condition (เงื่อนไขของเหตุการณ์) Do Action (สิ่งที่จะทำเมื่อเกิดเหตุการณ์ขึ้น) กฎด้านบนนี้เป็นเพียงแค่กฎเบื้องต้น เพราะเบื้องหลังของแต่ละรายการคำสั่งในโปรแกรม Kodu ถูกกำกับด้วยไวยากรณ์ภาษา (Kodu Grammar) ที่ต้องใช้ให้ถูกต้อง เพื่อให้เกมทำงานได้ถูกต้องตามที่ได้ออกแบบไว้ การเข้าใจไวยากรณ์ของเกมจะทำให้เขียนโปรแกรมใน Kodu ได้ดีขึ้น เหมือนเข้าใจในไวยากรณ์ภาษาอังกฤษ ก็จะอ่านเขียนภาษาอังกฤษได้ดีขึ้น แต่ก็ไม่ได้หมายความว่า ต้องเข้าใจไวยากรณ์ใน Kodu ทั้งหมดก่อนถึงจะเริ่มเขียนโปรแกรมบน Kodu ได้ ดังนั้นมาเริ่มต้นศึกษาแบบง่ายๆ ก่อน ส่วนประกอบสำคัญของไวยากรณ์ คือ Production Rules เป็นกฎสำหรับสร้างภาษา ประกอบไปด้วย Variables และ Terminals ซึ่งอยู่ในรูปแบบดังนี้ Variable --> Variables Terminals Variable คือคำที่แปรเปลี่ยนได้ตามกฎ(อื่น) คำเหล่านี้จะขึ้นต้นด้วยอักษรตัวใหญ่ เช่น Rule, Condition, Action, Sensor, Filter, …