🔍 Εκσφαλμάτωση λογικών λαθών στις δομές επανάληψης
Στις δομές επανάληψης μπορεί να παρουσιαστούν λογικά λάθη που σχετίζονται με:
- Τη συνθήκη επανάληψης ή τερματισμού,
- Την αρχικοποίηση της συνθήκης,
- Την ενημέρωση της συνθήκης εντός του βρόχου,
- Τις εντολές που περιλαμβάνονται εντός του βρόχου.
🧑🏫 Παράδειγμα 6 – Εκσφαλμάτωση λογικού λάθους σε δομή επανάληψης
Η εκφώνηση περιγράφει ένα πρόγραμμα που διαβάζει έναν βαθμό τετραμήνου σε εικοσάβαθμη κλίμακα και ελέγχει αν είναι αποδεκτή τιμή.
💻 Κώδικας σε ΓΛΩΣΣΑ [5.11]
ΠΡΟΓΡΑΜΜΑ Ανάγνωση_βαθμολογίας ΜΕΤΑΒΛΗΤΕΣ ΑΚΕΡΑΙΕΣ: Βαθμός ΑΡΧΗ ΓΡΑΨΕ "Δώσε βαθμό στην εικοσάβαθμη κλίμακα" ΔΙΑΒΑΣΕ Βαθμός ΟΣΟ Βαθμός < 0 ΚΑΙ Βαθμός > 20 ΕΠΑΝΑΛΑΒΕ ΓΡΑΨΕ "Μη αποδεκτή τιμή" ΓΡΑΨΕ "Δώσε βαθμό στην εικοσάβαθμη κλίμακα" ΔΙΑΒΑΣΕ Βαθμός ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ "Καταχωρήθηκε ο βαθμός της εικοσάβαθμης κλίμακας ", Βαθμός ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
📝 Απάντηση
Δοκιμαστική εκτέλεση:
- Αν δοθεί η τιμή -9 από το πληκτρολόγιο, θα εμφανιστεί το μήνυμα: «Καταχωρήθηκε ο βαθμός της εικοσάβαθμης κλίμακας -9» και το πρόγραμμα θα τερματιστεί λανθασμένα.
Έλεγχος ορθότητας αποτελέσματος:
- Η τιμή -9 δεν είναι αποδεκτή και το μήνυμα που εμφανίζεται είναι λανθασμένο.
- Το λάθος βρίσκεται στη συνθήκη
ΟΣΟ Βαθμός < 0 ΚΑΙ Βαθμός > 20. - Η συνθήκη επανάληψης δεν θα εκτελεστεί για καμία τιμή της μεταβλητής Βαθμός, επειδή κανένας αριθμός μικρότερος του μηδέν δεν είναι ταυτόχρονα μεγαλύτερος του είκοσι.
🔧 Προτεινόμενη Διόρθωση
Η συνθήκη Βαθμός < 0 ΚΑΙ Βαθμός > 20 πρέπει να αντικατασταθεί με τη συνθήκη Βαθμός < 0 Ή Βαθμός > 20.
🧑💻 Παράδειγμα 7 – Εκσφαλμάτωση λογικού λάθους σε δομή επανάληψης
Η εκφώνηση δίνει την ανάπτυξη ενός προγράμματος που διαβάζει αριθμούς από το πληκτρολόγιο και υπολογίζει το γινόμενο τους, εκτός από το 0, το οποίο δεν πρέπει να συμπεριλαμβάνεται στον υπολογισμό.
💻 Κώδικας σε ΓΛΩΣΣΑ [5.12]
ΠΡΟΓΡΑΜΜΑ Γινόμενο_μη_μηδενικών_αριθμών ΜΕΤΑΒΛΗΤΕΣ ΠΡΑΓΜΑΤΙΚΕΣ: Χ, Γινόμενο ΑΡΧΗ Γινόμενο <- 1 ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ "Δώσε μη μηδενική τιμή" ΔΙΑΒΑΣΕ Χ Γινόμενο <- Χ*Γινόμενο ΜΕΧΡΙΣ_ΟΤΟΥ Χ = 0 ΓΡΑΨΕ "Γινόμενο:", Γινόμενο ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ
🔍 Ανάλυση του Προβλήματος
- Αν δοθούν από το πληκτρολόγιο οι τιμές 4, 3 και 0, εμφανίζεται το γινόμενο = 0, ενώ το σωστό αποτέλεσμα πρέπει να είναι 12.
- Το πρόβλημα εμφανίζεται επειδή το 0 υπολογίζεται στον γινόμενο και μηδενίζει το τελικό αποτέλεσμα.
Το λογικό λάθος μπορεί να διορθωθεί με τη σωστή χρήση της δομής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ και τον κατάλληλο έλεγχο για την τιμή 0 που δεν πρέπει να υπολογίζεται στον γινόμενο.
💡 Κώδικας με διορθώσεις [5.13]
ΓΡΑΨΕ "Δώσε μη μηδενική τιμή" ΔΙΑΒΑΣΕ Χ ΟΣΟ Χ <> 0 ΕΠΑΝΑΛΑΒΕ Γινόμενο <- Χ*Γινόμενο ΓΡΑΨΕ "Δώσε μη μηδενική τιμή" ΔΙΑΒΑΣΕ Χ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Η επιλογή της δομής επανάληψης ΟΣΟ...ΕΠΑΝΑΛΑΒΕ λύνει το πρόβλημα, αλλά πρέπει να ληφθεί υπόψη η σωστή αξιοποίησή της. Πρέπει να βεβαιωθούμε ότι δεν περιλαμβάνουμε τον αριθμό 0 στον υπολογισμό του γινομένου.
✔️ Σύσταση για Δομή ΜΕΧΡΙΣ_ΟΤΟΥ
Η δομή ΜΕΧΡΙΣ_ΟΤΟΥ μπορεί να χρησιμοποιηθεί αντί της ΟΣΟ και να συμπεριλάβει μια βοηθητική συνθήκη επιλογής για αποφυγή λαθών.
💻 Κώδικας με δομή ΜΕΧΡΙΣ_ΟΤΟΥ [5.15]
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ΓΡΑΨΕ "Δώσε μη μηδενική τιμή" ΔΙΑΒΑΣΕ Χ ΑΝ Χ <> 0 ΤΟΤΕ Γινόμενο <- Χ*Γινόμενο ΤΕΛΟΣ_ΑΝ ΜΕΧΡΙΣ_ΟΤΟΥ Χ = 0
Κατά την εκσφαλμάτωση των δομών επανάληψης, να δίνετε προσοχή στις συνθήκες τερματισμού, στη σειρά εκτέλεσης των εντολών και στον έλεγχο του τελευταίου κύκλου της επανάληψης.