Ένα, από τα πολλά, θέματα που αντιμετωπίζω κατά τη διάρκεια της διδασκαλίας του συγκεκριμένου μαθήματος και όχι μόνο, είναι το εξής:
Ας υποθέσουμε ότι έχουμε να επιλύσουμε το παρακάτω πρόβλημα με χρήση, έστω, της γλώσσας Pascal.
ΠαράθεσηΗ πιτσαρία MyPizza ακολουθεί την παρακάτω πολιτική στην χρέωση της πίτσας PopCorn που διανέμει:
Τεμάχια | Τιμή Τεμαχίου (€) |
1 - 3 | 8 |
4 - 7 | 7 |
8 και άνω | 5,5 |
Να γραφεί πρόγραμμα σε γλώσσα Pascal το οποίο:
α) Να διαβάζει το πλήθος των τεμαχίων της παραγγελίας και
β) Να υπολογίζει και να εμφανίζει το πληρωτέο ποσό για τον πελάτη.
Παρατήρηση: Δε ζητείται έλεγχος τιμών εισόδου.
Στη συνέχεια παραθέτω τρεις διαφορετικές υλοποιήσεις της λύσης του προβλήματος:
Υλοποίηση (
1)
program pizza;
var x:integer;
pp:real;
begin
readln(x);
if ((x>=1) and (x<=3)) then
pp:=x*8;
if ((x>=4) and (x<=7)) then
pp:=x*7;
if (x>=8) then
pp:=x*5.5;
writeln('Πληρωτέο ποσό: ', pp:6:2);
end.
Υλοποίηση (
2)
program pizza;
var x:integer;
pp:real;
begin
readln(x);
if ((x>=1) and (x<=3)) then
pp:=x*8
else if ((x>=4) and (x<=7)) then
pp:=x*7
else if (x>=8) then
pp:=x*5.5;
writeln('Πληρωτέο ποσό: ', pp:6:2);
end.
Υλοποίηση (
3)
program Pizza;
var
X: Integer;
PP: Real;
begin
Readln(X);
if x <= 3 then
PP := X * 8
else if x <= 7 then
PP := X * 7
else
PP := X * 5.5;
Writeln('Πληρωτέο ποσό: ', PP:6:2);
end.
Ελπίζω να μην έκανα κάποιο λάθος στον κώδικα, όντας διαρκώς απρόσεχτος.
Η ερώτησή μου είναι η εξής:
Εσείς τί θα επιλέγατε να διδάξετε σε ένα μαθητή της Γ' ΕΠΑΛ; Ποιά από τις τρεις υλοποιήσεις; Αν θέλετε αναφέρετε και το για ποιό λόγο.Ευχαριστώ :)
Την τρίτη χωρίς δεύτερη σκέψη...
Δε θα πω τίποτα ακόμη :-X
Για να πας στην 3η, δεν θα έπρεπε να περάσεις από τις άλλες πρώτα;
Σωστά ρωτάτε κ. Αδαμόπουλε αλλά δε μας λέτε τι ακριβώς υπονοείτε.
Την 1η θα δίδασκα γιατί είναι πολύ πιο εύκολο να το κατανοήσουν. Με ανεξάρτητα if το καταλαβαίνουν καλύτερα.
Θα τους έδειχνα και τις τρεις υλοποιήσεις και στο τέλος θα υπερθεμάτιζα υπέρ της τρίτης υλοποίησης εξηγώντας τα υπέρ της έναντι των άλλων δυο. Κάπως έτσι κινούμαι σε αντίστοιχες περιπτώσεις.
Είναι αυτό ακριβώς που με ανησυχεί.
- Πού θα βρω το χρόνο να τα δείξω όλα αυτά κάθε φορά που έχω να κάνω με κάποιο αντίστοιχο θέμα;
- Ποιό σχολικό βιβλίο να χρησιμοποιήσουμε για να τα εμπεδώσουμε;
- Και τέλος, έρχεται ΤΟ Υπουργείο και μας λύνει όλες τις απορίες. Θυμηθείτε το 4ο θέμα των πανελλαδικών του 2010: http://users.sch.gr/jginis/?pg=sp#pascal28
Απ' την άλλη είναι και αυτό: Για να μάθει κάποιος να οδηγεί αυτοκίνητο θα πρέπει πρώτα να τρακάρει?!?!?!
Αξίζει να μάθει να αποφεύγει το τρακάρισμα όμως θα μου πείτε και έχετε απόλυτο δίκιο, αλλά είναι αυτά που ήδη ανέφερα.
Η ταπεινή μου άποψη είναι πως τα παιδιά του ΕΠΑγγελματικού Λυκείου δεν είναι ανάγκη, πάντοτε, να μαθαίνουν τις λεπτομέρειες - σκοτεινά σημεία συνήθως - που κρύβονται πίσω από το κάθε τι. Αρκεί να μαθαίνουν το σωστό και αργότερα θα έχουν το χρόνο να εμβαθύνουν.
Φίλε Γιάννη (αν μου επιτρέπεις), συμφωνώ απόλυτα μαζί σου, όμως κατέληξα σε αυτό που κάνω γιατί επί σειρά ετών με ρωτούσαν τα παιδιά γιατί όχι τον δεύτερο τρόπο, που παραδόξως τους ερχόταν στο μυαλό απ' ευθείας. Οπότε μπαίνοντας στη διαδικασία να τους το εξηγήσω τους έδειχνα και τον πρώτο τρόπο.
Πλέον έχω αποφασίσει ότι είναι καλύτερα να χάσω μια διδακτική ώρα και να τους το εξηγήσω εγώ παρά να μου πετάγεται η απορία τους κάθε φορά που θα λύνουμε μια αντίστοιχη άσκηση.
Δεν καταλαβαίνω γιατί σε μια τόσο απλή άσκηση θα χρειαστούν πάνω από 3 λεπτά για να εξηγηθεί η ανωτερότητα του τρίτου τρόπου σαν τελική λύση
Γιατί χρησιμοποιώ περισσότερα του ενός παραδείγματα και στη συνέχεια τους βάζω κι άσκηση.
Παράθεση από: petrosp13 στις 23 Ιαν 2011, 03:09:45 ΜΜ
Δεν καταλαβαίνω γιατί σε μια τόσο απλή άσκηση θα χρειαστούν πάνω από 3 λεπτά για να εξηγηθεί η ανωτερότητα του τρίτου τρόπου σαν τελική λύση
Φίλε Πέτρο (αν μου επιτρέπεις), η κουβέντα δε γίνεται για την συγκεκριμένη άσκηση και μόνο. Έχει να κάνει με το ποιός είναι ο σωστότερος και αποδοτικότερος τρόπος που πρέπει να διδάσκεται το συγκεκριμένο μάθημα στους μαθητές του ΕΠΑ.Λ., τουλάχιστον.
Μου δίνεται η ευκαιρία να αναφέρω απλά και κάτι ακόμη που με "τρώει" και θα πρέπει να το προσέξουμε, ειδικά εμείς οι καθηγητές των εργαστηρίων πληροφορικής.
Μιλάω για το style του προγραμματισμού, αυτό που το λέω "η ομορφιά του κώδικα". Δεν θα πω τίποτα άλλο παρά μόνο το ότι με λυπεί το γεγονός ότι θα πρέπει διαρκώς να "πνίγω" τις αρχές μου για χάριν της ημιμάθειας κάποιων...
Είναι κάτι που αξίζει να γίνει κάποιος όχι απλά κακός, έτσι πιστεύω.
Εγώ θα πρότεινα και τις τρεις! Σταδιακά από την 1η έως την 3η. Βέβαια δεν συμφωνώ πως 3 λεπτά αρκούν για να στηρίξουμε την ανωτερότητα και την κομψότητα της 3ης λύσης... όμως πιστεύω ότι ο διαθέσιμος χρόνος αρκεί... Υπάρχουν (αν δεν κάνω λάθος) 5 ώρες την εβδομάδα, υπάρχουν και τα άλλα μαθήματα ειδικότητας (ως λύση ανάγκης σε ειδικές περιπτώσεις!), η ύλη δεν περιλαμβάνει πίνακες...
Η πρώτη είναι "λογικά" εσφαλμένη, μιας και οι συνθήκες είναι εξαρτόμενες κι όχι ανεξάρτητες μεταξύ τους, άσχετο με το αν η λύση που δίνει η συγκεκριμένη πρόταση είναι σωστή.
Η δεύτερη είναι η πιο παιδαγωγικά ορθή, αλλά η τρίτη είναι η πληρέστερη.
Εγώ ξεκινάω με τη δεύτερη (τους αφήνω να το λύσουν μόνοι τους με την πρώτη, ώστε να τους διορθώσω, για το εσφαλμένο της σκέψης τους) και καταλήγω στην τρίτη με την συμπλήρωση του X>=1 στην πρώτη συνθήκη, ώστε να πληροί ταυτόχρονα και το "πεδίο ορισμού" >=1. Άλλωστε πρέπει να μάθουν να κάνουν fool proof προγράμματα.. :P
Δεν θα εξετάσω τι είναι παιδαγωγικό σωστό ή όχι. Θα το δώ από την πλευρά των παιδιών το πως το καταλαβαίνουν καλύτερα:
Ξεκινάω από την πρώτη λύση που είναι πιο προσιτή στα παιδιά και την καταλαβαίνουν όλοι(οι περισσότεροι) Στην συνέχεια αναφέρω ότι από την πρώτη λυση προκύπτει και η τρίτη με κάποιες λογικές παραδοχές(ότι το πλήθος είναι θετικός αριθμός)