Ευφυής Προγραμματισμός

Σχετικά έγγραφα
Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός

Ευφυής Προγραμματισμός

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Ευφυής Προγραμματισμός

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διοικητική Λογιστική

Εισαγωγή στους Αλγορίθμους

Κβαντική Επεξεργασία Πληροφορίας

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Ευφυής Προγραμματισμός

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Οντοκεντρικός Προγραμματισμός

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Κβαντική Επεξεργασία Πληροφορίας

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

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

Βέλτιστος Έλεγχος Συστημάτων

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Εισαγωγή στους Υπολογιστές

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Δομημένος Προγραμματισμός

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Μηχανολογικό Σχέδιο Ι

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Υπολογιστές

Οντοκεντρικός Προγραμματισμός

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

Διοικητική Λογιστική

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Ευφυής Προγραμματισμός

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Πληροφορική ΙΙ Θεματική Ενότητα 5

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Δομημένος Προγραμματισμός

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

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

Βάσεις Περιβαλλοντικών Δεδομένων

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

Κβαντική Επεξεργασία Πληροφορίας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Οντοκεντρικός Προγραμματισμός

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Διδακτική των εικαστικών τεχνών Ενότητα 1

Διδακτική των εικαστικών τεχνών Ενότητα 3

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Διδακτική Πληροφορικής

Διδακτική των εικαστικών τεχνών Ενότητα 2

Εισαγωγή στους Αλγορίθμους Ενότητα 11η Άσκηση - Σταθμισμένος Χρονοπρογραμματισμός Διαστημάτων

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

Κβαντική Επεξεργασία Πληροφορίας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Βέλτιστος Έλεγχος Συστημάτων

Εφαρμογές πληροφορικής σε θέματα πολιτικού μηχανικού

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Φιλοσοφία της Ιστορίας και του Πολιτισμού

Διδακτική των εικαστικών τεχνών Ενότητα 2

Ευφυής Προγραμματισμός

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

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

Τεχνολογία Πολιτισμικού Λογισμικού

Δομημένος Προγραμματισμός

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 1: Εκτιμητές και Ιδιότητες. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Τεχνικό Σχέδιο - CAD

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 4

Βάσεις Περιβαλλοντικών Δεδομένων

Εισαγωγή στους Υπολογιστές

Διοίκηση Επιχειρήσεων

Ιστορία της μετάφρασης

Έλεγχος Ποιότητας Φαρμάκων

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 4: ΑΝΑΠΑΡΑΣΤΑΣΗ ΔΕΔΟΜΕΝΩΝ - ΔΕΝΤΡΑ

Transcript:

Ευφυής Προγραμματισμός Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής

Περιεχόμενα ενότητας Συναρτήσεις-Δομές Ελέγχου : 1. Συναρτήσεις Χρήστη 2. Έλεγχος Ροής Προγράμματος 3. Αναδρομικές Συναρτήσεις 4. Συνάρτηση Let 2

Συναρτήσεις Χρήστη

Δημιουργία Συνάρτησης (1) Ορισμός (defun <function-name> (<param 1 > <param n >) <form 1 > <form m >) Τυπικές Παράμετροι (Σύμβολα) Πχ. (defun mesos-oros(num1 num2 num3) (/ (+ num1 num2 num3) 3)) 4

Δημιουργία Συνάρτησης (2) Κλήση Συνάρτησης: >(mesos-oros 3 2 4) 3 >(mesos-oros 8 2 4) 14/3 Πχ. (defun mesos-oros(num1 num2 num3) (coerce (/ (+ num1 num2 num3) 3) 'float)) >(mesos-oros 8 2 4) 4.666666666666667 5

Έλεγχος Ροής Προγράμματος

Διατάξεις Επιλογής (1) Διάταξη Συνθήκης if (if <condition> <then form> [<else form>]) Εκτιμάται η συνθήκη <condition>. Αν το αποτέλεσμα είναι NIL, εκτιμάται η έκφραση <then form> και επιστρέφεται η τιμή της, αλλιώς η <else form>, αν υπάρχει, αλλιώς NIL. Μπορεί να γίνει χρήση των λογικών τελεστών not, or και and στη συνθήκη, αλλά και εν γένει σε μια σ-έκφραση 7

Διατάξεις Επιλογής (2) Πχ.(defun mesos-oros-10 (num1 num2 num3) (if (and (< num1 10) (< num2 10)) (mesos-oros num1 num2 num3) nil)) Κλήση: > (mesos-oros-10 3 10 4) NIL > (mesos-oros-10 3 4 5) 4 8

Διατάξεις Επιλογής (3) Διάταξη Συνθήκης cond (cond (<condition 1 > <action 1 >) (<condition 2 > <action 2 >)... (<condition m > <action m >)) Εκτιμώνται οι συνθήκες <condition1>,, <conditionm> με τη σειρά. Με το πρώτο <conditioni> που θα δώσει αποτέλεσμα NIL, εκτιμάται η αντίστοιχη έκφραση <actioni> και επιστρέφεται η τιμή της. Αν κανένα δεν δώσει τέτοιο αποτέλεσμα, τότε επιστρέφει NIL. 9

Διατάξεις Επιλογής (4) Πχ. (defun mesos-oros-10 (num1 num2) (cond ((and (< num1 10) (< num2 10)) (mesos-oros num1 num2)) ( t nil))) Πχ.(defun where-is (n) (cond ((equal n 'athens) 'Greece) ((equal n 'New-York) 'USA) ((equal n 'London) 'England) (t 'unknown))) (where-is 'athens) GREECE 10

Διατάξεις Επανάληψης (1) DOLIST (dolist (<parameter> <list form> <result form>) <form1> <formn>) Εκτιμάται το <list form>, που πρέπει να έχει σαν αποτέλεσμα λίστα Αποδίδονται τα στοιχεία της λίστας ένα-ένα στο <parameter>. 11

Διατάξεις Επανάληψης (2) Σε κάθε απόδοση εκτελούνται τα <form 1 > <form n >. Εκτιμάται το <result form>. Πχ. (defun add-two (n) (let ((new-list nil)) (dolist (elem n (reverse new-list)) (push (+ 2 elem) new-list)))) > (add-two ' (1 2 3)) (3 4 5) 12

DO Διατάξεις Επανάληψης (3) (do ((<param1> [<init-val1> [<update-form1>]])... (<paramn> [<init-valn> [<update-formn>]])) (<term-test> [<inter-form>] <result-form>) <form1> <formn>) 13

Διατάξεις Επανάληψης (4) Εκτιμώνται τα <init-val i > και καταχωρούνται στις αντίστοιχες παραμέτρους παράλληλα. Εξετάζεται το <term-test>. Αν είναι NIL, εκτελείται το σώμα (<form 1 > <form n >), αλλιώς επιστρέφεται το <result-form>. Εκτιμώνται τα <update-form i > και αποδίδονται στις αντίστοιχες παραμέτρους παράλληλα. Στη συνέχεια εξετάζεται το <term-test> κ.ο.κ. 14

Διατάξεις Επανάληψης (5) Πχ. (defun add-two (n) (do ((new-list n (cdr new-list)) (result nil)) ((null new-list) (reverse result)) (push (+ 2 (car new-list)) result))) 15

DO* Διατάξεις Επανάληψης (6) Ό,τι και το do, μόνο που τώρα οι αποδόσεις των αρχικών τιμών και οι ενημερώσεις γίνονται ακολουθιακά. 16

LOOP Διατάξεις Επανάληψης (7) (loop <form1> <formn>) Εκτελούνται τα <form1> <formn> με τη σειρά αναγραφής έως ότου εκτελεστεί κάποια πρόταση return. 17

DOTIMES Διατάξεις Επανάληψης (8) (dotimes (<parameter> <up-bound form> <result form>) <form 1 > <form n >) 18

Διατάξεις Επανάληψης (9) Εκτιμάται το <up-bound form>, που πρέπει να έχει σαν αποτέλεσμα ακέραιο, έστω n. Αποδίδονται οι ακέραιες τιμές 0 n-1 στο <parameter> διαδοχικά. Για κάθε τιμή εκτελούνται τα <form 1 > <form n >. Εκτιμάται το <result form>. 19

Διατάξεις Επανάληψης (10) Πχ. (defun power (m n) (let ((result 1)) (dotimes (count n result) (setf result (* m result))))) >power( 2 3) 8 20

Αναδρομικές Συναρτήσεις

Αναδρομικές Συναρτήσεις (1) Μια συνάρτηση ονομάζεται αναδρομική (recursive) όταν ορίζεται μέσω του εαυτού της αναδρομικός ορισμός. 22

Αναδρομικές Συναρτήσεις (2) Πχ. (defun filter-pos (num-list) (cond ((null num-list) nil) ((minusp (car num-list)) (cons (car num-list) (filter-pos (cdr num-list)))) (t (filter-pos (cdr num-list))))) Αναδρομική Κλήση > (filter-pos '(1 4-8 -2)) (-8-2) 23

Αναδρομικές Συναρτήσεις (3) Πχ. (defun length-list (list) (cond ((null list) 0) (t (1+ (length-list (rest list)))))) > (length-list '(a b c d e)) 5 24

Συνάρτηση Let

Συνάρτηση Let (1) Let: Ανάθεση αρχικών τιμών σε μεταβλητές (let ((<variable1> <init-value1>) (<variable2> <init-value2>)... (<variablem> <init-valuem>)) <form1> <formn>) Χρησιμοποιείται για δημιουργία και απόδοση τιμών σε τοπικές μεταβλητές 26

Συνάρτηση Let (2) (defun filter-pos (num-list) (if (null num-list) nil (let ((first-elem (car num-list)) (rest-list (cdr num-list))) (if (minusp first-elem) (cons first-elem (filter-pos rest-list)) (filter-pos rest-list))))) >(filter-pos '(-1 3-4 2)) (-1-4) 27

Συνάρτηση Let (3) Το let δρα παράλληλα (πρώτα εκτιμώνται οι αρχικές τιμές και μετά αποδίδονται στις μεταβλητές) Το let* δρα ακολουθιακά (κάθε αρχική τιμή εκτιμάται και αποδίδεται στην αντίστοιχη μεταβλητή με τη σειρά αναγραφής) > (setf x 'outside) > (let ((x 'inside) (y x)) (list x y)) > (INSIDE OUTSIDE) > (let* ((x 'inside) (y x)) (list x y)) > (INSIDE INSIDE) 28

Συνάρτηση Let (4) Τα let, let* δημιουργούν νοητούς φράχτες μέσα σε μια συνάρτηση. Επίσης η ίδια η συνάρτηση δημιουργεί ένα νοητό φράχτη γύρω της. Μεταβλητές σε ένα φράχτη έχουν νόημα στους εσωτερικούς του φράχτες, όχι όμως αντίστροφα (τοπικές μεταβλητές). 29

Συνάρτηση Let (5) function let let 30

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 31

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. 32

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Πατρών, Ιωάννης Χατζηλυγερούδης 2015. «Ευφυής Προγραμματισμός». Έκδοση: 1.0. Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1095/ 33

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 34

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 35