บทที่ 8: การเขียนโปรแกรมแบบขนาน (Parallel Programming)
วัตถุประสงค์การเรียนรู้
- นักเรียนจะได้เรียนรู้วิธีการเขียนโปรแกรมแบบขนาน (Parallel Programming) ใน Scratch เพื่อทำให้ตัวละครหรือเหตุการณ์หลายๆ อย่างทำงานพร้อมกัน
- นักเรียนจะสามารถสร้างโปรแกรมที่มีการทำงานหลายส่วนที่เกิดขึ้นพร้อมกันอย่างเป็นระบบ
1. การแนะนำการเขียนโปรแกรมแบบขนาน
การเขียนโปรแกรมแบบขนาน (Parallel Programming) เป็นวิธีที่ทำให้ตัวละครหรือเหตุการณ์หลายอย่างในโปรแกรมทำงานพร้อมกัน แทนที่จะทำงานทีละส่วน การเขียนโปรแกรมแบบขนานช่วยให้โปรแกรมดูสมจริงและมีความซับซ้อนมากขึ้น เช่น ตัวละครหลายตัวเคลื่อนไหวพร้อมกัน หรือการเกิดเหตุการณ์หลายเหตุการณ์ในเวลาเดียวกัน
2. การใช้บล็อก "เมื่อธงเขียวถูกคลิก" (When Green Flag Clicked)
การเขียนโปรแกรมแบบขนานใน Scratch เริ่มต้นได้ง่ายๆ ด้วยการใช้บล็อก "เมื่อธงเขียวถูกคลิก" (When Green Flag Clicked) เพื่อเริ่มโปรแกรมหลายส่วนพร้อมกัน เมื่อเราใช้บล็อกนี้กับตัวละครหลายตัว ตัวละครแต่ละตัวจะทำงานไปพร้อมกันทันทีที่ธงเขียวถูกคลิก
- เพิ่มบล็อก "เมื่อธงเขียวถูกคลิก" ในแต่ละตัวละครที่ต้องการให้เริ่มทำงานพร้อมกัน
- สร้างการเคลื่อนไหวหรือเหตุการณ์ที่เกิดขึ้นพร้อมกันในแต่ละตัวละคร
ตัวอย่าง:
สร้างโปรแกรมที่มีตัวละครสองตัวเคลื่อนไหวพร้อมกัน เมื่อคลิกธงเขียวให้ตัวละครทั้งสองเริ่มเดินพร้อมกันในทิศทางต่างๆ
3. การทำงานหลายส่วนพร้อมกันในตัวละครเดียว
นอกจากการทำงานแบบขนานในหลายตัวละครแล้ว เราสามารถทำให้ตัวละครเดียวทำงานหลายอย่างพร้อมกันได้ เช่น ตัวละครเคลื่อนไหวไปพร้อมกับการเล่นเสียง
- ใช้บล็อก "เมื่อธงเขียวถูกคลิก" ในบล็อกคำสั่งต่างๆ ภายในตัวละครเดียว เพื่อให้ทำงานหลายอย่างพร้อมกัน เช่น เดินและเล่นเสียงในเวลาเดียวกัน
ตัวอย่าง:
สร้างโปรแกรมที่ตัวละครเดินไปข้างหน้า พร้อมกับเล่นเสียงดนตรีในขณะที่กำลังเคลื่อนไหว
4. การใช้บล็อก "รอ" (Wait) เพื่อประสานการทำงาน
การเขียนโปรแกรมแบบขนานบางครั้งจำเป็นต้องใช้การประสานเวลา (Synchronization) เพื่อควบคุมให้การทำงานของหลายส่วนเกิดขึ้นในลำดับที่ถูกต้อง บล็อก "รอ" (Wait) ช่วยให้เราสามารถกำหนดเวลาการรอสำหรับแต่ละส่วนของโปรแกรม เพื่อให้การทำงานของตัวละครหรือเหตุการณ์เกิดขึ้นพร้อมกันหรือในลำดับที่เหมาะสม
- ใช้บล็อก "รอ [เวลา] วินาที" เพื่อกำหนดการหน่วงเวลาของการทำงานในแต่ละส่วน เช่น รอให้ตัวละครทำงานครบก่อนเริ่มเหตุการณ์อื่น
- ใช้บล็อก "รอจนกระทั่ง..." เพื่อรอให้เหตุการณ์หรือการทำงานบางอย่างเกิดขึ้นก่อนที่จะทำงานถัดไป
ตัวอย่าง:
สร้างโปรแกรมที่ตัวละครหนึ่งเริ่มเดินก่อน 2 วินาที จากนั้นตัวละครที่สองถึงจะเริ่มเดินตาม
5. การใช้บล็อก "ส่งข้อความ" (Broadcast) เพื่อประสานการทำงาน
บล็อก "ส่งข้อความ" (Broadcast) เป็นอีกเครื่องมือหนึ่งที่ช่วยในการทำงานแบบขนาน โดยการส่งข้อความ (Message) ให้ตัวละครหรือเหตุการณ์ต่างๆ ทำงานเมื่อได้รับข้อความนั้นๆ วิธีนี้ช่วยให้การทำงานของโปรแกรมประสานกันได้ง่ายและยืดหยุ่นมากขึ้น
- ใช้บล็อก "ส่งข้อความ [ชื่อข้อความ]" เพื่อส่งสัญญาณให้ตัวละครหรือเหตุการณ์ทำงานพร้อมกัน
- ใช้บล็อก "เมื่อได้รับ [ชื่อข้อความ]" เพื่อให้ตัวละครทำงานเมื่อได้รับข้อความที่ส่งไป
ตัวอย่าง:
สร้างโปรแกรมที่ตัวละครหนึ่งส่งข้อความเพื่อให้ตัวละครที่สองเริ่มเดินเมื่อได้รับข้อความ "เริ่ม"
6. สรุปบทเรียน
- นักเรียนได้เรียนรู้วิธีการเขียนโปรแกรมแบบขนาน (Parallel Programming) ใน Scratch ซึ่งช่วยให้หลายตัวละครหรือเหตุการณ์ทำงานพร้อมกัน
- นักเรียนสามารถใช้บล็อกคำสั่ง เช่น "เมื่อธงเขียวถูกคลิก", "รอ", และ "ส่งข้อความ" เพื่อควบคุมการทำงานแบบขนานในโปรแกรมได้อย่างมีประสิทธิภาพ
กิจกรรมเสริม
ให้นักเรียนสร้างโปรแกรมที่มีตัวละครหลายตัวทำงานพร้อมกัน เช่น ตัวละครหนึ่งเดินไปข้างหน้าในขณะที่ตัวละครอื่นเล่นเสียงและเคลื่อนไหว จากนั้นลองประสานการทำงานของโปรแกรมด้วยการใช้บล็อก "รอ" และ "ส่งข้อความ"