Διακοπή αναδρομικών διαδικασιών

Η προσθήκη ενός κανόνα διακοπής σε μια αναδρομική διαδικασία αποτελεί σημαντικό μέρος του ορισμού της. Όταν θέσετε κανόνα διακοπής για μια αναδρομική διαδικασία, θα μπορείτε να προχωρήσετε σε πιο σύνθετες μορφές αναδρομής.

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

αν :βήμα > 200 [στοπ]

Η δήλωση αν, στη γλώσσα Logo, ονομάζεται υπό συνθήκη έκφραση.

Η Logo ελέγχει αν η τιμή για το :βήμα είναι μεγαλύτερη του 200 κάθε φορά που η πολυσπείρα καλεί τον εαυτό της. Όταν αυτή η συνθήκη δώσει τιμή ΣΩΣΤΟ, η πολυσπείρα διακόπτεται.

Υπάρχει μια ομάδα πρωτογενών διαδικασιών οι οποίες είναι χρήσιμες στη δημιουργία συνθηκών. Το σύμβολο > (μεγαλύτερο από) είναι ένα κατηγόρημα. Ένα κατηγόρημα επιστρέφει ως τιμή ΣΩΣΤΟ ή ΛΑΘΟΣ. Στην αριθμητική, τα σύμβολα = (ισούται με), > (μεγαλύτερο από) και το < (μικρότερο από) είναι όλα κατηγορήματα.

Μετά την τροποποίηση, η διαδικασία πολυσπείρα παίρνει την εξής μορφή:

για πολυσπείρα :βήμα :γωνία :μεταβολή
αν :βήμα > 200 [στοπ]
μπροστά :βήμα
δεξιά :γωνία
πολυσπείρα :βήμα + :μεταβολή :γωνία :μεταβολή
τέλος

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

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

αν κατεύθυνση = :αρχική [στοπ]

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

για πολύπλευρο :βήμα :γωνία :αρχική
μπροστά :βήμα
δεξιά :γωνία
αν κατεύθυνση = :αρχική [στοπ]
πολύπλευρο :βήμα :γωνία :αρχική
τέλος

Για να χρησιμοποιήσετε τώρα το πολύπλευρο, στην τρίτη είσοδο χρειάζεται ως τιμή η πρωτογενής διαδικασία κατεύθυνση.

Η κατεύθυνση είναι ένας μεταβιβαστής, μια λειτουργία που επιστρέφει πληροφορίες όπως, σε αυτή την περίπτωση, την τρέχουσα κατεύθυνση της χελώνας


πολύπλευρο 50 120 κατεύθυνση

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

για υπερπολύπλευρο :βήμα :γωνία
πολύπλευρο :βήμα :γωνία κατεύθυνση
τέλος