Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον 2.4.5 – 8.2 Δομή Επανάληψης
Δομές Επανάληψης Εμφάνιση ενός μηνύματος πολλές φορές Οι δομές επανάληψης χρησιμοποιούνται στις περιπτώσεις όπου μια συγκεκριμένη ακολουθία εντολών πρέπει να εκτελεστεί πολλές φορές. Παράδειγμα Εμφάνιση ενός μηνύματος πολλές φορές Εισαγωγή πολλών στοιχείων Εισαγωγή δεδομένων που πληρούν κάποια κριτήρια Έλεγχος εισόδου Επαναλαμβανόμενες πράξεις σε αριθμητικές ακολουθίες ΠΡΟΣΟΧΗ! Οι δομές επανάληψης πρέπει να ολοκληρώνονται (Αλγοριθμικό κριτήριο περατότητας)
Χωρίς δομές επανάληψης Δομές Επανάληψης Χωρίς δομές επανάληψης Εμφάνισε 1 Εμφάνισε 2 Εμφάνισε 3 Εμφάνισε 4 …... Εμφάνισε 15 Άθροισμα <- 0 Διάβασε Βαθμός1 Άθροισμα <- Άθροισμα+Βαθμός1 Διάβασε Βαθμός2 Άθροισμα <- Άθροισμα+Βαθμός2 ….......... Διάβασε Βαθμός6 Άθροισμα <- Άθροισμα+Βαθμός6 ΜΟ <- Άθροισμα/6 Θετικοί <- 0 Διάβασε Αριθμός1 Αν Αριθμός1 > 0 τότε Θετικοί <- Θετικοί +1 Τέλος_Αν ….......... Διάβασε Αριθμός7 Αν Αριθμός7 > 0 τότε Θετικοί <- Θετικοί +1 Τέλος_Αν Εμφάνισε Θετικοί Με δομές επανάληψης Άθροισμα <- 0 Χ <- 1 Αρχή_επανάληψης Διάβασε Βαθμός Άθροισμα <- Άθροισμα+Βαθμός Μέχρις_ότου Χ>6 ΜΟ <- Άθροισμα/6 Θετικοί <- 0 Για Χ από 1 μέχρι 7 Διάβασε Αριθμός Αν Αριθμός > 0 τότε Θετικοί <- Θετικοί +1 Τέλος_Επανάληψης Εμφάνισε Θετικοί Χ <- 1 Όσο Χ<=15 επανάλαβε Εμφάνισε Χ Χ <- Χ+1 Τέλος_επανάληψης
Δομές Επανάληψης Τι κερδίζουμε; Χρόνο Τι θα κάναμε αν έπρεπε να υπολογίσουμε τον μέσο όρο 1000 βαθμών; Μνήμη Αντί για 6 θέσεις μνήμης (παράδειγμα ΜΟ) χρησιμοπποιούμε μία Απλότητα Εύκολα αναγνώσιμοι και επεκτάσιμοι αλγόριθμοι Εκφραστικότητα Εκφράζουμε πιο σωστά την μέθοδο επίλυσης του προβλήματος
Δομές Επανάληψης Όλες οι δομές επανάληψης περιλαμβάνουν: Μια ακολουθία εντολών που εκτελείται. Σημείωση: Η ακολουθία αυτή μπορεί να περιλαμβάνει δομές επιλογής και επανάληψης Μια συνθήκη που ελέγχει (στην αρχή ή στο τέλος) εάν η επανάληψη πρέπει να ολοκληρωθεί ή να τερματιστεί Εντολές μέσα στον βρόχο που αλλάζουν την τιμή της μεταβλητής (-ών) που ελέγχεται (-ονται) στη συνθήκη, αλλιώς η επανάληψη θα εκτελείται επ' άπειρον (ατέρμων βρόχος), παραβιάζοντας το κριτήριο της περατότητας και προκάλωντας το ”κόλλημα” της εφαρμογής (ή και της μηχανής στην οποία εκτελείται)!
Υπάρχουν 3 είδη δομών επανάληψης Δομές Επανάληψης Υπάρχουν 3 είδη δομών επανάληψης Όσο μια συνθήκη είναι αληθής Μέχρις ότου μια συνθήκη να γίνει αληθής Για συγκεκριμένο αριθμό επαναλήψεων
ΟΣΟ … ΕΠΑΝΑΛΑΒΕ
ΟΣΟ … ΕΠΑΝΑΛΑΒΕ Είναι η γενικότερη δομή επανάληψης, και με αυτήν μπορούν να εκφραστούν όλες οι επαναλήψεις, και ΣΙΓΟΥΡΑ αυτές των οποίων δεν γνωρίζουμε τον αριθμό, ούτε μπορούμε να τον υπολογίσουμε πριν την εκτέλεση του προγράμματος! Η συνθήκη αποτιμάται στην αρχή! Αν δεν είναι αληθής οι εντολές του βρόχου δεν θα εκτελεστούν ΠΟΤΕ! Σε αρκετές περιπτώσεις η συνθήκη που ελέγχεται δεν δίνεται από το πρόβλημα, ούτε είναι προφανής από την διατύπωσή του. Ο προγραμματιστής πρέπει να διαμορφώσει την συνθήκη ώστε να είναι λογικά σωστή για το πρόβλημα, χρησιμοποιώντας μια τιμή φρουρό!
ΟΣΟ … ΕΠΑΝΑΛΑΒΕ Έκφραση που μεταβάλλει την μεταβλητή που ελέγχεται στην συνθήκη. Χωρίς την έκφραση αυτή έχουμε ατέρμων βρόχο Ψευδής Ψευδής
ΟΣΟ … ΕΠΑΝΑΛΑΒΕ Υποθέτουμε πως οι αριθμοί που θα διαβαστούν είναι θετικοί. Αν αυτό δεν συμβαίνει ορίζουμε μια τιμή φρουρό, η οποία δεν μπορεί να ανήκει στις εισαγόμενες τιμές. Πχ 99999. Η συνθήκη γίνεται Όσο x<> 99999 επανάλαβε Αν η πρώτη τιμή που θα δωθεί είναι 0 ή αρνητικός οι εντολές της δομής επανάληψης δεν εκτελούνται Ψευδής Ψευδής Χωρίς αυτήν την εντολή έχουμε ατέρμων βρόχο!
ΟΣΟ … ΕΠΑΝΑΛΑΒΕ !!!ΠΡΟΣΟΧΗ!!! Οι μεταβλητές Πλήθος και Άθροισμα πρέπει να αρχικοποιηθούν, αφού χρησιμοποιούνται στο δεξί μέρος εντολής εκχώρησης. Η χρήση τους χωρίς να έχουν αρχική τιμή είναι συχνό ΛΑΘΟΣ Ο έλεγχος είναι απαραίτητος, για να ικανοποιεί ο αλγόριθμος το κριτήριο της καθοριστικότητας Ψευδής Ψευδής
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ... ΜΕΧΡΙΣ_ΟΤΟΥ Ψευδής Ψευδής
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ... ΜΕΧΡΙΣ_ΟΤΟΥ H δομή αυτή χρησιμοποιείται επίσης όταν δεν είναι γνωστός ο αριθμός των επαναλήψεων Οι εντολές επαναλαμβάνονται όσο η συνθήκη είναι ΨΕΥΔΗΣ! Συχνά η ίδια διαδικασία μπορεί να γραφτεί εξ' ίσου σωστά με την εντολή ΟΣΟ … ΕΠΑΝΑΛΑΒΕ. Σε περιπτώσεις που οι εντολές πρέπει να εκτελεστούν τουλάχιστον μια φορά η χρήση της ΜΕΧΡΙΣ_ΟΤΟΥ οδηγεί σε απλούστερα και πιο ευκολονόητα προγράμματα Χαρακτηριστικό παράδειγμα είναι ο έλεγχος αποδεκτών τιμών (ζητούμενο σε πολλές ασκήσεις) και η επιλογή από προκαθορισμένες απαντήσεις! Ψευδής Ψευδής
ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ ... ΜΕΧΡΙΣ_ΟΤΟΥ ΒΑΣΙΚΟ ΠΑΡΑΔΕΙΓΜΑ! Έλεγχος δεδομένων Τερματισμός με συγκεκριμένη τιμή εισόδου Ψευδής Ψευδής
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ (...ΜΕ_ΒΗΜΑ) μεταβλητή <- μεταβλητή+ τιμή3 μεταβλητή <- τιμή1 μεταβλητή>τιμή2 εντολές ΨΕΥΔΗΣ ΑΛΗΘΗΣ Ψευδής Ψευδής
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ (...ΜΕ_ΒΗΜΑ) Χρησιμοποιείται όταν γνωρίζουμε πόσες φορές θα εκτελεστεί η επανάληψη Όταν το βήμα της μεταβολής είναι 1, δεν σημειώνεται! Το βήμα της επανάληψης μπορεί να είναι αρνητικός ή και πραγματικός αριθμός ! Δεν μπορεί όμως να είναι 0 γιατί τότε καταλήγουμε σε ατέρμων βρόχο Ψευδής Ψευδής
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ (...ΜΕ_ΒΗΜΑ) Ψευδής Ψευδής
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ (...ΜΕ_ΒΗΜΑ) Ψευδής Ποιό από τα δύο θα εκτελεστεί πιο γρήγορα; Ψευδής
ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ (...ΜΕ_ΒΗΜΑ) Πόσες φορές θα εκτελεστούν οι παρακάτω επαναλήψεις; i) Για ι από 10 μέχρι 20 11 iι) Για ι από 10 μέχρι 10 1 iii) Για ι από 10 μέχρι 10 iv) α <- 10 β <- 21 Για ι από α μέχρι β 12 v) Για ι από -10 μέχρι 10 21 Ψευδής Ψευδής vi) Για ι από -10 μέχρι -20
Αντιστοιχία Στις περισσότερες περιπτώσεις μπορούν να χρησιμοποιηθούν και οι 3 δομές επανάληψης, και συχνό ζητούμενο είναι η μετατροπή από την μια μορφή στην άλλη! Παράδειγμα: Εμφάνιση των αριθμών 1 ως 100 Χρησιμοποιείται σε όλες τις περιπτώσεις συνθηκών (αριθμητικών και μη), απλών και σύνθετων Ισχύουν τα ίδια με την Όσο, με την διαφορά ότι οι εντολές εκτελούνται τουλάχιστον μια φορά Χρησιμοποιείται μόνο σε γνωστό πλήθος επαναλήψεων Ψευδής Ψευδής