𝄜 Εκσφαλμάτωση λογικών λαθών σε πίνακες

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

🧑‍💻 Παράδειγμα 8 – Εκσφαλμάτωση λογικού λάθους σε πρόγραμμα με πίνακα

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

💻 Κώδικας σε ΓΛΩΣΣΑ [5.17]

ΠΡΟΓΡΑΜΜΑ ΕΣΟΔΑ_ΚΑΤΑΣΤΗΜΑΤΟΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: ΕΣΟΔΑ[6]
  ΑΚΕΡΑΙΕΣ: Ι
ΑΡΧΗ
! Επανάληψη ανάγνωσης εσόδων
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 6
    ΓΡΑΨΕ "Δώσε τα έσοδα του ", Ι, "ου μήνα"
    ΔΙΑΒΑΣΕ ΕΣΟΔΑ[Ι]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
! Επανάληψη ελέγχου αυξητικής τάσης
  ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 6
    ΑΝ ΕΣΟΔΑ[Ι] <= ΕΣΟΔΑ[Ι + 1] ΤΟΤΕ
      ΓΡΑΨΕ "Ο ", Ι, "ος μήνας ΑΥΞΗΣΗ"
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

🔍 Πίνακας εκτέλεσης και αποτελεσμάτων

IΕΣΟΔΑ[Ι]ΕΣΟΔΑ[Ι+1]ΕΣΟΔΑ[Ι] <= ΕΣΟΔΑ[Ι+1]Έξοδος προγράμματοςΑναμενόμενο αποτέλεσμαΟρθότητα εξόδου
120001800ΨευδήςΟ 2ος μήνας ΑΥΞΗΣΗ3ος μήνας ΑΥΞΗΣΗΣωστό
218002100ΑληθήςΟ 2ος μήνας ΑΥΞΗΣΗ3ος μήνας ΑΥΞΗΣΗΛάθος
321002100ΑληθήςΟ 3ος μήνας ΑΥΞΗΣΗ3ος μήνας ΑΥΞΗΣΗΛάθος
421002000ΨευδήςΟ 5ος μήνας ΑΥΞΗΣΗ5ος μήνας ΑΥΞΗΣΗΛάθος
52000?Αντικανονικός τερματισμόςΑντικανονικός τερματισμός

🚨 Προτεινόμενες διορθώσεις

  • Στη δεύτερη επανάληψη, το μήνυμα που εμφανίζεται αναφέρεται σε λάθος μήνα. Η εντολή:

    ΓΡΑΨΕ "Ο ", Ι, "ος μήνας ΑΥΞΗΣΗ"

    πρέπει να γίνει:

    ΓΡΑΨΕ "Ο ", Ι + 1, "ος μήνας ΑΥΞΗΣΗ"
  • Στην τρίτη και πέμπτη επανάληψη, η σύγκριση των εσόδων είναι ίση, άρα δεν υπάρχει αύξηση. Η συνθήκη:

    ΕΣΟΔΑ[Ι] <= ΕΣΟΔΑ[Ι + 1]

    πρέπει να γίνει:

    ΕΣΟΔΑ[Ι] < ΕΣΟΔΑ[Ι + 1]
  • Στην έκτη επανάληψη, το πρόγραμμα προσπαθεί να προσπελάσει την τιμή ΕΣΟΔΑ[7] που είναι εκτός των ορίων του πίνακα. Για να διορθωθεί αυτό, η επανάληψη πρέπει να γίνει μέχρι τον 5ο μήνα:

    ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 5