You are on page 1of 42

Βασικές

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

2. Απαραίτητα κριτήρια αλγορίθμων


Α) Είσοδος: Καμία, μία ή περισσότερες τιμές δεδομένων πρέπει να δίνονται ως είσοδος. Η
περίπτωση που δεν δίνονται τιμές δεδομένων εμφανίζεται όταν: ο αλγόριθμος δημιουργεί και
επεξεργάζεται κάποιες πρωτογενείς τιμές με τη βοήθεια συναρτήσεων παραγωγής τυχαίων αριθμών
ή με τη βοήθεια άλλων απλών εντολών.
Β) Έξοδος: Ο αλγόριθμος πρέπει να δημιουργεί τουλάχιστον ένα αποτέλεσμα προς το χρήστη ή
προς ένα άλλο αλγόριθμο.
Γ) Καθοριστικότητα: Κάθε εντολή πρέπει να καθορίζεται χωρίς αμφιβολία για το τρόπο
εκτέλεσής της. Πχ μία εντολή Ζ <‐ (Χ / Ψ) πρέπει να λαμβάνει υπ’ όψιν της το γεγονός ότι μπορεί το ψ
να είναι μηδέν.
Δ) Περατότητα: Ο αλγόριθμος πρέπει να τελειώνει μετά από πεπερασμένα βήματα. Αν δεν
τελειώνει μετά από ένα συγκεκριμένο αριθμό βημάτων δεν είναι αλγόριθμος, αλλά υπολογιστική
διαδικασία.
Ε) Αποτελεσματικότητα: Κάθε εντολή ενός αλγορίθμου δεν αρκεί να είναι ορισμένη αλλά
πρέπει να είναι απλή και εκτελέσιμη.

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


Α) Ελεύθερο κείμενο (free text): Αποτελεί τον πιο ανεπεξέργαστο και αδόμητο τρόπο
παρουσίασης. Υπάρχει κίνδυνος να οδηγήσει σε μη εκτελέσιμη παρουσίαση, παραβιάζοντας το
τελευταίο χαρακτηριστικό των αλγορίθμων, δηλαδή το κριτήριο της αποτελεσματικότητας.
Β) Διαγραμματικές Τεχνικές (diagramming techniques): Αποτελούν ένα γραφικό τρόπο
αναπαράστασης. Μια τεχνική (από τις πιο παλιές και γνωστές) είναι το Διάγραμμα Ροής (Flow Chart).
Η χρήση των διαγραμματικών τεχνικών δεν είναι η καλύτερη λύση, γι’ αυτό εμφανίζονται όλο και
σπανιότερα στη βιβλιογραφία και στην πράξη.
Γ) Κωδικοποίηση (coding): Δηλαδή με ένα πρόγραμμα γραμμένο είτε σε μια ψευδογλώσσα
είτε σε κάποιο προγραμματιστικό περιβάλλον, που όταν εκτελεστεί θα δώσει τα ίδια αποτελέσματα
με τον αλγόριθμο.

4. Διάγραμμα Ροής
Είναι μια διαγραμματική τεχνική (βλέπε παραπάνω). Αποτελείται από ένα σύνολο γεωμετρικών
σχημάτων, όπου το καθένα δηλώνει μια συγκεκριμένη ενέργεια ή λειτουργία. Τα σχήματα ενώνονται
μεταξύ τους με βέλη που δηλώνουν την σειρά εκτέλεσης των ενεργειών αυτών.
Τα κύρια σχήματα, που χρησιμοποιούμε στο Διάγραμμα Ροής, είναι τα εξής:
α) Έλλειψη: Δηλώνει την αρχή και το τέλος του αλγορίθμου.
β) Ρόμβος: Δηλώνει τον έλεγχο μιας συνθήκης με δύο εξόδους ανάλογα με τη τιμή της (Αληθής /
Ψευδής)
γ) Ορθογώνιο παραλληλόγραμμο: Δηλώνει την εκτέλεση μιας ή περισσοτέρων πράξεων.
δ) Πλάγιο παραλληλόγραμμο: Η είσοδος δεδομένων και η έξοδος των αποτελεσμάτων του
αλγορίθμου.
5. Στοιχεία αλγορίθμου
Ένας αλγόριθμος διαμορφώνεται από: τους Τελεσταίους, τους Τελεστές, τις Εκφράσεις και
τις Εντολές.

6. Τελεσταίοι (operands)
Οι τελεσταίοι διακρίνονται σε:
• Σταθερές (constants): Προκαθορισμένες τιμές, που παραμένουν αμετάβλητες σε όλη τη
διάρκεια της εκτέλεσης ενός αλγορίθμου.
• Μεταβλητές (variables): Είναι ένα γλωσσικό αντικείμενο (δηλαδή λέξεις), που
χρησιμοποιούνται για να παραστήσουν στοιχεία δεδομένων. Η διαφορά τους από τις σταθερές είναι
ότι δέχονται μία τιμή, που μπορεί να αλλάξει κατά την εκτέλεση ενός αλγορίθμου.

7. Τύποι (Κατηγορίες) Τελεσταίων


• Αριθμητικοί: Είναι ακέραιες ή πραγματικές τιμές (π.χ. 12, 3.14, ‐19.89 κ.λπ.)
• Αλφαριθμητικοί: Αποτελούνται από σειρές χαρακτήρων μέσα σε εισαγωγικά. Οι χαρακτήρες
μπορεί να είναι γράμματα, ψηφία, σημεία στίξης κ.λπ. (π.χ. ‘Γεια σας’, ‘Μέσος 1’, ‘1’ κ.λπ.)1
• Λογικοί: Οι τιμές, που μπορούν να πάρουν είναι δύο: ΑΛΗΘΗΣ ή ΨΕΥΔΗΣ.

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 //
ΤΕΛΟΣ ΠΟΛ_ΑΛΑ_ΡΩΣΙΚΑ

12. Γιατί ο υπολογιστής εκτελεί τον πολλαπλασιασμό αλά Ρωσικά ;


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

13. Ολίσθηση
Όταν ο προγραμματιστής ορίζει ένα δεδομένο, τότε αυτό αποθηκεύεται στα κυκλώματα του
υπολογιστή σε δυαδική μορφή, δηλαδή σε ακολουθίες από 0 και 1.
Αν για παράδειγμα ο προγραμματιστής εκτελέσει την εντολή: x ← 17 τότε μέσα στη μνήμη του
υπολογιστή αποθηκεύεται ο ισοδύναμος αριθμός του δυαδικού συστήματος, ο οποίος είναι το
00010001. Ολίσθηση είναι η μετακίνηση όλων των ψηφίων ενός αριθμού κατά μια θέση.
Ολίσθηση γίνεται είτε προς τα αριστερά, ή προς τα δεξιά:
• Ολίσθηση προς τα αριστερά, που ισοδυναμεί με πολλαπλασιασμό επί 2. Μετακινούμε
όλα τα ψηφία του προς τα αριστερά προσθέτοντας ένα μηδέν στο τέλος και αγνοώντας το αρχικό.
• Ολίσθηση προς τα δεξιά, που ισοδυναμεί με την ακέραια διαίρεση του αριθμού με το 2.
Μετακινούμε όλα τα ψηφία του προς τα δεξιά, αποκόπτοντας το τελευταίο και προσθέτοντας ένα
μηδενικό στην αρχή.

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

2. Βασικές λειτουργιές (πράξεις) επί των δομών δεδομένων


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

3. Γιατί υπάρχουν διαφορετικές δομές;


Στη πράξη σπάνια χρησιμοποιούνται και οι 8 λειτουργίες σε κάποια δομή. Συνήθως μια δομή
είναι αποδοτικότερη από μια άλλη σε κάποια λειτουργία. Άλλη είναι πιο αποδοτική στην αναζήτηση,
άλλη στην εισαγωγή κ.λπ. Ανάλογα με τη λειτουργία, την οποία θέλουμε να κάνουμε, επιλέγουμε και
τη κατάλληλη δομή. Γι’ αυτό υπάρχουν τόσες πολλές δομές. Τα παραπάνω εξηγούν το πόσο
σημαντική είναι η επιλογή της κατάλληλης δομής.

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


Υπάρχει μεγάλη εξάρτηση μεταξύ της δομής δεδομένων και του αλγορίθμου, που επεξεργάζεται
τη δομή. Μάλιστα, το πρόγραμμα πρέπει να θεωρεί τη δομή δεδομένων και τον αλγόριθμο ως μια
αδιάσπαστη ενότητα. Η παρατήρηση αυτή δικαιολογεί την εξίσωση, που διατυπώθηκε το 1976, από
τον Niklaus Wirth, που σχεδίασε και υλοποίησε τη γλώσσα προγραμματισμού Pascal:
ΑΛΓΟΡΙΘΜΟΙ + ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ = ΠΡΟΓΡΑΜΜΑΤΑ
Αν, για παράδειγμα, θέλουμε να κάνουμε έναν αλγόριθμο, που κάνει αναζήτηση σε έναν
μονοδιάστατο πίνακα, το πρόγραμμα που θα προκύψει θα είναι εντελώς διαφορετικό από το να
γράφαμε έναν αλγόριθμο, που κάνει αναζήτηση σε έναν δισδιάστατο πίνακα. Συμπέρασμα: Το
πρόγραμμα, που γράφουμε, είναι το αποτέλεσμα του αλγορίθμου, που σκεφτόμαστε να
υλοποιήσουμε και της δομής δεδομένων, που χρησιμοποιούμε.

5. Κατηγορίες Δομών Δεδομένων


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

7. Δυναμικές Δομές
• Οι δομές αυτές δεν έχουν σταθερό μέγεθος, αλλά ο αριθμός των κόμβων τους μεγαλώνει
καθώς εισάγονται νέα δεδομένα, και μικραίνει καθώς διαγράφονται δεδομένα από αυτές.
• Δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης, αλλά στηρίζονται στη Δυναμική
παραχώρηση μνήμης. (DMA = Dynamic Memory Allocation).
• Όλες οι σύγχρονες γλώσσες προγραμματισμού τις υποστηρίζουν.
• Δυναμικές δομές είναι το αρχείο, η εγγραφή κ.α.

8. Πίνακες (Μονοδιάστατοι ή/και Δισδιάστατοι)


Είναι μια δομή, που περιέχει στοιχεία του ίδιου τύπου (δηλαδή ακέραιος, πραγματικούς).
Η αναφορά στα στοιχεία του γίνεται με τη χρήση του συμβολικού ονόματος του πίνακα
ακολουθούμενου από τη τιμή ενός ή περισσότερων δεικτών. π.χ. Α[3,4] ή Β[6].
Ο τρόπος δήλωσης του πίνακα και η μέθοδος αναφοράς του εξαρτάται από τη γλώσσα
προγραμματισμού, που χρησιμοποιείται.
Ένας πίνακας μπορεί να είναι μονοδιάστατος, δισδιάστατος, τρισδιάστατος και γενικά ν‐
δισδιάστατος. Ειδικά για τους δισδιάστατους πίνακες αν το μέγεθος των 2 διαστάσεων είναι ίδιο,
τότε ο πίνακας ονομάζεται τετραγωνικός. Οι πίνακες χρησιμεύουν για την αποθήκευση και διαχείριση
δύο πολύ χρήσιμων δομών, της στοίβας και της ουράς.

9. Αναζήτηση (Μονοδιάστατη Σειριακή – Μονοδιάστατη Δυαδική –


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

10. Ταξινόμηση (Μονοδιάστατου ή/και Δισδιάστατου)


(Ορισμός): Δοθέντων των στοιχείων Α1, Α2, … Αn η ταξινόμηση ορίζεται ως η μετάθεση
της θέσης των στοιχείων ώστε να τοποθετηθούν σε μια σειρά αk1, αk2, … αkn έτσι ώστε: Αν
δοθεί συνάρτηση διάταξης (ordering function) F να ισχύει: F(αk1) <= F (αk2) <= … <= F (αkn).
Η παραπάνω συνάρτηση διάταξης μπορεί να τροποποιηθεί, ώστε να καλύπτει και τη φθίνουσα
ταξινόμηση.
Ταξινόμηση είναι η διαδικασία κατά την οποία τα στοιχεία μιας δομής διατάσσονται κατά
φθίνουσα ή αύξουσα σειρά. Σκοπός της ταξινόμησης είναι η εύκολη αναζήτηση στοιχείου.

11. Αλγόριθμοι ταξινόμησης


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

13. Τι είναι τα αρχεία και από τι αποτελούνται;


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

Εισαγωγή στον προγραμματισμό
1. Προσδιορισμός μιας Γλώσσας
Οι φυσικές γλώσσες αλλά και οι γλώσσες προγραμματισμού προσδιορίζονται από 4 στοιχεία :
1. Το Αλφάβητο: Είναι το σύνολο των στοιχείων, που αποτελεί τη γλώσσα. (π.χ. Η
ελληνική γλώσσα περιέχει 48 χαρακτήρες, τα σημεία στίξης, καθώς και τα ψηφία)
2. Το Λεξιλόγιο: Είναι το υποσύνολο όλων των ακολουθιών, που δημιουργούνται από το
αλφάβητο και είναι δεκτές από τη γλώσσα. (π.χ. Η ακολουθία ΑΒΓΑ είναι δεκτή, ενώ η
ΑΒΓΒΑ δεν είναι δεκτή).
3. Τη Γραμματική: Η Γραμματική αποτελείται από το τυπικό και το συντακτικό.
a. Τυπικό: Είναι το σύνολο των κανόνων, που καθορίζουν αν μια λέξη είναι αποδεκτή.
(π.χ. Η λέξη ΓΡΑΨΕ είναι αποδεκτή).
b. Συντακτικό : Είναι το σύνολο των κανόνων, που καθορίζει αν η διάταξη και η
σύνδεση των λέξεων σε μια πρόταση είναι σωστή. Η γνώση του συντακτικού στις
φυσικές γλώσσες επιτρέπει τη δημιουργία σωστών προτάσεων, ενώ στις γλώσσες
προγραμματισμού επιτρέπει τη δημιουργία σωστών εντολών.
4. Τη Σημασιολογία: Είναι το σύνολο των κανόνων, που καθορίζει το νόημα των λέξεων
άρα και το νόημα των προτάσεων, που δημιουργούνται. Στις γλώσσες
προγραμματισμού ο δημιουργός τους αποφασίζει για τη σημασιολογία των λέξεων της
γλώσσας.

2. Διαφορές Φυσικών – Τεχνητών Γλωσσών
1. Οι φυσικές γλώσσες εξελίσσονται συνεχώς και δημιουργούνται νέες λέξεις, αλλάζουν οι
κανόνες γραμματικής/συντακτικού με τη πάροδο του χρόνου. Αυτό γίνεται γιατί χρησιμοποιούνται
για την επικοινωνία μεταξύ των ανθρώπων.
2. Οι γλώσσες προγραμματισμού χρησιμοποιούνται για την επικοινωνία ανθρώπου Η/Υ και
χαρακτηρίζονται από στασιμότητα. Ωστόσο και αυτές εξελίσσονται από τους δημιουργούς τους για
να διορθώσουν αδυναμίες τους ή να καλύψουν μεγαλύτερο εύρος εφαρμογών αλλά και να
ακολουθήσουν τις νέες εξελίξεις.
3. Οι γλώσσες προγραμματισμού αλλάζουν σε :
Επίπεδο Διαλέκτου. π.χ. Basic ‐> QuickBasic
Σε επίπεδο επέκτασης π.χ. Basic ‐> Visual Basic

3. Τεχνική της ιεραρχικής σχεδίασης προγράμματος.
Η τεχνική αυτή (ή αλλιώς τεχνική από επάνω προς τα κάτω / top‐down), χρησιμοποιεί τη
στρατηγική της συνεχούς διαίρεσης του προβλήματος σε υποπροβλήματα, τα οποία είναι εύκολο να
επιλυθούν οδηγώντας στην επίλυση του αρχικού προβλήματος.
Χρησιμοποιούνται διάφορες διαγραμματικές τεχνικές για την υποβοήθηση της σχεδίασης.
Υλοποιείται με τμηματικό προγραμματισμό.
Η τεχνική της ιεραρχικής σχεδίασης περιλαμβάνει :
 Τον καθορισμό των βασικών λειτουργιών ενός προγράμματος σε ανώτερο επίπεδο.
 Τη Διάσπαση των λειτουργιών αυτών σε μικρότερες λειτουργίες,
 Μέχρι και το τελευταίο επίπεδο όπου οι λειτουργίες είναι πολύ απλές.

4. Τμηματικός Προγραμματισμός
(ακολουθεί)

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

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

Θέμα 2: Ποια είναι τα πλεονεκτήματα της χρήσης του τμηματικού προγραμματισμού;
(Αναπτύξτε εν συντομία)
1) Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντίστοιχου προγράμματος.
Επιτρέπει την εξέταση και την επίλυση απλών προβλημάτων και όχι στην
αντιμετώπιση του συνολικού προβλήματος. Με τη σταδιακή επίλυση των
υποπροβλημάτων και τη δημιουργία των αντίστοιχων υποπρογραμμάτων, τελικά
επιλύεται το συνολικό πρόβλημα.
2) Διευκολύνει τη κατανόηση και τη διόρθωση του προγράμματος. Ο χωρισμός του
προγράμματος σε μικρότερα και αυτοτελή τμήματα επιτρέπει τη γρήγορη διόρθωση
ενός συγκεκριμένου τμήματος του χωρίς οι αλλαγές αυτές να επηρεάσουν τον υπόλοιπο
κώδικα. Επίσης, διευκολύνει οποιονδήποτε χρειαστεί να διαβάσει και να κατανοήσει
τον τρόπο που λειτουργεί το πρόγραμμα.
3) Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος. Πολύ συχνά
χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή
που έχουμε συντάξει ένα υποπρόγραμμα, μπορούμε να το αξιοποιούμε σε πολλά σημεία
του κυρίου προγράμματος. Μειώνουμε και το μέγεθος του προγράμματος και ο χρόνος
που απαιτείται για τη γραφή.
4) Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. Από τη στιγμή που το
υποπρόγραμμα έχει γραφεί, η χρήση του δεν διαφέρει από τη χρήση των
ενσωματωμένων συναρτήσεων, που παρέχει η γλώσσα προγραμματισμού μας. Για
παράδειγμα, αν χρειάζεται αρκετά συχνά να κάποια λειτουργία, που δεν υποστηρίζεται
από τη γλώσσα, όπως η εύρεση του μικρότερου 2 αριθμών, τότε μπορεί να γραφεί ένα
αντίστοιχο υποπρόγραμμα. Με πολλά υποπρογράμματα, δημιουργούμε βιβλιοθήκες με
αυτά, και πρακτικά επεκτείνεται η γλώσσα προγραμματισμού μας.

Βασικά στοιχεία προγραμματισμού
1. Από τι αποτελείται το ΑΛΦΑΒΗΤΟ της ΓΛΩΣΣΑΣ;
• Γράμματα
• Κεφαλαία και μικρά Ελληνικού αλφαβήτου (Α‐Ω, α‐ω)
• Κεφαλαία και μικρά Αγγλικού αλφαβήτου (Α‐Ζ, a‐z)
• Ψηφία 0‐9
• Ειδικοί Χαρακτήρες [ + ‐ * / ^ = > < , . ! & [ ] ( ) _ ] και ο χαρακτήρας του κενού.
Προσοχή: AΛΛΟ είναι ο κενός χαρακτήρας (το space) και ΑΛΛΟ η κάτω παύλα (το underscore).

2. Ποιοι είναι οι ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ της ΓΛΩΣΣΑΣ;


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

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

4. Δήλωση Σταθερών
• Σύνταξη
ΣΤΑΘΕΡΕΣ ΌΝΟΜΑ_1 = Σταθερή_τιμή_1
ΌΝΟΜΑ_2 = Σταθερή_τιμή_2
• Παράδειγμα:
ΣΤΑΘΕΡΕΣ π = 3.14
Όνομα = ‘Κώστας’
• Στο τμήμα δήλωσης σταθερών δίνονται τα ονόματα σε σταθερές τιμές. Κάθε μία από αυτές τις
σταθερές μπορεί να χρησιμοποιηθεί οπουδήποτε στο πρόγραμμα, αλλά δεν είναι δυνατή η μεταβολή
της τιμής της κατά τη διάρκεια εκτέλεσης του προγράμματος.
5. Μεταβλητές
(Ορισμός): Μια μεταβλητή παριστάνει μια οντότητα (ακέραιη, πραγματική, λογική ή
χαρακτήρα/αλφαριθμητική ), που η τιμή της μπορεί να μεταβάλλεται.
Οι μεταβλητές, που χρησιμοποιούνται σε ένα πρόγραμμα, αντιστοιχούνται από το
μεταγλωττιστή σε συγκεκριμένες θέσεις μνήμης.
Η τιμή της μεταβλητής είναι η τιμή της αντίστοιχης θέσης μνήμης. Ενώ, η τιμή της μεταβλητής
(θέσης μνήμης) μπορεί να αλλάξει, ο τύπος της δεν αλλάζει ποτέ. Η «ΓΛΩΣΣΑ» επιτρέπει τη χρήση
τεσσάρων τύπων δεδομένων (ακέραιες, λογικές, πραγματικές, χαρακτήρες). Το όνομα κάθε
μεταβλητής ακολουθεί τους κανόνες δημιουργίας ονομάτων, που λέγονται Κανόνες Ονοματολογίας.
Είναι καλή πρακτική, να χρησιμοποιούμε ονόματα μεταβλητών, που εξηγούν το περιεχόμενό
τους. Παράδειγμα: εμβαδόν και όχι σκέτο Ε.

6. Δήλωση Μεταβλητών
Η δήλωση μεταβλητών γίνεται στο Τμήμα Δήλωσης μεταβλητών.
• Σύνταξη του Τμήματος Δήλωσης:
ΜΕΤΑΒΛΗΤΕΣ
ΑΚΕΡΑΙΕΣ: λίστα_μεταβλητών_1
ΠΡΑΓΜΑΤΙΚΕΣ: λίστα_μεταβλητών_2
ΛΟΓΙΚΕΣ: λίστα_παραμέτρων_3
ΧΑΡΑΚΤΗΡΕΣ: λίστα_παραμέτρων_4

7. Ονόματα προγραμμάτων και δεδομένων (Κανόνες Ονοματολογίας)


Κάθε πρόγραμμα, όπως και τα δεδομένα (μεταβλητές και σταθερές), που χρησιμοποιεί, έχουν
ένα όνομα με το οποίο αναφερόμαστε σε αυτά.
Τα ονόματα αυτά μπορούν να αποτελούνται από:
• Γράμματα:
Κεφαλαία και μικρά Ελληνικού αλφαβήτου (Α‐Ω, α‐ω)
Κεφαλαία και μικρά Αγγλικού αλφαβήτου (Α‐Ζ, a‐z)
• Ψηφία:
0 – 9
• Ειδικούς Χαρακτήρες:
_ (Κάτω Παύλα ή Underscore)
• Περιορισμοί:
‐ Απαγορεύεται η χρήση δεσμευμένων λέξεων ως ονόματα (π.χ. ΓΡΑΨΕ, ΔΙΑΒΑΣΕ)
‐ Τα ονόματα υποχρεωτικά αρχίζουν από γράμμα (όχι ψηφίο, ούτε underscore).

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

9. Ιεραρχία αριθμητικών τελεστών


1. ^
2. * / MOD DIV
3. + -
Προσοχή:
• Όταν συναντάμε παρενθέσεις, προηγούνται οι τελεστές εντός των παρενθέσεων.
• Όσοι τελεστές έχουν ίδια ιεραρχία, εκτελούνται από αριστερά προς τα δεξιά, όπως στα
Μαθηματικά.
10. Αριθμητικές Εκφράσεις
Βλέπε και 2ο Κεφάλαιο για τις εκφράσεις γενικότερα.
Όταν μια τιμή προέρχεται από αριθμητικό υπολογισμό, τότε αναφερόμαστε σε αριθμητικές
εκφράσεις.
Για τη σύνταξη μιας αριθμητικής έκφρασης χρησιμοποιούνται:
• Αριθμητικές σταθερές
• Αριθμητικές μεταβλητές
• Αριθμητικοί τελεστές
• Συναρτήσεις
• Παρενθέσεις
Κάθε έκφραση παριστάνει μια αριθμητική τιμή, η οποία βρίσκεται μετά την εκτέλεση των
πράξεων. Γι’ αυτό είναι απαραίτητο όλες οι μεταβλητές, που εμφανίζονται σε μια έκφραση,
προηγουμένως να έχουν πάρει κάποια τιμή.
Η εκτέλεση των πράξεων γίνεται με βάση την ιεραρχία των αριθμητικών τελεστών. Οι
παρενθέσεις πάντα χρησιμοποιούνται σε ζεύγη. Διαφορετικός αριθμός αριστερών από δεξιές
παρενθέσεις στην ίδια έκφραση είναι ένα από τα πιο συνηθισμένα συντακτικά λάθη.

11. Εντολή Εκχώρησης


Χρησιμοποιείται για την απόδοση τιμών στις μεταβλητές κατά την εκτέλεση του προγράμματος.
Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ίδιου τύπου.
Το σύμβολο ← διαφοροποιείται από το = το οποίο χρησιμοποιείται ως συγκριτικός τελεστής,
καθώς και ως τελεστής απόδοσης τιμών στο τμήμα δηλώσεων των σταθερών.
• Σύνταξη: Όνομα_μεταβλητής ← Έκφραση
• Λειτουργία: Υπολογίζεται η έκφραση δεξιά του ← και η τιμή της εκχωρείται στη μεταβλητή που
βρίσκεται αριστερά.
• Παράδειγμα: Α ← ‘Γιώργος’

12. Εντολή Εισόδου (ΔΙΑΒΑΣΕ)


• Σύνταξη: Διάβασε λίστα-μεταβλητών
• Λειτουργία: Η εντολή οδηγεί στην είσοδο τιμών από το πληκτρολόγιο και την εκχώρηση τους
στις μεταβλητές, που αναφέρονται στη λίστα.
• Παράδειγμα: ΔΙΑΒΑΣΕ Χ, Υ
Η εντολή ΔΙΑΒΑΣΕ ακολουθείται πάντα από τουλάχιστον ένα όνομα μεταβλητής. Αν υπάρχουν
περισσότερες, τότε αυτές χωρίζονται με κόμμα (,). Διακόπτεται η εκτέλεση του προγράμματος, καθώς
το πρόγραμμα περιμένει την εισαγωγή τιμών από το πληκτρολόγιο. Μόλις εισαχθούν οι τιμές,
αποθηκεύονται στις μεταβλητές, που ακολουθούν την εντολή ΔΙΑΒΑΣΕ και συνεχίζεται η εκτέλεση
του προγράμματος στην επόμενη εντολή. Εξυπηρετεί την επικοινωνία του χρήστη με τον υπολογιστή.

13. Εντολή Εξόδου (ΓΡΑΨΕ)


• Σύνταξη: ΓΡΑΨΕ λίστα-στοιχείων
• Λειτουργία: Εμφανίζει σταθερές τιμές, καθώς και τιμές μεταβλητές (ότι αναγράφεται στη
λίστα).
• Παράδειγμα: ΓΡΑΨΕ ‘Ο φόρος είναι ’, ΦΠΑ, ‘€’
Έχει ως αποτέλεσμα την εμφάνιση τιμών στη μονάδα εξόδου. Η μονάδα εξόδου μπορεί να είναι
η οθόνη, ο εκτυπωτής, ή γενικά οποιαδήποτε μονάδα εξόδου έχει οριστεί. Η λίστα στοιχείων μπορεί
να περιέχει σταθερές τιμές και ονόματα μεταβλητών. Όταν κάποιο όνομα μεταβλητής περιέχεται στη
λίστα, τότε αρχικά ανακτάται η τιμή της και μετά η τιμή αυτή εμφανίζεται στη μονάδα εξόδου. Η
χρήση της αναφέρεται κυρίως στην εμφάνιση μηνυμάτων και αποτελεσμάτων. Εξυπηρετεί την
επικοινωνία του υπολογιστή με το χρήστη.
14. Δομή προγράμματος σε ΓΛΩΣΣΑ
• Επικεφαλίδα:
ΠΡΟΓΡΑΜΜΑ όνομα_προγράμματος (με βάση τους Κανόνες Ονοματολογίας).
• Τμήμα Δήλωσης σταθερών: Δηλώνονται οι σταθερές (όνομα και τύπος), που χρησιμοποιεί το
πρόγραμμα.
• Τμήμα Δήλωσης μεταβλητών: Δηλώνονται υποχρεωτικά τα ονόματα όλων των μεταβλητών
μαζί με το τύπο τους.
• Κύριο μέρος: Περιλαμβάνει όλες τις εκτελέσιμες εντολές ανάμεσα στην ΑΡΧΗ και στο
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.

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

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

2. Ποιοι είναι οι συγκριτικοί τελεστές;



ΤΕΛΕΣΤΗΣ ΕΛΕΓΧΟΜΕΝΗ ΣΧΕΣΗ
= Ισότητα
<> Ανισότητα
> Μεγαλύτερο
< Μικρότερο
>= Μεγαλύτερο ή ίσο
<= Μικρότερο ή ίσο

3. Συγκρίσεις
Οι συγκρίσεις έχουν ως αποτέλεσμα μια λογική τιμή (ΑΛΗΘΗΣ – ΨΕΥΔΗΣ) και γίνονται σε
δεδομένα όλων των τύπων της ΓΛΩΣΣΑΣ:
• Σύγκριση αριθμών: Η σύγκριση μεταξύ δύο αριθμών γίνεται με προφανή τρόπο.
• Σύγκριση χαρακτήρων: Η σύγκριση μεταξύ ατομικών χαρακτήρων βασίζεται στην
αλφαβητική σειρά, π.χ. το ‘Α’ < ‘Β’ είναι ΑΛΗΘΗΣ έκφραση. Η σύγκριση σειράς χαρακτήρων
βασίζεται στη σύγκριση χαρακτήρα προς χαρακτήρα σε κάθε θέση μέχρι να βρεθεί κάποια διαφορά,
π.χ. η έκφραση ‘ΚΑΚΟΣ’ < ‘ΚΑΛΟΣ’ είναι ΑΛΗΘΗΣ γιατί το Κ είναι μικρότερο του Λ.
• Σύγκριση λογικών: Η σύγκριση μεταξύ λογικών έχει νόημα μόνο στη περίπτωση του = και
του <>.

4. Σύνθετες λογικές εκφράσεις


Σχηματίζονται από απλές λογικές εκφράσεις με τη χρήση των λογικών τελεστών: ΟΧΙ, ΚΑΙ, Η

5. Ιεραρχία των τελεστών


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

6. Δομή Επιλογής
Η δομή επιλογής υλοποιείται με την εντολή "ΑΝ". Η εντολή "ΑΝ" έχει 3 διαφορετικές μορφές:

ΑΠΛΗ ΕΠΙΛΟΓΗ ΣΥΝΘΕΤΗ ΕΠΙΛΟΓΗ ΠΟΛΛΑΠΛΗ ΕΠΙΛΟΓΗ
ΑΝ … ΤΟΤΕ ΑΝ … ΤΟΤΕ … ΑΛΛΙΩΣ ΑΝ … ΤΟΤΕ … ΑΛΛΙΩΣ_ΑΝ

Προσοχή: Κάθε εντολή ΑΝ πρέπει να κλείνει με ΤΕΛΟΣ_ΑΝ.

6.1 Δομή Απλής Επιλογής (ΑΝ … ΤΟΤΕ)
• Σύνταξη:
ΑΝ συνθήκη ΤΟΤΕ
Εντολή‐1
Εντολή‐2

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

6.2 Δομή Σύνθετης Επιλογής (ΑΝ … ΤΟΤΕ … ΑΛΛΙΩΣ)


• Σύνταξη:
ΑΝ συνθήκη ΤΟΤΕ
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΑΛΛΙΩΣ
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΤΕΛΟΣ_ΑΝ
• Λειτουργία:
1) Αν η συνθήκη ισχύει, τότε εκτελούνται οι εντολές, που βρίσκονται ανάμεσα στο ΤΟΤΕ και στο
ΑΛΛΙΩΣ, αλλιώς εκτελούνται οι εντολές, που βρίσκονται ανάμεσα στο ΑΛΛΙΩΣ και στο ΤΕΛΟΣ_ΑΝ.
2) Η εκτέλεση του προγράμματος συνεχίζεται με την εντολή, που βρίσκεται μετά το ΤΕΛΟΣ_ΑΝ.

6.3 Δομή πολλαπλή επιλογής (ΑΝ … ΤΟΤΕ … ΑΛΛΙΩΣ_ΑΝ)


• Σύνταξη:
ΑΝ συνθήκη ΤΟΤΕ
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΑΛΛΙΩΣ _ΑΝ συνθήκη2 ΤΟΤΕ
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΑΛΛΙΩΣ
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΤΕΛΟΣ_ΑΝ
• Λειτουργία:
1) Εκτελούνται οι εντολές, που βρίσκονται στο αντίστοιχο τμήμα όπου η συνθήκη είναι
ΑΛΗΘΗΣ.
2) Η εκτέλεση του προγράμματος συνεχίζεται με την εντολή, που βρίσκεται μετά το ΤΕΛΟΣ_ΑΝ.
7. Εμφωλευμένες Δομές Επιλογής
(Ορισμός): Ονομάζονται δύο ή περισσότερες εντολές ΑΝ, που περιέχονται η μία μέσα
στην άλλη.
Η χρήση εμφωλευμένων ΑΝ οδηγεί συνήθως σε πολύπλοκες δομές, που αυξάνουν τη πιθανότητα
λάθους, ενώ κάνουν το πρόγραμμα δυσνόητο.

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

8.1 Δομή "ΟΣΟ … ΕΠΑΝΑΛΑΒΕ"


• Σύνταξη:
ΟΣΟ συνθήκη ΕΠΑΝΑΛΑΒΕ
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
• Λειτουργία:
1) Ελέγχεται η συνθήκη και αν είναι ΑΛΗΘΗΣ εκτελούνται οι εντολές, που βρίσκονται ανάμεσα
στις δεσμευμένες λέξεις ΟΣΟ και ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.
2) Στη συνέχεια ελέγχεται πάλι η συνθήκη και αν ισχύει εκτελούνται πάλι οι ίδιες εντολές.
3) Όταν η συνθήκη γίνει ΨΕΥΔΗΣ, τότε σταματά η επανάληψης και εκτελείται η εντολή μετά το
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ.
• Με τη δομή ΟΣΟ μπορούν να εκφραστούν όλες οι άλλες δομές επανάληψης.
• Χαρακτηριστικό της είναι ότι ο αριθμός των επαναλήψεων ΔΕΝ είναι γνωστός.
• Για να σταματήσει η επανάληψη πρέπει υποχρεωτικά μέσα στον βρόγχο να υπάρχει μια
εντολή η οποία κάνει τη συνθήκη ψευδή.

8.2 Δομή "ΜΕΧΡΙΣ_ΟΤΟΥ"


• Σύνταξη:
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΜΕΧΡΙΣ_ΟΤΟΥ συνθήκη
• Λειτουργία:
1) Εκτελούνται οι εντολές μεταξύ των δεσμευμένων λέξεων ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ και
ΜΕΧΡΙΣ_ΟΤΟΥ.
2) Στη συνέχεια ελέγχεται η συνθήκη και αν είναι ψευδής, τότε εκτελούνται πάλι οι εντολές.
3) Όταν η συνθήκη βρεθεί ΑΛΗΘΗΣ, σταματά η επανάληψη και εκτελείται η εντολή μετά το
ΜΕΧΡΙΣ_ΟΤΟΥ.
4) Η δομή αυτή εκτελείται τουλάχιστον μια φορά.

8.3. Δομή "ΓΙΑ … ΑΠΟ … ΜΕΧΡΙ"
• Σύνταξη:
ΓΙΑ μεταβλητή‐μετρητής ΑΠΟ τιμή1 ΜΕΧΡΙ τιμή2 ΜΕ ΒΗΜΑ τιμή3
Εντολή‐1
Εντολή‐2

Εντολή Ν
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
• Λειτουργία:
1) Οι εντολές του βρόγχου εκτελούνται για όλες τις τιμές της μεταβλητής ΑΠΟ τη τιμή1 ΜΕΧΡΙ
τη τιμή2, αυξανόμενες κατά την τιμή3 σε κάθε επανάληψη.
2) Αν η τιμή3 είναι ίση με 1, δηλαδή ο μετρητής αυξάνει κατά 1, τότε παραλείπεται.
3) Χρησιμοποιείται όταν γνωρίζουμε εκ των προτέρων τον αριθμό των επαναλήψεων.

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

10. Κανόνες χρήσης εμφωλευμένων βρόγχων


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


Πίνακες
1. Τι είναι πίνακας;
(Ορισμός): Πίνακας είναι ένα σύνολο αντικειμένων ίδιου τύπου, τα οποία αναφέρονται
με ένα κοινό όνομα.
Το όνομα του πίνακα μπορεί να είναι οποιαδήποτε δεκτό όνομα της ΓΛΩΣΣΑΣ και ο δείκτης είναι
μια ακέραια έκφραση, σταθερή ή μεταβλητή, που περικλείεται μέσα στα σύμβολα [ ].

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

Στοιχείο
Η αναφορά σε ένα στοιχείο του πίνακα γίνεται με το όνομα του πίνακα, ακολουθούμενο από ένα
δείκτη. Κάθε ένα από τα αντικείμενα, που τον αποτελούν, ονομάζεται στοιχείο.
Κάθε συγκεκριμένη θέση μνήμης καλείται στοιχείο του πίνακα και προσδιορίζεται από τη τιμή
ενός δείκτη αν ο πίνακας είναι μονοδιάστατος. Στη περίπτωση, που είναι δισδιάστατος,
προσδιορίζεται από 2 δείκτες. Αν είναι Ν‐διάστατος από Ν‐δείκτες.
Ο δείκτης είναι μια μεταβλητή, που μπορεί να έχει οποιοδήποτε δεκτό όνομα. Συνήθως ως
δείκτες χρησιμοποιούνται οι μεταβλητές i, j, k.

Πολυδιάστατοι Πίνακες
Αν ο καθορισμός των στοιχείων ενός πίνακα απαιτεί παραπάνω από ένα δείκτη, τότε μιλάμε για
πολυδιάστατους πίνακες: π.χ. 2 δείκτες δισδιάστατος, 3 δείκτες τρισδιάστατος κ.λπ.

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

2. Μειονεκτήματα από τη χρήση πινάκων


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

3. Πότε πρέπει να χρησιμοποιούνται πίνακες;


1) Όταν τα δεδομένα, που εισάγονται σε ένα πρόγραμμα, πρέπει να διατηρούνται στη μνήμη
μέχρι το τέλος της εκτέλεσης.
2) Η απόφαση για τη χρήση (ή όχι) πίνακα είναι θέμα εμπειρίας του προγραμματιστή.
4. Τυπικές επεξεργασίες πινάκων
1) Υπολογισμός αθροισμάτων στοιχείων του πίνακα. Πολύ συχνά απαιτείται η εύρεση του
αθροίσματος των στοιχείων ενός πίνακα ή του αθροίσματος των στοιχείων, που έχουν μια ιδιότητα.
2) Εύρεση μεγίστου‐ελαχίστου. Αν ο πίνακας δεν είναι ταξινομημένος, τότε πρέπει να
συγκριθούν τα στοιχεία ένα προς ένα, αλλιώς αν είναι ταξινομημένος το μέγιστο και ελάχιστο
βρίσκονται προφανώς στα 2 ακριανά στοιχεία (κελιά) του.
3) Ταξινόμηση των στοιχείων του πίνακα. Ένας αλγόριθμος ταξινόμησης, που
χρησιμοποιείται συχνά, είναι ο αλγόριθμος φυσαλίδας παρότι δεν είναι ο πιο γρήγορος.
4) Αναζήτηση ενός στοιχείου στο πίνακα. Δύο είναι οι πλέον διαδεδομένοι αλγόριθμοι: Η
σειριακή αναζήτηση, που είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος.
Χρησιμοποιείται, επίσης, η δυαδική αναζήτηση, που εφαρμόζεται μόνο σε ταξινομημένους πίνακες και
είναι σαφώς αποδοτικότερη από τη σειριακή αναζήτηση.
5) Συγχώνευση δύο πινάκων, που σκοπός της είναι η ένωση δύο ή περισσότερων πινάκων σε
ένα.

5. Να περιγραφεί η λειτουργία της αναζήτησης.


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

6. Να δοθεί ένα παράδειγμα για τη σειριακή αναζήτηση στοιχείου σε έναν


πίνακα.
Έστω ο παρακάτω μονοδιάστατος πίνακας, που περιέχει 10 αταξινόμητους ακέραιους
αριθμούς:
1 2 3 4 5 6 7 8 9 10
52 12 71 56 5 10 19 90 45 75
Για την επιτυχή αναζήτηση της τιμής 56 απαιτούνται 4 προσπελάσεις. Αντίθετα, για την
αναζήτηση της (ανύπαρκτης) τιμής 11 απαιτούνται 10 προσπελάσεις στον πίνακα, δηλαδή σάρωση
ολόκληρου του πίνακα.
1 2 3 4 5 6 7 8 9 10
5 10 12 19 45 52 56 71 75 90
Στην περίπτωση, που ο πίνακας ήταν ταξινομημένος, όπως φαίνεται παραπάνω, η ανεπιτυχής
αναζήτηση για την τιμή 11 τερματίζει μετά την τρίτη προσπάθεια και την ανάγνωση του αριθμού 12,
ενώ για την εύρεση της τιμής 56 απαιτούνται 7 προσπελάσεις.
(σ64)

7. Πότε χρησιμοποιείται η σειριακή αναζήτηση;


Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερη αποτελεσματική μέθοδος
αναζήτησης. Έτσι, δικαιολογείται η χρήση της μόνο σε περιπτώσεις όπου:
 ο πίνακας είναι μη ταξινομημένος,
 ο πίνακας είναι μικρού μεγέθους (για παράδειγμα, n ≤ 20),
 η αναζήτηση σε ένα συγκεκριμένο πίνακα γίνεται σπάνια
(σ.64)
8. Να δοθεί ο ορισμός της έννοιας της ταξινόμησης.
Δοθέντων των στοιχείων a1,a2,...,an η ταξινόμηση συνίσταται στη μετάθεση (permutation) της
θέσης των στοιχείων, ώστε να τοποθετηθούν σε μία σειρά ak1,ak2,...,akn έτσι ώστε, δοθείσης μίας
συνάρτησης διάταξης (ordering function), f, να ισχύει: f(ak1) ≤ f(ak2) ≤ ... ≤ f(akn)
(σ.65)

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


παράδειγμα.
Η μέθοδος της ταξινόμησης ευθείας ανταλλαγής (straight exchange sort) βασίζεται στην αρχή
της σύγκρισης και ανταλλαγής ζευγών γειτονικών στοιχείων, μέχρις ότου διαταχθούν όλα τα
στοιχεία. Σύμφωνα με τη μέθοδο αυτή κάθε φορά γίνονται διαδοχικές προσπελάσεις στον πίνακα και
μετακινείται το μικρότερο κλειδί της ακολουθίας προς το αριστερό άκρο του πίνακα. Αν ο πίνακας
θεωρηθεί σε κατακόρυφη θέση αντί σε οριζόντια και οι ακέραιοι θεωρηθούν –επιστρατεύοντας
αρκετή φαντασία– ως φυσαλίδες (bubbles) σε μία δεξαμενή νερού με βάρη σύμφωνα με την τιμή
τους, τότε κάθε προσπέλαση στον πίνακα έχει ως αποτέλεσμα την άνοδο της φυσαλίδας στο
κατάλληλο επίπεδο βάρους. Η μέθοδος είναι γνωστή ως ταξινόμηση φυσαλίδας (bubblesort).
Έστω ότι έχουμε τον πίνακα, που αποτελείται από εννέα στοιχεία, τα εξής: 52, 12, 71, 56, 5, 10,
19, 90 και 45. Η μέθοδος εφαρμοζόμενη σε αυτά τα εννέα στοιχεία εξελίσσεται όπως φαίνεται στο
επόμενο σχήμα. Κάθε φορά το ταξινομημένο τμήμα του πίνακα εμφανίζεται με χρώμα, ενώ τα
στοιχεία, που σαν φυσαλίδες "ανεβαίνουν" μέσα στον πίνακα, σημειώνονται με το αντίστοιχο βέλος
στα δεξιά τους. Κάθε στήλη αναπαριστά την i επανάληψη.



Η ταξινόμηση φυσαλίδας υλοποιείται με τον επόμενο αλγόριθμο:
Αλγόριθμος Φυσαλίδα

Για 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)

10. Περιγράψτε τις δομές δεδομένων σε δευτερεύουσα μνήμη.


Σε μεγάλες πρακτικές εμπορικές/επιστημονικές εφαρμογές, το μέγεθος της κύριας μνήμης
δεν επαρκεί για την αποθήκευση των δεδομένων. Στην περίπτωση αυτή χρησιμοποιούνται
ειδικές δομές για την αποθήκευση των δεδομένων στη δευτερεύουσα μνήμη, κυρίως, στο μαγνητικό
δίσκο. Οι ειδικές αυτές δομές ονομάζονται αρχεία (files). Τα στοιχεία ενός αρχείου ονομάζονται
εγγραφές (records), όπου κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία (fields).
(σ.66)

11. Τι γνωρίζεται για τα κλειδιά στα αρχεία;


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

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. Υποπρόγραμμα
(Ορισμός): Ονομάζεται ένα τμήμα προγράμματος το οποίο επιτελεί ένα αυτόνομα έργο
και έχει γραφεί ξεχωριστά από το υπόλοιπο πρόγραμμα.

3. Χαρακτηριστικά των Υποπρογραμμάτων


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

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


1) Διευκολύνει την ανάπτυξη του αλγορίθμου και του αντίστοιχου προγράμματος.
Επιτρέπει την εξέταση και την επίλυση απλών προβλημάτων και όχι στην αντιμετώπιση του
συνολικού προβλήματος. Με τη σταδιακή επίλυση των υποπροβλημάτων και τη δημιουργία των
αντίστοιχων υποπρογραμμάτων, τελικά επιλύεται το συνολικό πρόβλημα.
2) Διευκολύνει τη κατανόηση και τη διόρθωση του προγράμματος. Ο χωρισμός του
προγράμματος σε μικρότερα και αυτοτελή τμήματα επιτρέπει τη γρήγορη διόρθωση ενός
συγκεκριμένου τμήματος του χωρίς οι αλλαγές αυτές να επηρεάσουν τον υπόλοιπο κώδικα. Επίσης,
διευκολύνει οποιονδήποτε χρειαστεί να διαβάσει και να κατανοήσει τον τρόπο που λειτουργεί το
πρόγραμμα.
3) Απαιτεί λιγότερο χρόνο και προσπάθεια στη συγγραφή του προγράμματος. Πολύ
συχνά χρειάζεται η ίδια λειτουργία σε διαφορετικά σημεία ενός προγράμματος. Από τη στιγμή που
έχουμε συντάξει ένα υποπρόγραμμα, μπορούμε να το αξιοποιούμε σε πολλά σημεία του κυρίου
προγράμματος. Μειώνουμε και το μέγεθος του προγράμματος και ο χρόνος που απαιτείται για τη
γραφή.
4) Επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού. Από τη στιγμή που το
υποπρόγραμμα έχει γραφεί, η χρήση του δεν διαφέρει από τη χρήση των ενσωματωμένων
συναρτήσεων που παρέχει η γλώσσα προγραμματισμού μας. Για παράδειγμα, αν χρειάζεται αρκετά
συχνά να κάποια λειτουργία που δεν υποστηρίζεται από τη γλώσσα, όπως η εύρεση του μικρότερου 2
αριθμών, τότε μπορεί να γραφεί ένα αντίστοιχο υποπρόγραμμα. Με πολλά υποπρογράμματα,
δημιουργούμε βιβλιοθήκες με αυτά, και πρακτικά επεκτείνεται η γλώσσα προγραμματισμού μας.

5. Παράμετροι
(Ορισμός): Μια παράμετρος είναι μια μεταβλητή, που επιτρέπει το πέρασμα της τιμής
της από ένα τμήμα προγράμματος σε ένα άλλο.

6. Σύντομη περιγραφή της λειτουργία ενός υποπρογράμματος


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

7. Συνάρτηση
(Ορισμός): Είναι ένας τύπος υποπρογράμματος, που υπολογίζει και επιστρέφει μία μόνο
τιμή με το όνομά της.

8. Διαδικασία
(Ορισμός): Είναι ένας τύπος υποπρογράμματος, που μπορεί να εκτελεί όλες τις
λειτουργίες ενός προγράμματος.

9. Δομή Συνάρτησης
Κάθε συνάρτηση έχει την ακόλουθη δομή και ορίζεται μετά το ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ.
ΣΥΝΑΡΤΗΣΗ όνομα (λίστα τυπικών παραμέτρων): ΤΥΠΟΣ ΣΥΝΑΡΤΗΣΗΣ
Τμήμα Δηλώσεων
ΑΡΧΗ

όνομα ← έκφραση

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
Όνομα: Το όνομα της συνάρτησης είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ.
Λίστα τυπικών παραμέτρων: είναι μια λίστα μεταβλητών των οποίων οι τιμές
μεταβιβάζονται στη συνάρτηση. [Αποτελείται από τις μεταβλητές εισόδου της Συνάρτησης].
Τύπος της Συνάρτησης: είναι ο τύπος της τιμής που υπολογίζει η συνάρτηση. Μπορεί να είναι
ακέραια, λογική, πραγματική, ή χαρακτήρας.
Εντολές: Στις εντολές του σώματος της συνάρτησης πρέπει υποχρεωτικά να υπάρχει μια
εντολή εκχώρησης τιμής στο όνομα της συνάρτησης: όνομα ← έκφραση (Αυτή η εκχώρηση
αποτελεί ουσιαστικά τον μηχανισμό εξόδου της Συνάρτησης).

10. Δομή Διαδικασίας


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

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
Όνομα: Το όνομα της διαδικασίας είναι οποιοδήποτε έγκυρο όνομα της ΓΛΩΣΣΑΣ.
Λίστα τυπικών παραμέτρων: είναι μια λίστα μεταβλητών των οποίων οι τιμές
μεταβιβάζονται στη Διαδικασία, ή/και επιστρέφονται στο κυρίως πρόγραμμα μετά το τέλος της
Διαδικασίας.
Εντολές: Στις εντολές του σώματος της Διαδικασίας μπορούν να υπάρχουν οποιεσδήποτε
εντολές της ΓΛΩΣΣΑΣ.

11. Κλήση Συναρτήσεων


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

12. Κλήση διαδικασιών


Η κλήση μιας διαδικασίας από ένα πρόγραμμα ή από ένα άλλο υποπρόγραμμα γίνεται με την
εντολή ΚΑΛΕΣΕ.
• Σύνταξη: ΚΑΛΕΣΕ όνομα_διαδικασίας (λίστα πραγματικών παραμέτρων)
• Λειτουργία: Η εκτέλεση του προγράμματος διακόπτεται. Εκτελούνται οι εντολές της
διαδικασίας. Μετά το τέλος της διαδικασίας η εκτέλεση του προγράμματος συνεχίζεται με την εντολή
που βρίσκεται μετά την ΚΑΛΕΣΕ.
• Λίστα παραμέτρων: Μπορεί να περιλαμβάνει καμία, μία ή περισσότερες παραμέτρους. Ορίζει
τις τιμές εισόδου προς τη διαδικασία, αλλά και τις τιμές β της διαδικασίας. (Σημαντικό: η λίστα
παραμέτρων μπορεί να μην περιλαμβάνει και καμία παράμετρο).

13. Πραγματικές Παράμετροι


(Ορισμός): Η λίστα των πραγματικών παραμέτρων καθορίζει τις παραμέτρους στη
κλήση ενός υποπρογράμματος.

14. Τυπικές Παράμετροι


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

15. Κανόνες Παραμέτρων (στις Συναρτήσεις ή/και στις Διαδικασίες)


1) Ο αριθμός των πραγματικών και τυπικών παραμέτρων πρέπει να είναι ο ίδιος.
2) Κάθε πραγματική παράμετρος αντιστοιχεί στην αντίστοιχη τυπική.
3) Η πραγματική παράμετρος και η αντίστοιχή της τυπική πρέπει να είναι του ίδιου τύπου.

16. Χρήση στοίβας στη κλήση διαδικασιών


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

17. Τοπικές Μεταβλητές


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

18. Τι ονομάζεται εμβέλεια μεταβλητών ;


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

19. Απεριόριστη Εμβέλεια


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

20. Περιορισμένη Εμβέλεια


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

21. Μερικώς περιορισμένη εμβέλεια


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

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

Ότι ισχύει για τις μεταβλητές ισχύει και για τις σταθερές.
Το τμήμα προγράμματος, που ισχύουν οι μεταβλητές λέγεται εμβέλεια (scope) μεταβλητών.
1) Απεριόριστη Εμβέλεια: Σύμφωνα με αυτή την αρχή όλες οι μεταβλητές και όλες οι
σταθερές είναι γνωστές και μπορούν να χρησιμοποιούνται σε οποιοδήποτε τμήμα του
προγράμματος, άσχετα που δηλώθηκαν. Όλες οι μεταβλητές είναι καθολικές. Η απεριόριστη
εμβέλεια καταστρατηγεί την αρχή της αυτονομίας των υποπρογραμμάτων, δημιουργεί
πολλά προβλήματα και τελικά είναι αδύνατη για μεγάλα προγράμματα με πολλά
υποπρογράμματα.
2) Περιορισμένη Εμβέλεια: Η περιορισμένη εμβέλεια υποχρεώνει όλες τις μεταβλητές που
χρησιμοποιούνται σε ένα τμήμα προγράμματος, να δηλώνονται σε αυτό το τμήμα. Όλες οι
μεταβλητές είναι τοπικές, ισχύουν δηλαδή για το υποπρόγραμμα στο οποίο δηλώθηκαν. Στη
δική μας γλώσσα, «Γλώσσα», έχουμε περιορισμένη εμβέλεια. Τα πλεονεκτήματα της
περιορισμένης εμβέλειας είναι η απόλυτη αυτονομία όλων των υποπρογραμμάτων και η
δυνατότητα να χρησιμοποιείται οποιοδήποτε όνομα, χωρίς να ενδιαφέρει αν το ίδιο
χρησιμοποιείται σε άλλο υποπρόγραμμα.
3) Μερικώς περιορισμένη εμβέλεια: Σύμφωνα με αυτή την αρχή άλλες μεταβλητές είναι
τοπικές και άλλες καθολικές. Κάθε γλώσσα προγραμματισμού έχει τους δικούς της κανόνες
για το τρόπο και τις προϋποθέσεις που ορίζονται οι μεταβλητές ως τοπικές ή καθολικές. Η
μερικώς περιορισμένη εμβέλεια προσφέρει μερικά πλεονεκτήματα στους έμπειρους
προγραμματιστές, αλλά για τον αρχάριο περιπλέκει το πρόγραμμα και δυσκολεύει την
ανάπτυξή του.

Εκσφαλμάτωση Προγράμματος
1. Ποιες είναι οι βασικές κατηγορίες λαθών, που μπορεί να παρουσιαστούν στα
προγράμματα;
• Λάθη κατά την υλοποίηση (Συντακτικά λάθη)
• Λάθη κατά την εκτέλεση (Λάθη, που οδηγούν σε αντικανονικό τερματισμό του
προγράμματος)
• Λογικά λάθη (Λογικά λάθη, που παράγουν λανθασμένα αποτελέσματα)

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

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

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

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

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

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

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

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

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

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

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

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


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

Αναφέρετε 4 περιπτώσεις στις οποίες η χρήση μονοδιάστατου πίνακα είναι
απαραίτητη.
1. Ταξινόμηση Ν τιμών.
2. Εύρεση μεγίστου Ν τιμών, καθώς και των θέσεων (1 έως Ν) των τιμών, που ισούνται με τον
μέγιστο.
3. Εύρεση ελαχίστου Ν τιμών, καθώς και των θέσεων (1 έως Ν) των τιμών, που ισούνται με τον
ελάχιστο.
4. Υπολογισμός συχνότητας εμφάνισης των τιμών Τ1, Τ2, ...., ΤΝ μέσα σ' ένα πλήθος δεδομένων.

Προσδιορισμός των στοιχείων των 2 κυρίων διαγωνίων ενός πίνακα.
Ας θεωρήσουμε τον πίνακα Τ[Κ, Κ] (Κ θετικός ακέραιος). Προσδιορίστε τις προϋποθέσεις,
που πρέπει να πληρούνται ώστε το στοιχείο Τ[ρ, σ] να ανήκει:
α) στην πρώτη κύρια διαγώνιο β) στη δεύτερη κύρια διαγώνιο
α) ρ = σ β) ρ+σ = Κ+1

Τι σχέση έχει η λειτουργία της ολίσθησης με τον πολλαπλασιασμό αλά ρωσικά;
Η μέθοδος του πολλαπλασιασμού αλά ρωσικά, εφαρμόζεται ως γνωστόν σε δύο θετικούς
ακεραίους Μ1 και Μ2. Μέσα σε κάθε επανάληψη, εκτελούνται οι εντολές:
Μ1 ← Μ1 * 2
Μ2 ← Μ2 div 2
Ο διπλασιασμός του Μ1 γίνεται με ολίσθηση του προς τα αριστερά κατά μια θέση.
Ο υποδιπλασιασμός του Μ2 γίνεται με ολίσθηση προς τα δεξιά κατά μια θέση.

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

Ποιά είναι η ιεραρχία των τελεστών;
Η ιεραρχία (προτεραιότητα) των τελεστών σε μια έκφραση είναι:
1) αριθμητικοί
2) συγκριτικοί
3) λογικοί

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

Ποιες είναι οι βασικές πράξεις επί των δομών δεδομένων;
Οι βασικές λειτουργίες (ή αλλιώς πράξεις) επί των δομών δεδομένων είναι οι ακόλουθες:
 Προσπέλαση (access), πρόσβαση σε ένα κόμβο με σκοπό να εξετασθεί ή να τροποποιηθεί το
περιεχόμενό του.
 Εισαγωγή (insertion), η προσθήκη νέων κόμβων σε μία υπάρχουσα δομή.
 Διαγραφή (deletion), που αποτελεί το αντίστροφο της εισαγωγής, δηλαδή ένας κόμβος
αφαιρείται από μία δομή.
 Αναζήτηση (searching), κατά την οποία προσπελαύνονται οι κόμβοι μιας δομής, προκειμένου
να εντοπιστούν ένας ή περισσότεροι, που έχουν μια δεδομένη ιδιότητα.
 Ταξινόμηση (sorting), όπου οι κόμβοι μιας δομής διατάσσονται κατά αύξουσα ή φθίνουσα
σειρά.
 Αντιγραφή (copying), κατά την οποία όλοι οι κόμβοι ή μερικοί από τους κόμβους μίας δομής
αντιγράφονται σε μία άλλη δομή.
 Συγχώνευση (merging), κατά την οποία δύο ή περισσότερες δομές συνενώνονται σε μία
ενιαία δομή.
 Διαχωρισμός (separation), που αποτελεί την αντίστροφη πράξη της συγχώνευσης.
(σ.56)

Ποια είναι η εξάρτηση μεταξύ της δομής δεδομένων και του αλγορίθμου που επεξεργάζεται τη
δομή;
Μία δομή δεδομένων να είναι αποδοτικότερη από μία άλλη δομή με κριτήριο κάποια λειτουργία,
για παράδειγμα την αναζήτηση, αλλά λιγότερο αποδοτική για κάποια άλλη λειτουργία, για
παράδειγμα την εισαγωγή. Αυτές οι παρατηρήσεις εξηγούν αφ’ ενός την ύπαρξη διαφορετικών
δομών, και αφ’ ετέρου τη σπουδαιότητα της επιλογής της κατάλληλης δομής κάθε φορά. Υπάρχει
μεγάλη εξάρτηση μεταξύ της δομής δεδομένων και του αλγόριθμου που επεξεργάζεται τη δομή.
Μάλιστα, το πρόγραμμα πρέπει να θεωρεί τη δομή δεδομένων και τον αλγόριθμο ως μία αδιάσπαστη
ενότητα. Η παρατήρηση αυτή δικαιολογεί την εξίσωση, που διατυπώθηκε το 1976 από τον Wirth
(σχεδίασε και υλοποίησε τη γλώσσα Pascal):
Αλγόριθμοι + Δομές Δεδομένων = Προγράμματα
(σ.57)

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

Να χαρακτηρίσετε ως Σωστές (Σ) ή Λανθασμένες (Λ) τις παρακάτω προτάσεις:
1) Η κλήση μίας συνάρτησης γίνεται με την εντολή ΚΑΛΕΣΕ.
2) Σε μία γλώσσα προγραμματισμού η σημασιολογία των λέξεων της γλώσσας καθορίζεται από το
δημιουργό της γλώσσας.
3) Η λειτουργία επί των δομών δεδομένων "Εισαγωγή" αποτελεί μια από τις τυπικές λειτουργίες των
πινάκων.
4) Η επανάληψη ΓΙΑ i ΑΠΟ 5 ΜΕΧΡΙ 1 θα εκτελεστεί 5φορές.
5) Κατά την δημιουργία ενός προγράμματος χρησιμοποιούνται κατά σειρά 1. συντάκτης, 2. συνδέτης–
φορτωτής, 3. μεταγλωττιστής ή διερμηνευτής.
6) Η συνθήκη στην εντολή Όσο...επανάλαβε ελέγχεται τουλάχιστον μια φορά.
7) Η δομή επανάληψης ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 10 ΜΕ_ΒΗΜΑ 10 θα εκτελεστεί ακριβώς 2 φορές.
8) Ο μεταγλωττιστής, εφόσον δεν βρει συντακτικά λάθη σε ένα πρόγραμμα, παράγει το εκτελέσιμο
πρόγραμμα.
9) Η απεριόριστη εμβέλεια υποχρεώνει όλες τις μεταβλητές, που χρησιμοποιούνται σε ένα τμήμα
προγράμματος, να δηλώνονται σε αυτό το τμήμα.
10) Μια συνάρτηση μπορεί να εκτελέσει τις ίδιες ακριβώς λειτουργίες με μια διαδικασία.
11) Οι τελεστές DIV και MOD μπορούν να χρησιμοποιηθούν με οποιοδήποτε αριθμητικό τύπο δεδομένων.
12) Η δυαδική αναζήτηση έχει μικρότερη χρονική πολυπλοκότητα από τη σειριακή.
13) Η συνθήκη στην εντολή Όσο...επανάλαβε εκτελείται τουλάχιστον μια φορά.
14) Μετά από την εκτέλεση της εντολής Σ<-Σ+Α, αν Α θετικό, η τιμή της μεταβλητής Σ είναι πάντοτε
μεγαλύτερη από την τιμή, που είχε πριν από την εκτέλεση της εντολής.
15) Η σειριακή αναζήτηση έχει μικρότερη χρονική πολυπλοκότητα από τη δυαδική.
16) Η συνθήκη στην εντολή Αρχή Επανάληψης…Μέχρις_Οτου ελέγχεται τουλάχιστον μια φορά.
17) Η συνθήκη στην εντολή Αρχή Επανάληψης…Μέχρις_Οτου εκτελείται τουλάχιστον μια φορά.
18) Η συνθήκη στην εντολή Αρχή Επανάληψης…Μέχρις_Οτου ελέγχεται το πολύ μια φορά.
19) Οι πίνακες περιορίζουν τις δυνατότητες του προγράμματος.
20) Μετά από την εκτέλεση της εντολής Σ<-Σ+Α, η τιμή της μεταβλητής Σ είναι πάντοτε μεγαλύτερη από
την τιμή, που είχε πριν από την εκτέλεση της εντολής.
21) Η έκφραση ΟΧΙ(Κ=10 ΚΑΙ Χ>7)είναι ισοδύναμη με την έκφραση (ΟΧΙ(Κ=10) Ή Χ<=7).
22) Οι συγκριτικοί τελεστές δεν έχουν μεγαλύτερη ιεραρχία από τους λογικούς τελεστές.
23) Πάντα μία ΟΣΟ θα εκτελεστεί τουλάχιστον 1 φορά.
24) Μετά από την εκτέλεση της εντολής Σ<-Σ*Α, η τιμή της μεταβλητής Σ είναι πάντοτε μεγαλύτερη από
την τιμή, που είχε πριν από την εκτέλεση της εντολής.
25) Κάθε μεταβλητή παίρνει τιμή μόνο με εντολή εκχώρησης.
26) Η έκφραση ΟΧΙ(Κ=10 ΚΑΙ Χ>7)είναι ισοδύναμη με την έκφραση (Κ<>10 Ή Χ<=7).
27) Πολύ συχνά οι εντολές, που έχουν γραφτεί με εμφωλευμένα ΑΝ, μπορούν να γραφτούν πιο απλά
χρησιμοποιώντας σύνθετες εκφράσεις ή την εντολή επιλογής ΑΝ...ΤΟΤΕ...ΑΛΛΙΩΣ_ΑΝ.
28) Η ομάδα εντολών, που περιέχεται σε μια δομή επιλογής, μπορεί και να εκτελεστεί.
29) Εμφωλευμένα ΑΝ ονομάζονται δύο ή περισσότερες εντολές της μορφής ΑΝ...ΤΟΤΕ...ΑΛΛΙΩΣ, που
περιέχονται η μία μέσα στην άλλη.
30) Πολλαπλές επιλογές μπορούν να γίνουν και με μία εμφωλευμένη δομή.
31) Ο τελεστής ΚΑΙ αντιστοιχεί στη λογική πράξη της σύζευξης.
32) Ο βρόχος Για Κ από 5 μέχρι 1 εκτελείται 5 φορές.
33) Οι λειτουργίες ώθηση και απώθηση είναι οι κύριες λειτουργίες σε μια ουρά.
34) Οι πίνακες είναι δομές δεδομένων της κύριας μνήμης.
35) Τα συντακτικά λάθη ενός προγράμματος μπορούν να διορθωθούν κατά την εκτέλεση του
προγράμματος, ταυτόχρονα με τα λογικά λάθη.
36) Ένα άλυτο πρόβλημα δεν μπορεί μελλοντικά να χαρακτηριστεί επιλύσιμο.
37) Αν σε έναν ακέραιο αριθμό εφαρμοστεί ολίσθηση προς τα δεξιά και στον αριθμό, που προκύψει
εφαρμοστεί ολίσθηση προς τα αριστερά, τότε ο τελικός αριθμός θα είναι πάντα ίσος με τον αρχικό.
38) Πρόβλημα είναι μια οποιαδήποτε κατάσταση, που πρέπει να αντιμετωπίσουμε.
39) Ο ανθρώπινος εγκέφαλος είναι ένας μηχανισμός επεξεργασίας δεδομένων
40) Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων Πληροφορικής.
41) Ο αλγόριθμος αποτελείται από ένα πεπερασμένο σύνολο εντολών.
42) Ο αλγόριθμος μπορεί να περιλαμβάνει και εντολές, που δεν είναι σαφείς.
43) Η Πληροφορική μελετά τους αλγορίθμους μόνο από το πρίσμα των γλωσσών προγραμματισμού.
44) Η αναπαράσταση των αλγορίθμων μπορεί να γίνει μόνο με χρήση ελεύθερου κειμένου και φυσικής
γλώσσας.
45) Τα κυριότερα σύμβολα των διαγραμμάτων ροής είναι η έλλειψη, ο ρόμβος, το ορθογώνιο και το
πλάγιο παραλληλόγραμμο.
46) Τα κυριότερα σύμβολα των διαγραμμάτων ροής είναι ο κύκλος, ο ρόμβος, το ορθογώνιο και το πλάγιο
παραλληλόγραμμο.
47) Η δομή της ακολουθίας είναι ιδιαίτερα χρήσιμη για την αντιμετώπιση πολύπλοκων προβλημάτων.
48) Η συνθήκη, που ελέγχεται σε μια δομή επιλογής, μπορεί να πάρει περισσότερες από δύο διαφορετικές
τιμές.
49) Η ομάδα εντολών, που περιέχεται σε μια δομή επιλογής, μπορεί να μην εκτελεστεί.
50) Στην εντολή ΓΙΑ ο βρόχος επαναλαμβάνεται για προκαθορισμένο αριθμό επαναλήψεων.
51) Στην εντολή Όσο ο βρόχος επαναλαμβάνεται για προκαθορισμένο αριθμό επαναλήψεων.
52) Ο βρόχος Για Κ από 5 μέχρι 5 δεν εκτελείται καμία φορά.
53) Ο βρόχος Για κ από -4 μέχρι -3 εκτελείται ακριβώς δύο φορές.
54) Ο βρόχος Για κ από -4 μέχρι -3 εκτελείται τουλάχιστον 2 φορές.
55) Μια συνάρτηση υπολογίζει και επιστρέφει παραπάνω από μία τιμές με το όνομά της.
56) Ο τρόπος κλήσης των διαδικασιών και των συναρτήσεων είναι ίδιος, ενώ ο τρόπος σύνταξής τους
είναι διαφορετικός.
57) Μία συνάρτηση είναι δυνατό να επιστρέφει μόνον ακέραιες ή πραγματικές τιμές.
58) Οι συναρτήσεις μπορούν να επιστρέφουν μόνο μία τιμή.
59) Στη διαδικασία η λίστα παραμέτρων είναι υποχρεωτική.
60) Η κλήση των διαδικασιών γίνεται με απλή αναφορά του ονόματος τους.
61) Το πλήθος των τυπικών και των πραγματικών παραμέτρων πρέπει να είναι ίδιο.
62) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για εισαγωγή 3 δεδομένων.
63) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για εισαγωγή 1 δεδομένου.
64) Στην επαναληπτική δομή Όσο...Επανάλαβε δεν γνωρίζουμε εκ των προτέρων το πλήθος των
επαναλήψεων.
65) Στην επαναληπτική δομή Όσο...Επανάλαβε γνωρίζουμε εκ των προτέρων το πλήθος των
επαναλήψεων.
66) Στην επαναληπτική δομή Για, δεν γνωρίζουμε εκ των προτέρων το πλήθος των επαναλήψεων.
67) Η εντολή επανάληψης ΜΕΧΡΙΣ_ΟΤΟΥ εκτελείται υποχρεωτικά τουλάχιστον μία φορά.
68) Κάθε βρόχος, που υλοποιείται με την εντολή ΟΣΟ...ΕΠΑΝΑΛΑΒΕ, μπορεί να γραφεί και με χρήση της
εντολής ΓΙΑ…ΑΠΟ…ΜΕΧΡΙ.
69) Ένα υποπρόγραμμα μπορεί να καλείται από ένα άλλο υποπρόγραμμα ή από το κύριο πρόγραμμα.
70) Ένα υποπρόγραμμα μπορεί να καλείται μόνο από το κύριο πρόγραμμα.
71) Μια διαδικασία και μια συνάρτηση μπορούν να εκτελούν ακριβώς τις ίδιες λειτουργίες.
72) Κάθε υποπρόγραμμα πρέπει να έχει μόνο μία είσοδο και μία έξοδο.
73) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για υπολογισμό του μικρότερου από 7 αριθμούς.
74) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για υπολογισμό 2 μικρότερων από 7 αριθμούς.
75) Ένας πίνακας μπορεί να αποθηκεύσει και ακεραίους αλλά και πραγματικούς αριθμούς.
76) Οι δυναμικές δομές έχουν σταθερό μέγεθος.
77) Σε μία δυναμική δομή δεδομένων τα δεδομένα αποθηκεύονται υποχρεωτικά σε συνεχόμενες θέσεις
μνήμης.
78) Η δυναμική παραχώρηση μνήμης χρησιμοποιείται στις στατικές δομές δεδομένων.
79) Η δυναμική παραχώρηση μνήμης χρησιμοποιείται στις δομές των πινάκων.
80) Η ουρά και η στοίβα μπορούν να υλοποιηθούν με δομή πίνακα.
81) Η απώθηση (pop) στοιχείου γίνεται από το πίσω άκρο της στοίβας.
82) Κατά τη διαδικασία της ώθησης πρέπει να ελέγχεται αν η στοίβα είναι γεμάτη.
83) Οι λειτουργίες ώθηση και απώθηση είναι οι κύριες λειτουργίες σε μία στοίβα.
84) Η στοίβα χρησιμοποιεί δύο δείκτες.
85) Η λειτουργία της ώθησης σχετίζεται με τη δομή της στοίβας.
86) Η εξαγωγή (dequeue) στοιχείου γίνεται από το εμπρός άκρο της ουράς.
87) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για να ελέγξουμε αν 2 αριθμοί είναι ίσοι.
88) Μπορούμε να φτιάξουμε υποπρόγραμμα διαδικασία για να ταξινομήσουμε έναν πίνακα.
89) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για να ταξινομήσουμε 2 πίνακες.
90) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για να ελέγχει αν ένας χαρακτήρας είναι φωνήεν
ή σύμφωνο.
91) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για να διαβάζει έναν αριθμό και να επιστρέφει το
τετράγωνο του.
92) Μπορούμε να φτιάξουμε υποπρόγραμμα συνάρτηση για να ελέγχει αν ένας αριθμός είναι άρτιος.
93) Δυναμικές είναι οι δομές, που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης.
94) Ένας πίνακας έχει σταθερό μέγεθος αλλά μεταβαλλόμενο περιεχόμενο.
95) Η ώθηση (push) στοιχείου είναι μία από τις λειτουργίες της ουράς.
96) Η μέθοδος επεξεργασίας FIFO εφαρμόζεται στη λειτουργία της ουράς.
97) Η σειριακή αναζήτηση χρησιμοποιείται αποκλειστικά στους ταξινομημένους πίνακες.
98) Η δυαδική αναζήτηση χρησιμοποιείται αποκλειστικά στους ταξινομημένους πίνακες.
99) Η δυαδική αναζήτηση χρησιμοποιείται στους μη ταξινομημένους πίνακες.
100) Όταν γίνεται σειριακή αναζήτηση κάποιου στοιχείου σε ένα μη ταξινομημένο πίνακα και το στοιχείο
δεν υπάρχει στον πίνακα, τότε υποχρεωτικά προσπελαύνονται όλα τα στοιχεία του πίνακα.
101) Η μέθοδος της σειριακής αναζήτησης δικαιολογείται στην περίπτωση, που ο πίνακας είναι μη
ταξινομημένος και μικρού μεγέθους.
102) Η ταξινόμηση φυσαλίδας είναι ο πιο απλός και ταυτόχρονα ο πιο γρήγορος αλγόριθμος ταξινόμησης.
103) Η ταξινόμηση φυσαλίδας είναι ο πιο απλός αλγόριθμος ταξινόμησης.
104) Η ταξινόμηση φυσαλίδας είναι ο πιο γρήγορος αλγόριθμος ταξινόμησης.
105) Η εγγραφή είναι δομή δεδομένων, η οποία αποτελείται από πεδία, που αποθηκεύουν χαρακτηριστικά.
106) Η ταξινόμηση είναι χρήσιμη διαδικασία γιατί έτσι εκτελείται γρηγορότερα η αναζήτηση.
107) Η ταξινόμηση είναι χρήσιμη διαδικασία γιατί έτσι εκτελείται γρηγορότερα η προσπέλαση.
108) Η ταξινόμηση ευθείας ανταλλαγής είναι πολύ αποτελεσματική σε πίνακες, που είναι ταξινομημένοι
κατά την αντίστροφη φορά σε σχέση με την επιθυμητή.
109) Ένα πρόγραμμα σε γλώσσα μηχανής είναι μια ακολουθία δυαδικών ψηφίων.
110) Ένα πρόγραμμα σε γλώσσα μηχανής χρειάζεται μεταγλώττιση.
111) Για την εκτέλεση μιας εντολής συμβολικής γλώσσας απαιτείται η μετάφρασή της σε γλώσσα μηχανής.
112) Οι εντολές στις συμβολικές γλώσσες αποτελούνται από ακολουθίες 0 και 1.
113) Τα προγράμματα σε γλώσσες υψηλού επιπέδου είναι ανεξάρτητα του υπολογιστή, που
αναπτύχθηκαν.
114) Η εντολή GOTO, που αλλάζει τη ροή εκτέλεσης ενός προγράμματος είναι απαραίτητη στο δομημένο
προγραμματισμό.
115) Καλό είναι να αποφεύγεται η χρήση της εντολής GOTO, που αλλάζει τη ροή εκτέλεσης ενός
προγράμματος.
116) Ο δομημένος προγραμματισμός εξασφαλίζει τη δημιουργία σωστών προγραμμάτων.
117) Ο δομημένος προγραμματισμός επιτρέπει την άμεση μεταφορά των αλγορίθμων σε πρόγραμμα.
118) Ο μεταγλωττιστής μας επιτρέπει να συντάξουμε ένα πρόγραμμα.
119) Ο συντάκτης μας επιτρέπει να συντάξουμε ένα πρόγραμμα.
120) Ο μεταγλωττιστής δέχεται στην είσοδό του ένα πρόγραμμα γραμμένο σε μια γλώσσα υψηλού
επιπέδου και παράγει ένα ισοδύναμο πρόγραμμα σε γλώσσα μηχανής.
121) Το πηγαίο πρόγραμμα εκτελείται από τον υπολογιστή χωρίς μεταγλώττιση.
122) Ο διερμηνευτής διαβάζει μία προς μία τις εντολές του πηγαίου προγράμματος και για κάθε μια εκτελεί
αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής.
123) Τα λογικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης του
προγράμματος.
124) Τα συντακτικά λάθη είναι συνήθως λάθη σχεδιασμού και δεν προκαλούν τη διακοπή της εκτέλεσης
του προγράμματος.
125) Τα συντακτικά λάθη στον πηγαίο κώδικα εμφανίζονται κατά το στάδιο της μεταγλώττισής του.
126) Ένα πρόγραμμα δεν μπορεί να μεταγλωττιστεί αν έχει συντακτικά λάθη.
127) Ένα πρόγραμμα δεν μπορεί να μεταγλωττιστεί αν έχει λογικά λάθη.
128) Το πρόγραμμα που παράγεται από το μεταγλωττιστή λέγεται εκτελέσιμο.
129) Τα λογικά λάθη ενός προγράμματος εμφανίζονται κατά τη μεταγλώττιση.
130) Οι τύποι των μεταβλητών, που υποστηρίζει η ΓΛΩΣΣΑ, είναι μόνο ΠΡΑΓΜΑΤΙΚΕΣ και ΑΚΕΡΑΙΕΣ.
131) Στη δομή ενός προγράμματος το τμήμα δήλωσης των σταθερών ακολουθεί το τμήμα δήλωσης των
μεταβλητών.
132) Οι δεσμευμένες λέξεις της ΓΛΩΣΣΑΣ δεν μπορούν να χρησιμοποιηθούν ως ονόματα δεδομένων σε ένα
πρόγραμμα.
133) Κατά την εκτέλεση ενός προγράμματος μπορεί να αλλάζει η τιμή και ο τύπος μιας μεταβλητής.
134) Κατά την εκτέλεση ενός προγράμματος μπορεί να αλλάζει η τιμή μίας μεταβλητής.
135) Κατά την εκτέλεση ενός προγράμματος μπορεί να αλλάζει η τιμή μίας σταθεράς.
136) Ενώ η τιμή μίας μεταβλητής μπορεί να αλλάζει κατά την εκτέλεση του προγράμματος, αυτό που μένει
υποχρεωτικά αναλλοίωτο είναι ο τύπος της.
137) Σε μία εντολή εκχώρησης του αποτελέσματος μίας έκφρασης σε μία μεταβλητή, η μεταβλητή και η
έκφραση πρέπει να είναι του ίδιου τύπου.
138) Οι μεταβλητές που χρησιμοποιούνται σ' ένα πρόγραμμα αντιστοιχίζονται από το μεταγλωττιστή σε
συγκεκριμένες θέσεις της μνήμης του υπολογιστή.
139) Η τιμή της μεταβλητής είναι το περιεχόμενο της αντίστοιχης θέσης μνήμης και δεν μεταβάλλεται στη
διάρκεια εκτέλεσης του προγράμματος.
140) Ο τύπος της μεταβλητής αλλάζει κατά την εκτέλεση του προγράμματος.
141) Η δήλωση των μεταβλητών που χρησιμοποιούνται σε ένα πρόγραμμα είναι υποχρεωτική.
142) Οι λογικές μεταβλητές δέχονται μόνο δύο τιμές.
143) Ο τελεστής MOD χρησιμοποιείται για τον υπολογισμό του πηλίκου μίας διαίρεσης ακεραίων αριθμών.
144) Α_Μ(Χ) είναι η συνάρτηση της ΓΛΩΣΣΑΣ, που υπολογίζει την απόλυτη τιμή του Χ.
145) Α_Μ(Χ) είναι η συνάρτηση της ΓΛΩΣΣΑΣ, που υπολογίζει το ακέραιο μέρος του Χ.
146) Όταν αριθμητικοί και συγκριτικοί τελεστές συνδυάζονται σε μία έκφραση, οι αριθμητικές πράξεις
εκτελούνται πρώτες.
147) Στην αριθμητική έκφραση Α+Β*Γ εκτελείται πρώτα η πρόσθεση και μετά ο πολλαπλασιασμός.
148) Το σύμβολο της εντολής εκχώρησης είναι το "=".
149) Κατά τον υπολογισμό μιας αριθμητικής παράστασης, πρώτα εκτελείται ο πολλαπλασιασμός και στη
συνέχεια η πρόσθεση.
150) Κατά την εκτέλεση του προγράμματος η εντολή ΔΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και περιμένει
την εισαγωγή τιμών από το πληκτρολόγιο.
151) Η ιεραρχία των λογικών τελεστών είναι μικρότερη των αριθμητικών.
152) Η σύγκριση λογικών δεδομένων έχει έννοια μόνο στην περίπτωση του ίσου (=) και του διάφορου(<>).
153) Κάθε εντολή ΑΝ περιλαμβάνει υποχρεωτικά το τμήμα ΑΛΛΙΩΣ.
154) Κάθε τμήμα προγράμματος, που χρησιμοποιεί την εντολή ΕΠΙΛΕΞΕ μπορεί να γραφεί και με εντολές
ΑΝ.
155) Η χρήση εμφωλευμένων ΑΝ είναι καλή προγραμματιστική τακτική.
156) Κάθε εντολή ΑΝ πρέπει να έχει την αντίστοιχη εντολή ΤΕΛΟΣ_ΑΝ.
157) Αν το Α έχει την τιμή 5 και το Β την τιμή 6 τότε η λογική έκφραση Α>5 Ή Α<3 ΚΑΙ Β>5 είναι
ψευδής.
158) Αν το Α έχει την τιμή 10 και το Β την τιμή 20 τότε η έκφραση (Α >8 ΚΑΙ Β<20) Ή (Α>10 Ή
Β=10) είναι αληθής.
159) Η τιμή του βήματος στην εντολή ΓΙΑ πρέπει να αναγράφεται υποχρεωτικά.
160) Κάθε βρόχος, που υλοποιείται με την εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ μπορεί να γραφεί και με χρήση της
εντολής ΓΙΑ.
161) Η ΓΛΩΣΣΑ υποστηρίζει τρεις εντολές επανάληψης, την εντολή ΟΣΟ, την εντολή ΜΕΧΡΙΣ_ΟΤΟΥ και την
εντολή ΓΙΑ.
162) Όταν ένας βρόχος είναι εμφωλευμένος σε άλλο, ο βρόχος που ξεκινάει τελευταίος πρέπει να
ολοκληρώνεται πρώτος.
163) Η είσοδος σε κάθε βρόχο επανάληψης υποχρεωτικά γίνεται από την αρχή του.
164) Δεν μπορεί να χρησιμοποιηθεί η ίδια μεταβλητή ως μετρητής δύο ή περισσότερων βρόχων, που ο ένας
βρίσκεται στο εσωτερικό του άλλου.
165) Οι εντολές που βρίσκονται σε μία επανάληψη ΓΙΑ εκτελούνται τουλάχιστο μία φορά.
166) Κάθε επανάληψη μπορεί να γραφεί με την εντολή ΟΣΟ…ΕΠΑΝΑΛΑΒΕ.
167) Σε περίπτωση εμφωλευμένων βρόχων, ο εσωτερικός πρέπει να περικλείεται ολόκληρος στον
εξωτερικό.
168) Η τιμή του βήματος αναφέρεται υποχρεωτικά σε κάθε εντολή ΓΙΑ.
169) Η δήλωση των πινάκων, που χρησιμοποιούνται σε ένα πρόγραμμα, είναι υποχρεωτική.
170) Τα στοιχεία ενός πίνακα πρέπει να είναι του ιδίου τύπου.
171) Όλοι οι πίνακες δηλώνονται στο τμήμα δήλωσης μεταβλητών του προγράμματος.
172) Ο δείκτης ενός μονοδιάστατου πίνακα πρέπει να είναι πάντα i.
173) Σε ένα μεγάλο και σύνθετο πρόγραμμα, η άσκοπη χρήση μεγάλων πινάκων μπορεί να οδηγήσει ακόμη
και σε αδυναμία εκτέλεσης του προγράμματος.
174) Οι πίνακες πρέπει να χρησιμοποιούνται πάντα όταν αυτό είναι δυνατό.
175) Η χρήση των πινάκων σε ένα πρόγραμμα αυξάνει την απαιτούμενη μνήμη.
176) Σκοπός της συγχώνευσης δύο ταξινομημένων πινάκων είναι η δημιουργία ενός τρίτου ταξινομημένου
πίνακα, που περιέχει τα στοιχεία των δύο πινάκων.
177) Για την ταξινόμηση ενός πίνακα 100 στοιχείων μπορεί να χρησιμοποιηθεί μόνο μία μέθοδος.
178) Η ταξινόμηση των στοιχείων ενός πίνακα πρέπει να γίνεται πάντα πριν από την αναζήτηση.
179) Η δυαδική αναζήτηση είναι πάντα ο καλύτερος τρόπος αναζήτησης
180) Τα ονόματα και τα εισιτήρια 10 θεάτρων μπορούν να αποθηκευτούν σε ένα δισδιάστατο πίνακα.
181) Οι δισδιάστατοι πίνακες είναι οι πίνακες με τη μεγαλύτερη διάσταση, που χειρίζονται οι γλώσσες
προγραμματισμού.
182) Η ταξινόμηση αποτελεί τυπική επεξεργασία σε έναν πίνακα.
183) Η προσθήκη στοιχείων αποτελεί τυπική επεξεργασία σε έναν πίνακα.
184) Ο πολλαπλασιασμός στοιχείων αποτελεί τυπική επεξεργασία σε έναν πίνακα.
185) Η συγχώνευση αποτελεί τυπική επεξεργασία σε έναν πίνακα.
186) Η αναζήτηση αποτελεί τυπική επεξεργασία σε έναν πίνακα.
187) Η επιλογή του καλύτερου αλγόριθμου ταξινόμησης εξαρτάται από τη διάσταση του πίνακα
188) Η επιλογή του καλύτερου αλγόριθμου ταξινόμησης εξαρτάται από το πλήθος των στοιχείων του
πίνακα.
189) Η επιλογή του καλύτερου αλγόριθμου ταξινόμησης εξαρτάται από την αρχική διάταξη των στοιχείων.
190) Αλγόριθμος είναι μια πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε
πεπερασμένο χρόνο, που στοχεύουν στην επίλυση ενός προβλήματος.
191) Η εντολή Αρχή_επανάληψης...Μέχρις_ότου εκτελείται οπωσδήποτε μια φορά.
192) Το τμήμα του αλγορίθμου, που επαναλαμβάνεται, δηλαδή από την εντολή Όσο μέχρι το
τέλος_επανάληψης αποκαλείται βρόχος.
193) Η ολίσθηση προς τα αριστερά ισοδυναμεί με πολλαπλασιασμό επί δύο, ενώ η ολίσθηση προς τα δεξιά
ισοδυναμεί με την ακέραια διαίρεση διά δύο.
194) Δομή Δεδομένων είναι ένα σύνολο αποθηκευμένων δεδομένων, που υφίστανται επεξεργασία από ένα
σύνολο λειτουργιών.
195) Αλγόριθμοι + Δομές δεδομένων = ΠΡΟΓΡΑΜΜΑ.
196) Στη Συγχώνευση (merging), δύο ή περισσότερες δομές συνενώνονται σε μία ενιαία δομή.
197) Οι δυναμικές δομές δεν αποθηκεύονται σε συνεχόμενες θέσεις μνήμης αλλά στηρίζονται στην τεχνική
της λεγόμενης δυναμικής παραχώρησης μνήμης (dynamic memory allocation).
198) Όλες οι σύγχρονες γλώσσες προγραμματισμού προσφέρουν τη δυνατότητα δυναμικής παραχώρησης
μνήμης.
199) H αναφορά στα στοιχεία ενός πίνακα γίνεται με τη χρήση του συμβολικού ονόματος του πίνακα,
ακολουθούμενου από την τιμή ενός ή περισσότερων δεικτών (indexes) σε παρένθεση ή αγκύλη.
200) Δοθέντων των στοιχείων a1,a2,...,an η ταξινόμηση συνίσταται στη μετάθεση (permutation) της
θέσης των στοιχείων, ώστε να τοποθετηθούν σε μία σειρά ak1,ak2,...,akn έτσι ώστε, δοθείσης
μίας συνάρτησης διάταξης (ordering function) f, να ισχύει: f(ak1)≤f(ak2) ≤...≤f(akn).
201) Η σειριακή μέθοδος αναζήτησης είναι η πιο απλή, αλλά και η λιγότερο αποτελεσματική μέθοδος
αναζήτησης.
202) Τα στοιχεία ενός αρχείου ονομάζονται εγγραφές.
203) Κάθε εγγραφή αποτελείται από ένα ή περισσότερα πεδία (fields), που ταυτοποιούν την εγγραφή.
204) Αλφάβητο μίας γλώσσας καλείται το σύνολο των στοιχείων, που χρησιμοποιείται από τη γλώσσα.
205) Τυπικό: Είναι το σύνολο των κανόνων, που ορίζει τις μορφές με τις οποίες μία λέξη είναι αποδεκτή.
206) Η σημασιολογία (Semantics) είναι το σύνολο των κανόνων, που καθορίζει το νόημα των λέξεων και,
κατ’ επέκταση, των εκφράσεων και προτάσεων, που χρησιμοποιούνται σε μία γλώσσα.
207) Το Λεξιλόγιο αποτελείται από ένα υποσύνολο όλων των ακολουθιών, που δημιουργούνται από τα
στοιχεία του αλφαβήτου, τις λέξεις, που είναι δεκτές από τη γλώσσα.
208) Ένα λογικό λάθος, δεν έχει να κάνει με την λανθασμένη σύνταξη μιας εντολής.
209) Ο διερμηνευτής διαβάζει μία προς μία τις εντολές του αρχικού προγράμματος και για καθεμία εκτελεί
αμέσως μια ισοδύναμη ακολουθία εντολών μηχανής.
210) Το αρχικό πρόγραμμα λέγεται πηγαίο πρόγραμμα.
211) Το πρόγραμμα, που παράγεται από το μεταγλωττιστή λέγεται αντικείμενο πρόγραμμα.
212) Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου προγράμματος.
213) Το αποτέλεσμα του συνδέτη είναι η παραγωγή του εκτελέσιμου προγράμματος (executable), το οποίο
είναι το τελικό πρόγραμμα, που εκτελείται από τον υπολογιστή.
214) Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο στην περίπτωση, που το αρχικό
πρόγραμμα δεν περιέχει συντακτικά λάθη.
215) Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο στην περίπτωση, που το αρχικό
πρόγραμμα δεν περιέχει λογικά λάθη.
216) Τα λάθη του προγράμματος είναι γενικά δύο ειδών, λογικά και συντακτικά.
217) Κάθε γλώσσα προσδιορίζεται από το αλφάβητό της, το λεξιλόγιό της, τη γραμματική της και τη
σημασιολογία της.
218) Η ιεραρχική σχεδίαση ή ιεραρχικός προγραμματισμός χρησιμοποιεί τη στρατηγική της συνεχούς
διαίρεσης του προβλήματος σε υποπροβλήματα.
219) Tα σύγχρονα ολοκληρωμένα προγραμματιστικά περιβάλλοντα δεν παρέχουν απλώς ένα μεταφραστή
μιας γλώσσας προγραμματισμού. Περιέχουν όλα τα προγράμματα και τα εργαλεία, που απαιτούνται
και βοηθούν τη συγγραφή, την εκτέλεση και κύρια τη διόρθωση των προγραμμάτων.
220) Οι ακέραιοι μπορούν να είναι θετικοί, αρνητικοί ή μηδέν.
221) Μία μεταβλητή ή σταθερά, μπορεί το όνομά της να ξεκινάει με αριθμό.
222) Μία μεταβλητή ή σταθερά, μπορεί το όνομά της να ξεκινάει με «».
223) Το όνομα μεταβλητής μπάμπης_σουβλακια είναι αποδεκτό από την ΓΛΩΣΣΑ.
224) Το όνομα μεταβλητής ΠΡΟΑΣΤΙΑΚΟΣ ΣΙΔΗΡΟΔΡΟΜΟΣ είναι αποδεκτό από την ΓΛΩΣΣΑ.
225) Η συνάρτηση Α_Τ(x), υπολογίζει την απόλυτη τιμή του x.
226) Η συνάρτηση Α_Μ(x), υπολογίζει την απόλυτη τιμή του x.
227) Η συνάρτηση ΛΟΓ(x), υπολογίζει τον λογάριθμο του x.
228) Η συνάρτηση Ε(x), υπολογίζει το ex.
229) Η διαίρεση έχει την μεγαλύτερη ιεραρχία.
230) Ο τελεστής div χρησιμοποιείται για τον υπολογισμό του πηλίκου μιας διαίρεσης ακεραίων αριθμών.
231) Ο τελεστής mod χρησιμοποιείται για τον υπολογισμό του υπόλοιπο μιας διαίρεσης ακεραίων αριθμών.
232) Μπορούμε να γράψουμε σε μία γραμμή πάνω από μία εντολή.
233) Τα δεδομένα στην πραγματικότητα καταχωρούνται στην μνήμη RAM του υπολογιστή.
234) Σε μια εντολή εκχώρησης η μεταβλητή και η έκφραση πρέπει να είναι του ιδίου τύπου.
235) Πάντα πρέπει να χρησιμοποιούνται ζεύγη παρενθέσεων. Διαφορετικός αριθμός αριστερών από δεξιές
παρενθέσεις στην ίδια έκφραση είναι ένα από τα πιο συνηθισμένα λάθη.
236) Στην ουρά, ό,τι εισέρχεται τελευταίο (Last in), εξέρχεται πρώτο (First out).
237) Τοποθέτηση στοιχείου στην κορυφή μιας στοίβας ονομάζεται ώθηση(push).
238) Απομάκρυνση στοιχείου από την κορυφή ονομάζεται απώθηση (pop).
239) Η διαδικασία της ώθησης πρέπει οπωσδήποτε να ελέγχει, αν η στοίβα είναι γεμάτη, οπότε λέγεται ότι
συμβαίνει υπερχείλιση (overflow) της στοίβας.
240) Η δομή στοίβα μπορεί να υλοποιηθεί με έναν πίνακα και ένα δείκτη στο στοιχείο της κορυφής της
στοίβας (μια βοηθητική μεταβλητή).
241) Στην ουρά, ό,τι εισέρχεται πρώτο (First in), εξέρχεται πρώτο(First out).
242) Στην στοίβα, ό,τι εισέρχεται τελευταίο(Last in), εξέρχεται πρώτο(First out).
243) Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως
ένα σύνολο από απλούστερα τμήματα προγραμμάτων.
244) Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.
245) Γενικά κάθε υποπρόγραμμα πρέπει να εκτελεί μόνο μία λειτουργία.
246) Μία παράμετρος είναι μία μεταβλητή, που επιτρέπει το πέρασμα της τιμής της από ένα τμήμα
προγράμματος σε ένα άλλο.
247) Η διαδικασία είναι ένας τύπος υποπρογράμματος, που μπορεί να εκτελεί όλες τις λειτουργίες ενός
προγράμματος.
248) Η απεριόριστη εμβέλεια υποχρεώνει όλες τις μεταβλητές, που χρησιμοποιούνται σε ένα τμήμα
προγράμματος, να δηλώνονται σε αυτό το τμήμα.
249) Αναδρομή ονομάζεται η δυνατότητα ενός υποπρογράμματος να καλεί τον εαυτό του.
250) Η χρήση δομημένου προγραμματισμού, επεκτείνει τις δυνατότητες των γλωσσών προγραμματισμού.
251) Η χρήση τμηματικού προγραμματισμού, διευκολύνει την ανάπτυξη του αλγορίθμου και του
αντιστοίχου προγράμματος.

You might also like