Το βιβλίο λέει ότι όταν ο αριθμός των επαναλήψεων είναι γνωστός εκ των προτέρων τότε χρησιμοποιείται η ΓΙΑ. Αυτό σημαίνει ότι το παρακάτω δεν είναι σωστό (εφόσον δεν γνωρίζουμε χωρίς να εκτελέσουμε τον αλγόριθμο πόσες επαναλήψεις θα έχουμε);
[glossa]
ΔΙΑΒΑΣΕ Ν
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[/glossa]
..ή ότι σε αυτές τις περιπτώσεις αποφεύγουμε τη ΓΙΑ και χρησιμοποιούμε ΟΣΟ (ή ΜΕΧΡΙΣ_ΟΤΟΥ); Τι συμβουλεύετε τα παιδιά;
ευχαριστώ
Στ.
Σωστό είναι. Λέγοντας «εκ των προτέρων» εννοούμε πριν ξεκινήσει η εντολή επανάληψης όχι όλος ο αλγόριθμος.
ΠαράθεσηΤο βιβλίο λέει ότι όταν ο αριθμός των επαναλήψεων είναι γνωστός εκ των προτέρων τότε χρησιμοποιείται η ΓΙΑ
Όταν
είναι γνωστός ο αριθμός των επαναλήψεων μπορεί να χρησιμοποιηθεί οποιαδήποτε από τις τρείς δομές επανάληψης αλλά εξυπηρετεί (βολεύει) περισσότερο η χρήση της ΓΙΑ που 'εμπεριέχει' τη λογική της μέτρησης αριθμού επαναλήψεων.
Η
Συνθήκη Συνέχειας στη δομή ΓΙΑ, συγκρίνει με την τιμή της μεταβλητής ελέγχου με την τιμή του ορίου το οποίο μπορεί να είναι μία οποιαδήποτε αριθμητική παράσταση. Η έκφραση 'γνωστός αριθμός επαναλήψεων', τόσο στο βιβλίο όσο και στη συζήτησή μας έχει την έννοια του 'γνωστή η τιμή του ορίου όταν ξεκινάει η επανάληψη' (όπως είπε και ο Γιώργος) διαφορετικά δε μπορεί να υλοποιηθεί η λογική του μετρητή επαναλήψεων στην οποία στηρίζεται η ΓΙΑ. Σε αυτή την περίπτωη θα πρέπει να πάμε στη γενικότερη δομή επανάληψης ΟΣΟ ή (ίσως) στη ΜΕΧΡΙΣ_ΟΤΟΥ, δομώντας την κατάλληλη
συνθήκη συνέχειας ή
τερματισμού αντίστοιχα.
ΠαράθεσηΑυτό σημαίνει ότι το παρακάτω δεν είναι σωστό (εφόσον δεν γνωρίζουμε χωρίς να εκτελέσουμε τον αλγόριθμο πόσες επαναλήψεις θα έχουμε);
[glossa]
ΔΙΑΒΑΣΕ Ν
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
ΓΡΑΨΕ Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[/glossa]
ΟΧΙ, αυτό σημαίνει ότι το κομμάτι του αλγόριθμου που δίνεις είναι απόλυτα σωστό, αφού το όριο Ν είναι γνωστό, δηλαδή θα έχει τιμή, τη στιγμή που θα ξεκινήσει να εκτελείται ο βρόχος οπότε θα μπορέσει να υπολογιστεί η τιμή της
συνθήκης συνέχειας I <= N
Παράθεση..ή ότι σε αυτές τις περιπτώσεις αποφεύγουμε τη ΓΙΑ και χρησιμοποιούμε ΟΣΟ (ή ΜΕΧΡΙΣ_ΟΤΟΥ); Τι συμβουλεύετε τα παιδιά;
Όταν
δεν είναι γνωστός ο αριθμός των επαναλήψεων χρησιμοποιείται απαραίτητα η
ΟΣΟ.
Η
ΓΙΑ δε μπορεί να χρησιμοποιηθεί αφού στηρίζεται στη
'μη υπέρβαση' ενός δεδομένου ορίου επαναλήψεων (του ΜΕΧΡΙ) μέσα από αύξηση (όταν το βήμα είναι θετικό) ή τη μείωση (όταν είναι αρνητικό) της τιμής της μεταβλητής ελέγχου επομένως είναι αδύνατον να χρησιμοποιηθεί όταν δεν είναι γνωστό αυτό το όριο (όταν ελέγχεται η συνθήκη).
Η
ΜΕΧΡΙΣ_ΟΤΟΥ δε μπορεί να χρησιμοποιηθεί (αυτόνομα) αφού η δομή της επιβάλει την εκτέλεση του βρόχου κατ' ελάχιστον μία φορά. Κατ' επέκταση, η ΜΕΧΡΙΣ_ΟΤΟΥ μπορεί να χρησιμοποιηθεί μόνον όταν η δομή του προβλήματος επιτρέπει την υπόθεση ότι ο βρόχος θα εκτελεστεί τουλάχιστον μία φορά. Σε διαφορετική περίπτωση μπορεί να εκτελεστεί μόνο εμφωνευμένη σε απλή επιλογή:
ΑΝ ΟΧΙ Συνθήκη_Τερματισμού ΤΟΤΕ
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
...
ΜΕΧΡΙΣ_ΟΤΟΥ Συνθήκη_Τερματισμού
ΤΕΛΟΣ_ΑΝ
Όταν
είναι γνωστός ο αριθμός των επαναλήψεων μπορεί να χρησιμοποιηθεί οποιαδήποτε από τις τρείς δομές επανάληψης αλλά εξυπηρετεί (βολεύει) περισσότερο η χρήση της ΓΙΑ που 'εμπεριέχει' τη λογική της μέτρησης αριθμού επαναλήψεων.