Μετάβαση στο κύριο περιεχόμενο

Μάθημα 4: Χρήση ενσωματωμένων βρόχων

Στο προηγούμενο μάθημα, δημιουργήσατε ένα έργο για να δώσετε εντολή στο Ρομπότ Εικονικής Πραγματικότητας να οδηγήσει, να παραλάβει και να μετακινήσει και τους τρεις μπλε δίσκους στην Παιδική Χαρά του Μηχανισμού Μετακίνησης Δίσκων , μέσα στον μπλε στόχο. Σε αυτό το μάθημα, θα δημιουργήσετε ένα έργο για να παραλάβετε και να μετακινήσετε έναν δίσκο από κάθε χρώμα στον αντίστοιχο χρωματιστό στόχο του στο Disk Mover Playground χρησιμοποιώντας ένθετους βρόχους!

Μια κάτοψη της παιδικής χαράς Disk Mover με τον πρώτο δίσκο κάθε χρώματος στον αντίστοιχο χρωματικό στόχο. Το ρομπότ εικονικής πραγματικότητας είναι στραμμένο προς τον δεξιό πλευρικό τοίχο στην άκρη του πράσινου τέρματος, στην κάτω δεξιά γωνία.

Μαθησιακά Αποτελέσματα

  • Προσδιορίστε τον τρόπο δημιουργίας ενθέτων βρόχων.
  • Περιγράψτε τη ροή ενός έργου μέσω ενσωματωμένων βρόχων.
  • Εξηγήστε γιατί θα χρησιμοποιούνταν ένθετοι βρόχοι σε ένα έργο.

Τι είναι οι Nested Loops;

Σε προηγούμενες Ενότητες και Μαθήματα αυτού του μαθήματος, έχετε χρησιμοποιήσει βρόχους από την κατηγορία Έλεγχος, όπως τον βρόχο για , τον βρόχο while και τους βρόχους άπειρου whileγια να επαναλάβετε συμπεριφορές. Η τοποθέτηση ενός βρόχου μέσα σε έναν άλλο βρόχο ονομάζεται «ένθεση». Οι ενσωματωμένοι βρόχοι είναι χρήσιμοι σε έργα όπου ένα ρομπότ εικονικής πραγματικότητας επαναλαμβάνει τις ίδιες συμπεριφορές περισσότερες από μία φορές, όπως για να μετακινήσει πολλούς δίσκους στην παιδική χαρά. Οι βρόχοι ένθεσης μπορούν να οργανώσουν και να συμπυκνώσουν ένα έργο, ώστε να το κάνουν πιο εύκολα κατανοητό. Αυτό μπορεί να είναι χρήσιμο για την καλύτερη κατανόηση του πλαισίου και του σκοπού του κώδικα, καθώς και για την ευκολότερη αναγνώριση σφαλμάτων και την αντιμετώπιση προβλημάτων ενός έργου. 

Για παράδειγμα, για να μετακινήσετε και τους τρεις μπλε δίσκους στον μπλε στόχο, μπορεί να χρησιμοποιηθεί ένας βρόχοςπροςγια να επαναληφθεί η διαδικασία συλλογής ενός δίσκου πολλές φορές. Το έργο που εμφανίζεται εδώ τοποθετεί το έργο του Μαθήματος 3 για να μετακινήσει τον πρώτο μπλε δίσκο στον μπλε στόχο μέσα σε έναν βρόχο για , με την παράμετρο ορισμένη σε 3. Παρατηρήστε πώς τα τέσσερα τμήματα του προηγούμενου έργου είναι εσοχή μέσα στον βρόχο για.

def main():
    για repeat_count στο εύρος(3):
        #1. Οδήγηση στον πρώτο δίσκο
        ενώ δεν είναι down_eye.near_object():
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 2. Σηκώστε τον δίσκο
        μαγνήτη. Ενεργοποιήστε (ΕΝΙΣΧΥΣΗ)

        # 3. Οδήγηση προς τον στόχο
        drivetrain.turn_to_heading(180, ΜΟΙΡΕΣ)
        while front_distance.get_distance(MM) > 200:
            drivetrain.drive(FORWARD)
            wait(5, MSEC)
        drivetrain.stop()

        # 4. Ρίξτε τον δίσκο στον στόχο
        magnet.energize(DROP)

        drivetrain.drive_for(REVERSE, 100, MM)
        drivetrain.turn_to_heading(0, DEGREES)

    wait(5, MSEC)

Όταν κάνετε «ένθεση» σε βρόχους, ο εξωτερικός βρόχος ελέγχει τον αριθμό των φορών που εκτελείται ο εσωτερικός βρόχος.  Σε αυτό το έργο, ο βρόχοςγιαείναι ο εξωτερικός βρόχος και θα επαναλάβει τις συμπεριφορές στον βρόχο τρεις φορές.

Το έργο από πάνω με τον βρόχο for επισημασμένο σε κόκκινο πλαίσιο. Σε εσοχή κάτω από τον κύριο ορισμό, η άνω και κάτω τελεία για τον αριθμό υπογράμμισης επανάληψης στην περιοχή (3) είναι η αρχή του βρόχου και τα τέσσερα τμήματα του έργου είναι σε εσοχή κάτω από αυτήν. Στο κάτω μέρος του έργου, ευθυγραμμισμένη με την εντολή for loop, υπάρχει μια εντολή wait, η οποία δείχνει πού τελειώνει ο βρόχος.

Οι εσωτερικοί βρόχοι είναι οι βρόχοι που περιέχονται στον εξωτερικό βρόχο. Σε αυτό το παράδειγμα, καθένας από τους βρόχουςwhile(για την οδήγηση στον δίσκο και στον στόχο) είναι «εσωτερικοί βρόχοι» που εκτελούνται κάθε φορά που το έργο μετακινείται μέσω του βρόχουγια.Το ίδιο έργο από πάνω, με κάθε έναν από τους εσωτερικούς βρόχους while να επισημαίνεται σε ένα κόκκινο πλαίσιο. Η πρώτη και η τρίτη ενότητα σχολίων του έργου περιέχουν βρόχους while για να χρησιμοποιούν τους αισθητήρες στο ρομπότ για οδήγηση μέχρι να ανιχνευθεί ένας δίσκος και στη συνέχεια μέχρι να ανιχνευθεί ο τοίχος.

Για την ενημέρωσή σας

Η εσοχή είναι σημαντική σε έργα VEXcode VR Python. Μπορείτε να χρησιμοποιήσετε τις γκρι ενδεικτικές γραμμές στον χώρο εργασίας ως οπτικό βοήθημα κατά την ένθεση βρόχων, για να διασφαλίσετε ότι το έργο σας λειτουργεί όπως προβλέπεται. Κάθε γραμμή υποδεικνύει την αρχή και το τέλος ενός βρόχου.

Το ίδιο έργο από πάνω με τις κατευθυντήριες γραμμές επισημασμένες σε κόκκινα πλαίσια, που δείχνουν την ευθυγράμμιση των εσοχών καθενός από τους εσωτερικούς βρόχους σε σχέση με το υπόλοιπο έργο. Η γραμμή βρόχου for εκτείνεται κατευθείαν μέχρι την τελική εντολή αναμονής. Και καθεμία από τις γραμμές του βρόχου while επεκτείνεται στις εντολές stop.

Ροή ενός έργου nested loop 

Σε αυτό το παράδειγμα, κάθε φορά που επαναλαμβάνεται ο βρόχοςγια, ένας μπλε δίσκος επιλέγεται και επιστρέφει στον μπλε στόχο. 

Μετά την πρώτη επανάληψη, ο πρώτος μπλε δίσκος επιστρέφει στον μπλε στόχο και το ρομπότ εικονικής πραγματικότητας γυρίζει για να είναι έτοιμο να παραλάβει τον δεύτερο δίσκο.

Μια εικόνα του έργου από πάνω, η οποία φαίνεται δίπλα-δίπλα, στον χώρο εργασίας στα αριστερά, και το παράθυρο της παιδικής χαράς στα δεξιά. Το έργο έχει ένα πορτοκαλί βέλος που περιβάλλει ολόκληρο το έργο από την εντολή for loop, απεικονίζοντας την πρώτη επανάληψη του for loop. Στην Παιδική Χαρά, ο πρώτος μπλε δίσκος βρίσκεται στο μπλε τέρμα και το Ρομπότ Εικονικής Πραγματικότητας είναι τοποθετημένο απέναντι από τους υπόλοιπους μπλε δίσκους, στο μπροστινό άκρο του τέρματος, υποδεικνύοντας τη θέση του ρομπότ μετά την πρώτη επανάληψη.

Μετά τη δεύτερη επανάληψη, ο δεύτερος μπλε δίσκος συλλέγεται και το ρομπότ εικονικής πραγματικότητας γυρίζει για να είναι έτοιμο να συλλέξει τον τρίτο δίσκο.

Μια εικόνα του έργου από πάνω, η οποία φαίνεται δίπλα-δίπλα, στον χώρο εργασίας στα αριστερά, και το παράθυρο της παιδικής χαράς στα δεξιά. Το έργο έχει ένα πορτοκαλί βέλος που τυλίγεται από την εντολή for loop γύρω από ολόκληρο το έργο, απεικονίζοντας τη δεύτερη επανάληψη του for loop. Στην Παιδική Χαρά, 2 μπλε δίσκοι βρίσκονται στο μπλε τέρμα και το Ρομπότ Εικονικής Πραγματικότητας είναι τοποθετημένο απέναντι από τον υπόλοιπο μπλε δίσκο, στο μπροστινό άκρο του τέρματος, υποδεικνύοντας τη θέση του ρομπότ μετά τη δεύτερη επανάληψη.

Μετά την τρίτη επανάληψη, ο τρίτος μπλε δίσκος συλλέγεται και το ρομπότ εικονικής πραγματικότητας σταματά να κινείται. Ο βρόχοςγια έχει πλέον ολοκληρώσει το εύρος του, επομένως το έργο έχει ολοκληρωθεί. 

Μια εικόνα του έργου από πάνω, η οποία φαίνεται δίπλα-δίπλα, στον χώρο εργασίας στα αριστερά, και το παράθυρο της παιδικής χαράς στα δεξιά. Το έργο έχει ένα πορτοκαλί βέλος που περιβάλλει ολόκληρο το έργο από την εντολή for loop, απεικονίζοντας την τρίτη επανάληψη του for loop. Στην Παιδική Χαρά, και οι τρεις μπλε δίσκοι βρίσκονται στο μπλε τέρμα και το Ρομπότ Εικονικής Πραγματικότητας είναι τοποθετημένο στραμμένο μακριά από το τέρμα ακριβώς έξω από το κουτί του τέρματος, υποδεικνύοντας τη θέση του ρομπότ μετά την τελική επανάληψη.

 

Επιλέξτε το κουμπί Επόμενο για να συνεχίσετε με το υπόλοιπο μάθημα.