ΔΟΜΗ ΕΠΙΛΟΓΗΣ ΠΕΡΙΟΡΙΣΜΟΙ

Ξεκίνησε από xaidi, 10 Νοε 2004, 11:59:51 ΠΜ

« προηγούμενο - επόμενο »

xaidi

 2.2.3.Ασκ3. Να αναπτυχθεί αλγόριθμος ο οποίος θα διαβάζει το μέσο όρο ενός μαθητή κατά την περασμένη σχολική χρονιά και θα εκτυπώνει το αντίστοιχο μήνυμα σύμφωνα με τα ακόλουθα: Αν ο βαθμός είναι μικρότερος από 9,5 ο μαθητής απορρίπτεται στο μάθημα, αν είναι μεγαλύτερος από 9,5 και μικρότερος από 13 τότε ο χαρακτηρισμός του μαθητή είναι "Σχεδόν καλά", αν είναι μεγαλύτερος του 13 έως 16 ο χαρακτηρισμός είναι "Καλά", αν είναι μικρότερος του 18 "Πολύ καλά", ενώ τέλος αν ο μέσος όρος είναι μεγαλύτερος του 18 ο χαρακτηρισμός είναι "Άριστα"

Λύση
Σημειώνεται ότι στα πλαίσια του αλγορίθμου θα πραγματοποιήσουμε έλεγχο και για την περίπτωση ο χρήστης να έχει εισάγει κάποιον αριθμό εκτός των ορίων [0, 20] και σε αυτήν την περίπτωση να εκτυπωθεί αντίστοιχο μήνυμα λάθους. Ο έλεγχος των δεδομένων είναι μια ενέργεια που δεν είναι απαραίτητη σ' έναν αλγόριθμο αλλά σε ένα πρόγραμμα πρέπει απαραιτήτως να ελέγχουμε τα δεδομένα εισόδου.
Για την υλοποίηση του αλγορίθμου και δεδομένου οτι πρέπει να ελεχθούν ουσιάστικά 6 περιπτώσεις η δομή επιλογής δεν αρκεί. Πρέπει να χρησιμοποιήσουμε την δομή πολλαπλής επιλογής. Θα υλοποιήσουμε τον αλγόριθμο και με τις δομές πολλαπλής επιλογής που έχουν παρουσιαστεί

Αλγόριθμος Χαρακτηρισμός_ΜΟ
  Διάβασε μέσος_όρος
  Αν μέσος_όρος < 9.5 τότε
    Εκτύπωσε "Ο μαθητής απορρίπτεται"
  Αλλιώς_Αν μέσος_όρος < 13 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 9,5
    Εκτύπωσε "Σχεδόν καλά"
  Αλλιώς_Αν μέσος_όρος < 16 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 13
    Εκτύπωσε "Καλά"
  Αλλιώς_Αν μέσος_όρος < 18 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 16
    Εκτύπωσε "Πολύ καλά"
  Αλλιώς_Αν μέσος_όρος <= 20 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 18
    Εκτύπωσε "Άριστα"
  Αλλιώς ! μέσος_όρος > 20
    Εκτύπωσε "Λάθος καταχώρηση δεδομένων"
  Τέλος_Αν
Τέλος Χαρακτηρισμός_ΜΟ

Παναγιώτη συγνώμη που "έκλεψα"  :)τα παρδείγματα από τη σελίδα σου, αλλά αυτό έγινε γιατί είσαι πηγή πληροφοριών και μελέτης (όπως ξέρεις, ήδη ;))....στο θέμα:
ο έλεγχος των λάθος τιμών γίνεται πριν την δομή της επιλογής με δομή επανάληψης. Βέβαια, σε αυτόν τον αλγόριθμο υλοποιούμε ακόμη μόνο τη δομή της επιλογής.
η ερώτηση μου είναι η εξής:
αν κάποιος δώσει αρνητική τιμή ο αλγόριθμος θα εμφανίσει "Ο μαθητής απορρίπτεται", που είναι λάθος διότι υπήρξε λάθος εισαγωγή τιμής.
Μήπως θα πρέπει σε αυτές τις ασκήσεις  και για την πρώτη περίπτωση επιλογής να παίρνουμε περιορισμό και για το κάτω όριο ώστε οι αρνητικές τιμές και οι μεγαλύτερες του 20 να καταλήγουν στο αλλιώς?

Ευχαριστώ,

P.Tsiotakis

Καλή μου xaidi, η κλοπή των ασκήσεων από τη σελίδα μου είναι θέμα της ημερήσιας διάταξης, οι παρατηρητές είναι ειδικοί στο copy-paste  :o

Μάλιστα, με την παρατήρησή σου, δεν μ' αφήνεις να μπω και γω στην κοινότητα των παρατηρητών

Για τον έλεγχο δεδομένων έχω να πω τα εξής:

1. Αν η εκφώνηση ρητά ζητάει έλεγχο εγκυρότητας πρέπει να τον κάνουμε
2. Αν η εκφώνηση δεν το λέει, καλό είναι να γίνεται ειδικά στις "εξώφθαλμες" περιπτώσεις (π.χ. βαθμός)
3. Ο αλγόριθμος είναι κάτι φιλελεύθερο - τρόπος σκέψης, άρα δεν απαιτείται έλεγχος, σε ένα πρόγραμμα γραμμένο σε ΓΛΩΣΣΑ ΠΡΕΠΕΙ ΝΑ ΚΑΝΟΥΜΕ ώστε να μην "κρεμάει" το "πρόγραμμα"
4. Ο έλεγχος δεδομένων γίνεται με τις εντολές:
Αρχή_Επανάληψης
    Διάβασε  <μεταβλητές>
Μέχρις_Ότου <επιθυμητή συνθήκη>

Στο κεφάλαιο 2 που βρίσκεται η συγκεκριμένη άσκηση δεν έχει παρουσιαστεί το Μέχρις_Ότου όπως σωστά επισημαίνεις (θα μπορούσε βέβαια να ελεγχθεί το <0 με το τελευταίο αλλιώς να γίνεται
Αλλιώς_Αν μέσος_όρος > 20 ή μέσος_όρος > 20 τότε
...

Ωστόσο, σε αυτήν την ενότητα (δομή επιλογής) θέλω να περάσω το μήνυμα του ελέγχου ως έννοια, την οποία θα ενισχύσω στη δομή επανάληψης με τον παραπάνω τρόπο οπότε και δε χρειάζονται Αν για έλεγχο εγκυρότητας

Απο την άλλη δεν είναι και σωστό να μας πιάνει ελεγχο-λαγνεία και να πραγματοποιούμε έλεγχο για όλες τις μεταβλητές !!

Αυτή είναι η προσέγγισή μου...  ;)

Με εκτίμηση,


bagelisb

Κατά τη γνώμη μου δεν πρέπει σε μία άσκηση που δεν ζητεί ρητά να γίνει έλεγχος τιμών να πραγματοποιείται είτε αναφέρεται σε αλγόριθμο είτε σε πρόγραμμα. Διαφορετικά θα έπρεπε να λύνουμε όλες τις ασκήσεις έτσι, πράγμα δύσκολα εφικτό.
Παρ' όλα αυτά αν σε κάποια περίπτωση χρειαστεί έλεγχος τιμών με ΑΝ το καλύτερο κατά τη γνώμη μου είναι αυτό να γίνεται με ένα μεγάλο εμφωλευμένο ΑΝ που περικλείει την κανονική λύση της άσκησης που δεν περιέχει έλεγχο τιμών. Δηλαδή για την παραπάνω άσκηση:
ΑΝ βαθμός > 0 ΚΑΙ βαθμός <= 20 ΤΟΤΕ
      ! Λύση ολόκληρης της άσκησης χωρίς έλεγχο
ΑΛΛΙΩΣ
      Εμφάνισε 'Λάθος δεδομένα'
ΤΕΛΟΣ_ΑΝ
Νομίζω ότι αυτή η αντιμετώπιση αποφεύγει όλες τις ειδικές περιπτώσεις που δημιουργούνται όταν βάζεις μέσα στην κανονική λύση και τις λάθος τιμές και επίσης είναι και ευκολότερο να διδαχθεί γιατί δεν αναιρείς καθόλου τις λύσεις που έχεις ήδη δώσει χωρίς έλεγχο, απλά τις επεκτείνεις.

P.Tsiotakis


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

ΑΝ βαθμός > 0 ΚΑΙ βαθμός <= 20 ΤΟΤΕ
 ! Λύση ολόκληρης της άσκησης χωρίς έλεγχο
ΑΛΛΙΩΣ
 Εμφάνισε 'Λάθος δεδομένα'
ΤΕΛΟΣ_ΑΝ

Ωστόσο: 1. στην άσκηση που έτσι κι αλλιώς πήραμε πολλαπλή επιλογή για να τη λύσουμε τότε μπορούμε να βάλουμε άλλη μια περίπτωση για τα λάθος δεδομένα.
2. Το βιβλίο του καθηγητή (αν δεν κάνω λάθος) αλλά και το σχολικό (σελίδα 171) λέει οτι γενικά καλό είναι να αποφεύγουμε τα εμφωλευμένα Αν, ειδικά αν μπορούμε να πάρουμε πολλαπλό

Θεωρώ ωραία τη συζήτηση, αλλά αφού τα παιδιά γράφουν τον Μάιο, ξέρουν το Μέχρις_Ότου, άρα η συζήτηση ίσως να είναι και των ουκ άνευ.

Πάντως Βαγγέλη, διαφωνώ οτι αν δεν λέει κάντε έλεγχο να μην κάνουμε.
Πρέπει να κάνουμε έλεγχο στη ΓΛΩΣΣΑ.

Αντίθετα δεν πρέπει να κάνουμε οταν μας λέει η εκφώνηση "ΜΗΝ ΚΑΝΕΤΕ ΕΛΕΓΧΟ". Και πως το λέει αυτό ? "Θεωρείστε οτι για το βάρος εισάγεται θετικός αριθμός" , κάτι το οποίο συνηθίζεται τα τελευταία χρόνια στα θέματα των εξετάσεων.

Καλό είναι τα παιδιά πάντα να έχουν στο μυαλό τους οτι πρέπει σε "εξώφθαλμες" περιπτώσεις να κάνουν έλεγχο

Με εκτίμηση,

gpapargi

Καλημέρα

Νομίζω ότι λίγο πολύ όλοι συμφωνούμε στις μεθόδους ανίχνευσης λάθους εισόδου. Το θέμα για μένα που αξίζει να συζητηθεί είναι το εξής:

Προτιμάμε τον παρακάτω αλγόριθμο 1 ή τον αλγόριθμο 2 και γιατί;

Αλγόριθμος 1

Αλγόριθμος Χαρακτηρισμός_ΜΟ
  Διάβασε μέσος_όρος
  Αν μέσος_όρος < 9.5 και μέσος_όρος >0 τότε
    Εκτύπωσε "Ο μαθητής απορρίπτεται"
  Αλλιώς_Αν μέσος_όρος < 13 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 9,5
    Εκτύπωσε "Σχεδόν καλά"
  Αλλιώς_Αν μέσος_όρος < 16 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 13
    Εκτύπωσε "Καλά"
  Αλλιώς_Αν μέσος_όρος < 18 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 16
    Εκτύπωσε "Πολύ καλά"
  Αλλιώς_Αν μέσος_όρος <= 20 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 18
    Εκτύπωσε "Άριστα"
  Αλλιώς ! μέσος_όρος > 20
    Εκτύπωσε "Λάθος καταχώρηση δεδομένων"
  Τέλος_Αν
Τέλος Χαρακτηρισμός_ΜΟ

Αλγόριθμος 2

Αλγόριθμος Χαρακτηρισμός_ΜΟ
  Διάβασε μέσος_όρος
  Αν μέσος_όρος >=0 και μέσος_όρος <9.5 τότε
    Εκτύπωσε "Ο μαθητής απορρίπτεται"
  Αλλιώς_Αν μέσο_όρος >=9.5 και μέσος_όρος < 13 τότε
    Εκτύπωσε "Σχεδόν καλά"
  Αλλιώς_Αν μέσος_όρος >=13 και μέσος_όρος < 16 τότε
    Εκτύπωσε "Καλά"
  Αλλιώς_Αν μέσος_όρος > =16 και μέσος_όρος < 18 τότε  
    Εκτύπωσε "Πολύ καλά"
  Αλλιώς_Αν μέσος_όρος >=18 και μέσος όρος <= 20 τότε  
    Εκτύπωσε "Άριστα"
  Αλλιώς
    Εκτύπωσε "Λάθος καταχώρηση δεδομένων"
  Τέλος_Αν
Τέλος Χαρακτηρισμός_ΜΟ

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


Προτείνω να συγκριθούν οι 2 αλγόριθμοι ως προς:
1 Την ευκολία εκμάθησης από το μαθητή
2 Την παραγωγή ευανάγνωστου αλγορίθμου
3 Την αποδοτικότητα
4 Την δυνατότητα χρήσης σε πιο πολύπλοκα προβλήματα (δείτε για παράδειγμα στο κεφάλαιο 8 του τετραδίου το παράδειγμα 1 με τους ρύπους).
5 Ότι άλλο πλεονέκτημα ή μειονέκτημα μπορεί να σκεφτεί ο καθένας.

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

Νομίζω είναι ένα ενδιαφέρον θέμα που αξίζει να συζητηθεί. Ελπίζω να δούμε και κανένα νέο μέλος στην κουβέντα. Αλλιώς να φτιάξουμε μια λίστα τα 5-6 άτομα που γράφουν συνεχώς και να ανταλλάσουμε κλειστά mail μεταξύ μας.

Φιλικά

xaidi

σαφέστατα θα έλεγα τον 1ο διότι ο 2οσ διότι κάνει περιττούς ελέγχους όπως αναφέρεται και στο 7ο κεφάλαιο.

«&#8230;Θα μπορούσαμε να πούμε ότι ο αλγ 1 αντιμετωπίζει την πολλαπλή επιλογή σαν πολλές ερωτήσεις που λαμβάνουν 2 πιθανές απαντήσεις η καθεμιά, ενώ ο αλγ 2 αντιμετωπίζει την πολλαπλή επιλογή σα μια ερώτηση που μπορεί να λάβει πολλές πιθανές απαντήσεις. Έτσι στον αλγ 2 η σειρά των επιλογών μπορεί να αλλάξει ενώ στον αλγ 1 όχι&#8230;» δεν καταλαβαίνω τι θέλεις να πεις. Μπορείς σε παρακαλώ να το εξηγήσεις?

Πιστεύω πως ο 2ος αλγόριθμος είναι λάθος, οπότε δεν μπορώ να τους συγκρίνω.
Ευχαριστώ,

redhata

Συμφωνώ εν μέρει με xaidi, ο αλγ2 είναι ο ορισμός των περιττών ελέγχων και επιπλέον δεν χρησιμοποιεί σωστά την εντολή Αλλιώς_αν. 100% λάθος πάντως δε νομίζω ότι είναι, χαμηλής αποδοτικότητας μάλλον θα τον χαρακτήριζα. Επίσης πιστεύω πως είναι πιο χρονοβόρο να τροποποιηθεί ο αλγ2, αν αλλάξουν οι κλίμακες χαρακτηρισμού των βαθμών.
rEdHaTa

George

Καλησπέρα
Καταρχήν στον έλεγχο τιμών που συζητήθηκε λίγο πιο πάνω πιστεύω ότι αν δεν το ζητά ρητά η άσκηση καλύτερα είναι να μην γίνεται, τουλάχιστον σε αλγόριθμο. Αν χρειαστεί να γίνει έλεγχος συμφωνώ με τον bagelisb  ότι είναι καλύτερα ένα μεγάλο εμφωλευμένο ΑΝ που περικλείει την κανονική λύση της άσκησης. Είναι ευκολότερη, πιο κατανοητή και μας γλιτώνει και από πολλούς μπελάδες.
Για παράδειγμα οι δύο παραπάνω αλγόριθμοι που δίνει ο gpapargi. Ο πρώτος είναι λάθος όσον αφορά τον έλεγχο τιμών μιας και εμφανίζει το "Σχεδόν καλά" σε περίπτωση αρνητικού αριθμού. Αντίθετα ο δεύτερος με τους τόσους περιττούς ελέγχους τα καταφέρνει μια χαρά σ' αυτό το θέμα.
Έχω παρατηρήσει πάντως ότι αρκετοί μαθητές ενώ κατανοούν τον πρώτο αλγόριθμο χρησιμοποιούν περισσότερο τον δεύτερο. Αυτό μου γεννά και ένα ερώτημα. Πόσο λάθος είναι ο έλεγχος περιττών συνθηκών ( όπως στον Αλγ2) σε έναν αλγόριθμο;

Φιλικά

redhata

ωχ... τώρα που το βλέπω, μετά το post του george, ο αλγ1 έτσι όπως είναι γραμμένος είναι άστα να πάνε... μάλλον θα πρέπει να γίνει:

  Αν μέσος_όρος < 0 τότε
   Εκτύπωσε "Λάθος καταχώρηση δεδομένων"  
  Αλλιώς_Αν μέσος_όρος < 9.5 τότε  
    Εκτύπωσε "Ο μαθητής απορρίπτεται"  
  Αλλιώς_Αν μέσος_όρος < 13 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 9,5  
    Εκτύπωσε "Σχεδόν καλά"  
  Αλλιώς_Αν μέσος_όρος < 16 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 13  
    Εκτύπωσε "Καλά"  
  Αλλιώς_Αν μέσος_όρος < 18 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 16  
    Εκτύπωσε "Πολύ καλά"  
  Αλλιώς_Αν μέσος_όρος <= 20 τότε ! εννοείται σε αυτό το σημείο οτι μέσος_όρος >= 18  
    Εκτύπωσε "Άριστα"  
  Αλλιώς ! μέσος_όρος > 20  
    Εκτύπωσε "Λάθος καταχώρηση δεδομένων"  
  Τέλος_Αν  
rEdHaTa

gpapargi

Γεια και χαρά

Δε θα δώσω τώρα την απάντηση μου στα θέματα που κουβεντιάζουμε. Θα δώσω απλά τις διευκρινήσεις που ζήτησε η Χάιντι.

Καταρχήν ο αλγόριθμος 2 δεν είναι λάθος. Λάθος είναι ο αλγόριθμος που δίνει λάθος αποτελέσματα. Αυτό που θέλεις να πεις Χαιντι είναι ότι δεν είναι αποδοτικός γιατί κάνει περιτούς ελέγχους. Το αν τελικά αυτό ισχύει πάντα είναι κάτι που θα το σχολιάσω στην απάντησή μου.

Για τον αλγόριθμο 1 όντως υπάρχει λάθος από. . .  πρόθεση. Ο καθηγητής στο πανεπιστήμιο μας έδωσε μια τέτοια άσκηση στην τάξη και μας ρώτησε αν βλέπουμε κάτι λάθος. Στα επόμενα δευτερόλεπτα δεν απάντησε κανείς. Ο καθηγητής, αφού μας υπέδειξε το λάθος, μας είπε ότι θέλει κάποια πείρα όταν εκμεταλλεύεσαι το ότι οι συνθήκες ελέγχονται σειριακά. Ήμουν περίεργος να δω πόσοι θα το καταλάβουν. Χάιντι και redhata δεν το πρόσεξαν. Ο George το είδε. Αυτή η τεχνική εγκυμονεί κινδύνους για το μαθητή. Είναι ένας από τα μειονεκτήματα του αλγόριθμου 1. Για να είσαι σίγουρος, καλό είναι να κάνεις ένα σχήμα (σαν και αυτό που κάνουμε στις ανισώσεις) και να δεις ποιες περιοχές καλύπτονται από τον αλγόριθμο. Η σύγκριση των 2 αλγορίθμων έχει και άλλες εκπλήξεις, ακόμα και στο θέμα της ταχύτητας! Τα υπόλοιπα θα τα αναφέρω στην αναλυτική μου απάντηση.

Ξαναγράφω τον αλγόριθμο 1 σωστά. Από δω και πέρα συγκρίνουμε αυτόν με τον αλγόριθμο 2 του αρχικού μου post.

Αλγόριθμος 1

Αλγόριθμος Χαρακτηρισμός_ΜΟ  
  Διάβασε μέσος_όρος
  Αν μέσος_όρος <0 ή μέσος_όρος > 20 τότε
    Εκτύπωσε "Λάθος καταχώρηση δεδομένων"
  αλλιώς_αν μέσος_όρος < 9.5 τότε  
    Εκτύπωσε "Ο μαθητής απορρίπτεται"  
  Αλλιώς_Αν μέσος_όρος < 13 τότε
    Εκτύπωσε "Σχεδόν καλά"  
  Αλλιώς_Αν μέσος_όρος < 16 τότε  
    Εκτύπωσε "Καλά"  
  Αλλιώς_Αν μέσος_όρος < 18 τότε  
    Εκτύπωσε "Πολύ καλά"  
  Αλλιώς μέσος_όρος <= 20 τότε  
    Εκτύπωσε "Άριστα"  
    
  Τέλος_Αν  
Τέλος Χαρακτηρισμός_ΜΟ


Παρακάτω δίνω τις διευκρινήσεις που ζητήθηκαν από τη Χάιντι.

Στον αλγόριθμο 2 μπορεί να αλλάξει η σειρά των αλλιώς_αν χωρίς να αλλάξει το αποτέλεμα του αλγορίθμου. Για παράδειγμα μπορούμε να γράψουμε

Αν μέσος_όρος >=13 και μέσος_όρος <16 τότε
  Εκτύπωσε «Καλά»
αλλιώς_αν μέσος_όρος >=0 και μέσος_όρος <9.5 τότε
  Εκτύπωσε «Ο μαθητής απορρίπτεται»
αλλιώς_αν μέσος_όρος >=18 και μέσος_όρος <20 τότε
  Εκτύπωσε «Άριστα»

Κλπ κλπ

Δηλαδή μπορείς να αλλάξεις τη σειρά των ελέγχων γιατί κάθε διάστημα έχει σαφή άκρα. Αυτό δεν μπορεί να γίνει στον αλγόριθμο 1.

Στον αλγόριθμο 1 λαμβάνουμε υπ&#8217; όψην ότι οι έλεγχοι γίνονται σειριακά. Πρώτα ελέγχεται η πρώτη συνθήκη. Μόνο αν είναι ψευδής ελέγχεται δεύτερη, μετά η τρίτη κλπ μέχρι την τελευταία. Κάθε έλεγχος συνθήκης είναι ουσιαστικά μια ερώτηση που η απάντησή της παίρνει 2 τιμές: Αληθής ή ψευδής.

Αυτό ισχύει και στον αλγόριθμο 2 αλλά επειδή μπορούμε να αλλάξουμε αυθαίρετα τη σειρά των ελέγχων, σε ένα αφαιρετικό επίπεδο μπορούμε να φανταστούμε όλες μαζί τις αλλιώς_αν σα μια ερώτηση
«Ποιο είναι το διάστημα που περιέχει το βαθμό που δώσαμε σαν είσοδο στον αλγόριθμο;»
Η ερώτση αυτή φανταζόμαστε ότι παίρνει 7 διαφορετικές απαντήσεις:
1 Το διάστημα από 0 ως 9.5
2 Το διάστημα από 9.5 ως 13
3 Το διάστημα από 13 ως 16
5 Το διάστημα από 16 ως 18
6 Το διάστημα από 18 ως 20
7 Κάθε άλλη περίπτωση (δηλαδή κάτω από 0 και πάνω από 20).

Δηλαδή ο σχεδιαστής του αλγορίθμου μπορεί σε αφαιρετικό επίπεδο να θεωρήσει την πολλαπλή επιλογή (αλλιώς_αν) σαν μια ερώτηση με πολλές πιθανές απαντήσεις κι ας μην είναι ακριβώς έτσι τα πράγματα. (Στην πραγματικότητα έχουμε πολλές ερωτήσεις που η κάθε μια παίρνει τιμές «Αληθής» ή «Ψευδής».)
Εδώ που τα λέμε οι λέξεις «πολλαπλή επιλογή» αυτό σημαίνει: μια ερώτηση με πολλές πιθανές απαντήσεις :-)

Τώρα ελπίζω να έγινε κατανοητό αυτό που είπα αρχικά.

Για να δώσω και λίγο χρώμα στην κουβέντα θέτω προς καθηγητές και μαθητές την παρακάτω ερώτηση σαν σπαζοκεφαλιά:

Αναφέρετε μια περίπτωση, περιγράψτε δηλαδή κάποιες συνθήκες, κάτω από τις οποίες προτιμάμε τον αλγόριθμο 2  για λόγους ταχύτητας
Ελπίζω τώρα να ανάψει η κουβέντα :-)

Με εκτίμηση

P.Tsiotakis

#10
Η εκφώνηση είναι: Να αναπτύξετε αλγόριθμο που θα διαβάζει έναν μέσο όρο και θα εκτυπώνει χαρακτηρισμό

Η μόνη σωστή λύση είναι η:

Αλγόριθμος Χαρακτηρισμός_ΜΟ  
  Αρχή_Επανάληψης
     Διάβασε μέσος_όρος
  Μέχρις_Ότου   μέσος_όρος >= 0 και μέσος_όρος <=20
  
  Αν μέσος_όρος < 9.5 τότε  
    Εκτύπωσε "Ο μαθητής απορρίπτεται"  
  Αλλιώς_Αν μέσος_όρος < 13 τότε  
    Εκτύπωσε "Σχεδόν καλά"  
  Αλλιώς_Αν μέσος_όρος < 16 τότε    
    Εκτύπωσε "Καλά"  
  Αλλιώς_Αν μέσος_όρος < 18 τότε    
    Εκτύπωσε "Πολύ καλά"  
  Αλλιώς ! μέσος_όρος <= 20
    Εκτύπωσε "Άριστα"  
  Τέλος_Αν    
Τέλος Χαρακτηρισμός_ΜΟ

Μόνο αυτός ο αλγόριθμος κάνει αυτό που λέει η εκφώνηση. Δεν με ενδιαφέρει να εκτυπώσω "λάθος δεδομένο", θέλω να εκτυπώσω χαρακτηρισμό

Κατά τα άλλα εγώ πιστεύω οτι δεν χρειάζονται περιττοί έλεγχοι. Μεταξύ μας και το διδακτικό πακέτο (βιβλίο μαθητή, τετράδιο μαθητή και βιβλίο καθηγητή) το ίδιο πιστεύει

Με εκτίμηση,

redhata

#11
1) τον αλγ1 έτσι όπως τον έγραψες είναι πάλι εκτός της λογικής οικονομίας ελέγχων συνθηκών
2) ειλικρινά δεν καταλαβαίνω ΓΙΑΤΙ να αλλάξει η σειρά των ελέγχων ειδικά στο συγκεκριμένο παράδειγμα, αυτό που μπορεί να αλλάξει είναι το εύρος των διαστημάτων και σε αυτή την περίπτωση ο αλγ2 είναι δυσκολότερο να τροποοιηθεί.
3) δεν ξέραμε ότι "εξεταζόμαστε" εδώ... αλλά anyway το ξεχνάω αυτό. Επειδή δηλαδή έβαλες μια λάθος σύνθηκη για κάποιο λόγο και δεν την προσέξαμε επίσης για κάποιο λόγο, δεν σημαίνει ότι η τεχνική αυτή εγκυμονεί τους κινδύνους που συμπεραίνεις, αυθαίρετα κατά τη γνώμη μου. Ούτως ή άλλως το μπέρδεμα ξεκίνησε από τη σύνθετη συνθήκη.

φιλικά πάντα
rEdHaTa

xaidi

#12
συμφωνώ με την redhata. το θέμα ήταν άλλο και νομίζω έχει ξεφύγει και ίσως σε λίγο πάψουμε να είμαστε και ευγενικοί. εν πάση περιπτώσει συμφωνώ με τον Παναγιώτη ότι ο έλεγχος γίνεται με επανάληψη... και τελικά δεν ξέρω το νόημα του να βάζουμε παγίδες σε μια λύση ώστε να αποδείξουμε κάτι ως καλύτερο ακόμη και αν το βιβλίο λέει κάτι διαφορετικό - που άσχετα με την προσωπική μας γνώμη-  και είναι αυτό που τα παιδιά γράφουν. Νιώθω λίγο υπεύθυνη διότι εγώ ξεκίνησα το θέμα αλλά από διαφορετικό πρίσμα.
Ευχαριστώ,

gpapargi

Από μένα πάντως δεν τίθεται θέμα εκνευρισμού ή ευγένειας ανεξάρτητα από το τι θα ακούσω. Θεωρώ ότι απλά ανταλλάσουμε απόψεις σε επίπεδο επιχειρημάτων και πάντα σε φιλικό κλίμα. Καλό θα ήταν μάλιστα να γράφουν όλοι τα ονόματά τους και να μη συμμετέχουν με ψευδώνυμα έτσι ώστε να υπάρχει και μια προσωπική επαφή.
Πχ θεωρούσα το φίλο (ή τη φίλη) με το ψευδώνυμο redhata άντρα και η Χάιντι τη θεωρεί γυναίκα :-)
Πάντως ο (η) redhata δηλώνει γένους αρσενικού. Οπότε Χάιντι μάλλον έχεις άδικο
:-)

Το θέμα που έθεσα εγώ δεν ήταν ο έλεγχος εισόδου. Ήταν η σύγκριση των 2 αλγορίθμων για την πολλαπλή επιλογή. Φυσικά δε μιλάμε για το συγκεκριμένο παράδειγμα αλλά για τα πλεονεκτήματα και τα μειονεκτήματα των 2 τεχνικών.

Τώρα στο θέμα της εξέτασης.. . τι να πω;;; Απορώ γιατί το πήρες έτσι. Κουβέντα κάνουμε. Εγώ θα εξετάσω τον κόσμο; Άλλωστε η απάντηση δεν είναι υποχρεωτική.

Λίγο υπομονή και θα γράψω μια απάντηση που θα εξετάζει διάφορες πτυχές του θέματος.


redhata

Το γένος του redhata είναι δηλωμένο μια χαρά...  ;D
Η "εξέταση" είναι μέσα σε εισαγωγικά, αν το πρόσεξες, και δεν βρίσκω άλλον χαρακτηρισμό για το λόγο που έβαλες τη λάθος συνθήκη, από τη στιγμή που δήλωσες ότι ήταν εσκεμένο. Για να γίνω πιο κατανοητός και στον αλγ2 θα μπορούσε να υπάρχει μια λάθος συνθήκη αυτού του στυλ και να μην την προσέχαμε, έχοντας σαν δεδομένο ότι οι δύο αλγόριθμοι είναι γραμμένοι χωρίς λάθη στη σύνταξη των συνθηκών, αφού στην ουσία πάμε να συγκρίνουμε τεχνικές. Εκτός, τώρα που το σκέφτομαι, αν σε διακατέχει μια """μεροληψία""" υπέρ του αλγ2 και προσπαθείς με διάφορα τρικ να αποδείξεις ότι είναι καλύτερος...  Φυσικά κάνουμε κουβέντα και δεν εκνευριζόμαστε...  ;D ;D ;D
rEdHaTa