Δομή Επανάληψης

Print
Category: Uncategorised
Published on 13 March 2012
Written by Super User Hits: 2928

Η δομή επανάληψης είναι η τρίτη λογική δομή του δομημένου προγραμματισμού. Είναι η σημαντικότερη δομή του Δομημένου προγραμματισμού γιατί δίνει τη δυνατότητα για τη λύση ακόμα πιο σύνθετων αλγορίθμων. Ουσιαστικά δίνει τη δυνατότητα να επαναληφθεί η εκτέλεση εντολών για κάποιες φορές. Ο αριθμός των επαναλήψεων αυτών είναι είτε γνωστός, είτε άγνωστος. Οι επαναλήψεις των εντολών γίνονται με τον έλεγχο κάποιων συνθηκών ή με αυτοματοποιημένο τρόπο όταν γνωρίζουμε εκ των προτέρων το πλήθος των επαναλήψεων.

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

Θα χρησιμοποιήσουμε ένα παράδειγμα που υλοποιείται και με τα 3 είδη της δομής επανάληψης και στη συνέχεια θα εστιάσουμε σε κάθε μια ξεχωριστά.

Να υπολογιστεί το άθροισμα :  S = 2+4+6+ … + 100, καθώς και το πλήθος των όρων του (που εδώ είναι προφανές).

 

1. Η δομή ΓΙΑ

 

Για Ι από Τ1 μέχρι Τ2 με βήμα Β

     Εντολές

Τέλος_Επανάληψης

 

Παρατήρηση 1.

- Είναι γνωστός ή μπορεί να καθοριστεί – προσδιοριστεί ο αριθμός των επαναλήψεων, που εξαρτάται από το Βήμα Β και τις τιμές των Τ1 και Τ2.

Sß 0

Μ ß 0

Για Ι από 2 μέχρι 100 με βήμα 2

   SßS + I

   Μ ß Μ +1

Τέλος_Επανάληψης

   Γράψε S, Μ

Προσοχή :

Δεν ελέγχεται καμία συνθήκη και εντολές που βρίσκονται μέσα στη δομή (βρόγχο) θα εκτελεστούν Ν φορές που καθορίζονται εκ των προτέρων.

2. Η δομή ΟΣΟ

 

Όσο (Συνθήκη) επανάλαβε

     Εντολές

Τέλος_Επανάληψης

Παρατήρηση 2.

- Ελέγχεται πρώτα η συνθήκη και μετά εκτελούνται οι εντολές μέσα στο βρόγχο.

- Υπάρχει περίπτωση να μην γίνει ποτέ η επανάληψη, δηλαδή οι εντολές μέσα στο βρόγχο να μην εκτελεστούν ποτέ.

- Άγνωστος ο αριθμός των επαναλήψεων.

Sß 0

Ι ß 2

Μ ß 0

Όσο Ι <= 100 επανάλαβε

   SßS + I

   Ι ßΙ + 2

   Μ ß Μ +1

Τέλος_Επανάληψης

   Γράψε S, Μ

Προσοχή :

Η επανάληψη συνεχίζειόσο η συνθήκη είναι Αληθής και τερματίζει όταν η συνθήκη γίνει Ψευδής.

3. Η δομή ΜΕΧΡΙΣ _ΟΤΟΥ

Αρχή_Επανάληψης

     Εντολές

Μέχρις_ότου (Συνθήκη)

Παρατήρηση 3.

- Εκτελούνται πρώτα οι εντολές και μετά ελέγχεται η συνθήκη.

- Τουλάχιστον μια φορά θα γίνει η επανάληψη.

- Άγνωστος ο αριθμός των επαναλήψεων.

Sß 0

Μ ß 0

Ι ß 2

Αρχή_Επανάληψης

   Sß S + I

   Ι ß Ι + 2

   Μ ß Μ +1

Μέχρις_ότου Ι >100

   Γράψε S, Μ                         

Προσοχή :

Η επανάληψη συνεχίζειόσο η συνθήκη είναι Ψευδής και τερματίζει όταν η συνθήκη γίνει Αληθής.

 

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

 

Όπως παρατηρούμε η συνθήκη στη δομή ΟΣΟ είναι ακριβώς η αντίθετη της συνθήκης ΜΕΧΡΙΣ_ΟΤΟΥ και αντιστρόφως.

Δηλαδή οι τιμές που παίρνουν οι μεταβλητές στη συνθήκη έχουν διαφορετικά πεδία (σύνολα) τιμών, αλλά η ένωσή τους είναι το πλήρες πεδίο τιμών των μεταβλητών αυτών.

Γενικές παρατηρήσεις.

Α.

Ø      Όποιος αλγόριθμός επιλύεται με την ΓΙΑ μπορεί πάντα να επιλυθεί (μετατραπεί) και με την ΟΣΟ και την ΜΕΧΡΙΣ_ΟΤΟΥ

Ø      Όποιος αλγόριθμος επιλύεται με τις ΟΣΟ και ΜΕΧΡΙΣ_ΟΤΟΥ δεν μπορεί πάντα να επιλυθεί (μετατραπεί) στην ΓΙΑ.

Ø      Όποιος αλγόριθμος επιλύεται με την ΟΣΟ, επιλύεται (μετατρέπεται) πάντα στην ΜΕΧΡΙΣ_ΟΤΟΥ και αντιστρόφως.

Β.

     Με τη δομή επανάληψης εισάγονται τρία νέα είδη μεταβλητών, όπου εννοείται ότι διατηρούν τα βασικά χαρακτηριστικά και την έννοια της  ‘μεταβλητής’ που μάθαμε μέχρι τώρα, αλλά έχουν κάποιες επιπλέον ιδιότητες.

Αυτές οι μεταβλητές είναι :

ΑΘΡΟΙΣΤΗΣ : είναι η μεταβλητή που αλλάζει (αυξάνεται) κατά μια τυχαία (διαφορετική) ποσότητα. Π.χ. Sß S + X

ΜΕΤΡΗΤΗΣ : είναι η μεταβλητή που αυξάνεται πάντα κατά μια μονάδα. Π.χ. Μ ß Μ +1.

ΒΗΜΑ : είναι η μεταβλητή που μεταβάλλεται κατά την ίδια – μια σταθερή ποσότητα. Π.χ. Ι ß Ι +1.

Γ. 

 Άρα για το προηγούμενο παράδειγμα,

η μεταβλητή S είναι Αθροιστής,

η μεταβλητή Μ είναι Μετρητής και

η μεταβλητή Ι είναι το Βήμα.

Ο Αθροιστής και ο Μετρητής συνήθως έχουν αρχική τιμή μηδέν(0), όπως για τις ανάγκες του συγκεκριμένου προβλήματος.

Όμως, υπάρχουν πολλές άλλες ιδιαίτερες περιπτώσεις προβλημάτων που η αρχική τους τιμή δεν πρέπει να είναι απαραίτητα μηδέν. Τέτοιες περιπτώσεις θα ήταν αν θέλαμε να προσθέσουμε κάποιο όρο εκτός της ακολουθίας (π.χ. το 21 ή το 0,7), οπότε αν δεν θέλαμε να τις προσθέσουμε στο τελικό άθροισμα εκτός επανάληψης, θα μπορούσαμε να αρχικοποιήσουμε το S με αυτές τις τιμές. Άλλη περίπτωση θα ήταν αν θέλαμε το πλήθος των αριθμών από το 12 και έπειτα με βήμα 2, οπότε θα αρχικοποιούσαμε το Μ με το 12.

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

ΕΥΡΕΣΗ Μεγαλύτερου και Μικρότερου αριθμού.

Θα διακρίνουμε 2 περιπτώσεις :

1)      Όταν υπάρχει άνω και κάτω όριο τιμής

2)      Όταν δεν υπάρχει άνω και κάτω όριο τιμής

1) Να δίνονται 20 ονόματα ατόμων που στο καθένα αντιστοιχεί ένας ακέραιος αριθμός, δηλ. δίνουμε  επίσης 20 ακέραιους αριθμούς, των οποίων οι τιμές κυμαίνονται από 0 έως και 100 (να μην γίνει έλεγχος εγκυρότητας). Να βρεθεί ο μεγαλύτερος αριθμός που δόθηκε (υποθέστε ότι είναι ένας και μοναδικός) και το όνομα εκείνου που του αντιστοιχεί. Επίσης να βρεθεί η σειρά που δόθηκαν.

            Αρχή

            ΜΑΧ ß 0

            ΜΙΝ ß 100

            Για Ι από 1 μέχρι 20

            Διάβασε Α, ΟΝ

               Αν Α>ΜΑΧ τότε

                        ΜΑΧ ß Α

                        ΝΑΜΕ1 ß ΟΝ

                        ΣΕΙΡΑ1 ß Ι

               Τέλος_Αν

               Αν Α<ΜΙΝ τότε

                        ΜΙΝ ß Α

                        ΝΑΜΕ2 ß ΟΝ

                        ΣΕΙΡΑ2 ß Ι

               Τέλος_Αν

Τέλος_επανάληψης

            Γράψε ΜΑΧ, ΝΑΜΕ1, ΣΕΙΡΑ1

            Γράψε ΜΙΝ, ΝΑΜΕ2, ΣΕΙΡΑ2

            Τέλος

2)      Να βρεθεί ο μεγαλύτερος και ο μικρότερος αριθμός, καθώς και οι σειρά που θα δοθούν, όταν οι τιμές δεν κυμαίνονται μεταξύ κάποιων ορίων και όταν:

α) έχουμε 20 τυχαίους αριθμούς, δηλ. γνωστό το πλήθος αριθμών.

β) έχουμε άγνωστο πλήθος αριθμών και η εισαγωγή τερματίζει όταν δοθεί το μηδέν(0).

Αρχή

            Διάβασε Α

            ΜΑΧ ß Α

            ΜΙΝ ß Α

            ΣΕΙΡΑ1 ß 1

ΣΕΙΡΑ2 ß 1

            Για Ι από 2 μέχρι 20

            Διάβασε Α

            Αν Α>ΜΑΧ τότε

                        ΜΑΧ ß Α

ΣΕΙΡΑ1 ß Ι

               Τέλος_Αν

               Αν Α<ΜΙΝ τότε

                        ΜΙΝ ß Α

                        ΣΕΙΡΑ2 ß Ι

               Τέλος_Αν

Τέλος-επανάληψης

            Γράψε ΜΑΧ, ΣΕΙΡΑ1

            Γράψε ΜΙΝ, ΣΕΙΡΑ2

Τέλος

Αρχή

            Διάβασε Α

            ΜΑΧ ß Α

            ΜΙΝ ß Α

ΠΛß 1

            Οσο Α <> 0 επανάλαβε

                        Διάβασε Α

            ΠΛ ß ΠΛ+1

            Αν Α>ΜΑΧ τότε

                        ΜΑΧ ß Α

ΣΕΙΡΑ1 ß ΠΛ

               Τέλος_Αν

               Αν Α<ΜΙΝ τότε

                        ΜΙΝ ß Α

                        ΣΕΙΡΑ2 ß ΠΛ

               Τέλος_Αν

Τέλος-επανάληψης

            Γράψε ΜΑΧ, ΣΕΙΡΑ1

            Γράψε ΜΙΝ, ΣΕΙΡΑ2

Τέλος

Δηλαδή όταν δεν υπάρχει άνω ή κάτω όριο πρέπει να βάλουμε ΜΑΧ και ΜΙΝ τήν πρώτη τιμή του αριθμού που θα διαβάσουμε - δώσουμε από το πληκτρολόγιο και στη συνέχεια αντικαθίσταται όποιος θα είναι μεγαλύτερος ή μικρότερος αντίστοιχα.

Μπορείτε να εξασκηθείτε με ασκήσεις διαφορετικής δυσκολίας και συνδιαστικότητας με άλλες δομές επανάληψης και επιλογής  ΕΔΩ.

Επίσης δώστε ιδιαίτερη προσοχή στις ασκήσεις ΕΔΩ.