Λογικά vs Κατά την εκτέλεση

Ξεκίνησε από nokotsos, 11 Φεβ 2024, 11:23:27 ΜΜ

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

nokotsos

Καλησπέρα, έχω κάποιες απορίες στην εκσφαλμάτωση για το πότε ένα σφάλμα θεωρείται λογικό και πότε αντικανονικό. Το σχολικό αναφέρει πως στα λογικά λάθη το πρόγραμμα τρέχει κανονικά αλλά βγάζει λάθος αποτελέσματα ενώ στα λάθη κατά την εκτέλεση έχουμε αντικανονικό τερματισμό. Σύμφωνα με τα παραπάνω αν δοθεί το παρακάτω τμήμα προγράμματος :
1)
! Έστω Α[10] διαβασμένος πίνακας ακεραίων
Για ι από 1 μέχρι 11
   Γράψε Α[ι]
[size=2][font=Calibri, sans-serif]Τέλος_επανάληψης[/font][/size]
Το 11 είναι λογικό λάθος ή λάθος κατά την εκτέλεση (προκαλεί αντικανονικό τερματισμό). Και αν το
θεωρούμε λογικό τότε γιατί την διαίρεση με μια μεταβλητή που υπάρχει περίπτωση να πάρει την τιμή 0 την θεωρούμε κατά την εκτέλεση ενώ προκαλείται από κάποια ίσως λογική ασάφεια κατά την συγγραφή του κώδικα.

2) Αν είχαμε για παράδειγμα
! Έστω Α[10] διαβασμένος πίνακας ακεραίων
Χ ← Α[0]
Αυτό θεωρείτε λογικό ή κατά την εκτέλεση? Και αν θεωρείται κατά την εκτέλεση σε τι διαφέρει από το πάνω που και εκεί αποκτάμε πρόσβαση σε κελί που δεν υπάρχει.

3) Αν εμφανίσουμε μία μεταβλητή που δεν έχει πάρει τιμή τι λάθος θεωρείται?

Καταλαβαίνω την ουσιώδη διαφορά τους όμως στα πλαίσια του μαθήματος αν δοθεί μία άσκηση να εντοπίσετε τα λάθη και τι είδος είναι δεν νιώθω πολύ σίγουρος πως να τα ξεκαθαρίσω για τα παιδιά.

petrosp13

Το πρώτο είναι λάθος αντικανονικού τερματισμού, υπάρχει αντίστοιχο παράδειγμα στο βιβλίο
Τα άλλα δυο σιγουρα δεν είναι λογικά
Θα έλεγα ότι είναι θέμα υλοποίησης του μεταγλωττιστή
Θεωρώ ότι οι περισσότεροι μεταγλωττιστές τα εντοπίζουν ως συντακτικά
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής

nokotsos

Όσον αναφορά το 1) Στο σχολικό (συμπλήρωμα) σελίδα 131 εκεί που βγαίνει εκτός ορίων το έχει στον πίνακα αντικανονικό τερματισμό(σωστό), όμως αναφέρεται γενικά στην εκσφαλμάτωση λογικών λαθών στους πίνακες η άσκηση και εκεί με μπερδεύει(ότι δηλαδή λόγο λογικού λάθους καταλήξαμε εκεί οπότε το λάθος είναι λογικό).

petrosp13

Λογικό λάθος σημαίνει ότι το πρόγραμμα ολοκληρώνεται
Αν το πρόγραμμα δεν ολοκληρώνεται για οποιονδήποτε λόγο, δεν μιλάμε για λογικό λάθος
Παπαδόπουλος Πέτρος
Καθηγητής Πληροφορικής