Συντακτικό ή αντικανονικού τερματισμού ;

Ξεκίνησε από Anastasis13, 30 Ιουλ 2022, 08:07:00 ΠΜ

« προηγούμενο - επόμενο »

Anastasis13

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

alkisg

Στον Διερμηνευτή υπάρχει σχετικός διάλογος:

Παράθεση από: https://alkisg.mysch.gr/Βοήθεια/#epilogesGlwssaΈλεγχος δεδομένων κατά την είσοδο: Αν είναι επιλεγμένο τότε δεν επιτρέπεται να δώσουμε γράμματα όταν το πρόγραμμα διαβάζει αριθμούς (ή τελεία για ακέραιους). Αν δεν είναι επιλεγμένο τότε μπορούμε να εισάγουμε ό,τι θέλουμε, αλλά στην περίπτωση αυτή μπορεί να προκύψουν λάθη εκτέλεσης.

Αυτή η ρύθμιση αφορά το RUNTIME του Διερμηνευτή, τις "βιβλιοθήκες εκτέλεσής" του.
Γι' αυτό και ονομάζονται λάθη χρόνου εκτέλεσης, επειδή ο κώδικας που θα σταματήσει την εκτέλεση του προγράμματος και θα εμφανίσει μήνυμα λάθους, ανήκει στον Διερμηνευτή ή γενικότερα στο περιβάλλον εκτέλεσης.

Άρα για να απαντήσω συγκεκριμένα την ερώτηση, η περίπτωση "λάθος δεδομένα εισόδου", ανάλογα με το runtime, μπορεί να έχει υλοποιηθεί ως "λάθος χρόνου εκτέλεσης".

akalest0s

(έστω ένα χρόνο μετά.. )

συμπληρωματικό βιβλίο μαθητή ("Πληροφορική"), σελίδα 117, αναφέρει ακριβώς τέτοια περίπτωση ως αντικανονικού τερματισμού:
"Ένα πρόγραμμα μπορεί να τερματίσει αντικανονικά (...) για παράδειγμα, αν κατά την ανάγνωση ενός ακεραίου αριθμού εισαχθεί ένα γράμμα."
"Abstraction is not the first stage, but the last stage, in a mathematical development." MK
"I don't want to write about a high level thing, unless I fully understand about a low level thing" DK