Μάθημα 2: Χρήση βρόχου While
Σε αυτό το μάθημα, θα δημιουργήσετε ένα έργο χρησιμοποιώντας τον Αισθητήρα Bumper και τον βρόχο while. Στη μίνι-πρόκληση, θα εφαρμόσετε αυτές τις δεξιότητες για να πλοηγηθείτε από την αρχή του Λαβύρινθου του Τοίχου μέχρι το γράμμα «Α».

Μαθησιακά Αποτελέσματα
- Προσδιορίστε ότι οι εντολές που δεν βρίσκονται σε αναμονή έχουν ως αποτέλεσμα τη συνέχιση του έργου, ακόμη και αν η συμπεριφορά της εντολής δεν έχει ολοκληρωθεί ακόμη.
- Προσδιορίστε ότι μια εντολή αναμονής ολοκληρώνει τη συμπεριφορά πριν συνεχίσετε στο έργο.
- Προσδιορίστε ότι ο βρόχος whileθα ελέγχει επανειλημμένα μια Boolean συνθήκη και δεν θα μετακινηθεί στην επόμενη εντολή μέχρι η συνθήκη να αναφέρει True.
- Προσδιορίστε ότι ο βρόχος whileχρησιμοποιείται με εντολές που δεν βρίσκονται σε αναμονή (π.χ. drive) για τον έλεγχο της κατάστασης του αισθητήρα.
- Προσδιορίστε ότι η λέξη-κλειδί όχιαντιστρέφει την τιμή μιας Boolean συνθήκης από True σε False ή False σε True.
- Προσδιορίστε ότι οι εντολές left_bumper.pressedκαι right_bumper.pressedεπιστρέφουν τιμή True ή False σε έναν βρόχο while.
- Περιγράψτε πώς να δημιουργήσετε ένα έργο που έχει ένα ρομπότ εικονικής πραγματικότητας να κινείται προς τα εμπρός μέχρι να πατηθεί ο αισθητήρας προφυλακτήρα.
Βρόχοι While
Ο βρόχος ενώ δέχεται λογικές συνθήκες. Ενώ οι βρόχοιελέγχουν επανειλημμένα μια λογική συνθήκη και ελέγχουν τη ροή του έργου. Ο βρόχος ενώθα συνεχίσει να επαναλαμβάνεται εφόσον η συνθήκη είναι& True. Ο βρόχος while θα τερματίσει τον βρόχο και θα μετακινηθεί στην επόμενη εντολή εκτός του βρόχου μόλις η συνθήκη αναφερθεί ως False.

Ουσιαστικά, ένας βρόχοςενώλέει στο ρομπότ εικονικής πραγματικότητας να συνεχίσει να εκτελεί μια συμπεριφοράενώπληρούται μια συγκεκριμένη συνθήκη. Η λογική είναι παρόμοια με αυτό το σενάριο:Ενώλάμπει ο ήλιος, πήγαινε να παίξεις έξω.Τι θα έκανες; Η συνθήκη «ο ήλιος λάμπει» καθορίζει πού πρέπει να βρίσκεστε. Όταν ο ήλιος λάμπει, η συνθήκη είναι αληθής, οπότε πηγαίνεις να παίξεις έξω. Όταν δύει ο ήλιος, η συνθήκη είναι Ψευδής, άρα θα επιστρέψετε μέσα.

While Loops και το πρόβλημα του λαβυρίνθου του τοίχου
Η ίδια λογική ισχύει και για το ρομπότ εικονικής πραγματικότητας (VR) στον λαβύρινθο του τοίχου. Ενώ ο αισθητήρας προφυλακτήραδεν είναι πατημένος, το ρομπότ εικονικής πραγματικότητας θα πρέπει να συνεχίσει να κινείται προς τα εμπρός. Όταν πατηθεί, θα πρέπει να σταματήσει ή να περιστραφεί. Χρησιμοποιώντας βρόχουςwhileσε συνδυασμό με εντολές που δεν αναμένουν, όπως drive, μπορούμε να προγραμματίσουμε το ρομπότ VR να κάνει ακριβώς αυτό. Ωστόσο, οι εντολές του Αισθητήρα Προφυλακτήρα χρησιμοποιούν την συνθήκη του πατημένου Αισθητήρα Προφυλακτήρα (left_bumper.pressedή right_bumper.pressed)Για να προγραμματίσουμε το Ρομπότ Εικονικής Πραγματικότητας να οδηγεί ενώ ο Αισθητήρας Προφυλακτήρα είναι πατημένοςκαι όχι, πρέπει να χρησιμοποιήσουμε έναν τελεστήκαι όχι.
def main():
ενώ δεν συνθήκη:
αναμονή (5, MSEC)Για την ενημέρωσή σας
Οι εντολές που δεν αναμένουν και οι εντολές που αναμένουν καθορίζουν πότε η επόμενη εντολή ξεκινά μια συμπεριφορά. Οι εντολές αναμονής, όπως drive_forκαι turn_for, ολοκληρώνουν τις συμπεριφορές τους πριν προχωρήσουν στην επόμενη εντολή του έργου. Οι εντολές που δεν αναμένουν, όπως driveκαι turn, συνεχίζουν να μετακινούνται στην επόμενη εντολή στο έργο, ακόμη και αν η συμπεριφορά της εντολής που δεν αναμένει δεν έχει ολοκληρωθεί.
Εντολές αναμονής
μετάδοσης κίνησης.drive_for(ΜΠΡΟΣΤΑ, 200, MM)
μετάδοσης κίνησης.turn_for(ΔΕΞΙΑ, 90, ΜΟΙΡΕΣ)Εντολές που δεν αναμένουν
σύστημα μετάδοσης κίνησης.κίνηση (ΜΠΡΟΣΤΑ)
σύστημα μετάδοσης κίνησης.στροφή (ΔΕΞΙΑ)Η λέξη-κλειδί "όχι"
Η λέξη-κλειδίόχιθα χρησιμοποιείται συνήθως με τους βρόχουςενώ, για να εκτελούνται οι εντολές μέσα στον βρόχο ενώ η συνθήκη επιστρέφει False. Για να χρησιμοποιήσουμε το παράδειγμα «ο ήλιος λάμπει», το ίδιο αποτέλεσμα μπορεί να επιτευχθεί χρησιμοποιώντας έναν τελεστήόχι. Όσο ο ήλιος, έλα μέσα

Στον Λαβύρινθο του Τοίχου, αυτό είναι χρήσιμο ώστε να μπορέσουμε να προγραμματίσουμε το Ρομπότ Εικονικής Πραγματικότητας έτσι ώστε ενώ ο Αισθητήρας Προφυλακτήρα είναι πατημένοςκαι όχι, να κινείται προς τα εμπρός. Η συνθήκη εξακολουθεί να είναι «εάν πατηθεί ο Αισθητήρας Προφυλακτήρα», αλλά με αυτόν τον τρόπο, όταν αναφέρει False (δεν έχει πατηθεί), η ροή του έργου παραμένει στον βρόχο. Όταν πατηθεί ο Αισθητήρας Προφυλακτήρα, η συνθήκη είναι True, επομένως το έργο θα βγει από τον βρόχο.
Για την ενημέρωσή σας
Η λέξη-κλειδί όχι είναι ένας λογικός τελεστής που αντιστρέφει την τιμή μιας Boolean τιμής. Η τοποθέτηση της λέξης-κλειδιούόχιμπροστά από μια εντολή που επιστρέφει μια Boolean τιμή θα αντιστρέψει την τιμή True σε False και την τιμή False σε True. Για παράδειγμα, φανταστείτε ότι πατάτε τον Αισθητήρα Αριστερού Προφυλακτήρα στο Ρομπότ VR και η εντολή left_bumper.pressedεπιστρέφει True. Η λέξη-κλειδίόχιθα αντιστρέψει την τιμή Boolean και θα κάνει αυτήν την έκφραση να επιστρέψει False.
δεν είναι left_bumper.pressed()Ανάλογα με τα δεδομένα αισθητήρα που χρησιμοποιείτε, η λέξη-κλειδίόχιμπορεί να είναι απαραίτητη για να εκτελέσει ένα ρομπότ εικονικής πραγματικότητας τις επιθυμητές συμπεριφορές.
def main():
ενώ δεν είναι left_bumper.pressed():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()Δημιουργία έργου με βρόχοWhile και τον αισθητήρα προφυλακτήρα
Ονομάστε και αποθηκεύστε το έργο
- Ανοίξτε ένα νέο έργο κειμένου και επιλέξτε τοWall Maze Playgroundόταν σας ζητηθεί.

-
Ονομάστε το έργο Μονάδα4Μάθημα2.

-
Σύρετε ή πληκτρολογήστε την εντολή whileστον χώρο εργασίας για να αντικαταστήσετε την εντολή Drivetrain που συμπληρώνεται αυτόματα ως μέρος ενός νέου έργου κειμένου. Παρατηρήστε ότι υπάρχει μια εντολή wait μέσα στον βρόχο. Μην καταργήσετε την εντολή wait, καθώς θα διασφαλίσει ότι το ρομπότ εικονικής πραγματικότητας (VR) θα εκτελέσει το έργο σωστά. Το έργο σας θα πρέπει να μοιάζει με αυτό:
def main(): ενώ συνθήκη: αναμονή(5, MSEC) -
Πληκτρολογήστε έναν τελεστήόχιμετά το 'while' στην εντολήwhile. Το έργο σας θα πρέπει τώρα να μοιάζει με αυτό:
def main(): ενώ δεν είναι συνθήκη: αναμονή(5, MSEC) -
Σύρετε ή πληκτρολογήστε την εντολή left_bumper.pressedστη «συνθήκη» του βρόχου while. Οι εντολές εντός του βρόχου θα εκτελούνται όταν η συνθήκη δεν είναι True, δηλαδή όταν ο Αισθητήρας Αριστερού Προφυλακτήρα είναι πατημένοςκαι όχι. Το έργο σας θα πρέπει τώρα να μοιάζει με αυτό:
def main(): ενώ δεν είναι left_bumper.pressed(): αναμονή(5, MSEC) -
Μέσα στον βρόχο while, σύρετε ή πληκτρολογήστε την εντολή drive. Βεβαιωθείτε ότι η εντολήdriveκαι η εντολήwaitέχουν τοποθετηθεί σωστά μέσα στον βρόχοwhile, έτσι ώστε ο βρόχος να εκτελείται όπως προβλέπεται. Μπορείτε να χρησιμοποιήσετε τις γραμμές καθοδήγησης ως οπτικό βοήθημα. Το έργο σας θα πρέπει τώρα να μοιάζει με αυτό:
def main(): ενώ δεν είναι left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) -
Σύρετε ή πληκτρολογήστε μια εντολή stop εκτός του βρόχου while. Βεβαιωθείτε ότι η εντολήstopείναι ευθυγραμμισμένη με τον βρόχοwhileκαι δεν έχει εσοχή, έτσι ώστε να εκτελείται εκτός του βρόχου όπως προβλέπεται. Μπορείτε να χρησιμοποιήσετε τις γραμμές καθοδήγησης ως οπτικό βοήθημα. Το έργο σας θα πρέπει τώρα να μοιάζει με αυτό:
def main(): ενώ δεν είναι left_bumper.pressed(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() - Ανοίξτε το παράθυρο της παιδικής χαράς, εάν δεν είναι ήδη ανοιχτό. Βεβαιωθείτε ότι η παιδική χαράτου Wall Mazeείναι ανοιχτή.
- Εκτελέστε το έργο.
- Παρακολουθήστε το ρομπότ εικονικής πραγματικότητας να οδηγεί από την αρχή του λαβυρίνθου του τοίχου και να σταματά όταν ο αισθητήρας προφυλακτήρα πιεστεί από τον τοίχο.
- Η εντολή Drive (Οδήγηση) επιτρέπει στο ρομπότ εικονικής πραγματικότητας (VR) να συνεχίσει να κινείται προς τα εμπρός, ενώ ελέγχει την κατάσταση του αισθητήρα προφυλακτήρα με την εντολή Left Bumper Pressed (Πατημένος αριστερός προφυλακτήρας). Μόλις η εντολή left_bumper.pressedαναφέρει ότι είναι True, το VR Robot θα μετακινηθεί στην επόμενη εντολή εκτός του βρόχου και θα σταματήσει να οδηγεί.
Επιλέξτε το κουμπί Επόμενο για να συνεχίσετε με το υπόλοιπο μάθημα.