Δεν θα πάρω θέση πάνω στο αν μπορούμε να θεωρούμε τους πίνακες ως λάστιχο που τεντώνουν όσο θέλουμε (όπως μπορεί να συμβαίνει σε κάποιες γλώσσες), ούτε στο αν στην ψευδογλώσσα δεν μας ενδιαφέρει το πλήθος των στοιχείων των πινάκων, ούτε ποια είναι η ουσία της ανάπτυξης της αλγοριθμικής σκέψης των μαθητών.
Τα παρακάτω που γράφω ακολουθούν και θεωρώ πως είναι συμβατά με την πιο συντηρητική και ακαδημαϊκή προσέγγιση του θέματος. Δηλαδή θεωρώ πως στέκουν κανονικά ακόμα κι αν μιλάγαμε για υλοποίηση των λύσεων στη ΓΛΩΣΣΑ, όπου σίγουρα τα πράγματα είναι πιο αυστηρά καθορισμένα.
Συνεχίζοντας από προηγούμενα posts μου την διερεύνηση του πότε τέλος πάντων θα μπορούμε να χρησιμοποιούμε πίνακες χωρίς να θεωρείται λάθος, παραθέτω τις παρακάτω παραλλαγές τμημάτων ασκήσεων.
Δεν στέκομαι στο αν λύνονται και χωρίς πίνακες ή σε θέματα πολυπλοκότητας, γιατί είναι δεδομένο το τρέχων στήσιμο του μαθήματος και η εξεταστέα ύλη.
Παραλλαγή 1Σε κάποια
σχολική τάξη, για το άθλημα «Άλμα εις μήκος» καταγράφεται για κάθε μαθητή η καλύτερη έγκυρη επίδοσή του. Να γράψετε αλγόριθμο ο οποίος:
α)
Να ζητάει τον συνολικό αριθμό των μαθητών και για κάθε μαθητή το όνομα και την επίδοσή του σε μέτρα.
β) Να εμφανίζει το όνομα του αθλητή με τη χειρότερη επίδοση.
Παραλλαγή 2Σε κάποια
σχολική τάξη, για το άθλημα «Άλμα εις μήκος» καταγράφεται για κάθε μαθητή η καλύτερη έγκυρη επίδοσή του. Να γράψετε αλγόριθμο ο οποίος:
α)
Να ζητάει τον συνολικό αριθμό των μαθητών, ελέγχοντας ώστε να είναι από 5 έως και 30, και για κάθε μαθητή το όνομα και την επίδοσή του σε μέτρα.
β) Να εμφανίζει το όνομα του αθλητή με τη χειρότερη επίδοση.
Παραλλαγή 3Σε κάποια παραλία, στα πλαίσια ενός ερευνητικού έργου, καταγράφεται για κάθε κόκκο άμμου το βάρος του. Να γράψετε αλγόριθμο ο οποίος:
α)
Να ζητάει τον συνολικό αριθμό των κόκκων άμμου και για κάθε κόκκο τον όγκο του και το βάρος του.
β) Να εμφανίζει τον όγκο του κόκκου με το μικρότερο βάρος.
Παραλλαγή 4Σε κάποια παραλία, στα πλαίσια ενός ερευνητικού έργου, καταγράφεται για κάθε κόκκο άμμου το βάρος του. Να γράψετε αλγόριθμο ο οποίος:
α)
Να ζητάει τον συνολικό αριθμό των κόκκων άμμου, ελέγχοντας ώστε να είναι από 1000000 έως και 2000000, και για κάθε κόκκο τον όγκο του και το βάρος του.
β) Να εμφανίζει τον όγκο του κόκκου με το μικρότερο βάρος.
Οι ομοιότητες και οι διαφορές τους έχουν να κάνουν με τα εξής:α)
Τα 1 και 2 αναφέρονται σίγουρα σε μικρό πλήθος δεδομένων αφού μιλάμε για μαθητές σχολικής τάξης, άρα το να ισχυριζόμαστε ότι έχουμε σπατάλη ή ανεπάρκεια πόρων μάλλον είναι αστείο.
β)
Τα 3 και 4 αναφέρονται σίγουρα σε μεγαλύτερο πλήθος δεδομένων αφού μιλάμε για κόκκους άμμου, οπότε εκεί πιθανώς να υπάρχει πρόβλημα.
γ)
Στα 2 και 4 υπάρχει σαφώς καθορισμένο άνω όριο των δεδομένων. Άρα θα μπορούσε να γίνει χρήση πινάκων με 30 και 2000000 θέσεις αντίστοιχα. Υπάρχει αντίρρηση ακόμα και για το 2; Εγώ λέω
ΟΧΙ. Αν ΝΑΙ σταματάω επιτόπου, και θα προσπαθήσω να αναθεωρήσω την άποψή μου για τον προγραμματισμό και την ΑΕΠΠ. Πιθανώς να υπάρχει αντίρρηση για το 4, ακόμα κι από μένα, εξ αιτίας του μεγάλου πλήθους των δεδομένων (αν και πρόκειται για μεγέθη της τάξης των μερικών ΜΒ). Άλλωστε, πιθανώς σε κάποια γλώσσα να μην μπορούν να χρησιμοποιηθούν τόσο μεγάλοι πίνακες.
δ)
Στα 1 και 3 δεν υπάρχει σαφώς καθορισμένο άνω όριο των δεδομένων. Όμως για το 1 ο προγραμματιστής μπορεί να θεωρήσει ένα ρεαλιστικό και λογικό άνω όριο (π.χ. τώρα με το ΔΝΤ τους 200 μαθητές ανά τάξη!) και να το δηλώσει κανονικά ακόμα και στη ΓΛΩΣΣΑ. Έχουμε κατασπατάληση πόρων;
ΟΧΙ! Θα το υλοποιούσε κανείς στην πράξη με δυναμικές δομές δεδομένων αν έγραφε ένα πραγματικό πρόγραμμα; Έχω γράψει εκατοντάδες χιλιάδες γραμμές κώδικα, και έχω υλοποιήσει πολλές φορές δυναμικές δομές, διπλές λίστες, δέντρα, με δείκτες, με δείκτες σε δείκτες, .... αλλά για την παραλλαγή 1 θα έβαζα πίνακα! Στο 3, επειδή το πλήθος των κόκκων της παραλίας είναι ανεξέλεγκτα μεγάλο, παίζεται ακόμα και το αν θα υπήρχε διαθέσιμη RAM, ακόμα και χρησιμοποιώντας δυναμικές δομές δεδομένων!
Άρα λοιπόν εγώ θα έκανα χρήση πινάκων στα:Παραλλαγή 1: ΝΑΙ
Παραλλαγή 2:
ΝΑΙΠαραλλαγή 3: ΟΧΙ
Παραλλαγή 4: ΙΣΩΣ
Επιπλέον, σε όλες τις παραπάνω παραλλαγές το ακριβές πλήθος των δεδομένων είναι άγνωστο κατά τη φάση του προγραμματισμού. Άρα αν ερμηνεύσουμε κατά λέξη την αναφορά της σελ. 56 «Με τον όρο στατική δομή δεδομένων εννοείται ότι
το ακριβές μέγεθος της απαιτούμενης κύριας μνήμης καθορίζεται κατά τη στιγμή του προγραμματισμού τους, και κατά συνέπεια κατά τη στιγμή της μετάφρασής τους και όχι κατά τη στιγμή της εκτέλεσης τους προγράμματος», τότε σε καμία παραλλαγή δεν θα μπορούσαμε να έχουμε πίνακα!
Αυτή η άποψη είναι αφοριστική. Εξάλλου, στη σελ. 186 για τους πίνακες, ακόμα και για τη ΓΛΩΣΣΑ που τα πράγματα είναι πιο αυστηρά: "Εκτός από τον τύπο του πίνακα πρέπει να δηλώνεται και ο αριθμός των στοιχείων που περιέχει ή καλύτερα
ο μεγαλύτερος αριθμός στοιχείων που μπορεί να έχει ο συγκεκριμένος πίνακας και αυτό για να δεσμευτούν οι αντίστοιχες συνεχόμενες θέσεις μνήμης".
Πιστεύω, λοιπόν, ότι από τους συναδέλφους που έκφρασαν αρνητική άποψη στη χρήση πινάκων στο θέμα Γ, θα είχαμε τις εξής απαντήσεις:
Παραλλαγή 1: ΟΧΙ
Παραλλαγή 2:
ΝΑΙΠαραλλαγή 3: ΟΧΙ
Παραλλαγή 4: ΙΣΩΣ
Πιστεύω ότι για την Παραλλαγή 2 συμφωνούμε όλοι. Για την 3 και 4 πάλι δεν βλέπω πρόβλημα αφού εύκολα μπορούμε να συμφωνήσουμε όλοι και το ΙΣΩΣ να γίνει ΟΧΙ.
Άρα το πρόβλημα συμφωνίας υπάρχει στο 1, αφού οι μεν λένε ότι τα δεδομένα μάλλον είναι λίγα οπότε ας βάλουμε πίνακα με κάποιο άνω όριο, οι δε λένε ότι κάτι τέτοιο είναι αυθαίρετο: μπορεί να έχουμε τάξη ακόμα και με >200 μαθητές.
ΟΚ, δεκτή η διαφωνία!Όμως συνάδελφοι η επιτροπή δεν έπρεπε να βάλει θέμα σε κάτι που εμείς διαφωνούμε! Τι φταίνε οι μαθητές; Μιλάμε για Σχολικό Διαγωνισμό. Κάποιος μαθητής θα σκεφτεί: πόσοι μαθητές θα πάνε στο άλμα εις μήκος; 100; 500; Ακόμα και ολυμπιάδα να είχαμε δηλαδή;
Αν η Επιτροπή σκόπευε να εξετάσει θέμα χωρίς πίνακες ας ήταν πιο ξεκάθαρο. Δεν μπορούσε; Το ότι το θέμα εξέταζε δήθεν τις γνώσεις των μαθητών και ήταν παγίδα εγώ το ακούω βερεσέ.
Αστοχία ήταν το θέμα, αστοχία και η οδηγία στα Β.Κ. Να δω τώρα πώς θα το μαζέψουν! Το ζήτημα αυτό δεν προέκυψε ξαφνικά. Έχουν γίνει πολλές συζητήσεις ακόμα και πρόσφατα. Το γεγονός ότι υπάρχουν διαφωνίες μεταξύ μας αυτό δείχνει ότι έχουμε προβληματικό σημείο στο βιβλίο. Συγγνώμη που δεν μπορώ να το δω τόσο πεντακάθαρα όπως κάποιοι συνάδελφοι. Δες τε:
1. Από εντελώς σχετική κουβέντα πριν δύο μήνες:https://alkisg.mysch.gr/steki/index.php?topic=2734.msg24353#msg243532. Από το σχολιασμό μου στα θέματα του Εσπερινού πριν λίγες μέρες:https://alkisg.mysch.gr/steki/index.php?topic=2916.msg26737#msg26737όπου εκεί όντως γράφω: «Είδα επίσης μία επιμονή στη ΓΛΩΣΣΑ .... το αποδίδω ... ώστε να μην είναι δυνατή η χρήση πίνακα (λέτε οι θεματοδότες να διάβαζαν τις συζητήσεις από το ΣΤΕΚΙ περί της δυνατότητας χρήσης πινάκων στους αλγορίθμους όταν δεν είναι γνωστό το μέγιστο πλήθος των στοιχείων τους;)»
[Ειρωνία της τύχης!]Επομένως συνάδελφοι, δεν λέμε ότι όλα τα προβλήματα λύνονται με πίνακες. Δεν μιλάμε αφοριστικά.
Κάθε περίπτωση είναι διαφορετική. Και υπάρχουν περιπτώσεις που ακροβατούν πάνω στις κόκκινες γραμμές του βιβλίου, αλλά ακριβώς αυτές είναι που θα έπρεπε να αποφεύγουν οι θεματοδότες. Αυτό ακριβώς ΔΕΝ έγινε σήμερα, και για το λόγο αυτό αποφάσισα από την αρχή να εκτεθώ από άποψη επιστημονικής ακεραιότητας (ενώ θα μπορούσα να ακολουθήσω την άλλη πιο safe άποψη που ήδη είχε εκφραστεί εκείνη τη χρονική στιγμή – πράγμα που δυστυχώς έκανε τελικά η ΠΕΚΑΠ, αλλά προς τιμήν της όχι και η ΕΠΥ!), και ανέβασα προτεινόμενη λύση με πίνακες, γράφοντας ταυτόχρονα: «(επειδή φαίνεται να έχουμε θέμα... το 3ο Θέμα το δίνω με πίνακες!)», ώρα 11:59:
https://alkisg.mysch.gr/steki/index.php?topic=2927.msg26971#msg26971Με όλα τα παραπάνω θέλω να δείξω ότι οι φωνές των συναδέλφων και των μαθητών έχουν βάση. Δεν τα λένε επειδή όλοι αυτοί δεν καταλαβαίνουν πώς πρέπει να διδάσκονται και να λύνονται αντίστοιχα τέτοια θέματα, ή απλά για να υπερασπίσουν την αρχική τους "λανθασμένη" άποψη... Είναι τραγικό να λέμε κάτι τέτοιο! Δεν μπορούμε να λέμε ξερά: "είναι στατική δομή και θα έπρεπε να είναι από την αρχή γνωστό το πλήθος" ... Μην αφορίζουμε!
Υ.Γ. Συγγνώμη για την έκταση στο μήνυμά μου. Ο χρόνος που αφιέρωσα για να το γράψω αποτελεί ένδειξη σεβασμού προς τους συναδέλφους και τους μαθητές...