ΠΛΗΡΟΦΟΡΙΚΗ - Γ' ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 310

+ - 0:02:19

Notes for current slide


Notes for next slide

ΠΛΗΡΟΦΟΡΙΚΗ
Γ' ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ
Oμάδα Προσανατολισμού Σπουδών Οικονομίας & Πληροφορικής

1 / 680

§§§±±±………ℹℹ←←←→→→↔↔↔⇎⇎⇏⇏⇒⇒⇒⇔⇔⇔∈∈∈∞∞∞∩∩∩∪∪∪≅≅≅
≈≈≈≟≟≠≠≠≡≡≡≤≤≤≥≥≥✓✓✗✗🛈🛈📖💡

Περιεχόμενα
 1.1 Η έννοια πρόβλημα
 1.2 Κατανόηση προβλήματος *
 1.3 Δομή προβλήματος
 1.4 Καθορισμός απαιτήσεων *
 2.1 Τι είναι αλγόριθμος
 2.2 Σπουδαιότητα αλγορίθμων
 2.3 Περιγραφή και αναπαράσταση αλγορίθμων *
 4.1 Ανάλυση προβλημάτων
 6.1 Η έννοια του προγράμματος
 6.4 Τεχνικές σχεδίασης προγραμμάτων
 6.3 Φυσικές και τεχνητές γλώσσες
 6.7 Προγραμματιστικά περιβάλλοντα
 7.1 Το αλφάβητο της ΓΛΩΣΣΑΣ
 7.2 Τύποι δεδομένων
 7.3 Σταθερές
 7.4 Μεταβλητές
 7.5 Αριθμητικοί τελεστές
 7.6 Συναρτήσεις
 7.7 Αριθμητικές εκφράσεις
 2.4.1 Δομή Ακολουθίας
 7.8 Εντολή εκχώρησης
 7.9 Εντολές εισόδου-εξόδου
 7.10 Δομή προγράμματος
 2.4.2 Δομή Επιλογής
 2.4.3 Διαδικασίες πολλαπλών επιλογών
 2.4.4 Εμφωλευμένες Διαδικασίες
 8.1 Εντολές Επιλογής
 8.1.1 Εντολή ΑΝ
 8.1.2 Εντολή ΕΠΙΛΕΞΕ
 3.1 Εντολή ΕΠΙΛΕΞΕ *
 8.1 Εντολές Επιλογής
 8.2 Εντολές επανάληψης
 2.4.5 Δομή Επανάληψης
 8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ
 2.4.5 Δομή Επανάληψης
 8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
 2.4.5 Δομή Επανάληψης
 8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ
 8.2 Εντολές επανάληψης
 2.4.5 Δομή Επανάληψης
 13.1 Κατηγορίες λαθών
 5.1 Κατηγορίες Λαθών *
 5.2 Εκσφαλμάτωση
 2.1 Μέθοδος Διαίρει και Βασίλευε *
 3.1 Δεδομένα
 3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
 3.3 Πίνακες
 9.1 Μονοδιάστατοι πίνακες
 3.6 Αναζήτηση
 3.7 Ταξινόμηση
 9.2 Πότε πρέπει να χρησιμοποιούνται πίνακες
 9.3 Πολυδιάστατοι πίνακες
 9.4 Τυπικές επεξεργασίες πινάκων
 5.2 Εκσφαλμάτωση
 1.1 Στοίβα
 1.2 Ουρά
 10.1 Τμηματικός προγραμματισμός
 10.2 Χαρακτηριστικά των υποπρογραμμάτων
 10.3 Πλεονεκτήματα του τμηματικού προγραμματισμού
 10.4 Παράμετροι
 10.5 Διαδικασίες και συναρτήσεις
 10.6 Εμβέλεια μεταβλητών – σταθερών
 5.2 Εκσφαλμάτωση
 1.3 Άλλες δομές δεδομένων

2 / 680

1.1 Η έννοια πρόβλημα


Με τον όρο Πρόβλημα εννοείται μια κατάσταση η οποία χρήζει
αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή,
ούτε προφανής.

ΑΕΠΠ - Βιβλίο Μαθητή, §1.1, σελ.15

3 / 680

1.2 Κατανόηση προβλήματος *


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.2, σελ.17

4 / 680
2009 / Γ.1 Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων. Να τους
αναφέρετε. (μονάδες 4) §1.2, σ.17

1.2 Κατανόηση προβλήματος *


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.2, σελ.17

5 / 680

2009 / Γ.1 Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων. Να τους
αναφέρετε. (μονάδες 4) §1.2, σ.17

1.2 Κατανόηση προβλήματος *


Σαφήνεια διατύπωσης

Ο λόγος σαν μέσο επικοινωνίας και συνεννόησης πρέπει να


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.2, σελ.17

6 / 680

2009 / Γ.1 Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων. Να τους
αναφέρετε. (μονάδες 4) §1.2, σ.17

1.2 Κατανόηση προβλήματος *


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

Ο όρος επεξεργασία δεδομένων δηλώνει εκείνη τη διαδικασία


κατά την οποία ένας "μηχανισμός" δέχεται δεδομένα, τα
επεξεργάζεται σύμφωνα με έναν προκαθορισμένο τρόπο και
αποδίδει πληροφορίες.

Επί χιλιετίες ο "μηχανισμός" επεξεργασίας των δεδομένων ήταν και


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.2, σελ.19

7 / 680

2009 / Γ.1 Η κατανόηση ενός προβλήματος αποτελεί συνάρτηση δύο παραγόντων. Να τους
αναφέρετε. (μονάδες 4) §1.2, σ.17

1.3 Δομή προβλήματος


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.3, σελ.19

8 / 680

1.3 Δομή προβλήματος


Με τον όρο δομή ενός προβλήματος αναφερόμαστε στα
συστατικά του μέρη, στα επιμέρους τμήματα που το αποτελούν
καθώς επίσης και στον τρόπο που αυτά τα μέρη συνδέονται
μεταξύ τους.
ΑΕΠΠ - Βιβλίο Μαθητή, §1.3, σελ.19

9 / 680

1.3 Δομή προβλήματος


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.3, σελ.19

10 / 680

1.3 Δομή προβλήματος


Η ανάλυση αυτή του προβλήματος σε άλλα απλούστερα αναδύει
παράλληλα και τη δομή του προβλήματος. Για τη γραφική
απεικόνιση της δομής ενός προβλήματος χρησιμοποιείται
συχνότατα η διαγραμματική αναπαράσταση. Σύμφωνα με
αυτή:

 το αρχικό πρόβλημα αναπαρίσταται από ένα ορθογώνιο


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.3, σελ.21

11 / 680
1.3 Δομή προβλήματος
Η διαγραμματική αναπαράσταση προσφέρει μια απτή
απεικόνιση της δομής του προβλήματος. Η δημιουργία του
σχετικού διαγράμματος βοηθάει τόσο στην καλύτερη κατανόηση
του ίδιου του προβλήματος, όσο και στη σχεδίαση της λύσης
του.

ΑΕΠΠ - Βιβλίο Μαθητή, §1.3, σελ.21

12 / 680

1.4 Καθορισμός απαιτήσεων *


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.4, σελ.21

13 / 680

2013 Επαναληπτικές / Α2 Να περιγράψετε τα στάδια αντιμετώπισης ενός προβλήματος. (μονάδες


6) §1.4, σ.25

1.4 Καθορισμός απαιτήσεων *


Θα πρέπει να δοθεί μεγάλη προσοχή στην ανίχνευση των
δεδομένων ενός προβλήματος. Επισημαίνεται πως δεν είναι
πάντοτε εύκολο να διακρίνει κάποιος τα δεδομένα. Υπάρχουν
πολλές περιπτώσεις προβλημάτων όπου τα δεδομένα θα πρέπει
να "ανακαλυφθούν" μέσα στα λεγόμενα του προβλήματος. Η
διαδικασία αυτή απαιτεί προσοχή, συγκέντρωση και σκέψη.
Μεθοδολογία προσδιορισμού των δεδομένων ενός προβλήματος
δεν υπάρχει, ούτε και μεθοδολογία εντοπισμού και
αποσαφήνισης των ζητούμενων ενός προβλήματος.

ΑΕΠΠ - Βιβλίο Μαθητή, §1.4, σελ.21-22


14 / 680

2013 Επαναληπτικές / Α2 Να περιγράψετε τα στάδια αντιμετώπισης ενός προβλήματος. (μονάδες


6) §1.4, σ.25

1.4 Καθορισμός απαιτήσεων *


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.4, σελ.22

15 / 680

2013 Επαναληπτικές / Α2 Να περιγράψετε τα στάδια αντιμετώπισης ενός προβλήματος. (μονάδες


6) §1.4, σ.25

1.4 Καθορισμός απαιτήσεων *


… τα στάδια αντιμετώπισης ενός προβλήματος είναι τρία:

 κατανόηση, όπου απαιτείται η σωστή και πλήρης


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

ΑΕΠΠ - Βιβλίο Μαθητή, §1.4, σελ.25

16 / 680

2013 Επαναληπτικές / Α2 Να περιγράψετε τα στάδια αντιμετώπισης ενός προβλήματος. (μονάδες


6) §1.4, σ.25
2.1 Τι είναι αλγόριθμος
Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά
καθορισμένων και εκτελέσιμων σε πεπερασμένο χρόνο, που
στοχεύουν στην επίλυση ενός προβλήματος.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.1, σελ.33

17 / 680

2.1 Τι είναι αλγόριθμος


Κάθε αλγόριθμος απαραίτητα ικανοποιεί τα επόμενα κριτήρια.

 Είσοδος (input). Καμία, μία ή περισσότερες τιμές


δεδομένων πρέπει να δίνονται ως είσοδοι στον αλγόριθμο.
Η περίπτωση που δεν δίνονται τιμές δεδομένων
εμφανίζεται, όταν ο αλγόριθμος δημιουργεί και
επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια
συναρτήσεων παραγωγής τυχαίων αριθμών ή με τη
βοήθεια άλλων απλών εντολών.
 Έξοδος (output). Ο αλγόριθμος πρέπει να δημιουργεί
τουλάχιστον μία τιμή δεδομένων ως αποτέλεσμα προς το
χρήστη ή προς έναν άλλο αλγόριθμο.
 Καθοριστικότητα (definiteness). Κάθε εντολή πρέπει να
καθορίζεται χωρίς καμία αμφιβολία για τον τρόπο
εκτέλεσής της. Λόγου χάριν, μία εντολή διαίρεσης πρέπει
να θεωρεί και την περίπτωση όπου ο διαιρέτης λαμβάνει
μηδενική τιμή.
 Περατότητα (finiteness). Ο αλγόριθμος να τελειώνει μετά
από πεπερασμένα βήματα εκτέλεσης των εντολών του. Μία
διαδικασία που δεν τελειώνει μετά από ένα συγκεκριμένο
αριθμό βημάτων δεν αποτελεί αλγόριθμο, αλλά λέγεται
απλά υπολογιστική διαδικασία (computational procedure).
 Αποτελεσματικότητα (effectiveness). Κάθε μεμονωμένη
εντολή του αλγορίθμου να είναι απλή. Αυτό σημαίνει ότι
μία εντολή δεν αρκεί να έχει ορισθεί, αλλά πρέπει να είναι
και εκτελέσιμη.
Η έννοια του αλγορίθμου δεν συνδέεται αποκλειστικά και μόνο
με προβλήματα της Πληροφορικής.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.1, σελ.33

18 / 680

2.2 Σπουδαιότητα αλγορίθμων


Η Πληροφορική, λοιπόν, μπορεί να ορισθεί ως η επιστήμη που
μελετά τους αλγορίθμους από τις ακόλουθες σκοπιές:

 Υλικού (hardware). Η ταχύτητα εκτέλεσης ενός αλγορίθμου


επηρεάζεται από τις διάφορες τεχνολογίες υλικού, δηλαδή
από τον τρόπο που είναι δομημένα σε μία ενιαία
αρχιτεκτονική τα διάφορα συστατικά του υπολογιστή
(δηλαδή ανάλογα με το αν ο υπολογιστής έχει κρυφή μνήμη
και πόση, ανάλογα με την ταχύτητα της κύριας και
δευτερεύουσας μνήμης κ.ο.κ.).
 Γλωσσών Προγραμματισμού (programming languages).
Το είδος της γλώσσας προγραμματισμού που
χρησιμοποιείται (δηλαδή, χαμηλότερου ή υψηλότερου
επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών
ενός αλγορίθμου. Γενικά μία γλώσσα που είναι
χαμηλότερου επιπέδου (όπως η assembly ή η γλώσσα C)
είναι ταχύτερη από μία άλλη γλώσσα που είναι
υψηλοτέρου επιπέδου (όπως η Basic ή Pascal). Ακόμη,
σημειώνεται ότι διαφορές συναντώνται μεταξύ των
γλωσσών σε σχέση με το πότε εμφανίσθηκαν.
 Θεωρητική (theoretical). Το ερώτημα που συχνά τίθεται
είναι αν πράγματι υπάρχει ή όχι κάποιος αποδοτικός
αλγόριθμος για την επίλυση ενός προβλήματος. Η εξέταση
αυτού του ερωτήματος … απαιτεί μεγάλη θεωρητική
κατάρτιση. Ωστόσο η προσέγγιση αυτή είναι ιδιαίτερα
σημαντική, γιατί προσδιορίζει τα όρια της λύσης που θα
βρεθεί σε σχέση με ένα συγκεκριμένο πρόβλημα.
 Αναλυτική (analytical). Μελετώνται οι υπολογιστικοί πόροι
(computer resources) που απαιτούνται από έναν
αλγόριθμο, όπως για παράδειγμα το μέγεθος της κύριας και
της δευτερεύουσας μνήμης, ο χρόνος για λειτουργίες CPU
και για λειτουργίες εισόδου/εξόδου κ.λπ.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.3, σελ.34-35

19 / 680

2.3 Περιγραφή και αναπαράσταση αλγορίθμων *


Διάφοροι τρόποι αναπαράστασης ενός αλγορίθμου:

 με ελεύθερο κείμενο (free text), που αποτελεί τον πιο


ανεπεξέργαστο και αδόμητο τρόπο παρουσίασης
αλγορίθμου. Έτσι εγκυμονεί τον κίνδυνο ότι μπορεί εύκολα
να οδηγήσει σε μη εκτελέσιμη παρουσίαση παραβιάζοντας
το τελευταίο χαρακτηριστικό των αλγορίθμων, δηλαδή την
αποτελεσματικότητα.
 με διαγραμματικές τεχνικές (diagramming techniques),
που συνιστούν ένα γραφικό τρόπο παρουσίασης του
αλγορίθμου. Από τις διάφορες διαγραμματικές τεχνικές
που έχουν επινοηθεί, η πιο παλιά και η πιο γνωστή ίσως,
είναι το διάγραμμα ροής (flow chart). Ωστόσο η χρήση
διαγραμμάτων ροής για την παρουσίαση αλγορίθμων δεν
αποτελεί την καλύτερη λύση, γι’ αυτό και εμφανίζονται όλο
και σπανιότερα στη βιβλιογραφία και στην πράξη.
 με φυσική γλώσσα (natural language) κατά βήματα. Στην
περίπτωση αυτή χρειάζεται προσοχή, γιατί μπορεί να
παραβιασθεί το τρίτο βασικό χαρακτηριστικό ενός
αλγορίθμου, όπως προσδιορίσθηκε προηγουμένως, δηλαδή
το κριτήριο του καθορισμού.
 με κωδικοποίηση (coding), δηλαδή με ένα πρόγραμμα
γραμμένο είτε σε μία ψευδογλώσσα είτε σε κάποια γλώσσα
προγραμματισμού που όταν εκτελεσθεί θα δώσει τα ίδια
αποτελέσματα με τον αλγόριθμο.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.3, σελ.35

20 / 680
2012 Επαναληπτικές / Α4 Να περιγράψετε τα προβλήματα που είναι δυνατόν να παρουσιαστούν
κατά την αναπαράσταση ενός αλγορίθμου, αν χρησιμοποιηθεί ελεύθερο κείμενο και φυσική
γλώσσα κατά βήματα. (μονάδες 5) §2.3, σ.35

4.1 Ανάλυση προβλημάτων


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

 την καταγραφή της υπάρχουσας πληροφορίας για το


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

και στη συνέχεια:

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


 την τελική επίλυση με χρήση υπολογιστικών συστημάτων.

ΑΕΠΠ - Βιβλίο Μαθητή, §4.1, σελ.77

21 / 680

4.1 Ανάλυση προβλημάτων


Έτσι, κατά την ανάλυση ενός προβλήματος θα πρέπει να δοθεί
απάντηση σε καθεμία από τις επόμενες ερωτήσεις:

1. Ποια είναι τα δεδομένα και το μέγεθος του προβλήματος,


2. Ποιες είναι οι συνθήκες που πρέπει να πληρούνται για την
επίλυση του προβλήματος,
3. Ποια είναι η πλέον αποδοτική μέθοδος επίλυσής τους
(σχεδίαση αλγορίθμου),
4. Πώς θα καταγραφεί η λύση σε ένα πρόβλημα (π.χ. σε
ψευδογλώσσα), και
5. Ποιος είναι ο τρόπος υλοποίησης στο συγκεκριμένο
υπολογιστικό σύστημα (π.χ. επιλογή γλώσσας
προγραμματισμού).

ΑΕΠΠ - Βιβλίο Μαθητή, §4.1, σελ.77


22 / 680

4.1 Ανάλυση προβλημάτων


… οι μέθοδοι ανάλυσης και επίλυσης των προβλημάτων
παρουσιάζουν ιδιαίτερο ενδιαφέρον για τους εξής λόγους:

 παρέχουν ένα γενικό πρότυπο κατάλληλο για την επίλυση


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

ΑΕΠΠ - Βιβλίο Μαθητή, §4.1, σελ.78-79

23 / 680

6.1 Η έννοια του προγράμματος


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

 Τον ακριβή προσδιορισμό του προβλήματος.


 Την ανάπτυξη του αντίστοιχου αλγορίθμου.
 Τη διατύπωση του αλγορίθμου σε κατανοητή μορφή από
τον υπολογιστή.

ΑΕΠΠ - Βιβλίο Μαθητή, §6.1, σελ.105

24 / 680

6.4 Τεχνικές σχεδίασης προγραμμάτων


6.4.1 Ιεραρχική σχεδίαση προγράμματος

Η τεχνική της ιεραρχικής σχεδίασης και επίλυσης ή η διαδικασία


σχεδίασης "από επάνω προς τα κάτω" όπως συχνά ονομάζεται
(top-down program design) περιλαμβάνει τον καθορισμό των
βασικών λειτουργιών ενός προγράμματος, σε ανώτερο επίπεδο,
και στη συνέχεια τη διάσπαση των λειτουργιών αυτών σε όλο και
μικρότερες λειτουργίες, μέχρι το τελευταίο επίπεδο που οι
λειτουργίες είναι πολύ άπλες, ώστε να επιλυθούν εύκολα.

Σκοπός της ιεραρχικής σχεδίασης είναι η διάσπαση λοιπόν του


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

Η ιεραρχική σχεδίαση ή ιεραρχικός προγραμματισμός


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.4.1, σελ.116

25 / 680

6.4 Τεχνικές σχεδίασης προγραμμάτων


6.4.2 Τμηματικός προγραμματισμός

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


τμηματικό προγραμματισμό. Μετά την ανάλυση του
προβλήματος σε αντίστοιχα υποπροβλήματα, κάθε
υποπρόβλημα αποτελεί ανεξάρτητη ενότητα (module), που
γράφεται ξεχωριστά από τα υπόλοιπα τμήματα προγράμματος.

Η σωστή διαίρεση του αρχικού προβλήματος σε υποπροβλήματα


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

Εδώ πρέπει να σημειωθεί ότι ο τμηματικός προγραμματισμός


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.4.2, σελ.116-117


26 / 680

6.4 Τεχνικές σχεδίασης προγραμμάτων


6.4.3 Δομημένος προγραμματισμός

Ο δομημένος προγραμματισμός στηρίζεται στη χρήση τριών και


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.4.3, σελ.119

27 / 680

6.4 Τεχνικές σχεδίασης προγραμμάτων


6.4.3 Δομημένος προγραμματισμός

Πλεονεκτήματα του δομημένου προγραμματισμού


1. Δημιουργία απλούστερων προγραμμάτων.
2. Άμεση μεταφορά των αλγορίθμων σε προγράμματα.
3. Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα.
4. Περιορισμός των λαθών κατά την ανάπτυξη του
προγράμματος.
5. Διευκόλυνση στην ανάγνωση και κατανόηση του
προγράμματος από τρίτους.
6. Ευκολότερη διόρθωση και συντήρηση.

ΑΕΠΠ - Βιβλίο Μαθητή, §6.4.3, σελ.119

28 / 680

6.3 Φυσικές και τεχνητές γλώσσες


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

Μία γλώσσα προσδιορίζεται από το αλφάβητό της, το


λεξιλόγιό της, τη γραμματική της και τέλος τη σημασιολογία
της.

ΑΕΠΠ - Βιβλίο Μαθητή, §6.3, σελ.115

29 / 680

6.3 Φυσικές και τεχνητές γλώσσες


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.3, σελ.115

30 / 680

6.3 Φυσικές και τεχνητές γλώσσες


Διαφορές φυσικών και τεχνητών γλωσσών

Μία βασική διαφορά μεταξύ φυσικών και τεχνητών γλωσσών


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

Αντίθετα οι τεχνητές γλώσσες χαρακτηρίζονται από


στασιμότητα, αφού κατασκευάζονται συνειδητά για ένα
συγκεκριμένο σκοπό.

Ωστόσο συχνά οι γλώσσες προγραμματισμού βελτιώνονται και


μεταβάλλονται από τους δημιουργούς τους, με σκοπό να
διορθωθούν αδυναμίες ή να καλύψουν μεγαλύτερο εύρος
εφαρμογών ή τέλος να ακολουθήσουν τις νέες εξελίξεις. Οι
γλώσσες προγραμματισμού αλλάζουν σε επίπεδο διαλέκτου (για
παράδειγμα GW-Basic και QuickBasic) ή σε επίπεδο επέκτασης
(για παράδειγμα Basic και Visual Basic).

ΑΕΠΠ - Βιβλίο Μαθητή, §6.3, σελ.116

31 / 680

6.7 Προγραμματιστικά περιβάλλοντα


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

Η μετατροπή αυτή επιτυγχάνεται με τη χρήση ειδικών


μεταφραστικών προγραμμάτων. Υπάρχουν δύο μεγάλες
κατηγορίες τέτοιων προγραμμάτων, οι μεταγλωττιστές
(compilers) και οι διερμηνευτές (interpreters).

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.120

32 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

Ο μεταγλωττιστής δέχεται στην είσοδο ένα πρόγραμμα γραμμένο


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.121

33 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

Το αρχικό πρόγραμμα λέγεται πηγαίο πρόγραμμα (source), ενώ


το πρόγραμμα που παράγεται από το μεταγλωττιστή λέγεται
αντικείμενο πρόγραμμα (object).

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.121


34 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

Το αντικείμενο πρόγραμμα είναι μεν σε μορφή κατανοητή από


τον υπολογιστή, αλλά συνήθως δεν είναι σε θέση να εκτελεστεί.
Χρειάζεται να συμπληρωθεί και να συνδεθεί με άλλα τμήματα
προγράμματος απαραίτητα για την εκτέλεσή του, τμήματα που
είτε τα γράφει ο προγραμματιστής είτε βρίσκονται στις
βιβλιοθήκες (libraries) της γλώσσας. Το πρόγραμμα που
επιτρέπει αυτή τη σύνδεση ονομάζεται συνδέτης – φορτωτής
(linker-loader). Το αποτέλεσμα του συνδέτη είναι η παραγωγή
του εκτελέσιμου προγράμματος (executable), το οποίο είναι το
τελικό πρόγραμμα που εκτελείται από τον υπολογιστή. Για το
λόγο αυτό η συνολική διαδικασία αποκαλείται μεταγλώττιση και
σύνδεση.

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.121

35 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

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


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.121

36 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

Ο μεταγλωττιστής ή ο διερμηνευτής ανιχνεύει λοιπόν τα


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.121-122

37 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

Η χρήση μεταγλωττιστή έχει το μειονέκτημα ότι, προτού


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.122

38 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

Για την αρχική σύνταξη των προγραμμάτων και τη διόρθωσή


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

Για τη δημιουργία, τη μετάφραση και την εκτέλεση ενός


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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.122

39 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

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

ΑΕΠΠ - Βιβλίο Μαθητή, §6.7, σελ.121

40 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

 Δεδομένου ότι η ΓΛΩΣΣΑ κάνει χρήση μεταγλωττιστή, θα


εκτελεστεί το παρακάτω κομμάτι κώδικα; Για ποιο λόγο;
o Θα εμφανιστεί κάτι στην οθόνη;

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


έξοδο;
ΓΡΑΨΕ 1
ΓΡΑΨΕ 2
ΓΡΑΨΕ,3
41 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

 Θα εκτελεστούν οι παρακάτω εντολές;


 Αν υπάρχουν λάθη, τι είδους είναι το καθένα;
o Συντακτικό ή Λογικό;

x <- 1.000 ! Θέλαμε να αποθηκεύσουμε την τιμή 1000


y <- 1.000.000 ! Θέλαμε να αποθηκεύσουμε την τιμή 1000000
42 / 680

6.7 Προγραμματιστικά περιβάλλοντα


Μεταγλωττιστής και Διερμηνευτής

Παραδείγματα (Θέματα Πανελλαδικών)


 2009 / Θέμα 1ο - Γ.2 (Λύσεις)
o Συντακτικά & Λογικά λάθη

43 / 680

7.1 Το αλφάβητο της ΓΛΩΣΣΑΣ


Αποτελείται από:

 Γράμματα
o Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)

o Πεζά ελληνικού αλφαβήτου (α-ω)

o Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)

o Πεζά λατινικού αλφαβήτου (a-z)

 Ψηφία
o 0-9
 Ειδικοί χαρακτήρες
o . , : _ '
o + - * / ^
o = < >
o [ ] ( )
o ! &
o κενός χαρακτήρας

ΑΕΠΠ - Βιβλίο Μαθητή, §7.1, σελ.127-128

44 / 680

7.1 Το αλφάβητο της ΓΛΩΣΣΑΣ


Όλοι οι υπόλοιποι χαρακτήρες επιτρέπονται μόνο σε σχόλια και
σε σταθερές χαρακτήρων:
ΓΡΑΨΕ 'Εmail: test@example.com'
ΓΡΑΨΕ 'Password: ******'
!Password: $#@%&!
45 / 680

7.2 Τύποι δεδομένων


 Ακέραιος τύπος: Ο τύπος αυτός περιλαμβάνει τους
ακέραιους που είναι γνωστοί από τα μαθηματικά. Οι
ακέραιοι μπορούν να είναι θετικοί, αρνητικοί ή μηδέν.
o Παραδείγματα ακεραίων: 1, 3409, 0, -980.

 Πραγματικός τύπος: Ο τύπος αυτός περιλαμβάνει τους


πραγματικούς αριθμούς που γνωρίζουμε από τα
μαθηματικά.
o Οι αριθμοί 3.14159, 2.71828, -112.45, 0.45 είναι
πραγματικοί αριθμοί.
o Και οι πραγματικοί αριθμοί μπορούν να είναι θετικοί,
αρνητικοί ή μηδέν.
 Χαρακτήρας: Ο τύπος αυτός αναφέρεται τόσο σε ένα
χαρακτήρα όσο και μία σειρά χαρακτήρων. Τα δεδομένα
αυτού του τύπου μπορούν να περιέχουν οποιονδήποτε
χαρακτήρα παράγεται από το πληκτρολόγιο.
o Παραδείγματα χαρακτήρων είναι 'Κ', 'Κώστας', 'σήμερα
είναι Τετάρτη', 'Τα πολλαπλάσια του 15 είναι'.

o Οι χαρακτήρες πρέπει υποχρεωτικά να βρίσκονται


μέσα σε απλά εισαγωγικά, ' '.
o Τα δεδομένα αυτού του τύπου, επειδή περιέχουν
τόσο αλφαβητικούς όσο και αριθμητικούς
χαρακτήρες, ονομάζονται συχνά αλφαριθμητικά.
 Λογικός: Αυτός ο τύπος δέχεται μόνο δύο τιμές: ΑΛΗΘΗΣ και
ΨΕΥΔΗΣ. Οι τιμές αντιπροσωπεύουν αληθείς ή ψευδείς
συνθήκες.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.2, σελ.128

46 / 680

7.2 Τύποι δεδομένων


Στην πραγματικότητα τα δεδομένα καταχωρούνται στη μνήμη
του υπολογιστή καταλαμβάνοντας συγκεκριμένο αριθμό θέσεων
(bytes). Ανάλογα με τον τύπο του δεδομένου και το διατιθέμενο
αριθμό bytes ποικίλλει και το εύρος τιμών που μπορούν να
λάβουν. Έτσι στον υπολογιστή διαθέτουμε ένα υποσύνολο
ακεραίων ή πραγματικών αριθμών. Συνήθεις τύποι δεδομένων
στις διάφορες γλώσσες προγραμματισμού είναι ο ακέραιος
(integer) σε 1, 2 ή 4 bytes και ο πραγματικός (real) σε 4 ή 8 bytes.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.2, Σημείωση, σελ.128

47 / 680

7.2 Τύποι δεδομένων


Γιατί είναι αναγκαίοι oι τύποι δεδομένων και η δήλωσή τους;

 9 ≠ 9.0
 9 ≠ '9'
o 9 ⇒ 00001001
o '9' ⇒ 00111001
 ABC ≟ 4276803
o ABC ⇒ 01000001 01000010 01000011
o 4276803 ⇒ 00000000010000010100001001000011
 2005 ≠ '2005'
o 2005 ⇒ 00000000000000000000011111010101
o '2005' ⇒ 00110010 00110000 00110000 00110101
 ΑΛΗΘΗΣ ≠ 'ΑΛΗΘΗΣ'
o ΑΛΗΘΗΣ ⇒ 1
o 'ΑΛΗΘΗΣ' ⇒ 1110010001 1110011011 1110010111 1110011000
1110010111 1110100011

Γιατί υπάρχουν ακέραιες και πραγματικές τιμές, ενώ οι ακέραιοι


είναι υποσύνολο των πραγματικών;

Πίνακας ASCII

48 / 680

7.2 Τύποι δεδομένων


Παραδείγματα (Θέματα Πανελλαδικών)

 2009 / Θέμα 1ο - Δ (Λύσεις)


o Αντιστοίχιση

49 / 680

7.3 Σταθερές
Οι σταθερές (constants) είναι προκαθορισμένες τιμές που δεν
μεταβάλλονται κατά τη διάρκεια εκτέλεσης του προγράμματος.
Οι σταθερές είναι αντίστοιχου τύπου δεδομένων, δηλαδή
ακέραιες, πραγματικές, αλφαριθμητικές (χαρακτήρες) ή
λογικές.

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

ΑΕΠΠ - Βιβλίο Μαθητή, §7.3, σελ.128

50 / 680

7.3 Σταθερές
Σύνταξη
ΣΤΑΘΕΡΕΣ
<Όνομα-1> = <σταθερή-τιμή-1>
<Όνομα-2> = <σταθερά-τιμή-2>

<Όνομα-ν> = <σταθερά-τιμή-ν>
51 / 680

7.3 Σταθερές
Παραδείγματα
ΣΤΑΘΕΡΕΣ
π = 3.14159
e = 2.71828 ! Δεσμευμένη λέξη; → E(x)
μαθητές_ανά_τάξη = 27
ΦΠΑ = 0.24 ! Γιατί όχι Φ.Π.Α. = 24%;
ΟΝΟΜΑ_ΣΧΟΛΕΙΟΥ = 'ΓΕΛ Πόρου'
52 / 680

7.3 Σταθερές
Ονόματα (Κανόνες)

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


(συμβολικές σταθερές και μεταβλητές) έχουν ένα όνομα, με το
οποίο αναφερόμαστε σε αυτά. Τα ονόματα αυτά μπορούν να
αποτελούνται από γράμματα πεζά ή κεφαλαία του ελληνικού ή
του λατινικού αλφαβήτου (Α-Ω, Α-Ζ), ψηφία (0-9) καθώς και τον
χαρακτήρα κάτω παύλα (underscore) ( _), ενώ πρέπει
υποχρεωτικά να αρχίζουν με γράμμα.

Επειδή μερικές λέξεις χρησιμοποιούνται από την ίδια τη ΓΛΩΣΣΑ


για συγκεκριμένους λόγους, όπως οι λέξεις ΠΡΟΓΡΑΜΜΑ, ΑΚΕΡΑΙΕΣ,
ΠΡΑΓΜΑΤΙΚΕΣ, ΑΝ κ.λπ., αυτές οι λέξεις δεν μπορούν να
χρησιμοποιηθούν ως ονόματα και αποκαλούνται δεσμευμένες
λέξεις.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.3, σελ.129

53 / 680

7.3 Σταθερές
Παραδείγματα
Ονόματα που είναι αποδεκτά από τη ΓΛΩΣΣΑ:

 Α
 Όνομα
 Τιμή
 Τυπική_Απόκλιση
 Α100
 ΦΠΑ
 μέγιστο
 Υπολογισμός_Ταχύτητας

Ονόματα που δεν είναι αποδεκτά:

 100Α
 Φ.Π.Α.
 Μέση Τιμή
 Κόστος$
 ΑΚΕΡΑΙΕΣ

54 / 680

7.3 Σταθερές
Παρατηρήσεις

 Είναι αναγκαία η χρήση σταθερών;


 Μπορεί να χρησιμοποιηθούν μεταβλητές στη θέση των
σταθερών;
 Ποια πλεονεκτήματα έχει η χρήση τους;
 Γιατί δεν χρειάζεται η δήλωση τύπου μιας σταθεράς;
 Μια σταθερά δεν μπορεί να είναι στα αριστερά μια εντολές
εκχώρησης *

55 / 680

7.4 Μεταβλητές
Μια μεταβλητή παριστάνει μία ποσότητα που η τιμή της μπορεί
να μεταβάλλεται.

Οι μεταβλητές που χρησιμοποιούνται σε ένα πρόγραμμα


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

Ενώ η τιμή της μεταβλητής μπορεί να αλλάζει κατά την εκτέλεση


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

Η ΓΛΩΣΣΑ επιτρέπει τη χρήση μεταβλητών των τεσσάρων τύπων


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

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


ονομάτων, δηλαδή αποτελείται από γράμματα, ψηφία καθώς και
τον χαρακτήρα _, ενώ το όνομα κάθε μεταβλητής είναι μοναδικό
για κάθε πρόγραμμα.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.4, σελ.129-130

56 / 680

7.4 Μεταβλητές
Μεταβλητή σε μαθηματικά και προγραμματισμό

Στον προγραμματισμό η μεταβλητή δεν αντιπροσωπεύει κάποιον


άγνωστο (π.χ. σε μια εξίσωση).

Κάθε μεταβλητή αναφέρεται σε μια περιοχή μνήμης, όπου είναι


αποθηκευμένη μία τιμή. Την τιμή αυτή μπορούμε να την
ανακτήσουμε ανά πάσα στιγμή (εφόσον η μεταβλητή έχει
αρχικοποιηθεί).

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


MS, M+, M-, MR στα "κομπιουτεράκια" χειρός

 MS ⇔Μ <- x
 M+ ⇔ Μ <- Μ + x
 M- ⇔ Μ <- Μ - x
 MR ⇔ ΓΡΑΨΕ Μ

57 / 680

7.4 Μεταβλητές
Σύνταξη
ΜΕΤΑΒΛΗΤΕΣ
<τύπος-1>: <Λίστα-μεταβλητών-1>
<τύπος-2>: <Λίστα-μεταβλητών-2>

<τύπος-ν>: <Λίστα-μεταβλητών-ν>
58 / 680

7.4 Μεταβλητές
Παραδείγματα
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Εμβαδόν, Α
ΑΚΕΡΑΙΕΣ: ΤΙΜΗ, Ν
ΧΑΡΑΚΤΗΡΕΣ: Όνομα
ΛΟΓΙΚΕΣ: Έλεγχος
59 / 680

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

Για παράδειγμα, στην περίπτωση του υπολογισμού του εμβαδού


είναι προτιμότερη η χρήση του ονόματος ΕΜΒΑΔΟ για την
αντίστοιχη μεταβλητή, από ένα όνομα που αποτελείται από ένα
μόνο γράμμα όπως Ε ή Α ή ένα οποιοδήποτε τυχαίο όνομα που
δεν ανάγει στο πραγματικό περιεχόμενο της μεταβλητής όπως
Τιμή.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.3, σελ.130

60 / 680
7.5 Αριθμητικοί τελεστές
Οι τελεστές και οι αντίστοιχες πράξεις είναι:

ΑΡΙΘΜΗΤΙΚΟΣ
ΠΡΑΞΗ
ΤΕΛΕΣΤΗΣ
+ Πρόσθεση
- Αφαίρεση
* Πολλαπλασιασμός
/ Διαίρεση
^ Ύψωση σε δύναμη
DIV Ακέραια διαίρεση
Υπόλοιπο ακέραιας
MOD
διαίρεσης

ΑΕΠΠ - Βιβλίο Μαθητή, §7.5, σελ.131

61 / 680

7.5 Αριθμητικοί τελεστές


DIV και MOD
x MOD y ∈ [0, y-1]
!Πηλίκο × Διαιρέτης + Υπόλοιπο = Διαιρετέος (επαλήθευση διαίρεσης)
(x DIV y) * y + (x MOD y) = x
x DIV 0 → ? x MOD 0 → ?
x DIV 1 → x x MOD 1 → 0
x DIV x → 1 x MOD x → 0
x DIV y → 0 x MOD y → y, όταν x < y
62 / 680

7.5 Αριθμητικοί τελεστές


DIV και Α_Μ()
!Είναι ισοδύναμες οι δύο εκφράσεις;
!Τι τύπου είναι οι μεταβλητές x & y, στην κάθε περίπτωση;
x DIV y ≟ Α_Μ(x/y)
63 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

64 / 680
7.5 Αριθμητικοί τελεστές
Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.

65 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0

66 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.

67 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.
o x MOD 2 = 0 και x MOD 2 = 1

68 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD
 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.
o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.
o x MOD 2 = 0 και x MOD 2 = 1

 Ποιο είναι το τελευταίο ψηφίο ενός ακέραιου αριθμού;

69 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.
o x MOD 2 = 0 και x MOD 2 = 1

 Ποιο είναι το τελευταίο ψηφίο ενός ακέραιου αριθμού;


o x MOD 10

70 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.
o x MOD 2 = 0 και x MOD 2 = 1

 Ποιο είναι το τελευταίο ψηφίο ενός ακέραιου αριθμού;


o x MOD 10
 Ποιο είναι το πρώτο ψηφίο ενός τριψήφιου, τετραψήφιου
ακέραιου κ.λπ.;

71 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.
o x MOD 2 = 0 και x MOD 2 = 1

 Ποιο είναι το τελευταίο ψηφίο ενός ακέραιου αριθμού;


o x MOD 10
 Ποιο είναι το πρώτο ψηφίο ενός τριψήφιου, τετραψήφιου
ακέραιου κ.λπ.;
o x DIV 100, x DIV 1000 κ.λπ;

72 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.
o x MOD 2 = 0 και x MOD 2 = 1

 Ποιο είναι το τελευταίο ψηφίο ενός ακέραιου αριθμού;


o x MOD 10
 Ποιο είναι το πρώτο ψηφίο ενός τριψήφιου, τετραψήφιου
ακέραιου κ.λπ.;
o x DIV 100, x DIV 1000 κ.λπ;

 Τι μέρα είναι η 100η μέρα ενός έτους, αν η πρώτη μέρα του


είναι Κυριακή;

73 / 680

7.5 Αριθμητικοί τελεστές


Συχνές χρήσεις του DIV και του MOD

 Έλεγχος αν ένας αριθμός είναι πολλαπλάσιο του N.


o x MOD N = 0
 Έλεγχος αν ένας αριθμός είναι άρτιος ή περιττός.
o x MOD 2 = 0 και x MOD 2 = 1

 Ποιο είναι το τελευταίο ψηφίο ενός ακέραιου αριθμού;


o x MOD 10
 Ποιο είναι το πρώτο ψηφίο ενός τριψήφιου, τετραψήφιου
ακέραιου κ.λπ.;
o x DIV 100, x DIV 1000 κ.λπ;

 Τι μέρα είναι η 100η μέρα ενός έτους, αν η πρώτη μέρα του


είναι Κυριακή;
 Αν ένα σινεμά έχει 4 σειρές με 5 καθίσματα σε κάθε σειρά,
σε ποια σειρά και ποια γραμμή θα καθήσει ο 13ος θεατής;

74 / 680

7.6 Συναρτήσεις
Πολλές γνωστές συναρτήσεις από τα μαθηματικά
χρησιμοποιούνται συχνά και περιέχονται στη ΓΛΩΣΣΑ. Οι
συναρτήσεις αυτές είναι:

Συνάρτησ
Λειτουργία
η
ΗΜ(Χ) Υπολογισμός ημιτόνου
ΣΥΝ(Χ) Υπολογισμός συνημιτόνου
ΕΦ(Χ) Υπολογισμός εφαπτομένης
Υπολογισμός τετραγωνικής
Τ_Ρ(Χ)
ρίζας
Υπολογισμός φυσικού
ΛΟΓ(Χ)
λογαρίθμου
Ε(Χ) Υπολογισμός του ex
Α_Μ(Χ) Ακέραιο μέρος του Χ
Α_Τ(Χ) Απόλυτη τιμή του Χ

ΑΕΠΠ - Βιβλίο Μαθητή, §7.6, σελ.131

75 / 680

7.6 Συναρτήσεις
Παρατηρήσεις

 oι συναρτήσεις ΗΜ(), ΣΥΝ() και ΕΦ() δέχονται παράμετρο σε


μοίρες
 το ακέραιο μέρος Α_Μ() ενός αριθμού x ορίζεται, όπως στα
μαθηματικά ο ακέραιος, με την ιδιότητα Α_Μ(x) <= x < Α_Μ(x)
+ 1,
 η απόλυτη τιμή Α_Τ() δέχεται αριθμητική παράμετρο, είτε
ακέραιο αριθμό και επιστρέφει ακέραιο, είτε πραγματικό
αριθμό και επιστρέφει πραγματικό

Οδηγίες διδασκαλίας … κατά το Σχολικό Έτος 2020-2021, σελ. 7

76 / 680

7.7 Αριθμητικές εκφράσεις


Όταν μια τιμή προκύπτει από υπολογισμό, τότε αναφερόμαστε
σε εκφράσεις (expressions). Για τη σύνταξη μιας αριθμητικής
έκφρασης χρησιμοποιούνται αριθμητικές σταθερές, μεταβλητές,
συναρτήσεις, αριθμητικοί τελεστές και παρενθέσεις. Οι
αριθμητικές εκφράσεις υλοποιούν απλές ή σύνθετες μαθηματικές
πράξεις.

Κάθε έκφραση παριστάνει μια συγκεκριμένη αριθμητική τιμή, η


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

ΑΕΠΠ - Βιβλίο Μαθητή, §7.7, σελ.131

77 / 680

7.7 Αριθμητικές εκφράσεις


Προτεραιότητα / Ιεραρχία

Οι πράξεις που παρουσιάζονται σε μια έκφραση εκτελούνται


σύμφωνα με την επόμενη ιεραρχία:

1. Ύψωση σε δύναμη
2. Πολλαπλασιασμός και διαίρεση
3. Πρόσθεση και αφαίρεση

Όταν η ιεραρχία είναι ίδια, τότε οι πράξεις εκτελούνται από τ'


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

ΑΕΠΠ - Βιβλίο Μαθητή, §7.7, σελ.131

78 / 680

7.7 Αριθμητικές εκφράσεις


Αναγκαιότητα παρενθέσεων

 Σε κλάσματα, όταν υπάρχει αριθμητική έκφραση σε


αριθμητή ή παρονομαστή
o Στον αριθμητή, όταν σε αριθμητική έκφραση εκτός
παρένθεσης υπάρχει κάποιος τελεστής χαμηλότερης
προτεραιότητας από τον / (με άλλα λόγια οι + και -)
o Στον παρονομαστή, πάντα όταν υπάρχει αριθμητική
έκφραση εκτός παρένθεσης
o Παραδείγματα:
 (-β + Τ_Ρ(Δ)) / (2*α)
 2*x / Α_Τ(x-y)
 2*a / (3*y)
 Σε αριθμητική έκφραση σε δύναμη
o Π.χ. Δ^(1/2) (⇔ Τ_Ρ(Δ))

 κ.λπ.

79 / 680

7.7 Αριθμητικές εκφράσεις


Ακέραια ή πραγματική έκφραση;

 Αν σε μια έκφραση υπάρχει έστω και μία πραγματική


σταθερά ή μεταβλητή, τότε το αποτέλεσμα είναι
πραγματικός αριθμός, εκτός και αν γίνεται χρήση της
συνάρτησης Α_Μ
 Όλες οι συναρτήσεις δίνουν ως αποτέλεσμα πραγματικό
αριθμό, εκτός της Α_Μ, που επιστρέφει πάντα ακέραιο, και
της Α_Τ που το αποτέλεσμά της έχει τον ίδιο τύπο με την
παράμετρό της.
 Ο τελεστής / δίνει πάντα πραγματικό αριθμό ως
αποτέλεσμα.
 Ο τελεστής ^ μπορεί να δώσει είτε ακέραιο είτε πραγματικό
αριθμό ως αποτέλεσμα.
ΓΡΑΨΕ 7/2 !3.5
ΓΡΑΨΕ 8/2 !4.0
ΓΡΑΨΕ 2^3 !8
ΓΡΑΨΕ 2^-1 !0.5
ΔΙΑΒΑΣΕ x
y <- 2^x !Το y πρέπει να δηλωθεί στις πραγματικές
80 / 680

7.7 Αριθμητικές εκφράσεις


Παραδείγματα (Θέματα Πανελλαδικών)

 2005 / Θέμα 1ο - Δ
o Αριθμητική έκφραση σε ΓΛΩΣΣΑ

 2008 επαν. / Θέμα 1ο - Δ (Λύσεις)


o Αριθμητική έκφραση σε ΓΛΩΣΣΑ

 2015 επάν. / Θέμα Α - Α5 (Λύσεις)


o Αριθμητική έκφραση σε ΓΛΩΣΣΑ

o Περιττές παρενθέσεις

81 / 680

2.4.1 Δομή Ακολουθίας


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

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.1, σελ.36

82 / 680
2.4.1 Δομή Ακολουθίας
 Σταθερές (constants). Με τον όρο αυτό αναφερόμαστε σε
προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε
όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου. Οι
σταθερές διακρίνονται σε
o αριθμητικές, π.χ. 123, +5, -1.25

o αλφαριθμητικές (χαρακτήρων) π.χ. 'Τιμή', 'Κατάσταση


αποτελεσμάτων'
oλογικές που είναι ακριβώς δύο, Αληθής και Ψευδής
 Μεταβλητές (variables). Μια μεταβλητή είναι ένα
γλωσσικό αντικείμενο, που χρησιμοποιείται για να
παραστήσει ένα στοιχείο δεδομένου. Στη μεταβλητή
εκχωρείται μια τιμή, η οποία μπορεί να αλλάζει κατά τη
διάρκεια εκτέλεσης του αλγορίθμου. Ανάλογα με το είδος
της τιμής που μπορούν να λάβουν, οι μεταβλητές
διακρίνονται σε αριθμητικές, αλφαριθμητικές και λογικές.
 Τελεστές (operators). Πρόκειται για τα γνωστά σύμβολα
που χρησιμοποιούνται στις διάφορες πράξεις. Οι τελεστές
διακρίνονται σε αριθμητικούς, λογικούς και συγκριτικούς.
 Εκφράσεις (expressions). Οι εκφράσεις διαμορφώνονται
από τους τελεστέους (operands), που είναι σταθερές και
μεταβλητές και από τους τελεστές. Η διεργασία αποτίμησης
μιας έκφρασης συνίσταται στην απόδοση τιμών στις
μεταβλητές και στην εκτέλεση των πράξεων. Η τελική τιμή
μιας έκφρασης εξαρτάται από την ιεραρχία των πράξεων
και τη χρήση των παρενθέσεων. Μια έκφραση μπορεί να
αποτελείται από μια μόνο μεταβλητή ή σταθερά μέχρι μια
πολύπλοκη μαθηματική παράσταση.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.1, σελ.37

83 / 680

7.8 Εντολή εκχώρησης


Σύνταξη & Λειτουργία
<Όνομα-Μεταβλητής> <- <έκφραση>
Υπολογίζεται η τιμή της έκφρασης στη δεξιά πλευρά και
εκχωρείται η τιμή αυτή στη μεταβλητή, που αναφέρεται στην
αριστερή πλευρά.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.8, σελ.132

84 / 680

7.8 Εντολή εκχώρησης


Παραδείγματα
Α <- 132
ΜΗΝΑΣ <- 'Ιανουάριος'
π <- 3.14 ! Καλύτερα σε σταθερά
Περίμετρος <- 2 * π * R
ΕΜΒΑΔΟΝ <- π * R ^ 2
Δ <- β^2 - 4*α*γ
ρ1 <- (-β + Τ_Ρ(Δ)) / (2*α)
x <- x + 1
85 / 680

7.8 Εντολή εκχώρησης


Παραδείγματα (Θέματα Πανελλαδικών)

 2009 / Θέμα 1ο - Β.2 (Λύσεις)


o Εκφράσεις σε εντολές εκχώρησης

 2012 / Θέμα Α2 (Λύσεις)


o Συμπλήρωση (εκτός του 3)

 2015 / Θέμα Α4 - α. (Λύσεις)


o Ισοδύναμη εντολή εκχώρησης

86 / 680

7.8 Εντολή εκχώρησης


Αντιμετάθεση μεταβλητών
προσωρινή <- α
α <- β
β <- προσωρινή
87 / 680
7.8 Εντολή εκχώρησης
Αντιμετάθεση μεταβλητών
προσωρινή <- α
α <- β
β <- προσωρινή
!Η ακόλουθη υλοποίηση κάνει επίσης αντιμετάθεση
!(αριθμητικών) μεταβλητών
!Υπάρχει κάποιο όφελος;
α <- α + β
β <- α - β
α <- α - β
88 / 680

7.8 Εντολή εκχώρησης


Ποσοστά

 Υπολογισμός Φ.Π.Α.
o φπα <- τιμή * 0.24
o τιμή <- τιμή + φπα
o τιμή <- τιμή + τιμή * 0.24
o τιμή <- τιμή * 1.24
 Υπολογισμός έκπτωσης
o έκπτωση <- τιμή * 0.10
o τιμή <- τιμή - έκπτωση
o τιμή <- τιμή - τιμή * 0.10
o τιμή <- τιμή * 0.90

Συχνά λάθη
 τιμή <- τιμή * 0.24
 τιμή <- τιμή - 0.10

89 / 680

7.9 Εντολές εισόδου-εξόδου


ΔΙΑΒΑΣΕ

Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντοτε από ένα ή περισσότερα


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

ΑΕΠΠ - Βιβλίο Μαθητή, §7.9, σελ.133

90 / 680

7.9 Εντολές εισόδου-εξόδου


ΔΙΑΒΑΣΕ

Σύνταξη
ΔΙΑΒΑΣΕ <λίστα-μεταβλητών>

Παραδείγματα
ΔΙΑΒΑΣΕ Ποσότητα, Τιμή
91 / 680

7.9 Εντολές εισόδου-εξόδου


ΓΡΑΨΕ

Η εντολή ΓΡΑΨΕ έχει ως αποτέλεσμα την εμφάνιση τιμών στη


μονάδα εξόδου. Συσκευή εξόδου μπορεί να είναι η οθόνη του
υπολογιστή, ο εκτυπωτής, βοηθητική μνήμη ή γενικά
οποιαδήποτε συσκευή εξόδου έχει οριστεί στο πρόγραμμα. Για
τα παραδείγματα αυτού του κεφαλαίου θεωρούμε ότι η
εμφάνιση γίνεται πάντοτε στην οθόνη. Η λίστα των στοιχείων
μπορεί να περιέχει σταθερές τιμές και ονόματα μεταβλητών.
Κατά την εκτέλεση του προγράμματος η εντολή ΓΡΑΨΕ προκαλεί
την εμφάνιση στην οθόνη των σταθερών τιμών. Όταν κάποιο
όνομα μεταβλητής περιέχεται στη λίστα, τότε αρχικά ανακτάται η
τιμή της και στη συνέχεια η τιμή αυτή εμφανίζεται στην οθόνη. Η
χρήση της εντολής ΓΡΑΨΕ είναι κυρίως η εμφάνιση μηνυμάτων
από τον υπολογιστή, καθώς και αποτελεσμάτων που περιέχονται
στις μεταβλητές.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.9, σελ.133


92 / 680

7.9 Εντολές εισόδου-εξόδου


ΓΡΑΨΕ

Σύνταξη
ΓΡΑΨΕ <λίστα-στοιχείων>

Παραδείγματα
ΓΡΑΨΕ 'Η τετραγωνική ρίζα του ', Α, ' είναι: ', ΡΙΖΑ
93 / 680

7.9 Εντολές εισόδου-εξόδου


ΓΡΑΨΕ

Συζήτηση
 Προσοχή στις περίπλοκες ΓΡΑΨΕ, όταν έχουμε κόμματα μέσα
σε '…' αλλά και εκτός
o ΓΡΑΨΕ 'Τα α=', α, ', β=', β, ', γ=', γ, ' έχουν ΜΟ=',
(α+β+γ)/3
 Τι λογικό λάθος πιθανότατα υπάρχει παρακάτω;
o ΓΡΑΨΕ 'x=', x, ' y=', 'y'

94 / 680

7.10 Δομή προγράμματος


ΠΡΟΓΡΑΜΜΑ <όνομα προγράμματος>
ΣΤΑΘΕΡΕΣ
<δήλωση σταθερών>
ΜΕΤΑΒΛΗΤΕΣ
<δήλωση μεταβλητών>
ΑΡΧΗ

… <εντολές προγράμματος>

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ <όνομα προγράμματος>

ΣΗΜΕΙΩΣΗ: Σύμφωνα με παλαιότερη διευκρίνιση τα

 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
 ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ <όνομα προγράμματος>
είναι και τα δύο αποδεκτά

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §1.1, σελ.7

95 / 680

7.10 Δομή προγράμματος


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

 Η πρώτη εντολή κάθε προγράμματος είναι υποχρεωτικά η


επικεφαλίδα του προγράμματος, η οποία είναι η λέξη
ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος.
Το τελευταίο πρέπει να υπακούει στους κανόνες
δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ.
 Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών
του προγράμματος, αν βέβαια το πρόγραμμά μας
χρησιμοποιεί σταθερές.
 Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών, όπου
δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους.
 Ακολουθεί το κύριο μέρος του προγράμματος, που
περιλαμβάνει όλες τις εκτελέσιμες εντολές. Οι εντολές
αυτές περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις
ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.

 Τέλος, αν το πρόγραμμα χρησιμοποιεί διαδικασίες (βλ. κεφ.


10), αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.
 Κάθε εντολή γράφεται σε ξεχωριστή γραμμή. Αν μία εντολή
πρέπει να συνεχιστεί και στην επόμενη γραμμή, τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο
χαρακτήρας &.
 Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό ( !), σημαίνει
ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.10, σελ.134


96 / 680

7.10 Δομή προγράμματος


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

 Η πρώτη εντολή κάθε προγράμματος είναι υποχρεωτικά η


επικεφαλίδα του προγράμματος, η οποία είναι η λέξη
ΠΡΟΓΡΑΜΜΑ ακολουθούμενη από το όνομα του προγράμματος.
Το τελευταίο πρέπει να υπακούει στους κανόνες
δημιουργίας ονομάτων της ΓΛΩΣΣΑΣ.
 Στη συνέχεια ακολουθεί το τμήμα δήλωσης των σταθερών
του προγράμματος, αν βέβαια το πρόγραμμά μας
χρησιμοποιεί σταθερές.
 Αμέσως μετά είναι το τμήμα δήλωσης μεταβλητών, όπου
δηλώνονται υποχρεωτικά τα ονόματα όλων των
μεταβλητών καθώς και ο τύπος τους.
 Ακολουθεί το κύριο μέρος του προγράμματος, που
περιλαμβάνει όλες τις εκτελέσιμες εντολές. Οι εντολές
αυτές περιλαμβάνονται υποχρεωτικά ανάμεσα στις λέξεις
ΑΡΧΗ και ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.

 Τέλος, αν το πρόγραμμα χρησιμοποιεί διαδικασίες (βλ. κεφ.


10), αυτές γράφονται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.
 Κάθε εντολή γράφεται σε ξεχωριστή γραμμή. Αν μία εντολή
πρέπει να συνεχιστεί και στην επόμενη γραμμή, τότε ο
πρώτος χαρακτήρας αυτής της γραμμής πρέπει να είναι ο
χαρακτήρας &.
 Αν ο πρώτος χαρακτήρας είναι το θαυμαστικό ( !), σημαίνει
ότι αυτή η γραμμή περιέχει σχόλια και όχι εκτελέσιμες
εντολές.

ΑΕΠΠ - Βιβλίο Μαθητή, §7.10, σελ.134

97 / 680

7.10 Δομή προγράμματος


Παράδειγμα
ΠΡΟΓΡΑΜΜΑ Κόστος_Υπολογιστών
! Πρόγραμμα υπολογισμού κόστους παραγγελίας υπολογιστών
ΣΤΑΘΕΡΕΣ
ΦΠΑ = 0.18
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ποσότητα, Τιμή_μονάδας, Κόστος
ΠΡΑΓΜΑΤΙΚΕΣ: Αξία_ΦΠΑ, Συνολικό_κόστος
ΑΡΧΗ
! Εισαγωγή δεδομένων
ΓΡΑΨΕ 'Δώσε την ποσότητα της παραγγελίας'
ΔΙΑΒΑΣΕ Ποσότητα
ΓΡΑΨΕ 'Δώσε την τιμή του υπολογιστή'
ΔΙΑΒΑΣΕ Τιμή_μονάδας
! Υπολογισμοί
Κόστος <- Ποσότητα * Τιμή_μονάδας
Αξία_ΦΠΑ <- Κόστος * ΦΠΑ
Συνολικό_κόστος <- Κόστος + Αξία_ΦΠΑ
! Εμφάνιση αποτελεσμάτων
ΓΡΑΨΕ 'Το κόστος των', Ποσότητα, 'υπολογ. είναι ', Κόστος
ΓΡΑΨΕ 'Η αξία του ΦΠΑ είναι', Αξία_ΦΠΑ
ΓΡΑΨΕ 'Το συνολικό κόστος είναι', Συνολικό_κόστος
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
98 / 680

7.10 Δομή προγράμματος


Παρατηρήσεις

 Κάθε μεταβλητή πρέπει να έχει τιμή πριν χρησιμοποιηθεί


(π.χ. όταν εμφανίζεται σε μια έκφραση). Για να πάρει τιμή
μια μεταβλητή υπάρχουν τρεις τρόποι:
o όταν είναι όρισμα μιας εντολής εισόδου, π.χ. ΔΙΑΒΑΣΕ x

o όταν είναι στην αριστερή μεριά μιας εντολής


εκχώρησης, π.χ. x <- α + β
o όταν αποτελεί παράμετρος ενός υποπρογράμματος
(ΔΙΑΔΙΚΑΣΙΑ), το οποίο της αλλάζει τιμή
 Η στοίχιση των εντολών (indentation) δεν είναι
υποχρεωτική, αλλά είναι καλή πρακτική.

99 / 680

2.4.2 Δομή Επιλογής


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

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.2, σελ.38

100 / 680

2.4.2 Δομή Επιλογής


Απλή Επιλογή

Σύνταξη
ΑΝ <συνθήκη> ΤΟΤΕ
<εντολές>
ΤΕΛΟΣ_ΑΝ
101 / 680

2.4.2 Δομή Επιλογής


Απλή Επιλογή

Διάγραμμα Ροής
st=>start: Αρχή
e=>end: Τέλος
op=>operation: εντολές
cond=>condition: συνθήκη
st->cond
cond(yes, left)->op->e
cond(no, right)->e
102 / 680

2.4.2 Δομή Επιλογής


Σύνθετη Επιλογή

Σύνταξη
ΑΝ <συνθήκη> ΤΟΤΕ
<εντολές-1>
ΑΛΛΙΩΣ
<εντολές-2>
ΤΕΛΟΣ_ΑΝ
103 / 680
2.4.2 Δομή Επιλογής
Σύνθετη Επιλογή

Σύνταξη
ΑΝ <συνθήκη> ΤΟΤΕ
<εντολές-1>
ΑΛΛΙΩΣ
<εντολές-2>
ΤΕΛΟΣ_ΑΝ
 Υπάρχει περίπτωση να μην εκτελεστεί τίποτα από τις
<εντολές-1>, <εντολές-2>;

104 / 680

2.4.2 Δομή Επιλογής


Σύνθετη Επιλογή

Σύνταξη
ΑΝ <συνθήκη> ΤΟΤΕ
<εντολές-1>
ΑΛΛΙΩΣ
<εντολές-2>
ΤΕΛΟΣ_ΑΝ
 Υπάρχει περίπτωση να μην εκτελεστεί τίποτα από τις
<εντολές-1>, <εντολές-2>;

 Υπάρχει περίπτωση να εκτελεστούν και οι <εντολές-1> αλλά


και οι <εντολές-2>;

105 / 680

2.4.2 Δομή Επιλογής


Σύνθετη Επιλογή

Διάγραμμα Ροής
st=>start: Αρχή
e=>end: Τέλος
opy=>operation: εντολές-ναι
opn=>operation: εντολές-όχι
cond=>condition: συνθήκη
st->cond
cond(yes, left)->opy->e
cond(no, right)->opn->e
106 / 680

2.4.3 Διαδικασίες πολλαπλών επιλογών


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

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.3, σελ.40

107 / 680

2.4.3 Διαδικασίες πολλαπλών επιλογών


ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ_ΑΝ

Παράδειγμα 4. Ανάθεση γραμμάτων σε αριθμούς Να


διαβασθεί ένας ακέραιος και να εκτυπωθεί το αντίστοιχο
γράμμα της αλφαβήτου αν ο ακέραιος έχει τιμή 1 ή 2 ή 3,
διαφορετικά να εκτυπωθεί η λέξη “άγνωστος”.
ΔΙΑΒΑΣΕ α
ΑΝ α = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Α'
ΑΛΛΙΩΣ_ΑΝ α = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Β'
ΑΛΛΙΩΣ_ΑΝ α = 3 ΤΟΤΕ
ΓΡΑΨΕ 'Γ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Άγνωστος'
ΤΕΛΟΣ_ΑΝ

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.3, σελ.41

108 / 680

2.4.3 Διαδικασίες πολλαπλών επιλογών


ΕΠΙΛΕΞΕ…ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ

Παράδειγμα 5. Επιλογή ορίων Να εισαχθεί ένας ακέραιος


που αντιστοιχεί σε μια ηλικία και να βρεθεί σε ποια όρια
εντάσσεται η δεδομένη ηλικία εμφανίζοντας σχετικό μήνυμα.
ΓΡΑΨΕ 'Σε ποια ηλικία άρχισες να μαθαίνεις προγραμματισμό;'
ΔΙΑΒΑΣΕ age
ΕΠΙΛΕΞΕ age
ΠΕΡΙΠΤΩΣΗ < 0
ΓΡΑΨΕ 'Είπαμε ηλικία…'
ΠΕΡΙΠΤΩΣΗ < 5
ΓΡΑΨΕ 'Μάλλον τα παραλές!'
ΠΕΡΙΠΤΩΣΗ < 60
ΓΡΑΨΕ 'Μπράβο'
ΠΕΡΙΠΤΩΣΗ < 100
ΓΡΑΨΕ 'Ποτέ δεν είναι αργά'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Κάλλιο αργά παρά ποτέ'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.3, σελ.42

109 / 680

2.4.3 Διαδικασίες πολλαπλών επιλογών


Παρατηρήσεις

 Δεν υπάρχει περίπτωση να εκτελεστούν μαζί τα <εντολές-1>,


<εντολές-2>, <εντολές-3>, <εντολές-ν>

 Το κομμάτι ΑΛΛΙΩΣ δεν ειναι υποχρεωτικό


o Αν υπάρχει τότε:

 είναι πάντα στο τέλος

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


μέσα στην ΑΝ/ΕΠΙΛΕΞΕ

110 / 680

2.4.3 Διαδικασίες πολλαπλών επιλογών


Διάγραμμα Ροής
st=>start: Αρχή
e=>end: Τέλος
op1=>operation: εντολές-1
op2=>operation: εντολές-2
opn=>operation: εντολές-ν
opo=>operation: εντολές-αλλιώς
cond1=>condition: συνθήκη-1
cond2=>condition: συνθήκη-2
condn=>condition: συνθήκη-v
st->cond1
cond1(yes, left)->op1->e
cond1(no, right)->cond2->e
cond2(yes, left)->op2->e
cond2(no, right)->condn->e
condn(yes, left)->opn->e
condn(no, right)->opo->e

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.3, σελ.41

111 / 680

2.4.4 Εμφωλευμένες Διαδικασίες


Παράδειγμα 6. Χαρακτηρισμός ατόμων

Να διαβάζονται δύο αριθμοί που αντιστοιχούν στο ύψος και


βάρος ενός άνδρα. Να εκτυπώνεται ότι ο άνδρας είναι “ελαφρύς”,
αν το βάρος του είναι κάτω από 80 κιλά, ή να εκτυπώνεται
“βαρύς” στην αντίθετη περίπτωση. Επίσης να εκτυπώνεται
“κοντός” αν το ύψος του είναι κάτω από 1.70, αλλιώς να
εκτυπώνεται “ψηλός”.

112 / 680

2.4.4 Εμφωλευμένες Διαδικασίες


Παράδειγμα 6. Χαρακτηρισμός ατόμων

Να διαβάζονται δύο αριθμοί που αντιστοιχούν στο ύψος και


βάρος ενός άνδρα. Να εκτυπώνεται ότι ο άνδρας είναι “ελαφρύς”,
αν το βάρος του είναι κάτω από 80 κιλά, ή να εκτυπώνεται
“βαρύς” στην αντίθετη περίπτωση. Επίσης να εκτυπώνεται
“κοντός” αν το ύψος του είναι κάτω από 1.70, αλλιώς να
εκτυπώνεται “ψηλός”.

 Μπορεί να υλοποιηθεί χωρίς τη χρήση εμφωλευμένων


εντολών ΑΝ;

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.4, σελ.42

113 / 680

2.4.4 Εμφωλευμένες Διαδικασίες


Διάγραμμα Ροής
st=>start: Αρχή
e=>end: Τέλος
cond1=>condition: συνθήκη-1
cond2=>condition: συνθήκη-2
cond3=>condition: συνθήκη-3
op1=>operation: εντολές-1
op2=>operation: εντολές-2
op3=>operation: εντολές-3
op4=>operation: εντολές-4
st->cond1
cond1(yes, left)->cond2->e
cond1(no, right)->cond3->e
cond2(yes, left)->op1->e
cond2(no, right)->op2->e
cond3(yes, left)->op3->e
cond3(no, right)->op4->e

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.3, σελ.43

114 / 680

2.4.4 Εμφωλευμένες Διαδικασίες


Παραδείγματα (Θέματα Πανελλαδικών)

 2006 / Θέμα 2ο - 1
o Διάγραμμα Ροής σε Ψευδογλώσσα

 2015 επάν. / Θέμα Β1 (Λύσεις)


o Αλγόριθμος σε Διάγραμμα Ροής

115 / 680

2.4.4 Εμφωλευμένες Διαδικασίες


Λογικοί τελεστές & Άλγεβρα Boole

Πρόταση Πρόταση Α ΚΑΙ Β ΑΉΒ ΌΧΙ Α


Α Β (Σύζευξη) (Διάζευξη) (Άρνηση)
ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ
ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ
ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΑΛΗΘΗΣ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ

Παρατηρήσεις
ΑΛΗΘΗΣ Η Χ ⇔ Χ Η ΑΛΗΘΗΣ ⇒ ΑΛΗΘΗΣ
ΨΕΥΔΗΣ ΚΑΙ Χ ⇔ Χ ΚΑΙ ΨΕΥΔΗΣ ⇒ ΨΕΥΔΗΣ
ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.4, σελ.43

116 / 680

8.1 Εντολές Επιλογής


Λογική Έκφραση

Για τη σύνταξη μιας λογικής έκφρασης ή συνθήκης


χρησιμοποιούνται σταθερές, μεταβλητές, αριθμητικές
παραστάσεις, συγκριτικοί και λογικοί τελεστές, καθώς και
παρενθέσεις. Στις λογικές εκφράσεις γίνεται σύγκριση της τιμής
μίας έκφρασης, που βρίσκεται αριστερά από το συγκριτικό
τελεστή με την τιμή μιας άλλης έκφρασης που βρίσκεται δεξιά.
Το αποτέλεσμα είναι μία λογική τιμή ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ 1.
1
Λογική τιμή ⇔ Λογική σταθερά

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1, σελ.139

117 / 680

8.1 Εντολές Επιλογής


Λογική Έκφραση

 Οι συγκρίσεις γίνονται σε δεδομένα αριθμητικά,


αλφαριθμητικά και λογικά.
 Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή
τρόπο.
o Στην περίπτωση των πραγματικών αριθμών
θεωρούμε ότι οι αριθμοί μπορούν να έχουν άπειρο
αριθμό ψηφίων.
 Η σύγκριση ατομικών χαρακτήρων στηρίζεται στην
αλφαβητική σειρά, για παράδειγμα το 'α' θεωρείται
μικρότερο από το 'β'.
o Η σύγκριση αλφαριθμητικών δεδομένων βασίζεται
στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε
θέση μέχρις ότου βρεθεί κάποια διαφορά, για
παράδειγμα η λέξη 'κακός' θεωρείται μικρότερη από
τη λέξη 'καλός' αφού το γράμμα κ προηγείται του
γράμματος λ.
 Η σύγκριση λογικών έχει έννοια μόνο στην περίπτωση του
ίσου = και του διάφορου <>, αφού οι τιμές που μπορούν να
έχουν είναι ΑΛΗΘΗΣ και ΨΕΥΔΗΣ.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1, σελ.139

118 / 680

8.1 Εντολές Επιλογής


Συγκριτικοί τελεστές

Τελεστή Ελεγχόμενη Μαθημ.


ς σχέση σύμβολο
= Ισότητα
<> Ανισότητα ≠
> Μεγαλύτερο από
>= Μεγαλύτερο ή ίσο ≥
< Μικρότερο
<= Μικρότερο ή ίσο ≤

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1, σελ.139

119 / 680

8.1 Εντολές Επιλογής


Συγκριτικοί τελεστές

Τελεστή Ελεγχόμενη Μαθημ.


ς σχέση σύμβολο
= Ισότητα
<> Ανισότητα ≠
> Μεγαλύτερο από
>= Μεγαλύτερο ή ίσο ≥
< Μικρότερο
<= Μικρότερο ή ίσο ≤

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1, σελ.139

Προσοχή
 Ποια άλλη χρήση έχει το =;
 =< & =>
 <- & <=

120 / 680

8.1 Εντολές Επιλογής


Συγκριτικοί τελεστές

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


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

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1, σελ.139

121 / 680

8.1 Εντολές Επιλογής


Συγκριτικοί τελεστές

Σύγκριση χαρακτήρων
'Α' < 'ΑΒ'
'Χ' < 'Ψ'
'ΓΙΑΝΗΣ' < 'ΓΙΑΝΝΗΣ'
'Γ' < 'ΓΙΑΝΝΗΣ' < 'ΓΙΩΡΓΟΣ' < 'ΓΩΓΩ'
'100' < '9'
'1' < '10' < '100' < '11' < '2' < '20'

Σύμφωνα με τη λεξικογραφική διάταξη των χαρακτήρων. Πίνακας ASCII

122 / 680

8.1 Εντολές Επιλογής


Συγκριτικοί τελεστές

Προσοχή
'ΑΛΗΘΗΣ' < 'ΨΕΥΔΗΣ' ⇒ ΑΛΗΘΗΣ
ΑΛΗΘΗΣ < ΨΕΥΔΗΣ ⇒ ? !Δεν ορίζεται
123 / 680
8.1 Εντολές Επιλογής
Συγκριτικοί τελεστές

Συγκριτικοί τελεστές σε εντολή εκχώρησης


ΔΙΑΒΑΣΕ α, β, γ
ΜΟ <- (α + β + γ) / 3
πέρασες <- (ΜΟ >= 9.5)
ΓΡΑΨΕ 'Πέρασες την τάξη; ', πέρασες
124 / 680

8.1 Εντολές Επιλογής


Συγκριτικοί τελεστές

Παραδείγματα (Θέματα Πανελλαδικών) *


 2012 / Θέμα Α2 (Λύσεις)
o Συμπλήρωση

125 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Σε πολλά προβλήματα οι επιλογές δεν αρκεί να γίνονται με απλές


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

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1, σελ.140

126 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Παραδείγματα
 0 < Χ < 5
o 0 < X ΚΑΙ Χ < 5 ⇔Χ > 0 ΚΑΙ Χ < 5

127 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Παραδείγματα
 0 < Χ < 5
o 0 < X ΚΑΙ Χ < 5 ⇔ Χ > 0 ΚΑΙ Χ < 5
 Χ = 1 ή 2 ή 3
o Χ = 1 Η Χ = 2 Η Χ = 3

128 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Παραδείγματα
 0 < Χ < 5
o 0 < X ΚΑΙ Χ < 5 ⇔ Χ > 0 ΚΑΙ Χ < 5
 Χ = 1 ή 2 ή 3
o Χ = 1 Η Χ = 2 Η Χ = 3
 X ∈ (-∞, 4]
o X <= 4 ⇔X < 4 Η X = 4

129 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Παραδείγματα
 0 < Χ < 5
o 0 < X ΚΑΙ Χ < 5 ⇔ Χ > 0 ΚΑΙ Χ < 5
 Χ = 1 ή 2 ή 3
o Χ = 1 Η Χ = 2 Η Χ = 3
 X ∈ (-∞, 4]
o X <= 4 ⇔ X < 4 Η X = 4
 X ∈ [1, 20]
o X >= 1 ΚΑΙ X <=20

130 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Παραδείγματα
 0 < Χ < 5
o 0 < X ΚΑΙ Χ < 5 ⇔ Χ > 0 ΚΑΙ Χ < 5
 Χ = 1 ή 2 ή 3
o Χ = 1 Η Χ = 2 Η Χ = 3
 X ∈ (-∞, 4]
o X <= 4 ⇔ X < 4 Η X = 4
 X ∈ [1, 20]
o X >= 1 ΚΑΙ X <=20
 X ∈ (-∞, 0] ∪ (10, +∞)
o X <= 0 Η X > 10

131 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Παραδείγματα
 0 < Χ < 5
o 0 < X ΚΑΙ Χ < 5 ⇔ Χ > 0 ΚΑΙ Χ < 5
 Χ = 1 ή 2 ή 3
o Χ = 1 Η Χ = 2 Η Χ = 3
 X ∈ (-∞, 4]
o X <= 4 ⇔ X < 4 Η X = 4
 X ∈ [1, 20]
o X >= 1 ΚΑΙ X <=20
 X ∈ (-∞, 0] ∪ (10, +∞)
o X <= 0 Η X > 10

Η ιεραρχία των λογικών τελεστών είναι μικρότερη των


αριθμητικών.
ΑΕΠΠ - Βιβλίο Μαθητή, §8.1, σελ.140

132 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

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


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

1. Αριθμητικοί τελεστές
2. Συγκριτικοί τελεστές και
3. Λογικοί τελεστές.

Οι πράξεις σε μια λογική έκφραση εκτελούνται με την παρακάτω


ιεραρχία:

1. ΟΧΙ
2. ΚΑΙ
3. Ή

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §1.5, σελ.14

133 / 680

8.1 Εντολές Επιλογής


Σύνθετες Εκφράσεις

Λογική άρνηση / Συμπληρωματικές Εκφράσεις


ΟΧΙ(Α<>Β) ⇔ Α=Β
ΟΧΙ(Α>Β) ⇔ Α<=Β
ΟΧΙ(Χ>0 ΚΑΙ Υ>0) ⇔ Χ<=0 Η Υ<=0
ΟΧΙ(Α=1 Η Α=2) ⇔ Α<>1 ΚΑΙ Α<>2
134 / 680
8.1 Εντολές Επιλογής
Σύνθετες Εκφράσεις

Παραδείγματα (Θέματα Πανελλαδικών)


 2010 επάν. / Θέμα Α1 (Λύσεις)
o Υπολογισμός λογικών εκφράσεων

 2014 / Θέμα Α2 & Α3 (Λύσεις)


o Λογικοί τελεστές, συγκριτικοί τελεστές, εκφράσεις,
λογικές σταθερές
o Εκτέλεση λογικών εκφράσεων

 2015 / Θέμα Α5 - α. (Λύσεις)


o Εντολές εκχώρησης

o Λογικές εκφράσεις

135 / 680

8.1.1 Εντολή ΑΝ
Η δομή επιλογής υλοποιείται στη ΓΛΩΣΣΑ με την εντολή ΑΝ. Η
εντολή ΑΝ εμφανίζεται με τρεις διαφορετικές μορφές. Την απλή
εντολή ΑΝ…ΤΟΤΕ, την εντολή ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ και τέλος την εντολή ΑΝ…
ΤΟΤΕ…ΑΛΛΙΩΣ_ΑΝ. Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ.

Στην απλούστερη μορφή της η εντολή ΑΝ ελέγχει τη συνθήκη και


αν αυτή ισχύει (είναι αληθής), τότε εκτελούνται οι εντολές που
περιλαμβάνονται μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.140

136 / 680

8.1.1 Εντολή ΑΝ
Απλή Επιλογή

Σύνταξη & Λειτουργία


ΑΝ <συνθήκη> ΤΟΤΕ ! Η συνθήκη είναι μια λογική έκφραση
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΤΕΛΟΣ_ΑΝ
137 / 680

8.1.1 Εντολή ΑΝ
Απλή Επιλογή

Σύνταξη & Λειτουργία


ΑΝ <συνθήκη> ΤΟΤΕ ! Η συνθήκη είναι μια λογική έκφραση
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΤΕΛΟΣ_ΑΝ

Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές που βρίσκονται


μεταξύ των λέξεων ΤΟΤΕ και ΤΕΛΟΣ_ΑΝ, σε αντίθετη περίπτωση οι
εντολές αυτές αγνοούνται. Η εκτέλεση του προγράμματος
συνεχίζεται με την εντολή που ακολουθεί τη δήλωση ΤΕΛΟΣ_ΑΝ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.140

138 / 680

8.1.1 Εντολή ΑΝ
Απλή Επιλογή

Παραδείγματα
ΑΝ αριθμός > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ο αριθμός είναι θετικός'
Πλήθος_θετικών <- Πλήθος_θετικών + 1
ΤΕΛΟΣ_ΑΝ
139 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)
Συχνά η εντολή ΑΝ εκτός από το τμήμα των εντολών, που
εκτελούνται όταν η λογική έκφραση είναι Αληθής, περιέχει και το
τμήμα των εντολών που εκτελούνται, αν δεν ισχύει η συνθήκη
(είναι Ψευδής).

Η μορφή αυτής της εντολής ονομάζεται ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ.

Η γενική μορφή της εντολής ΑΝ καλύπτει την επιλογή μιας από


δύο εναλλακτικές περιπτώσεις.

140 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Σύνταξη & Λειτουργία


ΑΝ <συνθήκη> ΤΟΤΕ ! Η συνθήκη είναι μια λογική έκφραση
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΑΛΛΙΩΣ
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΤΕΛΟΣ_ΑΝ
141 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Σύνταξη & Λειτουργία


ΑΝ <συνθήκη> ΤΟΤΕ ! Η συνθήκη είναι μια λογική έκφραση
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΑΛΛΙΩΣ
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΤΕΛΟΣ_ΑΝ

Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές που βρίσκονται


μεταξύ των λέξεων ΤΟΤΕ και ΑΛΛΙΩΣ, διαφορετικά εκτελούνται οι
εντολές μεταξύ ΑΛΛΙΩΣ και ΤΕΛΟΣ_ΑΝ. Η εκτέλεση του προγράμματος
συνεχίζεται με την εντολή που ακολουθεί τη δήλωση ΤΕΛΟΣ_ΑΝ.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.141

142 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Παράδειγμα
ΑΝ αριθμός > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ο αριθμός είναι θετικός'
Πλήθος_θετικών <- Πλήθος_θετικών + 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Ο αριθμός είναι αρνητικός ή 0'
Πλήθος_μη_θετικών <- Πλήθος_μη_θετικών + 1
ΤΕΛΟΣ_ΑΝ
143 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Μετατροπές
Αντιστροφή της συνθήκης / λογικής έκφρασης
ΑΝ x > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Θετικός'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Όχι θετικός'
ΤΕΛΟΣ_ΑΝ
144 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)
Μετατροπές
Αντιστροφή της συνθήκης / λογικής έκφρασης
ΑΝ x > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Θετικός'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Όχι θετικός'
ΤΕΛΟΣ_ΑΝ
ΑΝ x <= 0 ΤΟΤΕ
ΓΡΑΨΕ 'Όχι θετικός'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Θετικός'
ΤΕΛΟΣ_ΑΝ
145 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Μετατροπές
Εντολή που εκτελείται σε κάθε περίπτωση
ΑΝ Χ >= 0 ΤΟΤΕ
Μ <- 'ΘΕΤΙΚΟΣ'
ΓΡΑΨΕ Μ
ΑΛΛΙΩΣ
Μ <- 'ΑΡΝΗΤΙΚΟΣ'
ΓΡΑΨΕ Μ
ΤΕΛΟΣ_ΑΝ
146 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Μετατροπές
Εντολή που εκτελείται σε κάθε περίπτωση
ΑΝ Χ >= 0 ΤΟΤΕ
Μ <- 'ΘΕΤΙΚΟΣ'
ΓΡΑΨΕ Μ
ΑΛΛΙΩΣ
Μ <- 'ΑΡΝΗΤΙΚΟΣ'
ΓΡΑΨΕ Μ
ΤΕΛΟΣ_ΑΝ
ΑΝ Χ >= 0 ΤΟΤΕ
Μ <- 'ΘΕΤΙΚΟΣ'
ΑΛΛΙΩΣ
Μ <- 'ΑΡΝΗΤΙΚΟΣ'
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ Μ
147 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Μετατροπές
Η εντολή y <- x μπορεί να μπει μέσα στην ΑΝ;
y <- x
ΑΝ x >= 0 ΤΟΤΕ
y <- y + 1
ΤΕΛΟΣ_ΑΝ
148 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Μετατροπές
Η εντολή y <- x μπορεί να μπει μέσα στην ΑΝ;
y <- x
ΑΝ x >= 0 ΤΟΤΕ
y <- y + 1
ΤΕΛΟΣ_ΑΝ
ΑΝ x >= 0 ΤΟΤΕ
y <- x
y <- y + 1
ΑΛΛΙΩΣ
y <- x
ΤΕΛΟΣ_ΑΝ
149 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Μετατροπές
Η εντολή ΔΙΑΒΑΣΕ x μπορεί να μπει μέσα στην ΑΝ;
ΔΙΑΒΑΣΕ x
ΑΝ x >= 0 ΤΟΤΕ
ΓΡΑΨΕ x
ΤΕΛΟΣ_ΑΝ
150 / 680

8.1.1 Εντολή ΑΝ
Σύνθετη Επιλογή (Γενική Μορφή)

Μετατροπές
Η εντολή ΔΙΑΒΑΣΕ x μπορεί να μπει μέσα στην ΑΝ;
ΔΙΑΒΑΣΕ x
ΑΝ x >= 0 ΤΟΤΕ
ΓΡΑΨΕ x
ΤΕΛΟΣ_ΑΝ
ΑΝ x >= 0 ΤΟΤΕ !Σφάλμα
ΔΙΑΒΑΣΕ x
ΓΡΑΨΕ x
ΑΛΛΙΩΣ
ΔΙΑΒΑΣΕ x
ΤΕΛΟΣ_ΑΝ
151 / 680

8.1.1 Εντολή ΑΝ
Εμφωλευμένες εντολές ΑΝ

Όταν οι εναλλακτικές περιπτώσεις είναι περισσότερες από τις


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

Ορισμός
Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της
μορφής ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ που περιέχονται η μία μέσα στην άλλη.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.141-142

152 / 680

8.1.1 Εντολή ΑΝ
Εμφωλευμένες εντολές ΑΝ
Παράδειγμα
ΔΙΑΒΑΣΕ Βάρος, Ύψος
ΑΝ Βάρος < 80 ΤΟΤΕ
ΑΝ Ύψος < 1.70 ΤΟΤΕ
ΓΡΑΨΕ 'Ελαφρύς, κοντός'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
153 / 680

8.1.1 Εντολή ΑΝ
Εμφωλευμένες εντολές ΑΝ

Παράδειγμα
ΔΙΑΒΑΣΕ Βάρος, Ύψος
ΑΝ Βάρος < 80 ΤΟΤΕ
ΑΝ Ύψος < 1.70 ΤΟΤΕ
ΓΡΑΨΕ 'Ελαφρύς, κοντός'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

Η χρήση εμφωλευμένων εντολών ΑΝ οδηγεί συνήθως σε


πολύπλοκες δομές που αυξάνουν την πιθανότητα του λάθους
καθώς και τη δυσκολία κατανόησης του προγράμματος. Πολύ
συχνά οι εντολές που έχουν γραφεί με εμφωλευμένα ΑΝ,
μπορούν να γραφούν πιο απλά χρησιμοποιώντας σύνθετες
εκφράσεις ή την εντολή επιλογής ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ_ΑΝ.

154 / 680

8.1.1 Εντολή ΑΝ
Εμφωλευμένες εντολές ΑΝ

Παράδειγμα
ΔΙΑΒΑΣΕ Βάρος, Ύψος
ΑΝ Βάρος < 80 ΤΟΤΕ
ΑΝ Ύψος < 1.70 ΤΟΤΕ
ΓΡΑΨΕ 'Ελαφρύς, κοντός'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

Η χρήση εμφωλευμένων εντολών ΑΝ οδηγεί συνήθως σε


πολύπλοκες δομές που αυξάνουν την πιθανότητα του λάθους
καθώς και τη δυσκολία κατανόησης του προγράμματος. Πολύ
συχνά οι εντολές που έχουν γραφεί με εμφωλευμένα ΑΝ,
μπορούν να γραφούν πιο απλά χρησιμοποιώντας σύνθετες
εκφράσεις ή την εντολή επιλογής ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ_ΑΝ.
ΔΙΑΒΑΣΕ Βάρος, Ύψος
ΑΝ Βάρος < 80 ΚΑΙ Ύψος < 1.70 ΤΟΤΕ
ΓΡΑΨΕ 'Ελαφρύς, κοντός'
ΤΕΛΟΣ_ΑΝ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.142

155 / 680

8.1.1 Εντολή ΑΝ
Πολλαπλές Επιλογές

Σύνταξη
ΑΝ <συνθήκη-1> ΤΟΤΕ ! Η συνθήκη είναι μια λογική έκφραση
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΑΛΛΙΩΣ_ΑΝ <συνθήκη-2> ΤΟΤΕ ! Η συνθήκη είναι μια λογική έκφραση
<εντολή-1>
<εντολή-2>

<εντολή-ν>

ΑΛΛΙΩΣ
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΤΕΛΟΣ_ΑΝ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.142-143

156 / 680

8.1.1 Εντολή ΑΝ
Πολλαπλές Επιλογές

Λειτουργία
Εκτελούνται οι εντολές που βρίσκονται στο αντίστοιχο τμήμα,
όταν η συνθήκη είναι αληθής. Η εκτέλεση του προγράμματος
συνεχίζεται με την εντολή που ακολουθεί τη δήλωση ΤΕΛΟΣ_ΑΝ.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.143

157 / 680

8.1.1 Εντολή ΑΝ
Πολλαπλές Επιλογές

Παράδειγμα
ΑΝ αριθμός > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ο αριθμός είναι θετικός'
Πλήθος_θετικών <- Πλήθος_θετικών + 1
ΑΛΛΙΩΣ_ΑΝ αριθμός < 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ο αριθμός είναι αρνητικός'
Πλήθος_αρνητικών <- Πλήθος_ αρνητικών + 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'O αριθμός είναι 0'
Πλήθος_0 <- Πλήθος_0 + 1
ΤΕΛΟΣ_ΑΝ
158 / 680

8.1.1 Εντολή ΑΝ
Παράδειγμα. … (πωλήσεις υπολογιστών) υποθέτουμε ότι η
τιμή των υπολογιστών εξαρτάται από την ποσότητα
παραγγελίας. Συγκεκριμένα ισχύουν οι παρακάτω τιμές
αγοράς υπολογιστών.
ΠΟΣΟΤΗΤΑ ΤΙΜΗ ΜΟΝΑΔΑΣ
1-50 580
51-100 520
101-200 470
πάνω από
440
200

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.143

159 / 680

8.1.1 Εντολή ΑΝ
Παράδειγμα. … (πωλήσεις υπολογιστών) υποθέτουμε ότι η
τιμή των υπολογιστών εξαρτάται από την ποσότητα
παραγγελίας. Συγκεκριμένα ισχύουν οι παρακάτω τιμές
αγοράς υπολογιστών.
Ο υπολογισμός με χρήση εμφωλευμένων εντολών ΑΝ είναι:
ΑΝ Ποσότητα <= 50 ΤΟΤΕ
Κόστος <- Ποσότητα * 580
ΑΛΛΙΩΣ
ΑΝ Ποσότητα <= 100 ΤΟΤΕ
Κόστος <- Ποσότητα * 520
ΑΛΛΙΩΣ
ΑΝ Ποσότητα <= 200 ΤΟΤΕ
Κόστος <- Ποσότητα * 470
ΑΛΛΙΩΣ
Κόστος <- Ποσότητα * 440
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.143

160 / 680

8.1.1 Εντολή ΑΝ
Παράδειγμα. … (πωλήσεις υπολογιστών) υποθέτουμε ότι η
τιμή των υπολογιστών εξαρτάται από την ποσότητα
παραγγελίας. Συγκεκριμένα ισχύουν οι παρακάτω τιμές
αγοράς υπολογιστών.
Το ίδιο πρόγραμμα με τη χρήση της εντολής ΑΝ…ΤΟΤΕ…ΑΛΛΙΩΣ_ΑΝ έχει
ως εξής:
ΑΝ Ποσότητα <= 50 ΤΟΤΕ
Κόστος <- Ποσότητα * 580
ΑΛΛΙΩΣ_ΑΝ Ποσότητα <= 100 ΤΟΤΕ
Κόστος <- Ποσότητα * 520
ΑΛΛΙΩΣ_ΑΝ Ποσότητα <= 200 ΤΟΤΕ
Κόστος <- Ποσότητα * 470
ΑΛΛΙΩΣ
Κόστος <- Ποσότητα * 440
ΤΕΛΟΣ_ΑΝ

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


ΑΝ, και στη θέση τους να χρησιμοποιούνται απλούστερες δομές
που διευκολύνουν την ανάγνωση και την κατανόηση του
προγράμματος.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.144

161 / 680

8.1.1 Εντολή ΑΝ
Παράδειγμα. … (πωλήσεις υπολογιστών) υποθέτουμε ότι η
τιμή των υπολογιστών εξαρτάται από την ποσότητα
παραγγελίας. Συγκεκριμένα ισχύουν οι παρακάτω τιμές
αγοράς υπολογιστών.
Ένα συχνό λάθος που παρατηρείται στα προγράμματα είναι ο
έλεγχος περιττών συνθηκών. Οι επιπλέον έλεγχοι αυξάνουν την
πολυπλοκότητα του προγράμματος. Στο προηγούμενο
παράδειγμα για το οποίο θεωρούμε ότι η ποσότητα είναι θετικός
αριθμός, ένα παράδειγμα περιττών ελέγχων είναι το ακόλουθο:
ΑΝ Ποσότητα <= 50 ΤΟΤΕ
Κόστος <- Ποσότητα * 580
ΑΛΛΙΩΣ_ΑΝ Ποσότητα > 50 ΚΑΙ Ποσότητα <= 100 ΤΟΤΕ
Κόστος <- Ποσότητα * 520
ΑΛΛΙΩΣ_ΑΝ Ποσότητα > 100 ΚΑΙ Ποσότητα <= 200 ΤΟΤΕ
Κόστος <- Ποσότητα * 470
ΑΛΛΙΩΣ
Κόστος <- Ποσότητα * 440
ΤΕΛΟΣ_ΑΝ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.1.1, σελ.144

162 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση


εμφωλευμένων ΑΝ
ΑΝ x > 0 ΤΟΤΕ
ΑΝ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
163 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση


εμφωλευμένων ΑΝ
ΑΝ x > 0 ΤΟΤΕ
ΑΝ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΑΝ x > 0 ΚΑΙ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΤΕΛΟΣ_ΑΝ
164 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση


εμφωλευμένων ΑΝ
ΑΝ x > 0 ΤΟΤΕ
ΑΝ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'x θετικός | y αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
165 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση


εμφωλευμένων ΑΝ
ΑΝ x > 0 ΤΟΤΕ
ΑΝ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'x θετικός | y αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΑΝ x > 0 ΚΑΙ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΑΛΛΙΩΣ_ΑΝ x > 0 ΚΑΙ y <= 0 ΤΟΤΕ
ΓΡΑΨΕ 'x θετικός | y αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
166 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση


εμφωλευμένων ΑΝ
ΑΝ x > 0 ΤΟΤΕ
ΑΝ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'x θετικός | y αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'x αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
167 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση


εμφωλευμένων ΑΝ
ΑΝ x > 0 ΤΟΤΕ
ΑΝ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'x θετικός | y αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'x αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
ΑΝ x > 0 ΚΑΙ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'x, y θετικοί'
ΑΛΛΙΩΣ_ΑΝ x > 0 ΚΑΙ y <= 0 ΤΟΤΕ
ΓΡΑΨΕ 'x θετικός | y αρνητικός ή μηδέν'
ΑΛΛΙΩΣ !_ΑΝ x <= 0 ΤΟΤΕ
ΓΡΑΨΕ 'x αρνητικός ή μηδέν'
ΤΕΛΟΣ_ΑΝ
168 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Α ⇔ x > 0
Β ⇔ y > 0
Α ΚΑΙ
Α Β ΟΧΙ Β Α ΚΑΙ Β ΟΧΙ(Α ΚΑΙ Β) ΚΑΙ ΟΧΙ(Α ΚΑΙ OXI(Β))
ΟΧΙ(Β)
ΑΛΗΘΗ ΑΛΗΘΗ ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ
Σ Σ Σ
ΑΛΗΘΗ ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ
Σ Σ
ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ
Σ
ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ
Σ

169 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Α ⇔ x > 0
Β ⇔ y > 0
Α ΚΑΙ
Α Β ΟΧΙ Β Α ΚΑΙ Β ΟΧΙ(Α ΚΑΙ Β) ΚΑΙ ΟΧΙ(Α ΚΑΙ OXI(Β))
ΟΧΙ(Β)
ΑΛΗΘΗ ΑΛΗΘΗ ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ
Σ Σ Σ
ΑΛΗΘΗ ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ ΨΕΥΔΗΣ
Σ Σ
ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ
Σ
ΑΛΗΘΗ
ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΨΕΥΔΗΣ ΑΛΗΘΗΣ
Σ
ΟΧΙ(Α ΚΑΙ Β) ΚΑΙ ΟΧΙ(Α ΚΑΙ ΟΧΙ(Β)) ⇔ ΟΧΙ(Α)
170 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση λογικών


τελεστών
ΑΝ x = 1 Η x = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Η τιμή είναι 1 ή 2'
ΤΕΛΟΣ_ΑΝ
171 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση λογικών


τελεστών
ΑΝ x = 1 Η x = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Η τιμή είναι 1 ή 2'
ΤΕΛΟΣ_ΑΝ
ΑΝ x = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Η τιμή είναι 1 ή 2'
ΤΕΛΟΣ_ΑΝ
ΑΝ x = 2 ΤΟΤΕ !Ή και με ΑΛΛΙΩΣ_ΑΝ
ΓΡΑΨΕ 'Η τιμή είναι 1 ή 2'
ΤΕΛΟΣ_ΑΝ
ΕΠΙΛΕΞΕ x
ΠΕΡΙΠΤΩΣΗ 1, 2
ΓΡΑΨΕ 'Η τιμή είναι 1 ή 2'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
172 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση λογικών


τελεστών
ΑΝ x > 0 Η y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ένας τουλάχιστον θετικός αριθμός'
ΤΕΛΟΣ_ΑΝ
173 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση λογικών


τελεστών
ΑΝ x > 0 Η y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ένας τουλάχιστον θετικός αριθμός'
ΤΕΛΟΣ_ΑΝ
ΑΝ x > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ένας τουλάχιστον θετικός αριθμός'
ΑΛΛΙΩΣ_ΑΝ y > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ένας τουλάχιστον θετικός αριθμός'
ΤΕΛΟΣ_ΑΝ
174 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση λογικών


τελεστών
ΑΝ β >= 18 ΤΟΤΕ

ΑΛΛΙΩΣ_ΑΝ β < 18 ΚΑΙ β >= 14 ΤΟΤΕ

ΑΛΛΙΩΣ_ΑΝ β < 14 ΚΑΙ β >= 10 ΤΟΤΕ

ΑΛΛΙΩΣ

ΤΕΛΟΣ_ΑΝ
175 / 680

8.1.1 Εντολή ΑΝ
Μετατροπές

Να γραφεί ισοδύναμο τμήμα κώδικα, χωρίς τη χρήση λογικών


τελεστών
ΑΝ β >= 18 ΤΟΤΕ

ΑΛΛΙΩΣ_ΑΝ β < 18 ΚΑΙ β >= 14 ΤΟΤΕ

ΑΛΛΙΩΣ_ΑΝ β < 14 ΚΑΙ β >= 10 ΤΟΤΕ

ΑΛΛΙΩΣ

ΤΕΛΟΣ_ΑΝ
ΑΝ β >= 18 ΤΟΤΕ

ΑΛΛΙΩΣ_ΑΝ β >= 14 ΤΟΤΕ

ΑΛΛΙΩΣ_ΑΝ β >= 10 ΤΟΤΕ

ΑΛΛΙΩΣ

ΤΕΛΟΣ_ΑΝ
176 / 680

8.1.1 Εντολή ΑΝ
Παραδείγματα (Θέματα Πανελλαδικών)

Ασκήσεις Εμφωλευμένων και Πολλαπλών Επιλογών


 Περιττοί έλεγχοι
o 2006 επάν. / Θέμα 1ο - Β

 Μετατροπή Πολλαπλών Επιλογών σε Εμφωλευμένες και


αντίστροφα
o 2009 επάν. / Θέμα 1ο - Γ (Λύσεις)

o 2011 επάν. / Θέμα Α2 (Λύσεις)

o 2015 / Θέμα Α4 - β. (Λύσεις)

o 2015 επάν. / Θέμα Β2 (Λύσεις)

177 / 680

8.1.1 Εντολή ΑΝ
Παραδείγματα (Θέματα Πανελλαδικών)

Ασκήσεις μετατροπής Σύνθετης επιλογής σε εντολή


Εκχώρησης
 2011 / Θέμα Α4 (Λύσεις)
o Απλή επιλογή σε εκχώρηση & λογική έκφραση

178 / 680

8.1.2 Εντολή ΕΠΙΛΕΞΕ


Σύνταξη & λειτουργία

Αν οι εναλλακτικές περιπτώσεις επιλογής είναι πολλές, μπορεί να


χρησιμοποιηθεί η εντολή ΕΠΙΛΕΞΕ, η γενική μορφή της οποίας
είναι:
ΕΠΙΛΕΞΕ <έκφραση>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-1>
<εντολές-1>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-2>
<εντολές-2>

ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
<εντολές-αλλιώς>
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
179 / 680

8.1.2 Εντολή ΕΠΙΛΕΞΕ


Σύνταξη & λειτουργία

Αν οι εναλλακτικές περιπτώσεις επιλογής είναι πολλές, μπορεί να


χρησιμοποιηθεί η εντολή ΕΠΙΛΕΞΕ, η γενική μορφή της οποίας
είναι:
ΕΠΙΛΕΞΕ <έκφραση>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-1>
<εντολές-1>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-2>
<εντολές-2>

ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
<εντολές-αλλιώς>
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ

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


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

180 / 680

3.1 Εντολή ΕΠΙΛΕΞΕ *


ΕΠΙΛΕΞΕ <έκφραση>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-1>
<εντολές-1>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-2>
<εντολές-2>

ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
<εντολές-αλλιώς>
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
 <έκφραση>: είναι μια μεταβλητή, η τιμή της οποίας θα
ελεγχθεί με τις τιμές που δίνονται στις ΠΕΡΙΠΤΩΣΕΙΣ και
ανάλογα σε ποια ΠΕΡΙΠΤΩΣΗ ανήκει θα εκτελεστούν οι
αντίστοιχες εντολές ή η πράξη, που υπολογίζει την τιμή
της. Δηλαδή, η <έκφραση> μπορεί να είναι:
o Μεταβλητή

o Αριθμητική πράξη
oΣυγκριτική πράξη
 <λίστα-τιμών-Ν>: οι τιμές που μπορεί να πάρει μια
έκφραση. Οι τιμές αυτές μπορεί να είναι διακριτές τιμές,
περιοχή τιμών από…έως ή να υπακούν σε μια συνθήκη.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.75

181 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


ΕΠΙΛΕΞΕ <έκφραση>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-1>
<εντολές-1>
ΠΕΡΙΠΤΩΣΗ <λίστα-τιμών-2>
<εντολές-2>

ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
<εντολές-αλλιώς>
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ

Τρόπος εκτέλεσης

Κατά την εκτέλεση της εντολής υπολογίζεται η τιμή της


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.75

182 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 1. Κωδικός καταστημάτων


ΠΡΟΓΡΑΜΜΑ Πόλη_καταστήματος
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: κωδικός
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε τον κωδικό του καταστήματος:'
ΔΙΑΒΑΣΕ κωδικός
ΕΠΙΛΕΞΕ κωδικός
ΠΕΡΙΠΤΩΣΗ 1, 2, 3, 4
ΓΡΑΨΕ 'Αθήνα'
ΠΕΡΙΠΤΩΣΗ 5, 6
ΓΡΑΨΕ 'Θεσσαλονίκη'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δεν υπάρχει αυτός ο κωδικός καταστήματος.'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Πόλη_καταστήματος

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.76

183 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 2. Άρτιος ή περιττός αριθμός


ΠΡΟΓΡΑΜΜΑ άρτιος_περιττός
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε ένα αριθμό από το 1 μέχρι το 1000:'
ΔΙΑΒΑΣΕ x
ΕΠΙΛΕΞΕ x MOD 2
ΠΕΡΙΠΤΩΣΗ 0
ΓΡΑΨΕ 'Άρτιος'
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Περιττός'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ άρτιος_περιττός

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.77

184 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 2. Άρτιος ή περιττός αριθμός (παραλλαγή)


ΠΡΟΓΡΑΜΜΑ άρτιος_περιττός
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε ένα αριθμό από το 1 μέχρι το 1000:'
ΔΙΑΒΑΣΕ x
ΕΠΙΛΕΞΕ (x MOD 2 = 0)
ΠΕΡΙΠΤΩΣΗ ΑΛΗΘΗΣ
ΓΡΑΨΕ 'Άρτιος'
ΠΕΡΙΠΤΩΣΗ ΨΕΥΔΗΣ
ΓΡΑΨΕ 'Περιττός'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ άρτιος_περιττός
185 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 3. Τέλη κυκλοφορίας αυτοκινήτων


ΠΡΟΓΡΑΜΜΑ τέλη_κυκλοφορίας1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: κ
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε κυβισμό αυτοκινήτου:'
ΔΙΑΒΑΣΕ κ
ΕΠΙΛΕΞΕ κ
ΠΕΡΙΠΤΩΣΗ <= 1000
ΓΡΑΨΕ 'ΤΕΛΗ = 100€' !Μπορεί να λυθεί με μία μόνο ΓΡΑΨΕ;
ΠΕΡΙΠΤΩΣΗ <= 1299
ΓΡΑΨΕ 'ΤΕΛΗ = 120€'
ΠΕΡΙΠΤΩΣΗ <= 1800
ΓΡΑΨΕ 'ΤΕΛΗ = 250€'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΤΕΛΗ = 600€'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ τέλη_κυκλοφορίας1

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.78-79

186 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 4. Μετατροπή ΕΠΙΛΕΞΕ σε ΑΝ…ΑΛΛΙΩΣ_ΑΝ…


ΠΡΟΓΡΑΜΜΑ τέλη_κυκλοφορίας2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: κ
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε κυβισμό αυτοκινήτου:'
ΔΙΑΒΑΣΕ κ
ΑΝ κ <= 1000 ΤΟΤΕ
ΓΡΑΨΕ 'ΤΕΛΗ = 100€' !Μπορεί να λυθεί με μία μόνο ΓΡΑΨΕ;
ΑΛΛΙΩΣ_ΑΝ κ <= 1299 ΤΟΤΕ
ΓΡΑΨΕ 'ΤΕΛΗ = 120€'
ΑΛΛΙΩΣ_ΑΝ κ <= 1800 ΤΟΤΕ
ΓΡΑΨΕ 'ΤΕΛΗ = 250€'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΤΕΛΗ = 600€'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ τέλη_κυκλοφορίας2

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.79

187 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 5. Μετατροπή ΑΝ…ΑΛΛΙΩΣ_ΑΝ… σε ΕΠΙΛΕΞΕ


ΠΡΟΓΡΑΜΜΑ άρτιος_περιττός_μονοψήφιος_2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε μονοψήφιο αριθμό:.'
ΔΙΑΒΑΣΕ x
ΑΝ (x=2) Η (x=4) Η (x=6) Η (x=8) ΤΟΤΕ
ΓΡΑΨΕ 'Άρτιος'
ΑΛΛΙΩΣ_ΑΝ (x=1) Η (x=3) Η (x=5) Η (x=7) Η (x=9) ΤΟΤΕ
ΓΡΑΨΕ 'Περιττός'
ΑΛΛΙΩΣ_ΑΝ x=0 ΤΟΤΕ
ΓΡΑΨΕ 'Μηδέν'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ο αριθμός δεν είναι μονοψήφιος...'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ άρτιος_περιττός_μονοψήφιος_2

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.79

188 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 5. Μετατροπή ΑΝ…ΑΛΛΙΩΣ_ΑΝ… σε ΕΠΙΛΕΞΕ


ΠΡΟΓΡΑΜΜΑ άρτιος_περιττός_μονοψήφιος_1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: x
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε μονοψήφιο αριθμό:.'
ΔΙΑΒΑΣΕ x
ΕΠΙΛΕΞΕ x
ΠΕΡΙΠΤΩΣΗ 2, 4, 6, 8
ΓΡΑΨΕ 'Άρτιος'
ΠΕΡΙΠΤΩΣΗ 1, 3, 5, 7, 9
ΓΡΑΨΕ 'Περιττός'
ΠΕΡΙΠΤΩΣΗ 0
ΓΡΑΨΕ 'Μηδέν'
ΠΕΡΙΠΤΩΣΗ ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ο αριθμός δεν είναι θετικός μονοψήφιος...'
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ άρτιος_περιττός_μονοψήφιος_1

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §3.1, σελ.79

189 / 680

Επιστροφή και σε §2.4.3

3.1 Εντολή ΕΠΙΛΕΞΕ *


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

Παράδειγμα 5. Μετατροπή ΑΝ…ΑΛΛΙΩΣ_ΑΝ… σε ΕΠΙΛΕΞΕ


Ερωτήσεις - Ασκήσεις

Ενότητα §3.1.2

190 / 680

Επιστροφή και σε §2.4.3

8.1 Εντολές Επιλογής


Κλιμακωτές ασκήσεις

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

Βάρος επιστολής σε Χρέωση εσωτερικού σε Χρέωση εξωτερικού σε


γραµµάρια Ευρώ Ευρώ
από 0 έως και 500 2,0 4,8
από 500 έως και 1000 3,5 7,2
από 1000 έως και 2000 4,6 11,5

Να γράψετε πρόγραμα το οποίο:

1. Να διαβάζει το βάρος της επιστολής.


2. Να διαβάζει τον προορισµό της επιστολής. Η τιµή "ΕΣ"
δηλώνει προορισµό εσωτερικού και η τιµή "ΕΞ" δηλώνει
προορισµό εξωτερικού.
3. Να υπολογίζει τα έξοδα αποστολής ανάλογα µε τον
προορισµό και το βάρος της επιστολής.
4. Να εκτυπώνει τα έξοδα αποστολής.

Παρατήρηση: Θεωρείστε ότι ο αλγόριθμος δέχεται τιμές για το


βάρος μεταξύ του 0 και του 2000 και για τον προορισμό µόνο τις
τιμές "ΕΣ" και "ΕΞ".

Θεωρήστε ότι η χρέωση είναι ανά κιλό και κλιμακωτή

191 / 680

8.1 Εντολές Επιλογής


Κλιμακωτές ασκήσεις
ΠΡΟΓΡΑΜΜΑ Θέμα_3ο_2004_παραλλαγή
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: βάρος, χρ
ΧΑΡΑΚΤΗΡΕΣ: πρ
ΑΡΧΗ
ΔΙΑΒΑΣΕ βάρος, πρ
βάρος <- βάρος / 1000
ΑΝ πρ = 'ΕΣ' ΤΟΤΕ
ΑΝ βάρος <= 0.5 ΤΟΤΕ
χρ <- βάρος * 2.0
ΑΛΛΙΩΣ_ΑΝ βάρος <= 1 ΤΟΤΕ
χρ <- 0.5 * 2.0 + (βάρος - 0.5) * 3.5
ΑΛΛΙΩΣ_ΑΝ βάρος <= 2 ΤΟΤΕ
χρ <- 0.5 * 2.0 + 0.5 * 3.5 + (βάρος - 1) * 4.6
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ !_ΑΝ πρ = 'ΕΞ' ΤΟΤΕ
ΑΝ βάρος <= 0.5 ΤΟΤΕ
χρ <- βάρος * 4.8
ΑΛΛΙΩΣ_ΑΝ βάρος <= 1 ΤΟΤΕ
χρ <- 0.5 * 4.8 + (βάρος - 0.5) * 7.2
ΑΛΛΙΩΣ_ΑΝ βάρος <= 2 ΤΟΤΕ
χρ <- 0.5 * 4.8 + 0.5 * 7.2 + (βάρος - 2) * 11.5
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ χρ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
192 / 680

8.1 Εντολές Επιλογής


Κλιμακωτές ασκήσεις
ΠΡΟΓΡΑΜΜΑ Θέμα_3ο_2004_παραλλαγή
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: βάρος, χρ
ΧΑΡΑΚΤΗΡΕΣ: πρ
ΑΡΧΗ
ΔΙΑΒΑΣΕ βάρος, πρ
βάρος <- βάρος / 1000
ΕΠΙΛΕΞΕ πρ
ΠΕΡΙΠΤΩΣΗ 'ΕΣ'
ΕΠΙΛΕΞΕ βάρος
ΠΕΡΙΠΤΩΣΗ <= 0.5
χρ <- βάρος * 2.0
ΠΕΡΙΠΤΩΣΗ <= 1
χρ <- 0.5 * 2.0 + (βάρος - 0.5) * 3.5
ΠΕΡΙΠΤΩΣΗ <= 2
χρ <- 0.5 * 2.0 + 0.5 * 3.5 + (βάρος - 1) * 4.6
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΠΕΡΙΠΤΩΣΗ 'ΕΞ'
ΕΠΙΛΕΞΕ βάρος
ΠΕΡΙΠΤΩΣΗ <= 0.5
χρ <- βάρος * 4.8
ΠΕΡΙΠΤΩΣΗ <= 1
χρ <- 0.5 * 4.8 + (βάρος - 0.5) * 7.2
ΠΕΡΙΠΤΩΣΗ <= 2
χρ <- 0.5 * 4.8 + 0.5 * 7.2 + (βάρος - 2) * 11.5
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΓΡΑΨΕ χρ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
193 / 680

8.1 Εντολές Επιλογής


Κλιμακωτές ασκήσεις

Παρατήρηση
Αν αλλάξετε κάποια από τα <= με <, ο κώδικας εξακολουθεί να
υπολογίζει τη χρέωση κανονικά! Ποια είναι αυτά;

194 / 680

8.1 Εντολές Επιλογής


Κλιμακωτές ασκήσεις

Παρατήρηση
Αν αλλάξετε κάποια από τα <= με <, ο κώδικας εξακολουθεί να
υπολογίζει τη χρέωση κανονικά! Ποια είναι αυτά;

Οι περιπτώσεις βάρος = 0.5 και βάρος = 1, δίνουν το ίδιο


αποτέλεσμα, ακόμα και αν υπολογιστούν με την επόμενη κλίμακα

195 / 680

8.1 Εντολές Επιλογής


Κλιμακωτές ασκήσεις

Παραδείγματα (Θέματα Πανελλαδικών)


 2003 επάν. / 3ο
o Κατανάλωση νερού ανά µήνα

 2006 επάν. / 3ο
o Διάρκεια στάθμευσης σε πάρκινγκ (χρειάζεται και
επανάληψη)

196 / 680

8.2 Εντολές επανάληψης


Η τρίτη βασική δομή είναι η δομή επανάληψης, ο βρόχος, η
οποία επιτρέπει την εκτέλεση εντολών περισσότερες από μία
φορά. Οι επαναλήψεις ελέγχονται πάντοτε από κάποια συνθήκη,
η οποία καθορίζει την έξοδο από το βρόχο.
Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης:

 την εντολή ΟΣΟ όπου η επανάληψη ελέγχεται από μία λογική


έκφραση στην αρχή και εκτελείται συνεχώς όσο η συνθήκη
είναι Αληθής
 την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ όπου η συνθήκη βρίσκεται στο τέλος
του βρόχου και εκτελείται συνεχώς μέχρις ότου η συνθήκη
αυτή γίνει Αληθής
 την εντολή ΓΙΑ, με την οποία ο βρόχος επαναλαμβάνεται
για προκαθορισμένο αριθμό φορών.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2, σελ.145

197 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΌΣΟ

Σύνταξη & Λειτουργία


ΟΣΟ <συνθήκη> ΕΠΑΝΑΛΑΒΕ
<εντολές>
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Η λειτουργία της εντολής είναι η εξής: Επαναλαμβάνεται η


εκτέλεση των εντολών, όσο η συνθήκη είναι αληθής. Όταν η
συνθήκη γίνει ψευδής, τότε ο αλγόριθμος συνεχίζεται με την
εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.44

198 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΌΣΟ

Διάγραμμα ροής
st=>start: Αρχή
cond=>condition: συνθήκη
op=>operation: εντολές
e=>end: Τέλος
st->cond
cond(yes,right)->op(top)->cond
cond(no)->e
199 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΌΣΟ

Χαρακτηριστικά της εντολής


 Επειδή η <συνθήκη> βρίσκεται στην αρχή της εντολής,
υπάρχει περίπτωση να «βγει» ΨΕΥΔΗΣ από την αρχή, οπότε
και να μην εκτελεστούν καμία φορά οι εντολές της
επανάληψης.
 Αν η <συνθήκη> δε «βγει» ΨΕΥΔΗΣ ποτέ, τότε οι εντολές της
επανάληψης εκτελούνται συνεχώς και το πρόγραμμα δεν
τελειώνει ποτέ. Τότε λέμε ότι έχουμε ατέρμων βρόχο.

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.1, σελ.39

200 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΌΣΟ

Τυπικές Χρήσεις
!Γνωστό πλήθος επαναλήψεων, με "μετρητή"
α <- 1
ΟΣΟ α <= 10 ΕΠΑΝΑΛΑΒΕ

α <- α + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Μη γνωστό πλήθος επαναλήψεων, με "τιμή φρουρό"
ΔΙΑΒΑΣΕ α
ΟΣΟ α <> 0 ΕΠΑΝΑΛΑΒΕ

ΔΙΑΒΑΣΕ α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
201 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΌΣΟ

Τυπικές Χρήσεις
!Γνωστό πλήθος επαναλήψεων, με "μετρητή"
α <- 1
ΟΣΟ α <= 10 ΕΠΑΝΑΛΑΒΕ

α <- α + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Μη γνωστό πλήθος επαναλήψεων, με "τιμή φρουρό"
ΔΙΑΒΑΣΕ α
ΟΣΟ α <> 0 ΕΠΑΝΑΛΑΒΕ

ΔΙΑΒΑΣΕ α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Τι θα μπορούσε να αλλάξει στο πρώτο παράδειγμα (αριθμητική


σταθερά, τελεστής, κ.λπ), ώστε α) να μην εκτελεστεί καθόλου η
ΟΣΟ, και β) να "πέσουμε" σε ατέρμων βρόχο.

202 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΌΣΟ

Παραδείγματα
Παράδειγμα 7. Εκτύπωση διαδοχικών αριθμών με
επαναληπτική εντολή: ΟΣΟ…ΕΠΑΝΑΛΑΒΕ
Να γραφεί αλγόριθμος που να εμφανίζει τους αριθμούς από 1
έως 100.

Παράδειγμα 8. Επαναληπτική είσοδος στοιχείων


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

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.44-45

203 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Η γενικότερη δομή επανάληψης υλοποιείται στη ΓΛΩΣΣΑ με την
εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ. Σε αυτή, η συνθήκη που ελέγχει την
επανάληψη βρίσκεται στην αρχή της επανάληψης και ο βρόχος
επαναλαμβάνεται συνεχώς, όσο η συνθήκη αυτή ισχύει. Με τη
δομή αυτή μπορούν να εκφραστούν όλες οι επαναλήψεις και γι’
αυτό η εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ είναι η σημαντικότερη από όλες τις
εντολές επανάληψης. Χαρακτηριστικό της επανάληψης αυτής
είναι ότι ο αριθμός των επαναλήψεων δεν είναι γνωστός, ούτε
μπορεί να υπολογιστεί πριν από την εκτέλεση του προγράμματος
(*).

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.1, σελ.145

204 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Σύνταξη
ΟΣΟ <συνθήκη> ΕΠΑΝΑΛΑΒΕ ! συνθήκη = λογική έκφραση
<εντολή-1>
<εντολή-2>

<εντολή-ν>
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.1, σελ.146

205 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Παράδειγμα
Άθροισμα <- 0
ΟΣΟ Άθροισμα < 1000 ΕΠΑΝΑΛΑΒΕ
ΔΙΑΒΑΣΕ Α
Άθροισμα <- Άθροισμα + Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.1, σελ.146

206 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Λειτουργία

Ελέγχεται η συνθήκη και αν είναι Αληθής, εκτελούνται οι εντολές


που βρίσκονται ανάμεσα στις ΟΣΟ_ΕΠΑΝΑΛΑΒΕ και ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.
Στη συνέχεια ελέγχεται πάλι η συνθήκη και αν ισχύει,
εκτελούνται πάλι οι ίδιες εντολές. Όταν η λογική έκφραση γίνει
Ψευδής, τότε σταματάει η επανάληψη και εκτελείται η εντολή μετά
το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.1, σελ.146

207 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Τιμή φρουρός

Όταν η επανάληψη δεν εξαρτάται άμεσα από τις τιμές που μου
δίνει ο χρήστης, συχνά συναντάω μια ΔΙΑΒΑΣΕ ως πρώτη εντολή
της ΟΣΟ.
Σ <- 0
ΟΣΟ Σ < 1000 ΕΠΑΝΑΛΑΒΕ
ΔΙΑΒΑΣΕ Α
Σ <- Σ + Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
208 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Τιμή φρουρός

Αν όμως η μεταβλητή της ΔΙΑΒΑΣΕ συμμετέχει στην συνθήκη της


ΟΣΟ, τότε είναι αναγκαίο να χρησιμοποιηθούν δύο ΔΙΑΒΑΣΕ.

Σ <- 0
ΔΙΑΒΑΣΕ Α
ΟΣΟ Α > 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + Α
ΔΙΑΒΑΣΕ Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ

Μία ακριβώς πριν την ΟΣΟ (για την πρώτη επανάληψη) και μία ως
τελευταία εντολή μέσα στην ΟΣΟ (για κάθε επόμενη επανάληψη).
209 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Τιμή φρουρός

Αν όμως η μεταβλητή της ΔΙΑΒΑΣΕ συμμετέχει στην συνθήκη της


ΟΣΟ, τότε είναι αναγκαίο να χρησιμοποιηθούν δύο ΔΙΑΒΑΣΕ.

Σ <- 0
ΔΙΑΒΑΣΕ Α
ΟΣΟ Α > 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + Α
ΔΙΑΒΑΣΕ Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ

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

Για ποιο λόγο είναι αναγκαίο να χρησιμοποιηθούν δύο ΔΙΑΒΑΣΕ;

210 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Τιμή φρουρός

Όταν, μάλιστα, χρειαζόμαστε από το χρήστη και άλλες τιμές, οι


αντίστοιχες μεταβλητές δεν χρειάζεται να βρίσκονται στην ίδια
ΔΙΑΒΑΣΕ και να επαναλαμβάνονται δύο φορές. Μόνο η μεταβλητή
που "ελέγχει" την επανάληψη, πρέπει να βρίσκεται σε δύο
ΔΙΑΒΑΣΕ, ώστε να αρχικοποιηθεί πριν την έναρξη της επανάληψης.

Σ <- 0
ΔΙΑΒΑΣΕ Α
ΟΣΟ Α > 0 ΕΠΑΝΑΛΑΒΕ
ΔΙΑΒΑΣΕ Β, Γ
Σ <- Σ + Α + Β + Γ
ΔΙΑΒΑΣΕ Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
211 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Τιμή φρουρός

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


δεν έχω μεν τιμή φρουρό, αλλά πρέπει να σταματήσω όταν
πρόκειται να "περάσω" ένα όριο ή να "εξαντληθεί" μια
ποσότητα. Θα προτιμήσω την ΟΣΟ, γιατί πρέπει να ελέγξω πριν
εκτελέσω τις λειτουργίες, και θα χρειαστώ δύο ΔΙΑΒΑΣΕ, γιατί η
μεταβλητή που διαβάζεται συμμετέχει στη συνθήκη της
επανάληψης.
!Ασανσέρ
μεγ <- 500
συν <- 0
άτομα <- 0
ΔΙΑΒΑΣΕ βάρος
ΟΣΟ συν + βάρος <= μεγ ΕΠΑΝΑΛΑΒΕ
συν <- συν + βάρος
άτομα <- άτομα + 1
ΔΙΑΒΑΣΕ βάρος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Ασανσέρ
ελεύθερο <- 500
άτομα <- 0
ΔΙΑΒΑΣΕ βάρος
ΟΣΟ βάρος <= ελεύθερο ΕΠΑΝΑΛΑΒΕ
ελεύθερο <- ελεύθερο - βάρος
άτομα <- άτομα + 1
ΔΙΑΒΑΣΕ βάρος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
212 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Τιμή φρουρός

Υλοποίηση με σημαία
!Επαναληπτική είσοδος και άθροισμα θετικών αριθμών
πλ <- 0
Σ <- 0
break <- ΨΕΥΔΗΣ
ΟΣΟ ΟΧΙ break ΕΠΑΝΑΛΑΒΕ
ΔΙΑΒΑΣΕ α
ΑΝ α <= 0 ΤΟΤΕ
break <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
πλ <- πλ + 1
Σ <- Σ + α
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Άθροισμα: ', Σ
ΑΝ πλ > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Μέσος όρος: ', Σ/πλ
ΤΕΛΟΣ_ΑΝ
213 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Παράδειγμα 2. Επαναληπτική είσοδος στοιχείων ("τιμή
φρουρός")
ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.1, σελ.146-147

Να γραφεί πρόγραμμα το οποίο διαβάζει από το πληκτρολόγιο


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

214 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Παράδειγμα 2. Επαναληπτική είσοδος στοιχείων ("τιμή
φρουρός")
ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.1, σελ.146-147

ΠΡΟΓΡΑΜΜΑ Άθροισμα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:Χ, Άθροισμα, Πλήθος
ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ
ΑΡΧΗ
Πλήθος <- 0
Άθροισμα <- 0
ΓΡΑΨΕ 'Δώσε Αριθμό'
ΔΙΑΒΑΣΕ X
ΟΣΟ Χ<>0 ΕΠΑΝΑΛΑΒΕ
Άθροισμα <- Άθροισμα + Χ
Πλήθος <- Πλήθος + 1
ΓΡΑΨΕ 'Δώσε Αριθμό'
ΔΙΑΒΑΣΕ X
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Πλήθος > 0 ΤΟΤΕ
ΜΟ <- Άθροισμα / Πλήθος
ΓΡΑΨΕ 'Το Άθροισμα είναι: ', Άθροισμα
ΓΡΑΨΕ 'Ο Μέσος όρος είναι: ', ΜΟ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δεν δόθηκαν στοιχεία'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
215 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Παράδειγμα 2. Επαναληπτική είσοδος στοιχείων ("τιμή
φρουρός")
ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.1, σελ.146-147

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

Η τιμή αυτή ορίζεται από τον προγραμματιστή και αποτελεί μια


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

216 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση αριθμών από 1 έως Ν
217 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση αριθμών από 1 έως Ν
ΔΙΑΒΑΣΕ Ν
i <- 1
ΟΣΟ i <= Ν ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ i
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
218 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση άρτιων/περιττών αριθμών από 1 έως Ν
219 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση άρτιων/περιττών αριθμών από 1 έως Ν
ΔΙΑΒΑΣΕ Ν
i <- 1
ΟΣΟ i <= Ν ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ i
i <- i + 2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- 2
ΟΣΟ i <= Ν ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ i
i <- i + 2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Μπορεί να λυθεί με "βήμα" +1;

220 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση άρτιων/περιττών αριθμών από 1 έως Ν
ΔΙΑΒΑΣΕ Ν
i <- 1
ΟΣΟ i <= Ν ΕΠΑΝΑΛΑΒΕ
ΑΝ i MOD 2 = 1 ΤΟΤΕ
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΑΝ
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- 1
ΟΣΟ i <= Ν ΕΠΑΝΑΛΑΒΕ
ΑΝ i MOD 2 = 0 ΤΟΤΕ
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΑΝ
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Ποια μέθοδος είναι "καλύτερη";

221 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση αριθμών από Ν έως 1
222 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση αριθμών από Ν έως 1
ΔΙΑΒΑΣΕ Ν
i <- Ν
ΟΣΟ i >= 1 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ i
i <- i - 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Μπορεί να λυθεί με "βήμα" +1;

223 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση αριθμών από Ν έως 1
ΔΙΑΒΑΣΕ Ν
i <- 1
ΟΣΟ i <= Ν ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ Ν - i + 1
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
224 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση προπαίδειας αριθμού Ν
225 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση προπαίδειας αριθμού Ν
ΔΙΑΒΑΣΕ Ν
i <- Ν
ΟΣΟ i <= Ν * 10 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ i
i <- i + Ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Μπορεί να λυθεί με "βήμα" +1;

226 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Εμφάνιση προπαίδειας αριθμού Ν
ΔΙΑΒΑΣΕ Ν
i <- 1
ΟΣΟ i <= 10 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ i, 'x', Ν, '=', i*Ν
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
227 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ


Ασκήσεις
Άθροισμα & Μέσος όρος των αριθμών μεταξύ Μ & Ν
228 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Άθροισμα & Μέσος όρος των αριθμών μεταξύ Μ & Ν
ΔΙΑΒΑΣΕ Μ, Ν !Μ ≤ Ν
Σ <- 0
i <- Μ
ΟΣΟ i <= Ν ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + i
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ, Σ/(Ν-Μ+1)
229 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Άθροισμα & Μέσος όρος βαθμολογίας ενός μαθητή ("τιμή
φρουρός")
230 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Άθροισμα & Μέσος όρος βαθμολογίας ενός μαθητή ("τιμή
φρουρός")
Σ <- 0
πλ <- 0
ΔΙΑΒΑΣΕ β
ΟΣΟ β > 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + β
ΔΙΑΒΑΣΕ β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Άθροισμα βαθμολογίας: ', Σ
ΑΝ πλ > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Μέσος όρος βαθμολογίας: ', Σ/πλ
ΤΕΛΟΣ_ΑΝ
231 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Πλήθος & Ποσοστό μαθητών που πέρασαν το μάθημα ("τιμή
φρουρός")
232 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Πλήθος & Ποσοστό μαθητών που πέρασαν το μάθημα ("τιμή
φρουρός")
πλ_π <- 0
πλ <- 0
ΔΙΑΒΑΣΕ β
ΟΣΟ β > 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ β >= 9.5 ΤΟΤΕ
πλ_π <- πλ_π + 1
ΤΕΛΟΣ_ΑΝ
πλ <- πλ + 1
ΔΙΑΒΑΣΕ β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Πλήθος μαθητών που πέρασαν: ', πλ_π
ΑΝ πλ > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ποσοστό μαθητών που πέρασαν: ', πλ_π/πλ
ΤΕΛΟΣ_ΑΝ
233 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Καλύτερη & χειρότερη βαθμολογία σε μάθημα ("τιμή
φρουρός")
234 / 680
8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Καλύτερη & χειρότερη βαθμολογία σε μάθημα ("τιμή
φρουρός")
!Αρχικοποίηση με αυθαίρετες τιμές
min <- 21 !Γιατί επιλέχθηκαν αυτές οι τιμές για
αρχικοποίηση;
max <- -1
ΔΙΑΒΑΣΕ β
ΟΣΟ β > 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ β < min ΤΟΤΕ
min <- β
ΤΕΛΟΣ_ΑΝ
ΑΝ β > max ΤΟΤΕ !Προσοχή, όχι σε ΑΛΛΙΩΣ_ΑΝ. Γιατί;
max <- β
ΤΕΛΟΣ_ΑΝ
ΔΙΑΒΑΣΕ β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ β > 0 ΤΟΤΕ
ΓΡΑΨΕ min, max
ΜΕΧΡΙΣ_ΟΤΟΥ
235 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Καλύτερη & χειρότερη βαθμολογία σε μάθημα ("τιμή
φρουρός")
ΔΙΑΒΑΣΕ β
!Αρχικοποίηση με πραγματική τιμή
min <- β
max <- β
ΟΣΟ β > 0 ΕΠΑΝΑΛΑΒΕ
!Στην 1η επανάληψη και οι δύο συνθήκες είναι `ΨΕΥΔΗΣ`
!Θα μπορούσαμε να ανεβάσουμε τη `ΔΙΑΒΑΣΕ β` εδώ;
ΑΝ β < min ΤΟΤΕ
min <- β
ΑΛΛΙΩΣ_ΑΝ β > max ΤΟΤΕ !Εδώ το ΑΛΛΙΩΣ_ΑΝ "επιτρέπεται". Γιατί;
max <- β
ΤΕΛΟΣ_ΑΝ
ΔΙΑΒΑΣΕ β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ β > 0 ΤΟΤΕ
ΓΡΑΨΕ min, max
ΜΕΧΡΙΣ_ΟΤΟΥ
236 / 680
8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Αγορές με χρηματικό όριο
όριο <- 1000 !€
σύνολο <- 0
ΔΙΑΒΑΣΕ τιμή
ΟΣΟ σύνολο + τιμή <= όριο ΕΠΑΝΑΛΑΒΕ
σύνολο <- σύνολο + τιμή
ΔΙΑΒΑΣΕ τιμή
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Σύνολο αγορών: ', σύνολο
ΓΡΑΨΕ 'Υπόλοιπο: ', όριο - σύνολο
237 / 680

8.2.1 Εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ

Ασκήσεις
Επαναληπτική αποθήκευση αρχείων σε αποθηκευτικό μέσο
χωρητικότητα <- 1500 !ΜΒ
ελεύθερο <- χωρητικότητα
πλ <- 0
ΔΙΑΒΑΣΕ μέγεθος !αρχείου
ΟΣΟ ελεύθερο >= μέγεθος ΕΠΑΝΑΛΑΒΕ
ελεύθερο <- ελεύθερο - μέγεθος
πλ <- πλ + 1
ΔΙΑΒΑΣΕ μέγεθος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Συνολικό μέγεθος αρχείων: ', (χωρητικότητα - ελεύθερο)
238 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ

Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
<εντολές>
ΜΕΧΡΙΣ_ΟΤΟΥ <συνθήκη>
239 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ

Λειτουργία
Διαφορές με την ΟΣΟ
 Τουλάχιστον μία φορά ≠ Μπορεί και καμία φορά
 Συνθήκη τερματισμού ≠ Συνθήκη επανάληψης

240 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
241 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ

Διάγραμμα ροής
st=>start: Αρχή
e=>end: Τέλος
op=>operation: εντολές
cond=>condition: συνθήκη
st->op->cond
cond(yes)->e
cond(no)->op
242 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ

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

Παράδειγμα 9. Εκτύπωση θετικών αριθμών με εντολή:


ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ…ΜΕΧΡΙΣ_ΟΤΟΥ. Να διαβάζονται και να
εκτυπώνονται όσοι θετικοί αριθμοί δίνονται από το
πληκτρολόγιο. Ο αλγόριθμος τελειώνει, όταν δοθεί ένας
αρνητικός αριθμός.
… ο βρόχος επανάληψης θα εκτελεσθεί οπωσδήποτε τουλάχιστον
μία φορά ακόμα και αν η αρχική τιμή της μεταβλητής x είναι
αρνητική. Η βασική διαφοροποίηση αυτής της μορφής
επαναληπτικής διαδικασίας σε σχέση με την επαναληπτική
διαδικασία που παρουσιάσθηκε στο προηγούμενο παράδειγμα,
οφείλεται στη θέση της λογικής συνθήκης στη ροή εκτέλεσης των
εντολών.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.46

243 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


… Οι εντολές του βρόχου εκτελούνται μέχρις ότου ικανοποιηθεί
κάποια συνθήκη η οποία ελέγχεται στο τέλος της επανάληψης

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.2, σελ.147

244 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Σύνταξη
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
<εντολή-1>
<εντολή-2>

<εντολή-n>
ΜΕΧΡΙΣ_ΟΤΟΥ <συνθήκη> ! συνθήκη = λογική έκφραση

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.2, σελ.147

245 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Παράδειγμα
Άθροισμα <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Α
Άθροισμα <- Άθροισμα + Α
ΜΕΧΡΙΣ_ΟΤΟΥ Άθροισμα > 1000

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.2, σελ.147

246 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Λειτουργία

Εκτελούνται οι εντολές μεταξύ των ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ και ΜΕΧΡΙΣ_ΟΤΟΥ.


Στη συνέχεια ελέγχεται η λογική έκφραση και αν δεν ισχύει (είναι
ΨΕΥΔΗΣ), τότε οι εντολές που βρίσκονται ανάμεσα στις
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ και ΜΕΧΡΙΣ_ΟΤΟΥ, εκτελούνται πάλι. Ελέγχεται ξανά η
λογική έκφραση και αν δεν ισχύει, επαναλαμβάνεται η εκτέλεση
των ίδιων εντολών. Όταν η λογική έκφραση γίνει ΑΛΗΘΗΣ, τότε
σταματάει η επανάληψη και εκτελείται η εντολή μετά από την
ΜΕΧΡΙΣ_ΟΤΟΥ.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.2, σελ.147

247 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Πολύ συχνά η ίδια επαναληπτική διαδικασία μπορεί να γραφεί
εξίσου σωστά χρησιμοποιώντας είτε τη δομή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ είτε τη
δομή ΜΕΧΡΙΣ_ΟΤΟΥ και είναι προσωπική επιλογή του
προγραμματιστή ποια από τις δυο θα χρησιμοποιήσει. Υπάρχουν
όμως περιπτώσεις όπου η χρήση της εντολής ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί
σε απλούστερα και πιο ευκολονόητα προγράμματα. Γενικά σε
περιπτώσεις όπου η επανάληψη θα συμβεί υποχρεωτικά μία
φορά, είναι προτιμότερη η χρήση της ΜΕΧΡΙΣ_ΟΤΟΥ.

Χαρακτηριστική περίπτωση όπου προτιμάται η εντολή


ΜΕΧΡΙΣ_ΟΤΟΥ είναι στον έλεγχο αποδεκτών τιμών καθώς και στην
επιλογή από προκαθορισμένες απαντήσεις ή μενού.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.2, σελ.148

248 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Παρατήρηση

Πολλές φορές η εκφώνηση της άσκησης μας ζητά να


επαναλάβουμε μια διαδικασία "μέχρις ότου" συμβεί κάτι. Ακόμα
και όταν η εκφώνηση χρησιμοποιεί μια τέτοια έκφραση, είναι
συχνά προτιμότερο να χρησιμοποιείται η εντολή ΟΣΟ.
!"Τιμή φρουρός" με ΟΣΟ
Σ <- 0
ΔΙΑΒΑΣΕ α
ΟΣΟ α >= 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + α
ΔΙΑΒΑΣΕ α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!"Τιμή φρουρός" με ΜΕΧΡΙΣ_ΟΤΟΥ
Σ <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ α
ΑΝ α >= 0 ΤΟΤΕ
Σ <- Σ + α
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ α < 0
249 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις
Παράδειγμα. Έλεγχος αποδεκτών τιμών
Να γραφεί αλγόριθμος που να διαβάζει το βαθμό ενός μαθητή
και να τον δέχεται εφόσον είναι έγκυρος (μεταξύ 1 και 20).
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ βαθμός
ΜΕΧΡΙΣ_ΟΤΟΥ βαθμός >= 1 ΚΑΙ βαθμός <= 20
!Η συνθήκη εδώ εκφράζει τις αποδεκτές τιμές
250 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις

Παράδειγμα. Έλεγχος αποδεκτών τιμών, με μήνυμα σε


περίπτωση λάθους
Να γραφεί αλγόριθμος που να διαβάζει το βαθμό ενός μαθητή
και να τον δέχεται εφόσον είναι έγκυρος (μεταξύ 1 και 20). Αν
δοθεί λάθος βαθμός να εμφανίζεται κατάλληλο μήνυμα.
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε βαθμό στην εικοσάβαθμη κλίμακα'
ΔΙΑΒΑΣΕ βαθμός
ΑΝ ΟΧΙ(βαθμός >= 1 ΚΑΙ βαθμός <= 20) ΤΟΤΕ !βαθμός < 1 Η βαθμός > 20
ΓΡΑΨΕ 'Μη αποδεκτή τιμή'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ βαθμός >= 1 ΚΑΙ βαθμός <= 20

ΓΡΑΨΕ 'Δώσε βαθμό στην εικοσάβαθμη κλίμακα'
ΔΙΑΒΑΣΕ βαθμός
ΟΣΟ βαθμός < 1 Η βαθμός > 20 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ 'Μη αποδεκτή τιμή'
ΓΡΑΨΕ 'Δώσε βαθμό στην εικοσάβαθμη κλίμακα'
ΔΙΑΒΑΣΕ βαθμός
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
251 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις

Παράδειγμα. Επιλογή προκαθορισμένης απάντησης


Να γραφεί πρόγραμμα που να διαβάζει διαδοχικά τους βαθμούς
ενός μαθητή. Μετά από κάθε βαθμό το πρόγραμμα θα ρωτάει αν
θέλουμε να συνεχίσουμε/σταματήσουμε.
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ α, β, γ
ΓΡΑΨΕ (α+β+γ) / 3
ΓΡΑΨΕ 'Θέλετε να συνεχίσετε; (Ν/Ο)'
ΔΙΑΒΑΣΕ απ
ΜΕΧΡΙΣ_ΟΤΟΥ απ = 'Ο'
252 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις

Παράδειγμα. Συνδυασμός
Να γραφεί πρόγραμμα που να διαβάζει διαδοχικά τους βαθμούς
ενός μαθητή. Μετά από κάθε βαθμό το πρόγραμμα θα ρωτάει αν
θέλουμε να συνεχίσουμε/σταματήσουμε. Απαιτείται
έλεγχος εγκυρότητας τιμών.
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ α, β, γ
ΓΡΑΨΕ (α+β+γ) / 3
ΓΡΑΨΕ 'Θέλετε να συνεχίσετε; (Ν/Ο)'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ απ
ΜΕΧΡΙΣ_ΟΤΟΥ απ = 'Ν' Η απ = 'Ο'
ΜΕΧΡΙΣ_ΟΤΟΥ απ = 'Ο'
253 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις

Παράδειγμα. Συνδυασμός
Να γραφεί πρόγραμμα που να διαβάζει διαδοχικά τους βαθμούς
ενός μαθητή. Μετά από κάθε βαθμό το πρόγραμμα θα ρωτάει αν
θέλουμε να συνεχίσουμε/σταματήσουμε. Απαιτείται
έλεγχος εγκυρότητας τιμών.
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ α, β, γ
ΓΡΑΨΕ (α+β+γ) / 3
ΓΡΑΨΕ 'Θέλετε να συνεχίσετε; (Ν/Ο)'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ απ
ΜΕΧΡΙΣ_ΟΤΟΥ απ = 'Ν' Η απ = 'Ο'
ΜΕΧΡΙΣ_ΟΤΟΥ απ = 'Ο'

Θα μπορούσε να λυθεί με ΟΣΟ;

254 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις

Παράδειγμα. Συνδυασμός
Να γραφεί πρόγραμμα που να διαβάζει διαδοχικά τους βαθμούς
ενός μαθητή. Μετά από κάθε βαθμό το πρόγραμμα θα ρωτάει αν
θέλουμε να συνεχίσουμε/σταματήσουμε. Απαιτείται
έλεγχος εγκυρότητας τιμών.
!Υλοποίηση με ΟΣΟ για σύγκριση
απ <- 'N'
ΟΣΟ απ = 'Ν' ΕΠΑΝΑΛΑΒΕ
ΔΙΑΒΑΣΕ α, β, γ
ΓΡΑΨΕ (α+β+γ) / 3
ΓΡΑΨΕ 'Θέλετε να συνεχίσετε; (Ν/Ο)'
ΔΙΑΒΑΣΕ απ
ΟΣΟ απ <> 'Ν' ΚΑΙ απ <> 'Ο' ΕΠΑΝΑΛΑΒΕ
ΔΙΑΒΑΣΕ απ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
255 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις

Παράδειγμα. Μενού επιλογής


ΠΡΟΓΡΑΜΜΑ Μενού_Επιλογής_1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α, β, επ
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε δύο ακέραιους αριθμούς:'
ΔΙΑΒΑΣΕ α, β
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ '1. Πρόσθεση'
ΓΡΑΨΕ '2. Αφαίρεση'
ΓΡΑΨΕ '3. Πολλαπλασιασμός'
ΓΡΑΨΕ '4. Διαίρεση'
ΓΡΑΨΕ '5. Έξοδος' !Πάντα η μία επιλογή πρέπει να είναι "Έξοδος"
ΓΡΑΨΕ 'Επιλογή:'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ επ
ΜΕΧΡΙΣ_ΟΤΟΥ επ >= 1 ΚΑΙ επ <= 5
ΑΝ επ = 1 ΤΟΤΕ
ΓΡΑΨΕ 'Πρόσθεση=', α + β
ΑΛΛΙΩΣ_ΑΝ επ = 2 ΤΟΤΕ
ΓΡΑΨΕ 'Αφαίρεση=', α - β
ΑΛΛΙΩΣ_ΑΝ επ = 3 ΤΟΤΕ
ΓΡΑΨΕ 'Πολλαπλασιασμός=', α * β
ΑΛΛΙΩΣ_ΑΝ επ = 4 ΤΟΤΕ
ΑΝ β <> 0 ΤΟΤΕ
ΓΡΑΨΕ 'Διαίρεση=', α/β
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Η διαίρεση δε γίνεται'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ = 5
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
256 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Τυπικές Χρήσεις

Παράδειγμα. Μενού επιλογής (με ΕΠΙΛΕΞΕ)


ΠΡΟΓΡΑΜΜΑ Μενού_Επιλογής_2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: α, β, επ
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε δύο ακέραιους αριθμούς:'
ΔΙΑΒΑΣΕ α, β
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ '1. Πρόσθεση'
ΓΡΑΨΕ '2. Αφαίρεση'
ΓΡΑΨΕ '3. Πολλαπλασιασμός'
ΓΡΑΨΕ '4. Διαίρεση'
ΓΡΑΨΕ '5. Έξοδος' !Πάντα η μία επιλογή πρέπει να είναι "Έξοδος"
ΓΡΑΨΕ 'Επιλογή:'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ επ
ΜΕΧΡΙΣ_ΟΤΟΥ επ >= 1 ΚΑΙ επ <= 5
ΕΠΙΛΕΞΕ επ
ΠΕΡΙΠΤΩΣΗ 1
ΓΡΑΨΕ 'Πρόσθεση=', α + β
ΠΕΡΙΠΤΩΣΗ 2
ΓΡΑΨΕ 'Αφαίρεση=', α - β
ΠΕΡΙΠΤΩΣΗ 3
ΓΡΑΨΕ 'Πολλαπλασιασμός=', α * β
ΠΕΡΙΠΤΩΣΗ 4
ΑΝ β <> 0 ΤΟΤΕ
ΓΡΑΨΕ 'Διαίρεση=', α/β
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Η διαίρεση δε γίνεται'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ = 5
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
257 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Παράδειγμα 3. Έλεγχος αποδεκτών τιμών / Επιλογή
προκαθορισμένης απάντησης
ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.2, σελ.148

Στο προηγούμενο παράδειγμα (τιμή φρουρός) ας υποθέσουμε ότι


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

258 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Παράδειγμα 3. Έλεγχος αποδεκτών τιμών / Επιλογή
προκαθορισμένης απάντησης
ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.2, σελ.148

ΠΡΟΓΡΑΜΜΑ Άθροισμα2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: X, Άθροισμα, Πλήθος
ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ
ΧΑΡΑΚΤΗΡΕΣ: Επιλογή
ΑΡΧΗ
Πλήθος <- 0
Άθροισμα <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
! Έλεγχος δεδομένων
ΓΡΑΨΕ 'Δώσε Αριθμό'
ΔΙΑΒΑΣΕ X
ΑΝ Χ <= 0 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος Αριθμός, Παρακαλώ δώστε ξανά…'
ΤΕΛΟΣ_ΑΝ
! Αν το X δεν είναι θετικό εισάγουμε νέο αριθμό
ΜΕΧΡΙΣ_ΟΤΟΥ Χ > 0
Άθροισμα <- Άθροισμα + Χ
Πλήθος <- Πλήθος + 1
ΓΡΑΨΕ 'Νέα μέτρηση ;'
ΔΙΑΒΑΣΕ Επιλογή
! Αν η επιλογή είναι Ο ή ο τότε σταματάει η επανάληψη
ΜΕΧΡΙΣ_ΟΤΟΥ Επιλογή = 'Ο' Η Επιλογή = 'ο'
ΜΟ <- Άθροισμα / Πλήθος
ΓΡΑΨΕ 'Άθροισμα = ', Άθροισμα
ΓΡΑΨΕ 'Μέσος όρος = ', ΜΟ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
259 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Παράδειγμα 3. Επανάληψη μετά από ερώτηση
Να γραφεί πρόγραμμα το οποίο να διαβάζει το ονοματεπώνυμο
και τρεις βαθμούς ενός μαθητή. Στη συνέχεια να υπολογίζει και
να τυπώνει τον ΜΟ και το μήνυμα 'ΕΠΙΤΥΧΩΝ' αν ΜΟ>10,
διαφορετικά να εμφανίζει το μήνυμα ΆΠΟΤΥΧΩΝ’. Στη συνέχεια
να τυπώνει το μήνυμα: 'Θέλεις να συνεχισείς για άλλον μαθητή
(Ν/Ο)?' Αν πληκτρολογηθεί 'Ν' τότε να επαναλαμβάνονται τα
παραπάνω και για άλλον μαθητή, διαφορετικά να τερματίζει το
πρόγραμμα.

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.2, σελ.45

260 / 680

8.2.2 Εντολή ΜΕΧΡΙΣ_ΟΤΟΥ


Παράδειγμα 3. Επανάληψη μετά από ερώτηση
ΠΡΟΓΡΑΜΜΑ Μαθητές
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Β1, Β2, Β3, ΜΟ
ΧΑΡΑΚΤΗΡΕΣ: Απ, Ον
ΑΡΧΗ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Ονοματεπώνυμο:'
ΔΙΑΒΑΣΕ Ον
ΓΡΑΨΕ 'Δώσε 3 βαθμούς:'
ΔΙΑΒΑΣΕ Β1, Β2, Β3
ΜΟ <- (Β1 + Β2 + Β3)/ 3
ΑΝ ΜΟ >= 10 ΤΟΤΕ
ΓΡΑΨΕ ΜΟ, ' ΕΠΙΤΥΧΩΝ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ ΜΟ, ' ΑΠΟΤΥΧΩΝ'
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'Θέλεις να συνεχίσεις για άλλο μαθητή (Ν/Ο)?'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Απ
ΜΕΧΡΙΣ_ΟΤΟΥ Απ = 'Ν' Η Απ = 'Ο'
ΜΕΧΡΙΣ_ΟΤΟΥ Απ = 'Ο'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Μαθητές
ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.2, σελ.45

261 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Σύνταξη
ΓΙΑ <μετρητής> ΑΠΟ <αρχική-τιμή> ΜΕΧΡΙ <τελική-τιμή> [ΜΕ_ΒΗΜΑ <βήμα>]
<εντολές>
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
262 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Χρήση
Όταν ο αριθμός των φορών που θα εκτελεστεί μια επαναληπτική
διαδικασία είναι γνωστός εκ των προτέρων, τότε είναι
προτιμότερο να χρησιμοποιείται η εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ.

… ας σημειωθεί ωστόσο ότι υπάρχουν κάποιες δεσμεύσεις


μεταξύ των τιμών από, μέχρι και βήμα. Έτσι το βήμα δεν μπορεί
να είναι μηδέν, γιατί τότε ο βρόχος εκτελείται επ’ άπειρον. Είναι
δυνατόν όμως το βήμα να έχει αρνητική τιμή, αρκεί η τιμή από
να είναι μεγαλύτερη από την τιμή ΜΕΧΡΙ, όπως για παράδειγμα
στην επόμενη εντολή: ΓΙΑ k ΑΠΟ 100 ΜΕΧΡΙ 0 ΜΕ_ΒΗΜΑ -1

Επίσης οι τιμές ΑΠΟ, ΜΕΧΡΙ και ΒΗΜΑ δεν είναι απαραίτητο να είναι
ακέραιες. Μπορούν να λάβουν οποιαδήποτε πραγματική τιμή.
Για παράδειγμα, όταν ζητείται να βρεθούν διαδοχικές τιμές μιας
συνάρτησης f(x) για x από 0 έως 1, τότε μπορεί να γραφεί η
επόμενη εντολή: ΓΙΑ x ΑΠΟ 0 ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ 0.01

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.46-47

263 / 680
2.4.5 Δομή Επανάληψης
Εντολή ΓΙΑ

Υπολογισμός αριθμού επαναλήψεων της εντολής


ΓΙΑ i ΑΠΟ x ΜΕΧΡΙ y ΜΕ_ΒΗΜΑ z

ΑΝ z = 0 ΤΟΤΕ
ΓΡΑΨΕ 'Ατέρμων βρόχος'
ΑΛΛΙΩΣ
απ <- (y-x)/z
ΑΝ απ > 0 ΤΟΤΕ ! y-x, z: ομόσημα
αρ_επαναλήψεων <- Α_Μ(απ) + 1
ΑΛΛΙΩΣ ! y-x, z: ετερόσημα
αρ_επαναλήψεων <- 0
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
264 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών από 1 έως Ν
265 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών από 1 έως Ν
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
266 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση άρτιων/περιττών αριθμών από 1 έως Ν
267 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση άρτιων/περιττών αριθμών από 1 έως Ν
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν ΜΕ_ΒΗΜΑ 2
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν ΜΕ_ΒΗΜΑ 2
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Μπορεί να λυθεί με "βήμα" +1;

268 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση άρτιων/περιττών αριθμών από 1 έως Ν
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ i MOD 2 = 1 ΤΟΤΕ
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ i MOD 2 = 0 ΤΟΤΕ
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Ποια μέθοδος είναι "καλύτερη";

269 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών από Ν έως 1
270 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών από Ν έως 1
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ Ν ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Μπορεί να λυθεί με "βήμα" +1;

271 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών από Ν έως 1
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ Ν+1-i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Π.χ.
!ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
! ΓΡΑΨΕ 101-i
272 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση προπαίδειας αριθμού Ν
273 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση προπαίδειας αριθμού Ν
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ i, 'x', Ν, '=', i*Ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
274 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών μεταξύ Μ & Ν
275 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών μεταξύ Μ & Ν
ΔΙΑΒΑΣΕ Μ, Ν !M<=N
ΓΙΑ i ΑΠΟ Μ ΜΕΧΡΙ Ν
ΓΡΑΨΕ i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Μπορεί να λυθεί με "ΑΠΟ" 1;

276 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση αριθμών μεταξύ Μ & Ν
ΔΙΑΒΑΣΕ Μ, Ν !M<=N
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν-Μ+1
ΓΡΑΨΕ i+Μ-1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Π.χ.
!ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 41 !(50-10+1)
! ΓΡΑΨΕ (10-1) + i
277 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Εμφάνιση "αυθαίρετων" ακολουθιών αριθμών
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Συνπληρώστε το κενό ώστε να εμφανιστούν οι παρακάτω


ακολουθίες αριθμών:

 1,4,7,10,13,16,19,22,25,28
 60,54,48,42,36,30,24,18,12,6
 2,9,4,7,6,5,8,3,10,1
 από -9 έως 10
 2,36,4,32,6,28,8,24,10,20,12,16,14,12,16,8,18,4,20,0

278 / 680

2.4.5 Δομή Επανάληψης


Εντολή ΓΙΑ

Ασκήσεις
Παραδείγματα
Παράδειγμα 10. Υπολογισμός αθροίσματος αριθμών με
επαναληπτική εντολή: ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ
Να βρεθεί και να εκτυπωθεί το άθροισμα των 100 ακεραίων από
το 1 μέχρι το 100.

Παράδειγμα 11. Υπολογισμός αθροίσματος με επαναληπτική


εντολή: ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ…ΜΕ_ΒΗΜΑ
Να βρεθεί και να εκτυπωθεί το άθροισμα των άρτιων αριθμών
από το 1 μέχρι το 100.

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.46-47

279 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Χρήση

Πολύ συχνά ο αριθμός των επαναλήψεων που πρέπει να


εκτελεστούν είναι γνωστός από την αρχή. Αν και αυτού του
είδους οι επαναλήψεις μπορούν να αντιμετωπιστούν με τη
χρήση των προηγούμενων εντολών επανάληψης, η ΓΛΩΣΣΑ
διαθέτει και την εντολή ΓΙΑ. Η εντολή αυτή χειρίζεται μια
μεταβλητή, στην οποία αρχικά εκχωρείται η αρχική τιμή. Η τιμή
της μεταβλητής συγκρίνεται με την τελική τιμή και εφόσον είναι
μικρότερη από αυτή, τότε εκτελούνται οι εντολές που βρίσκονται
στο βρόχο (ανάμεσα στις εντολές ΓΙΑ και ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ). Στη
συνέχεια η μεταβλητή ελέγχου αυξάνεται κατά την τιμή που
ορίζει το ΒΗΜΑ. Αν η νέα τιμή είναι μικρότερη της τελικής, τότε ο
βρόχος εκτελείται ξανά. Η διαδικασία αυτή επαναλαμβάνεται
συνεχώς, έως ότου η τιμή ελέγχου γίνει μεγαλύτερη της τελικής
τιμής, οπότε τερματίζεται η επανάληψη και το πρόγραμμα
συνεχίζει με την εντολή που ακολουθεί το ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.

Ας σημειωθεί ότι, αν η τιμή του βήματος είναι 1, τότε μπορεί να


παραλειφθεί.

Η εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ χρησιμοποιείται στην περίπτωση που


πρέπει να επαναληφθεί η εκτέλεση κάποιων εντολών για
προκαθορισμένο αριθμό επαναλήψεων.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.3, σελ.149

280 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Σύνταξη & Λειτουργία
ΓΙΑ <μεταβλητή> ΑΠΟ <έκφραση-1> ΜΕΧΡΙ <έκφραση-2> (ΜΕ_ΒΗΜΑ <έκφραση-
3>)
<εντολή-1>
<εντολή-2>

<εντολή-n>
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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


μεταβλητής από την αρχική τιμή μέχρι την τελική τιμή,
αυξανόμενες με την τιμή του βήματος. Αν το βήμα είναι ίσο με 1,
τότε παραλείπεται.

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.3, σελ.150

281 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Τρόπος εκτέλεσης
Στην εντολή αυτή χρησιμοποιείται μια <μεταβλητή> στην οποία
αρχικά καταχωρίζεται η <τιμή1>. Η τιμή που παίρνει η <μεταβλητή>
συγκρίνεται με τη <τιμή2> και εφόσον είναι μικρότερη ή ίση από
αυτή, τότε εκτελούνται οι εντολές που βρίσκονται στον βρόχο.

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


το ΒΗΜΑ. Αν η νέα τιμή είναι μικρότερη ή ίση της τελικής, τότε ο
βρόχος εκτελείται ξανά. Η διαδικασία επαναλαμβάνεται μέχρι η
<μεταβλητή> να πάρει τιμή μεγαλύτερη από την <τιμή2> αλλιώς το
πρόγραμμα συνεχίζει με την εντολή μετά το «ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ».

Η τιμή του βήματος μπορεί να είναι θετικός ή αρνητικός αριθμός


και καθορίζει το πλήθος των επαναλήψεων.

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.3, σελ.46

282 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Έτσι έχουμε τις περιπτώσεις:

1. Βήμα = 1:
παραλείπεται το ΜΕ_ΒΗΜΑ 1 και η μεταβλητή
αυξάνεται κατά +1.
2. Βήμα > 0: τότε πρέπει να ισχύει τιμή1 ≤ τιμή2 για να
εκτελεστεί τουλάχιστον μία φορά ο βρόχος.
3. Βήμα < 0: τότε πρέπει να ισχύει τιμή1 ≥ τιμή2 για να
εκτελεστεί τουλάχιστον μία φορά ο βρόχος.
4. Βήμα = 0: τότε ο βρόχος είναι ατέρμων.

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.3, σελ.46

283 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Παρατηρήσεις
1. Μέσα στην εντολή «ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ…» δεν επιτρέπεται να
αλλάξει η τιμή της <μεταβλητής> του ΓΙΑ, διότι τότε δε
λειτουργεί σωστά η εντολή επανάληψης.
2. Το βήμα δεν είναι απαραίτητο να είναι ακέραιος αριθμός.
Μπορεί να πάρει οποιαδήποτε πραγματική τιμή.
3. Μια εντολή επανάληψης «ΓΙΑ…» μπορεί να μετατραπεί σε
«ΟΣΟ…ΕΠΑΝΑΛΑΒΕ» και «ΜΕΧΡΙΣ_ΟΤΟΥ…», ενώ το αντίστροφο δεν
ισχύει πάντα.

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.3, σελ.47

284 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Παράδειγμα 4. Το παρακάτω πρόγραμμα υπολογίζει το
άθροισμα των περιττών αριθμών που είναι μικρότεροι από το
100.
ΠΡΟΓΡΑΜΜΑ Περιττοί
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Άθροισμα, Αριθμός
ΑΡΧΗ
Άθροισμα <- 0
ΓΙΑ Αριθμός ΑΠΟ 1 ΜΕΧΡΙ 100 ΜΕ ΒΗΜΑ 2
Άθροισμα <- Άθροισμα + Αριθμός
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Άθροισμα περιττών αριθμών είναι: ', Άθροισμα
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.3, σελ.150

285 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Άθροισμα & Μέσος όρος των αριθμών μεταξύ 1 & 100
286 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Ασκήσεις
Άθροισμα & Μέσος όρος των αριθμών μεταξύ 1 & 100
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
Σ <- Σ + i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ, Σ/100
287 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Άθροισμα & Μέσος όρος των αριθμών μεταξύ Μ & Ν
288 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Άθροισμα & Μέσος όρος των αριθμών μεταξύ Μ & Ν
ΔΙΑΒΑΣΕ Μ, Ν !Μ ≤ Ν
Σ <- 0
ΓΙΑ i ΑΠΟ Μ ΜΕΧΡΙ Ν
Σ <- Σ + i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ, Σ/(Ν-Μ+1)
289 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Άθροισμα & Μέσος όρος επιδόσεων Ν αθλητών
290 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Άθροισμα & Μέσος όρος επιδόσεων Ν αθλητών
Σ <- 0
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ επίδ
Σ <- Σ + επίδ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Άθροισμα: ', Σ, ' Μέσος όρος: ', Σ/Ν
291 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Πλήθος & Ποσοστό αθλητών που πέρασαν τα 10 μέτρα
292 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Πλήθος & Ποσοστό αθλητών που πέρασαν τα 10 μέτρα
πλ_π <- 0
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ επίδ
ΑΝ επίδ >= 10 ΤΟΤΕ
πλ_π <- πλ_π + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Πλήθος: ', πλ_π, ' Ποσοστό: ', πλ_π/Ν
293 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Πλήθος & Ποσοστό αθλητών με επίδοση κοντά στα 10 μέτρα
(± μισό μέτρο)
294 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Ασκήσεις
Πλήθος & Ποσοστό αθλητών με επίδοση κοντά στα 10 μέτρα
(± μισό μέτρο)
πλ_10 <- 0
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ επίδ
ΑΝ Α_Τ(10 - επίδ) <= 0.5 ΤΟΤΕ
πλ_10 <- πλ_10 + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Πλήθος: ', πλ_10, ' Ποσοστό: ', πλ_10/Ν
295 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Καλύτερη & χειρότερη επίδοση από Ν αθλητές
Αρχικοποίηση με αυθαίρετες τιμές

296 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Καλύτερη & χειρότερη επίδοση από Ν αθλητές
Αρχικοποίηση με αυθαίρετες τιμές
min <- 9999 !Γιατί επιλέχθηκαν αυτές οι τιμές;
max <- -1
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ επίδ
ΑΝ επίδ < min ΤΟΤΕ
min <- επίδ
ΤΕΛΟΣ_ΑΝ
ΑΝ επίδ > max ΤΟΤΕ !Προσοχή, όχι σε ΑΛΛΙΩΣ_ΑΝ. Γιατί;
max <- επίδ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Χειρότερη επίδοση: ', min, ' Καλύτερη επίδοση: ', max
297 / 680
8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Καλύτερη & χειρότερη επίδοση από Ν αθλητές
Αρχικοποίηση στην 1η επανάληψη

298 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Καλύτερη & χειρότερη επίδοση από Ν αθλητές
Αρχικοποίηση στην 1η επανάληψη
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ επίδ
ΑΝ i = 1 ΤΟΤΕ
min <- επίδ
max <- επίδ
ΑΛΛΙΩΣ_ΑΝ επίδ < min ΤΟΤΕ !Εδώ το ΑΛΛΙΩΣ_ΑΝ "επιτρέπεται". Γιατί;
min <- επίδ
ΑΛΛΙΩΣ_ΑΝ επίδ > max ΤΟΤΕ
max <- επίδ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Χειρότερη επίδοση: ', min, ' Καλύτερη επίδοση: ', max
299 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Καλύτερη & χειρότερη βαθμολογία από Ν μαθητές
Αρχικοποίηση με πραγματική τιμή

300 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Ασκήσεις
Καλύτερη & χειρότερη βαθμολογία από Ν μαθητές
Αρχικοποίηση με πραγματική τιμή
ΔΙΑΒΑΣΕ επί
min <- επίδ
max <- επίδ
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν !ή από 1 ΜΕΧΡΙ Ν-1
ΔΙΑΒΑΣΕ επίδ
ΑΝ επίδ < min ΤΟΤΕ
min <- επίδ
ΑΛΛΙΩΣ_ΑΝ επί > max ΤΟΤΕ !Εδώ το ΑΛΛΙΩΣ_ΑΝ "επιτρέπεται". Γιατί;
max <- επίδ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Χειρότερη επίδοση: ', min, ' Καλύτερη επίδοση: ', max
301 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

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

302 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Όνομα αθλητή που κέρδισε το αγώνισμα
Αρχικοποίηση με αυθαίρετη τιμή
max <- -1
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ όνομα, επίδ
ΑΝ επίδ > max ΤΟΤΕ
max <- επίδ
max_όνομα <- όνομα
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Νικητής: ', max_όνομα
303 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

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

304 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Όνομα αθλητή που κέρδισε το αγώνισμα
Αρχικοποίηση με πραγματική τιμή
ΔΙΑΒΑΣΕ όνομα, επίδ
max <- επίδ
max_όνομα <- όνομα !Εδώ θέλει αρχικοποίηση και το max_όνομα
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ όνομα, επίδ
ΑΝ επίδ > max ΤΟΤΕ
max <- επίδ
max_όνομα <- όνομα
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Νικητής: ', max_όνομα
305 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Πλήθος μαθητών με την καλύτερη βαθμολογία
306 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Ασκήσεις
Πλήθος μαθητών με την καλύτερη βαθμολογία
max <- -1
πλ_max <- 0 !Είναι αναγκαία αυτή η αρχικοποίηση;
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ β
ΑΝ β > max ΤΟΤΕ
max <- β
πλ_max <- 1
ΑΛΛΙΩΣ_ΑΝ β = max ΤΟΤΕ
πλ_max <- πλ_max + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max, πλ_max
307 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Σημαιοφόρος και 2 παραστάτες από Ν μαθητές
308 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ

Ασκήσεις
Σημαιοφόρος και 2 παραστάτες από Ν μαθητές
max1 <- -1
max2 <- -1
max3 <- -1
max1_ον <- ''
max2_ον <- ''
max3_ον <- '' !Είναι αναγκαία αυτή η αρχικοποίηση;
ΔΙΑΒΑΣΕ Ν
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ μο, όνομα
ΑΝ μο > max1 ΤΟΤΕ
max3 <- max2
max2 <- max1
max1 <- μο
max3_ον <- max2_ον
max2_ον <- max1_ον
max1_ον <- όνομα
ΑΛΛΙΩΣ_ΑΝ μο > max2 ΤΟΤΕ
max3 <- max2
max2 <- μο
max3_ον <- max2_ον
max2_ον <- όνομα
ΑΛΛΙΩΣ_ΑΝ μο > max3 ΤΟΤΕ
max3 <- μο
max3_ον <- όνομα
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Σημαιοφόρος: ', max1_ον
ΓΡΑΨΕ 'Παραστάτες: ', max2_ον, ', ', max3_ον
309 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Πολύ συχνά για την επίλυση των προβλημάτων απαιτείται η


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

 Ο εσωτερικός βρόχος πρέπει να βρίσκεται ολόκληρος μέσα


στον εξωτερικό. Ο βρόχος που ξεκινάει τελευταίος, πρέπει
να ολοκληρώνεται πρώτος.
 Η είσοδος σε κάθε βρόχο υποχρεωτικά γίνεται από την
αρχή του.
 Δεν μπορεί1 να χρησιμοποιηθεί η ίδια μεταβλητή ως
μετρητής δύο ή περισσότερων βρόχων που ο ένας
βρίσκεται στο εσωτερικό του άλλου.

1. Συντακτικό ή λογικό λάθος;

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.3, σελ.150

310 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Παράδειγμα 5. Να γραφεί πρόγραμμα το οποίο να εκτυπώνει


την προπαίδεια του πολλαπλασιασμού.
ΠΡΟΓΡΑΜΜΑ Προπαίδεια
!Πρόγραμμα εκτύπωσης της προπαίδειας των αριθμών 1 έως 10
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α, Β, Γ
!Α: Πολλαπλασιαστέος
!Β: Πολλαπλασιαστής
!Γ: Γινόμενο
ΑΡΧΗ
ΓΙΑ Α ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΙΑ Β ΑΠΟ 1 ΜΕΧΡΙ 10
Γ <- Α*Β
ΓΡΑΨΕ Α,'X',Β,'=',Γ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ !Εισαγωγή κενής γραμμής στην εκτύπωση
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΑΕΠΠ - Βιβλίο Μαθητή, §8.2.3, σελ.151

311 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Παράδειγμα
Να συμπληρωθεί η εντολή ΓΡΑΨΕ ώστε να εμφανίζονται όλοι οι
αριθμοί μεταξύ 1 και 100
ΠΡΟΓΡΑΜΜΑ Παράδειγμα_εμφωλευμένων_Για
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΡΑΨΕ …
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
312 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Άσκηση 1
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα 10 αθλητών
στο άλμα εις μήκος. Για κάθε αθλητή, να διαβάζει τις τρεις
προσπάθειες που έκανε, ελέγχοντας ότι είναι τιμές πάνω από 0
και μέχρι 10, και να υπολογίζει και να εμφανίζει τον μέσο όρο
από αυτές. Τέλος, να εμφανίζει το όνομα του αθλητή με την
καλύτερη προσπάθεια όλων, αλλά και τη σειρά που αγωνίστηκε ο
αθλητής με τον χειρότερο μέσο όρο προσπαθειών.

313 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Άσκηση 1 (Λύση με διπλή επανάληψη)


ΠΡΟΓΡΑΜΜΑ Εμφωλευμένοι_Βρόχοι_1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, min_MO_i
ΠΡΑΓΜΑΤΙΚΕΣ: πρ, Σ, min_MO, max_πρ, ΜΟ
ΧΑΡΑΚΤΗΡΕΣ: ον, max_πρ_ον
ΑΡΧΗ
min_MO <- 99
max_πρ <- -1
!Για κάθε αθλητή
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΔΙΑΒΑΣΕ ον
Σ <- 0
!Για κάθε προσπάθεια
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 3
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ πρ
ΜΕΧΡΙΣ_ΟΤΟΥ πρ > 0 ΚΑΙ πρ <= 10
Σ <- Σ + πρ
ΑΝ πρ > max_πρ ΤΟΤΕ
max_πρ <- πρ
max_πρ_ον <- ον
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ <- Σ/3
ΓΡΑΨΕ 'Μέσος όρος ', i, 'ου αθλητή: ', ΜΟ
ΑΝ ΜΟ < min_MO ΤΟΤΕ
min_MO <- ΜΟ
min_MO_i <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Όνομα αθλητή με την καλύτερη προσπάθεια: ', max_πρ_ον
ΓΡΑΨΕ 'Σειρά αθλητή με τον χειρότερο μέσο όρο: ', min_MO_i
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
314 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι
Άσκηση 1 (Λύση χωρίς διπλή επανάληψη)
ΠΡΟΓΡΑΜΜΑ Εμφωλευμένοι_Βρόχοι_1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, j, min_MO_i
ΠΡΑΓΜΑΤΙΚΕΣ: πρ1, πρ2, πρ3, Σ, min_MO, max_πρ, ΜΟ
ΧΑΡΑΚΤΗΡΕΣ: ον, max_πρ_ον
ΑΡΧΗ
min_MO <- 99
max_πρ <- -1
!Για κάθε αθλητή
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΔΙΑΒΑΣΕ ον
Σ <- 0
!3 Προσπάθειες & Έλεγχος
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ πρ1
ΜΕΧΡΙΣ_ΟΤΟΥ πρ1 > 0 ΚΑΙ πρ1 <= 10
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ πρ2
ΜΕΧΡΙΣ_ΟΤΟΥ πρ2 > 0 ΚΑΙ πρ2 <= 10
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ πρ3
ΜΕΧΡΙΣ_ΟΤΟΥ πρ3 > 0 ΚΑΙ πρ3 <= 10
!Μέσος όρος
Σ <- Σ + πρ1 + πρ2 + πρ3
ΜΟ <- Σ/3
ΓΡΑΨΕ 'Μέσος όρος ', i, 'ου αθλητή: ', ΜΟ
!Καλύτερη προσπάθεια
ΑΝ πρ1 > max_πρ ΤΟΤΕ
max_πρ <- πρ1
max_πρ_ον <- ον
ΤΕΛΟΣ_ΑΝ
ΑΝ πρ2 > max_πρ ΤΟΤΕ
max_πρ <- πρ2
max_πρ_ον <- ον
ΤΕΛΟΣ_ΑΝ
ΑΝ πρ3 > max_πρ ΤΟΤΕ
max_πρ <- πρ3
max_πρ_ον <- ον
ΤΕΛΟΣ_ΑΝ
!Χειρότερος μέσος όρος
ΑΝ ΜΟ < min_MO ΤΟΤΕ
min_MO <- ΜΟ
min_MO_i <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Όνομα αθλητή με την καλύτερη προσπάθεια: ', max_πρ_ον
ΓΡΑΨΕ 'Σειρά αθλητή με τον χειρότερο μέσο όρο: ', min_MO_i
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
315 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


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

316 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Άσκηση 2
ΠΡΟΓΡΑΜΜΑ Εμφωλευμένοι_Βρόχοι_2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: i, β, Σ, πλ, max, πλ_18
ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ
ΑΡΧΗ
πλ_18 <- 0
!Για κάθε μαθητή
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 25
Σ <- 0
πλ <- 0
ΔΙΑΒΑΣΕ β
max <- β
!Για κάθε βαθμολογία
ΟΣΟ β <> 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + β
πλ <- πλ + 1
ΑΝ β > max ΤΟΤΕ
max <- β
ΤΕΛΟΣ_ΑΝ
ΔΙΑΒΑΣΕ β
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πλ > 0 ΤΟΤΕ
ΜΟ <- Σ/πλ
ΓΡΑΨΕ 'Μέσος όρος ', i, 'ου μαθητή: ', Σ/πλ
ΑΝ ΜΟ >= 18 ΤΟΤΕ
πλ_18 <- πλ_18 + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Ποσοστό μαθητών που αρίστευσαν: ', πλ_18/25
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
317 / 680
8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ
Εμφωλευμένοι βρόχοι

Άσκηση 3
Να γραφεί πρόγραμμα που να διαβάζει τους μέσους όρους
βαθμολογίας των μαθητών από τα 4 τμήματα της Γ' τάξης ενός
σχολείου. Το πλήθος των μαθητών ανά τμήμα δίνεται από το
χρήστη. Το πρόγραμμα να υπολογίζει και να εμφανίζει το τμήμα
του μαθητή με την καλύτερο μέσο όρο βαθμολογίας, καθώς και
το τμήμα με τους περισσότερους αριστούχους (μέσος όρος
τουλάχιστον 18). Θεωρείστε, και στις δύο περιπτώσεις, ότι το
τμήμα είναι μοναδικό.

318 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Άσκηση 4
Σε έναν αθλητικό μαθητικό αγώνα στίβου, στο αγώνισμα του
μήκους, συμμετέχουν στους προκριματικούς 20 μαθητές από όλα
τα σχολεία της Περιφέρειας. Στον τελικό περνούν όσοι μαθητές
σημειώσουν επίδοση μεγαλύτερη ή ίση από 4.5 μέτρα. Κάθε
αθλητής έχει 3 προσπάθειες. Αν σημειώσει επίδοση ίση ή
μεγαλύτερη από το όριο πρόκρισης, σταματάει τις προσπάθειες.
Να γραφεί πρόγραμμα, που να διαβάζει τις επιδόσεις των
αλμάτων κάθε αθλητή και να υπολογίζει την καλύτερη επίδοσή
του. Να ελέγχει δίνοντας ανάλογο μήνυμα στην οθόνη αν ο
αθλητής προκρίθηκε ή όχι στον τελικό και τελικά να εμφανίζει
στην οθόνη, πόσοι αθλητές προκρίθηκαν και ποια ήταν η
καλύτερη επίδοση που σημειώθηκε.

319 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

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

320 / 680

8.2.3 Εντολή ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ


Εμφωλευμένοι βρόχοι

Άσκηση 5
ΠΡΟΓΡΑΜΜΑ Supermarket
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αρ_κ, κωδ, αρ_τ, πλ_π, πλ_s, max_αρ_κ
ΠΡΑΓΜΑΤΙΚΕΣ: έκπτ, τιμή, λογαρ, max, εισπρ
ΧΑΡΑΚΤΗΡΕΣ: απ
ΛΟΓΙΚΕΣ: stop
ΑΡΧΗ
εισπρ <- 0
πλ_π <- 0
πλ_s <- 0
max <- -1
!Για κάθε πελάτη
ΔΙΑΒΑΣΕ αρ_κ
ΟΣΟ αρ_κ <> 0 ΕΠΑΝΑΛΑΒΕ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ έκπτ
ΜΕΧΡΙΣ_ΟΤΟΥ έκπτ > 0
λογαρ <- 0
πλ_π <- πλ_π + 1
!Για κάθε προϊόν
stop <- ΨΕΥΔΗΣ
ΔΙΑΒΑΣΕ κωδ
ΟΣΟ κωδ <> 0 ΚΑΙ ΟΧΙ stop ΕΠΑΝΑΛΑΒΕ
ΔΙΑΒΑΣΕ τιμή, αρ_τ
ΑΝ λογαρ + τιμή* αρ_τ > έκπτ ΤΟΤΕ
ΓΡΑΨΕ 'Η έκπτωση σας δεν αρκεί για περισσότερα προϊόντα'
ΓΡΑΨΕ 'Θέλετε να σταματήσετε εδώ; (Ν/Ο)'
ΔΙΑΒΑΣΕ απ
ΑΝ απ = 'Ο' ΤΟΤΕ
λογαρ <- λογαρ + τιμή*αρ_τ
ΔΙΑΒΑΣΕ κωδ
ΑΛΛΙΩΣ
stop <- ΑΛΗΘΗΣ
πλ_s <- πλ_s + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Προϊόντα
ΑΝ λογαρ > έκπτ ΤΟΤΕ
λογαρ <- λογαρ - έκπτ
έκπτ <- 0
ΑΛΛΙΩΣ
λογαρ <- 0
έκπτ <- έκπτ - λογαρ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ λογαρ, έκπτ
ΑΝ λογαρ > max ΤΟΤΕ
max <- λογαρ
max_αρ_κ <- αρ_κ
ΤΕΛΟΣ_ΑΝ
εισπρ <- εισπρ + λογαρ
ΔΙΑΒΑΣΕ αρ_κ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ !Πελάτες
ΓΡΑΨΕ εισπρ, max_αρ_κ
ΑΝ πλ_π > 0 ΤΟΤΕ
ΓΡΑΨΕ εισπρ/πλ_π, πλ_s/πλ_π
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
321 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης
Μετατροπή ΟΣΟ → ΜΕΧΡΙΣ_ΟΤΟΥ
Ισοδύναμα τμήματα προγράμματος
i <- 1
ΟΣΟ i <= 10 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ i
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- 1
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ i
i <- i + 1
ΜΕΧΡΙΣ_ΟΤΟΥ i > 10
322 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Μετατροπή ΟΣΟ → ΜΕΧΡΙΣ_ΟΤΟΥ


Ισοδύναμα τμήματα προγράμματος;
i <- 100
ΟΣΟ i <= 10 ΕΠΑΝΑΛΑΒΕ !Πόσες φορές θα εκτελεστεί;
ΓΡΑΨΕ i
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- 100
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ !Πόσες φορές θα εκτελεστεί;
ΓΡΑΨΕ i
i <- i + 1
ΜΕΧΡΙΣ_ΟΤΟΥ i > 10
323 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Μετατροπή ΟΣΟ → ΜΕΧΡΙΣ_ΟΤΟΥ


Ισοδύναμα τμήματα προγράμματος;
Σ <- 0
ΔΙΑΒΑΣΕ α
ΟΣΟ α > 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + α
ΔΙΑΒΑΣΕ α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ !Τι θα εμφανιστεί αν δοθεί για α η τιμή -3
Σ <- 0
ΔΙΑΒΑΣΕ α
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Σ <- Σ + α
ΔΙΑΒΑΣΕ α
ΜΕΧΡΙΣ_ΟΤΟΥ α <= 0
ΓΡΑΨΕ Σ !Τι θα εμφανιστεί αν δοθεί για α η τιμή -3
324 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Μετατροπή ΟΣΟ → ΜΕΧΡΙΣ_ΟΤΟΥ


Ασφαλής τρόπος μετατροπής
ΟΣΟ <συνθήκη> ΕΠΑΝΑΛΑΒΕ
<εντολές>
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ <συνθήκη> ΤΟΤΕ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
<εντολές>
ΜΕΧΡΙΣ_ΟΤΟΥ ΟΧΙ <συνθήκη>
ΤΕΛΟΣ_ΑΝ

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.6, σελ.53

325 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Μετατροπή ΜΕΧΡΙΣ_ΟΤΟΥ → ΟΣΟ


Ισοδύναμα τμήματα προγράμματος;
Σ <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ α
Σ <- Σ + α
ΜΕΧΡΙΣ_ΟΤΟΥ α = 0
ΓΡΑΨΕ Σ
Σ <- 0
ΟΣΟ α <> 0 ΕΠΑΝΑΛΑΒΕ !Σφάλμα κατά την εκτέλεση
ΔΙΑΒΑΣΕ α
Σ <- Σ + α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
326 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Μετατροπή ΜΕΧΡΙΣ_ΟΤΟΥ → ΟΣΟ


Ασφαλής τρόπος μετατροπής
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
<εντολές>
ΜΕΧΡΙΣ_ΟΤΟΥ <συνθήκη>
<εντολές>
ΟΣΟ ΟΧΙ <συνθήκη> ΕΠΑΝΑΛΑΒΕ
<εντολές>
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.6, σελ.53

327 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Μετατροπή ΓΙΑ ↔ ΟΣΟ


ΓΙΑ i ΑΠΟ α ΜΕΧΡΙ β ΜΕ_ΒΗΜΑ γ
<εντολές>
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- α
ΟΣΟ i <= β ΕΠΑΝΑΛΑΒΕ !όταν γ>0
<εντολές>
i <- i + γ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- α
ΟΣΟ i >= β ΕΠΑΝΑΛΑΒΕ !όταν γ<0
<εντολές>
i <- i + γ !το βήμα είναι αρνητικό, μην μας ξεγελάει το
+
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §3.6, σελ.54-55

328 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Μετατροπή ΓΙΑ ↔ ΟΣΟ


Ισοδύναμα;
i <- 0
k <- 12
ΟΣΟ i ≤ k ΕΠΑΝΑΛΑΒΕ
i <- i + 2
k <- k - 1
ΓΡΑΨΕ i, k
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
k <- 12
ΓΙΑ i ΑΠΟ 0 ΜΕΧΡΙ k ΜΕ_ΒΗΜΑ 2
k <- k - 1
ΓΡΑΨΕ i + 2, k
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- 0
k <- 12
ΟΣΟ k >= i ΕΠΑΝΑΛΑΒΕ
i <- i + 2
k <- k - 1
ΓΡΑΨΕ i, k
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- 0
ΓΙΑ k ΑΠΟ 12 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
i <- i + 2
ΓΡΑΨΕ i, k - 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
329 / 680

8.2 Εντολές επανάληψης


Μετατροπές μεταξύ εντολών επανάληψης

Παραδείγματα (Θέματα Πανελλαδικών)


 2001 / Θέμα 1ο - Β
 2001 επαν. / Θέμα 1ο - Δ.α
 2008 επαν. / Θέμα 1ο - Ε (Λύσεις)
 2011 επάν. / Θέμα Α3 (α) (Λύσεις)
 2015 / Θέμα Β1.β (Λύσεις)
 2017 / Θέμα Α4 (Λύσεις)

330 / 680

2.4.5 Δομή Επανάληψης


Μετατροπές: Αλγόριθμος ↔ Διάγραμμα Ροής

Παραδείγματα (Θέματα Πανελλαδικών)


 Αλγόριθμος → Διάγραμμα Ροής
o 2006 / Θέμα 2ο - 2 (εμφωλευμένες ΑΝ)

o 2008 / Θέμα 2ο - β. (ΟΣΟ)

o 2010 επάν. / Θέμα Β1 (Λύσεις) (ΑΝ & ΟΣΟ)

o 2012 επάν. / Θέμα Β1 (Λύσεις) (εμφωλευμένες ΓΙΑ)

o 2013 / Θέμα Β1 (Λύσεις) (ΑΝ & ΟΣΟ)

o 2015 / Θέμα Β1.α (Λύσεις) (ΑΝ & ΜΕΧΡΙΣ_ΟΤΟΥ)

 Διάγραμμα Ροής → Αλγόριθμο


o 2006 / Θέμα 2ο - 1.α (ΓΙΑ)

o 2011 / Θέμα Β1 (Λύσεις) (ΟΣΟ & ΜΕΧΡΙΣ_ΟΤΟΥ)

o 2012 / Θέμα Β2 (Λύσεις) (ΑΝ & ΜΕΧΡΙΣ_ΟΤΟΥ)

o 2013 επάν. / Θέμα Β1 (Λύσεις) (ΑΝ & ΟΣΟ / ΓΙΑ)

o 2014 / Θέμα Β2 (Λύσεις) (ΟΣΟ με παγίδα)

o 2018 / Θέμα Β2 (Λύσεις) (ΟΣΟ / ΜΕΧΡΙΣ_ΟΤΟΥ όχι


συνηθισμένη)

331 / 680

2.4.5 Δομή Επανάληψης


ΟΛΙΣΘΗΣΗ (shift): Στα κυκλώματα του υπολογιστή τα δεδομένα
αποθηκεύονται με δυαδική μορφή, δηλαδή 0 και 1, ανεξάρτητα
από το πώς τα ορίζει ο προγραμματιστής, όπως ακεραίους ή
πραγματικούς σε δεκαδικό σύστημα, ή ακόμη χαρακτήρες κ.λπ.
Έτσι ο αριθμός 17 του δεκαδικού συστήματος ισοδυναμεί με τον
αριθμό 00010001 του δυαδικού συστήματος, ο οποίος μπορεί να
αποθηκευθεί σε ένα byte. Αν μετακινήσουμε τα ψηφία αυτά κατά
μία θέση προς τα αριστερά, δηλαδή αν προσθέσουμε ένα 0 στο
τέλος του αριθμού και αγνοήσουμε το αρχικό 0, τότε προκύπτει ο
αριθμός 00100010 του δυαδικού συστήματος, που ισοδυναμεί με
τον αριθμό 34 του δεκαδικού συστήματος. Επίσης, με παρόμοιο
τρόπο, αν μετακινήσουμε τα ψηφία κατά μία θέση δεξιά, δηλαδή
αποκόψουμε το τελευταίο ψηφίο 1 και θεωρήσουμε ένα ακόμη
αρχικό 0, τότε προκύπτει ο αριθμός 00001000 του δυαδικού
συστήματος, που ισοδυναμεί με τον αριθμό 8 του δεκαδικού
συστήματος. Άρα η ολίσθηση προς τα αριστερά ισοδυναμεί με
πολλαπλασιασμό επί δύο, ενώ η ολίσθηση προς τα δεξιά
ισοδυναμεί με την ακέραια διαίρεση διά δύο.

332 / 680

2.4.5 Δομή Επανάληψης


Πολλαπλασιασμός αλά ρωσικά

Α Β
45 19 45
90 9 90
18
4
0
36
2
0
72
1 720
0
855

333 / 680

2.4.5 Δομή Επανάληψης


Πολλαπλασιασμός αλά ρωσικά

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


γιατί υλοποιείται πολύ πιο απλά απ’ ό,τι ο γνωστός μας
χειρωνακτικός τρόπος πολλαπλασιασμού. Πιο συγκεκριμένα,
απαιτεί πολλαπλασιασμό επί δύο, διαίρεση διά δύο και
πρόσθεση. Σε αντίθεση η γνωστή μας διαδικασία
πολλαπλασιασμού απαιτεί πολλαπλασιασμό με οποιονδήποτε
ακέραιο και πρόσθεση. Σε επίπεδο, λοιπόν, κυκλωμάτων
υπολογιστή ο πολλαπλασιασμός επί δύο και η διαίρεση διά δύο
μπορούν να υλοποιηθούν ταχύτατα με μία απλή εντολή
ολίσθησης (shift), σε αντίθεση με τον πολλαπλασιασμό με
οποιονδήποτε ακέραιο που θεωρείται πιο χρονοβόρα
διαδικασία. Το τελευταίο γεγονός είναι ο λόγος που ο
πολλαπλασιασμός αλά ρωσικά είναι προτιμότερος απ’ ό,τι ο
χειρωνακτικός τρόπος πολλαπλασιασμού δύο ακεραίων.
ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.50-51

334 / 680

2.4.5 Δομή Επανάληψης


Πολλαπλασιασμός αλά ρωσικά
ΠΡΟΓΡΑΜΜΑ Πολλαπλασιασμός_αλά_ρωσικά
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Μ1, Μ2
ΑΡΧΗ
ΔΙΑΒΑΣΕ Μ1,Μ2
Ρ <- 0
ΟΣΟ Μ2 > 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ Μ2 MOD 2 = 1 ΤΟΤΕ
Ρ <- Ρ + Μ1
ΤΕΛΟΣ_ΑΝ
Μ1 <- Μ1 * 2
Μ2 <- Μ2 DIV 2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Ρ !το γινόμενο των ακεραίων Μ1,Μ2
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Πολλαπλασιασμός αλά ρώσικα - Φωτόδεντρο - Προβολή


αντικειμένου

335 / 680

2.4.5 Δομή Επανάληψης


Πολλαπλασιασμός αλά ρωσικά

Παραδείγματα (Θέματα Πανελλαδικών)


 2019 / Θέμα Α5 (Λύσεις)

336 / 680

13.1 Κατηγορίες λαθών


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

 Λάθη κατά την υλοποίηση


 Λάθη κατά την εκτέλεση
 Λογικά λάθη

ΑΕΠΠ - Βιβλίο Μαθητή, §13.1, σελ.233-234

337 / 680

13.1 Κατηγορίες λαθών


Λάθη κατά την υλοποίηση *

Τα λάθη κατά το χρόνο υλοποίησης προκαλούνται κυρίως από


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

Ένα λάθος που προκαλείται κατά τη συγγραφή του


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

Τα σύγχρονα προγραμματιστικά περιβάλλοντα μας


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

ΑΕΠΠ - Βιβλίο Μαθητή, §13.1, σελ.233

338 / 680

Κριτήριο Αποτελεσματικότητας;
13.1 Κατηγορίες λαθών
Λάθη κατά την εκτέλεση *

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


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

Όταν ένα λάθος προκληθεί κατά την εκτέλεση της εφαρμογής,


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

Η πρόληψη τέτοιων λαθών είναι αρκετά δύσκολη, αφού συνήθως


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

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.233

339 / 680

Κριτήριο Καθοριστικότητας;

13.1 Κατηγορίες λαθών


Λογικά λάθη

Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν


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

Η ανίχνευση τέτοιων λαθών δεν είναι δυνατό να


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

ΑΕΠΠ - Βιβλίο Μαθητή, §2.4.5, σελ.234

340 / 680

5.1 Κατηγορίες Λαθών *


Μπορούμε να διακρίνουμε τις εξής κατηγορίες λαθών:

 Συντακτικά λάθη 1
 Λάθη που οδηγούν σε αντικανονικό τερματισμό του
προγράμματος 2
 Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα

1. Λάθη κατά την υλοποίηση


2. Λάθη κατά την εκτέλεση

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1, σελ.115

341 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,


σελ.116

5.1 Κατηγορίες Λαθών *


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

Παράδειγμα 1. Παράδειγμα εντοπισμού συντακτικών λαθών


ΠΡΟΓΡΑΜΜΑ Άθροισμα_θετικών_αριθμών
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Σ, Χ, Ι
Σ <- 0
ΓΙΑ Ι ΑΠΟ 1 ΕΩΣ 10
ΓΡΑΨΕ 'Δώσε έναν ακέραιο αριθμό'
ΔΙΑΒΑΣΕ Χ
ΑΝ Χ > 0
Σ <- Σ + Χ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'Σ=', Σ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1, σελ.115-


116

342 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,


σελ.116

5.1 Κατηγορίες Λαθών *


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

Παράδειγμα 1. Παράδειγμα εντοπισμού συντακτικών λαθών


ΠΡΟΓΡΑΜΜΑ Άθροισμα_θετικών_αριθμών
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Σ, Χ, Ι
ΑΡΧΗ
Σ <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10
ΓΡΑΨΕ 'Δώσε έναν ακέραιο αριθμό'
ΔΙΑΒΑΣΕ Χ
ΑΝ Χ > 0 ΤΟΤΕ
Σ <- Σ + Χ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Σ=', Σ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
343 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,


σελ.116

5.1 Κατηγορίες Λαθών *


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

Παράδειγμα 2. Παράδειγμα εντοπισμού λαθών που μπορεί να


οδηγήσουν σε αντικανονικό τερματισμό
ΠΡΟΓΡΑΜΜΑ Μέσος_όρος_ύψους
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πλήθος
ΠΡΑΓΜΑΤΙΚΕΣ: ύψος, Σ, ΜΟ
ΑΡΧΗ
Σ <- 0
πλήθος <- 0
ΓΡΑΨΕ 'Δώσε ύψος:'
ΔΙΑΒΑΣΕ ύψος
ΟΣΟ ύψος > 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + ύψος
πλήθος <- πλήθος + 1
ΓΡΑΨΕ 'Δώσε ύψος:'
ΔΙΑΒΑΣΕ ύψος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ <- Σ/πλήθος
ΓΡΑΨΕ 'Μέσος όρος ύψους:', ΜΟ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1, σελ.117-


118

344 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,


σελ.116

5.1 Κατηγορίες Λαθών *


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

Παράδειγμα 2. Παράδειγμα εντοπισμού λαθών που μπορεί να


οδηγήσουν σε αντικανονικό τερματισμό
ΠΡΟΓΡΑΜΜΑ Μέσος_όρος_ύψους
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πλήθος
ΠΡΑΓΜΑΤΙΚΕΣ: ύψος, Σ, ΜΟ
ΑΡΧΗ
Σ <- 0
πλήθος <- 0
ΓΡΑΨΕ 'Δώσε ύψος:'
ΔΙΑΒΑΣΕ ύψος
ΟΣΟ ύψος > 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + ύψος
πλήθος <- πλήθος + 1
ΓΡΑΨΕ 'Δώσε ύψος:'
ΔΙΑΒΑΣΕ ύψος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ <- Σ/πλήθος
ΓΡΑΨΕ 'Μέσος όρος ύψους:', ΜΟ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1, σελ.117-


118

Τι θα συμβεί αν δε δοθεί καμία έγκυρη τιμή για το ύψος;

345 / 680
ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,
σελ.116

5.1 Κατηγορίες Λαθών *


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

Παράδειγμα 2. Παράδειγμα εντοπισμού λαθών που μπορεί να


οδηγήσουν σε αντικανονικό τερματισμό
ΠΡΟΓΡΑΜΜΑ Μέσος_όρος_ύψους
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: πλήθος
ΠΡΑΓΜΑΤΙΚΕΣ: ύψος, Σ, ΜΟ
ΑΡΧΗ
Σ <- 0
πλήθος <- 0
ΓΡΑΨΕ 'Δώσε ύψος:'
ΔΙΑΒΑΣΕ ύψος
ΟΣΟ ύψος > 0 ΕΠΑΝΑΛΑΒΕ
Σ <- Σ + ύψος
πλήθος <- πλήθος + 1
ΓΡΑΨΕ 'Δώσε ύψος:'
ΔΙΑΒΑΣΕ ύψος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πλήθος = 0 ΤΟΤΕ
ΓΡΑΨΕ 'Δεν δόθηκαν στοιχεία μελών'
ΑΛΛΙΩΣ
ΜΟ <- Σ/πλήθος
ΓΡΑΨΕ 'Μέσος όρος ύψους:', ΜΟ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
346 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,


σελ.116

5.1 Κατηγορίες Λαθών *


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

Παράδειγμα 3. Παράδειγμα εντοπισμού λογικού λάθους


ΠΡΟΓΡΑΜΜΑ Αγορά_τετραδίων
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: τιμή, πλήθος, διαθέσιμο_ποσό, οφειλόμενο
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε την τιμή του τετραδίου:'
ΔΙΑΒΑΣΕ τιμή
ΓΡΑΨΕ 'Δώσε το πλήθος των τετραδίων'
ΔΙΑΒΑΣΕ πλήθος
ΓΡΑΨΕ 'Δώσε το διαθέσιμο ποσό'
ΔΙΑΒΑΣΕ διαθέσιμο_ποσό
οφειλόμενο_ποσό <- τιμή + πλήθος
ΑΝ οφειλόμενο_ποσό <= διαθέσιμο_ποσό ΤΟΤΕ
ΓΡΑΨΕ 'Η αγορά είναι εφικτή'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Η αγορά δεν είναι εφικτή'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1, σελ.119-


120

347 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,


σελ.116

5.1 Κατηγορίες Λαθών *


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

Παράδειγμα 3. Παράδειγμα εντοπισμού λογικού λάθους


ΠΡΟΓΡΑΜΜΑ Αγορά_τετραδίων
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: τιμή, πλήθος, διαθέσιμο_ποσό, οφειλόμενο_ποσό
ΑΡΧΗ
ΓΡΑΨΕ 'Δώσε την τιμή του τετραδίου:'
ΔΙΑΒΑΣΕ τιμή
ΓΡΑΨΕ 'Δώσε το πλήθος των τετραδίων'
ΔΙΑΒΑΣΕ πλήθος
ΓΡΑΨΕ 'Δώσε το διαθέσιμο ποσό'
ΔΙΑΒΑΣΕ διαθέσιμο_ποσό
οφειλόμενο_ποσό <- τιμή * πλήθος
ΑΝ οφειλόμενο_ποσό <= διαθέσιμο_ποσό ΤΟΤΕ
ΓΡΑΨΕ 'Η αγορά είναι εφικτή'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Η αγορά δεν είναι εφικτή'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

348 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.1.1, Δραστηριότητα 1,


σελ.116

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *
Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που
σχετίζονται με:

 τη συνθήκη ή τις συνθήκες


 τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη
είναι αληθής ή ψευδής.

Όπως είδαμε παραπάνω, μερικές φορές κατά την εκτέλεση της


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, σελ.121

349 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *

 Οι συνθήκες εξετάζονται με τη σειρά, από πάνω προς τα


κάτω. Όταν βρεθεί μία συνθήκη που ικανοποιείται,
εκτελούνται οι εντολές που περιλαμβάνει και αμέσως μετά
η ΑΝ/ΕΠΙΛΕΞΕ τερματίζει.
 Οι υπόλοιπες συνθήκες δεν εξετάζονται, ακόμη και αν
κάποιες από αυτές είναι ΑΛΗΘΗΣ
 Για αυτό το λόγο θέλει προσοχή η σειρά με την οποία θα
παρατεθούν οι "περιπτώσεις"
o Πρέπει να ξεκινάμε από την "ειδικότερη" περίπτωση
και να πηγαίνουμε στην "γενικότερη"

350 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *

Παράδειγμα
Τι θα εμφανιστεί για ένα μαθητή που πήρε βαθμό 16;
ΔΙΑΒΑΣΕ β
ΑΝ β >= 18 ΤΟΤΕ
ΓΡΑΨΕ 'ΑΡΙΣΤΑ'
ΑΛΛΙΩΣ_ΑΝ β >= 10 ΤΟΤΕ
ΓΡΑΨΕ 'ΚΑΛΩΣ'
ΑΛΛΙΩΣ_ΑΝ β >= 14 ΤΟΤΕ
ΓΡΑΨΕ 'ΛΙΑΝ ΚΑΛΩΣ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΡΑΝΤΕΒΟΥ ΤΟ ΣΕΠΤΕΜΒΡΗ'
ΤΕΛΟΣ_ΑΝ
351 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *

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

! β ∈ (0,20]
ΔΙΑΒΑΣΕ β
ΑΝ β > 0 ΚΑΙ β < 9.5 ΤΟΤΕ
ΓΡΑΨΕ 'ΡΑΝΤΕΒΟΥ ΤΟ ΣΕΠΤΕΜΒΡΗ'
ΑΛΛΙΩΣ_ΑΝ β < 14 ΤΟΤΕ
ΓΡΑΨΕ 'ΚΑΛΩΣ'
ΑΛΛΙΩΣ_ΑΝ β < 18 ΤΟΤΕ
ΓΡΑΨΕ 'ΛΙΑΝ ΚΑΛΩΣ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΑΡΙΣΤΑ'
ΤΕΛΟΣ_ΑΝ
352 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *

Παράδειγμα
Ίσως οι "περιττές συνθήκες" να μην είναι πάντα περιττές…
ΔΙΑΒΑΣΕ β
ΑΝ β > 0 ΚΑΙ β < 9.5 ΤΟΤΕ !(0,9.5)
ΓΡΑΨΕ 'ΡΑΝΤΕΒΟΥ ΤΟ ΣΕΠΤΕΜΒΡΗ'
ΑΛΛΙΩΣ_ΑΝ β >= 9.5 ΚΑΙ β < 14 ΤΟΤΕ ![9.5,14)
ΓΡΑΨΕ 'ΚΑΛΩΣ'
ΑΛΛΙΩΣ_ΑΝ β >= 14 ΚΑΙ β < 18 ΤΟΤΕ ![14,18)
ΓΡΑΨΕ 'ΛΙΑΝ ΚΑΛΩΣ'
ΑΛΛΙΩΣ_ΑΝ β >= 18 ΚΑΙ β <= 20 ΤΟΤΕ ![18,20]
ΓΡΑΨΕ 'ΑΡΙΣΤΑ'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Λάθος βαθμός'
ΤΕΛΟΣ_ΑΝ
353 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *

Παράδειγμα
Βοηθάει συχνά να ξεκινάμε από τις λάθος τιμές
ΔΙΑΒΑΣΕ β
ΑΝ β <= 0 Η β > 20 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος βαθμός'
ΑΛΛΙΩΣ_ΑΝ β < 9.5 ΤΟΤΕ
ΓΡΑΨΕ 'ΡΑΝΤΕΒΟΥ ΤΟ ΣΕΠΤΕΜΒΡΗ'
ΑΛΛΙΩΣ_ΑΝ β < 14 ΤΟΤΕ
ΓΡΑΨΕ 'ΚΑΛΩΣ'
ΑΛΛΙΩΣ_ΑΝ β < 18 ΤΟΤΕ
ΓΡΑΨΕ 'ΛΙΑΝ ΚΑΛΩΣ'
ΑΛΛΙΩΣ !_ΑΝ β <= 20 ΤΟΤΕ
ΓΡΑΨΕ 'ΑΡΙΣΤΑ'
ΤΕΛΟΣ_ΑΝ
354 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *

Παράδειγμα
Ισοδύναμα προγράμματα;
ΑΝ Χ > 0 ΤΟΤΕ
Μ <- 'ΘΕΤΙΚΟΣ'
ΓΡΑΨΕ Μ
ΑΛΛΙΩΣ_ΑΝ X < 0 ΤΟΤΕ
Μ <- 'ΑΡΝΗΤΙΚΟΣ'
ΓΡΑΨΕ Μ
ΤΕΛΟΣ_ΑΝ
ΑΝ Χ > 0 ΤΟΤΕ
Μ <- 'ΘΕΤΙΚΟΣ'
ΑΛΛΙΩΣ_ΑΝ X < 0 ΤΟΤΕ
Μ <- 'ΑΡΝΗΤΙΚΟΣ'
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ Μ
355 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής *

Παραδείγματα (Θέματα Πανελλαδικών)


 2015 / Θέμα Α5 - β. (Λύσεις)
 2012 επάν. / Θέμα Α3 (Λύσεις)

356 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1, Παραδείγματα 4-5,


σελ.121-124 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.1,
Δραστηριότητα 2, σελ.124-125

5.2 Εκσφαλμάτωση
5.2.2 Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης *

Σε μια δομή επανάληψης μπορεί να εμφανιστούν λογικά λάθη


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.2, σελ.125

357 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.2, Παραδείγματα 6-7,


σελ.125-128 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.2,
Δραστηριότητα 3, σελ.129

5.2 Εκσφαλμάτωση
5.2.2 Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης *

Συμβουλή: Κατά την εκσφαλμάτωση των δομών επανάληψης


χρειάζεται να δίνετε προσοχή στα εξής:

 στους συγκριτικούς και τους λογικούς τελεστές των


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.2, σελ.130

358 / 680

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.2, Παραδείγματα 6-7,


σελ.125-128 ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.2,
Δραστηριότητα 3, σελ.129

Γενικές Ασκήσεις εμπέδωσης 1


Παραδείγματα (Θέματα Πανελλαδικών)

1. μέχρι και τη Δομή Επανάληψης

Έξοδος Προγράμματος / "Τιμές που θα


εμφανιστούν;"
 ΟΣΟ
o 2001 / Θέμα 2ο
o 2002 / Θέμα 2ο
o 2003 / Θέμα 2ο
o 2008 / Θέμα 2ο - 2
o 2012 / Θέμα Β1 (Λύσεις)
o 2017 / Θέμα Α3 (Λύσεις)

359 / 680

Γενικές Ασκήσεις εμπέδωσης 1


Παραδείγματα (Θέματα Πανελλαδικών)

1. μέχρι και τη Δομή Επανάληψης

Πίνακες τιμών
 ΟΣΟ
o 2009 επάν. / Θέμα 2ο (Λύσεις)
o 2010 επάν. / Θέμα Β2 (Λύσεις)
 ΜΕΧΡΙΣ_ΟΤΟΥ
o 2010 / Θέμα Β (Λύσεις)

360 / 680

2.1 Μέθοδος Διαίρει και Βασίλευε *


Η «Διαίρει και Βασίλευε» (divide and conquer) αποτελεί μια
μέθοδο σχεδίασης αλγορίθμων στην οποία εντάσσονται οι
τεχνικές που υποδιαιρούν ένα πρόβλημα σε μικρότερα
υποπροβλήματα, που έχουν την ίδια τυποποίηση με το αρχικό
πρόβλημα, αλλά είναι μικρότερα σε μέγεθος. Με όμοιο τρόπο, τα
υποπροβλήματα αυτά μπορούν να διαιρεθούν σε ακόμη
μικρότερα υποπροβλήματα κ.ο.κ. Έτσι η επίλυση ενός
προβλήματος έγκειται στη σταδιακή επίλυση των όσο το
δυνατόν μικρότερων υποπροβλημάτων, ώστε τελικά να
προκύψει η συνολική λύση του αρχικού ευρύτερου
προβλήματος.

Η προσέγγιση αυτή ονομάζεται «από πάνω προς τα κάτω» (top-


down).

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §2.1, σελ.68

361 / 680

2.1 Μέθοδος Διαίρει και Βασίλευε *


Η μέθοδος σχεδίασης αλγορίθμων «Διαίρει και Βασίλευε» μπορεί
να αποδοθεί με τα επόμενα βήματα:

1. Δίνεται για επίλυση ένα στιγμιότυπο ενός προβλήματος.


2. Το στιγμιότυπο του προβλήματος υποδιαιρείται σε υπο-
στιγμιότυπα του ίδιου προβλήματος.
3. Δίνεται ανεξάρτητη λύση σε κάθε ένα υπο-στιγμιότυπο.
4. Συνδυάζονται όλες οι μερικές λύσεις που βρέθηκαν για τα
υπο-στιγμιότυπα, έτσι ώστε να δοθεί η συνολική λύση του
προβλήματος.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §2.1, σελ.68

362 / 680

2.1 Μέθοδος Διαίρει και Βασίλευε *


Στο πλαίσιο του μαθήματος η υλοποίηση της μεθόδου «Διαίρει
και Βασίλευε» γίνεται με την επαναληπτική προσέγγιση (με
διαδοχικές επαναλήψεις).

Ο μέγιστος αριθμός των συγκρίσεων (επαναλήψεων) που


απαιτούνται για την εύρεση ενός στοιχείου σε ένα σύνολο «n»
ταξινομημένων στοιχείων, συμπεριλαμβανομένης και της
περίπτωσης μη ύπαρξης του στοιχείου, δίνεται από το ακέραιο
μέρος του [log2(n)+1] (με στρογγυλοποίηση προς τα κάτω), η
απόδειξη του οποίου υπερβαίνει τα όρια της διδακτέας ύλης του
μαθήματος. Επομένως, για την εύρεση του μέγιστου πλήθους
των επαναλήψεων θεωρείται γνωστό το log2(n).

Για παράδειγμα, σε ένα σύνολο 100 ταξινομημένων στοιχείων


(n=100), ο μέγιστος αριθμός συγκρίσεων (επαναλήψεων) είναι:
[log2(100)+1]=[6,643856+1]=[7,643856]=7.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §2.1, σελ.69

363 / 680

2.1 Μέθοδος Διαίρει και Βασίλευε *


Παράδειγμα 1 – Μάντεψε τον αριθμό (παιχνίδι με αντίπαλο
τον υπολογιστή)
ΠΡΟΓΡΑΜΜΑ μάντεψε_τον_αριθμό
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: προσ, αρχη_, τελος, μεση, απαντηση
ΛΟΓΙΚΕΣ: βρεθηκε
ΧΑΡΑΚΤΗΡΕΣ: απ
ΑΡΧΗ
ΓΡΑΨΕ 'Σκέψου έναν ακέραιο αριθμό από το 1 μέχρι το 100 '
ΓΡΑΨΕ ' και θα τον μαντέψω το πολύ σε 7 προσπάθειες '
ΓΡΑΨΕ ' αρκεί να απαντάς ειλικρινά στις ερωτήσεις μου: '
ΓΡΑΨΕ
αρχη_ <- 1
τελος <- 100
προσ <- 0
βρεθηκε <- ΨΕΥΔΗΣ
ΟΣΟ αρχη_ <= τελος ΚΑΙ βρεθηκε = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
προσ <- προσ + 1
μεση <- (αρχη_ + τελος) div 2
ΓΡΑΨΕ 'Προσπάθεια ', προσ, 'η:'
ΓΡΑΨΕ 'Είναι ο αριθμός ', μεση, ';'
ΓΡΑΨΕ 'Δώσε Ν(ΝΑΙ) ή Ο(ΟΧΙ): '
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ απ
ΑΝ απ <> 'Ν' ΚΑΙ απ <> 'ν' ΚΑΙ απ <> 'Ο' ΚΑΙ απ <> 'ο' ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος απάντηση. Ξαναπροσπάθησε...'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ απ = 'Ν' Η απ = 'ν' Η απ = 'Ο' Η απ = 'ο'
ΑΝ απ = 'Ν' Η απ = 'ν' ΤΟΤΕ
βρεθηκε <- ΑΛΗΘΗΣ
ΓΡΑΨΕ 'Τον βρήκα σε ', προσ, ' προσπάθεια/ες...'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Ο αριθμός που έβαλες είναι '
ΓΡΑΨΕ '(1) μεγαλύτερος ή (2) μικρότερος...'
ΓΡΑΨΕ 'Δώσε απάντηση 1 ή 2: '
ΔΙΑΒΑΣΕ απαντηση
ΑΝ απαντηση = 1 ΤΟΤΕ
αρχη_ <- μεση + 1
ΑΛΛΙΩΣ
τελος <- μεση - 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ '______________________________'
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ προσ > 7 Η αρχη_ > τελος ΤΟΤΕ
ΓΡΑΨΕ 'Δε βρήκα τον αριθμό σε 7 προσπάθειες '
ΓΡΑΨΕ ' γιατί δεν είσαι ειλικρινής ή '
ΓΡΑΨΕ ' έκανες κάτι λάθος στη διαδικασία '
ΓΡΑΨΕ ' που συμφωνήσαμε'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ μάντεψε_τον_αριθμό
364 / 680

3.1 Δεδομένα
Τα δεδομένα (data) είναι η αφαιρετική αναπαράσταση της
πραγματικότητας και συνεπώς μία απλοποιημένη όψη της. Για
παράδειγμα, έστω ένα αρχείο μαθητών ενός σχολείου. Τα
χρήσιμα δεδομένα που αποθηκεύονται είναι το ονοματεπώνυμο,
η ηλικία, το φύλο, η τάξη, το τμήμα κ.λπ., όχι όμως το βάρος, το
ύψος κ.λπ. Τα δεδομένα, λοιπόν, είναι ακατέργαστα γεγονότα, και
κάθε φορά η επιλογή τους εξαρτάται από τον τύπο του
προβλήματος. Η συλλογή των ακατέργαστων δεδομένων και ο
συσχετισμός τους δίνει ως αποτέλεσμα την πληροφορία
(information). Δεν είναι εύκολο να δοθεί επακριβής ορισμός της
έννοιας της πληροφορίας, αλλά μπορεί να θεωρηθεί ότι ο
αλγόριθμος είναι το μέσο για την παραγωγή πληροφορίας από
τα δεδομένα. Με βάση τις δεδομένες πληροφορίες λαμβάνονται
διάφορες αποφάσεις και γίνονται ενέργειες. Στη συνέχεια αυτές
οι ενέργειες παράγουν νέα δεδομένα, νέες πληροφορίες, νέες
αποφάσεις, νέες ενέργειες κ.ο.κ. Η μέτρηση, η κωδικοποίηση, η
μετάδοση της πληροφορίας αποτελεί αντικείμενο μελέτης ενός
ιδιαίτερου κλάδου, της Θεωρίας Πληροφοριών (Information
Theory), που είναι ένα ιδιαίτερα σημαντικό πεδίο της
Πληροφορικής.

ΑΕΠΠ - Βιβλίο Μαθητή, §3.1, σελ.55

365 / 680
3.1 Δεδομένα
Μια θέση μνήμης (byte) έχει ως περιεχόμενο 11110001. Η τιμή
μπορεί να παριστάνει:

 Το χαρακτήρα _ στον κώδικα ASCII 437


 Το χαρακτήρα ρ στον κώδικα ΕΛΟΤ 928
 Το χαρακτήρα 1 στον κώδικα EBCDIC
 Την τιμή 241 στο δυαδικό σύστημα (ως μη προσημασμένο
ακέραιο)
 Την τιμή -14 στο δυαδικό σύστημα (ως προσημασμένο
ακέραιο στο συμπλήρωμα ως προς 1)
 Την τιμή -15 στο δυαδικό σύστημα (ως προσημασμένο
ακέραιο στο συμπλήρωμα ως προς 2)

Ακόμη μπορεί να είναι τμήμα ενός ακέραιου σε 2 ή 4 bytes, καθώς


και ενός αριθμού κινητής υποδιαστολής.

Όσον αφορά στη φυσική σημασία της, αν μεν είναι χαρακτήρας,


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

ΑΕΠΠ - Βιβλίο Μαθητή, §3.1, σελ.55

366 / 680

3.1 Δεδομένα
Όπως η Πληροφορική ορίζεται ως επιστήμη σε συνάρτηση με
την έννοια του αλγορίθμου, κατά τον ίδιο τρόπο η Πληροφορική
ορίζεται και σε σχέση με την έννοια των δεδομένων. Έτσι,
Πληροφορική θεωρείται η επιστήμη που μελετά τα δεδομένα από
τις ακόλουθες σκοπιές:

 Υλικού. Το υλικό (hardware), δηλαδή η μηχανή, επιτρέπει


στα δεδομένα ενός προγράμματος να αποθηκεύονται στην
κύρια μνήμη και στις περιφερειακές συσκευές του
υπολογιστή με διάφορες αναπαραστάσεις
(representations). Τέτοιες μορφές είναι η δυαδική, ο
κώδικας ASCII (βλ. παράρτημα), ο κώδικας EBCDIC, το
συμπλήρωμα του 1 ή του 2 κ.λπ.
 Γλωσσών προγραμματισμού. Οι γλώσσες
προγραμματισμού υψηλού επιπέδου (high level
programming languages) επιτρέπουν τη χρήση διάφορων
τύπων (types) μεταβλητών (variables) για να περιγράψουν
ένα δεδομένο. Ο μεταφραστής κάθε γλώσσας φροντίζει για
την αποδοτικότερη μορφή αποθήκευσης, από πλευράς
υλικού, κάθε μεταβλητής στον υπολογιστή.
 Δομών Δεδομένων. Δομή δεδομένων (data structure) είναι
ένα σύνολο δεδομένων μαζί με ένα σύνολο επιτρεπτών
λειτουργιών επί αυτών. Για παράδειγμα, μία τέτοια δομή
είναι η εγγραφή (record), που μπορεί να περιγράφει ένα
είδος, ένα πρόσωπο κ.λπ. Η εγγραφή αποτελείται από τα
πεδία (fields) που αποθηκεύουν χαρακτηριστικά (attributes)
διαφορετικού τύπου, όπως για παράδειγμα ο κωδικός, η
περιγραφή κ.λπ. Άλλη μορφή δομής δεδομένων είναι το
αρχείο που αποτελείται από ένα σύνολο εγγραφών. Μία
επιτρεπτή λειτουργία σε ένα αρχείο είναι η σειριακή
προσπέλαση όλων των εγγραφών του.
 Ανάλυσης Δεδομένων. Τρόποι καταγραφής και
αλληλοσυσχέτισης των δεδομένων μελετώνται έτσι ώστε να
αναπαρασταθεί η γνώση για πραγματικά γεγονότα. Οι
τεχνολογίες των Βάσεων Δεδομένων (Databases), της
Μοντελοποίησης Δεδομένων (Data Modelling) και της
Αναπαράστασης Γνώσης (Knowledge Representation)
ανήκουν σε αυτή τη σκοπιά μελέτης των δεδομένων.

ΑΕΠΠ - Βιβλίο Μαθητή, §3.2, σελ.56-57

367 / 680

3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα


Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων
που υφίστανται επεξεργασία απο ένα σύνολο λειτουργιών.

ΑΕΠΠ - Βιβλίο Μαθητή, §3.2, σελ.56


368 / 680

3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα


Βασικές λειτουργίες (πράξεις):

 Προσπέλαση (access), πρόσβαση σε έναν κόμβο με σκοπό


να εξετασθεί ή να τροποποιηθεί το περιεχόμενό του.
 Εισαγωγή (insertion), δηλαδή η προσθήκη νέων κόμβων σε
μία υπάρχουσα δομή. 1
 Διαγραφή (deletion), που αποτελεί το αντίστροφο της
εισαγωγής, δηλαδή ένας κόμβος αφαιρείται από μία δομή. 1
 Αναζήτηση (searching), κατά την οποία προσπελαύνονται
οι κόμβοι μιας δομής, προκειμένου να εντοπιστούν ένας ή
περισσότεροι που έχουν μια δεδομένη ιδιότητα.
 Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής
διατάσσονται κατά αύξουσα ή φθίνουσα σειρά.
 Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή
μερικοί από τους κόμβους μίας δομής αντιγράφονται σε
μία άλλη δομή.
 Συγχώνευση (merging), κατά την οποία δύο ή
περισσότερες δομές συνενώνονται σε μία ενιαία δομή.
 Διαχωρισμός (separation), που αποτελεί την αντίστροφη
πράξη της συγχώνευσης.

1. Μόνο σε δυναμικές δομές

ΑΕΠΠ - Βιβλίο Μαθητή, §3.2, σελ.56

369 / 680

3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα


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

ΑΕΠΠ - Βιβλίο Μαθητή, §3.2, σελ.56

370 / 680

3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα


… υπάρχει μεγάλη εξάρτηση μεταξύ της δομής δεδομένων και
του αλγορίθμου που επεξεργάζεται τη δομή. … το πρόγραμμα
πρέπει να θεωρεί τη δομή δεδομένων και τον αλγόριθμο ως μία
αδιάσπαστη ενότητα. Η παρατήρηση αυτή δικαιολογεί την
εξίσωση που διατυπώθηκε το 1976 από τον Wirth (σχεδίασε και
υλοποίησε τη γλώσσα Pascal) Αλγόριθμοι + Δομές Δεδομένων =
Προγράμματα

ΑΕΠΠ - Βιβλίο Μαθητή, §3.2, σελ.57

371 / 680

3.2 Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα


Δυναμικές Δομές

Οι δομές δεδομένων διακρίνονται σε δύο μεγάλες κατηγορίες: τις


στατικές (static) και τις δυναμικές (dynamic). Οι δυναμικές δομές
δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά
στηρίζονται στην τεχνική της λεγόμενης δυναμικής
παραχώρησης μνήμης (dynamic memory allocation). Με άλλα
λόγια, οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο
αριθμός των κόμβων τους μεγαλώνει και μικραίνει καθώς στη
δομή εισάγονται νέα δεδομένα ή διαγράφονται κάποια δεδομένα
αντίστοιχα. Όλες οι σύγχρονες γλώσσες προγραμματισμού
προσφέρουν τη δυνατότητα δυναμικής παραχώρησης μνήμης.
Ωστόσο, εμείς στη συνέχεια θα εξετάσουμε μόνο τις στατικές
δομές που είναι ευκολότερες στην κατανόηση και την υλοποίησή
τους.

ΑΕΠΠ - Βιβλίο Μαθητή, §3.2, σελ.57


372 / 680

3.3 Πίνακες
Στατικές Δομές

Με τον όρο στατική δομή δεδομένων εννοείται ότι το ακριβές


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

ΑΕΠΠ - Βιβλίο Μαθητή, §3.3, σελ.58

373 / 680

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

ΑΕΠΠ - Βιβλίο Μαθητή, §3.3, σελ.58

374 / 680

3.3 Πίνακες
Ένας πίνακας μπορεί να είναι μονοδιάστατος, αλλά στη
γενικότερη περίπτωση μπορεί να είναι δισδιάστατος,
τρισδιάστατος και γενικά ν-διάστατος πίνακας. Όσον αφορά
στους δισδιάστατους πίνακες σημειώνεται ότι, αν το μέγεθος των
δύο διαστάσεων είναι ίσο, τότε ο πίνακας λέγεται τετραγωνικός
(square) και γενικά συμβολίζεται ως πίνακας n x n. Μάλιστα
μπορούμε να θεωρήσουμε το δισδιάστατο πίνακα ότι είναι ένας
μονοδιάστατος πίνακας, όπου κάθε θέση του περιέχει ένα νέο
μονοδιάστατο πίνακα.

ΑΕΠΠ - Βιβλίο Μαθητή, §3.3, σελ.58

375 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Εισαγωγή στοιχείων
376 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Εισαγωγή στοιχείων
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
377 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Εμφάνιση στοιχείων
378 / 680

3.3 Πίνακες
Βασικές Λειτουργίες
Εμφάνιση στοιχείων
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
379 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Αναζήτηση 1
Ταξινόμηση 1
1. Αναλύονται σε ξεχωριστή ενότητα

380 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Αντιγραφή
381 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Αντιγραφή
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
Β[i] <- Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
382 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Συγχώνευση
383 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Συγχώνευση
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ
Γ[i] <- Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
Γ[Μ+i] <- Β[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
384 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Διαχωρισμός
385 / 680

3.3 Πίνακες
Βασικές Λειτουργίες

Διαχωρισμός
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ
Α[i] <- Γ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
Β[i] <- Γ[Μ+i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
386 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Αρχικοποίηση όλων των θέσεων


387 / 680
3.3 Πίνακες
Τυπικές Επεξεργασίες

Αρχικοποίηση όλων των θέσεων


ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
Α[i] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
388 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Υπολογισμός αθροίσματος & μέσου όρου


389 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Υπολογισμός αθροίσματος & μέσου όρου


!Χωρίς πίνακα
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ α
Σ <- Σ + α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ, Σ/Ν
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
Σ <- Σ + Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ, Σ/Ν
390 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες
Εύρεση ελάχιστου & μέγιστου
Αρχικοποίηση με αυθαίρετες τιμές

391 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Αρχικοποίηση με αυθαίρετες τιμές
!Χωρίς πίνακα
min <- 999
max <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ α
ΑΝ α < min ΤΟΤΕ
min <- α
ΤΕΛΟΣ_ΑΝ
!Προσοχή, σε ξεχωριστές ΑΝ
ΑΝ α > max ΤΟΤΕ
max <- α
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
min <- 999
max <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ Α[i] < min ΤΟΤΕ
min <- Α[i]
ΤΕΛΟΣ_ΑΝ
!Προσοχή, σε ξεχωριστές ΑΝ
ΑΝ Α[i] > max ΤΟΤΕ
max <- Α[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
392 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Αρχικοποίηση με κανονικές τιμές

393 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Αρχικοποίηση με κανονικές τιμές
!Χωρίς πίνακα
ΔΙΑΒΑΣΕ α
min <- α
max <- α
!Αν ξεκινούσα από 1;
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ α
ΑΝ α < min ΤΟΤΕ
min <- α
ΑΛΛΙΩΣ_ΑΝ α > max ΤΟΤΕ
max <- α
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
min <- Α[1]
max <- Α[1]
!Αν ξεκινούσα από 1;
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N
ΑΝ Α[i] < min ΤΟΤΕ
min <- Α[i]
ΑΛΛΙΩΣ_ΑΝ Α[i] > max ΤΟΤΕ
max <- Α[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
394 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Αρχικοποίηση με αυθαίρετες τιμές και εύρεση θέσης
395 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Αρχικοποίηση με αυθαίρετες τιμές και εύρεση θέσης
!Χωρίς πίνακα
min <- 999
max <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ α
ΑΝ α < min ΤΟΤΕ
min <- α
θ_min <- i !min_i
ΤΕΛΟΣ_ΑΝ
ΑΝ α > max ΤΟΤΕ !Ξεχωριστές ΑΝ
max <- α
θ_max <- i !max_i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, θ_min
ΓΡΑΨΕ max, θ_max
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
min <- 999
max <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ Α[i] < min ΤΟΤΕ
min <- Α[i]
θ_min <- i
ΤΕΛΟΣ_ΑΝ
ΑΝ Α[i] > max ΤΟΤΕ !Ξεχωριστές ΑΝ
max <- Α[i]
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, θ_min
ΓΡΑΨΕ max, θ_max
396 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Αρχικοποίηση με κανονικές τιμές και εύρεση θέσης

397 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Αρχικοποίηση με κανονικές τιμές και εύρεση θέσης
!Χωρίς πίνακα
ΔΙΑΒΑΣΕ α
min <- α
max <- α
θ_min <- 1 !Εδώ χρειάζεται αρχικοποίηση
θ_max <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N !από 2
ΔΙΑΒΑΣΕ α
ΑΝ α < min ΤΟΤΕ
min <- α
θ_min <- i
ΑΛΛΙΩΣ_ΑΝ α > max ΤΟΤΕ !ΑΛΛΙΩΣ_ΑΝ
max <- α
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, θ_min
ΓΡΑΨΕ max, θ_max
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
min <- Α[1]
max <- Α[1]
θ_min <- 1 !Εδώ χρειάζεται αρχικοποίηση
θ_max <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N !από 2
ΑΝ Α[i] < min ΤΟΤΕ
min <- Α[i]
θ_min <- i
ΑΛΛΙΩΣ_ΑΝ Α[i] > max ΤΟΤΕ !ΑΛΛΙΩΣ_ΑΝ
max <- Α[i]
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, θ_min
ΓΡΑΨΕ max, θ_max
398 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Μόνο με τη χρήση θέσης

399 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση ελάχιστου & μέγιστου


Μόνο με τη χρήση θέσης
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Με κανονικές τιμές
θ_min <- 1
θ_max <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N !από 2
ΑΝ Α[i] < Α[θ_min] ΤΟΤΕ
θ_min <- i
ΑΛΛΙΩΣ_ΑΝ Α[i] > Α[θ_max] ΤΟΤΕ !ΑΛΛΙΩΣ_ΑΝ
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Α[Θ_min], θ_min
ΓΡΑΨΕ Α[θ_max], θ_max
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Με αυθαίρετες τιμές
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
!Δεν είναι βέβαιο ότι θα λειτουργήσει...
ΑΝ i = 1 Η Α[i] < Α[θ_min] ΤΟΤΕ
θ_min <- i
ΤΕΛΟΣ_ΑΝ
ΑΝ i = 1 Η Α[i] > Α[θ_max] ΤΟΤΕ
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Α[Θ_min], θ_min
ΓΡΑΨΕ Α[θ_max], θ_max
400 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες
Εύρεση k "καλύτερων" τιμών
Σε μία επανάληψη (χωρίς ισοβαθμίες)

401 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση k "καλύτερων" τιμών


Σε μία επανάληψη (χωρίς ισοβαθμίες)
max1 <- -1 !Θα μπορούσε να γίνει αρχικοποίηση
max2 <- -1 ! με πραγματικές τιμές;
max3 <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Α[i] > max1 ΤΟΤΕ
max3 <- max2
max2 <- max1
max1 <- Α[i]
ΑΛΛΙΩΣ_ΑΝ Α[i] > max2 ΤΟΤΕ
max3 <- max2
max2 <- Α[i]
ΑΛΛΙΩΣ_ΑΝ Α[i] > max3 ΤΟΤΕ
max3 <- Α[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max1, max2, max3
402 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση k "καλύτερων" τιμών


Σε k επαναλήψεις (χωρίς ισοβαθμίες)

403 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες
Εύρεση k "καλύτερων" τιμών
Σε k επαναλήψεις (χωρίς ισοβαθμίες)
max1 <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Π[i] > max1 ΤΟΤΕ
max1 <- Π[i]
θ_max1 <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max2 <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ i <> θ_max1 ΤΟΤΕ
ΑΝ ΒΑΘ[i] > max2 ΤΟΤΕ !Ή με σύνθετη λογική έκφραση
max2 <- ΒΑΘ[i]
θ_max2 <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max3 <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ i <> θ_max1 ΚΑΙ i <> θ_max2 ΤΟΤΕ
ΑΝ ΒΑΘ[i] > max3 ΤΟΤΕ !Ή με σύνθετη λογική έκφραση
max3 <- ΒΑΘ[i]
θ_max3 <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max1, max2, max3

Δες επίσης: ΑΕΠΠ - Τετράδιο Μαθητή, §4.2, Παράδειγμα 3, σελ.37

404 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση k "καλύτερων" τιμών


Με βοηθητικό πίνακα

405 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση k "καλύτερων" τιμών


Με βοηθητικό πίνακα
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ k
MAX[i] <- -1 !Έστω ότι πρόκειται για φυσικούς αριθμούς
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N !N > k
!Εύρεση μικρότερου από τον πίνακα με τα μέγιστα
min <- MAX[1]
θmin <- 1
ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ k
ΑΝ MAX[j] < min ΤΟΤΕ
min <- MAX[j]
θmin <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Α[N] > min ΤΟΤΕ
!Αντικατάσταση του μικρότερου στοιχείου
! με το στοιχείο από τον πίνακα Α
MAX[θmin] <- Α[N]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
406 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση k "καλύτερων" τιμών


Με εισαγωγή στοιχείου σε ταξινομημένο βοηθητικό πίνακα

407 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Εύρεση k "καλύτερων" τιμών


Με εισαγωγή στοιχείου σε ταξινομημένο βοηθητικό πίνακα
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ k
MAX[i] <- -1 !Έστω ότι πρόκειται για φυσικούς αριθμούς
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N !N > k
ΔΙΑΒΑΣΕ x
f <- ΨΕΥΔΗΣ
j <- 1
ΟΣΟ j <= N ΚΑΙ ΟΧΙ f ΕΠΑΝΑΛΑΒΕ
ΑΝ MAX[j] < x ΤΟΤΕ
ΑΝ j > 1 ΤΟΤΕ
MAX[j-1] <- MAX[j]
ΤΕΛΟΣ_ΑΝ
j <- j + 1
ΑΛΛΙΩΣ
f <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ j > 1 ΤΟΤΕ
MAX[j-1] <- x
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
408 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Θετικές & αρνητικές τιμές

409 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Θετικές & αρνητικές τιμές
!Χωρίς πίνακα
πλ_θετ <- 0
πλ_αρν <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ α
ΑΝ α > 0 ΤΟΤΕ
πλ_θετ <- πλ_θετ + 1
ΑΛΛΙΩΣ_ΑΝ α < 0 ΤΟΤΕ
πλ_αρν <- πλ_αρν + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλ_θετ, πλ_θετ/Ν
ΓΡΑΨΕ πλ_αρν, πλ_αρν/Ν
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πλ_θετ <- 0
πλ_αρν <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Α[i] > 0 ΤΟΤΕ
πλ_θετ <- πλ_θετ + 1
ΑΛΛΙΩΣ_ΑΝ Α[i] < 0 ΤΟΤΕ
πλ_αρν <- πλ_αρν + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλ_θετ, πλ_θετ/Ν
ΓΡΑΨΕ πλ_αρν, πλ_αρν/Ν
410 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Άρτιοι και περιττοί

411 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Άρτιοι και περιττοί
!Χωρίς πίνακα
πλ_θετ <- 0
πλ_αρν <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΔΙΑΒΑΣΕ α
ΕΠΙΛΕΞΕ α MOD 2
ΠΕΡΙΠΤΩΣΗ 0
πλ_αρτ <- πλ_αρτ + 1
ΠΕΡΙΠΤΩΣΗ 1
πλ_περ <- πλ_περ + 1
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλ_αρτ, πλ_αρτ/Ν
ΓΡΑΨΕ πλ_περ, πλ_περ/Ν
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πλ_αρτ <- 0
πλ_περ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΕΠΙΛΕΞΕ Α[i] MOD 2
ΠΕΡΙΠΤΩΣΗ 0
πλ_αρτ <- πλ_αρτ + 1
ΠΕΡΙΠΤΩΣΗ 1
πλ_περ <- πλ_περ + 1
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλ_αρτ, πλ_αρτ/Ν
ΓΡΑΨΕ πλ_περ, πλ_περ/Ν
412 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Τιμές κοντά ή πάνω από το μέσο όρο 1

413 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Τιμές κοντά ή πάνω από το μέσο όρο 1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
Σ <- Σ + Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ <- Σ/Ν
πλ_κοντά <- 0
πλ_πάνω <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Α_Τ(Α[i] - ΜΟ) <= 0.01 ΤΟΤΕ !|α-β| ≤ 0.01
πλ_κοντά <- πλ_κοντά + 1
ΑΛΛΙΩΣ_ΑΝ Α[i] > MO ΤΟΤΕ
πλ_πάνω <- πλ_πάνω + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλ_κοντά, πλ_πάνω
1. Απαραίτητη η χρήση πίνακα

414 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Πλήθος εμφάνισης μέγιστης τιμής 1

415 / 680

3.3 Πίνακες
Τυπικές Επεξεργασίες

Μετρητές/πλήθη & ποσοστά


Πλήθος εμφάνισης μέγιστης τιμής 1
!Χωρίς πίνακα
max <- -1
πλ_max <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ α
ΑΝ α > max ΤΟΤΕ
max <- α
πλ_max <- 1
ΑΛΛΙΩΣ_ΑΝ α = max ΤΟΤΕ
πλ_max <- πλ_max + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max, πλ_max
!Με πίνακα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max <- Α[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N
ΑΝ Α[i] > max ΤΟΤΕ
max <- Α[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πλ_max <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ Α[i] = max ΤΟΤΕ
πλ_max <- πλ_max +1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, πλ_max
1. Ενδείκνυται(;) η χρήση πίνακα

416 / 680

9.1 Μονοδιάστατοι πίνακες


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

Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία


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

Οι πίνακες που χρησιμοποιούν ένα μόνο δείκτη για την αναφορά


των στοιχείων τους ονομάζονται μονοδιάστατοι πίνακες.

ΑΕΠΠ - Βιβλίο Μαθητή, §9.1, σελ.155-156

417 / 680

9.1 Μονοδιάστατοι πίνακες


Εύρεση μέγιστης θερμοκρασίας και πλήθος ημερών
(χωρίς πίνακα)
μέγιστη <- -273.15 ! Απόλυτο μηδέν
πλήθος <- 0
ΓΙΑ ημέρα ΑΠΟ 1 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ Θερμοκρασία
ΑΝ θερμοκρασία > μέγιστη ΤΟΤΕ
μέγιστη <- θερμοκρασία
πλήθος <- 1
ΑΛΛΙΩΣ_ΑΝ θερμοκρασία = μέγιστη ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ μέγιστη, πλήθος
418 / 680

9.1 Μονοδιάστατοι πίνακες


Εύρεση μέγιστης θερμοκρασίας και πλήθος ημερών
(με πίνακα)
μέγιστη <- Θερμοκρασία[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ Θερμοκρασία[i]
ΑΝ θερμοκρασία[i] > μέγιστη ΤΟΤΕ
μέγιστη <- θερμοκρασία[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πλήθος <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΑΝ θερμοκρασία[i] = μέγιστη ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ μέγιστη, πλήθος
419 / 680

9.1 Μονοδιάστατοι πίνακες


Εύρεση μέσης θερμοκρασίας
(χρειάζεται πίνακας;)
Σύνολο <- 0
ΓΙΑ ημέρα ΑΠΟ 1 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ Θερμοκρασία
Σύνολο <- Σύνολο + Θερμοκρασία
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Μέση <- Σύνολο / 30
ΓΡΑΨΕ Μέση
420 / 680

9.1 Μονοδιάστατοι πίνακες


Εύρεση μέσης θερμοκρασίας και πλήθος ημερών
(γίνεται χωρίς πίνακα;)
Σύνολο <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ Θερμοκρασία[i]
Σύνολο <- Σύνολο + Θερμοκρασία[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Μέση <- Σύνολο / 30
πλήθος <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΑΝ θερμοκρασία[i] < Μέση ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Μέση, πλήθος
421 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Να γραφεί πρόγραμμα το οποίο διαβάζει τα ονόματα 50


αεροπορικών εταιρειών και τις αντίστοιχες εισπράξεις τους. Να
τυπώνει τα ονόματα των εταιρειών που έχουν εισπράξεις
περισσότερες από τον μέσο όρο.

ΕΞΤΡΑ:

1. Το πλήθος των εταιρειών είναι το πολύ 50 τον αριθμό


2. Το πλήθος των εταιρειών να γίνεται δεκτό μόνο αν είναι
μεταξύ 0 και 50.

ΑΕΠΠ - Τετράδιο Μαθητή, §9.2, σελ.82

422 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες
ΠΡΟΓΡΑΜΜΑ Αεροπορικές_εταιρείες
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ν, Ι, Εισπράξεις[50], Σύνολο
ΠΡΑΓΜΑΤΙΚΕΣ: ΜΟ
ΧΑΡΑΚΤΗΡΕΣ: Εταιρεία[50]
ΑΡΧΗ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Αριθμός εταιρειών … (μικρότερο από 50)'
ΔΙΑΒΑΣΕ Ν
ΜΕΧΡΙΣ_ΟΤΟΥ Ν <= 50
Σύνολο <- 0
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ 'Δώσε αεροπορική εταιρεία …'
ΔΙΑΒΑΣΕ Εταιρεία[Ι]
ΓΡΑΨΕ 'Δώσε εισπράξεις …'
ΔΙΑΒΑΣΕ Εισπράξεις[Ι]
Σύνολο <- Σύνολο + Εισπράξεις[Ι]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ <- Σύνολο / Ν
ΓΡΑΨΕ 'Μεγαλύτερες από τον μέσο όρο'
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Εισπράξεις[Ι] > ΜΟ ΤΟΤΕ
ΓΡΑΨΕ Εταιρεία[Ι]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΑΕΠΠ - Τετράδιο Μαθητή, §9.2, σελ.82

423 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Οι παραπάνω πίνακες λέγονται παράλληλοι. Δύο ή περισσότεροι


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

ΑΕΠΠ - Τετράδιο Μαθητή, §9.2, σελ.82

424 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

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

425 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Άσκηση 1
Να γραφεί πρόγραμμα που να διαβάζει και να αποθηκεύει τα
ονόματα και τις βαθμολογίες 50 μαθητών. Στη συνέχεια να
βρίσκει και να εμφανίζει το όνομα του μαθητή με την
μεγαλύτερη βαθμολογία.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ ΟΝ[i], Β[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max <- Β[1]
ον_max <- ΟΝ[1] !Αρχικοποιώ και το ον_max
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 50
ΑΝ Β[i] > max ΤΟΤΕ !Αν είχα Β[i] >= max, θα άλλαζε κάτι;
max <- Β[i] !Δε με ενδιαφέρει το max, αλλά το χρειάζομαι
ον_max <- ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΟΝ[1] !Αν έχουμε ισοβαθμία;
426 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

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

427 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Άσκηση 2
Να γραφεί πρόγραμμα που να διαβάζει και να αποθηκεύει τα
ονόματα 10 δικτυακών τόπων (websites) και το σύνολο των
επισκέψεων που δέχτηκαν τον προηγούμενο μήνα. Κατόπιν να
υπολογίζει και να εμφανίζει το όνομα του ιστότοπου με τον
αριθμό επισκέψεων που είναι πιο κοντά στο μέσο όρο (θεωρείστε
ότι είναι μοναδικός)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
ΔΙΑΒΑΣΕ ΟΝ[i], ΕΠ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
Σ <- Σ + ΕΠ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ <- Σ / 10
min <- Α_Τ(ΜΟ - ΕΠ[1]) !ή να φτιάξω πίνακα ΑΠΟΣΤΑΣΕΙΣ[10]
θ_min <- 1 !ή ον_min <- ON[1]
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10
απόσταση <- Α_Τ(ΜΟ - ΕΠ[i])
ΑΝ απόσταση < min ΤΟΤΕ
min <- απόσταση
θ_min <- i !ή ον_min <- ON[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΟΝ[θ_min] !ή ΓΡΑΨΕ ον_min
428 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

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

429 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Άσκηση 3
Να γραφεί πρόγραμμα που να διαβάζει και να αποθηκεύει τα
ονόματα, τις καλύτερες επιδόσεις και των αριθμό των
προσπαθειών 50 αθλητών. Νικητής ανακηρύσσεται ο αθλητή που
έχει την καλύτερη επίδοση. Αν υπάρχει ισοβαθμία, τότε νικητής
είναι αυτός με το μικρότερο αριθμό προσπαθειών. Αν υπάρχει
και εκεί ισοβαθμία, τότε ανακηρύσσονται όλοι όσοι ισοβάθμισαν
νικητές.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ ΟΝ[i], ΕΠΙΔ[i], ΠΡΟΣΠ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
θ_max <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 50
ΑΝ ΕΠΙΔ[i] > ΕΠΙΔ[θ_max] Η
& (ΕΠΙΔ[i] = ΕΠΙΔ[θ_max] ΚΑΙ ΠΡΟΣΠ[i] < ΠΡΟΣΠ[θ_max]) ΤΟΤΕ
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΑΝ ΕΠΙΔ[i] = ΕΠΙΔ[θ_max] ΚΑΙ ΠΡΟΣΠ[i] = ΠΡΟΣΠ[θ_max] ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
430 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Άσκηση 4
Σε κάποιο άθλημα διαγωνίζονται 20 αθλητές από Ελλάδα και
Κύπρο. Να γραφεί πρόγραμμα που να διαβάζει και να
αποθηκεύει τη χώρα (κάνοντας έλεγχο για 'GR', 'CY') και την
επίδοση των αθλητών. Στη συνέχεια να εμφανίζει τη χώρα του
αθλητή με την καλύτερη επίδοση, τη χώρα με τον καλύτερο μέσο
όσο επιδόσεων και τη χώρα με τους περισσότερους αθλητές.

431 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Άσκηση 4
Σε κάποιο άθλημα διαγωνίζονται 20 αθλητές από Ελλάδα και
Κύπρο. Να γραφεί πρόγραμμα που να διαβάζει και να
αποθηκεύει τη χώρα (κάνοντας έλεγχο για 'GR', 'CY') και την
επίδοση των αθλητών. Στη συνέχεια να εμφανίζει τη χώρα του
αθλητή με την καλύτερη επίδοση, τη χώρα με τον καλύτερο μέσο
όσο επιδόσεων και τη χώρα με τους περισσότερους αθλητές.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΔΙΑΒΑΣΕ ΕΠΙΔ[i]
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ΧΩΡΑ[i]
ΜΕΧΡΙΣ_ΟΤΟΥ ΧΩΡΑ[i] = 'GR' Η ΧΩΡΑ[i] = 'CY'
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max <- -1
Σ_GR <- 0
Σ_CY <- 0
πλ_GR <- 0
πλ_CY <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΑΝ ΕΠΙΔ[i] > max ΤΟΤΕ
max <- ΕΠΙΔ[i]
χ_max <- ΧΩΡΑ[i]
ΤΕΛΟΣ_ΑΝ
ΕΠΙΛΕΞΕ ΧΩΡΑ[i]
ΠΕΡΙΠΤΩΣΗ 'GR'
Σ_GR <- Σ_GR + ΕΠΙΔ[i]
πλ_GR <- πλ_GR + 1
ΠΕΡΙΠΤΩΣΗ 'CY'
Σ_CY <- Σ_CY + ΕΠΙΔ[i]
πλ_CY <- πλ_CY + 1
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Χώρα αθλητή με την καλύτερη επίδοση: ', χ_max
ΓΡΑΨΕ 'Χώρα με τον καλύτερο μέσο όρο επιδόσεων: '
ΑΝ Σ_GR/πλ_GR > Σ_CY/πλ_CY ΤΟΤΕ
ΓΡΑΨΕ 'GR'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'CY'
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'Χώρα με τους περισσότερους αθλητές: '
ΑΝ πλ_GR > πλ_CY ΤΟΤΕ
ΓΡΑΨΕ 'GR'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'CY'
ΤΕΛΟΣ_ΑΝ
432 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Συνδυασμός μέγιστης και ελάχιστης τιμής


Μέγιστη τιμή από ΒΑΘΜΟΙ, και σε περίπτωση ισοβαθμίας,
ελάχιστη από ΗΤΤΕΣ

433 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες
Συνδυασμός μέγιστης και ελάχιστης τιμής
Μέγιστη τιμή από ΒΑΘΜΟΙ, και σε περίπτωση ισοβαθμίας,
ελάχιστη από ΗΤΤΕΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Β[i], ΗT[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Με θέση
θ <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N
ΑΝ Β[i] > Β[θ] Η
& (Β[i] = Β[θ] ΚΑΙ ΗT[i] < ΗT[θ]) ΤΟΤΕ
θ <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Πρωταθλητής: ', ΟΝ[θ]
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Β[i], Η[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Με τιμές
max <- Β[1]
max_η <- ΗT[1]
max_ο <- ΟΝ[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ N
ΑΝ Β[i] > max ΤΟΤΕ
max <- Β[i]
max_η <- ΗT[i]
max_o <- ΟΝ[i]
ΑΛΛΙΩΣ_ΑΝ Β[i] = max ΚΑΙ ΗT[i] < max_η ΤΟΤΕ
max_η <- ΗT[i]
max_o <- ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Πρωταθλητής: ', max_o
434 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Εύρεση k "καλύτερων" τιμών


Χωρίς ταξινόμηση, σε μία επανάληψη (χωρίς ισοβαθμίες)

435 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες
Εύρεση k "καλύτερων" τιμών
Χωρίς ταξινόμηση, σε μία επανάληψη (χωρίς ισοβαθμίες)
max1 <- -1 !Θα μπορούσε να γίνει αρχικοποίηση
max2 <- -1 ! με πραγματικές τιμές;
max3 <- -1
θ_max1 <- 0
θ_max2 <- 0
θ_max3 <- 0 !Είναι αναγκαία αυτή η αρχικοποίηση;
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ ΒΑΘ[i] > max1 ΤΟΤΕ
max3 <- max2
max2 <- max1
max1 <- ΒΑΘ[i]
θ_max3 <- θ_max2
θ_max2 <- θ_max1
θ_max1 <- i
ΑΛΛΙΩΣ_ΑΝ ΒΑΘ[i] > max2 ΤΟΤΕ
max3 <- max2
max2 <- ΒΑΘ[i]
θ_max3 <- θ_max2
θ_max2 <- i
ΑΛΛΙΩΣ_ΑΝ ΒΑΘ[i] > max3 ΤΟΤΕ
max3 <- ΒΑΘ[i]
θ_max3 <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max1, ΟΝ[θ_max1], max2, ΟΝ[θ_max2], max3, ΟΝ[θ_max3]
436 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Εύρεση k "καλύτερων" τιμών


Χωρίς ταξινόμηση, σε k επαναλήψεις (χωρίς ισοβαθμίες)

437 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Εύρεση k "καλύτερων" τιμών


Χωρίς ταξινόμηση, σε k επαναλήψεις (χωρίς ισοβαθμίες)
max1 <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Π[i] > max1 ΤΟΤΕ
max1 <- Π[i]
θ_max1 <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max2 <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ i <> θ_max1 ΤΟΤΕ
ΑΝ ΒΑΘ[i] > max2 ΤΟΤΕ !Ή με σύνθετη λογική έκφραση
max2 <- ΒΑΘ[i]
θ_max2 <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max3 <- -1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ i <> θ_max1 ΚΑΙ i <> θ_max2 ΤΟΤΕ
ΑΝ ΒΑΘ[i] > max3 ΤΟΤΕ !Ή με σύνθετη λογική έκφραση
max3 <- ΒΑΘ[i]
θ_max3 <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max1, ΟΝ[θ_max1], max2, ΟΝ[θ_max2], max3, ΟΝ[θ_max3]

Δες επίσης: ΑΕΠΠ - Τετράδιο Μαθητή, §4.2, Παράδειγμα 3, σελ.37

438 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με δύο ΓΙΑ

439 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με δύο ΓΙΑ
max <- ΒΑΘ[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΑΝ ΒΑΘ[i] > max ΤΟΤΕ
max <- ΒΑΘ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Α[i] = max ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i], ΒΑΘ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
440 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με μία ΓΙΑ και πίνακα ΘΕΣΕΙΣ

441 / 680

9.1 Μονοδιάστατοι πίνακες


Παράλληλοι πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με μία ΓΙΑ και πίνακα ΘΕΣΕΙΣ
max <- -1
πλ_max <- 0
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΑΝ ΒΑΘ[i] > max ΤΟΤΕ
max <- ΒΑΘ[i]
πλ_max <- 1 !Νέο μέγιστο, επαναφορά σε 1
ΘΕΣΕΙΣ[πλ_max] <- i !Ή ΘΕΣΕΙΣ[1] <- i
ΑΛΛΙΩΣ_ΑΝ ΒΑΘ[i] = max ΤΟΤΕ
πλ_max <- πλ_max + 1
ΘΕΣΕΙΣ[πλ_max] <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλ_max
ΓΡΑΨΕ ΒΑΘ[ΘΕΣΕΙΣ[i]], ΟΝ[ΘΕΣΕΙΣ[i]]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
442 / 680
3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η


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

 ο πίνακας είναι μη ταξινομημένος,


 ο πίνακας είναι μικρού μεγέθους (για παράδειγμα, n ≤ 20),
 η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια

ΑΕΠΠ - Βιβλίο Μαθητή, §3.6, σελ.64

443 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

1η προσέγγιση: υλοποίηση με μετρητή


444 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

1η προσέγγιση: υλοποίηση με μετρητή


ΔΙΑΒΑΣΕ key
πλ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΝ Α[i] = key ΤΟΤΕ
πλ <- πλ + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πλ > 0 ΤΟΤΕ !ή πλ <> 0
ΓΡΑΨΕ 'Βρέθηκε'
ΤΕΛΟΣ_ΑΝ
445 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση
2η προσέγγιση: υλοποίηση με θέση
446 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

2η προσέγγιση: υλοποίηση με θέση


ΔΙΑΒΑΣΕ key
θέση <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΝ Α[i] = key ΤΟΤΕ
θέση <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ θέση > 0 ΤΟΤΕ !ή θέση <> 0
ΓΡΑΨΕ 'Βρέθηκε'
ΤΕΛΟΣ_ΑΝ
447 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

3η προσέγγιση: υλοποίηση με ΟΣΟ και μετρητή (μία


"εμφάνιση")
ΠΡΟΓΡΑΜΜΑ Αναζήτηση1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100], i, KEY
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε αριθμό για αναζήτηση: '
ΔΙΑΒΑΣΕ KEY
i <- 1
ΟΣΟ Α[i] <> KEY ΚΑΙ i < 100 ΕΠΑΝΑΛΑΒΕ
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Α[i] = KEY ΤΟΤΕ
ΓΡΑΨΕ 'Βρέθηκε στη θέση:', i
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δε βρέθηκε'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Αναζήτηση1

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3.2, σελ.73


448 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

4η προσέγγιση: υλοποίηση με ΓΙΑ και σημαία (πολλές


"εμφανίσεις")
ΠΡΟΓΡΑΜΜΑ Αναζήτηση2
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100], I, KEY
ΛΟΓΙΚΕΣ: flag
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε αριθμό για αναζήτηση στον πίνακα Α'
ΔΙΑΒΑΣΕ KEY
flag <- ΨΕΥΔΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΝ KEY = Α[i] ΤΟΤΕ
flag <- ΑΛΗΘΗΣ
ΓΡΑΨΕ 'Βρέθηκε στη θέση ', i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ flag = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Δεν βρέθηκε'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Αναζήτηση2

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3.2, σελ.74

449 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

5η προσέγγιση: υλοποίηση με ΓΙΑ, σημαία και θέση


ΔΙΑΒΑΣΕ key !Το στοιχείο που αναζητούμε
βρέθηκε <- ΨΕΥΔΗΣ !Η μεταβλητή βρέθηκε αρχικοποιείται με
ΨΕΥΔΗΣ
θέση <- 0 !Η μεταβλητή θέση αρχικοποιείται με 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Πίνακας[i] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
θέση <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ !βρέθηκε = ΑΛΗΘΗΣ ⇔ βρέθηκε
ΓΡΑΨΕ θέση
ΤΕΛΟΣ_ΑΝ

Θα μπορούσα να παραλείψω την μεταβλητή βρέθηκε;

450 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

6η προσέγγιση: υλοποίηση με ΟΣΟ, σημαία και θέση


ΔΙΑΒΑΣΕ key !Το στοιχείο που αναζητούμε
βρέθηκε <- ΨΕΥΔΗΣ !Συχνά τη συναντάμε και ως done ή flag
θέση <- 0 !Χρειάζεται;
i <- 1
ΟΣΟ i <= Ν ΚΑΙ (βρέθηκε = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ !ή ΟΧΙ βρέθηκε
ΑΝ Πίνακας[i] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
θέση <- i
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ !βρέθηκε = ΑΛΗΘΗΣ ⇔ βρέθηκε
ΓΡΑΨΕ θέση
ΤΕΛΟΣ_ΑΝ

Δες επίσης: ΑΕΠΠ - Βιβλίο Μαθητή, §3.6, σελ.64

451 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

7η προσέγγιση: υλοποίηση με ΟΣΟ, σημαία και το i


για θέση
ΔΙΑΒΑΣΕ key !Το στοιχείο που αναζητούμε
βρέθηκε <- ΨΕΥΔΗΣ
i <- 1
ΟΣΟ i <= Ν ΚΑΙ (βρέθηκε = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ
ΑΝ Πίνακας[i] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Το στοιχείο ', key
ΑΝ i <= Ν ΤΟΤΕ
ΓΡΑΨΕ ' βρέθηκε στη θέση', i
ΑΛΛΙΩΣ
ΓΡΑΨΕ ' δε βρέθηκε'
ΤΕΛΟΣ_ΑΝ
452 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Χρησιμότητα της σημαίας


 Γιατί ο παρακάτω κώδικας είναι λάθος;
 Τι θα εμφανίσει αν το στοιχείο που ψάχνουμε βρίσκεται,
π.χ., στη θέση 5;
ΔΙΑΒΑΣΕ key
βρέθηκε <- ΨΕΥΔΗΣ
i <- 1
ΟΣΟ i <= Ν ΚΑΙ (βρέθηκε = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ
ΑΝ Πίνακας[i] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
ΓΡΑΨΕ 'Βρέθηκε'
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δε βρέθηκε'
ΤΕΛΟΣ_ΑΝ
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
453 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Χρησιμότητα της σημαίας


 Ερωτήματα του τύπου "Να εξετάσετε αν έχουν περάσει
όλοι οι μαθητές" λύνονται με αναζήτηση;

454 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση
Χρησιμότητα της σημαίας
 Ερωτήματα του τύπου "Να εξετάσετε αν έχουν περάσει
όλοι οι μαθητές" λύνονται με αναζήτηση;
 Ναι, στην ουσία αναζητώ αν υπάρχει κάποιος που δεν
πέρασε.

455 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Χρησιμότητα της σημαίας


 Ερωτήματα του τύπου "Να εξετάσετε αν έχουν περάσει
όλοι οι μαθητές" λύνονται με αναζήτηση;
 Ναι, στην ουσία αναζητώ αν υπάρχει κάποιος που δεν
πέρασε.
!1η προσέγγιση
βρέθηκε <- ΨΕΥΔΗΣ !κάποιος που δεν πέρασε
i <- 1
ΟΣΟ i <= Ν ΚΑΙ βρέθηκε = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ Βαθμοί[i] < 9.5 ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Πέρασαν όλοι'
ΤΕΛΟΣ_ΑΝ
!2η προσέγγιση
πέρασαν <- ΑΛΗΘΗΣ !πέρασαν όλοι
i <- 1
ΟΣΟ i <= Ν ΚΑΙ πέρασαν = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ Βαθμοί[i] < 9.5 ΤΟΤΕ
πέρασαν <- ΨΕΥΔΗΣ
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ πέρασαν = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Πέρασαν όλοι'
ΤΕΛΟΣ_ΑΝ
456 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Σειριακή αναζήτηση σε ταξινομημένο πίνακα


457 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Σειριακή αναζήτηση σε ταξινομημένο πίνακα


ΔΙΑΒΑΣΕ key
done <- ΨΕΥΔΗΣ
θέση <- 0
i <- 1
ΟΣΟ i <= Ν ΚΑΙ (done = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ
ΑΝ Πίνακας[i] = key ΤΟΤΕ
done <- ΑΛΗΘΗΣ
θέση <- i
ΑΛΛΙΩΣ_ΑΝ Πίνακας[i] > key ΤΟΤΕ !σε αύξουσα σειρά
done <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ θέση > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Βρέθηκε στη θέση: ', θέση
ΤΕΛΟΣ_ΑΝ

Αν και θα ήταν προτιμότερο να χρησιμοποιηθεί δυαδική


αναζήτηση

458 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Σειριακή αναζήτηση σε παράλληλους πίνακες


459 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση
Σειριακή αναζήτηση σε παράλληλους πίνακες
ΔΙΑΒΑΣΕ β
θέση <- 0
i <- 1
ΟΣΟ i <= Ν ΚΑΙ θέση = 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ Βαθμοί[i] = β ΤΟΤΕ
θέση <- i
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ θέση > 0 ΤΟΤΕ !Θα μπορούσα να χρησιμοποιήσω το i;
ΓΡΑΨΕ 'Ο βαθμός ', β !Θεωρούμε ότι είναι μοναδικός
ΓΡΑΨΕ ' βρέθηκε στη θέση ', θέση
ΓΡΑΨΕ ' και ανήκει στο μαθητή ', Ονόματα[θέση]
ΤΕΛΟΣ_ΑΝ
460 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Σειριακή αναζήτηση για k εμφανίσεις ενός στοιχείου


461 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Σειριακή αναζήτηση για k εμφανίσεις ενός στοιχείου


ΔΙΑΒΑΣΕ β, k
!Χωρίς σημαία
πλ <- 0
i <- 1
ΟΣΟ i <= Ν ΚΑΙ πλ < k ΕΠΑΝΑΛΑΒΕ
ΑΝ Βαθμοί[i] = β ΤΟΤΕ
πλ <- πλ + 1
ΓΡΑΨΕ Ονόματα[i]
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ β, k
!Με σημαία
done <- ΨΕΥΔΗΣ
πλ <- 0
i <- 1
ΟΣΟ i <= Ν ΚΑΙ done = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
ΑΝ Βαθμοί[i] = β ΤΟΤΕ
πλ <- πλ + 1
ΓΡΑΨΕ Ονόματα[i]
ΤΕΛΟΣ_ΑΝ
ΑΝ πλ = κ ΤΟΤΕ
done <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
462 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Σειριακή αναζήτηση και θέσεις (μη μοναδικές τιμές)


463 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Σειριακή αναζήτηση και θέσεις (μη μοναδικές τιμές)


ΔΙΑΒΑΣΕ β
πλ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ Βαθμοί[i] = β ΤΟΤΕ
πλ <- πλ + 1
Θέσεις[πλ] <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Ο βαθμός ', β, ' βρέθηκε για τους μαθητές:'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλ
ΓΡΑΨΕ 'α/α: ', Θέσεις[i], ', όνομα: ', Ονόματα[Θέσεις[i]]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
464 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

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

465 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Άσκηση 1
Να γραφεί πρόγραμμα το οποίο να διαβάζει τα ονόματα 100
εταιρειών, τις περσινές ετήσιες εισπράξεις και τις φετινές ετήσιες
εισπράξεις τους και να τα αποθηκεύει σε κατάλληλους πίνακες.
Στη συνέχεια να εμφανίζει τα ονόματα των εταιρειών εκείνων
που οι ετήσιες φετινές εισπράξεις ξεπέρασαν το μέσο όρο των
περσινών.
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ ΟΝ[i], ΦΕΤ[i], ΠΕΡ[i]
Σ <- Σ + ΠΕΡ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ <- Σ / 100
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΑΝ ΦΕΤ[i] > ΜΟ ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
466 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

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

467 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Άσκηση 2
Να γραφεί πρόγραμμα το οποίο να διαβάζει τα ονόματα, τις
χώρες και τις επιδόσεις (σε μέτρα) 50 αθλητών στο αγώνισμα
"άλμα εις μήκος" και να τα αποθηκεύει σε κατάλληλους πίνακες.
Στη συνέχεια, αφού διαβάζει το ολυμπιακό ρεκόρ του
αγωνίσματος, να ελέγχει αν υπάρχει κάποιος αθλητής που το
κατέρριψε (αν υπάρχει θεωρείστε πως είναι μοναδικός) και να
εμφανίζει τη χώρα του. Αν δεν υπάρχει τέτοιος αθλητής, να
εμφανίζει το πλήθος και τα ονόματα των αθλητών που το
πλησίασαν κατά (μέχρι και) 20 εκατοστά.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ ΕΠΙΔ[i], ΟΝ[i], ΧΩΡΑ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ ρεκόρ
βρέθηκε <- ΨΕΥΔΗΣ
θέση <- 0
i <- 1
ΟΣΟ i <= 50 ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ ΕΠΙΔ[i] > ρεκόρ ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
θέση <- i
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ ΧΩΡΑ[θέση]
ΑΛΛΙΩΣ
πλ <- 0
ΑΝ Α_Τ(ΕΠΙΔ[i] - ρεκόρ) <= 0.2 ΤΟΤΕ
πλ <- πλ + 1
ΓΡΑΨΕ ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ πλ
ΤΕΛΟΣ_ΑΝ
468 / 680
3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

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

469 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Άσκηση 3
Να γραφεί πρόγραμμα το οποίο να διαβάζει τα ονόματα και τις
οφειλές 1000 φορολογούμενων και να τα αποθηκεύει σε
κατάλληλους πίνακες. Στη συνέχεια, το πρόγραμμα να εξετάζει
αν όλοι οι φορολογούμενοι έχουν εξοφλήσει τις οφειλές τους
(μηδενικές οφειλές) και να εμφανίζει κατάλληλο μήνυμα. Αν όχι
να εμφανίζει τα ονόματα των φορολογούμενων με τις
μεγαλύτερες οφειλές.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1000
ΔΙΑΒΑΣΕ ΟΝ[i], ΟΦ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
βρέθηκε <- ΨΕΥΔΗΣ
θέση <- 0
i <- 1
ΟΣΟ i <= 1000 ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ ΟΦ[i] > 0 ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΨΕΥΔΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Όλοι οι φορολογούμενοι έχουν εξοφλήσει τις οφειλές τους'
ΑΛΛΙΩΣ
max <- ΟΦ[1]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 1000
ΑΝ ΟΦ[i] > max ΤΟΤΕ
max <- ΟΦ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1000
ΑΝ ΟΦ[i] = max ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
470 / 680

3.6 Αναζήτηση
Σειριακή ή γραμμική αναζήτηση

Παραδείγματα (Θέματα Πανελλαδικών)


Συμπλήρωσης κενών
 2011 επάν. / Θέμα Α5 (Λύσεις)
o Αναζήτηση με πολλαπλές εμφανίσεις, σε
ταξινομημένο πίνακα
 2013 επάν. / Θέμα Α3 (Λύσεις)
o Αναζήτηση πίνακα μέσα σε πίνακα

o Δύσκολο!

 2019 / Θέμα Β1 (Λύσεις)


o Αναζήτηση για 3 στοιχεία

471 / 680

3.6 Αναζήτηση
Δυαδική αναζήτηση

 Αποτελεσματικότερη από την σειριακή


o χρειάζεται πολύ λιγότερο χρόνο εκτέλεσης (κάτω από
το μισό χρόνο)
 Απαραίτητη προϋπόθεση, ο πίνακας να είναι
ταξινομημένος.
472 / 680

3.6 Αναζήτηση
Δυαδική αναζήτηση

Αλγόριθμος
 Ορίζουμε τα δύο άκρα του πίνακα, ως τα άκρα μεταξύ των
οποίων θα γίνει η αναζήτηση.
 Υπολογίζουμε τη θέση του μεσαίου στοιχείου, βάσει των
δύο άκρων.
 Συγκρίνουμε το στοιχείο αυτό με το ζητούμενο
o Αν το ζητούμενο στοιχείο είναι μεγαλύτερο από αυτό
που βρίσκεται στη μεσαία θέση, τότε μεταφέρουμε το
αριστερό/κάτω άκρο μία θέση μέτα τη μέση (δηλαδή η
αναζήτηση συνεχίζει μόνο στο 2ο μισό του πίνακα).
o Διαφορετικά, αν το στοιχείο είναι μικρότερο, τότε
μεταφέρουμε το δεξί/πάνω άκρο μία θέση κάτω από
τη μέση (δηλαδή ψάχνουμε μόνο στο 1ο μισό του
πίνακα).
o Αλλιώς, το ζητούμενο στοιχείο βρίσκεται τη μεσαία
θέση, άρα βρέθηκε.
 Τα προηγούμενα βήματα επαναλαμβάνονται μέχρι να
βρούμε το ζητούμενο στοιχείο ή όταν το κάτω άκρο
ξεπεράσει το άνω, οπότε και συμπεραίνουμε ότι το
ζητούμενο στοιχείο δεν υπάρχει.
 Η παραπάνω διεργασία στηρίζεται στο ότι ο πίνακας είναι
ταξινομημένος κατ΄ αύξουσα σειρά.

Binary and Linear Search Visualization

473 / 680

3.6 Αναζήτηση
Δυαδική αναζήτηση
ΔΙΑΒΑΣΕ X
ΠΛ <- 0
ΑΡ <- 1
ΔΕ <- 12
Β <- ΨΕΥΔΗΣ
ΟΣΟ Β = ΨΕΥΔΗΣ ΚΑΙ ΑΡ <= ΔΕ ΕΠΑΝΑΛΑΒΕ
Μ <- (ΑΡ + ΔΕ) DIV 2
ΑΝ Α[Μ] = X ΤΟΤΕ
Β <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ_ΑΝ Α[Μ] < Χ ΤΟΤΕ
ΑΡ <- Μ + 1
ΑΛΛΙΩΣ
ΔΕ <- Μ - 1
ΤΕΛΟΣ_ΑΝ
ΠΛ <- ΠΛ + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Β = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ Μ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'ΔΕΝ ΒΡΕΘΗΚΕ', ΠΛ
ΤΕΛΟΣ_ΑΝ

Πανελλαδικές Εξετάσεις ΑΕΠΠ 2016, Παλαιό Σύστημα, Θέμα Β1 (μετατροπή σε ΓΛΩΣΣΑ)

474 / 680

3.6 Αναζήτηση
Δυαδική αναζήτηση
ΔΙΑΒΑΣΕ Χ
low <- 1
high <- 7
found <- ΨΕΥΔΗΣ
ΟΣΟ low <= high ΚΑΙ found = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
mid <- (low+high) DIV 2
ΓΡΑΨΕ ΠΙΝ[mid]
ΑΝ ΠΙΝ[mid] < Χ ΤΟΤΕ
low <- mid+1
ΑΛΛΙΩΣ_ΑΝ ΠΙΝ[mid] > Χ ΤΟΤΕ
high <- mid-1
ΑΛΛΙΩΣ
found <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Πανελλαδικές Εξετάσεις ΑΕΠΠ 2016, Νέο Σύστημα, Θέμα Α5 (μετατροπή σε ΓΛΩΣΣΑ)

475 / 680

3.6 Αναζήτηση
Δυαδική αναζήτηση
ΠΡΟΓΡΑΜΜΑ Δυαδική_Αναζήτηση1
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[100], KEY, τέλος, αρχ, μέση, i
ΛΟΓΙΚΕΣ: δεικτης
ΑΡΧΗ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε αριθμό για αναζήτηση στον πίνακα Α.'
ΔΙΑΒΑΣΕ KEY
αρχ <- 1
τέλος <- 100
δεικτης <- ΨΕΥΔΗΣ
ΟΣΟ αρχ <= τέλος ΚΑΙ δεικτης = ΨΕΥΔΗΣ ΕΠΑΝΑΛΑΒΕ
μέση <- (αρχ + τέλος) div 2
ΑΝ μέση >= 1 ΚΑΙ μέση <= 100 ΤΟΤΕ
ΑΝ KEY < Α[μέση] ΤΟΤΕ
τέλος <- μέση - 1 !φθίνουσα: αρχ <- μέση + 1
ΑΛΛΙΩΣ_ΑΝ KEY > Α[μέση] ΤΟΤΕ
αρχ <- μέση + 1 !φθίνουσα: τέλος <- μέση - 1
ΑΛΛΙΩΣ
δεικτης <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ δεικτης = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Βρέθηκε στη θέση ', μέση
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δε βρέθηκε'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Δυαδική_Αναζήτηση1

ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3.2, σελ.75

476 / 680

3.6 Αναζήτηση
Δυαδική αναζήτηση
ΠΡΟΓΡΑΜΜΑ δυαδική_αναζήτηση
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α[20], Left, Right, M, k, S, i
ΛΟΓΙΚΕΣ: f
ΑΡΧΗ
ΓΡΑΨΕ 'Οι αριθμοί πρέπει να είναι ταξινομημένοι κατά αύξουσα τάξη'
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΓΡΑΨΕ 'Δώσε το ', i, ' στοιχείο του πίνακα: '
ΔΙΑΒΑΣΕ Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δωσε τιμή για αναζήτηση: '
ΔΙΑΒΑΣΕ S
Left <- 1
Right <- 20
k <- 0
f <- ΨΕΥΔΗΣ
ΟΣΟ (Left <= Right) ΚΑΙ (f = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ
M <- (Left + Right) DIV 2
ΑΝ Α[M] = S ΤΟΤΕ
k <- M
f <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ
ΑΝ Α[M] < S ΤΟΤΕ
Left <- M + 1
ΑΛΛΙΩΣ
Right <- M - 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ f = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Το στοιχείο, ', S, ' υπάρχει στη θέση: ', M
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Το στοιχείο, ', S, ' δεν υπάρχει στον πίνακα'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ δυαδική_αναζήτηση

Διαχείριση διδακτέας-εξεταστέας ύλης της Πληροφορικής της Γ΄ τάξης … (143895/Δ2/17-


09-2019), σελ.16

477 / 680

3.6 Αναζήτηση
Δυαδική αναζήτηση

Παραδείγματα (Θέματα Πανελλαδικών)

 2016 (Παλαιό Σύστημα) / Θέμα Β1


o Πίνακας Τιμών / Δυαδική αναζήτηση

 2016 (Νέο Σύστημα) / Θέμα Α5


o Τι θα εμφανιστεί; / Δυαδική αναζήτηση

478 / 680

3.7 Ταξινόμηση
Η τακτοποίηση των κόμβων μίας δομής με μία ιδιαίτερη σειρά
είναι μία πολύ σημαντική λειτουργία που ονομάζεται ταξινόμηση
(sorting) ή διάταξη (ordering). Συνήθως η σειρά αυτή είναι η
αύξουσα τάξη (ascending sequence) της τιμής των μεγεθών προς
ταξινόμηση.

… σκοπός της ταξινόμησης είναι να διευκολυνθεί στη συνέχεια η


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

ΑΕΠΠ - Βιβλίο Μαθητή, §3.7, σελ.65

479 / 680

3.7 Ταξινόμηση
Δοθέντων των στοιχείων a1, a2, … , an η ταξινόμηση συνίσταται
στη μετάθεση (permutation) της θέσης των στοιχείων, ώστε να
τοποθετηθούν σε μία σειρά ak1, ak2, … , akn έτσι ώστε, δοθείσης
μίας συνάρτησης διάταξης (ordering function), f, να ισχύει:

f(ak1) ≤ f(ak2) ≤ … ≤ f(akn)

… η προηγούμενη συνάρτηση διάταξης μπορεί να τροποποιηθεί,


ώστε να καλύπτει και την περίπτωση που η ταξινόμηση γίνεται
με φθίνουσα τάξη (descending sequence) μεγέθους.

ΑΕΠΠ - Βιβλίο Μαθητή, §3.7, σελ.65

480 / 680

3.7 Ταξινόμηση
Για την ταξινόμηση δεδομένων έχουν εκπονηθεί πάρα πολλοί
αλγόριθμοι. Άλλοι σχετικά απλοί αλγόριθμοι είναι η ταξινόμηση
με επιλογή και η ταξινόμηση με παρεμβολή. Ο πιο γρήγορος
αλγόριθμος ταξινόμησης είναι η "γρήγορη ταξινόμηση"
(quicksort). Η ταξινόμηση φυσαλίδας είναι ο πιο απλός και
ταυτόχρονα ο πιο αργός αλγόριθμος ταξινόμησης.

ΑΕΠΠ - Βιβλίο Μαθητή, §3.7, σελ.67

481 / 680

3.7 Ταξινόμηση
 Sorting Algorithm Animations | Toptal
 VisuAlgo - Sorting (Bubble, Selection, Insertion, Merge,
Quick, Counting, Radix)
 Οπτικοποίηση Αλγορίθμων Πινάκων

482 / 680

3.7 Ταξινόμηση
Δομές Δεδομένων Δευτερεύουσας Μνήμης

Σε μεγάλες πρακτικές εμπορικές/επιστημονικές εφαρμογές, το


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

483 / 680

3.7 Ταξινόμηση
Δομές Δεδομένων Δευτερεύουσας Μνήμης

Για παράδειγμα, έστω η εγγραφή ενός μαθητή με πεδία: Αριθμός


Μητρώου, Ονοματεπώνυμο, Έτος Γέννησης, Τάξη, Τμήμα. Το
πεδίο Αριθμός Μητρώου ταυτοποιεί την εγγραφή και ονομάζεται
πρωτεύον κλειδί (primary key) ή απλά κλειδί. Το πεδίο
Ονοματεπώνυμο επίσης ταυτοποιεί την εγγραφή και γι' αυτό
αποκαλείται δευτερεύον κλειδί (secondary keys), αν υπάρχει
πρωτεύον κλειδί. Το πρόβλημα της αναζήτησης (searching) μίας
εγγραφής με βάση την τιμή του πρωτεύοντος ή ενός
δευτερεύοντος κλειδιού σε αρχεία είναι ιδιαίτερα ενδιαφέρον, αν
ληφθεί υπ' όψη η μεγάλη ποικιλία των χαρακτηριστικών τόσο
της δομής (για παράδειγμα, στατική ή δυναμική, τρόπος
οργάνωσης, μέσο αποθήκευσης κ.λπ.), του τύπου των δεδομένων
(για παράδειγμα, ακέραιοι, κείμενο, χαρτογραφικά δεδομένα,
χρονοσειρές κ.λπ.), όσο και της αναζήτησης (δηλαδή, με βάση το
πρωτεύον ή το δευτερεύον κλειδί κ.λπ.).

484 / 680

3.7 Ταξινόμηση
Ευθείας ανταλλαγής / Φυσαλίδας (Bubblesort)
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν !Προσοχή: από 2
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1 !Προσοχή: μέχρι i, με βήμα -1
ΑΝ Πίνακας[j-1] > Πίνακας[j] ΤΟΤΕ !Για φθίνουσα: < (αντί για >)
Προσωρινή <- Πίνακας[j-1] !Αντιμετάθεση:
Πίνακας[j-1] <- Πίνακας[j] ! Πίνακας[j-1] ↔ Πίνακας[j]
Πίνακας[j] <- Προσωρινή
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δες επίσης: ΑΕΠΠ - Βιβλίο Μαθητή, §3.7, σελ.67

485 / 680

3.7 Ταξινόμηση
Ευθείας ανταλλαγής / Φυσαλίδας (Bubblesort)

"Έξυπνη" Φυσαλίδα (ΟΣΟ)


flag <- ΑΛΗΘΗΣ !1η αρχικοποίηση
i <- 2 !ΓΙΑ: ΑΠΟ 2
ΟΣΟ i <= Ν ΚΑΙ flag = ΑΛΗΘΗΣ ΕΠΑΝΑΛΑΒΕ !ΓΙΑ: ΜΕΧΡΙ Ν
flag <- ΨΕΥΔΗΣ !2η αρχικοποίηση
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ Πίνακας[j-1] > Πίνακας[j] ΤΟΤΕ
Προσωρινή <- Πίνακας[j-1]
Πίνακας[j-1] <- Πίνακας[j]
Πίνακας[j] <- Προσωρινή
flag <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- i + 1 !ΓΙΑ: ΜΕ_ΒΗΜΑ 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δες επίσης: ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3.1, σελ.72

486 / 680

3.7 Ταξινόμηση
Ευθείας ανταλλαγής / Φυσαλίδας (Bubblesort)

"Έξυπνη" Φυσαλίδα (ΜΕΧΡΙΣ_ΟΤΟΥ)


i <- 2
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
έγινε_αντιμετάθεση <- ΨΕΥΔΗΣ !Μία αρχικοποίηση της σημαίας
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ Πίνακας[j-1] > Πίνακας[j] ΤΟΤΕ
Προσωρινή <- Πίνακας[j-1]
Πίνακας[j-1] <- Πίνακας[j]
Πίνακας[j] <- Προσωρινή
έγινε_αντιμετάθεση <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- i + 1
ΜΕΧΡΙΣ_ΟΤΟΥ i > Ν Η ΟΧΙ έγινε_αντιμετάθεση

ΑΕΠΠ - Τετράδιο Μαθητή, §3.3, ΔΤ 2, σελ.31

487 / 680

3.7 Ταξινόμηση
Ευθείας ανταλλαγής / Φυσαλίδας (Bubblesort)

Παραδείγματα (Θέματα Πανελλαδικών)


 2018 / Θέμα Β1 (Λύσεις)
o Παραλλαγή της ταξινόμησης φυσαλίδας /
Συμπλήρωση κενών

488 / 680

3.7 Ταξινόμηση
Με επιλογή / Επιλογής (Selection sort)

Αλγόριθμος
1. Επιλογή του ελάχιστου στοιχείου
2. Ανταλλαγή του ελάχιστου με το πρώτο στοιχείο
3. Επανάληψη των βημάτων 1 και 2 για τα υπόλοιπα στοιχεία
του πίνακα

489 / 680

3.7 Ταξινόμηση
Με επιλογή / Επιλογής (Selection sort)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν-1
θέση <- i !Η θέση του ελάχιστου στοιχείου
ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ N !Ελέγχω τα υπόλοιπα για
μικρότερο
ΑΝ Πίνακας[j] < Πίνακας[θέση] ΤΟΤΕ
θέση <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αντιμετάθεση Πίνακας[θέση] ↔ Πίνακας[i]
προσωρινή <- Πίνακας[θέση]
Πίνακας[θέση] <- Πίνακας[i]
Πίνακας[i] <- προσωρινή
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δες επίσης: ΑΕΠΠ - Τετράδιο Μαθητή, §4.2, Παράδειγμα 1, σελ.36

490 / 680

3.7 Ταξινόμηση
Με επιλογή / Επιλογής (Selection sort)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν-1
θέση <- i !Η θέση του ελάχιστου στοιχείου
ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ N !Ελέγχω τα υπόλοιπα για
μικρότερο
ΑΝ Πίνακας[j] < Πίνακας[θέση] ΤΟΤΕ
θέση <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αντιμετάθεση Πίνακας[θέση] ↔ Πίνακας[i]
προσωρινή <- Πίνακας[θέση]
Πίνακας[θέση] <- Πίνακας[i]
Πίνακας[i] <- προσωρινή
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Δες επίσης: ΑΕΠΠ - Τετράδιο Μαθητή, §4.2, Παράδειγμα 1, σελ.36

Αν θέλω ταξινόμηση σε φθίνουσα σειρά;

491 / 680

3.7 Ταξινόμηση
Με επιλογή / Επιλογής (Selection sort)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν-1
θέση <- i !Η θέση του ελάχιστου στοιχείου
min <- Πίνακας[i]
ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ N
ΑΝ min > Πίνακας[j] ΤΟΤΕ !Για φθίνουσα;
min <- Πίνακας[j]
θέση <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!min <- Πίνακας[θέση] !Δε χρειάζεται, ήδη: min =
Πίνακας[θέση]
Πίνακας[θέση] <- Πίνακας[i]
Πίνακας[i] <- min
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Διαχείριση διδακτέας-εξεταστέας ύλης της Πληροφορικής της Γ΄ τάξης … (143895/Δ2/17-


09-2019), σελ.19-20

492 / 680

3.7 Ταξινόμηση
Με επιλογή / Επιλογής (Selection sort)

Βελτιωμένη έκδοση 1
Έλεγχος αν χρειάζεται η αντιμετάθεση και χρήση μόνο θέσης
(χωρίς μεταβλητή min)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν-1
θέση <- i
ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ N
ΑΝ Πίνακας[j] < Πίνακας[θέση] ΤΟΤΕ
θέση <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ θέση <> i ΤΟΤΕ !Έλεγχος για την ανάγκη
αντιμετάθεσης
προσωρινή <- Πίνακας[θέση]
Πίνακας[θέση] <- Πίνακας[i]
Πίνακας[i] <- προσωρινή
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
493 / 680

3.7 Ταξινόμηση
Με επιλογή / Επιλογής (Selection sort)

Βελτιωμένη έκδοση 2
Διακοπή όταν ο πίνακας έχει ήδη ταξινομηθεί, πριν
ολοκληρωθούν όλα τα "περάσματα"
i <- 1
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
είναι_ταξινομημένος <- ΑΛΗΘΗΣ
min <- Πίνακας[i]
θέση <- i
ΓΙΑ j ΑΠΟ i + 1 ΜΕΧΡΙ Ν
ΑΝ Πίνακας[j] < min ΤΟΤΕ
min <- Πίνακας[j]
θέση <- j
ΤΕΛΟΣ_ΑΝ
ΑΝ Πίνακας[j] < Πίνακας[j-1] ΤΟΤΕ
είναι_ταξινομημένος <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Πίνακας[θέση] <- Πίνακας[i]
Πίνακας[i] <- min
i <- i + 1
ΜΕΧΡΙΣ_ΟΤΟΥ i > Ν - 1 Η είναι_ταξινομημένος = ΑΛΗΘΗΣ

Εξεζητημένη προσέγγιση

494 / 680

3.7 Ταξινόμηση
Με επιλογή / Επιλογής (Selection sort)

Παραδείγματα (Θέματα Πανελλαδικών)


 2014 / Θέμα 1ο - Β1 (Λύσεις)
o Συμπλήρωση κενών

495 / 680

3.7 Ταξινόμηση
Ευθείας εισαγωγής / Παρεμβολής (Insertion sort)

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

ΑΕΠΠ - Τετράδιο Μαθητή, §3.3, ΔΣ 3, σελ.32

496 / 680

3.7 Ταξινόμηση
Ευθείας εισαγωγής / Παρεμβολής (Insertion sort)

Με διαδοχικές αντιμεταθέσεις
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ i ΜΕΧΡΙ 2 ΜΕ_ΒΗΜΑ -1
ΑΝ Πίνακας[j-1] > Πίνακας[j] ΤΟΤΕ !< για φθίνουσα
προσωρινή <- Πίνακας[j-1]
Πίνακας[j-1] <- Πίνακας[j]
Πίνακας[j] <- προσωρινή
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Ο παραπάνω αλγόριθμος δεν είναι η καλύτερη εκδοχή της


"Ταξινόμησης ευθείας εισαγωγής". Παρατίθεται σε αυτή τη
μορφή μόνο για τη σύγκριση με τον αλγόριθμο της "Ταξινόμησης
ευθείας ανταλλαγής (Φυσαλίδας)".

497 / 680

3.7 Ταξινόμηση
Ευθείας εισαγωγής / Παρεμβολής (Insertion sort)

Βελτιωμένη Έκδοση 1
Με διαδοχικές αντιμεταθέσεις και διακοπή της εσωτερικής
εντολής επανάληψης
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
stop <- ΨΕΥΔΗΣ
j <- i !ΓΙΑ: ΑΠΟ i
ΟΣΟ j >= 2 ΚΑΙ ΟΧΙ stop ΕΠΑΝΑΛΑΒΕ !ΓΙΑ: ΜΕΧΡΙ 2
ΑΝ Πίνακας[j-1] > Πίνακας[j] ΤΟΤΕ
προσωρινή <- Πίνακας[j-1]
Πίνακας[j-1] <- Πίνακας[j]
Πίνακας[j] <- προσωρινή
ΑΛΛΙΩΣ
stop <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
j <- j - 1 !ΓΙΑ: ΜΕ_ΒΗΜΑ -1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
498 / 680

3.7 Ταξινόμηση
Ευθείας εισαγωγής / Παρεμβολής (Insertion sort)

Βελτιωμένη Έκδοση 2
Με διαδοχικές αντιμεταθέσεις και διακοπή της εσωτερικής
εντολής επανάληψης
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
έγινε_αντιμετάθεση <- ΨΕΥΔΗΣ
j <- i !ΓΙΑ: ΑΠΟ i
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Πίνακας[j-1] > Πίνακας[j] ΤΟΤΕ
προσωρινή <- Πίνακας[j-1]
Πίνακας[j-1] <- Πίνακας[j]
Πίνακας[j] <- προσωρινή
έγινε_αντιμετάθεση <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
j <- j - 1 !ΓΙΑ: ΜΕ_ΒΗΜΑ -1
ΜΕΧΡΙΣ_ΟΤΟΥ j = 1 Η ΟΧΙ έγινε_αντιμετάθεση !ΓΙΑ: ΜΕΧΡΙ 2 (⇔ j <
2)
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
499 / 680

3.7 Ταξινόμηση
Ευθείας εισαγωγής / Παρεμβολής (Insertion sort)

Βελτιωμένη Έκδοση 3
Με "ολίσθηση" και διακοπή της εσωτερικής εντολής επανάληψης
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
προσωρινή <- Πίνακας[i] !Το στοιχείο προς τοποθέτηση
stop <- ΨΕΥΔΗΣ
j <- i !ΓΙΑ: ΑΠΟ i
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Πίνακας[j-1] > προσωρινή ΤΟΤΕ
Πίνακας[j] <- Πίνακας[j-1] !Ολίσθηση προς τα δεξιά
j <- j - 1 !ΓΙΑ: ΜΕ_ΒΗΜΑ -1
ΑΛΛΙΩΣ
stop <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ j = 1 Η stop !ΓΙΑ: ΜΕΧΡΙ 2 (⇔ j < 2)
ΑΝ j <> i ΤΟΤΕ
Πίνακας[j] <- προσωρινή
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
500 / 680

3.7 Ταξινόμηση
Ευθείας εισαγωγής / Παρεμβολής (Insertion sort)

Βελτιωμένη Έκδοση 3
Με "ολίσθηση" και διακοπή της εσωτερικής εντολής επανάληψης
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
προσωρινή <- Πίνακας[i] !Το στοιχείο προς τοποθέτηση
stop <- ΨΕΥΔΗΣ
j <- i !ΓΙΑ: ΑΠΟ i
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ Πίνακας[j-1] > προσωρινή ΤΟΤΕ
Πίνακας[j] <- Πίνακας[j-1] !Ολίσθηση προς τα δεξιά
j <- j - 1 !ΓΙΑ: ΜΕ_ΒΗΜΑ -1
ΑΛΛΙΩΣ
stop <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ j = 1 Η stop !ΓΙΑ: ΜΕΧΡΙ 2 (⇔ j < 2)
ΑΝ j <> i ΤΟΤΕ
Πίνακας[j] <- προσωρινή
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Μπορεί να βελτιωθεί ώστε σταματήσει νωρίτερα, όπως η


ταξινόμηση φυσαλίδας;

501 / 680

3.7 Ταξινόμηση
Αντιστροφή Ταξινόμησης
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ (Ν DIV 2)
T <- Πίνακας[i]
Πίνακας[i] <- Πίνακας[Ν+1-i]
Πίνακας[Ν+1-i] <- T
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
502 / 680

3.7 Ταξινόμηση
Αντιστροφή Ταξινόμησης
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ (Ν DIV 2)
T <- Πίνακας[i]
Πίνακας[i] <- Πίνακας[Ν+1-i]
Πίνακας[Ν+1-i] <- T
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 Γιατί όχι ΜΕΧΡΙ Ν;
 Επιτρέπεται το N/2 στη θέση του Ν DIV 2;
 Παίζει ρόλο αν ο πίνακας έχει περιττό αριθμό στοιχείων ή
όχι;

503 / 680

3.7 Ταξινόμηση
Συγχώνευση Ταξινομημένων Πινάκων
i <- 1 !Δείκτης για τον πίνακα Α
j <- 1 !Δείκτης για τον πίνακα Β
k <- 1 !Δείκτης για τον τελικό πίνακα Γ
ΟΣΟ i <= Μ ΚΑΙ j <= Ν ΕΠΑΝΑΛΑΒΕ
ΑΝ Α[i] < Β[j] ΤΟΤΕ !Το μικρότερα βρέθηκε στον Α…
Γ[k] <- Α[i] !… τοποθέτησέ το στον Γ…
i <- i + 1 !… και αύξησε τον δείκτη του Α
ΑΛΛΙΩΣ !Το μικρότερα βρέθηκε στον Β…
Γ[k] <- Β[j] !… τοποθέτησέ το στον Γ…
j <- j+1 !… και αύξησε τον δείκτη του Β
ΤΕΛΟΣ_ΑΝ
k <- k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ i > Μ ΤΟΤΕ !«Εξαντλήθηκαν» τα στοιχεία του
πιν. Α
ΓΙΑ l ΑΠΟ j ΜΕΧΡΙ Ν !Μετάφερε τα υπόλοιπα στοιχεία του
πιν. Β στον Γ
Γ[k] <- Β[l]
k <- k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ !(j > Ν) «Εξαντλήθηκαν» τα στοιχεία
του πιν. Β
ΓΙΑ l ΑΠΟ i ΜΕΧΡΙ Μ !Μετάφερε τα υπόλοιπα στοιχεία του
πιν. Α στον Γ
Γ[k] <- Α[l]
k <- k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
Δες επίσης: ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3.3, σελ.77

504 / 680

3.7 Ταξινόμηση
Συγχώνευση Ταξινομημένων Πινάκων

Σε μία ΓΙΑ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ (10 + 15)
από_α <- ΨΕΥΔΗΣ
ΑΝ k <= 10 ΤΟΤΕ
ΑΝ l > 15 ΤΟΤΕ !Θα μπορούσαν να συνδυαστούν σε μία συνθήκη;
από_α <- ΑΛΗΘΗΣ
ΑΛΛΙΩΣ_ΑΝ Α[k] <= Β[l] ΤΟΤΕ
από_α <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΑΝ από_α ΤΟΤΕ !Γιατί όχι: ΑΝ k<=10 ΚΑΙ (l>15 Η Α[k]<=Β[l]) ΤΟΤΕ
Γ[i] <- Α[k]
k <- k + 1
ΑΛΛΙΩΣ
Γ[i] <- Β[l]
l <- l + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
505 / 680

3.7 Ταξινόμηση
Έλεγχος για Ταξινόμηση
είναι <- ΑΛΗΘΗΣ
i <- 2
ΟΣΟ i <= Ν ΚΑΙ είναι ΕΠΑΝΑΛΑΒΕ
ΑΝ Α[i-1] > Α[i] ΤΟΤΕ ! < για φθίνουσα
είναι <- ΨΕΥΔΗΣ
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ είναι ΤΟΤΕ
ΓΡΑΨΕ 'Ο πίνακας Α είναι ταξινομημένος'
ΤΕΛΟΣ_ΑΝ
506 / 680

3.7 Ταξινόμηση
Εισαγωγή στοιχείου σε ταξινομημένο πίνακα
Με εύρεση της θέσης που πρέπει να εισαχθεί το στοιχείο και
ολίσθηση προς τα δεξιά
ΔΙΑΒΑΣΕ x
θ <- 0
i <- 1
ΟΣΟ i <= Ν ΚΑΙ θ = 0 ΕΠΑΝΑΛΑΒΕ !Εύρεση της θέσης εισαγωγής
ΑΝ Α[i] > x ΤΟΤΕ
θ <- i
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ θ <> 0 ΤΟΤΕ
ΓΙΑ i ΑΠΟ Ν - 1 ΜΕΧΡΙ θ ΜΕ_ΒΗΜΑ -1 !Ολίσθηση προς τα δεξιά
Α[i+1] <- Α[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Α[θ] <- x
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Το στοιχείο ', x, ' '
ΓΡΑΨΕ ' είναι μεγαλύτερο από όλα τα στοιχεία του πίνακα'
ΤΕΛΟΣ_ΑΝ
507 / 680

3.7 Ταξινόμηση
Εισαγωγή στοιχείου σε ταξινομημένο πίνακα

Με εύρεση της θέσης που πρέπει να εισαχθεί το στοιχείο και


ολίσθηση προς τα δεξιά
ΔΙΑΒΑΣΕ x
θ <- 0
i <- Ν
stop <- ΨΕΥΔΗΣ
ΟΣΟ i >= 1 ΚΑΙ ΟΧΙ stop ΕΠΑΝΑΛΑΒΕ
ΑΝ Α[i] > x ΤΟΤΕ
ΑΝ i < Ν ΤΟΤΕ !Αν δεν είναι το τελευταίο στοιχείο
Α[i+1] <- Α[i] !Μετακίνησέ το προς τα δεξιά
ΤΕΛΟΣ_ΑΝ
i <- i - 1
ΑΛΛΙΩΣ
stop <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ i < Ν ΤΟΤΕ !Υπάρχει περίπτωση να
Α[i+1] <- x ! μην μπει το στοιχείο στον πίνακα
ΤΕΛΟΣ_ΑΝ
508 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες
Εύρεση k "καλύτερων" τιμών
Χωρίς ισοβαθμίες

509 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση k "καλύτερων" τιμών


Χωρίς ισοβαθμίες
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ΒΑΘ[j-1] < ΒΑΘ[j] ΤΟΤΕ !Σε φθίνουσα
Τ1 <- ΒΑΘ[j-1]
ΒΑΘ[j-1] <- ΒΑΘ[j]
ΒΑΘ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ k !Αν θέλω να άλλαξω το πλήθος, αλλάζω μόνο εδώ
ΓΡΑΨΕ ΒΑΘ[i], ΟΝ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δες επίσης: ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3, Παράδειγμα
2, σελ.80-81

510 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση k "καλύτερων" τιμών


Με ισοβαθμία και διπλό κριτήριο (1η προσέγγιση)

511 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση k "καλύτερων" τιμών


Με ισοβαθμία και διπλό κριτήριο (1η προσέγγιση)
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ΒΑΘ[j-1] < ΒΑΘ[j] Η (ΒΑΘ[j-1] = ΒΑΘ[j] ΚΑΙ ΟΝ[j-1] > ΟΝ[j])
ΤΟΤΕ
Τ1 <- ΒΑΘ[j-1]
ΒΑΘ[j-1] <- ΒΑΘ[j]
ΒΑΘ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ k
ΓΡΑΨΕ ΒΑΘ[i], ΟΝ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
512 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση k "καλύτερων" τιμών


Με ισοβαθμία και διπλό κριτήριο (2η προσέγγιση)

513 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση k "καλύτερων" τιμών


Με ισοβαθμία και διπλό κριτήριο (2η προσέγγιση)
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ΒΑΘ[j-1] < ΒΑΘ[j] ΤΟΤΕ
Τ1 <- ΒΑΘ[j-1]
ΒΑΘ[j-1] <- ΒΑΘ[j]
ΒΑΘ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΑΛΛΙΩΣ_ΑΝ ΒΑΘ[j-1] = ΒΑΘ[j] ΚΑΙ ΟΝ[j-1] > ΟΝ[j] ΤΟΤΕ
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ k
ΓΡΑΨΕ ΒΑΘ[i], ΟΝ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Δες επίσης: ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3, Παράδειγμα
3, σελ.81-82

514 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Μα "απλό κριτήριο" και μία ΓΙΑ ακόμη

515 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Μα "απλό κριτήριο" και μία ΓΙΑ ακόμη
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ΒΑΘ[j-1] < ΒΑΘ[j] ΤΟΤΕ
Τ1 <- ΒΑΘ[j-1]
ΒΑΘ[j-1] <- ΒΑΘ[j]
ΒΑΘ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΑΝ ΒΑΘ[i] = ΒΑΘ[1] ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i], ΒΑΘ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
516 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με "διπλό κριτήριο" και μία ΟΣΟ ακόμη (1η προσέγγιση)

517 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με "διπλό κριτήριο" και μία ΟΣΟ ακόμη (1η προσέγγιση)
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ΒΑΘ[j-1] < ΒΑΘ[j] Η (ΒΑΘ[j-1] = ΒΑΘ[j] ΚΑΙ ΟΝ[j-1] > ΟΝ[j])
ΤΟΤΕ
Τ1 <- ΒΑΘ[j-1]
ΒΑΘ[j-1] <- ΒΑΘ[j]
ΒΑΘ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- 1
ΟΣΟ i <= Ν ΚΑΙ ΒΑΘ[i] = ΒΑΘ[1] ΕΠΑΝΑΛΑΒΕ !Πλήρης αποτίμηση;
ΓΡΑΨΕ ΟΝ[i], ΒΑΘ[i]
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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


κατά την εκτέλεση
518 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με "διπλό κριτήριο" και μία ΟΣΟ ακόμη (2η προσέγγιση)

519 / 680

3.7 Ταξινόμηση
Ταξινόμηση σε παράλληλους πίνακες

Εύρεση μέγιστου/ελάχιστου που μπορεί να


εμφανίζεται πάνω από μία φορές
Με "διπλό κριτήριο" και μία ΟΣΟ ακόμη (2η προσέγγιση)
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ i ΜΕ ΒΗΜΑ -1
ΑΝ ΒΑΘ[j-1] < ΒΑΘ[j] Η (ΒΑΘ[j-1] = ΒΑΘ[j] ΚΑΙ ΟΝ[j-1] > ΟΝ[j])
ΤΟΤΕ
Τ1 <- ΒΑΘ[j-1]
ΒΑΘ[j-1] <- ΒΑΘ[j]
ΒΑΘ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
stop <- ΨΕΥΔΗΣ
i <- 1
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ ΒΑΘ[i] = ΒΑΘ[1] TOTE
ΓΡΑΨΕ ΟΝ[i], ΒΑΘ[i]
i <- i + 1
ΑΛΛΙΩΣ
stop <- ΑΛΗΘΗΣ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ i > N Η stop
520 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 1
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τις
επιδόσεις 100 αθλητών (σε πίνακες ΟΝ, ΕΠΙΔ) και να εμφανίζει τα
ονόματα των 5 καλύτερων αθλητών (θεωρείστε πως δεν
υπάρχουν ισοβαθμίες), σε φθίνουσα σειρά βάσει της επίδοσής
τους.

521 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 1
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τις
επιδόσεις 100 αθλητών (σε πίνακες ΟΝ, ΕΠΙΔ) και να εμφανίζει τα
ονόματα των 5 καλύτερων αθλητών (θεωρείστε πως δεν
υπάρχουν ισοβαθμίες), σε φθίνουσα σειρά βάσει της επίδοσής
τους.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ ΟΝ[i], ΕΠΙΔ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
ΓΙΑ j ΑΠΟ 100 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ ΕΠΙΔ[j-1] < ΕΠΙΔ[j] ΤΟΤΕ !Φθίνουσα
Τ1 <- ΕΠΙΔ[j-1]
ΕΠΙΔ[j-1] <- ΕΠΙΔ[j]
ΕΠΙΔ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 5
ΓΡΑΨΕ ΟΝ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
522 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 2
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τις
βαθμολογίες 28 μαθητών (σε πίνακες ΟΝ, ΒΑΘ) και να εμφανίζει
τα ονόματα των μαθητών με την καλύτερη βαθμολογία,
αλφαβητικά.

523 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 2
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τις
βαθμολογίες 28 μαθητών (σε πίνακες ΟΝ, ΒΑΘ) και να εμφανίζει
τα ονόματα των μαθητών με την καλύτερη βαθμολογία,
αλφαβητικά.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 28
ΔΙΑΒΑΣΕ ΟΝ[i], ΒΑΘ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 28
ΓΙΑ j ΑΠΟ 28 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ ΒΑΘ[j-1] < ΒΑΘ[j] Η
& ΒΑΘ[j-1] = ΒΑΘ[j] ΚΑΙ ΟΝ[j-1] > ΟΝ[j] ΤΟΤΕ
Τ1 <- ΒΑΘ[j-1]
ΒΑΘ[j-1] <- ΒΑΘ[j]
ΒΑΘ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 28
ΑΝ ΒΑΘ[i] = ΒΑΘ[1] ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
524 / 680

3.7 Ταξινόμηση
Ασκήσεις
Άσκηση 3
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα, τη χώρα και
τα εισοδήματα 1.000.000 εταιρειών (σε πίνακες ΟΝ, ΧΩΡ, ΕΙΣ) και
να εμφανίζει τις 10 πιο κερδοφόρες εταιρείες από Ελλάδα
(θεωρείστε πως δεν υπάρχουν ισοβαθμίες), σε φθίνουσα σειρά
βάσει των εισπράξεών τους. Αν οι εταιρείες από Ελλάδα είναι
λιγότερες από 10, να εμφανίζονται όλες.

525 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 3
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα, τη χώρα και
τα εισοδήματα 1.000.000 εταιρειών (σε πίνακες ΟΝ, ΧΩΡ, ΕΙΣ) και
να εμφανίζει τις 10 πιο κερδοφόρες εταιρείες από Ελλάδα
(θεωρείστε πως δεν υπάρχουν ισοβαθμίες), σε φθίνουσα σειρά
βάσει των εισπράξεών τους. Αν οι εταιρείες από Ελλάδα είναι
λιγότερες από 10, να εμφανίζονται όλες.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1000000
ΔΙΑΒΑΣΕ ΟΝ[i], ΧΩΡ[i], ΕΙΣ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 1000000
ΓΙΑ j ΑΠΟ 1000000 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ ΕΙΣ[j-1] < ΕΙΣ[j] ΤΟΤΕ
Τ1 <- ΕΙΣ[j-1]
ΕΙΣ[j-1] <- ΕΙΣ[j]
ΕΙΣ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
Τ2 <- ΧΩΡ[j-1] !Τ2
ΧΩΡ[j-1] <- ΧΩΡ[j]
ΧΩΡ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
πλ <- 0
i <- 1
ΟΣΟ i <= 1000000 ΚΑΙ πλ < 10 ΕΠΑΝΑΛΑΒΕ
ΑΝ ΧΩΡ[i] = 'ΕΛΛΑΔΑ' ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i]
πλ <- πλ + 1
ΤΕΛΟΣ_ΑΝ
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
526 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 4
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τις
επιδόσεις 50 αθλητών (σε πίνακες ΟΝ, ΕΠΙΔ). Στη συνέχεια το
πρόγραμμα να ζητά μια επίδοση (σε μέτρα) και να εμφανίζει τα
ονόματα των αθλητών που ξεπέρασαν την επίδοση αυτή. Η σειρά
εμφάνισης των ονομάτων θα πρέπει να είναι με τις καλύτερες
επιδόσεις πρώτες και σε περίπτωση ισοβαθμίας με τη σειρά που
αγωνίστηκαν οι αθλητές.

527 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 4
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τις
επιδόσεις 50 αθλητών (σε πίνακες ΟΝ, ΕΠΙΔ). Στη συνέχεια το
πρόγραμμα να ζητά μια επίδοση (σε μέτρα) και να εμφανίζει τα
ονόματα των αθλητών που ξεπέρασαν την επίδοση αυτή. Η σειρά
εμφάνισης των ονομάτων θα πρέπει να είναι με τις καλύτερες
επιδόσεις πρώτες και σε περίπτωση ισοβαθμίας με τη σειρά που
αγωνίστηκαν οι αθλητές.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΔΙΑΒΑΣΕ ΟΝ[i], ΕΠΙΔ[i]
ΣΕΙΡΑ[i] <- i
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 50
ΓΙΑ j ΑΠΟ 50 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ ΕΠΙΔ[j-1] < ΕΠΙΔ[j] Η
& ΕΠΙΔ[j-1] = ΕΠΙΔ[j] ΚΑΙ ΣΕΙΡΑ[j-1] > ΣΕΙΡΑ[j] ΤΟΤΕ
Τ1 <- ΕΠΙΔ[j-1]
ΕΠΙΔ[j-1] <- ΕΠΙΔ[j]
ΕΠΙΔ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
Τ3 <- ΣΕΙΡΑ[j-1]
ΣΕΙΡΑ[j-1] <- ΣΕΙΡΑ[j]
ΣΕΙΡΑ[j] <- Τ3
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ επίδοση
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 50
ΑΝ ΕΠΙΔ[i] > επίδοση ΤΟΤΕ
ΓΡΑΨΕ ΟΝ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
528 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 5
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τα μεγέθη
100 αρχείων (σε πίνακες ΟΝ, ΜΕΓ) και να εμφανίζει τα ονόματα
των 10 μεγαλύτερων αρχείων, αλφαβητικά (τα ονόματα είναι
μοναδικά). Σε περίπτωση που στην τελευταία θέση υπάρχουν
περισσότερα από ένα αρχεία με το ίδο μέγεθος, να εμφανίζονται
όλα αυτά τα αρχεία.

529 / 680

3.7 Ταξινόμηση
Ασκήσεις

Άσκηση 5
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα και τα μεγέθη
100 αρχείων (σε πίνακες ΟΝ, ΜΕΓ) και να εμφανίζει τα ονόματα
των 10 μεγαλύτερων αρχείων, αλφαβητικά (τα ονόματα είναι
μοναδικά). Σε περίπτωση που στην τελευταία θέση υπάρχουν
περισσότερα από ένα αρχεία με το ίδο μέγεθος, να εμφανίζονται
όλα αυτά τα αρχεία.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ ΟΝ[i], ΜΕΓ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100
ΓΙΑ j ΑΠΟ 100 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ ΜΕΓ[j-1] < ΜΕΓ[j] Η
& ΜΕΓ[j-1] = ΜΕΓ[j] ΚΑΙ ΟΝ[j-1] > ΟΝ[j] ΤΟΤΕ
Τ1 <- ΜΕΓ[j-1]
ΜΕΓ[j-1] <- ΜΕΓ[j]
ΜΕΓ[j] <- Τ1
Τ2 <- ΟΝ[j-1]
ΟΝ[j-1] <- ΟΝ[j]
ΟΝ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΟΝ[1]
i <- 2
ΟΣΟ i <= 10 Η ΜΕΓ[i] = ΜΕΓ[i-1] ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ ΟΝ[i]
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
530 / 680

9.2 Πότε πρέπει να χρησιμοποιούνται πίνακες


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

Πέρα από τα πλεονεκτήματα που αναφέρθηκαν, υπάρχουν και


δύο μειονεκτήματα από τη χρήση πινάκων.

Οι πίνακες απαιτούν μνήμη. Κάθε πίνακας δεσμεύει από την αρχή


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

Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. … Αυτό


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

Η απόφαση για τη χρήση ή όχι πίνακα για τη διαχείριση των


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

ΑΕΠΠ - Βιβλίο Μαθητή, §9.2, σελ.160

531 / 680

Γενικές Ασκήσεις εμπέδωσης με πίνακες


Παραδείγματα (Θέματα Πανελλαδικών)

Έξοδος Προγράμματος / "Τιμές που θα


εμφανιστούν;"
 2004 / Θέμα 2ο
o Τι θα εμφανιστεί;

 2016 (Παλαιό Σύστημα) / Θέμα Β1


o Πίνακας Τιμών / Δυαδική αναζήτηση

 2016 (Νέο Σύστημα) / Θέμα Α5


o Τι θα εμφανιστεί; / Δυαδική αναζήτηση

Συμπλήρωση Κενών
 2019 / Θέμα Β1 (Λύσεις)
o Παραλλαγή της σειριακής αναζήτησης (για 3 στοιχεία)

 2018 / Θέμα Β1 (Λύσεις)


o Παραλλαγή της ταξινόμησης φυσαλίδας

 2014 / Θέμα 1ο - Β1 (Λύσεις)


o Ταξινόμηση με Επιλογή

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

532 / 680

9.3 Πολυδιάστατοι πίνακες


Εισαγωγή Δεδομένων
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
ΔΙΑΒΑΣΕ Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
ΔΙΑΒΑΣΕ Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Τα δύο τμήματα αυτά κώδικα έχουν το ίδιο αποτέλεσμα;

Δες επίσης: ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.2, σελ.63

533 / 680

9.3 Πολυδιάστατοι πίνακες


Υπολογισμός Αθροίσματος
sum <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ m
row[i] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ n
col[j] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 μέχρι m
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ n
sum <- sum + table[i,j]
row[i] <- row[i] + table[i,j]
col[j] <- col[j] + table[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΑΕΠΠ - Βιβλίο Μαθητή, §3.3, Παράδειγμα 2, σελ.59

534 / 680

9.3 Πολυδιάστατοι πίνακες


Υπολογισμός Αθροίσματος

Ολικά
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
Σ <- Σ + Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
535 / 680

9.3 Πολυδιάστατοι πίνακες


Υπολογισμός Αθροίσματος

Από μία γραμμή / μία στήλη


ΔΙΑΒΑΣΕ αρ_γρ
Σ <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
Σ <- Σ + Π[αρ_γ,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
ΔΙΑΒΑΣΕ αρ_στ
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
Σ <- Σ + Π[i,αρ_στ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
536 / 680

9.3 Πολυδιάστατοι πίνακες


Υπολογισμός Αθροίσματος

Ανά γραμμή
!Μόνο για εμφάνιση
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
Σ <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
Σ <- Σ + Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
Σ[i] <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
Σ[i] <- Σ[i] + Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

537 / 680

9.3 Πολυδιάστατοι πίνακες


Υπολογισμός Αθροίσματος

Ανά στήλη
!Μόνο για εμφάνιση
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
Σ <- Σ + Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
Σ[j] <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
Σ[j] <- Σ[j] + Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

538 / 680

9.3 Πολυδιάστατοι πίνακες


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

Ολικά
min <- Π[1,1]
max <- Π[1,1]
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !ΠΡΟΣΟΧΗ: όχι από 2
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !ΠΡΟΣΟΧΗ: όχι από 2
ΑΝ Π[i,j] < min ΤΟΤΕ
min <- Π[i,j]
ΑΛΛΙΩΣ_ΑΝ Π[i,j] > max ΤΟΤΕ
max <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
539 / 680

9.3 Πολυδιάστατοι πίνακες


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

Από μία γραμμή / μία στήλη


ΔΙΑΒΑΣΕ αρ_γρ
min <- Π[αρ_γρ,1]
max <- Π[αρ_γρ,1]
ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ Ν !j ↔ στήλες
ΑΝ Π[αρ_γρ,j] < min ΤΟΤΕ
min <- Π[αρ_γρ,j]
ΑΛΛΙΩΣ_ΑΝ Π[αρ_γρ,j] > max ΤΟΤΕ
max <- Π[αρ_γρ,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
ΔΙΑΒΑΣΕ αρ_στ
min <- Π[1,αρ_στ]
max <- Π[1,αρ_στ]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν !i ↔ γραμμές
ΑΝ Π[i,αρ_στ] < min ΤΟΤΕ
min <- Π[i,αρ_στ]
ΑΛΛΙΩΣ_ΑΝ Π[i,αρ_στ] > max ΤΟΤΕ
max <- Π[i,αρ_στ]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
540 / 680

9.3 Πολυδιάστατοι πίνακες


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

Ανά γραμμή
!Μόνο για εμφάνιση
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
min <- Π[i,1]
max <- Π[i,1]
ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ Ν !j ↔ στήλες
ΑΝ Π[i,j] < min ΤΟΤΕ
min <- Π[i,j]
ΑΛΛΙΩΣ_ΑΝ Π[i,j] > max ΤΟΤΕ
max <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
min[i] <- Π[i,1]
max[i] <- Π[i,1]
ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ Ν !j ↔ στήλες
ΑΝ Π[i,j] < min[i] ΤΟΤΕ
min[i] <- Π[i,j]
ΑΛΛΙΩΣ_ΑΝ Π[i,j] > max[i] ΤΟΤΕ
max[i] <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

541 / 680
9.3 Πολυδιάστατοι πίνακες
Εύρεση Μέγιστου / Ελάχιστου

Ανά στήλη
!Μόνο για εμφάνιση
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Μ !j ↔ στήλες
min <- Π[1,j]
max <- Π[1,j]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν !i ↔ γραμμές
ΑΝ Π[i,j] < min ΤΟΤΕ
min <- Π[i,j]
ΑΛΛΙΩΣ_ΑΝ Π[i,j] > max ΤΟΤΕ
max <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ min, max
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Μ !j ↔ στήλες
min[j] <- Π[1,j]
max[j] <- Π[1,j]
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ Ν !i ↔ γραμμές
ΑΝ Π[i,j] < min[j] ΤΟΤΕ
min[j] <- Π[i,j]
ΑΛΛΙΩΣ_ΑΝ Π[i,j] > max[j] ΤΟΤΕ
max[j] <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

542 / 680

9.3 Πολυδιάστατοι πίνακες


Μετρητές / Πλήθος

Ολικά
ΔΙΑΒΑΣΕ key
πλήθος <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ Π[i,j] = key ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλήθος
543 / 680
9.3 Πολυδιάστατοι πίνακες
Μετρητές / Πλήθος

Από μία γραμμή / μία στήλη


ΔΙΑΒΑΣΕ αρ_γρ, key
πλήθος <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
ΑΝ Π[αρ_γρ,j] = key ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλήθος
ΔΙΑΒΑΣΕ αρ_στ, key
πλήθος <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
ΑΝ Π[i,αρ_στ] = key ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλήθος
544 / 680

9.3 Πολυδιάστατοι πίνακες


Μετρητές / Πλήθος

Ανά γραμμή
!Μόνο για εμφάνιση
ΔΙΑΒΑΣΕ key
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !i ↔ γραμμές
πλήθος <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
ΑΝ Π[i,j] = key ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλήθος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΔΙΑΒΑΣΕ key
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !i ↔ γραμμές
πλήθος[i] <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
ΑΝ Π[i,j] = key ΤΟΤΕ
πλήθος[i] <- πλήθος[i] + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

545 / 680
9.3 Πολυδιάστατοι πίνακες
Μετρητές / Πλήθος

Ανά στήλη
!Μόνο για εμφάνιση
ΔΙΑΒΑΣΕ key
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
πλήθος <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !i ↔ γραμμές
ΑΝ Π[i,j] = key ΤΟΤΕ
πλήθος <- πλήθος + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλήθος
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΔΙΑΒΑΣΕ key
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
πλήθος[j] <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !i ↔ γραμμές
ΑΝ Π[i,j] = key ΤΟΤΕ
πλήθος[j] <- πλήθος[j] + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

546 / 680

9.3 Πολυδιάστατοι πίνακες


Σειριακή Αναζήτηση

Ολικά
ΔΙΑΒΑΣΕ key
βρέθηκε <- ΨΕΥΔΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ Π[i,j] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
θέση_i <- i
θέση_j <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Βρέθηκε στη θέση ', θέση_i, ',', θέση_j
ΤΕΛΟΣ_ΑΝ
547 / 680
9.3 Πολυδιάστατοι πίνακες
Σειριακή Αναζήτηση

Ολικά (με ΟΣΟ)


ΔΙΑΒΑΣΕ key
βρέθηκε <- ΨΕΥΔΗΣ
i <- 1
ΟΣΟ i<=Μ ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
j <- 1
ΟΣΟ j<=Ν ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ Π[i,j] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
θέση_i <- i
θέση_j <- j
ΑΛΛΙΩΣ
j <- j + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
i <- i + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Βρέθηκε στη θέση ', θέση_i, ',', θέση_j
ΤΕΛΟΣ_ΑΝ
548 / 680

9.3 Πολυδιάστατοι πίνακες


Σειριακή Αναζήτηση

Από μία γραμμή / μία στήλη


ΔΙΑΒΑΣΕ αρ_γρ, key
βρέθηκε <- ΨΕΥΔΗΣ
j <- 1
ΟΣΟ j<=Ν ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ Π[αρ_γρ,j] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
στήλη <- j
ΑΛΛΙΩΣ
j <- j + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Για τη γραμμή ', αρ_γρ
ΓΡΑΨΕ ' βρέθηκε στη ', στήλη
ΤΕΛΟΣ_ΑΝ
ΔΙΑΒΑΣΕ αρ_στ, key
βρέθηκε <- ΨΕΥΔΗΣ
i <- 1
ΟΣΟ i<=Μ ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ Π[i,αρ_στ] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
γραμμή <- i
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Για τη στήλη ', αρ_στ
ΓΡΑΨΕ ' βρέθηκε στη ', γραμμή
ΤΕΛΟΣ_ΑΝ
549 / 680

9.3 Πολυδιάστατοι πίνακες


Σειριακή Αναζήτηση

Ανά γραμμή
!Μόνο για εμφάνιση
ΔΙΑΒΑΣΕ key
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !i ↔ γραμμές
βρέθηκε <- ΨΕΥΔΗΣ
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
ΑΝ Π[i,j] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
στήλη <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Για τη γραμμή ', i
ΓΡΑΨΕ ' βρέθηκε στη ', στήλη
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΔΙΑΒΑΣΕ key
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !i ↔ γραμμές
βρέθηκε[i] <- ΨΕΥΔΗΣ
θέση[i] <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
ΑΝ Π[i,j] = key ΤΟΤΕ
βρέθηκε[i] <- ΑΛΗΘΗΣ
!Σε ποια στήλη j
! βρέθηκε για τη γραμμή i
θέση[i] <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

550 / 680

9.3 Πολυδιάστατοι πίνακες


Σειριακή Αναζήτηση
Ανά στήλη
!Μόνο για εμφάνιση
ΔΙΑΒΑΣΕ key
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !j ↔ στήλες
βρέθηκε <- ΨΕΥΔΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !i ↔ γραμμές
ΑΝ Π[i,j] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
γραμμή <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ
ΓΡΑΨΕ 'Για τη στήλη ', j
ΓΡΑΨΕ ' βρέθηκε στη ', γραμμή
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αποθήκευση σε πίνακα
!για χρήση αργότερα
ΔΙΑΒΑΣΕ key
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !i ↔ γραμμές
βρέθηκε[j] <- ΨΕΥΔΗΣ
θέση[j] <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !j ↔ στήλες
ΑΝ Π[i,j] = key ΤΟΤΕ
βρέθηκε[j] <- ΑΛΗΘΗΣ
!Σε ποια γραμμή i
! βρέθηκε για τη στήλη j
θέση[j] <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

551 / 680

9.3 Πολυδιάστατοι πίνακες


Ασκήσεις

Άσκηση 1
Να γραφεί πρόγραμμα που να διαβάζει και να αποθηκεύει τα
ονόματα 20 μαθητών, σε πίνακα ΟΝ[20], καθώς και τις
βαθμολογίες τους σε 14 μαθήματα, σε πίνακα ΒΑΘ[20,14].
Κατόπιν να υπολογίζει και να εμφανίζει:

1. το μέσο όσο βαθμολογιών ανά μάθημα,


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

552 / 680

9.3 Πολυδιάστατοι πίνακες


Ασκήσεις

Άσκηση 1
Να γραφεί πρόγραμμα που να διαβάζει και να αποθηκεύει τα
ονόματα 20 μαθητών, σε πίνακα ΟΝ[20], καθώς και τις
βαθμολογίες τους σε 14 μαθήματα, σε πίνακα ΒΑΘ[20,14].
Κατόπιν να υπολογίζει και να εμφανίζει:

1. το μέσο όσο βαθμολογιών ανά μάθημα,


2. το όνομα του μαθητή με τα περισσότερα άριστα "20"
(θεωρείστε ότι είναι μοναδικός),
3. το ποσοστό των μαθητών με έστω και μία βαθμολογία κάτω
από τη βάση.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20
ΔΙΑΒΑΣΕ ΟΝ[i]
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 14
ΔΙΑΒΑΣΕ ΒΑΘ[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!α)
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 14 !Για κάθε μάθημα
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 !Για κάθε μαθητή
Σ <- Σ + ΒΑΘ[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ/20
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!β)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 !Για κάθε μαθητή
πλ_20[i] <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 14 !Για κάθε μάθημα
ΑΝ ΒΑΘ[i,j] = 20 ΤΟΤΕ
πλ_20[i] <- πλ_20[i] + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max <- πλ_20[1]
θ_max <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 20 !Για κάθε μαθητή
ΑΝ πλ_20[i] > max ΤΟΤΕ
max <- πλ_20[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΟΝ[θ_max]
!γ)
πλ_μαθ_κάτω <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 20 !Για κάθε μαθητή
j <- 1
βρέθηκε <- ΨΕΥΔΗΣ
ΟΣΟ j<=14 ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ ΒΑΘ[i,j] < 10 ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
πλ_μαθ_κάτω <- πλ_μαθ_κάτω + 1
ΑΛΛΙΩΣ
j <- j + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ πλ_μαθ_κάτω/20
553 / 680

9.3 Πολυδιάστατοι πίνακες


Ασκήσεις

Άσκηση 2
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα 100 παιχτών
του NBA και να τα αποθηκεύει σε πίνακα ΟΝ[100], καθώς και τα
σκορ τους σε 24 παιχνίδια και να τα αποθηκεύει σε πίνακα
ΣΚΟΡ[100,24]. Στη συνέχεια:

1. να υπολογίζει και να εμφανίζει το όνομα του αθλητή με το


μεγαλύτερο συνολικά σκορ,
2. να ζητά από το χρήστη διαδοχικά το όνομα ενός αθλητή
και να το αναζητά στον πίνακα ΟΝ. Αν το όνομα αυτό
υπάρχει να εμφανίζει τον αριθμό του παιχνιδιού στο οποίο
ο παίχτης σημείωσε με το μεγαλύτερό του σκορ (θεωρείστε
ότι είναι μοναδικό), ενώ αν το όνομα δεν υπάρχει να
εμφανίζει κατάλληλο μήνυμα. Η διαδικασία τερματίζει να
δοθεί για όνομα η λέξη 'ΤΕΛΟΣ'.

554 / 680

9.3 Πολυδιάστατοι πίνακες


Ασκήσεις

Άσκηση 2
Να γραφεί πρόγραμμα που να διαβάζει τα ονόματα 100 παιχτών
του NBA και να τα αποθηκεύει σε πίνακα ΟΝ[100], καθώς και τα
σκορ τους σε 24 παιχνίδια και να τα αποθηκεύει σε πίνακα
ΣΚΟΡ[100,24]. Στη συνέχεια:

1. να υπολογίζει και να εμφανίζει το όνομα του αθλητή με το


μεγαλύτερο συνολικά σκορ,
2. να ζητά από το χρήστη διαδοχικά το όνομα ενός αθλητή
και να το αναζητά στον πίνακα ΟΝ. Αν το όνομα αυτό
υπάρχει να εμφανίζει τον αριθμό του παιχνιδιού στο οποίο
ο παίχτης σημείωσε με το μεγαλύτερό του σκορ (θεωρείστε
ότι είναι μοναδικό), ενώ αν το όνομα δεν υπάρχει να
εμφανίζει κατάλληλο μήνυμα. Η διαδικασία τερματίζει να
δοθεί για όνομα η λέξη 'ΤΕΛΟΣ'.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100
ΔΙΑΒΑΣΕ ΟΝ[i]
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 24
ΔΙΑΒΑΣΕ ΣΚΟΡ[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!α)
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 100 !Για κάθε αθλητή
Σ[i] <- 0
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 24 !Για κάθε παιχνίδι
Σ[i] <- Σ[i] + ΣΚΟΡ[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max <- Σ[1]
θ_max <- 1
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 100 !Για κάθε αθλητή
ΑΝ Σ[i] > max ΤΟΤΕ
max <- Σ[i]
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΟΝ[θ_max]
!β)
ΔΙΑΒΑΣΕ key !όνομα παίκτη
ΟΣΟ key <> 'ΤΕΛΟΣ' ΕΠΑΝΑΛΑΒΕ !τιμή φρουρός
i <- 1
βρέθηκε <- ΨΕΥΔΗΣ
θέση_i <- 0 !θέση/αριθμός παίκτη
ΟΣΟ i<=100 ΚΑΙ ΟΧΙ βρέθηκε ΕΠΑΝΑΛΑΒΕ
ΑΝ ON[i] = key ΤΟΤΕ
βρέθηκε <- ΑΛΗΘΗΣ
θέση_i <- i
ΑΛΛΙΩΣ
i <- i + 1
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΝ βρέθηκε ΤΟΤΕ
max <- ΣΚΟΡ[θέση_i,j]
θέση_j <- 1 !θέση/αριθμός παιχνιδιού
ΓΙΑ j ΑΠΟ 2 ΜΕΧΡΙ 24 !Για κάθε παιχνίδι
ΑΝ ΣΚΟΡ[θέση_i,j] > max ΤΟΤΕ
max <- ΣΚΟΡ[θέση_i,j]
θέση_j <- j
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ θέση_j
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Δεν βρέθηκε το όνομα ', key
ΤΕΛΟΣ_ΑΝ
ΔΙΑΒΑΣΕ key !όνομα παίκτη
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
555 / 680

9.3 Πολυδιάστατοι πίνακες


Ασκήσεις

Άσκηση 3
Να γραφεί πρόγραμμα που διαβάζει τα ονόματα 6 ομάδων
μπάσκετ και να τα αποθηκεύει σε πίκανα ΟΜΑΔΑ[6], καθώς και τα
σκορ των 36 μεταξύ τους αγώνων και να τα αποθηκεύει σε
πίνακα ΜΑΤΣ[30,4], ως εξής: στη στήλη 1 αποθηκεύεται ο
αριθμός της γηπεδούχου ομάδας, στήλη 2 ο αριθμός της
φιλοξενούμενης ομάδας, στήλη 3 το σκορ της γηπεδούχου
ομάδας και στήλη 4 το σκορ της φιλοξενούμενης ομάδας. Στη
συνέχεια το πρόγραμμα να υπολογίζει και να εμφανίζει:

1. Πίνακα ΝΙΚΗΤΗΣ[30] με τα ονόματα των νικητών σε κάθε


ματς.
2. Πίνακα ΑΠΟΤΕΛΕΣΜΑΤΑ[6,6] όπου στη θέση (i,j) θα υπάρχει
η τιμή 1, αν στον αγώνα κέρδισε η γηπεδούχος ομάδα i,
διαφορετικά θα υπάρχει η τιμή 2. Στην κύρια διαγώνιο θα
πρέπει να υπάρχει παντού η τιμή 0.
3. Πίνακα ΚΑΤΑΤΑΞΗ[6] με τη βαθμολογία κάθε ομάδας (2
πόντοι για κάθε νίκη, 1 πόντος για ήττα).
4. Το όνομα της γηπεδούχου ομάδας με το μεγαλύτερο σερί
νικών (θεωρείστε ότι είναι μοναδική).
5. Τα ονόματα των τριών πρώτων ομάδων, μαζί με τις
βαθμολογίες τους (σε περίπτωση ισοβαθμία εμφανίζονται
οι ομάδες αλφαβητικά).

556 / 680

9.3 Πολυδιάστατοι πίνακες


Ασκήσεις
ΓΙΑ o ΑΠΟ 1 ΜΕΧΡΙ 6
ΔΙΑΒΑΣΕ ΟΜΑΔΑ[o]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ m ΑΠΟ 1 ΜΕΧΡΙ 30
ΔΙΑΒΑΣΕ ομάδα1, ομάδα2, σκορ1, σκορ2
ΜΑΤΣ[m,1] <- ομάδα1
ΜΑΤΣ[m,2] <- ομάδα2
ΜΑΤΣ[m,3] <- σκορ1
ΜΑΤΣ[m,4] <- σκορ2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!α), β), γ)
ΓΙΑ o ΑΠΟ 1 ΜΕΧΡΙ 6
ΚΑΤΑΤΑΞΗ[o] <- 0
ΑΠΟΤΕΛΕΣΜΑΤΑ[o,o] <- 0
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ m ΑΠΟ 1 ΜΕΧΡΙ 30
ομαδα1 <- ΜΑΤΣ[m,1]
ομαδα2 <- ΜΑΤΣ[m,2]
ΑΝ ΜΑΤΣ[m,3] > ΜΑΤΣ[m,4] ΤΟΤΕ
ΝΙΚΗΤΗΣ[m] <- ON[ομαδα1]
ΑΠΟΤΕΛΕΣΜΑΤΑ[ομαδα1,ομαδα2] <- 1
ΚΑΤΑΤΑΞΗ[ομάδα1] <- ΚΑΤΑΤΑΞΗ[ομάδα1] + 2
ΚΑΤΑΤΑΞΗ[ομάδα2] <- ΚΑΤΑΤΑΞΗ[ομάδα2] + 1
ΑΛΛΙΩΣ
ΝΙΚΗΤΗΣ[m] <- ON[ομαδα2]
ΑΠΟΤΕΛΕΣΜΑΤΑ[ομαδα1,ομαδα2] <- 2
ΚΑΤΑΤΑΞΗ[ομάδα1] <- ΚΑΤΑΤΑΞΗ[ομάδα1] + 1
ΚΑΤΑΤΑΞΗ[ομάδα2] <- ΚΑΤΑΤΑΞΗ[ομάδα2] + 2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ m ΑΠΟ 1 ΜΕΧΡΙ 30
ΓΡΑΨΕ ΝΙΚΗΤΗΣ[m]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ γ ΑΠΟ 1 ΜΕΧΡΙ 6
ΓΙΑ φ ΑΠΟ 1 ΜΕΧΡΙ 6
ΓΡΑΨΕ ΑΠΟΤΕΛΕΣΜΑΤΑ[γ,φ]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ o ΑΠΟ 1 ΜΕΧΡΙ 30
ΓΡΑΨΕ ΚΑΤΑΤΑΞΗ[o]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!δ)
ΓΙΑ γ ΑΠΟ 1 ΜΕΧΡΙ 6
ΠΛ_ΣΝ[γ] <- 0
ΓΙΑ φ ΑΠΟ 1 ΜΕΧΡΙ 6
ΑΝ ΑΠΟΤΕΛΕΣΜΑΤΑ[γ,φ] = 1 ΤΟΤΕ
ΠΛ_ΣΝ[γ] <- ΠΛ_ΣΝ[γ] + 1
ΑΛΛΙΩΣ_ΑΝ ΑΠΟΤΕΛΕΣΜΑΤΑ[γ,φ] = 2 ΤΟΤΕ !υπάρχει και το 0!
ΠΛ_ΣΝ[γ] <- 0
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
max <- ΠΛ_ΣΝ[1]
θ_max <- 1
ΓΙΑ o ΑΠΟ 1 ΜΕΧΡΙ 6
ΑΝ ΠΛ_ΣΝ[i] > max ΤΟΤΕ
max <- ΠΛ_ΣΝ[i]
θ_max <- i
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ ΟΜΑΔΑ[θ_max]
!ε)
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ 6
ΓΙΑ j ΑΠΟ 6 ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ ΚΑΤΑΤΑΞΗ[j-1] < ΚΑΤΑΤΑΞΗ[j] Η
& (ΚΑΤΑΤΑΞΗ[j-1] = ΚΑΤΑΤΑΞΗ[j] ΚΑΙ ΟΜΑΔΑ[j-1] > ΟΜΑΔΑ[j]) ΤΟΤΕ
Τ1 <- ΚΑΤΑΤΑΞΗ[j-1]
ΚΑΤΑΤΑΞΗ[j-1] <- ΚΑΤΑΤΑΞΗ[j]
ΚΑΤΑΤΑΞΗ[j] <- Τ1
Τ2 <- ΟΜΑΔΑ[j-1]
ΟΜΑΔΑ[j-1] <- ΟΜΑΔΑ[j]
ΟΜΑΔΑ[j] <- Τ2
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ o ΑΠΟ 1 ΜΕΧΡΙ 6
ΓΡΑΨΕ ΟΜΑΔΑ[o], ΚΑΤΑΤΑΞΗ[o]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
557 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;

558 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
559 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
o i + j = Ν + 1
 Πότε ένα στοιχείο είναι πάνω από την κύρια διαγώνιο;

560 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
o i + j = Ν + 1
 Πότε ένα στοιχείο είναι πάνω από την κύρια διαγώνιο;
o i < j
 Πότε ένα στοιχείο είναι κάτω από την κύρια διαγώνιο;

561 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
o i + j = Ν + 1
 Πότε ένα στοιχείο είναι πάνω από την κύρια διαγώνιο;
o i < j
 Πότε ένα στοιχείο είναι κάτω από την κύρια διαγώνιο;
o i > j
 Πότε ένα στοιχείο πάνω από την δευτερεύουσα διαγώνιο;

562 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
o i + j = Ν + 1
 Πότε ένα στοιχείο είναι πάνω από την κύρια διαγώνιο;
o i < j
 Πότε ένα στοιχείο είναι κάτω από την κύρια διαγώνιο;
o i > j
 Πότε ένα στοιχείο πάνω από την δευτερεύουσα διαγώνιο;
o i + j < N + 1
 Πότε ένα στοιχείο κάτω από την δευτερεύουσα διαγώνιο;

563 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
o i + j = Ν + 1
 Πότε ένα στοιχείο είναι πάνω από την κύρια διαγώνιο;
o i < j
 Πότε ένα στοιχείο είναι κάτω από την κύρια διαγώνιο;
o i > j
 Πότε ένα στοιχείο πάνω από την δευτερεύουσα διαγώνιο;
o i + j < N + 1
 Πότε ένα στοιχείο κάτω από την δευτερεύουσα διαγώνιο;
o i + j > N + 1
 Ποια στοιχεία είναι συμμετρικά ως προς την κύρια
διαγώνιο;

564 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
o i + j = Ν + 1
 Πότε ένα στοιχείο είναι πάνω από την κύρια διαγώνιο;
o i < j
 Πότε ένα στοιχείο είναι κάτω από την κύρια διαγώνιο;
o i > j
 Πότε ένα στοιχείο πάνω από την δευτερεύουσα διαγώνιο;
o i + j < N + 1
 Πότε ένα στοιχείο κάτω από την δευτερεύουσα διαγώνιο;
o i + j > N + 1
 Ποια στοιχεία είναι συμμετρικά ως προς την κύρια
διαγώνιο;
o Π[k,l] & Π[l,k]

 Ποια στοιχεία είναι συμμετρικά ως προς την δευτερεύουσα


διαγώνιο;

565 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

 Πότε ένα στοιχείο είναι πάνω στην κύρια διαγώνιο;


o i = j
 Πότε ένα στοιχείο είναι πάνω στην δευτερεύουσα
διαγώνιο;
o i + j = Ν + 1
 Πότε ένα στοιχείο είναι πάνω από την κύρια διαγώνιο;
o i < j
 Πότε ένα στοιχείο είναι κάτω από την κύρια διαγώνιο;
o i > j
 Πότε ένα στοιχείο πάνω από την δευτερεύουσα διαγώνιο;
o i + j < N + 1
 Πότε ένα στοιχείο κάτω από την δευτερεύουσα διαγώνιο;
o i + j > N + 1
 Ποια στοιχεία είναι συμμετρικά ως προς την κύρια
διαγώνιο;
o Π[k,l] & Π[l,k]

 Ποια στοιχεία είναι συμμετρικά ως προς την δευτερεύουσα


διαγώνιο;
o Π[k,l] & Π[N+1-l,N+1-k]

566 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

Υπολογισμός αθροίσματος κυρίας και


δευτερεύουσας διαγωνίου
Σ1 <- 0
Σ2 <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
Σ1 <- Σ1 + Π[i,i] !Κύρια διαγώνιος ↔ i=j
Σ2 <- Σ2 + Π[i,Ν+1-i] !Δευτερεύουσα διαγώνιος ↔ i+j=Ν+1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
 Αρκεί μια μονή επανάληψη
o Θα μπορούσε να λυθεί και με διπλή επανάληψη με
χρήση ΑΝ i=j ΤΟΤΕ και ΑΝ i+j=Ν+1 ΤΟΤΕ αντίστοιχα
 Ομοίως για άλλες βασικές λειτουργίες, όπως εύρεση
μέγιστου/ελάχιστου

567 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες
Υπολογισμός αθροίσματος πάνω από την κύρια
διαγώνιο, με ΑΝ
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ j > i ΤΟΤΕ
Σ <- Σ + Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
568 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

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


διαγώνιο, με ΑΝ
max <- Π[2,1]
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ i > j ΚΑΙ max < Π[i,j] ΤΟΤΕ
max <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max
569 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

Υπολογισμός αθροίσματος κάτω από την κύρια


διαγώνιο, χωρίς ΑΝ
Σ <- 0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N !Ή από 2
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ i-1
Σ <- Σ + Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Σ
570 / 680
9.3 Πολυδιάστατοι πίνακες
Τετραγωνικοί Πίνακες

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


διαγώνιο, χωρίς (επιπλέον) ΑΝ
max <- Π[1,2]
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ N !Ή μέχρι Ν-1
ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ N
ΑΝ max < Π[i,j] ΤΟΤΕ
max <- Π[i,j]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ max
571 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

Έλεγχος για Συμμετρικό πίνακα


! Όλα τα στοιχεία εκτός της κύριας διαγωνίου είναι 0
είναι_συμμετρικός <- ΑΛΗΘΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν-1 !Γιατί όχι μέχρι Ν
ΓΙΑ j ΑΠΟ i+1 ΜΕΧΡΙ N !Γιατί όχι από 1;
ΑΝ Π[i,j] <> Π[j,i] ΤΟΤΕ
είναι_συμμετρικός <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ είναι_συμμετρικός
572 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

Έλεγχος για Διαγώνιο & Άνω/Κάτω Τριγωνικό


πίνακα
! Όλα τα στοιχεία εκτός της κύριας διαγωνίου είναι 0
είναι_διαγώνιος <- ΑΛΗΘΗΣ
! Όλα τα στοιχεία κάτω από την κύρια διαγώνιο είναι 0
είναι_άνω_τριγωνικός <- ΑΛΗΘΗΣ
! Όλα τα στοιχεία πάνω από την κύρια διαγώνιο είναι 0
είναι_κάτω_τριγωνικός <- ΑΛΗΘΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΑΝ Π[i,j] <> 0 ΤΟΤΕ
ΑΝ i > j ΤΟΤΕ
είναι_διαγώνιος <- ΨΕΥΔΗΣ
είναι_άνω_τριγωνικός <- ΨΕΥΔΗΣ
ΑΛΛΙΩΣ_ΑΝ i < j ΤΟΤΕ
είναι_διαγώνιος <- ΨΕΥΔΗΣ
είναι_κάτω_τριγωνικός <- ΨΕΥΔΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ είναι_διαγώνιος, είναι_άνω_τριγωνικός, είναι_κάτω_τριγωνικός
573 / 680

9.3 Πολυδιάστατοι πίνακες


Τετραγωνικοί Πίνακες

Παραδείγματα (Θέματα Πανελλαδικών)


 2013 / Θέμα A4.α (Λύσεις)
o Άνω τριγωνικός

 2013 εσπερ. / Θέμα A4.α (Λύσεις)


o Κύρια διαγώνιος

 2013 επάν. / Θέμα Β2 (Λύσεις)


o Άνω τριγωνικός

574 / 680

9.3 Πολυδιάστατοι πίνακες


Αντιγραφή μεταξύ μονοδιάστατου και δισδιάστατου

Με διπλή ΓΙΑ και έξτρα μετρητή


k <- 1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΜΟΝ[k] <- ΔΙΣ[i,j]
k <- k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
k <- 1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΣ[i,j] <- ΜΟΝ[k]
k <- k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
575 / 680

9.3 Πολυδιάστατοι πίνακες


Αντιγραφή μεταξύ μονοδιάστατου και δισδιάστατου

Με διπλή ΓΙΑ, χωρίς άλλη μεταβλητή


ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΜΟΝ[(i-1)*N + j] <- ΔΙΣ[i,j]
!ή i*N + j - N
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΣ[i,j] <- ΜΟΝ[(i-1)*N + j]
!ή i*N + j - N
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
576 / 680

9.3 Πολυδιάστατοι πίνακες


Αντιγραφή μεταξύ μονοδιάστατου και δισδιάστατου

Με μονή ΓΙΑ
ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ M*Ν
i <- (k-1) DIV N + 1
j <- (k-1) MOD N + 1
ΜΟΝ[k] <- ΔΙΣ[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ k ΑΠΟ 1 ΜΕΧΡΙ M*Ν
i <- (k-1) DIV N + 1
j <- (k-1) MOD N + 1
ΔΙΣ[i,j] <- ΜΟΝ[k]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
577 / 680

9.3 Πολυδιάστατοι πίνακες


Αντιμετάθεση στοιχείων

Δύο γραμμών
ΓΡΑΨΕ 'Δώστε αριθμούς γραμμών προς αντιμετάθεση: '
ΔΙΑΒΑΣΕ α, β
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ Ν !j ↔ στήλες
temp <- Π[α,j]
Π[α,j] <- Π[β,j]
Π[β,j] <- temp
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
578 / 680

9.3 Πολυδιάστατοι πίνακες


Αντιμετάθεση στοιχείων

Δύο στηλών
ΓΡΑΨΕ 'Δώστε αριθμούς στηλών προς αντιμετάθεση: '
ΔΙΑΒΑΣΕ α, β
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !i ↔ γραμμές
temp <- Π[i,α]
Π[i,α] <- Π[i,β]
Π[i,β] <- temp
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
579 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση

Ολικά (ανά γραμμή / σε αύξουσα σειρά)


!Αντιγραφή σε μονοδιάστατο
k <- 1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΜΟΝ[k] <- ΔΙΣ[i,j]
k <- k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Ταξινόμηση του μονοδιάστατου
ΓΙΑ i ΑΠΟ 2 ΜΕΧΡΙ M*Ν
ΓΙΑ j ΑΠΟ Μ*Ν ΜΕΧΡΙ i ΜΕ_ΒΗΜΑ -1
ΑΝ ΜΟΝ[j-1] > ΜΟΝ[j] ΤΟΤΕ
ΠΡΟΣΩΡΙΝΗ <- ΜΟΝ[j-1]
ΜΟΝ[j-1] <- ΜΟΝ[j]
ΜΟΝ[j] <- ΠΡΟΣΩΡΙΝΗ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
!Αντιγραφή πίσω στον δισδιάστατο
k <- 1
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΣ[i,j] <- ΜΟΝ[k]
k <- k + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Πέρα από την ταξινόμηση "ολικά", όλες οι επόμενες λειτουργίες είναι λίγο έως πολύ
εξεζητημένες.

580 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση

Ολικά ("επί τόπου" / σε αύξουσα σειρά)


!Ταξινόμηση του μονοδιάστατου
ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ M*Ν
ΓΙΑ l ΑΠΟ Μ*Ν ΜΕΧΡΙ k ΜΕ_ΒΗΜΑ -1
i1 <- (l-2) DIV N + 1
j1 <- (l-2) MOD N + 1
i2 <- (l-1) DIV N + 1
j2 <- (l-1) MOD N + 1
ΑΝ ΔΙΣ[i1,j1] > ΔΙΣ[i2,j2] ΤΟΤΕ
ΠΡΟΣΩΡΙΝΗ <- ΔΙΣ[i1,j1]
ΔΙΣ[i1,j1] <- ΔΙΣ[i2,j2]
ΔΙΣ[i2,j2] <- ΠΡΟΣΩΡΙΝΗ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
581 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση

Σε μία γραμμή
ΔΙΑΒΑΣΕ αρ_γρ
ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ Ν !Ν ↔ στήλες
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ k ΜΕ ΒΗΜΑ -1
ΑΝ Α[αρ_γρ,j-1] > Α[αρ_γρ,j] ΤΟΤΕ !Σε αύξουσα
Τ <- Α[αρ_γρ,j-1]
Α[αρ_γρ,j-1] <- Α[αρ_γρ,j]
Α[αρ_γρ,j] <- Τ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
582 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση
Σε μία στήλη
ΔΙΑΒΑΣΕ αρ_στ
ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ M !Μ ↔ γραμμές
ΓΙΑ i ΑΠΟ Μ ΜΕΧΡΙ k ΜΕ ΒΗΜΑ -1
ΑΝ Α[i-1,αρ_στ] < Α[i,αρ_στ] ΤΟΤΕ !Σε φθίνουσα
Τ <- Α[i-1,αρ_στ]
Α[i-1,αρ_στ] <- Α[i,αρ_στ]
Α[i,αρ_στ] <- Τ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
583 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση

Σε κάθε γραμμή, ανεξάρτητα


ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M !Μ ↔ γραμμές
ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ Ν !Ν ↔ στήλες
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ k ΜΕ ΒΗΜΑ -1
ΑΝ Α[i,j-1] > Α[i,j] ΤΟΤΕ !Σε αύξουσα
Τ <- Α[i,j-1]
Α[i,j-1] <- Α[i,j]
Α[i,j] <- Τ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
584 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση

Σε κάθε στήλη, ανεξάρτητα


ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !Ν ↔ στήλες
ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ M !Μ ↔ γραμμές
ΓΙΑ i ΑΠΟ Μ ΜΕΧΡΙ k ΜΕ ΒΗΜΑ -1
ΑΝ Α[i-1,j] < Α[i,j] ΤΟΤΕ !Σε φθίνουσα
Τ <- Α[i-1,j]
Α[i-1,j] <- Α[i,j]
Α[i,j] <- Τ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
585 / 680
9.3 Πολυδιάστατοι πίνακες
Ταξινόμηση

Παράλληλα, βάσει μιας γραμμής / στηλών μεταξύ


τους
ΔΙΑΒΑΣΕ αρ_γρ
ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ Ν !Ν ↔ στήλες
ΓΙΑ j ΑΠΟ Ν ΜΕΧΡΙ k ΜΕ ΒΗΜΑ -1
ΑΝ Α[αρ_γρ,j-1] > Α[αρ_γρ,j] ΤΟΤΕ !Σε αύξουσα
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ Μ !Μ ↔ γραμμές
Τ <- Α[i,j-1]
Α[i,j-1] <- Α[i,j]
Α[i,j] <- Τ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
586 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση

Παράλληλα, βάσει μιας στήλης / γραμμών μεταξύ


τους
ΔΙΑΒΑΣΕ αρ_στ
ΓΙΑ k ΑΠΟ 2 ΜΕΧΡΙ M !Μ ↔ γραμμές
ΓΙΑ i ΑΠΟ Μ ΜΕΧΡΙ k ΜΕ ΒΗΜΑ -1
ΑΝ Α[i-1,αρ_στ] < Α[i,αρ_στ] ΤΟΤΕ !Σε φθίνουσα
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N !Ν ↔ στήλες
Τ <- Α[i-1,j]
Α[i-1,j] <- Α[i,j]
Α[i,j] <- Τ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
587 / 680

9.3 Πολυδιάστατοι πίνακες


Ταξινόμηση

Παραδείγματα (Θέματα Πανελλαδικών)


Παράλληλα, βάσει μιας στήλης / γραμμών μεταξύ τους
 2016 επάν. (Νέο Σύστημα) / Θέμα Δ
 2017 / Θέμα Γ

588 / 680

9.3 Πολυδιάστατοι πίνακες


Πράξεις επί πινάκων

Πρόσθεση και Αφαίρεση Πινάκων


ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Α[i,j], Β[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
Γ[i,j] <- Α[i,j] + Β[i,j]
Δ[i,j] <- Α[i,j] - Β[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
589 / 680

9.3 Πολυδιάστατοι πίνακες


Πράξεις επί πινάκων

Πολλαπλασιασμός με αριθμό
ΔΙΑΒΑΣΕ x
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
ΔΙΑΒΑΣΕ Π[i,j]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ M
ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ N
Π[i,j] <- Π[i,j] * x
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
590 / 680

9.4 Τυπικές επεξεργασίες πινάκων


ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3, σελ.70
 Υπολογισμός αθροισμάτων στοιχείων του πίνακα
o Ανά γραμμή / στήλη σε δισδιάστατους

591 / 680

9.4 Τυπικές επεξεργασίες πινάκων


ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3, σελ.70

 Υπολογισμός αθροισμάτων στοιχείων του πίνακα


o Ανά γραμμή / στήλη σε δισδιάστατους

 Εύρεση του μέγιστου ή του ελάχιστου στοιχείου


o Αν είναι ταξινομημένος;

592 / 680

9.4 Τυπικές επεξεργασίες πινάκων


ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3, σελ.70

 Υπολογισμός αθροισμάτων στοιχείων του πίνακα


o Ανά γραμμή / στήλη σε δισδιάστατους

 Εύρεση του μέγιστου ή του ελάχιστου στοιχείου


o Αν είναι ταξινομημένος;

 Ταξινόμηση των στοιχείων του πίνακα


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

593 / 680

9.4 Τυπικές επεξεργασίες πινάκων


ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3, σελ.70

 Υπολογισμός αθροισμάτων στοιχείων του πίνακα


o Ανά γραμμή / στήλη σε δισδιάστατους

 Εύρεση του μέγιστου ή του ελάχιστου στοιχείου


o Αν είναι ταξινομημένος;
 Ταξινόμηση των στοιχείων του πίνακα
o Η επιλογή του καλύτερου αλγορίθμου εξαρτάται
κυρίως από το πλήθος των στοιχείων του πίνακα και
την αρχική τους διάταξη, αν δηλαδή ο πίνακας είναι
τελείως αταξινόμητος ή μερικώς ταξινομημένος.
 Αναζήτηση ενός στοιχείου του πίνακα
o Σειριακή αναζήτηση

 Πιο απλή

 Λιγότερο αποτελεσματική

 Χρησιμοποιείται υποχρεωτικά για πίνακες που


δεν είναι ταξινομημένοι
o Δυαδική αναζήτηση

 Μόνο σε ταξινομημένους πίνακες

 Σαφώς αποδοτικότερη από τη σειριακή μέθοδο

594 / 680

9.4 Τυπικές επεξεργασίες πινάκων


ΑΕΠΠ Παράρτημα Α, Οδηγίες Μελέτης Μαθητή (2η Έκδοση), §4.3, σελ.70

 Υπολογισμός αθροισμάτων στοιχείων του πίνακα


o Ανά γραμμή / στήλη σε δισδιάστατους

 Εύρεση του μέγιστου ή του ελάχιστου στοιχείου


o Αν είναι ταξινομημένος;

 Ταξινόμηση των στοιχείων του πίνακα


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

 Πιο απλή

 Λιγότερο αποτελεσματική

 Χρησιμοποιείται υποχρεωτικά για πίνακες που


δεν είναι ταξινομημένοι
oΔυαδική αναζήτηση
 Μόνο σε ταξινομημένους πίνακες

 Σαφώς αποδοτικότερη από τη σειριακή μέθοδο

 Συγχώνευση δύο πινάκων


o Ταξινομημένων

595 / 680

5.2 Εκσφαλμάτωση
5.2.3 Εκσφαλμάτωση λογικών λαθών σε πίνακες

Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν


πίνακες χρειάζεται να δίνετε ιδιαίτερη προσοχή:

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


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.3, σελ.132

596 / 680

5.2 Εκσφαλμάτωση
5.2.3 Εκσφαλμάτωση λογικών λαθών σε πίνακες

Παράδειγμα
Ενότητα §5.2.3, Παράδειγμα 8 (μονοδιάστατοι)

Δραστηριότητα
Ενότητα §5.2.3, Δραστηριότητα 4 (δισδιάστατοι)

597 / 680

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

Η παραπάνω μέθοδος ονομάζεται Τελευταίο Μέσα, Πρώτο Έξω


ή LIFO (=Last In First Out). Μπορούμε να φανταστούμε την
τοποθέτηση των στοιχείων μιας στοίβας σε κατακόρυφη σειρά.
Χαρακτηριστικό παράδειγμα είναι μια στοίβα από πιάτα.
Παίρνουμε προς χρήση το πιάτο που τοποθετήσαμε τελευταίο.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.1, σελ.13

598 / 680

1.1 Στοίβα
Οι κύριες λειτουργίες σε μια στοίβα είναι δύο:

1. Η ώθηση (push) στοιχείου στην κορυφή της στοίβας. Στη


διαδικασία της ώθησης ελέγχουμε αν η στοίβα είναι
γεμάτη. Στην περίπτωση που προσπαθήσουμε να
«προσθέσουμε» ένα στοιχείο σε μια ήδη γεμάτη στοίβα,
έχουμε υπερχείλιση (overflow) της στοίβας.
2. Η απώθηση (pop) στοιχείου από τη στοίβα. Στη διαδικασία
της απώθησης ελέγχουμε αν υπάρχει ένα τουλάχιστον
στοιχείο στη στοίβα. Στην περίπτωση που προσπαθήσουμε
να «αφαιρέσουμε» ένα στοιχείο από μία κενή στοίβα,
έχουμε υποχείλιση (underflow) της στοίβας.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.1, σελ.13

599 / 680

1.1 Στοίβα
Υλοποίηση στοίβας με χρήση μονοδιάστατου πίνακα
 Χρησιμοποιούμε μια βοηθητική μεταβλητή (top), που
δείχνει το στοιχείο που τοποθετήθηκε τελευταίο στην
κορυφή της στοίβας.
 Η ώθηση ενός νέου στοιχείου στη στοίβα (εισαγωγή
στοιχείου στον πίνακα) γίνεται πάντα στην κορυφή της.
Συγκεκριμένα, η μεταβλητή top αυξάνεται κατά ένα: top<-
top+1 και στη συνέχεια γίνεται η ώθηση του στοιχείου.

 Η απώθηση ενός στοιχείου από τη στοίβα (εξαγωγή από


τον πίνακα) γίνεται πάντα από την κορυφή της στοίβας.
Συγκεκριμένα, εξάγεται το στοιχείο που δείχνει η
μεταβλητή top και στη συνέχεια η μεταβλητή top μειώνεται
κατά ένα: top<-top-1

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.1, σελ.14

600 / 680

1.1 Στοίβα
Σε μια κενή στοίβα/πίνακα θεωρούμε ότι η αρχική τιμή της
μεταβλητής top είναι μηδέν (top<-0). Η μεταβλητή top είναι η
μεταβλητή που δείχνει τη θέση που τοποθετήθηκε το τελευταίο
στοιχείο στη στοίβα/πίνακα (δηλ. δείχνει την κορυφή της
στοίβας).

Κατά την ώθηση ενός στοιχείου στη στοίβα (εισαγωγή ενός


στοιχείου στον πίνακα), πρώτα αυξάνεται η τιμή της μεταβλητής
top κατά ένα, δηλ. top<-top+1, και στη συνέχεια γίνεται η ώθηση
του στοιχείου στην κορυφή της στοίβας.

Κατά την απώθηση ενός στοιχείου από τη στοίβα (εξαγωγή


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.1, σελ.14


601 / 680

1.1 Στοίβα
Παράδειγμα 2 – Ώθηση στοιχείου στην κορυφή της στοίβας
με χρήση μονοδιάστατου πίνακα
ΓΡΑΨΕ 'Δώσε στοιχείο για να εισαχθεί στην στοίβα Α: '
ΔΙΑΒΑΣΕ στοιχείο
ΑΝ top < 10 ΤΟΤΕ
top <- top + 1
Α[top] <- στοιχείο
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υπερχείλιση στοίβας'
ΤΕΛΟΣ_ΑΝ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.1.1, σελ.16

602 / 680

1.1 Στοίβα
Παράδειγμα 3 – Απώθηση στοιχείου στην κορυφή της
στοίβας με χρήση μονοδιάστατου πίνακα
ΑΝ top >= 1 ΤΟΤΕ
ΓΡΑΨΕ Α[top]
top <- top - 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υποχείλιση στοίβας'
ΤΕΛΟΣ_ΑΝ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.1.1, σελ.16

603 / 680

1.1 Στοίβα
Σε μια στοίβα N θέσεων, τι τιμή θα έχει ο δείκτης top όταν:

 η στοίβα είναι άδεια

604 / 680

1.1 Στοίβα
Σε μια στοίβα N θέσεων, τι τιμή θα έχει ο δείκτης top όταν:

 η στοίβα είναι άδεια


o top = 0
 η στοίβα είναι γεμάτη

605 / 680

1.1 Στοίβα
Σε μια στοίβα N θέσεων, τι τιμή θα έχει ο δείκτης top όταν:

 η στοίβα είναι άδεια


o top = 0
 η στοίβα είναι γεμάτη
o top = N
 η στοίβα έχει ένα μόνο στοιχείο

606 / 680

1.1 Στοίβα
Σε μια στοίβα N θέσεων, τι τιμή θα έχει ο δείκτης top όταν:

 η στοίβα είναι άδεια


o top = 0
 η στοίβα είναι γεμάτη
o top = N
 η στοίβα έχει ένα μόνο στοιχείο
o top = 1
 η στοίβα έχει x στοιχεία (0 ≤ x ≤ N)

607 / 680

1.1 Στοίβα
Σε μια στοίβα N θέσεων, τι τιμή θα έχει ο δείκτης top όταν:

 η στοίβα είναι άδεια


o top = 0
 η στοίβα είναι γεμάτη
o top = N
 η στοίβα έχει ένα μόνο στοιχείο
o top = 1
 η στοίβα έχει x στοιχεία (0 ≤ x ≤ N)
o top = x

608 / 680

1.1 Στοίβα
Παράδειγμα
ΠΡΟΓΡΑΜΜΑ Παράδειγμα_Στοίβα
ΣΤΑΘΕΡΕΣ
Ν = 5
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Στοίβα[Ν], top, x
ΧΑΡΑΚΤΗΡΕΣ: επιλογή
ΑΡΧΗ
top <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Επίλεξε λειτουργία:'
ΓΡΑΨΕ 'Ω = Ώθηση'
ΓΡΑΨΕ 'Α = Απώθηση'
ΓΡΑΨΕ 'Τ = Τέλος'
ΔΙΑΒΑΣΕ επιλογή
ΜΕΧΡΙΣ_ΟΤΟΥ επιλογή = 'Α' Η επιλογή = 'Ω' Η επιλογή = 'Τ'
ΕΠΙΛΕΞΕ επιλογή
ΠΕΡΙΠΤΩΣΗ 'Ω'
ΑΝ top < Ν ΤΟΤΕ
ΓΡΑΨΕ 'Δώσε στοιχείο για ώθηση: '
ΔΙΑΒΑΣΕ x
top <- top + 1
Στοίβα[top] <- x
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υπερχείλιση στοίβας'
ΤΕΛΟΣ_ΑΝ
ΠΕΡΙΠΤΩΣΗ 'Α'
ΑΝ top > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Στοιχείο: ', Στοίβα[top]
top <- top - 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Υποχείλιση στοίβας'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επιλογή = 'Τ'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
609 / 680

1.1 Στοίβα
Παράδειγμα 4 – Επιβίβαση & Αποβίβαση αυτοκινήτων σε
πλοίο
ΠΡΟΓΡΑΜΜΑ Πλοίο_Στοίβα
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: τοπ, επ1, πλ1, πλ2
ΧΑΡΑΚΤΗΡΕΣ: επ2, αρ, π[250]
ΑΡΧΗ
τοπ <- 0
πλ1 <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
πλ2 <- 0
ΓΡΑΨΕ 'Μενού Επιλογών'
ΓΡΑΨΕ '1. Επιβίβαση'
ΓΡΑΨΕ '2. Αποβίβαση'
ΓΡΑΨΕ '3. Έξοδος'
ΓΡΑΨΕ 'Δώσε επιλογή:'
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ επ1
ΑΝ επ1 < 1 Η επ1 > 3 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή. Ξαναπροσπάθησε!!!'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ1 >= 1 ΚΑΙ επ1 <= 3
ΑΝ επ1 = 1 ΤΟΤΕ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Υπάρχει όχημα για επιβίβαση (Ν/Ο);'
ΔΙΑΒΑΣΕ επ2
ΑΝ επ2 <> 'Ν' ΚΑΙ επ2 <> 'ν' ΚΑΙ επ2 <> 'Ο' ΚΑΙ επ2 <> 'ο'
ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή. Ξαναπροσπάθησε!!!'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ2 = 'Ο' Η επ2 = 'ο' Η επ2 = 'Ν' Η επ2 = 'ν'
ΑΝ επ2 = 'Ν' Η επ2 = 'ν' ΤΟΤΕ
ΑΝ τοπ < 250 ΤΟΤΕ !Στο βιβλίο λέει τοπ <= 250
ΓΡΑΨΕ 'Δώσε αριθμό κυκλοφορίας του οχήματος:'
ΔΙΑΒΑΣΕ αρ
τοπ <- τοπ + 1
π[τοπ] <- αρ
πλ1 <- πλ1 + 1
ΑΝ τοπ = 250 ΤΟΤΕ
ΓΡΑΨΕ 'Το πλοίο δεν χωρά άλλα οχήματα'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ τοπ = 250 Η επ2 = 'Ο' Η επ2 = 'ο'
ΑΛΛΙΩΣ_ΑΝ επ1 = 2 ΤΟΤΕ
ΟΣΟ τοπ >= 1 ΕΠΑΝΑΛΑΒΕ
ΓΡΑΨΕ 'Αποβιβάζεται το όχημα:', π[τοπ]
τοπ <- τοπ - 1
πλ2 <- πλ2 + 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Οχήματα που αποβιβάστηκαν στην ΑΙΓΙΝΑ ', πλ2
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ1 = 3
ΓΡΑΨΕ 'Οχήματα που επιβιβάστηκαν στον ΠΕΙΡΑΙΑ:', πλ1
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.1.1, σελ.17-21

610 / 680
1.1 Στοίβα
Παραδείγματα

Ενότητα §1.1.1

Ερωτήσεις - Ασκήσεις

Ενότητα §1.1.2

611 / 680

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

Η παραπάνω μέθοδος ονομάζεται Πρώτο Μέσα, Πρώτο Έξω ή


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

Άλλα παραδείγματα είναι η ουρά στα λεωφορεία ή η ουρά στα


ταμεία, όπου ο πρώτος που στέκεται στην ουρά εξυπηρετείται
και πρώτος.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.2, σελ.23

612 / 680

1.2 Ουρά
Οι κύριες λειτουργίες που εκτελούνται σε μια ουρά είναι δύο:

1. Η εισαγωγή (enqueue) στοιχείου στο πίσω άκρο της


ουράς.
2. Η εξαγωγή (dequeue) στοιχείου από το εμπρός άκρο της
ουράς.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.2, σελ.23

613 / 680

1.2 Ουρά
Υλοποίηση ουράς με χρήση μονοδιάστατου πίνακα

Χρησιμοποιούμε δύο μεταβλητές, την front (ή εμπρός) που


δείχνει τη θέση του 1ου στοιχείου της ουράς και την rear (ή
πίσω) που δείχνει τη θέση του τελευταίου στοιχείου. Ως αρχικές
τιμές των μεταβλητών rear και front θεωρούμε το μηδέν.

 Η εισαγωγή ενός νέου στοιχείου γίνεται από το πίσω άκρο


της ουράς και η τιμή της μεταβλητής rear αλλάζει ως εξής:
rear<-rear+1 Κατά την εισαγωγή, πρώτα αυξάνουμε τον
δείκτη rear κατά ένα και μετά εισάγουμε το στοιχείο στον
πίνακα.
 Η εξαγωγή ενός στοιχείου γίνεται από το εμπρός άκρο της
ουράς και η τιμή της μεταβλητής front αλλάζει ως εξής:
front<-front+1 Κατά την εξαγωγή ενός στοιχείου, αυξάνεται
ο δείκτης front κατά ένα (δείχνει στην επόμενη θέση του
πίνακα) χωρίς στην πραγματικότητα να γίνεται καμία
παρέμβαση στα περιεχόμενα του πίνακα (χωρίς να
διαγράφεται κάποιο στοιχείο).

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.2, σελ.24

614 / 680

1.2 Ουρά
Παράδειγμα 2 – Εισαγωγή στοιχείου σε ουρά με χρήση
μονοδιάστατου πίνακα
ΓΡΑΨΕ 'Δώσε στοιχείο για εισαγωγή στην ουρά Α: '
ΔΙΑΒΑΣΕ στοιχείο
ΑΝ rear = 10 ΤΟΤΕ
ΓΡΑΨΕ 'Γεμάτη ουρά'
ΑΛΛΙΩΣ_ΑΝ (front = 0 ΚΑΙ rear = 0) ΤΟΤΕ
front <- 1
rear <- 1
A[rear] <- στοιχείο
ΑΛΛΙΩΣ
rear <- rear + 1
A[rear] <- στοιχείο
ΤΕΛΟΣ_ΑΝ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.2.1, σελ.26

615 / 680

1.2 Ουρά
Παράδειγμα 3 – Εξαγωγή στοιχείου από ουρά με χρήση
μονοδιάστατου πίνακα
ΑΝ (front = 0 ΚΑΙ rear = 0) ΤΟΤΕ
ΓΡΑΨΕ 'Άδεια ουρά'
ΑΛΛΙΩΣ_ΑΝ (front = rear) ΤΟΤΕ
ΓΡΑΨΕ 'Εξάγεται το στοιχείο: ', A[front]
front <- 0
rear <- 0
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Εξάγεται το στοιχείο: ', A[front]
front <- front + 1
ΤΕΛΟΣ_ΑΝ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.2.1, σελ.26

616 / 680

1.2 Ουρά
Σε μια ουρά N θέσεων, τι ισχύει για τους δείκτες front & rear όταν:

 η ουρά είναι άδεια

617 / 680

1.2 Ουρά
Σε μια ουρά N θέσεων, τι ισχύει για τους δείκτες front & rear όταν:

 η ουρά είναι άδεια


o front = 0 ΚΑΙ rear = 0
 η ουρά είναι γεμάτη (?)
618 / 680

1.2 Ουρά
Σε μια ουρά N θέσεων, τι ισχύει για τους δείκτες front & rear όταν:

 η ουρά είναι άδεια


o front = 0 ΚΑΙ rear = 0
 η ουρά είναι γεμάτη (?)
o rear = N
 η ουρά έχει ένα μόνο στοιχείο

619 / 680

1.2 Ουρά
Σε μια ουρά N θέσεων, τι ισχύει για τους δείκτες front & rear όταν:

 η ουρά είναι άδεια


o front = 0 ΚΑΙ rear = 0
 η ουρά είναι γεμάτη (?)
o rear = N
 η ουρά έχει ένα μόνο στοιχείο
o rear = front ΚΑΙ front <> 0
 η ουρά έχει x στοιχεία (0 < x ≤ N)

620 / 680

1.2 Ουρά
Σε μια ουρά N θέσεων, τι ισχύει για τους δείκτες front & rear όταν:

 η ουρά είναι άδεια


o front = 0 ΚΑΙ rear = 0
 η ουρά είναι γεμάτη (?)
o rear = N
 η ουρά έχει ένα μόνο στοιχείο
o rear = front ΚΑΙ front <> 0
 η ουρά έχει x στοιχεία (0 < x ≤ N)
o rear - front + 1 = x

621 / 680
1.2 Ουρά
Παράδειγμα
ΠΡΟΓΡΑΜΜΑ Παράδειγμα_Ουρά
ΣΤΑΘΕΡΕΣ
Ν = 5
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Ουρά[Ν], front, rear, x
ΧΑΡΑΚΤΗΡΕΣ: επιλογή
ΑΡΧΗ
front <- 1
rear <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Επίλεξε λειτουργία:'
ΓΡΑΨΕ 'ΕΣ = Εισαγωγή'
ΓΡΑΨΕ 'ΕΞ = Εξαγωγή'
ΓΡΑΨΕ 'Τ = Τέλος'
ΔΙΑΒΑΣΕ επιλογή
ΜΕΧΡΙΣ_ΟΤΟΥ επιλογή = 'ΕΣ' Η επιλογή = 'ΕΞ' Η επιλογή = 'Τ'
ΕΠΙΛΕΞΕ επιλογή
ΠΕΡΙΠΤΩΣΗ 'ΕΣ'
ΑΝ rear < Ν ΤΟΤΕ
ΓΡΑΨΕ 'Δώσε στοιχείο για εισαγωγή: '
ΔΙΑΒΑΣΕ x
rear <- rear + 1
Ουρά[rear] <- x
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Ουρά πλήρης (στο τέλος)'
ΤΕΛΟΣ_ΑΝ
ΠΕΡΙΠΤΩΣΗ 'ΕΞ'
ΑΝ front <= rear ΤΟΤΕ
ΓΡΑΨΕ 'Στοιχείο: ', Ουρά[front]
front <- front + 1
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Ουρά άδεια'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επιλογή = 'Τ'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
622 / 680

1.2 Ουρά
Παράδειγμα - Ολίσθηση για την ανάκτηση των "χαμένων"
θέσεων
πλ <- rear - front + 1
!Πριν την εισαγωγή
ΑΝ rear = Ν ΚΑΙ front > 1 ΤΟΤΕ
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ πλ
ΟΥΡΑ[i] <- ΟΥΡΑ[front - 1 + i] !front + i - 1
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
front <- 1
rear <- πλ
ΤΕΛΟΣ_ΑΝ
!Πριν την εισαγωγή
ΑΝ rear = Ν ΚΑΙ front > 1 ΤΟΤΕ
k <- 0 !πλήθος
ΓΙΑ i ΑΠΟ front ΜΕΧΡΙ rear
k <- k + 1
ΟΥΡΑ[k] <- ΟΥΡΑ[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
front <- 1
rear <- k
ΤΕΛΟΣ_ΑΝ
623 / 680

1.2 Ουρά
Παράδειγμα 4 – Επιβίβαση και Αποβίβαση αυτοκινήτων σε
πλοίο
ΠΡΟΓΡΑΜΜΑ Πλοίο_Ουρά
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: αρχ, τελος, επ1, πλ
ΧΑΡΑΚΤΗΡΕΣ: επ2, αρ, π[250]
ΑΡΧΗ
αρχ <- 0
τελος <- 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Μενού Επιλογών'
ΓΡΑΨΕ '1. Επιβίβαση'
ΓΡΑΨΕ '2. Αποβίβαση'
ΓΡΑΨΕ '3. Έξοδος'
ΓΡΑΨΕ 'Δώσε επιλογή: '
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ επ1
ΑΝ επ1 < 1 Η επ1 > 3 ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή. Ξαναπροσπάθησε!!!'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ1 >= 1 ΚΑΙ επ1 <= 3
ΑΝ επ1 = 1 ΤΟΤΕ
ΑΝ τελος = 250 ΤΟΤΕ
ΓΡΑΨΕ 'Το πλοίο είναι πλήρες και δε χωρά άλλα οχήματα'
ΑΛΛΙΩΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Υπάρχει όχημα για επιβίβαση (Ν/Ο); '
ΔΙΑΒΑΣΕ επ2
ΑΝ επ2 <> 'Ν' ΚΑΙ επ2 <> 'ν' ΚΑΙ επ2 <> 'Ο' ΚΑΙ επ2 <>
'ο' ΤΟΤΕ
ΓΡΑΨΕ 'Λάθος επιλογή. Ξαναπροσπάθησε!!!'
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ2 = 'Ο' Η επ2 = 'ο' Η επ2 = 'Ν' Η επ2 = 'ν'
ΑΝ επ2 = 'Ν' Η επ2 = 'ν' ΤΟΤΕ
ΓΡΑΨΕ 'Δώσε αριθμό κυκλοφορίας του οχήματος: '
ΔΙΑΒΑΣΕ αρ
ΑΝ (αρχ = 0 ΚΑΙ τελος = 0) ΤΟΤΕ
αρχ <- 1
τελος <- 1
π[τελος] <- αρ
ΑΛΛΙΩΣ
τελος <- τελος + 1
π[τελος] <- αρ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ τελος = 250 Η επ2 = 'Ο' Η επ2 = 'ο'
ΑΝ τελος = 250 ΤΟΤΕ
ΓΡΑΨΕ 'Το πλοίο είναι πλήρες και δε χωρά άλλα οχήματα'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ επ1 = 2 ΤΟΤΕ
πλ <- 0
ΑΝ (αρχ = 0 ΚΑΙ τελος = 0) ΤΟΤΕ
ΓΡΑΨΕ 'Το πλοίο είναι άδειο'
ΑΛΛΙΩΣ_ΑΝ αρχ = τελος ΤΟΤΕ
ΓΡΑΨΕ 'Αποβιβάζεται το μοναδικό όχημα: ', π[αρχ]
π[αρχ] <- ''
αρχ <- 0
τελος <- 0
πλ <- πλ + 1
ΑΛΛΙΩΣ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Αποβιβάζεται το όχημα: ', π[αρχ]
π[αρχ] <- ''
αρχ <- αρχ + 1
πλ <- πλ + 1
ΜΕΧΡΙΣ_ΟΤΟΥ (αρχ > τελος)
ΤΕΛΟΣ_ΑΝ
ΓΡΑΨΕ 'Οχήματα που αποβιβάστηκαν στην ΑΙΓΙΝΑ: ', πλ
αρχ <- 0
τελος <- 0
ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ επ1 = 3
ΓΡΑΨΕ 'ΕΞΟΔΟΣ ΑΠΟ ΤΟ ΠΡΟΓΡΑΜΜΑ'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.2.1, σελ.27-32

624 / 680

1.2 Ουρά
Παραδείγματα

Ενότητα §1.2.1

Ερωτήσεις - Ασκήσεις

Ενότητα §1.2.2

625 / 680

10.1 Τμηματικός προγραμματισμός


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

ΑΕΠΠ - Βιβλίο Μαθητή, §10.1, σελ.171

626 / 680

10.1 Τμηματικός προγραμματισμός


Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο έργο και
έχει γραφεί χωριστά από το υπόλοιπο πρόγραμμα, τότε
αναφερόμαστε σε υποπρόγραμμα (subprogram).

ΑΕΠΠ - Βιβλίο Μαθητή, §10.1, σελ.172

627 / 680

10.2 Χαρακτηριστικά των υποπρογραμμάτων


 Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία
έξοδο. Στην πραγματικότητα κάθε υποπρόγραμμα
ενεργοποιείται με την είσοδο σε αυτό που γίνεται πάντοτε
από την αρχή του, εκτελεί ορισμένες ενέργειες, και
απενεργοποιείται με την έξοδο από αυτό που γίνεται
πάντοτε από το τέλος του.
 Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από
τα άλλα. Αυτό σημαίνει ότι κάθε υποπρόγραμμα μπορεί να
σχεδιαστεί, να αναπτυχθεί και να συντηρηθεί αυτόνομα
χωρίς να επηρεαστούν άλλα υποπρογράμματα. Στην πράξη
βέβαια η απόλυτη ανεξαρτησία είναι δύσκολο να
επιτευχθεί.
 Κάθε υποπρόγραμμα πρέπει να μην είναι πολύ μεγάλο.
Η έννοια του μεγάλου προγράμματος είναι υποκειμενική,
αλλά πρέπει κάθε υποπρόγραμμα να είναι τόσο, ώστε να
είναι εύκολα κατανοητό για να μπορεί να ελέγχεται. Γενικά
κάθε υποπρόγραμμα πρέπει να εκτελεί μόνο μία
λειτουργία. Αν εκτελεί περισσότερες λειτουργίες, τότε
συνήθως μπορεί και πρέπει να διασπαστεί σε ακόμη
μικρότερα υποπρογράμματα.

ΑΕΠΠ - Βιβλίο Μαθητή, §10.2, σελ.173

628 / 680

10.3 Πλεονεκτήματα του τμηματικού προγραμματισμού

Διευκολύνει την ανάπτυξη του αλγορίθμου και του


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

Διευκολύνει την κατανόηση και διόρθωση του


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

ΑΕΠΠ - Βιβλίο Μαθητή, §10.3, σελ.174

629 / 680

10.3 Πλεονεκτήματα του τμηματικού προγραμματισμού

Απαιτεί λιγότερο χρόνο και προσπάθεια στη


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

Επεκτείνει τις δυνατότητες των γλωσσών


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

ΑΕΠΠ - Βιβλίο Μαθητή, §10.3, σελ.174

630 / 680

10.4 Παράμετροι
Μία παράμετρος είναι μία μεταβλητή που επιτρέπει το πέρασμα
της τιμής της από ένα τμήμα προγράμματος σε ένα άλλο.

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

Αυτό σημαίνει ότι σε μια Διαδικασία μπορώ να τροποποιήσω


τις τιμές των πραγματικών παραμέτρων με τις οποίες
κλήθηκε η Διαδικασία.

Από την άλλη, στις Συναρτήσεις, δεν επιχειρώ να τροποιήσω τις


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

ΑΕΠΠ - Βιβλίο Μαθητή, §10.4, σελ.175

631 / 680

10.5 Διαδικασίες και συναρτήσεις


 Η συνάρτηση είναι ένας τύπος υποπρογράμματος που
υπολογίζει και επιστρέφει μόνο μία τιμή με το όνομά της
(όπως οι μαθηματικές συναρτήσεις).
 Η διαδικασία είναι ένας τύπος υποπρογράμματος που
μπορεί να εκτελεί όλες τις λειτουργίες ενός προγράμματος.

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5, σελ.175

632 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.1 Ορισμός και κλήση συναρτήσεων

Κάθε συνάρτηση έχει την ακόλουθη δομή.


ΣΥΝΑΡΤΗΣΗ Όνομα (<λίστα παραμέτρων>) : <τύπος συνάρτησης>
<Τμήμα δηλώσεων>
ΑΡΧΗ

Όνομα <- έκφραση

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
 Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο
όνομα της ΓΛΩΣΣΑΣ.
 Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των
οποίων οι τιμές μεταβιβάζονται στη συνάρτηση κατά την
κλήση.
 Οι συναρτήσεις μπορούν να επιστρέφουν τιμές όλων των
τύπων δεδομένων που υποστηρίζει η γλώσσα.
 Μια συνάρτηση λοιπόν μπορεί να είναι ΠΡΑΓΜΑΤΙΚΗ, ΑΚΕΡΑΙΑ,
ΧΑΡΑΚΤΗΡΑΣ, ΛΟΓΙΚΗ.

 Στις εντολές του σώματος της συνάρτησης πρέπει


υποχρεωτικά να υπάρχει μία εντολή εκχώρησης τιμής στο
όνομα της συνάρτησης, π.χ. Εμβαδό_κύκλου <- Π*R^2.
 Κάθε συνάρτηση εκτελείται, όπως ακριβώς εκτελούνται οι
ενσωματωμένες συναρτήσεις της γλώσσας. Απλώς
αναφέρεται το όνομά της σε μια έκφραση ή σε μία εντολή
και επιστρέφεται η τιμή της, π.χ. Εμ <- Εμβαδό_κύκλου(R).

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5.1, σελ.177-178

633 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.1 Ορισμός και κλήση συναρτήσεων

Παράδειγμα
ΠΡΟΓΡΑΜΜΑ Παράδειγμα_2
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : R, Εμ
ΑΡΧΗ
ΚΑΛΕΣΕ Είσοδος_δεδομένων (R)
Εμ <- Εμβαδό_κύκλου (R)
ΚΑΛΕΣΕ Εκτύπωση (Εμ)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

634 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.1 Ορισμός και κλήση συναρτήσεων

ΣΥΝΑΡΤΗΣΗ Εμβαδό_κύκλου(R) : ΠΡΑΓΜΑΤΙΚΗ
ΣΤΑΘΕΡΕΣ
Π=3.14
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: R
ΑΡΧΗ
Εμβαδό_κύκλου <- Π*R^2
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
1. Το κύριο πρόγραμμα πριν την κλήση της συνάρτησης
γνωρίζει την τιμή της μεταβλητής R.
2. Κατά την κλήση μεταβιβάζεται αυτή η τιμή στην αντίστοιχη
μεταβλητή R της συνάρτησης.
3. Η συνάρτηση υπολογίζει το εμβαδό του κύκλου και το
αποτέλεσμα αυτό εκχωρείται στο όνομα της συνάρτησης.
4. Με το τέλος της συνάρτησης γίνεται επιστροφή στο κύριο
πρόγραμμα, όπου η τιμή του εμβαδού εκχωρείται στη
μεταβλητή Εμ.

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5.1, σελ.176

635 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.1 Ορισμός και κλήση συναρτήσεων

Μια ΣΥΝΑΡΤΗΣΗ:

 δεν μπορεί να έχει εντολές εισόδου-εξόδου


 επιστρέφει πάντα ακριβώς μία τιμή
 δεν μπορεί να τροποποιήσει τις τιμές των πραγματικών
παραμέτρων
 δεν μπορεί να επιστρέψει πίνακα

Αν πρέπει να διαφοροποιηθώ από τα παραπάνω, πρέπει να


χρησιμοποιήσω ΔΙΑΔΙΚΑΣΙΑ

Να επισημανθεί ιδιαίτερα ότι οι συναρτήσεις δεν μπορούν να


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

1. Οδηγίες διδασκαλίας … κατά το Σχολικό Έτος 2020-2021, σελ. 25


2. Οδηγίες για το μάθημα «Ανάπτυξη εφαρμογών σε Προγραμματιστικό Περιβάλλον»
(2010), σελ. 3

636 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.2 Ορισμός και κλήση διαδικασιών

Κάθε διαδικασία έχει την ακόλουθη δομή.


ΔΙΑΔΙΚΑΣΙΑ Όνομα(<λίστα παραμέτρων>)
<Τμήμα δηλώσεων>
ΑΡΧΗ
<εντολές>
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
 Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα
της ΓΛΩΣΣΑΣ.
 Η λίστα παραμέτρων είναι μια λίστα μεταβλητών, των
οποίων οι τιμές μεταβιβάζονται προς τη διαδικασία κατά
την κλήση ή/και επιστρέφονται στο κύριο πρόγραμμα μετά
το τέλος της διαδικασίας.
 Στο σώμα της διαδικασίας μπορούν να υπάρχουν
οποιεσδήποτε εντολές της γλώσσας.
 Κάθε διαδικασία εκτελείται όταν καλείται από το κύριο
πρόγραμμα ή άλλη διαδικασία.
 Η κλήση σε διαδικασία πραγματοποιείται με την εντολή
ΚΑΛΕΣΕ, που ακολουθείται από το όνομα της διαδικασίας
συνοδευόμενο μέσα σε παρενθέσεις με τη λίστα
παραμέτρων.

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5.1, σελ.178

637 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.2 Ορισμός και κλήση διαδικασιών

Η γενική μορφή της εντολής ΚΑΛΕΣΕ είναι

Σύνταξη
ΚΑΛΕΣΕ <Όνομα διαδικασίας> (<λίστα παραμέτρων>)

Παράδειγμα
ΚΑΛΕΣΕ Πράξεις (Α, Β, Διαφορά)

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

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5.2, σελ.178

638 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.2 Ορισμός και κλήση διαδικασιών

Παράδειγμα
ΠΡΟΓΡΑΜΜΑ Παράδειγμα_2
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : R, Εμ
ΑΡΧΗ
ΚΑΛΕΣΕ Είσοδος_δεδομένων (R)
Εμ <- Εμβαδό_κύκλου (R)
ΚΑΛΕΣΕ Εκτύπωση (Εμ)
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
ΔΙΑΔΙΚΑΣΙΑ Είσοδος_δεδομένων(Αριθμός)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ : Αριθμός
ΑΡΧΗ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώσε την ακτίνα'
ΔΙΑΒΑΣΕ Αριθμός
ΜΕΧΡΙΣ_ΟΤΟΥ Αριθμός>0
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΔΙΑΔΙΚΑΣΙΑ Εκτύπωση(Αποτέλεσμα)
ΜΕΤΑΒΛΗΤΕΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Αποτέλεσμα
ΑΡΧΗ
ΓΡΑΨΕ 'Το εμβαδό του κύκλου είναι:', Αποτέλεσμα
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

639 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.3 Πραγματικές και τυπικές παράμετροι

Η λίστα των τυπικών παραμέτρων (formal parameter list)


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

Η λίστα των πραγματικών παραμέτρων (actual parameter list)


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

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


τυπικές παραμέτρους και απλά παραμέτρους τις πραγματικές
παραμέτρους.

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5.3, σελ.181

640 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.3 Πραγματικές και τυπικές παράμετροι

Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής


κανόνες:

 Ο αριθμός των πραγματικών και των τυπικών παραμέτρων


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

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5.3, σελ.181-182

641 / 680

10.5 Διαδικασίες και συναρτήσεις


10.5.3 Πραγματικές και τυπικές παράμετροι

Η ΧΡΗΣΗ ΣΤΟΙΒΑΣ ΣΤΗΝ ΚΛΗΣΗ


ΔΙΑΔΙΚΑΣΙΩΝ
Η έννοια της στοίβας είναι πολύ χρήσιμη στο ίδιο το λογισμικό
των γλωσσών προγραμματισμού. Όταν μία διαδικασία ή
συνάρτηση καλείται από το κύριο πρόγραμμα, τότε η αμέσως
επόμενη διεύθυνση του κύριου προγράμματος, που ονομάζεται
διεύθυνση επιστροφής (return address), αποθηκεύεται από το
μεταφραστή σε μία στοίβα που ονομάζεται στοίβα χρόνου
εκτέλεσης (execution time stack). Μετά την εκτέλεση της
διαδικασίας ή της συνάρτησης η διεύθυνση επιστροφής
απωθείται από τη στοίβα και έτσι ο έλεγχος του προγράμματος
μεταφέρεται και πάλι στο κύριο πρόγραμμα. Η τεχνική αυτή
εφαρμόζεται και γενικότερα, δηλαδή οποτεδήποτε μία
διαδικασία ή συνάρτηση καλεί μία διαδικασία ή συνάρτηση. Για
παράδειγμα, έστω ότι μία διαδικασία a καλεί τη διαδικασία b,
που με τη σειρά της καλεί τη διαδικασία c κ.ο.κ. Στην περίπτωση
αυτή οι διευθύνσεις επιστροφής εμφανίζονται στη στοίβα με
σειρά c, b, a. Μετά την εκτέλεση κάθε διαδικασίας, η διεύθυνση
επιστροφής απωθείται από τη στοίβα και ο έλεγχος
μεταβιβάζεται στη διεύθυνση αυτή. Το παράδειγμα αυτό δείχνει
μία από τις πολλές χρησιμότητες της LIFO ιδιότητας της στοίβας.

ΑΕΠΠ - Βιβλίο Μαθητή, §10.5.3, σελ.182

642 / 680

10.6 Εμβέλεια μεταβλητών – σταθερών


Κάθε κύριο πρόγραμμα όπως και κάθε υποπρόγραμμα
περιλαμβάνει τις δικές του μεταβλητές και σταθερές.

Οι μεταβλητές αυτές στη ΓΛΩΣΣΑ είναι γνωστές στο αντίστοιχο


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

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


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

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


εμβέλεια (scope) μεταβλητών.

ΑΕΠΠ - Βιβλίο Μαθητή, §10.6, σελ.183

643 / 680

10.6 Εμβέλεια μεταβλητών – σταθερών


Απεριόριστη εμβέλεια

Σύμφωνα με αυτή την αρχή όλες οι μεταβλητές και όλες οι


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

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


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

644 / 680
10.6 Εμβέλεια μεταβλητών – σταθερών
Περιορισμένη εμβέλεια

Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές που


χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται
σε αυτό το τμήμα. Όλες οι μεταβλητές είναι τοπικές, ισχύουν
δηλαδή για το υποπρόγραμμα στο οποίο δηλώθηκαν. Στη
ΓΛΩΣΣΑ έχουμε περιορισμένη εμβέλεια.

Τα πλεονεκτήματα της περιορισμένης εμβέλειας είναι η απόλυτη


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

645 / 680

10.6 Εμβέλεια μεταβλητών – σταθερών


Μερικώς περιορισμένη εμβέλεια

Σύμφωνα με αυτή την αρχή άλλες μεταβλητές είναι τοπικές και


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

Η μερικώς περιορισμένη εμβέλεια προσφέρει μερικά


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

646 / 680

Γενικές Ασκήσεις εμπέδωσης


Παραδείγματα (Θέματα Πανελλαδικών)

Έξοδος Προγράμματος / "Τιμές που θα


εμφανιστούν;"
 2005 / Θέμα 2ο
o Συνάρτηση

 2006 / Θέμα 1ο - Γ
o Διαδικασία

 2006 επάν. / Θέμα 2ο


o Συνάρτηση & Διαδικασία

 2007 / Θέμα 2ο
o Συνάρτηση

 2011 / Θέμα Β2 (Λύσεις)


o Διαδικασία

 2019 επάν. / Θέμα Β1 (Λύσεις)


o Διαδικασία

Πίνακες τιμών
 2014 επάν. / Θέμα Β1 (Λύσεις)
o Συνάρτηση

647 / 680

Γενικές Ασκήσεις εμπέδωσης


Παραδείγματα (Θέματα Πανελλαδικών)

Μετατροπής
 2007 / Θέμα 2ο
o Συνάρτηση σε Διαδικασία

648 / 680

5.2 Εκσφαλμάτωση
5.2.4 Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα

Κατά την εκσφαλμάτωση προγραμμάτων που χρησιμοποιούν


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.4, σελ.136

649 / 680

5.2 Εκσφαλμάτωση
5.2.4 Εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα

Παραδείγματα (Θέματα Πανελλαδικών)


 2019 / Θέμα Β2 (Λύσεις)

650 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»

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


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.138

651 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»
📖 Ένα σενάριο ελέγχου (test case) περιγράφει τα δεδομένα
εισόδου ολόκληρου του προγράμματος ή τμήματος του
προγράμματος (διαδικασία, συνάρτηση) και τα αναμενόμενα
αποτελέσματα. Τα σενάρια ελέγχου εκτελούνται, είτε σε
πραγματικό περιβάλλον προγραμματισμού είτε εικονικά με
δημιουργία πίνακα τιμών των μεταβλητών. Σε περίπτωση
αποκλίσεων μεταξύ των αναμενόμενων και των πραγματικών
αποτελεσμάτων, υπάρχει λάθος το οποίο πρέπει να εντοπιστεί
και να διορθωθεί

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.138

652 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»

💡 Μια δημοφιλής τεχνική ελέγχου είναι ο έλεγχος μαύρου


κουτιού (black-box testing). Ονομάζεται έτσι επειδή τα
δεδομένα εισόδου στα σενάρια ελέγχου προκύπτουν από τις
προδιαγραφές του προγράμματος, αγνοώντας εντελώς τον
κώδικα. Δηλαδή το πρόγραμμα μοιάζει σαν να βρίσκεται μέσα σε
ένα μαύρο κουτί που κρύβει το περιεχόμενό του.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.138

653 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»

Ιδανικά θα θέλαμε να ελέγξουμε όλες τις τιμές εισόδου και όλα τα


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

💡 Είναι σημαντικό να δημιουργούνται διαστήματα και για τις μη


έγκυρες τιμές εισόδου, καθώς δεν μπορούμε να είμαστε σίγουροι
ότι ένα πρόγραμμα θα τροφοδοτείται μόνο με έγκυρες τιμές

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.138

654 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»

Μετά τον καθορισμό των διαστημάτων πρέπει να επιλεγούν


τιμές για τα σενάρια ελέγχου που να καλύπτουν όλα τα
διαστήματα. Αφού τα διαστήματα είναι ισοδύναμα, μπορεί να
επιλεγεί οποιαδήποτε τιμή από κάθε διάστημα. Μια καλύτερη
στρατηγική είναι να γίνει έλεγχος των ακραίων τιμών κάθε
διαστήματος (boundary value analysis), καθώς η εμπειρία έχει
δείξει ότι τα περισσότερα λάθη γίνονται σε αυτά τα σημεία. Αυτό
είναι λογικό, αν σκεφτούμε ότι τα διαστήματα τιμών θα
υλοποιηθούν με κάποια μορφή δομής επιλογής, οπότε μπορεί να
υπάρχουν λάθη στις λογικές συνθήκες, π.χ. συμπερίληψη
ακραίας τιμής (<= αντί για <, >= αντί για >), παράλειψη ακραίας
τιμής (< αντί για <=, > αντί για >=).

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.138

655 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»

Η τεχνική που περιγράφηκε ανωτέρω, μπορεί να εφαρμοστεί και


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.140

656 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»

Στα προηγούμενα παραδείγματα, η είσοδος ήταν ακέραιος


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.140-


141

657 / 680

5.2 Εκσφαλμάτωση
5.2.5 Μέθοδος ελέγχου «Μαύρο Κουτί»

… Αν οι είσοδοι είναι περισσότερες, τότε κάθε μία πρέπει να


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §5.2.5, σελ.141

658 / 680

1.3 Άλλες δομές δεδομένων


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.37

659 / 680

1.3 Άλλες δομές δεδομένων


1.3.1 Λίστες

📖 Μία (απλά) συνδεδεμένη λίστα (linked list) είναι ένα σύνολο


κόμβων διατεταγμένων γραμμικά (ο ένας μετά τον άλλο). Κάθε
κόμβος περιέχει εκτός από τα δεδομένα του και έναν δείκτη
που δείχνει προς τον επόμενο κόμβο. Ο δείκτης του τελευταίου
κόμβου δε δείχνει σε κάποιον κόμβο (δείκτης στο κενό). Για να το
δηλώσουμε αυτό λέμε ότι το πεδίο δείκτη του τελευταίου
κόμβου έχει την τιμή NULL.

Για να προσπελάσουμε τους κόμβους της λίστας χρειάζεται να


γνωρίζουμε τη διεύθυνση (θέση στη μνήμη) του πρώτου κόμβου
της λίστας. Η διεύθυνση αυτή αποθηκεύεται σε μία ειδική
μεταβλητή που την ονομάζουμε συνήθως Κεφαλή (Head).
ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.38-39

660 / 680

1.3 Άλλες δομές δεδομένων


1.3.1 Λίστες

Οι κόμβοι μιας λίστας δεν έχουν ονόματα. Γνωρίζουμε μόνο τις


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.39

661 / 680

1.3 Άλλες δομές δεδομένων


1.3.1 Λίστες

💡 Πρόσβαση στους κόμβους μιας συνδεδεμένης λίστας

Οι κόμβοι μιας (απλά) συνδεδεμένης λίστας είναι διατεταγμένοι


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.39

662 / 680

1.3 Άλλες δομές δεδομένων


1.3.1 Λίστες

Μια λίστα μπορεί να είναι απλά συνδεδεμένη, όπως στο


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.41

663 / 680

1.3 Άλλες δομές δεδομένων


1.3.1 Λίστες

Στα πλεονεκτήματα των λιστών (έναντι των πινάκων)


συγκαταλέγονται τα εξής:

 Το δυναμικό τους μέγεθος,


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

664 / 680
1.3 Άλλες δομές δεδομένων
1.3.1 Λίστες

Στα μειονεκτήματα των λιστών (έναντι των πινάκων)


περιλαμβάνονται τα εξής:

 Η τυχαία πρόσβαση στη λίστα δεν επιτρέπεται . Είναι


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.42

665 / 680

1.3 Άλλες δομές δεδομένων


1.3.1 Λίστες

Συνοψίζοντας, θα μπορούσε κάποιος πρόχειρα να συμπεράνει


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.42

666 / 680

1.3 Άλλες δομές δεδομένων


1.3.1 Λίστες

Βασικές πράξεις των συνδεδεμένων λιστών


Οι βασικές πράξεις των συνδεδεμένων λιστών είναι οι παρακάτω:

 Εισαγωγή κόμβου στη λίστα (εισαγωγή κόμβου στην αρχή,


στο τέλος της λίστας ή ενδιάμεσα).
 Διαγραφή κόμβου από τη λίστα (διαγραφή από την αρχή, το
τέλος της λίστας ή ενδιάμεσα).
 Έλεγχος για το αν η λίστα είναι κενή.
 Αναζήτηση κόμβου για την εύρεση συγκεκριμένου
στοιχείου.
 Διάσχιση της λίστας και προσπέλαση των στοιχείων της
(π.χ. εκτύπωση των δεδομένων που περιέχονται σε όλους
τους κόμβους της λίστας).
 VisuAlgo - Linked List (Single, Doubly), Stack, Queue,
Deque

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.1, σελ.43

667 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Μερικές φορές τα πράγματα δεν είναι γραμμικά, όπως έχουμε δει


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

… ένα δένδρο αποτελείται από κόμβους, οι οποίοι συνδέονται


μεταξύ τους με ακμές.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.43

668 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Όταν δύο κόμβοι συνδέονται μεταξύ τους με μία ακμή, τότε


ονομάζουμε «γονέα» τον κόμβο από τον οποίο ξεκινάει η ακμή
και «παιδί» τον κόμβο στον οποίο καταλήγει η ακμή.

Ένας κόμβος μπορεί να έχει κανένα, ένα ή περισσότερα παιδιά.


Όλοι οι κόμβοι, εκτός από έναν, έχουν ακριβώς έναν γονέα. Ο
κόμβος χωρίς γονέα ονομάζεται «ρίζα» (root) και βρίσκεται στην
κορυφή του δένδρου. Κόμβοι με τον ίδιο γονέα ονομάζονται
«αδέλφια». Οι κόμβοι χωρίς παιδιά ονομάζονται «φύλλα».


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.44-45

669 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Ένα δένδρο (tree) είναι μία δομή που αποτελείται από ένα
σύνολο κόμβων και ένα σύνολο ακμών μεταξύ των κόμβων με
βάση τους εξής κανόνες:

 Υπάρχει ένας ξεχωριστός κόμβος που ονομάζεται ρίζα.


Αυτός είναι ένας κόμβος χωρίς γονέα.
 Για κάθε κόμβο c, εκτός από τη ρίζα, υπάρχει μόνο μια
ακμή που καταλήγει στον κόμβο αυτόν ξεκινώντας από
κάποιον άλλον κόμβο p. Ο κόμβος p ονομάζεται γονέας του
c και ο κόμβος c παιδί του p.
 Για κάθε κόμβο υπάρχει μία μοναδική διαδρομή, δηλαδή,
μια ακολουθία διαδοχικών ακμών, που ξεκινάει από τη ρίζα
και τερματίζει σε αυτόν τον κόμβο.

Δένδρο θεωρούμε και το κενό δένδρο, δηλαδή το δένδρο που δεν


έχει ούτε κόμβους, ούτε ακμές. Το κενό δένδρο είναι το μόνο
δένδρο χωρίς ρίζα.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.45

670 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Μέσα σε ένα δένδρο μπορούμε να εντοπίσουμε και άλλα


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.46

671 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Μιλήσαμε για τη σχέση γονέα-παιδιού, αλλά τι γίνεται με τη


σχέση μεταξύ των αδελφών; Έχει σημασία η σειρά των αδελφών
b και c; Όχι πάντοτε. Για παράδειγμα, αν θέλουμε να
μοντελοποιήσουμε την ιεραρχική σχέση των μελών μας
οικογένειας και μας ενδιαφέρει να οργανώσουμε τα αδέλφια
σύμφωνα με την ηλικία τους, τότε τα αδέλφια που θα έχουν
γεννηθεί νωρίτερα θα τοποθετηθούν στην δενδρική δομή πιο
αριστερά σε σχέση με αυτά που θα έχουν γεννηθεί αργότερα. Σε
αυτή την περίπτωση, που για κάθε κόμβο υπάρχει μία γραμμική
σχέση μεταξύ των παιδιών του κόμβου αυτού, αναφερόμαστε σε
ένα διατεταγμένο δένδρο.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.46

672 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Τα δένδρα είναι μία μη-γραμμική ευέλικτη δομή δεδομένων που


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


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.47

673 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Τα δένδρα απόφασης … είναι δένδρα στα οποία κάθε κόμβος


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.48

674 / 680

1.3 Άλλες δομές δεδομένων


1.3.2 Δένδρα

Δυαδικά Δένδρα
Ένα δυαδικό δένδρο (binary tree) είναι ένα διατεταγμένο δένδρο,
στο οποίο κάθε κόμβος έχει το πολύ δύο παιδιά, το αριστερό και
το δεξί παιδί. Μπορούμε, συνεπώς, να μιλάμε για αριστερό και
δεξιό υποδένδρο ενός κόμβου.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.50

675 / 680
1.3 Άλλες δομές δεδομένων
1.3.2 Δένδρα

Δυαδικά Δένδρα Αναζήτησης


Ένα δυαδικό δένδρο αναζήτησης (binary search tree) είναι ένα
δυαδικό δένδρο, όπου για κάθε κόμβο u, όλοι οι κόμβοι του
αριστερού υποδένδρου έχουν τιμές μικρότερες της τιμής του
κόμβου u και όλοι οι κόμβοι του δεξιού υποδένδρου έχουν τιμές
μεγαλύτερες (ή ίσες) της τιμής του κόμβου u. Για λόγους
απλούστευσης θεωρούμε ότι δεν υπάρχουν τιμές ίσες με την
τιμή του κόμβου u.

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


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

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


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

VisuAlgo - Binary Search Tree, AVL Tree

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.2, σελ.50

676 / 680

1.3 Άλλες δομές δεδομένων


1.3.3 Γράφοι

… το πιο θεμελιώδες χαρακτηριστικό των μη γραμμικών δομών


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

Αλλά τι θα γίνει αν αγνοήσουμε αυτούς τους κανόνες; Τότε, δεν


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

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.3, σελ.54

677 / 680

1.3 Άλλες δομές δεδομένων


1.3.3 Γράφοι

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

Με τους γράφους, όλοι αυτοί οι περιορισμοί δεν υπάρχουν. Οι


γράφοι δεν έχουν την έννοια ενός κόμβου «ρίζας». Οι κόμβοι
μπορούν να συνδεθούν με οποιονδήποτε τρόπο. … Οι γράφοι,
επίσης, δεν έχουν «μονοκατευθυντική» ροή - αντ’ αυτού, μπορεί
να έχουν κατεύθυνση ή να μην έχουν καμιά κατεύθυνση.

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.3, σελ.54

678 / 680

1.3 Άλλες δομές δεδομένων


1.3.3 Γράφοι
📖 Ένας γράφος (graph) είναι μία δομή που αποτελείται από ένα
σύνολο κόμβων (ή σημείων ή κορυφών) και ένα σύνολο γραμμών
(ή ακμών ή τόξων) που ενώνουν μερικούς ή όλους τους κόμβους.
Ο γράφος αποτελεί την πιο γενική δομή δεδομένων, με την
έννοια ότι όλες οι προηγούμενες δομές που παρουσιάστηκαν
μπορούν να θεωρηθούν περιπτώσεις γράφων

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.3, σελ.54

679 / 680

1.3 Άλλες δομές δεδομένων


1.3.3 Γράφοι

Τύποι Γράφων
📖 Εάν όλες οι ακμές σε έναν γράφο έχουν κατεύθυνση, ο γράφος
ονομάζεται κατευθυνόμενος γράφος (directed graph). Εάν
όλες οι ακμές σε έναν γράφο δεν έχουν κατεύθυνση, ο γράφος
ονομάζεται μη κατευθυνόμενος γράφος (undirected graph)

ΠΛΗΡΟΦΟΡΙΚΗ - Βιβλίο Μαθητή - Συμπληρωματικό Εκπαιδευτικό Υλικό, §1.3.3, σελ.55

680 / 680

1.1 Η έννοια πρόβλημα


Με τον όρο Πρόβλημα εννοείται μια κατάσταση η οποία χρήζει
αντιμετώπισης, απαιτεί λύση, η δε λύση της δεν είναι γνωστή,
ούτε προφανής.

ΑΕΠΠ - Βιβλίο Μαθητή, §1.1, σελ.15

3 / 680
Paused

Help
Keyboard shortcuts

↑, ←, Go to
Pg previous
Up, k slide
↓, →,
Pg
Go to next
Dn,
slide
Space
,j
Hom Go to first
e slide
Go to last
End
slide
Num
ber + Go to specific
Retur slide
n
Toggle
blackout /
b /
mirrored /
m / f
fullscreen
mode
Clone
c
slideshow
Toggle
p presenter
mode
Restart the
t presentation
timer
Toggle this
?, h
help
Es Back to
c slideshow

You might also like