Για να μπορέσουμε να συνεννοηθούμε θα χρησιμοποιήσω 2 (κάπως αδόκιμους είναι η αλήθεια) όρους: «Προγραμματιστική Λογική» και «Αλγοριθμική Λογική». Οι υπέρμαχοι της «Προγραμματιστικής Λογικής» όπως janag79, karpov, nickandy (με τον τελευταίο μάλιστα να μιλάει απαξιωτικά για τον κλάδο) μας καλούν να μη χρησιμοποιήσουμε πίνακα γιατί είναι στατική δομή και το πλήθος των αγωνιζομένων μεταβλητό. Δεκτό ως εδώ. Στη συνέχεια όμως για να σταθεί ο ισχυρισμός τους, επανέρχονται στην «Αλγοριθμική Λογική». Μονά ζυγά δικά τους δηλαδή. Εξηγούμαι λοιπόν: Σε προηγούμενη ανάρτησή μου (παρατήρηση 2), ανέφερα:
«2) ΑΕΠΠ Βιβλίο μαθητή σελ. 58 και θέμα Α4 Πανελληνίων 2010 - "Άθροισμα πίνακα"
Το μέγεθος του πίνακα ορίζεται mXn (άγνωστο δηλαδή). Τα m,n βρίσκονται στα Δεδομένα, δηλ. υποθέτουμε πως έχουν διαβαστεί (πιθανώς υπό την προϋπόθεση να 'ναι μικρότερα ή ίσα από κάποιους ακεραίους που θα ορίζουν το μέγεθος του πίνακα). Άλλωστε στην 1η μας επαφή με αυτού του είδους αναπαράσταση αλγορίθμων (όπου γίνεται χρήση εντολής Δεδομένα // //) στη σελ. 48 του σχολικού βιβλίου, τα Μ1, Μ2 θεωρείται πως προέκυψαν από "είσοδο" (το αναφέρει παραπάνω στην ίδια σελίδα, στην επεξήγηση του αλγορίθμου σε φυσική γλώσσα). Άρα τα m,n έχουν υποτίθεται ήδη διαβαστεί, δηλ. έχουν εισαχθεί στον αλγόριθμο από εντολή εισόδου. Το ίδιο συμβαίνει και στο θέμα Γ 2010, όπου το πλήθος αγωνιζομένων (δηλ. το υποτιθέμενο μέγεθος του πίνακα) εισήχθη με εντολή εισόδου στον αλγόριθμο».
Λέτε κύριοι ότι ο πίνακας και το μέγεθός του (εντολή Δεδομένα//table,m,n//) είναι δεδομένα. Από πού; Από άλλο προηγούμενο πρόγραμμα; Διαβάστηκε δηλαδή πίνακας πριν και διατηρεί το μέγεθος του και τα περιεχόμενά του για το επόμενο πρόγραμμα; Δηλ. έχουμε μια προσωρινή μνήμη (RAM) όπου αποθηκεύεται o πίνακάς μας (κ’ τα περιεχόμενά του) με την ιδιότητα να διατηρεί τον πίνακα και μετά το πέρας του προγράμματος(!!!!); Γνωρίζω ποια θα είναι η απάντηση. Μια παραδοχή κάνουμε (άλλωστε για αλγόριθμο πρόκειται δεν έχουμε κανέναν editor ΓΛΩΣΣΑΣ ανοικτό και γράφουμε) και θεωρούμε ότι τα table,m,n έχουν δοθεί από πριν. Όχι κύριοι, (με βάση και τη δική σας θεώρηση για το θεμα Γ) δεν έχουν δοθεί από πριν. Και εσείς είστε οι πρώτοι που πρέπει να το πείτε αυτό γιατί είστε υπέρμαχοι της «Προγραμματιστικής Λογικής» στην προσέγγιση του θέματος Γ. Μιας λογικής που λέει πως είναι αυθαιρεσία να δεχτούμε πίνακα μεγέθους Ν, δεν είναι αυθαιρεσία όμως να δεχτούμε ότι γέμισε και διατηρήθηκε στη μνήμη με «μαγικό τρόπο» πριν καν αρχίσει ο αλγόριθμος να εκτελείται.
Η εντολή Δεδομένα // // υπάρχει προφανώς στο βιβλίο για να μας παρουσιάσει την ουσία κάποιων αλγορίθμων χωρίς περιττές εντολές Διάβασε. Πείτε το απλοϊκό, πείτε το αντιεπιστημονικό, είναι μια αναπαράσταση αλγορίθμου του βιβλίου και πρέπει να τη δεχτούμε γιατί καλώς ή κακώς βάσει του βιβλίου γίνονται οι εξετάσεις. Και για να ισχυροποιήσω αυτή μου τη θέση επαναλαμβάνω ένα τμήμα της ανωτέρω ανάρτησης, στο οποίο κανείς από σας δε μου απάντησε:
«Άλλωστε στην 1η μας επαφή με αυτού του είδους αναπαράσταση αλγορίθμων (όπου γίνεται χρήση εντολής Δεδομένα // //) στη σελ. 48 του σχολικού βιβλίου, τα Μ1, Μ2 θεωρείται πως προέκυψαν από "είσοδο" (το αναφέρει παραπάνω στην ίδια σελίδα, στην επεξήγηση του αλγορίθμου σε φυσική γλώσσα). Άρα τα Μ1,Μ2 έχουν υποτίθεται ήδη διαβαστεί, δηλ. έχουν εισαχθεί στον αλγόριθμο από εντολή εισόδου».
Όταν λοιπόν στο θέμα «πολλ/μός αλά Ρωσικά» (σελ. 48) λέει στην επεξήγηση φυσικής γλώσσας:
«Είσοδος: Δύο ακέραιοι Μ1 και Μ2, όπου Μ1, Μ2 >=1» και παρακάτω αυτή η εντολή αντιστοιχεί στην εντολή της ψευδογλώσσας « Δεδομένα // Μ1, Μ2// »τι εννοεί; Τι σημαίνει είσοδος; Κάτι που εισήχθη με κάποιο άλλο τρόπο εκτός από εντολή εισόδου πριν την έναρξη του αλγορίθμου; Δεν παραβιάζει αλήθεια αυτό τις αρχές της «Προγραμματιστικής Λογικής» σας πάνω στην προσέγγιση του θέματος Γ; Άρα ή ακολουθούμε την «Προγραμματιστική λογική» και δεχόμαστε πως τα δεδομένα διαβάστηκαν μέσα στον αλγόριθμο και για λόγους συντομίας και ουσίας δε γράφουμε Διάβασε Μ1, Μ2 ή από δω και πέρα να διδάσκουμε ότι η είσοδος δεν εκτελείται με εντολή εισόδου Διάβασε πάντα, αλλά καμιά φορά και με μάγια και πως ότι ο αλγόριθμος, δεν πειράζει, ας μην είναι «γενικός», καλό είναι και να τρέχει και με «καρφωτές» εξωτερικές τιμές εισόδου (που προηγήθηκε δηλ. η καταχώρησή τους) και που διατηρούνται στη μνήμη RAM επ’ αόριστον με κάποιο τρόπο (!!!!!!)…
Επίσης σας παραθέτω την παράγραφο σχολικού βιβλίου σελ. 67 « Έτσι, τα δεδομένα των αρχείων διατηρούνται ακόμη και μετά τον τερματισμό του προγράμματος, κάτι που δεν συμβαίνει στην περίπτωση των δομών της κύριας μνήμης, όπως είναι οι πίνακες, (σημείωση δική μου: προφανώς και οι απλές μεταβλητές) όπου τα περιεχόμενα χάνονται όταν τελειώσει το πρόγραμμα ».
Άρα σαφώς το βιβλίο μας καλεί να κάνουμε την παραδοχή ότι τα Μ1, Μ2 τα διαβάσαμε ήδη μέσα στον αλγόριθμο, κάτι το οποίο κάνει ο μαθητής και στο Θέμα Γ 2010 που διαβάζει το πλήθος των αγωνιζομένων.
Επομένως είτε γράψουμε Δεδομένα//table, Ν// είτε γεμίσουμε table μεγέθους Ν (θεωρώντας ότι το Ν αντιπροσωπεύει το μέγεθος) εντός του αλγορίθμου (επαναλαμβάνω ακλουθώντας τη φιλοσοφία του βιβλίου), έχουμε πετύχει το ίδιο ακριβώς. Δεν εννοώ μ' αυτό πως θεωρώ σωστή τη λύση Δεδομένα //ΠινΟν,ΠινΕπ,N// στο θέμα Γ χωρίς να διαβάσουμε καν πίνακα, εννοώ πως το βιβλίο σαφώς μας επιτρέπει να κάνουμε σε αλγόριθμο την παραδοχή ότι το Ν που διαβάσαμε μπορεί να αποτελέσει το μέγεθος των πινάκων τους οποίους στη συνέχεια γεμίζουμε.
Απάντηση σε παράθεση του janag79 :
“3) Στην τελική, τζάμπα κάνατε, αν κάνατε προετοιμασία σε προβλήματα με δομή επανάληψης, αφού με την νέα πρακτική που σώνει και καλά πρέπει να είναι σωστή, παίρνουμε παντού πίνακες.. τους δυναμικούς πίνακες!!”
Προφανώς και σε θέματα με «συνθήκη εξόδου από την επανάληψη» (πχ «μέχρι να διαβαστεί αρνητικός αριθμός», «μέχρι να δοθεί απάντηση ‘ΟΧΙ’», «μέχρι το άθροισμα να γίνει >100» κλπ) που είναι τα θέματα στα οποία αναφέρεσαι, ένας μαθητής Γυμνασίου, όχι 3ης Λυκείου, ούτε δομή «Για» θα χρησιμοποιούσε για να γεμίσει πίνακα, ούτε τη χρήση του πίνακα θα σκεφτόταν εάν δεν υπήρχε η αναφορά σε πλήθος Ν δεδομένων και αν πάνω απ’ όλα ζητούνταν πρόγραμμα. Μη λαϊκίζουμε λοιπόν εκ του ασφαλούς και για εντυπωσιασμό…
Ευχαριστώ