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

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

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

Transcript

1 Συµπερασµός Τύπων και Πολυµορφισµός Εισαγωγή: Σύγκριση µεταξύ γλωσσών 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 Andromaca, Κωστής Σαγώνας <kostiscs.ntua.gr> Η συνάρτηση σε ML γράφεται πιο εύκολα: ο προγραµµατιστής δε χρειάζεται να ορίσει τύπους Η συνάρτηση σε ML είναι πιο ευέλικτη: µπορεί να χρησιµοποιηθεί για κάθε τύπο (που υποστηρίζει ισότητα) Συναρτήσεις σαν και τις παραπάνω, οι οποίες δουλεύουν για πολλούς τύπους, ονοµάζονται πολυµορφικές 2 Περιεχόµενα Συµπερασµός τύπων (type inference) Καλό παράδειγµα αλγόριθµου και εφαρµογής στατικής ανάλυσης προγραµµάτων Θα δούµε τον αλγόριθµο σε κάποια παραδείγµατα Υπερφόρτωση (overloading) Αυτόµατη µετατροπή τύπων (type coercion) Πολυµορφισµός Πολυµορφισµός έναντι υπερφόρτωσης Υλοποίηση του πολυµορφισµού σε διαφορετικές γλώσσες Παραµετρικός πολυµορφισµός (parametric polymorphism) Πολυµορφισµός υποτύπων (subtype polymorphism) Ανακεφαλαίωση ορισµών 3 Συµπερασµός τύπων 4 Έλεγχος τύπων έναντι συµπερασµού τύπων Έλεγχος τύπων int f(int x) { return x+1; ; int g(int y) { return f(y+1)*2; ; Κοιτάµε στο σώµα κάθε συνάρτησης χρησιµοποιώντας τις δηλώσεις τύπων των µεταβλητών για τον έλεγχο συνέπειάς τους Συµπερασµός τύπων int f(int x) { return x+1; ; int g(int y) { return f(y+1)*2; ; Κοιτάµε στον κώδικα ο οποίος δεν περιέχει πληροφορία τύπων και µαντεύουµε ποιοι τύποι θα έπρεπε να είχαν δηλωθεί ώστε το πρόγραµµα να είναι συνεπές ως προς τη χρήση των τύπων Η ML έχει σχεδιαστεί ώστε ο συµπερασµός τύπων να είναι βατός (tractable) Χρησιµότητα Τύποι και έλεγχος τύπων Τα συστήµατα τύπων βελτιώνονται συνεχώς από την Algol 60 και έκτοτε Οι τύποι έχουν αποδειχθεί σηµαντικοί τόσο για τη µεταγλώττιση όσο και για την αξιοπιστία και την ασφάλεια των προγραµµάτων Συµπερασµός τύπων Θεωρείται ως µια από τις σηµαντικότερες εξελίξεις στη θεωρία και την πρακτική των γλωσσών προγραµµατισµού Ο συµπερασµός τύπων της ML µας δίνει µια ιδέα του πως δουλεύουν πολλοί άλλοι αλγόριθµοι συµπερασµού τύπων αλλά και της στατικής ανάλυσης προγραµµάτων 5 6

2 Συµπερασµός τύπων στην ML Παράδειγµα - fun add2 x = x+2; val add2 = fn : int -> int Πως συµπεραίνουµε τον παραπάνω τύπο; Ο + έχει δύο τύπους: int*int -> int, real*real -> real Η σταθερά 2 έχει τύπο int Αυτό σηµαίνει ότι χρησιµοποιούµε τον τύπο : int*int -> int Αυτό µε τη σειρά του σηµαίνει ότι x:int Εποµένως η συνάρτηση add2 έχει τύπο int -> int Οι υπερφορτωµένοι τελεστές και συναρτήσεις, όπως ο + είναι σπάνιοι. Τα περισσότερα σύµβολα στην ML έχουν µοναδικό τύπο. Σε πολλές περιπτώσεις, ο µοναδικός αυτός τύπος είναι πολυµορφικός. 7 Μια διαφορετική παρουσίαση του συµπερασµού Παράδειγµα - fun add2 x = x+2; val add2 = fn : int -> int Πως συµπεραίνεται ο τύπος; Αναθέτουµε τύπους στα φύλλα Προωθούµε τύπους στους εσωτερικούς κόµβους και γεννάµε περιορισµούς Επιλύουµε µέσω αντικατάστασης (ενοποίησης) Γράφος για λx. ((plus 2) x) λ int int int real real real t int = int int int (t = int) int int x : t + 2: int 8 Εφαρµογή και ορισµός συναρτήσεων : r (s = t r) f : s x : t Εφαρµογή συνάρτησης Η f έχει τύπο συνάρτησης πεδίο ορισµού πεδίο τιµών Το πεδίο ορισµού της f είναι ίδιο µε τον τύπο του ορίσµατος x Ο τύπος του αποτελέσµατος είναι ο τύπος του πεδίου τιµών της f x λ : s t : s e : t Ορισµός συνάρτησης Ο τύπος της συνάρτησης είναι πεδίο ορισµού πεδίο τιµών Πεδίο ορισµού είναι ο τύπος της µεταβλητής x Πεδίο τιµών είναι ο τύπος του αποτελέσµατος του σώµατος e της συνάρτησης 9 Τύποι µε µεταβλητές τύπων Παράδειγµα - fun f(g) = g(2); val f = fn : (int -> a) -> a Πως συµπεραίνεται ο τύπος; Αναθέτουµε τύπους στα φύλλα Προωθούµε τύπους στους εσωτερικούς κόµβους και γεννάµε περιορισµούς Επιλύουµε µέσω αντικατάστασης (ενοποίησης) λ s t g : s Γράφος για λg. (g 2) = (int t) t t (s = int t) 2 : int 10 Χρήση πολυµορφικών συναρτήσεων Συνάρτηση - fun f(g) = g(2); val f = fn : (int -> a) -> a Πιθανές χρήσεις - fun add2(x) = x+2; val add2 = fn : int -> int - f(add2); val it = 4 : int - fun iseven(x) = (x mod 2) = 0; val add2 = fn : int -> bool - f(iseven); val it = true : bool 11 Αναγνώριση σφάλµατος τύπων Έστω η συνάρτηση: - fun f(g) = g(2); val f = fn : (int -> a) -> a Λάθος χρήση: - fun not(x) = if x then false else true; val not = fn : bool -> bool - f(not); Σφάλµα τύπου: δεν είναι δυνατόν ο τύπος bool -> bool να είναι στιγµιότυπο του τύπου int -> a 12

3 Ακόµα ένα παράδειγµα συµπερασµού τύπων Έστω η συνάρτηση - fun f(g,x) = g(g(x)); val f = fn : ( a -> a) * a -> a Συµπερασµός τύπου Αναθέτουµε τύπους στα φύλλα Προωθούµε τύπους στους εσωτερικούς κόµβους και γεννάµε περιορισµούς Επιλύουµε µέσω ενοποίησης Γράφος για λ g,x. g(g x) s*t v = (v v)*v v v)*v v λ g: s 13 g: s v (s = u v) u (s = t u) x: t Πολυµορφικοί τύποι δεδοµένων Τύποι δεδοµένων µε µεταβλητές τύπου - datatype a list = nil cons of a * ( a list); nil : a list cons : a * ( a list) -> a list Πολυµορφική συνάρτηση - fun length nil = 0 = length cons(x,rest) = 1 + length(rest); val length = fn : a list -> int Συµπερασµός τύπων Συµπεραίνουµε κάποιο τύπο για κάθε πρόταση ξεχωριστά Συνδυάζουµε τους τύπους µε τον περιορισµό ότι πρέπει να είναι συµβατοί µεταξύ τους (οι τύποι ενοποιούνται αν αυτό είναι αναγκαίο) 14 Κύρια σηµεία για το συµπερασµό τύπων Υπολογίζουµε τον τύπο της έκφρασης ε χρειαζόµαστε δηλώσεις για τον τύπο των µεταβλητών Βρίσκουµε τον πιο γενικό τύπο µέσω επίλυσης περιορισµών Το παραπάνω αυτόµατα οδηγεί σε πολυµορφισµό συναρτήσεων Στατικός έλεγχος τύπων χωρίς προδιαγραφές τύπων Πολλές φορές οδηγεί σε καλύτερη αναγνώριση σφαλµάτων από ότι ο κοινός έλεγχος τύπων Ο συµπερασµός τύπων µπορεί να αναδείξει κάποιο προγραµµατιστικό λάθος ακόµα και αν δεν υπάρχει σφάλµα τύπων (βλέπε παράδειγµα στην επόµενη διαφάνεια) Χρήσιµη πληροφορία από συµπερασµό τύπων Μια συνάρτηση για λίστες: fun reverse nil = nil reverse (h::t) = reverse t; Ο τύπος που συµπεραίνεται από την ML είναι: reverse : a list -> b list Τι σηµαίνει αυτός ο τύπος; Αφού η αναστροφή µιας λίστας δεν αλλάζει τον τύπο των στοιχείων της λίστας, πρέπει να υπάρχει κάποιο λάθος στον παραπάνω ορισµό της reverse Πολυµορφισµός και Υπερφόρτωση Υπερφόρτωση (overloading) Μια συνάρτηση (ή ένας τελεστής) είναι υπερφορτωµένη όταν έχει τουλάχιστον δύο ορισµούς για διαφορετικούς τύπους ορισµάτων Πολλές γλώσσες έχουν υπερφορτωµένους τελεστές ML: val x = 1 + 2; val y = ; Pascal: a := 1 + 2; b := ; c := "hello " + "there"; d := ['a'..'d'] + ['f']; 18 Επίσης, κάποιες γλώσσες επιτρέπουν τον ορισµό νέων υπερφορτωµένων συναρτήσεων ή τελεστών 19

4 Προσθήκη σε ήδη υπερφορτωµένους τελεστές Κάποιες γλώσσες, όπως η C++, επιτρέπουν πρόσθετη υπερφόρτωση των ήδη υπερφορτωµένων τελεστών class complex { double rp, ip; // real part, imaginary part public: complex(double r, double i) {rp = r; ip = i; friend complex operator+(complex, complex); friend complex operator*(complex, complex); ; void f(complex a, complex b, complex c) { complex d = a + b * c; Υπερφόρτωση τελεστών στη C++ Η C++ επιτρέπει σχεδόν σε όλους τους τελεστές την πρόσθετη υπερφόρτωση, συµπεριλαµβανοµένων των: Πιο συχνά χρησιµοποιούµενων τελεστών (+,-,*,/,%,^,&,,~,!, =,<,>, +=,-=,=,*=,/=,%=,^=,&=, =,<<,>>,>>=,<<=,==,!=,<=,>=,&&,,++,--,->*,,) Αποδεικτοδότησης (dereferencing) (*p και p->x) Χρήσης δεικτών (a[i]) Κλήσης συνάρτησης (f(a,b,c)) έσµευσης και αποδέσµευσης µνήµης (new και delete) Ορισµός υπερφορτωµένων συναρτήσεων Όµως η υπερφόρτωση εξαφανίζεται στη C++ Κάποιες γλώσσες, όπως η C++, επιτρέπουν την υπερφόρτωση των ονοµάτων των συναρτήσεων int square(int x) { double square(double x) { int square(int x) { double square(double x) { void f() { int a = square(3); double b = square(3.0); square_i square_d ίνουµε καινούργια (µοναδικά) ονόµατα σε υπερφορτωµένους ορισµούς συναρτήσεων Εξαφάνιση υπερφόρτωσης στη C++ int square_i(int x) { double square_d(double x) { void f() { int a = square_i(3); double b = square_d(3.0); Και στη συνέχεια µετονοµάζουµε τις κλήσεις (ανάλογα µε τους τύπους των ορισµάτων τους) 24 Υλοποίηση υπερφόρτωσης στη C++ Οι µεταγλωττιστές συνήθως υλοποιούν την υπερφόρτωση: C++: ηµιουργούν µονοµορφικές συναρτήσεις, µια για κάθε ορισµό Εφευρίσκουν ένα νέο όνοµα για κάθε ορισµό το οποίο κωδικοποιεί την πληροφορία για τους τύπους Κάθε κλήση χρησιµοποιεί το κατάλληλο όνοµα ανάλογα µε τους τύπους των παραµέτρων int shazam(int a, int b) {return a+b; double shazam(double a, double b) {return a+b; Assembler: shazam Fii: lda $30,-32($30).frame $15,32,$26,0 shazam Fdd: lda $30,-32($30).frame $15,32,$26,0 25

5 Αυτόµατος εξαναγκασµός τύπου (Coercion) Σε πολλές γλώσσες ο µεταγλωττιστής εξαναγκάζει την αυτόµατη µετατροπή τύπου (type coercion), ακόµα και σε περιπτώσεις που οι µετατροπές δεν είναι άµεσα δηλωµένες από τον προγραµµατιστή ήλωση µετατροπής τύπου στη Java: Coercion στη Java: double x; x = (double) 2; double x; x = 2; Αυτόµατη µετατροπή παραµέτρων ιαφορετικές γλώσσες υποστηρίζουν διαφορετικές µετατροπές σε διαφορετικές περιπτώσεις: σε αναθέσεις, σε δυαδικούς τελεστές, σε µοναδιαίους τελεστές, σε παραµέτρους, κ.λπ. Όταν µια γλώσσα υποστηρίζει αυτόµατους εξαναγκασµούς µετατροπής τύπου σε παραµέτρους µιας κλήσης συνάρτησης (ή σε µια χρησιµοποίηση τελεστή), τότε η συνάρτηση (ή ο τελεστής) είναι πολυµορφική (πολυµορφικός) Παράδειγµα: Java Ορισµός αυτόµατων µετατροπών τύπων void f(double x) { f((byte) 1); f((short) 2); f('a'); f(3); f(4l); f(5.6f); Η συνάρτηση f µπορεί να κληθεί µε κάθε τύπο παραµέτρου που µπορεί να µετατραπεί αυτόµατα σε doubleστη Java Οι γλώσσες ξοδεύουν µεγάλο µέρος του τυπικού ορισµού τους στο να ορίσουν επακριβώς τους επιτρεπόµενους αυτόµατους εξαναγκασµούς µετατροπής τύπου και το πως αυτοί λαµβάνουν χώρα Κάποιες γλώσσες, ειδικά κάποιες παλιές γλώσσες όπως η Algol 68 και η PL/I, επιτρέπουν πολλές αυτόµατες µετατροπές τύπων Κάποιες άλλες, όπως η ML, δεν επιτρέπουν καµία Οι περισσότερες, όπως η Java, είναι κάπου ενδιάµεσα Παράδειγµα: Java Unary Numeric Promotion Some operators apply unary numeric promotion to a single operand, which must produce a value of a numeric type: If the operand is of compile-time type byte, short, or char, unary numeric promotion promotes it to a value of type int by a widening conversion ( 5.1.2). Otherwise, a unary numeric operand remains as is and is not converted. Unary numeric promotion is performed on expressions in the following situations: the dimension expression in array creations ( 15.9); the index expression in array access expressions ( 15.12); operands of the unary operators plus + ( ) and minus - ( )... Αυτόµατες µετατροπές τύπων και υπερφόρτωση Η αυτόµατη µετατροπή τύπων συνήθως έχει περίεργες αλληλεπιδράσεις µε την υπερφόρτωση συναρτήσεων Η υπερφόρτωση χρησιµοποιεί τους τύπους για την επιλογή του ορισµού που θα χρησιµοποιηθεί Η αυτόµατη µετατροπή τύπων χρησιµοποιεί τον ορισµό για να αποφασίσει τι είδους µετατροπή θα πρέπει να γίνει The Java Language Specification James Gosling, Bill Joy, Guy Steele 30 31

6 Παραδείγµατα σύγχυσης Έστω ότι, όπως στη C++, η γλώσσα επιτρέπει την αυτόµατη µετατροπή char σε int ή σε double Ποια square καλείται σε µια κλήση square('a'); int square(int x) { double square(double x) { Έστω ότι, όπως στη C++, η γλώσσα επιτρέπει την αυτόµατη µετατροπή char σε int Ποια f καλείται σε µια κλήση f('a','b'); void f(int x, char y) { void f(char x, int y) { 32 Πολυµορφισµός 33 Παραµετρικός πολυµορφισµός Μια συνάρτηση είναι παραµετρικά πολυµορφική εάν έχει τύπο που περιέχει µία ή περισσότερες µεταβλητές τύπου Ένας τύπος µε µεταβλητές τύπων είναι ένας πολυτύπος Παραµετρικός πολυµορφισµός συναντιέται σε γλώσσες όπως η ML, η C++ και η Ada Παράδειγµα: C++ Function Templates template<class X> X max(x a, X b) { return a>b? a : b; void g(int a, int b, char c, char d) { int m1 = max(a,b); char m2 = max(c,d); Ο τελεστής σύγκρισης >µπορεί να είναι πρόσθετα υπερφορτωµένος, οπότε η µεταβλητή τύπου Xδεν περιορίζεται µόνο σε τύπους για τους οποίους ο τελεστής > είναι προκαθορισµένος Παράδειγµα: Συναρτήσεις σε ML - fun identity x = x; val identity = fn : 'a -> 'a - identity 3; val it = 3 : int - identity "hello"; val it = "hello" : string - fun reverse x = = if null x then nil = else (reverse (tl x)) [(hd x)]; val reverse = fn : 'a list -> 'a list Υλοποίηση παραµετρικού πολυµορφισµού Το ένα άκρο: πολλά αντίγραφα του κώδικα ηµιουργείται ένα σύνολο από µονοµορφικές συναρτήσεις, µία για κάθε πιθανό στιγµιότυπο των µεταβλητών τύπου Κάθε αντίγραφο είναι µια µονοµορφική υλοποίηση Η οποία όµως µπορεί να βελτιστοποιηθεί/προσαρµοστεί στο συγκεκριµένο τύπο Το άλλο άκρο: ο ίδιος κώδικας ηµιουργείται µία µόνο υλοποίηση και χρησιµοποιείται για όλες τις κλήσεις (αληθινός καθολικός πολυµορφισµός) ε µπορεί να βελτιστοποιηθεί για χρήση συγκεκριµένων τύπων Βεβαίως υπάρχουν και πολλές ενδιάµεσες υλοποιήσεις 36 37

7 Πολυµορφισµός υποτύπων Μια συνάρτηση (ή ένας τελεστής) είναι πολυµορφική ως προς υποτύπους εάν κάποια από τις παραµέτρους τύπων της έχει υποτύπους Είναι σηµαντική πηγή πολυµορφισµού σε γλώσσες µε πλούσια δοµή υποτύπων Τέτοιες είναι οι περισσότερες αντικειµενοστρεφείς γλώσσες προγραµµατισµού (π.χ. η Java) Παράδειγµα: Pascal type Day = (Mon, Tue, Wed, Thu, Fri, Sat, Sun); Weekday = Mon..Fri; function nextday(d: Day): Day; begin if D=Sun then nextday := Mon else nextday := D+1 end; procedure p(d: Day; W: Weekday); begin D := nextday(d); D := nextday(w) end; Πολυµορφισµός υποτύπων:η συνάρτηση nextdayµπορεί να κληθεί µε µια παράµετρο υποτύπου Παράδειγµα: Java class Car { void brake() { class ManualCar extends Car { void clutch() { void g(car z) { z.brake(); void f(car x, ManualCar y) { g(x); g(y); Υποτύπος της κλάσης Car είναι η ManualCar Η συνάρτηση gέχει έναν απεριόριστο αριθµό τύπων ένα για κάθε κλάση που είναι µια υποκλάση της κλάσης Car Λέµε ότι αυτό είναι πολυµορφισµός υποτύπων Ορισµοί (Ανακεφαλαίωση) Πολυµορφισµός Είδαµε 4 τύπους πολυµορφικών συναρτήσεων Υπάρχουν και άλλες χρήσεις του πολυµορφισµού Πολυµορφισµός µεταβλητών, κλάσεων, πακέτων, συναρτήσεων Είναι άλλο ένα όνοµα για κλήση µεθόδων κατά το χρόνο εκτέλεσης: όταν µια κλήση x.f() µπορεί να καλέσει διαφορετικές µεθόδους ανάλογα µε την κλάση του αντικειµένου x κατά το χρόνο εκτέλεσης Ορισµός που καλύπτει όλες τις χρήσεις: Μια συνάρτηση (ή ένας τελεστής) είναι πολυµορφική εάν έχει τουλάχιστον δύο πιθανούς τύπους Λέµε ότι έχει περιστασιακό πολυµορφισµό (ad hoc polymorphism) εάν έχει τουλάχιστον δύο αλλά πεπερασµένο πλήθος πιθανών τύπων Λέµε ότι έχει καθολικό πολυµορφισµό (universal polymorphism) εάν έχει άπειρο πλήθος πιθανών τύπων 42 Υπερφόρτωση Περιστασιακός πολυµορφισµός (ad hoc polymorphism) Κάθε διαφορετικός τύπος πρέπει να έχει το δικό του ορισµό Αλλά οι ορισµοί αυτοί είναι πεπερασµένοι σε ένα πεπερασµένο πρόγραµµα 43

8 Αυτόµατη µετατροπή τύπων παραµέτρων Περιστασιακός πολυµορφισµός (ad hoc polymorphism) Όσο υπάρχουν πεπερασµένοι διαφορετικοί τύποι, υπάρχουν πεπερασµένοι το πλήθος διαφορετικοί τρόποι που µπορεί να γίνει η αυτόµατη µετατροπή τύπων των παραµέτρων Παραµετρικός πολυµορφισµός Καθολικός πολυµορφισµός Τουλάχιστον όσο το πλήθος των πιθανών τιµών των µεταβλητών τύπων είναι άπειρο Πολυµορφισµός υποτύπων Καθολικός πολυµορφισµός Όσο δεν υπάρχει κάποιο όριο στο πλήθος των διαφορετικών υποτύπων που µπορεί να δηλωθούν για κάποιο συγκεκριµένο τύπο Συνηθισµένος σε αντικειµενοστρεφείς γλώσσες προγραµµατισµού, όπως η Java Συµπερασµατικά Συµπερασµός τύπων Προσπαθεί να εξάγει τον καλύτερο τύπο για κάθε έκφραση, µε βάση πληροφορία για (κάποια από) τα σύµβολα της έκφρασης Πολυµορφισµός Όταν κάποια συνάρτηση ή αλγόριθµος µπορεί να δουλέψει σε πολλούς τύπους δεδοµένων Υπερφόρτωση (overloading) Όταν σύµβολα έχουν πολλαπλές χρήσεις οι οποίες επιλύονται στο χρόνο µεταγλώττισης (compile time) 46 47

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

Συμπερασμός Τύπων και Συμπερασμός Τύπων και Πολυμορφισμός Εισαγωγή: Σύγκριση μεταξύ γλωσσών 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

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

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

Συμπερασμός Τύπων και Πολυμορφισμός Συμπερασμός Τύπων και Πολυμορφισμός Εισαγωγή: Σύγκριση μεταξύ γλωσσών 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

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

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

Συμπερασμός Τύπων και Συμπερασμός Τύπων και Πολυμορφισμός Εισαγωγή: γή Σύγκριση μεταξύ γλωσσών 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Τι σηµαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγµα επισηµειώσεων τύπων στην ML. Επισηµειώσεις τύπων (type annotations) Σύνταξη ταιριάσµατος

Τι σηµαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγµα επισηµειώσεων τύπων στην ML. Επισηµειώσεις τύπων (type annotations) Σύνταξη ταιριάσµατος Τι σηµαίνουν οι τύποι συναρτήσεων στην ML f : A B σηµαίνει: Για κάθε x A f(x) = για κάποιο στοιχείο y = f(x) B ατέρµονη εκτέλεση η εκτέλεση τερµατίζει εγείροντας κάποια εξαίρεση Με λόγια: εάν η αποτίμηση

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

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

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

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

Τι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations) f : A B σημαίνει:

Τι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations) f : A B σημαίνει: Τι σημαίνουν οι τύποι συναρτήσεων στην ML f : A B σημαίνει: Για κάθε x A, f(x) = για κάποιο στοιχείο y = f(x) B ατέρμονη εκτέλεση η εκτέλεση τερματίζει εγείροντας κάποια εξαίρεση Με λόγια: εάν η αποτίμηση

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

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

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

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η γλώσσα ML σε βάθος. Γλώσσες Προγραμματισμού Ι. Διδάσκοντες: Νικόλαος Παπασπύρου, Κωστής Σαγώνας

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

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

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

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

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

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ

ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:

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

Η γλώσσα ML σε βάθος. Τι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations)

Η γλώσσα ML σε βάθος. Τι σημαίνουν οι τύποι συναρτήσεων στην ML. Παράδειγμα επισημειώσεων τύπων στην ML. Επισημειώσεις τύπων (type annotations) Η γλώσσα ML σε βάθος Τι σημαίνουν οι τύποι συναρτήσεων στην ML f : A B σημαίνει: Για κάθε x A, f(x) = για κάποιο στοιχείο y=f(x) B ατέρμονη εκτέλεση η εκτέλεση τερματίζει εγείροντας κάποια εξαίρεση Με

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

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

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

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

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

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

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

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

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

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java Δρ. Απόστολος Γκάμας Λέκτορας (407/80) gkamas@uop.gr Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου Διαφάνεια 1 Εισαγωγή

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

Βασικά της γλώσσας JAVA

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

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

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

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

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

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

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

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

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

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

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

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

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

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

Ονόµατα και Εµβέλεια 4

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

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

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

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

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

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

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

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

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

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

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

Μεταγλωττιστές Βελτιστοποίηση

Μεταγλωττιστές Βελτιστοποίηση Μεταγλωττιστές Βελτιστοποίηση Νίκος Παπασπύρου nickie@softlab.ntua.gr Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Εργαστήριο Τεχνολογίας Λογισμικού Πολυτεχνειούπολη, 15780

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 3: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αριθμητική Δεικτών Δείκτες και Πίνακες Παραδείγματα Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #12 Διάγραμμα κλάσεων [Class diagram] Διάλεξη #12: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism] Database Music Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; }

procedure P ( < pars > ) < type> f( < pars > ) begin { < local vars > < local vars > < procedure body> < procedure body> end; } Σχεδίαση Γλωσσών & Μεταγλωττιστές Ενότητα 2: Εμβέλεια Τμήμα Πληροφορικής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός (Διάλεξη 14) 14-1 Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά ΛΑΘΟΣ τρόπος να αυξήσουμε το κατά 1 #include void AddOne (int); void AddOne

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

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

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

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

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

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

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Συναρτήσεις - Εξωτερικές μεταβλητές - Κανόνες εμβέλειας - Διάρκεια

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 23/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Υπερφόρτωση μεθόδων Υπερφόρτωση μεθόδων Πολλαπλές

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

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

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

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

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

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD) Η Γλώσσα Pascal Χαρακτηριστικά Τύποι Δεδοµένων Δοµή προγράµµατος 1. Βασικές έννοιες Χαρακτηριστικά της γλώσσας Pascal Γλώσσα προγραµµατισµού Συντακτικό Σηµασιολογία Αλφάβητο της γλώσσας Pascal (Σύνολο

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

Αναφορές, είκτες και Αλφαριθμητικά

Αναφορές, είκτες και Αλφαριθμητικά Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών

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

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση

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

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and

alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and alpha Language (1/5) ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language Στην alpha δεν υπάρχει main() συνάρτηση, ο κώδικας ξεκινάει την εκτέλεση από την αρχή του

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:

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

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

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

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

Ορισμός Συναρτήσεων στην ΜL

Ορισμός Συναρτήσεων στην ΜL Ορισμός Συναρτήσεων στην ΜL Ονόματα και δεσμεύσεις: ησυνάρτησηval Τα ονόματα σταθερών δεσμεύονται με τιμές σταθερών μέσω ορισμών της συνάρτησης val. val codeof0 = ord 0 val codeof9 = codeof0 + 9 Τα ονόματα

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Οκτώβριος 2018 1/28 1 (implicit) μετατροπές 2 (Functions) 3 (Pointers) 4 (Arrays) 2/28 (implicit)

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14) Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός Δείκτες (Διάλεξη 14) 14-1 Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά ΛΑΘΟΣ τρόπος να αυξήσουμε το num κατά 1 #include void AddOne (int);

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

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

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

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 Εκτέλεση μεθόδου του αντικειμένου μιας κλάσης: 1) Δημιουργία αντικειμένου (στιγμιότυπου) της κλάσης: = new ( ); 2) Κλήση μεθόδου της κλάσης (στην

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

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

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

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

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