TEMPLATES, STL ΠΡΟΓΡΑΜΜΑΤΑ ΜΕ ΠΟΛΛΑ ΑΡΧΕΙΑ
|
|
- Βηθανία Ευρυδίκη Σπηλιωτόπουλος
- 7 χρόνια πριν
- Προβολές:
Transcript
1 TEMPLATES, STL ΠΡΟΓΡΑΜΜΑΤΑ ΜΕ ΠΟΛΛΑ ΑΡΧΕΙΑ
2 ΑΝΑΚΕΦΑΛΑΙΩΣΗ
3 Η κλάση Array class Array private: Element **A; int size; public: Array(int s); Element *& operator [](int); void Print(); void Sort(); ;
4 Abstract Class Element class Element public: virtual bool operator < (Element *other) = 0; virtual void PrintElement() = 0; ;
5 Array::Array(int s) size = s; A = new Element*[size]; Element *& Array::operator [] (int i) return A[i]; void Array::Print() for (int i = 0; i < 10; i ++) A[i]->Print(); void Array::Sort() for (int i = 0; i < 10; i ++) for (int j = i+1; j < 10; j ++) if (*A[i] < A[j]) Element *temp = A[i]; A[i] = A[j]; A[j] = temp; Η κατασκευή αυτή είναι απαραίτητη γιατί χρειαζόμαστε ένα αντικείμενο Element (το *Α[i]) για να χρησιμοποιήσουμε τον τελεστή < πάνω σε ένα δείκτη σε αντικείμενο Element (το A[j]) Εναλλακτικά: A[i]->operator<(A[j]) Θα θέλαμε: *A[i] < *A[j]
6 Array::Array(int s) size = s; A = new Element*[size]; Element *& Array::operator [] (int i) return A[i]; void Array::Print() for (int i = 0; i < 10; i ++) A[i]->Print(); void Array::Sort() for (int i = 0; i < 10; i ++) for (int j = i+1; j < 10; j ++) if (*A[i] < *A[j]) Element *temp = A[i]; A[i] = A[j]; A[j] = temp; Λύση: Χρήση αναφορών
7 Υλοποίηση της Array με αναφορές class Array private: Element **A; int size; public: Array(int s); Element *& operator [](int); void Print(); void Sort(); ; Η κλάση Array παραμένει ως έχει.
8 Abstract Class Element class Element public: virtual bool operator < (Element &other) = 0; virtual void Print() = 0; ;
9 IntElement class IntElement: public Element private: int val; public: IntElement(int); int GetVal(); bool operator < (Element &); void Print(); ;
10 IntElement::IntElement(int i) val = i; int IntElement::GetVal() return val; Το dynamic casting δουλεύει και στην περίπτωση που έχουμε αναφορά αντί για δείκτη. bool IntElement::operator <(Element &cother) IntElement &other = dynamic_cast<intelement &>(cother); if (val < other.getval()) return true; return false; void IntElement::Print() cout << val << endl;
11 PointElement class PointElement:public Element private: point val; public: PointElement(int,int); point GetVal(); bool operator < (Element &); void Print(); ;
12 PointElement::PointElement(int x,int y) val.x = x; val.y = y; point PointElement::GetVal() return val; bool PointElement::operator < (Element &cother) PointElement &other = dynamic_cast<pointelement &>(cother); if (val.x < other.getval().x) return true; else if (val.x == other.getval().x) if (val.y < other.getval().y ) return true; else return false; else return false; void PointElement::Print() cout << val.x << " " << val.y << endl;
13 Array::Array(int s) size = s; A = new Element*[size]; Element *& Array::operator [] (int i) return A[i]; void Array::Print() for (int i = 0; i < 10; i ++) A[i]->Print(); Η Array είναι πλέον όπως τη θέλουμε void Array::Sort() for (int i = 0; i < 10; i ++) for (int j = i+1; j < 10; j ++) if (*A[i] < *A[j]) Element *temp = A[i]; A[i] = A[j]; A[j] = temp;
14 Dynamic Casting IntElement &other = dynamic_cast<intelement &>(cother); Μετατρέπει μια αναφορά τύπου Element (base class) σε αναφορά τύπου IntElement (derived class). Η μετατροπή από βασική κλάση σε παραγόμενη επιτρέπεται μόνο αν η βασική κλάση είναι πολυμορφική Τι γίνεται όμως αν η αναφορά cother είναι αναφορά σε PointElement αντί για IntElement? Run-time error: segmentation fault H εντολή dynamic_cast μας επιτρέπει να ελέγξουμε αν η μετατροπή έγινε σωστά IntElement &other = dynamic_cast<intelement &>(cother); if (other == 0) cout << unsuccessful type conversion << endl;
15 template<class DATA_TYPE> class SomeClass<DATA_TYPE> private:... DATA_TYPE somedata;... public:... ; Συντακτικό DATA_TYPE SomeMethod(DATA_TYPE *);... Απλά ένα όνομα που μετά θα αντικατασταθεί από το όνομα του τύπου δεδομένων Ο τύπος δεδομένων που θα αντικαταστήσει το DATA_TYPE θα πρέπει να υλοποιεί την methodx template<class DATA_TYPE> DATA_TYPE SomeClass<DATA_TYPE>::SomeMethod(DATA_TYPE *x)... if (somedata.methodx() == x.methodx())...
16 Class Tempate Array template <class DATA_TYPE> class Array private: DATA_TYPE **A; int size; public: Array(int s); DATA_TYPE *& operator [](int); void Sort(); void Print(); ;
17 template <class DATA_TYPE> Array<DATA_TYPE>::Array(int s) size = s; A = new DATA_TYPE*[size]; template <class DATA_TYPE> DATA_TYPE *& Array<DATA_TYPE>::operator [] (int i) return A[i]; template <class DATA_TYPE> void Array<DATA_TYPE>::Sort() for (int i = 0; i < 10; i ++) for (int j = i+1; j < 10; j ++) if (*A[i] < *A[j]) DATA_TYPE *temp = A[i]; A[i] = A[j]; A[j] = temp; template <class DATA_TYPE> void Array<DATA_TYPE>::Print() for (int i = 0; i < 10; i ++) A[i]->Print();
18 Χρήση στη main() int main() srand(time(null)); Array<IntElement> ia(10); Array<PointElement> pa(10); for (int i = 0; i < 10; i ++) ia[i] = new IntElement(rand()%10); pa[i] = new PointElement(rand()%10, rand()%10); ia.print(); pa.print(); ia.sort(); pa.sort(); ia.print(); pa.print();
19 Χρήση στη main() struct point int x; int y; ; Το Compiler Εrror εμφανίζεται μόνο όταν χρησιμοποιούμε την μέθοδο που έχει πρόβλημα int main() srand(time(null)); Array<point> pa(10); Array<int> ia(10); for (int i = 0; i < 10; i ++) ia[i] = new int(rand()%10); pa[i] = new point; pa[i]->x = rand()%10; pa[i]->y = rand()%10; ia.sort(); //OK! Int has < operator pa.sort(); // COMPILE ERROR: point does not have < operator ia.print(); // COMPILE ERROR: int does not have Print method pa.print(); // COMPILE ERROR: point does not have Print method
20 STANDARD TEMPLATE LIBRARY (STL)
21 STL Υπάρχουν τριών ειδών οντότητες που μας ενδιαφέρουν Αποδέκτες (Containers) Οι διαφορετικοί τρόποι για να αποθηκεύουμε τα δεδομένα μας. Επαναλήπτες (Iterators) Μας παρέχουν δείκτες στα στοιχεία του container και μας επιτρέπουν να διατρέχουμε τα στοιχεία του αποδέκτη. Αλγόριθμοι (Algorithms) Υλοποιημένοι αλγόριθμοι που μας δίνουν βασικές λειτουργίες πάνω στους αποδέκτες
22 STL Sequential Containers Container Χαρακτηριστικά +/- Πίνακας C++ Σταθερό μέγεθος + Γρήγορη τυχαία πρόσβαση. - Αργή προσθήκη σε ενδιάμεση θέση - Σταθερό μέγεθος vector Δυναμικός πίνακας + Γρήγορη τυχαία πρόσβαση. - Αργή προσθήκη σε ενδιάμεση θέση - Προσθήκη μόνο στο τέλος list deque Διπλά συνδεδεμένη λίστα Δυναμικός πίνακας με πρόσβαση και από τις δύο μεριές + Γρήγορη προσθήκη σε ενδιάμεση θέση - Αργή τυχαία πρόσβαση. + Γρήγορη τυχαία πρόσβαση. + Προσθήκη σε αρχή και τέλος - Αργή προσθήκη σε ενδιάμεση θέση
23 vector Μέθοδος int size() void push_back(const TYPE &) void pop_back() TYPE & back() TYPE & operator [](int) bool empty() iterator insert(iterator, const TYPE &) iterator erase(iterator)
24 list Μέθοδος int size() void push_back(const TYPE &) void pop_back() TYPE & back() bool empty() iterator insert(iterator, const TYPE &) iterator erase(iterator) void push_front(const TYPE &) void pop_front() TYPE & front() Επίσης, μεθόδους: reverse, merge, unique
25 deque Έχει τις μεθόδους και των δύο παραπάνω. Και προσθήκη στην αρχή και το τέλος, και τυχαία πρόσβαση.
26 iterators #include <iostream> #include <list> using namespace std; int main() list<int> L; int x; do cin >> x; L.push_back(x); while (x!= -1); list<int>::iterator iter: Δήλωση του iterator L.begin(): Συνάρτηση που επιστρέφει iterator στην αρχή του container L.end(): Συνάρτηση που επιστρέφει iterator στο τέλος του container iter++: Κάνει τον iterator να δείχνει στο επόμενο στοιχείο της λίστας *iter: Το περιεχόμενο της θέσης στην οποία δείχνει ο iterator, μπορεί να χρησιμοποιηθεί και για να πάρει και για να δώσει τιμή. cout << "list elements: "; for (list<int>::iterator iter = L.begin(); iter!= L.end(); iter ++) *iter += 2; cout << *iter << " "; cout << endl;
27 iterators #include <iostream> #include <list> using namespace std; int main() list<int> L; int x; do cin >> x; L.push_back(x); while (x!= -1); Εκτύπωση των στοιχείων σε αντίστροφη σειρά χρησιμοποιώντας έναν reverse_iterator cout << "list elements in reverse: "; list<int>::reverse_iterator riter; for (riter = L.rbegin(); riter!= L.rend(); iter ++) cout << *iter << " "; cout << endl;
28 iterators #include <iostream> #include <list> using namespace std; int main() list<int> L; int x; Βρες και σβήσε το πρώτο στοιχείο της λίστας με την τιμή 8, εφόσον υπάρχει. do cin >> x; L.push_back(x); while (x!= -1); list<int>::iterator iter; for (iter = L.begin(); iter!= L.end(); iter ++) if (*iter == 8) break; if (iter!= L.end()) // υπάρχει στοιχείο με τιμή 8 L.erase(iter);
29 Associative Containers Container set map multiset multimap Χαρακτηριστικά Αποθηκεύει μόνο αντικείμενα-κλειδιά Δεν επιτρέπει πολλαπλές τιμές Κρατάει ζεύγη κλειδιών και τιμών (key-value pairs). Συσχετίζει αντικείμενα-κλειδιά με αντικείμενα-τιμές. Το κάθε κλειδί μπορεί να συσχετίζεται με μόνο μία τιμή Επιτρέπει πολλαπλές εμφανίσεις ενός κλειδιού Επιτρέπει πολλαπλές τιμές για ένα κλειδί.
30 Παραδειγμα set #include <iostream> #include <set> using namespace std; int main() set<string> S; string name; while (!cin.eof()) cin >> name; S.insert(name); set<string>::iterator iter = S.find("bob"); if (iter == S.end()) cout << "bob is not in\n"; elsecout << "bob is in\n"; for (set<string>::iterator iter = S.begin(); iter!= S.end(); iter ++) cout << *iter << " "; cout << endl;
31 Set με δικές μας κλάσεις Τι γίνεται αν θέλουμε να βάλουμε αντικείμενα από μία δική μας κλάση σε ένα Set? Τι σημαίνει ότι το set περιέχει ήδη ένα αντικείμενο? Για να χρησιμοποιήσουμε το Set, η κλάση θα πρέπει να έχει ορισμένους τον τελεστή == και τον τελεστή <.
32 Παραδειγμα Set class Person private: int id; string fname; string lname; public: Person(); Person(int); void SetDetails(int id, string fn, string ln); bool operator == (const Person &) const; bool operator < (const Person &) const; int getid() const; void PrintDetails() const; ;
33 Person::Person() Person::Person(int i) id = i; void Person::SetDetails(int i, string f, string l) id = i; fname = f; lname = l; bool Person::operator == (const Person &p) const return (id == p.getid()); bool Person::operator < (const Person &p) const return (id < p.getid()); int Person::getId() const return id; void Person::PrintDetails() const cout << id: << id << first name:" << fname << " last name:" << lname << endl;
34 int main() set<person> S; Person P[3]; int id; string fname, lname; for(int i =0 ; i< 3; i ++) cin >>id >> fname >> lname; P[i].SetDetails(id, fname, lname); S.insert(P[i]); H αναζήτηση γίνεται με ένα αντικείμενο της κλάσης cin >> id; Person sp(id); set<person>::iterator iter = S.find(sp); if (iter == S.end()) cout << "id not found\n"; else iter->printdetails();
35 Παράδειγμα map #include <iostream> #include <map> using namespace std; int main() map<int,person*> M; int id; Το κλειδί στην περίπτωση αυτή είναι int, αλλά μπορεί να είναι οποιοσδήποτε τύπος δεδομένων που πληροί τις προϋποθέσεις για να είναι κλειδί σε Set. while (!cin.eof()) string fname,lname; cin >> id >> fname >> lname; Person *p =new Person; p->setdetails(id,fname,lname); M[id] = p; cin >> id; map<int,person*>::iterator iter = M.find(id); if (iter == M.end()) cout << id is not in\n"; else M[id]->PrintDetails();
36 Παράδειγμα map iterator #include <iostream> #include <map> using namespace std; int main() map<int,person*> M; int id; while (!cin.eof()) string fname,lname; cin >> id >> fname >> lname; Person *p =new Person; p->setdetails(id,fname,lname); M[id] = p; map<int,person*>::iterator iter = M.find(id); for (iter = M.begin(); iter!= M.end(); i++) cout << (*iter).first << : ; (*iter).second->printpersonaldetails();
37 Αλγόριθμοι Στην STL υπάρχουν ήδη υλοποιημένοι αλγόριθμοι που μπορούν να εφαρμοστούν σε containers. Ο κάθε αλγόριθμος χρειάζεται κάποιον τύπο iterator, το οποίο καθορίζει και το αν μπορούμε να τον εφαρμόσουμε σε ένα συγκεκριμένο τύπο container.
38 find Βρίσκει την πρώτη εμφάνιση μίας τιμής μέσα σε ένα container. Δουλεύει για όλους τους containers Συντακτικό: iterator find(start, finish, value) Παραδειγμα: include<algorithm> vector<int> v vector<int>::iterator i = find(v.begin(), v.end(), 100) Επιστρέφει iterator στην θέση του στοιχείου αν είναι μέσα στον container, ή v.end()αν δεν είναι.
39 sort Ταξινομεί τα στοιχειά του αποδέκτη. Χρειάζεται τυχαία πρόσβαση, και άρα δουλεύει μόνο για vectors και deque Συντακτικό: sort(start, finish) Ταξινομεί σε αύξουσα σειρά Παραδειγμα: include <algorithm> vector<int> v; sort(v.begin(), v.end());
40 Αντικείμενα συναρτήσεων Τι γίνεται όμως αν θέλουμε να ταξινομήσουμε τα στοιχεία με κάποια άλλη σειρά? Τότε πρέπει να περάσουμε ως όρισμα στην sort ένα αντικείμενο-συνάρτησης. Βασικά ένα αντικείμενο μιας template class στην οποία υπερφορτώνουμε τον τελεστή (). Η C++ έχει ήδη υλοποιήσει κάποια από αυτά τα αντικείμενα. vector<int> v; sort(v.begin(), v.end(), greater<int>());
41 class ComparePersons public: bool operator ()(const Person &p1, const Person &p2) const return p1 < p2; ; int main() vector<person> V; Person P[3]; for(int i =0 ; i< 3; i ++) int id; string fname, lname; cin >>id >> fname >> lname; P[i].SetDetails(id, fname, lname); V.push_back(P[i]); sort(v.begin(),v.end(),comparepersons()); sort(p,p+3,comparepersons()); for (int i =0; i < 3; i ++) P[i].PrintDetails();
42 bool compare(const Person &p1, const Person &p2) return p1 < p2; int main() vector<person> V; Person P[3]; for(int i =0 ; i< 3; i ++) int id; string fname, lname; cin >>id >> fname >> lname; P[i].SetDetails(id, fname, lname); V.push_back(P[i]); sort(v.begin(),v.end(),compare); sort(p,p+3,compare); for (int i =0; i < 3; i ++) P[i].PrintDetails();
43 for_each Καλεί μια συνάρτηση, στην οποία περνάμε ως όρισμα, για κάθε στοιχείο του container. Μπορεί να χρησιμοποιηθεί για όλους τους containers. Συντακτικό: for_each(start, finish, function) H συνάρτηση function παίρνει όρισμα τον τύπο δεδομένων που περιέχει ο container, και εφαρμόζεται σε όλα τα στοιχεια μεταξύ start και finish. Παράδειγμα: void inc(int *i) cout << ++(*i) << endl; vector<int *> v; for_each(v.begin(), v.end(), inc); Αυξάνει όλες τις τιμές κατά ένα και τις τυπώνει
44 Φίλες συναρτήσεις Χρησιμοποιώντας το keyword friend, μπορούμε να κάνουμε μια συνάρτηση να βλέπει τα private μέλη μιας κλάσης. Σε ορισμένες περιπτώσεις αυτό είναι βολικό άλλα δεν θα πρέπει να χρησιμοποιείται πολύ συχνά.
45 Παραδειγμα Set class Person private: int id; string fname; string lname; public: Person(); Person(int); void SetDetails(int id, string fn, string ln); friend bool operator == (const Person&,const Person &); friend bool operator < (const Person &,const Person &); int getid() const; void PrintDetails() const; ;
46 Person::Person() Person::Person(int i) id = i; void Person::SetDetails(int i, string f, string l) id = i; fname = f; lname = l; bool operator == (const Person &p1, const Person &p2) return (p1.id == p2.id); bool operator < (const Person &p1, const Person &p2) return (p1.id < p2.id); int Person::getId() const return id; void Person::PrintDetails() const cout << id: << id << first name:" << fname << " last name:" << lname << endl;
47 int main() set<person> S; Person P[3]; int id; string fname, lname; for(int i =0 ; i< 3; i ++) cin >>id >> fname >> lname; P[i].SetDetails(id, fname, lname); S.insert(P[i]); cin >> id; Person sp(id); set<person>::iterator iter = S.find(sp); if (iter == S.end()) cout << "id not found\n"; else iter->printdetails(); O κώδικας παραμένει ο ίδιος
48 ΚΩΔΙΚΑΣ ΣΕ ΠΟΛΛΑ ΑΡΧΕΙΑ
49 Διαχείριση μεγάλων προγραμμάτων Σε μεγάλα projects όπου έχουμε μεγάλη ποσότητα κώδικα και πολλαπλές κλάσεις δεν είναι δυνατόν να έχουμε όλο τον κώδικα σε ένα αρχείο. Στον αντικειμενοστρεφή προγραμματισμό ο διαμερισμός του κώδικα σε πολλά αρχεία γίνεται τελείως φυσικά Η κάθε κλάση τοποθετείται σε ξεχωριστό αρχείο.
50 Επικοινωνία μεταξύ κλάσεων. Τι γίνεται όμως όταν μία κλάση Α θέλει να δημιουργήσει αντικείμενα μιας άλλης κλάσης Β? Για να μπορέσει ο compιler να δεσμεύσει μνήμη για το αντικείμενο, θα πρέπει να ξέρει τι είναι αυτό για το οποίο δεσμεύει μνήμη. Άρα η κλάση Α θα πρέπει να ξέρει τον ορισμό της κλάσης Β. Πρέπει να κάνουμε include τον ορισμό της κλάσης Β στην κλάση Α.
51 Αρχεία επικεφαλίδες (header files) Η θεσμοθετημένη πλέον πρακτική είναι για κάθε κλάση να δημιουργείται ένα αρχείο επικεφαλίδα (.h file) που περιέχει τον ορισμό της κλάσης. Π.χ. για την κλάση Person, θα δημιουργήσουμε ένα αρχείο Person.h που θα περιλαμβάνει τον ορισμό της κλάσης Person. Ο κώδικας για την υλοποίηση της κλάσης, τοποθετείται σε ένα αρχείο κώδικα (.cpp file) Οι μέθοδοι της Person υλοποιούνται στο αρχείο Person.cpp
52 Inclusion Όποιος χρειάζεται τον ορισμό της Person κάνει include τον ορισμό το αρχείο Person.h #include Person.h Βολεύει οι include εντολές να είναι μέσα στα header files. Μετά το κάθε.cpp αρχείο κάνει include μόνο το δικο του header file Δηλαδή το Person.cpp κάνει include μόνο το Person.h header file.
53 Πολλαπλοί ορισμοί Αν έχουμε πολλά header αρχεία που το ένα κάνει include το άλλο, τότε υπάρχει κίνδυνος σε ένα αρχείο να δηλώσουμε πολλαπλές φορές την ίδια κλάση. Στην περίπτωση αυτή θα πάρουμε λάθος από τον compiler. Για να το αποφύγουμε αυτό δίνουμε εντολή στον preprocessor να μην ορίσει δύο φορές την ίδια κλάση
54 Εντολή προεπεξεργαστή #if!defined( CLASSNAME ) #define CLASSNAME Class ClassName Με αυτό τον τρόπο εξασφαλίζουμε ότι η κλάση θα οριστεί μόνο μία φορά. Τότε θα οριστεί και η μεταβλητή CLASSNAME οπότε την επόμενη φορά δεν θα μπούμε μέσα στο if #endif
55 To αρχείο Person.h using namespace std; #if!defined( PERSON ) #define PERSON class Person private: int id; string fname; string lname; public: Person(); Person(int); void SetDetails(int id, string fn, string ln); bool operator == (const Person &) const; bool operator < (const Person &) const; int getid() const; void PrintDetails() const; ; #endif
56 To αρχείο Person.cpp #include <iostream> #include Person.h Person::Person() Person::Person(int i) id = i; void Person::SetDetails(int i, string f, string l) id = i; fname = f; lname = l; bool Person::operator == (const Person &p2) return (id == p2.id); bool Person::operator < (const Person &p2) return (id < p2.id); int Person::getId() const return id; void Person::PrintDetails() const cout << id: << id << first name:" << fname << " last name:" << lname << endl;
57 To αρχείο main.cpp #include <iostream> #include <set> #include Person.h int main() set<person> S; Person P[3]; int id; string fname, lname; for(int i =0 ; i< 3; i ++) cin >>id >> fname >> lname; P[i].SetDetails(id, fname, lname); S.insert(P[i]); cin >> id; Person sp(id); set<person>::iterator iter = S.find(sp); if (iter == S.end()) cout << "id not found\n"; else iter->printdetails();
58 58 makefiles Τα makefiles ρυθμίζουν τον τρόπο με τον οποίο συνδέουμε πολλά αρχεία μεταξύ τους Όταν μεταφράζουμε τον πηγαίο (source) κώδικα, ο μεταγλωττιστής παράγει ένα αρχείο με τελικό (object) κώδικα. Ο linker συνδέει τα αρχεία τελικού κώδικα με τον τελικό κώδικα από τις βιβλιοθήκες και παράγει το εκτελέσιμο.
59 59 makefiles Main.cpp Person.o Other libraries Person.cpp Compiler Linker Executable Person.h
60 60 makefiles Το αρχείο makefile (ή σχεδόν ισοδύναμα και Makefile) περιέχει εντολές για το πώς θα συνδέσουμε και θα μεταγλωττίσουμε τα αρχεία μας. Μερικές οδηγίες (options ή directives): # This is a comment # Options for the compilation of C, C++ programs: # -O Optimize object code # -c Compile and assemble, but do not link # -o <file> Place the output into <file>
61 61 Χρήση Τα περιεχόμενα του τρέχοντος directory είναι: Person.h, Person.cpp, main.cpp, makefile Η μεταγλώττιση γίνεται ως εξής: make main
62 62 File: makefile # Person.o DEPENDS on Person.h and Person.cpp # We create only the.o[bject] file and do not # link it to an executable # main DEPENDS on the Person.o file and main.cpp # We compile it and we produce the executable # main.exe main: Person.o main.cpp g++ Person.o -o main.exe main.cpp Person.o: Person.h Person.cpp g++ -O -c Person.cpp Οι γραμμές αυτές θα πρέπει να ξεκινάνε οπωσδήποτε με tab!
63 63 Εναλλακτικά Ένας πιο απλός τρόπος για να κάνετε compile κατ ευθείαν το πρόγραμμά σας: g++ -o main.exe main.cpp Person.cpp Σε κάποιους compilers: -omain.exe (χωρίς κενό)
64 Ένα μεγαλύτερο παράδειγμα. Θα δούμε πως μπορούμε να σπάσουμε το παράδειγμα με το Array σε πολλαπλά αρχεία.
65 Utils.h Ένα αρχείο με διάφορες βιβλιοθήκες που χρειάζονται οι περισσότερες κλάσεις #include <iostream> #include <cstring> #include <stdio.h> #include <cmath> #include <ctime> #include <cstdlib> using namespace std;
66 Element.h #if!defined( ELEMENT ) #define ELEMENT class Element public: virtual bool operator < (Element &other) = 0; virtual void Print() = 0; ; #endif Για την κλάση Element δεν χρειάζεται να ορίσουμε.cpp αρχείο.
67 Array.h #if!defined( ARRAY ) #define ARRAY #include "Utils.h" #include "Element.h" class Array private: Element **A; int size; public: Array(int s); Element *& operator [](int); void Sort(); void Print(); ; #endif
68 Array.cpp #include "Array.h" Array::Array(int s) size = s; A = new Element*[size]; Element *& Array::operator [] (int i) return A[i]; void Array::Sort() for (int i = 0; i < 10; i ++) for (int j = i+1; j < 10; j ++) if (*A[i] < *A[j]) Element *temp = A[i]; A[i] = A[j]; A[j] = temp; void Array::Print() for (int i = 0; i < 10; i ++) A[i]->Print();
69 IntElement.h #if!defined( INT_ELEMENT ) #define INT_ELEMENT #include "Utils.h" #include "Element.h" class IntElement: public Element private: int val; public: IntElement(int); int GetVal(); bool operator < (Element &); void Print(); ; #endif
70 IntElement.cpp #include "IntElement.h" IntElement::IntElement(int i) val = i; int IntElement::GetVal() return val; bool IntElement::operator <(Element &cother) IntElement &other = dynamic_cast<intelement &>(cother); if (val < other.getval()) return true; return false; void IntElement::Print() cout << val << endl;
71 PointElement.h #if!defined( POINT_ELEMENT ) #define POINT_ELEMENT #include "Utils.h" #include "Element.h" struct point int x; int y; ; class PointElement: public Element private: point val; public: PointElement(int,int); point GetVal(); bool operator < (Element &); void Print(); ; #endif
72 PointElement.cpp #include "PointElement.h" PointElement::PointElement(int x,int y) val.x = x; val.y = y; point PointElement::GetVal() return val; bool PointElement::operator <(Element &cother) PointElement &other = dynamic_cast<pointelement &>(cother); if (val.x < other.getval().x) return true; if (val.x == other.getval().x) if (val.y < other.getval().y ) return true; else return false; else return false; void PointElement::Print() cout << val.x << " " << val.y << endl;
73 main.cpp #include "Utils.h" #include "Array.h" #include "IntElement.h" #include "PointElement.h" int main() srand(time(null)); Array ia(10); Array pa(10); for (int i = 0; i < 10; i ++) ia[i] = new IntElement(rand()%10); pa[i] = new PointElement(rand()%10, rand()%10); ia.print(); pa.print(); ia.sort(); pa.sort(); ia.print(); pa.print();
74 makefile main: main.cpp Array.o IntElement.o PointElement.o Utils.h g++ -o main.exe Array.o IntElement.o PointElement.o main.cpp Array.o: Array.h Array.cpp Element.h Utils.h g++ -c Array.cpp IntElement.o: IntElement.h IntElement.cpp Element.h Utils.h g++ -c IntElement.cpp PointElement.o: PointElement.h PointElement.cpp Element.h Utils.h g++ -c PointElement.cpp
JAVA VS C++ ΠΡΟΓΡΑΜΜΑΤΑ ΜΕ ΠΟΛΛΑ ΑΡΧΕΙΑ ΣΥΝΘΕΣΗ ΚΑΙ ΣΥΝΑΘΡΟΙΣΗ
JAVA VS C++ ΠΡΟΓΡΑΜΜΑΤΑ ΜΕ ΠΟΛΛΑ ΑΡΧΕΙΑ ΣΥΝΘΕΣΗ ΚΑΙ ΣΥΝΑΘΡΟΙΣΗ Java v.s. C++ #include #include #include #include C++ using namespace std; const int SIZE = 2; void Dimension::RandomMove()
Διαβάστε περισσότεραΠΟΛΥΜΟΡΦΙΣΜΟΣ, ΠΡΟΤΥΠΑ, ΚΑΘΙΕΡΩΜΕΝΗ ΒΙΒΛΙΟΘΗΚΗ ΠΡΟΤΥΠΩΝ. Polymorphism, Templates, Standard Template Library (STL)
ΠΟΛΥΜΟΡΦΙΣΜΟΣ, ΠΡΟΤΥΠΑ, ΚΑΘΙΕΡΩΜΕΝΗ ΒΙΒΛΙΟΘΗΚΗ ΠΡΟΤΥΠΩΝ Polymorphism, Templates, Standard Template Library (STL) Πολυμορφισμός Τι είναι πολυμορφισμός? (πολυμορφισμός = πολλές μορφές. Η χρήση μιας κλάσης
Διαβάστε περισσότεραStandard Template Library (STL) C++ library
Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Standard Template Library (STL) C++ library Δομές Δεδομένων Μάριος Κενδέα kendea@ceid.upatras.gr Εισαγωγή Η Standard Βιβλιοθήκη προτύπων
Διαβάστε περισσότεραΠρογραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &
Διαβάστε περισσότεραStandard Template Library (STL)
Standard Template Library (STL) Η χαρά του προγραμματιστή δαίμων - τεύχος 6 Μορφονιός Κωνσταντίνος http://www.di.uoa.gr/~kmorfo K.Morfonios@di.uoa.gr Περιεχόμενα Τι είναι; Containers Algorithms Iterators
Διαβάστε περισσότεραΔομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ
Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ mpompotas@ceid.upatras.gr Εισαγωγή - STL Η Standard Βιβλιοθήκη προτύπων (STL) είναι μια βιβλιοθήκη λογισμικού για την C++ Δημιουργήθηκε
Διαβάστε περισσότεραΕρώτημα Α 1. Να γράψετε τις εντολές που πραγματοποιούν τα ακόλουθα:
#2 Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Δομές Δεδομένων και Αλγόριθμοι (εργαστήριο) Γκόγκος Χρήστος Ερώτημα Α 1. Να γράψετε τις εντολές
Διαβάστε περισσότεραΓλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά
Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object
Διαβάστε περισσότεραΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++
Πέρασμα μεταβλητών, Templates, Συσχετίσεις μεταξύ κλάσεων ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Πέρασμα με τιμή και με αναφορά Template functions και classes
Διαβάστε περισσότεραΚλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )
ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση
Διαβάστε περισσότεραΜάθημα 21: Ουρές (Queues)
Queues Page 1 Μάθημα 21: Ουρές (Queues) Η ουρά (queue) είναι μια δομή δεδομένων. Η βασική λειτουργικότητα είναι η εισαγωγή στοιχείων στην πίσω θέση και η εξαγωγή-διαγραφή στοιχείων από την μπροστινή θέση.
Διαβάστε περισσότεραΠρογραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &
Διαβάστε περισσότεραΗ εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..
Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 7η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Τάξεις: δημόσια και ιδιωτικά μέλη, μέθοδοι inline. Αρχεία κεφαλίδων και
Διαβάστε περισσότεραΜάθημα 22: Δυαδικά δέντρα (Binary Trees)
Trees Page 1 Μάθημα 22: Δυαδικά δέντρα (Binary Trees) Ένα δένδρο είναι δυαδικό αν όλοι οι κόμβοι του έχουν βαθμό (degree)
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 11η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση του τελεστή εκχώρησης. Στατικές μεταβλητές, στατικές σταθερές
Διαβάστε περισσότεραΕντολές εισόδου - εξόδου. Εισαγωγή στη C++
Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 17η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προσθήκη ελέγχου ορίων σε πίνακες χρησιμοποιώντας σχεδιότυπα τάξεων
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 3η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πληροφορίες για την 1η εργασία. Οι τάξεις vector, set και map. Χρήση
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 4η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Δείκτες και πίνακες. Δείκτες σε σταθερές και σταθεροί δείκτες. Μεταβίβαση
Διαβάστε περισσότεραΑναφορές, είκτες και Αλφαριθμητικά
Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών
Διαβάστε περισσότεραΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ
ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Βιβλιοθήκη STL Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Βιβλιοθήκη STL Standard
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 5η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πίνακες ως ορίσματα συναρτήσεων. Τα ορίσματα argc και argv της main.
Διαβάστε περισσότερα17TimeThis.h function returns reference pointer to same object { return *this; }
Προαπαιτούµενη Κάθε οµάδα θα πρέπει να εµπλουτίσει το ίδιο πρόγραµµα, που έκανε την προηγούµενη φορά, προσθέτοντας στην κλάση του έναν ή περισσότερους υπερφορτωµένους τελεστές (όπως , ++, +,-,+=..)
Διαβάστε περισσότεραΕισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )
ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 6η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προκαθορισμένες τιμές ορισμάτων. Υπερφόρτωση συναρτήσεων. Συναρτήσεις
Διαβάστε περισσότεραΑνάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διαβάστε περισσότεραΑντικειμενοστραφής Προγραμματισμός
1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Αντικειμενοστραφής Προγραμματισμός Ενότητα 9 : Τα πρότυπα (templates) Ιωάννης Τσούλος 2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο Τμήμα Μηχανικών Πληροφορικής
Διαβάστε περισσότεραΣυµβολοσειρές - Strings
Συµβολοσειρές - Strings 1 Συµβολοσειρέςστην C/C++ 2 Χαρακτήρες 'a', 'z', '0', Χαρακτήρες σαν int 'z' επίσης αναπαριστά την ακεραία τιµή του χαρακτήρα z Strings-Συµβολοσειρές Σειρές από χαρακτήρες σαν µια
Διαβάστε περισσότεραΣυμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )
ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία
Διαβάστε περισσότεραalpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and
alpha Language (1/5) ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language Στην alpha δεν υπάρχει main() συνάρτηση, ο κώδικας ξεκινάει την εκτέλεση από την αρχή του
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΟνοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ!
Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Προγραμματισμός Υπολογιστών με C++ Εξεταστική περίοδος: Σεπτεμβρίου 2011. Διδάσκων: Α. Δημάκης Γράψτε όλες τις απαντήσεις σας πάνω σε αυτό το
Διαβάστε περισσότερα19. ΠΡΟΤΥΠΑ (TEMPLATES)
19. ΠΡΟΤΥΠΑ (TEMPLATES) Πρότυπα συναρτήσεων µε ένα όρισµα int abs (int n) float abs (float n) return (n
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό
Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό 2013-14 Διδάσκων: Γεώργιος Παπαϊωάννου Μονογραφή επιτηρητή: Στοιχεία Φοιτητή (συμπληρώνεται από το φοιτητή) Όνομα: Αίθουσα/αμφιθέατρο:
Διαβάστε περισσότεραΑπάντηση. // 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 αν ο πρώτος αριθμός διαιρεί τον δεύτερο, αλλιώς,
Διαβάστε περισσότερα24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ
24ος ΠΑΝΕΛΛΗΝΙΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΝΔΕΙΚΤΙΚΕΣ ΑΠΑΝΤΗΣΕΙΣ Γ ΦΑΣΗΣ Θέμα 1 ο : Λουτράκι [30 Μονάδες] C++ Παναγιώτου Σωτήριος 59 ο ΓΕΛ Αθηνών /* USER:pdp24u226 TASK:loutraki LANG:C++ */ #include
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.
Διαβάστε περισσότεραΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ 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
Διαβάστε περισσότεραΟνοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ!
Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Προγραμματισμός Υπολογιστών με C++ Εξεταστική περίοδος: Φεβρουαρίου 2010. Διδάσκων: Α. Δημάκης Γράψτε όλες τις απαντήσεις σας πάνω σε αυτό το
Διαβάστε περισσότεραB. Ενσωμάτωση Ιθαγενών Μεθόδων
B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη
Διαβάστε περισσότεραΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα Βελτιωμένο Παράδειγμα Ενθυλάκωση : public private - protected πεδία Ενθυλάκωση : public private - protected
Διαβάστε περισσότεραΕισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών
Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας
Διαβάστε περισσότεραΑντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT
= Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει
Διαβάστε περισσότεραΕισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #15
Οι βασικές έννοιες που θα καλύψουμε Ομαδοποίηση αντικειμένων Εισαγωγή στις συλλογές Γενικές κλάσεις Iterators Συλλογές (ειδικά την ArrayList) Συνεχίζουμε την αναφορά στο θέμα της αφαίρεσης (abstraction)
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ηµιουργία και χειρισµός LIFO λιστών µεταβλητού µήκους µε στοιχεία ακεραίους αριθµούς. Γενίκευση για χειρισµό λιστών πραγµατικών
Διαβάστε περισσότεραΠεριεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23
Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική
Διαβάστε περισσότεραΗ Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 11η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
Διαβάστε περισσότεραΑ' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 8η σειρά ασκήσεων. Κοζάνη, 7 Δεκεμβρίου 2007. Κάθε πρόγραμμα εξαρτάται από αλγόριθμους και δομές δεδομένων, αλλά μόνο λίγα απαιτούν κάποια καινοτομία
Διαβάστε περισσότεραΦροντιςτήριο. Linked-List
Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Διαβάστε περισσότεραΣτοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
Διαβάστε περισσότεραΣυναρτήσεις και Πίνακες
Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 2η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Βασικοί αριθμητικοί τύποι, μετατροπές τύπων και σταθερές. Πίνακες. Πίνακες
Διαβάστε περισσότεραΗ γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η
Διαβάστε περισσότεραTEMPLATES STANDARD TEMPLATE LIBRARY
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙςΜΟς C++ 2010-2011 Evangelos Theodoridis Class Templates Templates Δημιουργία γενικευμένων κλάσεων και συναρτήσεων Function template η πρωτότυπη
Διαβάστε περισσότεραΕισαγωγή στη γλώσσα προγραμματισμού C++
Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)
Διαβάστε περισσότεραC: Από τη Θεωρία στην Εφαρμογή
Δρ. Γ. Σ. Τσελίκης Δρ. Ν. Δ. Τσελίκας C: Από τη Θεωρία στην Εφαρμογή Ενδεικτικές Ασκήσεις από το Βιβλίο C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.1
Διαβάστε περισσότεραΗλεκτρονικοί Υπολογιστές
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 9: Πίνακες στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Διαβάστε περισσότεραΥπερφόρτωση τελεστών (operator(
Υπερφόρτωση τελεστών (operator( overloading) Η υπερφόρτωση τελεστών είναι ένα από τα πιο ενδιαφέροντα χαρακτηριστικά του αντικειμενοστραφούς προγραμματισμού. Αναφέρεται στην πρόσθετη χρήση των συνηθισμένων
Διαβάστε περισσότεραHY150a Φροντιστήριο 3 24/11/2017
HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει
Διαβάστε περισσότεραΣτοιχειώδης προγραμματισμός σε C++
Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 14η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Εικονικές μέθοδοι και πολυμορφισμός με χρήση δεικτών ή αναφορών. Εικονικοί
Διαβάστε περισσότεραΕξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή
Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)
Διαβάστε περισσότεραΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή
ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή Στο εργαστήριο αυτό θα μάθουμε για τη χρήση συναρτήσεων με σκοπό την κατασκευή αυτόνομων τμημάτων προγραμμάτων που υλοποιούν μία συγκεκριμένη διαδικασία, τα οποία
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Templates ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Διαβάστε περισσότεραΗ-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr
Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
- Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται
Διαβάστε περισσότεραΚεφάλαιο 2.1-2.4: Εισαγωγή στην C: (Διαλέξεις 3-4)
Κεφάλαιο 2.1-2.4: Εισαγωγή στην C (Διαλέξεις 3-4) Περιεχόμενα Εισαγωγή στην C: Σύνταξη και Σημασιολογία σχόλια μεταβλητές και σταθερές τύποι δεδομένων Μετά αυτές τις δυο διαλέξεις θα μπορείτε να γράψετε
Διαβάστε περισσότεραΣτόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων
Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες ANTIKEIMENA MEΣΑ ΣΕ ΑΝΤΙΚΕΙΜΕΝΑ Αντικείμενα μέσα σε αντικείμενα Εκτός
Διαβάστε περισσότεραCE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -
CE121 Προγραµµατισµός 2 Εισαγωγή σε Makefiles 1 Η διαδικασία µεταγλώττισης myprog.c gcc myprog 2 Η διαδικασία µεταγλώττισης myprog.c preprocessor (cc1) /tmp/cczxt.i assembler (as) compiler (cc1) /tmp/cczxt.o
Διαβάστε περισσότεραΑλγόριθμοι Ταξινόμησης Μέρος 1
Αλγόριθμοι Ταξινόμησης Μέρος 1 Μανόλης Κουμπαράκης 1 Το Πρόβλημα της Ταξινόμησης Το πρόβλημα της ταξινόμησης (sorting) μιας ακολουθίας στοιχείων με κλειδιά ενός γνωστού τύπου (π.χ., τους ακέραιους ή τις
Διαβάστε περισσότεραΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
Διαβάστε περισσότεραPOINTERS, AGGREGATION, COMPOSITION
POINTERS, AGGREGATION, COMPOSITION POINTERS TO OBJECTS Η κλάση mystring class mystring private: char *s; int size; public: mystring(const char *); ~mystring(); char *GetString(); int GetSize(); ; mystring::mystring(const
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ 1η διάλεξη (2012-13) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Γιατί να μάθει κανείς C++; Απαιτούμενο προσόν για πολλές θέσεις εργασίας. Υψηλού επιπέδου προγραμματισμός.
Διαβάστε περισσότεραΤελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )
ΤΕΛΕΣΤΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τι είναι οι τελεστές Χρήση τελεστών Υπερφόρτωση τελεστών Chain-linking Τελεστών Τελευταία ενημέρωση: Ιούνιος 2013 Εισαγωγή - 2 Τελεστής
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 10η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση των τελεστών εισόδου και εξόδου. Τάξεις και δυναμική καταχώριση
Διαβάστε περισσότεραΠροηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων
Προηγµένα Θέµατα Τεχνολογιών Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα
Διαβάστε περισσότεραΗΥ-150. Πίνακες (Arrays)
ΗΥ-150 Προγραµµατισµός Πίνακες (Arrays) Προγραµµατισµός Εισαγωγικά Έστω ότι θέλουµε να αποθηκεύσουµε 100 ονόµατα φοιτητών και τους βαθµούς τους. Πως θα το κάναµε αυτό µε µεταβλητές; Πως θα µπορούσαµε να
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή Οποιαδήποτε κλάση
Διαβάστε περισσότεραΠρογραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a
Διαβάστε περισσότερα#2. Templates, η βιβλιοθήκη STL, μέτρηση χρόνου εκτέλεσης κώδικα, αλγόριθμοι ταξινόμησης, αλγόριθμοι αναζήτησης
Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Σχολή Τεχνολογικών Εφαρμογών Ακαδημαϊκό έτος 2016-2017 ΤΕΙ Ηπείρου - Άρτα Δομές Δεδομένων και Αλγόριθμοι (εργαστήριο) Γκόγκος Χρήστος #2. Templates, η βιβλιοθήκη STL,
Διαβάστε περισσότεραΥπερφόρτωση τελεστών
Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας
Διαβάστε περισσότεραΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ
ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Είδη καλουπωμάτων Μετατροπές και έλεγχοι τύπου Τελευταία ενημέρωση: Οκτώβριος 2013 Εισαγωγή - 2 Όπως και στη Java, στη C++
Διαβάστε περισσότεραΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ
ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:
Διαβάστε περισσότεραΕισαγωγή στην πληροφορική
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης
Διαβάστε περισσότερα