บทที่ 7: การเขียนโปรแกรมแบบซ้ำซ้อน
1. ความสำคัญของการเขียนโปรแกรมแบบซ้ำซ้อน (Loops and Iteration)
การเขียนโปรแกรมแบบซ้ำซ้อน หรือ Loops และ Iteration เป็นแนวคิดสำคัญใน Hopscotch และการเขียนโปรแกรมทั่วไป เนื่องจากช่วยให้เราสามารถสั่งให้คำสั่งหรือโค้ดทำซ้ำหลายครั้งโดยไม่ต้องเขียนคำสั่งซ้ำ ๆ การใช้ Loop จะช่วยลดจำนวนบล็อกที่ใช้และทำให้โปรแกรมมีประสิทธิภาพมากขึ้น เช่น การใช้ Loop เพื่อให้ตัวละครเดินซ้ำไปมาหรือการทำงานอย่างต่อเนื่องโดยไม่ต้องเขียนโค้ดซ้ำหลายครั้ง
2. ประเภทของลูปใน Hopscotch
ใน Hopscotch คุณสามารถใช้บล็อกที่เกี่ยวกับลูปได้หลายรูปแบบ แต่รูปแบบที่สำคัญที่สุด ได้แก่:
- Repeat [n] Times: ใช้ในการทำซ้ำบล็อกคำสั่งจำนวนครั้งที่กำหนด เช่น ทำซ้ำ 5 ครั้ง
- Repeat Forever: ใช้ในการทำซ้ำคำสั่งอย่างไม่สิ้นสุด จนกว่าผู้ใช้จะหยุดโปรแกรม
- Repeat While: ใช้ในการทำซ้ำคำสั่งตามเงื่อนไขที่กำหนด เช่น ทำซ้ำจนกว่าคะแนนจะถึง 100
3. การใช้ลูป Repeat [n] Times
บล็อก "Repeat [n] Times" เป็นบล็อกที่ใช้ในการทำซ้ำคำสั่งจำนวนครั้งที่เรากำหนด โดยคำสั่งในลูปจะทำงานซ้ำเท่ากับค่าที่ตั้งไว้ ซึ่งช่วยประหยัดเวลาและโค้ดในการเขียนคำสั่งซ้ำ ๆ
ตัวอย่างการใช้บล็อก Repeat [n] Times:
หากคุณต้องการให้ตัวละครเดินไปข้างหน้า 10 ก้าวแล้วหมุนซ้าย 90 องศา ทำซ้ำ 4 ครั้ง (เพื่อให้เดินเป็นรูปสี่เหลี่ยม):
- ลากบล็อก "Move Forward" มาตั้งค่าเป็น 10 ก้าว
- ลากบล็อก "Turn Left" มาตั้งค่าเป็น 90 องศา
- ลากบล็อก "Repeat [n] Times" มาครอบบล็อก Move Forward และ Turn Left แล้วตั้งค่าให้ทำซ้ำ 4 ครั้ง
4. การใช้ลูป Repeat Forever
บล็อก "Repeat Forever" เป็นบล็อกที่ใช้ทำซ้ำคำสั่งโดยไม่มีจุดสิ้นสุด บล็อกนี้มีประโยชน์เมื่อเราต้องการสร้างแอนิเมชันหรือเกมที่ต้องการการทำงานต่อเนื่อง เช่น การหมุนของวัตถุหรือการเดินของตัวละครไปเรื่อย ๆ
ตัวอย่างการใช้บล็อก Repeat Forever:
หากต้องการให้ตัวละครหมุนไปเรื่อย ๆ โดยไม่มีจุดสิ้นสุด:
- ลากบล็อก "Turn Right" มาตั้งค่าให้หมุนไปขวา 15 องศา
- ลากบล็อก "Repeat Forever" มาครอบบล็อก Turn Right
- เมื่อกดเล่น ตัวละครจะหมุนไปเรื่อย ๆ โดยไม่มีจุดสิ้นสุด
5. การใช้ลูป Repeat While กับเงื่อนไข
บล็อก "Repeat While" เป็นบล็อกลูปที่ทำซ้ำคำสั่งตามเงื่อนไขที่กำหนด ลูปจะทำงานต่อไปเรื่อย ๆ จนกว่าเงื่อนไขจะเป็นเท็จ เช่น ทำซ้ำจนกว่าคะแนนจะถึง 100 หรือจนกว่าพลังชีวิตจะหมด การใช้ลูปแบบนี้มีประโยชน์เมื่อเราต้องการควบคุมการทำงานของโปรแกรมตามสถานการณ์
ตัวอย่างการใช้บล็อก Repeat While:
หากต้องการให้ตัวละครเดินไปเรื่อย ๆ จนกว่าคะแนนจะถึง 100:
- สร้างตัวแปร "Score" เพื่อเก็บคะแนน
- ลากบล็อก "Repeat While Score < 100" เพื่อทำซ้ำคำสั่งขณะที่คะแนนยังไม่ถึง 100
- ใส่บล็อก "Move Forward" และ "Increase Score by 1" เพื่อให้ตัวละครเดินไปและเพิ่มคะแนนไปเรื่อย ๆ จนกว่าคะแนนจะถึง 100
6. การใช้ลูปซ้อนลูป (Nested Loops)
ลูปซ้อนลูป (nested loops) เป็นการใช้ลูปซ้ำซ้อนกัน โดยลูปหนึ่งอยู่ภายในอีกลูปหนึ่ง ซึ่งช่วยในการสร้างการทำงานที่ซับซ้อนมากขึ้น เช่น การสร้างแอนิเมชันที่ตัวละครเดินในทิศทางต่าง ๆ อย่างต่อเนื่อง หรือการสร้างเอฟเฟกต์หลายระดับที่เกิดขึ้นพร้อมกัน
ตัวอย่างการใช้ลูปซ้อนลูป:
หากคุณต้องการสร้างแอนิเมชันที่ตัวละครเดินเป็นวงกลมซ้ำหลายครั้ง:
- ลากบล็อก "Repeat 4 Times" มาครอบบล็อก "Move Forward" และ "Turn Right 90 Degrees" เพื่อให้ตัวละครเดินเป็นสี่เหลี่ยม
- จากนั้นลากบล็อก "Repeat 3 Times" มาครอบบล็อก Repeat 4 Times เพื่อให้ทำซ้ำการเดินเป็นสี่เหลี่ยม 3 ครั้ง
7. สิ่งที่ควรคำนึงถึง
การใช้ลูปช่วยให้โปรแกรมมีประสิทธิภาพ แต่ต้องระวังการใช้ลูปไม่สิ้นสุด (infinite loops) ที่อาจทำให้โปรแกรมหยุดทำงานหรือช้าลง ควรมีการตรวจสอบเงื่อนไขการทำงานของลูป และทดสอบการทำงานของโปรแกรมให้แน่ใจว่าทำงานได้อย่างถูกต้อง
ในบทนี้ นักเรียนได้เรียนรู้เกี่ยวกับการเขียนโปรแกรมแบบซ้ำซ้อน (loops) ใน Hopscotch รวมถึงการใช้บล็อก Repeat [n] Times, Repeat Forever, และ Repeat While การใช้ลูปช่วยเพิ่มประสิทธิภาพของโปรแกรมและลดความซับซ้อนของโค้ด การใช้ลูปซ้อนลูปช่วยให้สามารถสร้างแอนิเมชันและการทำงานที่ซับซ้อนได้ง่ายขึ้น ในบทถัดไปเราจะได้เรียนรู้เกี่ยวกับการทดสอบและแก้ไขปัญหาในโครงการ