Όνομα δεικτών πίνακα

Ξεκίνησε από petroszoul, 08 Μαΐου 2015, 05:56:01 ΜΜ

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

petroszoul

Στο σχολικό βιβλίο αναφέρει για το όνομα ενός δείκτη πίνακα: "Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα."
Αυτό εν μέρει δεν είναι λάθος;
Δεν θα έπρεπε να αναφέρει ότι είναι δεκτό το όνομα αρκεί όμως επίσης να μην υπάρχει άλλος δείκτης με το ίδιο όνομα σε εμφωλευμένο βρόχο (Αυτό που αναφέρει δηλαδή στους κανόνες για τους εμφωλευμένους βρόχους)

Σε μία ερώτηση του στυλ "Μπορούμε να ορίσουμε μια οποιαδήποτε μεταβλητή ως δείκτη ενός πίνακα;" απαντάμε Σ ή Λ;

noname

ΠαράθεσηΣε μία ερώτηση του στυλ "Μπορούμε να ορίσουμε μια οποιαδήποτε μεταβλητή ως δείκτη ενός πίνακα;" απαντάμε Σ ή Λ;

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

itt


petroszoul

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

petroszoul

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

deg

Στο σχολικό βιβλίο (σελ 186) αναφέρει ως σημείωση
"Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα. Είναι σύνηθες όμως στον προγραμματισμό ως δείκτες να χρησιμοποιούνται οι μεταβλητές i, j, k."

Ακριβώς δεξιά της σημείωσης το σχολικό βιβλίο αναφέρει
"... Το όνομα του πίνακα μπορεί να είναι οποιοδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι μία ακέραια έκφραση, σταθερή ή μεταβλητή που περικλείεται μέσα στα σύμβολα [ και ]. ..."


Κατά την γνώμη μου δεν εστιάζεις στην εν λόγω σημείωση (η σημείωση είναι κάτι σαν επεξηγηματικό η/και περιφραστική επεξήγηση όρων), αλλά στα γραφόμενα του βιβλίου, γραφόμενα τα οποία αποσαφηνίζουν πλήρως το τι είναι και τι δεν είναι δείκτης πίνακα.   Υπό το πρίσμα αυτό αποσαφηνίζει την περίπτωση που χρησιμοποιείται μεταβλητή ως δείκτης σε πίνακα (πρώτη πρόταση της σημείωσης). Η φράση "Είναι σύνηθες όμως στον προγραμματισμό ..." επεξηγεί πλήρως τα συνηθισμένα από όλους μας ονόματα δεικτών.


ΥΓ Με την ευκαιρία  να αναφέρω ένα "ωραίο" παράδειγμα χρήσης μεταβλητών σε εμφωλευμένους βρόχους

ΓΙΑ Μετρητής ΑΠΟ 1 ΜΕΧΡΙ 10
   ΓΙΑ Μετρητούλης ΑΠΟ 1 ΜΕΧΡΙ 10
       ΓΙΑ Μετρητάκος  ΑΠΟ 1 ΜΕΧΡΙ 10
.....
Δεν είναι κακό να κάνεις λάθος, κακό είναι να αφήσεις το λάθος αδιόρθωτο.

petroszoul

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

Γενικά η ερώτηση μου στην ουσία ενώνει δύο κομμάτια διαφορετικά από το βιβλίο αλλά που αν τα ενώσεις θα έβγαινε Λάθος, θα μπορούσε να ήταν κάποια ερώτηση που θα έμπαινε σε πανελλήνιες; Επειδή τα θέματα έχουν δυσκολέψει με τον καιρό γίνεται μια ερώτηση που θα πέσει στις πανελλήνιες να είναι απόρροια ένωσης διαφορετικών σημείων του βιβλίου (για καλά διαβασμένους μαθητές δλδ.;

ολγα

Η μεταβλητή είναι "τρισδιάστατη": όνομα, τύπος, τιμή. Οποιαδήποτε μεταβλητή σημαίνει μεταβλητή οποιουδήποτε ονόματος, τύπου και τιμής.
Άρα η απάντηση είναι Λ.

deg

Φίλε petroszoul, η αρχική σου ερώτηση είναι

Ο δείκτης είναι μία μεταβλητή που μπορεί να έχει οποιοδήποτε δεκτό όνομα.

και ζητάς να χαρακτηριστεί ως σωστή ή λαθεμένη πρόταση. Κατά την γνώμη μου η πρόταση είναι Λάθος για δύο λόγους
1/ "Ο δείκτης είναι μία μεταβλητή" ... θα μπορούσε να είναι και σταθερά ή έκφραση
2/ "που μπορεί να έχει οποιοδήποτε δεκτό όνομα" ... πρέπει όμως να είναι ακέραιου τύπου


Στην συνέχεια γράφεις

Δεν θα έπρεπε να αναφέρει ότι είναι δεκτό το όνομα αρκεί όμως επίσης να μην υπάρχει άλλος δείκτης με το ίδιο όνομα σε εμφωλευμένο βρόχο

Η απάντησή μου: όχι δεν θα έπρεπε να το αναφέρει. Και αυτό διότι περιγράφει έναν και μόνο δείκτη, για μονοδιάστατο πίνακα.
Για πολυδιάστατους πίνακες (δύο, τριών ή περισσοτέρων διαστάσεων) χρησιμοποιούνται αντίστοιχα δύο, τρεις ή περισσότεροι δείκτες. Για την σάρωση ενός πολυδιάστατου πίνακα απαιτείται η χρήση εμφωλευμένων βρόχων, που σύμφωνα με το βιβλίο (σελ 180)


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

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

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

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