Μοντέλα Προγραµµατισµού
|
|
- Σίβύλλα Αλεξάνδρου
- 8 χρόνια πριν
- Προβολές:
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
Προγραμματισμός Ηλεκτρονικών Υπολογιστών Φιλοσοφίες γλωσσών προγραμματισμού Διδάσκων: Στάθης Ζάχος Επιμέλεια Διαφανειών: Μάκης Αρσένης CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Ιανουάριος 2016 ιδάσκων: Στάθης Ζάχος ( CoReLab
Διαβάστε περισσότεραΘεωρητικό Υπόβαθρο και Μοντέλα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Επιμέλεια και παρουσίαση: (kostis@cs.ntua.gr) Αρχικές διαφάνειες: Νίκος Παπασπύρου (nickie@softlab.ntua.gr) Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα
Διαβάστε περισσότεραΓλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Επιμέλεια και παρουσίαση: (kostis@cs.ntua.gr) Αρχικές διαφάνειες: Νίκος Παπασπύρου (nickie@softlab.ntua.gr) Γλώσσες Προγραμματισμού: Θεωρητικό Υπόβαθρο και Μοντέλα
Διαβάστε περισσότεραΜετάφραση προγραμμάτων
Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς. Μετάφραση
Διαβάστε περισσότερα(Imperative Programming) Pascal, C, Ada, Pazcal. (Functional Programming) Prolog (Logic Programming) (object-oriented programming) Java, C#
Φιλοσοφία Γλωσσών Προγραμματισμού Προγραμματιστικό Μοντέλο Γλώσσες Προστακτικός Προγραμματισμός FORTRAN, Algol, COBOL (Imperative Programming) Pascal, C, Ada, Pazcal Συναρτησιακός Προγραμματισμός LISP,
Διαβάστε περισσότεραΓλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ http://courses.softlab.ntua.gr/softeng/ ιδάσκοντες: (nickie@softlab.ntua.gr) Βασίλης Βεσκούκης (bxb@softlab.ntua.gr) Γλώσσες Προγραµµατισµού και Ανάπτυξη Συστηµάτων Λογισµικού ΤΛ
Διαβάστε περισσότεραΠληροφορική 2. Γλώσσες Προγραμματισμού
Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση
Διαβάστε περισσότεραΕισαγωγή στην επιστήμη των υπολογιστών
Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα σύμφωνα
Διαβάστε περισσότεραΤεχνολογία Λογισµικού Ι Κεφάλαιο 5
ΕΛΛΗΝΙΚΟ ΑΝΟΙΧΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Πρόγραµµα σπουδών "ΠΛΗΡΟΦΟΡΙΚΗ" - Θ.Ε. ΠΛΗ11 Τεχνολογία Λογισµικού Ι Κεφάλαιο 5 Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@cs.ntua.gr
Διαβάστε περισσότεραΛογισµικό (Software SW) Γλώσσες
Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής
Διαβάστε περισσότεραηµιουργία νέου τύπου δεδοµένων από το χρήστη
ηµιουργία νέου τύπου δεδοµένων από το χρήστη 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)
Διαβάστε περισσότεραΕισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού
Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα
Διαβάστε περισσότεραΔιάλεξη 2η: Αλγόριθμοι και Προγράμματα
Διάλεξη 2η: Αλγόριθμοι και Προγράμματα Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Αλγόριθμοι και Προγράμματα
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής
Διαβάστε περισσότεραΤι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations) f : A B σημαίνει:
Τι σημαίνουν οι τύποι συναρτήσεων στην ML f : A B σημαίνει: Για κάθε x A, f(x) = για κάποιο στοιχείο y = f(x) B ατέρμονη εκτέλεση η εκτέλεση τερματίζει εγείροντας κάποια εξαίρεση Με λόγια: εάν η αποτίμηση
Διαβάστε περισσότεραΚλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Διαβάστε περισσότεραΕισαγωγή στη Γλώσσα ML. Juan Miró
Εισαγωγή στη Γλώσσα ML Juan Miró Κωστής Σαγώνας Συναρτησιακός και Προστακτικός Προγραμματισμός Ένας τρόπος διαχωρισμού Ο προστακτικός προγραμματισμός επικεντρώνει στο πώς θα υλοποιήσουμε
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες
Διαβάστε περισσότεραΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.
ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος 1 2 3 Εικόνα 43: Διάφορες πλακέτες υπολογιστών Μέσα σε δύο
Διαβάστε περισσότεραΑΕΠΠ Ερωτήσεις θεωρίας
ΑΕΠΠ Ερωτήσεις θεωρίας Κεφάλαιο 1 1. Τα δεδομένα μπορούν να παρέχουν πληροφορίες όταν υποβάλλονται σε 2. Το πρόβλημα μεγιστοποίησης των κερδών μιας επιχείρησης είναι πρόβλημα 3. Για την επίλυση ενός προβλήματος
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης. Jackson Pollock, The Key, 1946 (action painting)
Εγγραφές Δραστηριοποίησης Jackson Pollock, The Key, 1946 (action painting) Κωστής Σαγώνας Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με
Διαβάστε περισσότερα10. Με πόσους και ποιους τρόπους μπορεί να αναπαρασταθεί ένα πρόβλημα; 11. Περιγράψτε τα τρία στάδια αντιμετώπισης ενός προβλήματος.
1. Δώστε τον ορισμό του προβλήματος. 2. Σι εννοούμε με τον όρο επίλυση ενός προβλήματος; 3. Σο πρόβλημα του 2000. 4. Σι εννοούμε με τον όρο κατανόηση προβλήματος; 5. Σι ονομάζουμε χώρο προβλήματος; 6.
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΕλληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Πληροφορική II Ενότητα 3 : Γλώσσες προγραμματισμού Δρ. Γκόγκος Χρήστος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Χρηματοοικονομικής
Διαβάστε περισσότεραΕισαγωγή στη Γλώσσα ML
Συναρτησιακός και Προστακτικός Προγραμματισμός Εισαγωγή στη Γλώσσα ML Ένας τρόπος διαχωρισμού Ο προστακτικός προγραμματισμός επικεντρώνει στο πως θα υλοποιήσουμε τα συστατικά του προγράμματός μας Ο συναρτησιακός
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008
ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες
Διαβάστε περισσότεραΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ
ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο
Διαβάστε περισσότεραpublic void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);
Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας
Διαβάστε περισσότεραΑ. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Διαβάστε περισσότεραI (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.
I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)
Διαβάστε περισσότεραΒασικά της γλώσσας JAVA
17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΑναδρομικοί Αλγόριθμοι
Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας ένα ή περισσότερα στιγμιότυπα του ίδιου προβλήματος. Αναδρομικός αλγόριθμος (recursive algorithm) Επιλύει ένα πρόβλημα λύνοντας
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Διαβάστε περισσότερα2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων
2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει
Διαβάστε περισσότεραΗ γλώσσα ML σε βάθος. Τι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations)
Η γλώσσα ML σε βάθος Τι σημαίνουν οι τύποι συναρτήσεων στην ML f : A B σημαίνει: Για κάθε x A, f(x) = για κάποιο στοιχείο y=f(x) B ατέρμονη εκτέλεση η εκτέλεση τερματίζει εγείροντας κάποια εξαίρεση Με
Διαβάστε περισσότεραΑφαίρεση στον FP. Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός
Αφαίρεση στον FP Πολυμορφισμός Συναρτήσεις υψηλότερης τάξης Οκνηρός και Άπληστος Υπολογισμός Πολυμορφισμός Θα χρησιμοποιήσουμε σαν παράδειγμα τη συνάρτηση ταυτότητας Ι, που ορίζεται ως: fun I x = x Ο ορισμός
Διαβάστε περισσότεραΠ. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Προτάσεις,
Διαβάστε περισσότεραΠρογραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
Διαβάστε περισσότεραΗ γλώσσα ML σε βάθος. Joan Miró, El Carnaval del Arlequín, Κωστής Σαγώνας Νίκος Παπασπύρου
Η γλώσσα ML σε βάθος Joan Miró, El Carnaval del Arlequín, 1925 Κωστής Σαγώνας Νίκος Παπασπύρου Τι σημαίνουν οι τύποι συναρτήσεων στην ML f : A B σημαίνει: Για
Διαβάστε περισσότεραI (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.
I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)
Διαβάστε περισσότεραΗ γλώσσα ML σε βάθος. Γλώσσες Προγραμματισμού Ι. Διδάσκοντες: Νικόλαος Παπασπύρου, Κωστής Σαγώνας
Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο Γλώσσες Προγραμματισμού Ι Διδάσκοντες: Νικόλαος Παπασπύρου, Κωστής Σαγώνας
Διαβάστε περισσότεραΕισαγωγή στο Συναρτησιακό Προγραμματισμό
Εισαγωγή στο Συναρτησιακό Προγραμματισμό Γιάννης Κασσιός Σε αυτό το μάθημα θα εξερευνήσουμε ένα σπουδαίο μοντέλο προγραμματισμού, το συναρτησιακό προγραμματισμό. Θα δούμε το συναρτησιακό προγραμματισμό
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο
Διαβάστε περισσότεραΕισαγωγή στην Πληροφορική & τον Προγραμματισμό
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στην Πληροφορική & τον Προγραμματισμό Ενότητα 4 η : Αλγόριθμος & Πρόγραμμα Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Διοίκησης
Διαβάστε περισσότεραΝ!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55
ΑΝΑ ΡΟΜΗ- ΑΣΚΗΣΕΙΣ Μια µέθοδος είναι αναδροµική όταν καλεί τον εαυτό της και έχει µια συνθήκη τερµατισµού π.χ. το παραγοντικό ενός αριθµού Ν, µπορεί να καλεί το παραγοντικό του αριθµού Ν-1 το παραγοντικό
Διαβάστε περισσότερα02 Αντικειμενοστρεφής Προγραμματισμός
02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object
Διαβάστε περισσότεραΑντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Διαβάστε περισσότεραΕισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13
Wrapper Classes, Abstract Classes and Interfaces Διάλεξη #13: Μεταβλητές/μέθοδοι κλάσης, αφηρημένες κλάσεις και διαπροσωπείες Μεταβλητές /πεδία κλάσης [class variables] Τα αντικείμενα ανήκουν σε κλάσεις
Διαβάστε περισσότερα2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008
Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει
Διαβάστε περισσότεραΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών
ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural)
Διαβάστε περισσότεραΚεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος
Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη
Διαβάστε περισσότεραΤι σηµαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγµα επισηµειώσεων τύπων στην ML. Επισηµειώσεις τύπων (type annotations) Σύνταξη ταιριάσµατος
Τι σηµαίνουν οι τύποι συναρτήσεων στην ML f : A B σηµαίνει: Για κάθε x A f(x) = για κάποιο στοιχείο y = f(x) B ατέρµονη εκτέλεση η εκτέλεση τερµατίζει εγείροντας κάποια εξαίρεση Με λόγια: εάν η αποτίμηση
Διαβάστε περισσότεραΤύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Διαβάστε περισσότεραΔιάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Διαβάστε περισσότερα1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
Διαβάστε περισσότεραΠΛΗΡΟΦΟΡΙΚΗ Ι 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
Διαβάστε περισσότεραιαφάνειες παρουσίασης #5 (β)
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Διαβάστε περισσότεραΣυμπερασμός Τύπων και Πολυμορφισμός
Συμπερασμός Τύπων και Πολυμορφισμός Giorgio de Chirico, Etorre e Andromaca, 1915-1925 Κωστής Σαγώνας Νίκος Παπασπύρου Εισαγωγή: Σύγκριση μεταξύ γλωσσών C: int
Διαβάστε περισσότεραn true false if t then t else t u t t b t emptylist cons t t t t λx.t u ::= head tail isempty
Συναρτησιακός Προγραµµατισµός 2008 Τρίτο Φύλλο Ασκήσεων - Project Το project αυτό µπορεί να γίνει από οµάδες 1-3 ατόµων και αντιστοιχεί στο 15% του ϐαθµού στο µάθηµα. Συνολικό Αθροισµα Βαθµών: 150 Προθεσµία
Διαβάστε περισσότεραΗ Γλώσσα Προγραµµατισµού 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 Θα
Διαβάστε περισσότεραΕγγραφές Δραστηριοποίησης
Εγγραφές Δραστηριοποίησης Ερώτηση για δέσιμο Κατά την εκτέλεση του προγράμματος, οι μεταβλητές δένονται (δυναμικά) με τιμές Οι τιμές αυτές πρέπει να αποθηκευτούν κάπου Κατά συνέπεια, οι μεταβλητές πρέπει
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Ορισμοί αντικειμενοστρέφειας. Κάποιες γενικές παρατηρήσεις: Περιεχόμενα. Ποιοι είναι οι ορισμοί των παρακάτω;
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
Διαβάστε περισσότεραΑντικειμενοστρέφεια. Henri Matisse, Harmony in Red, 1908
Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής
Διαβάστε περισσότεραΕπιµέλεια Θοδωρής Πιερράτος
Εισαγωγή στον προγραµµατισµό Η έννοια του προγράµµατος Ο προγραµµατισµός ασχολείται µε τη δηµιουργία του προγράµµατος, δηλαδή του συνόλου εντολών που πρέπει να δοθούν στον υπολογιστή ώστε να υλοποιηθεί
Διαβάστε περισσότεραΜαλούτα Θεανώ Σελίδα 1
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες
Διαβάστε περισσότεραΚεφάλαιο 11 Εκφραστικές δυνατότητες της Haskell
Κεφάλαιο 11 Εκφραστικές δυνατότητες της Haskell Σύνοψη Στο κεφάλαιο αυτό παρουσιάζονται οι περιφραστικές λίστες, μια δυνατότητα που παρέχει η Haskell και με την οποία μπορούμε πολύ εύκολα να ορίσουμε διάφορες
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός
Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία σημαντικά στάδια: 1. Τον ακριβή προσδιορισμό του προβλήματος. 2. Την ανάπτυξη
Διαβάστε περισσότεραΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ
Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες
Διαβάστε περισσότεραΔιάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 0: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python
ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής
Διαβάστε περισσότεραΔιάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους
Διαβάστε περισσότεραΣυμπερασμός Τύπων και Πολυμορφισμός 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
Διαβάστε περισσότεραΚάποιες γενικές παρατηρήσεις:
Αντικειμενοστρέφεια Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής γλώσσα προγραμματισμού Αντικειμενοστρεφής προγραμματισμός Αλλά από την άλλη μεριά, για ποιο λόγο
Διαβάστε περισσότεραΛογικός Προγραµµατισµός: Η Γλώσσα Prolog
Λογικός Προγραµµατισµός: Η Γλώσσα Prolog 1 Βασικά Στοιχεία Γλώσσας Prolog Ορισµοί (statements): Επιτελούν το ρόλο εντολών στις κλασσικές γλώσσες προγραµµατισµού Γεγονότα Κανόνες Ερωτήσεις Όροι (terms):
Διαβάστε περισσότεραΕΡΩΤΗΣΕΙΣ ΑΞΙΟΛΟΓΗΣΗΣ
Α) Να γράψετε στο τετράδιό σας τον αριθμό κάθε πρότασης και δίπλα το γράμμα "Σ", αν είναι σωστή, ή το γράμμα "Λ", αν είναι λανθασμένη. (Μονάδες 25) 1. Ένα αδόμητο πρόβλημα είναι ταυτόχρονα και ανοικτό
Διαβάστε περισσότεραΔομημένος Προγραμματισμός (ΤΛ1006)
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής
Διαβάστε περισσότεραΑνάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον
Ανάπτυξη Εφαρµογών σε Προγραµµατιστικό Περιβάλλον Κεφάλαιο 6ο Εισαγωγή στον Προγραµµατισµό Μέρος Πρώτο (6.1, 6.2 και 6.3) Α. Ερωτήσεις Σωστού Λάθους 1. Η γλώσσα µηχανής είναι µία γλώσσα υψηλού επιπέδου.
Διαβάστε περισσότεραΔιάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 15: Σχεδίαση Εφαρμογών Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?
Διαβάστε περισσότεραΠεριεχόμενα. Πρόλογος... 21
Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31
Διαβάστε περισσότεραPROLOG Εισαγωγή (PROgramming in LOGic)
PROLOG Εισαγωγή (PROgramming in LOGic) Γλώσσα Λογικού Προγραμματισμού Βασίζεται στο Προτασιακό Λογισμό 1 ης τάξης Χρησιμοποιεί προτάσεις Horn αλγόριθμος = λογική + έλεγχος Μέσω της Prolog δίνουμε βάρος
Διαβάστε περισσότεραΑρχές Τεχνολογίας Λογισμικού Εργαστήριο
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?
Διαβάστε περισσότεραΣυμπερασμός Τύπων και
Συμπερασμός Τύπων και Πολυμορφισμός Εισαγωγή: Σύγκριση μεταξύ γλωσσών 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
Διαβάστε περισσότεραΠεριεχόμενα. Πρόλογος... 17
Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για
Διαβάστε περισσότεραΣυμπερασμός Τύπων και Πολυμορφισμός
Συμπερασμός Τύπων και Πολυμορφισμός Εισαγωγή: Σύγκριση μεταξύ γλωσσών 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
Διαβάστε περισσότεραΚεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού ( Απαντήσεις & Λύσεις Βιβλίου) 1. Σκοποί κεφαλαίου Κύκλος ανάπτυξης προγράµµατος Κατηγορίες γλωσσών προγραµµατισµού
Διαβάστε περισσότεραΟνόματα και Εμβέλεια. Wassily Kandinsky, Black lines, 1913
Ονόματα και Εμβέλεια Wassily Kandinsky, Black lines, 1913 Κωστής Σαγώνας Ανακύκλωση ονομάτων Η κατανόηση της εμβέλειας είναι άμεση εάν το κάθε τι έχει το δικό του όνομα Αλλά στις μοντέρνες
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα
Διαβάστε περισσότεραιαφάνειες παρουσίασης #11
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ http://www.corelab.ece.ntua.gr/courses/programming/ ιδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Διαβάστε περισσότεραΣυναρτησιακός Προγραμματισμός 2008 Λύσεις στο Δεύτερο Φύλλο Ασκήσεων
Συναρτησιακός Προγραμματισμός 2008 Λύσεις στο Δεύτερο Φύλλο Ασκήσεων 1. Στις Σημ. 4, είδαμε τη δημιουργία της κλάσης Condition που μας επιτρέπει να χρησιμοποιούμε αριθμούς, λίστες και ζεύγη ως αληθοτιμές
Διαβάστε περισσότεραMεταβλητές (variables) και Σταθερές (constants)
Mεταβλητές (variables) και Σταθερές (constants) Οι μεταβλητές είναι οι θέσεις μνήμης στις οποίες ένα πρόγραμμα τοποθετεί τα δεδομένα του κατά τη διάρκεια της λειτουργίας του. θα μάθουμε: πως δηλώνουμε
Διαβάστε περισσότερα