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