บทเรียนที่ 4: การใช้ลูปที่ซ้อนกัน
ในบทเรียนก่อนหน้านี้คุณได้สร้างโครงการเพื่อสั่งให้หุ่นยนต์ VR ขับรถไปรับและย้ายดิสก์สีน้ำเงินทั้งสามแผ่นใน Disk Mover Playground ไปยังเป้าหมายสีน้ำเงิน ในบทเรียนนี้คุณจะสร้างโครงการเพื่อหยิบและย้ายดิสก์หนึ่งแผ่นของแต่ละสีไปยังเป้าหมายสีที่สอดคล้องกันในสนามเด็กเล่น Disk Mover โดยใช้ลูปที่ซ้อนกัน!

ผลการเรียนรู้
- ระบุวิธีการซ้อนลูป
- อธิบายการไหลของโครงการผ่านลูปที่ซ้อนกัน
- อธิบายว่าเหตุใดจึงต้องใช้ลูปที่ซ้อนกันใน โปรเจกต์
Nested Loops คืออะไร?
ในหน่วยการเรียนรู้และบทเรียนก่อนหน้าของหลักสูตรนี้ คุณได้ใช้ลูปจากหมวดการควบคุม เช่น ลู สำหรับ ลูป ในขณะที่ และลูปอินฟินิตี้ ในขณะที่ เพื่อทำซ้ำพฤติกรรม การวางห่วงหนึ่งไว้ภายในอีกห่วงหนึ่งเรียกว่า 'การซ้อน' ลูปที่ซ้อนกันมีประโยชน์ในโครงการที่หุ่นยนต์ VR ทำพฤติกรรมเดียวกันซ้ำๆกันมากกว่าหนึ่งครั้งเช่นการย้ายดิสก์หลายรายการบนสนามเด็กเล่น ห่วงรังสามารถจัดระเบียบและควบแน่นโครงการเพื่อให้เข้าใจได้ง่ายขึ้น ซึ่งจะเป็นประโยชน์ในการทำความเข้าใจบริบทและวัตถุประสงค์ของโค้ดได้ดียิ่งขึ้นรวมถึงช่วยให้ระบุข้อผิดพลาดและแก้ไขปัญหาโปรเจกต์ได้ง่ายขึ้น
ตัวอย่างเช่นเพื่อย้ายดิสก์สีน้ำเงินทั้งสามตัวไปยังเป้าหมายสีน้ำเงิน สำหรับ ลูปสามารถถูกใช้เพื่อทำซ้ำกระบวนการของการรวบรวมดิสก์หลายครั้ง โปรเจกต์ที่แสดงที่นี่วางโปรเจกต์บทเรียนที่ 3 เพื่อย้ายดิสก์สีน้ำเงินตัวแรกไปยังเป้าหมายสีน้ำเงินภายใน for loop โดยตั้งค่าพารามิเตอร์เป็น 3 สังเกตว่าทั้งสี่ส่วนของโครงการก่อนหน้าถูกเยื้องภายใน for loop อย่างไร
def main ():
สำหรับ repeat_count ในช่วง (3):
#1 ไดรฟ์ไปยังดิสก์แรก
ในขณะที่ไม่ใช่
down_eye.near_object (): drivetrain.drive (FORWARD)
wait (5
, msec)
drivetrain.stop () #2 หยิบแผ่นดิสก์
magnet.energize (BOOST)
#3 ขับไปยังเป้าหมาย
drivetrain.turn_to_heading (180, DEGREES)
ในขณะที่ front_distance.get_distance (MM
) > 200: drivetrain.drive (FORWARD)
wait (5
, msec) drivetrain.stop ()
#4 วางดิสก์ลงในแม่เหล็กเป้าหมาย
ให้พลังงาน (หล่น)
drivetrain.drive_for (ย้อนกลับ, 100, MM
) drivetrain.turn_to_heading (0, องศา)
รอ (5, มิลลิวินาที)เมื่อคุณ 'ซ้อน' ลูปลูปด้านนอกจะควบคุมจำนวนครั้งที่ลูปด้านในถูกดำเนินการ ในโครงการนี้ for loop คือ outer loop และจะทำซ้ำพฤติกรรมใน loop สามครั้ง
ลูปด้านในเป็นลูปที่อยู่ภายในลูปด้านนอก ในตัวอย่างนี้ ลูป while แต่ละลูป (เพื่อขับเคลื่อนไปที่ดิสก์และไปยังเป้าหมาย) เป็น 'ลูปภายใน' ที่จะดำเนินการทุกครั้งที่โครงการเคลื่อนผ่านลูป for 
สำหรับข้อมูลของคุณ
การเยื้องมีความสำคัญในโครงการ VEXcode VR Python คุณสามารถใช้เส้นตัวบ่งชี้สีเทาในพื้นที่ทำงานเป็นตัวช่วยในการมองเห็นเมื่อซ้อนลูปเพื่อให้แน่ใจว่าโปรเจกต์ของคุณทำงานได้ตามที่ตั้งใจไว้ แต่ละบรรทัดแสดงจุดเริ่มต้นและจุดสิ้นสุดของลูป

การไหลของโครงการลูปที่ซ้อนกัน
ในตัวอย่างนี้ทุกครั้งที่ for loop วนซ้ำดิสก์สีน้ำเงินจะถูกหยิบขึ้นมาและกลับไปที่เป้าหมายสีน้ำเงิน
หลังจากการทำซ้ำครั้งแรกดิสก์สีน้ำเงินตัวแรกจะถูกส่งกลับไปยังเป้าหมายสีน้ำเงินและหุ่นยนต์ VR จะพร้อมที่จะรวบรวมดิสก์ตัวที่สอง
หลังจากการทำซ้ำครั้งที่สองดิสก์สีน้ำเงินแผ่นที่สองจะถูกเก็บรวบรวมและหุ่นยนต์ VR จะเปลี่ยนเป็นพร้อมที่จะเก็บรวบรวมดิสก์แผ่นที่สาม
หลังจากการทำซ้ำครั้งที่สามดิสก์สีน้ำเงินที่สามจะถูกรวบรวมและหุ่นยนต์ VR จะหยุดเคลื่อนที่ ขณะนี้ for loop ได้ดำเนินการเสร็จสิ้นแล้วดังนั้นโครงการจึงเสร็จสมบูรณ์

เลือกปุ่ม ถัดไป เพื่อดำเนินการกับบทเรียนส่วนที่เหลือนี้ต่อไป