> ###### Προγραμματισμός: Χρήσιμα εργαλεία

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

> Η διαδικασία ανάμεσα? κάνει έναν έλεγχο για να διαπιστώσει αν ένας αριθμός βρίσκεται σε δεδομένη διάταξη:

> `για ανάμεσα? :χ :κάτω :άνω
> έξοδος όχι ή (:χ < :κάτω) (:x > :άνω)
> τέλος`

> `δείξε ανάμεσα? 5 3 9`
> `ΣΩΣΤΟ`

> Η διαδικασία σάρωση εφαρμόζει μια εντολή σε κάθε στοιχείο μιας λίστας:

> `για σάρωση :εντολή :λίστα
> αν κενό? :λίστα [στοπ]
> εκτέλεσε λίστα :εντολή λέξη "" πρώτο :λίστα
> σάρωση :εντολή ΕκτόςΠρώτου :λίστα
> τέλος`

> `κάνε "χώρες [GR FR I SP]
> σάρωση "δείξε :χώρες`
> `GR
> FR
> I
> SP`

> Η διαδικασία αντικατάσταση αντικαθιστά μια λέξη μέσα σε μια λίστα με μια άλλη λέξη:

> `για αντικατάσταση :λέξη1 :λέξη2 :λίστα
> αν κενό? :λίστα [έξοδος [ ]]
> αν :λέξη1 = πρώτο :λίστα
> [έξοδος φράση :λέξη2 ΕκτόςΠρώτου :λίστα]
> έξοδος ΒάλεΠρώτο πρώτο :λίστα αντικατάσταση :λέξη1 :λέξη2 ΕκτόςΠρώτου :λίστα
> τέλος`

> `δείξε αντικατάσταση "ψέμα "αλήθεια [Είναι ψέμα]`
> `Είναι αλήθεια`

> Η διαδικασία ταξινόμηση παίρνει μια λίστα με λέξεις και τις επιστρέφει σε αλφαβητική σειρά:

> `για ταξινόμηση :λίστα
> έξοδος ΤαξινόμησέΤις :λίστα [ ]
> τέλος`

> `για `ΤαξινόμησέΤις` :`λίστα`1 :`λίστα`2
> `αν κενό?` :`λίστα`1 [`έξοδος` :`λίστα`2]
> `έξοδος` `ΤαξινόμησέΤις` `ΕκτόςΠρώτου` :`λίστα`1 παρεμβολή1 `πρώτο` :`λίστα`1 :`λίστα`2
> `τέλος``

> `για παρεμβολή1 :λέξη :`λίστα`
> `αν κενό?` :`λίστα` [`έξοδος` Βάλε`Πρώτο` :λέξη :`λίστα`]
> `αν` πριν? :λέξη `πρώτο` :`λίστα` [`έξοδος` Βάλε`Πρώτο` :λέξη :`λίστα`]
> `έξοδος` Βάλε`Πρώτο` `πρώτο` :`λίστα` παρεμβολή1 :λέξη `ΕκτόςΠρώτου` :`λίστα`
> `τέλος``

> `για πριν? :α :β
> `αν` ή `κενό`? :α `κενό`? :β [`έξοδος` "λάθος]
> ΑνΔιαφορετικά (ascii `πρώτο` :α) = (ascii `πρώτο` :β)
> [`έξοδος` πριν? `ΕκτόςΠρώτου` :α `εκτόςπρώτου` :β]
> ` `[`έξοδος` (ascii `πρώτο` :α) < (ascii `πρώτο` :β)]
> `τέλος``

> `δείξε ταξινόμηση [ΑΝΝΑ ΕΛΕΝΗ ΓΙΑΝΝΗΣ ΠΕΤΡΟΣ ΘΩΜΑΣ]`
> `ΑΝΝΑ ΓΙΑΝΝΗΣ ΕΛΕΝΗ ΘΩΜΑΣ ΠΕΤΡΟΣ`

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

> `για πού :μέλος :λίστα
> `αν` `κενό`? :λίστα [`έξοδος` 0]
> `αν` :ανήκει = `πρώτο` :λίστα [`έξοδος` 1]
> `έξοδος` 1 + πού :ανήκει `ΕκτόςΠρώτου` :λίστα
> `τέλος``

> `δείξε `πού` "α [γ α ι]`
> `2`

> Οι ακόλουθες διαδικασίες αποτελούν εργαλεία για τη διαχείριση δύο συνόλων:

> Η διαδικασία τομή επιστρέφει την τομή δύο συνόλων:

> `για τομή :λίστα1 :λίστα2
> αν κενό? :λίστα1 [έξοδος [ ]]
> αν ανήκει? (πρώτο :λίστα1) :λίστα2
> [έξοδος φράση (πρώτο :λίστα1)
> τομή (ΕκτόςΠρώτου :λίστα1) :λίστα2]
> έξοδος τομή (ΕκτόςΠρώτου :λίστα1) :λίστα2
> `τέλος`
> `

> `δείξε `τομή` [1 2 3 4 5] [3 4 5 6]`
> `3 4 5`

> Η διαδικασία υποσύνολο? κάνει έναν έλεγχο για να διαπιστώσει αν μια λίστα είναι υποσύνολο μιας άλλης λίστας:

> `για υποσύνολο? :λίστα1 :λίστα2
> αν κενό? :λίστα1 [έξοδος "ΣΩΣΤΟ]
> αν όχι ανήκει? πρώτο :λίστα1 :λίστα2 [έξοδος "ΛΑΘΟΣ]
> έξοδος υποσύνολο? ΕκτόςΠρώτου :λίστα1 :λίστα2
> `τέλος`
> `

> `δείξε `υποσύνολο`? [2 3] [2 3 4 5]`
> `ΣΩΣΤΟ`

> Η διαδικασία ένωση εξάγει την ένωση δύο συνόλων:

> `για ένωση :λίστα1 :λίστα2
> αν κενό? :λίστα1 [έξοδος :λίστα2]
> ΑνΔιαφορετικά ανήκει? πρώτο :λίστα1 :λίστα2
> [έξοδος ένωση ΕκτόςΠρώτου :λίστα1 :λίστα2]
> [έξοδος Βάλε`Πρώτο` πρώτο :λίστα1 ένωση ΕκτόςΠρώτου :λίστα1 :λίστα2]
> `τέλος``

> `δείξε `ένωση` [1 2 3 4 5] [3 4 5 6 7]`
> `1 2 3 4 5 6 7`