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

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

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

Transcript

1 ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Επιµέλεια: Συναρτησιακός προγραµµατισµός Λογικός προγραµµατισµός Αντικειµενοστρεφής προγραµµατισµός 1

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

3 Κύρια προγραµµατιστικά µοντέλα (ii) Αντικειµενοστρεφής προγραµµατισµός (object-oriented programming) Simula, Smalltalk, C++, Eiffel, Java Παράλληλος/κατανεµηµένος προγραµµατισµός (parallel/concurrent/distributed programming) OCCAM, Concurrent C, Ada, Java 3

4 Συναρτησιακός προγραµµατισµός (i) Πλεονεκτήµατα Συντοµία (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] 4

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

6 ηλώσεις και εξαγωγή τύπων ήλωση συναρτήσεων 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) 6

7 Υπολογισµοί τιµών Υπολογισµός τιµής x f 6 6 * inc 6 6*(6+1) 6*7 42 Το αποτέλεσµα είναι ανεξάρτητο της σειράς των επιµέρους υπολογισµών (υπό κ.σ.) 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 7

8 Τοπικές δηλώσεις Με χρήση του 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 8

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

10 Αναδροµή Στο συναρτησιακό προγραµµατισµό είναι ο κύριος τρόπος επαναληπτικών υπολογισµών Υπολογισµός παραγοντικού 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 στις παραµέτρους 10

11 Συναρτήσεις υψηλής τάξης Συναρτήσεις που παίρνουν ως παραµέτρους άλλες συναρτήσεις 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 11

12 Ανώνυµες συναρτήσεις Η συνάρτηση που απεικονίζει κάθε 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 12

13 Παραµέτρων συνέχεια (i) 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 13

14 Παραµέτρων συνέχεια (ii) Απλούστερη γραφή 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 14

15 Λίστες (i) Ακολουθίες οµοειδών στοιχείων digits :: [Int] digits = [0,1,2,3,4,5,6,7,8,9] dictionary :: [(String, String)] dictionary = [("apple", "µήλο"), ("pear", "αχλάδι"), ("pencil", "µολύβι")] Παραδείγµατα µε λίστες Εύρεση µήκους length [] = 0 length (x:xs) = 1 + length xs 15

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

17 Λίστες (iii) Παραδείγµατα µε λίστες και συναρτήσεις υψηλής τάξης Εφαρµογή µιας συνάρτησης σε όλα τα στοιχεία µιας λίστας 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 17

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

19 Παραµετρικός πολυµορφισµός (ii) Περισσότερες πολυµορφικές συναρτήσεις 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 19

20 Ορισµοί τύπων (i) Απλές απαριθµήσεις 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) 20

21 Ορισµοί τύπων (ii) Αναδροµικά ορισµένοι τύποι Συνδεδεµένες λίστες data ListOfInt = Nil Cons Int List ή και πολυµορφικές λίστες 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) = length xs 21

22 Ορισµοί τύπων (iii) Αναδροµικά ορισµένοι τύποι (συνέχεια) Πολυµορφικά δυαδικά δέντρα 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 22

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

24 Ορισµοί τύπων (v) Αναδροµικά ορισµένοι τύποι (συνέχεια) ιάσχιση κατά βάθος (καλύτερη υλοποίηση) preorder t = aux t [] where aux Nil ts = ts aux (Node a left right) ts = a : aux left (aux right ts) ιάσχιση κατά πλάτος (καλύτερη υλοποίηση) traversebf t = aux [t] [] where aux [] [] = [] aux [] ys = aux (reverse ys) [] aux (Nil : xs) ys = aux xs ys aux (Node a left right : xs) ys = a : aux xs (right : left : ys) 24

25 Πρόθυµη και οκνηρή αποτίµηση (i) Πρόθυµη αποτίµηση (eager evaluation) Οι υπολογισµοί γίνονται το νωρίτερο δυνατόν Οι παράµετροι των συναρτήσεων αποτιµώνται πριν την κλήση π.χ. LISP, ML, Scheme Οκνηρή αποτίµηση (lazy evaluation) Οι υπολογισµοί γίνονται το αργότερο δυνατόν, δηλαδή µόνο αν χρειαστεί το αποτέλεσµά τους Οι παράµετροι των συναρτήσεων αποτιµώνται την πρώτη φορά που θα χρειαστεί η τιµή π.χ. Miranda, Haskell 25

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

27 Πρόθυµη και οκνηρή αποτίµηση (iii) Παράδειγµα: άπειρη λίστα πρώτων αριθµών µε το κόσκινο του Ερατοσθένη 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 27

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

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

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

31 Κατηγορηµατική λογική (ii) Κανονική µορφή και προτάσεις 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 31

32 Γεγονότα και κανόνες (i) ήλωση γεγονότων 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). 32

33 Γεγονότα και κανόνες (ii) ήλωση κανόνων (συνέχεια) 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). Ερωτήσεις στόχοι?- male(john). yes?- male(mary). no (goals) 33

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

35 Γεγονότα και κανόνες (iv) Ερωτήσεις στόχοι (συνέχεια)?- 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 35

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

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

38 Μειονεκτήµατα της Prolog (i) Η σειρά εµφάνισης γεγονότων, κανόνων και στόχων είναι καθοριστική ancestor(x,x). ancestor(x,y) :- ancestor(z,y), parent(x,z). Για το λόγο αυτό υπάρχει η τοµή! (cut) Υπόθεση κλειστού κόσµου Οι µόνες αληθείς προτάσεις είναι αυτές που αποδεικνύονται βάσει των γνωστών γεγονότων και κανόνων 38

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

40 Παραδείγµατα (i) Αριθµητικές πράξεις 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. 40

41 Παραδείγµατα (ii) Λίστες length([],0). length([x 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). 41

42 Παραδείγµατα (iii) Λίστες (συνέχεια)?- length([1,2,3,4,5],x). X=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 42

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

44 Παραδείγµατα (v) Λίστες και (αφελής) ταξινόµηση 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([h T]) :- sortedx(h,t). sortedx(_,[]). sortedx(n,[h T]) :- N=<H, sortedx(h,t). 44

45 Παραδείγµατα (vi) Λίστες και (αφελής) ταξινόµηση (συνέχεια)?- 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 45

46 Παραδείγµατα (vii) Λίστες και QuickSort qsort([h T],S) :- split(h,t,a,b), qsort(a,sa), qsort(b,sb), append(sa,[h SB],S). split(h,[a X],[A Y],Z) :- A=<H, split(h,x,y,z). split(h,[a X],Y,[A Z]) :- H<A, split(h,x,y,z). split(_,[],[],[]). 46

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

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

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

50 Κλάσεις και αντικείµενα (i) Παράδειγµα: µετρητής public class Counter { private int value; } Counter () { value = 0; } void inc () { value++; } int get () { return value; } 50

51 Κλάσεις και αντικείµενα (ii) Παράδειγµα (συνέχεια) 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()); } 51

52 Κλάσεις και αντικείµενα (iii) Παράδειγµα: µιγαδικοί αριθµοί 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; } 52

53 Κλάσεις και αντικείµενα (iv) Παράδειγµα (συνέχεια) } 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("j"); } } 53

54 Κλάσεις και αντικείµενα (v) Παράδειγµα (συνέχεια) public class DemoProgram2 { public static void main (String [] args) { Complex c1 = new Complex(1); Complex cj = new Complex(0, 1); Complex c; } } c = c1.add(cj); c.negate(); c.print(); System.out.println("\n"); 54

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

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

57 Ιεραρχίες κλάσεων (iii) Παράδειγµα (συνέχεια) 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()); } 57

58 Ιεραρχίες κλάσεων (iv) Παράδειγµα (συνέχεια) 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 58

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

60 Σχέση υποτύπων (ii) Πολυµορφισµός υποτύπων (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 60

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

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

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

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

65 Εκφράσεις σε δέντρα (iv) Παράδειγµα (συνέχεια) 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()); 65

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

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

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

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

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

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

Outline. 4 Object-Oriented Programming

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

ηµιουργία νέου τύπου δεδοµένων από το χρήστη ηµιουργία νέου τύπου δεδοµένων από το χρήστη program create_a_type type chemical_element character (len=2) integer end type type (chemical_element) type (chemical_element) :: argon,carbon,neon :: Periodic_Table(109)

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

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

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

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

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

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

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

Εγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting)

Εγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting) Εγγραφές Δραστηριοποίησης Jackson Pollock, The Key, 1946 (action painting) Κωστής Σαγώνας Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

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

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

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

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

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

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

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

Εγγραφές Δραστηριοποίησης

Εγγραφές Δραστηριοποίησης Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει

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

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

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

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

Η γλώσσα ML σε βάθος. Joan Miró, El Carnaval del Arlequín, Κωστής Σαγώνας Νίκος Παπασπύρου

Η γλώσσα ML σε βάθος. Joan Miró, El Carnaval del Arlequín, Κωστής Σαγώνας Νίκος Παπασπύρου Η γλώσσα ML σε βάθος Joan Miró, El Carnaval del Arlequín, 1925 Κωστής Σαγώνας Νίκος Παπασπύρου Τι σημαίνουν οι τύποι συναρτήσεων στην ML f : A B σημαίνει: Για

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

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

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

Αναδρομικοί Αλγόριθμοι

Αναδρομικοί Αλγόριθμοι Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη

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

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

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

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

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

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

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

Κεφάλαιο 11 Εκφραστικές δυνατότητες της Haskell

Κεφάλαιο 11 Εκφραστικές δυνατότητες της Haskell Κεφάλαιο 11 Εκφραστικές δυνατότητες της Haskell Σύνοψη Στο κεφάλαιο αυτό παρουσιάζονται οι περιφραστικές λίστες, μια δυνατότητα που παρέχει η Haskell και με την οποία μπορούμε πολύ εύκολα να ορίσουμε διάφορες

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

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

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

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

Λογικός Προγραµµατισµός: Η Γλώσσα Prolog

Λογικός Προγραµµατισµός: Η Γλώσσα Prolog Λογικός Προγραµµατισµός: Η Γλώσσα Prolog 1 Βασικά Στοιχεία Γλώσσας Prolog Ορισµοί (statements): Επιτελούν το ρόλο εντολών στις κλασσικές γλώσσες προγραµµατισµού Γεγονότα Κανόνες Ερωτήσεις Όροι (terms):

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

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

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

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural)

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

Κάποιες γενικές παρατηρήσεις:

Κάποιες γενικές παρατηρήσεις: Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο

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

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

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

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

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον

Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

Αντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;

Αντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908

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

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

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

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

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

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

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

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

Επιµέλεια Θοδωρής Πιερράτος

Επιµέλεια Θοδωρής Πιερράτος Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

Συμπερασμός Τύπων και Πολυμορφισμός 4

Συμπερασμός Τύπων και Πολυμορφισμός 4 Συμπερασμός Τύπων και Πολυμορφισμός Εισαγωγή: Σύγκριση μεταξύ γλωσσών C: int f(char a, char b) { return a == b; ML: - fun f(a, b) = (a = b); val f = fn : ''a * ''a -> bool Giorgio de Chirico, Etorre e

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

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

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

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

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55 ΑΝΑ ΡΟΜΗ- ΑΣΚΗΣΕΙΣ Μια µέθοδος είναι αναδροµική όταν καλεί τον εαυτό της και έχει µια συνθήκη τερµατισµού π.χ. το παραγοντικό ενός αριθµού Ν, µπορεί να καλεί το παραγοντικό του αριθµού Ν-1 το παραγοντικό

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

Βασικές Αρχές Προγραμματισμού

Βασικές Αρχές Προγραμματισμού Βασικές Αρχές Προγραμματισμού Κεφάλαιο 1 Εισαγωγή Προβλήματα Πρόβλημα: Μία κατάσταση η οποία χρήζει αντιμετώπισης, απαιτεί λύση, η δε λύση της οποίας δεν είναι γνωστή, ούτε προφανής Π.χ. Το πρόβλημα του

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

Συμπερασμός Τύπων και Πολυμορφισμός

Συμπερασμός Τύπων και Πολυμορφισμός Συμπερασμός Τύπων και Πολυμορφισμός Giorgio de Chirico, Etorre e Andromaca, 1915-1925 Κωστής Σαγώνας Νίκος Παπασπύρου Εισαγωγή: Σύγκριση μεταξύ γλωσσών C: int

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

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

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

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

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

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

Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν

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

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

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

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

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών

Μέρος Α. Λογισµικό & Προγράµµατα συστήµατος και εφαρµογών ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ. Το σηµερινό µάθηµα. Λογισµικό συστηµάτων & εφαρµογών ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΙΟΙΚΗΣΗΣ Το σηµερινό µάθηµα ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ιδάσκων: Πέτρος Βασιλικός Λογισµικό Υπολογιστικών Συστηµάτων Λογισµικό & Προγράµµατα συστηµάτων

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

ιαφάνειες παρουσίασης #11

ιαφάνειες παρουσίασης #11 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?

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

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

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

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

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

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

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

PROLOG Εισαγωγή (PROgramming in LOGic)

PROLOG Εισαγωγή (PROgramming in LOGic) PROLOG Εισαγωγή (PROgramming in LOGic) Γλώσσα Λογικού Προγραμματισμού Βασίζεται στο Προτασιακό Λογισμό 1 ης τάξης Χρησιμοποιεί προτάσεις Horn αλγόριθμος = λογική + έλεγχος Μέσω της Prolog δίνουμε βάρος

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

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

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

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

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

εύτερη γενιά: γλώσσα assembly

εύτερη γενιά: γλώσσα assembly ΚΕΦΑΛΑΙΟ 6: Γλώσσες Προγραµµατισµού 6.1 Γενιές γλωσσών προγραµµατισµού (Σχήµα 6.1) 6.1 Ιστορική εξέλιξη 6.2 Παραδοσιακές έννοιες προγραµµατισµού 6.3 ιαδικασιακές µονάδες 6.4 Υλοποίηση γλώσσας 6.5 Αντικειµενοστρεφής

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

ιαφάνειες παρουσίασης #1

ιαφάνειες παρουσίασης #1 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 1: Αντικειμενοστραφής Προγραμματισμός Εισαγωγή OBJECT-ORIENTED PROGRAMMING ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ

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

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

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

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

Η γλώσσα Fortress. Γιώργος Κορφιάτης. Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού, Εργαστήριο Λογισμικού, ΕΜΠ ...

Η γλώσσα Fortress. Γιώργος Κορφιάτης. Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού, Εργαστήριο Λογισμικού, ΕΜΠ ... Η γλώσσα Fortress Γιώργος Κορφιάτης Εργαστήριο Λογισμικού, ΕΜΠ Ερευνητικά Θέματα Υλοποίησης Γλωσσών Προγραμματισμού, 2009-10 Η γλώσσα Fortress Νέα γλώσσα από τη Sun Για υπολογισμούς υψηλής απόδοσης Προγραμματισμός

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

Βασικές Έννοιες Δοµών Δεδοµένων

Βασικές Έννοιες Δοµών Δεδοµένων Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες

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

Week. 6: Java Collections

Week. 6: Java Collections Week 6: Java Collections Συλλογές δεδοµένων [collections] Εβδοµάδα 6: Συλλογές δεδοµένων στην Java Οι συλλογές [collections] (αναφέρονται και ως «υποδοχείς δεδοµένων» [containers]) είναι κλάσεις που χρησιµοποιούνται

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

(Διαφάνειες Νίκου Βιδάκη)

(Διαφάνειες Νίκου Βιδάκη) (Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό

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

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

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

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

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

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

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

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών

Κεφάλαιο 1: Εισαγωγή. Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών. Γιάννης Γαροφαλάκης ΤΜΗΥΠ - Πανεπιστήμιο Πατρών Κεφάλαιο 1: Εισαγωγή Αρχές Γλωσσών και Προγραμματισμού και Μεταφραστών Εισαγωγή (1) Γιατί υπάρχουν τόσες πολλές Γλώσσες Προγραμματισμού (ΓΠ); o Εξέλιξη έχουμε μάθει καλύτερους τρόπους να κάνουμε πράγματα

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

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

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

Συµπερασµός Τύπων και Πολυµορφισµός. Συµπερασµός Τύπων και Πολυµορφισµός. Εισαγωγή: Σύγκριση µεταξύ γλωσσών. Περιεχόµενα.

Συµπερασµός Τύπων και Πολυµορφισµός. Συµπερασµός Τύπων και Πολυµορφισµός. Εισαγωγή: Σύγκριση µεταξύ γλωσσών. Περιεχόµενα. Συµπερασµός Τύπων και Πολυµορφισµός Εισαγωγή: Σύγκριση µεταξύ γλωσσών C: int f(char a, char b) { return a == b; ML: - fun f(a, b) = (a = b); val f = fn : ''a * ''a -> bool Giorgio de Chirico, Etorre e

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

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

ΚΕΦΑΛΑΙΟ 2: Δηλωτικός Προγραμματισμός

ΚΕΦΑΛΑΙΟ 2: Δηλωτικός Προγραμματισμός ΚΕΦΑΛΑΙΟ 2: Δηλωτικός Προγραμματισμός Λέξεις Κλειδιά Διαδικαστικός προγραμματισμός, Δηλωτικός προγραμματισμός, Διαδικαστική γλώσσα προγραμματισμού, Προστακτική γλώσσα προγραμματισμού, Δηλωτική γλώσσα προγραμματισμού.

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))

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

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται

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

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις

Περιεχόµενα. Ανασκόπηση - Ορισµοί. Ο κύκλος ανάπτυξης προγράµµατος. Γλώσσες Προγραµµατισµού Ασκήσεις Προγραµµατισµός Η/Υ Ανασκόπηση - Ορισµοί Περιεχόµενα Ο κύκλος ανάπτυξης προγράµµατος Περιγραφή προβλήµατος Ανάλυση προβλήµατος Λογικό ιάγραµµα Ψευδοκώδικας Κωδικοποίηση Συντήρηση Γλώσσες Προγραµµατισµού

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

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video

class object Database Database Item Item [sub-typing and polymorphism] MusicCD Video MusicCD Video ιάγραµµα κλάσεων [Class diagram] Εβδοµάδα 2: Υπο-τύποι και πολυµορφισµός [sub-typing and polymorphism] Database Music Σχεδίαση-Ανάπτυξη Εφαρµογών Πληροφορικής Αντώνιος Συµβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη

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

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

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