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

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

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

Transcript

1 = Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος /18

2 = 2/18

3 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω τελεστή ς (assignment operator) 2 (operator overloading) υπερφόρτωσης Παράδειγμα υπερφόρτωσης τελεστή << Παράδειγμα υπερφόρτωσης τελεστή + Παράδειγμα υπερφόρτωσης τελεστή += 3/18

4 αντικειμένων = 4/18

5 αντικειμένων Μέθοδοι αντιγράφου (copy constructors) Για μία κλάση, μία μέθοδος αντιγράφου είναι μία ειδική μέθοδος για την κατασκευή αντικειμένων μέσω ς ενός ήδη υπάρχοντος στιγμιοτύπου της κλάσης. Η πιο συνηθισμένη υπογραφή μίας μεθόδου αντιγράφου είναι η ακόλουθη: MyClass( const MyClass& other ); Σε περίπτωση που δεν υλοποιηθεί από τον χρήστη μία μέθοδος αντιγράφου για μία κλάση, ο μετταγλωτιστής ορίζει μόνος του εμμέσως μία (η οποία φροντίζει απλώς για την των αντίστοιχων μελών της κλάσης από το υπάρχον στιγμιότυπο στο αντίγραφο). = 5/18

6 αντικειμένων = Μέθοδοι αντιγράφου (copy constructors) Για μία κλάση, μία μέθοδος αντιγράφου είναι μία ειδική μέθοδος για την κατασκευή αντικειμένων μέσω ς ενός ήδη υπάρχοντος στιγμιοτύπου της κλάσης. Η πιο συνηθισμένη υπογραφή μίας μεθόδου αντιγράφου είναι η ακόλουθη: MyClass( const MyClass& other ); Σε περίπτωση που δεν υλοποιηθεί από τον χρήστη μία μέθοδος αντιγράφου για μία κλάση, ο μετταγλωτιστής ορίζει μόνος του εμμέσως μία (η οποία φροντίζει απλώς για την των αντίστοιχων μελών της κλάσης από το υπάρχον στιγμιότυπο στο αντίγραφο). Κατασκευή μέσω ενός τελεστή ς (assignment operator) Ένας τελεστής ς (assignment operator) για μία κλάση επιτρέπει τη χρήση του τελεστή '=' για την ενός προϋπάρχοντος στιγμιοτύπου σε ένα άλλο προϋπάρχον στιγμιότυπο της κλάσης. Υπάρχουν πολλές διαφορετικές υπογραφές για τον τελεστή ς (operator =), π.χ.: MyClass& operator=( const MyClass& other ); Σε περίπτωση που δεν υλοποιηθεί από τον χρήστη κάποιος τελεστής ς για μία κλάση, ο μετταγλωτιστής μπορεί (ανάλογα με τη δομή της κλάσης) να ορίσει εμμέσως μόνος του έναν (ο οποίος φροντίζει απλώς για την των αντίστοιχων μελών της κλάσης από το στιγμιότυπο του δεξιού μέλους σε αυτό του αριστερού). 5/18

7 Μέθοδοι αντιγράφου (copy constructors) Γενικά, όταν τα αντικείμενα μίας κλάσης δεν περιλαμβάνουν μέλη που δεσμεύονται δυναμικά, δεν είναι απαραίτητο να υλοποιήσουμε μεθόδους αντιγράφου. = 6/18

8 Μέθοδοι αντιγράφου (copy constructors) Γενικά, όταν τα αντικείμενα μίας κλάσης δεν περιλαμβάνουν μέλη που δεσμεύονται δυναμικά, δεν είναι απαραίτητο να υλοποιήσουμε μεθόδους αντιγράφου. Υπογραφές μεθόδων αντιγράφου: MyClass( const MyClass& other ); <-- προτιμώμενη MyClass( MyClass& other ); MyClass( volatile const MyClass& other ); MyClass( volatile MyClass& other ); = 6/18

9 = Μέθοδοι αντιγράφου (copy constructors) Γενικά, όταν τα αντικείμενα μίας κλάσης δεν περιλαμβάνουν μέλη που δεσμεύονται δυναμικά, δεν είναι απαραίτητο να υλοποιήσουμε μεθόδους αντιγράφου. Υπογραφές μεθόδων αντιγράφου: MyClass( const MyClass& other ); <-- προτιμώμενη MyClass( MyClass& other ); MyClass( volatile const MyClass& other ); MyClass( volatile MyClass& other ); Γιατί να χρησιμοποιήσω const ; 1 // Προβληματική συνάρτηση, αν κληθεί με κάτι άλλο από μεταβλητή, 2 // αφού απαγορεύεται να χρησιμοποιηθεί αναφορά σε προσωρινό αντικείμενο. 3 void print_bad( std::string& s ) { // όρισμα χωρίς const 4 std::cout << s << std::endl; 5 } 6 7 // Καλώς ορισμένη συνάρτηση: 8 void print_good( const std::string& s ) { 9 std::cout << s << std::endl; 10 } std::string hello("hello"); print_bad( hello ); // επιτυχής μεταγλώττιση, αφού το hello δεν είναι προσωρινό 15 print_bad( std::string("world") ); // λάθος, το όρισμα είναι προσωρινό 16 print_bad( "!" ); // λάθος, κατασκευάζεται προσωρινό std::string από const char* print_good( hello ); // επιτυχής μεταγλώττιση 19 print_good( std::string("world") ); // επιτυχής μεταγλώττιση 20 print_good( "!" ); // επιτυχής μεταγλώττιση 6/18

10 Κατασκευή μέσω τελεστή ς (assignment operator) Πότε πρέπει να υλοποιήσουμε τελεστές ς μια μία κλάση; Όταν πρέπει να υλοποιήσουμε και μεθόδους αντιγράφου (copy constructors). = 7/18

11 Κατασκευή μέσω τελεστή ς (assignment operator) Πότε πρέπει να υλοποιήσουμε τελεστές ς μια μία κλάση; Όταν πρέπει να υλοποιήσουμε και μεθόδους αντιγράφου (copy constructors). Υπογραφές ς: MyClass& operator=( const MyClass& rhs ); MyClass& operator=( MyClass& rhs ); <-- προς αποφυγή MyClass& operator=( MyClass rhs ); const MyClass& operator=( const MyClass& rhs ); const MyClass& operator=( MyClass& rhs ); <-- προς αποφυγή const MyClass& operator=( MyClass rhs ); MyClass operator=( const MyClass& rhs ); MyClass operator=( MyClass& rhs ); <-- προς αποφυγή MyClass operator=( MyClass rhs ); = 7/18

12 = Κατασκευή μέσω τελεστή ς (assignment operator) Πότε πρέπει να υλοποιήσουμε τελεστές ς μια μία κλάση; Όταν πρέπει να υλοποιήσουμε και μεθόδους αντιγράφου (copy constructors). Υπογραφές ς: MyClass& operator=( const MyClass& rhs ); MyClass& operator=( MyClass& rhs ); <-- προς αποφυγή MyClass& operator=( MyClass rhs ); const MyClass& operator=( const MyClass& rhs ); const MyClass& operator=( MyClass& rhs ); <-- προς αποφυγή const MyClass& operator=( MyClass rhs ); MyClass operator=( const MyClass& rhs ); MyClass operator=( MyClass& rhs ); <-- προς αποφυγή MyClass operator=( MyClass rhs ); Παράδειγμα υλοποίησης ενός τελεστή ς: 1 class MyClass { 2 int x; 3 char c; 4 std::string s; 5 }; 6 7 MyClass& MyClass::operator=( const MyClass& other ) { 8 x = other.x; // other : το αντικείμενο δεξιά του τελεστή = 9 c = other.c; 10 s = other.s; // this : δείκτης προς το τρέχον αντικείμενο, 11 return *this; // δηλαδή προς το αντικείμενο αριστερά του τελεστή = 12 } 7/18

13 Κατασκευή αντιγράφου VS Κατασκευή μέσω τελεστή ς = 1 #include<iostream> 2 #include<stdio.h> 3 4 using namespace std; 5 6 class Test { 7 public: 8 Test() {} 9 Test(const Test &t) { 10 cout << "Copy constructor called" << endl; 11 } 12 Test& operator = (const Test &t) { 13 cout << "Assignment operator called" << endl; 14 } 15 }; int main() { 18 Test t1, t2; // Δημιουργία των στιγμιοτύπων t1 και t2 19 t2 = t1; // Στο t2 γίνεται του t Test t3 = t1; // Δημιουργία του στιγμιοτύπου t3 με του t1 σε αυτό 22 // Είναι ισοδύναμο με: Test t3(t1); 23 } // έξοδος στην οθόνη: 26 // Assignment operator called 27 // Copy constructor called Για περισσότερες πληροφορίες, κλικ εδώ: Copy constructor vs assignment operator in C++ 8/18

14 (operator overloading) = 9/18

15 (operator overloading) 1/2 Οι περισσότεροι τελεστές της C++ μπορούν να επανοριστούν ή να υπερφορτωθούν, και να λειτουργούν ανάλογα με το τι είδους είναι οι τελεστέοι τους (δεξί ή/και αριστερό τους μέλος). = 10/18

16 (operator overloading) 1/2 Οι περισσότεροι τελεστές της C++ μπορούν να επανοριστούν ή να υπερφορτωθούν, και να λειτουργούν ανάλογα με το τι είδους είναι οι τελεστέοι τους (δεξί ή/και αριστερό τους μέλος). Πότε θα πρέπει να γίνει υπερφόρτωση κάποιου τελεστή; = 10/18

17 (operator overloading) 1/2 Οι περισσότεροι τελεστές της C++ μπορούν να επανοριστούν ή να υπερφορτωθούν, και να λειτουργούν ανάλογα με το τι είδους είναι οι τελεστέοι τους (δεξί ή/και αριστερό τους μέλος). Πότε θα πρέπει να γίνει υπερφόρτωση κάποιου τελεστή; 1 Όταν το νόημα ενός τελεστή δεν είναι προφανές, κατανοητό ή αδιαμφισβήτητο, τότε δεν θα πρέπει να γίνει υπερφόρτωσή του. Στην περίπτωση αυτή είναι προτιμότερο να υλοποιήσει κανείς μία συνάρτηση επιλέγοντας ένα πολύ εύστοχο όνομα για αυτή. Εν ολίγοις, οι τελεστές δεν πρέπει να υπερφορτώνονται = 10/18

18 (operator overloading) 1/2 Οι περισσότεροι τελεστές της C++ μπορούν να επανοριστούν ή να υπερφορτωθούν, και να λειτουργούν ανάλογα με το τι είδους είναι οι τελεστέοι τους (δεξί ή/και αριστερό τους μέλος). Πότε θα πρέπει να γίνει υπερφόρτωση κάποιου τελεστή; 1 Όταν το νόημα ενός τελεστή δεν είναι προφανές, κατανοητό ή αδιαμφισβήτητο, τότε δεν θα πρέπει να γίνει υπερφόρτωσή του. Στην περίπτωση αυτή είναι προτιμότερο να υλοποιήσει κανείς μία συνάρτηση επιλέγοντας ένα πολύ εύστοχο όνομα για αυτή. Εν ολίγοις, οι τελεστές δεν πρέπει να υπερφορτώνονται 2 Αν πρέπει να υπερφορτωθεί ένας τελεστής, θα πρέπει να διατηρηθεί η καθιερωμένη του σημασία. Για παράδειγμα, η υπερφόρτωση του τελεστή + θα πρέπει να σχετίζεται με την πρόσθεση και όχι με την αφαίρεση = 10/18

19 = (operator overloading) 1/2 Οι περισσότεροι τελεστές της C++ μπορούν να επανοριστούν ή να υπερφορτωθούν, και να λειτουργούν ανάλογα με το τι είδους είναι οι τελεστέοι τους (δεξί ή/και αριστερό τους μέλος). Πότε θα πρέπει να γίνει υπερφόρτωση κάποιου τελεστή; 1 Όταν το νόημα ενός τελεστή δεν είναι προφανές, κατανοητό ή αδιαμφισβήτητο, τότε δεν θα πρέπει να γίνει υπερφόρτωσή του. Στην περίπτωση αυτή είναι προτιμότερο να υλοποιήσει κανείς μία συνάρτηση επιλέγοντας ένα πολύ εύστοχο όνομα για αυτή. Εν ολίγοις, οι τελεστές δεν πρέπει να υπερφορτώνονται 2 Αν πρέπει να υπερφορτωθεί ένας τελεστής, θα πρέπει να διατηρηθεί η καθιερωμένη του σημασία. Για παράδειγμα, η υπερφόρτωση του τελεστή + θα πρέπει να σχετίζεται με την πρόσθεση και όχι με την αφαίρεση 3 Όταν υπερφορτωθεί ένας τελεστής, θα πρέπει να υπερφορτωθούν και όλοι οι σχετιζόμενοι τελεστές. Π.χ. αν έχει υπερφορτωθεί ο τελεστής + θα υπάρχει η παράσταση a+b, και αναμένει κανείς πως θα πρέπει να υπάρχει και η παράσταση a+=b (δηλαδή θα πρέπει να έχει υπερφορτωθεί και ο τελεστής += ). 10/18

20 = (operator overloading) 1/2 Οι περισσότεροι τελεστές της C++ μπορούν να επανοριστούν ή να υπερφορτωθούν, και να λειτουργούν ανάλογα με το τι είδους είναι οι τελεστέοι τους (δεξί ή/και αριστερό τους μέλος). Πότε θα πρέπει να γίνει υπερφόρτωση κάποιου τελεστή; 1 Όταν το νόημα ενός τελεστή δεν είναι προφανές, κατανοητό ή αδιαμφισβήτητο, τότε δεν θα πρέπει να γίνει υπερφόρτωσή του. Στην περίπτωση αυτή είναι προτιμότερο να υλοποιήσει κανείς μία συνάρτηση επιλέγοντας ένα πολύ εύστοχο όνομα για αυτή. Εν ολίγοις, οι τελεστές δεν πρέπει να υπερφορτώνονται 2 Αν πρέπει να υπερφορτωθεί ένας τελεστής, θα πρέπει να διατηρηθεί η καθιερωμένη του σημασία. Για παράδειγμα, η υπερφόρτωση του τελεστή + θα πρέπει να σχετίζεται με την πρόσθεση και όχι με την αφαίρεση 3 Όταν υπερφορτωθεί ένας τελεστής, θα πρέπει να υπερφορτωθούν και όλοι οι σχετιζόμενοι τελεστές. Π.χ. αν έχει υπερφορτωθεί ο τελεστής + θα υπάρχει η παράσταση a+b, και αναμένει κανείς πως θα πρέπει να υπάρχει και η παράσταση a+=b (δηλαδή θα πρέπει να έχει υπερφορτωθεί και ο τελεστής += ). Τελεστές που δεν μπορούν να υπερφορτωθούν:. ::.*?: sizeof typeid 10/18

21 = (operator overloading) 1/2 Οι περισσότεροι τελεστές της C++ μπορούν να επανοριστούν ή να υπερφορτωθούν, και να λειτουργούν ανάλογα με το τι είδους είναι οι τελεστέοι τους (δεξί ή/και αριστερό τους μέλος). Πότε θα πρέπει να γίνει υπερφόρτωση κάποιου τελεστή; 1 Όταν το νόημα ενός τελεστή δεν είναι προφανές, κατανοητό ή αδιαμφισβήτητο, τότε δεν θα πρέπει να γίνει υπερφόρτωσή του. Στην περίπτωση αυτή είναι προτιμότερο να υλοποιήσει κανείς μία συνάρτηση επιλέγοντας ένα πολύ εύστοχο όνομα για αυτή. Εν ολίγοις, οι τελεστές δεν πρέπει να υπερφορτώνονται 2 Αν πρέπει να υπερφορτωθεί ένας τελεστής, θα πρέπει να διατηρηθεί η καθιερωμένη του σημασία. Για παράδειγμα, η υπερφόρτωση του τελεστή + θα πρέπει να σχετίζεται με την πρόσθεση και όχι με την αφαίρεση 3 Όταν υπερφορτωθεί ένας τελεστής, θα πρέπει να υπερφορτωθούν και όλοι οι σχετιζόμενοι τελεστές. Π.χ. αν έχει υπερφορτωθεί ο τελεστής + θα υπάρχει η παράσταση a+b, και αναμένει κανείς πως θα πρέπει να υπάρχει και η παράσταση a+=b (δηλαδή θα πρέπει να έχει υπερφορτωθεί και ο τελεστής += ). Τελεστές που δεν μπορούν να υπερφορτωθούν:. ::.*?: sizeof typeid Κατάλογος που μπορούν να υπερφορτωθούν: Αριθμητικοί τελεστές: + - * / % += -= *= /= %= Τελεστές για bits: & ^ << >> &= = ^= <<= >>= Τελεστές Bool: ==!= < > <= >= &&! Τελεστές μνήμης: new new[] delete delete[] Διάφοροι: [] -> ->*, * & () 10/18

22 (operator overloading) 2/2 Ένας δυαδικός τελεστής δέχεται ένα όρισμα αριστερά του και ένα όρισμα δεξιά του, π.χ. a+b. Μπορεί να οριστεί με δύο τρόπους: =. 11/18

23 (operator overloading) 2/2 Ένας δυαδικός τελεστής δέχεται ένα όρισμα αριστερά του και ένα όρισμα δεξιά του, π.χ. a+b. Μπορεί να οριστεί με δύο τρόπους: Μέσω μίας μεθόδου που είναι μέλος της κλάσης, και δέχεται ως μοναδικό της όρισμα μία αναφορά σε αντικείμενο της κλάσης, π.χ. MyClass& operator+(const MyClass& rhs); =. 11/18

24 (operator overloading) 2/2 = Ένας δυαδικός τελεστής δέχεται ένα όρισμα αριστερά του και ένα όρισμα δεξιά του, π.χ. a+b. Μπορεί να οριστεί με δύο τρόπους: Μέσω μίας μεθόδου που είναι μέλος της κλάσης, και δέχεται ως μοναδικό της όρισμα μία αναφορά σε αντικείμενο της κλάσης, π.χ. MyClass& operator+(const MyClass& rhs); Μέσω μίας μεθόδου που δεν ανήκει στην κλάση και δέχεται δύο ορίσματα. Τουλάχιστον το δεύτερο όρισμα είναι μία αναφορά σε αντικείμενο της κλάσης. Για να μπορέσουν οι μέθοδοι αυτές να έχουν πρόσβαση στα ιδιωτικά δεδομένα της κλάσης, ορίζονται ως φίλες μέσω της λέξης friend, π.χ. friend std::ostream& operator<<(std::ostream& s, const MyClass& rhs);. 11/18

25 (operator overloading) 2/2 = Ένας δυαδικός τελεστής δέχεται ένα όρισμα αριστερά του και ένα όρισμα δεξιά του, π.χ. a+b. Μπορεί να οριστεί με δύο τρόπους: Μέσω μίας μεθόδου που είναι μέλος της κλάσης, και δέχεται ως μοναδικό της όρισμα μία αναφορά σε αντικείμενο της κλάσης, π.χ. MyClass& operator+(const MyClass& rhs); Μέσω μίας μεθόδου που δεν ανήκει στην κλάση και δέχεται δύο ορίσματα. Τουλάχιστον το δεύτερο όρισμα είναι μία αναφορά σε αντικείμενο της κλάσης. Για να μπορέσουν οι μέθοδοι αυτές να έχουν πρόσβαση στα ιδιωτικά δεδομένα της κλάσης, ορίζονται ως φίλες μέσω της λέξης friend, π.χ. friend std::ostream& operator<<(std::ostream& s, const MyClass& rhs); Εφόσον ένα αναφερόμενο αντικείμενο δεν αλλάζει κατά την εφαρμογή τού τελεστή, θα πρέπει να δηλωθεί ρητά πως παραμένει σταθερό, μέσω της δεσμευμένης λέξης const. 11/18

26 υπερφόρτωσης 1/6 = Θα χρησιμοποιήσουμε την κλάση Ratio που έχουμε ήδη μελετήσει, η οποία περιγράφει ρητούς αριθμούς, δηλαδή κλάσματα με αριθμητή και παρανομαστή ακεραίους αριθμούς. Σε προηγούμενη άσκηση υλοποιήθηκε μία μέθοδος (η Ratio::add), για την πρόσθεση δύο κλασμάτων. Θα ήταν όμως καλύτερα να ορίζαμε την πράξη '+' για τα αντικείμενα της κλάσης Ratio, έτσι ώστε να μπορούμε π.χ. να γράψουμε τον κώδικα: 1 Ratio a(3,4), b(4,7), c; 2 c=a+b; // εδώ το "+" θα πρέπει να έχει υπερφορτωθεί καταλλήλως 3 cout << "α+β="; c.print(); cout << endl; Επίσης, η γραμμή 3 του παραπάνω κώδικα θα ήταν πολύ πιο έυκολα αναγνώσιμη ως cout << "α+β=" << c << endl; αρκεί να υπερφορτώναμε καταλλήλως τον τελεστή '<<', ώστε να μπορεί να χρησιμοποιεί αντικείμενα της κλάσης Ratio. 12/18

27 υπερφόρτωσης 2/6 = 1 // αρχείο Ratio.h 2 #pragma once 3 4 class Ratio { 5 public: 6 Ratio(); // κατασκευή 7 Ratio(int); // κατασκευή 8 Ratio(int,int); // κατασκευή 9 ~Ratio(); // καταστροφή 10 int getnumerator() const; // πρόσβαση 11 int getdenominator() const; // πρόσβαση 12 void setnumerator(int); // πρόσβαση 13 void setdenominator(int); // πρόσβαση 14 double todouble(); // πραγματική τιμή 15 void invert(); // αντιστροφή 16 void print(); // εκτύπωση 17 void add(const Ratio&, Ratio&) const; // υπερφόρτωση τελεστή + 20 Ratio& operator+(const Ratio& rhs); // υπερφόρτωση τελεστή << 23 friend std::ostream& operator<<(std::ostream& stream, 24 const Ratio& rhs); private: 27 int num; // αριθμητής 28 int den; // παρανομαστής 29 }; Αρχείο Ratio.h για τη δήλωση της κλάσης Ratio. Στη γραμμή 20, έχει προστεθεί η υπογραφή του υπερφορτωμένου τελεστή +. Στις γραμμές 23 24, έχει προστεθεί η υπογραφή του υπερφορτωμένου τελεστή <<. Η λέξη friend δηλώνει πως η υπογραφή αυτή δεν ανήκει στην παρούσα κλάση (Ratio), όμως τής επιτρέπεται (ως φίλης) η πρόσβαση στα ιδιωτικά μέλη της Ratio. 13/18

28 υπερφόρτωσης 3/6 = 1 #include <iostream> // αρχείο Ratio.cpp 2 #include "Ratio.h" 3 Ratio::Ratio() { num=0; den=1; } 4 Ratio::Ratio(int i) { num=i; den=1; } 5 Ratio::Ratio(int i,int j) { num=i; den=j; } 6 Ratio::~Ratio() { } 7 int Ratio::getNumerator() const { return num; } 8 int Ratio::getDenominator() const { return den; } 9 void Ratio::setNumerator(int i) { num=i; } 10 void Ratio::setDenominator(int i) { den=i; } 11 double Ratio::toDouble() { return (double) num / (double) den; } 12 void Ratio::invert() { int tmp=num; num=den; den=tmp; } 13 void Ratio::print() { std::cout << num << "/" << den; } void Ratio::add(const Ratio& b, Ratio& c) const { 16 int num2=b.getnumerator(); 17 int den2=b.getdenominator(); 18 int num3=num*den2+num2*den; 19 int den3=den*den2; 20 c.setnumerator(num3); 21 c.setdenominator(den3); 22 } Ratio& Ratio::operator+(const Ratio& rhs) { 25 // int n2=rhs.getnumerator(); 26 // int d2=rhs.getdenominator(); 27 // int n3=num*d2+n2*den; 28 // int d3=den*d2; 29 // num=n3; 30 // den=d3; 31 (*this).add(rhs,*this); // χρήση της μεθόδου add που υλοποιήθηκε 32 return *this; 33 } std::ostream& operator<<(std::ostream& stream, const Ratio& rhs) { 36 stream << rhs.num << "/" << rhs.den; 37 return stream; 38 } Αρχείο Ratio.cpp για την υλοποίηση της κλάσης Ratio. Στις γραμμές 35 38, υλοποιείται ο υπερφορτωμένος. Ο δεν ανήκει στην κλάση Ratio, και για το λόγο αυτό αναφέρεται ως operator<< και όχι ως Ratio::operator<< (αντίθετα με την περίπτωση του τελεστή + στη γραμμή 24). Γραμμή 36: Υλοποίηση του τελεστή <<, με εγγραφή δεδομένων στο stream (που βρίσκεται αριστερά του <<), έχοντας πρόσβαση στα ιδιωτικά μέλη του αντικειμένου rhs (που βρίσκεται δεξιά του <<). Γραμμή 37: επιστρέφεται αντικείμενο stream που έχει στο μεταξύ μεταβληθεί. 14/18

29 υπερφόρτωσης 4/6 = 1 #include <iostream> // αρχείο Ratio.cpp 2 #include "Ratio.h" 3 Ratio::Ratio() { num=0; den=1; } 4 Ratio::Ratio(int i) { num=i; den=1; } 5 Ratio::Ratio(int i,int j) { num=i; den=j; } 6 Ratio::~Ratio() { } 7 int Ratio::getNumerator() const { return num; } 8 int Ratio::getDenominator() const { return den; } 9 void Ratio::setNumerator(int i) { num=i; } 10 void Ratio::setDenominator(int i) { den=i; } 11 double Ratio::toDouble() { return (double) num / (double) den; } 12 void Ratio::invert() { int tmp=num; num=den; den=tmp; } 13 void Ratio::print() { std::cout << num << "/" << den; } void Ratio::add(const Ratio& b, Ratio& c) const { 16 int num2=b.getnumerator(); 17 int den2=b.getdenominator(); 18 int num3=num*den2+num2*den; 19 int den3=den*den2; 20 c.setnumerator(num3); 21 c.setdenominator(den3); 22 } Ratio& Ratio::operator+(const Ratio& rhs) { 25 // int n2=rhs.getnumerator(); 26 // int d2=rhs.getdenominator(); 27 // int n3=num*d2+n2*den; 28 // int d3=den*d2; 29 // num=n3; 30 // den=d3; 31 (*this).add(rhs,*this); // χρήση της μεθόδου add που υλοποιήθηκε 32 return *this; 33 } std::ostream& operator<<(std::ostream& stream, const Ratio& rhs) { 36 stream << rhs.num << "/" << rhs.den; 37 return stream; 38 } Στις γραμμές 24 33, υλοποιείται ο υπερφορτωμένος. Ο δείκτης this δείχνει στο παρόν αντικείμενο (αριστερά του +). *this : το παρόν αντικείμενο Γραμμή 31: Καλείται μέσω του παρόντος αντικειμένου η μέθοδος add, που προσθέτει το rhs (δεξιά του +) στο παρόν αντικείμενο (αριστερά του +). Το αποτέλεσμα δε αποθηκεύεται στο παρόν αντικείμενο. Γραμμή 32: επιστρέφεται το παρόν αντικείμενο που έχει στο μεταξύ μεταβληθεί. Εναλλακτικά, αντί της γραμμής 31 θα μπορούσαν να χρησιμοποιηθούν οι γραμμές 25 30, που ουσιαστικά είναι όμοιες με τις γραμμές της μεθόδου add. 15/18

30 υπερφόρτωσης 5/6 = 1 #include <iostream> // αρχείο Ratio.cpp 2 #include "Ratio.h" 3 Ratio::Ratio() { num=0; den=1; } 4 Ratio::Ratio(int i) { num=i; den=1; } 5 Ratio::Ratio(int i,int j) { num=i; den=j; } 6 Ratio::~Ratio() { } 7 int Ratio::getNumerator() const { return num; } 8 int Ratio::getDenominator() const { return den; } 9 void Ratio::setNumerator(int i) { num=i; } 10 void Ratio::setDenominator(int i) { den=i; } 11 double Ratio::toDouble() { return (double) num / (double) den; } 12 void Ratio::invert() { int tmp=num; num=den; den=tmp; } 13 void Ratio::print() { std::cout << num << "/" << den; } void Ratio::add(const Ratio& b, Ratio& c) const { 16 int num2=b.getnumerator(); 17 int den2=b.getdenominator(); 18 int num3=num*den2+num2*den; 19 int den3=den*den2; 20 c.setnumerator(num3); 21 c.setdenominator(den3); 22 } Ratio& Ratio::operator+(const Ratio& rhs) { 25 // int n2=rhs.getnumerator(); 26 // int d2=rhs.getdenominator(); 27 // int n3=num*d2+n2*den; 28 // int d3=den*d2; 29 // num=n3; 30 // den=d3; 31 (*this).add(rhs,*this); // χρήση της μεθόδου add που υλοποιήθηκε 32 return *this; 33 } std::ostream& operator<<(std::ostream& stream, const Ratio& rhs) { 36 stream << rhs.num << "/" << rhs.den; 37 return stream; 38 } Η υλοποίηση αυτή του τελεστή + παρουσιάζει προβλήματα. Αν z, y και z είναι αντικείμενα της κλάσης Ratio, τότε Μπορεί να υπολογιστεί το z=x+y; όμως τα δεδομένα του x αλλάζουν μετά την πράξη!!! Μπορεί να υπολογιστεί το z=y+1; όμως τα δεδομένα του y αλλάζουν μετά την πράξη!!! Λάθος μεταγλώττισης για το z=1+y; όπου το + αναμένεται ως τελεστής άθροισης ακεραίων, λόγω του ακεραίου αριστερού μέλους. Για την αποφυγή/διόρθωση των προβλημάτων αυτών μπορούμε να χρησιμοποιήσουμε για τον τελεστή + μία φίλη μέθοδο αντί της μεθόδου μέλους. 16/18

31 υπερφόρτωσης 6/6 = Αλλαγές για το αρχείο Ratio.h : 1 // αλλαγή της γραμμής 20 του αρχείου Ratio.h σε: 2 friend Ratio operator+(const Ratio& lhs, const Ratio& rhs); Αλλαγές για το αρχείο Ratio.cpp : 1 // αλλαγή των γραμμών του αρχείου Ratio.cpp σε: 2 Ratio operator+(const Ratio& lhs, const Ratio& rhs) { 3 Ratio res; // δημιουργία του αντικειμένου res 4 lhs.add(rhs,res); // lhs + rhs --> αποθήκευση στο res 5 return res; // επιστροφή του res 6 } Αρχείο testratio.cpp για τον έλεχγο της κλάσης: 1 #include <iostream> 2 #include "Ratio.h" 3 using namespace std; 4 5 int main() { 6 Ratio x(1,2), y(1,2), z(1,2); 7 cout << "x=" << x << " y=" << y << " z=" << z << endl; 8 cout << "x+y+z=" << (x+y+z) << endl; 9 cout << "x=" << x << " y=" << y << " z=" << z << endl; 10 cout << "y+1=" << (y+1) << endl; 11 cout << "x=" << x << " y=" << y << " z=" << z << endl; //--- χρησιμοποιούνται με τη σωστή υλοποίηση του + 14 cout << "1+z=" << (1+z) << endl; // <--- g++ errors cout << "x=" << x << " y=" << y << " z=" << z << endl; 16 } Για την άρση των προβλημάτων που προκύπτουν με την προηγούμενη υλοποίηση του τελεστή +, κάνουμε τις διπλανές αλλαγές στα αρχεία Ratio.h και Ratio.cpp. Έξοδος προβληματικής υλοποίησης του + : x=1/2 y=1/2 z=1/2 x+y+z=12/8 x=12/8 y=1/2 z=1/2 y+1=3/2 x=12/8 y=3/2 z=1/2 // 1+z : g++ errors Έξοδος σωστής υλοποίησης του + : x=1/2 y=1/2 z=1/2 x+y+z=12/8 x=1/2 y=1/2 z=1/2 y+1=3/2 x=1/2 y=1/2 z=1/2 1+z=3/2 x=1/2 y=1/2 z=1/2 17/18

32 Παράδειγμα υπερφόρτωσης τελεστή += = Προσθήκη στο αρχείο Ratio.h : 1 Ratio& operator+=(const Ratio& rhs); Προσθήκη στο αρχείο Ratio.cpp : 1 Ratio& Ratio::operator+=(const Ratio& rhs) { 2 (*this).add(rhs,*this); 3 return *this; 4 } Προσθήκη στο αρχείο testratio.cpp για τον έλεχγο της κλάσης: 1 Ratio q1(1,2),q2(1,2), q3(1,2); 2 cout << "q1=" << q1 << " q2=" << q2 << " q3=" << q3 << endl; 3 q1+=q2+q3; 4 cout << "q1+=q2+q3 => q1=" << q1 << endl; 5 cout << "q1=" << q1 << " q2=" << q2 << " q3=" << q3 << endl; 6 q1+=10+q2; 7 cout << "q1+=10+q2 => q1=" << q1 << endl; 8 cout << "q1=" << q1 << " q2=" << q2 << " q3=" << q3 << endl; 9 q1+=q3+4; 10 cout << "q1+=q3+4 => q1=" << q1 << endl; 11 cout << "q1=" << q1 << " q2=" << q2 << " q3=" << q3 << endl; Η «προβληματική» υλοποίηση του τελεστή +, που αλλάζει τα δεδομένα του αριστερού τελεστέου, είναι μάλλον ιδανική για την υλοποίηση του τελεστη +=. Στην περίπτωση αυτή θέλουμε να προστεθεί το δεξί μέλος στην υπάρχουσα τιμή του αριστερού μέλους. Έξοδος προγράμματος ελέγχου : q1=1/2 q2=1/2 q3=1/2 q1+=q2+q3 => q1=12/8 q1=12/8 q2=1/2 q3=1/2 q1+=10+q2 => q1=192/16 q1=192/16 q2=1/2 q3=1/2 q1+=q3+4 => q1=528/32 q1=528/32 q2=1/2 q3=1/2 18/18

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

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

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

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( ) ΤΕΛΕΣΤΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τι είναι οι τελεστές Χρήση τελεστών Υπερφόρτωση τελεστών Chain-linking Τελεστών Τελευταία ενημέρωση: Ιούνιος 2013 Εισαγωγή - 2 Τελεστής

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

Υπερφόρτωση τελεστών

Υπερφόρτωση τελεστών Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 9η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Μέθοδοι με ορίσματα της ίδιας τάξης. Μέθοδοι που επιστρέφουν αντικείμενα

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

Υπερφόρτωση Τελεστών

Υπερφόρτωση Τελεστών Υπερφόρτωση Τελεστών Υπερφόρτωση του τελεστή ανάθεσης τιμής (=) Υπερφόρτωση των αριθμητικών τελεστών (+, -, *, /) Υπερφόρτωση των αριθμητικών τελεστών ανάθεσης (+=, -=, *=, /=) Υπερφόρτωση των συσχετιστικών

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

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

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

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 11η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση του τελεστή εκχώρησης. Στατικές μεταβλητές, στατικές σταθερές

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

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

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

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

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 7: Υπερφόρτωση διμελών τελεστών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 6η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προκαθορισμένες τιμές ορισμάτων. Υπερφόρτωση συναρτήσεων. Συναρτήσεις

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 5η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πίνακες ως ορίσματα συναρτήσεων. Τα ορίσματα argc και argv της main.

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 6: Κατανομή και Δυναμική Διαχείριση Μνήμης, τελεστές new και delete, υπερφόρτωση μονομελών τελεστών Το περιεχόμενο

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 10η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση των τελεστών εισόδου και εξόδου. Τάξεις και δυναμική καταχώριση

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 2η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικοί αριθμητικοί τύποι, μετατροπές τύπων και σταθερές. Πίνακες. Πίνακες

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

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

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

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

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

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 4η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Δείκτες και πίνακες. Δείκτες σε σταθερές και σταθεροί δείκτες. Μεταβίβαση

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ! Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Προγραμματισμός Υπολογιστών με C++ Εξεταστική περίοδος: Φεβρουαρίου 2010. Διδάσκων: Α. Δημάκης Γράψτε όλες τις απαντήσεις σας πάνω σε αυτό το

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

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ! Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Προγραμματισμός Υπολογιστών με C++ Εξεταστική περίοδος: Σεπτεμβρίου 2011. Διδάσκων: Α. Δημάκης Γράψτε όλες τις απαντήσεις σας πάνω σε αυτό το

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

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){

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

Πίνακες (Arrays) Εισαγωγή στη C++

Πίνακες (Arrays) Εισαγωγή στη C++ Πίνακες (Arrays) Εισαγωγή στη C++ Γενικά Στη C++, όπως και σε όλες τις γλώσσες προγραμματισμού, υπάρχει η δυνατότητα ομαδοποίησης δεδομένων ίδιου τύπου. Ο τρόπος με τον οποίο επιτυγχάνεται αυτό είναι με

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ 1 Τύποι δεδομένων Η γλώσσα προγραμματισμού C++ υποστηρίζει τους παρακάτω τύπους δεδομένων: 1) Ακέραιοι αριθμοί (int). 2) Πραγματικοί αριθμοί διπλής ακρίβειας

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

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

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

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

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

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

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

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΕΡΓΑΣΤΗΡΙΟ C++ ΕΞΑΜΗΝΟ Γ Ακαδηµαϊκό Έτος

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΕΡΓΑΣΤΗΡΙΟ C++ ΕΞΑΜΗΝΟ Γ Ακαδηµαϊκό Έτος ΠΑΡΑ ΕΙΓΜΑ δυναµικής δέσµευσης και αποδέσµευσης µνήµης στη C++ µέσω των new και delete. // create.cpp #include using namespace std; class values public: values() : value1(0), value2(0) count++;

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

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 10: Constructors και Destructors Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού Άδειες

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ Πρώτα να δούμε τι ακριβώς συμπεριλαμβάνει μια μεταβλητή τύπος Καθορίζει το μέγεθος στην μνήμη σε Bytes τιμή Η αριθμητική τιμή που αποθηκεύεται στην

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Παρατηρήσεις

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

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

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

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

Υπερφόρτωση τελεστών (operator(

Υπερφόρτωση τελεστών (operator( Υπερφόρτωση τελεστών (operator( overloading) Η υπερφόρτωση τελεστών είναι ένα από τα πιο ενδιαφέροντα χαρακτηριστικά του αντικειμενοστραφούς προγραμματισμού. Αναφέρεται στην πρόσθετη χρήση των συνηθισμένων

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

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Υπερφόρτωση, keywords CONST, STATIC, FRIEND ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Υπερφόρτωση Συναρτήσεων Τελεστών CONST αντικείμενα, μεταβλητές και συναρτήσεις

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

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

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

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

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

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

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

Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης

Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης 3 Φεβρουαρίου 2013 1 Ομάδα Α - Ερωτήσεις Γενικών Γνώσεων 1. (ΕΓΓ.155) Τι είναι το αντικείμενο και ποια τα χαρακτηριστικά του; Περιγράψτε το

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

Διανύσματα στις 3 Διαστάσεις

Διανύσματα στις 3 Διαστάσεις project 2 Διανύσματα στις 3 Διαστάσεις Περιεχόμενα: Prj02.1 Το Πρόβλημα... 485 Prj02.2 Ο Τύπος Vector3 και οι Δημιουργοί... 486 Prj02.3 Οι Τελεστές Σύγκρισης... 487 Prj02.4 Οι Τελεστές +, -, *, ^... 488

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

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

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

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

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

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

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

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

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

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

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

17TimeThis.h function returns reference pointer to same object { return *this; }

17TimeThis.h function returns reference pointer to same object { return *this; } Προαπαιτούµενη Κάθε οµάδα θα πρέπει να εµπλουτίσει το ίδιο πρόγραµµα, που έκανε την προηγούµενη φορά, προσθέτοντας στην κλάση του έναν ή περισσότερους υπερφορτωµένους τελεστές (όπως , ++, +,-,+=..)

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

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

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

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

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

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string 12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει

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

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

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

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

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

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

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

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Είδη καλουπωμάτων Μετατροπές και έλεγχοι τύπου Τελευταία ενημέρωση: Οκτώβριος 2013 Εισαγωγή - 2 Όπως και στη Java, στη C++

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

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

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

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Τι μάθαμε μέχρι τώρα Κάθε πρόγραμμα της c++ περιέχει υποχρεωτικά μια συνάρτηση main() η οποία είναι εκείνη που εκτελείται πρώτη. Κάθε

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

Τι είναι κλάση Κλάση

Τι είναι κλάση Κλάση 35 Τι είναι κλάση Κλάση είναι μια συλλογή από μεταβλητές. Αλλιώς είναι ένα σύνολο από: δεδομένα που δηλώνουν τα χαρακτηριστικά της κλάσης (τι είναι) και συναρτήσεις που προδιαγράφουν την συμπεριφορά της

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

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

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

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

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams CONSTRUCTORS DESTRUCTORS Η κλάση mystring class mystring private: char s[100]; public: char *GetString(); void SetString(char

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

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

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

ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης CreativeCommons.

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;.. Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

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

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

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

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

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Εισαγωγή στους δείκτες Το μοντέλο της μνήμης, σωρός και στοίβα Αναφορές Δείκτες και πίνακες Δέσμευση και αποδέσμευση μνήμης

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch; ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι είναι ; Συναρτήσεις Αυτόνομα τμήματα κώδικα (υποπρογράμματα) που πραγματοποιούν μια καθορισμένη εργασία. Χρήσιμες για περιπτώσεις που ο ίδιος υπολογισμός επαναλαμβάνεται πολλές φορές

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-1 ) 16η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υλοποίηση στοίβας ακεραίων με χρήση τάξεων, δυναμικής καταχώρισης μνήμης

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

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

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

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

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

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

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 3 η Είσοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

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

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης Εισαγωγή Στη C++ υπάρχει η δυνατότητα να δηλώσουμε μία συμβολοσειρά ως αντικείμενο, χρησιμοποιώντας τη βιβλιοθήκη . Επειδή οι συμβολοσειρές είναι

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

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

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

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

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

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

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

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 17η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προσθήκη ελέγχου ορίων σε πίνακες χρησιμοποιώντας σχεδιότυπα τάξεων

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

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)? Θέμα 1. Γράψτε τον κώδικα ενός header file που να περιέχει: 1) Ένα macro με όνομα divides που, αν του μεταβιβάσουμε δύο ακέραιους αριθμούς επιστρέφει 1 αν ο πρώτος αριθμός διαιρεί τον δεύτερο, αλλιώς,

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 7η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Τάξεις: δημόσια και ιδιωτικά μέλη, μέθοδοι inline. Αρχεία κεφαλίδων και

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

Προχωρημένα Θέματα ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ. Γεώργιος Παπαϊωάννου ( )

Προχωρημένα Θέματα ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ Γεώργιος Παπαϊωάννου (2015-16) gepap@aueb.gr Περιγραφή: Shared Pointers Νήματα Αποκλειστική πρόσβαση σε πόρους (Mutexes) Move assignment Ο τύπος «συνάρτηση» Lambda functions Τελευταία

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

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

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

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

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 3 η Διάλεξη C++ - Βασικοί τύποι δεδομένων Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ο τύπος int Ο τύπος δεδομένων τύπου int αναφέρεται στα ακέραια μεγέθη. Σταθερές, μεταβλητές, παραστάσεις και

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

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

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

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

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( ) ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

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

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

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

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

Συναρτήσεις (Functions) Εισαγωγή στη C++

Συναρτήσεις (Functions) Εισαγωγή στη C++ Συναρτήσεις (Functions) Εισαγωγή στη C++ 1 Δημιουργία συναρτήσεων Για κάθε συνάρτηση που θα δημιουργούμε θα πρέπει να ορίζουμε τα εξής: Τύπος επιστρεφόμενης τιμής Όνομα συνάρτησης Παράμετροι π.χ. int athrisma(int

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

Τελικό τεστ - απαντήσεις

Τελικό τεστ - απαντήσεις Τελικό τεστ - απαντήσεις Θεωρήστε το παρακάτω πρόγραμμα και απαντήστε στις ερωτήσεις που ακολουθούν. 1 class parent { 2 public: 3 int a; int b; 4 parent(int _a, int _b) {} 5 6 void f1(int x) { cout

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

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