Ενδιαφέρουσες τεχνικές: Τοπικές μεταβλητές

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

για καλωσόρισμα :α
δείξε φράση [Χαίρομαι που σε βλέπω] :α
τέλος

καλωσόρισμα "Πέτρο
Χαίρομαι που σε βλέπω Πέτρο

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

για μέτρηση :ν
αν :ν > 5 [στοπ]
δείξε :ν
μέτρηση :ν + 1
δείξε :ν
τέλος

Αφού κάθε μέτρηση διατηρεί τη δική της τιμή για το , η μέτρηση 1 μετρά προς τα εμπρός και έπειτα προς τα πίσω. Αυτό γίνεται εμφανές με τη λειτουργία Παρακολούθηση της μέτρηση. (Στην καρτέλα Διαδικασίες, κάντε δεξί κλικ στη διαδικασία μέτρηση και επιλέξτε Παρακολούθηση.) Πληκτρολογήστε μέτρηση 1 στο Κέντρο εντολών για να δείτε τα αποτελέσματα:

μέτρηση 1
 (#12) μέτρηση 1
1
   (#12) μέτρηση 2
2
    (#12) μέτρηση 3
3
     (#12) μέτρηση 4
4
      (#12) μέτρηση 5
5
        (#12) μέτρηση 6
        (#12) μέτρηση σταματά
5
      (#12) μέτρηση σταματά
4
     (#12) μέτρηση σταματά
3
    (#12) μέτρηση σταματά
2
   (#12) μέτρηση σταματά
1
 (#12) μέτρηση σταματά

(Δείτε και τα παραδείγματα στις ενότητες Επανάληψη και αναδρομή και Αναδρομικές διαδικασίες με έξοδο.)

Υπάρχουν επίσης δύο πρωτογενείς διαδικασίες με τις οποίες μπορείτε να δημιουργήσετε τοπικές μεταβλητές: τοπική και έστω.

Η τοπική σε συνδυασμό με το κάνε σε μια διαδικασία δημιουργεί μια τοπική μεταβλητή:

για χαιρετισμό
τοπική "όνομα
ερώτηση [Πώς σε λένε?]
κάνε "όνομα απάντηση
καλωσόρισμα :όνομα
τέλος

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

δείξε :όνομα
η μεταβλητή όνομα δεν έχει τιμή

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

για χαιρετισμό
ερώτηση [Πώς σε λένε?]
έστω [όνομα απάντηση]
καλωσόρισμα :όνομα
τέλος

Μπορείτε να ορίσετε πολλές μεταβλητές με μια οδηγία έστω:

για μετακίνηση
έστω [κατεύθυνση 90 απόσταση 100 ταχύτητα 1]
ΘέσεΚατεύθυνση :κατεύθυνση
ολίσθηση :απόσταση :ταχύτητα
τέλος

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

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