> ###### Γεννήτριες φράσεων

> `για κουβεντούλα :ζώα :ήχοι
> αν ή κενό? :ζώα κενό? :ήχοι
> [τύπωσε [Αυτά προς το παρόν] στοπ]
> τύπωσε φράση πρώτο :ζώα πρώτο :ήχοι
> κουβεντούλα ΕκτόςΠρώτου :ζώα ΕκτόςΠρώτου :ήχοι
> τέλος`

> `κουβεντούλα [σκυλιά πουλιά χοίροι] [γαβγίζουν τιτιβίζουν γρυλίζουν]`
> `σκυλιά γαβγίζουν
> πουλιά τιτιβίζουν
> χοίροι γρυλίζουν
> Αυτά προς τα παρόν`

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

> Παρατηρήστε αυτή τη γραμμή:

> `αν ή κενό? :ζώα κενό? :ήχοι
> [τύπωσε [Αυτά προς το παρόν] στοπ]`

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

> Το είδος του κατηγορήματος αυτού ονομάζεται λογική πράξη. Οι λογικές πράξεις είναι στην πραγματικότητα κατηγορήματα στις εισόδους των οποίων τα δεδομένα πρέπει να είναι σωστά ή λάθος. Το ή επιστρέφει ΣΩΣΤΟ αν κάποια από τις εισόδους του είναι σωστή. Υπάρχουν δύο ακόμη λογικές πράξεις: και και όχι. Το και επιστρέφει ΣΩΣΤΟ αν όλες οι είσοδοί του είναι σωστές. Το όχι επιστρέφει το λογικό αντίστροφο των εισόδων του, δηλαδή, αν η είσοδός του είναι σωστή, το όχι επιστρέφει ΛΑΘΟΣ και αντίστροφα.

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

> `για παραμίλημα :ουσιαστικά :ρήματα
> τύπωσε φράση διάλεξε :ουσιαστικά διάλεξε :ρήματα
> παραμίλημα :ουσιαστικά :ρήματα
> τέλος`

> ``παραμίλημα` [`[σκυλιά γάτες άνθρωποι χοίροι]` [`γαβγίζουν` νιαουρίζουν μουρμουρίζουν `γρυλίζουν`]`
> `γάτες γρυλίζουν
> σκυλιά γρυλίζουν
> γάτες νιαουρίζουν
> χοίροι μουρμουρίζουν
> χοίροι μουρμουρίζουν
> άνθρωποι γαβγίζουν
> σκυλιά μουρμουρίζουν`

> Πατήστε Ctrl+Break για να σταματήσετε τη διαδικασία.

> Μπορείτε επίσης να εκτελείτε και να διακόπτετε αυτή τη διαδικασία με ένα κουμπί, αν αφαιρέσετε τις εισόδους και την αναδρομική γραμμή και κάνετε το παραμίλημα διαδικασία μιας γραμμής: `για παραμίλημα τύπωσε φράση διάλεξε [σκυλιά γάτες άνθρωποι χοίροι] διάλεξε [γαβγίζουν νιαουρίζουν μουρμουρίζουν γρυλίζουν] τέλος` Επιλέξτε τη ρύθμιση Πολλές φορές.

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

> Η διαδικασία θα πρέπει να αναθεωρηθεί ως ακολούθως:

> `για παραμίλημα2
> τύπωσε φράση ΔιάλεξεΓραμμήΚειμένου "ουσιαστικά ΔιάλεξεΓραμμήΚειμένου "ρήματα
> παραμίλημα2
> τέλος`

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