4.Ειδικά Θέματα ΑΕΠΠ

19
ΕΙΔΙΚΑ ΘΕΜΑΤΑ ΣΤΟ ΜΑΘΗΜΑ ‘ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ’ ΔΟΜΕΣ ΕΠΙΛΟΓΗΣ 1. Κλιμακωτές χρεώσεις Συνήθως υπολογισμό κλιμακωτών χρεώσεων συναντάμε σε ασκήσεις όπου μας ζητούν τον υπολογισμό κάποιας χρέωσης σε κάποιο λογαριασμό ή για τον υπολογισμό φόρου ή τόκου. Αυτό που συμβαίνει ουσιαστικά σε αυτές τις περιπτώσεις είναι ότι πρέπει για μία ενιαία ποσότητα να υπολογίσουμε ανα κλίμακες το πόσο που θα χρεώσουμε αυτή την ποσότητα. Άρα πρέπει πρώτα να πάρουμε περιπτώσεις για το ζήτημα ‘μέχρι πια κλίμακα φτάνει η ποσότητά μας’. Στο παρακάτω παράδειγμα εξηγούνται τα παραπάνω: Έστω ότι η χρέωση του ρεύματος χρεώνεται κλιμακωτά, σύμφωνα με το παρακάτω πινακάκι. Ο αλγόριθμος που θα αναπτυχθεί πρέπει να διαβάζει τον αριθμο κιλοβατώρων που καταναλώθηκαν από ένα νοικοκυριό, και να υπολογίζει τη συνολική χρέωση του λογαριασμού του. Σημείωνεται ότι το πάγιο του λογαριασμού είναι 15 ευρώ. Χρέωση Ρεύματος KWh Ευρώ/KWh 1 έως και 250 0,08 πάνω από 250 έως και 1000 0,13 πάνω από 1000 0,20 Επιμέλεια: Αντώνης Τζιλιβάκης

Transcript of 4.Ειδικά Θέματα ΑΕΠΠ

Page 1: 4.Ειδικά Θέματα ΑΕΠΠ

ΕΙΔΙΚΑ ΘΕΜΑΤΑ

ΣΤΟ ΜΑΘΗΜΑ ‘ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ’

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

1. Κλιμακωτές χρεώσεις Συνήθως υπολογισμό κλιμακωτών χρεώσεων συναντάμε σε ασκήσεις όπου μας

ζητούν τον υπολογισμό κάποιας χρέωσης σε κάποιο λογαριασμό ή για τον

υπολογισμό φόρου ή τόκου. Αυτό που συμβαίνει ουσιαστικά σε αυτές τις

περιπτώσεις είναι ότι πρέπει για μία ενιαία ποσότητα να υπολογίσουμε ανα

κλίμακες το πόσο που θα χρεώσουμε αυτή την ποσότητα. Άρα πρέπει πρώτα να

πάρουμε περιπτώσεις για το ζήτημα ‘μέχρι πια κλίμακα φτάνει η ποσότητά μας’.

Στο παρακάτω παράδειγμα εξηγούνται τα παραπάνω:

Έστω ότι η χρέωση του ρεύματος χρεώνεται κλιμακωτά, σύμφωνα με το παρακάτω

πινακάκι. Ο αλγόριθμος που θα αναπτυχθεί πρέπει να διαβάζει τον αριθμο

κιλοβατώρων που καταναλώθηκαν από ένα νοικοκυριό, και να υπολογίζει τη

συνολική χρέωση του λογαριασμού του. Σημείωνεται ότι το πάγιο του λογαριασμού

είναι 15 ευρώ.

Χρέωση Ρεύματος

KWh Ευρώ/KWh

1 έως και 250 0,08

πάνω από 250 έως και 1000 0,13

πάνω από 1000 0,20

Αλγόριθμος ΚλιμακωτέςΔιάβασε κιλοβατώρεςπάγιο←15Αν κιλοβατώρες<250 τότε

χρέωση ← κιλοβατώρες*0.08Αλλιώς_αν κιλοβατώρες<1000 τότε

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 2: 4.Ειδικά Θέματα ΑΕΠΠ

χρέωση ← 250*0.08+(κιλοβατώρες-250)*0.13Αλλιώς

χρέωση ← 250*0.08+750*0.13+( κιλοβατώρες-1000)*0.2Τέλος_ανΣυνολική←χρέωση+πάγιοΤέλος Κλιμακωτές

Σχολιασμός

Για τη χρέωση του ρεύματος έχουμε τρεις κλίμακες. Η χρέωση του ρεύματος είναι

μία. 3 κλίμακες σημαίνει τρεις περιπτώσεις άρα μια πολλαπλή Αν.

Πάντα η χρέωση για τον υπολογισμό της πρώτης κλίμακας είναι η πιο απλή, δηλαδή

όσος είναι ο αριθμός των κιλοβατώρων (που θα είναι αποθηκευμένος στη

μεταβλητη κιλοβατώρες) επί το πόσο χρεώνονται σύμφωνα με το πινακάκι, στο

παραδειγμά μας χρεώνονται 0.08.

Άρα πρώτη κλίμακα: κιλοβατώρες*0.08

Π.χ αν είχαν καταναλώσει 50 κιλοβατώρες θα είμασταν στην πρώτη κλίμακα,άρα

θα χρεώνονταν με 50*0.08 ευρώ.

Δεύτερη κλίμακα: 250*0.08+(κιλοβατώρες-250)*0.13

Π.χ αν είχαν καταναλώσει 350 κιλοβατώρες θα είμασταν στη δεύτερη κλίμακα,άρα

θα χρεώνονταν με 250*0.08 ευρώ +100*0.13.Δηλαδή οι πρώτες 250 ότι και να γίνει

χρεώνονται με 0.08 και οι υπόλοιπες πέραν των 250 με 0.13.

Τρίτη κλίμακα: 250*0.08+750*0.13+( κιλοβατώρες-1000)*0.2

Π.χ αν είχαν καταναλώσει 1350 κιλοβατώρες θα είμασταν στην τρίτη κλίμακα,άρα

θα χρεώνονταν με 250*0.08 ευρώ +750*0.13+350*0.2.Δηλαδή οι πρώτες 250 ότι

και να γίνει χρεώνονται με 0.08, οι επόμενες από τις 250 μέχρι τις 1000 δλδ οι 750

χρεώνονται ότι και να γίνει με 0.13 και οι υπόλοιπες που στο παράδειγμά μας είναι

350, θα χρεωθούν με 0.2.

Στο τέλος του αλγορίθμου απλά προσθέτουμε στη συνολική χρέωσή μας το πάγιο

(κάτι που αφορά τη συγκεκριμένη άσκηση).

ΠΡΟΣΟΧΗ: Αν η εκφώνηση της άσκησης μας έλεγε ότι έχουμε κλιμακούμενη

χρέωση τότε για τον υπολογισμό της ζητούμενης ποσότητας θα κάναμε απλά ένα

πολ/σμο σε κάθε περίπτωση.Π.χ παραπάνω σε κάθε περίπτωση θα έπρεπε να

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

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 3: 4.Ειδικά Θέματα ΑΕΠΠ

αντιστοιχούσε στο πινακάκι.Δηλαδή αν είχαμε 1350 κιλοβατώρες η χρέωση θα

ήταν 1350*0.2 ή αν είχαμε 750, η χρέωση θα ήταν 750*0.13 (όλες δλδ θα

χρεωνόντουσαν το ίδιο).

2. Μενού επιλογών

Στην περίπτωση που η άσκηση μας ζητά να εμφανίζεται ένα μενού επιλογών.

Παράδειγμα

Να αναπτύξετε αλγόριθμο ο οποίος κατά την εκτέλεσή του θα εμφανίζει στην οθόνη

ένα μενού δυο επιλογών το οποίο θα δίνει στο χρήστη τη δυνατότητα να επιλέξει τη

λειτουργία που θέλει να εκτελέσει με τα κατάλληλα μηνύματα . Το μενού θα έχει

την παρακάτω μορφή:

1. Υπολογισμός λογαριασμού ΔΕΗ

2. Υπολογισμός φόρου

Πληκτρολογήστε τον αριθμό της επιλογής σας

Στη συνέχεια θα διαβάζει την επιλογή του χρήστη.

Αν ο χρήστης πληκτρολογήσει «1» ο αλγόριθμος θα ζητάει την κατανάλωση

ρεύματος και τα τετραγωνικά μέτρα του διαμερίσματος και θα υπολογίζει και θα

εμφανίζει τη μηνιαία χρέωση για τη ΔΕΗ,

Αν ο χρήστης πληκτρολογήσει «2» ο αλγόριθμος θα ζητάει το ετήσιο εισόδημα του

χρήστη και θα υπολογίζει και θα εμφανίζει το φόρο εισοδήματος.

................................................................................................(συνεχίζεται)

Τα σημεία που πρέπει να προσέξουμε είναι τα εξής:

1) Να εμφανίσουμε το μενού επιλογών όπως μας το δίνει η εκφώνηση

..........................

Εμφάνισε ‘1.Υπολογισμός λογαριασμού ΔΕΗ’ Εμφάνισε ‘2. Υπολογισμός φόρου’ Εμφάνισε ‘Πληκτρολογήστε τον αριθμό της επιλογής σας’.............................

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 4: 4.Ειδικά Θέματα ΑΕΠΠ

Άρα το μόνο που πρέπει να κάνετε είναι να βάλετε μια ξεχωριστή εντολή εμφάνισε

για κάθε γραμμή του μενου επιλογών και ότι λόγια υπάρχουν να περιέχονται σε

εισαγωγικά

2) Πρέπει να ορίσουμε μια μεταβλητή, έστω Επιλογή, η οποία θα παίρνει τιμή από

τον χρήστη (άρα με Διάβασε)

.........................

Διάβασε Επιλογή

.........................

3) Ανάλογα με την επιλογή του χρήστη θα πρέπει να παίρνουμε περιπτώσεις και

άρα να εκτελούνται οι ανάλογες εντολές.

Στο παράδειγμά μας, δεδομένου ότι το μενού επιλογών έχει 2 περιπτώσεις,

αρκεί μια σύνθετη Αν, η οποία θα είχε την παρακάτω δομή:

Αν Επιλογή=1 τότε

Εντολή 1

Εντολή 2

...

Εντολή ν

Αλλιώς

Εντολή 1

Εντολή 2

...

Εντολή ν

Τέλος_Αν

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 5: 4.Ειδικά Θέματα ΑΕΠΠ

ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ

3. Παρατηρήσεις στις δομές επανάληψης Στις εντολές Όσο και Μέχρις_ότου πρέπει να μεταβάλλουμε την τιμή της συνθήκης

μέσα στην ομάδα εντολών, ενώ στη Για η μεταβλητή ελέγχου αυξάνεται ή

ελαττώνεται αυτόματα, ανάλογα με το βήμα.

Στην εντολη Όσο η ομάδα εντολών εκτελείται όσο η συνθήκη είναι αληθής, ενώ στη

Μέχρις_ότου, όσο η συνθήκη είναι ψευδής

Στις εντολές Όσο και Για υπάρχει περίπτωση η ομάδα εντολών που περιέχουν να

μην εκτελεστεί όυτε μια φορά. Αν η συνθήκη στην Όσο είναι ψευδής, ενώ στη Για

αν η αρχική τιμή της μεταβλητής ελέγχου είναι μεγαλύτερη από την τελική τιμή και

έχουμε θετικό βήμα, ή αρχική τιμή της μεταβλητής ελέγχου μικρότερη από την

τελική και αρνητικό βήμα.

Παραδείγματα

1) Για ι από 10 μέχρι 1Εμφάνισε ι

Τέλος_επανάληψης2) Για ι από 5 μέχρι 10 με βήμα -1

Εμφάνισε ιΤέλος_επανάληψης

3) γ←5Όσο γ>=10 επανάλαβε

γ←γ+3Τέλος_επανάληψης

Στην Μέχρις_ότου η ομάδα εντολών θα εκτελεστεί τουλάχιστον μια φορά

Στην εντολή Όσο είναι απαραίτητο να δώσουμε αρχικές τιμές σε όσες μεταβλητές

χρησιμοποιούνται στη συνθήκη, πριν από την είσοδο του αλγορίθμου στην

επαναληπτική δομή, ενώ στη Για η μεταβλητή ελέγχου παίρνει αυτόματα την

αρχική τιμή που προσδιορίζεται στο τμήμα από.

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 6: 4.Ειδικά Θέματα ΑΕΠΠ

Η δομή επανάληψης Για χρησιμοποιείται όταν είναι γνωστό το πλήθος των

επαναλήψεων, ενώ οι δομές Όσο…επανάλαβε και Μέχρις_Ότου όταν δε

γνωρίζουμε το πλήθος των επαναλήψεων.

4. Τεχνικές ανάπτυξης αλγορίθμων με χρήση δομών επανάληψης

Α)Διάβασμα πλήθους στοιχείων

Όταν χρειαζόμαστε για τις ανάγκες του αλγορίθμου που δημιουργούμε, να

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

συμβολίζουν ένα ίδιο πράγμα) χρησιμοποιούμε δομές επανάληψης αντί να

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

10 αριθμούς.

Διακρίνουμε 2 περιπτώσεις

1)Διάβασμα συγκεκριμένου πλήθους στοιχείων

Σ’ αυτή την περίπτωση χρησιμοποιούμε τη δομή Για.

Έστω ότι πρέπει να διαβάσουμε τους βαθμούς 10 μαθητών

Για ι από 1 μέχρι 10 Διάβασε βαθμός

Τέλος_επανάληψηςΉ αν έπρεπε να διαβάσουμε τους βαθμούς Ν μαθητών, όπου το Ν θα το έπαιρνε ο

αλγόριθμός μας από το χρήστη, οπότε και σε αυτή την περίπτωση το πλήθος των

στοιχείων που χρειαζόμαστε είναι συγκεκριμένο.

Διάβασε ΝΓια ι από 1 μέχρι Ν

Διάβασε βαθμόςΤέλος_επανάληψης2)Διάβασμα άγνωστου πλήθους στοιχείων

Σ’ αυτή την περίπτωση χρησιμοποιούμε τη δομή Όσο.

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 7: 4.Ειδικά Θέματα ΑΕΠΠ

Σε αυτές τις περιπτώσεις στη συνθήκη της Όσο χρησιμοποιούμε μια μεταβλητή

‘φρουρό’, όπου βάσει κάποιας τιμής που θα πάρει θα σηματοδοτήσει το τέλος του

διαβάσματος στοιχείων.

Έστω ότι μας ζητά ο αλγόριθμος να διαβάζουμε αριθμούς άγνωστου πλήθους, μέχρι ο χρήστης να δώσει την τιμή 0.

Διάβασε αριθμόςΌσο αριθμός<>0 επανάλαβε

Διάβασε αριθμόςΤέλος_επανάληψης

Προσοχή: Είναι απαραίτητη η εντολή διάβασε έξω από την Όσο, ώστε να πάρει μια

αρχική τιμή η μεταβλητή αριθμός και να ελεγθεί μόλις ‘μπούμε’ στην Όσο. Αν η

τιμή είναι διάφορη του 0 θα εκτελεστούν οι εντολές που βρίσκονται στη δομή Όσο.

Σημαντικό: Προφανώς για τις ανάγκες του αλγορίθμου μας δεν χρειάζεται να

είναι αποθηκευμένα όλα τα στοιχεία από την αρχή μέχρι το τέλος του. Γι’αυτό και

χρειαζόμαστε μόνο μία μεταβλητή, στην οποία θα αποθηκεύουμε σε κάθε

επανάληψη μια τιμή, θα την επεξεργαζόμαστε ανάλογα με τις ανάγκες της

άσκησης, θα κάνουμε ότι έχουμε να κάνουμε δηλαδή με αυτή την τιμή, και έπειτα

στην επόμενη επανάληψη, στην ίδια μεταβλητή, θα αποθηκεύουμε άλλη τιμή και

ούτω καθεξής.

Β)Μέτρηση πλήθους στοιχείων

Για να μετρηθεί το πλήθος των στοιχείων ενός συνόλου (για παράδειγμα το πλήθος

των τιμών που έχει διαβάσει ο αλγόριθμος, το πλήθος των θετικών τιμών που θα

διαβασθούν κλπ), χρησιμοποιούμε μια μεταβλητή που καλείται ‘μετρητής’, στην

οποία δίνεται συνήθως αρχική τιμή 0 και αυξάνεται κατά ένα, κάθε φορά που

προστίθεται ένα στοιχείο στο σύνολο που μας ενδιαφέρει να μετρήσουμε.

Αυτή η τεχνική χρειάζεται όταν διαβάζουμε άγνωστου πλήθους στοιχεία, οπότε

χρησιμοποιούμε τον ‘μετρητή’ για να ‘κρατάει’ ο αλγόριθμος το πλήθος.

2 Περιπτώσεις

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 8: 4.Ειδικά Θέματα ΑΕΠΠ

1)Μέτρηση άγνωστου πλήθους στοιχείων

μετρητής←0Διάβασε αριθμόςΌσο αριθμός<>0 επανάλαβε

μετρητής←μετρητής+1Διάβασε αριθμός

Τέλος_επανάληψηςΤο παραπάνω τμήμα αλγορίθμου διαβάζει αριθμούς διάφορους του μηδέν και

υπολογίζει το πλήθος τους. Προσοχή, η αύξηση της μεταβλητής μετρητής πρέπει να

γίνει πριν την επόμενη ανάγνωση αριθμού.

2)Μέτρηση πλήθους υπό συνθήκη

Ανάλογα με το τι μου ζητά η άσκηση πιθανόν να πρέπει να υπολογίσω κάποιο

σύνολο, διαφορετικό από το ολικό. Για παράδειγμα θα μου ζητουσε να υπολογίσω

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

μετρητής←0Διάβασε αριθμόςΌσο αριθμός<>0 επανάλαβε

Αν αριθμός>0 τότεμετρητής←μετρητής+1

Τέλος_ΑνΔιάβασε αριθμός

Τέλος_επανάληψης

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

υπολογίζει το πλήθος των θετικών που θα διαβαστούν.

Ερώτηση: Αν η άσκηση μου ζητούσε να υπολογίσω το ποσοστό των θετικών

αριθμών πως θα διαμορφωνόταν το παραπάνω τμήμα αλγόριθμου;

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 9: 4.Ειδικά Θέματα ΑΕΠΠ

5. Υπολογισμός αθρόισματος (ή γινομένου)

Για να υπολογίσουμε το άθροισμα ενός συνόλου αριθμών:

1)Ορίζουμε μια μεταβλητή άθροισμα πριν από τη δομή επανάληψης. Την

αρχικοποιούμε συνήθως με 0 (όχι πάντα, προσοχή,η εκφώνηση μπορέι να μας

οδηγέι σε διαφορετική αρχικοποίηση ορισμένες φορές).

2)Εντός της δομής επανάληψης θα εκτελείται μια εντολη της μορφής:

άθροισμα←άθροισμα+αριθμός

*Ανάλογα για γινόμενο θα είχαμε μια εντολή της μορφής:

γινόμενο←γινόμενο*αριθμός

*Και σε αυτή την κατηγορία ασκήσεων η εκφώνηση μπορέι να μην είναι προφανής,

αλλά να μας παραπέμπει στον υπολογισμό ενός αθροίσματος

Παράδειγμα

Ο ταμίας σε ένα super market διαβάζει την τιμή και τον κωδικό ενός προιόντος για

κάθε προιόν που αγοράζει ένας πελάτης ώστε να καταχωρηθούν στην ταμειακή

απόδειξη. Όταν ολοκληρωθεί η καταχώρηση για τη συνολική αγορά ενός πελάτη,

τότε εισάγεται ο κωδικός 0. Να εκτυπωθεί το συνολικό ποσό της αγοράς του πελάτη.

Για την επίλυση του προβλήματος πρέπει να διαβάζονται οι κωδικοί και οι τιμές των

προϊόντων μέχρι την εισαγωγή του κωδικού 0. Εδώ το άθροισμά μας είναι το

συνολικό ποσό αγοράς.

Αλγόριθμος Ταμίας   σύνολο ←  0   Διάβασε κωδικός   Όσο κωδικός<>0 επανάλαβε      Διάβασε τιμή       σύνολο ← σύνολο + τιμή       Διάβασε κωδικός   Τέλος_Επανάληψης

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 10: 4.Ειδικά Θέματα ΑΕΠΠ

   Εκτύπωσε σύνολο Τέλος Ταμίας 

6. Υπολογισμός Μέσου όρου

Για τον υπολογισμό μέσου όρου ενός συνόλου, χρειάζεται το άθροισμα ενός

συνόλου. Το υπολογίζουμε όπως στην παράγραφο 5. Επιπρόσθετα

χρειαζόμαστε το πλήθος του συνόλου. Αν δε γνωρίζουμε το πλήθος το

μετράμε όπως στην παράγραφο 4β που περιγράφουμε παραπάνω.

Παράδειγμα

Να γραφεί αλγόριθμος, ο οποίος να διαβάζει πραγματικούς αριθμούς μέχρι

να διαβαστεί ο αριθμός μηδέν και στη συνέχεια να υπολογίζει και να

εμφανίζει το μέσο όρο τους.

Αλγόριθμος μέσος_όροςάθροισμα←0πλήθος←0Διάβασε αριθμόςΌσο αριθμός<>0 επανάλαβε

πλήθος←πλήθος+1άθροισμα←άθροισμα+αριθμόςΔιάβασε αριθμόςΤέλος_επανάληψηςΑν πλήθος<>0 τότε

Μέσος_όρος←άθροισμα/πλήθοςΤέλος_Αν

Τέλος μέσος_όρος

Σχολιασμός: Ο μέσος όρος πρέπει να υπολογίζεται μετά το τέλος της δομής

επανάληψης. Η δομή επιλογής χρείαζεται για την περίπτωση που διαβάστηκε σαν

πρώτος αριθμός ο αριθμός μηδέν (θα παρέμενε το πλήθος =0 και δεν θα ηταν

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

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 11: 4.Ειδικά Θέματα ΑΕΠΠ

την ενσωμάτωση του, ανάλογα με την περιγραφή της άσκησης.

7. Υπολογισμός Μέγιστου – Ελάχιστου

Σε πολλά προβλήματα ζητείται ο υπολογισμός του μέγιστου, του ελάχιστου ή και

των 2 , από ένα σύνολο αριθμών. Άλλες φορές με εκφωνήσεις που το ζητούν με τον

παραπάνω σαφή τρόπο και άλλες χρείαζεται να κατανοήσουμε μέσω της

εκφώνησης ότι ουσιαστικά έχουμε ένα πρόβλημα μέγιστου-ελάχιστου και άρα να το

αναγάγουμε σε αυτή τη μεθοδολογία.

Για να λυθούν οι ασκήσεις της κατηγορίας χρείαζεται μια δομή επανάληψης.

Τα βήματα που ακολουθούμε είναι:

1)Ορίζουμε μια μεταβλητή με όνομα max ή min (ή κάτι παρεμφερές ανάλογα με την

περιγραφή της άσκησης) αντίστοιχα αν αναζητούμε μέγιστο ή ελάχιστο.

2)Οι μεταβλητές max,min πρέπει να πάρουν αρχική τιμή πριν από την έναρξη της

δομής επανάληψης. Οπότε δεν θα δώσουμε κάποια τυχαία τιμή. Θα διαβάσουμε

τον πρώτο αριθμό του συνόλου που θα διερευνήσουμε και αφότου συμβεί αυτό

θέτουμε σαν μέγιστο ή ελάχιστο τον πρώτο αριθμό.

Π.χ

Διάβασε αριθμόςμέγιστος←αριθμός

3) Έπειτα, θα ανοίξουμε μια δομή επανάληψης (όποια ταιριάζει στο πρόβλημα), και

μέσα σε αυτή, σε κάθε επανάληψη θα διαβάζουμε έναν νέο αριθμό και θα

ελέγχουμε αν η τιμή του νέου αριθμού είναι μεγαλύτερη από την τιμή της

μεταβλητής max (αν αναζητούμε το μέγιστο) ή αν είναι μικρότερη από την τιμή min

(αν αναζητούμε το ελάχιστο). Αν όντως ισχύει αυτό, τότε στην max ή στη min

τοποθετούμε την τιμή του τελευταίου αριθμού που διαβάστηκε, διαφορετικά

αφήνουμε τα πράγματα ως έχουν.

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 12: 4.Ειδικά Θέματα ΑΕΠΠ

Παράδειγμα

Μας ζητούν να αναπτύξουμε αλγόριθμο που διαβάζει 20 αριθμούς και υπολογίζει

τον μέγιστο και τον ελάχιστο αριθμό από αυτούς τους 20.

Αλγόριθμος μεγ_ελαχ

Διάβασε αριθμός !Διαβάζω τον πρώτο αριθμό

μέγιστος←αριθμόςελάχιστος←αριθμός

Για ι από 2 μέχρι 20 !Διαβάζω τους υπόλοιπους αριθμούς

Διάβασε αριθμός

Αν αριθμός>μεγιστος τότε

μέγιστος←αριθμός !Στη μεταβλητή μέγιστος θα βρίσκεταιΤέλος_Αν !ανά πάσα στιγμή ο μέχρι στιγμής μέγιστος

Αν αριθμός<ελάχιστος τότε

ελάχιστος←αριθμός !Στη μεταβλητή ελάχιστος θα βρίσκεται η

Τέλος_Αν ! ελάχιστη τιμή από όσες έχουν διαβαστεί ως τώρα

Τέλος_επανάληψηςΤέλος μεγ_ελαχ

Ένα παράδειγμα εκφώνησης που δεν μας ζητα προφανώς μέγιστο ή ελάχιστο αλλά

το υποννοέι θα ήταν:

Να αναπτύξετε αλγόριθμο οποίος θα διαβάζει τις θερμοκρασίες που μετρήθηκαν

κατά τη διάρκεια ενός μήνα στην πόλη Σαντιάγο της Χιλής και να εκτυπώνει ποια

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 13: 4.Ειδικά Θέματα ΑΕΠΠ

ημέρα του μήνα ήταν η πιο ζεστή (θεωρούμε ότι ο μήνας έχει 30 ημέρες).

ΣΗΜΕΙΩΣΗ: Αν μας ζητείται πέραν από τον υπολογισμό του ελάχιστου ή του

μέγιστου, και η θέση του μέγιστου ή του ελάχιστου στο σύνολο μας, θα πρέπει να

ορίσουμε μια επιπλέον μεταβλητή θέση (ή δύο επιπλέον αν μας ζητούνται και το

μέγιστο και το ελάχιστο και οι θέσεις τους στο σύνολο μας). Θα την αρχικοποιούμε

έξω από τη δομή επανάληψης με τον αριθμό 1 και όποτε διαβάζεται μια ποσότητα

που ξεπερνά το μέγιστο ή υπολείπεται από το ελάχιστο θα κρατάμε στη θέση τη

σειρά ανάγνωσης της ποσότητας.

Παράδειγμα

Μας ζητούν να αναπτύξουμε αλγόριθμο που διαβάζει 20 αριθμούς, υπολογίζει τον

μέγιστο αριθμό από τους 20 και εκτυπώνει τη σειρά με την οποία διαβάστηκε ο

μέγιστος .

Αλγόριθμος μεγ

Διάβασε αριθμός !Διαβάζω τον πρώτο αριθμό

μέγιστος←αριθμόςθέση←1 !Ο τρέχων μέγιστος διαβάστηκε πρώτος

Για ι από 2 μέχρι 20 !Διαβάζω τους υπόλοιπους αριθμούς

Διάβασε αριθμός

Αν αριθμός>μεγιστος τότε

μέγιστος←αριθμός !Στη μεταβλητή μέγιστος θα βρίσκεται !ανά πάσα στιγμή ο μέχρι στιγμής μέγιστος

θέση←ι !Η σειρά με την οποία διαβάστηκε ο μέγιστος είναι πλέον η ι

Τέλος_ΑνΤέλος_επανάληψηςΕκτύπωσε ‘Μέγιστος είναι ο’, ι , ‘οστος αριθμός που έδωσε ο χρήστης’

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 14: 4.Ειδικά Θέματα ΑΕΠΠ

Τέλος μεγ

8. Έλεγχος ορθής καταχώρησης δεδομένων

Έλεγχος καταχώρησης δεδομένων ή έλεγχος εισόδου τιμών, είναι μια διαδικασία

που διασφαλίζει ότι ο αλγόριθμός μας θα επιτελέσει τη λειτουργία για την οποία

αναπτύχθηκε, ακόμα κι αν ο χρήστης λόγω βιασύνης ή παράλειψης δεν εισάγει

σωστές τιμές εισόδου.

Οι έγκυρες τιμές για τις μεταβλητές εισόδου θα περιγράφονται ουσιαστικά στην

εκφώνηση της άσκησης (ή θα αφορούν προφανείς τιμές για κάποιες ποσότητες και

άρα θα υποννοούνται). Σε κάποιες ασκήσεις υπάρχει η περίπτωση να μας λέει η

εκφώνηση να παραλέιψουμε αυτόν τον έλεγχο, διαφορετικά θα πρέπει να γίνεται σε

κάθε περίπτωση που χρειάζεται.

Ας δούμε ένα παράδειγμα όπου δεν απαιτείται έλεγχος τιμών

Να γίνει αλγόριθμος που να διαβάζει τους βαθμούς 12 μαθητών και να υπολογίζει το

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

Αλγόριθμος έλεγχοςΣύνολο←0Για i από 1 μέχρι 12

Διάβασε ΒΑΘΜΟΣΣύνολο ← Σύνολο + ΒΑΘΜΟΣ

Τέλος_επανάληψηςΜΟ ←Σύνολο / 12Εμφάνισε “Ο μέσος όρος των βαθμών είναι: ”, ΜΟΤέλος έλεγχος

Έστω ότι η εκφώνηση δεν μας έλεγε να παραλείψουμε τον έλεγχο ορθής

καταχώρησης. Για τον έλεγχο των τιμών που εισάγονται χρησιμοποιούμε μία δομή

επανάληψης ,η οποία ξαναζητάει την εισαγωγή της τιμής όσο δεν δίνεται η σωστή.

Να γίνει αλγόριθμος που να διαβάζει τους βαθμούς 12 μαθητών και να υπολογίζει το

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

Επιμέλεια: Αντώνης Τζιλιβάκης

Page 15: 4.Ειδικά Θέματα ΑΕΠΠ

από 1 μέχρι 20.

Αλγόριθμος έλεγχοςΣύνολο←0Για i από 1 μέχρι 12

Αρχή_επανάληψηςΔιάβασε ΒΑΘΜΟΣ

Μέχρις_ότου (ΒΑΘΜΟΣ > 0) και (ΒΑΘΜΟΣ <21)Σύνολο Σύνολο + ΒΑΘΜΟΣ

Τέλος_επανάληψηςΜΟ Σύνολο / 12Εμφάνισε “Ο μέσος όρος των βαθμών είναι: ”, ΜΟΤέλος έλεγχος

Ο ίδιος έλεγχος μπορεί να γίνει και με την άλλη δομή επανάληψης,την Όσο.

Συνίσταται για αυτή τη δουλειά, η Μέχρις_ότου.

Είναι καλό, να μη μπερδεύουμε τον έλεγχο εισαγόμενων τιμών με οποιονδήποτε

άλλον έλεγχο που απαιτεί το πρόγραμμά μας. Πρώτα θα

γίνεται ο έλεγχος των εισαγόμενων τιμών και μετά οποιοσδήποτε άλλος

έλεγχος σε αυτές τις τιμές, σύμφωνα με τις απαιτήσεις του προγράμματός μας.

Επιμέλεια: Αντώνης Τζιλιβάκης