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

หลักการที่ใช้ในการเขียนโปรแกรมมีมากมาย แต่ Scratch นำมาใช้ไม่ทั้งหมดแต่อาจมีเพิ่มเติมได้ในเวอร์ชั่นต่อๆไป หลักการแรกเปรียบเหมือนคำกล่าวของ Albert Einstein

“Everything should be made as simple as possible, but not simpler.” Albert Einstein

ในการเขียนโปรแกรม งาน(ใหญ่)ควรแบ่งเป็นงานย่อยๆ แต่ไม่ควรย่อยเกินไป

เนื่องจากคอมพิวเตอร์มิได้ฉลาดสามารถคิดขั้นตอนการทำงานได้เอง (ในอนาคตก็ไม่แน่) อีกทั้งงานเดียวกันยังอาจทำได้หลายวิธีแตกต่างกัน ด้งนั้นเป็นหน้าที่ของโปรแกรมเมอร์ที่ต้องออกแบบการทำงาน แบ่งงาน และลำดับขั้นตอนการทำงาน (algorithm) ให้กับคอมพิวเตอร์

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

ตัวอย่างนี้ค่อนข้างง่าย แต่เต็มไปด้วยหลักการในการเขียนโปรแกรม นั่นคือ

  • การทำงานถูกแบ่งเป็นขั้นตอนหรือชุดคำสั่ง (sequence) เช่นชุดคำสั่งที่ 1. เคลื่อนที่ไปข้างหน้า 1 หน่วย 2. ตรวจสอบดูว่าชนผนังหรือไม่ ถ้าชนให้สะท้อนกลับ
  • การที่ปลาต้องเคลื่อนที่ไปเรื่อยๆ พร้อมทั้งตรวจสอบดูว่าชนผนังหรือไม่ เป็นหลักการทำงานแบบซ้ำๆหรือวนซ้ำ (iteration, looping) ของชุดคำสั่งชุดหนึ่ง (repeating a sequence of instructions)
  • ในชุดคำสั่งนี้ยังมีการตรวจสอบข้อเท็จจริง (conditional statement) ด้วยว่าปลาชนผนังตู้หรือไม่ ซึ่งอาศัยตรรกะ (logic) ถ้าจริง (true) ก็อาจจะทำงานอย่างหนึ่ง ถ้าเท็จ(false) ก็อาจจะทำงานอีกอย่างหนึ่ง
  • การเกิดเหตุการณ์หนึ่ง (event) ทำให้ต้องทำงานอย่างหนึ่ง (event handling) ในตัวอย่างนี้ จะเห็นว่าในช่วงขณะหนึ่ง ปลามีโอกาศที่จะเปลี่ยนทิศทาง นั้นก็คือเหตุการณ์ที่ถูกกำหนดจากเวลา (time event) คือทุกๆ 1 วินาที ปลาจะสุ่มโอกาสว่าควรจะเปลี่ยนทิศหรือไม่ นั้นคือการตอบสนองต่อเหตุการณ์ (event handling)
  • การเคลื่อนที่ของปลาไปเรื่อยๆ และการเปลี่ยนทิศของปลาทุกๆ 1 วินาทีนั้นทำงานแยกจากกันแต่เกิดขึ้นพร้อมกัน ซึ่งก็คือหลักการทำงานคู่ขนาน (parallel execution, threading) ที่ให้โปรแกรมสคริปต์ทำงานพร้อมๆกันหลายๆสคริปต์
Advertisements

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s