Ergasthriak 'Askhsh 2

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Ergasthriak 'Askhsh 2"

Transcript

1 Kefˆlaio 2 Ergasthriak 'Askhsh 2 Οπου θα δούμε πώς μπορούμε να ορίζουμε δικές μας διαδικασίες και θα παρουσιάσουμε τις primitive διαδικασίες χειρισμού λιστών, τις μεταβλητές και τα side effects. 2.1 P c orðzoume diadikasðec Είδαμε ότι, πέραν των primitives, μπορούν να υπάρχουν και user-defined διαδικασίες. H DEFUN είναι μία ειδική διαδικασία-συνάρτηση 1, που καλείται macro function, και δεν αποτιμά τα ορίσματά της. Επομένως, αυτά δεν χρειάζεται να συνοδεύονται από απόστροφο. Η συνάρτηση αυτή χρησιμοποιείται για τον ορισμό νέων συναρτήσεων 2. Να ορίσετε μία απλοϊκή έκδοση της συνάρτησης average (μέσος όρος) ως εξής: (defun average (x y) (/ (+ x y) 2.0)) αφού την αποτιμήσει ο Listener, καλέστε τη με τη μορφή (average x y), όπου στη θέση των x και y θα βάλετε τους αριθμούς των οποίων αναζητάτε το μέσο όρο. Πριν σας ζητηθεί να ορίσετε κάποιες δικές σας συναρτήσεις, θα συζητήσουμε εν συντομία τον παραπάνω τύπο της DEFUN. Το πρώτο όρισμα που δώσαμε στη DEFUN, δηλαδή το average, είναι το όνομα της συνάρτησης την οποία ορίζουμε. Το δεύτερο όρισμα που της δώσαμε, δηλαδή η λίστα (x y), είναι η λεγόμενη λίστα ορισμάτων (argument list): Καθορίζει τόσο το πλήθος των ορισμάτων που θα έχει η νέα συνάρτηση, όσο και τα ονόματα των ορισμάτων έτσι ώστε να μπορούμε να αναφερθούμε σε αυτά στο σώμα της συνάρτησης. Το σώμα της συνάρτησης είναι η τελευταία γραμμή του παραπάνω τύπου (το τελευταίο όρισμα), το οποίο 1 'Opwc èqoume pei, ta primitives eðnai diadikasðec. Oi diadikasðec pou apl c upologðzoun mða tim onomˆzontai sunart seic (functions). Epomènwc, den eðnai ìlec oi diadikasðec sunart seic. Gia na kˆnoume ta prˆgmata aploôstera, apì ed kai sto ex c, ja anaferìmaste se ìlec tic diadikasðec wc sunart seic, ìpwc exˆllou sunhjðzetai sth bibliografða. 2 DEFUN: Define Function.

2 14 Εργαστηριακή Άσκηση 2 ορίζει την κυρίως λειτουργία της συνάρτησης που θα δημιουργηθεί. Επομένως, μπορούμε να δώσουμε ένα γενικότερο τρόπο χρήσης της DEFUN: (defun function name (arguments ) body ) Ασκήσεις: 1. Να γράψετε μία συνάρτηση, που να υπολογίζει το μήκος της υποτείνουσας ορθογωνίου τριγώνου εάν είναι γνωστά τα μήκη των δύο κάθετων πλευρών. Σε περίπτωση που δεν τον θυμόσαστε, ο μαθηματικός τύπος που θα πρέπει να υλοποιήσετε είναι: f(x, y) = x 2 + y 2 2. Να γράψετε μία συνάρτηση, που θα παίρνει τρία ορίσματα και θα επιστρέφει το γινόμενο του κύβου του πρώτου ορίσματος με την απόλυτη τιμή του αθροίσματος των δύο τελευταίων ορισμάτων. Δηλαδή: f(x, y, z) = x 3 y + z 3. Να γράψετε μία συνάρτηση που θα υπολογίζει το εμβαδόν ισοσκελούς τριγώνου, εάν είναι γνωστά τα μήκη των πλευρών του. Θα χρειαστείτε πάλι το πυθαγόρειο θεώρημα μόνο που τώρα θα πρέπει να βρίσκει τη μία κάθετη πλευρά και όχι την υποτείνουσα όπως στο 1. Να τροποποιήσετε κατάλληλα την συνάρτηση του 1, έτσι ώστε να μπορείτε να την καλέσετε μέσα απ τη συνάρτηση του εμβαδού όταν τη χρειαστείτε. 2.2 Metablhtèc kai side effects Μέχρι τώρα έχουμε δει ότι η Lisp προσπαθεί να αποτιμήσει οτιδήποτε της δίνεται υπό μορφή τύπου 3. Οπως είδαμε στο προηγούμενο εργαστήριο, αν εισάγουμε ένα μη-δεσμευμένο σύμβολο και πατήσουμε το carriage return, η Lisp θα μας απαντήσει με ένα μήνυμα σφάλματος. Αυτό συμβαίνει διότι προσπαθεί να βρει τιμή για το σύμβολο αυτό, το οποίο όμως δεν είναι δεσμευμένο σε κάποια τιμή. Η διαδικασία κράτησης μιας θέσης μνήμης για την αποθήκευση μίας τιμής για κάποιο σύμβολο καλείται πρόσδεση ( binding). Η διαδικασία της αποθήκευσης μίας τιμής σε αυτή τη θέση καλείται ανάθεση ( assignment). Η διαδικασία της επαναφοράς μίας τιμής από αυτή τη θέση μνήμης είναι μία μορφή αποτίμησης. Είδαμε επίσης ότι τα ίδια τα σύμβολα μπορούν να χρησιμοποιηθούν ως μεταβλητές. Οπως σε όλες τις γλώσσες προγραμματισμού, έτσι και στη Lisp, κάθε σύμβολο-μεταβλητή έχει μία εμβέλεια (scope). Η εμβέλεια αυτή είναι η περιοχή μέσα στην οποία μπορούν να γίνονται αναφορές στη μεταβλητή. Προσοχή, διότι αν αναφερθείτε σε μία μεταβλητή εκτός της εμβέλειάς της, το αποτέλεσμα μπορεί να είναι απροσδιόριστο. Μέχρι τώρα, έχουμε συναντήσει αρκετά σύμβολα ως ορίσματα μίας συνάρτησης. Αν υποθέσουμε ότι είχαμε αναθέσει στα σύμβολα αυτά κάποια τιμή, έτσι ώστε να τα θεωρούμε ως μεταβλητές, τότε θα λέγαμε ότι αυτές είναι τοπικές μεταβλητές (local variables), καθώς η εμβέλειά τους περιορίζεται στο σώμα της συνάρτησης. 3 Prìkeitai sun jwc gia ì,ti dðnetai qwrðc apìstrofo.

3 2.2 Μεταβλητές και side effects 15 Σκεφτείτε το παράδειγμα: (defun double (n) (* 2 n)) Κάθε φορά που καλούμε τη συνάρτηση double, δημιουργείται μία νέα τοπική μεταβλητή ονόματι n. Οποιαδήποτε αναφορά στη n εντός του σώματος της double είναι ορθή καθώς βρισκόμαστε μέσα στην εμβέλειά της. Αντίθετα, εκτός της double, η n είναι μία τελείως διαφορετική μεταβλητή, η οποία δεν είναι τοπική σε κάποια συγκεκριμένη συνάρτηση, είναι δηλαδή μία καθολική μεταβλητή (global variable). Αν καλέσουμε την καθολική μεταβλητή n χωρίς να την έχουμε δεσμεύσει σε κάποια τιμή, θα πάρουμε ένα μήνυμα σφάλματος. Να επιβεβαιώσετε στο Listener την ορθότητα αυτού του ισχυρισμού. Να σημειώσουμε ότι μπορεί να υπάρχει μόνο μία καθολική μεταβλητή ονόματι n, αλλά πολλές τοπικές μεταβλητές με το ίδιο όνομα, αρκεί να μην επικαλύπτονται οι εμβέλειές τους. Η SETF macro function αναθέτει μία τιμή σε μία μεταβλητή 4. Εάν η μεταβλητή έχει ήδη κάποια τιμή, η νέα τιμή αντικαθιστά την παλιά. Εισάγετε στο Listener τον ακόλουθο τύπο: (setf planets-to-visit (jupiter mars venus saturn pluto)) Η SETF, επειδή ακριβώς είναι μία macro function, δεν αποτιμά το πρώτο της όρισμα (εδώ είναι το planets-to-visit). Επιπρόσθετα, αντί απλώς να επιστρέφει την τιμή του δεύτερου ορίσματός της (πράγμα το οποίο ούτως ή άλλως κάνει, γι αυτό και σας τυπώνει τη λίστα), αναθέτει επιπλέον την τιμή αυτή στο πρώτο της όρισμα 5. Αρκεί να καλέσουμε τώρα τη μεταβλητή planets-to-visit για να δούμε τί τιμή της έχει ανατεθεί. Οτιδήποτε έχει κάνει κάποια συνάρτηση, το οποίο παραμένει και μετά την επιστροφή τιμής απ τη συνάρτηση, καλείται side effect. Επομένως, μπορούμε να πούμε ότι ο βασικός λόγος για τον οποίο αποτιμάται ο παραπάνω τύπος είναι το side effect του και όχι η τιμή την οποία επιστρέφει. Η συνάρτηση DEFUN για παράδειγμα καλείται μόνο για το side effect της, αφού η τιμή την οποία επιστρέφει κάθε φορά είναι απλώς το όνομα της νέας συνάρτησης την οποία όρισε. Η SETF θα μπορούσε να χρησιμοποιηθεί ακόμα και για να αλλάξει την τιμή μιας τοπικής μεταβλητής. Βέβαια, αυτό δεν αποτελεί καλή προγραμματιστική πρακτική γι αυτό κι εμείς θα τη χρησιμοποιούμε μόνο για να αναθέτουμε ή να αλλάζουμε τιμή σε καθολικές μεταβλητές πάντως, αξίζει να τρέξετε το ακόλουθο παράδειγμα για να δείτε πώς γίνεται: (defun poor-style (p) (setf p (+ p 5)) (list result is p)) Καλέστε τώρα (poor-style 8) και θα καταλάβετε πως λειτουργεί. Υποθέστε ότι ζείτε σε μια εποχή που τα ταξίδια στο διάστημα είναι απλώς μια καθημερινότητα. Η λίστα που είδαμε πριν είναι οι πλανήτες που σκοπεύετε να επισκεφθείτε για να περάσετε τις χειμερινές σας διακοπές. Ο Πλούτωνας απέχει απ τη Γη 4, m, οπότε ακόμα και αν ταξιδεύατε με την ταχύτητα του φωτός θα χρειαζόσασταν t = d/c = s 4hours. Γενικά, σας κουράζουν 4 EÐnai exðsou swstì eðte poôme ìti anajètoume mða tim se mða metablht, eðte ìti desmeôoume mða metablht se mða tim. 5 H SETF den efarmìzetai mìno se sômbola kai gi autì to lìgo protimˆtai ap touc programmatistèc, se antðjesh me tic SETQ kai SET pou èqoun pio periorismènec dunatìthtec.

4 16 Εργαστηριακή Άσκηση 2 τα πολύωρα ταξίδια και θα θέλατε όλο το διαθέσιμο χρόνο να τον ξοδέψετε στον προορισμό σας. Θέλετε επομένως να διαγράψετε τον Πλούτωνα από τη λίστα σας και να εισάγετε στη θέση του κάποιον άλλο, πιο κοντινό πλανήτη, όπως για παράδειγμα τον Ερμή, που πρόσφατα ακούσατε ότι προσφέρει φτηνές και χαλαρωτικές διακοπές. Εκτελείτε, επομένως, στο Listener του Lisp PDA σας τα εξής: > (setf planets-to-visit (remove pluto planets-to-visit)) > (setf planets-to-visit (cons mercury planets-to-visit)) Το πώς κάνουν αυτό που κάνουν οι συναρτήσεις CONS και REMOVE, μη σας απασχολεί προς το παρόν. Αυτό που θα πρέπει να σας απασχολήσει είναι το πώς θα κάνουμε τα παραπάνω να εκτελούνται κάθε φορά που εμείς καλούμε μια δική μας συνάρτηση, την change-option. Η συνάρτηση αυτή θα παίρνει δύο ορίσματα, συγκεκριμένα, δύο πλανήτες x, y θα διαγράφει τον x απ τη λίστα που περιέχεται στην καθολική μεταβλητή planets-to-visit και θα εισάγει τον y στην ανανεωμένη, μετά τη διαγραφή, λίστα της planets-to-visit. Να δημιουργήσετε τη συνάρτηση change-option, χρησιμοποιώντας τις δύο setf που δείξαμε προηγουμένως, χωρίς να ξεχνάτε ότι κατά τον ορισμό μιας συνάρτησης, στο σώμα αυτής, μπορούμε και πρέπει να αναφερόμαστε στις μεταβλητές/ορίσματα χωρίς απόστροφο. Σκεφτείτε απλά ότι αν βάλετε απόστροφο, είναι σα να λέτε στη Lisp να ασχοληθεί με το όνομα της μεταβλητής και όχι με την τιμή που της έχει ανατεθεί. Αξίζει τέλος να σημειώσουμε ότι χρησιμοποιώντας μία μόνο setf μπορούμε να πραγματοποιήσουμε πολλές αναθέσεις σε αντίστοιχο αριθμό μεταβλητών. Τα περιττά ορίσματα πρέπει να είναι οι μεταβλητές, οι οποίες δεν αποτιμούνται, ενώ κάθε άρτιο όρισμα, έστω 2n, πρέπει να είναι η έκφραση που θέλουμε να αναθέσουμε στο 2n 1 όρισμα-μεταβλητή. Για παράδειγμα: (setf first-variable (1 2) second-variable (a b). final-variable (nothing important)) 2.3 Qeirismìc List n Στην προηγούμενη εργαστηριακή άσκηση, μεταξύ άλλων, είδαμε τί είναι οι λίστες και πώς μπορούμε να τις αναπαριστούμε στην Common Lisp. Αν θυμηθείτε τον ορισμό που δώσαμε, θα δείτε ότι μας δίνει τη δυνατότητα να εισάγουμε λίστες απεριόριστης πολυπλοκότητας που μπορεί να είναι πολύ διαφορετικές μεταξύ τους. Επομένως, εύλογα θα αναρωτηθεί κανείς: Με ποιά εργαλεία θα μπορούμε να χειριζόμαστε τις λίστες που θα δημιουργήσουμε ; Την απάντηση δίνει η πληθώρα primitive διαδικασιών χειρισμού λιστών που μας παρέχει η Common Lisp και τις οποίες θα αρχίσουμε παρουσιάζουμε ευθύς αμέσως 6. Εστω, ότι κάποιος φοιτητής έχει κάνει την ακόλουθη λίστα, με τους τομείς που τον γοητεύουν για να ασχοληθεί ερευνητικά: 6 Ja mil soume, dhlad, gia LISt Processing, ap ìpou akrib c p re h Lisp to ìnomˆ thc.

5 2.3 Χειρισμός Λιστών 17 (theory-of-computation computational-complexity artificialintelligence distributed-systems algorithms) Οταν δημιούργησε τη λίστα, κατέταξε τους τομείς κατά φθίνουσα προτεραιότητα, δηλαδή αυτό που τον ενδιέφερε περισσότερο ήταν η Θεωρία Υπολογισμού ενώ αυτό που τον ενδιέφερε λιγότερο ήταν οι Αλγόριθμοι. Στην πορεία, όμως, διαπίστωσε ότι για να ασχοληθεί με όλα τα υπόλοιπα, μάλλον θα έπρεπε πρώτα να διαβάσει αρκετά καλά το γενικό κομμάτι των αλγορίθμων γεγονός που τον αναγκάζει να το μεταφέρει στην πρώτη θέση της λίστας του 7. Η έστω, για παράδειγμα, πως αποφασίζει ξαφνικά, ότι θα ήταν προτιμότερο να ξεκινήσει απ αυτό που τον ενδιαφέρει λιγότερο και αφού περάσει απ όλους τους άλλους τομείς να καταλήξει με ένα πολύ γερό υπόβαθρο στον τομέα που τον ενδιαφέρει περισσότερο, όπου θα δώσει και όλες του τις δυνάμεις. Κάτι τέτοιο θα απαιτούσε να αναθεωρήσει τον τρόπο που βλέπει τη λίστα του και να δεχτεί ότι οι θέσεις δηλώνουν απλώς τη σειρά με την οποία θα ασχοληθεί με τους τομείς και όχι το πόσο τον ενδιαφέρει ο καθένας απ αυτούς. Ακόμη θα έπρεπε με κάποιο τρόπο να αντιστρέψει τη λίστα του, να βρει δηλαδή έναν μέσο και το κάθε στοιχείο της να μεταβεί στη συμμετρική θέση ως προς αυτόν τον μέσο (το πρώτο θα γίνει τελευταίο, το δεύτερο, προτελευταίο κ.ο.κ.). Σε αυτή την εργαστηριακή άσκηση, μεταξύ άλλων, θα δούμε και πώς μπορούμε να χρησιμοποιήσουμε τα first, rest, append, list, cons, καθώς και άλλα πολύ χρήσιμα primitives για να χειριστούμε τις λίστες μας. ΗCONS είναι η βασική συνάρτηση με την οποία μπορούμε να κατασκευάζουμε λίστες. Ας δούμε με ένα template πώς θα μπορούσαμε να καλέσουμε τη συνάρτηση cons: (cons new first element a list ) Η λειτουργία της έχει ως εξής: Η cons παίρνει ως ορίσματα μία έκφραση και μία λίστα και επιστρέφει μία νέα λίστα, της οποίας το πρώτο στοιχείο είναι η έκφραση, ενώ τα υπόλοιπα είναι τα στοιχεία της λίστας που είχε πάρει ως όρισμα. Το όνομα cons προέρχεται απ το constructor, αφού πρόκειται για το βασικό κατασκευαστή λιστών της Lisp. Αξίζει, επίσης, να ξεκαθαρίσουμε ότι τόσο η έκφραση, όσο και η λίστα που δίνονται ως ορίσματα στην cons είναι αντικείμενα (objects), δηλαδή συγκεκριμένα στιγμιότυπα κάποιου τύπου δεδομένων (π.χ. 3, (symbol1 symbol2) κ.ο.κ.), τα οποία μπορούν να προκύπτουν και ως αποτέλεσμα της κλήσης κάποιας άλλης συνάρτησης. Για να το καταλάβετε καλύτερα τρέξτε στο Listener τα ακόλουθα: 1. (cons 1 (2 3 4)) 2. (cons (- 2 1) (2 3 4)) 3. (cons 1 (cons 2 (cons 3 (cons 4 ())))) Παρατηρήστε ότι στο Παράδειγμα 2, το πρώτο όρισμα της cons είναι η τιμή την οποία επιστρέφει η -, με ορίσματα 2, 1. Φυσικά, η λίστα (- 2 1) δεν είναι quoted γιατί θέλουμε η Lisp να εντοπίσει τη συνάρτηση - και, χρησιμοποιώντας την, να αποτιμήσει την έκφραση-λίστα. Τρέξτε ξανά το 2, έχοντας κάνει quoted τη λίστα 7 Entˆxei, ki eg o Ðdioc ja tou prìteina na thn xanaftiˆxei ap thn arq, allˆ ètsi de ja mˆjoume potè pwc na qeirizìmaste tic lðstec.

6 18 Εργαστηριακή Άσκηση 2 (- 2 1), τοποθετήστε δηλαδή μία απόστροφο πριν την αριστερή παρένθεση αυτής. Προσέξτε τί επιστρέφει η cons και προσπαθήστε με βάση αυτά που ξέρετε ήδη να εξηγήσετε το αποτέλεσμα. Αν το Παράδειγμα 3 συνιστά για εσάς μπέρδεμα, σκεφτείτε το ως εξής: Η (cons 4 ()) δημιουργεί τη νέα λίστα (4), άρα η (cons 3 (cons 4 ())) είναι τελικά ίδια με την (cons 3 (4)) απ όπου προκύπτει η λίστα (3 4) κ.ο.κ. μέχρι να φτάσουμε στο 1. Να εκτελέσετε το συλλογισμό αυτό στο Listener για να επιβεβαιώσετε τα επιμέρους αποτελέσματα. Να κατασκευάσετε τη λίστα του φοιτητή που αναφέραμε προηγουμένως, με χρήση της cons (να το κάνετε με τουλάχιστον δύο διαφορετικούς τρόπους). Οι ακόλουθες ασκήσεις στοχεύουν στο να εξοικειωθείτε με κάποιες όχι τόσο εμφανείς πτυχές της cons: 1. Τρέξτε στο Listener τον τύπο 8 : (cons () (artificial-intelligence)) Διαβάστε το error message θα σας βοηθήσει να καταλάβετε ποιό είναι το λάθος και πώς να το διορθώσετε. Αφού διορθώσετε και τρέξετε σωστά τον παραπάνω τύπο, προσπαθήστε να εξηγήσετε πώς δικαιολογείται αυτό που επιστρέφει η Lisp. Πώς θα μπορέσουμε τελικά να κατασκευάσουμε τη λίστα (artificial-intelligence) με χρήση της cons; Αφού μπορούμε πολύ εύκολα να κατασκευάσουμε οποιαδήποτε λίστα με τη μορφή δεδομένων, αρκεί να την κάνουμε quoted, για πιο λόγο πιστεύεται θεωρείται τόσο σημαντική η συνάρτηση cons; Πιστεύετε ότι προσφέρει κάτι επιπλέον; 2. Πώς απαντάει η Lisp, εάν δώσουμε ως δεύτερο όρισμα στην cons ένα σύμβολο αντί για μία λίστα; Δοκιμάστε για παράδειγμα τον τύπο: (cons theory-of-computation artificial-intelligence) Αν όλα πήγαν καλά, η Lisp θα έχει απαντήσει με ένα dotted pair, δηλαδή ένα ζεύγος αντικειμένων που χωρίζονται από μία τελεία. Το dotted pair είναι ένας ακόμα τύπος δεδομένων της Lisp που, όμως, χρησιμοποιείται σπανίως και για το λόγο αυτό δε θα πούμε περισσότερα. Το αναφέρουμε μόνο για να το αναγνωρίζετε, καθώς αν ποτέ το συναντήσετε κατά πάσα πιθανότητα κάπου θα έχετε κάνει λάθος. Οπως είδαμε, η συνάρτηση cons κατασκευάζει μία λίστα από ένα οποιοδήποτε αντικείμενο και μία λίστα. Μπορούμε να επαναφέρουμε τα δύο αυτά ορίσματα απ τη νέα λίστα χρησιμοποιώντας τις συναρτήσεις FIRST και REST, οι οποίες ορίζονται ως εξής: (first list ) Παίρνει σαν όρισμα μία λίστα και επιστρέφει το πρώτο της στοιχείο. Αν η λίστα-όρισμα είναι η (), τότε επιστρέφει NIL. (rest list ) Παίρνει σαν όρισμα μία λίστα και την επιστρέφει χωρίς το πρώτο της στοιχείο. Αν η λίστα-όρισμα είναι η (), τότε επιστρέφει NIL. 8 Apì ed kai sto ex c, ìtan endiaferìmaste gia thn tim miac èkfrashc, ja kaloôme thn èkfrash aut tôpo (form).

7 2.3 Χειρισμός Λιστών 19 Η παρακάτω βηματική εκτέλεση θα σας βοηθήσει να εξοικειωθείτε με τη χρήση των συναρτήσεων αυτών: Δημιουργήστε με χρήση της cons τη λίστα (a b c d e f). Μπορούμε να το κάνουμε είτε δίνοντας απ ευθείας τη λίστα quoted, είτε περνώντας τον παραπάνω τύπο της cons ως όρισμα στην first, είτε αναθέτοντας πρώτα τη λίστα σε κάποια μεταβλητή. Προσέξτε ότι αν δώσετε quoted τον τύπο (cons a (b c d e f)) (βάζοντάς του, δηλαδή, μία απόστροφο πριν την πρώτη από αριστερά παρένθεση) στη first, παύει να είναι τύπος, μετατρέπεται σε δεδομένα και το αποτέλεσμα της first θα σας φέρει προ εκπλήξεως. Αν δεν είναι προφανές, δοκιμάστε το για να δείτε τί ακριβώς συμβαίνει 9. Ο σωστός τύπος, που αποτιμάται στο πρώτο στοιχείο της λίστας (a b c d e f) είναι ο (first (cons a (b c d e f))) Τρέξτε τον για να το διαπιστώσετε. Εν συνεχεία, βάλτε τη rest στη θέση της first και ζητήστε απ τη Lisp να αποτιμήσει το νέο τύπο. Αν το κάνατε σωστά, θα πρέπει να βλέπετε ήδη τη λίστα (b c d e f), δηλαδή τη λίστα με την οποία ξεκινήσαμε, χωρίς το πρώτο της στοιχείο. Αν καταφέρετε να κάνετε τη Lisp να εκτυπώσει το στοιχείο b χρησιμοποιώντας μία first, μία rest και μία cons, τότε είστε απολύτως έτοιμοι για να συνεχίσετε. Αν όχι, μην απογοητεύεστε μετά το πέρας της παρούσας εργαστηριακής άσκησης θα είστε σε θέση να εκτελέσετε πολύ πιο σύνθετους χειρισμούς απ αυτόν που μόλις ζητήθηκε. Η Lisp πέρα από τη first παρέχει και τις second, third... tenth, με προφανείς λειτουργίες 10. Να αποτιμήσετε τους ακόλουθους τύπους στο χαρτί (προσοχή, κάποιοι μπορεί να προκαλούν σφάλμα) και εν συνεχεία να ελέγξετε την ορθότητα των επιλογών σας τρέχοντάς τους στο Listener (μην παραλείψετε το πρώτο βήμα είναι το πιο σημαντικό): 1. (first (1 2 3)) 2. (first (1 2 3)) 3. (rest (1 2 3)) 4. (rest ((1 2) 3)) 5. (second (cons a (a b c))) 6. (first ((a b) (c d))) 7. (rest ((a b) (c d))) 8. (rest (rest (a b c d))) 9. (rest (rest (a b c d))) 9 Den èqoume prìjesh na sac paidèyoume, zht ntac sac na trèqete akìma kai ta sfˆlmata. AntÐjeta, prèpei na èqete pˆnta sto mualì sac ìti o mìnoc trìpoc gia na exoikeiwjeðte me opoiad pote gl ssa programmatismoô eðnai h suneq c graf programmˆtwn kai o peiramatismìc me ìla ta prèpei kai ta mh thc gl sssac. 10 Eis qjhsan sth Lisp proc antikatˆstash twn palaiìterwn CAR kai CDR. Epeid de ja anaferjoôme kajìlou se autèc, perissìterec plhroforðec mporeðte na breðte stic shmei seic tou maj matoc.

8 20 Εργαστηριακή Άσκηση (first (rest (rest (rest (rest (rest (symbol1 symbol2 symbol3 symbol4 symbol5 not-a-symbol))))))) 11. (1r 2r 3r) 12. (third (rest (rest (-> <- 1r 2r 3r)))) 13. (cons () (a b c)) 14. (cons (a b c) ()) 15. (cons (a b c) ()) 16. (rest (a)) 17. (cons NIL NIL) Η συνάρτηση EQUAL ελέγχει την ισότητα δύο λιστών. Θα μπορούσατε για παράδειγμα να τη χρησιμοποιήσετε για να ελέγξετε μία λίστα που δεν είστε σίγουροι αν εκφράζει αυτό που πιστεύετε ή σε περιπτώσεις που θέλετε να ελέγξετε πότε μία λίστα θα έρθει σε κάποια συγκεκριμένη μορφή. Να αποτιμήσετε του τύπους: 1. (equal (a (b c) d) (a (b c) d)) 2. (equal (a (b c) d) (a b c d)) 3. (equal (a) ((a))) 4. (equal (a) (first ((a)))) Υπάρχει επίσης μία άλλη συνάρτηση, η length, η οποία επιστρέφει το πλήθος των στοιχείων μίας λίστας. Σκεφτείτε και εν συνεχεία ελέγξτε τί τιμή θα επιστρέψει η Lisp για τους ακόλουθους τύπους: 1. (length (1 2 3)) 2. (length (1 2 3)) 3. (length (a b c (d))) 4. (length (this is a list)) 5. (length ((this is a list within an other list))) 6. (length (((a b) (c d) (e f)))) 7. (length (() () ())) 8. (length ()) Ας δούμε και μία ανακεφαλαιωτική άσκηση: Να αναθέσετε στη μεταβλητή long-list τη λίστα (a b c d e f g h i). Εν συνεχεία χρησιμοποιώντας τη long-list και όχι την ίδια τη λίστα, να αναθέσετε στις μεταβλητές head, tail το πρώτο και τα υπόλοιπα στοιχεία της λίστας, αντίστοιχα. Να χρησιμοποιήσετε την cons για να κατασκευάσετε την αρχική λίστα απ τις head, tail και να αναθέσετε το αποτέλεσμα στη μεταβλητή ReSuLt. Να συγκρίνεται τέλος, αν οι λίστες που περιέχουν οι μεταβλητές long-list και ReSuLt είναι ίσες, με χρήση της equal.

9 2.3 Χειρισμός Λιστών 21 Δύο ακόμα συναρτήσεις με τις οποίες μπορούμε να κατασκευάζουμε λίστες είναι η APPEND και η LIST. (append list 1 list 2...list n ) Παίρνει σαν ορίσματα n λίστες και επιστρέφει μία νέα λίστα που έχει για στοιχεία τα στοιχεία των n λιστών. (list element 1 element 2...element n ) Παίρνει σαν ορίσματα n στοιχεία και επιστρέφει μία λίστα που έχει για στοιχεία τα στοιχεία αυτά (τα στοιχεία μπορεί να είναι οποιαδήποτε s-expression). Να αποτιμήσετε τους ακόλουθους τύπους (όπου προκύπτει σφάλμα να διαβάσετε το αντίστοιχο μήνυμα): 1. (append (a b c) (x y z)) 2. (append a (x y)) 3. (append (a b) x) 4. (list a b c) 5. (list (1 2 3) 4 5) 6. (list (append (1 2 3) ()) 4 5) 7. (append (a b) (c d) (e f)) Να συγκρίνετε τους ακόλουθους τύπους: 1. (cons 1 (2 3)) 2. (append (1) (2 3)) 3. (list 1 2 3) Αφού εκτελέσετε (setf ab-list (a b) cd-list (c d)) να συγκρίνετε και τους ακόλουθους: 1. (cons ab-list cd-list) 2. (append ab-list cd-list) 3. (list ab-list cd-list) Ασκήσεις κατανόησης: 1. Να αποτιμήσετε τους ακόλουθους τύπους (πρώτα στο χαρτί): (append (a b c) ()) (list (a b c) ()) (cons (a b c) ()) 2. Ακολουθεί ένας διάλογος με τη Lisp. Προσπαθήστε να βρείτε τί τιμές επιστρέφει σε κάθε βήμα η Lisp (να σημειώσετε τις απαντήσεις δίπλα σε κάθε τύπο): > (setf tools (list hammer screwdriver)) > (cons pliers tools) > (setf tools (cons pliers tools))

10 22 Εργαστηριακή Άσκηση 2 > (setf tools (cons pliers tools)) > (setf tools (remove pliers tools)) > (append (pliers wrench) tools) > (setf tools (append (pliers wrench) tools)) 3. Προσπαθήστε να αποτιμήσετε τον ακόλουθο τύπο: (cons (first nil) (rest nil))

Ergasthriak 'Askhsh 5

Ergasthriak 'Askhsh 5 Kefˆlaio 5 Ergasthriak 'Askhsh 5 Οπου θα εξηγήσουμε πώς μπορεί να γίνει εφικτή η επαναληπτική ε- κτέλεση μιας ενέργειας και πώς μια ενέργεια μπορεί να εφαρμοσθεί σε κάθε στοιχείο μιας λίστας στοιχείων.

Διαβάστε περισσότερα

Ergasthriak 'Askhsh 3

Ergasthriak 'Askhsh 3 Kefˆlaio 3 Ergasthriak 'Askhsh 3 Οπου θα δούμε τις λογικές συναρτήσεις και θα εμβαθύνουμε λίγο περισσότερο στις λίστες και τις μεταβλητές. 3.1 Logikèc Sunart seic Οι λογικές συναρτήσεις (logical ή boolean

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

SUNARTHSEIS POLLWN METABLHTWN. 5h Seirˆ Ask sewn. Allag metablht n sto diplì olokl rwma

SUNARTHSEIS POLLWN METABLHTWN. 5h Seirˆ Ask sewn. Allag metablht n sto diplì olokl rwma PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II SUNARTHSEIS POLLWN METABLHTWN 5h Seirˆ Ask sewn Allag metablht n sto diplì olokl rwma Jèma. Qrhsimopoi ntac

Διαβάστε περισσότερα

Pascal. 15 Νοεμβρίου 2011

Pascal. 15 Νοεμβρίου 2011 Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

Διαβάστε περισσότερα

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

Σημειωματάριο Δευτέρας 30 Οκτ. 2017 Σημειωματάριο Δευτέρας 30 Οκτ. 2017 Συναρτήσεις (functions) Μια συνάρτηση στην Python είναι κομμάτι κώδικα που φέρει το δικό του όνομα (ακολουθεί τη λέξη κλειδί def στον ορισμό της συνάρτησης, έχει τα

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python Σκοπός της 1ης άσκησης είναι η εξοικείωση με τη γλώσσα προγραμματισμού Python, την οποία και θα χρησιμοποιήσουμε και στις υπόλοιπες εργαστηριακές ασκήσεις.

Διαβάστε περισσότερα

Κεφάλαιο 10 ο Υποπρογράµµατα

Κεφάλαιο 10 ο Υποπρογράµµατα Κεφάλαιο 10 ο Υποπρογράµµατα Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Η αντιµετώπιση των σύνθετων προβληµάτων και η ανάπτυξη των αντίστοιχων προγραµµάτων µπορεί να γίνει µε την ιεραρχική σχεδίαση,

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

11 OktwbrÐou 2012. S. Malefˆkh Genikì Tm ma Majhmatikˆ gia QhmikoÔc

11 OktwbrÐou 2012. S. Malefˆkh Genikì Tm ma Majhmatikˆ gia QhmikoÔc Mˆjhma 7 0 11 OktwbrÐou 2012 Orismìc sunart sewn mèsw orismènwn oloklhrwmˆtwn To orismèno olokl rwma prosfèrei ènan nèo trìpo orismoô sunˆrthshc afoô to orismèno olokl rwma mia suneqoôc sunˆrthshc f (t),

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Προγραμματισμός 2 Σημειώσεις εργαστηρίου

Προγραμματισμός 2 Σημειώσεις εργαστηρίου Προγραμματισμός 2 Σημειώσεις εργαστηρίου 02-Java, Τύποι Δεδομένων ως Αντικείμενα Νεβράντζας Βάιος-Γερμανός Λάρισα, Μάρτιος 2013 02-iProgramminginJava, Τυ ποι δεδομε νων ως Αντικει μενα, σελίδα 1 Περίληψη

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

Διαβάστε περισσότερα

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

Διαβάστε περισσότερα

Αλγόριθμοι για αυτόματα

Αλγόριθμοι για αυτόματα Κεφάλαιο 8 Αλγόριθμοι για αυτόματα Κύρια βιβλιογραφική αναφορά για αυτό το Κεφάλαιο είναι η Hopcroft, Motwani, and Ullman 2007. 8.1 Πότε ένα DFA αναγνωρίζει κενή ή άπειρη γλώσσα Δοθέντος ενός DFA M καλούμαστε

Διαβάστε περισσότερα

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS.

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS. PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS h Seirˆ Ask sewn Diaforikèc eis seic > diaforikèc

Διαβάστε περισσότερα

Diakritˆ Majhmatikˆ I. Leutèrhc KuroÔshc (EÔh Papaðwˆnnou)

Diakritˆ Majhmatikˆ I. Leutèrhc KuroÔshc (EÔh Papaðwˆnnou) Diakritˆ Majhmatikˆ I Leutèrhc KuroÔshc (EÔh Papaðwˆnnou) PlhroforÐec... Tetˆrth, 09.00-11.00, Paraskeu, 18.00-20.00 SÔggramma 1: Λ. Κυρούσης, Χ. Μπούρας, Π. Σπυράκης. Διακριτά Μαθηματικά: Τα Μαθηματικά

Διαβάστε περισσότερα

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

Διαβάστε περισσότερα

25 OktwbrÐou 2012 (5 h ebdomˆda) S. Malefˆkh Genikì Tm ma Majhmatikˆ gia QhmikoÔc

25 OktwbrÐou 2012 (5 h ebdomˆda) S. Malefˆkh Genikì Tm ma Majhmatikˆ gia QhmikoÔc Mˆjhma 9 0 25 OktwbrÐou 2012 (5 h ebdomˆda) Diaforikèc Exis seic TÔpoi Diaforik n exis sewn H pio apl diaforik exðswsh y = f (x) Diaforikèc Exis seic TÔpoi Diaforik n exis sewn H pio apl diaforik exðswsh

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 6: Συναρτήσεις Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

ISTORIKH KATASKEUH PRAGMATIKWN ARIJMWN BIBLIOGRAFIA

ISTORIKH KATASKEUH PRAGMATIKWN ARIJMWN BIBLIOGRAFIA ΛΟΓΙΣΜΟΣ CALCULUS Διαφορικός Λογισμός, Απειροστικός Λογισμός 1670 1740 Ουράνια Μηχανική Isaac Newton 1648-1727 Gottfried Wilhelm Leibniz 1646-1716 απειροστάπολύ μικρά μεγέθη, άπειροπάρα πολύ μεγάλο, όριο

Διαβάστε περισσότερα

Δηλώσεις Εργαστηρίων

Δηλώσεις Εργαστηρίων Δηλώσεις Εργαστηρίων Η δήλωση των εργαστηρίων γίνεται με ηλεκτρονικό τρόπο μέσω διαδικτύου στη διεύθυνση: http://hydra.it.teithe.gr/diloseis/ Συνιστάται να ελέγξετε τη σελίδα των βαθμολογιών που βρίσκεται

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS.

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS. PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS 6h Seirˆ Ask sewn OmogeneÐc grammikèc diaforikèc exis seic me stajeroôc suntelestèc Jèma

Διαβάστε περισσότερα

Ευθύγραμμες Κινήσεις

Ευθύγραμμες Κινήσεις Οι παρακάτω σημειώσεις διανέμονται υπό την άδεια: Creaive Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές. 1 Θέση και Σύστημα αναφοράς Στην καθημερινή μας ζωή για να περιγράψουμε

Διαβάστε περισσότερα

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή

Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Κεφάλαιο 14: Συμβουλές προς έναν νέο προγραμματιστή Φτάσαμε σιγά σιγά στο τέλος του βιβλίου. Αντί για κάποιον επίλογο σκέφτηκα να συλλέξω κάποια πράγματα που θα ήθελα να πω σε κάποιον ο οποίος αρχίζει

Διαβάστε περισσότερα

Επικοινωνία:

Επικοινωνία: Σπύρος Ζυγούρης Καθηγητής Πληροφορικής Επικοινωνία: spzygouris@gmail.com Πως ορίζεται ο τμηματικός προγραμματισμός; Πρόγραμμα Εντολή 1 Εντολή 2 Εντολή 3 Εντολή 4 Εντολή 5 Εντολή 2 Εντολή 3 Εντολή 4 Εντολή

Διαβάστε περισσότερα

Pascal. 26 Οκτωβρίου 2011

Pascal. 26 Οκτωβρίου 2011 Pascal 6 Οκτωβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

Διαβάστε περισσότερα

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας Προβλήματα, αλγόριθμοι, ψευδοκώδικας October 11, 2011 Στο μάθημα Αλγοριθμική και Δομές Δεδομένων θα ασχοληθούμε με ένα μέρος της διαδικασίας επίλυσης υπολογιστικών προβλημάτων. Συγκεκριμένα θα δούμε τι

Διαβάστε περισσότερα

Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα του προγράμματος

Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα του προγράμματος HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 3 ο Symbol Table & Scopes Ι ΑΣΚΩΝ Αντώνιος Σαββίδης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #2 2 Γενικά Στο Εργαστήριο αυτό θα αναλύσουμε τη χρήση της βασικής εντολής ελέγχου ροής

Διαβάστε περισσότερα

Εισαγωγή στην Γλώσσα Lisp

Εισαγωγή στην Γλώσσα Lisp Εισαγωγή Η γλώσσα προγραμματισμού Lisp ( από το List processing language) σχεδιάστηκε ως γλώσσα συμβολικού προγραμματισμού. Γενικά, τα σύμβολα μπορούν να χρησιμοποιηθούν για να αντιπροσωπεύσουν διαφορετικά

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα

JEMATA EXETASEWN Pragmatik Anˆlush I

JEMATA EXETASEWN Pragmatik Anˆlush I JEMATA EXETASEWN Pragmatik Anˆlush I JEMA 1o. A)(M. 1.5) Na qarakthrðsete (me aitiolìghsh) tic protˆseic pou akoloujoôn me thn èndeixh Swstì Lˆjoc: (i) 'Estw x 0 tètoio ste x < ε, gia kˆje ε > 0. Tìte

Διαβάστε περισσότερα

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

Διαβάστε περισσότερα

// MATHIMA 2, // s.boot; s.makewindow.boot; // boot server!

// MATHIMA 2, // s.boot; s.makewindow.boot; // boot server! // ------ MATHIMA 2, 07.03.12 ------ // s.boot; s.makewindow.boot; // boot server! /* Αυτά θα τα δούμε αργότερα, απλώς είπα να τα συμπεριλάβω από τώρα: Server.local.options.blockSize = 16; Server.local.options.sampleRate

Διαβάστε περισσότερα

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Η εξέλιξη των γλωσσών προγραμματισμού Η εξέλιξη των γλωσσών προγραμματισμού είναι μια διαδικασία αφαίρεσης Στην αρχή ένα πρόγραμμα ήταν

Διαβάστε περισσότερα

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

Ευφυής Προγραμματισμός Ευφυής Προγραμματισμός Ιωάννης Χατζηλυγερούδης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Περιεχόμενα ενότητας Συναρτήσεις-Δομές Ελέγχου : 1. Συναρτήσεις Χρήστη 2. Έλεγχος Ροής Προγράμματος 3.

Διαβάστε περισσότερα

Λύσεις για τις ασκήσεις του lab5

Λύσεις για τις ασκήσεις του lab5 Εισαγωγή Λύσεις για τις ασκήσεις του lab5 Επειδή φάνηκε να υπάρχουν αρκετά προβλήματα σχετικά με τον τρόπο σκέψης για την επίλυση των προβλημάτων του lab5, θα συνοδεύσουμε τις λύσεις με αρκετές επεξηγήσεις,

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ. Δημητρακάκης Συναρτήσεις (Functions) Στον προγραμματισμό,

Διαβάστε περισσότερα

Χρησιμοποιώντας συναρτήσεις

Χρησιμοποιώντας συναρτήσεις Τετράδιο μαθητή ΘΕ18: Συναρτήσεις Όνομα(τα): Όνομα Η/Υ: Τμήμα: Ημερομηνία: Χρησιμοποιώντας συναρτήσεις Ξεκινήστε το Χώρο Δραστηριοτήτων, επιλέξτε τη θεματική ενότητα: ΘΕ18: Συναρτήσεις και επιλέξτε την

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS DEUTERHS KAI ANWTERHS TAXHS

PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS DEUTERHS KAI ANWTERHS TAXHS PANEPISTHMIO DUTIKHS ATTIKHS SQOLH MHQANIKWN TMHMA POLITIKWN MHQANIKWN ANWTERA MAJHMATIKA II DIAFORIKES EXISWSEIS DEUTERHS KAI ANWTERHS TAXHS 1. Grammikèc diaforikèc exis seic deôterhc kai an terhc tˆxhc

Διαβάστε περισσότερα

1. Λογικά λάθη ονομάζονται αυτά που οφείλονται σε σφάλματα κατά την υλοποίηση του αλγόριθμου.

1. Λογικά λάθη ονομάζονται αυτά που οφείλονται σε σφάλματα κατά την υλοποίηση του αλγόριθμου. ΑΕσΠΠ-Κεφ 10.Υποπρογράμματα 1 1. Λογικά λάθη ονομάζονται αυτά που οφείλονται σε σφάλματα κατά την υλοποίηση του αλγόριθμου. ΣΩΣΤΟ ΛΑΘΟΣ 2. Συντακτικά λάθη ονομάζονται αυτά που οφείλονται σε αναγραμματισμούς

Διαβάστε περισσότερα

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων

Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Ειδικά θέματα Αλγορίθμων και Δομών Δεδομένων (ΠΛΕ073) Απαντήσεις 1 ου Σετ Ασκήσεων Άσκηση 1 α) Η δομή σταθμισμένης ένωσης με συμπίεση διαδρομής μπορεί να τροποποιηθεί πολύ εύκολα ώστε να υποστηρίζει τις

Διαβάστε περισσότερα

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι 21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB Αλγόριθμος Διαδικασία Παράμετροι Τι είναι Αλγόριθμος; Οι οδηγίες που δίνουμε με λογική σειρά, ώστε να εκτελέσουμε μια διαδικασία ή να επιλύσουμε ένα

Διαβάστε περισσότερα

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1

lab13grades 449 PASS 451 PASS PASS FAIL 1900 FAIL Page 1 ΑΕΜ ΒΑΘΜΟΣ 449 PASS 451 PASS 476-1733 PASS 1779-1899 FAIL 1900 FAIL Page 1 1901 PASS 1904 PASS 1908 PASS 1909 PASS 1910 - Page 2 1911 PASS 1914 Οριακό PASS 1915 PASS 1926 PASS Page 3 1927 PASS 1928 Οριακό

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

Εφαρμοσμένα Μαθηματικά για Μηχανικούς

Εφαρμοσμένα Μαθηματικά για Μηχανικούς ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Εφαρμοσμένα Μαθηματικά για Μηχανικούς Σημειώσεις: Δειγματοληψία Γιώργος Τζιρίτας Τμήμα Επιστήμης Υπολογιστών Kefˆlaio 5 DeigmatolhyÐa 'Estw èna sônolo periodikˆ

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΚΕΦΑΛΑΙΟ 10 Όπως είδαμε και σε προηγούμενο κεφάλαιο μια από τις βασικότερες τεχνικές στον Δομημένο Προγραμματισμό είναι ο Τμηματικός Προγραμματισμός. Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης

Διαβάστε περισσότερα

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή

lab13grades Άσκηση 2 -Σωστά απελευθερώνετε ολόκληρη τη λίστα και την κεφαλή ΑΕΜ ΒΑΘΜΟΣ ΣΧΟΛΙΑ 00497 -Δεν ελέγχετε αν η createlist εκτελλέστικε σωστά και δεν τερµατίζετε το πρόγραµµα σε διαφορετική -Σωστά βρίσκετε το σηµείο στο οποίο πρέπει να προστεθεί ο κόµβος. -Σωστά τερµατίζετε

Διαβάστε περισσότερα

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

Διαβάστε περισσότερα

Τίτλος Μαθήματος: Γραμμική Άλγεβρα ΙΙ

Τίτλος Μαθήματος: Γραμμική Άλγεβρα ΙΙ Τίτλος Μαθήματος: Γραμμική Άλγεβρα ΙΙ Ενότητα: Ο δυϊκός χώρος Όνομα Καθηγητή: Ανδρέας Αρβανιτογεώργος Τμήμα: Μαθηματικών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

Ergasthriak 'Askhsh Input/Output

Ergasthriak 'Askhsh Input/Output 6 Ergasthriak 'Askhsh 6 Οπου θα ασχοληθούμε, όπως γίνεται πάντα στις γλώσσες προγραμματισμού, με αυτό που συνηθίζουμε να ονομάζουμε Input/Output. 6.1 Input/Output Ως γνωστόν, το i/o είναι ο τρόπος με τον

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ 2 ο ΣΕΤ ΑΣΚΗΣΕΩΝ Οι ασκήσεις αυτού του φυλλαδίου καλύπτουν τα παρακάτω θέματα: Συναρτήσεις (κεφάλαιο Functions)

Διαβάστε περισσότερα

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις Άσκηση 1 Σειρά Προβλημάτων 4 Λύσεις (α) Να διατυπώσετε την τυπική περιγραφή μιας μηχανής Turing (αυθεντικός ορισμός) η οποία να διαγιγνώσκει τη γλώσσα { ww w {a,b}* }. (β) Να διατυπώσετε την τυπική περιγραφή

Διαβάστε περισσότερα

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

Διαβάστε περισσότερα

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

Διαβάστε περισσότερα

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ Εισαγωγή στην γλώσσα προγραμματισμού Ακαδημαϊκό έτος 2016-2017, Εαρινό εξάμηνο Οι σημειώσεις βασίζονται στα συγγράμματα: A byte of Python (ελληνική

Διαβάστε περισσότερα

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σύντομες εισαγωγικές σημειώσεις για την. Matlab Σύντομες εισαγωγικές σημειώσεις για την Matlab Δήλωση Μεταβλητών Για να εισάγει κανείς δεδομένα στη Matlab υπάρχουν πολλοί τρόποι. Ο πιο απλός είναι στη γραμμή εντολών να εισάγουμε αυτό που θέλουμε και

Διαβάστε περισσότερα

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr»

«Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Επεξήγηση web site με λογικό διάγραμμα «Δουλεύω Ηλεκτρονικά, Δουλεύω Γρήγορα και με Ασφάλεια - by e-base.gr» Web : www.e-base.gr E-mail : support@e-base.gr Facebook : Like Twitter : @ebasegr Πολλοί άνθρωποι

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να καταλάβουν την διαφορά ανάμεσα σε τοπικές και καθολικές μεταβλητές. Nα κάνουν αποσφαλμάτωση

Διαβάστε περισσότερα

Π Κ Τ Μ Ε Μ Λύσεις των ασκήσεων

Π Κ Τ Μ Ε Μ Λύσεις των ασκήσεων Π Κ Τ Μ Ε Μ Λύσεις των ασκήσεων Πρ. Η f : [0, ] R είναι συνεχής στο [0, ]. Χρησιμοποιώντας το Θεώρημα Bolzao- Weierstraß δείξτε ότι η f είναι φραγμένη στο [0, ]. Μην επικαλεστείτε κάποιο άλλο θεώρημα.

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 13/1/13, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2012-2013 Προθεσµία: 13/1/13, 22:00 Περιεχόµενα Διαδικαστικά Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο 4, Στάδιο 5) Οδηγίες

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Microsoft Excel Μέρος 1

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Microsoft Excel Μέρος 1 Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο ΕΠΛ001 Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο Microsoft Excel Μέρος 1 Παναγιώτης Χατζηχριστοδούλου

Διαβάστε περισσότερα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου ΕΣΔ 516 Τεχνολογίες Διαδικτύου Εισαγωγή στην PHP Περιεχόμενα Περιεχόμενα PHP και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις Παράδειγματα 1 Βιβλιογραφία Ενότητας Βιβλιογραφία [Lane 2004]: Chapter

Διαβάστε περισσότερα

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Microsoft Excel Μέρος 1

Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο. Microsoft Excel Μέρος 1 Πανεπιστήμιο Κύπρου Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη της Πληροφορικής και Πληροφοριακά Συστήματα Εργαστήριο - ΕΠΛ003 Εισαγωγή στην Επιστήμη της Πληροφορικής Εργαστήριο Microsoft Excel Μέρος 1

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος Κεφάλαιο 10 Υποπρογράμματα 1 10.1 Τμηματικός προγραμματισμός Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων.

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.

- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα. Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1349 FAIL Δεν ελήφθη άσκηση 1482 1556 1559 1562 1563 1565 1566 FAIL - Στην initialize πρέπει να κάνετε έλεγχο αν η malloc αποτυγχάνει για κάθε κλήση της, άρα και για δέσµευση χώρου για

Διαβάστε περισσότερα

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσμία: 17/1/14, 22:00 ΣΕΤ ΑΣΚΗΣΕΩΝ 4 ΕΡΓΑΣΤΗΡΙΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I, ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2013-2014 Προθεσμία: 17/1/14, 22:00 Περιεχόμενα Διαδικαστικά Οδηγίες Αποστολής Εκφώνηση άσκησης (Στάδιο 0, Στάδιο 1, Στάδιο 2, Στάδιο 3, Στάδιο

Διαβάστε περισσότερα

Τι είναι βαθμωτό μέγεθος? Ένα μέγεθος που περιγράφεται μόνο με έναν αριθμό (π.χ. πίεση)

Τι είναι βαθμωτό μέγεθος? Ένα μέγεθος που περιγράφεται μόνο με έναν αριθμό (π.χ. πίεση) TETY Εφαρμοσμένα Μαθηματικά Ενότητα ΙΙ: Γραμμική Άλγεβρα Ύλη: Διανυσματικοί χώροι και διανύσματα, μετασχηματισμοί διανυσμάτων, τελεστές και πίνακες, ιδιοδιανύσματα και ιδιοτιμές πινάκων, επίλυση γραμμικών

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο

Διαβάστε περισσότερα

4 ο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΓΕΝΙΚΟΣ ΣΚΟΠΟΣ :

4 ο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΓΕΝΙΚΟΣ ΣΚΟΠΟΣ : 4 ο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ ΓΕΝΙΚΟΣ ΣΚΟΠΟΣ : Σκοπός του συγκεκριμένου φύλλου εργασίας είναι ο μαθητής να εξοικειωθεί με τις συναρτήσεις, τις αριθμητικές πράξεις καθώς και την επισήμανση κελιών υπό όρους με στόχο

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία Mεταγλωττιστές 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex Σκοπός: Το μάθημα αυτό αναφέρεται: στις κανονικές εκφράσεις στην δομή και το περιεχόμενο του αρχείου-εισόδου του flex Γενικά Θεωρία Κατά την

Διαβάστε περισσότερα

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών Συναρτήσεις 60 Ροή ελέγχου Είναι η σειρά µε την οποία εκτελούνται οι εντολές. Μέχρι τώρα, «σειριακή»,

Διαβάστε περισσότερα

ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ

ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ Ευθύγραμμη Ομαλή Κίνηση Επιμέλεια: ΑΓΚΑΝΑΚΗΣ.ΠΑΝΑΓΙΩΤΗΣ, Φυσικός https://physicscorses.wordpress.com/ Βασικές Έννοιες Ένα σώμα καθώς κινείται περνάει από διάφορα σημεία.

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

Διαβάστε περισσότερα

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8

ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ. Μια παράσταση που περιέχει πράξεις με μεταβλητές (γράμματα) και αριθμούς καλείται αλγεβρική, όπως για παράδειγμα η : 2x+3y-8 ΘΕΩΡΙΑ Β ΓΥΜΝΑΣΙΟΥ Άλγεβρα 1 ο Κεφάλαιο 1. Τι ονομάζουμε αριθμητική και τι αλγεβρική παράσταση; Να δώσετε από ένα παράδειγμα. Μια παράσταση που περιέχει πράξεις με αριθμούς, καλείται αριθμητική παράσταση,

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse

ΕΡΓΑΣΤΗΡΙΟ 16. Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse ΕΡΓΑΣΤΗΡΙΟ 16 Χρησιμοποιώντας τον Αποσφαλματιστή (Debugger) του Eclipse 1. Δημιουργήστε ένα νέο project και ενσωματώστε το πρόγραμμα Fibonacci.java. 2. Βεβαιωθείτε ότι μεταγλωττίζει σωστά. Σχήμα 1: Adding

Διαβάστε περισσότερα

Μαθηματικά: Αριθμητική και Άλγεβρα. Μάθημα 3 ο, Τμήμα Α. Τρόποι απόδειξης

Μαθηματικά: Αριθμητική και Άλγεβρα. Μάθημα 3 ο, Τμήμα Α. Τρόποι απόδειξης Μαθηματικά: Αριθμητική και Άλγεβρα Μάθημα 3 ο, Τμήμα Α Ο πυρήνας των μαθηματικών είναι οι τρόποι με τους οποίους μπορούμε να συλλογιζόμαστε στα μαθηματικά. Τρόποι απόδειξης Επαγωγικός συλλογισμός (inductive)

Διαβάστε περισσότερα

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP.

Παράρτημα A: PHP, HTML φόρμες και το πρωτόκολλο HTTP. Εργαστήριο #5 Τι πρέπει να έχετε ολοκληρώσει από το προηγούμενο εργαστήριο. Θα πρέπει να ξέρετε να εισάγετε ένα βασικό πρόγραμμα PHP μέσα σε μια ιστοσελίδα, τη χρήση της echo και τον χειρισμό απλών μεταβλητών

Διαβάστε περισσότερα