Μετάφραση προγραμμάτων

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

Download "Μετάφραση προγραμμάτων"

Transcript

1

2 Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

3 Μετάφραση προγραμμάτων Πηγαίο πρόγραμμα Μεταγλωττιστής Είσοδος Εκτελέσιμο πρόγραμμα Έξοδος 2

4 Μετάφραση προγραμμάτων Πηγαίο πρόγραμμα Είσοδος Ακολουθία από χαρακτήρες Ακολουθία από λεκτικές μονάδες Λεκτικός Αναλυτής Συντακτικός Αναλυτής Συντακτικό δένδρο Επισημειωμένο συντακτικό δένδρο Σημασιολογικός Αναλυτής Γεννήτορας Κώδικα Κώδικας Εκτελέσιμο πρόγραμμα Μεταγλωττιστής Έξοδος 3

5 Σύνταξη και σημασιολογία προγραμμάτων Σύνταξη γλωσσών προγραμματισμού: πως δείχνουν τα προγράμματα στο χρήστη, τι μορφή και τι δομή έχουν Η σύνταξη συνήθως ορίζεται με χρήση κάποιας τυπικής γραμματικής Σημασιολογία γλωσσών προγραμματισμού: τι σημαίνουν τα προγράμματα, ποια είναι η συμπεριφορά τους Η σημασιολογία είναι πιο δύσκολη να ορισθεί από τη σύνταξη διάφοροι τρόποι ορισμού της 4

6 Σύνταξη και σημασιολογία: παραδείγματα Φράση λεκτικά λάθος οπα πάς οπα χύςέ φαγ επα χιάφα κή Φράση λεκτικά ορθή αλλά συντακτικά λάθος ο παπάς ο φακή έφαγε παχιά παχύς Φράση συντακτικά (και λεκτικά) ορθή αλλά νοηματικά (και σημασιολογικά) λάθος ο παπάς ο παχιά έφαγε παχύς φακή Φράση συντακτικά και σημασιολογικά ορθή η φακή η παχιά έφαγε παχύ παπά Φράση συντακτικά και σημασιολογικά ορθή ο παπάς ο παχύς έφαγε παχιά φακή 5

7 Λεκτική ανάλυση γλωσσών Η λεκτική ανάλυση δεν είναι τετριμμένο πρόβλημα γιατί οι γλώσσες προγραμματισμού συνήθωςείναιπιοπερίπλοκεςλεκτικάαπότα Ελληνικά *p->f++ = e-6 float x, y, z; float * p = &z; x = y/*p; 6

8 Δήλωση λεκτικών μονάδων Πως δηλώνονται οι λεκτικές μονάδες; Λέξεις κλειδιά μέσω συμβολοσειρών (strings) Πως ορίζονται τα ονόματα των μεταβλητών; Πως ορίζονται οι αριθμοί κινητής υποδιαστολής; Κανονικές εκφράσεις (regular expressions) Ένας εύχρηστος τρόπος να ορίσουμε ακολουθίες από χαρακτήρες Χρησιμοποιούνται ευρέως: grep, awk, perl, κ.λπ. 7

9 Λεκτικές μονάδες με κανονικές εκφράσεις Παραδείγματα: '0' ταιριάζει μόνο με το χαρακτήρα 0 (μηδέν) '0' '1' ταιριάζει με μηδέν ή με ένα '0' '1' '2' '3' '4' '5' '6' '7' '8' '9' ταιριάζει με ψηφία [0-9] το ίδιο με το παραπάνω αλλά σε πιο συμπαγή μορφή [0-9]* σειρά από ψηφία (πιθανώς κενή) 8

10 Θέματα σχεδιασμού λεκτικών μονάδων Ακέραιοι αριθμοί (π.χ. 10) Οι αρνητικοί ακέραιοι είναι μία λεκτική μονάδα ήόχι; Χαρακτήρες (π.χ. 'a') Πως αναπαρίστανται οι μη εκτυπώσιμοι χαρακτήρες ή το ' ; Αριθμοί κινητής υποδιαστολής (π.χ. 3.14e-5) Συμβολοσειρές (π.χ. "hello world") Πώς αναπαρίσταται ο χαρακτήρας "; 9

11 Λεκτικές μονάδες με κανονικές εκφράσεις Το αλφάβητο Σ = {,=,+,-,*,/,(,),>,<,a, z,0,,9,a, Z} Ονοματίζουμε κάποιες κανονικές εκφράσεις LPAR ::= ( PLUS ::= + letter ::= A B Z a b z digit ::= ID ::= letter (letter digit)* INT ::= ((1 9) digit*) 0 10

12 Λεκτική ανάλυση (Scanning) Τεμαχίζει ένα πρόγραμμα σε μια ακολουθία από λεκτικές μονάδες (tokens) foo = a + bar2(42); ID EQUALS ID PLUS ID LPAR INT RPAR SEMI Ουσιαστικά απλοποιεί τη λειτουργία του συντακτικού αναλυτή Οι λεκτικοί αναλυτές είναι πιο γρήγοροι από τους συντακτικούς αναλυτές διότι έχουν να κάνουν με απλούστερη γραμματική 11

13 Μια γραμματική για τα Αγγλικά Μια πρόταση αποτελείται από μια ουσιαστική φράση, ένα ρήμα, και μια ουσιαστική φράση Μια ουσιαστική φράση αποτελείται από ένα άρθρο και ένα ουσιαστικό Ρήματα είναι τα εξής Άρθρα είναι τα εξής Ουσιαστικά είναι τα εξής... <S> ::= <NP> <V> <NP> <NP> ::= <A> <N> <V> ::= loves hates eats <A> ::= a the <N> ::= dog cat rat 12

14 Πως δουλεύει μια γραμματική Μια γραμματική είναι ένα σύνολο κανόνων που ορίζουν πως κατασκευάζεται ένα συντακτικό δένδρο Ξεκινάμε βάζοντας το <S> στη ρίζα του δένδρου Οι κανόνες της γραμματικής λένε πως μπορούμε να προσθέσουμε παιδιά σε κάθε σημείο του δένδρου Για παράδειγμα, οκανόνας <S> ::= <NP> <V> <NP> λέει ότι μπορούμε να προσθέσουμε κόμβους <NP>, <V>, και <NP>, με αυτή τη σειρά, ως παιδιά του κόμβου <S> 13

15 Γραμματική για αριθμητικές εκφράσεις <expr> ::= <expr> + <expr> <expr> * <expr> ( <expr> ) a b c Μια αριθμητική έκφραση μπορεί να είναι το άθροισμα δύο άλλων εκφράσεων, ή το γινόμενο δύο εκφράσεων, ή μια έκφραση που περικλείεται από παρενθέσεις, ή κάποια από τις μεταβλητές a, b, ή c 14

16 Συντακτικό δένδρο <expr> ( <expr> ) <expr> * <expr> ( <expr> ) c <expr> + <expr> a b 15

17 Συστατικά μιας γραμματικής αρχικό σύμβολο <S> ::= <NP> <V> <NP> κανόνας παραγωγής <NP> ::= <A> <N> μη τερματικά σύμβολα <V> ::= loves hates eats <A> ::= a the <N> ::= dog cat rat τερματικά σύμβολα (λεκτικές μονάδες) 16

18 Ορισμός γραμματικών σε μορφή Backus-Naur Μια γραμματική σε μορφή Backus-Naur είναι Ένα σύνολο από λεκτικές μονάδες (tokens) Συμβολοσειρές που αποτελούν τα μικρότερα αδιαίρετα κομμάτια της σύνταξης του προγράμματος Ένα σύνολο από μη τερματικά σύμβολα Συμβολοσειρές που εγκλείονται σε αγκύλες, π.χ. <NP>, και αντιπροσωπεύουν κομμάτια του συντακτικού της γλώσσας Δε συναντιούνται στο πρόγραμμα, αλλά είναι σύμβολα που βρίσκονται στο αριστερό μέρος κάποιων κανόνων της γραμματικής Το αρχικό σύμβολο της γραμματικής Ένα συγκεκριμένο μη τερματικό σύμβολο που αποτελεί τη ρίζα του συντακτικού δένδρου για κάθε αποδεκτό από τη γλώσσα πρόγραμμα Ένα σύνολο από κανόνες παραγωγής 17

19 Κανόνες παραγωγής (1) Οι κανόνες παραγωγής χρησιμοποιούνται για την κατασκευή του συντακτικού δένδρου Κάθε κανόνας έχει τη μορφή Α ::= Δ Το αριστερό μέρος Α αποτελείται από ένα μη τερματικό σύμβολο Το δεξί μέρος Δ είναι μια ακολουθία από τερματικά (λεκτικές μονάδες) και μη τερματικά σύμβολα 18

20 Κανόνες παραγωγής (2) Κάθε κανόνας προσδιορίζει έναν πιθανό τρόπο κατασκευής του συντακτικού υποδένδρου που έχει ως ρίζα του το μη τερματικό σύμβολο στο αριστερό μέρος Α του κανόνα και ως παιδιά αυτής της ρίζας (με την ίδια σειρά εμφάνισης) έχει τα σύμβολα στο δεξί μέρος Δ του κανόνα 19

21 Κατασκευή συντακτικών δένδρων Αρχίζουμε την κατασκευή βάζοντας το αρχικό σύμβολο της γραμματικής στη ρίζα του δένδρου Προσθέτουμε παιδιά σε κάθε μη τερματικό σύμβολο, χρησιμοποιώντας κάποιον από τους κανόνες παραγωγής της γλώσσας για το συγκεκριμένο μη τερματικό Η διαδικασία τερματίζει όταν όλα τα φύλλα του δένδρου αποτελούνται από λεκτικές μονάδες Η συμβολοσειρά που αντιστοιχεί στο δένδρο βρίσκεται διαβάζοντας τα φύλλα του δένδρου από αριστερά προς τα δεξιά 20

22 <expr> ::= <expr> + <expr> Παραδείγματα Τα συντακτικά δένδρα για τις παρακάτω εκφράσεις <expr> * <expr> ( <expr> ) a b c a+b (a+b) (a+(b)) a*b+c Η κατασκευή των συντακτικών δένδρων είναι δουλειά του συντακτικού αναλυτή (parser) ενός μεταγλωττιστή Υπάρχουν διάφοροι αποδοτικοί αλγόριθμοι και εργαλεία για ημιαυτόματη κατασκευή του συντακτικού αναλυτή 21

23 Ορισμός γλωσσών Για να ορίσουμε τη σύνταξη των γλωσσών προγραμματισμού χρησιμοποιούμε γραμματικές Η γλώσσα που ορίζεται από μια γραμματική είναι το σύνολο των συμβολοσειρών για τα οποία η γραμματική μπορεί να παράξει συντακτικά δένδρα Τις περισσότερες φορές το σύνολο αυτό είναι άπειρο (παρόλοπουηγραμματικήείναι πεπερασμένη) Η κατασκευή μιας γραμματικής για μια γλώσσα μοιάζει λίγο με προγραμματισμό... 22

24 Παράδειγμα κατασκευής γραμματικής (1) Συνήθως γίνεται με χρήση της τεχνικής διαίρει και βασίλευε (divide and conquer) Παράδειγμα: κατασκευή της γλώσσας των δηλώσεων της C: αρχικά, η δήλωσηέχειέναόνοματύπου στη συνέχεια μια ακολουθία από μεταβλητές που διαχωρίζονται με κόμματα (όπου κάθε μεταβλητή μπορεί να πάρει μια αρχική τιμή) και στο τέλος ένα ερωτηματικό (semicolon) float a; short a, b, c; int a = 1, b, c = 1 + 2; 23

25 Παράδειγμα κατασκευής γραμματικής (2) Αρχικά ας αγνοήσουμε την πιθανή ύπαρξη αρχικοποιητών: <var-decl> ::= <type-name> <declarator-list> ; Ο κανόνας για τα ονόματα των πρωτογενών τύπων (primitive types) είναι απλούστατος: <type-name> ::= short int long char float double Σημείωση: δεν παίρνουμε υπόψη τύπους πινάκων 24

26 Παράδειγμα κατασκευής γραμματικής (3) Η ακολουθία των μεταβλητών που διαχωρίζονται με κόμματα έχει ως εξής: <declarator-list> ::= <declarator> <declarator>, <declarator-list> Όπου ξανά, έχουμε προς το παρόν αγνοήσει τους πιθανούς αρχικοποιητές των μεταβλητών 25

27 Παράδειγμα κατασκευής γραμματικής (4) Οι δηλωτές μεταβλητών, με ή χωρίς αρχικοποιήσεις, ορίζονται ως: <declarator> ::= <variable-name> <variable-name> = <expr> Για ολόκληρη τη C: Πρέπει να επιτρέψουμε και ζεύγη από αγκύλες μετά το όνομα των μεταβλητών για τη δήλωση των πινάκων Πρέπει επίσης να ορίσουμε και τη σύνταξη των αρχικοποιητών πινάκων (Φυσικά θέλουμε και ορισμούς για τα μη τερματικά σύμβολα <variable-name> και <expr>) 26

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

29 Κύρια προγραμματιστικά μοντέλα (1) Προστακτικός προγραμματισμός (imperative programming) FORTRAN, Algol, COBOL, BASIC, C, Pascal, Modula-2, Ada Συναρτησιακός προγραμματισμός (functional programming) LISP, ML, Scheme, Miranda, Haskell, Erlang Λογικός προγραμματισμός (logic programming) Prolog 28

30 Κύρια προγραμματιστικά μοντέλα (2) Αντικειμενοστρεφής προγραμματισμός (object-oriented programming) Simula, Smalltalk, C++, Eiffel, Java, C# Προγραμματιμός «σεναρίων» (scripting) Perl, Python, Ruby, JavaScript, PHP Παράλληλος/ταυτόχρονος/κατανεμημένος προγραμματισμός (parallel/concurrent/distributed progr.) OCCAM, Concurrent C, Ada, Java, C#, Erlang 29

31 ΣΥΝΑΡΤΗΣΙΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 30

32 Διαφάνεια αναφοράς (referential transparency) Σε μία γλώσσα συναρτησιακού προγραμματισμού, η αποτίμηση μιας συνάρτησης δίνει πάντα το ίδιο αποτέλεσμα για τις ίδιες τιμές των παραμέτρων της Η σημαντική αυτή ιδιότητα δεν ισχύει κατ ανάγκη στις γλώσσες προστακτικού προγραμματισμού Στις προστακτικές γλώσσες αυτό συμβαίνει λόγω: Μεταβλητών που ορίζονται και αλλάζουν τιμές εκτός του σώματος της συνάρτησης (global variables) Εξάρτησης από την κατάσταση (state) του υπολογισμού Άλλων παρενεργειών (side-effects) που μπορεί να υπάρχουν στο πρόγραμμα 31

33 Παράδειγμα σε Pascal program example(output) var flag:boolean; function f(n:int): int begin if flag then f := n else f := 2*n; flag := not flag end begin flag := true; writeln(f(1)+f(2)); writeln(f(2)+f(1)); end Τι τυπώνει το πρόγραμμα; 5 και μετά 4 Περίεργο διότι περιμένουμε ότι f(1)+ f(2) = f(2)+ f(1) Στα μαθηματικά οι συναρτήσεις εξαρτώνται μόνο από τα ορίσματά τους 32

34 Συναρτησιακός προγραμματισμός (1) Πλεονεκτήματα Συντομία (2-10 φορές μικρότερος κώδικας) Ευκολία στην κατανόηση Λιγότερα σφάλματα εκτέλεσης Επαναχρησιμοποίηση, αφαίρεση, δόμηση Αυτόματη διαχείριση μνήμης Παράδειγμα: QuickSort σε Haskell qsort [] = [] qsort (x:xs) = qsort lt ++ [x] ++ qsort ge where lt = [y y <- xs, y < x] ge = [y y <- xs, y >= x] 33

35 Συναρτησιακός προγραμματισμός (2) Μειονεκτήματα Μειωμένη απόδοση Μεγαλύτερες απαιτήσεις μνήμης Όχι μειονεκτήματα αλλαγή φιλοσοφίας στον προγραμματισμό Όχι μεταβλητές, όχι εντολές ανάθεσης Εκφράσεις και συναρτήσεις Τα παραδείγματα που ακολουθούν είναι σε Haskell 34

36 Δηλώσεις και εξαγωγή τύπων Δήλωση συναρτήσεων inc n = n + 1 f t = t * inc t Δήλωση τιμών x = f 6 y = f (f 2) Συμπερασμός τύπων Οι τύποι υπολογίζονται αυτόματα inc, f :: Int -> Int x, y :: Int (type inference) 35

37 Υπολογισμοί τιμών Υπολογισμός τιμής x f 6 6 * inc 6 6*(6+1) 6*7 42 f t = t * inc t Το αποτέλεσμα είναι ανεξάρτητο της σειράς των επιμέρους υπολογισμών (υπό κ.σ.) y f (f 2) f (2 * inc 2) f (2*(2+1)) f (2*3) f 6 6 * inc 6 6*(6+1) 6*7 42 y f (f 2) f 2 * inc (f 2) (2 * inc 2) * inc (2 * inc 2) (2*(2+1)) * inc (2*(2+1)) (2*(2+1)) * (2*(2+1)+1) 42 36

38 Τοπικές δηλώσεις Με χρήση του let x = let inc n = n+1 f t = t * inc t in f 6... ή με χρήση του where x = f 6 where inc n = n+1 f t = t * inc t Οιτοπικέςδηλώσειςακολουθούνκανόνες εμβέλειας όπως π.χ. της Pascal 37

39 Πλειάδες τιμών Συναρτήσεις με πολλές παραμέτρους add :: (Int, Int) -> Int add (x, y) = x+y... και πολλά αποτελέσματα solve2eq :: (Double, Double, Double) -> (Double, Double) solve2eq (a, b, c) = let d = b*b - 4.0*a*c x1 = (-b - sqrt(d)) / (2.0*a) x2 = (-b + sqrt(d)) / (2.0*a) in (x1, x2) 38

40 Αναδρομή Στο συναρτησιακό προγραμματισμό είναι ο κύριος τρόπος επαναληπτικών υπολογισμών Υπολογισμός παραγοντικού factorial n = if n <= 1 then 1 else n * factorial (n-1) Υπολογισμός Μ.Κ.Δ. (αλγόριθμος Ευκλείδη) gcd (n, 0) = n gcd (n, m) = gcd(m, n `mod` m) αν m 0 pattern matching στις παραμέτρους 39

41 Συναρτήσειςυψηλήςτάξης Συναρτήσεις που παίρνουν ως παραμέτρους άλλες συναρτήσεις twice :: (Int -> Int, Int) -> Int twice (f, x) = f (f x) inc n = n + 1 plus2 x = twice (inc, x)... ή που έχουν ως αποτέλεσμα συναρτήσεις plusn :: Int -> (Int -> Int) plusn x = let f y = x + y in f 40

42 Ανώνυμες συναρτήσεις Η συνάρτηση που απεικονίζει κάθε n στο n+1 λn. n+1 \n -> n+1 Παράδειγμα twice :: (Int -> Int, Int) -> Int twice (f, x) = f (f x) plus2 :: Int -> Int plus2 x = twice (\n -> n+1, x) plusn :: Int -> (Int -> Int) plusn x = \y -> x + y 41

43 Παραμέτρων συνέχεια (1) Currying (Haskell B. Curry) Μια συνάρτηση με δύο παραμέτρους ισοδυναμεί με μια συνάρτηση που δέχεται την πρώτη παράμετρο και επιστρέφει μια συνάρτηση που δέχεται τη δεύτερη add :: (Int, Int) -> Int add (x, y) = x+y add :: Int -> (Int -> Int) add x = \y -> x+y Curried version add (x, y) == (add x) y 42

44 Παραμέτρων συνέχεια (2) Απλούστερη γραφή curried συναρτήσεων add :: Int -> Int -> Int add x y = x+y twice :: (Int -> Int) -> Int -> Int twice f x = f (f x) Με τις curried συναρτήσεις επιτρέπεται η μερική εφαρμογή twice (add 20) 2 add 20 (add 20 2) add 20 (20+2) 20+(20+2) 42 43

45 Λίστες (1) Ακολουθίες ομοειδών στοιχείων digits :: [Int] digits = [0,1,2,3,4] == 0:1:2:3:4:[] prices :: [(String, Float)] prices = [("μήλο", 3.0), ("αχλάδι", 2.2), ("ανανάς", 5.5)] Παραδείγματα με λίστες Εύρεση μήκους length [] = 0 length (x:xs) = 1 + length xs 44

46 Λίστες (2) Παραδείγματα με λίστες (συνέχεια) Συνένωση δύο λιστών concat [] ys = ys concat (x:xs) ys = x : concat xs ys Αναστροφή λίστας reverse [] = [] reverse (x:xs) = concat (reverse xs) [x] Αναστροφή λίστας (καλύτερη υλοποίηση) reverse xs = rev xs [] where rev [] ys = ys rev (x:xs) ys = rev xs (x:ys) 45

47 Λίστες (3) Παραδείγματα με λίστες και συναρτήσεις υψηλής τάξης Εφαρμογή μιας συνάρτησης σε όλα τα στοιχεία μιας λίστας map f [] = [] map f (x:xs) = f x : map f xs Φιλτράρισμα των στοιχείων μιας λίστας filter f [] = [] filter f (x:xs) = if f x then x : filter f xs else filter f xs 46

48 Παραμετρικός πολυμορφισμός (1) Ποιοςοτύποςτηςταυτοτικήςσυνάρτησης; id x = x Μπορεί να δεχθεί παραμέτρους κάθε τύπου id :: Int id "Hello" "Hello" :: String id inc inc :: Int -> Int Είναι μια πολυμορφική συνάρτηση id :: a -> a (για κάθε τύπο a) 47

49 Παραμετρικός πολυμορφισμός (2) Περισσότερες πολυμορφικές συναρτήσεις length :: [a] -> Int concat :: [a] -> [a] -> [a] reverse :: [a] -> [a] filter :: (a -> Bool) -> [a] -> [a] και με περισσότερους άγνωστους τύπους map :: (a -> b) -> [a] -> [b] ένα ακόμα σύνθετο παράδειγμα zip :: [a] -> [b] -> [(a, b)] zip [] ys = [] zip xs [] = [] zip (x:xs) (y:ys) = (x,y) : zip xs ys 48

50 Ορισμοί τύπων (1) Απλές απαριθμήσεις data Light = Red Green Yellow next :: Light -> Light next Green = Yellow next Yellow = Red next Red = Green Πιο σύνθετοι τύποι δεδομένων data Number = NInteger Int NReal Double NComplex Double Double neg (NInteger n) = NInteger (-n) neg (NReal r) = NReal (-r) neg (NComplex x y) = NComplex (-x) (-y) 49

51 Ορισμοί τύπων (2) Αναδρομικά ορισμένοι τύποι Συνδεδεμένες μονομορφικές λίστες data IntList = Nil Cons Int IntList ή και πολυμορφικές λίστες data List a = Nil Cons a (List a) Παραδείγματα sum :: List Int -> Int sum Nil = 0 sum (Cons x xs) = x + sum xs length :: List a -> Int length Nil = 0 length (Cons x xs) = 1 + length xs 50

52 Ορισμοί τύπων (3) Αναδρομικά ορισμένοι τύποι (συνέχεια) Πολυμορφικά δυαδικά δέντρα data Tree a = Nil Node a (Tree a) (Tree a) Μέτρηση κόμβων count :: Tree a -> Int count Nil = 0 count (Node a left right) = 1 + count left + count right 51

53 Ορισμοί τύπων (4) Αναδρομικά ορισμένοι τύποι (συνέχεια) Διάσχιση κατά βάθος preorder :: Tree a -> [a] preorder Nil = [] preorder (Node a left right) = a : preorder left ++ preorder right Διάσχιση κατά πλάτος traversebf :: Tree a -> [a] traversebf t = trav [t] where trav [] = [] trav (Nil : ts) = trav ts trav (Node a left right : ts) = a : trav (ts ++ [left, right]) 52

54 Πρόθυμη και οκνηρή αποτίμηση (1) Πρόθυμη αποτίμηση (eager evaluation) Οι υπολογισμοί γίνονται όσο πιο νωρίτερα δυνατόν Οι παράμετροι των συναρτήσεων αποτιμώνται πριν την κλήση π.χ. LISP, ML, Scheme, Erlang Οκνηρή αποτίμηση (lazy evaluation) Οι υπολογισμοί γίνονται όσο πιο αργότερα δυνατόν, δηλαδή μόνο όταν χρειαστεί το αποτέλεσμά τους (call by need evaluation) Οι παράμετροι των συναρτήσεων αποτιμώνται την πρώτη φορά που θα χρειαστεί η τιμή π.χ. Miranda, Haskell 53

55 Πρόθυμη και οκνηρή αποτίμηση (2) Παράδειγμα: άπειρη αναδρομή loop n = loop (n+1) foo x y = if x == 1 then y else 42 Πρόθυμη αποτίμηση foo 6+1 (loop 0) foo 7 (loop (0+1)) foo 7 (loop 1) foo 7 (loop (1+1)) foo 7 (loop 2) (δεν τερματίζει) Οκνηρή αποτίμηση foo 6+1 (loop 0) if 6+1 == 1 then loop 0 else 42 if 7 == 1 then loop 0 else

56 Πρόθυμη και οκνηρή αποτίμηση (3) Παράδειγμα: άπειρη λίστα πρώτων αριθμών με το κόσκινο του Ερατοσθένη primes :: [Int] primes = sieve (natsgt 2) where natsgt n = n : natsgt (n+1) sieve (x:xs) = x : sieve (filter (ndiv x) xs) ndiv x y = y `mod` x /= 0 primes == [2,3,5,7,11,13,17,19,23,29, ] allnats = 0 : map (\n -> n+1) allnats 55

57 Πέρααπότοσυναρτησιακόμοντέλο Αγνά συναρτησιακός προγραμματισμός (purely functional programming) Παρενέργειες (side effects) Μεταβαλλόμενες μεταβλητές(mutable variables) πολλαπλές αναθέσεις τιμής προσπελάσεις (ανακλήσεις τιμής) Είσοδος/έξοδος (input/output) εκτύπωση σε οθόνη ή σε αρχείο ανάγνωση από το πληκτρολόγιο ή από αρχείο 56

58 ΛΟΓΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 57

59 Λογικός προγραμματισμός Κεντρική ιδέα Το πρόγραμμα είναι εκφρασμένο σε μια μορφή συμβολικής λογικής με δήλωση των σχέσεων μεταξύ των δεδομένων που διαχειρίζεται Η εκτέλεση του προγράμματος ισοδυναμεί με τη διεξαγωγή συλλογισμών σε αυτή τη λογική ΗγλώσσαProlog W.F. Clocksin and C.S. Mellish, Programming in Prolog, 4th edition, Springer-Verlag, New York,

60 Κατηγορηματική λογική (1) Προτάσεις (predicate logic) Δηλώσεις σε συμβολική μορφή που είναι είτε αληθείς είτε όχι αληθείς Αναφέρονται σε αντικείμενα και σε σχέσεις μεταξύ αυτών Ατομική πρόταση: κατηγόρημα(ορίσματα) Τελεστές: (όχι) (και) (ή) (συνεπάγεται) (προκύπτει από) (ισοδυναμεί) (για κάθε) (υπάρχει) 59

61 Κατηγορηματική λογική (2) Κανονική μορφή και προτάσεις Horn Κάθε πρόταση μπορεί να γραφεί στην παρακάτω κανονική μορφή Β 1 Β 2... Β m A 1 A 2... A n όπου τα A 1, A 2,... A n και Β 1, Β 2,... Β m είναι ατομικές προτάσεις Πολλές (αλλά όχι όλες) οι προτάσεις μπορούν να γραφούν σε μορφή προτάσεως Horn Β A 1 A 2... A n ή A 1 A 2... A n 60

62 Τύποι δεδομένων της γλώσσας Prolog Μεταβλητές: Αρχίζουν με κεφαλαίο γράμμα ή με το χαρακτήρα _ Άτομα: Αρχίζουν με μικρό γράμμα (π.χ. john) ή περικλείονται από αποστρόφους (π.χ. John ) Ακέραιοι: 0, 42, -42, Πραγματικοί: , Λίστες: [], [1,2,3], [42,apple] Δομημένα δεδομένα: person(john, 1970), student(el ,[10,9,10,9,10]) 61

63 Γεγονότα και κανόνες (1) Δήλωση γεγονότων male(john). male(george). female(mary). female(jenny). parent(john,george). parent(mary,george). parent(john,jenny). parent(mary,jenny). Δήλωση κανόνων father(x,y) :- parent(x,y), male(x). mother(x,y) :- parent(x,y), female(x). 62

64 Γεγονότα και κανόνες (2) Δήλωση κανόνων (συνέχεια) human(x) :- male(x). human(x) :- female(x). brother(x,y) :- male(x), parent(z,x), parent(z,y). sister(x,y) :- female(x), parent(z,x), parent(z,y). Ερωτήσεις στόχοι (goals)?- male(john). yes?- male(mary). no 63

65 Γεγονότα και κανόνες (3) Ερωτήσεις στόχοι (συνέχεια)?- male(peter). no?- male(x). X = john; X = george; no?- human(x). X = john; X = george; X = mary; X = jenny; no 64

66 Γεγονότα και κανόνες (4) Ερωτήσεις στόχοι (συνέχεια)?- brother(george,jenny). yes?- mother(x,george). X = mary; no?- sister(x,y). X = jenny, Y = george; X = jenny, Y = jenny; X = jenny, Y = george; X = jenny, Y = jenny; no 65

67 Επίλυση (1) Αλγόριθμος επίλυσης (resolution) Ηερώτηση-στόχος συγκρίνεται με τα γεγονότα και τα αριστερά μέλη (κεφαλές) των κανόνων Ενοποίηση (unification): αυτή η σύγκριση προκαλεί πιθανώς τη συγκεκριμενοποίηση κάποιων μεταβλητών Αν η σύγκριση επιτύχει για κάποιο γεγονός, ο στόχος έχει ικανοποιηθεί Αν επιτύχει για το αριστερό μέλος κανόνα, οι υποθέσεις προστίθενται στη λίστα των στόχων 66

68 Επίλυση (2) Αλγόριθμος επίλυσης (συνέχεια) Οπισθοδρόμηση (backtracking): αν ένας στόχος αποτύχει, δηλαδή δεν μπορεί να ικανοποιηθεί, ο αλγόριθμος οπισθοδρομεί στον αμέσως προηγούμενο στόχο και προσπαθεί την επίλυση με την αμέσως επόμενη επιλογή γεγονότος ή κανόνα Παράδειγμα X=john X=mary?- mother(x,george). parent(x,george), female(x). parent(john,george), female(john). parent(mary,george), female(mary). backtracking 67

69 Χαρακτηριστικά της Prolog (1) Η σειρά εμφάνισης γεγονότων, κανόνων και στόχων είναι καθοριστική ancestor(x,y) :- ancestor(z,y), parent(x,z). ancestor(x,y) :- parent(x,y). Υπόθεση του κλειστού κόσμου Οι μόνες αληθείς προτάσεις είναι αυτές που αποδεικνύονται βάσει των γνωστών γεγονότων και κανόνων 68

70 Χαρακτηριστικά της Prolog (2) Το πρόβλημα της άρνησης Μια αρνητική πρόταση not A είναι αληθής όταν ο στόχος A δεν μπορεί να ικανοποιηθεί Αυτή η άρνηση δεν ταυτίζεται με τη λογική άρνηση, π.χ. not not A A Το πρόβλημα των προδιαγραφών Ένα πρόγραμμα ισοδυναμεί με τον ορισμό των προδιαγραφών του σε κατηγορηματική λογική Ο μετασχηματισμός των προδιαγραφών σε αλγόριθμο επίλυσης είναι ένα άλυτο πρόβλημα 69

71 Παραδείγματα (1) Αριθμητικές πράξεις daysof(january,y,31). daysof(february,y,29) :- Y mod 400 =:= 0, Y mod 4000 =\= 0,!. daysof(february,y,29) :- Y mod 4 =:= 0, Y mod 100 =\= 0,!. daysof(february,y,28). daysof(march,y,31).... daysof(december,y,31). validdate(d,m,y) :- daysof(m,y,x), D>=1, D=<X. 70

72 Προηγούμενο παράδειγμα με if-then-else daysof(january,y,31). daysof(february,y,z) :- ( (Y mod 400 =:= 0, Y mod 4000 =\= 0) -> Z = 29 ; (Y mod 4 =:= 0, Y mod 100 =\= 0) -> Z = 29 ; Z = 28 ). daysof(march,y,31).... daysof(december,y,31). 71

73 Παραδείγματα (2) Λίστες length([],0). length([_ Xs],N) :- length(xs,m), N is M+1. member(x,[x _]). member(x,[_ Xs]) :- member(x,xs). append([],ys,ys). append([x Xs],Ys,[X Zs]) :- append(xs,ys,zs). 72

74 Παραδείγματα (3) Λίστες (συνέχεια)?- length([1,2,3,4,5],n). N = 5; no?- member(x,[1,2,3]). X = 1; X = 2; X = 3; no?- append([1,2,3],[4,5,6],l). L = [1,2,3,4,5,6]; no 73

75 Παραδείγματα (4) Λίστες (συνέχεια)?- append(l,[4,5],[1,2,3,4,5]). L = [1,2,3]; no?- append([1 X],Y,[1,2,3]). X = [], Y = [2,3]; X = [2], Y = [3]; X = [2,3], Y = []; no 74

76 Παραδείγματα (4) Λίστες (συνέχεια)?- append(x,z,[1,2,3]). X = [], Y = [1,2,3]; X = [1], Y = [2,3]; X = [1,2], Y = [3]; X = [1,2,3], Y = []; no 75

77 Παραδείγματα (3) Λίστες (συνέχεια)?- member(3,l). L = [3 _]; L = [_,3 _]; L = [_,_,3 _]; L = [_,_,_,3 _]; L = [_,_,_,_,3 _]; L = [_,_,_,_,_,3 _]; L = [_,_,_,_,_,_,3 _] άπειρες λύσεις 76

78 Παραδείγματα (5) Λίστες και (αφελής) ταξινόμηση sort(l,sl) :- permutation(l,sl), sorted(sl),!. permutation(l,[h T]) :- append(v,[h U],L), append(v,u,w), permutation(w,t). permutation([],[]). Σταματάει τη διαδικασία της αναζήτησης περισσότερων λύσεων sorted([]). sorted([_]). sorted([α,β Τ]) :- Α=<Β, sorted([β T]). 77

79 Παραδείγματα (6) Λίστες και (αφελής) ταξινόμηση (συνέχεια)?- sort([42,13,77],l). L = [13,42,77]; no?- permutation([1,2,3],x). X = [1,2,3]; X = [1,3,2]; X = [2,1,3]; X = [2,3,1]; X = [3,1,2]; X = [3,2,1]; no 78

80 Παραδείγματα (7) Λίστες και QuickSort qsort([h T],S) :- split(h,t,a,b), qsort(a,sa), qsort(b,sb), append(sa,[h SB],S). qsort([],[]). Σταματάει τη διαδικασία της αναζήτησης περισσότερων κανόνων split(h,[x Xs],A,B) :- X=<H,!, A = [X As], split(h,xs,as,b). split(h,[x Xs],A,B) :- X>Η, B = [X Bs], split(h,xs,a,bs). split(_,[],[],[]). 79

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

82 Αντικειμενοστρεφής προγραμματισμός (1) Αντικειμενοστρεφές (object-oriented) μοντέλο ανάπτυξης λογισμικού Το πρόγραμμα είναι οργανωμένο ως ένα σύνολο από αλληλεπιδρώντα αντικείμενα Κάθε αντικείμενο περιέχει: δεδομένα (data), που χαρακτηρίζουν την κατάστασή του μεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συμπεριφορά του ενθυλάκωση (encapsulation) 81

83 Αντικειμενοστρεφής προγραμματισμός (2) Βασικές αρχές Κατά την ανάλυση και τη σχεδίαση, δείτε τα αντικείμενα βάσει της διαπροσωπείας τους (interface) και όχι βάσει της υλοποίησής τους Προσπαθήστε να κρύψετε όσο το δυνατόν μεγαλύτερο μέρος της υλοποίησης Προσπαθήστε να επαναχρησιμοποιήσετε αντικείμενα Προσπαθήστε να ελαχιστοποιήσετε τις διασυνδέσεις μεταξύ αντικειμένων 82

84 Αντικειμενοστρεφής προγραμματισμός (3) Πλεονεκτήματα Φυσική περιγραφή, τουλάχιστον για ορισμένες περιοχές εφαρμογών Αφαίρεση, δόμηση, επαναχρησιμοποίηση Ιδιαίτερα διαδεδομένος σήμερα, πληθώρα γλωσσών και εργαλείων τον υποστηρίζουν Μειονεκτήματα Υπερτιμημένος... Διόγκωση κώδικα Τα παραδείγματα που ακολουθούν είναι σε Java 83

85 Κλάσεις και αντικείμενα (1) Παράδειγμα: μετρητής public class Counter { private int value; } Counter () { value = 0; } void inc () { value++; } int get () { return value; } πεδία κατασκευαστής μέθοδοι 84

86 Κλάσεις και αντικείμενα (2) Παράδειγμα (συνέχεια) κατασκευάζει ένα νέο αντικείμενο public class DemoProgram { public static void main (String [] args) { Counter c = new Counter(); } } μέθοδος κλάσης for (int i=0; i<42; i++) { c.inc(); System.out.println(c.get()); } 85

87 Κλάσεις και αντικείμενα (3) Παράδειγμα: μιγαδικοί αριθμοί public class Complex { private double re, im; Complex () { re = im = 0.0; } Complex (double r) { re = r; im = 0.0; } Complex (double r, double i) { re = r; im = i; } void negate () { re = -re; im = -im; } 86

88 Κλάσεις και αντικείμενα (4) Παράδειγμα (συνέχεια) } Complex add (Complex c) { return new Complex(re + c.re, im + c.im); } void print () { System.out.print(re); if (im > 0.0) System.out.print("+"); if (im!= 0.0) { System.out.print(im); System.out.print("i"); } } 87

89 Κλάσεις και αντικείμενα (5) Παράδειγμα (συνέχεια) public class DemoProgram2 { public static void main (String [] args) { Complex c1 = new Complex(1.0); Complex c2 = new Complex(0.0, 1.0); Complex c; } } c = c1.add(c2); c.negate(); c.print(); System.out.println(""); 88

90 Ιεραρχίες κλάσεων (1) Κληρονομικότητα (inheritance) Εξειδίκευση των αντικειμένων μιας κλάσης, υποστηρίζοντας πρόσθετη ή διαφοροποιημένη συμπεριφορά Animal Counter Mammal Bird Insect CounterDec CounterLim Human Eagle Pigeon Spider 89

91 Ιεραρχίες κλάσεων (2) Παράδειγμα: εξειδικευμένοι μετρητές public class CounterDec extends Counter { void dec () { if (value > 0) value--; } } public class CounterLim extends Counter { void inc () { if (value < 30) value++; } } επιπλέον μέθοδος υπερίσχυση μεθόδου 90

92 Ιεραρχίες κλάσεων (3) Παράδειγμα (συνέχεια) public class DemoProgram3 { public static void main (String [] args) { CounterDec c = new CounterDec(); get και inc ορίζονται στην κλάση Counter dec ορίζεται στην κλάση CounterDec } } for (int i=0; i<42; i++) { c.inc(); System.out.println(c.get()); } for (int i=0; i<42; i++) { c.dec(); System.out.println(c.get()); } 91

93 Ιεραρχίες κλάσεων (4) Παράδειγμα (συνέχεια) inc ορίζεται { στην κλάση CounterLim public class DemoProgram4 { public static void main (String [] args) } } CounterLim c = new CounterLim(); for (int i=0; i<42; i++) { c.inc(); System.out.println(c.get()); } get ορίζεται στην κλάση Counter 92

94 Σχέση υποτύπων (1) Τα αντικείμενα της εξειδικευμένης κλάσης μπορούν να χρησιμοποιούνται μέσω αναφορών σε αντικείμενα της βασικής κλάσης Παράδειγμα Counter c = new CounterDec(); for (int i=0; i<42; i++) { c.inc(); System.out.println(c.get()); } 93

95 Σχέση υποτύπων (2) Πολυμορφισμός υποτύπων (subtype polymorphism) Counter c1 = new Counter(); Counter c2 = new CounterLim(); for (int i=0; i<42; i++) { c1.inc(); c2.inc(); } Ποιες θα είναι οι τιμές των μετρητών; δυναμικό δέσιμο (dynamic binding) η c2.inc() καλεί την inc της CounterLim 94

96 Αφηρημένες κλάσεις Κλάσεις που περιέχουν αφηρημένες (abstract) μεθόδους, οι οποίες διαθέτουν μόνο επικεφαλίδα η υλοποίησή τους δίνεται σε εξειδικευμένες κλάσεις Παράδειγμα public abstract class Expression { abstract double eval (); } 95

97 Εκφράσεις σε δέντρα (1) Παράδειγμα: ένας υπολογιστής για αριθμητικές εκφράσεις Σταθερές public class Constant extends Expression { private double value; } Constant (double d) { value = d; } double eval () { return value; } 96

98 Εκφράσεις σε δέντρα (2) Παράδειγμα (συνέχεια) Αριθμητικές πράξεις public abstract class Operation extends Expression { private Expression left, right; } Operation (Expression l, Expression r) { left = l; right = r; } 97

99 Εκφράσεις σε δέντρα (3) Παράδειγμα (συνέχεια) Πρόσθεση public class Plus extends Operation { Plus (Expression l, Expression r) { super(l, r); } } double eval () { return left.eval() + right.eval(); } 98

100 Εκφράσεις σε δέντρα (4) Παράδειγμα (συνέχεια) public class DemoProgram7 { public static void main (String [] args) { Expression e1 = new Plus(new Constant(3), new Constant(4)); Expression e2 = new Minus(new Constant(8), new Constant(2)); Expression e = new Times(e1, e2); } } System.out.println(e.eval()); 99

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

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

ΚΥΡΙΑ ΜΟΝΤΕΛΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΥΡΙΑ ΜΟΝΤΕΛΑ ΓΛΩΣΣΩΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 27 Κύρια προγραμματιστικά μοντέλα (1) Προστακτικός προγραμματισμός (imperative programming) FORTRAN, Algol, COBOL, BASIC, C, Pascal, Modula-2, Ada Συναρτησιακός προγραμματισμός

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

Μοντέλα Προγραµµατισµού

Μοντέλα Προγραµµατισµού ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/~pagour/introcs/shmmy/ Επιµέλεια: (nickie@softlab.ntua.gr) Συναρτησιακός προγραµµατισµός Λογικός προγραµµατισµός Αντικειµενοστρεφής

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

Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα

Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Επιμέλεια και παρουσίαση: (kostis@cs.ntua.gr) Αρχικές διαφάνειες: Νίκος Παπασπύρου (nickie@softlab.ntua.gr) Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα

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

Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα

Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Επιμέλεια και παρουσίαση: Αρχικές διαφάνειες: Νίκος Παπασπύρου (kostis@cs.ntua.gr) (nickie@softlab.ntua.gr) Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα

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

Θεωρητικό Υπόβαθρο και Μοντέλα

Θεωρητικό Υπόβαθρο και Μοντέλα ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Επιμέλεια και παρουσίαση: (kostis@cs.ntua.gr) Αρχικές διαφάνειες: Νίκος Παπασπύρου (nickie@softlab.ntua.gr) Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα

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

Outline. 4 Object-Oriented Programming

Outline. 4 Object-Oriented Programming Προγραμματισμός Ηλεκτρονικών Υπολογιστών Φιλοσοφίες γλωσσών προγραμματισμού Διδάσκων: Στάθης Ζάχος Επιμέλεια Διαφανειών: Μάκης Αρσένης CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Ιανουάριος 2016 ιδάσκων: Στάθης Ζάχος ( CoReLab

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

(Imperative Programming) Pascal, C, Ada, Pazcal. (Functional Programming) Prolog (Logic Programming) (object-oriented programming) Java, C#

(Imperative Programming) Pascal, C, Ada, Pazcal. (Functional Programming) Prolog (Logic Programming) (object-oriented programming) Java, C# Φιλοσοφία Γλωσσών Προγραμματισμού Προγραμματιστικό Μοντέλο Γλώσσες Προστακτικός Προγραμματισμός FORTRAN, Algol, COBOL (Imperative Programming) Pascal, C, Ada, Pazcal Συναρτησιακός Προγραμματισμός LISP,

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

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

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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

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

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

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

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

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

Σύνταξη & Συντακτική Ανάλυση

Σύνταξη & Συντακτική Ανάλυση Σύνταξη & Συντακτική Ανάλυση Μια γραμματική για τα Αγγλικά Μια πρόταση αποτελείται από μια ουσιαστική φράση, ένα ρήμα, και μια ουσιαστική φράση ::= Μια ουσιαστική φράση αποτελείται από

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα

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

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

Εισαγωγή στη Γλώσσα ML Συναρτησιακός και Προστακτικός Προγραμματισμός Εισαγωγή στη Γλώσσα ML Ένας τρόπος διαχωρισμού Ο προστακτικός προγραμματισμός επικεντρώνει στο πως θα υλοποιήσουμε τα συστατικά του προγράμματός μας Ο συναρτησιακός

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

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

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

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

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

10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος. 1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.

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

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης Υπολογιστές Ι Εισαγωγή Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

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

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

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

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

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Μεταγλωττιστές Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

Εισαγωγή στη Γλώσσα ML. Juan Miró

Εισαγωγή στη Γλώσσα ML. Juan Miró Εισαγωγή στη Γλώσσα ML Juan Miró Κωστής Σαγώνας Συναρτησιακός και Προστακτικός Προγραμματισμός Ένας τρόπος διαχωρισμού Ο προστακτικός προγραμματισμός επικεντρώνει στο πώς θα υλοποιήσουμε

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

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι Μεταγλωττιστές Εργαστήριο 9 Σημασιολογική Ανάλυση Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι 2016-2017 Σύνταξη και Σημασιολογία Σε οποιαδήποτε γλώσσα (προγραμματισμού ή μη) υπάρχουν δύο βασικές

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

ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.

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

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

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα σύμφωνα

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

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ http://courses.softlab.ntua.gr/softeng/ ιδάσκοντες: (nickie@softlab.ntua.gr) Βασίλης Βεσκούκης (bxb@softlab.ntua.gr) Γλώσσες Προγραµµατισµού και Ανάπτυξη Συστηµάτων Λογισµικού ΤΛ

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Λεκτικός αναλυτής Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5

Τεχνολογία Λογισµικού Ι Κεφάλαιο 5 ΕΛΛΗΝΙΚΟ ΑΝΟΙΧΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραµµα σπουδών "ΠΛΗΡΟΦΟΡΙΚΗ" - Θ.Ε. ΠΛΗ11 Τεχνολογία Λογισµικού Ι Κεφάλαιο 5 Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@cs.ntua.gr

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

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

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

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

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

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

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ Θεωρία Υπολογισμού Ενότητα 7: Πεπερασμένη αναπαράσταση γλωσσών Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

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

Mεταβλητές (variables) και Σταθερές (constants)

Mεταβλητές (variables) και Σταθερές (constants) Mεταβλητές (variables) και Σταθερές (constants) Οι μεταβλητές είναι οι θέσεις μνήμης στις οποίες ένα πρόγραμμα τοποθετεί τα δεδομένα του κατά τη διάρκεια της λειτουργίας του. θα μάθουμε: πως δηλώνουμε

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

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού Προπτυχιακό μάθημα Αρχές Γλωσσών Προγραμματισμού Π. Ροντογιάννης 1 Μεταγλωττιστής Πρόγραμμα Διαβάζει προγράμματα δεδομένης γλώσσας (πηγαία γλώσσα) και τα μετατρέπει

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Σύγκριση JAVA-C ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΣΥΓΚΡΙΣΗ JAVA - C ΤΥΠΟΙ

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή Στόχοι και αντικείμενο ενότητας Η έννοια του Τελεστή #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Εκφράσεις Προτεραιότητα Προσεταιριστικότητα Χρήση παρενθέσεων Μετατροπές Τύπων Υπονοούμενες και ρητές μετατροπές

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ενότητα 7: Υπορουτίνες Καθ. Γιάννης Γαροφαλάκης Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ και Πληροφορικής Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction)

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 2: Τύποι μεταβλητών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Εισαγωγή στο Συναρτησιακό Προγραμματισμό

Εισαγωγή στο Συναρτησιακό Προγραμματισμό Εισαγωγή στο Συναρτησιακό Προγραμματισμό Γιάννης Κασσιός Σε αυτό το μάθημα θα εξερευνήσουμε ένα σπουδαίο μοντέλο προγραμματισμού, το συναρτησιακό προγραμματισμό. Θα δούμε το συναρτησιακό προγραμματισμό

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

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

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

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

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία σημαντικά στάδια: 1. Τον ακριβή προσδιορισμό του προβλήματος. 2. Την ανάπτυξη

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

Δεδομένα, τελεστές, είσοδος/έξοδος

Δεδομένα, τελεστές, είσοδος/έξοδος 2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών

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

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

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

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

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

Εισαγωγή στην Πληροφορική Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Εισαγωγή στην Πληροφορική Ενότητα 6: Αλγόριθμοι / Προγραμματισμός Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

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

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

Μαλούτα Θεανώ Σελίδα 1 ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 4: Εντολές ελέγχου ροής Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

Τύποι δεδομένων, τελεστές, μεταβλητές

Τύποι δεδομένων, τελεστές, μεταβλητές Τύποι δεδομένων, τελεστές, μεταβλητές Βασικά στοιχεία της γλώσσας Η Java χαρακτηρίζεται από ένα αρκετά καλά οργανωμένο σύνολο εντολών κι ένα μέρος της επιτυχίας της οφείλεται στα διάφορα APIs (βιβλιοθήκες)

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Pascal, απλοί τύποι, τελεστές και εκφράσεις Pascal, απλοί τύποι, τελεστές και εκφράσεις 15 Νοεμβρίου 2011 1 Γενικά Στην standard Pascal ορίζονται τέσσερις βασικοί τύποι μεταβλητών: integer: Παριστάνει ακέραιους αριθμούς από το -32768 μέχρι και το

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

ΜΑΘΗΜΑ: Μεταγλωττιστές

ΜΑΘΗΜΑ: Μεταγλωττιστές Comment [h1]: Παράδειγμ α: https://ocp.teiath.gr/modules/ exercise/exercise_result.php?course=pey101&eurid=16 9 ΜΑΘΗΜΑ: Μεταγλωττιστές ΔΙΔΑΣΚΩΝ: Άγγελος Μιχάλας ΤΜΗΜΑ: Τμήμα Μηχανικών Πληροφορικής ΤΕ 1

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

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

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

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

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

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

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

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 6: Ασκήσεις στη Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

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

ΑΕΠΠ Ερωτήσεις θεωρίας ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 4: Τελεστές Τελεστές: Τελεστής Ανάθεσης 2 Το σύμβολο της ανάθεσης είναι το = Προσοχή: το σύμβολο ελέγχου ισότητας είναι το ==. Η μορφή των προτάσεων ανάθεσης είναι:

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

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

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

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

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )

Τύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( ) Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών Γιώργος Δημητρίου Μάθημα 8 ο Μετάφραση Οδηγούμενη από τη Σύνταξη Ο ΣΑ καλεί τις ρουτίνες που εκτελούν τη σημασιολογική ανάλυση και παράγουν τον ενδιάμεσο κώδικα Σημασιολογικές πληροφορίες μπορούν να μεταφέρονται

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής Γιώργος Δημητρίου Μάθημα 3 ο Λεκτική Ανάλυση και Λεκτικοί Αναλυτές Γενικά για τη λεκτική ανάλυση Έννοιες που χρειαζόμαστε Τεχνικές λεκτικής ανάλυσης Πίνακας συμβόλων και διαχείριση λαθών Σχεδίαση λεκτικού

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ www.cslab.ece.ntua.gr 1 η ΑΣΚΗΣΗ ΣΤΗΝ

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

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

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

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

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 10: Συναρτήσεις Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

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

Αφαίρεση στον FP. Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός

Αφαίρεση στον FP. Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός Αφαίρεση στον FP Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός Πολυμορφισμός Θα χρησιμοποιήσουμε σαν παράδειγμα τη συνάρτηση ταυτότητας Ι, που ορίζεται ως: fun I x = x Ο ορισμός

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

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί

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

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

ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες

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

Ονόματα και Εμβέλεια. Wassily Kandinsky, Black lines, 1913

Ονόματα και Εμβέλεια. Wassily Kandinsky, Black lines, 1913 Ονόματα και Εμβέλεια Wassily Kandinsky, Black lines, 1913 Κωστής Σαγώνας Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα Αλλά στις μοντέρνες

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

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

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

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη

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

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

ΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ ΥΠΟΛΟΓΙΣΤΕΣ Ι Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ Τα επιμέρους τμήματα ΕΙΣΟ ΟΣ ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΕΛΕΓΧΟΥ ΑΡΙΘΜΗΤΙΚΗ ΛΟΓΙΚΗ ΕΞΟ ΟΣ ΚΕΝΤΡΙΚΗ ΕΠΕΞΕΡΓΑΣΙΑΣ 1 2 Αναπαράσταση μεγεθών ΜΕΤΡΟΥΜΕΝΟ ΜΕΓΕΘΟΣ ΑΝΑΛΟΓΙΚΗ ΑΝΑΠΑΡΑΣΤΑΣΗ

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