Διάλεξη 3 Αλγόριθμοι & Προγραμματισμός Εισαγωγή στις Εφαρμογές ΤΠΕ Χαράλαμπος Καραγιαννίδης karagian@uth.gr Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 1/52 11/10/2016
Σύνοψη Μαθήματος 1. Εισαγωγή στις ΤΠΕ, εισαγωγή στο μάθημα 2. Εσωτερική οργάνωση & λειτουργία Η/Υ 3. Αλγόριθμοι & προγραμματισμός Η/Υ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 2/52 11/10/2016
Θυμηθείτε Υπολογιστής > πολυεργαλείο F το χαρακτηριστικό που καθιστά τους υπολογιστές τόσο σημαντικούς είναι η δυνατότητα να κάνουν τόσο διαφορετικές δουλειές F διαφορετικά προγράμματα μπορούν να μετατρέψουν τον ίδιο υπολογιστή σε προσωπικό βοηθό, βάση δεδομένων, παιχνίδι, κλπ, κλπ, κλπ Θα πρέπει όμως να εξηγήσουμε στον υπολογιστή F ποιο πρόβλημα θέλουμε να λύσει F ποια βήματα πρέπει να ακολουθήσει ακριβώς Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 3/52 11/10/2016
Σύνοψη Διάλεξης Αλγόριθμοι Προγραμματισμός Συζήτηση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 4/52 11/10/2016
Ορισμός Αλγόριθμος F μια ακολουθία εντολών F μέσω της οποίας είναι δυνατή η ακριβής έκφραση μιας βήμα- προς- βήμα διαδικασίας F που τερματίζει την εκτέλεσή της μετά την ολοκλήρωση ενός πεπερασμένου αριθμού βημάτων F και η οποία επιτρέπει την επίλυση ενός δεδομένου προβλήματος Παράδειγμα F οδηγίες για να έρθει κάποιος στο σπίτι σας... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 5/52 11/10/2016
Απλό παράδειγμα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 6/52 11/10/2016
Σύνθετο παράδειγμα Το κόσκινο του Ερατοσθένη να βρεθούν όλοι οι πρώτοι αριθμοί μεταξύ του 1 και του Ν 1. καταγράφουμε όλους τους αριθμούς από το 2 μέχρι το Ν σε μια λίστα 2. για κάθε πρώτο που συναντάμε στη λίστα, διαγράφουμε από τη λίστα όλα τα πολλαπλάσιά του 3. αν ο πρώτος αριθμός που συναντάμε στη λίστα είναι μικρότερος της τετραγωνικής ρίζας του Ν, τότε επαναλαμβάνουμε το βήμα 2, διαφορετικά η λίστα περιλαμβάνει μόνο πρώτους αριθμούς Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 7/52 11/10/2016
Άλλα παραδείγματα κατασκευή καφέ προετοιμασία ενός φαγητού μεταφορά καφέ από το κυλικείο διέλευση αυτοκινήτων από διασταύρωση με φανάρια διέλευση αυτοκινήτων από διασταύρωση χωρίς φανάρια εύρεση μεγαλύτερου/μικρότερου αριθμού και μέσου όρου από μια λίστα αριθμών??? Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 8/52 11/10/2016
Τι ΔΕΝ είναι αλγόριθμος ευρετική μέθοδος Hill- climbing heurisvc F ανεβαίνουμε ένα βουνό και βρισκόμαστε μπροστά σε ένα σταυροδρόμι με δύο μονοπάτια F δε φαίνεται που οδηγεί κάθε μονοπάτι F επιλέγουμε το μονοπάτι που είναι ανηφορικό F είμαστε σίγουροι ότι θα μας οδηγήσει στην κορυφή? F τις περισσότερες φορές ναι, αλλά όχι πάντα... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 9/52 11/10/2016
Απαιτήσεις αλγορίθμων Θα πρέπει F να περιγράφει με ακρίβεια τα δεδομένα που θα χρησιμοποιήσει F κάθε βήμα του πρέπει να είναι τελείως καθορισμένο και να φανερώνει τι ακριβώς κάνει F να δίνει με ακρίβεια τα αποτελέσματα που παράγονται από κάθε βήμα του F να ολοκληρώνει πάντοτε σωστά τη σκέψη επίλυσης του προβλήματος, μετά από ένα πεπερασμένο αριθμό βημάτων, που το καθένα εκτελείται σε πεπερασμένο χρόνο Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 10/52 11/10/2016
Κατηγορίες αλγορίθμων By implementavon F recursion or iteravon (επαναληπτικοί) F logical (λογικοί) F serial, parallel or distributed (σειριακοί, παράλληλοι ή κατανεμημένοι) F determinisvc or non- determinisvc (ντετερμινιστικοί ή μη- ντετερμινιστικοί) F exact or approximate (ακριβείς ή προσεγγιστικοί) By design F brute- force or exhausvve search F divide and conquer F dynamic programming F greedy algorithms F linear programming F reducvon F enumeravon Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 11/52 11/10/2016
Αναπαράσταση αλγορίθμων λογικό διάγραμμα ΑΡΧΗ ΤΕΛΟΣ υπολογισµός ή επεξεργασία υποπρόγραµµα είσοδος / έξοδος εκτύπωση ναι συνθήκη αληθής όχι Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 12/52 11/10/2016
Παράδειγμα ΑΡΧΗ διάβασε όνοµα επώνυµο ΔΜ ναι ΔΜ>200 όχι τύπωσε "πτυχιούχος" τύπωσε επώνυµο, όνοµα τύπωσε "φοιτητής" ΤΕΛΟΣ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 13/52 11/10/2016
Παράδειγμα (2/2) αρχή κάρτα κωδικός ανάληψη? όχι κατάθεση? όχι ναι ναι ποσό ποσό χρήµατα επεξεργασία στοιχείων επεξεργασία στοιχείων χρήµατα απόδειξη απόδειξη κάρτα τέλος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 14/52 11/10/2016
Αναπαράσταση αλγορίθμων - ψευδοκώδικας αρχή διάβασε όνομα, επώνυμο, αριθμός ΔΜ τύπωσε όνομα, επώνυμο αν (αριθμός ΔΜ) >= 100 τότε τύπωσε πτυχιούχος αλλιώς τύπωσε φοιτητές τέλος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 15/52 11/10/2016
Βασικές αλγοριθμικές δομές - επιλογή αν συνθήκη αληθής ΝΑΙ συνθήκη αληθής ΟΧΙ τότε εντολή 1 αλλιώς εντολή 2 εντολή 1 εντολή 2 if condivon true then εντολή 1 else εντολή 2 Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 16/52 11/10/2016
Βασικές αλγοριθμικές δομές - επανάληψη επανέλαβε (αν συνθήκη αληθής) εντολή 1... εντολή ν εντολή 1... εντολή 2 repeat (if condivon true) εντολή 1... εντολή 2 συνθήκη αληθής ΝΑΙ ΟΧΙ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 17/52 11/10/2016
Συνδυασμοί παράδειγμα ΝΑΙ συνθήκη 1 αληθής ΟΧΙ ΝΑΙ συνθήκη 2 αληθής ΟΧΙ εντολή 3 εντολή 4 εντολή 1 εντολή 2 συνθήκη 3 αληθής ΝΑΙ ΟΧΙ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 18/52 11/10/2016
Σύνοψη διάλεξης Αλγόριθμοι Προγραμματισμός Συζήτηση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 19/52 11/10/2016
Εισαγωγή Πρέπει να εισάγουμε στον υπολογιστή έναν αλγόριθμο για να να λύσει ένα πρόβλημα F ο υπολογιστής καταλαβαίνει μόνο 0/1 F η γλώσσα που μπορούμε να χτίσουμε πάνω στα bits ονομάζεται γλώσσα μηχανής F δεν είναι καθόλου εύκολο να εκφράσουμε τον αλγόριθμο σε γλώσσα μηχανής F γι αυτό, τον εκφράζουμε σε μια άλλη, πιο κατανοητή γλώσσα προγραμματισμού, και χρησιμοποιούμε ένα μεταφραστή για να κάνει τη μετάφραση σε γλώσσας μηχανής Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 20/52 11/10/2016
Δηλαδή... αλγόριθµος πρόγραµµα επεξεργαστής κειµένου, προγραµµατιστικό περιβάλλον µεταφραστής εκτελέσιµο πρόγραµµα υπολογιστής εκτέλεση προγράµµατος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 21/52 11/10/2016
Χαρακτηριστικά γλωσσών Αλφάβητο F οι χαρακτήρες που μπορούν να χρησιμοποιηθούν για τη σύνθεση λέξεων (εντολών) Συντακτικό F οι κανόνες σχηματισμού προτάσεων από λέξεις Λεξιλόγιο F δεσμευμένες λέξεις Ιδιότητες F εκφραστικότητα και αποτελεσματικότητα (expressiveness, efficiency) Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 22/52 11/10/2016
Κατηγορίες γλωσσών Διαδικαστικός προγραμματισμός (procedural) F ο κόσμος αποτελείται από δεδομένα που αλλάζουν μέσω κάποιων συναρτήσεων (διαδικασιών) Αντικειμενοστραφής προγραμματισμός (object- oriented) F ο κόσμος αποτελείται από αντικείμενα που έχουν συγκεκριμένες ιδιότητες και τρόπους για να αλληλεπιδρούν Λογικός προγραμματισμός (logic) F ο κόσμος αποτελείται από προτάσεις που είναι σωστές ή λάθος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 23/52 11/10/2016
Παραδείγματα γλωσσών C, C++ Java Prolog Pascal Fortran Basic Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 24/52 11/10/2016
Παράδειγμα πρόγραμμα C main( ) { int a, b, c, sum; a = 1; b = 2; c = 3; sum = a + b + c; prin ("sum is %d", sum); } Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 25/52 11/10/2016
Παράδειγμα πρόγραμμα C (2/3) #include <stdio.h> #define KILOS_PER_POUND.45359 main() { int pounds; prin (" US lbs UK st. lbs INT Kg\n"); for(pounds=10; pounds < 250; pounds+=10) { int stones = pounds / 14; int uklbs = pounds % 14; float kilos = pounds * KILOS_PER_POUND; prin (" %d %d %d %f\n", pounds, stones, uklbs, kilos); } } Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 26/52 11/10/2016
Παράδειγμα πρόγραμμα C (3/3) #include <stdio.h> void print_converted(int pounds) { int stones = pounds / 14; int uklbs = pounds % 14; float kilos_per_pound = 0.45359; float kilos = pounds * kilos_per_pound; prin (" %3d %2d %2d %6.2f\n", pounds, stones, uklbs, kilos); } main() { int us_pounds; prin ("Give an integer weight in Pounds : "); scanf("%d", &us_pounds); prin (" US lbs UK st. lbs INT Kg\n"); print_converted(us_pounds); } Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 27/52 11/10/2016
Χ. Καραγιαννίδης, ΠΘ- ΠΤΕΑ Εισαγωγή στις Εφαρμογές ΤΠΕ Εργαλεία Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 28/52 11/10/2016
Τελικά πώς προγραμματίζουμε??? Donald Knuth F ο προγραμματισμός των υπολογιστών είναι μια έκφανση τέχνης, όπως η δημιουργία ενός ποιήματος ή μουσικής Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 29/52 11/10/2016
Σύνοψη διάλεξης Αλγόριθμοι Προγραμματισμός Συζήτηση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 30/52 11/10/2016
Είναι σοβαρό Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 31/52 11/10/2016
Λύση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 32/52 11/10/2016
Ψευδοκώδικας Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 33/52 11/10/2016
Δυσκολότερο πρόβλημα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 34/52 11/10/2016
Παράδειγμα ταξινόμησης bubble sort algorithm Ο παλαιότερος και πιο αργός αλγόριθμος F συγκρίνει κάθε στοιχείο της λίστας με το επόμενό του, και αν δεν είναι στη σωστή σειρά τα μεταθέτει F τα στοιχεία με μεγάλες τιμές "σπρώχνονται" στο τέλος, και αυτά με μικρές τιμές προς την αρχή F συνεχίζεται μέχρι να περάσει από όλα τα στοιχεία και να μην κάνει καμία αλλαγή (δηλαδή όλα τα στοιχεία είναι ταξινομημένα) Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 35/52 11/10/2016
Κώδικας void bubblesort(int numbers[], int array_size) { int i, j, temp; for (i = (array_size - 1); i >= 0; i- - ) { for (j = 1; j <= i; j++) { if (numbers[j- 1] > numbers[j]) { temp = numbers[j- 1]; numbers[j- 1] = numbers[j]; numbers[j] = temp; } } } } Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 36/52 11/10/2016
Παράδειγμα ταξινόμησης quick sort algorithm Ένας πιο γρήγορος αλγόριθμος για το ίδιο πρόβλημα F μέχρι η λίστα να ταξινομηθεί F επιλέγει ένα στοιχείο της λίστας F κόβει τη λίστα σε δύο μέρη το ένα με τα στοιχεία που είναι μεγαλύτερα από το παραπάνω, και το άλλο με τα στοιχεία που είναι μικρότερα F συνεχίζει την ίδια διαδικασία και στις υπο- λίστες που προκύπτουν δύο Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 37/52 11/10/2016
Δείτε τη διαφορά Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 38/52 11/10/2016
Συνεπώς Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 39/52 11/10/2016
Παράδειγμα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 40/52 11/10/2016
Έξυπνο παράδειγμα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 41/52 11/10/2016
Κώδικας Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 42/52 11/10/2016
Και λίγη φιλοσοφία Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 43/52 11/10/2016
Όνειρο ζωή στην ύλη Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 44/52 11/10/2016
Τα όρια των αλγορίθμων Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 45/52 11/10/2016
Ερωτήματα Μπορεί ένας αλγόριθμος να λύνει περισσότερα από ένα προβλήματα? F φυσικά F Αθήνα- Θεσσαλονίκη, και Θεσσαλονίκη- Αθήνα J Υπάρχουν περισσότεροι από έναν αλγόριθμο για την επίλυση του ίδιου προβλήματος? F φυσικά F Αθήνα- Θεσσαλονίκη μέσω Λαμίας, Αθήνα- Θεσσαλονίκη μέσω Πάτρας J F μάλιστα κάποιοι είναι καλύτεροι από κάποιους άλλους Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 46/52 11/10/2016
Μεγάλο ερώτημα Για κάθε πρόβλημα υπάρχει ένας αλγόριθμος που μπορεί να το λύσει? F είναι μεγάλο ερώτημα??? Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 47/52 11/10/2016
Απαντήσεις J David Hilbert, 1900 F wir muessen wissen, werden wissen wir Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 48/52 11/10/2016
Απαντήσεις L Kurt Goedel, 1931 F υπάρχουν (μαθηματικές) προτάσεις που δεν αποδεικνύονται... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 49/52 11/10/2016
Απαντήσεις L L Alan Turing, 1936 F δε μπορούμε να γνωρίζουμε ποιες προτάσεις ανήκουν στην "κακή" κατηγορία... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 50/52 11/10/2016
Ειδική βιβλιογραφία Sanjeev Arora F The Computavonal Universe, Princeton University, Course COS 116. Απόστολος Δοξιάδης F Ο Θείος Πέτρος και η Εικασία του Γκόλντμπαχ, Εκδόσεις Καστανιώτη, 2000. Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 51/52 11/10/2016
Καλό βράδυ karagian@uth.gr Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 52/52 11/10/2016