SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
H ΓΛΩΣΣΑ C++
Μάθημα 4:
Κλάσεις και Αναφορές
Δημήτρης Ψούνης
Περιεχόμενα Μαθήματος
Α. Θεωρία
1. Αναφορές
1. Τι είναι αναφορά
2. Παράδειγμα χρήσης αναφοράς
3. ...και το πιο συνηθισμένο λάθος
2. Αναφορές και Συναρτήσεις
1. Διοχέτευση ορίσματος μέσω τιμής
(by value)
2. Διοχέτευση ορίσματος μέσω δείκτη
(by pointer)
3. Διοχέτευση ορίσματος μέσω
αναφοράς (by reference)
2Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
3. Κατασκευαστής αντιγράφου
1. Αντίγραφα Αντικειμένων
2. Ορισμός Κατασκευαστή Αντιγράφου
(copy constructor)
3. Κλήση όταν διοχετεύεται αντικείμενο σε
συνάρτηση μέσω τιμής
4. Επιστροφη αντικειμένου από
συνάρτηση μέσω τιμής
5. Δήλωση και αρχικοποίηση μέσω άλλου
αντικειμένου Ασκήσεις
Β. Ασκήσεις
A. Θεωρία
1. Αναφορές
1. Τι είναι αναφορά
3Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Οι αναφορές είναι ένα νέο στοιχείο της C++
• Η δήλωση μιας αναφοράς:
• Πρέπει να συνοδευεται από την μεταβλητή, της οποίας θα είναι συνώνυμο.
• Στην δήλωση, το & πρέπει να προηγείται του ονόματος της αναφοράς
• Παράδειγμα μιας αναφοράς ref στην ακέραια μεταβλητή x:
• Και πλέον όταν γράφουμε ref είναι σαν να γράφουμε x.
• Προσοχή!
• Η αναφορά δεν είναι ανεξάρτητη από τη μεταβλητή στην οποία αναφέρεται.
• Δεν έχει κάποια ανεξάρτητη διεύθυνση, κάτι που να μοιάζει με δείκτη, ή οτιδήποτε άλλο.
• Σχηματικά το απεικονίζουμε:
• Η αναφορά (reference) είναι ένα συνώνυμο (alias) μιας μεταβλητής.
int &ref = x;
• Κάποιοι προγραμματιστές προτιμούν να γράφουν την δήλωση ως: int& ref;
A. Θεωρία
1. Αναφορές
2. Παράδειγμα χρήσης αναφοράς
4Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Βλέπουμε και ένα απλό παράδειγμα επίδειξης της χρήσης της αναφοράς:
/* cpp4.reference.cpp Χρήση αναφοράς */
#include <iostream>
using namespace std;
int main()
{
int x = 3;
int &r = x;
cout<<"x="<<x<<" r="<<r<<endl;
x=4;
cout<<"x="<<x<<" r="<<r<<endl;
r=5;
cout<<"x="<<x<<" r="<<r<<endl;
return 0;
}
A. Θεωρία
1. Αναφορές
3. ...και το πιο συνηθισμένο λάθος!
5Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• O ακόλουθος κώδικας δεν κάνει αυτό που θέλει ο προγραμματιστής (βλ. σχόλια):
• Προσοχή: Η αναφορά σχετίζεται αποκλειστικά με την μεταβλητή για την οποία δηλώθηκε
αρχικά.
/* cpp4.reference_mistake.cpp Συνηθισμένο λάθος στις αναφορές */
#include <iostream>
using namespace std;
int main()
{
int x = 3, y=4;
int &r = x;
cout<<"r="<<r<<endl;
r=y; // Προσπαθεί να αλλάξει την αναφορά σε άλλη μεταβλητή
cout<<"x="<<x<<endl; // Άλλαξε όμως το x
return 0;
}
A. Θεωρία
2. Αναφορές και Συναρτήσεις
1. Διοχέτευση ορίσματος μέσω τιμής (by value)
6Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Να κάνουμε μία κλάσική υπενθύμιση από τη C, για τον τρόπο που διοχετεύουμε ορίσματα σε
συναρτήσεις:
• O 1ος τρόπος είναι μέσω τιμής, όπου ξέρουμε ότι οι αλλαγές που γίνονται στη συνάρτηση, δεν
διατηρούνται έξω από αυτήν:
• H έξοδος είναι:
• Πολύ αναλυτική εξήγηση στο παράδειγμα, στο «Γλώσσα C: Μάθημα 8: Δείκτες»
/*cpp4.byvalue.cpp: Πέρασμα ορίσματος μέσω
τιμής */
#include <iostream>
using namespace std;
void change(int vA);
int main()
{
int a=1;
cout<<"main: a="<<a<<endl;
change(a);
cout<<"main: a="<<a<<endl;
return 0;
}
void change(int vA)
{
vA=2;
cout<<"change: vA="<<vA<<endl;
}
A. Θεωρία
2. Αναφορές και Συναρτήσεις
2. Διοχέτευση ορίσματος μέσω δείκτη (by pointer)
7Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• O 2ος τρόπος είναι μέσω δείκτη, όπου ξέρουμε ότι οι αλλαγές που γίνονται στη συνάρτηση,
διατηρούνται έξω από αυτήν:
• H έξοδος είναι:
/*cpp4.bypointer.cpp: Πέρασμα ορίσματος μέσω
δείκτη */
#include <iostream>
using namespace std;
void change(int *pA);
int main()
{
int a=1;
cout<<"main: a="<<a<<endl;
change(&a);
cout<<"main: a="<<a<<endl;
return 0;
}
void change(int *pA)
{
*pA=2;
cout<<"change: *pA="<<*pA<<endl;
}
• Στη C ο τρόπος αναφέρεται και «by reference», αλλά στη C++ αναφέρεται «by pointer»
A. Θεωρία
2. Αναφορές και Συναρτήσεις
3. Διοχέτευση ορίσματος μέσω αναφοράς (by reference)
8Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• O 3ος τρόπος είναι μέσω αναφοράς (νέος τρόπος)
• Ο ορισμός της συνάρτησης έχει αναφορά:
• Παρατηρήσεις:
• Διοχετεύοντας αναφορά, δεν δημιουργείται αντίγραφο του ορίσματος, άρα με έμμεσο
τρόπο διοχετεύεται η ίδια η μεταβλητή.
• Συνεπώς οι αλλαγές που γίνονται σε αυτήν διατηρούνται και εκτός της συνάρτησης.
• Μέσα στη συνάρτηση, η χρηση της μεταβλητής είναι πιο «εύκολη» από την διαχείριση
που κάνουμε όταν διοχετεύουμε το όρισμα μέσω δείκτη.
void change(int &rA)
{
rA=2;
cout<<"change: rA="<<rA<<endl;
}
A. Θεωρία
2. Αναφορές και Συναρτήσεις
3. Διοχέτευση ορίσματος μέσω αναφοράς (by reference)
9Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Ολοκληρωμένο το πρόγραμμα είναι:
• Οι αναφορές λοιπόν κάνουν πιο εύκολη τη ζωή μας σε σχέση με τη διαχείριση δεικτών:
• Ένας καλός κανόνας είναι
• «Χρησιμοποίησε αναφορές όποτε μπορείς και δείκτες όποτε πρέπει» ©
/*cpp4.byreference.cpp: Πέρασμα ορίσματος μέσω
αναφοράς */
#include <iostream>
using namespace std;
void change(int &rA);
int main()
{
int a=1;
cout<<"main: a="<<a<<endl;
change(a);
cout<<"main: a="<<a<<endl;
return 0;
}
void change(int &rA)
{
rA=2;
cout<<"change: rA="<<rA<<endl;
}
© www.geeksforgeeks.org
A. Θεωρία
3. Κατασκευαστής αντιγράφου
1. Αντίγραφα Αντικειμένων
10Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Όταν διοχετεύουμε σε συνάρτηση όρισμα το οποίο είναι αντικείμενο, μέσω τιμής:
• Δημιουργείται αντίγραφο του αντικειμένου (όπως γίνεται και με τις απλές μεταβλητές)
• Βλέπουμε ένα παράδειγμα:
/*cpp4.copy_arg_by_value.c
pp: Δημιουργία αντιγράφου
όταν αντικείμενο
διοχετεύεται ως όρισμα */
#include <iostream>
using namespace std;
class dummy {
public:
dummy();
~dummy();
int x;
};
void f(dummy ob);
int main()
{
dummy d;
// καλείται ο constructor
f(d);
return 0;
}
dummy::dummy()
{
cout<<"Constructing..."<<endl;
}
dummy::~dummy()
{
cout<<"Destructing..."<<endl;
}
void f(dummy ob)
{
// το όρισμα είναι αντίγραφο
// καταστρέφεται το αντίγραφο
}
A. Θεωρία
3. Κατασκευαστής αντιγράφου
1. Αντίγραφα Αντικειμένων
11Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Εκτελώντας το πρόγραμμα έχουμε την εκτύπωση:
• Εξήγηση:
• Main:
• Δήλωση του αντικειμένου d (καλείται ο constructor).
• Κλήση f(d):
• Δημιουργείται αντίγραφο bit by bit (δεν καλείται constructor), αφού το όρισμα είναι
μέσω τιμής.
• Με την ολοκλήρωση της συνάρτησης, καταστρέφεται το αντίγραφo
• Συνέχεια της main
• Καταστρέφεται το αντικείμενο d
Αντίστοιχες καταστάσεις μπορεί να συμβούν π.χ. όταν:
• Επιστρέφουμε ένα αντικείμενο σε μία συνάρτηση μέσω τιμής (όχι δείκτη ή αναφορά)
Για τις περιπτώσεις αυτές (και άλλες), η C++ ορίζει μια προγραμματιστική ευκολία:
• Τον κατασκευαστή αντιγράφων (copy constructor)
A. Θεωρία
3. Κατασκευαστής αντιγράφου
2. Ορισμός Κατασκευαστή Αντιγράφου (copy constructor)
12Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Για την αποφυγή παρόμοιων προβλημάτων,
• Μπορούμε να ορίσουμε έναν ειδικό κατασκευαστή, τον κατασκευαστή αντιγράφου.
• Η δήλωση του κατασκευαστή αντιγράφου γίνεται ως εξής:
• Τον καλεί το νέο αντικείμενο (αντίγραφό) που κατασκευάζεται
• Το όρισμα που δέχεται είναι το αντικείμενο μέσω του οποίου αρχικοποιείται.
• Θα δούμε αναλυτικά τις τρεις περιπτώσεις
• Ο κατασκευαστής αντιγράφου καλείται αυτόματα όταν:
1. Διοχετεύουμε ως όρισμα μέσω τιμής (by value) ένα αντικείμενο
2. Επιστρέφουμε μέσω τιμής (by value) ένα αντικείμενο
3. Γίνεται δήλωση και αρχικοποίηση ενός αντικειμένου, μέσω ενός άλλου αντικειμένου
class_name(const class_name &ob)
A. Θεωρία
3. Κατασκευαστής αντιγράφου
3. Κλήση όταν διοχετεύεται αντικείμενο σε συνάρτηση μέσω τιμής
13Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
Περίπτωση 1: Διοχέτευση αντικειμένου σε συνάρτηση μέσω τιμής
• Στο ακόλουθο παράδειγμα
• Κατασκευάζουμε τον copy constructor στην κλάση
• Βλέπουμε τι γίνεται όταν διοχετεύουμε αντικείμενο της κλάσης μέσω τιμής.
/*cpp4.copy_constructor_arg_by_value.cpp: Copy Constructor: Όρισμα μέσω τιμής */
#include <iostream>
using namespace std;
class dummy {
public:
dummy();
dummy(const dummy &ob);
~dummy();
int x;
};
void f(dummy arg);
A. Θεωρία
3. Κατασκευαστής αντιγράφου
3. Κλήση όταν διοχετεύεται αντικείμενο σε συνάρτηση μέσω τιμής
14Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
int main()
{
dummy d;
cout<<"Main: Before calling f"<<endl;
f(d);
cout<<"Main: After calling f"<<endl;
return 0;
}
dummy::dummy()
{
cout<<"Constructing..."<<endl;
x=0;
}
dummy::dummy(const dummy &ob)
{
cout<<"Copy constructor..."<<endl;
x=ob.x;
}
dummy::~dummy()
{
cout<<"Destructing…"<<endl;
}
void f(dummy arg)
{
cout<<"In function..."<<endl;
}
A. Θεωρία
3. Κατασκευαστής αντιγράφου
3. Κλήση όταν διοχετεύεται αντικείμενο σε συνάρτηση μέσω τιμής
15Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Το πρόγραμμα εκτυπώνει:
• Στην main:
• Κατασκευάζεται το αντικείμενο x
• Καλείται η συνάρτηση f
• Κατασκευάζεται το αντίγραφο μέσω του copy constructor
• καλείται από το αντίγραφο (ob) με όρισμα το αντικείμενο (x)
• Σαν να τρέχει η εντολή οb(x)
• Διοχετεύεται ως όρισμα
• Ολοκληρώνεται η εκτέλεση της συνάρτησης
• Καταστρέφεται το αντίγραφο
• Ολοκληρώνεται η main
• Καταστρέφεται το αντικείμενο x
A. Θεωρία
3. Κατασκευαστής αντιγράφου
4. Επιστροφη αντικειμένου από συνάρτηση μέσω τιμής
16Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
Περίπτωση 2: Επιστροφή αντικειμένου από συνάρτηση μέσω τιμής
• Στο ακόλουθο παράδειγμα
• Κατασκευάζουμε τον copy constructor στην κλάση
• Βλέπουμε τι γίνεται όταν επιστρέφουμε αντικείμενο της κλάσης μέσω τιμής.
/*cpp4.copy_constructor_return_ob.cpp: Copy Constructor: Επιστροφή αντικειμένου */
#include <iostream>
using namespace std;
class dummy {
public:
dummy();
dummy(const dummy &ob);
~dummy();
int x;
};
dummy f();
A. Θεωρία
3. Κατασκευαστής αντιγράφου
4. Επιστροφη αντικειμένου από συνάρτηση μέσω τιμής
17Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
int main()
{
cout<<"Main: Before calling f"<<endl;
f();
cout<<"Main: After calling f"<<endl;
return 0;
}
dummy::dummy()
{
cout<<"Constructing..."<<endl;
x=0;
}
dummy::dummy(const dummy &ob)
{
cout<<"Copy constructor..."<<endl;
x=ob.x;
}
dummy::~dummy()
{
cout<<"Destructing..."<<endl;
}
dummy f()
{
dummy ob;
cout<<"In function..."<<endl;
return ob;
}
A. Θεωρία
3. Κατασκευαστής αντιγράφου
4. Επιστροφη αντικειμένου από συνάρτηση μέσω τιμής
18Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Το πρόγραμμα εκτυπώνει:
• Δεν βλέπουμε τον copy constructor!
• Ωστόσο σε άλλο μεταγλωττιστή είναι δυνατόν να δούμε κλήση copy constructor στην
περίπτωση αυτή.
• Μετά την κλήση της συνάρτησης, θα βλέπαμε την κατασκευή ενός προσωρινού
αντικειμένου το οποίο θα ήταν το αποτέλεσμα της κλήσης της συνάρτησης.
Ο onlineGDB έχει υλοποιήσει μία βελτιστοποίηση ειδικά για την περίπτωση αυτή (αναφέρεται ως: return value
optimization)
• και δεν κατασκευάζει αντίγραφο.
• Ωστόσο σε άλλους μεταγλωττιστές ενδέχεται αυτή η βελτιστοποίηση να μην έχει υλοποιηθεί.
A. Θεωρία
3. Κατασκευαστής αντιγράφου
5. Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου
19Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
Περίπτωση 3: Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου
• Στο ακόλουθο παράδειγμα
• Κατασκευάζουμε τον copy constructor στην κλάση
• Βλέπουμε τι γίνεται όταν δηλώνουμε ένα αντικείμενο και το αρχικοποιούμε μέσω άλλου
αντικειμένου.
/*cpp4.copy_constructor_object_declaration.cpp: Δήλωση αντικειμένου μέσω άλλου αντικειμένου */
#include <iostream>
using namespace std;
class dummy {
public:
dummy();
dummy(const dummy &ob);
~dummy();
int x;
};
A. Θεωρία
3. Κατασκευαστής αντιγράφου
5. Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου
20Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
int main()
{
dummy ob1;
dummy ob2 = ob1; // dummy ob2(ob1);
return 0;
}
dummy::dummy()
{
cout<<"Constructing..."<<endl;
x=0;
}
dummy::dummy(const dummy &ob)
{
cout<<"Copy constructor..."<<endl;
x=ob.x;
}
dummy::~dummy()
{
cout<<"Destructing..."<<endl;
}
A. Θεωρία
3. Κατασκευαστής αντιγράφου
5. Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου
21Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Το πρόγραμμα εκτυπώνει:
• Στην main:
• Κατασκευάζεται το αντικείμενο ob1
• Η δήλωση dummy ob2 = ob1 καλεί τον copy constructor
• καλείται από το ob2 με όρισμα το ob1
• είναι ισοδύναμο με τη δήλωση:
• Καταστρέφονται τα δύο αντικείμενα.
dummy ob2(ob1);
ΠΡΟΣΟΧΗ: Τα παρακάτω είναι διαφορετικά πράγματα:
• dummy ob2 = ob1; (δήλωση και αρχικοποίηση, καλείται ο copy constructor)
• ob2 = ob1; (ανάθεση, θα αντιμετωπιστεί με υπερφόρτωση του =)
A. Θεωρία
3. Κατασκευαστής αντιγράφου
6. Παρατηρήσεις
22Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
• Ο copy constructor είναι μία ευκολία.
• Χρειάζεται πάντα να τον ορίζούμε;
• ΌΧΙ, αν η κλάση μας είναι πολύ απλή, δεν χρειάζεται copy constructor
• σκεφτόμαστε ότι η bit by bit αντιγραφή δεν θα δημιουργήσει προβλήματα.
• Αν όμως κάνουμε στην κλάση δυναμική διαχείριση μνήμης
• π.χ. έχουμε έναν δείκτη που δεσμεύει δυναμικά μνήμη για έναν πίνακα
• τότε ο copy constructor είναι ΑΠΑΡΑΙΤΗΤΟΣ.
• Γιατί είναι το όρισμα const;
• Με το const ορίζουμε ότι δεν πρέπει να πειραχτεί το αρχικό αντικείμενο
• Πράγματι, η δουλειά του copy constructor είναι μόνο να πάρει πληροφορίες από το
αντικείμενο που αντιγράφεται και όχι να το πειράξει.
Β. Ασκήσεις
Άσκηση 1: Συνάρτηση swap
23Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
Υλοποιήστε τη συνάρτηση swap ώστε να δέχεται δύο ορίσματα και να ανταλλάσσει τις τιμές τους.
• Οι τιμές μπορούν να είναι:
• int,
• double,
• αντικείμενα της κλάσης σημείο (βλ. μάθημα 2 «Εισαγωγή στις κλάσεις», άσκηση 2)
Β. Ασκήσεις
Άσκηση 2: Επέκταση της κλάσης ARRAY
24Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
Επεκτείνετε την κλάση ARRAY της άσκησης 2 του «Μάθημα 3: Κλάσεις και Δείκτες» με
κατασκευαστή αντιγράφου.
Β. Ασκήσεις
Άσκηση 3: Κλάση STRING
25Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές
Κατασκευάστε μία κλάση (STRING) που να περιτυλίσσει την έννοια της συμβολοσειράς ως εξής:
• Να έχει ως μέλη έναν δυναμικό πίνακα (δείκτης) χαρακτήρων, καθώς και τη διάσταση του
πίνακα
• Να έχει κατασκευαστές:
• Default
• Μόνο με τη συμβολοσειρά (να γίνεται δυναμική δέσμευση μνήμης όση και το μήκος της
συμβολοσειράς εισόδου)
• Αντιγράφου
• Ο καταστροφέας να διαγράφει τη μνήμη που έχει δεσμευτεί δυναμικά.
• Getter: Για τη συμβολοσειρά και το μήκος
• Setter: Μόνο για τη συμβολοσειρά
Η συνάρτηση main
• Να κατασκευάζει μία συμβολοσειρά str1, που αρχικοποιείται ως «This is a string»
• Να την αντιγράφει στη συμβολοσειρά str2 μέσω του copy constructor.
• Να αλλάζει την str1 σε «This is a new string»
• Να τυπώνει τις δύο συμβολοσειρές

Mais conteúdo relacionado

Mais procurados

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥDimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣDimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣDimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 Dimitris Psounis
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝDimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Dimitris Psounis
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Dimitris Psounis
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑDimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ Dimitris Psounis
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑDimitris Psounis
 

Mais procurados (20)

Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 15 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 9
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 7 - ΠΙΝΑΚΕΣ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 5 - ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18 ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 18
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6 ΠΛΗ10 ΜΑΘΗΜΑ 2.6
ΠΛΗ10 ΜΑΘΗΜΑ 2.6
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝΗ ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 14 - ΕΜΒΕΛΕΙΑ ΜΕΤΑΒΛΗΤΩΝ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 12
 
Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2Η Γλώσσα C - Μάθημα 2
Η Γλώσσα C - Μάθημα 2
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5ΠΛΗ10 ΜΑΘΗΜΑ 2.5
ΠΛΗ10 ΜΑΘΗΜΑ 2.5
 
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 17 - ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 2
 
ΠΛΗ10 ΜΑΘΗΜΑ 1.4
ΠΛΗ10 ΜΑΘΗΜΑ 1.4ΠΛΗ10 ΜΑΘΗΜΑ 1.4
ΠΛΗ10 ΜΑΘΗΜΑ 1.4
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 3
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 2 - ΑΝΑΖΗΤΗΣΗ ΣΤΟΙΧΕΙΟΥ ΣΕ ΠΙΝΑΚΑ
 
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
Η ΓΛΩΣΣΑ C - ΜΑΘΗΜΑ 16 - ΣΥΝΑΡΤΗΣΕΙΣ ΕΞΟΔΟΥ (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8ΠΛΗ10 ΜΑΘΗΜΑ 2.8
ΠΛΗ10 ΜΑΘΗΜΑ 2.8
 
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
ΑΛΓΟΡΙΘΜΟΙ ΣΕ C - ΜΑΘΗΜΑ 1 - ΔΙΑΠΕΡΑΣΗ ΠΙΝΑΚΑ
 
Python - Ασκήσεις Δομές Επιλογής
Python - Ασκήσεις Δομές ΕπιλογήςPython - Ασκήσεις Δομές Επιλογής
Python - Ασκήσεις Δομές Επιλογής
 

Semelhante a Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ

Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseismnikol
 
Aepp kef101
Aepp kef101Aepp kef101
Aepp kef101mnikol
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationISSEL
 
Python. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικαPython. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικαΙωάννου Γιαννάκης
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΙωάννου Γιαννάκης
 
κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2evaplyta
 
ΑΕΠΠ: 19ο Φύλλο Ασκήσεων
ΑΕΠΠ: 19ο Φύλλο ΑσκήσεωνΑΕΠΠ: 19ο Φύλλο Ασκήσεων
ΑΕΠΠ: 19ο Φύλλο ΑσκήσεωνNikos Michailidis
 
5.1 python γενικά - υπολογισμοί & μεταβλητές
5.1 python γενικά - υπολογισμοί & μεταβλητές5.1 python γενικά - υπολογισμοί & μεταβλητές
5.1 python γενικά - υπολογισμοί & μεταβλητέςPanagiotis Mastrapas
 
Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointersjtsagata
 

Semelhante a Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (16)

Kef10 a synartiseis
Kef10 a synartiseisKef10 a synartiseis
Kef10 a synartiseis
 
Python. 1 2 δομή ακολουθίας
Python. 1 2 δομή ακολουθίαςPython. 1 2 δομή ακολουθίας
Python. 1 2 δομή ακολουθίας
 
Aepp kef101
Aepp kef101Aepp kef101
Aepp kef101
 
Κεφ. 10 Υποπρογράμματα
Κεφ. 10 ΥποπρογράμματαΚεφ. 10 Υποπρογράμματα
Κεφ. 10 Υποπρογράμματα
 
Stelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentationStelios poulakakis daktylidis diploma thesis presentation
Stelios poulakakis daktylidis diploma thesis presentation
 
Python. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικαPython. 1 1 σχεδίαση και συγγραφή κώδικα
Python. 1 1 σχεδίαση και συγγραφή κώδικα
 
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες ΑλγορίθμωνΚεφ. 2 Βασικές Έννοιες Αλγορίθμων
Κεφ. 2 Βασικές Έννοιες Αλγορίθμων
 
Python Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσειςPython Κεφ. 1.5 συναρτήσεις
Python Κεφ. 1.5 συναρτήσεις
 
Υπηρεσία Ανίχνευσης Λογοκλοπής - Turnitin
Υπηρεσία Ανίχνευσης Λογοκλοπής - TurnitinΥπηρεσία Ανίχνευσης Λογοκλοπής - Turnitin
Υπηρεσία Ανίχνευσης Λογοκλοπής - Turnitin
 
κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2κεφάλαιο 02 anaptixi-2
κεφάλαιο 02 anaptixi-2
 
Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3
Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3
Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3
 
ΑΕΠΠ: 19ο Φύλλο Ασκήσεων
ΑΕΠΠ: 19ο Φύλλο ΑσκήσεωνΑΕΠΠ: 19ο Φύλλο Ασκήσεων
ΑΕΠΠ: 19ο Φύλλο Ασκήσεων
 
5.1 python γενικά - υπολογισμοί & μεταβλητές
5.1 python γενικά - υπολογισμοί & μεταβλητές5.1 python γενικά - υπολογισμοί & μεταβλητές
5.1 python γενικά - υπολογισμοί & μεταβλητές
 
Parousiash
ParousiashParousiash
Parousiash
 
Advanced Notes on Pointers
Advanced Notes on PointersAdvanced Notes on Pointers
Advanced Notes on Pointers
 
Make tutorial
Make tutorialMake tutorial
Make tutorial
 

Mais de Dimitris Psounis

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Dimitris Psounis
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)Dimitris Psounis
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Dimitris Psounis
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6Dimitris Psounis
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 Dimitris Psounis
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)Dimitris Psounis
 

Mais de Dimitris Psounis (20)

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ (4διαφ)
 
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 3 - ΚΛΑΣΕΙΣ ΚΑΙ ΔΕΙΚΤΕΣ (4δ)
 
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 2 - ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΚΛΑΣΕΙΣ (4 διαφ)
 
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
C++ - ΜΑΘΗΜΑ 1 - ΕΙΣΑΓΩΓΗ ΚΑΙ ΣΧΕΣΗ ΜΕ ΤΗ C (4sl/p)
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 6
 
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
ΠΛΗ20 ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ 5
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.2
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
ΠΛΗ10 ΚΑΡΤΕΣ ΜΑΘΗΜΑΤΟΣ 2.1
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8 (ΕΚΤΥΠΩΣΗ)
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 8
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 7 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33ΠΛΗ31 - ΤΕΣΤ 33
ΠΛΗ31 - ΤΕΣΤ 33
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6
 
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΣΕ C - ΜΑΘΗΜΑ 6 (ΕΚΤΥΠΩΣΗ)
 
ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32ΠΛΗ31 ΤΕΣΤ 32
ΠΛΗ31 ΤΕΣΤ 32
 
ΠΛΗ31 ΤΕΣΤ 31
ΠΛΗ31 ΤΕΣΤ 31ΠΛΗ31 ΤΕΣΤ 31
ΠΛΗ31 ΤΕΣΤ 31
 
ΠΛΗ31 ΤΕΣΤ 30
ΠΛΗ31 ΤΕΣΤ 30ΠΛΗ31 ΤΕΣΤ 30
ΠΛΗ31 ΤΕΣΤ 30
 

Último

Μαθητικές καταλήψεις
Μαθητικές                                  καταλήψειςΜαθητικές                                  καταλήψεις
Μαθητικές καταλήψειςDimitra Mylonaki
 
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηΣουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηTheodora Chandrinou
 
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξηΟΛΓΑ ΤΣΕΧΕΛΙΔΟΥ
 
Μαθητικά συμβούλια .
Μαθητικά συμβούλια                                  .Μαθητικά συμβούλια                                  .
Μαθητικά συμβούλια .Dimitra Mylonaki
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο Χρύσα Παπακωνσταντίνου
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2οΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2οΧρύσα Παπακωνσταντίνου
 
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptxAthina Tziaki
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΗ ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΘεόδωρος Μαραγκούλας
 

Último (10)

Μαθητικές καταλήψεις
Μαθητικές                                  καταλήψειςΜαθητικές                                  καταλήψεις
Μαθητικές καταλήψεις
 
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνηΣουρεαλιστικά ταξίδια μέσα από την τέχνη
Σουρεαλιστικά ταξίδια μέσα από την τέχνη
 
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ  : ΕΠΑΝΑΛΗΨΗ 2024ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ  : ΕΠΑΝΑΛΗΨΗ 2024
ΙΣΤΟΡΙΑ Α΄ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΨΗ 2024
 
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη-Διψήφιοι  αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
-Διψήφιοι αριθμοί-δεκαδες μονάδες-θέση ψηφίου Α- Β τάξη
 
Μαθητικά συμβούλια .
Μαθητικά συμβούλια                                  .Μαθητικά συμβούλια                                  .
Μαθητικά συμβούλια .
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ  ΜΕΡΟΣ 1ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 1ο
 
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2οΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
ΙΣΤΟΡΙΑ Α' ΓΥΜΝΑΣΙΟΥ : ΕΠΑΝΑΛΗΠΤΙΚΕΣ ΑΣΚΗΣΕΙΣ ΜΕΡΟΣ 2ο
 
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
5ο Κεφάλαιο - Το Λογισμικό του Υπολογιστή.pptx
 
Σεβασμός .
Σεβασμός                                   .Σεβασμός                                   .
Σεβασμός .
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣΗ ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ 2008 ΓΙΑ ΕΚΠΑΙΔΕΥΤΙΚΟΥΣ
 

Η ΓΛΩΣΣΑ C++ - ΜΑΘΗΜΑ 4 - ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΑΦΟΡΕΣ

  • 1. H ΓΛΩΣΣΑ C++ Μάθημα 4: Κλάσεις και Αναφορές Δημήτρης Ψούνης
  • 2. Περιεχόμενα Μαθήματος Α. Θεωρία 1. Αναφορές 1. Τι είναι αναφορά 2. Παράδειγμα χρήσης αναφοράς 3. ...και το πιο συνηθισμένο λάθος 2. Αναφορές και Συναρτήσεις 1. Διοχέτευση ορίσματος μέσω τιμής (by value) 2. Διοχέτευση ορίσματος μέσω δείκτη (by pointer) 3. Διοχέτευση ορίσματος μέσω αναφοράς (by reference) 2Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές 3. Κατασκευαστής αντιγράφου 1. Αντίγραφα Αντικειμένων 2. Ορισμός Κατασκευαστή Αντιγράφου (copy constructor) 3. Κλήση όταν διοχετεύεται αντικείμενο σε συνάρτηση μέσω τιμής 4. Επιστροφη αντικειμένου από συνάρτηση μέσω τιμής 5. Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου Ασκήσεις Β. Ασκήσεις
  • 3. A. Θεωρία 1. Αναφορές 1. Τι είναι αναφορά 3Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Οι αναφορές είναι ένα νέο στοιχείο της C++ • Η δήλωση μιας αναφοράς: • Πρέπει να συνοδευεται από την μεταβλητή, της οποίας θα είναι συνώνυμο. • Στην δήλωση, το & πρέπει να προηγείται του ονόματος της αναφοράς • Παράδειγμα μιας αναφοράς ref στην ακέραια μεταβλητή x: • Και πλέον όταν γράφουμε ref είναι σαν να γράφουμε x. • Προσοχή! • Η αναφορά δεν είναι ανεξάρτητη από τη μεταβλητή στην οποία αναφέρεται. • Δεν έχει κάποια ανεξάρτητη διεύθυνση, κάτι που να μοιάζει με δείκτη, ή οτιδήποτε άλλο. • Σχηματικά το απεικονίζουμε: • Η αναφορά (reference) είναι ένα συνώνυμο (alias) μιας μεταβλητής. int &ref = x; • Κάποιοι προγραμματιστές προτιμούν να γράφουν την δήλωση ως: int& ref;
  • 4. A. Θεωρία 1. Αναφορές 2. Παράδειγμα χρήσης αναφοράς 4Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Βλέπουμε και ένα απλό παράδειγμα επίδειξης της χρήσης της αναφοράς: /* cpp4.reference.cpp Χρήση αναφοράς */ #include <iostream> using namespace std; int main() { int x = 3; int &r = x; cout<<"x="<<x<<" r="<<r<<endl; x=4; cout<<"x="<<x<<" r="<<r<<endl; r=5; cout<<"x="<<x<<" r="<<r<<endl; return 0; }
  • 5. A. Θεωρία 1. Αναφορές 3. ...και το πιο συνηθισμένο λάθος! 5Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • O ακόλουθος κώδικας δεν κάνει αυτό που θέλει ο προγραμματιστής (βλ. σχόλια): • Προσοχή: Η αναφορά σχετίζεται αποκλειστικά με την μεταβλητή για την οποία δηλώθηκε αρχικά. /* cpp4.reference_mistake.cpp Συνηθισμένο λάθος στις αναφορές */ #include <iostream> using namespace std; int main() { int x = 3, y=4; int &r = x; cout<<"r="<<r<<endl; r=y; // Προσπαθεί να αλλάξει την αναφορά σε άλλη μεταβλητή cout<<"x="<<x<<endl; // Άλλαξε όμως το x return 0; }
  • 6. A. Θεωρία 2. Αναφορές και Συναρτήσεις 1. Διοχέτευση ορίσματος μέσω τιμής (by value) 6Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Να κάνουμε μία κλάσική υπενθύμιση από τη C, για τον τρόπο που διοχετεύουμε ορίσματα σε συναρτήσεις: • O 1ος τρόπος είναι μέσω τιμής, όπου ξέρουμε ότι οι αλλαγές που γίνονται στη συνάρτηση, δεν διατηρούνται έξω από αυτήν: • H έξοδος είναι: • Πολύ αναλυτική εξήγηση στο παράδειγμα, στο «Γλώσσα C: Μάθημα 8: Δείκτες» /*cpp4.byvalue.cpp: Πέρασμα ορίσματος μέσω τιμής */ #include <iostream> using namespace std; void change(int vA); int main() { int a=1; cout<<"main: a="<<a<<endl; change(a); cout<<"main: a="<<a<<endl; return 0; } void change(int vA) { vA=2; cout<<"change: vA="<<vA<<endl; }
  • 7. A. Θεωρία 2. Αναφορές και Συναρτήσεις 2. Διοχέτευση ορίσματος μέσω δείκτη (by pointer) 7Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • O 2ος τρόπος είναι μέσω δείκτη, όπου ξέρουμε ότι οι αλλαγές που γίνονται στη συνάρτηση, διατηρούνται έξω από αυτήν: • H έξοδος είναι: /*cpp4.bypointer.cpp: Πέρασμα ορίσματος μέσω δείκτη */ #include <iostream> using namespace std; void change(int *pA); int main() { int a=1; cout<<"main: a="<<a<<endl; change(&a); cout<<"main: a="<<a<<endl; return 0; } void change(int *pA) { *pA=2; cout<<"change: *pA="<<*pA<<endl; } • Στη C ο τρόπος αναφέρεται και «by reference», αλλά στη C++ αναφέρεται «by pointer»
  • 8. A. Θεωρία 2. Αναφορές και Συναρτήσεις 3. Διοχέτευση ορίσματος μέσω αναφοράς (by reference) 8Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • O 3ος τρόπος είναι μέσω αναφοράς (νέος τρόπος) • Ο ορισμός της συνάρτησης έχει αναφορά: • Παρατηρήσεις: • Διοχετεύοντας αναφορά, δεν δημιουργείται αντίγραφο του ορίσματος, άρα με έμμεσο τρόπο διοχετεύεται η ίδια η μεταβλητή. • Συνεπώς οι αλλαγές που γίνονται σε αυτήν διατηρούνται και εκτός της συνάρτησης. • Μέσα στη συνάρτηση, η χρηση της μεταβλητής είναι πιο «εύκολη» από την διαχείριση που κάνουμε όταν διοχετεύουμε το όρισμα μέσω δείκτη. void change(int &rA) { rA=2; cout<<"change: rA="<<rA<<endl; }
  • 9. A. Θεωρία 2. Αναφορές και Συναρτήσεις 3. Διοχέτευση ορίσματος μέσω αναφοράς (by reference) 9Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Ολοκληρωμένο το πρόγραμμα είναι: • Οι αναφορές λοιπόν κάνουν πιο εύκολη τη ζωή μας σε σχέση με τη διαχείριση δεικτών: • Ένας καλός κανόνας είναι • «Χρησιμοποίησε αναφορές όποτε μπορείς και δείκτες όποτε πρέπει» © /*cpp4.byreference.cpp: Πέρασμα ορίσματος μέσω αναφοράς */ #include <iostream> using namespace std; void change(int &rA); int main() { int a=1; cout<<"main: a="<<a<<endl; change(a); cout<<"main: a="<<a<<endl; return 0; } void change(int &rA) { rA=2; cout<<"change: rA="<<rA<<endl; } © www.geeksforgeeks.org
  • 10. A. Θεωρία 3. Κατασκευαστής αντιγράφου 1. Αντίγραφα Αντικειμένων 10Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Όταν διοχετεύουμε σε συνάρτηση όρισμα το οποίο είναι αντικείμενο, μέσω τιμής: • Δημιουργείται αντίγραφο του αντικειμένου (όπως γίνεται και με τις απλές μεταβλητές) • Βλέπουμε ένα παράδειγμα: /*cpp4.copy_arg_by_value.c pp: Δημιουργία αντιγράφου όταν αντικείμενο διοχετεύεται ως όρισμα */ #include <iostream> using namespace std; class dummy { public: dummy(); ~dummy(); int x; }; void f(dummy ob); int main() { dummy d; // καλείται ο constructor f(d); return 0; } dummy::dummy() { cout<<"Constructing..."<<endl; } dummy::~dummy() { cout<<"Destructing..."<<endl; } void f(dummy ob) { // το όρισμα είναι αντίγραφο // καταστρέφεται το αντίγραφο }
  • 11. A. Θεωρία 3. Κατασκευαστής αντιγράφου 1. Αντίγραφα Αντικειμένων 11Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Εκτελώντας το πρόγραμμα έχουμε την εκτύπωση: • Εξήγηση: • Main: • Δήλωση του αντικειμένου d (καλείται ο constructor). • Κλήση f(d): • Δημιουργείται αντίγραφο bit by bit (δεν καλείται constructor), αφού το όρισμα είναι μέσω τιμής. • Με την ολοκλήρωση της συνάρτησης, καταστρέφεται το αντίγραφo • Συνέχεια της main • Καταστρέφεται το αντικείμενο d Αντίστοιχες καταστάσεις μπορεί να συμβούν π.χ. όταν: • Επιστρέφουμε ένα αντικείμενο σε μία συνάρτηση μέσω τιμής (όχι δείκτη ή αναφορά) Για τις περιπτώσεις αυτές (και άλλες), η C++ ορίζει μια προγραμματιστική ευκολία: • Τον κατασκευαστή αντιγράφων (copy constructor)
  • 12. A. Θεωρία 3. Κατασκευαστής αντιγράφου 2. Ορισμός Κατασκευαστή Αντιγράφου (copy constructor) 12Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Για την αποφυγή παρόμοιων προβλημάτων, • Μπορούμε να ορίσουμε έναν ειδικό κατασκευαστή, τον κατασκευαστή αντιγράφου. • Η δήλωση του κατασκευαστή αντιγράφου γίνεται ως εξής: • Τον καλεί το νέο αντικείμενο (αντίγραφό) που κατασκευάζεται • Το όρισμα που δέχεται είναι το αντικείμενο μέσω του οποίου αρχικοποιείται. • Θα δούμε αναλυτικά τις τρεις περιπτώσεις • Ο κατασκευαστής αντιγράφου καλείται αυτόματα όταν: 1. Διοχετεύουμε ως όρισμα μέσω τιμής (by value) ένα αντικείμενο 2. Επιστρέφουμε μέσω τιμής (by value) ένα αντικείμενο 3. Γίνεται δήλωση και αρχικοποίηση ενός αντικειμένου, μέσω ενός άλλου αντικειμένου class_name(const class_name &ob)
  • 13. A. Θεωρία 3. Κατασκευαστής αντιγράφου 3. Κλήση όταν διοχετεύεται αντικείμενο σε συνάρτηση μέσω τιμής 13Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές Περίπτωση 1: Διοχέτευση αντικειμένου σε συνάρτηση μέσω τιμής • Στο ακόλουθο παράδειγμα • Κατασκευάζουμε τον copy constructor στην κλάση • Βλέπουμε τι γίνεται όταν διοχετεύουμε αντικείμενο της κλάσης μέσω τιμής. /*cpp4.copy_constructor_arg_by_value.cpp: Copy Constructor: Όρισμα μέσω τιμής */ #include <iostream> using namespace std; class dummy { public: dummy(); dummy(const dummy &ob); ~dummy(); int x; }; void f(dummy arg);
  • 14. A. Θεωρία 3. Κατασκευαστής αντιγράφου 3. Κλήση όταν διοχετεύεται αντικείμενο σε συνάρτηση μέσω τιμής 14Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές int main() { dummy d; cout<<"Main: Before calling f"<<endl; f(d); cout<<"Main: After calling f"<<endl; return 0; } dummy::dummy() { cout<<"Constructing..."<<endl; x=0; } dummy::dummy(const dummy &ob) { cout<<"Copy constructor..."<<endl; x=ob.x; } dummy::~dummy() { cout<<"Destructing…"<<endl; } void f(dummy arg) { cout<<"In function..."<<endl; }
  • 15. A. Θεωρία 3. Κατασκευαστής αντιγράφου 3. Κλήση όταν διοχετεύεται αντικείμενο σε συνάρτηση μέσω τιμής 15Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Το πρόγραμμα εκτυπώνει: • Στην main: • Κατασκευάζεται το αντικείμενο x • Καλείται η συνάρτηση f • Κατασκευάζεται το αντίγραφο μέσω του copy constructor • καλείται από το αντίγραφο (ob) με όρισμα το αντικείμενο (x) • Σαν να τρέχει η εντολή οb(x) • Διοχετεύεται ως όρισμα • Ολοκληρώνεται η εκτέλεση της συνάρτησης • Καταστρέφεται το αντίγραφο • Ολοκληρώνεται η main • Καταστρέφεται το αντικείμενο x
  • 16. A. Θεωρία 3. Κατασκευαστής αντιγράφου 4. Επιστροφη αντικειμένου από συνάρτηση μέσω τιμής 16Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές Περίπτωση 2: Επιστροφή αντικειμένου από συνάρτηση μέσω τιμής • Στο ακόλουθο παράδειγμα • Κατασκευάζουμε τον copy constructor στην κλάση • Βλέπουμε τι γίνεται όταν επιστρέφουμε αντικείμενο της κλάσης μέσω τιμής. /*cpp4.copy_constructor_return_ob.cpp: Copy Constructor: Επιστροφή αντικειμένου */ #include <iostream> using namespace std; class dummy { public: dummy(); dummy(const dummy &ob); ~dummy(); int x; }; dummy f();
  • 17. A. Θεωρία 3. Κατασκευαστής αντιγράφου 4. Επιστροφη αντικειμένου από συνάρτηση μέσω τιμής 17Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές int main() { cout<<"Main: Before calling f"<<endl; f(); cout<<"Main: After calling f"<<endl; return 0; } dummy::dummy() { cout<<"Constructing..."<<endl; x=0; } dummy::dummy(const dummy &ob) { cout<<"Copy constructor..."<<endl; x=ob.x; } dummy::~dummy() { cout<<"Destructing..."<<endl; } dummy f() { dummy ob; cout<<"In function..."<<endl; return ob; }
  • 18. A. Θεωρία 3. Κατασκευαστής αντιγράφου 4. Επιστροφη αντικειμένου από συνάρτηση μέσω τιμής 18Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Το πρόγραμμα εκτυπώνει: • Δεν βλέπουμε τον copy constructor! • Ωστόσο σε άλλο μεταγλωττιστή είναι δυνατόν να δούμε κλήση copy constructor στην περίπτωση αυτή. • Μετά την κλήση της συνάρτησης, θα βλέπαμε την κατασκευή ενός προσωρινού αντικειμένου το οποίο θα ήταν το αποτέλεσμα της κλήσης της συνάρτησης. Ο onlineGDB έχει υλοποιήσει μία βελτιστοποίηση ειδικά για την περίπτωση αυτή (αναφέρεται ως: return value optimization) • και δεν κατασκευάζει αντίγραφο. • Ωστόσο σε άλλους μεταγλωττιστές ενδέχεται αυτή η βελτιστοποίηση να μην έχει υλοποιηθεί.
  • 19. A. Θεωρία 3. Κατασκευαστής αντιγράφου 5. Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου 19Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές Περίπτωση 3: Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου • Στο ακόλουθο παράδειγμα • Κατασκευάζουμε τον copy constructor στην κλάση • Βλέπουμε τι γίνεται όταν δηλώνουμε ένα αντικείμενο και το αρχικοποιούμε μέσω άλλου αντικειμένου. /*cpp4.copy_constructor_object_declaration.cpp: Δήλωση αντικειμένου μέσω άλλου αντικειμένου */ #include <iostream> using namespace std; class dummy { public: dummy(); dummy(const dummy &ob); ~dummy(); int x; };
  • 20. A. Θεωρία 3. Κατασκευαστής αντιγράφου 5. Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου 20Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές int main() { dummy ob1; dummy ob2 = ob1; // dummy ob2(ob1); return 0; } dummy::dummy() { cout<<"Constructing..."<<endl; x=0; } dummy::dummy(const dummy &ob) { cout<<"Copy constructor..."<<endl; x=ob.x; } dummy::~dummy() { cout<<"Destructing..."<<endl; }
  • 21. A. Θεωρία 3. Κατασκευαστής αντιγράφου 5. Δήλωση και αρχικοποίηση μέσω άλλου αντικειμένου 21Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Το πρόγραμμα εκτυπώνει: • Στην main: • Κατασκευάζεται το αντικείμενο ob1 • Η δήλωση dummy ob2 = ob1 καλεί τον copy constructor • καλείται από το ob2 με όρισμα το ob1 • είναι ισοδύναμο με τη δήλωση: • Καταστρέφονται τα δύο αντικείμενα. dummy ob2(ob1); ΠΡΟΣΟΧΗ: Τα παρακάτω είναι διαφορετικά πράγματα: • dummy ob2 = ob1; (δήλωση και αρχικοποίηση, καλείται ο copy constructor) • ob2 = ob1; (ανάθεση, θα αντιμετωπιστεί με υπερφόρτωση του =)
  • 22. A. Θεωρία 3. Κατασκευαστής αντιγράφου 6. Παρατηρήσεις 22Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές • Ο copy constructor είναι μία ευκολία. • Χρειάζεται πάντα να τον ορίζούμε; • ΌΧΙ, αν η κλάση μας είναι πολύ απλή, δεν χρειάζεται copy constructor • σκεφτόμαστε ότι η bit by bit αντιγραφή δεν θα δημιουργήσει προβλήματα. • Αν όμως κάνουμε στην κλάση δυναμική διαχείριση μνήμης • π.χ. έχουμε έναν δείκτη που δεσμεύει δυναμικά μνήμη για έναν πίνακα • τότε ο copy constructor είναι ΑΠΑΡΑΙΤΗΤΟΣ. • Γιατί είναι το όρισμα const; • Με το const ορίζουμε ότι δεν πρέπει να πειραχτεί το αρχικό αντικείμενο • Πράγματι, η δουλειά του copy constructor είναι μόνο να πάρει πληροφορίες από το αντικείμενο που αντιγράφεται και όχι να το πειράξει.
  • 23. Β. Ασκήσεις Άσκηση 1: Συνάρτηση swap 23Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές Υλοποιήστε τη συνάρτηση swap ώστε να δέχεται δύο ορίσματα και να ανταλλάσσει τις τιμές τους. • Οι τιμές μπορούν να είναι: • int, • double, • αντικείμενα της κλάσης σημείο (βλ. μάθημα 2 «Εισαγωγή στις κλάσεις», άσκηση 2)
  • 24. Β. Ασκήσεις Άσκηση 2: Επέκταση της κλάσης ARRAY 24Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές Επεκτείνετε την κλάση ARRAY της άσκησης 2 του «Μάθημα 3: Κλάσεις και Δείκτες» με κατασκευαστή αντιγράφου.
  • 25. Β. Ασκήσεις Άσκηση 3: Κλάση STRING 25Δημήτρης Ψούνης, Η Γλώσσα C++, Μάθημα 4: Κλάσεις και Αναφορές Κατασκευάστε μία κλάση (STRING) που να περιτυλίσσει την έννοια της συμβολοσειράς ως εξής: • Να έχει ως μέλη έναν δυναμικό πίνακα (δείκτης) χαρακτήρων, καθώς και τη διάσταση του πίνακα • Να έχει κατασκευαστές: • Default • Μόνο με τη συμβολοσειρά (να γίνεται δυναμική δέσμευση μνήμης όση και το μήκος της συμβολοσειράς εισόδου) • Αντιγράφου • Ο καταστροφέας να διαγράφει τη μνήμη που έχει δεσμευτεί δυναμικά. • Getter: Για τη συμβολοσειρά και το μήκος • Setter: Μόνο για τη συμβολοσειρά Η συνάρτηση main • Να κατασκευάζει μία συμβολοσειρά str1, που αρχικοποιείται ως «This is a string» • Να την αντιγράφει στη συμβολοσειρά str2 μέσω του copy constructor. • Να αλλάζει την str1 σε «This is a new string» • Να τυπώνει τις δύο συμβολοσειρές