> ###### Αλληλεπίδραση με το MicroWorlds

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

> Κάντε μια δοκιμή με τον ορισμό της διαδικασίας χαιρετισμό:

> `για χαιρετισμό
> ερώτηση [Πώς σε λένε]
> ανακοίνωση (φράση "Γεια "σου απάντηση)
> τέλος`

> Στο Κέντρο εντολών, πληκτρολογήστε:

> `χαιρετισμό`

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

> Στο Κέντρο εντολών, πληκτρολογήστε:

> `δείξε απάντηση`

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

> `για κουίζ
> ερώτηση [Πόσο κάνει 5 + 9]
> ΑνΔιαφορετικά απάντηση = 14 [ανακοίνωση [Το βρήκες!]]
> [ανακοίνωση [Πρόσεξε περισσότερο την επόμενη φορά!]]
> τέλος`

> Αν η απάντηση είναι αριθμός, μπορείτε να το χρησιμοποιήσετε ως είσοδο σε μια εντολή γραφικών χελώνας:

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

> Τα δεδομένα που επιστρέφει η απάντηση είναι λέξη. Μπορεί να περιέχει διαστήματα, αλλά παραμένει μία μόνο λέξη.

> Συνηθίζεται να ζητάμε από το χρήστη να απαντήσει "ναι" ή "όχι" σε μια συγκεκριμένη ερώτηση:

> `ερώτηση [Θέλετε να συνεχίσουμε?]`

> Ο χρήστης μπορεί να πληκτρολογήσει "ν", ή "ναι" ή κατά λάθος να εισαγάγει ένα διάστημα πριν ή μετά τη λέξη "ναι".

> Σε μια τέτοια περίπτωση, είναι προτιμότερο να χρησιμοποιήσετε την εντολή ανήκει? αντί για το = προκειμένου να ελέγξετε τα περιεχόμενα της απάντηση. Η οδηγία που ακολουθεί ισχύει μόνο αν η απάντηση είναι ναι, χωρίς διαστήματα πριν ή μετά τη λέξη.

> `αν απάντηση = "ναι [κάνε αυτό]`

> Η επόμενη οδηγία ισχύει μόνο αν η απάντηση περιέχει ένα ν (κεφαλαίο ή μικρό):

> `αν ανήκει? "ν απάντηση [κάνε αυτό]`

> Ορισμένες φορές ίσως θέλετε ένα συγκεκριμένο τύπο απάντησης. Στο παράδειγμα που ακολουθεί, αν πληκτρολογήσετε μια απάντηση που δεν είναι αριθμός, η οδηγία που ξεκινά με το αν απάντηση > 10 θα προκαλέσει την εμφάνιση ενός μηνύματος λάθους, αφού το > (μεγαλύτερο από) χρησιμοποιείται μόνο με αριθμούς. Εδώ, ο χρήστης έχει πληκτρολογήσει "έντεκα " αντί για 11 στο πλαίσιο διαλόγου της ερώτησης:

> `αν απάντηση > 10 [δείξε [Αυτό είναι παλιό]],`
> `το > δεν δέχεται το έντεκα στην είσοδο`

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

> Η ακόλουθη διαδικασία απαιτεί έναν αριθμό ως απάντηση:

> `για οπωσδήποτε :λίστα
> ερώτηση :λίστα
> αν αριθμός? απάντηση [στοπ]
> οπωσδήποτε :λίστα
> τέλος`

> Αν η απάντηση δεν είναι αριθμός, η ερώτηση θα ξανατεθεί.

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

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

> Η ακόλουθη διαδικασία απαιτεί μία μόνο λέξη ως απάντηση. Η οδηγία αν κάνει έναν έλεγχο για να διαπιστώσει αν υπάρχει διάστημα στην απάντηση (χαρακτήρας ASCII 32) και αν υπάρχει θα υποβάλει ξανά την ερώτηση:

> `για οπωσδήποτε :λίστα
> ερώτηση :λίστα
> αν όχι ανήκει? χαρ 32 απάντηση [στοπ]
> οπωσδήποτε :λίστα
> τέλος`

> Μπορείτε να καθορίσετε τη θέση στην οποία εμφανίζεται το πλαίσιο διαλόγου με την εντολή θέσε.