หลักการเขียนโปรแกรมใน Scratch ตอนที่ 7

โดยทั่วไป โปรแกรมมักประกอบไปด้วยงานย่อย (sub-program) หลายๆ งานเข้าด้วยกัน ซึ่งงานย่อยในโปรแกรม มักเรียกได้หลายแบบตามแต่ละบริบท คำที่น่าจะใช้เรียกทั่วไป คือฟังก์ชัน (function) เป็นการทำงานที่รับข้อมูลเข้าไป แล้วทำงานตามขั้นตอนที่กำหนดไว้ สุดท้ายให้ผลลัพธ์ออกมา ในบางโปรแกรมภาษา อาจได้ยินคำว่า โปรซีเจอร์ (procedure) ซึ่งคล้ายฟังก์ชัน แต่ไม่คืนผลลัพธ์ออกมาให้นำไปใช้ต่อ ส่วนในการเขียนโปรแกรมเชิงวัตถุ (object oriented) มักใช้ เมธเธิด (method) เป็นฟังก์ชันที่ผูกติดกับวัตถุ ถ้าจะเรียกใช้งาน ต้องเรียกผ่านวัตถุนั้นๆ

ทุกโปรแกรมจะต้องมีฟังก์ชันหลัก (main function) เป็นจุดเริ่มต้นของโปรแกรม ที่สามารถรับข้อมูลเข้ามาใช้ภายในโปรแกรม การจัดลำดับการทำงานของโปรแกรมจะอยู่ภายในฟังก์ชันหลัก (work flow) โดยการเรียกใช้และส่งผ่านข้อมูลให้ฟังก์ชันต่างๆ ทำงาน และสุดท้ายสามารถส่งข้อมูล ออกจากโปรแกรมได้

ใน Scratch หลักการของฟังก์ชั่นนั้นไม่สมบรูณ์ โปรแกรมที่เขียนด้วย Scratch จะประกอบด้วยสคริปต์หลายๆ สคริปต์ ในแต่ละตัวละคร แต่ละสคริปต์ถูกมองว่าเป็นการทำงานเฉพาะอย่าง ซึ่งคล้ายกับหน้าที่ของฟังก์ชั่น ปกติแล้ว ฟังก์ชั่นต้องมีชื่อ สามารถรับหรือคืนข้อมูลได้ และจะทำงานเมื่อถูกเรียกชื่อฟังก์ชัน พร้อมกับข้อมูลเข้า (function call) แต่สคริปต์ใน Scratch ไม่มีชื่อ รับหรือส่งข้อมูลไม่ได้

อย่างไรก็ตาม สิ่งที่ Scratch สามารถทำได้ใกล้เคียงคือ ใช้การส่งรหัส (broadcast) แทนการเรียกฟังก์ชัน และการใช้ตัวแปรโกลบอล (global variable) ที่ทุกตัวละครสามารถเข้าถึงและใช้งานได้ เพื่อรับส่งข้อมูลระหว่างสคริปต์

ฟังก์ชันหลักของ Scratch คือสคริปต์ที่ทำงานเมื่อธงเขียวถูกคลิก สังเกตุว่ามันอาจมีสคริปต์แบบนี้ได้หลายสคริปต์ ทั้งนี้เพราะ Scratch ใช้หลักการทำงานแบบคู่ขนาน (parallel) ซึ่งแต่ละตัวละครทำงานพร้อมกันได้ และในตัวละครหนึ่งๆ ยังทำงานได้หลายอย่างพร้อมกันอีกด้วย

ลองมาดูตัวอย่างการใช้ฟังก์ชันในโปรเจก FishChomp

ในตัวอย่างนี้ทั้ง ปลาทอง 1 (goldfish1) และ ปลาตัวใหญ่ (hungry fish) เริ่มทำงานพร้อมกันในสคริปต์หลัก เมื่อธงเขียวถูกคลิก ปลาทอง 1 ทำงานในสคริปต์หลักอยู่สคริปต์เดียวตลอดโปรแกรม แต่ปลาตัวใหญ่ยังมีอีกสคริปต์หนึ่ง ที่เป็นฟังก์ชันรอการเรียกใช้งาน

ระหว่างเล่นเกมนี้ ปลาทอง 1 จะส่งรหัส “got-me” ออกไป ถ้าถูกปลาตัวใหญ่กิน และเมื่อปลาตัวใหญ่รับรหัส “got-me” ก็จะแสดงแอนิเมชั่นการกินพร้อมเสียง “chomp” งานหลักของการส่งรหัส (broadcast) คือการเชื่อมต่อการทำงานให้สอดคล้องกัน หมายความว่า ณ เวลาที่ปลาทอง 1 ถูกกิน ก็ส่งรหัสสัญญาณ บอกปลาตัวใหญ่ให้แสดงท่าทางการกินพร้อมเสียงการเคี้ยวด้วย เพื่อให้เกมดูสมจริง

แต่ในมุมมองของการใช้ฟังก์ชัน การส่งรหัสคือ การเรียกชื่อฟังก์ชัน got-me ให้ทำงาน (function call) สคริปต์ที่รับรหัส got-me เปรียบเสมือนฟังก์ชันที่มีชื่อว่า got-me ซึ่งอาจเป็นสคริปต์ในตัวละครเดียวกันก็ได้ หรือ ตัวละครอื่นก็ได้ เช่นในกรณีนี้ เป็นสคริปต์หนึ่งในปลาตัวใหญ่

เรื่องของฟังก์ชันใน Scratch ยังมีต่อในคราวหน้า

Advertisements

One Reply to “หลักการเขียนโปรแกรมใน Scratch ตอนที่ 7”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s