บทที่ 5: การวนซ้ำแบบ For Loops


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

Before:
After:

พื้นฐานของ For Loop

เนื่องจากผู้ใช้รู้อยู่แล้วว่าต้องการให้คาเรลวางเหรียญ 42 เหรียญ ผู้ใช้สามารถใช้คำสั่ง for ในการสั่งให้โปรแกรม ทำงานที่รู้จำนวนครั้งที่แน่นอนได้ โครงสร้างภาษาไพธอนสำหรับคำสั่ง for คือ

for i in range(count):
statements to be repeated

โดยที่ i คือตัวนับ และ ค่า count คือค่าที่ใช้กำหนดจำนวนรอบที่ต้องการให้ทำงานซ้ำ ในกรณีนี้สามารถแทนค่า count ด้วย 42 แล้วให้ลำดับคำสั่งที่ต้องการทำซ้ำ อยู่ใน code block ของคำสั่ง for ด้วยการใส่ย่อหน้าเพิ่มที่ลำดับคำสั่งนั้นๆ ทดลองกดปุ่ม “Run Program” เพื่อดูการทำงานของคำสั่ง for

ลำดับคำสั่งของตัวอย่างโปรแกรม PlaceManyBeepers สามารถแก้ไขได้ ลองแก้ไขให้คาเรลวางเหรียญเพียง 15 เหรียญ

ตัวอย่างก่อนหน้านี้้ มีเพียงคำสั่งเดียวที่อยู่่ใน for loop ผู้ใช้สามารถใส่ลำดับคำสั่งมากกว่า 1 คำสั่งต่อใน code block ของคำสั่ง for ได้ ลองกดปุ่ม “Run Program” ของตัวอย่างโปรแกรม CornerBeepers ที่อยู่ด้านล่าง แล้วทำความเข้าใจการทำงานของคาเรล โดยหุ่นยนต์คาเรลจะนำเหรียญไปวางที่มุมแต่ละมุมในโลกของคาเรลขนาด 4x4

จากโปรแกรมข้างต้น แสดงให้เห็นถึงลำดับการทำงานของชุดคำสั่งที่ทำการวนซ้ำภายในกรอบการทำงานของ for loop

มีเหตุการณ์อยู่หลายๆ ครั้งที่ผู้ใช้ไม่สามารถสั่งให้โปรแกรมทำงานครบตามจำนวนครั้งที่ต้องการได้ เพราะมีความผิดพลาดในการทำงาน เกิดขึ้นในระหว่างที่กำลังทำงานคำสั่ง for เนื่องจากผู้ใช้ไม่ได้ประเมินผลลัพธ์สุดท้ายของการทำงานของโปรแกรมในการวนลูปครั้งแรก ก่อนที่จะให้โปรแกรมทำงานวนลูปซ้ำในรอบถัดไป โปรแกรม CornerBeepers สามารถแก้ไขได้ ให้ทดลองลบคำสั่ง turn_left() ออกไป แล้วกดปุ่ม “Run Program” ให้คาเรลทำงานอีกครั้ง แล้วสังเกตข้อผิดพลาดที่เกิดขึ้น

การวนซ้ำที่ซ้อนกัน

ในทางเทคนิค ไม่ได้มีการห้ามใช้คำสั่ง for ภายในคำสั่ง for ดังนั้น ผู้ใช้สามารถสร้างลูปซ้อนกันได้ ลองวิเคราะห์การทำงานของโปรแกรม CornerFiveBeepers เพื่อดูหุ่นยนต์คาเรลทำงานโดยการไปวางเหรียญ 5 เหรียญที่แต่ละมุมในโลกของคาเรลขนาด 4x4


บทถัดไป