@evry
Δεν αντιλέγω ως προς τη χρήση βιβλιογραφίας. Για την εφαρμογή της στο σκεπτικό μου αντιλέγω. Η παρουσίαση ποτηριών και το παράδειγμα αλλαγής τιμής είναι πολύ χειροπιαστό για να το μπερδέψει κάνεις. Η χρήση της γλώσσας, της ελληνικής, και του παραδείγματος δεν δείχνουν ότι υπάρχουν παρανοήσεις. Αλλά αν δεν εξεταστεί η πρόταση σε αίθουσες, όχι μόνο σε μια, δεν μπορούμε να την απορρίψουμε. Εκτός και αν έχει εξεταστεί όπως το έγραψα και υπάρχει βιβλιογραφία που το δείχνει.
Ο αριθμός στη μεταβλητή "ποτήρι" είναι η ποσότητα του νερού δηλαδή μα μετρούμενη ιδιότητα. Στις μεταβλητές στον υπολογιστή, επίσης έχουμε μια μετρούμενη ιδιότητα τα bit, αλλά με χρήση δυνάμεων του δύο. Αντί να αναφέρουμε τη λεπτομέρεια αυτή, το αφήνουμε να εννοηθεί ότι υπάρχει κάτι που μπορεί να μετρηθεί. Το δεύτερο ουσιαστικό με το παράδειγμα "ποτήρι" είναι ο περιορισμός που βάζει η μέγιστη τιμή. Δηλαδή το ποτήρι όπως και η μεταβλητή δέχονται όρια ως προς το περιεχόμενο. Το παράδειγμα δείχνει λοιπόν ότι μια τιμή γράφεται στη μεταβλητή εντός ορίων τιμών, και μπορούμε να αλλάξουμε περιεχόμενο, αλλάζοντας τιμή.
Δεν υπάρχει δηλαδή καμία ιδέα περί ανάμειξης υγρών, όπως δεν μπορούμε να προσθέσουμε μήλα με πορτοκάλια. Αυτό το τελευταίο το ξέρει ο μαθητής. Η κλεψειδρα για παράδειγμα είναι ένας τρόπος μέτρησης χρόνου που περιέχει δύο ποτήρια, και όταν είναι σε κάθετη διάταξη το ρευστό, η άμμος ρέει από το ένα στο άλλο. Δηλαδή αφαιρείται άμμος από το ένα ποτήρι και προστίθεται στο άλλο. Μπορεί ένας μαθητής να το βλέπει ανάποδα, ότι φεύγει αέρας από το κάτω ποτήρι και πάει στο πάνω δίνοντας χώρο στη άμμο για να κατέβει! Σημασία έχει ότι όταν θα ρωτήσει ο δασκαλος: Πότε τελειώνει αυτό που κάνει η κλεψειδρα, όλοι θα πουν όταν αδειάσει. Αυτό είναι το διακριτό γεγονός. Ομοίως στα ποτήρια μπορούμε να μετράμε τις ποσότητες με ζυγαριές. Το διακριτό βγαίνει με τη ζύγιση. Αν θέλω να πάρει η Β την ίδια τιμή με την Α θα βάλω όσο νερό έχει η Α με χρήση ζυγού. Του λέμε του παιδιού ότι ο υπολογιστής έχει τρόπο να βρίσκει το μεγαλύτερο, το ίσο, το μικρότερο με το ανάλογο του ζυγού.
Φθάνουμε σε ένα σημείο που μαθαίνουμε στο μαθητή ότι ενώ διαφορετικές ποσότητες νερού μπορούν να καταχωρηθούν στα ποτήρια, στους υπολογιστές οι τιμές μεταξύ τους ειναι πολλαπλάσια μιας ελάχιστης μικρής τιμής. Εδώ λέμε ότι το άδειο ποτήρι έχει τιμή μηδέν. Έτσι μια μεταβλητή δέχεται αριθμούς με το ισοδύναμο του πολλαπλάσιου μιας μικρής ποσότητας, της μονάδας. Έτσι στο μυαλό του μαθητή μπαίνει η ιδέα ότι ο αριθμός στον υπολογιστή δεν είναι αφηρημένη έννοια αλλά περιεχόμενο, που Υπάρχει. Ο κώδικας μπορεί να γράφει εντολές αλλά κατά την εκτέλεση φτιάχνονται τα νούμερα ως κάτι το υπαρκτό, που έχει θέση σε κάτι που καταχωρεί αριθμούς, όπως μπορεί να το κάνει ένα ποτήρι, Αυτό το κάτι είναι περιοχή της μνήμης, Τα γράμματα των μεταβλητών δεν είναι ετικέτες ποτηριών αλλά μνήμης συγκεκριμένου μεγέθους, όπως τα ποτήρια έχουν συγκεκριμένο μέγεθος.
Ας γίνει λοιπόν δοκιμή από εκπαιδευτικό και ας δούμε τα συμπεράσματα,
Ο προγραμματισμός στηρίζεται όχι μόνο στο πως λειτουργεί μια μεταβλητή αλλά και τι θέλουμε να σημαίνει η μεταβλητή στο πρόγραμμα.Η χρήση αντικειμένων αυτοματοποιεί μεν και βοηθάει να βάζουμε τις κατάλληλες μεθόδους πάνω σε αυτά αλλά δεν διδάσκει αυτό που μπορείς να κάνεις με απλές μεταβλητές.
Για παράδειγμα, διόρθωσα ένα πρόγραμμα σε arduino στο οποίο σε μια δομή με όνομα μεταβλητής Di υπήρχαν τα P0 έως P7, όπου γράφονταν τιμές 1 ή 0 από 8 ποδαράκια ενός περιφερειακού, ως τιμές εισόδου. Πιο κάτω στο κώδικα υπήρχε μια ReadValue(Di.P0), Δηλαδή πήρε κάτι που ήταν Τιμή Εισόδου σε πόρτα περιφερειακού και την έδωσε ως διεύθυνση στη συνάρτηση που διαβάζει τις εισόδους του arduino. Μετέτρεψε την τιμή εισόδου σε τιμή επιλογής πόρτας. Έφόσον οι πόρτες είναι 8, οι τιμές πρέπει να είναι από 0 έως 7 ; έτσι οι τιμές 0 και 1 που έδινε η λάθος χρήση μεταβλητής δεν έβγαζε λάθος στο κώδικα, αλλά δεν δούλευε ο κώδικας όπως θα έπρεπε. Πως το έβαλε ο προγραμματιστής; Το αντέγραψε από αλλού, χωρίς να καταλάβει τι κάνει, αλλά και χωρίς να γνωρίζει το τι σημαίνει η μεταβλητή στο κώδικα.
Πριν έγινε αναφορά ότι στη ρομποτική πάμε καλά αλλά στο προγραμματισμό τα παιδιά δυσκολεύονται. Αυτό συμβαίνει όταν η ρομποτική στηρίζεται σε παραδείγματα που απλά αντιγράφουμε κώδικα ενώ ποτέ δεν έγινε πραγματική εισαγωγή στο προγραμματισμό.