Διάλεξη 3 Αλγόριθμοι & Προγραμματισμός Εισαγωγή στις Εφαρμογές ΤΠΕ Χαράλαμπος Καραγιαννίδης karagian@uth.gr Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 1/57 11/10/2016
Σύνοψη Μαθήματος 1. Εισαγωγή στις ΤΠΕ, εισαγωγή στο μάθημα 2. Εσωτερική οργάνωση & λειτουργία Η/Υ 3. Αλγόριθμοι & προγραμματισμός Η/Υ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 2/57 11/10/2016
Θυμηθείτε Υπολογιστής > πολυεργαλείο F το χαρακτηριστικό που καθιστά τους υπολογιστές τόσο σημαντικούς είναι η δυνατότητα να κάνουν τόσο διαφορετικές δουλειές F διαφορετικά προγράμματα μπορούν να μετατρέψουν τον ίδιο υπολογιστή σε προσωπικό βοηθό, βάση δεδομένων, παιχνίδι, κλπ, κλπ, κλπ Θα πρέπει όμως να εξηγήσουμε στον υπολογιστή F ποιο πρόβλημα θέλουμε να λύσει F ποια βήματα πρέπει να ακολουθήσει ακριβώς Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 3/57 11/10/2016
Γιατί πρέπει να μας ενδιαφέρει??? Αλγόριθμοι F η αλγοριθμική/υπολογιστική σκέψη είναι απαραίτητη σε όλους μας F και αποτελεί ένα σημαντικό αντικείμενο διδασκαλίας Προγραμματισμός F υπάρχουν σήμερα πολλά ισχυρά εργαλεία F που δεν απαιτούν ειδικές γνώσεις προγραμματισμού F και δίνουν τη δυνατότητα για την παραγωγή ψηφιακού εκπαιδευτικού υλικού και την ανάπτυξη υπηρεσιών εκπαίδευσης και κατάρτισης Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 4/57 11/10/2016
Σύνοψη Διάλεξης Αλγόριθμοι Προγραμματισμός Συζήτηση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 5/57 11/10/2016
Ορισμός Αλγόριθμος F μια ακολουθία εντολών F μέσω της οποίας είναι δυνατή η ακριβής έκφραση μιας βήμα-προς-βήμα διαδικασίας F που τερματίζει την εκτέλεσή της μετά την ολοκλήρωση ενός πεπερασμένου αριθμού βημάτων F και η οποία επιτρέπει την επίλυση ενός δεδομένου προβλήματος Παράδειγμα F οδηγίες για να έρθει κάποιος στο σπίτι σας... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 6/57 11/10/2016
Απλό παράδειγμα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 7/57 11/10/2016
Σύνθετο παράδειγμα Το κόσκινο του Ερατοσθένη Να βρεθούν όλοι οι πρώτοι αριθμοί μεταξύ του 1 και του Ν 1. Καταγράφουμε όλους τους αριθμούς από το 2 μέχρι το Ν σε μια λίστα 2. Για κάθε πρώτο που συναντάμε στη λίστα, διαγράφουμε από τη λίστα όλα τα πολλαπλάσιά του 3. Αν ο πρώτος αριθμός που συναντάμε στη λίστα είναι μικρότερος της τετραγωνικής ρίζας του Ν, τότε επαναλαμβάνουμε το βήμα 2, διαφορετικά η λίστα περιλαμβάνει μόνο πρώτους αριθμούς Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 8/57 11/10/2016
Άλλα παραδείγματα Κατασκευή καφέ Προετοιμασία ενός φαγητού Μεταφορά καφέ από το κυλικείο Διέλευση αυτοκινήτων από διασταύρωση με φανάρια Διέλευση αυτοκινήτων από διασταύρωση χωρίς φανάρια Εύρεση μεγαλύτερου/μικρότερου αριθμού και μέσου όρου από μια λίστα αριθμών??? Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 9/57 11/10/2016
Τι ΔΕΝ είναι αλγόριθμος ευρετική μέθοδος Hill-climbing heuriswc F ανεβαίνουμε ένα βουνό και βρισκόμαστε μπροστά σε ένα σταυροδρόμι με δύο μονοπάτια F δε φαίνεται που οδηγεί κάθε μονοπάτι F επιλέγουμε το μονοπάτι που είναι ανηφορικό F είμαστε σίγουροι ότι θα μας οδηγήσει στην κορυφή? F τις περισσότερες φορές ναι, αλλά όχι πάντα... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 10/57 11/10/2016
Απαιτήσεις αλγορίθμων Θα πρέπει F να περιγράφει με ακρίβεια τα δεδομένα που θα χρησιμοποιήσει F κάθε βήμα του πρέπει να είναι τελείως καθορισμένο και να φανερώνει τι ακριβώς κάνει F να δίνει με ακρίβεια τα αποτελέσματα που παράγονται από κάθε βήμα του F να ολοκληρώνει πάντοτε σωστά τη σκέψη επίλυσης του προβλήματος, μετά από ένα πεπερασμένο αριθμό βημάτων, που το καθένα εκτελείται σε πεπερασμένο χρόνο Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 11/57 11/10/2016
Κατηγορίες αλγορίθμων By implementawon F recursion or iterawon (επαναληπτικοί) F logical (λογικοί) F serial, parallel or distributed (σειριακοί, παράλληλοι ή κατανεμημένοι) F determiniswc or nondeterminiswc (ντετερμινιστικοί ή μη-ντετερμινιστικοί) F exact or approximate (ακριβείς ή προσεγγιστικοί) By design F brute-force or exhauswve search F divide and conquer F dynamic programming F greedy algorithms F linear programming F reducwon F enumerawon Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 12/57 11/10/2016
Αναπαράσταση αλγορίθμων λογικό διάγραμμα ΑΡΧΗ ΤΕΛΟΣ υπολογισµός ή επεξεργασία υποπρόγραµµα είσοδος / έξοδος εκτύπωση ναι συνθήκη αληθής όχι Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 13/57 11/10/2016
Παράδειγμα ΑΡΧΗ διάβασε όνοµα επώνυµο ΔΜ ναι ΔΜ>200 όχι τύπωσε "πτυχιούχος" τύπωσε επώνυµο, όνοµα τύπωσε "φοιτητής" ΤΕΛΟΣ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 14/57 11/10/2016
Παράδειγμα (2/2) αρχή κάρτα κωδικός ανάληψη? όχι κατάθεση? όχι ναι ναι ποσό ποσό χρήµατα επεξεργασία στοιχείων επεξεργασία στοιχείων χρήµατα απόδειξη απόδειξη κάρτα τέλος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 15/57 11/10/2016
Αναπαράσταση αλγορίθμων - ψευδοκώδικας αρχή διάβασε όνομα, επώνυμο, αριθμός ΔΜ τύπωσε όνομα, επώνυμο αν (αριθμός ΔΜ) >= 100 τότε τύπωσε πτυχιούχος αλλιώς τύπωσε φοιτητές τέλος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 16/57 11/10/2016
Βασικές αλγοριθμικές δομές - επιλογή αν συνθήκη αληθής ΝΑΙ συνθήκη αληθής ΟΧΙ τότε εντολή 1 αλλιώς εντολή 2 εντολή 1 εντολή 2 if condiwon true then εντολή 1 else εντολή 2 Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 17/57 11/10/2016
Βασικές αλγοριθμικές δομές - επανάληψη επανέλαβε (αν συνθήκη αληθής) εντολή 1... εντολή ν εντολή 1... εντολή 2 repeat (if condiwon true) εντολή 1... εντολή 2 συνθήκη αληθής ΝΑΙ ΟΧΙ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 18/57 11/10/2016
Συνδυασμοί παράδειγμα ΝΑΙ συνθήκη 1 αληθής ΟΧΙ ΝΑΙ συνθήκη 2 αληθής ΟΧΙ εντολή 3 εντολή 4 εντολή 1 εντολή 2 συνθήκη 3 αληθής ΝΑΙ ΟΧΙ Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 19/57 11/10/2016
Σύνοψη διάλεξης Αλγόριθμοι Προγραμματισμός Συζήτηση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 20/57 11/10/2016
Εισαγωγή Πρέπει να εισάγουμε στον υπολογιστή έναν αλγόριθμο για να να λύσει ένα πρόβλημα F ο υπολογιστής καταλαβαίνει μόνο 0/1 F η γλώσσα που μπορούμε να χτίσουμε πάνω στα bits ονομάζεται γλώσσα μηχανής F δεν είναι καθόλου εύκολο να εκφράσουμε τον αλγόριθμο σε γλώσσα μηχανής F γι αυτό, τον εκφράζουμε σε μια άλλη, πιο κατανοητή γλώσσα προγραμματισμού, και χρησιμοποιούμε ένα μεταφραστή για να κάνει τη μετάφραση σε γλώσσας μηχανής Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 21/57 11/10/2016
Δηλαδή... αλγόριθµος πρόγραµµα επεξεργαστής κειµένου, προγραµµατιστικό περιβάλλον µεταφραστής εκτελέσιµο πρόγραµµα υπολογιστής εκτέλεση προγράµµατος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 22/57 11/10/2016
Χαρακτηριστικά γλωσσών Αλφάβητο F οι χαρακτήρες που μπορούν να χρησιμοποιηθούν για τη σύνθεση λέξεων (εντολών) Συντακτικό F οι κανόνες σχηματισμού προτάσεων από λέξεις Λεξιλόγιο F δεσμευμένες λέξεις Ιδιότητες F εκφραστικότητα και αποτελεσματικότητα (expressiveness, efficiency) Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 23/57 11/10/2016
Κατηγορίες γλωσσών Διαδικαστικός προγραμματισμός (procedural) F ο κόσμος αποτελείται από δεδομένα που αλλάζουν μέσω κάποιων συναρτήσεων (διαδικασιών) Αντικειμενοστραφής προγραμματισμός (object-oriented) F ο κόσμος αποτελείται από αντικείμενα που έχουν συγκεκριμένες ιδιότητες και τρόπους για να αλληλεπιδρούν Λογικός προγραμματισμός (logic) F ο κόσμος αποτελείται από προτάσεις που είναι σωστές ή λάθος Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 24/57 11/10/2016
Παραδείγματα γλωσσών C, C++ Java Prolog Pascal Fortran Basic Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 25/57 11/10/2016
Παράδειγμα πρόγραμμα C main( ) { int a, b, c, sum; a = 1; b = 2; c = 3; sum = a + b + c; printf("sum is %d", sum); } Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 26/57 11/10/2016
Παράδειγμα πρόγραμμα C (2/3) #include <stdio.h> #define KILOS_PER_POUND.45359 main() { int pounds; printf(" 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; printf(" %d %d %d %f\n", pounds, stones, uklbs, kilos); } } Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 27/57 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; printf(" %3d %2d %2d %6.2f\n", pounds, stones, uklbs, kilos); } main() { int us_pounds; printf("give an integer weight in Pounds : "); scanf("%d", &us_pounds); printf(" US lbs UK st. lbs INT Kg\n"); print_converted(us_pounds); } Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 28/57 11/10/2016
Περιβάλλοντα ανάπτυξης Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 29/57 11/10/2016
Σύνοψη διάλεξης Αλγόριθμοι Προγραμματισμός Συζήτηση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 30/57 11/10/2016
Είναι σοβαρό Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 31/57 11/10/2016
Λύση Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 32/57 11/10/2016
Ψευδοκώδικας Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 33/57 11/10/2016
Δυσκολότερο πρόβλημα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 34/57 11/10/2016
Παράδειγμα ταξινόμησης bubble sort algorithm Ο παλαιότερος και πιο αργός αλγόριθμος F συγκρίνει κάθε στοιχείο της λίστας με το επόμενό του, και αν δεν είναι στη σωστή σειρά τα μεταθέτει F τα στοιχεία με μεγάλες τιμές "σπρώχνονται" στο τέλος, και αυτά με μικρές τιμές προς την αρχή F συνεχίζεται μέχρι να περάσει από όλα τα στοιχεία και να μην κάνει καμία αλλαγή (δηλαδή όλα τα στοιχεία είναι ταξινομημένα) Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 35/57 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/57 11/10/2016
Παράδειγμα ταξινόμησης quick sort algorithm Ένας πιο γρήγορος αλγόριθμος για το ίδιο πρόβλημα F μέχρι η λίστα να ταξινομηθεί F επιλέγει ένα στοιχείο της λίστας F κόβει τη λίστα σε δύο μέρη το ένα με τα στοιχεία που είναι μεγαλύτερα από το παραπάνω, και το άλλο με τα στοιχεία που είναι μικρότερα F συνεχίζει την ίδια διαδικασία και στις υπο-λίστες που προκύπτουν δύο Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 37/57 11/10/2016
Δείτε τη διαφορά Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 38/57 11/10/2016
Συνεπώς Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 39/57 11/10/2016
Παράδειγμα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 40/57 11/10/2016
Έξυπνο παράδειγμα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 41/57 11/10/2016
Κώδικας Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 42/57 11/10/2016
Και λίγη φιλοσοφία Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 43/57 11/10/2016
Τα όρια των αλγορίθμων Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 44/57 11/10/2016
Ερωτήματα Μπορεί ένας αλγόριθμος να λύνει περισσότερα από ένα προβλήματα? F φυσικά F Αθήνα-Θεσσαλονίκη, και Θεσσαλονίκη-Αθήνα J Υπάρχουν περισσότεροι από έναν αλγόριθμο για την επίλυση του ίδιου προβλήματος? F φυσικά F Αθήνα-Θεσσαλονίκη μέσω Λαμίας, Αθήνα-Θεσσαλονίκη μέσω Πάτρας J F μάλιστα κάποιοι είναι καλύτεροι από κάποιους άλλους Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 45/57 11/10/2016
Μεγάλο ερώτημα Για κάθε πρόβλημα υπάρχει ένας αλγόριθμος που μπορεί να το λύσει? F είναι μεγάλο ερώτημα??? Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 46/57 11/10/2016
Απαντήσεις... David Hilbert, 1900 F wir muessen wissen, wir werden wissen Kurt Goedel, 1931 F θεώρημα μη-πληρότητας F υπάρχουν (μαθηματικές) προτάσεις που δεν αποδεικνύονται... Alan Turing, 1936 F δε μπορούμε να γνωρίζουμε ποιες προτάσεις ανήκουν στην "κακή" κατηγορία... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 47/57 11/10/2016
Τελικά πώς προγραμματίζουμε??? Donald Knuth F ο προγραμματισμός των υπολογιστών είναι μια έκφανση τέχνης, όπως η δημιουργία ενός ποιήματος ή μουσικής Κι εμείς οι παιδαγωγοί κύριε??? Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 48/57 11/10/2016
Visual Programming Οπτικές γλώσσες προγραμματισμού F any programming language that lets users create programs by manipulawng program elements graphically rather than by specifying them textually γλώσσες προγραμματισμού όπου χρήστες δημιουργούν προγράμματα καθώς χειρίζονται αντικείμενα σε γραφική μορφή και όχι σε μορφή κειμένου Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 49/57 11/10/2016
Παράδειγμα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 50/57 11/10/2016
Authoring Tools Εργαλεία συγγραφής (πολυμεσικού) περιεχομένου F programs that have pre-programmed elements for the development of interacwve mulwmedia so ware wtles by non-programmers προγράμματα με έτοιμα στοιχεία για τη δημιουργία διαδραστικού πολυμεσικού λογισμικού από μη-προγραμματιστές F they allow users/authors to create mulwmedia applicawons for manipulawng mulwmedia objects F they usually include an authoring language, a programming language built (or extended) with funcwonality for represenwng the tutoring system Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 51/57 11/10/2016
Χ. Καραγιαννίδης, ΠΘ-ΠΤΕΑ Εισαγωγή στις Εφαρμογές ΤΠΕ Παραδείγματα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 52/57 11/10/2016
Digital Storytelling Ψηφιακή αφήγηση F a short form of digital media producwon that allows everyday people to share aspects of their story μια μορφή παραγωγής ψηφιακών μέσων που επιτρέπει σε κάθε άνθρωπο να μοιραστεί πλευρές της ιστορίας του F the media used may include the digital equivalent of film techniques (fullmowon video with sound), swlls, audio only, or any of the other forms of non-physical media (material that exists only as electronic files as opposed to actual painwngs or photographs on paper, sounds stored on tape or disc, movies stored on film) which individuals can use to tell a story or present an idea με πολύ διαφορετικά μέσα... Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 53/57 11/10/2016
Παραδείγματα Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 54/57 11/10/2016
Συμπέρασμα Αλγόριθμοι F η αλγοριθμική/υπολογιστική σκέψη είναι απαραίτητη σε όλους μας F και αποτελεί ένα σημαντικό αντικείμενο διδασκαλίας Προγραμματισμός F υπάρχουν σήμερα πολλά ισχυρά εργαλεία F που δεν απαιτούν ειδικές γνώσεις προγραμματισμού F και δίνουν τη δυνατότητα για την παραγωγή ψηφιακού εκπαιδευτικού υλικού και την ανάπτυξη υπηρεσιών εκπαίδευσης και κατάρτισης Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 55/57 11/10/2016
Ειδική βιβλιογραφία Sanjeev Arora F The Computawonal Universe, Princeton University, Course COS 116. Απόστολος Δοξιάδης F Ο Θείος Πέτρος και η Εικασία του Γκόλντμπαχ, Εκδόσεις Καστανιώτη, 2000. Askatechteacher.com F 9 Best-in-Class Digital Storytelling Tools MIT F Scratch Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 56/57 11/10/2016
Καλό βράδυ karagian@uth.gr Διάλεξη 3: Αλγόριθμοι & Προγραμματισμός 57/57 11/10/2016