Αποστολέας Θέμα: Επανάληψη 'ΓΙΑ' -- αριθμός επαναλήψεων  (Αναγνώστηκε 2299 φορές)

sgsfak

  • Θαμώνας
  • ***
  • Μηνύματα: 23
  • s y = 1: map (\x -> (x + y/x)*0.5) (s y)
Επανάληψη 'ΓΙΑ' -- αριθμός επαναλήψεων
« στις: 24 Οκτ 2005, 01:06:09 μμ »
Το βιβλίο λέει ότι όταν ο αριθμός των επαναλήψεων είναι γνωστός εκ των προτέρων τότε χρησιμοποιείται η ΓΙΑ. Αυτό σημαίνει ότι το παρακάτω δεν είναι σωστό (εφόσον δεν γνωρίζουμε χωρίς να εκτελέσουμε τον αλγόριθμο πόσες επαναλήψεις θα έχουμε);
[glossa]
ΔΙΑΒΑΣΕ Ν
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
   ΓΡΑΨΕ Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[/glossa]
..ή ότι σε αυτές τις περιπτώσεις αποφεύγουμε τη ΓΙΑ και χρησιμοποιούμε ΟΣΟ (ή ΜΕΧΡΙΣ_ΟΤΟΥ); Τι συμβουλεύετε τα παιδιά;

ευχαριστώ
Στ.

gpapargi

  • Γενικός διαχειριστής
  • *****
  • Μηνύματα: 2457
  • I 'm not young enough to know everything
Re: Επανάληψη 'ΓΙΑ' -- αριθμός επαναλήψεων
« Απάντηση #1 στις: 24 Οκτ 2005, 01:58:51 μμ »
Σωστό είναι. Λέγοντας «εκ των προτέρων» εννοούμε πριν ξεκινήσει η εντολή επανάληψης όχι όλος ο αλγόριθμος.

P.Tsiotakis

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 3304
  • agent romanoff you miss me?
    • P.Tsiotakis
Re: Επανάληψη 'ΓΙΑ' -- αριθμός επαναλήψεων
« Απάντηση #2 στις: 24 Οκτ 2005, 08:23:40 μμ »

Στέλιο, όταν σε έναν αλγόριθμο χρησιμοποιείται μια μεταβλητή Ν (και δεδομένου οτι έχει λάβει τιμή) δεν είναι άγνωστη - έχει μια τιμή

Επομένως στον αλγόριθμο που γράφεις, το πλήθος των επαναλήψεων είναι γνωστό και είναι Ν

Με εκτίμηση,


Φίλιππος

  • Επισκέπτης
Re: Επανάληψη 'ΓΙΑ' -- αριθμός επαναλήψεων
« Απάντηση #3 στις: 24 Οκτ 2005, 10:10:21 μμ »
Παράθεση
Το βιβλίο λέει ότι όταν ο αριθμός των επαναλήψεων είναι γνωστός εκ των προτέρων τότε χρησιμοποιείται η ΓΙΑ

Όταν είναι γνωστός ο αριθμός των επαναλήψεων μπορεί να χρησιμοποιηθεί οποιαδήποτε από τις τρείς δομές επανάληψης αλλά εξυπηρετεί (βολεύει) περισσότερο η χρήση της ΓΙΑ που 'εμπεριέχει' τη λογική της μέτρησης αριθμού επαναλήψεων.  

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

Παράθεση
Αυτό σημαίνει ότι το παρακάτω δεν είναι σωστό (εφόσον δεν γνωρίζουμε χωρίς να εκτελέσουμε τον αλγόριθμο πόσες επαναλήψεις θα έχουμε);
[glossa]
ΔΙΑΒΑΣΕ Ν
ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ Ν
   ΓΡΑΨΕ Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
[/glossa]

ΟΧΙ, αυτό σημαίνει ότι το κομμάτι του αλγόριθμου που δίνεις είναι απόλυτα σωστό, αφού το όριο Ν είναι γνωστό, δηλαδή θα έχει τιμή, τη στιγμή που θα ξεκινήσει να εκτελείται ο βρόχος οπότε θα μπορέσει να υπολογιστεί η τιμή της συνθήκης συνέχειας I <= N


Παράθεση
..ή ότι σε αυτές τις περιπτώσεις αποφεύγουμε τη ΓΙΑ και χρησιμοποιούμε ΟΣΟ (ή ΜΕΧΡΙΣ_ΟΤΟΥ); Τι συμβουλεύετε τα παιδιά;


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

Όταν είναι γνωστός ο αριθμός των επαναλήψεων μπορεί να χρησιμοποιηθεί οποιαδήποτε από τις τρείς δομές επανάληψης αλλά εξυπηρετεί (βολεύει) περισσότερο η χρήση της ΓΙΑ που 'εμπεριέχει' τη λογική της μέτρησης αριθμού επαναλήψεων.