@Νίκος Αδαμόπουλος και @alkisg
Να ξεκινήσω λέγοντας ότι, επί της ουσίας, συμφωνώ μαζί σας. Είναι απλούστερο και ασφαλέστερο οι μεταβλητές να αποκτούν τύπο με την πρώτη ανάθεση τιμής και να διατηρούν αυτό τον τύπο στη συνέχεια του προγράμματος (ή αλγορίθμου;). Στη μεγάλη πλειοψηφία των περιπτώσεων η χρήση μιας μεταβλητής με δύο διαφορετικούς τύπους στο ίδιο πρόγραμμα είναι έτσι κι αλλιώς κακή πρακτική. Προσωπικά δεν το χρησιμοποιώ και δεν το προτείνω ποτέ.
Από την άλλη, στο βιβλίο της Β' ΓΕΛ για τις μεταβλητές αναφέρεται το εξής:
"Οι μεταβλητές χαρακτηρίζονται ως αριθμητικές, αλφαριθμητικές ή λογικές ανάλογα με την τιμή που θα αποδοθεί σε αυτές. Πριν από την απόδοση κάποιας τιμής σε μια μεταβλητή (με εντολή εισόδου ή εκχώρησης) η μεταβλητή έχει απροσδιόριστη τιμή."Ερμηνεύοντας αυτό δεν προκύπτει ξεκάθαρα ότι ο τύπος μιας μεταβλητής δεν μπορεί να αλλάξει με μια νέα ανάθεση. Αν υπήρχε ξεκάθαρα π.χ. ότι:
"ανάλογα με την πρώτη τιμή που θα αποδοθεί σε αυτές" τότε ναι, αλλά τώρα είναι ίσως θέμα ερμηνείας.
Να δώσω και ένα παράδειγμα που δεν το θεωρώ και πολύ τραβηγμένο:
Να γραφεί αλγόριθμος ο οποίος να διαβάζει και να προσθέτει αριθμούς. Ο αλγόριθμος τερματίζει όταν ο χρήστης εισάγει τη λέξη ΤΕΛΟΣ:
Σ <- 0
Διάβασε α
Όσο α <> 'ΤΕΛΟΣ'
Σ <- Σ + α
Διάβασε α
Τέλος_επανάληψης
Μιας και μιλάμε για αλγόριθμο (και όχι πρόγραμμα) και η ψευδογλώσσα υποτίθεται ότι προσπαθεί να περιγράψει την ουσία του αλγορίθμου χωρίς να μπαίνει σε "τεχνικές" λεπτομέρειες δεν είμαι σίγουρος ότι το παραπάνω τμήμα αλγορίθμου σε ψευδογλώσσα θα πρέπει να θεωρηθεί λανθασμένο.
Επαναλαμβάνω ότι "μαζί σας είμαι" :-) απλά νομίζω ότι με βάση το βιβλίο η αλλαγή τύπου μεταβλητής στην ψευδογλώσσα
θεωρητικά επιτρέπεται.
Να πω τέλος ότι στο γυμνάσιο στη Logo οι μαθητές διδάσκονται παραδείγματα όπου μια μεταβλητή μπορεί να πάρει διαφορετικού τύπου τιμές στο ίδιο πρόγραμμα. Αναφέρομαι π.χ. στην εντολή ερώτηση και στη μεταβλητή απάντηση ενώ στο βιβλίο υπάρχουν και άλλα παραδείγματα (για όσους πιθανώς δεν διδάσκουν σε γυμνάσιο να πω ότι στη Logo οι μεταβλητές δεν έχουν συγκεκριμένο τύπο).
*
Σημείωση-Προσθήκη: Να προλάβω την κριτική ότι στο παράδειγμα που έδωσα (χωρίς βαθιά σκέψη είναι η αλήθεια) η μεταβλητή α, εκτός του ότι μπορεί να δεχτεί τιμές είτε αριθμητικές είτε αλφαριθμητικές, αφού πάρει μια τιμή ο αλγόριθμος τη διαχειρίζεται στη σύγκριση ως αλφαριθμητικό και στην πρόσθεση ως αριθμό που μπορεί να είναι λάθος. Ένα αντεπιχείρημα εδώ είναι ότι το παράθεμα του βιβλίου της Β' ΓΕΛ κάνει λόγο για χαρακτηρισμό και όχι τύπο της μεταβλητής ενώ, μετά την πρώτη ανάθεση επίσης αναφέρει ότι η μεταβλητή αποκτά τιμή (και όχι τύπο). Ίσως εδώ πει κανείς ότι παίζω με τις λέξεις και ότι χαρακτηρισμός=τύπος, όμως όταν δεν υπάρχει στο βιβλίο αναφορά για τύπο μεταβλητής (μόνο για τύπο δεδομένων) στην Ψευδογλώσσα εξακολουθώ να πιστεύω ότι θεωρητικά και τυπικά το παράδειγμα που έδωσα στέκει.
Όταν φυσικά πάμε σε υλοποίηση τότε προκύπτουν όλα αυτά τα ζητήματα που χρειάζονται αποσαφήνιση και αν τελικά ο komni αποφασίσει να συμπεριλάβει και την Ψευδογλώσσα στον διερμηνευτή του τότε μάλλον θα είναι απλούστερο και πιθανότατα καλύτερο να ακολουθήσει την ερμηνεία που δίνετε.