Μάθημα 4: Επαναλαμβανόμενες Συμπεριφορές
Στο προηγούμενο μάθημα, παρατηρήσατε πώς να χρησιμοποιήσετε τις εντολές if προκειμένου το VR Robot να ελέγξει τις συνθήκες. Ωστόσο, λόγω της ροής του έργου, οι συνθήκες εντός των δηλώσεων if ελέγχονται μόνο μία φορά. Σε αυτό το μάθημα, θα μάθετε έναν άπειρο βρόχο και πώς μπορεί να χρησιμοποιηθεί για την επίλυση της Πρόκλησης του Λαβύρινθου των Δίσκων.

Μαθησιακά Αποτελέσματα
- Προσδιορίστε ότι ένας άπειρος βρόχος ενώ επαναλαμβάνει τις συμπεριφορές μέσα στον βρόχο για πάντα.
- Περιγράψτε γιατί ένας άπειρος βρόχος ενώθα χρησιμοποιούνταν σε ένα έργο.
- Περιγράψτε τη ροή του έργου σε ένα έργο που έχει πολλαπλές εντολές if μέσα σε έναν άπειρο βρόχο while.
- Εξηγήστε γιατί αν χρησιμοποιούνται εντολές με άπειρο ενώ επαναλαμβάνονται.
Επαναλαμβανόμενος έλεγχος συνθηκών
Όπως παρατηρήθηκε στο προηγούμενο μάθημα, η εντολή if ελέγχει μια συνθήκη μόνο μία φορά. Προκειμένου οι συνθήκες που περιέχονται στις εντολές if να ελέγχονται επανειλημμένα, το έργο πρέπει να επιστρέφει στην αρχή ξανά και ξανά. Για να γίνει αυτό, χρειάζεται ένας άπειρος βρόχος ενώ.
ενώ True:
αναμονή (5, MSEC)Ένας άπειρος βρόχος ενώ χρησιμοποιεί μια συνθήκη που πάντα αξιολογείται ως True. Ενώ οι βρόχοι εκτελούν το σώμα του βρόχου όταν η συνθήκη είναι True, έτσι οι εντολές μέσα στον βρόχο επαναλαμβάνονται επ' άπειρον.
Ο άπειρος βρόχος ενώκαι το πρόβλημα του λαβυρίνθου του δίσκου
Για να συμπεριφερθεί το ρομπότ εικονικής πραγματικότητας (VR) όπως το θέλουμε και να πλοηγηθεί με επιτυχία στον λαβύρινθο των δίσκων, οι συνθήκες που ορίζονται από τις εντολέςifπρέπει να ελέγχονται επανειλημμένα καθώς το ρομπότ εικονικής πραγματικότητας κινείται στην παιδική χαρά. Η προσθήκη ενός άπειρου βρόχουwhileσε ολόκληρο το έργο θα επιτρέψει αυτό να συμβεί, επειδή όλες οι εντολές if που περιέχονται στον άπειρο βρόχο while στο παρακάτω έργο ελέγχονται επανειλημμένα μέχρι να σταματήσει το έργο.
Σημειώστε την εσοχή εδώ. Όλες οι εντολές if έχουν εσοχή ώστε να βρίσκονται εντός του άπειρου βρόχου while. Το τέλος του άπειρου βρόχου while σημειώνεται με την εντολή wait.
def main():
while True:
# Εάν το μπροστινό μάτι ανιχνεύσει πράσινο, στρίψτε δεξιά
εάν front_eye.detect(GREEN):
drivetrain.turn_for(RIGHT, 90, DEGREES)
# Εάν το μπροστινό μάτι ανιχνεύσει μπλε, στρίψτε αριστερά
εάν front_eye.detect(BLUE):
drivetrain.turn_for(LEFT, 90, DEGREES)
# Εάν το μπροστινό μάτι ανιχνεύσει κόκκινο, σταματήστε
εάν front_eye.detect(RED):
drivetrain.stop()
# Εάν το μπροστινό μάτι δεν ανιχνεύσει κανένα, προχωρήστε μπροστά
εάν front_eye.detect(NONE):
drivetrain.drive(FORWARD)
wait(5, MSEC)Στο έργο από το προηγούμενο μάθημα, οι συνθήκες εντός των δηλώσεων if ελέγχθηκαν μόνο μία φορά. Δεδομένου ότι οι συνθήκες εντός των δηλώσεων αν ελέγχθηκαν μόνο μία φορά, το ρομπότ εικονικής πραγματικότητας προχώρησε επ' αόριστον επειδή η συνθήκη μη ανίχνευσης χρώματος αναφέρθηκε ως True στην αρχή του έργου.
Τώρα που έχει προστεθεί ο άπειρος βρόχος while , κάθε συνθήκη των δηλώσεων if θα ελέγχεται επανειλημμένα.
- Η συνθήκη του άπειρου βρόχουwhile είναι πάντα True, και επομένως ο κώδικας μέσα στον άπειρο βρόχοwhile θα εκτελείται πάντα. Αυτό θα ελέγχει συνεχώς τις συνθήκες των εντολών if ενώ το έργο εκτελείται.
- Να θυμάστε ότι το «εσωτερικό» ενός βρόχου while υποδεικνύεται από εσοχή.
- Κατά τη διάρκεια της ροής του έργου, εάν η συνθήκη της πρότασης if είναι True, εκτελούνται οι εντολές εντός της πρότασης if. Εάν η συνθήκη της πρότασης if είναι False, οι εντολές μέσα στην πρόταση if δεν εκτελούνται και η ροή του έργου θα συνεχιστεί στην επόμενη εντολή. Αυτό επιτρέπει στο ρομπότ εικονικής πραγματικότητας να εκτελεί διακριτές συμπεριφορές, όπως στροφή ή διακοπή, μόλις ανιχνεύσει ένα συγκεκριμένο χρώμα.
- Εάν χρησιμοποιούνται εντολές με άπειρο ενώεπαναλήψεις για να διασφαλιστεί ότι οι συνθήκες ελέγχονται συνεχώς, συνδυάζοντας ουσιαστικά τη ροή έργου των εντολών εάνμέσα σε αυτήν του βρόχου.
Επιλέξτε το κουμπί Επόμενο για να συνεχίσετε με το υπόλοιπο μάθημα.