Το Στέκι των Πληροφορικών

Επαγγελματικό Λύκειο => Γενικά => Προγραμματισμός Υπολογιστών => Μήνυμα ξεκίνησε από: Ιωάννης Γκίνης στις 22 Ιαν 2011, 08:41:52 μμ

Τίτλος: Τί θα προτείνατε εσείς;
Αποστολή από: Ιωάννης Γκίνης στις 22 Ιαν 2011, 08:41:52 μμ
Ένα, από τα πολλά, θέματα που αντιμετωπίζω κατά τη διάρκεια της διδασκαλίας του συγκεκριμένου μαθήματος και όχι μόνο, είναι το εξής:
Ας υποθέσουμε ότι έχουμε να επιλύσουμε το παρακάτω πρόβλημα με χρήση, έστω, της γλώσσας Pascal.
Παράθεση
Η πιτσαρία MyPizza ακολουθεί την παρακάτω πολιτική στην χρέωση της πίτσας PopCorn που διανέμει:
ΤεμάχιαΤιμή Τεμαχίου (€)
1 - 38
4 - 77
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.
Ελπίζω να μην έκανα κάποιο λάθος στον κώδικα, όντας διαρκώς απρόσεχτος.

Η ερώτησή μου είναι η εξής: Εσείς τί θα επιλέγατε να διδάξετε σε ένα μαθητή της Γ' ΕΠΑΛ; Ποιά από τις τρεις υλοποιήσεις; Αν θέλετε αναφέρετε και το για ποιό λόγο.

Ευχαριστώ :)
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: petrosp13 στις 22 Ιαν 2011, 08:44:05 μμ
Την τρίτη χωρίς δεύτερη σκέψη...
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Ιωάννης Γκίνης στις 22 Ιαν 2011, 08:45:36 μμ
Δε θα πω τίποτα ακόμη  :-X
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Νίκος Αδαμόπουλος στις 22 Ιαν 2011, 09:29:08 μμ
Για να πας στην 3η, δεν θα έπρεπε να περάσεις από τις άλλες πρώτα;
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Ιωάννης Γκίνης στις 22 Ιαν 2011, 09:32:48 μμ
Σωστά ρωτάτε κ. Αδαμόπουλε αλλά δε μας λέτε τι ακριβώς υπονοείτε.
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Σούλας Βασίλης στις 22 Ιαν 2011, 11:11:05 μμ
Την 1η θα δίδασκα γιατί είναι πολύ πιο εύκολο να το κατανοήσουν. Με ανεξάρτητα if το καταλαβαίνουν καλύτερα.
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: stratosg στις 23 Ιαν 2011, 09:06:05 πμ
Θα τους έδειχνα και τις τρεις υλοποιήσεις και στο τέλος θα υπερθεμάτιζα υπέρ της τρίτης υλοποίησης εξηγώντας τα υπέρ της έναντι των άλλων δυο. Κάπως έτσι κινούμαι σε αντίστοιχες περιπτώσεις.
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Ιωάννης Γκίνης στις 23 Ιαν 2011, 01:18:26 μμ
Είναι αυτό ακριβώς που με ανησυχεί.

Απ' την άλλη είναι και αυτό: Για να μάθει κάποιος να οδηγεί αυτοκίνητο θα πρέπει πρώτα να τρακάρει?!?!?!
Αξίζει να μάθει να αποφεύγει το τρακάρισμα όμως θα μου πείτε και έχετε απόλυτο δίκιο, αλλά είναι αυτά που ήδη ανέφερα.

Η ταπεινή μου άποψη είναι πως τα παιδιά του ΕΠΑγγελματικού Λυκείου δεν είναι ανάγκη, πάντοτε, να μαθαίνουν τις λεπτομέρειες - σκοτεινά σημεία συνήθως - που κρύβονται πίσω από το κάθε τι. Αρκεί να μαθαίνουν το σωστό και αργότερα θα έχουν το χρόνο να εμβαθύνουν.
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: stratosg στις 23 Ιαν 2011, 02:54:18 μμ
Φίλε Γιάννη (αν μου επιτρέπεις), συμφωνώ απόλυτα μαζί σου, όμως κατέληξα σε αυτό που κάνω γιατί επί σειρά ετών με ρωτούσαν τα παιδιά γιατί όχι τον δεύτερο τρόπο, που παραδόξως τους ερχόταν στο μυαλό απ' ευθείας. Οπότε μπαίνοντας στη διαδικασία να τους το εξηγήσω τους έδειχνα και τον πρώτο τρόπο.

Πλέον έχω αποφασίσει ότι είναι καλύτερα να χάσω μια διδακτική ώρα και να τους το εξηγήσω εγώ παρά να μου πετάγεται η απορία τους κάθε φορά που θα λύνουμε μια αντίστοιχη άσκηση.
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: petrosp13 στις 23 Ιαν 2011, 03:09:45 μμ
Δεν καταλαβαίνω γιατί σε μια τόσο απλή άσκηση θα χρειαστούν πάνω από 3 λεπτά για να εξηγηθεί η ανωτερότητα του τρίτου τρόπου σαν τελική λύση
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: stratosg στις 23 Ιαν 2011, 05:26:20 μμ
Γιατί χρησιμοποιώ περισσότερα του ενός παραδείγματα και στη συνέχεια τους βάζω κι άσκηση.
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Ιωάννης Γκίνης στις 23 Ιαν 2011, 05:38:28 μμ
Δεν καταλαβαίνω γιατί σε μια τόσο απλή άσκηση θα χρειαστούν πάνω από 3 λεπτά για να εξηγηθεί η ανωτερότητα του τρίτου τρόπου σαν τελική λύση
Φίλε Πέτρο (αν μου επιτρέπεις), η κουβέντα δε γίνεται για την συγκεκριμένη άσκηση και μόνο. Έχει να κάνει με το ποιός είναι  ο σωστότερος και αποδοτικότερος τρόπος που πρέπει να διδάσκεται το συγκεκριμένο μάθημα στους μαθητές του ΕΠΑ.Λ., τουλάχιστον.

Μου δίνεται η ευκαιρία να αναφέρω απλά και κάτι ακόμη που με “τρώει” και θα πρέπει να το προσέξουμε, ειδικά εμείς οι καθηγητές των εργαστηρίων πληροφορικής.
Μιλάω για το style του προγραμματισμού, αυτό που το λέω “η ομορφιά του κώδικα”. Δεν θα πω τίποτα άλλο παρά μόνο το ότι με λυπεί το γεγονός ότι θα πρέπει διαρκώς να “πνίγω” τις αρχές μου για χάριν της ημιμάθειας κάποιων...
Είναι κάτι που αξίζει να γίνει κάποιος όχι απλά κακός, έτσι πιστεύω.
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Νίκος Αδαμόπουλος στις 23 Ιαν 2011, 09:29:53 μμ
Εγώ θα πρότεινα και τις τρεις! Σταδιακά από την 1η έως την 3η. Βέβαια δεν συμφωνώ πως 3 λεπτά αρκούν για να στηρίξουμε την ανωτερότητα και την κομψότητα της 3ης λύσης... όμως πιστεύω ότι ο διαθέσιμος χρόνος αρκεί... Υπάρχουν (αν δεν κάνω λάθος) 5 ώρες την εβδομάδα, υπάρχουν και τα άλλα μαθήματα ειδικότητας (ως λύση ανάγκης σε ειδικές περιπτώσεις!), η ύλη δεν περιλαμβάνει πίνακες...
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: _sleeper στις 31 Ιαν 2011, 07:07:09 μμ
Η πρώτη είναι "λογικά" εσφαλμένη, μιας και οι συνθήκες είναι εξαρτόμενες κι όχι ανεξάρτητες μεταξύ τους, άσχετο με το αν η λύση που δίνει η συγκεκριμένη πρόταση είναι σωστή.

Η δεύτερη είναι η πιο παιδαγωγικά ορθή, αλλά η τρίτη είναι η πληρέστερη.

Εγώ ξεκινάω με τη δεύτερη (τους αφήνω να το λύσουν μόνοι τους με την πρώτη, ώστε να τους διορθώσω, για το εσφαλμένο της σκέψης τους) και καταλήγω στην τρίτη με την συμπλήρωση του X>=1 στην πρώτη συνθήκη, ώστε να πληροί ταυτόχρονα και το "πεδίο ορισμού" >=1. Άλλωστε πρέπει να μάθουν να κάνουν fool proof προγράμματα..  :P
Τίτλος: Απ: Τί θα προτείνατε εσείς;
Αποστολή από: Καρκαμάνης Γεώργιος στις 01 Φεβ 2011, 12:24:54 μμ
Δεν θα εξετάσω τι είναι παιδαγωγικό σωστό ή όχι. Θα το δώ από την πλευρά των παιδιών το πως το καταλαβαίνουν καλύτερα:

Ξεκινάω από την πρώτη λύση που είναι πιο προσιτή στα παιδιά και την καταλαβαίνουν όλοι(οι περισσότεροι) Στην συνέχεια αναφέρω ότι από την πρώτη λυση προκύπτει και η τρίτη με κάποιες λογικές παραδοχές(ότι το πλήθος είναι θετικός αριθμός)