ΥΠΕΡΒΑΣΗ ΟΡΙΩΝ ΠΙΝΑΚΑ, ΤΙ ΛΑΘΟΣ ΘΕΩΡΕΙΤΑΙ;

Ξεκίνησε από kanti, Χθες στις 08:43:09 ΜΜ

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

kanti

η υπέρβαση ορίου στον πίνακα θεωρείται συντακτικό ή χρόνου εκτέλεσης;
πχ. για Ι απο 1 μέχρι 5
         γράψε Α[Ι+1]
      Τέλος_επανάληψης             σε πίνακα Α[5];

petrosp13

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

kanti

Ναι συμφωνώ λόγω του παραδείγματος. αν  όμως η εντολή είναι π.χ.
διαβασε Α[6]                  ! αλλά σε πίνακα Α[5]

δεν είναι συντακτικό κανονικά;
:-\

NIKOS_KALYVAS

#3
Το λευκό σχολικό βιβλίο ( ΣΥΜΠΛΗΡΩΜΑΤΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΥΛΙΚΟ) κακώς κατά την άποψή μου εντάσσει αυτό του είδους λάθος κάτω από τον τίτλο  "Εκσφαλμάτωση λογικών λαθών σε πίνακες". Πόσο μάλλον μπερδεύει τον μαθητή όταν κατά την εικονική εκτέλεση του παραδείγματος το χαρακτηρίζει αντικανονικού τερματισμού.

Στο πράσινο βιβλίο αναφέρεται:

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

Επομένως δεν μπορεί να χαρακτηριστεί λογικό λάθος ένα λάθος που προκαλεί αντικανονικό τερματισμό του προγράμματος.

Όταν "βγαίνουμε" εκτός των ορίων του πίνακα είναι λάθος που οδηγεί σε αντικανονικό τερματισμό.
ΝΙΚΟΣ ΚΑΛΥΒΑΣ
Καθηγητής Πληροφορικής (ΠΕ86)

pgrontas

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


Παράθεση από: NIKOS_KALYVAS στις Χθες στις 11:58:31 ΜΜΤο λευκό σχολικό βιβλίο ( ΣΥΜΠΛΗΡΩΜΑΤΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΥΛΙΚΟ) κακώς κατά την άποψή μου εντάσσει αυτό του είδους λάθος κάτω από τον τίτλο  "Εκσφαλμάτωση λογικών λαθών σε πίνακες". Πόσο μάλλον μπερδεύει τον μαθητή όταν κατά την εικονική εκτέλεση του παραδείγματος το χαρακτηρίζει αντικανονικού τερματισμού.


Εδώ σας θέλω
Παράθεση από: kanti στις Χθες στις 11:27:48 ΜΜΝαι συμφωνώ λόγω του παραδείγματος. αν  όμως η εντολή είναι π.χ.
διαβασε Α[6]                  ! αλλά σε πίνακα Α[5]

δεν είναι συντακτικό κανονικά;
Αν το A mod 5 με Α πραγματική μεταβλητή είναι συντακτικό λάθος (σύμφωνα με τους θεματοδότες του 2023), γιατί και το Α[6] με Α πίνακα 5 θέσεων να μην είναι;
Δυστυχώς αυτές είναι οι συνέπειες από θέματα που αγγίζουν γκρίζες περιοχές (του βιβλίου) με λανθασμένο τρόπο.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

alkisg

Παράθεση από: pgrontas στις Σήμερα στις 07:43:13 ΠΜΣτην πραγματικότητα τα λάθη αντικανονικού τερματισμού είναι μια ειδική κατηγορία λογικού λάθους, όταν το λάθος αποτέλεσμα είναι ο πρόωρος τερματισμός του προγράμματος.

Μπορούμε να το πάμε και ακόμα παραπέρα, ότι "ο αντικανονικός τερματισμός δεν είναι απαραίτητα λάθος προγραμματιστή",
αλλά ότι "ο αντικανονικός τερματισμός είναι μία μέθοδος αντιμετώπισης μιας προβληματικής κατάστασης, η οποία διαγνώστηκε είτε από το ίδιο το πρόγραμμα, είτε από κάποια βιβλιοθήκη (runtime system), είτε από το λειτουργικό σύστημα". Η προβληματική κατάσταση μπορεί να προκλήθηκε από λογικό λάθος, μπορεί και όχι.

Π.χ. if not enough memory, raise exception and terminate program, είναι αντικανονικός τερματισμός χωρίς "λάθος" από την πλευρά των προγραμματιστών. Άμα θες να φορτώσεις 10G εικόνα σε 4GB RAM, δεν το υποστηρίζουμε, τέλος.
Δεν είναι τόσο σημαντικό αν αυτός ο κώδικας ήταν μέρος του προγράμματος, μιας βιβλιοθήκης ή του λειτουργικού.