Δομημένος Προγραμματισμός - Κεφάλαιο 4 - Ανάπτυξη αλγορίθμων *
Αναπαράσταση αλγορίθμων Επανάληψη Αναπαράσταση αλγορίθμων Σημασία χρήσης κοινής γλώσσας Αναφορά στα σήματα του Κ.Ο.Κ. Τυποποίηση του τρόπου με τον οποίο αναπαριστούμε έναν αλγόριθμο Διάφοροι τρόποι αναπαράστασης αλγορίθμων Λογικό διάγραμμα Ψευδο-κώδικας Φραστική Μέθοδος Δομοδιάγραμμα *
Κάνε το ίδιο με λογικό διάγραμμα Αναπαράσταση της επίλυσης του προβλήματος της προσπέρασης με ψευδο-κώδικα Αρχή Πλησίασε το προπορευόμενο όχημα Έλεγξε αν έρχεται άλλο όχημα από την απέναντι πλευρά του δρόμου Αν ναι τότε περίμενε και ξανα-έλεγξε μόλις το απέναντι όχημα περάσει Αν όχι άναψε αριστερό φλας βγες αριστερά επιτάχυνε προσπέρασε άναψε δεξί φλας μπες δεξιά Τέλος Κάνε το ίδιο με λογικό διάγραμμα *
Ψευδο-κώδικας Πάντοτε Χρησιμοποίηση προστακτικής διαφόρων ρημάτων Επανάληψη Ψευδο-κώδικας Πάντοτε Αρχή - Τέλος Χρησιμοποίηση προστακτικής διαφόρων ρημάτων Διάβασε, Εμφάνισε, Πρόσθεσε, Αφαίρεσε, κλπ Η επιλογή των ρημάτων δεν είναι τυχαία αλλά είναι τέτοια ώστε να μετατρέπεται εύκολα σε πρόγραμμα SOS ο πίνακας στην σελίδα 25 *
Πίνακας εντολών ψευδοκώδικα (1/2) Επανάληψη Πίνακας εντολών ψευδοκώδικα (1/2) *
Πίνακας εντολών ψευδοκώδικα (2/2) Επανάληψη Πίνακας εντολών ψευδοκώδικα (2/2) *
Λογικό Διάγραμμα Συνθήκη αληθής; Αρχή Τέλος Υπολογισμός ή Επεξεργασία Επανάληψη Λογικό Διάγραμμα Συνθήκη αληθής; Αρχή Τέλος Υπολογισμός ή Επεξεργασία Υποπρόγραμμα Εκτύπωση Είσοδος - Έξοδος Τα βέλη δείχνουν τη ροή εκτέλεσης των διεργασιών SOS τα σχήματα στην σελίδα 26 Σημείο Διακλάδωσης *
Κάνε το ίδιο με λογικό διάγραμμα Επανάληψη Αναπαράσταση της επίλυσης του προβλήματος «Υπολογισμός και εμφάνιση συνολικού βάρους τριών ατόμων» με ψευδο-κώδικα Αρχή Διάβασε τα δεδομένα βάρος1 βάρος2 βάρος3 Πρόσθεσε τα βάρος1, βάρος2, βάρος3 και βάλε το αποτέλεσμα στο ΣυνολικόΒάρος Εμφάνισε το ΣυνολικόΒάρος Τέλος Κάνε το ίδιο με λογικό διάγραμμα *
Program Asanser; Var Begin End. Προγραμματιστική επίλυση με Pascal του προβλήματος «Υπολογισμός και εμφάνιση συνολικού βάρους τριών ατόμων» Program Asanser; Var baros1, baros2, baros3, sinolikobaros : real; Begin Writeln(Δώσε τιμής για το βάρος του πρώτου’); Readln(baros1); …. sinolikobaros := baros1 + baros2 + baros3; Writeln(‘Το συνολικό βάρος είναι: ’,sinolikobaros); End. *
Κάνε το ίδιο με ψευδοκώδικα Επανάληψη Κάνε το ίδιο με ψευδοκώδικα *
Κάνε το ίδιο με ψευδοκώδικα Επανάληψη Κάνε το ίδιο με ψευδοκώδικα *
Βασικές αλγοριθμικές δομές Επανάληψη Βασικές αλγοριθμικές δομές Αναδρομή (εκτός ύλης εξετάσεων) Ακολουθία Επιλογή Επανάληψη επανέλαβε για Ν φορές εφόσον η συνθήκη είναι αληθής μέχρι η συνθήκη να γίνει αληθής *
Επανάληψη Δομή της ακολουθίας Λογικό Διάγραμμα Ψευδοκώδικας Χρησιμοποιείται για την αντιμετώπιση απλών προβλημάτων, όπου είναι δεδομένη η σειρά εκτέλεσης ενός συνόλου ενεργειών Οι εντολές οι οποίες βρίσκονται σε διαδοχή (sequence) εκτελούνται κατά σειρά που είναι γραμμένες Παράδειγμα η ακολουθία οδηγιών μιας μαγειρικής συνταγής Εντολή1 Εντολή1 Εντολή2 Εντολή2 . . . . . . . . . . . . . . ΕντολήΝ ΕντολήΝ *
Ένα παράδειγμα της δομής της ακολουθίας Να αναπαρασταθεί αλγοριθμικά η εισαγωγή δύο αριθμών από το πληκτρολόγιο, η άθροιση τους και η εμφάνιση τους στην οθόνη Επίσης να γραφεί κώδικας σε Pascal Program akolouthia; Var a,b,c : integer; Begin read(a,b); c: = a + b; write(c); End. Αρχή Διάβασε a, b c ← a + b Εμφάνισε c Σχετικές ασκήσεις: Φυλλάδιο δομή ακολουθίας Τέλος *
Δομή της Επιλογής (Αν…τότε…αλλιώς…) Επανάληψη Δομή της Επιλογής (Αν…τότε…αλλιώς…) Με τη δομή της επιλογής παρέχεται η δυνατότητα εκτέλεσης μιας η περισσοτέρων εντολών ανάλογα με το αποτέλεσμα ελέγχου μιας συνθήκης Πάντοτε ακολουθούμε την μία από τις δύο εναλλακτικές διαδρομές της δομής της επιλογής Τι θα φορέσω αν βρέχει; Στην Pascal η δομή της επιλογής αναπαρίσταται από τις εντολές if-then-else και case Μας λέει αλήθεια; Συνθήκη αληθής; ΝΑΙ ΟΧΙ Εντολή1 Εντολή2 (ΠΡΟΣΟΧΗ: για ψευδοκώδικα δες βιβλίο) *
Άλλες περιπτώσεις της δομής της επιλογής Επανάληψη Άλλες περιπτώσεις της δομής της επιλογής Σχετικές ασκήσεις: φυλλάδιο δομή επιλογής Συνθήκη1 αληθής; ΝΑΙ ΟΧΙ Συνθήκη αληθής; ΝΑΙ ΟΧΙ Εντολή 1 Συνθήκη-2 αληθής; ΝΑΙ ΟΧΙ Εντολή2 Εντολή1 Εντολή2 Εντολή3 (ΠΡΟΣΟΧΗ: για ψευδοκώδικα δες βιβλίο) *
Άλλες περιπτώσεις της δομής της επιλογής Επανάληψη Άλλες περιπτώσεις της δομής της επιλογής Μερικές φορές υπάρχει η δυνατότητα οι επιλογές απόφασης για το περιεχόμενο μιας θέσης μνήμης να είναι περισσότερες από δύο. Π.χ οι επιλογές απόφασης για το τμήμα φοίτησης ενός μαθητή μπορεί να είναι Α1, Α2, κλπ. Στην περίπτωση αυτή η δομή της επιλογής μπορεί να παρασταθεί ως εξής: (ΠΡΟΣΟΧΗ: για ψευδοκώδικα δες βιβλίο) *
Επανάληψη Δομή της Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερα συχνή, αφού πλήθος προβλημάτων μπορούν να επιλυθούν με κατάλληλες επαναληπτικές διαδικασίες. Η λογική των επαναληπτικών διαδικασιών εφαρμόζεται στις περιπτώσεις όπου μια ακολουθία ενεργειών (εντολών) πρέπει να εφαρμοστεί σε ένα σύνολο όμοιων περιπτώσεων. Παράδειγμα η γραφή 1000 φορές της τιμωρίας «θα είμαι καλό παιδί» που μας έβαλε ο καθηγητής ο υπολογισμός του τόκου όλων των λογαριασμών μιας τράπεζας μέσω της πράξης τόκος = ποσό * επιτόκιο η εισαγωγή 100 αριθμών από το πληκτρολόγιο *
Τύποι και μορφές της δομής της επανάληψης Επανάληψη Τύποι και μορφές της δομής της επανάληψης Υπάρχουν δύο τύποι επαναλήψεων: Οι προκαθορισμένοι, όπου το πλήθος των επαναλήψεων είναι δεδομένο πριν αρχίσει η επανάληψη Επανέλαβε για Ν φορές (π.χ. ρίξε 10 σφαλιάρες στον μικρό σου αδερφό) Οι μη προκαθορισμένοι, όπου το πλήθος των επαναλήψεων καθορίζεται από το αποτέλεσμα του ελέγχου μιας συνθήκης κατά την διάρκεια της εκτέλεσης των εντολών της επανάληψης Επανέλαβε εφόσον η συνθήκη είναι αληθής (Εφόσον και για όσο ο μικρός σου αδερφός δεν κλαίει σφαλιάριζε τον) Επανέλαβε μέχρι η συνθήκη να γίνει αληθής (Σφαλιάριζε τον μικρό σου αδερφό μέχρι να βάλει τα κλάματα) *
1-8, σελ 34-35 σχολικού και φυλλάδιο δομή επανάληψης Επανάληψη Δομή της επανάληψης Μη Προκαθορισμένοι Προκαθορισμένοι Σχετικές ασκήσεις: 1-8, σελ 34-35 σχολικού και φυλλάδιο δομή επανάληψης
Επανάληψη Επανάλαβε εφόσον η συνθήκη είναι αληθής π.χ. Εφόσον (ή αλλιώς για όσο) είναι μέρα θα κάνουμε μάθημα Επαναληπτική εκτέλεση μιας σειράς εντολών για όσο ισχύει μια δεδομένη συνθήκη (παραμονής) Λειτουργεί ως εξής: Υπολογίζεται η τιμή της συνθήκης Αν η συνθήκη είναι αληθής εκτελούνται οι προς επανάληψη εντολές επανέλεγχος της συνθήκης Αν η συνθήκη είναι ψευδής συνεχίζεται η ροή του προγράμματος Η διαδικασία επαναλαμβάνεται όσο (while) η τιμή της συνθήκης είναι αληθής και σταματά μόλις γίνει ψευδής Οι εντολές επανάληψης μπορεί να μην εκτελεστούν και καθόλου αν η λογική έκφραση είναι αρχικά ψευδής Εντολή2 Εντολή1 Συνθήκη παραμονής αληθής; ΝΑΙ ΟΧΙ (ΠΡΟΣΟΧΗ: για ψευδοκώδικα δες βιβλίο) *
εφόσον συνθήκη αληθής επανάλαβε Αρχή Εμφάνισε Δώσε αριθμό Διάβασε x Eφόσον x <> -999 επανάλαβε αρχή sum := sum + x Εμφάνισε Δώσε Αριθμό τέλος Τέλος Μέχρι πότε θα εκτελείται το πρόγραμμα; Αρχή x := 0 Eφόσον x < 4 επανάλαβε αρχή Εμφάνισε Το x είναι: Εμφάνισε x x := x + 1 τέλος Τέλος Αποτέλεσμα 0 1 2 3 4 Τι θα γίνει αν δεν υπάρχει το x := x + 1
Παραδείγματα επανάληψης εφόσον η συνθήκη είναι αληθής Ετοιμάζουμε φασολάδα Εφόσον (στάθμη νερού < 3) επανέλαβε ρίξε ένα ποτήρι νερό στην κατσαρόλα Κάνουμε μάθημα και λιποθυμάει ο Παναγιώτης Εφόσον (Παναγιώτης λιπόθυμος) επανέλαβε ρίξε σφαλιάρα ταρακούνα τους ώμους του Πρόκειται με άλλα λόγια για face control που γίνεται στην είσοδο του καταστήματος. Ποια συνθήκη ελέγχουν οι «πορτιέρηδες»; *
Παράδειγμα επανάληψης εφόσον η συνθήκη είναι αληθής a ← 1; Πόσα καλημέρα και πόσα καληνύχτα θα εμφανιστούν; Αν δεν υπήρχε η εντολή a ← a+1 τι θα συνέβαινε; Αν η συνθήκη ήταν a > 5 τι θα συνέβαινε; a ← a + 1; Εμφάνισε Καλημέρα a < 5 ΝΑΙ Συνθήκη παραμονής ΟΧΙ Εμφάνισε Καληνύχτα *
Επανάληψη Επανάλαβε μέχρι η συνθήκη να γίνει αληθής π.χ. Θα κάνουμε μάθημα μέχρι να νυχτώσει Επαναληπτική εκτέλεση μιας σειράς εντολών μέχρι να γίνει αληθής μια δεδομένη συνθήκη (εξόδου) Λειτουργεί ως εξής: Εκτελούνται οι εντολές που βρίσκονται πριν από την συνθήκη εξόδου Υπολογίζεται η τιμή της συνθήκης Αν η συνθήκη είναι ψευδής εκτελούνται οι προς επανάληψη εντολές επανελέγχεται η συνθήκη Αν η συνθήκη είναι αληθής συνεχίζεται η ροή του προγράμματος Η διαδικασία επαναλαμβάνεται μέχρι (until) η τιμή της συνθήκης να γίνει αληθής Οι εντολές επανάληψης θα εκτελεστούν τουλάχιστον μία φορά δεδομένου ότι ο έλεγχος συνθήκης γίνεται μετά την πρώτη εκτέλεση τους Εντολή1 Εντολή2 Συνθήκη εξόδου αληθής; ΟΧΙ ΝΑΙ (ΠΡΟΣΟΧΗ: για ψευδοκώδικα δες βιβλίο) *
επανάλαβε μέχρι η συνθήκη να γίνει αληθής Αρχή Εμφάνισε Δώσε αριθμό Διάβασε x Επανάλαβε sum := sum + x Εμφάνισε Δώσε Αριθμό μέχρι x = -999 Τέλος Μέχρι πότε θα εκτελείται το πρόγραμμα; Αρχή x := 0 Eπανάλαβε Εμφάνισε Το x είναι: Εμφάνισε x x := x + 1 μέχρι x > = 4 Τέλος Αποτέλεσμα 0 1 2 3 4 Τι θα γίνει αν δεν υπάρχει το x := x + 1
Παράδειγμα επανάληψης μέχρι η συνθήκη να γίνει αληθής a ← 1; Πόσα καλημέρα και πόσα καληνύχτα θα εμφανιστούν; Αν δεν υπήρχε η εντολή a←a+1 τι θα συνέβαινε; Αν η συνθήκη ήταν a < 5 τι θα συνέβαινε; Εμφάνισε Καλημέρα a ← a + 1; a > 5 ΟΧΙ Συνθήκη εξόδου ΝΑΙ Εμφάνισε Καληνύχτα *
Σύγκριση επανάλαβε εφόσον / επανέλαβε μέχρι Σύγκριση επανάλαβε εφόσον / επανέλαβε μέχρι a ← 1; a ← 1; Εμφάνισε Καλημέρα a ← a + 1; a ← a + 1; Εμφάνισε Καλημέρα a < 5 a > 5 ΝΑΙ Συνθήκη εξόδου (της αρέσει το ψέμα) ΟΧΙ Συνθήκη παραμονής (της αρέσει η αλήθεια) ΟΧΙ ΝΑΙ Εμφάνισε Καληνύχτα Εμφάνισε Καληνύχτα *