14
Μ ΕΘΟΔΟΛΟΓΙΑ Α ΣΚΗΣΕΩΝ Ο κυριότερος στόχος της εκπαίδευσης δεν είναι η γνώση, αλλά η δράση. ~ Herbert Spencer. Κρούσκα Α., ΠΕ19 [email protected] 2011 – 12

, 19 krouska [email protected] 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ

Ο κυριότερος στόχος της εκπαίδευσης δεν είναι η γνώση, αλλά η δράση. ~ Herbert Spencer.

Κρούσκα Α., ΠΕ19 [email protected]

2011 – 12

Page 2: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

Περιεχόμενα 1. Είσοδος ∆εδομένων _________________________________________________________1 2. Έλεγχος Τιμών / Εγκυρότητα ∆εδομένων _________________________________________ 2 3. Έλεγχος Ιδιότητας _________________________________________________________ 2 4. Σύγκριση Αριθμών (Μέγιστο – Ελάχιστο) _________________________________________ 3 5. Υπολογισμός Μεγεθών (Πλήθος – Άθροισμα – Γινόμενο – ΜΟ – Ποσοστό) __________________ 3 6. Υπολογισμός Ποσοστών Ποσού (ΦΠΑ – Έκπτωση – Αύξηση) ___________________________ 4 7. Κλιμακωτή Χρέωση _________________________________________________________ 4 8. Επεξεργασία Αριθμών (Ψηφία – ∆ιάσπαση – ∆εκαδικό Μέρος – Άρτιος/Περιττός) _____________ 5 9. Υπολογισμός Ακολουθίας ____________________________________________________ 6 10. Αναζήτηση Στοιχείων Πίνακα ________________________________________________ 6 11. Ταξινόμηση Πίνακα ________________________________________________________ 7 12. Επεξεργασία Πίνακα _______________________________________________________ 9 13. Υποπρογράμματα _________________________________________________________ 11

Page 3: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 1. Είσοδος ∆εδομένων

Άγνωστο Πλήθος Τιμών Στις ασκήσεις όπου πρέπει να διαβάσουμε ένα άγνωστο πλήθος αριθμών ή αλφαριθμητικών τιμών, χρησιμοποιούμε συνήθως την δομή Όσο και θα κάνουμε τα εξής βήματα:

a. Την πρώτη τιμή θα την διαβάζουμε πριν την επανάληψη, για να μπορεί να γίνει ο έλεγχος στην αρχή της επανάληψης.

b. Στο εσωτερικό της επανάληψης θα εκτελούνται οι απαραίτητες ενέργειες για την τιμή της μεταβλητής.

c. Ως τελευταία εντολή του βρόχου, θα διαβάζεται η επόμενη τιμή και θα εισάγεται στην ίδια μεταβλητή. Έτσι όταν επανέλθουμε στην συνθήκη της επανάληψης ελέγχεται η τιμή αυτή της μεταβλητής.

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα 3 (Ημ. 2007), Ερώτημα α

∆εδομένο Πλήθος Τιμών Στις ασκήσεις όπου πρέπει να διαβάσουμε ένα δεδομένο πλήθος αριθμών ή αλφαριθμητικών τιμών, χρησιμοποιούμε συνήθως την δομή Για. Το αν την πρώτη τιμή θα την διαβάσουμε πριν ή μέσα στην επανάληψη εξαρτάται από το πρόβλημα και συγκεκριμένα αν θέλουμε να αρχικοποιήσουμε κάποια μεταβλητή (π.χ. μέγιστο ή ελάχιστο).

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα Γ (Ημ. 2010), Ερώτημα Γ2

Αποθήκευση ∆εδομένων σε πίνακα Βασική προυπόθεση για να αποθηκευτούν τα δεδομένα σε πίνακα είναι να γνωρίζουμε εκ των προτέρων το πλήθος τους (εκτός αν πρόκειται για αλγόριθμο που δεν δηλώνουμε το μέγεθος του πίνακα). Οι περιπτώσεις στις οποίες χρησιμοποιούμε πίνακα για την αποθήκευση των δεδομένων μας είναι η εξής:

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

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

3. Όταν σε μια άσκηση ζητείται ο υπολογισμός πολλών πραγμάτων τα οποία εξαρτώνται από τις τιμές εισόδου και δεν μπορούν να υπολογιστούν ταυτόχρονα – κατά την είσοδο των δεδομένων.

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα Γ (Ημ. 2010), Δεν απαιτείται η χρήση πίνακα − Πρότυπες Ασκήσεις: Θέμα 3 (Ημ. 2008), Δεν απαιτείται η χρήση πίνακα − Πρότυπες Ασκήσεις: Θέμα Γ (Ημ. 2010), Απαιτείται η χρήση πίνακα

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 1

Page 4: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

− Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2009), Ζητείται η χρήση πίνακα − Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2008), Ζητείται η χρήση πίνακα 2. Έλεγχος Τιμών / Εγκυρότητα ∆εδομένων

Για τον έλεγχο των τιμών που εισάγονται χρησιμοποιούμε μία επανάληψη (Μέχρις_ότου ή Όσο) η οποία ξαναζητάει την εισαγωγή της τιμής όσο δεν δίνεται η σωστή. Η δομή επανάληψης που κυρίως προτιμάται είναι η Μέχρις_ότου.

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

Παράδειγμα: − Τμήμα αλγορίθμου που απαιτεί από τον χρήστη να δώσει ένα θετικό αριθμό. Δηλ. Αν κατά

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

Αρχή_Επανάληψης Εμφάνισε “Δώσε ένα θετικό αριθμό” Διάβασε χ Μέχρις_ότου χ>=0

Εμφάνισε “Δώσε ένα θετικό αριθμό” Διάβασε χ Όσο χ<0 επανάλαβε

Εμφάνισε “Λάθος εισαγωγή, πρέπει να είναι θετικός”

Διάβασε χ Τέλος_επανάληψης

− Πρότυπες Ασκήσεις: Θέμα Γ (Ημ. 2010), Ερώτημα Γ1 − Πρότυπες Ασκήσεις: Θέμα 4 Ημ2009, Ερώτημα 2 − Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2008) Ερώτημα β 3. Έλεγχος Ιδιότητας

Όταν επιθυμούμε να ελέγξουμε αν ένας πίνακας (ή ένα πλήθος δεδομένων) έχει μια ιδιότητα, χρησιμοποιούμε μια βοηθητική λογική μεταβλητή (σημαία – flag). Τα βήματα που ακολουθούμε είναι τα εξής:

1. Θεωρούμε στην αρχή ότι ο πίνακας (ή τα δεδομένα) έχει την ιδιότητα, εκχωρώντας στην λογική μεταβλητή την τιμή ΑΛΗΘΗΣ.

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 2

2. Ελέγχουμε (με τη χρήση κάποιας δομής επανάληψης) ένα προς ένα τα στοιχεία του πίνακα (ή τα δεδομένα μας) και αν κάποιο από αυτά δεν έχει τα χαρακτηριστικά που απαιτούνται για να έχει ο πίνακας (ή τα δεδομένα μας) την ζητούμενη ιδιότητα, τότε θέτουμε στη λογική μεταβλητή την τιμή ΨΕΥ∆ΗΣ.

3. Στο τέλος του ελέγχου όλων των στοιχείων (δηλαδή μετά την επανάληψη), ελέγχουμε την λογική μεταβλητή. Αν είναι ΑΛΗΘΗΣ σημαίνει ότι δεν βρέθηκε κάποιο στοιχείο το οποίο δεν έχει τα απαιτούμενα χαρακτηριστικά, οπότε ο πίνακας έχει τη ζητούμενη ιδιότητα. ∆ιαφορετικά, αν δηλαδή η λογική μεταβλητή είναι ΨΕΥ∆ΗΣ, τότε ο πίνακας δεν έχει τη ζητούμενη ιδιότητα.

Page 5: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

Παρατήρηση: Σε ορισμένες περιπτώσεις, αν βρεθεί κάποιο στοιχείο που δεν πληρεί την ζητούμενη ιδιότητα, δηλαδή η λογική μεταβλητή πάρει την τιμή ΨΕΥ∆ΗΣ, τότε δεν χρειάζεται να συνεχίσουμε τον έλεγχο των υπόλοιπων στοιχείων. Κάτι τέτοιο είναι εφικτό αν χρησιμοποιήσουμε την δομή επανάληψης Όσο. Έτσι, η επανάληψη θα εκτελείται όσο δεν έχουμε φτάσει στο τέλος του πίνακα (ή των δεδομένων μας) και η λογική μεταβλητή είναι ΑΛΗΘΗΣ.

Παράδειγμα: − Πρότυπες Ασκήσεις: Θεμα Γ (Ημ. 2010), Ερώτημα Γ4

4. Σύγκριση Αριθμών (Μέγιστο – Ελάχιστο)

Για την εύρεση ελάχιστου (ή μεγίστου) ακολουθούμε τον παρακάτω αλγόριθμο: − Θεωρούμε μία αρχική τιμή ως ελάχιστη (ή μέγιστη, αντίστοιχα). Αυτή μπορεί να είναι

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

− Συγκρίνουμε όλες τις υπόλοιπες τιμές με την ελάχιστη (ή μέγιστη, αντίστοιχα) − Αν βρεθεί κάποια τιμή μικρότερη (ή μεγαλύτερη, αντίστοιχα) από την ελάχιστη (ή

μέγιστη, αντίστοιχα) τότε τίθεται αυτή ως ελάχιστη (ή μέγιστη, αντίστοιχα).

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα Δ (Ημ. 2010), Ερώτημα Δ3 − Πρότυπες Ασκήσεις: Θέμα Γ (Ημ. 2010), Ερώτημα Γ3

5. Υπολογισμός Μεγεθών (Πλήθος – Άθροισμα – Γινόμενο – Μ.Ο. – Ποσοστό) Στις ασκήσεις όπου πρέπει να υπολογίσουμε το πλήθος, άθροισμα ή γινόμενο, θα χρησιμοποιούμε αντίστοιχες μεταβλητές τις οποίες πριν την επανάληψη θα πρέπει να τις αρχικοποιούμε στο ουδέτερο στοιχείο της πράξης, δηλαδή 0 για την πρόσθεση, 1 για το γινόμενο. Έτσι, έχουν ως εξής:

Πλήθος 0 Άθροισμα 0 Γινόμενο 1

Κατόπιν, μέσα στον βρόχο επανάληψης θα τροποποιούμε την τιμή αυτών των μεταβλητών ως ακολούθως:

Πλήθος Πλήθος + 1 Άθροισμα Άθροισμα + τιμή Γινόμενο Γινόμενο * τιμή

Στην περίπτωση που μας ζητείται ο Μέσος Όρος τότε χρειαζόμαστε τις μεταβλητές Πλήθος και Άθροισμα – όπως προηγουμένως, αν αυτές δεν είναι γνωστές από την εκφώνηση της άσκησης – και μετά την επανάληψη υπολογίζουμε το ΜΟ ως εξής:

ΜΟ Άθροισμα / Πλήθος

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 3

Page 6: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

Στην περίπτωση που μας ζητείται το ποσοστό των στοιχείων που έχουν ένα χαρακτηριστικό, τότε αυτό δίνεται από τον γενικό τύπο: Ποσοστό Πλήθος_με_Χαρακτηριστικό / Συνολικό_Πλήθος * 100

Παράδειγμα: − Πρότυπες Ασκήσεις: Θεμα Γ (Ημ. 2010), Ερώτημα Γ4 − Πρότυπες Ασκήσεις: Θέμα 3 (Ημ. 2008) − Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2008), Ερώτημα δ − Πρότυπες Ασκήσεις: Θέμα 3 (Ημ. 2007), Ερώτημα β − Πρότυπες Ασκήσεις: Άσκηση 2 Ποσοστό 6. Υπολογισμός Ποσοστών Ποσού (ΦΠΑ – Έκπτωση – Αύξηση)

Τα ποσοστά πάντα είναι επί κάποιο ποσό. Έτσι, έχουμε τα εξής: ΦΠΑ

Τιμή ΦΠΑ: Ποσό * ΦΠΑ / 100 Συνολικό Ποσό με ΦΠΑ: Ποσό + Ποσό * ΦΠΑ / 100

Έκπτωση Ποσό Έκπτωσης: Ποσό * Έκπτωση / 100 Συνολικό Ποσό με Έκπτωση: Ποσό – Ποσό * Έκπτωση / 100

Αύξηση Ποσό Αύξησης: Ποσό * Αύξηση / 100 Συνολικό Ποσό με Έκπτωση: Ποσό + Ποσό * Αύξηση / 100 Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα 3 (Επ. Ημ. 2003) 7. Κλιμακωτή Χρέωση

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

Παράδειγμα: − Κλιμακωτή χρέωση Μηνυμάτων: τα πρώτα 10 sms χρεώνονται 0,13 €, τα επόμενα 20 sms

χρεώνονται 0,1 € ενώ για κάθε επόμενο (πέρα των 30 sms) η χρέωση είναι 0,08 €. Για να βρούμε πόσο θα χρεωθούμε για χ sms, θα πρέπει εξετάσουμε ανάμεσα σε ποιο εύρος τιμών βρίσκεται το χ (δηλαδή σε ποια κατηγορία ανήκει) οπότε να υπολογίσουμε την χρέωση ανάλογα. Για να γίνει αυτό χρησιμοποιούμε μια πολλαπλή επιλογή: Αν χ <= 10 τότε ! Αφού το χ ανήκει στην πρώτη περίπτωση τότε η χρέωση δεν θα σπάσει χρέωση χ * 0,13 Αλλιώς_αν χ<=30 τότε ! Επειδή η εκφώνηση λέει τα επόμενα 20 από τα δέκα, δηλαδή στη 2η κατηγορία το χ δεν είναι ! μεγαλύτερο από 30. Εδώ η χρέωση θα σπάσει στα δύο. Δηλαδή τα 10 sms θα χρεωθούν

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 4

Page 7: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

! σύμφωνα με την 1η κατηγορία, δηλαδή 0,13€, ενώ τα υπόλοιπα (χ-10) sms θα χρεωθούν ! σύμφωνα με την 2η κατηγορία, δηλαδή 0,1€ χρέωση 10 * 0,13 + (χ – 10) * 0,1 Αλλιώς ! Τα sms είναι περισσότερα από 30, οπότε είμαστε στη τρίτη κατηγορία και η χρέωση θα ! σπάσει στα 3. Τα 10 sms θα χρεωθούν σύμφωνα με την 1η κατηγορία, τα 20 sms θα ! χρεωθούν σύμφωνα με την 2η κατηγορία, ενώ τα υπόλοιπα (χ – 30) σύμφωνα με την 3η χρέωση 10 * 0,13 + 20 * 0,1 + (χ – 30) * 0,08 Τέλος_αν

− Πρότυπες Ασκήσεις: Θέμα 3 (Επ. Ημ. 2003) 8. Επεξεργασία Αριθμών (Ψηφία – ∆ιάσπαση – ∆εκαδικό Μέρος - Άρτιος/Περιττός)

Πλήθος Ψηφίων Ο ευκολότερος τρόπος για να βρούμε από πόσα ψηφία αποτελείται ένας αριθμός χ είναι ο εξής: Μονοψήφιος: χ>=0 και χ<10 ∆ιψήφιος: χ>=10 και χ<100 κ.ο.κ.

Ψηφία αριθμού Για να βρούμε τα ψηφία ενός αριθμού χρησιμοποιούμε το πηλίκο (div) και το υπόλοιπο (mod) της ακέραιας διαίρεσης με τα ανάλογα πολλαπλάσια του 10. Για παράδειγμα: Τελευταίο ψηφίο: x mod 10 Προτελευταίο ψηφίο: (x div 10) mod 10 Τρίτο απ’ το τέλος ψηφίο: ((x div 10) div 10) mod 10 κ.ο.κ. Αν ξέρουμε το πλήθος των ψηφίων του αριθμού, μπορούμε να βρούμε εύκολα τα εξής: Πρώτο ψηφίο ∆ιψήφιου: x div 10 Πρώτο ψηφίο Τριψήφιου: x div 100 κ.ο.κ. ∆ύο πρώτα Ψηφία Τριψήφιου: x div 10 ∆ύο πρώτα Ψηφία Τετραψήφιου: x div 100 κ.ο.κ.

∆ιάσπαση Αν θέλουμε να χωρίσουμε έναν αριθμό σε διάφορα πολλαπλάσια χρησιμοποιούμε πάλι το πηλίκο (div) και το υπόλοιπο (mod) της ακέραιας διαίρεσης. Να υπολογιστεί ένα ποσό χ από πόσα χαρτονομίσματα των 50, 20, 10, 5 και κέρματα των 2 και 1 ευρώ αποτελείται: 50ευρα: x div 50 20 ευρα: (x mod 50) div 20 10 ευρα: ((x mod 50) mod 20) div 10 κ.ο.κ.

∆εκαδικό μέρος χ – Α_Μ(χ)

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 5

Page 8: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

Άρτιος / Περιττός Άρτιος (Ζυγός): x mod 2 = 0 Περιττός (Μονός): x mod 2 <> 0 9. Υπολογισμός Ακολουθίας

Για να εμφανίσουμε ή να επεξεργαστούμε μια δεδομένη ακολουθία αριθμών, χρησιμοποιούμε κάποια δομή επανάληψης (το ποια εξαρτάται τόσο από το πρόβλημα όσο και από τις προτιμήσεις μας) και θα πρέπει να προσέχουμε τα εξής σημεία:

a. Τον αρχικό αριθμό της ακολουθίας αριθμών (Αρχικοποίηση δείκτη) b. Τον τελικό αριθμό της ακολουθίας αριθμών (Συνθήκη τερματισμού) c. Το αν η σειρά είναι αύξουσα ή φθίνουσα (Καθορισμός βήματος) d. Τη διαφορά μεταξύ των αριθμών (Καθορισμός βήματος)

!Υπολογισμός αθροίσματος 1 + 3 + 5 + … + 99 αθρ 0 Για ι από 1 μέχρι 99 με_βήμα 2 αθρ αθρ + ι Τέλος_επανάληψης !Εμφάνιση άρτιων αριθμών μεταξύ 0 και 1000 με Όσο ι 0 Όσο ι <=1000 επανάλαβε Εμφάνισε ι ι ι+2 Τέλος_επανάληψης 10. Αναζήτηση Στοιχείων Πίνακα

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

! Σειριακή Αναζήτηση σε Μονοδιάστατο Πίνακα – Ολική Σάρωση πλ 0 Εμφάνισε “Θέσεις εμφάνισης:” Για i από 1 μέχρι Ν Αν Π[i] = χ τότε Εμφάνισε i πλ πλ + 1 Τέλος_αν Τέλος_επανάληψης Αν πλ≠ 0 τότε Εμφάνισε “Σύνολο Εμφανίσεων: ”, πλ αλλιώς Εμφάνισε “Η τιμή δεν βρέθηκε μέσα στον πίνακα” Τέλος_αν

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

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 6

Page 9: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

στοιχείο που αναζητούμε ή μέχρι να φτάσουμε στο τέλος του πίνακα. Αν δηλαδή βρούμε αυτό που ψάχνουμε σταματάει και η αναζήτηση. Για το σκοπό αυτό χρησιμοποιούμε μία λογική μεταβλητή η οποία έχει αρχική τιμή ΨΕΥ∆ΗΣ και αν βρούμε αυτό που ψάχνουμε την θέτουμε ΑΛΗΘΗΣ.

! Τερματισμός αναζήτησης αν βρεθεί η τιμή ή τελειώσουν τα στοιχεία του πίνακα Βρέθηκε Ψευδής i 1 Όσο i <= Ν και Βρέθηκε = Ψευδής επανάλαβε

Αν Π[i] = Τιμή τότε Βρέθηκε Αληθής αλλιώς i i + 1 Τέλος_αν Τέλος_επανάληψης Αν Βρέθηκε = Ψευδής τότε Εμφάνισε “ Η τιμή”, Τιμή, “ δε βρέθηκε στον πίνακα” αλλιώς Εμφάνισε “ Η τιμή”, Τιμή, “ βρέθηκε στη θέση”, Γραμμή, Στήλη

Τέλος_αν Παράδειγμα: Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2007) Πρότυπες Ασκήσεις: Άσκηση 4 Αναλήτηση

11. Ταξινόμηση Πίνακα

Η ταξινόμηση πίνακα χρησιμοποιείται στις περιπτώσεις που μας ζητείται από την άσκηση:

1. Να ταξινομήσουμε τα στοιχεία ενός πίνακα

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα Α (Ημ. 2010)

ΠΑΡΑΛΛΗΛΗ ΤΑΞΙΝΟΜΗΣΗ: Ορισμένες φορές χρειάζεται να κάνουμε παράλληλη ταξινόμηση δυο πινάκων που σχετίζονται μεταξύ τους, προκειμένου να συνεχίσει να υπάρχει η αντιστοιχία μεταξύ των στοιχείων των πινάκων αυτών. Σε αυτή τη περίπτωση, ταξινομούμε ως προς τα στοιχεία του πίνακα που θέλουμε και αντιμεταθέτουμε τόσο τα στοιχεία αυτού του πίνακα όσο και τα στοιχεία των πινάκων που συσχετίζονται με αυτόν. Για τις αντιμεταθέσεις αυτές χρησιμοποιούμε διαφορετικές προσωρινές μεταβλητές αν οι πίνακες είναι διαφορετικού τύπου δεδομένων.

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα Δ (Ημ. 2010) Ερώτημα Δ4 − Πρότυπες Ασκήσεις: Άσκηση Ταξινόμησης 1 − Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2008) Ερώτημα δ

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 7

Page 10: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

ΤΑΞΙΝΟΜΗΣΗ ΩΣ ΠΡΟΣ ∆ΥΟ ΚΡΙΤΗΡΙΑ: Σε πολύπλοκες περιπτώσεις μπορεί να χρειαστεί να κάνουμε ταξινόμηση ως προς τα στοιχεία ενός πίνακα και γι’ αυτά τα στοιχεία που έχουν την ίδια τιμή να τα ταξινομήσουμε είτε ως προς τα στοιχεία ενός άλλου πίνακα ή τα στοιχειά κάποιας άλλης στήλης του ίδιου πίνακα, αν αυτός δεν είναι μονοδιάστατος. π.χ. στο τηλεφωνικό κατάλογο τα τηλέφωνα είναι πρώτα ταξινομημένα με βάση το επώνυμο και έπειτα το όνομα.

Παράδειγμα: Πρότυπες Ασκήσεις: Άσκηση Ταξινόμησης 1

2. Να βρούμε έναν αριθμό πρώτων ή τελευταίων με βάση κάποιο κριτήριο κατάταξης. Π.χ. σε έναν αγώνα τους 3 πρώτους νικητές ή σε έναν διαγωνισμό τους 10 πρώτους με τη μεγαλύτερη βαθμολογία που περνάνε στην επόμενη φάση ή σε μια τάξη τους 5 χειρότερους βαθμολογικά μαθητές.

Παράδειγμα: Πρότυπες Ασκήσεις: Θέμα Δ (Ημ. 2010) Ερώτημα Δ4

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

4. Να βρούμε πόσες ή ποιες διαφορετικές τιμές υπάρχουν σε ένα πίνακα, δεδομένου ότι μια τιμή μπορεί να εμφανίζεται περισσότερες από μια φορές στον πίνακα. Σε αυτή τη περίπτωση, έχουμε έναν αθροιστή που αυξάνεται όσο το επόμενο στοιχείο του πίνακα είναι το ίδιο.

Παράδειγμα: Επικρατούσας βαθμολογία και ποιοι μαθητές την έχουν ! Έχει προηγηθεί ταξινόμηση των πινάκων βαθμολογίας και μαθητών ως προς την ! βαθμολογία Επικρατούσα_τιμή Β[1] Πλήθος_βαθμολογίας 1 Μέγιστο_Πλήθος 1

Για i από 2 μέχρι 200 Αν Β[i] = Β[i - 1] τότε ! Αν ο βαθμός είναι ίδιος Πλήθος_βαθμολογίας Πλήθος_βαθμολογίας + 1 Αλλιώς ! Βρέθηκε διαφορετικός βαθμός Αν Μέγιστο_Πλήθος < Πλήθος_βαθμολογίας τότε Μέγιστο_Πλήθος Πλήθος_βαθμολογίας Επικρατούσα_τιμή Β[i - 1] Θέση i – 1 ! Αποθηκεύουμε την τελευταία θέση της επικρατούσας

Τέλος_αν Πλήθος_βαθμολογίας 1 !Αρχικοποιούμε πάλι το πλήθος εμφανίσεων

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

! Ο παρακάτω έλεγχος χρειάζεται για να ελέγξουμε τον πλήθος εμφανίσεων του τελευταίου ! στοιχείου του πίνακα Αν Μέγιστο_Πλήθος < Πλήθος_βαθμολογίας τότε Μέγιστο_Πλήθος Πλήθος_βαθμολογίας Επικρατούσα_τιμή Β[200] Θέση 200 ! Αποθηκεύουμε την τελευταία θέση της επικρατούσας

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 8

Page 11: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

Τέλος_αν Εμφάνισε ‘Η επικρατούσα τιμή των βαθμολογιών είναι ‘, Επικρατούσα_τιμή Εμφάνισε ‘Οι παρακάτω μαθητές έχουν ως βαθμό την επικρατούσα τιμή ‘ Αρχική_θέση Θέση - Μέγιστο_Πλήθος +1 Για i από Αρχική_θέση μέχρι Θέση

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

12. Επεξεργασία Πινάκων

Προσπέλαση Πίνακα

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

Για i από 1 μέχρι Ν Εντολές Επεξεργασίας Π[i] στοιχείου Τέλος_Επανάληψης

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

Για i από 1 μέχρι Ν Για j από 1 μέχρι Μ Εντολές Επεξεργασίας Π[i,j] στοιχείου Τέλος_Επανάληψης Τέλος_Επανάληψης

Άθροισμα Στοιχείων Πίνακα

Αρχικοποιούμε μια μεταβλητή αθροιστή με την τιμή 0 και στη συνέχεια με τη βοήθεια μια επανάληψης (συνήθως της Για), μέσα στο βρόχο προσθέτουμε στην ήδη υπάρχουσα τιμή του αθροιστή την τιμή που βρίσκεται στη θέση i του πίνακα.

Αθρ 0 Για i από 1 μέχρι Ν

Αθρ Αθρ + Π[i] Τέλος_Επανάληψης

Σε ένα δυσδιάστατο πίνακα, για τον υπολογισμό του αθροίσματος κάθε γραμμής (ή στήλης) χρησιμοποιούμε μια επανάληψη από 1 έως τον αριθμό των στηλών (ή γραμμών, αντίστοιχα) και σε κάθε επανάληψη προσθέτουμε στην ήδη υπάρχουσα τιμή του αθροιστή το νέο στοιχείο της γραμμής (ή στήλης, αντίστοιχα) του πίνακα. Προσοχή, να αρχικοποιείται ο αθροιστής για κάθε νέα γραμμή (ή στήλη, αντίστοιχα) – δηλαδή πριν την εσωτερική επανάληψη. Μετά το τέλος της εσωτερικής επανάληψης έχουμε υπολογίσει το σύνολο μιας ολόκληρης γραμμής οπότε και μπορούμε να το επεξεργαστούμε.

Για i από 1 μέχρι Ν Αθρ[i] 0

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 9

Page 12: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

Για j από 1 μέχρι Μ Αθρ[i] Αθρ[i] + Π[i,j] Τέλος_Επανάληψης ! Εδώ μπορεί να γίνει Επεξεργασία Αθρ i γραμμής Τέλος_Επανάληψης

ΜΟ Στοιχείων Πίνακα

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

Πλήθος Στοιχείων με κάποιο Χαρακτηριστικό

Για τον υπολογισμό του πλήθους των στοιχείων ενός πίνακα που έχουν ένα συγκεκριμένο χαρακτηριστικό (πχ άρτιος ή περιττός), αρχικοποιούμε μια μεταβλητή μετρητή με την τιμή 0 και με τη βοήθεια μιας επανάληψης ελέγχουμε ένα προς ένα τα στοιχεία του πίνακα. Αν τα στοιχεία έχουν το χαρακτηριστικό αυτό, αυξάνουμε τον μετρητή κατά ένα.

Παράδειγμα: Πρότυπες Ασκήσεις: Θέμα Δ (Ημ. 2010), Ερώτημα Δ3

Εύρεση Ελάχιστου / Μέγιστου

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

μεγ Π[1] Για i από 2 μέχρι Ν Αν Π[i] > μεγ τότε μεγ Π[i] Τέλος_αν Τέλος_Επανάληψης

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

! Έρευση Μέγιστου Στοιχείου Δυσδιάστατου Πίνακα μεγ Π[1,1] Για i από 1 μέχρι Ν Για j από 1 μέχρι M Αν Π[i,j] > μεγ τότε μεγ Π[i,j] Τέλος_αν Τέλος_Επανάληψης Τέλος_Επανάληψης ! Έρευση Ελάχιστου Στοιχείου Δυσδιάστατου Πίνακα ανά Γραμμή Για i από 1 μέχρι Ν ελαχ[ι] Π[i,1] Για j από 2 μέχρι M Αν Π[i,j] < ελαχ[ι] τότε ελαχ[ι] Π[i,j]

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 10

Page 13: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

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

Θέση Στοιχείου

Αν μας ζητείται να βρεθεί η θέση ενός στοιχείου που πληρεί κάποιες προϋποθέσεις, σε ένα μονοδιάστατο πίνακα χρειαζόμαστε μια μεταβλητή η οποία θα κρατάει τον δείκτη του στοιχείου με τη συγκεκριμένη ιδιότητα, ενώ σε ένα δυσδιάστατο πίνακα χρειαζόμαστε δύο μεταβλητές – μια για τη γραμμή και μια για τη στήλη στην οποία βρίσκεται το στοιχείο μας.

μεγ Π[1] μεγ_θεση 1 Για i από 2 μέχρι Ν Αν Π[i] > μεγ τότε μεγ Π[i] μεγ_θεση i Τέλος_αν Τέλος_Επανάληψης

Τετραγωνικοί Πίνακες: Σχέσεις μεταξύ Γραμμής και Στήλης

Σε έναν τετραγωνικό πίνακα ΝxN (ο αριθμός των γραμμών είναι ίδιος με τον αριθμό των στηλών), οι συνηθέστερες περιπτώσεις σχέσεων μεταξύ γραμμής (δείκτης i) και στήλης (δείκτης j) είναι:

1. i = j, στοιχεία της κυρίας διαγώνιου 2. i = N – j + 1, στοιχεία της δευτερεύουσας διαγώνιου 3. i < j, στοιχεία κάτω από την κύρια διαγώνιο 4. i > j, στοιχεία πάνω από την κύρια διαγώνιο 5. i + jmod2 = 0 ή <>0, άρτιο ή περιττό άθροισμα δεικτών γραμμής και στήλης

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2009) − Πρότυπες Ασκήσεις: Θέμα Δ (Ημ. 2008) − Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2007) − Πρότυπες Ασκήσεις: Άσκηση 3 Πίνακες

13. Υποπρογράμματα

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

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 11

Page 14: , 19 krouska a@yahoo.gr 2011 – 12users.sch.gr/akriskaki/autosch/joomla15/AEPP/methodologia...2011 – 12 Περιεχόμενα 1. Είσοδος ∆εδομένων _____1 2. Έλεγχος

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

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

− Η συνάρτηση επιστρέφει μόνο μία τιμή ενώ η διαδικασία μπορεί να επιστρέψει περισσότερες από μία τιμές. Η συνάρτηση δεν μπορεί να επιστρέψει πίνακα σε αντίθεση με τη διαδικασία.

ΜΕΘΟΔΟΛΟΓΙΑ ΑΣΚΗΣΕΩΝ 12

− Στον ορισμό της συνάρτησης πρέπει να αναφέρουμε τον τύπο των δεδομένων που επιστρέφεται από τη συνάρτηση.

− Η κλήση της διαδικασίας γίνεται με την εντολή Κάλεσε Ον_∆ιαδ (Παράμετροι), ενώ η κλήσης μιας συνάρτησης γίνεται καλώντας το όνομά της, δηλαδή Ον_Συν (Παράμετροι), στο δεξί μέρος μιας εντολής εκχώρησης ή σε μια εντολή εξόδου (Γράψε) ή σε μια συνθήκη.

Παράδειγμα: − Πρότυπες Ασκήσεις: Θέμα 4 (Ημ. 2009) − Πρότυπες Ασκήσεις: Θέμα 3 (Ημ. 2008) − Πρότυπες Ασκήσεις: Άσκηση 5 Υποπρογράμματα