Διαχείριση διεργασιών: Κέντρο εντολών

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

Δοκιμάστε αυτές τις οδηγίες στο Κέντρο εντολών (αφού δημιουργήσετε δύο χελώνες στη σελίδα):

χ1, επανάλαβε 100 [μπροστά 1] χ2, επανάλαβε 100 [μπροστά 1]

Πατήστε το πλήκτρο Enter.

Οι οδηγίες επανάλαβε εκτελούνται η μία μετά την άλλη.

Υπάρχουν τρεις πρωτογενείς διαδικασίες οι οποίες σας επιτρέπουν να αλλάξετε την ακολουθιακή ροή αυτών των οδηγιών: εκκίνηση, συνεχώς και όταν. Η εκκίνηση είναι βασική για τον ορισμό των δύο άλλων πρωτογενών διαδικασιών. Στην πράξη, όπως θα διαπιστώσετε παρακάτω, τα συνεχώς και όταν θα μπορούσαν να είναι διαδικασίες της Logo που περιέχουν την εκκίνηση.

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

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

Δοκιμάστε ξανά την παραπάνω οδηγία, αυτή τη φορά όμως με την εκκίνηση. Πληκτρολογήστε τις ακόλουθες οδηγίες σε μια γραμμή:

χ1, εκκίνηση [επανάλαβε 100 [μπροστά 1]] χ2, εκκίνηση [επανάλαβε 100 [μπροστά 1]]

Πατήστε το πλήκτρο Enter.

Η κουκίδα εμφανίζεται μόνο όταν το MicroWorlds "διαβάζει" κάθε οδηγία και στη συνέχεια εξαφανίζεται. Με λίγα λόγια, μπορείτε να χρησιμοποιήσετε την εκκίνηση για να εκτελέσετε μια χρονοβόρα οδηγία και κατά τη διάρκεια της εκτέλεσής της να κάνετε κάτι άλλο.

Ακολουθεί ένα ακόμη παράδειγμα.

χ1, ΣτυλόΚάτω
επανάλαβε 360 [μπροστά 1] επανάλαβε 360 [δεξιά 1]

Οι οδηγίες διαβάζονται διαδοχικά. Η χελώνα μετακινείται μπροστά κατά 360 βήματα και στη συνέχεια κάνει μία πλήρη περιστροφή. Τώρα δοκιμάστε τις ίδιες οδηγίες με την εκκίνηση:

εκκίνηση [επανάλαβε 360 [μπροστά 1]] εκκίνηση [επανάλαβε 360 [δεξιά 1]]

Η χελώνα σχεδιάζει έναν κύκλο.

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

επανάλαβε 360 [μπροστά 1 δεξιά 1]

Περισσότερες ιδέες για τους κύκλους θα βρείτε στην εργασία των Resnick και Silverman, Going in Circles, στη διεύθυνση: http://el.www.media.mit.edu/groups/el/projects/circles/contents.html

Οι παραπάνω οδηγίες έχουν δώσει εκκίνηση σε δύο ανεξάρτητες διεργασίες.

Κάντε μία ακόμη δοκιμή και ανοίξτε στην καρτέλα Διεργασίες. Το εικονίδιο Εκκίνηση που προηγείται της οδηγίας σημαίνει πως έχει ξεκινήσει η διεργασία. Ο αριθμός που ακολουθεί την οδηγία δείχνει τον εσωτερικό αριθμό της διεργασίας.

Η συνεχώς είναι παράγωγο της εκκίνηση. Οι ακόλουθες οδηγίες είναι οι ίδιες:

συνεχώς [μπροστά 1]
εκκίνηση [επανάλαβε 99999 [μπροστά 1]]

Η συνεχώς επαναλαμβάνει αδιάκοπα μια οδηγία ενώ επιτρέπει ακόμη στο MicroWorlds να εκτελέσει άλλη οδηγία. Στην πραγματικότητα, εκκινεί μόνο μία διεργασία. Δοκιμάστε πάλι το παράδειγμα του κύκλου, χρησιμοποιώντας συνεχώς αντί για εκκίνηση:

συνεχώς [μπροστά 1] συνεχώς [δεξιά 1]

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

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

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

Στο Κέντρο εντολών, πατήστε το πλήκτρο Enter μετά από κάθε διαδοχική οδηγία συνεχώς:

συνεχώς [μπροστά 1] Πατήστε το πλήκτρο Enter.
συνεχώς [δεξιά 1]
συνεχώς [αριστερά 1]

Η χελώνα προχωράει σε ευθεία γραμμή!

Η Logo χρησιμοποιεί το πρότυπο Multiple Instruction Multiple Data (MIMD). Στο παραπάνω παράδειγμα, εκτελείται μία εντολή τη φορά, από κάθε διεργασία, έτσι ώστε οι οδηγίες να βρίσκονται σε συγχρονισμό.

Η όταν είναι η τελευταία πρωτογενής διαδικασία (εκτός από τις εκκίνηση και συνεχώς) που δίνει εκκίνηση σε μια ανεξάρτητη διεργασία. Όπως και η συνεχώς, η όταν μπορεί να οριστεί και με τη χρήση της εντολής εκκίνηση. Αυτή η γραμμή

όταν [ΣυντΨ > 100][πίσω 100]

είναι ίδια με την:

εκκίνηση [επανάλαβε 99999 [ΠερίμενεΏσπου [ΣυντΨ > 100] πίσω 100 ]]

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

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

όταν [ΣυντΨ > 100][πίσω 100]
επανάλαβε 1000 [μπροστά 1]

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

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

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