ΤΕΣΤ (ΑΣΚΗΣΕΙΣ) ONLINE
98 Tests / Διαγωνίσματα

Κεφάλαιο 19.2 – Σελίδα 117-118 – ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ΄ ΛΥΚΕΙΟΥ – Απαντήσεις – Λύσεις

Εκσφαλμάτωση — Λάθη Αντικανονικού Τερματισμού

Παράδειγμα 2 (σελ. 117)

Στο πρόγραμμα «Μέσος_όρος_ύψους» (κώδικας σε ΓΛΩΣΣΑ [5.4]), τι θα συμβεί αν ο χρήστης δώσει την τιμή -1 κατά την πρώτη ανάγνωση του ύψους; Εντοπίστε το λάθος και προτείνετε διόρθωση.

Σκέψη / Μεθοδολογία: Παρακολουθούμε τη ροή εκτέλεσης: αν η πρώτη τιμή είναι αρνητική, ο βρόχος ΟΣΟ ύψος > 0 δεν εκτελείται καθόλου, άρα το πλήθος παραμένει 0. Ελέγχουμε τι συμβαίνει στη διαίρεση Σ/πλήθος.

Λύση:

Παρατηρούμε ότι με ύψος=-1 η συνθήκη «ύψος > 0» είναι ψευδής από την πρώτη φορά, άρα ο βρόχος δεν εκτελείται ποτέ. Η μεταβλητή πλήθος παραμένει 0 (η αρχική της τιμή). Στην εντολή ΜΟ <- Σ/πλήθος επιχειρείται διαίρεση με το μηδέν, οπότε το πρόγραμμα τερματίζει αντικανονικά. Προτείνουμε έλεγχο της τιμής του πλήθους πριν τη διαίρεση.

Απάντηση: Αν δοθεί -1 στην πρώτη ανάγνωση, ο βρόχος ΟΣΟ ύψος>0 δεν εκτελείται ούτε μία φορά, οπότε πλήθος=0. Στην εντολή ΜΟ <- Σ/πλήθος γίνεται διαίρεση με το μηδέν και το πρόγραμμα τερματίζει αντικανονικά — παραβιάστηκε το κριτήριο καθοριστικότητας, αφού δεν ελέγχθηκε αν ο παρονομαστής μπορεί να είναι μηδέν. Διόρθωση: πριν τη διαίρεση, ΑΝ πλήθος = 0 ΤΟΤΕ εμφανίζουμε μήνυμα «Δεν δόθηκαν στοιχεία μελών», ΑΛΛΙΩΣ υπολογίζουμε κανονικά τον μέσο όρο.

Πρόσεξε:

  • Πριν από κάθε διαίρεση πρέπει να ελέγχεται αν ο παρονομαστής μπορεί να γίνει μηδέν.
  • Ένας βρόχος ΟΣΟ...ΕΠΑΝΑΛΑΒΕ μπορεί να μην εκτελεστεί ούτε μία φορά — πρέπει πάντα να εξετάζεται αυτό το σενάριο.