Αλγόριθμοι Χαρίκλεια Τσαλαπάτα 29/2/2012
Αλγόριθμος Θεμελιώδης έννοια της πληροφορικής Είναι πεπερασμένη σειρά βημάτων για την επίλυση δεδομένου προβλήματος Αλγοριθμική σκέψη: η διαδικασία ανάπτυξης αλγορίθμων Ανθρώπινη δεξιότητα υψηλού επιπέδου Ζητούμενο για σύγχρονα εκπαιδευτικά συστήματα
Χαρακτηριστικά Καλά δομημένα βήματα Περιγράφει τα δεδομένα εισόδου Περιγράφει τα αποτελέσματα με ακρίβεια Είναι αποτελεσματικός
Θεμελιώδης ρόλος των αλγορίθμων Χωρίς αλγόριθμο δεν υπάρχει πρόγραμμα Είναι ανεξάρτητος από γλώσσες προγραμματισμού Διδακτική αλγορίθμων Ανάλυση σύνθετης εργασίες σε απλούστερες Αναγνώριση επαναλαμβανόμενων εργασιών Εκτίμηση της διάρκειας μιας εργασίας Επαλήθευση της επιθυμητής λειτουργίας (αν δίνει το επιθυμητό αποτέλεσμα)
Πρόγραμμα Σειρά εντολών σε γλώσσα προγραμματισμού Εκτέλεση συγκεκριμένων εντολών για να επιτευχθεί μια διαδικασία
Τρόποι αναπαράστασης αλγορίθμων Φευτοκώδικας Αναπαράσταση σε συμβατική γλώσσα Διάγραμμα ροής Πλεονεκτήματα: σχηματική οπτικοποίηση του αλγορίθμου Μειονέκτημα: δεν ακολουθεί τη διατύπωση δομημένων προγραμμάτων
Δομημένος προγραμματισμός Οργανώνουμε τις εντολές με τρόπο που να ελαχιστοποιεί την πιθανότητα λάθους και παρανοήσεων Διαδικαστική προσέγγιση προγραμματισμού (Dijkstra) Καταργεί την εντολή GOTO και τα άλματα μέσα στον κώδικα Δομές! Διευκολύνεται ο έλεγχος του προγράμματος και ο εντοπισμός λαθών
Βασικές δομές δομημένου προγραμματισμού Ακολουθία ή διαδοχή Επιλογή Επανάληψη Αναδρομή
Δυσκολίες εκμάθησης Χαρίκλεια Τσαλαπάτα 29/2/2012
Λάθη μαθητών Σε όλες τις επιστήμες (θετικές και ανθρωπιστικές), κατά την επίλυση προβλημάτων παρουσιάζονται ορισμένα λάθη τα οποία είναι σχεδόν προβλέψιμα Συστηματικά Διαδεδομένα «Αντιστέκονται» σε κάθε προσπάθεια εξάλειψης τους.
Λάθη μαθητών Ορισμένες από τις αντιλήψεις των μαθητών είναι βαθειά ριζωμένες και μπορούν να αποτελέσουν πραγματικά εμπόδια στην (γνωστική) εξέλιξη των ατόμων.
Παραδείγματα από τα μαθηματικά Υπάρχουν αριθμοί ανάμεσα στο 3.456 και στο 3.457; Υπάρχουν αριθμοί ανάμεσα στο 3,999 (περιοδικός).. και το 4; Σε ένα πλοίο υπάρχουν 26 πρόβατα και 10 κατσίκες. Ο καπετάνιος αγοράζει ένα ζώο από τη μέρα που γεννήθηκε. Πόσων ετών είναι ο καπετάνιος;
Παραδείγματα από τη φυσική Τα βαρύτερα σώματα πέφτουν πιο γρήγορα από τα πιο ελαφριά Αν αφήσω μια σιδερένια μπάλα από το κατάρτι ενός πλοίου που ταξιδεύει, η μπάλα θα πέσει στη βάση του καταρτιού;
Παραδείγματα από τον προγραμματισμό EMVADON:=VASIS * YPSOS; readln (VASIS); Readln (YPSOS); Writeln EMVADON; Αν VASIS=8 και ΥPSOS=4, τότε ποιο είναι το αποτέλεσμα της εκτέλεσης του;
Δυσκολίες εκμάθησης προγραμματισμού Χαρίκλεια Τσαλαπάτα 29/2/2012
Η έννοια της μεταβλητής (1) Ονόματα σε θέσης μνήμης Χρήση κατάλληλου ονόματος βοηθά στην κατανόηση Συστατικά (Horowitz)
Η έννοια της μεταβλητής (2) X:= X+ 1; Αριστερά τρέχουσα τιμή, δεξιά αναφορά Η κατανόηση της έννοιας της μεταβλητής είναι σημαντική στον προγραμματισμό (Dijsktra) Η αποθήκευση δεδομένων με μορφή μεταβλητής είναι δύσκολο να κατανοηθεί (Duforer) Ακόμη πιο δύσκολο γιατί η αποθήκευση περιέχει την έννοια της ανάθεσης (εκχώρησης) τιμής και της εμφάνισης
Διδακτικά προβλήματα σε σχέση με μεταβλητές Ανάθεση τιμής Τύπος (δυνατές τιμές, δυνατές πράξεις, κλπ) Λάθος κατηγορία μεταβλητής Αρχικές τιμές Συντακτικό και συμβάσεις
Μεταβλητές
Μαθησιακές δυσκολίες στον προγραμματισμό (1) Τι είναι προγραμματισμός (orientation): Οι μαθητές δεν κατανοούν τα οφέλη που αποκομίζουν από την απόκτηση δεξιοτήτων στην επίλυση προβλημάτων μέσω του υπολογιστή Δηλαδή: Το πως μπορούν να αξιοποιήσουν τις δεξιότητες που αποκτούν Τα είδη προβλημάτων που μπορούν να επιλύονται μέσω του υπολογιστή.
Μαθησιακές δυσκολίες στον προγραμματισμό (2) Λειτουργία του υπολογιστή: Δυσκολίες στην κατανόηση του τρόπου λειτουργίας του υπολογιστή. Για παράδειγμα: Δε γνωρίζουν πως ο υπολογιστής διαχειρίζεται τις μεταβλητές Δε μπορούν να διακρίνουν αν τα μηνύματα που εμφανίζονται στην οθόνη αποτελούν αποτέλεσμα της εκτέλεσης ενός προγράμματος
Μαθησιακές δυσκολίες στον προγραμματισμό (3) Συντακτικό και σημασιολογία της γλώσσας προγραμματισμού: Λάθη που αφορούν στο συντακτικό της γλώσσας προγραμματισμού που χρησιμοποιούν. Δυσκολία στην κατανόηση της σημασιολογίας των προγραμματιστικών δομών Οι μαθητές δεν είναι σε θέση να εξηγούν τη λειτουργία των εντολών και τον τρόπο με τον οποίο ο υπολογιστής τις εκτελεί
Μαθησιακές δυσκολίες στον προγραμματισμό (4) Σχέδια επίλυσης Δυσκολία στην εφαρμογή μιας στρατηγικής για επίλυση Προσπαθούν με μη οργανωμένους τρόπους να προσεγγίσουν ένα πρόβλημα
Μαθησιακές δυσκολίες στον προγραμματισμό (5) Στη διαδικασία ανάπτυξης ενός προγράμματος Τη δοκιμή Την αποσφαλμάτωση Τις διορθώσεις
Μαθησιακές δυσκολίες στον προγραμματισμό (6) Οφείλονται σε: Λάθος νοητικό μοντέλο για το πώς λειτουργεί ο υπολογιστής Εσφαλμένες αντιλήψεις σχετικά με τις δυνατότητες του υπολογιστή Θεωρούν ότι οι εντολές εκτελούνται με τον τρόπο που τις έχουν στο μυαλό τους και όχι με τον πραγματικό τρόπο εκτέλεσης του υπολογιστή
Μεταβλητές
Ανάθεση τιμής Συντακτικό και συμβάσεις Pascal: Sum:=Sum + N; Πιο κατανοητό: Provisory := Sum + N; Sum:=Provisory;
Εκχώρηση σταθερής τιμής Καλό σύμβολο για ψευδο-γλώσσα είναι το Μεταβλητή Έκφραση Εκχώρηση σταθερής τιμής a:= 15; list:= word ; test:=true; Πρέπει να εξηγηθεί το λάθος παρακάτω: 15:=x;
Εκχώρηση τιμής μετά από υπολογισμό Υπολογισμοί a := 15+4; y := x+4;
Αντικατάσταση x:= y; Πρέπει να μελετάται συνέχεια (ανάγκη βοηθητικής μεταβλητής) a:=10; b:=20; s:=a; a:=b; b:=s;
Συσσώρευση (accumulation) x:= x+1; sum:=sum+n; expn:=expn*n; Συχνό λάθος που μεταφέρεται από τα μαθηματικά είναι η σύγχυση της εκχώρησης με την ισότητα x=y αντί για x:=y; Άλλο λάθος που μεταφέρεται από τα μαθηματικά x y και y x δεν είναι ισοδύναμα
Παράδειγμα διδακτικής προσέγγισης Χρησιμοποιούμε τη γραφική παράσταση / εικόνα ενός κουτιού «Τοποθετούμε τιμή» μέσα στο κουτί
Δομές ελέγχου
Δομές ελέγχου (1) Απόφαση μεταξύ 2 διαφορετικών καταστάσεων Συνθήκες Αληθής ή λάθος κατάσταση Απλή, διπλή, πολλαπλή επιλογή
Δομές ελέγχου (2) ΑΝ συνθήκη ΤΟΤΕ επεξεργασία 1 ΑΝ συνθήκη ΤΟΤΕ επεξεργασία 1 ΑΛΛΙΩΣ επεξεργασία 2 ΑΝ συνθήκη 1 ΤΟΤΕ επεξεργασία 1 ΑΝ συνθήκη 2 ΤΟΤΕ επεξεργασία 2.. ΑΛΛΙΩΣ επεξεργασία Ν
Μαθησιακά προβλήματα σε σχέση με δομές Λογικό περιεχόμενο των συνθηκών Συμβολικές αναπαραστάσεις Συντακτικό (με βάση τη χρησιμοποιούμενη γλώσσα προγραμματισμού) Αλληλεπιδράσεις με τις αναπαραστάσεις ακολουθιακής μορφής εκτέλεσης Βοηθούν γνώσεις Μαθηματικών Λογικής
Συνηθισμένα λάθη Αν η συνθήκη είναι ψευδής το πρόγραμμα σταματά Αν η συνθήκη είναι ψευδής πηγαίνουμε στην αρχή του προγράμματος
Δυσκολίες Η αναπαράσταση που διαθέτουν οι μαθητές για τη σειριακή εκτέλεση του προγράμματος Σειριακά υπάρχει αλληλουχία εντολών Οι δομές ελέγχου διακόπτουν τη γραμμική αλληλουχία Ακολουθείται μόνο μία από τις δυνατές δομές
Η εντολή GOTO
Δυσκολίες Το λογικό περιεχόμενο και ο συνδυασμός περιπτώσεων ((x>10) AND (x<20)) OR (x>30)) Οι συμβολικές αναπαραστάσεις (x<10) OR (x=10) ή (x<=10) Η διαφορά ανάμεσα στη σύνταξη της καθημερινής ομιλίας και στη σύνταξη προγραμμάτων Π.χ.
Παραδείγματα προβλημάτων Π.χ. στην καθομιλουμένη «αν όλοι οι στρατιώτες σκοτωθούν το παιχνίδι τελειώνει» στον υπολογιστή «αν ο αριθμός των σκοτωμένων είναι ίσος με το συνολικό αριθμό των στρατιωτών τότε το παιχνίδι τελειώνει»
Παράδειγμα διδακτικής προσέγγισης (1) Program megalyteros1; Var X, Y, Meg: Real; BeginWriteln( Δώσε δύο αριθμούς: ); Readln(X, Y); Meg:=Y; If X>Y then Meg:=X; Writeln( Μεγαλύτερος είναι ο αριθμός:, Meg) End.
Παράδειγμα διδακτικής προσέγγισης (2) Program megalyteros2; Var X, Y, Meg: Real; BeginWriteln( Δώσε δύο αριθμούς: ); Readln(X, Y); If X<=Y then Meg:=Y; If X>Y then Meg:=X; Writeln( Μεγαλύτερος είναι ο αριθμός:, Meg) End.
Παράδειγμα διδακτικής προσέγγισης (3) Program megalyteros3; Var X, Y, Meg: Real; BeginWriteln( Δώσε δύο αριθμούς: ); Readln(X, Y); If X>Y then Meg:=X else Meg:=Y; Writeln( Μεγαλύτερος είναι ο αριθμός:, Meg) End.
Επανάληψη
Δομή ΟΣΟ συνθήκη ΕΠΑΝΕΛΑΒΕ Εντολή 1 Εντολή 2 Εντολή Ν ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ Εντολή 1 Εντολή 2 Εντολή Ν ΜΕΧΤΙΣ_ΟΤΟΥ συνθήκη
Δυσκολίες Διαφορετικές δομές (προ και μετα-ελεγχόμενες) και η αντίθετη πορεία συλλογισμού: REPEAT UNTIL WHILE DO Ειδική περίπτωση το FOR STEP UNTIL Ο σωστός ορισμός της συνθήκης ελέγχου ανάλογα με τη δομή Το WHILE DO μπορεί να μην εκτελεστεί ποτέ Το REPEAT UNTIL εκτελείται τουλάχιστον μια φορά
Παράδειγμα διδακτικής προσέγγισης Άθροισμα των 100 πρώτων ακεραίων BASIC PASCAL Sum=0; FOR i=1 to 100 STEP 1 Sum = sum + I NEXT I PRINT SUM begin Sum :=0; For i:=1 to 100 DO sum := sum + 1; Writeln (sum) end
Συνέχεια παραδείγματος PASCAL Begin sum:=0; i:=0; Repeat i:=i+1; sum:=sum+i Until I=100; Writeln (sum) end PASCAL Begin sum:=0; i:=0; While i<=100 do sum:=sum+i; i:=i+1 end; Writeln (sum) end
Διαδικασίες
Διαδικασίες Από τους πρώτους τύπους αφαίρεσης (procedural abstraction) Αντιστοίχιση συνόλου εισόδων σε σύνολο εξόδων Η περιγραφή δεν αποκαλύπτει τον τρόπο με τον οποίο υπολογίζονται οι τιμές των εξόδων Επιτρέπει να εστιάσουμε στην κλήση και όχι στον τρόπο που γίνονται οι υπολογισμοί (Horowitz) Βελτιώνουν τη λογική και αισθητική του προγράμματος Κατάτμηση σε μικρότερες ενότητες
Παράδειγμα διαδικασίας σε LOGO Τρίγωνο πλευράς σταθερού μήκους: TO triangle REPEAT 3 [FD 100 RT 120] END Τρίγωνο πλευράς μεταβλητού μήκους TO TRIAGLE : length REPEAT 3 [FD : length RT 120] END
Αναδρομικότητα
Η έννοια της αναδρομής Εμφανίζεται στην καθημερινή ζωή (έργα Escher, Bach) Εμφανίζεται στο φυσικό περιβάλλον
Παραδείγματα αναδρομής Escher
Παραδείγματα αναδρομής Fractals
Αναδρομικές διαδικασίες στον προγραμματισμό Οι αναδρομικές διαδικασίες είναι πολύ σημαντικές στον προγραμματισμό Καλούν τον εαυτό τους Βοηθούν στην επίλυση περίπλοκων προβλημάτων Δεν περιέχουν εντολή εκχώρησης και δεν τροποποιούν μεταβλητές
Στα μαθηματικά είναι η έννοια της επαγωγής Έστω S σύνολο από πραγματικούς αριθμούς με τις εξής 2 ιδιότητες Α) ο αριθμός 1 ανήκει στο S και Β) αν ο ακέραιος k ανήκει στο S, ο ακέραιος k+1 ανήκει στο S Τότε κάθε θετικός ανήκει στο S.
Υποστήριξη αναδρομής Όλες οι γλώσσες προγραμματισμού την υποστηρίζουν Μπορεί να αντικατασταθεί με δομή επανάληψης Όμως είναι πιο περιληπτική και κομψή Η λανθασμένη εκτέλεση καταναλώνει τους πόρους του συστήματος και μπορεί να οδηγήσει γρήγορα σε απότομο τερματισμό Αλλάζουν το προγραμματιστικό μοντέλο από διαδικαστικό σε αναδρομικό
Διδακτικά προβλήματα Υπάρχουν σημαντικά! Πρέπει να προβλεφθεί ο τερματισμός, που και πως Αποφεύγεται η κυκλικότητα εφόσον τα δεδομένα γίνονται σταδιακά πιο απλά Στο τέλος τα δεδομένα είναι τόσο απλά που η διαδικασία δε χρειάζεται να καλέσει τον εαυτό της (Goldschlager & Lister) Λανθασμένη αντίληψη Είτε σαν μοναδικό αντικείμενο (αντί για σειρά από στιγμιότυπα) Είτε κάλεσμα διαδοχικών αντιγράφων
Δόμηση Παραμετροποίηση του προβλήματος Αναγνώριση τετριμμένης περίπτωσης (τερματισμού) Αποσύνθεση γενικής περίπτωσης που οδηγεί σε απλούστερες περιπτώσεις (μείωση)
Παράδειγμα διδακτικής παρέμβασης (1) Για να σχεδιάσεις ένα μοτίβο Σχεδίασε το βασικό σχέδιο Σχεδίασε ένα μικρότερο μοτίβο
Παράδειγμα διδακτικής παρέμβασης (2) TO antistrofimetrisi :n if :n = 0 [stop] print :n antistrofimetrisi :n-1 end
Παράδειγμα διδακτικής παρέμβασης (3) Function FIB (N: INTEGER) : INTEGER; BEGIN IF (N<2) THEN FIB:=1 ELSE FIB := FIB (N-1) + FIB(N-2) END;
Πηγές Παλαιγεωργίου Κόμης