Δυο απίστευτες απαντήσεις που είδα σήμερα. Να σημειώσω ότι τα γραπτά αυτά ήταν πολύ κοντά στο 100.
Φυσικά η δεύτερη απάντηση είναι πολύ πιο .... προκλητική
Λύση 1Αν x>1 Τότε
Για y από x μέχρι 1 με βήμα -2
y <-- y - 2
Εμφάνισε y
y <-- y + 2
Τέλος_Επανάληψης
Τέλος_Αν
Λύση 2κ <-- 1
Αν x>1 Τότε
y <-- x
Για i από 1 μέχρι κ
y <-- y - 2
Αν y > 0 Τότε
κ <-- κ + 1
Τέλος_Αν
Εμφάνισε y
Τέλος_Επανάληψης
Τέλος_Αν
Είναι φανερό ότι το πρόβλημα εδώ είναι κατά πόσο κόβουμε μονάδες από τους μαθητές αν πειράξουν τον μετρητή της Για ή κάποια από τις αρχικές/τελικές τιμές.
Αν υποθέσουμε ότι είναι λάθος τότε τι λάθος είναι? Σίγουρα δεν πρόκειται για κάποιο λάθος σε επίπεδου αλγορίθμου, αφού δεν παραβιάζει κάποιο από τα γνωστά κριτήρια. Άρα λογικά θα έπρεπε να το δούμε σαν συντακτικό λάθος. Έχουμε όμως συντακτικά λάθη στην ψευδογλώσσα?
Γενικότερα νομίζω ότι οι μετατροπές μεταξύ δομών επανάληψης ίσως είναι καλές ασκήσεις ώστε οι μαθητές να κατανοήσουν τον τρόπο λειτουργίας των δομών αλλά δε νομίζω ότι πρέπει να εξετάζονται όπως λέει και ο ether.
Διότι τι ακριβώς εξετάζουμε? Αν ο μαθητής έχει μάθει τις συγκεκριμένες δομές που εμείς έχουμε δημιουργήσει? Αυτό δεν λέει κάτι για τον τρόπο που σκέφτεται. Απλά τον δοκιμάζουμε να δούμε αν έχει μάθει να συμπεριφέρεται στο καλούπι που έχουμε φτιάξει για αυτό το μάθημα.
Τα παραπάνω παραδείγματα νομίζω ότι δείχνουν πως οι μαθητές που τα σκέφτηκαν έχουν πλήρη κατανόηση του τρόπου με τον οποίο λειτουργεί η επανάληψη.
Τώρα γιατί κατά τη γνώμη μου δεν μπορούμε να δεχτούμε ότι η αλλαγή του μετρητή της Για είναι λάθος.
Ποια διαφορά έχουν τα δυο παρακάτω παραδείγματα? Δεν είναι απολύτως ισοδύναμα?
Παράδειγμα 1: Ο καλός τρόποςκ <-- 1
Όσο κ <= 100 Επανάλαβε
Διάβασε α
Αν α < 0 Τότε κ <-- 101
κ <-- κ + 1
Τέλος Επανάληψης
Παράδειγμα 1: Ο κακός τρόποςΓια κ από 1 μέχρι 100
Διάβασε α
Αν α < 0 Τότε κ <-- 101
Τέλος Επανάληψης
Όταν λοιπόν ένας μαθητής ρωτήσει : "Αφού κύριε τα παραπάνω είναι απολύτως ισοδύναμα, γιατί το ένα να είναι σωστό και το άλλο λάθος", τι απαντάμε?