Εκσφαλμάτωση (Debugging)
Μάθημα 3: Τεχνικές Εκσφαλμάτωσης (Debugging)
Διάρκεια: 45 Λεπτά
Στόχος: Να γίνουμε "ντετέκτιβ" κώδικα και να βρίσκουμε λάθη που δεν εντοπίζει ο υπολογιστής.
Η ιστορία της "Νυχτοπεταλούδας"
Ήξερες ότι ο όρος "Bug" (ζουζούνι) βγήκε κυριολεκτικά από ένα έντομο; Το 1947, η Grace Hopper βρήκε μια νυχτοπεταλούδα κολλημένη μέσα σε έναν υπολογιστή Mark II, η οποία μπλόκαρε τη λειτουργία του!
1. Οι 3 Εχθροί του Προγραμματιστή
Δεν είναι όλα τα λάθη ίδια. Κάποια τα βρίσκει ο υπολογιστής αμέσως, και κάποια μπορεί να μας παιδεύουν για μέρες.
| Είδος Λάθους | Τι συμβαίνει; | Παράδειγμα |
|---|---|---|
| Συντακτικό (Syntax Error) |
Παραβιάζουμε τη γραμματική της γλώσσας. Ο κώδικας δεν τρέχει καν. | ΓΡΑΨΕ "Γεια(Λείπουν τα εισαγωγικά) |
| Εκτέλεσης (Runtime Error) |
Ο κώδικας ξεκινάει, αλλά κρασάρει ξαφνικά σε μια εντολή. | X <- 5 / 0(Αδύνατη πράξη) |
| Λογικό (Logical Error) |
Το πιο επικίνδυνο! Το πρόγραμμα τρέχει κανονικά, αλλά βγάζει λάθος αποτέλεσμα. | MO <- A + B / 2(Λείπουν παρενθέσεις) |
Checkpoint #1: Βρες τα Συντακτικά Λάθη
Ο παρακάτω αλγόριθμος είναι γεμάτος ορθογραφικά και συντακτικά λάθη. Μπορείς να τα εντοπίσεις;
Κάνε κλικ πάνω στις λέξεις που πιστεύεις ότι είναι λάθος.
2. Τα Όπλα μας: Πίνακας Τιμών &... Πάπιες;
Α. Ο Πίνακας Τιμών (Trace Table)
Για να βρούμε λογικά λάθη, πρέπει να γίνουμε εμείς ο υπολογιστής ("Play Computer").
- Φτιάχνουμε έναν πίνακα με στήλες για κάθε μεταβλητή.
- Εκτελούμε μία-μία τις εντολές.
- Κάθε φορά που αλλάζει μια μεταβλητή, γράφουμε τη νέα τιμή από κάτω.
Rubber Duck Debugging
Οι προγραμματιστές συχνά εξηγούν τον κώδικά τους, γραμμή-γραμμή, σε ένα... πλαστικό παπάκι! Μιλώντας φωναχτά, συχνά καταλαβαίνεις πού έχεις κάνει λάθος.
Checkpoint #2: Συμπλήρωσε τον Πίνακα
Δίνεται ο παρακάτω αλγόριθμος που υπολογίζει ένα άθροισμα.
x <- 2 Για i από 1 μέχρι 3 x <- x + 2 Τέλος_επανάληψης Εμφάνισε x
Συμπλήρωσε τις τιμές των μεταβλητών i και x όπως θα εξελίσσονται σε κάθε βήμα.
Checkpoint #2 (B): Drag and Drop
Τέλος Ενότητας!
Τώρα ξέρεις να χειρίζεσαι Στοίβες, Ουρές και να διορθώνεις Bugs. Είσαι έτοιμος για προγραμματισμό!
