Κάθε δίσεκτο έτος έχει 366 ημέρες και πιο συγκεκριμένα όταν το έτος είναι δίσεκτο ο Φεβρουάριος έχει 29 ημέρες. Ένα έτος είναι δίσεκτο αν ο αριθμός του είναι πολλαπλάσιο του 4, αλλά όχι του 100, εκτός αν είναι πολλαπλάσιο του 400. Για παράδειγμα: Το 1984 είναι δίσεκτο, αφού είναι πολλαπλάσιο του 4, το 1900 δεν είναι δίσεκτο (αφού είναι πολλαπλάσιο του 4 αλλά και του 100), το 2000 είναι δίσεκτο (αφού είναι πολλαπλάσιο του 4, του 100, αλλά και του 400), και τέλος το 1993 δεν είναι δίσεκτο (αφού δεν είναι πολλαπλάσιο του 4). Να αναπτύξετε αλγόριθμο ο οποίος θα δέχεται ένα έτος και θα επιστρέφει την τιμή μιας λογικής μεταβλητής, η οποία θα είναι Αληθής αν το έτος είναι δίσεκτο ή Ψευδής στην αντίθετη περίπτωση.

Απάντηση

Με χρήση μιας εντολής εκχώρησης:

Αλγόριθμος Δίσεκτο1
Δεδομένα // ετ //
δισ ← (ετ mod 4 = 0 και ετ mod 100 ≠ 0) ή ετ mod 400 = 0
Αποτελέσματα // δισ //
Τέλος Δίσεκτο1

Με χρήση απλής εντολής επιλογής με σύνθετη έκφραση:

Αλγόριθμος Δίσεκτο2
Δεδομένα // ετ //
δισ ← Ψευδής
Αν ((ετ mod 4 = 0 και ετ mod 100 ≠ 0) ή ετ mod 400 = 0) τότε δισ ← Αληθής
Αποτελέσματα // δισ //
Τέλος Δίσεκτο2

Με χρήση εντολών απλής επιλογής:
Αλγόριθμος Δίσεκτο3
Δεδομένα // ετ //
δισ ← Ψευδής
Αν ετ mod 4 = 0 τότε δισ ← Αληθής
Αν ετ mod 100 = 0 τότε δισ ← Ψευδής
Αν ετ mod 400 = 0 τότε δισ ← Αληθής
Αποτελέσματα // δισ //
Τέλος Δίσεκτο3

Με χρήση εμφωλευμένων Αν:

Αλγόριθμος Δίσεκτο4
Δεδομένα // ετ //
δισ ← Ψευδής
Αν ετ mod 4 = 0 τότε
  Αν ετ mod 100 = 0 τότε
    Αν ετ mod 400 = 0 τότε
      δισ ← Αληθής
    Τέλος_αν
  αλλιώς
    δισ ← Αληθής
  Τέλος_αν
Τέλος_αν
Αποτελέσματα // δισ //
Τέλος Δίσεκτο4

Οι αλγόριθμοι είναι ισοδύναμοι. Ωστόσο για τον έλεγχο του δίσεκτου έτους ελέγχονται συνθήκες που δεν είναι ανεξάρτητες. Για τον λόγο αυτό στον αλγόριθμο Δίσεκτο3 η σειρά των εντολών απλής επιλογής δεν μπορεί να αλλάξει. Στον αλγόριθμο Δίσεκτο4 η χρήση εμφωλευμένων Αν οδηγεί σε πολύπλοκες δομές, οι οποίες αυξάνουν την πιθανότητα του λάθους, καθώς και τη δυσκολία κατανόησης του αλγόριθμου. Έτσι η χρήση της εντολής εκχώρησης (Αλγόριθμος Δίσεκτο1) ή της απλής επιλογής με σύνθετες εκφράσεις (Αλγόριθμος Δίσεκτο2) δίνει έναν πιο κατανοητό αλγόριθμο.

Advertisement