Blog 1.4 สอนเขียนโปรแกรมผ่าน code.org สำหรับเด็ก ผู้ใหญ่และผู้ที่สนใจอยากหัดเขียนโปรแกรม

1.คำสั่งพื้นฐาน

เพื่อให้เกิดความเข้าใจในการหัดเขียนโปรแกรมผ่าน code.org เรามารู้จักคำสั่งพื้นฐานที่ทางผู้พัฒนา code.org ได้เตรียมไว้ให้

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

คำสั่งเมื่อเริ่มทำงาน

เมื่อผู้เรียนได้ลองศึกษาไปตามบทเรียนต่างๆ จะพบการเขียนโปรแกรมแบบตามเหตุการณ์ (Event based programming) ซึ่งจะเปิดโอกาสให้ผู้เรียนได้ลองกำหนดค่าเริ่มต้นให้กับโปรแกรม โดยเราจะกำหนดค่าการทำงานเริ่มต้นต่อจากคำสั่ง “เมื่อเรียกให้ทำงาน” นี้

1.2 คำสั่ง เดินไปข้างหน้า หรือ forward
เป็นคำสั่งที่ให้เดินไปข้างหน้า 1 ช่อง โดยจะเดินไปในทิศทางด้านหน้าของตัวการ์ตูนหลักในโจทย์ ดังนั้นหากต้องการจะให้ตัวการ์ตูนในโจทย์เดินไปทางใด ต้องดูก่อนว่าด้านหน้าของตัวการ์ตูนนั้นหันไปในทิศทางที่เราต้องการให้เคลื่อนที่หรือยัง ถ้ายังไม่ได้อยู่ในทิศทางนั้นก็จำเป็นต้องหันตัวการ์ตูนไปในทิศทางที่ต้องการเสียก่อน

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

คำสั่ง เดินไปข้างหน้า หรือ move forward

1.3 คำสั่ง เลี้ยว หรือ turn
คำสั่งนี้ใช้สำหรับหันหน้าตัวการ์ตูนไปในทิศทางที่เราต้องการ โดยจะมีให้เลือกว่าจะเลี้ยวขวา หรือเลี้ยวซ้าย ไป 90 องศา ซึ่งผู้เรียนสามารถกดเลือกทิศทางการเลี้ยวที่ต้องการตรงเครื่องหมายสามเหลี่ยมคว่ำลงได้ ดังนี้

คำสั่งเลี้ยวซ้าย 90 องศา และวิธีการเลือก

นอกจากนี้ยังมีคำสั่งเลี้ยวที่เราสามารถกำหนดมุมของการเลี้ยวได้เอง เช่น

คำสั่ง เลี้ยวขวาไปองศาต่างๆ

ผู้เรียนสามารถเลือกกรอกตัวเลขลงไปเองในช่ององศา ในที่นี้หากต้องการมุม 30 องศา ก็ให้ไปพิมพ์ที่ช่อง 45 ด้วยเลข 30 ได้เลย

1.4 คำสั่ง “ย้ายไปข้างหน้าโดย … พิกเซล” หรือ “move forward by … pixels”
คำสั่งนี้จะพบในบทเรียน ศิลปิน ที่ให้ผู้เรียนสร้างชุดคำสั่งเพื่อวาดรูปตามที่โจทย์กำหนด โดยการย้ายไปข้างหน้านั้น คือ การวาดไปในทิศทางที่ศิลปินหันหน้าอยู่เป็นระยะ … พิกเซล ซึ่งเราสามารถกำหนดระยะที่ต้องการได้ สำหรับหน่วยพิกเซลนั้นเป็นหน่วยที่ใช้วัดขนาดของภาพในจอคอมพิวเตอร์ ซึ่งเป็นหน่วยวัดแบบหนึ่งเท่านั้นนั่นเอง

คำสั่งย้ายไปข้างหน้า และการกำหนดระยะที่ต้องการให้วาดเส้นลงไป

1.5 คำสั่ง กระโดดไปข้างหน้าด้วยระยะทาง … พิกเซล
คำสั่งนี้จะเป็นการเคลื่อนย้ายศิลปินไปด้านหน้าตามระยะที่กำหนด โดยไม่ได้วาดเส้นไปด้วย

คำสั่งกระโดดไปข้างหน้า

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

ตั้งค่าสีแดง
ตั้งค่าสีแบบสุ่ม

2. ตัวอย่างการใช้ชุดคำสั่ง

2.1 จงเขียนโปรแกรมเพื่อเคลื่อนที่รถไปยังตำแหน่งเป้าหมายซึ่งแสดงด้วยรูปดวงดาว

ตัวอย่างที่ 1

จากโจทย์ข้อนี้ เราจะเลือกคำสั่งเดินไปข้างหน้าทั้งสิ้น 4 ครั้งเพื่อสั่งงาน ดังนี้

คำสั่งสำหรับโจทย์ตามตัวอย่างที่ 1

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

ตัวอย่างโจทย์ 1
ตัวอย่างโจทย์ 2

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