Παραβίαση ορίων πίνακα

Ξεκίνησε από lala, 03 Φεβ 2025, 01:05:02 ΜΜ

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

argonauta.rovies

Απόσπασμα από τις "ΟΔΗΓΙΕΣ ΔΙΔΑΣΚΑΛΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΣΑΝΑΤΟΛΙΣΜΟΥ Γ΄ ΤΑΞΗΣ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ
ΓΙΑ ΤΟ ΣΧΟΛΙΚΟ ΕΤΟΣ 2024–2025"

27. Εκσφαλμάτωση λογικών λαθών στους πίνακες (β) [1 ώρα]
Ενότητες
• [ΒΙΒΛΙΟ 2]: [5.2.3]
Μέσω δραστηριοτήτων να αναδειχθούν καλές πρακτικές εκσφαλμάτωσης λογικών λαθών σε προγράμματα που
χρησιμοποιούν δισδιάστατους πίνακες. Να επισημανθεί ότι υπάρχουν λάθη που έχουν αμφίσημη κατηγοριοποίηση
αναλόγως του προγραμματιστικού περιβάλλοντος υλοποίησης. Να αξιοποιηθεί η δραστηριότητα 4 της ενότητας
5.2.3.

Νομίζω ότι με βάση τις παραπάνω οδηγίες θα πρέπει να θεωρηθεί σωστή η κατηγοριοποίηση αυτού του λάθους και ως λογικό αλλά και ως αντικανονικού τερματισμού.



pgrontas

Για να τρολάρω :D :D :D λίγο την κατάσταση θα μπορούσαμε να το πούμε και συντακτικό λάθος, γιατί όπως έγραψα και παλιότερα:

ΠαράθεσηΑν το A mod 5 με Α πραγματική μεταβλητή είναι συντακτικό λάθος (σύμφωνα με τους θεματοδότες του 2023), γιατί και το Α[6] με Α πίνακα 5 θέσεων να μην είναι;

Η σημείωση πάντως που αναφέρει ο argonauta.rovies νομίζω ότι κάνει την κατάσταση χειροτερη αντί να την βοηθάει. Μου μοιάζει ως κακώς νοούμενη δημοσιουπαλληλική αποποίηση ευθύνης.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

George Eco

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

George

Σελίδα 131 τελευταία σειρά  ''Αντικανονικός τερματισμός''

argonauta.rovies

Πολύ σωστά σελ. 131. Άρα μετά από αυτό νομίζω ότι πρέπει να καταλήξουμε σε αντικανονικό τερματισμό.
 

George Eco

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

Foto

Έστω ο πίνακας έχει επιδόματα 5 βαθμίδων κσι ο προγραμματιστής σε κάποια περίπτωση ζητήσει το έκτο τι πρέπει να κάνει το πρόγραμμα που δεν ελέγχει τον δείκτη 6; Να εφεύρει ένα επίδομα ή να τερματίσει;

petrosp13

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

Νίκος Αδαμόπουλος

Παράθεση από: evry στις 06 Φεβ 2025, 05:30:47 ΜΜΠαράξενο, στη C που το δοκίμασα δουλεύει μια χαρά , δε βγάζει λάθος


Η C δεν ελέγχει τίποτα για αυτό πηγαίνει σφαίρα.

George Eco

#24
Παράθεση από: Νίκος Αδαμόπουλος στις 09 Φεβ 2025, 01:02:41 ΠΜΗ C δεν ελέγχει τίποτα για αυτό πηγαίνει σφαίρα.
Ακριβώς, ούτε garbage collector έχει, ούτε άλλες διευκολύνσεις πιο μοντέρνων γλωσσών.

Ο Ευριπίδης πιστεύω πως αυτό το έγραψε για να μας δώσει να καταλάβουμε πως είναι λογικό σφάλμα στη C να ξεπεράσουμε τα όρια του πίνακα.
Κι είναι πολύ πετυχημένο παράδειγμα.
Κι εμείς παρόλα αυτά, θα πρέπει για Πανελλήνιες να πούμε αντικανινκού τερματισμού στα πλαίσια του μαθήματος στη ΓΛΩΣΣΑ. Πάλι καλά θα πω εγώ γιατί δεν υπάρχει compiler της ΓΛΩΣΣΑΣ αφού είναι ορισμένη επί χάρτου. Ευτυχώς που έχει και πλαίσια εδώ το μάθημα, γιατί αλλού είμαστε ξέφραγο αμπέλι.
Μη το πάμε μακριά. Για πίνακα δε μιλάμε; Ας πούμε έχω πίνακα ακεραίων τον Α[5].  Ωραία, πως τον ορίζω;
ΑΚΕΡΑΙΕΣ: Α[5]
Σωστά;
Από πού κι ως πού χρησιμοποιώ τα σύμβολα [ και ] χωρίς να είναι ορισμένα στο αλφάβητο της ΓΛΩΣΣΑΣ;
Δηλαδή 25 χρόνια έχουμε ΤΕΤΟΙΑ προβλήματα, ε δε θα μας πειράξει αν είναι στα πλαίσια του μαθήματος κάτι αντίθετο της πραγματικότητας. Εγώ βέβαια σέβομαι τον εαυτό μου και σε όλα τα παιδιά, λέω αυτό το μαγικό "στα πλαίσια του μαθήματος" κάθε φορά που πρέπει να διδάσκω κάτι που μου αφήνει ξινίλα στο στόμα. Φέρει πείν ότι στους πίνακες αρχίζω αρίθμιση από 1. Όχι τίποτα άλλο, αλλά γιατί σε 3 μήνες μετά τις Πανελλήνιες, κάποια παιδιά θα είναι Φοιτητές και θα μαθαίνουν, ξέρω 'γω... C ξεκινώντας από μηδενικό δείκτη.

ApoAntonis

#25
Παράθεση από: evry στις 06 Φεβ 2025, 09:21:35 ΜΜΑυτό που έκανα είναι λογικό λάθος και όχι λάθος αντικανονικού τερματισμού, αφού .... τερματίζει κανονικά.

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

Οι προβληματικές γραμμές είναι οι 7 & 8. Κατά τύχη δεν βρήκαμε εκεί άλλη μεταβλητή ή κάτι από το instruction του προγράμματος και δεν μας έδωσε κρας.

*στην printf αν ζητήσουμε π.χ. το a[100] δεν έχει πρόβλημα να μας το δώσει, αφού επιστρέφει το περιεχόμενο της θέσης μνήμης α+100



giorgiozikos

5.2.3 Εκσφαλμάτωση λογικών λαθών σε πίνακες
Σελ 132

Στην σελίδα 131 κάτω δεξία αναφέρει ότι η υπέρβαση των ορίων του πίνακα είναι αντικανονικός τερματισμός και ΟΧΙ λογικό λάθος.

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

George Eco



Παράθεση από: giorgiozikos στις 12 Φεβ 2025, 06:35:39 ΜΜΗ επιτροπή των πανελλαδικών επιλέγει θέματα σύμφωνα με τα γραφόμενα του βιβλίου.
Ενότητα 7.1
Επιτρέπεται να ζητηθεί το αλφάβητο της ΓΛΩΣΣΑΣ; Είναι εντός ύλης. Και ποια απάντηση θα πάρεις σωστή; Λείπει η άνω κάτω τελεία και τα [ ] στο βιβλίο.

Ενότητα 7.8

Επιτρέπεται σε πραγματική μεταβλητή να ανατεθεί ακέραια σταθερά ως τιμή;
Δες τι λέει στο βιβλίο:
Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου.
Κάνουμε ΟΛΟΙ τα στραβά μάτια όταν πρέπει.

Πιο κάτω στο βιβλίο η ΑΛΛΙΩΣ_ΑΝ δε λέει πουθενά στη λειτουργία της πως είναι το ΑΛΛΙΩΣ προαιρετικό. Στο νέο βιβλίο πρόσθεσαν τη προαιρετικότητα μόνο στην ΕΠΙΛΕΞΕ.


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



Νομίζω πως είναι προφανές πως στα πλαίσια του μαθήματος λοιπόν θα πρέπει να ακολουθούμε όσο γίνεται περισσότερο το βιβλίο, ναι. Ποιος το αρνήθηκε αυτό άλλωστε; Δίνουν Πανελλήνιες τα παιδιά, τα δυο βιβλία είναι ο μπούσουλας.

Το τι συμβαίνει όμως στη πραγματικότητα δεν είναι  άσχετο, γιατί αυτά τα παιδιά 6 μήνες μετά τις Πανελλήνιες, θα μαθαίνουν πως στο πίνακα ξεκινάμε από το 0 κι όχι από το 1, θα μαθαίνουν πως δεν είναι απαραίτητο να είναι θετικοί οι τελεστέοι των div mod, θα μαθαίνουν πως η παραβίαση πίνακα είναι overflow που δε φρόντισαν να μη συμβεί στη C, κι αν είναι αρκετά εικονοκλαστικοί θα ανακαλύψουν πως σε μία for μπορείς να πειράξεις μέσα στο σώμα της τον iterator αλλά δεν είναι πολύ καλή ιδέα.
Τουλάχιστο ας ξέρουν τα πλαίσια του μαθήματος αλλά να έχουν κα;ι μια ΜΙΚΡΗ ιδέα ότι τους περιμένει κάτι διαφορετικό στο μέλλον. Είναι από αυτά τα θέματα που αναρωτιόμαστε, τι διδάσκουμε ακριβώς τα παιδιά; Γιατί έχει καταντήσει έτσι το μάθημα αυτό; Τι θα πουν αυτά τα παιδιά για το μάθημα όταν ανακαλύψουν τη πραγματικότητα; ΓΙΑΤΙ να μη διδάσκεται σε κάποιο πλαίσιο η πραγματικότητα. Τι κάνω εδώ; Ποιος είμαι; Από πού έρχομαι; Που πάω;
Πάω για ύπνο.


giorgiozikos

Πολλά μπορρώ να σου απαντήσω σε όλα αυτά που παραθέτεις αλλά πολύ απλά δεν έχει νόημα. ¨οπως δεν έχει νόημα ότι διδάσκουμε για προγραμματισμό εδώ και 25 χρόνια αυτή την αηδία. Στα 25 αυτά χρόνια έχουν αλλάξει τα βιβλία των θρησκευτικών 2 φορές και της πληροφορικής καμία.
Όσον αφορά το θέμα των λαθών εμείς πρέπει να πούμε στα παιδια αυτό που θα γράψουν στις εξετάσεις.
Όλα αυτά που αναφέρεις απλά θα δημιουργήσουν σύγχηση και άγχος στους μαθητές.
Το πρόβλημα με το μάθημα κατά την άποψη μου είναι πολύ πιο σοβαρό. Δυστυχώς όλα αυτά τα χρόνια δεν έγινε ούτε απο το ΙΕΠ ούτε από το Υπουργείο μια σοβαρή προσπάθεια αναβάθμισης του μαθήματος.
π.χ. να διδάσκουμε μια υπαρκτή γλώσσα προγραμματισμού ώστε η μαθητές να έχουν ένα ισχυρό κίνητρο να την μάθουν αφού θα ήταν ένα σοβαρό εφόδιο για το μέλλον
Προσωπικά πέρασα δύο χρόνια επιμόρφωση για πρότυπο Λύκειο και σε διαβεβαιώνω πως όλη η επιμόρφωση ήταν απλά χαμένος χρόνος.
Οι διδάκτορες του ΙΕΠ ούτε να ακούσουν δεν θέλουν για την εισαγωγή της διδασκαλίας μια κανονικής γλώσσα προγραμματισμού.
Όλοι οι υπόλοιποι μια χαρά βολέυονται . Ιδιαίτερα μαθήματα φροντηστήρια και ....... Ελλάς το μεγαλείο σου.

Καλή συνέχεια.

petrosp13

Παράθεση από: George Eco στις 13 Φεβ 2025, 01:11:07 ΠΜΕνότητα 7.8

Επιτρέπεται σε πραγματική μεταβλητή να ανατεθεί ακέραια σταθερά ως τιμή;
Δες τι λέει στο βιβλίο:
Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου.

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