You are on page 1of 32

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

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


ΑΛΓΟΡΙΘΜΟΣ
Αλγόριθμος είναι μια πεπερασμένη ακολουθία βημάτων,
αυστηρά καθορισμένων και εκτελέσιμων σε
πεπερασμένο χρόνο, με σκοπό την επίλυση ενός
προβλήματος.

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


προβλήματα πληροφορικής, η μαθηματικά και άλλα
επιστημονικά προβλήματα.

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 2


Ο ΑΛΓΟΡΙΘΜΟΣ ΙΣΤΟΡΙΚΑ
Γνωστότεροι οι αλγόριθμοι του Ευκλείδη (υπολογισμός του
μέγιστου κοινού διαιρέτη δύο αριθμών) και του Ερατοσθένη
(κόσκινο Ερατοσθένη για την εύρεση των πρώτων αριθμών
από 1 έως N).
Η λέξη προέρχεται από μια μελέτη του πέρση μαθηματικού
Abu Ja’far Mohammed ibn Musa al Khwarizmi η οποία
αποτελεί την πρώτη πλήρη πραγματεία άλγεβρας.

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 3


ΣΠΟΥΔΑΙΟΤΗΤΑ ΑΛΓΟΡΙΘΜΩΝ
Η Πληροφορική μελετά τους αλγορίθμους κάτω από 4 σκοπιές.

ΥΛΙΚΟ
Η ταχύτητα εκτέλεσης ενός αλγορίθμου επηρεάζεται από τις διάφορες
τεχνολογίες υλικού, δηλαδή το πώς είναι δομημένα σε μία ενιαία
αρχιτεκτονική τα διάφορα συστατικά του υπολογιστή.
ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Το είδος της γλώσσας προγραμματισμού που χρησιμοποιείται (χαμηλού ή
υψηλού επιπέδου) αλλάζει τη δομή και τον αριθμό των εντολών ενός
αλγορίθμου.
ΘΕΩΡΗΤΙΚΗ
Υπάρχει ή όχι κάποιος αποδοτικός αλγόριθμος για την επίλυση ενός
προβλήματος; Η εξέταση αυτού του ερωτήματος απαιτεί μεγάλη θεωρητική
κατάρτιση και είναι ιδιαίτερα σημαντική.
ΑΝΑΛΥΤΙΚΗ
Μελέτη των υπολογιστικών πόρων που απαιτούνται από έναν αλγόριθμο.
Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 4
ΚΡΙΤΗΡΙΑ ΠΛΗΡΟΤΗΤΑΣ
Ένας αλγόριθμος για να χαρακτηρίζεται πλήρης, πρέπει να ικανοποιεί τα παρακάτω κριτήρια.

ΕΙΣΟΔΟΣ
Ένας αλγόριθμος δέχεται καμία, μία ή πολλές τιμές δεδομένων που του
δίνονται ως είσοδοι.
ΕΞΟΔΟΣ
Κάθε αλγόριθμος πρέπει να δημιουργεί τουλάχιστον μία ή περισσότερες
τιμές εξόδου που είναι τα αποτελέσματα του.
ΚΑΘΟΡΙΣΤΙΚΟΤΗΤΑ
Κάθε εντολή πρέπει να είναι αυστηρά καθορισμένη, δηλαδή να μην αφήνει
καμία αμφιβολία για τον τρόπο εκτέλεση της.
ΠΕΡΑΤΟΤΗΤΑ
Ο αλγόριθμος πρέπει να επιλύει το πρόβλημα σε πεπερασμένο αριθμό
εντολών οι οποίες εκτελούνται σε πεπερασμένο χρόνο.
ΑΠΟΤΕΛΕΣΜΑΤΙΚΟΤΗΤΑ
Κάθε εντολή του αλγορίθμου πρέπει να είναι απλή, δηλαδή δεν αρκεί να έχει
οριστεί αλλά να είναι και εκτελέσιμη.
Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 5
ΜΕΘΟΔΟΙ ΑΝΑΠΑΡΑΣΤΑΣΗΣ
ΕΛΕΥΘΕΡΟ ΚΕΙΜΕΝΟ
Είναι ο πιο αδόμητος και ανεπεξέργαστος τρόπος παρουσίασης, όπου ο
αλγόριθμος εκφράζεται χρησιμοποιώντας απλή ελληνική γλώσσα.
ΦΥΣΙΚΗ ΓΛΩΣΣΑ ΜΕ ΒΗΜΑΤΑ
Ο αλγόριθμος είναι εκφρασμένος σε ελληνική γλώσσα, όπου οι προτάσεις
είναι χωρισμένες σε παραγράφους και τα βήματα είναι αριθμημένα.
ΚΩΔΙΚΟΠΟΙΗΣΗ
Χρήση ενός προγράμματος εκφρασμένου σε ψευδογλώσσα ή κάποια
γλώσσα προγραμματισμού που όταν εκτελεστεί θα δώσει τα ίδια
αποτελέσματα με τον αλγόριθμο.
ΔΙΑΓΡΑΜΜΑΤΙΚΕΣ ΤΕΧΝΙΚΕΣ
Γραφικός τρόπος παρουσίασης του αλγορίθμου, σύμφωνα με τον οποίο τα
διάφορα βήματα του αλγορίθμου παριστάνονται με ειδικά γεωμετρικά
σχήματα.
Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 6
ΚΙΝΔΥΝΟΙ ΠΑΡΑΒΙΑΣΗΣ
ΚΡΙΤΗΡΙΩΝ

ΕΛΕΥΘΕΡΟ Κίνδυνος παραβίασης της


ΚΕΙΜΕΝΟ αποτελεσματικότητας

ΦΥΣΙΚΗ Κίνδυνος παραβίασης της


ΓΛΩΣΣΑ καθοριστικότητας

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 7


ΔΙΑΓΡΑΜΜΑΤΑ ΡΟΗΣ
Τα ΔΡΔ χρησιμοποιούν τα παρακάτω γεωμετρικά σχήματα

Η έλλειψη δηλώνει την αρχή και το τέλος του


αλγορίθμου.

Το παραλληλόγραμμο δηλώνει την είσοδο ή


την έξοδο στοιχείων.

Το ορθογώνιο δηλώνει την εκτέλεση μίας ή


περισσοτέρων πράξεων.

Ο ρόμβος δηλώνει μια συνθήκη που


επιδέχεται απάντηση Αληθής ή Ψευδής

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 8


ΔΟΜΗ ΑΛΓΟΡΙΘΜΟΥ
Αλγόριθμος Όνομα
δηλωτικές εντολές
Δεδομένα // … //
εντολή 1
εντολή 2
εκτελεστέες εντολές
..............
εντολή Ν
Αποτελέσματα // … //
δηλωτικές εντολές
Τέλος Όνομα

Μια εκτελεστέα εντολή εκτελεί μια συγκεκριμένη λειτουργία


Μια δηλωτική εντολή δηλώνει / δεν εκτελεί κάποια ενέργεια.

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 9


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

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


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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 10


ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ
Τύπος Δεδομένων Παραδείγματα Τιμών
ΑΚΕΡΑΙΟΣ 10 , 25 , 0 , -30 , 17 , -41
ΠΡΑΓΜΑΤΙΚΟΣ 2.5 , -6.8 , 3.3 , 0.4 , -1.0
ΑΛΦΑΡΙΘΜΗΤΚΟΣ "Mary30", "10", “Αληθής"
ΛΟΓΙΚΟΣ Αληθής, Ψευδής

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 11


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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 12


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

Κάνουν πιο ομοιόμορφη τη γλώσσα του κώδικα (π.χ.


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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 13


ΤΕΛΕΣΤΕΣ
Τελεστές είναι τα σύμβολα που υλοποιούν τις διάφορες
πράξεις (αριθμητικές ή λογικές).

Κατηγορίες Τελεστών Τελεστές


ΑΡΙΘΜΗΤΙΚΟΙ + , -, *, /, div, mod, ^
ΣΥΓΚΡΙΤΙΚΟΙ > , < , = , <> , >= , <=
ΛΟΓΙΚΟΙ OXI , KAI, Ή

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 14


ΑΡΙΘΜΗΤΙΚΟΙ ΤΕΛΕΣΤΕΣ
Χρησιμοποιούνται στις πράξεις μεταξύ αριθμητικών σταθερών και μεταβλητών.

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


+ Πρόσθεση 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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 15


ΣΥΓΚΡΙΤΙΚΟΙ ΤΕΛΕΣΤΕΣ
Χρησιμοποιούνται σε λογικές εκφράσεις για σύγκριση 2 αριθμητικών, αλφαριθμητικών ή λογικών τιμων

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


5>2
> Μεγαλύτερο
"Γιώργος" > "Μαρία"
34 < 2
< Μικρότερο
"Κ" < "Αλέξανδρος"
15 = 30 div 2
= Ίσο με
"Β" = "Β"
20 div 4 ≥ 10 mod 2
≥ >= Μεγαλύτερο ή ίσο
"Καλημέρα" ≥ "Καλησπέρα"
3 * 5 ≤ 100 div 20
≤ <= Μικρότερο ή ίσο
"Γιάννης" ≤ "Ελένη"
42 ≠ 7 * 6
≠ <> Διάφορο
"ΝΙΚΟΣ" ≠ "Νίκος"
5>2
> Μεγαλύτερο
"Γιώργος" > "Μαρία"
Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 16
ΛΟΓΙΚΟΙ ΤΕΛΕΣΤΕΣ
Χρησιμοποιούνται στις λογικές εκφράσεις για τη δημιουργία πιο σύνθετων συνθηκών.

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


5 > 2 ΚΑΙ 5 < 12
ΚΑΙ Σύζευξη
"Γ" < "Μ" ΚΑΙ "Γ" > "Δ"
3 < 20 Ή 3 > 1
Ή Διάζευξη
"Κ" = "Α" Ή "Κ" = "Χ"
ΟΧΙ(5 > 2)
ΟΧΙ Άρνηση
ΟΧΙ("Α" > "ΑΕΠΠ")

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 17


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

ΙΕΡΑΡΧΙΑ ΤΩΝ ΠΡΑΞΕΩΝ


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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 18


ΤΥΠΟΙ ΕΚΦΡΑΣΕΩΝ
Αριθμητικές εκφράσεις
α + β + γ
Υλοποιούν απλές ή σύνθετες α^2 + Τ_Ρ(γ)
μαθηματικές πράξεις και παράγουν β/(γ-2) – Α_Τ(β)
πάντα μια αριθμητική τιμή (ακέραια ή (β+2)^(1/2)/3
πραγματική).

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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 19


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

αριθμητική
μεταβλητή  έκφραση λογική

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


έχει καμία σχέση με το σύμβολο της ισότητας (=), αφού δεν
πρόκειται για εξίσωση.
Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 20
ΕΝΤΟΛΗ ΕΙΣΟΔΟΥ
Είσοδος δεδομένων σε έναν αλγόριθμο γίνεται με την
εκτελεστέα εντολή Διάβασε που συντάσσεται ως εξής:

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

Με την εντολή Διάβασε διακόπτεται η ροή εκτέλεσης του


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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 21


ΕΝΤΟΛΗ ΕΞΟΔΟΥ
Η έξοδος των αποτελεσμάτων γίνεται με την εκτελεστέα
εντολή Εμφάνισε (ή την εντολή Εκτύπωσε ή την εντολή
Γράψε) που συντάσσεται ως εξής:

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

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


μεταβλητή, σταθερά, μαθηματική έκφραση ή ακόμη και
συμβολοσειρά (string).

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 22


ΕΝΑΛΛΑΚΤΙΚΕΣ ΕΝΤΟΛΕΣ
Εναλλακτικά της εντολής Διάβασε, τα
δεδομένα εισόδου περιγράφονται
στη δεύτερη γραμμή του αλγορίθμου Αλγόριθμος Όνομα
με τη δηλωτική εντολή Δεδομένα // … //
Δεδομένα // .... // εντολή 1
εντολή 2
Εναλλακτικά της εντολής Εμφάνισε
..............
(στην οθόνη) ή Εκτύπωσε (στον
εκτυπωτή), τα αποτελέσματα εξόδου
εντολή Ν
δίνονται στην προτελευταία γραμμή Αποτελέσματα // … //
του αλγορίθμου με τη δηλωτική Τέλος Όνομα
εντολή
Αποτελέσματα // .... //

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 23


ΛΟΓΙΚΕΣ ΕΚΦΡΑΣΕΙΣ
Συνθήκη είναι μια λογική έκφραση η οποία μπορεί πάντα
να πάρει δύο εναλλακτικές τιμές, Αληθής ή Ψευδής.

ΑΠΛΕΣ ΣΥΝΘΗΚΕΣ
Μια απλή συνθήκη βασίζεται στη σύγκριση δύο τιμών με
χρήση κατάλληλων συγκριτικών τελεστών (=, >, <, ≥, ≤, ≠).

ΣΥΝΘΕΤΕΣ ΣΥΝΘΗΚΕΣ
Μπορούμε να δημιουργήσουμε σύνθετες συνθήκες
χρησιμοποιώντας τους λογικούς τελεστές ΚΑΙ (σύζευξη), Ή
(διάζευξη), ΟΧΙ (άρνηση).

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 24


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

5 > 2 α  5
β  7
"A" < "F"
γ  -3
10 ≤ 15 α > 0 και α < 10
"John" ≠ "john" α > β ή α < 10
-3 > 10 β ≠ α και β ≠ γ
"Β" > "Δ" όχι(β > α)
35 = 10 γ ≥ α και α < β
"ΑΒΓ" = "ΑΒC" α = β ή α = γ

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 25


ΠΙΝΑΚΑΣ ΑΛΗΘΕΙΑΣ
Τα αποτελέσματα κάθε λογικής πράξης, φαίνονται στον παρακάτω
πίνακα αληθείας.

Α Β Α ΚΑΙ Β ΑΗΒ ΟΧΙ(Α)


Αληθής Αληθής Αληθής Αληθής Ψευδής
Αληθής Ψευδής Ψευδής Αληθής Ψευδής
Ψευδής Αληθής Ψευδής Αληθής Αληθής
Ψευδής Ψευδής Ψευδής Ψευδής Αληθής

ΣΥΖΕΥΞΗ: Το αποτέλεσμα είναι Αληθής όταν και οι δύο συνθήκες είναι Αληθής. Σε
κάθε άλλη περίπτωση είναι Ψευδής.
ΔΙΑΖΕΥΞΗ: Το αποτέλεσμα είναι Αληθής όταν τουλάχιστον μία από τις δύο συνθήκες
είναι Αληθής. Σε διαφορετική περίπτωση είναι Ψευδής.
ΑΡΝΗΣΗ: Το αποτέλεσμα είναι Αληθής αν η συνθήκη είναι Ψευδής και Ψευδής αν η
συνθήκη είναι Αληθής.
Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 26
ΔΟΜΕΣ ΕΝΤΟΛΩΝ
Στον Δομημένο Προγραμματισμό όλες οι διαδικασίες ακολουθούν τρία
βασικά σχήματα δομών εντολών για τη κατασκευή του αλγορίθμου.
Αυτές οι δομές εντολών ονομάζονται και αλγοριθμικές δομές ή
συνιστώσες και μας επιτρέπουν να λύσουμε το οποιοδήποτε πρόβλημα

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 27


Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 28
Εκτός από την δομή επιλογής Αν … αλλιώς_αν η πολλαπλή
επιλογή εκφράζεται και με ένα ακόμα σχήμα γνωστό ως
Επίλεξε
Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 29
Όταν υπάρχουν πολλές επιλογές που πρέπει να ελεγχθούν, τότε η δομή Επίλεξε … Τέλος_επιλογών προτιμάται σε
σχέση με την δομή Αν … αλλιώς_αν λόγω της συμπαγούς της δομής.

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 30


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

17 → 00010001 αρχικός αριθμός


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

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 31


ΟΛΙΣΘΗΣΗ
Η ολίσθηση προς τα αριστερά ισοδυναμεί με
πολλαπλασιασμό επί 2
αριστερή ολίσθηση
*2
Η ολίσθηση προς τα δεξιά ισοδυναμεί με ακέραια
διαίρεση διά 2
δεξιά ολίσθηση
div 2

Ευάγγελος Χ. Ζιούλας (www.zioulas.gr) 32

You might also like