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

Γενικό Λύκειο => Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον => Δομή επιλογής => Μήνυμα ξεκίνησε από: Νίκος Αδαμόπουλος στις 03 Σεπ 2009, 01:14:23 μμ

Τίτλος: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Νίκος Αδαμόπουλος στις 03 Σεπ 2009, 01:14:23 μμ
Έστω ότι πρέπει να διαβαστεί ο αριθμός των αυγών και μετά... ότι πρέπει να ξεχωρίσουμε κάποιες περιπτώσεις βάσει π.χ. του πίνακα:

α) >=0 και <=10 ...
β) >=11 και <=20 ...
γ) >=21 και <=30 ...
δ) >=31

....
Η άσκηση δε ζητάει έλεγχο εγκυρότητας των δεδομένων εισόδου. Αρκετά συνηθισμένες είναι οι παρακάτω 2 λύσεις:

Α ΛΥΣΗ

Διάβασε α
Αν α<=10 τότε
  ...
αλλιώς_αν α<=20 τότε
  ...
αλλιώς_αν α<=30 τότε
  ...
αλλιώς
  ...
Τέλος_αν

Β ΛΥΣΗ

Διάβασε α
Αν α>=0 και α<=10 τότε
  ...
αλλιώς_αν α<=20 τότε
  ...
αλλιώς_αν α<=30 τότε
  ...
αλλιώς
  ...
Τέλος_αν


Ποια είναι η σωστή;
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: ntzios kostas στις 03 Σεπ 2009, 01:34:46 μμ
Αφού δεν έχουμε περίπτωση αρνητικού αριθμού αυγών και τις δύο απαντήσεις τις θεωρώ σωστές.
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: potato στις 03 Σεπ 2009, 01:51:40 μμ
Σωστή είναι η Β.
Τώρα αν θα πάρουν και οι 2 όλους τους βαθμούς ..... νομίζω ότι αν ανοιχτεί κουβέντα με επιχειρήματα θα φτάσουμε για άλλη μια φορά στα αφηρημένα θεμέλια του μαθήματος και κατεπέκταση αδυνατεί να δώσει σαφείς απαντήσεις σε ορισμένα θέματα.


Edit: Ωπ, έχει δίκιο ο κ.Παναγιώτης από κάτω.. είχε διπλή συνθήκη στο πρώτο και νόμιζα ότι είχε βάλει σε όλα :p
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Παναγιώτης Τσιωτάκης στις 03 Σεπ 2009, 02:31:30 μμ
Η β είναι το ίδιο λάθος με την α.

Αν δοθεί αρνητικός αριθμός τότε θα μπει στη δεύτερη περίπτωση.

Θεωρώ όμως πως αφού ΔΕΝ απαιτείται έλεγχοςείναι ΣΩΣΤΕΣ και οι δυο
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Laertis στις 03 Σεπ 2009, 04:39:36 μμ
Αποκλείοντας αρνητικούς αριθμούς είναι σωστές και οι δύο, διαφορετικά είναι λάθος και οι δύο
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Νίκος Αδαμόπουλος στις 03 Σεπ 2009, 04:46:40 μμ
Η β είναι το ίδιο λάθος με την α.

Αν δοθεί αρνητικός αριθμός τότε θα μπει στη δεύτερη περίπτωση.

Άρα στη 2η λύση η συνθήκη α>=0 είναι περιττή, αφού έτσι κι αλλιώς (είτε με θετικούς είτε με αρνητικούς αριθμούς) δεν εξυπηρετεί σε τίποτα... Επομένως εγώ θεωρώ την 1η λύση πιο σωστή!
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Σπύρος Δουκάκης στις 03 Σεπ 2009, 11:44:33 μμ
Υποστηρίζω την άποψη ότι το α >= 0 είναι περιττή συνθήκη. Εδώ απαιτείται το γνωστό ξεκαθάρισμα. Αφού δεν ζητείται έλεγχος εγκυρότητας, το πλήθος των αυγών (αφού μιλάμε για αυγά) είναι σίγουρα μη αρνητικό.

Μαθητής: "...και αν κύριε δοθεί αρνητικό πλήθος;"
Καθηγητης "...θα το μάθεις στο επόμενο κεφάλαιο! Αμάν με τις ερωτήσεις σου..." Παιδαγωγικά ορθό έτσι;

ΣΔ
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: ntzios kostas στις 04 Σεπ 2009, 09:27:51 πμ
Ναι είναι περιττή αλλά όχι λάθος.

Οι απαντήσεις βέβαια θα μπορούσαν να περιέχουν ένα μήνυμα λάθους σε περίπτωση αρνητικής εισόδου, ασχέτως αν δεν απαιτείται έλεγχος εγκυρότητας.
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: gpapargi στις 04 Σεπ 2009, 10:57:35 πμ
Δεν έχω καταλάβει αν το θέμα είναι το «αν θεωρούμε λάθος τις περιττές συνθήκες» ή το «αν η β λύση έχει περιττή συνθήκη».

Στο ερώτημα «αν θεωρούμε λάθος τις περιττές συνθήκες» έχω γράψει παλαιότερα αυτά:
http://alkisg.mysch.gr/steki/index.php?topic=674.0

Εδώ δεν μπορούμε να κόψουμε βαθμούς στην εύρεση μεγίστου με πλήρη ταξινόμηση (που αν σε μου ξέφυγε κάτι ελέγχει (ν^2-3ν+2)/2 παραπάνω συνθήκες). Θα ασχοληθούμε με τη 1 μόνο παραπάνω συνθήκη;

Στο αν η β λύση έχει περιττή συνθήκη … δεν ξέρω τι σημαίνει περιττή.
ΟΚ… έχει μια παραπάνω από τη λύση α.
Και η λύση α έχει πολλές παραπάνω συνθήκες σε σχέση με το να πετάξεις τα άκρα των διαστημάτων σε πίνακα και να κάνεις δυαδική αναζήτηση ή διάφορα άλλα κόλπα με div/mod που μπορώ να σκεφτώ ανάλογα με το παράδειγμα.

Είμαι ο πρώτος που θέλει να μπει στο παιχνίδι η πολυπλοκότητα έτσι ώστε να έχουμε κοινές αρχές με το πανεπιστήμιο και η γνώση να έχει συνέχεια. Να και το σχετικό post:

http://alkisg.mysch.gr/steki/index.php?topic=988.0

Αλλά η μια συνθήκη παραπάνω για μένα δεν υπάρχει σα θέμα. Διυλίζουμε τον κώνωπα και καταπίνουμε την κάμηλο.
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Νίκος Αδαμόπουλος στις 05 Σεπ 2009, 10:36:11 πμ
Προφανώς δεν είναι το θέμα αν μπήκε μια περιττή συνθήκη αλλά αν ο μαθητής καταλαβαίνει γιατί κάνει αυτό που κάνει. Ένας μαθητής βάζοντας το α>=0 μπορεί να πιστεύει ότι έχει εξασφαλιστεί από τους αρνητικούς αριθμούς, πράγμα που όμως δεν συμβαίνει... Το ότι τελικά δεν θα προκύψουν αρνητικοί αριθμοί, και άρα κατά την εκτέλεση ο μαθητής δεν πρόκειται να δει την συνθήκη αυτή να αλλάζει τη ροή του αλγορίθμου (γίνεται αλλά με λάθος τρόπο βέβαια αφού θα τον έριχνε στη 2η περίπτωση: >=11 και <=20) δε σημαίνει ότι δεν υπάρχει και πρόβλημα.

Δηλαδή, εγώ λέω ότι:
α) η 1η λύση είναι σωστή αφού συνειδητά βασίζεται στην (σιωπηλή) υπόθεση ότι δεν θα προκύψουν αρνητικοί αριθμοί, άρα η λύση είναι και τίμια!!!
β) η 2η λύση είναι σωστή μεν, αλλά κατά τύχη, αφού πράγματι τελικά δεν θα προκύψουν αρνητικοί αριθμοί! Όμως ο δημιουργός της είναι φως φανάρι ότι δε βασίζεται στην υπόθεση αυτή. Μάλλον θέλει να μας δείξει ότι εξετάζει και την πιθανότητα των αρνητικών αριθμών, μόνο που ατύχησε!!! Ή ακόμα χειρότερα, μπορεί κάποιος να του είπε ότι σε τέτοια πινακάκια, από την 2η περίπτωση και μετά δεν θα βάζει τον 1ο έλεγχο, και στην τελευταία περίπτωση θα βάζει σκέτο το αλλιώς, αφού ο βαθμολογητής μπορεί και να κόψει, και μπορεί να μην έχει καταλάβει τίποτα!!

Το ότι δυο οδηγοί που έχουν πράσινο φανάρι σε μια διασταύρωση, και ο πρώτος απλά περνάει ψιλοπροσέχοντας μήπως του πεταχτεί κανένας από το κόκκινο, ενώ ο δεύτερος σταματάει ελέγχει κανονικά σαν να είχε στοπ και μετά ξεκινάει ξανά, δε σημαίνει ότι και οι δύο είναι σωστοί οδηγοί αφού τελικά δεν έγινε κανένα τρακάρισμα!
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Νίκος Αδαμόπουλος στις 07 Σεπ 2009, 02:39:59 μμ
Δεν έχω καταλάβει αν το θέμα είναι το «αν θεωρούμε λάθος τις περιττές συνθήκες» ή το «αν η β λύση έχει περιττή συνθήκη».

Προφανώς δεν είναι το θέμα αν μπήκε μια περιττή συνθήκη αλλά αν ο μαθητής καταλαβαίνει γιατί κάνει αυτό που κάνει.

Και για να είμαι ακόμα πιο σαφής, δεν θεωρώ τη συνθήκη α>=0 περιττή (οπότε λίγο είναι το κακό) αλλά λανθασμένη! Λαμβάνει υπόψη την πιθανότητα ύπαρξης αρνητικών αριθμών για να οδηγήσει τη ροή του αλγορίθμου σε λάθος σημείο! Για αυτό και έβαλα τον συγκεκριμένο τίτλο σε αυτό το θέμα...
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: gpapargi στις 07 Σεπ 2009, 03:26:07 μμ
Ναι αλλά υπάρχει  η πιθανότητα ο μαθητής να έχει ξεκινήσει με την τεχνική των διπλών συνθηκών και στη συνέχεια να το γύρισει στην τεχνική των μονών συνθηκών. Μου έχει τύχει μαθητής να αλλάξει τεχνική στα μισά και έτσι ένα μέρος της άσκησης να την αντιμετωπίζει με ένα τρόπο και το υπόλοιπο με άλλο τρόπο. Τον ρώτησα γιατί αλλάξε τρόπο αντιμετώπισης στα μισά και μου είπε ότι βρήκε κάτι καλύτερο στη μέση και μετά βαριόταν να το αλλάξει και να το κάνει όλο με τον ίδιο τρόπο. Αφού δεν είναι και λάθος…

Το θέμα που θίγεις το έχω εντοπίσει και εγώ. Πρέπει όμως να το εξετάσεις με τρόπο που να μην μπορεί ο μαθητής να πει κάτι. Πέρυσι είχα προτείνει στην ομάδα διαγωνισμάτων το εξής θέμα (το οποίο δεν επιλέχτηκε και μένει στο pool):

«Ο παρακάτω αλγόριθμος φτιάχτηκε για να ελέγχει και να εκτυπώνει αν ένας θετικός ακέραιες αριθμός είναι μονοψήφιος, διψήφιος ή τριψήφιος. Στην περίπτωση που δοθεί αριθμός αρνητικός ή με περισσότερα από 3 ψηφία ο αλγόριθμος πρέπει να εμφανίζει το μήνυμα «Λάθος δεδομένα».

Αλγόριθμος ψηφία
Διάβασε x
Αν x>=0 και x=< 10 τότε
  Εμφάνισε «Μονοψήφιος»
Αλλιώς_αν x<100 τότε
  Εμφάνισε «Διψήφιος»
Αλλιώς_αν x<1000 τότε
  Εμφάνισε «Τριψήφιος»
Αλλιώς
  Εμφάνισε «Λάθος δεδομένα»
Τέλος_αν
Τέλος ψηφία

Ο παραπάνω αλγόριθμος έχει λάθος. Δώστε ένα παράδειγμα εισόδου που θα δώσει καταδείξει το λάθος που υπάρχει στον αλγόριθμο. Στη συνέχεια γράψτε το σωστό αλγόριθμο»

Ζητάει από το μαθητή να εντοπίσει αυτό ακριβώς το σενάριο λάθους. Πρόσεξε ότι δίνω και την εκφώνηση όπου αναφέρεται ρητά ότι απαιτείται χειρισμός λανθασμένης εισόδου. Διαφορετικά, όπως λένε και τα παιδιά, δεν μπορείς να το θεωρήσεις λάθος.
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Νίκος Αδαμόπουλος στις 07 Σεπ 2009, 03:54:11 μμ
Ωραίο πάντως το θέμα σου!  :)
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Σπύρος Δουκάκης στις 07 Σεπ 2009, 11:12:39 μμ
Δείτε τρία παραδείγματα ασκήσεων:

* Ένα κατάστημα διαθέτει διαφορετικά προϊόντα κωδικοποιημένα με ακέραιους αριθμούς από το 1 μέχρι το 400. Κατά την περίοδο των εκπτώσεων αποφασίζει να κάνει εκπτώσεις σύμφωνα με τον παρακάτω πίνακα. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τον ακέραιο κωδικό ενός προϊόντος και την τιμή του και ανάλογα με τον πίνακα θα υπολογίζει και θα εμφανίζει την τιμή με έκπτωση. Θεωρήστε ότι ο κωδικός του προϊόντος μπορεί να λάβει τιμές από το 1 μέχρι το 400.

Κωδικός   Έκπτωση
1 - 100   12%
101 - 200   10%
201 - 300   8%
301 - 400   5%

* Ένα κατάστημα διαθέτει διαφορετικά προϊόντα κωδικοποιημένα με ακέραιους αριθμούς. Κατά την περίοδο των εκπτώσεων αποφασίζει να κάνει εκπτώσεις σύμφωνα με τον παρακάτω πίνακα. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τον ακέραιο κωδικό ενός προϊόντος και αν υπάρχει θα διαβάζει την τιμή του. Ανάλογα με τον πίνακα θα υπολογίζει και θα εμφανίζει την τιμή με έκπτωση. Αν δοθεί κωδικός άλλος εκτός των αναφερομένων στον πίνακα κωδικών, θα εμφανίζει το μήνυμα: Δεν υπάρχει.
ΚωδικόςΈκπτωση
1 - 10012%
200 - 30010%
400 - 6008%
601 - 9995%

* Ένα κατάστημα διαθέτει διαφορετικά προϊόντα κωδικοποιημένα με ακέραιους αριθμούς. Κατά την περίοδο των εκπτώσεων αποφασίζει να κάνει εκπτώσεις σύμφωνα με τον παρακάτω πίνακα. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τον ακέραιο κωδικό ενός προϊόντος και την τιμή του προϊόντος. Ανάλογα με τον πίνακα θα υπολογίζει και θα εμφανίζει την τιμή με έκπτωση. Αν δοθεί κωδικός άλλος εκτός των αναφερομένων στον πίνακα κωδικών, θα εμφανίζει το μήνυμα: Δεν υπάρχει.
ΚωδικόςΈκπτωση
1 - 10012%
200 - 30010%
400 - 6008%
601 - 9995%

όπου μάλιστα η τρίτη άσκηση κατά τη γνώμη έχει αμφισβητήσιμη εκφώνηση, αφού προτρέπει τον επίδοξο λύτη να διαβάσει τον ακέραιο κωδικό ενός προϊόντος και την τιμή του προϊόντος, χωρίς να έχει λάβει υπόψη ότι ο κωδικός μπορεί να μην υπάρχει. Σε αυτή την περίπτωση δεν έχει ουσιαστικά νόημα να διαβαστεί τιμή προϊόντος. Αντίθετα μάλιστα η τιμή προϊνότος θα πρέπει να διαβάζεται, αν υπάρχει ο κωδικός (Άσκηση 2).

ΣΔ
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Παναγιώτης Τσιωτάκης στις 08 Σεπ 2009, 04:02:59 μμ
Κατά τη γνώμη μου "λανθασμένη" σημαίνει πως πραγματοποιεί λάθος ενέργειες ή οδηγεί σε λάθος έξοδο.
Αν δε συμβαίνουν αυτά, ακόμα και αν φαίνεται πως ο μαθητής έχει παρανόηση, πως θα στερηθούν μονάδες;

Στην κωδικοποίηση:

Αν  α> 1 ή α < 5 τότε
   Εμφάνισε "Ωραία"
Αλλιώς
   Εμφάνισε "Άσχημα"
Τέλος_αν

που προφανώς δε θα μπει ποτέ στο αλλιώς, θα πούμε οτι έχει λάθος;
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Νίκος Αδαμόπουλος στις 09 Σεπ 2009, 08:59:53 πμ
Κατά τη γνώμη μου "λανθασμένη" σημαίνει πως πραγματοποιεί λάθος ενέργειες ή οδηγεί σε λάθος έξοδο.
Αν δε συμβαίνουν αυτά, ακόμα και αν φαίνεται πως ο μαθητής έχει παρανόηση, πως θα στερηθούν μονάδες;

Στην κωδικοποίηση:

Αν  α> 1 ή α < 5 τότε
   Εμφάνισε "Ωραία"
Αλλιώς
   Εμφάνισε "Άσχημα"
Τέλος_αν

που προφανώς δε θα μπει ποτέ στο αλλιώς, θα πούμε οτι έχει λάθος;

Από την αρχή δεν έθεσα το ζήτημα της στέρησης μονάδων - εντάξει ανάλογα και με την εικόνα της υπόλοιπης λύσης μάλλον δεν θα έκοβα. Ωστόσο στο παράδειγμα που παραθέτεις, για να πούμε αν έχει λάθος θα πρέπει να έχουμε τη διατύπωση του προβλήματος. Αν και για λάθος το βλέπω...  ::)
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Σπύρος Δουκάκης στις 11 Σεπ 2009, 12:05:57 πμ
Σνάδελφοι, παραθέτω εκ νέου τις τρεις ασκήσεις, ώστε να σχολιάσουμε τις τρεις αυτές εκφωνήσεις και αν υπάρχει κίνδυνος παρανόησης για τους μαθητές και τις μαθήτριες, στα ζητήματα που έθεσε ο Νίκος!

Δείτε τρία παραδείγματα ασκήσεων:

* Ένα κατάστημα διαθέτει διαφορετικά προϊόντα κωδικοποιημένα με ακέραιους αριθμούς από το 1 μέχρι το 400. Κατά την περίοδο των εκπτώσεων αποφασίζει να κάνει εκπτώσεις σύμφωνα με τον παρακάτω πίνακα. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τον ακέραιο κωδικό ενός προϊόντος και την τιμή του και ανάλογα με τον πίνακα θα υπολογίζει και θα εμφανίζει την τιμή με έκπτωση. Θεωρήστε ότι ο κωδικός του προϊόντος μπορεί να λάβει τιμές από το 1 μέχρι το 400.

ΚωδικόςΈκπτωση
1 - 10012%
101 - 20010%
201 - 3008%
301 - 4005%

* Ένα κατάστημα διαθέτει διαφορετικά προϊόντα κωδικοποιημένα με ακέραιους αριθμούς. Κατά την περίοδο των εκπτώσεων αποφασίζει να κάνει εκπτώσεις σύμφωνα με τον παρακάτω πίνακα. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τον ακέραιο κωδικό ενός προϊόντος και αν υπάρχει θα διαβάζει την τιμή του. Ανάλογα με τον πίνακα θα υπολογίζει και θα εμφανίζει την τιμή με έκπτωση. Αν δοθεί κωδικός άλλος εκτός των αναφερομένων στον πίνακα κωδικών, θα εμφανίζει το μήνυμα: Δεν υπάρχει.
ΚωδικόςΈκπτωση
1 - 10012%
200 - 30010%
400 - 6008%
601 - 9995%

* Ένα κατάστημα διαθέτει διαφορετικά προϊόντα κωδικοποιημένα με ακέραιους αριθμούς. Κατά την περίοδο των εκπτώσεων αποφασίζει να κάνει εκπτώσεις σύμφωνα με τον παρακάτω πίνακα. Να αναπτύξετε αλγόριθμο ο οποίος θα διαβάζει τον ακέραιο κωδικό ενός προϊόντος και την τιμή του προϊόντος. Ανάλογα με τον πίνακα θα υπολογίζει και θα εμφανίζει την τιμή με έκπτωση. Αν δοθεί κωδικός άλλος εκτός των αναφερομένων στον πίνακα κωδικών, θα εμφανίζει το μήνυμα: Δεν υπάρχει.
ΚωδικόςΈκπτωση
1 - 10012%
200 - 30010%
400 - 6008%
601 - 9995%

όπου μάλιστα η τρίτη άσκηση κατά τη γνώμη έχει αμφισβητήσιμη εκφώνηση, αφού προτρέπει τον επίδοξο λύτη να διαβάσει τον ακέραιο κωδικό ενός προϊόντος και την τιμή του προϊόντος, χωρίς να έχει λάβει υπόψη ότι ο κωδικός μπορεί να μην υπάρχει. Σε αυτή την περίπτωση δεν έχει ουσιαστικά νόημα να διαβαστεί τιμή προϊόντος. Αντίθετα μάλιστα η τιμή προϊνότος θα πρέπει να διαβάζεται, αν υπάρχει ο κωδικός (Άσκηση 2).

ΣΔ
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Λίτσα στις 23 Σεπ 2009, 09:41:04 μμ
Συγνώμη που ρωτώ, αλλά εν τέλει τί και πώς πρέπει να το διδάξουμε στα παιδιά; Τί είναι περισσότερο ασφαλές για αυτά, έτσι ώστε να μην αντιμετωπίσουν πρόβλημα στις εξετάσεις σε ένα τέτοιο θέμα; Υπάρχει κάποιος τρόπος απλός και κατανοητός; Γιατί μην ξεχνάμε , όλα τα παιδιά δεν είναι σαϊνια  ??? αλλά έχουν κι αυτά το δικαίωμα να πάρουν που λέμε "μυρωδιά" ;)
Εσείς όλοι που είστε , σίγουρα, πιο έμπειροι από μένα...μπορείτε να μου δώσετε τα φώτα σας; :-[ και επειδή με τα παραδείγματα, τα πράγματα γίνονται περισσότερο κατανοητά, μπορείτε να βρείτε κάποια που να καλύπτουν σωστά αυτό το θέμα; :(
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: nikolasmer στις 17 Οκτ 2013, 11:38:29 πμ
Σνάδελφοι, παραθέτω εκ νέου τις τρεις ασκήσεις, ώστε να σχολιάσουμε τις τρεις αυτές εκφωνήσεις και αν υπάρχει κίνδυνος παρανόησης για τους μαθητές και τις μαθήτριες, στα ζητήματα που έθεσε ο Νίκος!

Για να δώ τί κατάλαβα ή έχω παρανοήσει σε κάτι.

Αλγόριθμος Τεστ1
Διάβασε κωδ, τιμή
Αν κωδ ≤ 100 τότε
  εκπτ ← τιμή*0.12
αλλιώς_αν κωδ ≤ 200 τότε
  εκπτ ← τιμή*0.10
αλλιώς_αν κωδ ≤ 300 τότε
  εκπτ ← τιμή*0.08
αλλιώς_αν κωδ ≤ 400 τότε
  εκπτ ← τιμή*0.05
Τέλος_αν
τελική_τιμή ← τιμή - εκπτ
Εμφάνισε τελική_τιμή
Τέλος Τεστ1


Αλγόριθμος Τεστ2
Διάβασε κωδ
Αν κωδ ≥ 1 και κωδ ≤ 400 τότε
  Διάβασε τιμή
  Αν κωδ ≤ 100 τότε
    εκπτ ← τιμή*0.12
  αλλιώς_αν κωδ ≤ 200 τότε
    εκπτ ← τιμή*0.10
  αλλιώς_αν κωδ ≤ 300 τότε
    εκπτ ← τιμή*0.08
  αλλιώς_αν κωδ ≤ 400 τότε
    εκπτ ← τιμή*0.05
  Τέλος_αν
  τελική_τιμή ← τιμή - εκπτ
  Εμφάνισε τελική_τιμή
αλλιώς
  Εμφάνισε "Δεν υπάρχει"
Τέλος_αν
Τέλος Τεστ2

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

Για την τρίτη περίπτωση αν και είναι ασαφής εγώ θα έκανα:


Αλγόριθμος Τεστ3
Διάβασε κωδ, τιμή
Αν κωδ < 0 τότε
  Εμφάνισε "Δεν υπάρχει"
αλλιώς_αν κωδ ≤ 100 τότε
  εκπτ ← τιμή*0.12
  τελική_τιμή ← τιμή - εκπτ
  Εμφάνισε τελική_τιμή
αλλιώς_αν κωδ ≤ 200 τότε
  εκπτ ← τιμή*0.10
  τελική_τιμή ← τιμή - εκπτ
  Εμφάνισε τελική_τιμή
αλλιώς_αν κωδ ≤ 300 τότε
  εκπτ ← τιμή*0.08
  τελική_τιμή ← τιμή - εκπτ
  Εμφάνισε τελική_τιμή
αλλιώς_αν κωδ ≤ 400 τότε
  εκπτ ← τιμή*0.05
  τελική_τιμή ← τιμή - εκπτ
  Εμφάνισε τελική_τιμή
αλλιώς
  Εμφάνισε "Δεν υπάρχει"
Τέλος_αν
Τέλος Τεστ3

Βέβαια όπως είχε κάποτε πεί και ο κ. Δουκάκης , διαβάζετε τζάμπα και βερεσέ μια τιμή η οποία σε 2 εκ των περιπτώσεων δεν ζρησιμοποιείτε η τιμή της.
Επίσης εκείνο το διπλό "Δεν Υπάρχει " στη λύση μου μπορεί να μαζευτει σε ενα αλλά καταλήγουμε περισσότερο στην δεύτερη πιο πάνω λύση.
Αυτά 4 χρόνια μετά!! :)
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: Νίκος Αδαμόπουλος στις 17 Οκτ 2013, 10:22:50 μμ
Αναφέρομαι στις 2 πρώτες λύσεις...

Στην 1η λύση, ο τελευταίος έλεγχος "αλλιώς_αν κωδ ≤ 400 τότε" είναι περιττός αφού η άσκηση έτσι κι αλλιώς αναφέρει "ότι ο κωδικός του προϊόντος μπορεί να λάβει τιμές από το 1 μέχρι το 400". Ακόμα κι αν, παρόλα αυτά, ο χρήστης δώσει τιμή μεγαλύτερη τιμή από 400, τότε ναι μεν η εκτέλεση δεν θα μπει καθόλου στην Αν, όμως έτσι θα είχαμε πρόβλημα παρακάτω στην εκτέλεση της εντολής "τελική_τιμή ← τιμή - εκπτ" όπου η μεταβλητή εκπτ θα είναι απροσδιόριστη.

Στην 2η λύση, ο ίδιος έλεγχος "αλλιώς_αν κωδ ≤ 400 τότε" πάλι είναι περιττός αφού πιο πάνω εξασφαλίζεται ότι ο κωδικός θα είναι από 1 έως 400 ("Αν κωδ ≥ 1 και κωδ ≤ 400 τότε")...

Και στις 2 παραπάνω περιπτώσεις μπορεί να μπει απλά ένα "αλλιώς"...
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: nikolasmer στις 17 Οκτ 2013, 10:55:14 μμ
Αναφέρομαι στις 2 πρώτες λύσεις...

Στην 1η λύση, ο τελευταίος έλεγχος "αλλιώς_αν κωδ ≤ 400 τότε" είναι περιττός αφού η άσκηση έτσι κι αλλιώς αναφέρει "ότι ο κωδικός του προϊόντος μπορεί να λάβει τιμές από το 1 μέχρι το 400". Ακόμα κι αν, παρόλα αυτά, ο χρήστης δώσει τιμή μεγαλύτερη τιμή από 400, τότε ναι μεν η εκτέλεση δεν θα μπει καθόλου στην Αν, όμως έτσι θα είχαμε πρόβλημα παρακάτω στην εκτέλεση της εντολής "τελική_τιμή ← τιμή - εκπτ" όπου η μεταβλητή εκπτ θα είναι απροσδιόριστη.

Στην 2η λύση, ο ίδιος έλεγχος "αλλιώς_αν κωδ ≤ 400 τότε" πάλι είναι περιττός αφού πιο πάνω εξασφαλίζεται ότι ο κωδικός θα είναι από 1 έως 400 ("Αν κωδ ≥ 1 και κωδ ≤ 400 τότε")...

Και στις 2 παραπάνω περιπτώσεις μπορεί να μπει απλά ένα "αλλιώς"...

Ειλικρινά ευχαριστώ πάρα πολύ κ. Αδαμόπουλε για την ανάλυσή σας και τις παρατηρήσεις σας. Να είστε καλά.
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: thCnd στις 06 Οκτ 2014, 03:01:01 μμ
Καλησπέρα,
θα ήθελα να ρωτήσω το εξής:πώς βαθμολογούνται στις πανελλήνιες οι περιττές συνθήκες;Στο σχολικό βιβλίο στη σελ.172 αναφέρει ότι είναι ένα συχνό λάθος ο έλεγχος περιττών συνθηκών. Έστω ότι ένας μαθητής στην αντίστοιχη άσκηση πολλαπλής επιλογής γράψει ως λύση το παράδειγμα της σελ.137 με τις περιττές συνθήκες, θα χάσει μονάδες ή όχι; Έχει βγει κάποια σχετική οδηγία/ διευκρίνηση;
Τίτλος: Απ: Περιττές ή λανθασμένες συνθήκες
Αποστολή από: programmer στις 08 Φεβ 2015, 10:40:55 μμ
μια απλή ασκηση με φυλακισμένους