Ο έλεγχος εγκυρότητας δεδομένων εξασφαλίζει ότι ένα πρόγραμμα δεν θα συνεχίσει την εκτέλεσή του με λανθασμένα δεδομένα. Αν, για παράδειγμα, μια μεταβλητή εκφράζει ποσοστό, πρέπει να δεχτεί μόνο τιμές από 0 έως 100. Αν ο χρήστης πληκτρολογήσει το 125 ή το -8, το πρόγραμμα οφείλει να ζητήσει ξανά την τιμή.

Στη ΓΛΩΣΣΑ, η καταλληλότερη δομή για αυτόν τον έλεγχο είναι συνήθως η ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ...ΜΕΧΡΙΣ_ΟΤΟΥ, επειδή η τιμή πρέπει να διαβαστεί τουλάχιστον μία φορά και, αν είναι λανθασμένη, η ανάγνωση πρέπει να επαναληφθεί.

Στο άρθρο θα μάθεις:

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

1. Τι σημαίνει έλεγχος εγκυρότητας δεδομένων

Έλεγχος εγκυρότητας σημαίνει ότι μια μεταβλητή που διαβάζεται από το πληκτρολόγιο επιτρέπεται να πάρει μόνο τιμές από ένα συγκεκριμένο πεδίο.

Παραδείγματα:

  • μια ώρα πρέπει να είναι από 0 έως 23,
  • ένα ποσοστό πρέπει να είναι από 0 έως 100,
  • μια ποσότητα προϊόντων πρέπει να είναι θετικός ακέραιος,
  • μια απάντηση πρέπει να είναι μόνο 'ΝΑΙ' ή 'ΟΧΙ',
  • ένας κωδικός κατηγορίας μπορεί να είναι μόνο 1, 3 ή 5.

Όσο ο χρήστης δίνει μη αποδεκτή τιμή, το πρόγραμμα δεν πρέπει να προχωρά. Πρέπει να επαναλαμβάνει την εντολή ΔΙΑΒΑΣΕ.

2. Γιατί χρησιμοποιούμε τη ΜΕΧΡΙΣ_ΟΤΟΥ

Η γενική μορφή είναι:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΜΕΤΑΒΛΗΤΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΣΥΝΘΗΚΗ_ΕΓΚΥΡΟΤΗΤΑΣ

Η ΜΕΧΡΙΣ_ΟΤΟΥ εκτελεί τον βρόχο της όσο η συνθήκη είναι ΨΕΥΔΗΣ και σταματά όταν η συνθήκη γίνει ΑΛΗΘΗΣ.

Επομένως, μετά το ΜΕΧΡΙΣ_ΟΤΟΥ γράφουμε τη συνθήκη που περιγράφει την έγκυρη τιμή.

Ο βασικός κανόνας: Η συνθήκη μετά το ΜΕΧΡΙΣ_ΟΤΟΥ πρέπει να γίνεται ΑΛΗΘΗΣ όταν η τιμή είναι αποδεκτή.

3. Η μεθοδολογία σε 5 βήματα

Βήμα 1: Εντοπίζουμε τη μεταβλητή που πρέπει να ελεγχθεί

Αναζητούμε στην εκφώνηση φράσεις όπως:

  • «να γίνεται έλεγχος εγκυρότητας»,
  • «να δέχεται μόνο τιμές…»,
  • «η τιμή πρέπει να βρίσκεται…»,
  • «σε περίπτωση λανθασμένης τιμής να ζητείται ξανά».

Βήμα 2: Γράφουμε το αποδεκτό πεδίο τιμών

Πριν γράψουμε κώδικα, περιγράφουμε καθαρά ποιες τιμές είναι σωστές.

Παράδειγμα:

Αποδεκτές τιμές: 0 ≤ ΠΟΣΟΣΤΟ ≤ 100

Βήμα 3: Μετατρέπουμε το πεδίο σε συνθήκη εγκυρότητας

ΠΟΣΟΣΤΟ >= 0 ΚΑΙ ΠΟΣΟΣΤΟ <= 100

Βήμα 4: Τοποθετούμε τη ΔΙΑΒΑΣΕ μέσα στη ΜΕΧΡΙΣ_ΟΤΟΥ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΠΟΣΟΣΤΟ
ΜΕΧΡΙΣ_ΟΤΟΥ ΠΟΣΟΣΤΟ >= 0 ΚΑΙ ΠΟΣΟΣΤΟ <= 100

Βήμα 5: Προσθέτουμε προαιρετικά μήνυμα λάθους

Το μήνυμα λάθους δεν είναι απαραίτητο για να λειτουργήσει ο έλεγχος, αλλά βοηθά τον χρήστη να καταλάβει τι έκανε λάθος.

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΠΟΣΟΣΤΟ
   ΑΝ ΠΟΣΟΣΤΟ < 0 Η ΠΟΣΟΣΤΟ > 100 ΤΟΤΕ
      ΓΡΑΨΕ 'Λάθος τιμή. Δώσε ποσοστό από 0 έως 100.'
   ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ ΠΟΣΟΣΤΟ >= 0 ΚΑΙ ΠΟΣΟΣΤΟ <= 100

Παρατήρησε τη διαφορά:

  • στο ΑΝ γράφεται η συνθήκη της λανθασμένης τιμής,
  • στο ΜΕΧΡΙΣ_ΟΤΟΥ γράφεται η συνθήκη της σωστής τιμής.

4. Πώς σχηματίζουμε τη συνθήκη εγκυρότητας

Αποδεκτό πεδίο Συνθήκη εγκυρότητας
Χ > Α Χ > Α
Χ ≥ Α Χ >= Α
Χ < Β Χ < Β
Χ ≤ Β Χ <= Β
Α ≤ Χ ≤ Β Χ >= Α ΚΑΙ Χ <= Β
Α < Χ < Β Χ > Α ΚΑΙ Χ < Β
Χ = Α ή Χ = Β Χ = Α Η Χ = Β
Χ = Α, Χ = Β ή Χ = Γ Χ = Α Η Χ = Β Η Χ = Γ
Χ άρτιος στο [Α, Β] Χ >= Α ΚΑΙ Χ <= Β ΚΑΙ Χ MOD 2 = 0
Χ στο [Α, Β] ή στο [Γ, Δ] (Χ >= Α ΚΑΙ Χ <= Β) Η (Χ >= Γ ΚΑΙ Χ <= Δ)

Συνεχόμενο πεδίο τιμών

Όταν όλες οι τιμές ενός διαστήματος είναι επιτρεπτές, χρησιμοποιούμε συνήθως:

  • μία σύγκριση, αν υπάρχει μόνο ένα όριο,
  • δύο συγκρίσεις ενωμένες με ΚΑΙ, αν υπάρχει κάτω και πάνω όριο.

Διακριτές επιτρεπτές τιμές

Όταν επιτρέπονται μόνο συγκεκριμένες τιμές που αναφέρονται μία προς μία, χρησιμοποιούμε:

  • μία ισότητα για κάθε επιτρεπτή τιμή,
  • τον λογικό τελεστή Η ανάμεσα στις ισότητες.

Παράδειγμα:

ΚΩΔΙΚΟΣ = 1 Η ΚΩΔΙΚΟΣ = 3 Η ΚΩΔΙΚΟΣ = 5

5. Τα συχνότερα λάθη

Λάθος 1: Γράφουμε τη συνθήκη λάθους μετά το ΜΕΧΡΙΣ_ΟΤΟΥ

Για ποσοστό από 0 έως 100:

ΜΕΧΡΙΣ_ΟΤΟΥ ΠΟΣΟΣΤΟ < 0 Η ΠΟΣΟΣΤΟ > 100

Η παραπάνω εντολή σταματά όταν το ποσοστό είναι λανθασμένο. Είναι το αντίθετο από αυτό που θέλουμε.

Σωστό:

ΜΕΧΡΙΣ_ΟΤΟΥ ΠΟΣΟΣΤΟ >= 0 ΚΑΙ ΠΟΣΟΣΤΟ <= 100

Λάθος 2: Χρησιμοποιούμε Η αντί για ΚΑΙ σε ένα διάστημα

Λάθος:

ΩΡΑ >= 0 Η ΩΡΑ <= 23

Η συνθήκη είναι πρακτικά πάντα αληθής. Για παράδειγμα, το 50 είναι μεγαλύτερο από 0, ενώ το -10 είναι μικρότερο από 23.

Σωστό:

ΩΡΑ >= 0 ΚΑΙ ΩΡΑ <= 23

Λάθος 3: Χρησιμοποιούμε ΚΑΙ ανάμεσα σε διαφορετικές διακριτές τιμές

Λάθος:

ΑΠΑΝΤΗΣΗ = 'ΝΑΙ' ΚΑΙ ΑΠΑΝΤΗΣΗ = 'ΟΧΙ'

Μια μεταβλητή δεν μπορεί να έχει ταυτόχρονα και τις δύο τιμές.

Σωστό:

ΑΠΑΝΤΗΣΗ = 'ΝΑΙ' Η ΑΠΑΝΤΗΣΗ = 'ΟΧΙ'

Λάθος 4: Η ΔΙΑΒΑΣΕ βρίσκεται έξω από τον βρόχο

Αν η ΔΙΑΒΑΣΕ δεν βρίσκεται μέσα στην επανάληψη, η τιμή δεν αλλάζει και ο βρόχος μπορεί να μην τερματιστεί ποτέ.

Λάθος 5: Αγνοούμε τα άκρα του διαστήματος

Οι λέξεις «από … έως και …» σημαίνουν ότι και τα δύο άκρα περιλαμβάνονται. Άρα χρησιμοποιούμε >= και <=.

Λάθος 6: Κάνουμε έλεγχο ενώ η εκφώνηση λέει ότι δεν απαιτείται

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

6. Είκοσι λυμένες ασκήσεις

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

Άσκηση 1: Αξιολόγηση εφαρμογής

Εκφώνηση: Να γραφτεί τμήμα προγράμματος που διαβάζει μια ακέραια αξιολόγηση από 1 έως και 5. Αν δοθεί άλλη τιμή, να ζητείται ξανά.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΑΞΙΟΛΟΓΗΣΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΑΞΙΟΛΟΓΗΣΗ >= 1 ΚΑΙ ΑΞΙΟΛΟΓΗΣΗ <= 5

Γιατί: Οι έγκυρες τιμές αποτελούν το συνεχόμενο κλειστό διάστημα [1,5], άρα οι δύο συνθήκες ενώνονται με ΚΑΙ.

Άσκηση 2: Πλήθος εισιτηρίων

Εκφώνηση: Ένας χρήστης μπορεί να αγοράσει από 1 έως και 8 εισιτήρια. Να διαβαστεί το πλήθος με έλεγχο εγκυρότητας και μήνυμα λάθους.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΠΛΗΘΟΣ
   ΑΝ ΠΛΗΘΟΣ < 1 Η ΠΛΗΘΟΣ > 8 ΤΟΤΕ
      ΓΡΑΨΕ 'Επιτρέπονται από 1 έως 8 εισιτήρια.'
   ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ ΠΛΗΘΟΣ >= 1 ΚΑΙ ΠΛΗΘΟΣ <= 8

Γιατί: Το μήνυμα εμφανίζεται όταν παραβιάζεται τουλάχιστον ένα όριο. Η επανάληψη σταματά όταν ικανοποιούνται και τα δύο.

Άσκηση 3: Ποσοστό έκπτωσης

Εκφώνηση: Να διαβαστεί πραγματικό ποσοστό έκπτωσης από 0% έως και 40%.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΕΚΠΤΩΣΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΕΚΠΤΩΣΗ >= 0 ΚΑΙ ΕΚΠΤΩΣΗ <= 40

Γιατί: Επιτρέπονται και οι οριακές τιμές 0 και 40.

Άσκηση 4: Θετική τιμή προϊόντος

Εκφώνηση: Να διαβαστεί η τιμή ενός προϊόντος. Η τιμή πρέπει να είναι αυστηρά θετική.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΤΙΜΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΤΙΜΗ > 0

Γιατί: Υπάρχει μόνο ένα κάτω όριο και το μηδέν δεν επιτρέπεται.

Άσκηση 5: Βάθος δύτη

Εκφώνηση: Το βάθος παριστάνεται με μη θετικό πραγματικό αριθμό: η επιφάνεια είναι 0 και οι θέσεις κάτω από αυτήν έχουν αρνητικές τιμές. Να διαβαστεί έγκυρο βάθος.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΒΑΘΟΣ
ΜΕΧΡΙΣ_ΟΤΟΥ ΒΑΘΟΣ <= 0

Γιατί: Η άσκηση έχει μόνο πάνω όριο. Το 0 είναι αποδεκτό.

Άσκηση 6: Ώρα της ημέρας

Εκφώνηση: Να διαβαστεί ακέραια ώρα σε 24ωρη μορφή, από 0 έως και 23.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΩΡΑ
ΜΕΧΡΙΣ_ΟΤΟΥ ΩΡΑ >= 0 ΚΑΙ ΩΡΑ <= 23

Γιατί: Η τιμή πρέπει ταυτόχρονα να μην είναι μικρότερη από 0 και να μην ξεπερνά το 23.

Άσκηση 7: Ποσοστό μπαταρίας

Εκφώνηση: Να διαβαστεί το ποσοστό φόρτισης μιας μπαταρίας, από 0 έως και 100.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΠΟΣΟΣΤΟ
   ΑΝ ΠΟΣΟΣΤΟ < 0 Η ΠΟΣΟΣΤΟ > 100 ΤΟΤΕ
      ΓΡΑΨΕ 'Το ποσοστό πρέπει να είναι από 0 έως 100.'
   ΤΕΛΟΣ_ΑΝ
ΜΕΧΡΙΣ_ΟΤΟΥ ΠΟΣΟΣΤΟ >= 0 ΚΑΙ ΠΟΣΟΣΤΟ <= 100

Γιατί: Πρόκειται για κλειστό διάστημα. Η λανθασμένη περιοχή βρίσκεται έξω από αυτό και περιγράφεται με Η.

Άσκηση 8: Βαθμολογική ζώνη

Εκφώνηση: Να διαβαστεί πραγματική βαθμολογία που πρέπει να είναι μεγαλύτερη ή ίση του 10 και μικρότερη του 20.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΒΑΘΜΟΛΟΓΙΑ
ΜΕΧΡΙΣ_ΟΤΟΥ ΒΑΘΜΟΛΟΓΙΑ >= 10 ΚΑΙ ΒΑΘΜΟΛΟΓΙΑ < 20

Γιατί: Το 10 επιτρέπεται, ενώ το 20 δεν επιτρέπεται. Χρειάζεται προσοχή στους συγκριτικούς τελεστές.

Άσκηση 9: Ζώνη στάθμευσης

Εκφώνηση: Σε έναν χώρο στάθμευσης είναι διαθέσιμες μόνο οι ζώνες 1, 3 και 5. Να διαβαστεί έγκυρος κωδικός ζώνης.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΖΩΝΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΖΩΝΗ = 1 Η ΖΩΝΗ = 3 Η ΖΩΝΗ = 5

Γιατί: Οι επιτρεπτές τιμές δεν σχηματίζουν συνεχόμενο διάστημα. Αναφέρονται μία προς μία και συνδέονται με Η.

Άσκηση 10: Απάντηση ΝΑΙ ή ΟΧΙ

Εκφώνηση: Να διαβαστεί η απάντηση ενός χρήστη, η οποία επιτρέπεται να είναι μόνο 'ΝΑΙ' ή 'ΟΧΙ'.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΑΠΑΝΤΗΣΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠΑΝΤΗΣΗ = 'ΝΑΙ' Η ΑΠΑΝΤΗΣΗ = 'ΟΧΙ'

Γιατί: Οι δύο επιτρεπτές τιμές είναι διακριτές. Αρκεί να ισχύει μία από τις δύο ισότητες.

Άσκηση 11: Μέγεθος ενδύματος

Εκφώνηση: Να διαβαστεί μέγεθος ενδύματος. Επιτρέπονται μόνο οι τιμές 'S', 'M', 'L' και 'XL'.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΜΕΓΕΘΟΣ
ΜΕΧΡΙΣ_ΟΤΟΥ ΜΕΓΕΘΟΣ = 'S' Η ΜΕΓΕΘΟΣ = 'M' Η ΜΕΓΕΘΟΣ = 'L' Η ΜΕΓΕΘΟΣ = 'XL'

Γιατί: Χρειαζόμαστε μία συνθήκη ισότητας για κάθε αποδεκτή τιμή.

Άσκηση 12: Άρτιος αριθμός από 2 έως 100

Εκφώνηση: Να διαβαστεί άρτιος ακέραιος από 2 έως και 100.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ Χ
ΜΕΧΡΙΣ_ΟΤΟΥ Χ >= 2 ΚΑΙ Χ <= 100 ΚΑΙ Χ MOD 2 = 0

Γιατί: Δεν αρκεί ο αριθμός να βρίσκεται στο διάστημα. Πρέπει συγχρόνως να έχει υπόλοιπο 0 στη διαίρεση με το 2.

Άσκηση 13: Πολλαπλάσιο του 5

Εκφώνηση: Να διαβαστεί ακέραιος από 10 έως και 200 που να είναι πολλαπλάσιο του 5.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ Χ
ΜΕΧΡΙΣ_ΟΤΟΥ Χ >= 10 ΚΑΙ Χ <= 200 ΚΑΙ Χ MOD 5 = 0

Γιατί: Για να είναι έγκυρη η τιμή, πρέπει να ικανοποιούνται και οι τρεις απαιτήσεις.

Άσκηση 14: Τιμή σε δύο χωριστά διαστήματα

Εκφώνηση: Να διαβαστεί ακέραιος που ανήκει είτε στο διάστημα [-100,-10] είτε στο διάστημα [10,100].

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ Χ
ΜΕΧΡΙΣ_ΟΤΟΥ (Χ >= -100 ΚΑΙ Χ <= -10) Η (Χ >= 10 ΚΑΙ Χ <= 100)

Γιατί: Κάθε διάστημα περιγράφεται με δύο συνθήκες ενωμένες με ΚΑΙ. Επειδή αρκεί ο αριθμός να βρίσκεται σε ένα από τα δύο διαστήματα, οι δύο ομάδες συνδέονται με Η.

Άσκηση 15: Σημείο μέσα σε ορθογώνιο

Εκφώνηση: Να διαβαστούν οι πραγματικές συντεταγμένες Χ και Υ ενός σημείου. Το σημείο είναι έγκυρο όταν βρίσκεται μέσα ή πάνω στα όρια του ορθογωνίου με 0 ≤ Χ ≤ 100 και 0 ≤ Υ ≤ 50.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ Χ, Υ
ΜΕΧΡΙΣ_ΟΤΟΥ Χ >= 0 ΚΑΙ Χ <= 100 ΚΑΙ Υ >= 0 ΚΑΙ Υ <= 50

Γιατί: Για να γίνει αποδεκτό το σημείο, πρέπει να είναι έγκυρες ταυτόχρονα και οι δύο συντεταγμένες.

Άσκηση 16: Μαθητές και απόντες

Εκφώνηση: Να διαβαστεί το πλήθος μαθητών ενός τμήματος, από 1 έως 30. Στη συνέχεια να διαβαστεί το πλήθος των απόντων, το οποίο πρέπει να είναι από 0 έως το πλήθος των μαθητών.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΜΑΘΗΤΕΣ
ΜΕΧΡΙΣ_ΟΤΟΥ ΜΑΘΗΤΕΣ >= 1 ΚΑΙ ΜΑΘΗΤΕΣ <= 30

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΑΠΟΝΤΕΣ
ΜΕΧΡΙΣ_ΟΤΟΥ ΑΠΟΝΤΕΣ >= 0 ΚΑΙ ΑΠΟΝΤΕΣ <= ΜΑΘΗΤΕΣ

Γιατί: Το πάνω όριο της δεύτερης μεταβλητής δεν είναι σταθερό. Εξαρτάται από την έγκυρη τιμή της πρώτης.

Άσκηση 17: Ώρα έναρξης και λήξης

Εκφώνηση: Να διαβαστεί ακέραια ώρα έναρξης από 0 έως 22 και στη συνέχεια ώρα λήξης, η οποία πρέπει να είναι μεγαλύτερη από την ώρα έναρξης και μικρότερη ή ίση του 23.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΕΝΑΡΞΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΕΝΑΡΞΗ >= 0 ΚΑΙ ΕΝΑΡΞΗ <= 22

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΛΗΞΗ
ΜΕΧΡΙΣ_ΟΤΟΥ ΛΗΞΗ > ΕΝΑΡΞΗ ΚΑΙ ΛΗΞΗ <= 23

Γιατί: Η ώρα λήξης ελέγχεται τόσο ως προς το γενικό πάνω όριο όσο και ως προς την ώρα έναρξης.

Άσκηση 18: Μήκη πλευρών τριγώνου

Εκφώνηση: Να διαβαστούν τρεις θετικοί πραγματικοί αριθμοί Α, Β, Γ που μπορούν να αποτελέσουν πλευρές τριγώνου.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ Α, Β, Γ
ΜΕΧΡΙΣ_ΟΤΟΥ Α > 0 ΚΑΙ Β > 0 ΚΑΙ Γ > 0 ΚΑΙ Α + Β > Γ ΚΑΙ Α + Γ > Β ΚΑΙ Β + Γ > Α

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

Άσκηση 19: Έγκυρη ημερομηνία μη δίσεκτου έτους

Εκφώνηση: Για ένα μη δίσεκτο έτος, να διαβαστούν έγκυρος μήνας και έγκυρη ημέρα του συγκεκριμένου μήνα.

Λύση:

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΜΗΝΑΣ
ΜΕΧΡΙΣ_ΟΤΟΥ ΜΗΝΑΣ >= 1 ΚΑΙ ΜΗΝΑΣ <= 12

ΑΝ ΜΗΝΑΣ = 2 ΤΟΤΕ
   ΜΕΓΙΣΤΗ_ΗΜΕΡΑ <- 28
ΑΛΛΙΩΣ_ΑΝ ΜΗΝΑΣ = 4 Η ΜΗΝΑΣ = 6 Η ΜΗΝΑΣ = 9 Η ΜΗΝΑΣ = 11 ΤΟΤΕ
   ΜΕΓΙΣΤΗ_ΗΜΕΡΑ <- 30
ΑΛΛΙΩΣ
   ΜΕΓΙΣΤΗ_ΗΜΕΡΑ <- 31
ΤΕΛΟΣ_ΑΝ

ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
   ΔΙΑΒΑΣΕ ΗΜΕΡΑ
ΜΕΧΡΙΣ_ΟΤΟΥ ΗΜΕΡΑ >= 1 ΚΑΙ ΗΜΕΡΑ <= ΜΕΓΙΣΤΗ_ΗΜΕΡΑ

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

Άσκηση 20: Επιδόσεις αθλητών με επαναλαμβανόμενο έλεγχο

Εκφώνηση: Να γραφτεί πρόγραμμα που:

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

Λύση:

ΠΡΟΓΡΑΜΜΑ Επιδόσεις
ΜΕΤΑΒΛΗΤΕΣ
   ΑΚΕΡΑΙΕΣ: Ν, Ι
   ΠΡΑΓΜΑΤΙΚΕΣ: ΕΠΙΔΟΣΗ, ΑΘΡΟΙΣΜΑ, ΜΕΓΙΣΤΗ, ΜΟ
ΑΡΧΗ
   ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
      ΔΙΑΒΑΣΕ Ν
   ΜΕΧΡΙΣ_ΟΤΟΥ Ν >= 1 ΚΑΙ Ν <= 50

   ΑΘΡΟΙΣΜΑ <- 0
   ΜΕΓΙΣΤΗ <- -1

   ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
      ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
         ΔΙΑΒΑΣΕ ΕΠΙΔΟΣΗ
      ΜΕΧΡΙΣ_ΟΤΟΥ ΕΠΙΔΟΣΗ >= 0 ΚΑΙ ΕΠΙΔΟΣΗ <= 100

      ΑΘΡΟΙΣΜΑ <- ΑΘΡΟΙΣΜΑ + ΕΠΙΔΟΣΗ
      ΑΝ ΕΠΙΔΟΣΗ > ΜΕΓΙΣΤΗ ΤΟΤΕ
         ΜΕΓΙΣΤΗ <- ΕΠΙΔΟΣΗ
      ΤΕΛΟΣ_ΑΝ
   ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

   ΜΟ <- ΑΘΡΟΙΣΜΑ / Ν
   ΓΡΑΨΕ 'Μέσος όρος: ', ΜΟ
   ΓΡΑΨΕ 'Μεγαλύτερη επίδοση: ', ΜΕΓΙΣΤΗ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Επιδόσεις

Γιατί: Ο πρώτος έλεγχος προστατεύει το πλήθος επαναλήψεων. Στη συνέχεια, μέσα στη ΓΙΑ, μια δεύτερη δομή ΜΕΧΡΙΣ_ΟΤΟΥ εξασφαλίζει ότι κάθε επίδοση είναι έγκυρη πριν χρησιμοποιηθεί στους υπολογισμούς.

7. Τελικός έλεγχος πριν παραδώσεις τη λύση

Πριν θεωρήσεις ολοκληρωμένη μια άσκηση ελέγχου εγκυρότητας, έλεγξε:

  1. Βρίσκεται η ΔΙΑΒΑΣΕ μέσα στην ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ;
  2. Η συνθήκη μετά το ΜΕΧΡΙΣ_ΟΤΟΥ περιγράφει τις σωστές και όχι τις λανθασμένες τιμές;
  3. Σε συνεχόμενο διάστημα χρησιμοποίησες ΚΑΙ;
  4. Σε διακριτές επιτρεπτές τιμές χρησιμοποίησες Η;
  5. Χρησιμοποίησες σωστά τα >, >=, <, <=;
  6. Αν υπάρχουν περισσότερες απαιτήσεις, πρέπει να ισχύουν όλες ή αρκεί μία;
  7. Αν μια τιμή εξαρτάται από προηγούμενη μεταβλητή, έχει ήδη ελεγχθεί η προηγούμενη;
  8. Αν η εκφώνηση λέει ότι δεν απαιτείται έλεγχος, απέφυγες τον περιττό κώδικα;

Συμπέρασμα

Ο έλεγχος εγκυρότητας με ΜΕΧΡΙΣ_ΟΤΟΥ βασίζεται σε μία απλή αλλά κρίσιμη ιδέα:

Διαβάζουμε ξανά και ξανά, μέχρι η τιμή να γίνει έγκυρη.

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


0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

You cannot copy content of this page

Ασκήσεις ΑΕΠΠ με Λύσεις – Θέματα Α,Β,Γ & Δ για Πανελλήνιες | infoclass.gr