> ###### Διαδικασίες με είσοδο

> Η διαδικασία τετράγωνο σχεδιάζει ακριβώς το ίδιο τετράγωνο κάθε φορά που εκτελείται. Η διαδικασία σπίτι σχεδιάζει ακριβώς το ίδιο σπίτι. Μπορείτε να κάνετε μια αντιπαραβολή με την πρωτογενή διαδικασία μπροστά. Η οδηγία

> `μπροστά 100
> `

> σχεδιάζει μια γραμμή διπλάσια από αυτή που σχεδιάζει η οδηγία

> `μπροστά 50
> `

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

> Αν η Logo περιμένει να δώσετε μια είσοδο για κάποια πρωτογενή διαδικασία, διαμαρτύρεται αν την ξεχάσετε:

> `μπροστά`
> `το μπροστά απαιτεί περισσότερα δεδομένα`

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

> `για τετράγωνο :πλευρά
> επανάλαβε 4 [μπροστά :πλευρά δεξιά 90]
> τέλος`

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

> `τετράγωνο 50` |

> Για να σχεδιάσετε ένα μικρό τετράγωνο, πληκτρολογήστε:

> `τετράγωνο 10` |

> Ο ορισμός της διαδικασίας τετράγωνο μας δείχνει ένα γενικό κανόνα για τον ορισμό των διαδικασιών με είσοδο. Το όνομα της εισόδου πρέπει να βρίσκεται στη γραμμή τίτλου, μετά το όνομα της διαδικασίας. Μπορείτε να επιλέξετε όποιο όνομα θέλετε για την είσοδο, αρκεί να ξεκινάει με άνω και κάτω τελεία. Έπειτα, μπορείτε να χρησιμοποιήσετε το όνομα της εισόδου (με την άνω και κάτω τελεία πάντα να προηγείται) εκεί όπου θέλετε να χρησιμοποιήσετε την τιμή που θα εισαγάγετε στη διαδικασία.

> Η γραμμή τίτλου της διαδικασίας τετράγωνο λέει στη Logo πως η διαδικασία τετράγωνο έχει μία μοναδική είσοδο με το όνομα πλευρά. Το σώμα της διαδικασίας χρησιμοποιεί την πρωτογενή διαδικασία μπροστά, η οποία περιέχει την είσοδο πλευρά. Η οδηγία αυτή σχεδιάζει μια γραμμή με το μήκος :πλευρά.

> Όταν ορίζεται μια διαδικασία με είσοδο, η είσοδος αυτή δεν έχει τιμή. Μόνο όταν εκτελείται η διαδικασία γίνεται γνωστή η τιμή της εισόδου. Για το λόγο αυτό, η είσοδος πρέπει πάντα να έχει όνομα.

> Έχετε τη δυνατότητα να ορίσετε διαδικασίες Logo με περισσότερες από μία εισόδους. Ένα παράδειγμα διαδικασίας που απαιτεί δύο εισόδους είναι το ορθογώνιο:

> `για ορθογώνιο :ύψος :πλάτος
> επανάλαβε 2 [μπροστά :ύψος δεξιά 90 μπροστά :πλάτος δεξιά 90]
> τέλος`

> Για να εκτελέσετε το ορθογώνιο, πρέπει να πληκτρολογήσετε το όνομα και στη συνέχεια τις τιμές των δύο εισόδων:

> `ορθογώνιο 50 100` |

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

> `για σπίτι :μέγεθος
> τετράγωνο :μέγεθος
> μπροστά :μέγεθος
> δεξιά 30
> τρίγωνο :μέγεθος
> τέλος`

> Το τρίγωνο, έπειτα, θα πρέπει να οριστεί ως εξής:

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

> Για να σχεδιάσετε ένα σπίτι με μέγεθος 150, πληκτρολογήστε:

> `σπίτι 150`

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

> Στο παραπάνω παράδειγμα, πώς γνωρίζει η Logo ότι τα τετράγωνο, μπροστά, και τρίγωνο έχουν ως τιμή εισόδου το 150; Το 150 είναι το "στοιχείο που ονομάζεται" μέγεθος.

> Όταν η Logo βλέπει την οδηγία για το τετράγωνο, αναζητά τον ορισμό του τετράγωνο και εκτελεί αυτή τη διαδικασία με τιμή εισόδου το 150. Στη συνέχεια, πηγαίνει στο μπροστά με το 150 ως τιμή εισόδου και εκτελεί το δεξιά 30. Όταν φτάνει στο τρίγωνο, αναζητά τον ορισμό του τρίγωνο και εκτελεί αυτή τη διαδικασία, πάλι με τιμή εισόδου το 150. Τέλος, πηγαίνει στην επόμενη οδηγία της διαδικασίας σπίτι που είναι το τέλος. Έτσι, ολοκληρώνεται η διαδικασία σπίτι.

> Όταν δίνετε μια είσοδο στην υπερδιαδικασία, αυτή μπορεί να τη μεταβιβάσει στις υποδιαδικασίες.

> Για να κατανοήσετε τον τρόπο με τον οποίο οι διαδικασίες μεταβιβάζουν δεδομένα η μία στην άλλη, χωρίς όμως να χάνουν τις τιμές των δικών τους εισόδων, σκεφθείτε ότι οι είσοδοι έχουν ονόματα και κάθε διαδικασία έχει μια ιδιαίτερη βιβλιοθήκη ονομάτων (Abelson, 1982). Αφού τα ονόματα των εισόδων είναι ξεχωριστά, οι διαφορετικές διαδικασίες μπορούν να χρησιμοποιούν το ίδιο όνομα για μία είσοδο, χωρίς να υπάρχει σύγχυση όσον αφορά την τιμή της. Όταν η Logo εκτελεί μια διαδικασία, η διαδικασία δημιουργεί μια ξεχωριστή βιβλιοθήκη, η οποία περιέχει τα ονόματα των εισόδων που χρησιμοποιήθηκαν στον ορισμό της διαδικασίας σε αντιστοιχία με τις τρέχουσες τιμές που δόθηκαν κατά τη στιγμή κλήσης της διαδικασίας. Όταν η διαδικασία εκτελεί μια οδηγία που περιέχει το όνομα της εισόδου, αναζητά την τιμή που αντιστοιχεί στο όνομα στην ιδιαίτερη βιβλιοθήκη της. Έτσι λοιπόν, είναι δυνατό να υπάρχει το ίδιο όνομα σε δύο ξεχωριστές βιβλιοθήκες, με διαφορετικές πληροφορίες!

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

> Abelson, H. (1982). Apple Logo. Peterborough, NH: Byte Publications Inc.