Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην Πληροφορική Ρωµύλος Κορακίτης Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Η έννοια του αλγορίθµου Παραδείγµατα
Προγραµµατισµός ηλεκτρονικών υπολογιστών Ανάλυση και σχεδίαση προγραµµάτων: Κατανόηση του πεδίου του προβλήµατος (problem domain) Οριοθέτηση των απαιτήσεων του προβλήµατος (problem requirements) Χρειάζεται αλληλεπίδραση µε τον χρήστη; Τι είδους δεδοµένα εµπλέκονται στο πρόβληµα; Τι είδους αποτελέσµατα πρέπει να υπολογίζονται; Κατασκευή ενός αλγορίθµου Εφαρµογή του "διαίρει και βασίλευε" αν το πρόβληµα είναι µεγάλο Κατάτµηση σε µικρά προβλήµατα και εφαρµογή των παραπάνω για καθένα από αυτά Η παραπάνω διαδικασία λέγεται "δοµηµένη" ανάλυση και σχεδίαση" Οργανώνεται µακροσκοπικά µε τεχνικές που αναφέρονται ως: Top-down design Stepwise refinement Modular programming Περισσότερα στη γνωστική περιοχή "Τεχνολογία Λογισµικού" (software engineering) ρ. Βασίλειος Βεσκούκης
Η έννοια του αλγορίθµου (algorithm) Τι είναι αλγόριθµος; Η αναλυτική περιγραφή της µεθοδολογίας που οδηγεί στην ολοκλήρωση µιας συγκεκριµµένης εργασίας, π.χ. την λύση ενός συγκεκριµµένου προβλήµατος. Η λέξη αλγόριθµος προέρχεται από παραφθορά του ονόµατος του µαθηµατικού Abu Ja Far Mohammed Ibn Musa al-khwarizmi (9ος αιώνας µ.χ.) που το βιβλίο του Al-Jabr wa-al-muqabilah έβαλε τα θεµέλια της Άλγεβρας. Παράδειγµα : εργασία: ένα φλυτζάνι ελληνικού καφέ αλγόριθµος: τι ακριβώς πρέπει να κάνει κανείς για να ετοιµάσει ένα φλυτζάνι καφέ Παράδειγµα : εργασία: να προσδιορισθεί ο µέγιστος κοινός διαιρέτης (ΜΚ ) των ακεραίων αριθµών Α και Β αλγόριθµος: τα διαδοχικά βήµατα που οδηγούν στο ζητούµενο αποτέλεσµα (Αλγόριθµος του Ευκλείδη, τρίτος αιώνας π.χ.)
Η έννοια του αλγορίθµου - Παράδειγµα 1 Τι είναι αλγόριθµος; Η αναλυτική περιγραφή της µεθοδολογίας που οδηγεί στην ολοκλήρωση µιας συγκεκριµµένης εργασίας, π.χ. την λύση ενός συγκεκριµµένου προβλήµατος. Παράδειγµα: εργασία: ένα φλυτζάνι ελληνικού καφέ αλγόριθµος: τι ακριβώς πρέπει να κάνει κανείς για να ετοιµάσει ένα φλυτζάνι καφέ 1) να πάρει από το ντουλάπι το µπρίκι, το φλυτζάνι, την ζάχαρη, τον καφέ και το κουταλάκι 2) να γεµίσει το φλυτζάνι νερό και να το αδειάσει στο µπρίκι 3) να βάλει το µπρίκι στην φωτιά 4) να βάλει στο µπρίκι δυο κουταλάκια ζάχαρη 5) να βάλει στο µπρίκι ένα κουταλάκι καφέ 6) να ανακατέψει καλά το µίγµα στο µπρίκι 7) όταν ο καφές φουσκώσει, να βγάλει το µπρίκι από την φωτιά 8) να σερβίρει τον καφέ στο φλυτζάνι 9) να πλύνει το µπρίκι και το κουταλάκι (προαιρετικά!!!)
Η έννοια του αλγορίθµου - Παράδειγµα 2 Τι είναι αλγόριθµος; Η αναλυτική περιγραφή της µεθοδολογίας που οδηγεί στην ολοκλήρωση µιας συγκεκριµµένης εργασίας, π.χ. την λύση ενός συγκεκριµµένου προβλήµατος. Να προσδιορισθεί ο µέγιστος κοινός διαιρέτης (ΜΚ ) των ακεραίων αριθµών Α και Β εδοµένα εισόδου: οι αριθµοί Α και Β εδοµένα εξόδου : ο ΜΚ Προϋποθέσεις : οι Α και Β να είναι θετικοί ακέραιοι Αλγόριθµος Β1) διάβασε τους αριθµούς Α και Β (είσοδος) Β2) αν Α < Β τότε αντάλλαξε τις τιµές των Α και Β (ώστε Α > Β) Β3) εκτέλεσε την διαίρεση Α / Β και ονόµασε Υ το υπόλοιπο της διαίρεσης Β4) αν Υ = 0 τότε ο ΜΚ είναι ο αριθµός Β. Αλλιώς εκτέλεσε τα εξής: - ονόµασε Α την τιµή του Β - ονόµασε Β την τιµή του Υ - επιστροφή στο βήµα 3 Β5) εµφάνισε τον ΜΚ (έξοδος)
Παράδειγµα εφαρµογής του αλγορίθµου του Ευκλείδη Να προσδιορισθεί ο µέγιστος κοινός διαιρέτης (ΜΚ ) των αριθµών 36 και 15 Εφαρµογή Β1: Α=36, Β=15 Β2: (καµιά ενέργεια) Β3: Α/Β = 2, Υ = 6 Β4: Υ 0, συνεπώς Α=15, Β=6 και επιστροφή στο Β3 Β3: Α/Β = 2, Υ = 3 Β4: Υ 0, συνεπώς Α=6, Β=3 και επιστροφή στο Β3 Β3: Α/Β = 2, Υ = 0 Β4: Υ=0, συνεπώς Β5: Ο ΜΚ είναι ο αριθµός 3 αλγόριθµος 1) διάβασε τους αριθµούς Α και Β 2) αν Α < Β τότε αντάλλαξε Α και Β 3) διαίρεσε Α / Β και ονόµασε Υ το υπόλοιπο 4) αν Υ = 0 τότε ο ΜΚ είναι ο αριθµός Β. Αλλιώς εκτέλεσε τα εξής: - ονόµασε Α την τιµή του Β - ονόµασε Β την τιµή του Υ - επιστροφή στο βήµα 3 5) εµφάνισε τον ΜΚ (έξοδος) Άσκηση: Βρείτε τον ΜΚ δύο ζευγών ακεραίων της επιλογής σας, εφαρµόζοντας τον αλγόριθµο του Ευκλείδη.
Προϋποθέσεις ενός σωστού αλγορίθµου 1) Η εργασία, ή το πρόβληµα, να είναι σαφώς ορισµένο και διατυπωµένο µε απλό και αναλυτικό τρόπο 2) Οι περιορισµοί, που τυχόν υπάρχουν κατά την εκτέλεση της εργασίας, να προσδιορίζονται µε ακρίβεια 3) Οι πληροφορίες που χρειάζονται κατά την έναρξη της εργασίας (δεδοµένα εισόδου), καθώς και τα αποτελέσµατα (δεδοµένα εξόδου), να προσδιορίζονται µε σαφήνεια 4) Η εργασία να µπορεί να ολοκληρωθεί σε ένα πεπερασµένο αριθµό επί µέρους στοιχειωδών εργασιών (βηµάτων) 5) Η µέθοδος να οδηγεί σε συγκεκριµµένο αποτέλεσµα για οποιονδήποτε συνδυασµό δεδοµένων εισόδου που είναι δυνατόν να εµφανισθεί.
Παράδειγµα 3 Να προσδιορισθεί ο µέγιστος αριθµός σε ένα σύνολο Ν αριθµών εδοµένα εισόδου: οι Ν αριθµοί α 1, α 2,, α κ,, α Ν εδοµένα εξόδου : ο µέγιστος αριθµός Μ αλγόριθµος: ο Μ θα βρεθεί µε διαδοχική σύγκριση όλων των αριθµών Προϋποθέσεις : 1) το σύνολο δεν είναι κενό, υπάρχει δηλαδή τουλάχιστον ένας αριθµός 2) το πλήθος των αριθµών είναι πεπερασµένο
Παράδειγµα 3 (συνέχεια( συνέχεια) Να προσδιορισθεί ο µέγιστος αριθµός σε ένα σύνολο Ν αριθµών εδοµένα εισόδου: οι Ν αριθµοί α 1, α 2,, α κ,, α Ν εδοµένα εξόδου : ο µέγιστος αριθµός Μ αλγόριθµος: ο Μ θα βρεθεί µε διαδοχική σύγκριση όλων των αριθµών Β1) διάβασε τον αριθµό α 1 Β2) ονόµασε Μ την τιµή του α 1 Β3) αν εξαντλήθηκε το σύνολο των αριθµών εισόδου, πήγαινε στο βήµα 7. Αλλιώς: Β4) διάβασε τον επόµενο αριθµό α κ Β5) αν Μ < α κ τότε δώσε στον Μ την τιµή του α κ Β6) επιστροφή στο βήµα 3 Β7) εµφάνισε τον αριθµό Μ
Παράδειγµα 4 Υπολογισµός της περιµέτρου και του εµβαδού ενός παραλληλογράµµου Γνωρίζουµε ότι Περίµετρος = 2 * [ (µήκος πλευράς 1) + (µήκος πλευράς 2) ] Εµβαδόν = (µήκος πλευράς 1) * (µήκος πλευράς 2) Οταν και µόνον όταν Τα µήκη είναι εκπεφρασµένα στις ίδιες µονάδες Στοιχεία εισόδου Μήκος πλευράς 1 (a) Μήκος πλευράς 2 (b) Στοιχεία εξόδου Περίµετρος (perimeter) Εµβαδόν (area) Υπολογισµοί perimeter = 2* (a + b) [µονάδα µήκους] area = a * b [µονάδα µήκους] 2 ρ. Βασίλειος Βεσκούκης
Παράδειγµα 4 (συνέχεια) Σηµεία προσοχής: Να διαβάσουµε τα δεδοµένα εισόδου και «να τα αποθηκεύσουµε κάπου» Να δεσµεύσουµε χώρο για τα αποτελέσµατα Να κάνουµε σωστά τους υπολογισµούς Αλγόριθµος 1 (εκδοχή α) ΑΡΧΗ ιάβασε το a ιάβασε το b Υπολόγισε το perimeter Υπολόγισε το area Εκτύπωσε το perimeter Εκτύπωσε το area ΤΕΛΟΣ Παραδοχές Ιδιες µονάδες «Τρέχει» µόνο µία φορά ΑΡΧΗ ιάβασε τα a,b Υπολόγισε το perimeter Υπολόγισε το area Εκτύπωσε τα perimeter, area ΤΕΛΟΣ ρ. Βασίλειος Βεσκούκης
Παράδειγµα 4 (συνέχεια) Αλγόριθµος 1 (εκδοχή β) ΑΡΧΗ R: ιάβασε το a ιάβασε το b Αν a=0 τότε ΤΕΛΟΣ Υπολόγισε το perimeter Υπολόγισε το area Εκτύπωσε το perimeter Εκτύπωσε το area Πήγαινε στο σηµείο R ΤΕΛΟΣ Παρατηρήσεις Επαναληπτική εκτέλεση µέχρις ότου a=0 Χρήση ρητής εντολής «Πήγαινε» ΝΑΙ ΑΡΧΗ R: ιάβασε τα a,b a=0? ΟΧΙ Υπολόγισε το perimeter Υπολόγισε το area Εκτύπωσε τα perimeter, area ΤΕΛΟΣ ρ. Βασίλειος Βεσκούκης
Παράδειγµα 5 Να προσδιορισθούν όλοι οι πρώτοι αριθµοί µέχρι τον ακέραιο Ν εδοµένα εισόδου: οι ακέραιοι αριθµοί 1, 2, 3,, Ν εδοµένα εξόδου : οι πρώτοι αριθµοί στο διάστηµα [1,Ν] αλγόριθµος: «Κόσκινο» του Ερατοσθένη (περίπου 250 π.χ.) Υπενθύµιση: «Πρώτοι» ονοµάζονται οι ακέραιοι που έχουν µοναδικούς διαιρέτες τον εαυτό τους και την µονάδα Βασική ιδέα του αλγορίθµου : Θα γίνει διαδοχικός έλεγχος διαιρετότητας των αριθµών µε αυτούς στο διάστηµα [2, N ]. Όσοι έχουν τουλάχιστον ένα διαιρέτη, θα εξαιρούνται από τον περαιτέρω έλεγχο.
Παράδειγµα 5 (συνέχεια( συνέχεια) Να προσδιορισθούν όλοι οι πρώτοι αριθµοί µέχρι τον ακέραιο Ν αλγόριθµος: «Κόσκινο» του Ερατοσθένη (περίπου 250 π.χ.) Β1: διάβασε το όριο Ν Β2: Ι=1, Κ=1, Μ=ακέραιο µέρος της N Β3: αν Ι>Ν πήγαινε στο Β6. Αλλιώς: Β4: α Ι =Ι, Ι=Ι+1 Β5: επιστροφή στο Β3 Β6: αν Κ>Μ πήγαινε στο Β15. Αλλιώς: Β7: Κ=Κ+1 Β8: αν α Κ =0 πήγαινε στο Β6. Αλλιώς: Β9: Ι=Κ+1 Β10: αν Ι>Ν πήγαινε στο Β6. Αλλιώς: Β11: Υ=υπόλοιπο της διαίρεσης (α Ι / Κ) Β12: αν Υ=0 τότε α Ι =0 Β13: Ι=Ι+1 Β14: επιστροφή στο Β10 Β15: Ι=1 Β16: αν Ι>Ν τότε ΤΕΛΟΣ. Αλλιώς: Β17 αν α Ι 0 τότε εµφάνισε το α Ι Β18: Ι=Ι+1 Β19: επιστροφή στο Β16