Επανάληψη και αναδρομή

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

για πολύπλευρο :βήμα :γωνία
μπροστά :βήμα
δεξιά :γωνία
πολύπλευρο :βήμα :γωνία
τέλος

Η εκτέλεση της διαδικασίας πολύπλευρο

πολύπλευρο 50 120

κάνει τη χελώνα να σχεδιάζει ένα τρίγωνο συνέχεια, έως ότου τη σταματήσετε πατώντας Ctrl+Break ή κάνοντας κλικ στο εργαλείο Διακοπή όλων.

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

Αν πειραματιστείτε με τη διαδικασία πολύπλευρο, μπορείτε να σχεδιάσετε πολλά διαφορετικά σχήματα με μία μόνο διαδικασία:

πολύπλευρο 50 144
πολύπλευρο 50 40
πολύπλευρο 100 160

Η αναδρομή είναι ο όρος που χρησιμοποιείται από την επιστήμη των υπολογιστών για τη δυνατότητα ορισμού μιας διαδικασίας που καλεί τον εαυτό της ως μία από τις οδηγίες της. Θεωρούμε πως η διαδικασία πολύπλευρο είναι μια αναδρομική διαδικασία επειδή καλεί τον εαυτό της. (Η αναδρομή για την οποία γίνεται λόγος στις επόμενες ενότητες χρησιμοποιεί τη γεωμετρία χελώνας για την παρουσίαση παραδειγμάτων. Διαβάστε τα παραδείγματα αναδρομής με κείμενο.)

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

Για να κατανοήσετε αυτή τη διεργασία, φανταστείτε πως η γλώσσα Logo διαθέτει έναν ανεξάντλητο αριθμό βοηθών οι οποίοι "ζουν" στον υπολογιστή. Κάθε φορά που καλείται μια διαδικασία, κάποιος βοηθός αναζητά τον ορισμό της διαδικασίας. Στη συνέχεια, ο βοηθός ξεκινά την εκτέλεση των οδηγιών. Αυτό το κάνει με τη σύμπραξη και άλλων βοηθών. Για την εκτέλεση μιας διαδικασίας, είναι συνήθως απαραίτητοι αρκετοί βοηθοί.

Για παράδειγμα, όταν καλείται η διαδικασία πολύπλευρο, ο βοηθός της καλεί ένα βοηθό μπροστά. Όταν ολοκληρώσει ο βοηθός μπροστά, καλείται ένας βοηθός δεξιά. Όταν ολοκληρώσει και αυτός, καλείται ένας βοηθός πολύπλευρο. Ο δεύτερος βοηθός πολύπλευρο καλεί ένα βοηθό μπροστά, ένα βοηθό δεξιά και ένα βοηθό πολύπλευρο. Εν τω μεταξύ, ο πρώτος βοηθός πολύπλευρο περιμένει να ολοκληρώσει ο δεύτερος βοηθός πολύπλευρο. Κατά τη διεργασία, οι βοηθοί μπροστά και οι βοηθοί δεξιά ολοκληρώνουν την εργασία τους. Οι βοηθοί πολύπλευρο δεν ολοκληρώνουν ποτέ. Συνεχίζουν να καλούν και άλλους βοηθούς πολύπλευρο.

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