Τεχνικές Αναπαράστασης αλγορίθµων Διάγραµµα Ροής Αλγοριθµικές δοµές (Ακολουθία Επιλογή ) 1 Βασικές έννοιες Τυποποίηση αναπαράστασης αλγορίθµου - Ανάγκη ύπαρξης ενός κοινού τρόπου αναπαράστασης αλγορίθµων - Κοινή γλώσσα επικοινωνίας των σχεδιαστών αλγορίθµων Η καταγραφή (αναπαράσταση) ενός αλγορίθµου µε απλές λεκτικές προστακτικές προτάσεις (διάβασε, επανέλαβε) και σύµβολα () και συνήθως προέρχονται από διαδεδοµένες γλώσσες προγραµµατισµού Εντολές ψευδοκώδικα Είδος εντολής Έκφραση εντολής Λειτουργία Παράδειγµα Εισόδου Διάβασε Ζητείται από το χρήστη να δώσει τιµές για δεδοµένα Οι τιµές αυτές τοποθετούνται σε αντίστοιχες θέσεις µνήµης (µεταβλητές) Εξόδου Εµφάνισε Εµφανίζει στην οθόνη τα περιεχόµενα µιας µεταβλητής Διάβασε Βάρος Ο χρήστης θα δώσει µια αριθµητική τιµή που θα τοποθετηθεί στη µεταβλητή Βάρος Εµφάνισε Βάρος Το περιεχόµενο (τιµή) της µεταβλητής Βάρος εµφανίζεται στην οθόνη Αντικατάστασης (Εκχώρησης) Αντικατέστησε - Βάλε (Φύλαξε) Τοποθετεί (εκχωρεί) µια τιµή σε µια µεταβλητή Η τιµή που ήδη είχε η µεταβλητή αλλάζει και στη θέση της µπαίνει η νέα τιµή Βάλε το 14 στο Βάρος Βάρος 14 Βάρος Βάρος_Μ + Βάρος_Π Αριθµητικές πράξεις Πρόσθεσε (+), Αφαίρεσε (-), Πολλαπλασίασε (x), Διαίρεσε (/) Πραγµατοποιεί τον αντίστοιχο υπολογισµό Σύνολο Πορτοκάλια + Μήλα ΜΟ Α/Β Η καταγραφή (αναπαράσταση) ενός αλγορίθµου µε απλές λεκτικές προστακτικές προτάσεις (διάβασε 1
Λογικό διάγραµµα Ένας άλλος τρόπος αναπαράστασης αλγορίθµων είναι µια µέθοδος που χρησιµοποιεί απλά σχήµατα που υποστηρίζονται µε απλές λέξεις για την αναπαράσταση συγκεκριµένων λειτουργιών (εντολών) Με αυτόν τον τρόπο δηµιουργούµε ένα διάγραµµα που ονοµάζεται Λογικό Διάγραµµα ή Διάγραµµα ροής Ορισµένα από τα κυριότερα σχήµατα που χρησιµοποιούνται σε ένα λογικό διάγραµµα είναι ΑΡΧΗ ΤΕΛΟΣ Παριστάνει την αρχή και το τέλος του αλγορίθµου ή µιας οµάδας εντολών ΥΠΟΛΟΓΙΣΜΟΣ Η ΕΠΕΞΕΡΓΑΣΙΑ ΕΙΣΟ ΟΣ ΕΞΟ ΟΣ Παριστάνει µια εντολή που αντιστοιχεί σε έναν υπολογισµό ή µια επεξεργασία δεδοµένων Παριστάνει µια (ή περισσότερες) εντολές εισόδου εξόδου ΕΚΤΥΠΩΣΗ Παριστάνει µια εντολή εκτύπωσης Τα βέλη συνδέουν τα παραπάνω σχήµατα και δείχνουν τη ροή (σειρά) εκτέλεσης των εντολών Αλγοριθµικές δοµές Στην ανάπτυξη αλγορίθµων χρησιµοποιώντας είτε ψευδοκώδικα είτε λογικό διάγραµµα έχουµε τη δυνατότητα να εκτελέσουµε οµάδες εντολών µε συγκεκριµένους διαφορετικούς τρόπους Για παράδειγµα µπορεί να έχουµε εντολές που εκτελούνται διαδοχικά η µία µετά την άλλη ή εντολές που εκτελούνται όταν ικανοποιούνται συγκεκριµένα κριτήρια ή εντολές που εκτελούνται επαναλαµβανόµενα Κάθε διαφορετικός τρόπος εκτέλεσης εντολών ορίζει και µια διαφορετική αλγοριθµική δοµή Οι βασικές αλγοριθµικές δοµές είναι 1 Ακολουθία 2 Επιλογή 3 Δοµή Ακολουθίας Στη δοµή ακολουθίας έχουµε ένα σύνολο εντολών οι οποίες εκτελούνται όλες σειριακά η µία µετά την άλλη Το λογικό διάγραµµα και ο ψευδοκώδικας στην περίπτωση της ακολουθίας θα έχουν την παρακάτω µορφή: 2
Λογικό διάγραµµα Εντολή 1 Εντολή 2 Εντολή 3 Εντολή ν Ένα παράδειγµα δοµής ακολουθίας είναι το αλγόριθµος υπολογισµού του αθροίσµατος και του ΜΟ δύο αριθµών που γράψαµε παραπάνω Δοµή επιλογής Δυνατότητα εκτέλεσης µιας ή περισσοτέρων εντολών ανάλογα µε το αποτέλεσµα µιας συνθήκης Λογικό διάγραµµα Απλή επιλογή Αν συνθήκη Τότε Εντολή Αν συνθήκη Τότε Εντολή 1 Εντολή 2 3
Λογικό διάγραµµα Σύνθετη επιλογή Αν συνθήκη Τότε Εντολή 1 Εντολή 2 Λογικό διάγραµµα Φωλιασµένη επιλογή Αν συνθήκη 1 Τότε Αν συνθήκη 2 Τότε Εντολή 1 Εντολή 2 Εντολή 3 Λογικό διάγραµµα Πολλαπλή επιλογή Αν Περιοχή µνήµης = Τ1 Τότε Εντολές 1 = Τ2 Τότε Εντολές 2 =Τν Τότε Εντολές ν Δοµές επανάληψης Υπάρχουν τρεις δοµές επανάληψης, οι δύο µε συνθήκη και µία προκαθορισµένη επανάληψη 4
Εφόσον Επανέλαβε Λογικό Διάγραµµα Εφόσον συνθήκη Επανέλαβε Εντολή 1 Εντολή 2 Εντολή ν Παράδειγµα 1 (µε τιµή φρουρό) Το παρακάτω τµήµα αλγορίθµου διαβάζει αριθµούς και εµφανίζει το διπλάσιό τους εφόσον ο χρήστης δεν δίνει την τιµή 0 ιάβασε A Εφόσον A<>0 Επανέλαβε Εµφάνισε A x 2 ιάβασε Α Παράδειγµα 2 (µε µετρητή) Το παρακάτω τµήµα αλγορίθµου εµφανίζει τους αριθµούς 1,2,3 5
Ι 1 Εφόσον Ι <= 3 Επανέλαβε Εµφάνισε Ι Ι Ι+1 Επανέλαβε µέχρι Λογικό Διάγραµµα Επανέλαβε Εντολή 1 Εντολή 2 Εντολή ν µέχρι συνθήκη Παράδειγµα 1 (µε τιµή φρουρό) Το παρακάτω τµήµα αλγορίθµου διαβάζει αριθµούς και εµφανίζει το διπλάσιό τους µέχρι ο χρήστης να δώσει τιµή 0 6
Επανέλαβε ιάβασε Α Εµφάνισε A x 2 µέχρι Α = 0 Παράδειγµα 2 (µε µετρητή) Το παρακάτω τµήµα αλγορίθµου εµφανίζει τις τιµές 1,2,3 Ι 1 Επανέλαβε Εµφάνισε Ι Ι Ι+1 µέχρι Ι > 3 7
Για ν φορές επανέλαβε Λογικό Διάγραµµα Για ν φορές Επανέλαβε Εντολή 1 Εντολή 2 Εντολή ν 2 Ασκήσεις 1 Δίνεται το παρακάτω τµήµα αλγορίθµου Ποιες είναι οι τιµές των µεταβλητών Χ, Α, Β, C, MAX που θα εµφανιστούν κατά την εκτέλεσή του; Συµπληρώστε τον πίνακα που δίνεται µε όσες γραµµές χρειάζεται Χ 1 Εφόσον Χ < 5 Επανέλαβε Α Χ + 2 Β 3*Α 4 C B A + 4 Αν Α > Β Τότε Αν Α > C Τότε ΜΑΧ Α ΜΑΧ C Αν Β > C Τότε ΜΑΧ Β ΜΑΧ C Εµφάνισε Χ, Α, Β, C, ΜΑΧ X X + 2 8
Χ Α Β C MAX Χ 1 Εφόσον Χ < 5 Επανέλαβε για X= 1 για X= 3 για X= 5 FALSE Α Χ + 2 A=3 A=5 Β 3*Α 4 B=5 B=11 C B A + 4 C=6 C=10 Αν Α > Β Τότε 3>5 F 5>11 F Αν Α > C Τότε ΜΑΧ Α ΜΑΧ C Αν Β > C Τότε 5>6 F 11>10 T ΜΑΧ Β MAX=11 ΜΑΧ C MAX=6 Εµφάνισε Χ, Α, Β, C, 1,3,5,6,6 3,5,11,10,11 ΜΑΧ X X + 2 X=3 X=5 Χ Α Β C MAX 1 3 5 6 6 3 5 11 10 11 2 Δίνεται το ακόλουθο τµήµα αλγορίθµου Ι 0 Ι 0 Επανέλαβε Εφόσον Ι <> 5 Επανέλαβε Ι Ι + 1 Εµφάνισε Ι*2 Ι Ι+1 Μέχρι Ι =5 Εµφάνισε Ι * 2 Να µετατραπεί στο ισοδύναµο µε τη χρήση της εντολής Εφόσον Επανέλαβε 3 Δίνεται το ακόλουθο τµήµα αλγορίθµου 9
ιάβασε Χ Εφόσον Χ <> 0 Επανέλαβε Εµφάνισε Χ*2 ιάβασε X Τι θα γίνει αν η πρώτη τιµή του X είναι 0 ; ιάβασε Χ Επανέλαβε Εµφάνισε Χ*2 ιάβασε Χ Μέχρι Χ = 0 Χρειάζεται µια Αν ιάβασε Χ Αν Χ <> 0 Τότε Επανέλαβε Εµφάνισε Χ*2 ιάβασε Χ Μέχρι Χ = 0 Να µετατραπεί στο ισοδύναµο µε τη χρήση της εντολής Επανέλαβε µέχρι 4 Άσκηση 4 σχολικού βιβλίου Θα θεωρήσουµε ότι αφού ο χρήστης δώσει το βαθµό του τελευταίου µαθήµατος θα δώσει στη συνέχεια µια αρνητική τιµή για να δηλώσει ότι δεν υπάρχουν άλλα µαθήµατα Δίδεται ο ψευδοκώδικας και στη συνέχεια το αντίστοιχο διάγραµµα ροής ΒΜ10 0 ΒΜ15 0 ΒΜ18 0 ΒΜ20 0 ιάβασε Β Εφόσον Β >= 0 Επανέλαβε Αν Β <= 10 Τότε ΒΜ10 ΒΜ10 +1 Αν Β <= 15 Τότε ΒΜ15 ΒΜ15 +1 Αν Β <= 18 Τότε ΒΜ18 ΒΜ18 + 1 Αν Β <= 20 Τότε ΒΜ20 0 Εµφάνισε Λάθος ιάβασε Β Εµφάνισε ΒΜ10, ΒΜ15, ΒΜ18, ΒΜ20 10
11
5 Άσκηση 9 από φυλλάδιο : Κεφάλαιο 4 : Ανάπτυξη Αλγορίθµων οµή επιλογής 2 Να γραφεί αλγόριθµος σε ψευδοκώδικα που διαβάζει το όνοµα, το επίθετο, την τάξη, το µάθηµα, τον προφορικό και τον γραπτό βαθµό ενός µαθητή στο µάθηµα αυτό (Αν ο προφορικός είναι µεγαλύτερος ή µικρότερος από τον γραπτό κατά 5 µονάδες) αν η διαφορά προφορικού από γραπτό βαθµό είναι µεγαλύτερη από 5 µονάδες, τότε ο προφορικός βαθµός αναπροσαρµόζεται (δηλαδή αυξάνεται ή µειώνεται) έτσι ώστε να απέχει 3 µονάδες από τον γραπτό Να γραφεί αλγόριθµος που να υπολογίζει το µέσο όρο στο µάθηµα αυτό αν αυτός προέρχεται από το 30% του προφορικού και το 70% του γραπτού Να εµφανίζει τέλος τα στοιχεία του µαθητή και το ΜΟ στο µάθηµα Αν ο µέσος όρος είναι πάνω από 10 να εµφανίζει «Προάγεται», αλλιώς «Απορρίπτεται» ιάβασε Όνοµα, Επίθετο, Τάξη, Μάθ, ΠΒ, ΓΒ ιαφορά ΠΒ ΓΒ Αν ιαφορά > 5 Τότε ΠΒ ΓΒ + 3 Αν ιαφορά < -5 Τότε ΠΒ ΓΒ -3 ΜΟ 0,30 * ΠΒ + 0,70 * ΓΒ Εµφάνισε Όνοµα, Επίθετο, Τάξη, Μάθ, ΜΟ Αν ΜΟ > 10 Τότε Εµφάνισε Προάγεται Εµφάνισε Απορρίπτεται 12
6 Συνδυασµός ασκήσεων 17, 18 από φυλλάδιο Κεφάλαιο 4 Οδηγός µελέτης Να αναπτύξετε αλγόριθµο ο οποίος θα διαβάζει από το πληκτρολόγιο αριθµούς µέχρι ο χρήστης να δώσει 0 Όταν τελειώσει η εισαγωγή των αριθµών θα έχει υπολογίσει και θα τυπώσει α Το µέγιστο και τη σειρά µε την οποία δόθηκε β Τον ελάχιστο και τη σειρά µε την οποία δόθηκε γ Το άθροισµα τους δ Το πλήθος τους Θεωρήστε ότι ο µεγαλύτερος αριθµός που µπορεί να δοθεί είναι 9999 και ο µικρότερος - 9999 ΜΕΓ -9999 Σ_ΜΕΓ 0 ΕΛ 9999 Σ_ΕΛ 0 ΑΘΡ 0 ΠΛΗ 0 ΜΕΤΡ 0 ιάβασε Χ Εφόσον Χ <> 0 ΜΕΤΡ ΜΕΤΡ + 1 Αν Χ > ΜΕΓ Τότε ΜΕΓ Χ Σ_ΜΕΓ ΜΕΤΡ Αν Χ < ΕΛ Τότε ΕΛ Χ Σ_ΕΛ ΜΕΤΡ ΑΘΡ ΑΘΡ + Χ ιάβασε Χ Εµφάνισε ΜΕΓ, Σ_ΜΕΓ Εµφάνισε ΕΛ, Σ_ΕΛ Εµφάνισε ΠΛΗ Εµφάνισε ΑΘΡ 13
7 Δίνεται ο παρακάτω αλγόριθµος Α 14 Β 5 Χ 0 Αν Α > 4 ΚΑΙ Β < 10 Τότε Χ Χ+1 Εµφάνισε Χ Α 14 Β 5 Χ 0 Αν Α > 4 Η Β < 10 Τότε Χ Χ+1 Εµφάνισε Χ Να φτιάξετε τα διαγράµµατα ροής 14