You are on page 1of 74

ΑΕΠΠ – ΚΑΤΕΥΘΥΝΣΗΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΣΗΜΕΙΩΣΕΙΣ ΘΕΩΡΙΑΣ

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

ΕΥΑΓΓΕΛΟΣ Χ. ΖΙΟΥΛΑΣ
(ΚΑΘΗΓΗΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ)
e-mail : vczioulas@yahoo.com
url : http://www.zioulas.gr

www.zioulas.gr
ΣΧΟΛΙΚΟ ΕΤΟΣ 2016 - 2017
Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 1
ΑΕΠΠ – ΚΑΤΕΥΘΥΝΣΗΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΕΡΙΕΧΟΜΕΝΑ

Κεφάλαιο 2 – Βασικές Έννοιες Αλγορίθμων ................................................. 3

Κεφάλαιο 3 – Δομές Δεδομένων & Αλγόριθμοι ......................................... 23

Κεφάλαιο 5 – Ανάλυση Αλγορίθμων .......................................................... 36

Κεφάλαιο 6 – Εισαγωγή στον Προγραμματισμό ........................................ 41

Κεφάλαιο 7 – Βασικά Στοιχεία Προγραμματισμού..................................... 47

Κεφάλαιο 8 – Επιλογή & Επανάληψη......................................................... 52

Κεφάλαιο 9 – Πίνακες ............................................................................... 56

Κεφάλαιο 10 – Υποπρογράμματα .............................................................. 58

ΠΑΡΑΡΤΗΜΑΤΑ

Παράρτημα Α – Τυπολόγιο Ψευδογλώσσας .............................................. 65

Παράρτημα Β – Τυπολόγιο Γλώσσας.......................................................... 66

Παράρτημα Γ – Πίνακας ASCII .................................................................... 67

Παράρτημα Δ – Μοντέλα Επεξεργασίας Πινάκων...................................... 68

Παράρτημα Δ – Λειτουργίες σε Στοίβα & Ουρά ......................................... 74

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 2


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΚΕΦ.2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ


ΑΛΓΟΡΙΘΜΟΣ
Είναι έννοια που αφορά σε μεθόδους επίλυσης προβλημάτων και η ηλικία της αριθμεί
χιλιάδες χρόνια. Οι ρίζες της κρατούν από την αρχαιότητα με γνωστότερους αλγορίθμους
αυτούς του Ευκλείδη (για τον υπολογισμό του μέγιστου κοινού διαιρέτη δύο αριθμών) και
του Ερατοσθένη (κόσκινο Ερατοσθένη για την εύρεση των πρώτων αριθμών από 1 έως N).

Η λέξη προέρχεται από μια μελέτη του πέρση μαθηματικού Abu Ja’far
Mohammed ibn Musa al Khwarizmi (825 π.Χ) η οποία αποτελεί την πρώτη
πλήρη πραγματεία άλγεβρας.

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


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

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


 Εντολή: Είναι καθένα από τα αριθμημένα βήματα (ενέργειες) του αλγορίθμου.
 Εκτελεστής: Είναι αυτός που πρόκειται να εκτελέσει τις κατανοητές σε αυτόν εντολές του
αλγορίθμου (υπολογιστής ή άνθρωπος).
 Πρόγραμμα: Είναι ένας αλγόριθμος εκφρασμένος κατά τέτοιο τρόπο ώστε να γίνει
κατανοητός και εκτελέσιμος από τον υπολογιστή.

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


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

Παραδείγματα καθημερινών αλγορίθμων


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

Δημιουργία Γεύματος Ψήσιμο καφέ


Συγκέντρωσε τα υλικά Βάλε νερό στο μπρίκι
Προετοίμασε τα σκεύη Δώσε ποσότητα καφέ
Παρασκεύασε το φαγητό Δώσε ποσότητα ζάχαρης
Ετοίμασε τη σαλάτα Βάλε το μπρίκι στο μάτι
Στρώσε το τραπέζι Άναψε το μάτι της κουζίνας
Γευμάτισε αυτό που προετοίμασες Ανακάτεψε μέχρι να φουσκώσει
Καθάρισε το τραπέζι Βάλε το καφέ στο φλιτζάνι
Πλύνε πιάτα και κουζινικά

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 3


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΚΡΙΤΗΡΙΑ ΠΛΗΡΟΤΗΤΑΣ ΑΛΓΟΡΙΘΜΟΥ


Ένας αλγόριθμος χαρακτηρίζεται πλήρης όταν ικανοποιεί τα παρακάτω κριτήρια:
ΕΙΣΟΔΟΣ (input)
Ένας αλγόριθμος δέχεται καμία, μία ή πολλές τιμές δεδομένων που του δίνονται ως
είσοδοι. Η περίπτωση που έχουμε μηδέν δεδομένα είναι όταν:
 τα παράγει ο ίδιος ο αλγόριθμος (συναρτήσεις παραγωγής τυχαίων αριθμών για
δημιουργία ή επεξεργασία πρωτογενών τιμών)
 αποτελούν γνωστές τιμές από την διατύπωση του προβλήματος.

ΕΞΟΔΟΣ (output)
Κάθε αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία ή περισσότερες τιμές εξόδου που
είναι τα αποτελέσματά του. Αυτά τα αποτελέσματα απευθύνονται προς το χρήστη ή προς
ένα επόμενο αλγόριθμο.

ΚΑΘΟΡΙΣΤΙΚΟΤΗΤΑ (definiteness)
Κάθε εντολή θα πρέπει να είναι αυστηρά καθορισμένη, δηλαδή να μην αφήνει καμία
αμφιβολία για τον τρόπο εκτέλεσής της. π.χ. μια εντολή διαίρεσης θα πρέπει να λαμβάνει
υπόψη και την περίπτωση που ο διαιρέτης έχει την τιμή 0.

Χ  Α*Β (αυστηρά καθορισμένη εντολή)


Χ  Α/Β (μη καθορισμένη εντολή, αφού το Β μπορεί να είναι 0)
Χ  Α/(Β–3) (μη καθορισμένη εντολή αφού το Β μπορεί να είναι 3)
Χ  Τ_Ρ(Α) (μη καθορισμένη εντολή, αφού το Α μπορεί να είναι < 0)

ΠΕΡΑΤΟΤΗΤΑ (finiteness)
Ο αλγόριθμος θα πρέπει να επιλύει το πρόβλημα με την εκτέλεση πεπερασμένου αριθμού
εντολών σε πεπερασμένο χρόνο. Μια διαδικασία που δεν τελειώνει μετά από
πεπερασμένο αριθμό βημάτων ονομάζεται «υπολογιστική διαδικασία» και δεν αποτελεί
αλγόριθμο.

ΑΠΟΤΕΛΕΣΜΑΤΙΚΟΤΗΤΑ (effectiveness)
Κάθε εντολή του αλγορίθμου πρέπει να είναι απλή, δηλαδή δεν αρκεί να έχει ορισθεί αλλά
να είναι και εκτελέσιμη. π.χ. η εκχώρηση πραγματικής τιμής σε ακέραια μεταβλητή δεν
αποτελεί μια αποτελεσματική εντολή.

Χ  A + ″Hello″ (αναποτελεσματική εντολή, ανεπίτρεπτη αριθμητική έκφραση)


Z  5 > ″4″ (αναποτελεσματική εντολή, ανεπίτρεπτη λογική έκφραση)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 4


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΜΕΘΟΔΟΙ ΑΝΑΠΑΡΑΣΤΑΣΗΣ ΑΛΓΟΡΙΘΜΩΝ


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

ΕΛΕΥΘΕΡΟ ΚΕΙΜΕΝΟ (free text)


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

ΦΥΣΙΚΗ ΓΛΩΣΣΑ ΜΕ ΒΗΜΑΤΑ (natural language)


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

ΚΩΔΙΚΟΠΟΙΗΣΗ (coding)
Χρήση ενός προγράμματος (εκφρασμένου σε ψευδογλώσσα ή κάποια γλώσσα
προγραμματισμού) που όταν εκτελεστεί θα δώσει τα ίδια αποτελέσματα με τον αλγόριθμο.

ΔΙΑΓΡΑΜΜΑΤΙΚΕΣ ΤΕΧΝΙΚΕΣ (diagramming techniques)


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

Η έλλειψη Το παραλληλόγραμμο Το ορθογώνιο Ο ρόμβος δηλώνει μια


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

Τα Δ.Ρ.Δ είναι η πιο


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 5


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΠΑΡΑΔΕΙΓΜΑ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΟΣ

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

ΕΛΕΥΘΕΡΟ ΚΕΙΜΕΝΟ

Πάρε τον γραπτό και προφορικό βαθμό του μαθητή. Πρόσθεσε τους δύο βαθμούς και
διαίρεσε το άθροισμα με το 2. Αν το αποτέλεσμα είναι μεγαλύτερο από το 9.5, τότε ο
μαθητής περνάει την τάξη, διαφορετικά δεν την περνάει

ΦΥΣΙΚΗ ΓΛΩΣΣΑ ΜΕ ΒΗΜΑΤΑ

Βήμα 1 Διάβασε το προφορικό και το γραπτό βαθμό


Βήμα 2 Θέσε άθροισμα = προφορικός + γραπτός
Βήμα 3 Θέσε ΜΟ = άθροισμα / 2
Βήμα 4 Αν ΜΟ > 9.5 τότε πήγαινε στο βήμα 7
Βήμα 5 Εμφάνισε το μήνυμα «δεν περνάει»
Βήμα 6 Πήγαινε στο βήμα 8
Βήμα 7 Εμφάνισε το μήνυμα «Περνάει»
Βήμα 8 Τέλος αλγορίθμου

ΚΩΔΙΚΟΠΟΙΗΣΗ

Αλγόριθμος Μαθητής
Διάβασε Γραπτός, Προφορικός
Άθροισμα  Γραπτός + Προφορικός
ΜΟ  Άθροισμα / 2
Αν ΜΟ > 9.5 τότε
Εμφάνισε ″Περνάει″
Αλλιώς
Εμφάνισε ″Δεν Περνάει″
Τέλος_αν
Τέλος Μαθητής

ΔΙΑΓΡΑΜΜΑΤΙΚΕΣ ΤΕΧΝΙΚΕΣ (ΔΡΔ)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 6


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΣΤΟΙΧΕΙΑ ΑΛΓΟΡΙΘΜΟΥ
Ένας αλγόριθμος διατυπωμένος σε ψευδογλώσσα αρχίζει πάντα με τη λέξη «Αλγόριθμος»
ακολουθούμενη από το όνομα του αλγορίθμου και τελειώνει με την λέξη «Τέλος»
ακολουθούμενη πάλι από το ίδιο όνομα.
Αλγόριθμος Όνομα
δηλωτικές εντολές
Δεδομένα // … //
εντολή 1
Γενική μορφή εντολή 2
αλγορίθμου εκτελεστέες εντολές
..............
εντολή Ν
Αποτελέσματα // … //
δηλωτικές εντολές
Τέλος Όνομα

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

ΤΕΛΕΣΤΕΟΙ
Είναι οντότητες του αλγορίθμου που διακρίνονται σε σταθερές και μεταβλητές.
ΣΤΑΘΕΡΕΣ

Οι σταθερές (constants) είναι προκαθορισμένες τιμές που παραμένουν


αμετάβλητες σε όλη τη διάρκεια εκτέλεσης του αλγορίθμου.

ώρες  24
Οι σταθερές τιμές μέσα σε ένα αλγόριθμο μπορεί να είναι
π  3,14
κυριολεκτικές υπό μορφή απλής τιμής (π.χ. 24, 3.14, ″Μαρία″, όνομα  “Maria”
Αληθής) ή συμβολικές υπό μορφή αναγνωριστικών ονομάτων. βρέθηκε  Αληθής

ΜΕΤΑΒΛΗΤΕΣ

Οι μεταβλητές (variables) είναι γλωσσικά αντικείμενα που χρησιμοποιούνται


για να παραστήσουν στοιχεία δεδομένων.
Η διαφορά τους από τις σταθερές είναι ότι δέχονται μια αρχική
x  4
τιμή η οποία επιτρέπεται και να αλλάξει κατά τη διάρκεια y  2.5
εκτέλεσης του αλγορίθμου. μάθημα  ″ΑΕΠΠ″
x  x * y
μάθημα  ″ΑΟΘ″

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 7


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ
Όλα τα δεδομένα που χειρίζεται ο υπολογιστής δεν είναι ίδια και για να μπορέσει να τα
επεξεργαστεί, ομαδοποιούνται σε κατηγορίες. Κάθε κατηγορία δεδομένων ονομάζεται
τύπος δεδομένων. Οι κυριότεροι τύποι δεδομένων της ψευδογλώσσας είναι:

 Αριθμητικός - Ακέραιος (π.χ. 10 , 25 , 0 , -30 , 17 , -41)


 Αριθμητικός - Πραγματικός (π.χ. 2.5 , -6.8 , 3.3 , 0.4 , -1.0)
 Αλφαριθμητικός (π.χ. ″Mary30″, ″10″, ″Hello World !!″)
 Λογικός (π.χ. Αληθής, Ψευδής )

 Στις αριθμητικές τιμές περιλαμβάνονται όλοι οι ακέραιοι και πραγματικοί αριθμοί και
για να δημιουργηθούν χρησιμοποιούνται οι χαρακτήρες + και – καθώς και το κόμμα (,)
ως δεκαδικό σημείο.
 Οι αλφαριθμητικές τιμές αποτελούνται από συμβολοσειρές (strings) μέσα σε διπλά
εισαγωγικά που περιέχουν γράμματα, ψηφία ή σημεία στίξης.
 Οι λογικές τιμές, σε αντίθεση με τους άλλους δύο τύπους, είναι μόνο δύο, Αληθής και
Ψευδής.

Για παράδειγμα, η αριθμητική τιμή 10 δεν έχει καμία σχέση με την αλφαριθμητική τιμή
"10" που είναι μία συμβολοσειρά αποτελούμενη από τα ψηφία 1 και 0.
X  10
Y  "10"
Z  X + 2 (επιτρεπτή εντολή)
Z  Y + 2 (λάθος, μη αποτελεσματική εντολή)

ΚΑΝΟΝΕΣ ΟΝΟΜΑΤΩΝ
Τα αναγνωριστικά (identifiers) που επιλέγουμε για το όνομα ενός αλγορίθμου, όπως
και για τα συμβολικά ονόματα των σταθερών και μεταβλητών του, πρέπει να
πληρούν τους εξής περιορισμούς:
 Αποτελούνται μόνο από επιτρεπτά σύμβολα
 γράμματα ελληνικά (Α..Ω, α..ω) ή λατινικά (A..Z, a..z) Προτείνεται να
 ψηφία (0..9) χρησιμοποιούνται
ονόματα μεταβλητών
 χαρακτήρας _ (κάτω παύλα, underscore) και σταθερών τέτοια
 Πρέπει υποχρεωτικά να αρχίζουν με γράμμα που να παραπέμπουν
 Δεν αποτελούν δεσμευμένες λέξεις της ψευδογλώσσας στο περιεχόμενο

 Δεν περιέχουν κενά ή άλλα μη αποδεκτά σύμβολα


Παραδείγματα εσφαλμένων ονομάτων : 100Α, Κόστος$, Διάβασε, Μέση Τιμή

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 8


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΔΕΣΜΕΥΜΕΝΕΣ ΛΕΞΕΙΣ
Οι δεσμευμένες λέξεις (reserved words) είναι λέξεις που έχουν αυστηρά
προκαθορισμένη σημασία στον αλγόριθμο.

Οι δεσμευμένες λέξεις έχουν διπλή χρησιμότητα μέσα σε έναν αλγόριθμο:


 Κάνουν πιο ομοιόμορφη τη γλώσσα του κώδικα (π.χ. Αλγόριθμος, Τέλος, Δεδομένα,
Αποτελέσματα)
 Περιγράφουν τις εντολές της ψευδογλώσσας (π.χ. Διάβασε, Εμφάνισε, Εκτύπωσε,
Αντιμετάθεσε κλπ.).

ΤΕΛΕΣΤΕΣ
Είναι τα σύμβολα που υλοποιούν τις διάφορες πράξεις. Διακρίνονται σε τρία είδη :

Αριθμητικοί + , - , * , / , div, mod, ^


= ,  , ,  ,  ,  τελεστές ψευδογλώσσας
Συγκριτικοί
= , <> , ,  , >= , <= τελεστές γλώσσας

Λογικοί ΚΑΙ , Ή , ΟΧΙ

Οι αριθμητικοί τελεστές (πρόσθεση, αφαίρεση, πολλαπλασιασμός, πραγματική διαίρεση,


ακέραιο πηλίκο, ακέραιο υπόλοιπο και ύψωση σε δύναμη) χρησιμοποιούνται στις πράξεις
μεταξύ αριθμητικών σταθερών και μεταβλητών.
Τελεστής Εξήγηση Παράδειγμα
+ Πρόσθεση 12 + 7 = 19
- Αφαίρεση 5 – 8 = -3
* Πολλαπλασιασμός 3 * 5 = 15
/ Πραγματική διαίρεση 17 / 5 = 3.4
17 div 5 = 3
div Ακέραιο πηλίκο
5 div 17 = 0
17 mod 5 = 2
mod Ακέραιο υπόλοιπο
5 mod 17 = 5
^ Ύψωση σε δύναμη 5^3 = 125

 Οι τελεστές div και mod μπορούν να εφαρμοστούν μόνο σε θετικούς ακέραιους


αριθμούς. Η πρακτική χρήση του τελεστή mod είναι για να ελεγχθεί αν ένας αριθμός Χ
είναι πολλαπλάσιο ενός αριθμού α με την πράξη Χ mod α = 0.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 9


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

 Ο τελεστής div υπολογίζει το ακέραιο πηλίκο μιας διαίρεσης ενώ ο τελεστής mod το
ακέραιο υπόλοιπο μιας διαίρεσης π.χ.

Οι συγκριτικοί τελεστές χρησιμοποιούνται στις λογικές εκφράσεις για να συγκρίνουν δύο


αριθμητικές, αλφαριθμητικές ή λογικές τιμές π.χ.

Τελεστής Εξήγηση Παράδειγμα Τιμή


5>2 Αληθής
> Μεγαλύτερο
″Γιώργος″ > ″Μαρία″ Ψευδής
34 < 2 Ψευδής
< Μικρότερο
″Κ″ < ″Αλέξανδρος″ Ψευδής
15 = 30 div 2 Αληθής
= Ίσο με
″Β″ = ″Β″ Αληθής
20 div 4 ≥ 10 mod 2 Αληθής
≥ Μεγαλύτερο ή ίσο
″Καλημέρα″ ≥ ″Καλησπέρα″ Ψευδής
3 * 5 ≤ 100 div 20 Ψευδής
≤ Μικρότερο ή ίσο
″Γιάννης″ ≤ ″Ελένη″ Αληθής
42 ≠ 7 * 6 Ψευδής
≠ Διάφορο
″ΝΙΚΟΣ″ ≠ ″Νίκος″ Αληθής
 Ένα αλφαριθμητικό δεδομένο μπορεί να περιέχει ένα ή περισσότερους χαρακτήρες. Η
σύγκριση μεταξύ αλφαριθμητικών δεδομένων γίνεται βάσει αλφαβητικής σειράς των
χαρακτήρων και γενικότερα βασίζεται στη διάταξη των χαρακτήρων βάσει του κώδικα ASCII.
 Όταν συγκρίνουμε λογικές τιμές, η μόνη σύγκριση που επιτρέπεται να γίνει είναι η περίπτωση
του ίσου (=) και του διαφόρου (≠). Αυτό συμβαίνει διότι οι μόνες τιμές που παίρνουν τα λογικά
δεδομένα είναι οι λογικές τιμές Αληθής και Ψευδής και άρα δεν έχει νόημα η σύγκριση
μεγαλύτερο (>) ή μικρότερο (<) μεταξύ τους.
Οι λογικοί τελεστές ΚΑΙ (σύζευξη), Ή (διάζευξη) και ΌΧΙ (άρνηση) χρησιμοποιούνται στις
λογικές εκφράσεις για την δημιουργία πιο σύνθετων συνθηκών και έχουν πάντα ως
αποτέλεσμα την λογική τιμή Αληθής ή Ψευδής π.χ.
Τελεστής Εξήγηση Παράδειγμα Τιμή
5 > 2 ΚΑΙ 5 < 12 Αληθής
ΚΑΙ Σύζευξη
″Γ″ < ″Μ″ ΚΑΙ ″Γ″ > ″Δ″ Ψευδής
3 < 20 Ή 3 > 1 Αληθής
Ή Διάζευξη
″Κ″ = ″Α″ Ή ″Κ″ = ″Χ″ Ψευδής
ΟΧΙ(5 > 2) Ψευδής
ΟΧΙ Άρνηση
ΟΧΙ(″Α″ > ″ΑΕΠΠ″) Αληθής

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 10


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΕΚΦΡΑΣΕΙΣ
Είναι προτάσεις που αποτελούνται από τελεστέους (σταθερές και μεταβλητές), τελεστές,
συναρτήσεις και παρενθέσεις. Το αποτέλεσμα που προκύπτει από την αποτίμηση της
έκφρασης, μπορεί να αποδίδεται σε μία μεταβλητή, ή να συνιστά στην εκτέλεση μιας
πράξης. Η τελική τιμή της έκφρασης εξαρτάται από την ιεραρχία των πράξεων και την
χρήση των παρενθέσεων.

ΙΕΡΑΡΧΙΑ ΤΩΝ ΠΡΑΞΕΩΝ – ΚΑΝΟΝΕΣ ΠΡΟΤΕΡΑΙΟΤΗΤΩΝ


1) Από τα αριστερά προς τα δεξιά
2) Παρενθέσεις ( ) αρχικά οι εσωτερικές
3) Δυνάμεις ( ^ )
4) Πολλαπλασιασμοί ( * ) – Διαιρέσεις ( /, div, mod )
5) Προσθέσεις ( + ) – Αφαιρέσεις ( - )
6) Συγκρίσεις ( = ,  , ,  ,  ,  )
7) Λογικές ( ΟΧΙ, ΚΑΙ, Η )

Για να προκύψει η τιμή μιας έκφρασης θα πρέπει να αντικατασταθούν όλες οι μεταβλητές


με τις τιμές τους. Για το λόγο αυτό, είναι απαραίτητο όλες οι μεταβλητές σε μία έκφραση
να έχουν από πριν κάποια τιμή (να είναι ορισμένες).
Οι εκφράσεις χωρίζονται σε δύο κατηγορίες:
Αριθμητικές εκφράσεις
 Υλοποιούν απλές ή σύνθετες μαθηματικές πράξεις και μετά την εκτέλεση των
πράξεων παράγουν πάντα μια αριθμητική τιμή.
 Για τη σύνταξη μιας αριθμητικής έκφρασης χρησιμοποιούμε μεταξύ άλλων
αριθμητικές σταθερές, μεταβλητές, συναρτήσεις, αριθμητικούς τελεστές και
παρενθέσεις.
α + β + γ
α^2 + Τ_Ρ(γ)
β/(γ-2) – Α_Τ(β)
(β+2)^(1/2)/3

Λογικές Εκφράσεις
 Είναι εκφράσεις που υλοποιούν συγκρίσεις και δίνουν ως αποτέλεσμα μια λογική
τιμή Αληθής ή Ψευδής.
 Για τη σύνταξη μιας λογικής έκφρασης χρησιμοποιούμε μεταξύ άλλων συγκριτικούς
και λογικούς τελεστές, σταθερές, μεταβλητές, παρενθέσεις και αριθμητικές
εκφράσεις.
x+1 > y-2
όνομα = ″ΑΕΠΠ″
x>5 KAI x<10
ΟΧΙ(α>0)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 11


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΕΝΤΟΛΗ ΕΚΧΩΡΗΣΗΣ ΤΙΜΗΣ


Η σύνταξη της εντολής εκχώρησης έχει την γενική μορφή:

μεταβλητή  έκφραση

Το σύμβολο  διαβάζεται «γίνεται» ή «εκχώρησε» και δεν έχει καμία σχέση με το


σύμβολο της ισότητας (=), αφού δεν πρόκειται για εξίσωση. Το σύμβολο του βέλους δείχνει
την φορά της εκχώρησης.
Η έκφραση που τοποθετείται στα δεξιά του τελεστή εκχώρησης () μπορεί να είναι
αριθμητική ή λογική π.χ.
Α  5
Χ  Α + 3 (αριθμητική έκφραση, Χ = 8)
Υ  Α > 10 (λογική έκφραση, Υ = Ψευδής)

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

ΠΑΡΑΤΗΡΗΣΕΙΣ ΓΙΑ ΤΗΝ ΕΝΤΟΛΗ ΕΚΧΩΡΗΣΗΣ


Στο αριστερό μέρος μιας εντολής εκχώρησης επιτρέπεται να υπάρχει μόνο μία
μεταβλητή π.χ.
Σωστές εντολές: Χ  Α*Β όνομα  ″Μαρία″
Λάθος εντολές: Α*Β  Χ ″Μαρία″  όνομα

Η ίδια μεταβλητή μπορεί να βρίσκεται και δεξιά και αριστερά του τελεστή εκχώρησης
π.χ.
Στην εντολή Χ  Χ + 2 η μεταβλητή Χ αυξάνεται κατά 2.
Στην εντολή Α  ΟΧΙ(Α) η μεταβλητή Α αλλάζει λογική τιμή.

Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου
δεδομένων π.χ.
Στην εντολή Χ  A div Β η μεταβλητή Χ είναι ακεραίου τύπου
Στην εντολή Υ  A / Β η μεταβλητή Υ είναι πραγματικού τύπου
Στην εντολή Α  Αληθής η μεταβλητή Α είναι λογικού τύπου
Στην εντολή Z  ″Καλημέρα″ η μεταβλητή Ζ είναι αλφαριθμητικού τύπου

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 12


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΕΙΣΟΔΟΣ – ΕΞΟΔΟΣ ΑΛΓΟΡΙΘΜΟΥ


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

Διάβασε μεταβλητή 1, μεταβλητή 2, …, μεταβλητή Ν

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

Εμφάνισε αποτέλεσμα 1, αποτέλεσμα 2, …, αποτέλεσμα Ν

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


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

Α  7
Β  5 10
Εμφάνισε 10 Εμφάνιση Α = 7
Εμφάνισε ″Α = ″,Α στην Β = 5
Εμφάνισε ″Β = ″,Β Α+Β = 12
Εμφάνισε ″Α+Β = ″,Α+Β

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

Εναλλακτικοί τρόποι εισόδου - εξόδου


Αν στην διατύπωση ενός προβλήματος
Αλγόριθμος Αθροισμα Αλγόριθμος Αθροισμα ζητείται να διαβαστούν τα δεδομένα του ή
Διάβασε Α, Β Δεδομένα // Α, Β // να εμφανιστούν τα αποτελέσματά του,
Σ  Α + Β Σ  Α + Β
Εμφάνισε Σ Εμφάνισε Σ τότε ακολουθούμε την μέθοδο των
Τέλος Αθροισμα Τέλος Αθροισμα εντολών Διάβασε, Εμφάνισε.
Διαφορετικά αν η διατύπωση του
Αλγόριθμος Αθροισμα Αλγόριθμος Αθροισμα προβλήματος δεν ζητά κάτι τέτοιο, τότε
Διάβασε Α, Β Δεδομενα // Α, Β //
Σ  Α + Β Σ  Α + Β
μπορούν να εφαρμοστούν οι εντολές
Αποτελέσματα //Σ// Αποτελέσματα //Σ// Δεδομένα//…// και
Τέλος Αθροισμα Τέλος Αθροισμα Αποτελέσματα//…// για τη διαχείριση
εισόδου και εξόδου.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 13


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΛΟΓΙΚΕΣ ΕΚΦΡΑΣΕΙΣ – ΣΥΝΘΗΚΕΣ

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

ΑΠΛΕΣ ΣΥΝΘΗΚΕΣ
ΑΛΗΘΕΙΣ ΨΕΥΔΕΙΣ
Μια απλή συνθήκη βασίζεται στη σύγκριση 5 > 2 -3 > 10
δύο τιμών με χρήση κατάλληλων ″A″ < ″F″ ″Β″ > ″Δ″
συγκριτικών τελεστών (=, >, <, ≥, ≤, ≠). 10 ≤ 15 35 = 10
″John″ ≠ ″john″ ″ΑΒΓ″ = ″ΑΒC″
ΣΥΝΘΕΤΕΣ ΣΥΝΘΗΚΕΣ
Μπορούμε να δημιουργήσουμε σύνθετες συνθήκες χρησιμοποιώντας τους λογικούς
τελεστές ΚΑΙ (σύζευξη), Ή (διάζευξη), ΟΧΙ (άρνηση).
Τα αποτελέσματα κάθε πράξης, φαίνονται στον παρακάτω πίνακα αληθείας.
Θεωρούμε ότι τα Α, Β είναι λογικές μεταβλητές ή λογικές εκφράσεις (συνθήκες).

Α Β Α ΚΑΙ Β Α ‘Η Β ΟΧΙ(Α)
Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Ψευδής Αληθής Ψευδής
Ψευδής Αληθής Ψευδής Αληθής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής

ΣΥΖΕΥΞΗ : Το αποτέλεσμα είναι Αληθής όταν και οι α  5


δύο συνθήκες είναι Αληθής. Σε κάθε άλλη περίπτωση β  7
είναι Ψευδής. γ  -3
α > 0 και α < 10 (Αληθής)
ΔΙΑΖΕΥΞΗ : Το αποτέλεσμα είναι Αληθής όταν
α > β ή α < 10 (Αληθής)
τουλάχιστον μία από τις δύο συνθήκες είναι Αληθής.
β ≠ α και β ≠ γ (Αληθής)
Σε διαφορετική περίπτωση είναι Ψευδής.
όχι(β > α) (Ψευδής)
ΑΡΝΗΣΗ : Το αποτέλεσμα είναι Αληθής αν η γ ≥ α και α < β (Ψευδής)
συνθήκη είναι Ψευδής και Ψευδής αν η συνθήκη α = β ή α = γ (Ψευδής)
είναι Αληθής.
Οι τελεστές ΚΑΙ, ‘Η χρειάζονται δύο τελεστέους (συνθήκες) για να εφαρμοστούν.
Αντιθέτως, ο τελεστής ΟΧΙ εφαρμόζεται σε έναν τελεστέο.

Παρατήρηση: Τις συνθήκες τις συναντάμε κυρίως μέσα στις δομές επιλογής και επανάληψης ή
ακόμα και σε εντολές εκχώρησης (αρκεί η μεταβλητή στην οποία εκχωρείται μια λογική
έκφραση, να είναι μία λογική μεταβλητή) π.χ.
α  10 ( α ακέραια μεταβλητή με τιμή 10 )
y  α > 5 ( y λογική μεταβλητή με τιμή Αληθής )

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 14


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΔΟΜΕΣ ΕΝΤΟΛΩΝ
Στον Δομημένο Προγραμματισμό όλες οι διαδικασίες ακολουθούν τρία βασικά
σχήματα δομών εντολών για τη κατασκευή του αλγορίθμου. Αυτές οι δομές εντολών
ονομάζονται και αλγοριθμικές δομές ή συνιστώσες και μας επιτρέπουν να λύσουμε
το οποιοδήποτε πρόβλημα. Αυτές είναι:

ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ
Σύμφωνα με την δομή αυτή, που χρησιμοποιείται πρακτικά για την αντιμετώπιση
απλών προβλημάτων, οι εντολές του αλγορίθμου εκτελούνται σειριακά
(ακολουθιακά), δηλαδή η μία μετά την άλλη. Ο αλγόριθμος ξεκινάει με την
επικεφαλίδα, ακολουθεί η είσοδος των δεδομένων, η επεξεργασία τους, η έξοδος
των αποτελεσμάτων και τέλευταία η εντολή του τέλους του αλγορίθμου.

ΔΟΜΗ ΕΠΙΛΟΓΗΣ
Με την δομή αυτή καταργείται η ακολουθιακή ροή εκτέλεσης των εντολών του
αλγορίθμου. Αυτό γίνεται βάσει του αποτελέσματος της συνθήκης μιας εντολής
επιλογής, που μπορεί να πάρει δύο εναλλακτικές τιμές, (Αληθής ή Ψευδής). Βάσει
του αποτελέσματος, μόνο ένα τμήμα της εντολής επιλογής εκτελείται κάθε φορά.

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 15


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

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

ΑΠΛΗ ΕΠΙΛΟΓΗ
Αν η συνθήκη είναι αληθής τότε εκτελούνται οι εντολές, διαφορετικά δεν γίνεται τίποτα.

Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα

Αν Συνθήκη τότε εντολή Διάβασε α


Αν α < 0 τότε
Αν Συνθήκη τότε α  α * (-1)
εντολές Τέλος_αν
Τέλος_αν Εμφάνισε α

ΣΥΝΘΕΤΗ ΕΠΙΛΟΓΗ
Αν η συνθήκη είναι αληθής τότε εκτελούνται οι εντολές 1, διαφορετικά οι εντολές 2.

Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα

Αν Συνθήκη τότε Διάβασε α


Εντολές 1 Αν α mod 2 = 0 τότε
Εμφάνισε ″άρτιος″
Αλλιώς
Αλλιώς
Εντολές 2 Εμφάνισε ″περιττός″
Τέλος_αν Τέλος_αν

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

Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα


Αν Συνθ 1 τότε
Εντολές 1 Διάβασε χ
Αν χ = 1 τότε
Αλλιώς_αν Συνθ 2 τότε
Εμφάνισε ″Α″
Εντολές 2 Αλλιώς_αν χ = 2 τότε
Αλλιώς_αν Συνθ 3 τότε Εμφάνισε ″Β″
Εντολές 3 Αλλιώς_αν χ = 3 τότε
..… Εμφάνισε ″Γ″
Αλλιώς
Αλλιώς Εμφάνισε ″Λάθος″
Εντολές Τέλος_αν
Τέλος_αν

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 16


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

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

ΟΣΟ … ΕΠΑΝΑΛΑΒΕ
Όσο η συνθήκη είναι Αληθής, εκτελούνται οι εντολές που βρίσκονται μέσα στο σώμα της εντολής
ΟΣΟ.
Όταν η συνθήκη γίνει Ψευδής, η εντολή ΟΣΟ τερματίζει την εκτέλεσή της.
Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα

α  1
Όσο Συνθήκη επανάλαβε Όσο α <= 100 επανάλαβε
εντολές Εμφάνισε α
Τέλος_επανάληψης α  α + 1
Τέλος_Επανάληψης

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ … ΜΕΧΡΙΣ_ΟΤΟΥ
Οι εντολές της επανάληψης εκτελούνται τουλάχιστον 1 φορά. Η επαναληπτική τους εκτέλεση
συνεχίζεται όσο η συνθήκη είναι Ψευδής. Όταν η συνθήκη γίνει Αληθής, η εντολή ΜΕΧΡΙΣ_ΟΤΟΥ
τερματίζει την εκτέλεσή της.

Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα

α  1
Αρχή_Επανάληψης Αρχή_Επανάληψης
εντολές Εμφάνισε α
Μέχρις_ότου Συνθήκη α  α + 1
Μέχρις_Ότου α > 100

ΓΙΑ … ΑΠΟ … ΜΕΧΡΙ … ΜΕ_ΒΗΜΑ …


Η μεταβλητή παίρνει όλες τις τιμές από το τ1 μέχρι το τ2, μεταβαλλόμενη κάθε φορά κατά β.
Ο αριθμός των τιμών που παίρνει κάθε φορά η μεταβλητή προσδιορίζει και το πλήθος των
επαναλήψεων εκτέλεσης της εντολής ΓΙΑ. Όταν το βήμα είναι 1, το τμήμα με_βήμα μπορεί να
παραλειφθεί

Τύπος Εντολής Διάγραμμα Ροής Παράδειγμα

Για μετ από τ1 μέχρι τ2 με_βήμα


Ίδιο με της Για α από 1 μέχρι 100
β
εντολής Εμφάνισε α
εντολές Τέλος_επανάληψης
Όσο…επανάλαβε
Τέλος_επανάληψης

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 17


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ ΤΩΝ ΕΝΤΟΛΩΝ ΕΠΑΝΑΛΗΨΗΣ


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

Σε μια εντολή επανάληψης, το τμήμα που επαναλαμβάνεται καλείται βρόχος


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

ΠΑΡΑΔΕΙΓΜΑ (αντιστοιχίες εντολών επανάληψης)


i1 i1 Για i από 1 μέχρι 100 με_βήμα 1
Όσο (i  100) επανέλαβε Αρχή_Επανάληψης Εμφάνισε i
Εμφάνισε i Εμφάνισε i Τέλος_επανάληψης
ii+1 ii+1
Τέλος_επανάληψης Μέχρις_ότου (i > 100)

Και οι τρεις παραπάνω εντολές κάνουν το ίδιο πράγμα (εμφανίζουν τους αριθμούς από 1 έως 100).
Οι δύο πρώτες (ΟΣΟ, ΜΕΧΡΙΣ_ΟΤΟΥ) για να εξασφαλίσουν την περατότητα, προσαυξάνουν τον δείκτη i κατά
1 μέσα σε κάθε επανάληψη, πράγμα που στην τρίτη εντολή (ΓΙΑ) γίνεται αυτόματα από το βήμα.
Η ΟΣΟ έχει την συνθήκη στην αρχή και η ΜΕΧΡΙΣ ΟΤΟΥ στο τέλος της επανάληψης.
Οι συνθήκες περιέχουν εντελώς αντίθετους συγκριτικούς τελεστές, αλλά όμως κάνουν το ίδιο πράγμα,
δηλαδή ελέγχουν τον δείκτη i να μην υπερβεί το πάνω όριο που είναι 100.

ΠΑΡΑΔΕΙΓΜΑΤΑ (εντολής ΓΙΑ)


Εντολή Φορές - Επαναλήψεις Τιμές δείκτη ι
Για ι από 1 μέχρι 10 10 φορές 1,2,3,...,10
Για ι από 10 μέχρι 1 με_βήμα –1 10 φορές 10,9,8,...,1
Για ι από 0 μέχρι 1 με_βήμα 0.1 11 φορές 0.0, 0.1, ..., 1.0
Για ι από 5 μέχρι 5 1 φορά 5
Για ι από 5 μέχρι 1 0 φορές ---
Για ι από 0 μέχρι 10 11 φορές 0,1,2,...,10,
Για ι από 0 μέχρι 10 με_βήμα 2 6 φορές 0,2,4,6,8,10
Για ι από 1 μέχρι 2 με_βήμα 0 άπειρες φορές 1,1,1,1,….

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 18


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΠΑΡΑΔΕΙΓΜΑ (μετατροπή εντολής ΓΙΑ σε ΟΣΟ και αντίστροφα)

Έστω ότι θέλουμε να εμφανίσουμε όλους τους άρτιους αριθμούς από το 1 έως το 100

i  2
Για A από 2 μέχρι 100 με_βήμα 2 Όσο i <= 100 επανάλαβε
Εμφάνισε A Εμφάνισε i
Τέλος_επανάληψης i  i + 2
Τέλος_επανάληψης

ΑΠΑΙΤΟΥΜΕΝΕΣ ΕΝΕΡΓΕΙΕΣ ΓΙΑ ΟΣΟ

Αρχικοποίηση μεταβλητής Α από 2 Α  2

Έλεγχος τελικής τιμής μέχρι 100 Α ≤ 100

Βήμα προσαύξησης ή μείωσης με_βήμα 2 Α  Α + 2

(*) Οι ενέργειες είναι ανάλογες στην περίπτωση που το βήμα είναι αρνητικό

ΕΜΦΩΛΕΥΜΕΝΕΣ ΔΟΜΕΣ
Είναι σύνθετες δομές εντολών, σύμφωνα με τις οποίες, μέσα στο σώμα μιας δομής
εντολών ανοίγει και ολοκληρώνεται μια άλλη δομή εντολών, του ιδίου ή άλλου
τύπου. Οι εντολές που ανοίγουν τελευταίες πρέπει να κλείνουν πρώτες π.χ.

Παραδείγματα εμφωλευμένων δομών:

Αν (Συνθ) τότε Για i από 1 μέχρι 10 Αρχή_Επανάληψης


Αν (Συνθ) τότε Όσο (j<20) επανάλαβε Αν (Συνθ) τότε
εντολές εντολές εντολές
Αλλιώς Τέλος_επανάληψης αλλιώς
εντολές εντολές εντολές
Τέλος_αν Τέλος_επανάληψης Τέλος_αν
Τέλος_αν Μέχρις_Ότου (Συνθ)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 19


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΜΦΩΛΕΥΜΕΝΩΝ ΔΟΜΩΝ ΕΝΤΟΛΩΝ

ΕΜΦΩΛΕΥΜΕΝΕΣ ΑΝ..ΑΛΛΙΩΣ

Αν (Συνθ 1) τότε
Εντολές 1
αλλιώς
Αν (Συνθ 2) τότε
Εντολές 2
αλλιώς
Αν (Συνθ 3) τότε
Εντολές 3
αλλιώς
Εντολές 4
Τέλος_αν
Τέλος_αν
Τέλος_αν

ΕΜΦΩΛΕΥΜΕΝΕΣ ΌΣΟ ΕΜΦΩΛΕΥΜΕΝΕΣ ΜΕΧΡΙΣ_ΟΤΟΥ

Όσο (Συνθ 1) επανάλαβε Αρχή_Επανάληψης


εντολές 1 εντολές 1
Όσο (Συνθ 2) επανάλαβε Αρχή_επανάληψης
εντολές 2 εντολές 2
Τέλος_επανάληψης Μέχρις_ότου (Συνθ 2)
Τέλος_επανάληψης Μέχρις_ότου (Συνθ 1)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 20


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

ΣΧΟΛΙΑ (Comments)
Είναι επεξηγηματικές φράσεις του αλγορίθμου, οι οποίες για να διαχωριστούν από τις
λέξεις κλειδιά του αλγορίθμου (δεσμευμένες λέξεις και εντολές), γράφονται αρχίζοντας με
τον χαρακτήρα !
Δηλαδή ότι ακολουθεί τον χαρακτήρα ! μέσα στον αλγόριθμο και μέχρι το τέλος της
τρέχουσας γραμμής, θεωρείται ως σχόλιο (επεξηγηματική φράση) και δεν λαμβάνεται
υπόψη ως εντολή από τον αλγόριθμο.

ΓΕΝΙΚΗ ΔΟΜΗ ΑΛΓΟΡΙΘΜΟΥ


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

Αλγόριθμος Όνομα_Αλγορίθμου
Δεδομένα // ....... //
...
...
εντολές
...
...
Αποτελέσματα // ......... //
Τέλος Όνομα_Αλγορίθμου

ΟΛΙΣΘΗΣΗ (SHIFT)
Μέσα στον υπολογιστή όλα τα δεδομένα (αριθμοί, λέξεις, σύμβολα κλπ) παρουσιάζονται
με δυαδικά ψηφία 0 και 1. Ένας αριθμός μπορεί για παράδειγμα να παρασταθεί από 1 byte
δηλαδή από 8 bits π.χ. 17  00010001.
► Ολίσθηση προς τα αριστερά σημαίνει ότι χάνεται το αριστερότερο ψηφίο της
δυαδικής ακολουθίας η οποία και συμπληρώνεται από τα δεξιά με 0.
► Ολίσθηση προς τα δεξιά σημαίνει ότι χάνεται το δεξιότερο ψηφίο της δυαδικής
ακολουθίας η οποία και συμπληρώνεται από τα αριστερά με 0.
Η ολίσθηση προς τα αριστερά ισοδυναμεί με πολλαπλασιασμό επί 2
Η ολίσθηση προς τα δεξιά ισοδυναμεί με ακέραια διαίρεση διά 2

ΠΑΡΑΔΕΙΓΜΑ 17  00010001 αρχικός αριθμός


34  00100010 ολίσθηση προς τα αριστερά
8  00001000 ολίσθηση προς τα δεξιά

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 21


ΑΕΠΠ / ΚΕΦ. 2 - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ

Ο υπολογιστής προκειμένου να εκτελέσει τον πολλαπλασιασμό μεταξύ δύο αριθμών Α και


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

Αλγόριθμος Πολ_αλά_Ρωσικά
Δεδομένα // Α, Β //
S  0
Όσο Β > 0 επανάλαβε
Αν Β mod 2 = 1 τότε
S  S + Α
Τέλος_Αν
Α  Α * 2
Β  B div 2
Τέλος_επανάληψης
Αποτελέσματα // S //
Τέλος Πολ_αλά_Ρωσικά

ΠΑΡΑΔΕΙΓΜΑ : Έστω ότι θέλουμε να υπολογίσουμε το γινόμενο των αριθμών 45 και 19


 Θεωρούμε τον αριθμό 45 ως Α και τον αριθμό 19 ως Β (ή αντίστροφα)
 Διπλασιάζουμε συνεχώς τον αριθμό Α και υποδιπλασιάζουμε ακέραια τον αριθμό Β
 Η διαδικασία συνεχίζεται μέχρι ο αριθμός Β να γίνει 0
 Στην στήλη του Β, όσοι αριθμοί είναι περιττοί προσθέτουμε τα αντίστοιχα Α
 Το άθροισμα των Α είναι και το τελικό αποτέλεσμα (γινόμενο Α*Β)

Α Β
45 19 45
90 9 90
180 4
360 2
720 1 + 720
1440 0
Άθροισμα 855

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


υλοποιείται πολύ πιο απλά από τον χειρωνακτικό τρόπο πολλαπλασιασμού. Πιο
συγκεκριμένα, απαιτεί πολλαπλασιασμό επί 2 (left shift), διαίρεση διά 2 (right shift) και
πρόσθεση. Αντιθέτως, η γνωστή μας διαδικασία πολλαπλασιασμού είναι πιο χρονοβόρα
γιατί απαιτεί πολλαπλασιασμό με οποιονδήποτε ακέραιο και πρόσθεση.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 22


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΚΕΦ.3 - ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

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

Δομή Δεδομένων (data structure) είναι ένα σύνολο αποθηκευμένων


δεδομένων που υφίστανται επεξεργασία από μία σειρά λειτουργίες (πράξεις).

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

ΠΡΟΣΠΕΛΑΣΗ (Access)
Πρόσβαση σε κόμβο για εξέταση ή τροποποίηση του περιεχομένου του

ΕΙΣΑΓΩΓΗ (Insertion)
Προσθήκη νέου ή νέων κόμβων στην δομή
Πράξεις που απαγορεύονται στις
ΔΙΑΓΡΑΦΗ (Deletion) στατικές δομές (πίνακες)
Αφαίρεση κόμβου ή κόμβων από τη δομή

ΑΝΑΖΗΤΗΣΗ (Searching)
Προσπέλαση κόμβων με σκοπό να εντοπιστούν αυτοί που πληρούν μια συγκεκριμένη
ιδιότητα (π.χ. Σειριακή, Δυαδική Αναζήτηση)

ΤΑΞΙΝΟΜΗΣΗ (Sorting)
Διάταξη των κόμβων της δομής κατά αύξουσα ή φθίνουσα σειρά του περιεχομένου τους
(π.χ. Ταξινόμηση Φυσαλίδα)

ΑΝΤΙΓΡΑΦΗ (Copying)
Μερικοί ή όλοι οι κόμβοι μιας δομής αντιγράφονται σε μία άλλη δομή

ΣΥΓΧΩΝΕΥΣΗ (Merging)
Δύο ή περισσότερες δομές συνενώνονται σε μία νέα ενιαία δομή

ΔΙΑΧΩΡΙΣΜΟΣ (Separation)
Διάσπαση δομής σε δύο ή περισσότερες επιμέρους δομές

Παρατηρήσεις:
 Σπάνια χρησιμοποιούνται και οι οκτώ πράξεις σε κάποια δομή.
 Κάποια δομή μπορεί να είναι αποδοτικότερη από κάποια άλλη με κριτήριο κάποια
λειτουργία, ή λιγότερο αποδοτική για κάποια άλλη λειτουργία.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 23


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

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

 Ο N. Wirth (δημιουργός της γλώσσας Pascal, 1976) συνδέει τους


αλγόριθμους και τις δομές δεδομένων μέσα από την παρακάτω εξίσωση
(κανόνα):

ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΤΑ

ΔΙΑΚΡΙΣΗ ΔΟΜΩΝ ΔΕΔΟΜΕΝΩΝ

Οι Δομές Δεδομένων διακρίνονται σε δύο βασικές κατηγορίες : τις στατικές δομές (static
data structures) και τις δυναμικές δομές (dynamic data structures).

ΣΤΑΤΙΚΕΣ (Static)

 Αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.


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

ΔΥΝΑΜΙΚΕΣ (Dynamic)

 Δεν αποθηκεύονται σε διαδοχικές θέσεις μνήμης αλλά σε τυχαίες


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 24


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΠΙΝΑΚΕΣ
Πίνακας (matrix) είναι μια στατική δομή δεδομένων που περιέχει πάντα
στοιχεία του ιδίου τύπου (δηλαδή ακέραιες, πραγματικές, χαρακτήρες ή
λογικές τιμές).

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

Μονοδιάστατοι
Έχουν μία διάσταση και σχηματικά έχουν την μορφή μιας γραμμής ή μιας στήλης. Κάθε
στοιχείο χαρακτηρίζεται από το όνομα του πίνακα και έναν αριθμό εντός αγκύλης ή
παρένθεσης (διατακτικός αριθμός, η δείκτης) που αφορά στην αντίστοιχη θέση του
στοιχείου μέσα στον πίνακα π.χ. table [ i ]

Δισδιάστατοι
Έχουν δύο διαστάσεις και κατά την χρήση τους αναφέρονται πρώτα οι γραμμές (οριζόντιες)
και μετά οι στήλες (κάθετες) . Κάθε στοιχείο χαρακτηρίζεται από το όνομα του πίνακα και
δύο αριθμούς (διατακτικοί αριθμοί ή δείκτες) εντός αγκύλης ή παρένθεσης που ο πρώτος
αφορά στην αντίστοιχη γραμμή και ο δεύτερος στην αντίστοιχη στήλη του πίνακα π.χ. table
[i,j]

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 25


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΥΠΟΔΕΙΞΕΙΣ (Προσπέλαση στοιχείων Πίνακα)

 Όταν θέλουμε να επεξεργαστούμε ένα πίνακα (δηλαδή να τον διαβάσουμε, να


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

 Για την επεξεργασία των στοιχείων ενός πίνακα συνήθως χρησιμοποιούμε την
επαναληπτική δομή ΓΙΑ, αφού το πλήθος των στοιχείων που επεξεργαζόμαστε
είναι γνωστό.

 Αν ο πίνακας είναι μονοδιάστατος, τότε για να διατρέξουμε τα στοιχεία του


χρειάζεται μία εντολή Για από 1 μέχρι Ν, όπου Ν θα είναι το σύνολο των
στοιχείων του πίνακα.

 Αν ο πίνακας είναι δισδιάστατος, τότε για να διατρέξουμε τα στοιχεία του


χρειάζονται δύο εμφωλευμένες εντολές ΓΙΑ, όπου η πρώτη θα είναι Για από 1
μέχρι Μ (πίνακας Μ γραμμών) και η δεύτερη θα είναι Για από 1 μέχρι Ν (πίνακας
Ν στηλών)

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

Μονοδιάστατος table 10 θέσεων

Για i από 1 μέχρι 10


Διάβασε table[ i ]
Τέλος_επανάληψης

Δισδιάστατος table 5*6 κατά γραμμές Δισδιάστατος table 5*6 κατά στήλες

Για i από 1 μέχρι 5 Για j από 1 μέχρι 6


Για j από 1 μέχρι 6 Για i από 1 μέχρι 5
Διάβασε table[i, j] Διάβασε table[i, j]
Τέλος_επανάληψης Τέλος_επανάληψης
Τέλος_επανάληψης Τέλος_επανάληψης

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


περίπτωση της εμφάνισης ή της τροποποίησης τους.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 26


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΣΤΟΙΒΑ (Stack)
 Είναι μία δομή δεδομένων που μοιάζει με μία στοίβα από πιάτα.
 Τα στοιχεία εισάγονται και εξάγονται από την στοίβα βάσει της τεχνικής LIFO (Last
in First out) δηλαδή το τελευταίο στοιχείο που εισάγεται στη στοίβα, εξάγεται
πρώτο.

ΚΥΡΙΕΣ ΛΕΙΤΟΥΡΓΙΕΣ
ΩΘΗΣΗ (PUSH) ΑΠΩΘΗΣΗ (POP)
Τοποθέτηση ενός νέου στοιχείου Εξαγωγή ενός στοιχείου
στην κορυφή της στοίβας από την κορυφή της στοίβας

Έλεγχος αν η στοίβα είναι γεμάτη Έλεγχος αν υπάρχει τουλάχιστον 1


Υπερχείλιση (overflow) στοιχείο
στη στοίβα. Υποχείλιση (underflow)

Στην πράξη υλοποιείται με :


 Έναν μονοδιάστατο πίνακα (έστω Α).
 Μία βοηθητική μεταβλητή (με όνομα συνήθως top) που λειτουργεί ως δείκτης και
δείχνει στην κορυφή της στοίβας.

Άρα οι κύριες λειτουργίες μεταφράζονται στις εξής ενέργειες:

ΩΘΗΣΗ top  top + 1


Είσοδος στοιχείου στην Α[top]

ΑΠΩΘΗΣΗ Έξοδος στοιχείου από Α[top]


top  top - 1

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 27


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΟΥΡΑ (Queue)
 Είναι μια δομή δεδομένων στην οποία τα στοιχεία εισάγονται και εξάγονται βάσει
της τεχνικής FIFO (First in First out) δηλαδή το πρώτο στοιχείο που εισάγεται,
εξάγεται πρώτο (όπως μια ουρά έκδοσης εισιτηρίων).
 Η ουρά αποτελεί ως προς την επίδοσή της, αντικείμενο μελέτης ενός κλάδου των
μαθηματικών που ονομάζεται Επιχειρησιακή Έρευνα και ειδικότερα του κλάδου
που ονομάζεται Θεωρία Ουρών.

ΚΥΡΙΕΣ ΛΕΙΤΟΥΡΓΙΕΣ
ΕΙΣΑΓΩΓΗ (ENQUEUE) ΕΞΑΓΩΓΗ (DEQUEUE)
Εισαγωγή στοιχείου στο Εξαγωγή στοιχείου από το
πίσω άκρο της ουράς Εμπρός άκρο της ουράς

Στην πράξη υλοποιείται με :


 Μονοδιάστατο πίνακα (έστω Α).
 Δύο βοηθητικές μεταβλητές (δείκτες) που η μία δείχνει στο πρώτο στοιχείο της
ουράς (front ή εμπρός) και η άλλη στο τελευταίο στοιχείο (rear ή πίσω).

Άρα οι κύριες λειτουργίες μεταφράζονται στις εξής πράξεις :

ΕΙΣΑΓΩΓΗ rear  rear + 1


Εισαγωγή στοιχείου στην A[rear] θέση

ΕΞΑΓΩΓΗ Εξαγωγή στοιχείου από A[front]


front  front + 1

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 28


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΑΛΓΟΡΙΘΜΟΙ ΑΝΑΖΗΤΗΣΗΣ
ΣΕΙΡΙΑΚΗ - ΓΡΑΜΜΙΚΗ ΑΝΑΖΗΤΗΣΗ
Με τη λειτουργία της αναζήτησης προσπελάζουμε τους κόμβους μιας δομής για να
εντοπίσουμε όσους από αυτούς έχουν μία δεδομένη ιδιότητα. Η λειτουργία αυτή μπορεί
να εφαρμοστεί σε πίνακα που περιέχει αριθμητικά (ακέραια ή πραγματικά) ή
αλφαριθμητικά δεδομένα. Η εφαρμογή μιας μεθόδου αναζήτησης σε πίνακα εξαρτάται
από δύο βασικούς παράγοντες :
Αν ο πίνακας περιέχει επαναλαμβανόμενα στοιχεία
Αν ο πίνακας είναι ταξινομημένος ή όχι
Η μέθοδος της Σειριακής Αναζήτησης (Sequential Search) ή Γραμμικής Αναζήτησης (Linear
Search) είναι η πιο απλή μέθοδος. Ο Αλγόριθμος ελέγχει μια-μια τις θέσεις του πίνακα με
την σειρά για να εντοπίσει το προς αναζήτηση στοιχείο (έστω key). Μόλις το στοιχείο
βρεθεί, ο αλγόριθμος επιστρέφει την θέση (έστω pos) που το περιέχει.
 Σε πίνακα χωρίς επαναλήψεις στοιχείων, ο αλγόριθμος σταματάει την αναζήτηση μόλις το
στοιχείο βρεθεί. Αυτό ισχύει είτε ο πίνακας είναι ταξινομημένος είτε όχι.
 Σε πίνακα μη ταξινομημένο με επαναλήψεις στοιχείων, ο αλγόριθμος θα ελέγξει όλες τις
θέσεις του πίνακα, έστω και αν το στοιχείο έχει ήδη βρεθεί.
 Σε πίνακα ταξινομημένο με επαναλήψεις, ο αλγόριθμος συνεχίζει την αναζήτηση μέχρι να
βρεθεί στοιχείο μεγαλύτερο από αυτό που αναζητιέται.

Το αποτέλεσμα του αλγορίθμου είναι μια λογική μεταβλητή (έστω done, found, ή
βρέθηκε), η οποία παίζει το ρόλο της σημαίας (flag) και είναι ψευδής όσο το στοιχείο δεν
βρέθηκε, ενώ γίνεται αληθής όταν βρεθεί.

Η Σειριακή μέθοδος είναι η πιο απλή αλλά και η πιο αναποτελεσματική μέθοδος.
Η χρήση της δικαιολογείται όταν :
1. Ο πίνακας είναι μη ταξινομημένος
2. Ο πίνακας είναι μικρού μεγέθους (ν  20)
3. Η αναζήτηση γίνεται σπάνια

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 29


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ
Μια εναλλακτική μέθοδος αναζήτησης, είναι η Δυαδική Αναζήτηση (Binary Search) η οποία
είναι σαφώς γρηγορότερη από την Σειριακή μέθοδο αλλά μπορεί να εφαρμοστεί μόνο σε
ταξινομημένο πίνακα.
Με τον αλγόριθμο της Δυαδικής αναζήτησης ψάχνουμε μια τιμή (έστω key) στον ταξινομημένο
(κατά αύξουσα σειρά) πίνακα. Η μέθοδος χρησιμοποιεί δύο δείκτες με ονόματα start και end
που καθορίζουν το διάστημα στο οποίο θα πραγματοποιηθεί η αναζήτηση, δηλαδή το διάστημα
[start, end].
Στην συνέχεια, χωρίζει το διάστημα αναζήτησης στη μέση δημιουργώντας ένα δείκτη με όνομα
μέσος (ή med), ο οποίος προσδιορίζει το μεσαίο στοιχείο του διαστήματος με βάση τον
υπολογισμό μέσος = (start+end) div 2. Με επαναληπτική διαδικασία αναζητά το στοιχείο
key στο διάστημα αναζήτησης [start,end] ως εξής:
 Αν το μεσαίο στοιχείο είναι ίσο με το key, αυτό σημαίνει ότι βρέθηκε το στοιχείο στη μεσαία
θέση του διαστήματος και η αναζήτηση τερματίζεται.
 Αν το μεσαίο στοιχείο είναι μικρότερο από το key, η αναζήτηση συνεχίζεται στο δεύτερο μισό
του διαστήματος που καθορίζεται από το διάστημα [μέσος+1,end].
 Αν το μεσαίο στοιχείο είναι μεγαλύτερο από το key, η αναζήτηση συνεχίζεται στο πρώτο μισό
του διαστήματος που καθορίζεται από το διάστημα [start,μέσος+1].
Η παραπάνω διαδικασία επαναλαμβάνεται μέχρι να εντοπιστεί το στοιχείο key στη μεσαία θέση
κάποιου διαστήματος αναζήτησης ή ο δείκτης start να γίνει μεγαλύτερος από το δείκτη end,
πράγμα που σημαίνει ότι το στοιχείο δεν βρέθηκε.

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


Πλήθος στοιχείων Ν Συγκρίσεις Σειριακής Συγκρίσεις Δυαδικής
10 10 4
100 100 7
1000 1000 10
10.000 10.000 14
100.000 100.000 17
1.000.000 1.000.000 20

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 30


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

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

temp  A[j]
Δοθέντων των στοιχείων α1, α2, .., αν η ταξινόμηση συνίσταται στη μετάθεση
A[j]  A[j-1] της
θέσης των στοιχείων, ώστε να τοποθετηθούν σε μια σειρά ακ1,A[j-1]
ακ2, .., ακν και
temp
δοθείσης μιας συνάρτησης διάταξης F να ισχύει: F(ακ1) ≤ F(ακ2) ≤ … ≤ F(ακν)

Η Ταξινόμηση Ευθείας Ανταλλαγής – Φυσαλίδα (Bubble Sort) βασίζεται στην αρχή της
σύγκρισης και ανταλλαγής ζευγών γειτονικών στοιχείων. Η ανταλλαγή των στοιχείων
ονομάζεται αντιμετάθεση, και για την υλοποίησή της χρησιμοποιείται μια βοηθητική
μεταβλητή, έστω temp.

Κάθε φορά γίνονται διαδοχικές προσπελάσεις στον πίνακα και μετακινείται το μικρότερο
κλειδί προς τις αρχικές θέσεις του πίνακα.
Σε κάθε πέρασμα του αλγορίθμου από τον πίνακα ταξινομείται και ένα στοιχείο. Σε ένα
πίνακα μεγέθους Ν στοιχείων, χρειάζονται Ν-1 περάσματα για να ταξινομηθεί.
Ο αλγόριθμος Φυσαλίδας είναι ο πιο απλός και ταυτόχρονα ο πιο αργός αλγόριθμος
ταξινόμησης. Εναλλακτικές μέθοδοι ταξινόμησης είναι:
η ταξινόμηση με επιλογή (selection sort)
η ταξινόμηση με παρεμβολή – εισαγωγή (insertion sort)
η γρήγορη ταξινόμηση (quick sort)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 31


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΑΛΛΕΣ ΤΕΧΝΙΚΕΣ ΤΑΞΙΝΟΜΗΣΗΣ

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

ΤΑΞΙΝΟΜΗΣΗ ΜΕ ΠΑΡΕΜΒΟΛΗ – ΕΙΣΑΓΩΓΗ


Αλγόριθμος ιδανικός για περιπτώσεις δεδομένων περίπου ταξινομημένων. Συγκρίνουμε
το 2ο με το 1ο στοιχείο και αν χρειαστεί τα αντιμεταθέτουμε ώστε το 1ο να είναι
μικρότερο. Κατόπιν, ελέγχουμε το 3ο και το τοποθετούμε εμβόλιμα στη σωστή θέση σε
σχέση με τα 2 πρώτα. Επαναλαμβάνουμε το ίδιο και για τα άλλα στοιχεία.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 32


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΔΕΥΤΕΡΕΥΟΥΣΑΣ ΜΝΗΜΗΣ

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

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

Η δευτερεύουσα μνήμη είναι οργανωμένη σε ειδικές δυναμικές δομές δεδομένων που


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

Το πεδίο που ταυτοποιεί μια εγγραφή ονομάζεται Πρωτεύον Κλειδί (primary key), ή απλά
κλειδί. Με δεδομένο ένα πρωτεύον κλειδί, μπορεί να χρησιμοποιηθεί και δεύτερο πεδίο
για να ταυτοποιήσουμε μια εγγραφή. Αυτό το πεδίο ονομάζεται δευτερεύον κλειδί
(secondary key).

ΠΑΡΑΔΕΙΓΜΑ ΑΡΧΕΙΟΥ: ΜΑΘΗΤΕΣ

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

πεδία

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 33


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΔΥΝΑΜΙΚΕΣ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ


Οι βασικές δυναμικές δομές δεδομένων είναι οι λίστες, τα δέντρα και οι γράφοι.

ΛΙΣΤΕΣ

Οι λίστες (lists) είναι δομές δεδομένων που οι κόμβοι τους συνήθως βρίσκονται
σε απομακρυσμένες θέσεις μνήμης και η σύνδεσή τους γίνεται με δείκτες.

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

Ο όρος index
αναφέρεται σε
 τα δεδομένα (μία ή περισσότερες αριθμητικές ή θέση πίνακα ενός
αλφαριθμητικές πληροφορίες) ο όρος pointer σε
θέση μνήμης.
 τον δείκτη (που δείχνει στον επόμενο κόμβο)

Έστω μία λίστα με 4 κόμβους, όπου τα βελάκια δείχνουν τους δείκτες.

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

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 34


ΑΕΠΠ / ΚΕΦ. 3 – ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ

ΔΕΝΤΡΑ

Τα δέντρα (trees) είναι δομές δεδομένων που υλοποιούνται με τη βοήθεια


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

Τα δένδρα είναι δομές που στις σύγχρονες γλώσσες προγραμματισμού υλοποιούνται


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

ΓΡΑΦΟΙ

Ένας γράφος (graph) είναι δομή δεδομένων που αποτελείται από ένα σύνολο
κόμβων (ή σημείων ή κορυφών) και ένα σύνολο γραμμών (ή ακμών ή τόξων)
που ενώνουν μερικούς ή όλους τους κόμβους.

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

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 35


ΑΕΠΠ / ΚΕΦ. 5 – ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΚΕΦ.5 - ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ


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

Η έννοια της επίδοσης (performance) είναι παρόμοια με την έννοια της


αποδοτικότητας (efficiency) του αλγορίθμου και σημαίνει το πόσο γρήγορα
εκτελείται ένας αλγόριθμος.

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

ΧΕΙΡΟΤΕΡΗ ΠΕΡΙΠΤΩΣΗ

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


του αλγορίθμου το οποίο μετριέται σε υπολογιστικούς πόρους.

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


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

ΠΑΡΑΔΕΙΓΜΑ: Για τον επόμενο αλγόριθμο είναι προφανές ότι η χειρότερη περίπτωση
προκύπτει όταν γίνουν 10 επαναλήψεις (δηλαδή n = 10).
Αλγόριθμος Παράδειγμα
n ← 0
S ← 0
Αρχή_επανάληψης
Διάβασε α
S ← S + α
n ← n + 1
Μέχρις_ότου (α = 0) ή (n = 10)
Εκτύπωσε S
Τέλος Παράδειγμα

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 36


ΑΕΠΠ / ΚΕΦ. 5 – ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΜΕΓΕΘΟΣ ΕΙΣΟΔΟΥ ΑΛΓΟΡΙΘΜΟΥ


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

Το μέγεθος εισόδου συμβολίζεται με n, και προσδιορίζει τον αριθμό των


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

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


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

Το μέγεθος εισόδου ενός αλγορίθμου (n), προσδιορίζει την πολυπλοκότητα του.


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

ΧΡΟΝΟΣ ΕΚΤΕΛΕΣΗΣ ΑΛΓΟΡΙΘΜΟΥ


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

ΠΑΡΑΔΕΙΓΜΑ: Για τον επόμενο αλγόριθμο παρατίθεται πίνακας υπολογισμού της


επίδοσης του, εκφρασμένος σε πλήθος βασικών πράξεων.
Αλγόριθμος Παράδειγμα
P ← 0
Για i από 1 μέχρι 5 Οι επαναληπτικοί
Εμφάνισε i βρόχοι παίζουν
Διάβασε α σημαντικό ρόλο
P ← P * α στην επίδοση ενός
Τέλος_επανάληψης αλγορίθμου.
Εκτύπωσε P
Τέλος Παράδειγμα
Εντολή Αλγορίθμου Αριθμός Πράξεων
Ανάθεση τιμής στο P 1
Βρόχος Επανάληψης
αρχική τιμή στο i 1
έλεγχος i 6
αύξηση i 5
εμφάνιση i 5
Διάβασμα α 5
υπολογισμός P 10
εκτύπωση P 1
Σύνολο 34

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 37


ΑΕΠΠ / ΚΕΦ. 5 – ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΑΠΟΔΟΤΙΚΟΤΗΤΑ ΑΛΓΟΡΙΘΜΩΝ
Ένα πρόβλημα μπορεί κάποιες φορές να λυθεί με περισσότερους από έναν αλγόριθμους.
Η αποδοτικότητα κάθε αλγορίθμου είναι ένα μέτρο σύγκρισης για να ελεγχθεί αν αυτός
είναι καλύτερος ή χειρότερος σε σχέση με κάποιον άλλο.
Ένας αποδοτικός αλγόριθμος μπορεί να:
 Επιστρέφει τα αποτελέσματα στο συντομότερο δυνατό χρόνο
 Κάνει χρήση της λιγότερης δυνατής μνήμης
Οι παράγοντες αποδοτικότητας που επηρεάζουν το χρόνο εκτέλεσης ενός αλγορίθμου
είναι:
Τύπος ηλεκτρονικού υπολογιστή
Γλώσσα προγραμματισμού
Δομή προγράμματος και δομές δεδομένων
Χρόνος πρόσβασης στο δίσκο και ενέργειες εισόδου - εξόδου
Είδος συστήματος (ενός ή πολλών χρηστών)

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


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

ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΑΛΓΟΡΙΘΜΩΝ
Υπάρχουν δύο βασικοί τρόποι μέτρησης της επίδοσης ενός αλγορίθμου: ο εμπειρικός (εκ
των υστέρων) και ο θεωρητικός (εκ των προτέρων).

ΕΜΠΕΙΡΙΚΟΣ (a posteriori)
Είναι απλούστερος τρόπος μέτρησης
Ο αλγόριθμος υλοποιείται και εφαρμόζεται σε ένα σύνολο δεδομένων, ώστε να
υπολογισθεί ο απαιτούμενος χρόνος επεξεργασίας και η χωρητικότητα μνήμης.
Παρουσιάζει 2 βασικά μειονεκτήματα που μπορούν να οδηγήσουν σε λανθασμένη
εκτίμηση για την επίδοση του αλγορίθμου:
- είναι δύσκολο να προβλεφθεί η συμπεριφορά του αλγορίθμου για κάποιο άλλο σύνολο
δεδομένων
- ο χρόνος επεξεργασίας εξαρτάται από το υλικό, τη γλώσσα προγραμματισμού, το
μεταφραστή και τη δεινότητα του προγραμματιστή.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 38


ΑΕΠΠ / ΚΕΦ. 5 – ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ
ΘΕΩΡΗΤΙΚΟΣ (a priori)
Χρήση μεταβλητής n, που εκφράζει το μέγεθος του προβλήματος.
Η μέτρηση της αποδοτικότητας του αλγορίθμου να ισχύει για οποιοδήποτε σύνολο
δεδομένων και ανεξάρτητα από υποκειμενικούς παράγοντες.
Η σημασία της μεταβλητής n εξαρτάται από το πρόβλημα (π.χ. στο πρόβλημα
ταξινόμησης k στοιχείων, ισχύει ότι n = k).
O χρόνος επεξεργασίας και ο απαιτούμενος χώρος μνήμης εκτιμώνται με τη βοήθεια
μίας συνάρτησης f(n) που εκφράζει τη χρονική πολυπλοκότητα ή την πολυπλοκότητα
χώρου.
Σε πολλές περιπτώσεις όμως δεν ενδιαφέρουν οι επακριβείς
Το Ο σημαίνει “Order”
τιμές αλλά μόνο η γενική συμπεριφορά των αλγορίθμων, ενώ το O(n) διαβάζεται
δηλαδή η τάξη του αλγορίθμου. Για το λόγο αυτό εισάγεται ο «πολυπλοκότητα της
λεγόμενος συμβολισμός Ο. τάξης n”

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

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

Οι βασικότερες κατηγορίες χρονικής πολυπλοκότητας είναι οι εξής:

Πολυπλοκότητα Ονομασία Παρατηρήσεις

O(1) Σταθερή Κάθε εντολή εκτελείται μια ή μερικές φορές

Με log συμβολίζεται ο δυαδικός αλγόριθμος


O(logn) Λογαριθμική
(συνηθέστερος) και με ln ο φυσικός

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


O(n) Γραμμική
να εξετάσει ή να δώσει στην έξοδο n στοιχεία

Συνήθως διαβάζεται nlogn και χαρακτηρίζει μια


O(nlogn) Γραμμολογαριθμική
βασική οικογένεια αλγορίθμων ταξινόμησης.

O(n2) Τετραγωνική Χρήση σε προβλήματα μικρού μεγέθους

O(n3) Κυβική Χρήση σε προβλήματα μικρού μεγέθους

Σπάνια πρακτική εφαρμογή ακόμα και σε


O(2n) Εκθετική
προβλήματα με μικρό αριθμό δεδομένων

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 39


ΑΕΠΠ / ΚΕΦ. 5 – ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

ΠΟΛΥΠΛΟΚΟΤΗΤΑ ΒΑΣΙΚΩΝ ΑΛΓΟΡΙΘΜΩΝ


Ταξινόμηση Ευθείας Ανταλλαγής:
Η πολυπλοκότητα του αλγορίθμου ταξινόμησης εξαρτάται από δύο λόγους:
 το πλήθος των συγκρίσεων των στοιχείων που απαιτούνται (C)
 το πλήθος των μετακινήσεων των στοιχείων που θα γίνουν (M)
Ο αριθμός των συγκρίσεων σε κάθε περίπτωση είναι C = 1 + 2 + 3 + … + (n-1) που
𝑛(𝑛−1)
βάσει των ιδιοτήτων της αριθμητικής προόδου ισχύει ότι: 𝐶 =
2
Άρα η πολυπλοκότητα του αλγορίθμου Φυσαλίδα είναι O(n2)

Γραμμική Αναζήτηση:
Η πολυπλοκότητα του αλγορίθμου αναζήτησης εξαρτάται από:
 το πλήθος των συγκρίσεων των στοιχείων που απαιτούνται
Το κόστος των συγκρίσεων συμβολίζεται με Α αν η αναζήτηση είναι ανεπιτυχής και
με Ε αν η αναζήτηση είναι επιτυχής.
Σε περίπτωση επιτυχούς αναζήτησης, οι συγκρίσεις κλειδιών που
πραγματοποιούνται κατά μέσο όρο είναι:
1 + 2 + 3 + ⋯+ 𝑛 𝑛(𝑛 + 1) 𝑛+1
𝐶= = =
𝑛 2𝑛 2
Άρα εφόσον τα κλειδιά αναζητούνται ισοπίθανα, η πολυπλοκότητα του αλγορίθμου
Σειριακής Αναζήτησης είναι O(n).
Στην περίπτωση ανεπιτυχούς αναζήτησης, ο αλγόριθμος αναγκάζεται να
προσπελάσει όλα τα στοιχεία του πίνακα και άρα η πολυπλοκότητα είναι πάλι
γραμμικής τάξης Ο(n).
Τέλος, σε περίπτωση που ο πίνακας είναι ταξινομημένος, η αναζήτηση βελτιώνεται
αλλά η πολυπλοκότητα παραμένει γραμμικής τάξης.

Πολυπλοκότητα Βασικών Αλγορίθμων


Ώθηση – Απώθηση σε Στοίβα Ο(1)
Εισαγωγή – Εξαγωγή σε Ουρά Ο(1)
Fibonacci επαναληπτική Ο(n)
Ταξινόμηση Ευθείας Ανταλλαγής Ο(n2)
Σειριακή Αναζήτηση O(n)
Δυαδική Αναζήτηση O(logn)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 40


ΑΕΠΠ / ΚΕΦ. 6 – ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΕΦ.6 - ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΦΥΣΙΚΕΣ ΚΑΙ ΤΕΧΝΗΤΕΣ ΓΛΩΣΣΕΣ


Οι φυσικές γλώσσες είναι αυτές που χρησιμοποιούν οι άνθρωποι προκειμένου να
επικοινωνήσουν μεταξύ τους. Χαρακτηριστικό τους είναι ότι εξελίσσονται συνεχώς αφού
συνέχεια νέες λέξεις δημιουργούνται και οι κανόνες γραμματικής και σύνταξης αλλάζουν.
Οι τεχνητές γλώσσες, που είναι οι γλώσσες προγραμματισμού, χρησιμοποιούνται για την
επικοινωνία ανθρώπου – μηχανής. Αυτές χαρακτηρίζονται από στασιμότητα, αφού
κατασκευάζονται συνειδητά για ένα συγκεκριμένο λόγο.
Οι αλλαγές που δέχονται προκειμένου να διορθώσουν κάποιες αδυναμίες ή να καλύψουν
μεγαλύτερο εύρος εφαρμογών είναι συνήθως σε:
 επίπεδο διαλέκτου (π.χ. GW Basic, Quick Basic, Visual Basic)
 επίπεδο επέκτασης (π.χ. C, C++)

ΣΤΟΙΧΕΙΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ


Κάθε γλώσσα προγραμματισμού προσδιορίζεται από τέσσερα βασικά στοιχεία:
ΑΛΦΑΒΗΤΟ
Είναι το σύνολο των στοιχείων που χρησιμοποιεί η γλώσσα. Για παράδειγμα η ελληνική
γλώσσα περιέχει 24 γράμματα (πεζά και κεφαλαία), 10 ψηφία από 0 έως 9 και τα σημεία
στίξης. Το αντίστοιχο συμβαίνει και με την αγγλική γλώσσα.
ΛΕΞΙΛΟΓΙΟ
Είναι το υποσύνολο όλων των ακολουθιών που δημιουργούνται από τα στοιχεία του
αλφαβήτου και είναι δεκτές από τη γλώσσα. Για παράδειγμα οι λέξεις ΟΣΟ, ΓΙΑ, ΔΙΑΒΑΣΕ
είναι δεκτές από τη γλώσσα, ενώ οι ΤΕΛΟΣ, ΕΠΑΝΕΛΑΒΕ δεν είναι.
ΓΡΑΜΜΑΤΙΚΗ
Είναι το σύνολο των κανόνων μιας γλώσσας προγραμματισμού που περιλαμβάνει:
 Τυπικό (Τυπολογικό) είναι το σύνολο των κανόνων που ορίζουν αν μια λέξη είναι
(ορθογραφικά) αποδεκτή. Για παράδειγμα η λέξη ΓΡΑΨΕ είναι αποδεκτή, ενώ η
ΓΡΑΠΣΕ δεν είναι.
 Συντακτικό είναι το σύνολο των κανόνων που ορίζει την νομιμότητα της σύνδεσης
και διάταξης των λέξεων για την δημιουργία προτάσεων (αφορά δηλαδή στην ορθή
σύνταξη των εντολών). Για παράδειγμα: η εντολή ΑΝ (Χ = 0) ΤΟΤΕ είναι σωστή,
ενώ η ΟΣΟ (Χ > 0) ΤΟΤΕ είναι λάθος.
ΣΗΜΑΣΙΟΛΟΓΙΑ
Είναι το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων, εκφράσεων και
προτάσεων σε μια γλώσσα. Είναι δηλαδή η εσωτερική σημασία των εντολών που
αποφασίζεται από τον δημιουργό της γλώσσας.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 41


ΑΕΠΠ / ΚΕΦ. 6 – ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΤΕΧΝΙΚΕΣ ΣΧΕΔΙΑΣΗΣ ΠΡΟΓΡΑΜΜΑΤΩΝ


ΙΕΡΑΡΧΙΚΗ ΣΧΕΔΙΑΣΗ – ΙΕΡΑΡΧΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Η ιεραρχική σχεδίαση βασίζεται στην μέθοδο «από πάνω προς τα κάτω» (Top-
Down Design) και χρησιμοποιεί τη στρατηγική της συνεχούς διαίρεσης του
προβλήματος σε υποπροβλήματα.
Πιο συγκεκριμένα, η ιεραρχική σχεδίαση περιλαμβάνει :
 τον καθορισμό των βασικών λειτουργιών του προβλήματος σε ανώτερο επίπεδο.
 την διάσπαση των λειτουργιών αυτών σε μικρότερες λειτουργίες, μέχρι το τελευταίο
επίπεδο, ώστε να είναι τόσο απλές που να μην μπορούν να υποστούν περαιτέρω
διάσπαση.
 Την σύνθεση των λύσεων των επιμέρους προβλημάτων για την παραγωγή της λύσης
του συνολικού προβλήματος.

ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Η ιεραρχική σχεδίαση στην πράξη υλοποιείται με
τον τμηματικό προγραμματισμό, σύμφωνα με τον
οποίο κάθε υποπρόβλημα αντιμετωπίζεται ως
ανεξάρτητη ενότητα (module).
Κάθε υποπρόβλημα που προβλέπει η ιεραρχική
σχεδίαση, υλοποιείται με ανεξάρτητο τμήμα
προγράμματος που καλείται υποπρόγραμμα.
Βασικά πλεονεκτήματα του τμηματικού
προγραμματισμού είναι ότι:
 Διευκολύνει την δημιουργία του προγράμματος
 Μειώνει τα λάθη
 Ευκολότερη παρακολούθηση, κατανόηση και συντήρηση του προγράμματος

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 42


ΑΕΠΠ / ΚΕΦ. 6 – ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Είναι η μεθοδολογία που σήμερα έχει επικρατήσει σε όλες σχεδόν τις σύγχρονες γλώσσες,
και είναι επινόηση του καθηγητή E. Dijkstra το 1968.
 Στηρίζεται στη χρήση τριών και μόνο στοιχειωδών λογικών δομών :
- Ακολουθία
- Επιλογή
- Επανάληψη
Όλα τα προγράμματα γράφονται χρησιμοποιώντας μόνο αυτές τις τρεις δομές, ή
συνδυασμό τους. Κάθε προγραμματιστής μπορεί να γράφει σύνθετα προγράμματα
μειώνοντας ταυτόχρονα τα λάθη και διευκολύνοντας την κατανόηση και τη συντήρηση.
 Κάθε πρόγραμμα καθώς και κάθε ενότητα προγράμματος, έχει μόνο μία είσοδο και μόνο
μία έξοδο.
 Ο Δομημένος Προγραμματισμός περιέχει τις έννοιες της Ιεραρχικής Σχεδίασης και του
Τμηματικού Προγραμματισμού
Η λογική του δομημένου προγραμματισμού ξεκίνησε από την ανάγκη κατάργησης ή
τουλάχιστον περιορισμού της χρήσης της εντολής GOTO (Πήγαινε στο), η οποία
προκαλούσε την αλλαγή της ροής εκτέλεσης του προγράμματος. Η αλόγιστη χρήση της
εντολής αυτής άλλαζε συνεχώς την ροή του προγράμματος και έκανε δύσκολη την
κατανόηση, την παρακολούθηση και την συντήρησή του.

Αδόμητος τρόπος (χρήση GOTO) Δομημένος τρόπος

ΑN (Χ > 0) ΤΟΤΕ GOTO 1 ΑΝ (Χ > 0) ΤΟΤΕ


AN (X = 0) TOTE GOTO 2 ΓΡΑΨΕ ‘Θετικός’
ΓΡΑΨΕ ‘Αρνητικός’ ΑΛΛΙΩΣ_ΑΝ (Χ = 0) ΤΟΤΕ
GOTO 4 ΓΡΑΨΕ ‘Μηδέν’
1: ΓΡΑΨΕ ‘Θετικός’ ΑΛΛΙΩΣ
GOTO 4 ΓΡΑΨΕ ‘Αρνητικός’
2: ΓΡΑΨΕ ‘Μηδέν’ ΤΕΛΟΣ_ΑΝ
4: ! Συνέχεια

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


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 43


ΑΕΠΠ / ΚΕΦ. 6 – ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

ΜΕΤΑΓΛΩΤΤΙΣΤΗΣ (Compiler)
 Δέχεται σαν είσοδο το πρόγραμμα της γλώσσας υψηλού επιπέδου και παράγει το
ισοδύναμο της γλώσσας μηχανής.
 Αυτό είναι ανεξάρτητο από το αρχικό πρόγραμμα και εκτελείται σε οποιονδήποτε
υπολογιστή οποιαδήποτε στιγμή.
 Κάνει έλεγχο συντακτικών λαθών και σε περίπτωση που βρεθούν το πρόγραμμα
υποβάλλεται ξανά προς μεταγλώττιση μέχρι να παραχθεί το σωστό εκτελέσιμο.
 Άρα κάθε πρόγραμμα πριν εκτελεστεί πρέπει πρώτα να περάσει από διαδικασία
μεταγλώττισης (αρκετές φορές μέχρι να διορθωθούν όλα τα λάθη) και της σύνδεσης.

ΔΙΑΔΙΚΑΣΙΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ ΚΑΙ ΣΥΝΔΕΣΗΣ

ΔΙΕΡΜΗΝΕΥΤΗΣ (Interpreter)
 Διαβάζει μία – μία τις εντολές του αρχικού προγράμματος και ταυτόχρονα μεταφράζει
και εκτελεί την καθεμιά σε εντολές γλώσσας μηχανής.
 Σε αντίθεση με τον μεταγλωττιστή, κάνει άμεση εκτέλεση και άρα άμεση διόρθωση.
 Είναι όμως πιο αργός από το ισοδύναμο εκτελέσιμο πρόγραμμα του μεταγλωττιστή.

ΔΙΑΔΙΚΑΣΙΑ ΜΕΤΑΦΡΑΣΗΣ ΚΑΙ ΕΚΤΕΛΕΣΗΣ

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 44


ΑΕΠΠ / ΚΕΦ. 6 – ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΠΗΓΑΙΟ ΠΡΟΓΡΑΜΜΑ (Source)


Είναι το αρχικό πρόγραμμα μετά την συγγραφή του από τον προγραμματιστή. Αποτελεί ένα
απλό αρχείο κειμένου που δημιουργείται με τον συντάκτη (editor).

ΑΝΤΙΚΕΙΜΕΝΟ ΠΡΟΓΡΑΜΜΑ (Object)


 Είναι το πρόγραμμα που παράγεται μετά την μεταγλώττιση του πηγαίου προγράμματος.
 Είναι σε μορφή κατανοητή από τον υπολογιστή (δυαδικά ψηφία) αλλά δεν είναι
εκτελέσιμο. Για να εκτελεστεί χρειάζεται σύνδεση με άλλα προγράμματα.

ΣΥΝΔΕΤΗΣ – ΦΟΡΤΩΤΗΣ (Linker - Loader)


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

ΕΚΤΕΛΕΣΙΜΟ ΠΡΟΓΡΑΜΜΑ (Executable)


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

ΣΥΝΤΑΚΤΗΣ (Editor)
Είναι ειδικό πρόγραμμα που χρησιμοποιείται για την συγγραφή του αρχικού
προγράμματος (πηγαίου). Λειτουργεί ως ένας μικρός επεξεργαστής κειμένου που επιτρέπει
την γρήγορη συγγραφή προγραμμάτων.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 45


ΑΕΠΠ / ΚΕΦ. 6 – ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΚΑΤΗΓΟΡΙΕΣ ΛΑΘΩΝ
 Συντακτικά: εμφανίζονται κατά την μεταγλώττιση και οφείλονται σε παραβίαση των
γραμματικών κανόνων της γλώσσας. Προκύπτουν συνήθως από ορθογραφικά ή
συντακτικά σφάλματα (π.χ. αναγραμματισμός εντολών), παράληψη δηλώσεων
μεταβλητών ή ασυμβατότητα τύπων και πρέπει πάντα να διορθωθούν για να παραχθεί
το εκτελέσιμο πρόγραμμα π.χ. Χ  (Α+Β+Γ):3
 Λογικά: εμφανίζονται κατά την εκτέλεση και είναι πιο σημαντικά λάθη και δυσκολότερα
στην διόρθωση αφού οφείλονται σε εσφαλμένη υλοποίηση του αλγορίθμου π.χ. Χ 
Α+Β+Γ/3

ΑΠΑΙΤΟΥΜΕΝΑ ΠΡΟΓΡΑΜΜΑΤΑ
Ένα προγραμματιστικό περιβάλλον χρειάζεται να διαθέτει μια σειρά προγραμμάτων
προκειμένου να επιτρέπει στον προγραμματιστή να δημιουργήσει, να μεταφράσει και να
εκτελέσει ένα πρόγραμμα: Α) Συντάκτης, Β) Μεταγλωττιστής , Γ) Συνδέτης

Συντάκτης ΠΗΓΑΙΟ

ΠΗΓΑΙΟ ΤΕΛΙΚΟ
Μεταγλωττιστής

ΤΕΛΙΚΟ ΕΚΤΕΛΕΣΙΜΟ
Συνδέτης

Στα σύγχρονα προγραμματιστικά περιβάλλοντα compiler και interpreter παρουσιάζονται


μαζί. O interpreter χρησιμοποιείται κατά τη φάση της δημιουργίας του προγράμματος. Ο
compiler χρησιμοποιείται για την τελική έκδοση και εκμετάλλευση του προγράμματος.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 46


ΑΕΠΠ / ΚΕΦ. 7 – ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΚΕΦ.7 - ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ


Η υλοποίηση ενός αλγορίθμου γίνεται πάντα με μία γλώσσα προγραμματισμού. Η επιλογή
της κατάλληλης γλώσσας δεν είναι εύκολη και εξαρτάται από το είδος του προγράμματος.
Σχετικά με τις διάφορες γλώσσες πρέπει να γνωρίζουμε τα εξής :
 Δεν υπάρχει καλύτερη γλώσσα προγραμματισμού, αλλά καταλληλότερη για
συγκεκριμένο τύπο εφαρμογών.
 Κάθε γλώσσα εξαρτάται σε μεγάλο βαθμό από τον εξοπλισμό και το λειτουργικό
σύστημα.
 Σχεδόν όλες οι γλώσσες έχουν κοινά χαρακτηριστικά (τύπους δεδομένων, βασικές
δομές, εντολές).
Οι αλγόριθμοι του σχολικού βιβλίου υλοποιούνται με μία γλώσσα προγραμματισμού που
έχει το όνομα «ΓΛΩΣΣΑ» και περιέχει κάποια χαρακτηριστικά από τις σύγχρονες γλώσσες
όπως Pascal, Visual Basic, C, C++, Java κλπ.

ΑΛΦΑΒΗΤΟ ΓΛΩΣΣΑΣ

Κεφαλαία και Πεζά του Ελληνικού και


ΓΡΑΜΜΑΤΑ
Λατινικού Αλφαβήτου (Α-Ω, α-ω, Α-Ζ, a-z)
ΨΗΦΙΑ 0–9

ΕΙΔΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ + - * / = . ( ) , ! & _’ [ ] κενός χαρακτήρας

ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ
Η «ΓΛΩΣΣΑ» υποστηρίζει τους εξής τέσσερις τύπους δεδομένων :
ΑΚΕΡΑΙΟΣ
Περιλαμβάνει τους αρνητικούς και θετικούς ακέραιους π. χ 253, 0, -40, 3490
ΠΡΑΓΜΑΤΙΚΟΣ
Περιλαμβάνει τους πραγματικούς (δεκαδικούς) αριθμούς π. χ 3.14, 0.25, -85.25
ΧΑΡΑΚΤΗΡΑΣ
Περιλαμβάνει αλφαριθμητικά δεδομένα που μπορούν να περιέχουν οποιοδήποτε
χαρακτήρα παράγεται από το πληκτρολόγιο. Πρέπει πάντα να περικλείονται μέσα
σε απλά εισαγωγικά ′ ′ π.χ. 'Κ', 'Hello', '10', 'ΑΒ30', 'George', 'ΑΕΠΠ'
ΛΟΓΙΚΟΣ
Δέχεται μόνο δύο τιμές Αληθής και Ψευδής.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 47


ΑΕΠΠ / ΚΕΦ. 7 – ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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


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

ΣΤΑΘΕΡΕΣ

Σταθερές (constants) είναι προκαθορισμένες τιμές που δεν μεταβάλλονται


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

Κάθε σταθερά ανήκει σε έναν από τους παραπάνω τέσσερις ΣΤΑΘΕΡΕΣ


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

ΜΕΤΑΒΛΗΤΕΣ

Μεταβλητές (variables) είναι γλωσσικά στοιχεία που χρησιμοποιούνται για να


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

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


μεταγλωττιστή (compiler) σε συγκεκριμένες θέσεις της μνήμης.
Η τιμή της μεταβλητής είναι η τιμή που βρίσκεται στην αντίστοιχη θέση της μνήμης (που
έχει δεσμευτεί για την μεταβλητή αυτή).

Το διπλανό σχέδιο δείχνει την


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

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 48


ΑΕΠΠ / ΚΕΦ. 7 – ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Η δήλωση μεταβλητών γίνεται πάντα μετά την δήλωση των σταθερών ως εξής :

ΜΕΤΑΒΛΗΤΕΣ
Τύπος : Λίστα Μεταβλητών
Τύπος : Λίστα Μεταβλητών

Σωστή τακτική είναι να επιλέγονται ονόματα μεταβλητών που να παραπέμπουν στο


περιεχόμενό τους (δηλαδή για μια μεταβλητή που συμβολίζει τον μισθό ενός υπαλλήλου,
δεν βοηθάει να δώσουμε ονόματα όπως Χ ή Α ή Μ αλλά ονόματα όπως Salary, Misthos,
Mis, Sal, ΜΙΣΘΟΣ, μισθός, Μ, μ κλπ.

ΚΑΝΟΝΕΣ ΟΝΟΜΑΤΩΝ
Τα ονόματα που επιλέγουμε για τις σταθερές και μεταβλητές του προγράμματος πρέπει να
πληρούν τους εξής περιορισμούς:
 Αποτελούνται από γράμματα (ελληνικά ή λατινικά), νούμερα και το σύμβολο _
(underscore)
 Πρέπει υποχρεωτικά να αρχίζουν με γράμμα
 Δεν αποτελούν δεσμευμένες λέξεις της ΓΛΩΣΣΑΣ
 Δεν περιέχουν κενά ή άλλα σύμβολα
Παραδείγματα λανθασμένων ονομάτων : 100Α, ΑΒ@, Κόστος$, ΤΟΤΕ, Μέση Τιμή

ΤΕΛΕΣΤΕΣ
ΑΡΙΘΜΗΤΙΚΟΙ ΣΥΓΚΡΙΤΙΚΟΙ ΛΟΓΙΚΟΙ
+ = ΚΑΙ
- <> Η
* > ΟΧΙ
/ >=
^ <
DIV <=
MOD

ΣΥΝΑΡΤΗΣΕΙΣ (ενσωματωμένες μαθηματικές)


Οι πιο συχνά χρησιμοποιούμενες συναρτήσεις είναι :

ΗΜ (Χ) Ημίτονο Χ ΛΟΓ (Χ) Λογάριθμος του Χ


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 49


ΑΕΠΠ / ΚΕΦ. 7 – ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΙΕΡΑΡΧΙΑ ΠΡΑΞΕΩΝ
Όλες οι μεταβλητές που εμφανίζονται σε μία έκφραση, πρέπει να έχουν προηγουμένως
δηλωθεί στο τμήμα Σταθερών και Μεταβλητών.
Η ιεραρχία που ακολουθείται στις πράξεις έχει ως εξής :
 Από αριστερά προς τα δεξιά
 Παρενθέσεις (πρώτα οι εσωτερικές) ( )
 Ύψωση σε δύναμη ^
 Πολλαπλασιασμοί και διαιρέσεις *, /, div, mod
 Προσθέσεις και αφαιρέσεις +, -
 Συγκριτικοί τελεστές >, < , =, >=, <= , <>
 Λογικοί τελεστές KAI, H, OXI
Ένα από τα πιο συνηθισμένα λάθη είναι ο διαφορετικός αριθμός αριστερών από δεξιές
παρενθέσεις.

ΕΝΤΟΛΗ ΕΚΧΩΡΗΣΗΣ
Η τιμή του δεξιού μέλους της εντολής εκχώρησης αποδίδεται στην μεταβλητή του
αριστερού μέλους.
Μεταβλητή  Έκφραση

Το σύμβολο εκχώρησης είναι το αριστερό βέλος  και πρέπει να διαφοροποιείται από το


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

ΕΝΤΟΛΕΣ ΕΙΣΟΔΟΥ - ΕΞΟΔΟΥ


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

ΔΙΑΒΑΣΕ λίστα μεταβλητών ΓΡΑΨΕ λίστα στοιχείων

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 50


ΑΕΠΠ / ΚΕΦ. 7 – ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

Οι δεσμευμένες λέξεις της ΓΛΩΣΣΑΣ γράφονται με κεφαλαία γράμματα.

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

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

Κάθε πρόγραμμα της ΓΛΩΣΣΑΣ έχει την εξής μορφή :

Επικεφαλίδα ΠΡΟΓΡΑΜΜΑ Όνομα


ΣΤΑΘΕΡΕΣ
Τμήμα ορισμού σταθερών Όνομα = τιμή
.................
ΜΕΤΑΒΛΗΤΕΣ
Τμήμα δήλωσης μεταβλητών
Τύπος : Λίστα Παραμέτρων
.........................
Κύριο τμήμα εντολών ΑΡΧΗ
........
εντολές
........
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 51


ΑΕΠΠ / ΚΕΦ. 8 – ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ

ΚΕΦ.8 - ΕΠΙΛΟΓΗ ΚΑΙ ΕΠΑΝΑΛΗΨΗ


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

ΔΟΜΕΣ ΕΝΤΟΛΩΝ ΕΠΙΛΟΓΗΣ

ΑΝ ( Συνθ ) ΤΟΤΕ
εντολές
ΑΝ (α >= 0) ΤΟΤΕ
ΤΕΛΟΣ_ΑΝ
ρίζα  Τ_Ρ(α)
Κλείνει πάντα με ΤΕΛΟΣ_ΑΝ ανεξάρτητα από το
ΤΕΛΟΣ_ΑΝ
πλήθος των εντολών που περιέχει

ΑΝ (Συνθ) ΤΟΤΕ
ΑΝ (A < B) ΤΟΤΕ
εντολές min  A
ΑΛΛΙΩΣ ΑΛΛΙΩΣ
εντολές min  B
ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ

ΑΝ (Συνθ) ΤΟΤΕ
εντολές ΑΝ (x < 10) ΤΟΤΕ
ΓΡΑΨΕ 'ΑΠΟΡΡΙΠΤΕΤΑΙ'
ΑΛΛΙΩΣ_ΑΝ (Συνθ) ΤΟΤΕ
ΑΛΛΙΩΣ_ΑΝ (x < 12) ΤΟΤΕ
εντολές ΓΡΑΨΕ 'ΜΕΤΡΙΑ'
ΑΛΛΙΩΣ_ΑΝ (Συνθ) ΤΟΤΕ ΑΛΛΙΩΣ_ΑΝ (x < 15) ΤΟΤΕ
εντολές ΓΡΑΨΕ 'ΚΑΛΑ'
.................... ΑΛΛΙΏΣ_ΑΝ (x < 18) ΤΟΤΕ
ΓΡΑΨΕ 'ΠΟΛΥ ΚΑΛΑ'
ΑΛΛΙΩΣ
ΑΛΛΙΩΣ
εντολές ΓΡΑΨΕ 'ΑΡΙΣΤΑ'
ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 52


ΑΕΠΠ / ΚΕΦ. 8 – ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ

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

ΟΣΟ (Συνθ) ΕΠΑΝΑΛΑΒΕ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ


… …
εντολές εντολές
… …
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ (Συνθ)

ΓΙΑ μεταβλητή ΑΠΟ τ1 ΜΕΧΡΙ τ2 ΜΕ ΒΗΜΑ β



εντολές

ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΓΕΝΙΚΕΣ ΠΑΡΑΤΗΡΗΣΕΙΣ
 Οι συνθήκες μπορούν να περιέχουν συγκρίσεις ανάμεσα σε αριθμητικές αλλά και
αλφαριθμητικές τιμές (αλφαβητική σύγκριση όπου ότι έπεται αλφαβητικά θεωρείται
και μεγαλύτερο π.χ. ‘Α’ < ‘Β’ < ‘Γ’ κλπ.).

AN αριθμός = 0 ΤΟΤΕ …
ΌΣΟ λέξη < > 'Hello' ΕΠΑΝΑΛΑΒΕ …
ΑΝ Χ+Υ >= (Α+Β)/Γ ΤΟΤΕ …

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


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

ΑΝ (Χ + 2 > 8) Ή (Χ – Υ * 2 <= 10) ΤΟΤΕ

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


ΑΝ είτε λογικοί τελεστές (ΚΑΙ, Η, ΟΧΙ), τότε προτιμάται το δεύτερο λόγω ταχύτητας.

ΑΝ (Β < 80) ΤΟΤΕ


ΑΝ (Υ < 1.70) ΤΟΤΕ ΑΝ (Β < 80) ΚΑΙ (Υ < 1.70) ΤΟΤΕ
ΓΡΑΨΕ 'ελαφρύς, κοντός' ΓΡΑΨΕ 'ελαφρύς, κοντός'
ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΑΝ

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 53


ΑΕΠΠ / ΚΕΦ. 8 – ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ

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


σφάλματος.

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

ΑΝ (ποσ <= 100) ΤΟΤΕ ΑΝ (ποσ <= 100) ΤΟΤΕ


κόστος  ποσ * 3.5 κόστος  ποσ * 3.5
ΑΛΛΙΩΣ_ΑΝ (ποσ > 100) ΚΑΙ (ποσ <= 200) ΤΟΤΕ ΑΛΛΙΩΣ_ΑΝ (ποσ <= 200) ΤΟΤΕ
κόστος  ποσ * 4.5 κόστος  ποσ * 4.5
ΑΛΛΙΩΣ_ΑΝ (ποσ > 200) ΚΑΙ (ποσ <= 500) ΤΟΤΕ ΑΛΛΙΩΣ_ΑΝ (ποσ <= 500) ΤΟΤΕ
κόστος  ποσ * 7.5 κόστος  ποσ * 7.5
ΑΛΛΙΩΣ ΑΛΛΙΩΣ
κόστος  ποσ * 8.5 κόστος  ποσ * 8.5
ΤΕΛΟΣ_ΑΝ ΤΕΛΟΣ_ΑΝ

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

Α  1 Α  1
ΟΣΟ (Α <= 100) ΕΠΑΝΑΛΑΒΕ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
…… ……
Α  Α + ... Α  Α + ...
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ (Α > 100)

 Στην περίπτωση που δεν είναι γνωστός ο αριθμός των επαναλήψεων, είναι προσωπική
επιλογή του προγραμματιστή για το ποια από τις εντολές επανάληψης θα
χρησιμοποιήσει (ΟΣΟ ή ΜΕΧΡΙΣ_ΟΤΟΥ).

 Κάθε εντολή επανάληψης ΓΙΑ μπορεί να υλοποιηθεί με εντολές ΟΣΟ ή ΜΕΧΡΙΣ_ΟΤΟΥ.

ΓΙΑ Α ΑΠΟ 1 ΜΕΧΡΙ 50 ΜΕ ΒΗΜΑ 2


ΓΡΑΨΕ Α
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Α 1 Α1
ΟΣΟ (Α <= 50) ΕΠΑΝΑΛΑΒΕ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ Α ΓΡΑΨΕ Α
ΑΑ+2 ΑΑ+2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΟΤΟΥ (Α > 50)

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 54


ΑΕΠΠ / ΚΕΦ. 8 – ΕΠΙΛΟΓΗ & ΕΠΑΝΑΛΗΨΗ

 Το αντίθετο δεν ισχύει πάντα. Αν ο αριθμός των επαναλήψεων είναι γνωστός τότε
μπορούμε άνετα να μετατρέψουμε μια ΟΣΟ ή ΜΕΧΡΙΣ_ΟΤΟΥ σε ΓΙΑ, ενώ αν είναι
άγνωστος, η μετατροπή αυτή καθίσταται αδύνατη.

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΔΙΑΒΑΣΕ Α
ΔΙΑΒΑΣΕ Α
ΟΣΟ (Α <> 0) ΕΠΑΝΑΛΑΒΕ
ΑΝ Α <> 0 ΤΟΤΕ
S  S + A
S  S + A
ΔΙΑΒΑΣΕ Α
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΕΧΡΙΣ_ΟΤΟΥ (Α = 0)

ΓΙΑ Α ΑΠΟ ; ΜΕΧΡΙ ; ΜΕ ΒΗΜΑ ;


S  S + A
αδύνατη υλοποίηση
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΕΜΦΩΛΕΥΜΕΝΕΣ ΔΟΜΕΣ : ΙΔΙΟΤΗΤΕΣ ΒΡΟΧΩΝ


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

ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 10


ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 20 ΓΙΑ ι ΑΠΟ 1 ΜΕΧΡΙ 20
………… …………
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 55


ΑΕΠΠ / ΚΕΦ. 9 – ΠΙΝΑΚΕΣ

ΚΕΦ.9 – ΠΙΝΑΚΕΣ

Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται


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

Ο δείκτης είναι μια ακέραια έκφραση σταθερή ή μεταβλητή που τοποθετείται μέσα σε
αγκύλες [ ] π.χ.
Α[3] προσπέλαση του 3ου στοιχείου ενός πίνακα με όνομα Α
Μαθητές[7] προσπέλαση του 7ου στοιχείου ενός πίνακα με όνομα Μαθητές
Β[5,8] προσπέλαση του στοιχείου της 5ης γραμμής και 8ης στήλης ενός πίνακα με όνομα Β
Η ανάγνωση, η επεξεργασία και η εκτύπωση των στοιχείων ενός πίνακα γίνεται εύκολα με
την εντολή επανάληψης ΓΙΑ
Η χρήση του πίνακα δεν είναι πάντα απαραίτητη, αλλά κρίνεται αναγκαία όταν χρειάζεται
η αποθήκευση μιας σειράς ομοειδών τιμών για περεταίρω επεξεργασία.

ΠΑΡΑΔΕΙΓΜΑ 1
Να γραφεί πρόγραμμα που διαβάζει τις 30 θερμοκρασίες ενός μήνα και υπολογίζει και εμφανίζει
την μέση θερμοκρασία του μήνα.
Η χρήση του πίνακα σε αυτό το παράδειγμα δεν κρίνεται
ΠΡΟΓΡΑΜΜΑ Χωρίς_πίνακα απαραίτητη, αφού και οι 30 διαφορετικές τιμές αποθηκεύονται
ΜΕΤΑΒΛΗΤΕΣ διαδοχικά στη μεταβλητή Θ.
ΠΡΑΓΜΑΤΙΚΕΣ: Θ,S,ΜΟ
ΑΚΕΡΑΙΕΣ: i Το πρόγραμμα υπολογίζει το άθροισμα και τον μέσο όρο των 30
ΑΡΧΗ τιμών χωρίς την ανάγκη πίνακα.
S  0 Με την λήξη της εντολής ΓΙΑ, η μεταβλητή Θ θα διατηρεί την
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30 τελευταία (30η) τιμή.
ΔΙΑΒΑΣΕ Θ
ΠΡΟΓΡΑΜΜΑ Με_πίνακα
S  S + Θ
ΜΕΤΑΒΛΗΤΕΣ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΠΡΑΓΜΑΤΙΚΕΣ: Θ[30],S,ΜΟ
ΜΟ  S / 30
ΑΚΕΡΑΙΕΣ: i
ΓΡΑΨΕ ΜΟ
ΑΡΧΗ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
S  0
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΠΑΡΑΔΕΙΓΜΑ 2 ΔΙΑΒΑΣΕ Θ[i]
Αν στο παραπάνω πρόγραμμα ζητηθεί να εμφανιστούν S  S + Θ[i]
και οι θερμοκρασίες των ημερών που είναι μικρότερες ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΜΟ  S / 30
της μέσης τιμής, τότε η χρήση πίνακα κρίνεται αναγκαία.
ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 30
ΑΝ Θ[i] < ΜΟ ΤΟΤΕ
ΓΡΑΨΕ Θ[i]
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 56


ΑΕΠΠ / ΚΕΦ. 9 – ΠΙΝΑΚΕΣ

Ο πίνακας Θ του προηγούμενου παραδείγματος,


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

ΠΛΕΟΝΕΚΤΗΜΑΤΑ
☺ Η χρήση πινάκων είναι ο πιο βολικός τρόπος για την διαχείριση πολλών
δεδομένων του ιδίου τύπου.

☺ Αν τα δεδομένα που εισάγονται σε ένα πρόγραμμα πρέπει να διατηρούνται στη


μνήμη μέχρι το τέλος της εκτέλεσης (για περαιτέρω επεξεργασία), τότε η χρήση
ενός πίνακα είναι απαραίτητη.

ΜΕΙΟΝΕΚΤΗΜΑΤΑ
 Οι πίνακες απαιτούν μνήμη.
Κάθε πίνακας δεσμεύει κατά την δήλωσή του πολλές θέσεις μνήμης, άσχετα από
τον αν τις χρησιμοποιεί όλες ή όχι.

 Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος.


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

ΤΥΠΙΚΕΣ ΕΠΕΞΕΡΓΑΣΙΕΣ ΠΙΝΑΚΩΝ


 Υπολογισμός αθροισμάτων στοιχείων πίνακα
 Εύρεση μεγίστου – ελαχίστου σε πίνακα
 Ταξινόμηση του πίνακα (φυσαλίδα)
 Αναζήτηση ενός στοιχείου σε πίνακα (σειριακή ή δυαδική)
 Συγχώνευση δύο πινάκων

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 57


ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
 Όπως γνωρίζουμε ήδη, τα σύνθετα προβλήματα προκειμένου να αντιμετωπισθούν και
να γραφούν τα αντίστοιχα προγράμματα, πρέπει πρώτα να ακολουθηθεί η τεχνική της
Ιεραρχικής Σχεδίασης (top-down design) από πάνω προς τα κάτω.
 Έτσι κάθε δοθέν πρόβλημα αναλύεται σε μικρότερα και αυτά σε ακόμα μικρότερα μέχρι
το σημείο στο οποίο φτάνουμε σε προβλήματα με προφανή και εύκολη λύση.
 Τότε οι αλγόριθμοι και τα τμήματα προγράμματος μπορούν να σχεδιαστούν και να
γραφούν εύκολα για κάθε υποπρόβλημα.

Τμηματικός Προγραμματισμός είναι η τεχνική σχεδίασης και ανάπτυξης των


προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

Υποπρόγραμμα (Subprogram) είναι ένα τμήμα προγράμματος που επιτελεί


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

ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ
 Ο χωρισμός του προγράμματος σε ανεξάρτητα υποπρογράμματα προϋποθέτει το
αρχικό πρόβλημα να έχει αναλυθεί σε υποπροβλήματα βάσει της ιεραρχικής σχεδίασης.
 Δεν υπάρχουν κανόνες σωστής ανάλυσης.
 Ο τμηματικός προγραμματισμός απαιτεί μελέτη και ανάλυση του προβλήματος,
εμπειρία στο προγραμματισμό, γνώσεις και ταλέντο.

ΙΔΙΟΤΗΤΕΣ ΥΠΟΠΡΟΓΡΑΜΜΑΤΟΣ

Να έχει μία μόνο είσοδο και μία έξοδο


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 58


ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ
ΠΛΕΟΝΕΚΤΗΜΑΤΑ ΤΜΗΜΑΤΙΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Εύκολη ανάπτυξη αλγορίθμου και προγράμματος


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

Εύκολη κατανόηση και διόρθωση προγράμματος


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

Λιγότερος χρόνος και προσπάθεια για συγγραφή προγράμματος


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

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


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

ΠΑΡΑΜΕΤΡΟΙ
 Η ενεργοποίηση ενός υποπρογράμματος γίνεται μέσα από την κλήση του (το
κάλεσμά του).
 Η κλήση ενός υποπρογράμματος γίνεται από το αρχικό πρόγραμμα ή από κάποιο
άλλο υποπρόγραμμα που λέγεται κύριο πρόγραμμα.
 Το υποπρόγραμμα δέχεται τιμές από το τμήμα προγράμματος που το καλεί και αφού
κάνει την εκτέλεσή του, επιστρέφει σε αυτό νέες τιμές ως αποτελέσματα.

Παράμετροι (parameters) είναι οι τιμές που περνούν μεταξύ των


υποπρογραμμάτων και είναι σαν τις κοινές μεταβλητές.

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 59


ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΑΤΗΓΟΡΙΕΣ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ
Ανάλογα με την λειτουργία που εκτελούν, τα υποπρογράμματα διακρίνονται σε δύο
βασικές κατηγορίες :
 διαδικασίες (εκτελούν κάθε λειτουργία που μπορεί να εκτελέσει και το πρόγραμμα)
 συναρτήσεις (η χρήση τους είναι πιο περιορισμένη).

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


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

ΣΥΝΑΡΤΗΣΗ (Function)

Η συνάρτηση είναι τύπος υποπρογράμματος που υπολογίζει μία τιμή


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

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

ΣΥΝΑΡΤΗΣΗ όνομα (λίστα παραμέτρων):τύπος συνάρτησης


Τμήμα δηλώσεων
ΑΡΧΗ
……
όνομα  έκφραση
……
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 60


ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΣΗΜΕΙΩΣΗ
Μια συνάρτηση μπορεί να κληθεί ακριβώς στα ίδια σημεία του προγράμματος που
καλούνται οι ενσωματωμένες μαθηματικές συναρτήσεις της ΓΛΩΣΣΑΣ, δηλαδή:

 εντολές εκχώρησης π.χ. Χ  συναρ(Α,Β)

 εντολές εξόδου π.χ. ΓΡΑΨΕ 'Αποτέλεσμα = ', συναρ(Α,Β)

 λογικές εκφράσεις π.χ. ΑΝ συναρ(Α,Β) >= 12 ΤΟΤΕ …

ΠΑΡΑΔΕΙΓΜΑ ΠΡΟΓΡΑΜΜΑ Παράδειγμα ΣΥΝΑΡΤΗΣΗ MAX(Χ,Υ): ΑΚΕΡΑΙΑ


ΜΕΤΑΒΛΗΤΕΣ ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ:Α,Β,M ΑΚΕΡΑΙΕΣ: Χ,Υ
ΑΡΧΗ ΑΡΧΗ
κλήση συνάρτησης ΔΙΑΒΑΣΕ Α, Β ΑΝ Χ > Υ ΤΟΤΕ
Μ  MAX(Α,Β) MAX  Χ
ΓΡΑΨΕ Μ ΑΛΛΙΩΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ MAX  Υ
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

ΔΙΑΔΙΚΑΣΙΑ (Procedure)

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


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

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

ΔΙΑΔΙΚΑΣΙΑ όνομα (λίστα παραμέτρων)


Τμήμα δηλώσεων
ΑΡΧΗ
……
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 61


ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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


Η κλήση της διαδικασίας γίνεται ξεχωριστή εντολή με την δεσμευμένη λέξη ΚΑΛΕΣΕ που
ακολουθείται από το όνομα και την λίστα παραμέτρων της διαδικασίας:

ΚΑΛΕΣΕ όνομα διαδικασίας (λίστα παραμέτρων)

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

ΠΑΡΑΔΕΙΓΜΑ ΠΡΟΓΡΑΜΜΑ Παράδειγμα ΔΙΑΔΙΚΑΣΙΑ TEST(Χ,Υ,max,min)


ΜΕΤΑΒΛΗΤΕΣ ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: Α,Β,μεγ,ελαχ ΑΚΕΡΑΙΕΣ: Χ,Υ,max,min
ΑΡΧΗ ΑΡΧΗ
κλήση διαδικασίας
ΔΙΑΒΑΣΕ Α, Β ΑΝ Χ > Υ ΤΟΤΕ
ΚΑΛΕΣΕ TEST(Α,Β,μεγ,ελαχ) max  Χ
ΓΡΑΨΕ μεγ min  Y
ΓΡΑΨΕ ελαχ ΑΛΛΙΩΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ max  Υ
min  X
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΠΡΑΓΜΑΤΙΚΕΣ & ΤΥΠΙΚΕΣ ΠΑΡΑΜΕΤΡΟΙ


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 62


ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Η λίστα τυπικών παραμέτρων καθορίζει τις παραμέτρους στη δήλωση του


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

Οι λίστες των παραμέτρων πρέπει να ακολουθούν τους εξής κανόνες:

 Ίδιος αριθμός των πραγματικών και των τυπικών παραμέτρων.


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

ΚΛΗΣΗ ΥΠΟΠΡΟΓΡΑΜΜΑΤΩΝ ΜΕ ΧΡΗΣΗ ΣΤΟΙΒΑΣ


Όταν ένα υποπρόγραμμα καλείται από το κυρίως πρόγραμμα, τότε η αμέσως επόμενη
διεύθυνση του προγράμματος, γνωστή και ως διεύθυνση επιστροφής (return address),
αποθηκεύεται (ωθείται - push) προσωρινά από τον μεταφραστή σε μία στοίβα που
ονομάζεται στοίβα χρόνου εκτέλεσης (execution time stack).
Όταν το υποπρόγραμμα ολοκληρώνεται, η διεύθυνση επιστροφής απωθείται (pop) από
την στοίβα και έτσι ο έλεγχος του προγράμματος μεταφέρεται και πάλι στο κυρίως
πρόγραμμα.
Με τον τρόπο αυτό το κυρίως πρόγραμμα μπορεί να θυμάται το σημείο στο οποίο θα
πρέπει να επιστρέψει μετά την ολοκλήρωση του υποπρογράμματος, έτσι ώστε να συνεχίσει
την εκτέλεση των εντολών του π.χ.
Έστω ότι το υποπρόγραμμα Α καλεί το υποπρόγραμμα Β που καλεί το υποπρόγραμμα Γ.
Οι διευθύνσεις επιστροφής των υποπρογραμμάτων Α και Β ωθούνται με την σειρά σε μία
στοίβα και απωθούνται με την αντίστροφη σειρά κατά την φάση της εκάστοτε επιστροφής
στο σημείο της κλήσης.

Μετά το τέλος της εκτέλεσης της διαδικασίας ή


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 63


ΑΕΠΠ / ΚΕΦ.10 - ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ - ΣΤΑΘΕΡΩΝ


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

Όλες οι μεταβλητές στη ΓΛΩΣΣΑ είναι γνωστές μόνο στο αντίστοιχο


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

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

Εμβέλεια μεταβλητών (variables scope) ονομάζεται το συγκεκριμένο τμήμα του


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

Πολλές γλώσσες προγραμματισμού επιτρέπουν τη χρήση των μεταβλητών και των


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

ΑΠΕΡΙΟΡΙΣΤΗ ΠΕΡΙΟΡΙΣΜΕΝΗ ΜΕΡΙΚΩΣ ΠΕΡΙΟΡΙΣΜΕΝΗ


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 64


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Α – ΤΥΠΟΛΟΓΙΟ ΨΕΥΔΟΓΛΩΣΣΑΣ

ΠΑΡΑΡΤΗΜΑ Α - ΤΥΠΟΛΟΓΙΟ ΨΕΥΔΟΓΛΩΣΣΑΣ

Τίτλος αλγορίθμου Αλγόριθμος Όνομα_Αλγορίθμου

Τερματισμός αλγορίθμου Τέλος Όνομα_Αλγορίθμου

Αριθμητικοί : + - * / div mod ^


Τελεστές Συγκριτικοί : = ≠ ≤ < ≥ >
Λογικοί : και ή όχι

Δεδομένα εισόδου : Δεδομένα // … //


Έξοδος αποτελεσμάτων : Αποτελέσματα // … //
Είσοδος - Έξοδος
Εισαγωγή δεδομένων: Διάβασε μετ1, μετ2, … , μετΝ
Εμφάνιση στην οθόνη: Εμφάνισε αποτ1, αποτ2, … , αποτΝ
Εκτύπωση στον εκτυπωτή: Εκτύπωσε αποτ1, αποτ2, … , αποτΝ

μεταβλητή  σταθερά
Εκχώρηση τιμής μεταβλητή  μεταβλητή
μεταβλητή  έκφραση

Αν συνθ τότε
Αν συνθ τότε εντολές 1
εντολές αλλιώς
Τέλος_αν εντολές 2
Τέλος_αν

Αν (συνθ) τότε
εντολές
Δομές επιλογής Αλλιώς_αν (συνθ) τότε
εντολές
Αλλιώς_αν (συνθ) τότε
εντολές
………
Αλλιώς
εντολές
Τέλος_αν

Όσο (συνθ) επανάλαβε Αρχή_Επανάληψης


εντολές εντολές
Τέλος_Επανάληψης Μέχρις_Ότου (συνθ)
Δομές επανάληψης
Για μεταβλητή από τιμή1 μέχρι τιμή2 με_βήμα β
Εντολές
Τέλος_Επανάληψης

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 65


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Β – ΤΥΠΟΛΟΓΙΟ ΓΛΩΣΣΑΣ

ΠΑΡΑΡΤΗΜΑ Β - ΤΥΠΟΛΟΓΙΟ ΓΛΩΣΣΑΣ

Τίτλος προγράμματος ΠΡΟΓΡΑΜΜΑ Όνομα_Προγράμματος


Τερματισμός
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
προγράμματος
Τύποι Δεδομένων ΑΚΕΡΑΙΕΣ, ΠΡΑΓΜΑΤΙΚΕΣ, ΧΑΡΑΚΤΗΡΕΣ, ΛΟΓΙΚΕΣ

ΣΤΑΘΕΡΕΣ
Ορισμός σταθερών όνομα_1 = τιμή1
όνομα_Ν = τιμήΝ

ΜΕΤΑΒΛΗΤΕΣ
Δήλωση μεταβλητών Τύπος δεδομένων : λίστα μεταβλητών
Τύπος δεδομένων : λίστα μεταβλητών

Αριθμητικοί : + - * / div mod ^


Τελεστές Συγκριτικοί : = <> <= < >= >
Λογικοί : ΚΑΙ Ή ΟΧΙ

Εισαγωγή δεδομένων: ΔΙΑΒΑΣΕ μετ1, μετ2, … , μετΝ


Είσοδος - Έξοδος
Εμφάνιση στην οθόνη: ΓΡΑΨΕ αποτ1, αποτ2, … , αποτΝ

ΗΜ (Χ) Ημίτονο Χ ΛΟΓ (Χ) Λογάριθμος του Χ


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

Εκχώρηση τιμής μεταβλητή  έκφραση


ΑΝ συνθ ΤΟΤΕ
ΑΝ συνθ ΤΟΤΕ εντολές 1
εντολές ΑΛΛΙΩΣ
ΤΕΛΟΣ_ΑΝ εντολές 2
ΤΕΛΟΣ_ΑΝ
ΑΝ (συνθ) ΤΟΤΕ
εντολές
Δομές επιλογής ΑΛΛΙΩΣ_ΑΝ (συνθ) ΤΟΤΕ
εντολές
ΑΛΛΙΩΣ_ΑΝ (συνθ) ΤΟΤΕ
εντολές
………
ΑΛΛΙΩΣ
εντολές
ΤΕΛΟΣ_ΑΝ
ΌΣΟ (συνθ) ΕΠΑΝΑΛΑΒΕ ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
εντολές εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΜΕΧΡΙΣ_ΌΤΟΥ (συνθ)
Δομές επανάληψης
ΓΙΑ μεταβλητή ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ ΒΗΜΑ β
εντολές
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 66


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Γ – ΠΙΝΑΚΑΣ ASCII

ΠΑΡΑΡΤΗΜΑ Γ - ΠΙΝΑΚΑΣ ASCII


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

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 67


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ – ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ

ΠΑΡΑΡΤΗΜΑ Δ - ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ

ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ
Συνήθεις αλγόριθμοι για ένα πίνακα Α με Ν στοιχεία

ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΟΣ & ΜΕΣΟΥ ΟΡΟΥ ΜΗΔΕΝΙΣΜΟΣ ΣΤΟΙΧΕΙΩΝ ΠΙΝΑΚΑ


Δεδομένα // Α,Ν // Δεδομένα // Α,Ν //
Σ ← 0 Για i από 1 μέχρι Ν
Για i από 1 μέχρι Ν Α[i] ← 0
Σ ← Σ + Α[i] Τέλος_επανάληψης
Τέλος_επανάληψης Αποτελέσματα // Α //
ΜΟ ← Σ/Ν
Αποτελέσματα // Σ,ΜΟ //

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ (με θέσεις)


Δεδομένα // Α,Ν // Δεδομένα // Α,Ν //
max ← Α[1] max ← Α[1]
min ← Α[1] min ← Α[1]
Για i από 2 μέχρι Ν minp ← 1
Αν Α[i] > max τότε maxp ← 1
max ← Α[i] Για i από 2 μέχρι Ν
Τέλος_αν Αν Α[i] > max τότε
Αν Α[i] < min τότε max ← Α[i]
min ← Α[i] maxp ← i
Τέλος_αν Τέλος_αν
Τέλος_επανάληψης Αν Α[i] < min τότε
Αποτελέσματα // max,min // min ← Α[i]
minp ← i
Τέλος_αν
Τέλος_επανάληψης
Αποτελέσματα // max,min,maxp,minp //

ΑΝΑΣΤΡΟΦΗ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΣΥΓΧΩΝΕΥΣΗ ΤΑΞΙΝ. ΠΙΝΑΚΩΝ Α[Ν], Β[Μ]


Δεδομένα // Α,Ν // Δεδομένα // Α,Β,Ν,Μ //
Για i από 1 μέχρι Ν div 2 i ← 1 j ← 1 k ← 1
temp ← Α[i] Όσο i ≤ Ν και j ≤ Μ επανάλαβε
A[i] ← A[N+1-i] Αν Α[i] < Β[j] τότε
Γ[k] ← A[i]
A[N+1-i] ← temp i ← i + 1
Τέλος_επανάληψης Αλλιώς
Αποτελέσματα // A // Γ[k] ← Β[j]
j ← j + 1
Τέλος_αν
ΣΥΝΕΝΩΣΗ ΠΙΝΑΚΩΝ Α[Ν], Β[Μ] k ← k + 1
Τέλος_επανάληψης
Δεδομένα // Α,B,Ν,M // Αν i > Ν τότε
Για i από 1 μέχρι Ν Για χ από j μέχρι Μ
Γ[i] ← Α[i] Γ[k] ← Β[χ]
Τέλος_επανάληψης k ← k + 1
κ ← Ν+1 Τέλος_επανάληψης
Για i από 1 μέχρι Μ Αλλιώς
Για χ από i μέχρι Ν
Γ[κ] ← Β[i]
Γ[k] ← Α[χ]
κ ← κ + 1 k ← k + 1
Τέλος_επανάληψης Τέλος_επανάληψης
Αποτελέσματα // Γ // Τέλος_αν
Αποτελέσματα // Γ //

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 68


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ – ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ

ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΧΩΡΙΣ ΕΠΑΝΑΛΗΨΕΙΣ) ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΜΕ ΕΠΑΝΑΛΗΨΕΙΣ)


Δεδομένα // Α,Ν,key // Δεδομένα // Α,Ν,key //
i ← 1 found ← Ψευδής
found ← Ψευδής Για i από 1 μέχρι Ν
Όσο (i ≤ Ν) και (found = Ψευδής) επανάλαβε Αν Α[i] = key τότε
Αν (Α[i] = key) τότε found ← Αληθής
found ← Αληθής Εμφάνισε "Βρέθηκε στη θέση",i
pos ← i Τέλος_Αν
αλλιώς Τέλος_επανάληψης
i ← i + 1 Αν found = Ψευδής τότε
Τέλος_Αν Εμφάνισε "Στοιχείο δεν βρέθηκε"
Τέλος_επανάληψης Τέλος_Αν
Αν (found = Αληθής) τότε
Εμφάνισε "Βρέθηκε στη θέση",pos
αλλιώς
Εμφάνισε "Στοιχείο δεν βρέθηκε"
Τέλος_Αν

ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΧΩΡΙΣ ΕΠΑΝΑΛΗΨΕΙΣ) ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΜΕ ΕΠΑΝΑΛΗΨΕΙΣ)


(πίνακας ταξινομημένος) (πίνακας ταξινομημένος)
Δεδομένα // Α,Ν,key // Δεδομένα // Α,Ν,key //
i ← 1 i ← 1
found ← Ψευδής found ← Ψευδής
Όσο (i ≤ Ν) και (found = Ψευδής) και Όσο (i ≤ Ν) και (Α[i] <= key) επανάλαβε
& (Α[i] <= key) επανάλαβε Αν Α[i] = key τότε
Αν (Α[i] = key) τότε found ← Αληθής
found  Αληθής Εμφάνισε "Βρέθηκε στη θέση",i
pos ← i Τέλος_Αν
αλλιώς i ← i + 1
i ← i + 1 Τέλος_επανάληψης
Τέλος_Αν Αν found = Ψευδής τότε
Τέλος_επανάληψης Εμφάνισε "Στοιχείο δεν βρέθηκε"
Αν (found = Αληθής) τότε Τέλος_Αν
Εμφάνισε "Βρέθηκε στη θέση",pos
αλλιώς
Εμφάνισε "Στοιχείο δεν βρέθηκε"
Τέλος_Αν

ΔΥΑΔΙΚΗ ΑΝΑΖΗΤΗΣΗ (πίνακας αύξουσας διάταξης)


Δεδομένα // Α,Ν,key //
start ← 1
end ← Ν
found ← Ψευδής
Όσο (start ≤ end) και (found = Ψευδής) επανάλαβε
μέσο ← (start + end) div 2
Αν Α[μέσο] = key τότε
found ← Αληθής
Εμφάνισε "Βρέθηκε στη θέση", μέσο
αλλιώς_αν Α[μέσο] > key τότε
end ← μέσο - 1
αλλιώς
start ← μέσο + 1
Τέλος_Αν
Τέλος_επανάληψης
Αν (found = Ψευδής) τότε
Εμφάνισε "Στοιχείο δεν βρέθηκε"
Τέλος_Αν

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 69


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ – ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ

ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΑΝΤΑΛΛΑΓΗΣ (ΦΥΣΑΛΙΔΑ) ΕΞΥΠΝΗ ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΑΝΤΑΛΛΑΓΗΣ


Δεδομένα // Α,Ν // Δεδομένα // Α,Ν //
Για i από 2 μέχρι Ν i ← 2
Για j από Ν μέχρι i με_βήμα –1 Αρχή_Επανάληψης
Αν Α[j-1] > Α[j] τότε F ← Αληθής
temp ← Α[j-1] Για j από N μέχρι i με_βήμα -1
A[j-1] ← A[j] Αν Α[j-1] > Α[j] τότε
A[j] ← temp temp ← Α[j-1]
Τέλος_Αν A[j-1] ← A[j]
Τέλος_επανάληψης A[j] ← temp
Τέλος_επανάληψης F ← Ψευδής
Αποτελέσματα // Α // Τέλος_Αν
Τέλος_επανάληψης
i ← i + 1
Μέχρις_Ότου F = Αληθής ή i > Ν
Υποχρεωτική εκτέλεση Ν-1 επαναλήψεων έστω και αν ο Τέλος_επανάληψης
πίνακας έχει ήδη ταξινομηθεί. Αποτελέσματα // Α //

Αποφυγή περιττών επαναλήψεων αν ο πίνακας έχει ήδη


ταξινομηθεί.
ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΕΠΙΛΟΓΗΣ (Α’ Τρόπος) ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΕΠΙΛΟΓΗΣ (Β’ Τρόπος)
Δεδομένα // A,N // Δεδομένα // A,N //
Για i από 1 μέχρι N-1 Για i από 1 μέχρι N-1
pos  i pos  i
min  A[i] Για j από i+1 μέχρι N
Για j από i+1 μέχρι N Αν A[j] < A[pos] τότε
Αν A[j] < min τότε pos ← j
pos ← j Τέλος_αν
min  A[j] Τέλος_επανάληψης
Τέλος_αν temp  A[pos]
Τέλος_επανάληψης A[pos]  A[i]
A[pos]  A[i] A[i]  temp
A[i]  min Τέλος_επανάληψης
Τέλος_επανάληψης Αποτελέσματα // A
Αποτελέσματα // A //

ΤΑΞΙΝΟΜΗΣΗ ΕΥΘΕΙΑΣ ΕΙΣΑΓΩΓΗΣ


(INSERTION SORT)

Δεδομένα // A,N //
Για i από 2 μέχρι N
j  i
F  Ψευδής
Όσο j > 1 και F = Ψευδής επανάλαβε
Αν Α[j] < Α[j-1] τότε
temp  A[j]
A[j]  A[j-1]
A[j-1]  temp
j  j -1
αλλιώς
F  Αληθής
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσματα // A //

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 70


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ – ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ

ΔΙΣΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ
Συνήθεις αλγόριθμοι για ένα πίνακα Α με Ν γραμμές και Μ στήλες

ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΟΣ & ΜΕΣΟΥ ΟΡΟΥ ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ


Δεδομένα // Α,Ν,Μ // Δεδομένα // Α,Ν,Μ //
Σ ← 0 max ← Α[1,1]
Για i από 1 μέχρι Ν min ← Α[1,1]
Για j από 1 μέχρι Μ Για i από 1 μέχρι Ν
Σ ← Σ + Α[i,j] Για j από 1 μέχρι Μ
Τέλος_επανάληψης Αν Α[i,j] > max τότε
Τέλος_επανάληψης max ← Α[i,j]
ΜΟ ← Σ/(Ν*Μ) Τέλος_αν
Αποτελέσματα // Σ,ΜΟ // Αν Α[i,j] < min τότε
min ← Α[i,j]
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσματα // max,min //

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ - ΕΛΑΧΙΣΤΟΥ (με θέσεις) ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΧΩΡΙΣ ΕΠΑΝΑΛΗΨΕΙΣ)


Δεδομένα // Α,Ν,Μ // Δεδομένα // Α,Ν,Μ,key //
max ← Α[1,1] i ← 1
min ← Α[1,1] found ← Ψευδής
minΓ ← 1 minΣ ← 1 Όσο (i ≤ Ν) και (found = Ψευδής) επανάλαβε
maxΓ ← 1 maxΣ ← 1 j ← 1
Για i από 1 μέχρι Ν Όσο (j ≤ M) και (found = Ψευδής) επανάλαβε
Για j από 1 μέχρι Μ Αν (Α[i,j] = key) τότε
Αν Α[i,j] > max τότε found ← Αληθής
max ← Α[i,j] pos1 ← i
maxΓ ← i pos2 ← j
maxΣ ← j αλλιώς
Τέλος_αν j ← j + 1
Αν Α[i,j] < min τότε Τέλος_Αν
min ← Α[i,j] Τέλος_επανάληψης
minΓ ← i i ← i + 1
minΣ ← j Τέλος_επανάληψης
Τέλος_αν Αν (found = Αληθής) τότε
Τέλος_επανάληψης Εμφάνισε "Βρέθηκε στη θέση",pos1,pos2
Τέλος_επανάληψης αλλιώς
Αποτελέσματα // max,min,maxΓ,maxΣ Εμφάνισε "Στοιχείο δεν βρέθηκε"
& minΓ,minΣ // Τέλος_Αν

ΣΕΙΡΙΑΚΗ ΑΝΑΖΗΤΗΣΗ (ΜΕ ΕΠΑΝΑΛΗΨΕΙΣ)

Δεδομένα // Α,Ν,M,key //
found ← Ψευδής
Για i από 1 μέχρι Ν
Για j από 1 μέχρι Μ
Αν Α[i,j] = key τότε
found ← Αληθής
Εμφάνισε "Βρέθηκε στην",i,j
Τέλος_Αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αν found = Ψευδής τότε
Εμφάνισε "Στοιχείο δεν βρέθηκε"
Τέλος_Αν

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 71


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ – ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ

ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΤΑ ΓΡΑΜΜΕΣ & ΚΑΤΑ ΣΤΗΛΕΣ

ΕΥΡΕΣΗ ΑΘΡΟΙΣMΑΤΩΝ - MO / ΓΡΑΜΜΕΣ ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΩΝ - MO / ΣΤΗΛΕΣ


Δεδομένα // Α,Ν,Μ // Δεδομένα // Α,Ν,Μ //
Για i από 1 μέχρι Ν Για j από 1 μέχρι M
Σ ← 0 Σ ← 0
Για j από 1 μέχρι Μ Για i από 1 μέχρι N
Σ ← Σ + Α[i,j] Σ ← Σ + Α[i,j]
Τέλος_επανάληψης Τέλος_επανάληψης
ΜΟ ← Σ / Μ MO ← Σ / Ν
Εμφάνισε Σ, MO Εμφάνισε Σ, MO
Τέλος_επανάληψης Τέλος_επανάληψης

ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ / ΓΡΑΜΜΕΣ ΕΥΡΕΣΗ ΜΕΓΙΣΤΟΥ / ΣΤΗΛΕΣ


Δεδομένα // Α,Ν,Μ // Δεδομένα // Α,Ν,Μ //
Για i από 1 μέχρι Ν Για j από 1 μέχρι M
max ← A[i,1] max ← A[1,j]
Για j από 2 μέχρι Μ Για i από 2 μέχρι N
Αν Α[i,j] > max τότε Αν Α[i,j] > max τότε
max ← Α[i,j] max ← Α[i,j]
Τέλος_Αν Τέλος_Αν
Τέλος_επανάληψης Τέλος_επανάληψης
Εμφάνισε max Εμφάνισε max
Τέλος_επανάληψης Τέλος_επανάληψης

ΕΥΡΕΣΗ ΘΕΣΗΣ ΜΕΓΙΣΤΟΥ / ΓΡΑΜΜΕΣ ΕΥΡΕΣΗ ΘΕΣΗΣ ΜΕΓΙΣΤΟΥ / ΣΤΗΛΕΣ


Δεδομένα // Α,Ν,Μ // Δεδομένα // Α,Ν,Μ //
Για i από 1 μέχρι Ν Για j από 1 μέχρι M
max ← A[i,1] max ← A[1,j]
pos ← 1 pos ← 1
Για j από 2 μέχρι Μ Για i από 2 μέχρι N
Αν Α[i,j] > max τότε Αν Α[i,j] > max τότε
max ← Α[i,j] max ← Α[i,j]
pos ← j pos ← i
Τέλος_Αν Τέλος_Αν
Τέλος_επανάληψης Τέλος_επανάληψης
Εμφάνισε pos Εμφάνισε pos
Τέλος_επανάληψης Τέλος_επανάληψης

ΤΟΠΟΘΕΤΗΣΗ ΣΕ ΠΙΝΑΚΑ B ΤΩΝ ΚΑΤA ΤΟΠΟΘΕΤΗΣΗ ΣΕ ΠΙΝΑΚΑ B ΤΩΝ ΚΑΤΑ


ΓΡΑΜΜΕΣ ΑΠΟΤΕΛΕΣΜΑΤΩΝ TOY A ΣΤΗΛΕΣ ΑΠΟΤΕΛΕΣΜΑΤΩΝ TOY A
Δεδομένα // Α,Ν,Μ // Δεδομένα // Α,Ν,Μ //
Για i από 1 μέχρι Ν Για j από 1 μέχρι Μ
……… ………
Για j από 1 μέχρι Μ Για i από 1 μέχρι Ν
………… …………
Τέλος_επανάληψης Τέλος_επανάληψης
Β[i] ← ……… Β[j] ← ………
Τέλος_επανάληψης Τέλος_επανάληψης

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 72


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Δ – ΜΟΝΤΕΛΑ ΕΠΕΞΕΡΓΑΣΙΑΣ ΠΙΝΑΚΩΝ

ΤΕΤΡΑΓΩΝΙΚΟΙ ΠΙΝΑΚΕΣ

Αν στον παρακάτω τετραγωνικό πίνακα N*N θεωρήσουμε τον δείκτη i ως δείκτη γραμμών και τον
δείκτη j ως δείκτη στηλών, τότε για κάθε στοιχείο (i,j) του πίνακα μπορούμε να αποφανθούμε ότι
βρίσκεται:

 Στην κύρια διαγώνιο αν i = j στοιχείο (i, i)


 Πάνω από την κύρια διαγώνιο αν i < j
 Κάτω από την κύρια διαγώνιο αν i > j

 Στην δευτερεύουσα διαγώνιο αν i + j = N+1 στοιχείο (i,N+1-i)


 Πάνω από την δευτερεύουσα διαγώνιο αν i + j < N+1
 Κάτω από την δευτερεύουσα διαγώνιο αν i + j > N+1

ΕΥΡΕΣΗ ΑΘΡΟΙΣΜΑΤΟΣ ΣΤΟΙΧΕΙΩΝ ΔΙΑΓΩΝΙΩΝ

Α’ τρόπος (προσπέλαση ολόκληρου του πίνακα) Β’ τρόπος (προσπέλαση μόνο των διαγώνιων)

Δεδομένα // Α,Ν // Δεδομένα // Α,Ν //


Σ1 ← 0 Σ1 ← 0
Σ2 ← 0 Σ2 ← 0
Για i από 1 μέχρι Ν Για i από 1 μέχρι Ν
Για j από 1 μέχρι Ν Σ1 ← Σ1 + Α[i,i]
Αν i = j τότε Σ2 ← Σ2 + Α[i,Ν+1-i]
Σ1 ← Σ1 + Α[i,j] Τέλος_επανάληψης
Τέλος_Αν Αποτελέσματα // Σ1,Σ2 //
Αν i+j = N+1 τότε
Σ2 ← Σ2 + Α[i,j]
Τέλος_Αν
Τέλος_επανάληψης
Τέλος_επανάληψης
Αποτελέσματα // Σ1,Σ2 //

ΕΜΦΑΝΙΣΗ ΣΤΟΙΧΕΙΩΝ ΑΝΩ ΤΡΙΓΩΝΙΚΟΥ (ΜΟΝΟ) ΕΜΦΑΝΙΣΗ ΣΤΟΙΧΕΙΩΝ ΚΑΤΩ ΤΡΙΓΩΝΙΚΟΥ (ΜΟΝΟ)
Για i από 1 μέχρι Ν-1 Για j από 1 μέχρι Ν-1
Για j από i+1 μέχρι Ν Για i από j+1 μέχρι Ν
Εμφάνισε Α[i,j] Εμφάνισε Α[i,j]
Τέλος_επανάληψης Τέλος_επανάληψης
Τέλος_επανάληψης Τέλος_επανάληψης

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 73


ΑΕΠΠ / ΠΑΡΑΡΤΗΜΑ Ε – ΛΕΙΤΟΥΡΓΙΕΣ ΣΤΟΙΒΑΣ & ΟΥΡΑΣ

ΛΕΙΤΟΥΡΓΙΕΣ ΣΤΟΙΒΑΣ & ΟΥΡΑΣ

Για την υλοποίηση της στοίβας χρησιμοποιούμε τον μονοδιάστατο πίνακα table με Ν θέσεις και
την μεταβλητή top που δείχνει στο κορυφαίο στοιχείο του πίνακα.
Για την υλοποίηση της ουράς χρησιμοποιούμε τον μονοδιάστατο πίνακα table με Ν θέσεις και τις
μεταβλητές front, rear που δείχνουν στο πρώτο και τελευταίο στοιχείο του πίνακα αντίστοιχα.

ΩΘΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΣΤΟΙΒΑ ΑΠΩΘΗΣΗ ΣΤΟΙΧΕΙΟΥ ΑΠΟ ΣΤΟΙΒΑ


Αν top < N τότε Αν top > 0 τότε
top  top + 1 Χ  table[top]
table[top]  Χ Εμφάνισε Χ
flag  Αληθής top  top - 1
αλλιώς flag  Αληθής
Εμφάνισε ″Στοίβα γεμάτη″ αλλιώς
flag  Ψευδής Εμφάνισε ″Στοίβα άδεια″
Τέλος_αν flag  Ψευδής
Τέλος_αν

ΩΘΗΣΗ ΠΟΛΛΩΝ ΣΤΟΙΧΕΙΩΝ ΣΕ ΣΤΟΙΒΑ ΑΠΩΘΗΣΗ ΠΟΛΛΩΝ ΣΤΟΙΧΕΙΩΝ ΑΠΟ ΣΤΟΙΒΑ


Αρχή_επανάληψης Αρχή_επανάληψης
Διάβασε Χ Αν top > 0 τότε
Αν top < N τότε Χ  table[top]
top  top + 1 Εμφάνισε Χ
table[top]  Χ top  top - 1
αλλιώς αλλιώς
Εμφάνισε ″Στοίβα γεμάτη″ Εμφάνισε ″Στοίβα άδεια″
Τέλος_αν Τέλος_αν
Μέχρις_ότου top = N Μέχρις_ότου top = 0

ΕΙΣΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΟΥΡΑ ΕΞΑΓΩΓΗ ΣΤΟΙΧΕΙΟΥ ΑΠΟ ΟΥΡΑ


Αν rear < N τότε Αν front <= rear τότε
rear  rear + 1 Χ  table[front]
table[rear]  Χ Εμφάνισε Χ
flag  Αληθής front  front + 1
αλλιώς flag  Αληθής
Εμφάνισε ″Ουρά γεμάτη πίσω″ αλλιώς
flag  Ψευδής Εμφάνισε ″Ουρά άδεια″
Τέλος_αν flag  Ψευδής
Τέλος_αν

ΕΙΣΑΓΩΓΗ ΠΟΛΛΩΝ ΣΤΟΙΧΕΙΩΝ ΣΕ ΟΥΡΑ ΕΞΑΓΩΓΗ ΠΟΛΛΩΝ ΣΤΟΙΧΕΙΩΝ ΑΠΟ ΟΥΡΑ


Αρχή_επανάληψης Αρχή_επανάληψης
Διάβασε Χ Αν front <= rear τότε
Αν rear < N τότε Χ  table[front]
rear  rear + 1 Εμφάνισε Χ
table[rear]  Χ front  front + 1
αλλιώς αλλιώς
Εμφάνισε ″Ουρά γεμάτη πίσω″ Εμφάνισε ″Ουρά άδεια″
Τέλος_αν Τέλος_αν
Μέχρις_ότου rear = N Μέχρις_ότου front > rear

www.zioulas.gr Ευάγγελος Χ. Ζιούλας (Καθηγητής Πληροφορικής) 74

You might also like