Professional Documents
Culture Documents
MBB - - PQ ALL Θεωρία
MBB - - PQ ALL Θεωρία
έννοιες αλγορίθμων
1. Αλγόριθμος
(Ορισμός) Είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και
εκτελέσιμων σε πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος.
Η σειρά – αλληλουχία των ενεργειών δεν είναι μοναδική. Η έννοια του αλγορίθμου δεν
συνδέεται αποκλειστικά με έννοιες της πληροφορικής.
4. Διάγραμμα Ροής
Είναι μια διαγραμματική τεχνική (βλέπε παραπάνω). Αποτελείται από ένα σύνολο γεωμετρικών
σχημάτων, όπου το καθένα δηλώνει μια συγκεκριμένη ενέργεια ή λειτουργία. Τα σχήματα ενώνονται
μεταξύ τους με βέλη που δηλώνουν την σειρά εκτέλεσης των ενεργειών αυτών.
Τα κύρια σχήματα, που χρησιμοποιούμε στο Διάγραμμα Ροής, είναι τα εξής:
α) Έλλειψη: Δηλώνει την αρχή και το τέλος του αλγορίθμου.
β) Ρόμβος: Δηλώνει τον έλεγχο μιας συνθήκης με δύο εξόδους ανάλογα με τη τιμή της (Αληθής /
Ψευδής)
γ) Ορθογώνιο παραλληλόγραμμο: Δηλώνει την εκτέλεση μιας ή περισσοτέρων πράξεων.
δ) Πλάγιο παραλληλόγραμμο: Η είσοδος δεδομένων και η έξοδος των αποτελεσμάτων του
αλγορίθμου.
5. Στοιχεία αλγορίθμου
Ένας αλγόριθμος διαμορφώνεται από: τους Τελεσταίους, τους Τελεστές, τις Εκφράσεις και
τις Εντολές.
6. Τελεσταίοι (operands)
Οι τελεσταίοι διακρίνονται σε:
• Σταθερές (constants): Προκαθορισμένες τιμές, που παραμένουν αμετάβλητες σε όλη τη
διάρκεια της εκτέλεσης ενός αλγορίθμου.
• Μεταβλητές (variables): Είναι ένα γλωσσικό αντικείμενο (δηλαδή λέξεις), που
χρησιμοποιούνται για να παραστήσουν στοιχεία δεδομένων. Η διαφορά τους από τις σταθερές είναι
ότι δέχονται μία τιμή, που μπορεί να αλλάξει κατά την εκτέλεση ενός αλγορίθμου.
8. Τελεστές (operators)
Είναι σύμβολα, που χρησιμοποιούνται στις διάφορες πράξεις. Διακρίνονται σε 3 κατηγορίες:
ΑΡΙΘΜΗΤΙΚΟΙ ΛΟΓΙΚΟΙ ΣΥΓΚΡΙΤΙΚΟΙ
=
^ ΟΧΙ (ΑΡΝΗΣΗ)
>
<
* / DIV MOD KAI (ΣΥΖΕΥΞΗ)
>=
<=
+ ‐ Η (ΔΙΑΖΕΥΞΗ)
<>
9. Εκφράσεις
Όταν μια τιμή προκύπτει από υπολογισμό, τότε αναφερόμαστε σε εκφράσεις. Οι τελεστές μαζί
με τους τελεσταίους διαμορφώνουν τις εκφράσεις. Η διεργασία αποτίμησης μιας έκφρασης
συνίσταται στην απόδοση τιμών στις μεταβλητές και στην εκτέλεση των πράξεων. Η εκτέλεση των
πράξεων εξαρτάται από την ιεραρχία των πράξεων και τη χρήση παρενθέσεων. Μια έκφραση μπορεί
να αποτελείται από μια μόνο μεταβλητή ή σταθερά μέχρι μια πολύπλοκη μαθηματική παράσταση.
10. Εντολές
Αποκαλείται κάθε μια λέξη, που προσδιορίζει μια σαφή ενέργεια. Οι εντολές μπορούν να
διακριθούν στις 3 βασικές δομές του δομημένου προγραμματισμού:
• Δομή Ακολουθίας
• Δομή Επιλογής
• Δομή Επανάληψης
Οι εντολές διακρίνονται επίσης σε δηλωτικές και σε εκτελέσιμες.
• Δηλωτικές: π.χ. Αλγόριθμος άσκηση_1
• Εκτελέσιμες: π.χ. Διάβασε x
1 Το σχολικό βιβλίο στο 2ο κεφάλαιο γράφει πως οι αλφαριθμητικοί περικλείονται ανάμεσα σε διπλά εισαγωγικά.
Ωστόσο, στο Κεφάλαιο 7 τους περικλείει σε μονά, που καλό είναι να υιοθετήσουμε ως σωστό.
11. Πολλαπλασιασμός αλά ρωσικά
Η πράξη του πολλαπλασιασμού 2 αριθμών δεν εκτελείται από τον υπολογιστή με τον τρόπο,
που την εκτελούμε εμείς. Εκτελείται με έναν άλλο τρόπο, που λέγεται πολλαπλασιασμός αλά ρώσικα.
Περιγραφή της μεθόδου πολλαπλασιασμού (για θετικούς ακέραιους αριθμούς)
Έστω ότι θέλουμε να πολλαπλασιάσουμε τους αριθμούς 45 και 19. Οι αριθμοί, που πρέπει να
πολλαπλασιαστούν, γράφονται ο ένας δίπλα στον άλλο. Ο πρώτος διπλασιάζεται ενώ ο δεύτερος
διαιρείται με το 2 (υποδιπλασιάζεται) κρατώντας το ακέραιο μέρος και αγνοώντας το δεκαδικό
μέρος. Η διαδικασία αυτή επαναλαμβάνεται, μέχρι ο δεύτερος να γίνει μηδέν):
Μ1 Μ2 Π
45 19 45
90 9 90
180 4
360 2
720 1 720
720 0
Τελικά το ζητούμενο γινόμενο ισούται με το άθροισμα των στοιχείων της πρώτης στήλης όταν
αντίστοιχα στη δεύτερη στήλη υπάρχει περιττός αριθμός. Στο παραπάνω παράδειγμα τα στοιχεία
αυτά, παρουσιάζονται στη 3η στήλη. Δηλαδή: 45 + 90 + 720 = 855 !
Ο αλγόριθμος του πολλαπλασιασμού αλά Ρωσικά
ΑΛΓΟΡΙΘΜΟΣ ΠΟΛ_ΑΛΑ_ΡΩΣΙΚΑ
ΔΕΔΟΜΕΝΑ // Μ1, Μ2 ακέραιοι //
P ← 0
ΟΣΟ Μ2 > 0 ΕΠΑΝΑΛΑΒΕ
ΑΝ Μ2 MOD 2 = 1 ΤΟΤΕ
P ← P + M1
ΤΕΛΟΣ_ΑΝ
Μ1 ← Μ1 * 2
Μ2 ← Μ2 DIV 2
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΠΟΤΕΛΕΣΜΑΤΑ // P, Το γινόμενο των ακεραίων Μ1, Μ2 //
ΤΕΛΟΣ ΠΟΛ_ΑΛΑ_ΡΩΣΙΚΑ
13. Ολίσθηση
Όταν ο προγραμματιστής ορίζει ένα δεδομένο, τότε αυτό αποθηκεύεται στα κυκλώματα του
υπολογιστή σε δυαδική μορφή, δηλαδή σε ακολουθίες από 0 και 1.
Αν για παράδειγμα ο προγραμματιστής εκτελέσει την εντολή: x ← 17 τότε μέσα στη μνήμη του
υπολογιστή αποθηκεύεται ο ισοδύναμος αριθμός του δυαδικού συστήματος, ο οποίος είναι το
00010001. Ολίσθηση είναι η μετακίνηση όλων των ψηφίων ενός αριθμού κατά μια θέση.
Ολίσθηση γίνεται είτε προς τα αριστερά, ή προς τα δεξιά:
• Ολίσθηση προς τα αριστερά, που ισοδυναμεί με πολλαπλασιασμό επί 2. Μετακινούμε
όλα τα ψηφία του προς τα αριστερά προσθέτοντας ένα μηδέν στο τέλος και αγνοώντας το αρχικό.
• Ολίσθηση προς τα δεξιά, που ισοδυναμεί με την ακέραια διαίρεση του αριθμού με το 2.
Μετακινούμε όλα τα ψηφία του προς τα δεξιά, αποκόπτοντας το τελευταίο και προσθέτοντας ένα
μηδενικό στην αρχή.
Δομές δεδομένων
1. Δομή Δεδομένων
(Ορισμός): Είναι ένα σύνολο αποθηκευμένων δεδομένων που υφίστανται επεξεργασία
από ένα σύνολο λειτουργιών.
Τα δεδομένα ενός προβλήματος αποθηκεύονται στον υπολογιστή, είτε στη κύρια μνήμη του είτε
στη δευτερεύουσα. Η αποθήκευση δεν γίνεται κατά ένα τυχαίο τρόπο αλλά συστηματικά, δηλαδή
χρησιμοποιώντας μια δομή. Κάθε μορφή δομής δεδομένων αποτελείται από ένα σύνολο κόμβων
(nodes). Παράδειγμα: ένας μονοδιάστατος πίνακας 100 θέσεων έχει ακριβώς 100 κόμβους.
7. Δυναμικές Δομές
• Οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει
καθώς εισάγονται νέα δεδομένα, και μικραίνει καθώς διαγράφονται δεδομένα από αυτές.
• Δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, αλλά στηρίζονται στη Δυναμική
παραχώρηση μνήμης. (DMA = Dynamic Memory Allocation).
• Όλες οι σύγχρονες γλώσσες προγραμματισμού τις υποστηρίζουν.
• Δυναμικές δομές είναι το αρχείο, η εγγραφή κ.α.
3. (Συμβολικές) Σταθερές
(Ορισμός): Είναι προκαθορισμένες τιμές, που δε μεταβάλλονται κατά τη διάρκεια
εκτέλεσης του προγράμματος. Μπορεί να είναι οποιουδήποτε τύπου, δλδ ακέραιες, πραγματικές,
λογικές, χαρακτήρες.
Η χρήση των σταθερών κάνει το πρόγραμμα πιο κατανοητό, άρα πιο εύκολο να συντηρηθεί και
να διορθωθεί.
4. Δήλωση Σταθερών
• Σύνταξη
ΣΤΑΘΕΡΕΣ ΌΝΟΜΑ_1 = Σταθερή_τιμή_1
ΌΝΟΜΑ_2 = Σταθερή_τιμή_2
• Παράδειγμα:
ΣΤΑΘΕΡΕΣ π = 3.14
Όνομα = ‘Κώστας’
• Στο τμήμα δήλωσης σταθερών δίνονται τα ονόματα σε σταθερές τιμές. Κάθε μία από αυτές τις
σταθερές μπορεί να χρησιμοποιηθεί οπουδήποτε στο πρόγραμμα, αλλά δεν είναι δυνατή η μεταβολή
της τιμής της κατά τη διάρκεια εκτέλεσης του προγράμματος.
5. Μεταβλητές
(Ορισμός): Μια μεταβλητή παριστάνει μια οντότητα (ακέραιη, πραγματική, λογική ή
χαρακτήρα/αλφαριθμητική ), που η τιμή της μπορεί να μεταβάλλεται.
Οι μεταβλητές, που χρησιμοποιούνται σε ένα πρόγραμμα, αντιστοιχούνται από το
μεταγλωττιστή σε συγκεκριμένες θέσεις μνήμης.
Η τιμή της μεταβλητής είναι η τιμή της αντίστοιχης θέσης μνήμης. Ενώ, η τιμή της μεταβλητής
(θέσης μνήμης) μπορεί να αλλάξει, ο τύπος της δεν αλλάζει ποτέ. Η «ΓΛΩΣΣΑ» επιτρέπει τη χρήση
τεσσάρων τύπων δεδομένων (ακέραιες, λογικές, πραγματικές, χαρακτήρες). Το όνομα κάθε
μεταβλητής ακολουθεί τους κανόνες δημιουργίας ονομάτων, που λέγονται Κανόνες Ονοματολογίας.
Είναι καλή πρακτική, να χρησιμοποιούμε ονόματα μεταβλητών, που εξηγούν το περιεχόμενό
τους. Παράδειγμα: εμβαδόν και όχι σκέτο Ε.
6. Δήλωση Μεταβλητών
Η δήλωση μεταβλητών γίνεται στο Τμήμα Δήλωσης μεταβλητών.
• Σύνταξη του Τμήματος Δήλωσης:
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: λίστα_μεταβλητών_1
ΠΡΑΓΜΑΤΙΚΕΣ: λίστα_μεταβλητών_2
ΛΟΓΙΚΕΣ: λίστα_παραμέτρων_3
ΧΑΡΑΚΤΗΡΕΣ: λίστα_παραμέτρων_4
8. Αριθμητικοί Τελεστές
ΤΕΛΕΣΤΗΣ ΑΡΙΘΜΗΤΙΚΗ ΠΡΑΞΗ
^ Ύψωση σε δύναμη
+ Πρόσθεση
- Αφαίρεση
* Πολλαπλασιασμός
/ Διαίρεση
MOD ΥΠΟΛΟΙΠΟ Ακέραιας Διαίρεσης
DIV ΠΗΛΙΚΟ Ακέραιας Διαίρεσης
3. Συγκρίσεις
Οι συγκρίσεις έχουν ως αποτέλεσμα μια λογική τιμή (ΑΛΗΘΗΣ – ΨΕΥΔΗΣ) και γίνονται σε
δεδομένα όλων των τύπων της ΓΛΩΣΣΑΣ:
• Σύγκριση αριθμών: Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο.
• Σύγκριση χαρακτήρων: Η σύγκριση μεταξύ ατομικών χαρακτήρων βασίζεται στην
αλφαβητική σειρά, π.χ. το ‘Α’ < ‘Β’ είναι ΑΛΗΘΗΣ έκφραση. Η σύγκριση σειράς χαρακτήρων
βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρι να βρεθεί κάποια διαφορά,
π.χ. η έκφραση ‘ΚΑΚΟΣ’ < ‘ΚΑΛΟΣ’ είναι ΑΛΗΘΗΣ γιατί το Κ είναι μικρότερο του Λ.
• Σύγκριση λογικών: Η σύγκριση μεταξύ λογικών έχει νόημα μόνο στη περίπτωση του = και
του <>.
6. Δομή Επιλογής
Η δομή επιλογής υλοποιείται με την εντολή "ΑΝ". Η εντολή "ΑΝ" έχει 3 διαφορετικές μορφές:
ΑΠΛΗ ΕΠΙΛΟΓΗ ΣΥΝΘΕΤΗ ΕΠΙΛΟΓΗ ΠΟΛΛΑΠΛΗ ΕΠΙΛΟΓΗ
ΑΝ … ΤΟΤΕ ΑΝ … ΤΟΤΕ … ΑΛΛΙΩΣ ΑΝ … ΤΟΤΕ … ΑΛΛΙΩΣ_ΑΝ
Προσοχή: Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ.
6.1 Δομή Απλής Επιλογής (ΑΝ … ΤΟΤΕ)
• Σύνταξη:
ΑΝ συνθήκη ΤΟΤΕ
Εντολή‐1
Εντολή‐2
…
Εντολή Ν
ΤΕΛΟΣ_ΑΝ
• Λειτουργία:
1) Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές, που βρίσκονται ανάμεσα στο ΤΟΤΕ και στο
ΤΕΛΟΣ_ΑΝ, αλλιώς αγνοούνται.
2) Η εκτέλεση του προγράμματος συνεχίζεται με την εντολή, που βρίσκεται μετά το ΤΕΛΟΣ_ΑΝ.
8. Δομή Επανάληψης
Η δομή επανάληψης γίνεται με τρεις μορφές:
Τη δομή "ΓΙΑ", τη δομή "ΟΣΟ" και τη δομή "ΜΕΧΡΙΣ_ΟΤΟΥ".
Όλες ελέγχονται από μια συνθήκη, η οποία καθορίζει την έξοδο από το βρόγχο.
9. Εμφωλευμένοι βρόγχοι
(Ορισμός): Εμφωλευμένοι βρόγχοι ονομάζονται δύο ή περισσότεροι βρόγχοι, που
βρίσκονται ο ένας μέσα στον άλλο.
Δήλωση Πίνακα
Κάθε πίνακας πρέπει υποχρεωτικά να περιέχει δεδομένα του ίδιου τύπου, δηλαδή ακέραια,
πραγματικά, λογικά, ή αλφαριθμητικά. Ο τύπος του πίνακα δηλώνεται μαζί με τις άλλες μεταβλητές
του προγράμματος στο Τμήμα Δήλωσης μεταβλητών. Εκτός από το τύπο του πίνακα πρέπει να
δηλώνεται και ο μεγαλύτερος αριθμός στοιχείων, που μπορεί να έχει ο συγκεκριμένος πίνακας
(δηλαδή το μέγεθός του), προκειμένου να δεσμεύσει ο υπολογιστής τις αντίστοιχες συνεχόμενες
θέσεις μνήμης.
Στοιχείο
Η αναφορά σε ένα στοιχείο του πίνακα γίνεται με το όνομα του πίνακα, ακολουθούμενο από ένα
δείκτη. Κάθε ένα από τα αντικείμενα, που τον αποτελούν, ονομάζεται στοιχείο.
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από τη τιμή
ενός δείκτη αν ο πίνακας είναι μονοδιάστατος. Στη περίπτωση, που είναι δισδιάστατος,
προσδιορίζεται από 2 δείκτες. Αν είναι Ν‐διάστατος από Ν‐δείκτες.
Ο δείκτης είναι μια μεταβλητή, που μπορεί να έχει οποιοδήποτε δεκτό όνομα. Συνήθως ως
δείκτες χρησιμοποιούνται οι μεταβλητές i, j, k.
Πολυδιάστατοι Πίνακες
Αν ο καθορισμός των στοιχείων ενός πίνακα απαιτεί παραπάνω από ένα δείκτη, τότε μιλάμε για
πολυδιάστατους πίνακες: π.χ. 2 δείκτες δισδιάστατος, 3 δείκτες τρισδιάστατος κ.λπ.
Χρήση Πινάκων
Η ανάγνωση, επεξεργασία και εμφάνιση των στοιχείων των πινάκων γίνεται πάντοτε από
βρόγχους. Συνήθως με τη χρήση της δομής "ΓΙΑ", αφού είναι προκαθορισμένο το πλήθος των
στοιχείων.
Η ταξινόμηση φυσαλίδας υλοποιείται με τον επόμενο αλγόριθμο:
Αλγόριθμος Φυσαλίδα
…
Για i από 2 μέχρι n
Για j από n μέχρι i με_βήμα -1
Αν table[j-1] > table[j] τότε
temp ← table[j—1]
table[j-1] ← table[j]
table[j] ← temp
Τέλος_αν
Τέλος_επανάληψης
Τέλος_επανάληψης
…
Τέλος Φυσαλίδα
Σημείωση: Για την ταξινόμηση δεδομένων έχουν εκπονηθεί πάρα πολλοί αλγόριθμοι. Άλλοι σχετικά
απλοί αλγόριθμοι είναι η ταξινόμηση με επιλογή και η ταξινόμηση με παρεμβολή. Ο πιο γρήγορος
αλγόριθμος ταξινόμησης είναι η "γρήγορη ταξινόμηση" (quicksort). Η ταξινόμηση φυσαλίδας είναι ο πιο
απλός και ταυτόχρονα ο πιο αργός αλγόριθμος ταξινόμησης.
(σ.66,67)
12. Ποιες οι διαφορές στις δομές δεδομένων στην κύρια και δευτερεύουσα
μνήμη;
Είναι γνωστό ότι μία σημαντική διαφορά μεταξύ κύριας μνήμης και μαγνητικού δίσκου είναι ότι
στην περίπτωση του δίσκου, τα δεδομένα δεν χάνονται αν διακοπεί η ηλεκτρική παροχή. Έτσι,
τα δεδομένα των αρχείων διατηρούνται ακόμη και μετά τον τερματισμό ενός
προγράμματος, κάτι που δεν συμβαίνει στην περίπτωση των δομών της κύριας μνήμης, όπως
είναι οι πίνακες, όπου τα δεδομένα χάνονται όταν τελειώσει το πρόγραμμα.
(σ.66)
13. Ποια είναι τα μειονεκτήματα από τη χρήση πινάκων;
Οι πίνακες απαιτούν μνήμη. Κάθε πίνακας δεσμεύει από την αρχή του προγράμματος πολλές
θέσεις μνήμης. Σε ένα μεγάλο και σύνθετο πρόγραμμα η άσκοπη χρήση μεγάλων πινάκων μπορεί να
οδηγήσει ακόμη και σε αδυναμία εκτέλεσης του προγράμματος.
Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος. Οι πίνακες είναι στατικές
δομές και το μέγεθός τους πρέπει να δηλώνεται στην αρχή του προγράμματος, ενώ παραμένει
υποχρεωτικά σταθερό κατά την εκτέλεση του προγράμματος.
(σ.160)
Στοίβα, Ουρά, Λίστες, Δένδρα, Γράφοι
1. Τι ονομάζεται στοίβα;
Στοίβα (stack), ονομάζεται μια δομή δεδομένων το σύνολο
των στοιχείων της οποίας είναι διατεταγμένο με τέτοιο τρόπο, ώστε τα
στοιχεία, που βρίσκονται στην κορυφή της στοίβας λαμβάνονται
πρώτα, ενώ αυτά που βρίσκονται στο βάθος της στοίβας
λαμβάνονται τελευταία. Η παραπάνω μέθοδος ονομάζεται
Τελευταίο Μέσα, Πρώτο Έξω ή LIFO (Last In First Out).
2. Ποιες είναι οι κύριες λειτουργίες σε μια στοίβα;
Η ώθηση (push) στοιχείου στην κορυφή της στοίβας. Στη διαδικασία της ώθησης ελέγχουμε αν
η στοίβα είναι γεμάτη. Στην περίπτωση, που προσπαθήσουμε να προσθέσουμε ένα στοιχείο σε μια
ήδη γεμάτη στοίβα, έχουμε υπερχείλιση (overflow) της στοίβας.
Η απώθηση (pop) στοιχείου από τη στοίβα. Στη διαδικασία της απώθησης ελέγχουμε αν
υπάρχει ένα τουλάχιστον στοιχείο στη στοίβα. Στην περίπτωση που προσπαθήσουμε να
αφαιρέσουμε ένα στοιχείο από μία κενή στοίβα, έχουμε υποχείλιση (underflow) της στοίβας.
3. Πως υλοποιείται η στοίβα με χρήση μονοδιάστατου πίνακα;
Χρησιμοποιούμε μια μεταβλητή (top), που δείχνει το στοιχείο που τοποθετήθηκε τελευταίο
στην κορυφή της στοίβας. Η μεταβλητή αυτή έχει τιμή 0, όταν η στοίβα είναι άδεια.
Η ώθηση ενός νέου στοιχείου στη στοίβα (εισαγωγή στοιχείου στον πίνακα) γίνεται πάντα στην
κορυφή της. Συγκεκριμένα, η μεταβλητή top αυξάνεται κατά ένα: top ← top + 1 και στη συνέχεια
γίνεται η ώθηση του στοιχείου.
Η απώθηση ενός στοιχείου από τη στοίβα (εξαγωγή από τον πίνακα) γίνεται πάντα από την
κορυφή της στοίβας. Συγκεκριμένα, εξάγεται το στοιχείο, που δείχνει η μεταβλητή top και στη
συνέχεια η μεταβλητή top μειώνεται κατά ένα: top ← top – 1.
ΠΡΟΓΡΑΜΜΑ ΣΤΟΙΒΑ
ΜΕΤΑΒΛΗΤΕΣ
ΧΑΡΑΚΤΗΡΕΣ: A[10]
ΑΚΕΡΑΙΕΣ: top, απάντηση, i
ΑΡΧΗ
top ← 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώστε 1: ώθηση 2: απώθηση 3:εμφάνιση 9:έξοδος'
ΔΙΑΒΑΣΕ απάντηση
ΑΝ απάντηση = 1 ΤΟΤΕ
! *******************
! ώθηση
ΑΝ top < 10 ΤΟΤΕ
top ← top + 1
ΓΡΑΨΕ 'Δώστε τιμή για ώθηση : '
ΔΙΑΒΑΣΕ A[top]
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Γεμάτη στοίβα'
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ_ΑΝ απάντηση = 2 ΤΟΤΕ
! *******************
! απώθηση
ΑΝ top > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Απώθηση : ', A[top]
A[top] ← ''
topp ← top - 1
ΑΛΛΙΩΣ
Α
ΓΡΑΑΨΕ 'Αδεια στοίβ βα'
ΤΕΛΟΣ_ΑΝ Ν
ΑΛΛΙΩΣ Σ_ΑΝ απά άντηση = 3 ΤΟΤΕ
! ****** **************
! εμφάνι ιση
Α top > 0 ΤΟΤΕ
ΑΝ
ΓΙΑΑ i ΑΠΟ 1 ΜΕΧΡΙ top
ΓΡΑΨΕ i, ' ', , A[i]
ΤΕΛΛΟΣ_ΕΠΑΝ ΝΑΛΗΨΗΣ
ΑΛΛΙ ΙΩΣ
ΓΡΑΑΨΕ 'Αδεια στοίβ βα'
ΤΕΛΟΣ_ΑΝ Ν
ΤΕΛΟΣ_ _ΑΝ
ΜΕΧΡΙΣ_ _ΟΤΟΥ απ πάντηση = 9
ΤΕΛΟΣ_Π_ΠΡΟΓΡΑΜΜ ΜΑΤΟΣ
4. Τι ονομάζζεται ουρά ά;
Ουρά (QQueue), ονο ομάζεται μια δομή δεδ δομένων ττο
σύννολο των στοιχείων τ
σ της οποίας είναι διατεταγμένο με μ
τέτοοιο τρόπο, ώστε τα στοιχεία,
σ που τοπο οθετήθηκα αν
πρώώτα στην ουρά να λαμβάνον
λ νται επίσηης πρώτα. Η
παρραπάνω μέθ θοδος ονομ μάζεται Πρώτο Μέσα,, Πρώτο Έξξω ή FIFO ((First In Fiirst Out).
5. Ποιες είνα αι οι κύριεες λειτουργ γίες σε μιαα ουρά;
Η εισαγω ωγή (enqu ueue) στοιχχείου στο π πίσω άκρο ττης ουράς.
Η εξαγωωγή (dequeeue) στοιχεείου από το ο εμπρός άκ κρο της ουρ ράς.
6. Πως υλοποιείται η ο ουρά με χρ ρήση μονο οδιάστατο ου πίνακα;;
Χρησιμοπ ποιούμε δύ ύο μεταβλη ητές, την frront (ή εμππρός), που δείχνει τη θέση του 1ου στοιχεείου
της ουράς καιι την rear (ή πίσω), π που δείχνει τη θέση τ του τελευ υταίου στο οιχείου. Ωςς αρχικές ττιμές
τωνν μεταβληττών rear κα αι front θεω ωρούμε το μ μηδέν.
Η εισαγω ωγή ενός ννέου στοιχεείου γίνετα αι από το πίίσω άκρο ττης ουράς κ και η τιμή ττης μεταβλη ητής
rearr αλλάζει ω
ως εξής: rea ar ← rear + + 1
Κατά τηνν εισαγωγή ή, πρώτα α αυξάνουμε ττον δείκτη rear κατά ένα και μεττά εισάγου υμε το στοιιχείο
στοον πίνακα. ΑΑυτό υπό ττην προϋπό όθεση ότι υυπάρχει χώ ώρος (rear < < max). Aν το στοιχείο ο, που βάζο
ουμε
είνα
αι το πρώτο ο (δλδ. rearr = 1), τότεε θέτουμε κκαι front ← 1
Η εξαγω
ωγή ενός στοιχείου
σ γ
γίνεται από ό το εμπρό
ός άκρο τηςς ουράς κα
αι η τιμή τη
ης μεταβλη
ητής
fron
nt αλλάζει ω ως εξής: fro
ont ← fron nt + 1
Κατά την εξαγωγή ή ενός στοιιχείου, αυξάνεται ο δείκτης
δ fron
nt κατά έννα (δείχνει στην επόμ
μενη
θέσση του πίναακα) χωρίςς στην πρα αγματικότη ητα να γίνεται καμίαα παρέμβαση στα πεεριεχόμενα του
πίναακα (χωρίςς να διαγρ
ράφεται κά άποιο στοιχχείο). Αυτό ό υπό την προϋπόθεεση ότι υπάρχει στοιιχείο
(fro
ont <= rear και front >> 0).
Όταν γίννεται εξαγωωγή του τελευταίου στοιχείου της ουρά (front = reear) οι δείίκτες παίρννουν
πάλλι τις αρχικ
κές τιμές (0)).
ΠΡΟΓΡΑΜ ΜΜΑ ΟΥΡΑ Α
ΜΕΤΑΒΛΗ ΗΤΕΣ
ΧΑΡΑΚΤ
ΚΤΗΡΕΣ: A[10]A
ΑΙΕΣ: f, r, απάντηση, i
ΑΚΕΡΑΙ
ΑΡΧΗ
f ← 0
r ← 0
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
ΓΡΑΨΕ 'Δώστε 1: εισαγωγή 2: εξαγωγή 3:εμφάνιση 9:έξοδος'
ΔΙΑΒΑΣΕ απάντηση
ΕΠΙΛΕΞΕ απάντηση
ΠΕΡΙΠΤΩΣΗ 1
ΑΝ r < 10 ΤΟΤΕ
r ← r + 1
ΓΡΑΨΕ 'Δώστε τιμή για εισαγωγή : '
ΔΙΑΒΑΣΕ A[r]
ΑΝ r = 1 ΤΟΤΕ
f ← 1
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Γεμάτη ουρά'
ΤΕΛΟΣ_ΑΝ
ΠΕΡΙΠΤΩΣΗ 2
ΑΝ f > 0 ΤΟΤΕ
ΓΡΑΨΕ 'Eξαγωγή : ', A[f]
A[f] ← ''
f ← f + 1
ΑΝ f > r ΤΟΤΕ
f ← 0
r ← 0
ΤΕΛΟΣ_ΑΝ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Αδεια ουρά'
ΤΕΛΟΣ_ΑΝ
ΠΕΡΙΠΤΩΣΗ 3
ΑΝ f > 0 ΤΟΤΕ
ΓΙΑ i ΑΠΟ f ΜΕΧΡΙ r
ΓΡΑΨΕ i, ' ', A[i]
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΑΛΛΙΩΣ
ΓΡΑΨΕ 'Αδεια ουρά'
ΤΕΛΟΣ_ΑΝ
ΤΕΛΟΣ_ΕΠΙΛΟΓΩΝ
ΜΕΧΡΙΣ_ΟΤΟΥ απάντηση = 9
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
7. Τι ονομάζεται συνδεδεμένη λίστα;
Μία (απλά) συνδεδεμένη λίστα (linked list) είναι ένα
σύνολο κόμβων διατεταγμένων γραμμικά, ο ένας μετά τον
άλλο. Κάθε κόμβος περιέχει εκτός από τα δεδομένα του και
έναν δείκτη, που δείχνει στον επόμενο κόμβο.
Ο δείκτης του τελευταίου κόμβου δεν δείχνει σε κάποιον κόμβο (δείκτης στο κενό). Για να το
δηλώσουμε αυτό, λέμε ότι το πεδίο δείκτη του τελευταίου κόμβου έχει την τιμή NULL.
8. Πώς γίνεται η προσπέλαση σε μια συνδεδεμένη λίστα;
Για να προσπελάσουμε τους κόμβους της λίστας χρειάζεται να γνωρίζουμε τη διεύθυνση (θέση
στη μνήμη) του πρώτου κόμβου της λίστας. Η διεύθυνση αυτή αποθηκεύεται σε μία ειδική μεταβλητή,
που την ονομάζουμε συνήθως Κεφαλή (Head).
Οι κόμβοι μιας (απλά) συνδεδεμένης λίστας είναι διατεταγμένοι σε μια συγκεκριμένη σειρά,
χωρίς αυτό να σημαίνει ότι αποθηκεύονται σε συνεχόμενες θέσεις στη μνήμη. Αντίθετα, είναι
διασκορπισμένοι σε όλη τη μνήμη και η σύνδεση μεταξύ τους γίνεται μέσω των δεικτών.
Έχουμε άμεση πρόσβαση μόνο στον πρώτο κόμβο της λίστας. Επομένως, για να εντοπίσουμε
κάποιον από τους ενδιάμεσους κόμβους, πρέπει να ξεκινήσουμε από τον πρώτο κόμβο της λίστας και
να ακολουθήσουμε τους δείκτες με τη σειρά, μέχρι να φτάσουμε στον επιθυμητό κόμβο.
9. Πώς προσθέτουμε κόμβο σε μια συνδεδεμένη λίστα;
Οι απαιτούμενες ενέργειες για την εισαγωγή (παρεμβολή) του νέου κόμβου είναι :
ο δείκτης του κόμβου μετά τον οποίο θα γίνει η παρεμβολή
(Ν2), να δείχνει τον νέο κόμβο (ΝΕΟ)
και ο δείκτης του νέου κόμβου (ΝΕΟ), να δείχνει αυτόν, που
έδειχνε ο προηγούμενος (στο Ν3) (δηλαδή, να πάρει την
τιμή, που είχε πριν την εισαγωγή ο δείκτης του Ν2).
Με αυτόν τον τρόπο, οι κόμβοι της λίστας διατηρούν τη λογική τους σειρά, αλλά οι φυσικές
θέσεις στη μνήμη μπορεί να είναι τελείως διαφορετικές.
10. Πώς διαγράφουμε έναν κόμβο από μια συνδεδεμένη λίστα;
Για τη διαγραφή ενός κόμβου αρκεί ν’ αλλάξει τιμή ο δείκτης του προηγούμενου κόμβου και να
δείχνει πλέον στον επόμενο αυτού, που διαγράφεται. Ο
κόμβος που διαγράφηκε (ο δεύτερος) αποτελεί
"άχρηστο δεδομένο" και ο χώρος μνήμης, που
καταλάμβανε, παραχωρείται για άλλη χρήση.
11. Τι είναι η διπλά συνδεδεμένη λίστα (doubly linked list);
Η διπλά συνδεδεμένη λίστα είναι μια λίστα στην οποία μπορούμε να τη διατρέξουμε και προς τις δύο
κατευθύνσεις. Αυτό επιτυχάνεται με τη χρήση του
δεύτερου δείκτη που δείχει τον προηγούμενο
κόμβο. Προσφέρει έτσι τη δυνατότητα ξεκινώντας από οποιοδήποτε κόμβο της λίστας να μπορούμε
να διατρέξουμε τη λίστα και προς τις δυο κατευθύνσεις.
12. Γιατί χρησιμοποιούνται οι συνδεδεμένες λίστες στην υλοποίηση της στοίβας και της
ουράς
Οι συνδεδεμένες λίστες αξιοποιούνται για την υλοποίηση της στοίβας και της ουράς, λόγω της
δυνατότητάς αυξομείωσης του μεγέθους τους.
13. Πώς μια στοίβα μπορεί να υλοποιηθεί με μία απλά συνδεδεμένη λίστα;
Οι κόμβοι (στοιχεία) εισέρχονται από την αρχή της απλά συνδεδεμένης λίστας και εξέρχονται πάλι
από την αρχή της λίστας τότε ο κόμβος (στοιχείο), που εισήλθε τελευταίος εξέρχεται και πρώτος
(LIFO). Επομένως η στοίβα μπορεί να υλοποιηθεί με μία απλά συνδεδεμένη λίστα αφού μπορεί να
γίνει εισαγωγή κόμβου (στοιχείου) στην αρχή της λίστας και διαγραφή κόμβου (στοιχείου) από την
αρχή της λίστας.
14. Πότε θα χρησιμοποιήσουμε λίστα και πότε πίνακα για την υλοποίηση μιας στοίβας;
Καλύτερη είναι η υλοποίηση στοίβας με συνδεδεμένη λίστα εκτός αν γνωρίζουμε εκ των προτέρων
τον μέγιστο αριθμό στοιχείων και θέλουμε μια εύκολη και γρήγορη λύση, οπότε επιλέγουμε την
υλοποίηση με πίνακα.
15. Πώς μια ουρά μπορεί να υλοποιηθεί με μία διπλά συνδεδεμένη λίστα;
Στην ουρά έχουμε τις εξής δύο κύριες λειτουργίες. Εισαγωγή στοιχείου στο πίσω άκρο της ουράς και
εξαγωγή στοιχείου από το εμπρός άκρο της ουράς. H ουρά μπορεί να υλοποιηθεί με μία διπλά
συνδεδεμένη λίστα, αφού μπορούμε να κάνουμε εισαγωγή κόμβου στο τέλος της διπλά συνδεδεμένης
λίστας. Επίσης μπορούμε να κάνουμε διαγραφή κόμβου στην αρχή της διπλά συνδεδεμένης λίστας
(εξαγωγή στοιχείου από το εμπρός άκρο της ουράς).
16. Ποιες οι διαφορές ανάμεσα σε λίστες και πίνακες;
Ο πίνακας θεωρείται μια δομή τυχαίας προσπέλασης, σε αντίθεση με μια λίστα που είναι στην
ουσία μια δομή ακολουθιακής ή σειριακής προσπέλασης. Για να φθάσουμε, δηλαδή, σ’ έναν
κόμβο μιας λίστας πρέπει να περάσουμε από όλους τους προηγούμενους ξεκινώντας από τον
πρώτο.
Ο πίνακας έχει σταθερό μέγεθος, το οποίο δηλώνεται εξαρχής κατά την υλοποίηση. Αυτό γίνεται,
διότι ο πίνακας είναι στατική δομή δεδομένων σε αντίθεση με τη λίστα που είναι δυναμική δομή
και το μέγεθός της μπορεί να μεταβάλλεται καθώς εισέρχονται νέοι κόμβοι στη λίστα ή
διαγράφονται κάποιοι άλλοι.
Oι κόμβοι της λίστας αποθηκεύονται σε μη συνεχόμενες θέσεις μνήμης σε αντιδιαστολή με
τους πίνακες, όπου τα στοιχεία αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.
17. Ποια είναι τα πλεονεκτήματα των λιστών έναντι των πινάκων;
Το δυναμικό τους μέγεθος,
η ευκολία εισαγωγής και διαγραφής από οποιοδήποτε μέρος της λίστας, καθώς και
η μη αναγκαιότητα δήλωσης του μεγέθους τους.
18. Ποια τα μειονεκτήματα των λιστών έναντι των πινάκων;
Η τυχαία πρόσβαση στη λίστα δεν επιτρέπεται. Είναι αδύνατο να φτάσετε στον n‐οστό κόμβο
μιας απλά συνδεδεμένης λίστας χωρίς πρώτα να περάσετε από όλους τους προηγούμενους
κόμβους διαδοχικά, ξεκινώντας από τον πρώτο κόμβο. Εναλλακτικά, στην περίπτωση της διπλά
συνδεμένης λίστας μπορείτε να ξεκινήσετε και από τον τελευταίο κόμβο. Επομένως, δεν
μπορούμε να πραγματοποιήσουμε με αποτελεσματικό τρόπο δυαδική αναζήτηση σε
συνδεδεμένες λίστες.
Οι συνδεδεμένες λίστες έχουν πολύ μεγαλύτερη επιβάρυνση από τους πίνακες, αφού οι
συνδεδεμένοι κόμβοι της λίστας είναι δυναμικά κατανεμημένοι (οι οποίοι είναι λιγότερο
αποτελεσματικοί στη χρήση της μνήμης) και κάθε κόμβος στη λίστα πρέπει, επιπλέον, να
αποθηκεύσει έναν πρόσθετο δείκτη, που θα δείχνει στον επόμενο κόμβο. Στην περίπτωση των
διπλά συνδεδεμένων λιστών χρειαζόμαστε επιπλέον έναν δεύτερο δείκτη, που θα δείχνει στον
προηγούμενο κόμβο.
19. Ποιες είναι οι βασικές πράξεις των συνδεδεμένων λιστών;
Εισαγωγή κόμβου στη λίστα (εισαγωγή κόμβου στην αρχή, στο τέλος της λίστας ή ενδιάμεσα).
Διαγραφή κόμβου από τη λίστα (διαγραφή από την αρχή, το τέλος της λίστας ή ενδιάμεσα).
Έλεγχος για το αν η λίστα είναι κενή.
Αναζήτηση κόμβου για την εύρεση συγκεκριμένου στοιχείου.
Διάσχιση της λίστας και προσπέλαση των στοιχείων της (π.χ. εκτύπωση των δεδομένων, που
περιέχονται σε όλους τους κόμβους της λίστας).
20. Τι ονομάζεται δέντρο;
Ένα δένδρο (tree) είναι μία δομή, που αποτελείται από ένα σύνολο κόμβων και ένα σύνολο
ακμών μεταξύ των κόμβων με βάση
τους εξής κανόνες:
Υπάρχει ένας ξεχωριστός κόμβος
που ονομάζεται ρίζα. Αυτός είναι
ένας κόμβος χωρίς γονέα.
Για κάθε κόμβο c, εκτός από τη
ρίζα, υπάρχει μόνο μια ακμή, που
καταλήγει σ’ αυτόν τον κόμβο ξεκινώντας από κάποιον άλλον κόμβο p. Ο κόμβος p ονομάζεται
γονέας του c και ο κόμβος c παιδί του p.
Για κάθε κόμβο υπάρχει μία μοναδική διαδρομή, δηλαδή, μια ακολουθία διαδοχικών ακμών, που
ξεκινάει από τη ρίζα και τερματίζει σε αυτόν τον κόμβο.
Δένδρο θεωρούμε και το κενό δένδρο, δηλαδή το δένδρο που δεν έχει ούτε κόμβους, ούτε ακμές.
Το κενό δένδρο είναι το μόνο δένδρο χωρίς ρίζα.
21. Σε ένα δέν
Σ ντρο ποιοιι κόμβοι ονομάζονται φύλλα κ και ποιοι α αδέλφια;
Οι κόμβοι χχωρίς παιδ διά ονομάζοονται «φύλλλα»
Κόμβοι με τον ίδιο γο ονέα ονομά άζονται «αδ δέλφια».
22. Σε ποιους
Σ τομείς τη ης επιστήμ μης χρησιμ μοποιούντ ται τα δέντ τρα;
Τα δένδρ ρα είναι μία μη‐γραμμική ευέλικ κτη δομή δ δεδομένων που χρησιιμοποιούντται σε πολλλούς
τομ
μείς της επιιστήμης τω ων υπολογισ στών, συμπ περιλαμβαννομένων των λειτουρ ργικών συσστημάτων, των
γρα
αφικών, τωων συστημά άτων βάσεων δεδομέένων, των παιχνιδιών
π ν, της τεχνη
ητής νοημοοσύνης καιι της
δικττύωσης υπολογιστώνν.
Τα δένδρα απόφασης, είναι ε δένδρα στα οποία κάθε κόμβο ος αντιπρο οσωπεύει ένα
χαρ
ρακτηριστικ κό (ιδιότηττα), κάθε ακμή αντιπροσωπεύ ύει μια απ
πόφαση (κ κανόνα) κααι κάθε φύ
ύλλο
αντιπροσωπεύ ύει ένα αποοτέλεσμα.
Στα παιχχνίδια ο υπολογιστή ής χρησιμοποιεί ένα ειδικό δέννδρο, που ονομάζετα αι δένδρο του
παιιχνιδιού (ggame tree), το οποίο μμοντελοποιιεί όλες τις πιθανές κιινήσεις τωνν παικτών.
23. Για ποιουςς λόγους τ τα δέντρα θεωρούντ ται τα δέν νδρα ισχυρ ρές δομές;
Ο πρώτος λόγος αναφέρεται σττη δυναμικ κότητα τωνν δένδρων. Είναι πολύ ύ εύκολο ννα προσθέσ σετε,
ν
να αφαιρέσ σετε ή να ααναζητήσεττε ένα στοιχχείο σε ένα α δένδρο.
Ο δεύτεροςς βασικός λλόγος είναιι ότι η δομή ή των δένδρ ρων μεταφ φέρει πληρο οφορίες.
24. Τι ονομάζζεται δυαδ δικό δέντρ ρο;
Ένα δυα αδικό δένδρο (binaryy tree) είνα
αι ένα δια
ατεταγμέν νο δένδρο, στο
οποοίο κάθε κόόμβος έχει ττο πολύ δύ ύο παιδιά, ττο αριστερό και το δεεξί παιδί.
Μπορούμε, συνεπώ ώς, να μιλάμε για αρριστερό κα αι δεξιό υπ
ποδένδρο ενός
κόμ
μβου.
25. Τι ονομάζζεται δυαδ δικό δέντρ ρο αναζήτη ησης (bina ary search h tree);
Δυαδικό ό δένδρο αναζήτησ σης (binarry search tree) είνα αι ένα δυα
αδικό
δέν
νδρο, όπου υ για κά άθε κόμβ βο u, όλο οι οι κόμμβοι του αριστερού
υποοδένδρου έχουν τιμές μικρότ τερες της τιμής του κόμβου u u και όλοι οι
κόμ
μβοι του δεεξιού υποδ δένδρου έχο ουν τιμές μ μεγαλύτερ ρες (ή ίσεςς) της τιμήςς του
κόμ
μβου u.
26. Τι ονομάζζεται γράφ φος και πο οιοι οι τύπο οι του;
Ένας γράφος (graaph) είναι μία δομή που αποτεελείται απ πό ένα
σύννολο κόμβ βων (ή σημ μείων ή κορ ρυφών) κα αι ένα σύνο ολο γραμμώ ών (ή
ακμμών ή τόξωων), που ενώνουν
ε μ
μερικούς ή όλους το
ή ους κόμβο ους. Ο
γρά
άφος αποτεελεί την πιο
π γενική δομή δεδο ομένων, μεε την έννοια ότι
όλεες οι προηηγούμενεςς δομές, που
π παρου υσιά στηκκαν μπορού ύν να
θεω
ωρηθούν πεεριπτώσειςς γράφων.
Εάν όλεςς οι ακμές σε έναν γρ ράφο έχουνν κατεύθυ υνση, ο γρά άφος ονομά άζεται καττευθυνόμεενος
γράάφος (direccted graph)).
Εάν όλεες οι ακμ μές σε ένααν γράφο δεν έχου υν κατεύθ θυνση, ο γράφος ονομάζεται
ο μη
καττευθυνόμεενος γράφο ος (undireccted graph)).
Υποπρογράμματα
1. Τμηματικός Προγραμματισμός
(Ορισμός): Ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα
σύνολο από απλούστερα τμήματα προγραμμάτων.
Η ιεραρχική σχεδίαση, υλοποιείται με το τμηματικό προγραμματισμό. Αφού αναλυθεί ένα
πρόβλημα σε υποπροβλήματα, κάθε υποπρόβλημα γράφεται σαν ανεξάρτητη οντότητα (module).
Αποτελεί ένα από τα βασικά συστατικά του δομημένου προγραμματισμού.
2. Υποπρόγραμμα
(Ορισμός): Ονομάζεται ένα τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομα έργο
και έχει γραφεί ξεχωριστά από το υπόλοιπο πρόγραμμα.
5. Παράμετροι
(Ορισμός): Μια παράμετρος είναι μια μεταβλητή, που επιτρέπει το πέρασμα της τιμής
της από ένα τμήμα προγράμματος σε ένα άλλο.
7. Συνάρτηση
(Ορισμός): Είναι ένας τύπος υποπρογράμματος, που υπολογίζει και επιστρέφει μία μόνο
τιμή με το όνομά της.
8. Διαδικασία
(Ορισμός): Είναι ένας τύπος υποπρογράμματος, που μπορεί να εκτελεί όλες τις
λειτουργίες ενός προγράμματος.
9. Δομή Συνάρτησης
Κάθε συνάρτηση έχει την ακόλουθη δομή και ορίζεται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.
ΣΥΝΑΡΤΗΣΗ όνομα (λίστα τυπικών παραμέτρων): ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ
Τμήμα Δηλώσεων
ΑΡΧΗ
…
όνομα ← έκφραση
…
ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Όνομα: Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ.
Λίστα τυπικών παραμέτρων: είναι μια λίστα μεταβλητών των οποίων οι τιμές
μεταβιβάζονται στη συνάρτηση. [Αποτελείται από τις μεταβλητές εισόδου της Συνάρτησης].
Τύπος της Συνάρτησης: είναι ο τύπος της τιμής που υπολογίζει η συνάρτηση. Μπορεί να είναι
ακέραια, λογική, πραγματική, ή χαρακτήρας.
Εντολές: Στις εντολές του σώματος της συνάρτησης πρέπει υποχρεωτικά να υπάρχει μια
εντολή εκχώρησης τιμής στο όνομα της συνάρτησης: όνομα ← έκφραση (Αυτή η εκχώρηση
αποτελεί ουσιαστικά τον μηχανισμό εξόδου της Συνάρτησης).