Αλγόριθμοι & Προγραμματισμός

Σχετικά έγγραφα
Αλγόριθμοι & Προγραμματισμός

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

Πληροφορική 2. Αλγόριθμοι

Προγραµµατισµός Η/Υ. Μέρος2

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Θέματα Προγραμματισμού Η/Υ

ΑΛΓΟΡΙΘΜΟΙ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ

ΑΕΠΠ Ερωτήσεις θεωρίας

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

Προγραμματισμός και Εφαρμογές Υπολογιστών

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ

Υπολογισμός - Εντολές Επανάληψης

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον κεφ.6 Εισαγωγή στον Προγραμματισμό

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΕΙΣΑΓΩΓΗ ΣΤOΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΠΛΗΡΟΦΟΡΙΑΚΑ & ΤΗΛΕΠΙΚΟΙΝΩΝΙΑΚΑ ΣΥΣΤΗΜΑΤΑ

Εισαγωγή στον προγραμματισμό

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 2 : Αλγόριθμοι. Δρ. Γκόγκος Χρήστος

Δομές Δεδομένων & Αλγόριθμοι

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ ΕΞΕΤΑΣΗΣ

Γλώσσες υψηλού επιπέδου Περιέχουν περισσότερες εντολές για την εκτέλεση πολύπλοκων εργασιών Τα προγράµµατα µεταφράζονται σε γλώσσα µηχανής είτε από το

Πληροφορική 2. Γλώσσες Προγραμματισμού

ΑΕΠΠ Ερωτήσεις τύπου Σωστό-Λάθος

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. Καβακλή. Χειμερινό Εξάμηνο 2001

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

Προγραμματισμός Η/Υ. Προτεινόμενα θέματα εξετάσεων Εργαστήριο. Μέρος 1 ό. ΤΕΙ Λάρισας- Σχολή Τεχνολογικών Εφαρμογών Τμήμα Πολιτικών Έργων Υποδομής

Διαδικασιακός Προγραμματισμός

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 8ο Αλγόριθμοι

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

Θεωρία Υπολογισμού Άρτιοι ΑΜ. Διδάσκων: Σταύρος Κολλιόπουλος. eclass.di.uoa.gr. Περιγραφή μαθήματος

Θεωρία Υπολογισμού Αρτιοι ΑΜ Διδάσκων: Σταύρος Κολλιόπουλος eclass.di.uoa.gr

Σύνοψη Θεωρίας ΟΡΙΣΜΟΣ ΚΑΙ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΑΛΓΟΡΙΘΜΩΝ

Μ Ε Ρ Ο Σ Γ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Εισαγωγή στον Προγραμματισμό Μάθημα 4: Αλγόριθμοι και Γλώσσες Προγραμματισμού Δεκέμβριος 2015 Χ. Αλεξανδράκη

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Πληροφορική ΙΙ Ενότητα 1

Εισαγωγή στην Πληροφορική Προγραμματισμός-Λειτουργικά

Δομημένος Προγραμματισμός (ΤΛ1006)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

ΠΛΗΡΟΦΟΡΙΚΗ ΣΤΟ ΕΝΙΑΙΟ ΛΥΚΕΙΟ

Εισαγωγή στην Πληροφορική

Εισαγωγή στην πληροφορική

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07

Δομές Δεδομένων και Αλγόριθμοι

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

Μαλούτα Θεανώ Σελίδα 1

Πληροφορική ΙΙ. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Αλγόριθμος. Αλγόριθμο ονομάζουμε τη σαφή και ακριβή περιγραφή μιας σειράς ξεχωριστών οδηγιών βημάτων με σκοπό την επίλυση ενός προβλήματος.

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

Γ ΛΥΚΕΙΟΥ ΤΕΧΝΟΛΟΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΔΙΑΓΩΝΙΣΜΑ ΣΤΟ ΜΑΘΗΜΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ 10 / 04 / 2012

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Αλγόριθμοι Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ

Μεθόδων Επίλυσης Προβλημάτων

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Εισαγωγή στον Προγραμματισμό

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4)

Κεφάλαιο 8.6. Πίνακες ΙI (Διάλεξη 17)

Βασικές Έννοιες Αλγορίθμων Τι είναι αλγόριθμος

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΥΠΟΛΟΓΙΣΤΩΝ

Αλγόριθμοι και Δομές Δεδομένων (Ι) (εισαγωγικές έννοιες)

Π ρ ο γ ρ α μ μ α τ ι σ μ ό ς Β α σ ι κ έ ς έ ν ν ο ι ε ς Ι σ τ ο ρ ι κ ή α ν α δ ρ ο μ ή Η έννοια του προγράμματος Ιστορική αναδρομή

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στον Προγραμματισμό

Ο αλγόριθμος πρέπει να τηρεί κάποια κριτήρια

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ Π ΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ Π ΕΡΙΒΑΛΛΟΝ

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

8. Συνθήκες ελέγχου, λογικοί τελεστές

Αλγόριθμοι Ταξινόμησης Μέρος 1

Τι είναι αλγόριθμος; Υποπρογράμματα (υποαλγόριθμοι) Βασικές αλγοριθμικές δομές

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

Transcript:

Διάλεξη 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