Περιεχόμενα

Κεφάλαιο 1. 1

Κεφάλαιο 1.1. 1

Κεφάλαιο 1.1.1 Ορισμός Στοίβας. 1

Κεφάλαιο 1.1.2 Πράξεις Στοίβας. 1

Κεφάλαιο 1.1.3 Ορισμός Ουράς. 1

Κεφάλαιο 1.1.4 Πράξεις Ουράς. 1

Κεφάλαιο 1.2. 1

Κεφάλαιο 1.2.1 Απλή Συνδεδεμένη Λίστα. 1

Κεφάλαιο 1.2.2 Διπλά Συνδεδεμένη Λίστα. 1

Κεφάλαιο 1.2.3 Πλεονεκτήματα – Μειονεκτήματα Διπλά Συνδεδεμένης Λίστας. 1

Κεφάλαιο 1.2.4 Διαφορές Πίνακα - Λίστες. 1

Κεφάλαιο 1.2.5 Πλεονεκτήματα Λιστών έναντι Πινάκων. 1

Κεφάλαιο 1.2.6 Μειονεκτήματα  Λιστών έναντι Πινάκων. 1

Κεφάλαιο 1.2.6 Βασικές Πράξεις  Λιστών. 1

Κεφάλαιο 1.3. 1

Κεφάλαιο 1.3.1 Ορισμός Δέντρου. 1

Κεφάλαιο 1.3.2 Διατεταγμένο Δένδρο (Σ/Λ). 1

Κεφάλαιο 1.3.3 Μη-Γραμμική Δομή (Σ/Λ). 1

Κεφάλαιο 1.3.4 Δένδρο Απόφασης. 1

Κεφάλαιο 1.3.5 Δυαδικό Δένδρο. 1

Κεφάλαιο 1.3.6 Δυαδικό Δένδρο Αναζήτησης. 1

Κεφάλαιο 1.3.7 Πλεονεκτήματα Δυαδικού Δένδρου  Αναζήτησης. 1

Κεφάλαιο 1.3.8 Ορισμός Γράφος. 1

Κεφάλαιο 1.3.9 Κατευθυνόμενος – μη κατευθυνόμενος γράφος. 1

Κεφάλαιο 1.4. 1

Κεφάλαιο 1.4. 1

Κεφάλαιο 1.4.1 Διαίρει και Βασίλευε. 1

Κεφάλαιο 1.4.2 Δυαδικό Δένδρο Αναζήτησης. 1

Κεφάλαιο 1.4.3 Δυαδική Αναζήτηση. 1

Κεφάλαιο 4. 1

Κεφάλαιο 4.1. 1

Κεφάλαιο 4.1.1 Αντικειμενοστραφής προγραμματισμός. 1

Κεφάλαιο 4.2. 1

Κεφάλαιο 4.2.1 Αντικειμενοστραφές πρόγραμμα. 1

Κεφάλαιο 4.3. 1

Κεφάλαιο 4.3.1 Ενθυλάκωση. 1

Κεφάλαιο 4.3.2 Κλάση. 1

Κεφάλαιο 4.4. 1

Κεφάλαιο 4.4.1 Κληρονομικότητα. 1

Κεφάλαιο 4.5. 1

Κεφάλαιο 4.5.1 Πολυμορφισμός. 1

Κεφάλαιο 5. 1

Κεφάλαιο 5.1. 1

Κεφάλαιο 5.1.1 Ποιες κατηγορίες λαθών έχουμε. 1

Κεφάλαιο 5.1.2 Συντακτικά λάθη. 1

Κεφάλαιο 5.1.2 Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος. 1

Κεφάλαιο 5.1.3.Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος. 1

Κεφάλαιο 5.2. 1

Κεφάλαιο 5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής. 1

Κεφάλαιο 5.2.2 Τι προσέχω στην εκσφαλμάτωση λογικών λαθών στις δομές επιλογής. 1

Κεφάλαιο 5.2.3 Τι προσέχω στην εκσφαλμάτωση λογικών λαθών στους πίνακες. 1

Κεφάλαιο 5.2.4 Τι προσέχω στην εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα. 1

Κεφάλαιο 5.2.5 Μαύρο Κουτί. 1

 

Κεφάλαιο 1

Κεφάλαιο 1.1

Κεφάλαιο 1.1.1 Ορισμός Στοίβας

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

Κεφάλαιο 1.1.2 Πράξεις Στοίβας

Οι κύριες λειτουργίες σε μια στοίβα είναι δύο:

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

    

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

Κεφάλαιο 1.1.3 Ορισμός Ουράς

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

Κεφάλαιο 1.1.4 Πράξεις Ουράς

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

·         Η εισαγωγή  στοιχείου στο πίσω άκρο της ουράς. 

·         Η εξαγωγή στοιχείου από το εμπρός άκρο της ουράς

Κεφάλαιο 1.2

Κεφάλαιο 1.2.1 Απλή Συνδεδεμένη Λίστα

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

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

Εισαγωγή Διαγραφή κόμβου στη λίστα  με δικά μας λόγια.

Κεφάλαιο 1.2.2 Διπλά Συνδεδεμένη Λίστα

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

Κεφάλαιο 1.2.3 Πλεονεκτήματα – Μειονεκτήματα Διπλά Συνδεδεμένης Λίστας.

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

Κεφάλαιο 1.2.4 Διαφορές Πίνακα - Λίστες

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

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

• Οι κόμβοι της λίστας αποθηκεύονται σε μη συνεχόμενες θέσεις μνήμης σε αντιδιαστολή με τους πίνακες, όπου τα στοιχεία αποθηκεύονται σε συνεχόμενες θέσεις μνήμης

Κεφάλαιο 1.2.5 Πλεονεκτήματα Λιστών έναντι Πινάκων

• Το δυναμικό τους μέγεθος,

 • η ευκολία εισαγωγής και διαγραφής από οποιοδήποτε μέρος της λίστας, καθώς και

• η μη αναγκαιότητα δήλωσης του μεγέθους τους.

Κεφάλαιο 1.2.6 Μειονεκτήματα  Λιστών έναντι Πινάκων

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

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

Κεφάλαιο 1.2.6 Βασικές Πράξεις  Λιστών

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

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

• Έλεγχος για το αν η λίστα είναι κενή.

 • Αναζήτηση κόμβου για την εύρεση συγκεκριμένου στοιχείου.

• Διάσχιση της λίστας και προσπέλαση των στοιχείων της (π.χ. εκτύπωση των δεδομένων που περιέχονται σε όλους τους κόμβους της λίστας)

Κεφάλαιο 1.3

 

Κεφάλαιο 1.3.1 Ορισμός Δέντρου

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

• Υπάρχει ένας ξεχωριστός κόμβος που ονομάζεται ρίζα. Αυτός είναι ένας κόμβος χωρίς γονέα.

• Για κάθε κόμβο c, εκτός από τη ρίζα, υπάρχει μόνο μια ακμή που καταλήγει στον κόμβο αυτόν ξεκινώντας από κάποιον άλλον κόμβο p. Ο κόμβος p ονομάζεται γονέας του c και ο κόμβος c παιδί του p.

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

Κεφάλαιο 1.3.2 Διατεταγμένο Δένδρο (Σ/Λ)

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

Κεφάλαιο 1.3.3 Μη-Γραμμική Δομή (Σ/Λ)

Τα δένδρα είναι μία μη-γραμμική ευέλικτη δομή δεδομένων

Κεφάλαιο 1.3.4 Δένδρο Απόφασης

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

Κεφάλαιο 1.3.5 Δυαδικό Δένδρο

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

Κεφάλαιο 1.3.6 Δυαδικό Δένδρο Αναζήτησης

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

Κεφάλαιο 1.3.7 Πλεονεκτήματα Δυαδικού Δένδρου  Αναζήτησης

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

Κεφάλαιο 1.3.8 Ορισμός Γράφος

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

Κεφάλαιο 1.3.9 Κατευθυνόμενος – μη κατευθυνόμενος γράφος

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

Κεφάλαιο 1.4

Κεφάλαιο 1.4

Κεφάλαιο 1.4.1 Διαίρει και Βασίλευε

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

Κεφάλαιο 1.4.2 Δυαδικό Δένδρο Αναζήτησης

Μέγιστος αριθμός αναζητήσεων σε δυαδική αναζήτηση log2n + 1

Κεφάλαιο 1.4.3 Δυαδική Αναζήτηση

ΔΙΑΒΑΣΕ στοιχείο

αρχή←1

τέλος←100

θέση <– 0

βρέθηκε <– ΨΕΥΔΗΣ

 ΟΣΟ (αρχή <= τέλος) ΚΑΙ (βρέθηκε = ΨΕΥΔΗΣ) ΕΠΑΝΑΛΑΒΕ

    μέση ←(αρχή + τέλος) DIV 2

      ΑΝ A[μέση] = στοιχείο ΤΟΤΕ

        θέση ← μέση

        βρέθηκε ←ΑΛΗΘΗΣ

      ΑΛΛΙΩΣ _ΑΝ Α[μέση] < στοιχείο ΤΟΤΕ

        Αρχή ←μέση + 1

      ΑΛΛΙΩΣ

        τέλος←μέση-1

ΤΕΛΟΣ_ΑΝ

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

ΑΝ βρέθηκε = ΑΛΗΘΗΣ ΤΟΤΕ

ΓΡΑΨΕ ‘Το προς αναζήτηση στοιχείο βρέθηκε στη θέση:’, θέση

ΑΛΛΙΩΣ

ΓΡΑΨΕ ‘ Το προς αναζήτηση στοιχείο δεν βρέθηκε’

ΤΕΛΟΣ_ΑΝ

Κεφάλαιο 4

Κεφάλαιο 4.1

Κεφάλαιο 4.1.1 Αντικειμενοστραφής προγραμματισμός

Αντικειμενοστραφής προγραμματισμός (object-oriented programming) ή αντικειμενοστραφής σχεδίαση είναι μια μεθοδολογία ανάπτυξης εφαρμογών η οποία στηρίζεται σε αυτόνομες προγραμματιστικές οντότητες με δική τους ταυτότητα και συμπεριφορά. Οι οντότητες αυτές καλούνται αντικείμενα (objects), αντιστοιχούν σε φυσικές οντότητες ή έννοιες του φυσικού μας κόσμου, και δομούνται με βάση δεδομένα (ιδιότητες) που προσδιορίζουν την υπόστασή τους και ενέργειες (κανόνες συμπεριφοράς) που εφαρμόζονται πάνω στα δεδομένα. Σε μια εφαρμογή, ένα αντικείμενο είναι ο ομαδοποιημένος συνδυασμός δεδομένων και κώδικα, τα οποία έχουμε τη δυνατότητα να χειριστούμε ενιαία. δεδομένα αποτελούν τα χαρακτηριστικά ενός αντικειμένου και αναφέρονται ως ιδιότητες (properties) ενώ οι ενέργειες καθορίζουν τη συμπεριφορά του. Οι ενέργειες στον αντικειμενοστραφή προγραμματισμό αναφέρονται και ως μέθοδοι (methods).

Κεφάλαιο 4.2

Κεφάλαιο 4.2.1 Αντικειμενοστραφές πρόγραμμα

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

Κεφάλαιο 4.3

Κεφάλαιο 4.3.1 Ενθυλάκωση

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

Κεφάλαιο 4.3.2 Κλάση

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

Κεφάλαιο 4.4

Κεφάλαιο 4.4.1 Κληρονομικότητα

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

Κεφάλαιο 4.5

Κεφάλαιο 4.5.1 Πολυμορφισμός

Πολυμορφισμός είναι μια ιδιότητα του αντικειμενοστραφούς προγραμματισμού με την οποία μια λειτουργία μπορεί να υλοποιείται με πολλούς διαφορετικούς τρόπους.

Κεφάλαιο 5

Κεφάλαιο 5.1

Κεφάλαιο 5.1.1 Ποιες κατηγορίες λαθών έχουμε

Λάθη κατά την υλοποίηση  (Συντακτικά λάθη)

Λάθη κατά την εκτέλεση (Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος)

Λογικά λάθη (Λογικά λάθη που παράγουν λανθασμένα αποτελέσματα)

Κεφάλαιο 5.1.2 Συντακτικά λάθη

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

Κεφάλαιο 5.1.2 Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος

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

Κεφάλαιο 5.1.3.Λάθη που οδηγούν σε αντικανονικό τερματισμό του προγράμματος

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

Κεφάλαιο 5.2

Κεφάλαιο 5.2.1 Εκσφαλμάτωση λογικών λαθών στις δομές επιλογής

Σε μια δομή επιλογής μπορεί να εμφανιστούν λογικά λάθη που σχετίζονται με:

• τη συνθήκη ή τις συνθήκες

• τις ομάδες εντολών που εκτελούνται όταν μια συνθήκη είναι αληθής ή ψευδής.

Κεφάλαιο 5.2.2 Τι προσέχω στην εκσφαλμάτωση λογικών λαθών στις δομές επιλογής

· στους συγκριτικούς και τους λογικούς τελεστές των συνθηκών επανάληψης ή τερματισμού

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

• στην αλληλουχία των εντολών του βρόχου και στη σειρά εκτέλεσής τους

• στο κριτήριο της περατότητας

• στην πρώτη επανάληψη και στην περίπτωση που ο βρόχος επανάληψης δεν πρέπει να

εκτελεστεί ούτε μία φορά

• στην τελευταία επανάληψη

Κεφάλαιο 5.2.3 Τι προσέχω στην εκσφαλμάτωση λογικών λαθών στους πίνακες

• στο μέγεθος των πινάκων κατά τη δήλωσή τους,

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

• στη μη υπέρβαση των ορίων του πίνακα.

Κεφάλαιο 5.2.4 Τι προσέχω στην εκσφαλμάτωση λογικών λαθών στα υποπρογράμματα

• την κλήση του υποπρογράμματος και το πέρασμα των παραμέτρων

• τα λοιπά λογικά λάθη που εμφανίζονται και στα προγράμματα.

Κεφάλαιο 5.2.5 Μαύρο Κουτί.

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

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

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

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