Σε κάποιες γλώσσες δεν δηλώνεις μεταβλητές, ούτε πίνακες.
Αν καταλαβαίνω καλά τι λες Στάθη, μιλάς για πίνακες στους οποίους είναι δυνατόν να αλλάζει το μέγεθος κατά την εκτέλεση.
Το να αλλάζει το μέγεθος του πίνακα κατά τη διάρκεια της εκτέλεσης είναι δυναμικός πίνακας και υποστηρίζεται από γλώσσες όπως πχ η Perl. Αλλά στα πλαίσια του μαθήματος ο πίνακας είναι ξεκάθαρα στατική δομή δεδομένων και μόνο ως τέτοιο πρέπει να τον αντιμετωπίζουμε. Όταν μίλησα για γλώσσες προγραμματισμού εννοούσα πάντα για τον κλασσικό στατικό πίνακα αφού μόνο αυτόν τον παραλληλισμό θεωρώ ότι έχουμε το δικαίωμα να κάνουμε στα πλαίσια της ΑΕΠΠ.
Στην λύση που έγραψε ο Μιχάλης γίνεται χειρισμός του πίνακα όπως στην Perl (δυναμικά).
Για να κάνω ξεκάθαρη την άποψή μου, θεωρώ λάθος από παιδαγωγική άποψη το να αντιμετωπίζουμε τον πίνακα ως δυναμική δομή δεδομένων στην ψευδογλώσσα και ως στατική στη ΓΛΩΣΣΑ. Δεν είναι σωστό να θεωρούμε σωστό στην ψευδογλώσσα κάτι που στη ΓΛΩΣΣΑ θα θεωρηθεί λάθος. Είναι κάτι που θα μπερδέψει το μαθητή. Φυσικά σε κάποιες περιπτώσεις δε γίνεται να το αποφύγουμε (όπως πχ την ανάθεση τιμής πραγματικού με ακέραια τιμή σε ακέραιο). Αλλά θα πρέπει να περιορίσουμε αυτές τις διαφοροποιήσεις στο ελάχιστο δυνατό. Από τη στιγμή που η λύση που έγραψε ο Μιχάλης δεν είναι αποδεκτή στη ΓΛΩΣΣΑ, δεν πρέπει να είναι και στην ψευδογλώσσα.
Δεν ξέρω κατά πόσο πρέπει να περιμένουμε από το μαθητή να εφαρμόζει τους περιορισμούς των στατικών δομών στην ψευδογλώσσα από τη στιγμή που αρκετά παραδείγματα στο βιβλίο τους αγνοούν :
- Στο παράδειγμα 2 σελ. 58 του βιβλίου του μαθητή οι διαστάσεις του πίνακα είναι άγνωστες
- Στη σειριακή αναζήτηση σελ. 64 ψάχνουμε σε πίνακα ν στοιχείων
- Στη σελίδα 68 ταξινομούμε πίνακα ν στοιχείων
είμαι σίγουρος ότι αν ψάξω και στο τετράδιο θα βρω και άλλα παραδείγματα.
Προσωπικά δεν θα έκοβα βαθμούς.
Τα παραδείγματα του βιβλίου δεν έρχονται σε αντίθεση με αυτό που γράφω. Κάλλιστα μπορεί το ν να είναι το πλήθος των χρησιμοποιούμενων στοιχείων του πίνακα και για τα άλλα να μη γίνεται λόγος (όπως πχ στα υποπρογράμματα που βρίσκουν το μέγιστο πίνακα τυχαίου πλήθους χρησιμοποιούμενων στοιχείων αλλά όχι πάνω από 100). Μπορεί επίσης το ν να είναι δηλωμένο ως σταθερά στην αρχή του προγράμματος.
Μπορεί να φαίνεται λίγο μαγειρεμένο αυτό που λέω αλλά αν δεν το δούμε έτσι τότε επιτρέπουμε κλασσικό δυναμικό χειρισμό του πίνακα όπως στην Perl. Αυτό το θεωρώ σαφώς χειρότερο.
Όσον αφορά την σπατάλη της μνήμης δεν νομίζω ότι είναι το πιο σημαντικό πράγμα (εξαιρούνται οι υπερβολές) σε μία λύση η οποία δείχνει ότι ο μαθητής έχει αναπτύξει αλγοριθμική σκέψη. Προσωπικά διαφωνώ με αυτούς που τους έχει γίνει ψύχωση η μνήμη και όταν μια άσκηση λύνεται ευκολότερα με πίνακες επιλέγουν τον "δύσκολο" τρόπο με σκοπό τη βελτιστοποίηση της διαχείρισης μνήμης.
Δεν μου έχει γίνει ψύχωση η σπατάλη μνήμης (όπως μου έχει γίνει η απόδοση του αλγορίθμου

). Φυσικά είναι κακό πράγμα η σπατάλη μνήμης. (Κάνοντας μια μικρή παρένθεση θα ήθελα να πω ότι η νοοτροπία του να βρίσκεις την εύκολη λύση και να μην ασχολείσαι με τη διαχείριση είναι κάτι που μελλοντικά θα οδηγήσει στο κλασσικό λάθος που βλέπουμε σε αρχάριους του να κατεβάζουν ολόκληρο αρχείο σε πίνακα για να έχουν βολικό χειρισμό). Αλλά δεν ασχολούμαι με αυτό διότι έχουμε πολύ πιο σοβαρά λάθη να ασχοληθούμε
εννοώ την αποδοχή κακής απόδοσης αλγορίθμων.
Αλλά δεν είναι αυτό το θέμα μας. Όλοι συμφωνούμε ότι καλώς ή κακώς με την τροπή που έχει πάρει το μάθημα δεν μπορούμε να κόψουμε βαθμούς για περιττή χρήση πίνακα σε πρόβλημα που λύνεται με πίνακα αλλά λύνεται και χωρίς πίνακα.
Το πραγματικό πρόβλημα (και εκεί που διαφωνούμε) είναι άλλο:
Σε ένα πρόβλημα που δε λύνεται με στατικό πίνακα για κάθε πλήθος στοιχείων, επιτρέπεται να κάνουμε χρήση πινάκα;Η απάντησή μου είναι όχι. Ο μαθητής πρέπει να ξέρει τον περιορισμό των στατικών δομών γιατί στην ΑΕΠΠ ο πίνακας είναι στατική δομή είτε είμαστε σε ΓΛΩΣΣΑ είτε σε ψευδογλώσσα.
Είμαι σίγουρος ότι κάποιες από τις ασκήσεις που λύνουμε λύνονται και με τη χρήση δύο - τριών μεταβλητών.
Η χρήση παραπανίσιων μεταβλητών δεν είναι το ίδιο με την περιττή χρήση πίνακα. Επειδή δεν μπορούμε να χειριστούμε τις μεταβλητές μαζικά (όπως τον πίνακα), αυτές δεν μπορούν να είναι πολλές γιατί θα πρέπει γράψουμε πάρα πολύ κώδικα με το χέρι. Άντε να είναι καμιά δεκαριά αυτές οι παραπανίσιες μεταβλητές. Το πρόβλημα στον πίνακα είναι ότι με τη μια μπορείς να κάνεις σπατάλη μνήμης χιλιάδων θέσεων. Αλλά το συγκεκριμένο θέμα ανήκει στο ερώτημα που θεωρώ ότι δε μας απασχολεί γιατί καλώς ή κακώς δεν κόβουμε πόντους.