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

Μέγεθος: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ηµιουργία νέου τύπου δεδοµένων από το χρήστη ηµιουργία νέου τύπου δεδοµένων από το χρήστη 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα 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 σημαίνει: Για

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η Γλώσσα Προγραµµατισµού 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 Θα

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

Ν!=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. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Week. 6: Java Collections

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Το πρόγραμμα 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 να συνεχίσει

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εμβέλεια. Παραδείγματα. Παραδείγματα. Μπλοκ (blocks)

Εμβέλεια. Παραδείγματα. Παραδείγματα. Μπλοκ (blocks) Ονόματα και Εμβέλεια Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα fun square a = a * a; fun double b = b + b; Αλλά στις μοντέρνες γλώσσες προγραμματισμού,

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

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

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

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

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 Σχεδίαση-Ανάπτυξη

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

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Γλώσσες & Τεχνικές 4 ο Εξάμηνο. - Ενότητα 2 - Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos. Τμήμα Πληροφορικής

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ Γλώσσες & Τεχνικές 4 ο Εξάμηνο. - Ενότητα 2 - Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos. Τμήμα Πληροφορικής Γλώσσες & Τεχνικές 4 ο Εξάμηνο - Ενότητα 2 - Γλώσσες Τεχνητής Νοημοσύνης Λογικός Προγραμματισμός - H Γλώσσα Prolog Δημοσθένης Σταμάτης http://www.it.teithe.gr/~demos Τμήμα Πληροφορικής ATEI ΘΕΣΣΑΛΟΝΙΚΗΣ

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

Κύρια σηµεία για µελέτη. έντρα. Ορολογία δέντρων. Τι είναι δέντρο

Κύρια σηµεία για µελέτη. έντρα. Ορολογία δέντρων. Τι είναι δέντρο Κύρια σηµεία για µελέτη έντρα Stock Fraud Make Money Fast! Ponzi Scheme ank Robbery Ο ΑΤ του δέντρου (..1) Preorder και postorder διασχίσεις (..) Ο ΑΤ του δυαδικού δέντρου(..) Inorder διάσχιση (..) Ηδιάσχισητουuler

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

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

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

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

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

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

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

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 1ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Ορισμός Wikipedia.org 2 Δομημένος προγραμματισμός (structured programming) ή διαδικαστικός προγραμματισμός (procedural

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

Πληρουορική Γ Γσμμασίοσ

Πληρουορική Γ Γσμμασίοσ Πληρουορική Γ Γσμμασίοσ Προγραμματισμός και Αλγόριθμοι Από το και τημ Χελώμα στημ Ευριπίδης Βραχνός http://evripides.mysch.gr/ 2014 2015 1 Προγραμματισμός Ζάννειο Πρότυπο Πειραματικό Γυμνάσιο Πειραιά Ενότητα:

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ 6.1 Τι ονοµάζουµε πρόγραµµα υπολογιστή; Ένα πρόγραµµα

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

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης

Δοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα

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

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

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

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

ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΕΦΑΛΑΙΟ 7 ΕΙ Η, ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 7.1. Ανάπτυξη Προγράµµατος Τι είναι το Πρόγραµµα; Το Πρόγραµµα: Είναι ένα σύνολο εντολών για την εκτέλεση ορισµένων λειτουργιών από τον υπολογιστή.

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΣΚΗΣΕΙΣ 6 ΟΥ ΚΕΦΑΛΑΙΟΥ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΡΩΤΗΣΕΙΣ ΣΩΣΤΟ ΛΑΘΟΣ Σημειώστε αν είναι σωστή ή

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

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

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

Συναρτησιακός προγραμματισμός : Η άλλη πλευρά του νομίσματος

Συναρτησιακός προγραμματισμός : Η άλλη πλευρά του νομίσματος Συναρτησιακός προγραμματισμός : Η άλλη πλευρά του νομίσματος Απόστολος Συρόπουλος 28ης Οκτωβρίου 366 671 00 ΞΑΝΘΗ apostolo@obelix.ee.duth.gr Οκτώβριος 1999 Δημοσιεύτηκε στο τεύχος Οκτωβρίου 1999 του περιοδικού

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

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

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

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

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία

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

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

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

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Υλοποίηση Λιστών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμές Απλά και Διπλά Συνδεδεμένες Λίστες Κυκλικές Απλά και Διπλά Συνδεδεμένες Λίστες Τεχνικές Μείωσης Μνήμης ΕΠΛ 231 Δομές

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

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

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

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

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

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

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:

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

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α.

ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. ΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΘΕΜΑ 1 Α. 1. Αν το Α έχει την τιµή 10 και το Β την τιµή 20 τότε η έκφραση (Α > 8 ΚΑΙ Β < 20) Ή (Α > 10 Ή Β = 10) είναι αληθής 2. Σε περίπτωση εµφωλευµένων βρόχων, ο εσωτερικός

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

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

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

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

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

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

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

Δοκιμή και Αποσφαλμάτωση Testing and Debugging Δοκιμή και Αποσφαλμάτωση Testing and Debugging XVI-1 Ο μεταγλωττιστής εντοπίζει τα συντακτικά λάθη ενός προγράμματος. Δεν είναι όμως σε θέση να εντοπίσει λάθη στη λογική του προγράμματος. δεδομένα πρόγραμμα

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

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

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

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

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές

Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες

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

Κεφάλαιο 7: Υπορουτίνες

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

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

Διάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 08: ΛίστεςΙΙ Κυκλικές Λίστες. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 0: ΛίστεςΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες Λίστες - Τεχνικές Μείωσης Χώρου Διδάσκων:

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

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής - Εβδομάδα 1 Στόχοι Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός) Αντώνιος Συμβώνης www.math.ntua.gr/~symvonis Καλή γνώση βασικών αρχών προγραμματισμού Καλή γνώση βασικών αρχών αντικειμενοστρεφή

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