Συλλογές ΣΥΛΛΟΓΕΣ. Γεώργιος Παπαϊωάννου ( )
|
|
- Υπάτιος Αναστασιάδης
- 7 χρόνια πριν
- Προβολές:
Transcript
1 ΣΥΛΛΟΓΕΣ Γεώργιος Παπαϊωάννου ( )
2 Περιγραφή: Βασικές Συλογές της STL Η έννοια του iterator Τροποποίηση και παραμετροποίηση συλλογών της STL Έλεγχος ισοτιμίας και διάταξης Hashing Υλοποίηση δικών μας δομών (Stack<T>) Iterators σε δικές μας δομές και συλλογές (Stack<T>::iterator) Τελευταία ενημέρωση: Οκτώβριος 2013 Εισαγωγή - 2
3 vector<t> list<t> (και forward_list<t> (C++11) ) deque<t> (double-ended queue, προφ. «ντεκ») stack<t> queue<t> set<t> (και multiset<t>) map<key,t> (και multimap<key,t>) priority_queue<t> unordered_set<t> (και unordered_multiset<t>) (C++11) unirdered_map<key,t> (και unordered_multimap<key,t>) (C++11) 3
4 Οι συλλογές διαφοροποιούνται με βάση: Τη λειτουργικότητά τους Θέλω FIFO, LIFO, τυχαία προσπέλαση; Θέλω ταξινομημένα στοιχεία; Θέλω μοναδικά στοιχεία; Την ταχύτητα που θέλω σε κάποια ενέργεια πάνω σε αυτές Θέλω γρήγορη σειριακή προσπέλαση; Θέλω γρήγορη εισαγωγή στην αρχή / τέλος; Θέλω γρήγορες διαγραφές/εισαγωγές σε τυχαία θέση; Δεν υπάρχει «η» βέλτιστη δομή συλλογής! Υπάρχει η βέλτιστη «για μια συγκεκριμένη δουλειά» 4
5 Κάθε συλλογή βασίζεται σε μια συγκεκριμένη δομή δεδομένων που της προσδίδει ειδικά πλεονεκτήματα / μειονεκτήματα απόδοσης, π.χ. Πίνακες Συνδεδεμένες λίστες Hash maps Red-Black trees 5
6 Ίδια λογική με τη Java: δυναμική γραμμική δομή τυχαίας προσπέλασης (δυναμικός πίνακας) Εγγυάται τη διατήρηση της σειράς εισαγωγής των δεδομένων Επιδόσεις: Γρήγορη σειριακή διάσχιση Γρήγορη εισαγωγή/διαγραφή στο τέλος Αργή εισαγωγή/διαγραφή στην αρχή ή ενδιάμεσα Συμπαγής αποθήκευση (συνεχόμενη μνήμη) cache coherence, απλό indexing Δυναμική επέκταση μεγέθους, όταν υπερβούμε τον μέγιστο προ-εκχωρημένο χώρο 6
7 Είναι μια διπλά συνδεδεμένη λίστα από κόμβους που δεν είναι απαραίτητα συνεκτικοί στη μνήμη Υλοποιεί πράξεις εισαγωγής και διαγραφής και από τα δύο άκρα, καθώς και σε συγκεκριμένους κόμβους Επιδόσεις: Μέτρια σειριακή διάσχιση (συγκριτικά με το vector) λόγω μετακίνησης μέσω δείκτη και κατακερματισμού της μνήμης Αργή τυχαία προσπέλαση (γίνεται ακολουθιακά) Γρήγορη διαγραφή και εισαγωγή σε οποιοδήποτε σημείο 7
8 Σειριακές συλλογές που επιτρέπουν αποδοτική εισαγωγή και διαγραφή στα δύο άκρα (αντίθετα με το vector στον οποίο είναι γρήγορη μόνο στο τέλος) Υλοποιούνται με δυναμικούς πίνακες Δεν εγγυώνται την αποθήκευση όλων των δεδομένων σε ένα συνεχόμενο πίνακα στη μνήμη Βασική δομή wrapper συλλογών όπως η stack και η queue Επιδόσεις: Σειριακή και τυχαία προσπέλαση συγκρίσιμη με του vector Γρήγορη εισαγωγή / διαγραφή στην αρχή και στο τέλος Αργή εισαγωγή / διαγραφή σε τυχαίο σημείο 8
9 Υλοποιεί ένα ταξινομημένο σύνολο με μοναδικά στοιχεία Τα στοιχεία διαβάζονται ταξινομημένα, ανεξάρτητα από τη σειρά εισαγωγής τους Επιτρέπει ελέγχους ύπαρξης στοιχείου (find()) Προσαρμόσιμος έλεγχος ισοτιμίας Επιδόσεις: Είναι δυαδικά δένδρα, «σχεδόν» ισοζυγισμένα (π.χ. RB-trees) Γρήγορη αναζήτηση (όχι όμως Ο(1)) Μέτρια γρήγορη (amortized) εισαγωγή και διαγραφή παντού 9
10 Υλοποιεί ένα ταξινομημένο σύνολο ζευγών κλειδιώντιμών Τα στοιχεία διαβάζονται ταξινομημένα, ανεξάρτητα από τη σειρά εισαγωγής τους Επιτρέπει ελέγχους ύπαρξης στοιχείου (find()) Προσαρμόσιμος έλεγχος ισοτιμίας Επιδόσεις: Υλοποιημένα ως δυαδικά δέντρα αναζήτησης Μέτρια γρήγορη εισαγωγή/αναζήτηση/διαγραφή με κλειδί 10
11 #include <map> int main() map<string,int> data; data.insert(pair<string,int>("papaioannou",8)); data["tsatiris"]=9; Επιστρέφει iterator: map<string,int>::iterator map<string,int>::iterator result = data.find("tsatiris"); if (result!=data.end()) Ισοδύναμο της insert Έλεγχος ύπαρξης στοιχείου cout << result->first << " grade is " << result->second << endl; return 0; <string,int> first:το κλειδί // Τυπώνει: Tsatiris grade is 9 <string,int> second: H τιμή 11
12 Υλοποιεί ένα hash table Τα στοιχεία δε διαβάζονται ταξινομημένα Επιτρέπει ελέγχους ύπαρξης στοιχείου (find()) Προσαρμόσιμος έλεγχος ισοτιμίας Προσαρμόσιμο hash code Επιδόσεις: Υλοποιημένα ως τυπικό hash table Γρήγορη εισαγωγή, διαγραφή, αναζήτηση (εξαρτάται από την ποιότητα του hash code) Μέτρια διάσχιση στοιχείων 12
13 Κάποιες συλλογές είναι adapters άλλων, δηλαδή διαμορφώνουν τη λειτουργικότητα βασικότερων συλλογών για να προσδώσουν ειδικά χαρακτηριστικά π.χ.: η queue είναι εσωτερικά ένα deque () Τέτοιες είναι οι stack, queue, priority_queue Μπορούμε να αλλάξουμε την εσωτερική δομή με άλλη που μας κάνει καλύτερα για ένα πρόβλημα (ή δική μας!): Aρκεί να παρέχει τις μεθόδους που καλεί η εξωτερική κλάση Π.χ.: template <class T, class Container = deque<t> > class queue template <typename T> class MyQueue : public queue<t,list<t>> ; 13
14 Όλες οι συλλογές υποστηρίζουν κάποια μορφή iterator O iterator είναι μια κλάση που μας επιτρέπει να διασχίζουμε μια συλλογή διαβάζοντας το επόμενο (το προηγούμενο ή και τυχαίο) στοιχείο από αυτή Παρέχει ένα ενιαίο Interface για τη διάσχιση συλλογών, ανεξάρτητα από την εσωτερική τους αναπαράσταση Η ακριβής λειτουργία που επιτρέπεται να κάνει ο Iterator εξαρτάται από το είδος του (forward iterator, bidirectional iterator, random iterator) Κάθε συλλογή παράγει μια εξειδίκευση αυτής της κλάσης και μάλιστα μέσω templates 14
15 map<string,int> grades; grades["tsatiris"]=8; grades["tampourlos"]=9; grades["papapanagiotou"]=6; grades["makris"]=5; map<string,int>::iterator result; typedef map<string,int>::iterator grade_iterator; for (grade_iterator iter = grades.begin(); iter!= grades.end(); ++iter) cout << iter->first << " grade is " << iter->second << endl; C++11: Αυτόματος τύπος (εξάγεται από τον compiler με βάση τον τύπο του δεξιού μέλους της ανάθεσης) C++11: for each in operator for (auto iter : grades) cout << iter->first << " grade is " << iter->second << endl; 15
16 Όλες οι συλλογές διαθέτουν τουλάχιστον δύο μεθόδους επιστροφής τύπου iterator στα άκρα τους: begin(): iterator που «δείχνει» στο πρώτο διαθέσιμο στοιχείο. Το «πρώτο» δεν έχει να κάνει με τη φυσική διάταξη των στοιχείων στη μνήμη, αλλά καθορίζεται από τη λειτουργία της δομής end(): iterator σε μια άκυρη θέση («τέρμα») στη συλλογή Παρατήρηση: Οι iterators ΔΕΝ είναι pointers! Είναι στιγμιότυπα τύπου iterator Όμως συνήθως κάνουν override τον τελεστή * για ομοιομορφία (περισσότερα στους Custom Iterators) 16
17 Εκτός από τους τύπους που αποθηκεύονται μέσα σε μια συλλογή, επιτρέπεται να τροποποιήσουμε (μεταξύ άλλων) και: Την κλάση που προσδιορίζει τον τελεστή σύγκρισης για την ταξινόμηση ή ισοτιμία Τη γεννήτρια hash codes (όπου υπάρχει) Προφανώς, μπορούμε Να επεκτείνουμε μια από τις υπάρχουσες συλλογές ή Να ορίσουμε δικές μας συλλογές και δικούς μας iterators 17
18 Στις συλλογές που δεν ορίζεται διάταξη (π.χ. unordered_map), μπορούμε να αλλάξουμε την πράξη της ισοτιμίας equal_to (==) Στις συλλογές που ορίζεται διάταξη των στοιχείων (ταξινόμημένες, π.χ. set) μπορούμε να αλλάξουμε τη συμπεριφορά της πράξης less (<) Έμμεσα, στη δεύτερη περίπτωση προσδιορίζεται και η ισοτιμία: equal_to(a,b):=!a<b &&!B<A 18
19 class Bottle private: float volume; public: Bottle(float vol): volume(vol) ; inline const float getvolume() const return volume; ; class BottleCompare public: bool operator() (const Bottle& x, const Bottle& y) const return x.getvolume()<y.getvolume(); ; int main() set<bottle,bottlecompare> bottle_types; bottle_types.insert(bottle(500.0f)); bottle_types.insert(bottle(330.0f)); bottle_types.insert(bottle(330.0f)); bottle_types.insert(bottle(200.0f)); for (auto iter=bottle_types.begin(); iter!=bottle_types.end(); iter++) Bottle type = *iter; cout << type.getvolume() << " " << endl; return 0; 19
20 class Bottle private: float volume; public: Bottle(float vol): volume(vol) ; const float getvolume() return volume; const bool operator < (const Bottle & right) const return volume < right.volume; ; int main() set<bottle> bottle_types; bottle_types.insert(bottle(500.0f)); bottle_types.insert(bottle(330.0f)); bottle_types.insert(bottle(330.0f)); bottle_types.insert(bottle(200.0f)); for (auto iter=bottle_types.begin(); iter!=bottle_types.end(); iter++) Bottle type = *iter; cout << type.getvolume() << " " << endl; return 0; 20
21 Έστω ότι θέλουμε να κρατάμε σε ένα unordered_map ζεύγη με την ιδιότητα της κυκλικής ολίσθησης (π.χ. τύπου string), δηλαδή τα κλειδιά abcd, dabc, cdab και bcda να θεωρούνται «ίσα». Ένας τρόπος να το κάνουμε αποδοτικά αυτό είναι να κατασκευάσουμε μια κλάση σύγκρισης που να εξασφαλίζει ακριβώς αυτό και να την περάσουμε ως όρισμα στο unordered_map 21
22 class equals public: bool operator() (const string& t1, const string& t2) const size_t sz1 = t1.size(); size_t sz2 = t2.size(); if (sz1!=sz2) return false; ; string temp = t1; for (unsigned int i=0; i<sz1; i++) std::rotate(temp.begin(),temp.begin()+1,temp.end()); if (!temp.compare(t2) ) return true; return false; Ναι, είμαστε τυχεροί, ένα string είναι κι αυτό συλλογή! Μπορούμε να εφαρμόσουμε πάνω του έναν από τους πολλούς έτοιμους αλγόριθμους που ισχύουν για επεξεργασία συλλογών (εδώ rotate: κυκλική ολίσθηση C++11) 22
23 int main() unordered_map<string,int,hash<string>,equals> data; data.rehash(32); data["abcd"] = 100; data["bcda"] = 200; Ορίζουμε τον αριθμό των buckets Βάζουμε 2 στοιχεία με ισότιμο κλειδί Ορίζουμε ένα unordered_map με κλειδιά string, τιμές int, τη default hashing κλάση (std::hash) και δική μας κλάση ισοτιμίας (καλείται ο τελεστής της operator() ) for (auto iter=data.begin(); iter!=data.end(); iter++) cout << iter->second << " " << endl; Και περιμένουμε να μη βάλει 2 διαφορετικά δεδομένα, αλλά να αντικαταστήσει την τιμή στο υπάρχον κλειδί // τυπώνει: 100 // 200 αλλά δε συμβαίνει αυτό! Τι πήγε στραβά; 23
24 Τι πήγε στραβά; Για να φτάσει το unordered_map να εξετάσει την ισοτιμία, πρέπει να κάνει τα ακόλουθα βήματα: 1. Υπολογισμός του hash code του νέου κλειδιού 2. Εύρεση του κατάλληλου κουβά που αντιστοιχεί στο hash code ( f(hash code) mod N buckets ) 3. Αναζήτηση (γραμμική) μέσα στον κουβά, εξετάζοντας την ισοτιμία με όλα τα στοιχεία του κουβά Στο παράδειγμά μας, δεν έφτασε ποτέ στο βήμα 3! Το βήμα 2 που χρησιμοποιεί τον προεπιλεγμένο έλεγχο ισοτιμίας για strings (==) έβγαλε άλλο hash code και άρα η αναζήτηση έγινε σε λάθος κουβά 24
25 ( bcda, 200) f(hash code) % n = n=8 ( abcd, 100) f(hash code) % n = 7 Σωστός κουβάς για να γίνει ο έλεγχος ισοτιμίας και να δώσει true 25
26 class hashing public: std::size_t operator()(const string& key) const size_t _hash = 0; size_t sz = key.size(); char max = 0; for (unsigned int i=0; i<sz; i++) _hash += 71*(255+key[(i+1)%sz] - key[i]); max = max<key[i]? key[i] : max; _hash+=max; return _hash; ; Κατασκευάζουμε ένα hash code που να είναι αναλλοίωτο στις ολισθήσεις: βασισμένο στο άθροισμα των διαφορών των διαδοχικών στοιχείων. Έτσι, ο κωδικός για το abcd και το cdab είναι ο ίδιος Προσθέτουμε το μέγιστο στοιχείο του string (αριθμητικά) για να διαφέρει ο κωδικός π.χ. του abcd από τον bcde 26
27 int main() unordered_map<string, int, hashing, equals> data; data.rehash(32); data["abcd"] = 100; data["bcda"] = 200; Παρατήρηση: Αρκεί να περάσουμε οποιαδήποτε κλάση που υλοποιεί τον τελεστή std::size_t operator()(const Τ1& key) const Όπου Τ1 ο τύπος του unordered_map <T1, T2, Hash, Compare> for (auto iter=data.begin(); iter!=data.end(); iter++) cout << iter->second << " " << endl; // τυπώνει:
28 push(7) push(3) i = pop() κενή στοίβα Το i γίνεται 3. 28
29 top αντικείμενα της τάξης StackNode 10 3 Παράσταση κενής στοίβας: 7 top
30 template <typename T> class StackNode const T i; const StackNode* const next; public: T getvalue() const return i; const StackNode* const getnext() const return next; StackNode(const T iin, const StackNode* const nextin = 0) : i(iin), next(nextin) ; 30
31 int main() StackNode<int> n1(7), n2(3, &n1), n3(10, &n2); n3 n n
32 Θέλουμε να μπορούμε να αποθηκεύσουμε οτιδήποτε μέσα στη στοίβα μας templated Θέλουμε να υποστηρίζεται η έννοια της άδειας στοίβας και να μπορούμε να καλέσουμε μεθόδους σε αυτή χρειαζόμαστε μια δομή γενικότερη της StackNode που να περιλαμβάνει StackNode(s) Stack s1 top StackNode n3 10 StackNode n2 3 StackNode n
33 template <typename T = int> class Stack const StackNode<T>* top; void deletestacknodes(); static const StackNode<T>* const copystacknodes( public: ; const StackNode<T>* const originalptr); bool isempty() const return (top == nullptr); void push(t i); T pop(); Stack() : top(nullptr) ~Stack() deletestacknodes(); Stack(const Stack& original); Stack& operator=(const Stack<T>& right); default τύπος, αν δεν προσδιοριστεί κάποιος άλλος. Χρήση: Stack<> mystack 33
34 template <typename T> void Stack<T>::push(const T i) const StackNode<T>* const newtop = new StackNode<T>(i, top); top = newtop; newtop 2 s1 top: push(2) n3 10 n2 3 n
35 template <typename T> T Stack<T>::pop() if(isempty()) return T(); const T value = top->getvalue(); const StackNode<T>* const newtop = top->getnext(); delete top; top = newtop; return value; default initializer (constructor για κλάσεις, default τιμές για βασικούς τύπους) s1 top: newtop n3 n n
36 n3 s1 top: newtop 10 n2 3 n1 7 s1 top: newtop n2 3 n1 7 0 s1 top: newtop n1 7 0 s1 top:
37 template <typename T> void Stack<T>::deleteStackNodes() const StackNode<T>* newtop; while(top!= nullptr) newtop = top->getnext(); delete top; top = newtop; 37
38 originalptr 10 copyptr 10 originalnext 3 copynext Αναδρομική αντιγραφή μικρότερου μέρους της αλυσίδας. 38
39 template <typename T> const StackNode<T>* const Stack<T>::copyStackNodes(const StackNode<T>* const originalptr) if(originalptr == 0) return nullptr; const StackNode<T> const * originalnext = originalptr->getnext(); const StackNode<T> const * copynext = copystacknodes(originalnext); const StackNode<T> const * copyptr = new StackNode(originalPtr->getValue(), copynext); return copyptr; 39
40 Συντομότερη εκδοχή: template <typename T> const StackNode<T>* const Stack<T>::copyStackNodes(const StackNode<T>* const originalptr) if(originalptr == 0) return nullptr; return new StackNode( originalptr->getvalue(), copystacknodes(originalptr->getnext()) ); 40
41 template <typename T> Stack<T>::Stack(const Stack<T>& original) : top(copystacknodes(original.top)) template <typename T> Stack<T>& Stack<T>::operator=(const Stack<T>& right) if ( this == &right) return *this; deletestacknodes(); top = copystacknodes(right.top); return *this; 41
42 int main() Stack<string> s3; s3.push("seven"); s3.push("three"); s3.push("ten"); Stack<string> s4(s3); s4.push("twenty"); cout << s3.pop() << endl; s3 = s4; cout << s3.pop() << endl; cout << s4.pop() << endl; 42
43 Τόσο για λόγους συμβατότητας, όσο και για λόγους ευχρηστίας, είναι καλό να ορίζουμε iterators στις συλλογές που κατασκευάζουμε Να τονίσουμε ότι αυτό είναι ιδιαίτερα χρήσιμο σε μη γραμμικές δομές (π.χ. γράφους, δένδρα) όπου δεν είναι προφανής στο χρήστη ο μηχανισμός διάσχισης της συλλογής μας 43
44 template <typename T> class StackIterator; // forward class declaration // Τη χρειάζεται η Stack template <typename T = int> class Stack... public: typedef StackIterator<T> iterator; // Ορίζουμε κι ένα ψευδώνυμο για τον StackIterator // ως Stack::iterator, για συμβατότητα με την STL StackIterator<T> begin() const; StackIterator<T> end() const; // Μας επιστρέφει την αρχή και το τέλος της // συλλογής μας.... ; // Προφανώς, αφού ένας iterator επιστρέφει την // τρέχουσα τιμή της διάσχισης της συλλογής τύπου // Τ, είναι κι αυτός template 44
45 template <typename T> class StackIterator : public std::iterator<std::forward_iterator_tag, T> const StackNode<T> * node_ptr; // δείκτης στην τρέχουσα θέση const T last_value; // στη Stack public: StackIterator() : node_ptr(nullptr), last_value() StackIterator(const StackIterator<T> & src ) : node_ptr(src.node_ptr), last_value() StackIterator<T> & operator++(); StackIterator<T> operator++(int); bool operator==(const StackIterator<T> & rhs); bool operator!=(const StackIterator<T> & rhs); const T operator*() const; // default constructor // copy constructor // ++iter // iter++ // επιστροφή περιεχομένου protected: StackIterator(const StackNode<T> * const p_node) // χρειαζόμαστε πρόσβαση στον : node_ptr(p_node), last_value() // ειδικό αυτό κατασκευαστή // μόνο από τη Stack (begin, friend class Stack<T>; // end) protected και ; // κάνουμε friend τη Stack 45
46 template <typename T> inline StackIterator<T> & StackIterator<T>::operator++() if (node_ptr==nullptr) // Αν ξεπέρασες το τελευταίο στοιχείο, επέστρεψε return *this; node_ptr = node_ptr->getnext(); // Αλλιώς, προχώρα στο επόμενο return *this; template <typename T> StackIterator<T> StackIterator<T>::operator++(int) StackIterator tmp(*this); // Ο μεταθεματικός τελεστής πρέπει να επιστρέψει ένα αντίγραφο operator++(); // του αντικειμένου πριν συμβεί η μετάβαση στο επόμενο στοιχείο return tmp; // και για αυτό έχει πάντα το επιπρόσθετο κόστος της // δημιουργίας αντιγράφου (με copy constructor) // Να το θυμόμαστε αυτό και να προτιμάμε τον προθεματικό // τελεστή μετακίνησης του iterator. 46
47 template <typename T> bool StackIterator<T>::operator==(const StackIterator<T>& rhs) return node_ptr==rhs.node_ptr; template <typename T> bool StackIterator<T>::operator!=(const StackIterator& rhs) return!this->operator==(rhs); template <typename T> const T StackIterator<T>::operator*() const if (node_ptr!=nullptr) return node_ptr->getvalue(); // Για να μπορούμε να επιστρέφουμε κάτι πάντα, ακόμα else // και σε κενή Stack ή όταν βρίσκεται στο τέρμα ο return last_value; // έχουμε ορίσει μια const μεταβλητή του ίδιου τύπου // με το template 47
48 template <typename T> inline StackIterator<T> Stack<T>::begin() const return StackIterator<T>(top); template <typename T> inline StackIterator<T> Stack<T>::end() const return StackIterator<T>(nullptr); 48
49 int main() Stack<string> mystack; mystack.push("10"); mystack.push("20"); mystack.push("30"); cout << endl; for (Stack<string>::iterator iter=mystack.begin(); iter!=mystack.end(); ++iter) cout << *iter << " "; cout << endl; return 0; // τυπώνει
Προγραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-1 ) 16η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υλοποίηση στοίβας ακεραίων με χρήση τάξεων, δυναμικής καταχώρισης μνήμης
Διαβάστε περισσότεραΔομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ
Δομές Δεδομένων Standard Template Library (STL) 23/3/2017 ΜΠΟΜΠΟΤΑΣ ΑΓΟΡΑΚΗΣ mpompotas@ceid.upatras.gr Εισαγωγή - STL Η Standard Βιβλιοθήκη προτύπων (STL) είναι μια βιβλιοθήκη λογισμικού για την C++ Δημιουργήθηκε
Διαβάστε περισσότεραStandard Template Library (STL) C++ library
Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ Standard Template Library (STL) C++ library Δομές Δεδομένων Μάριος Κενδέα kendea@ceid.upatras.gr Εισαγωγή Η Standard Βιβλιοθήκη προτύπων
Διαβάστε περισσότεραΚλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )
ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση
Διαβάστε περισσότεραΣυλλογές, Στοίβες και Ουρές
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση οποιουδήποτε στοιχείου. Συλλογή (bag) : Επιστρέφει
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 8: C++ ΒΙΒΛΙΟΗΚΗ STL, ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Δομές Δεδομένων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές
Διαβάστε περισσότεραΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ
ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Είδη καλουπωμάτων Μετατροπές και έλεγχοι τύπου Τελευταία ενημέρωση: Οκτώβριος 2013 Εισαγωγή - 2 Όπως και στη Java, στη C++
Διαβάστε περισσότεραΔιάλεξη 05: Αφηρημένοι Τύποι Δεδομένων
Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά ΕΠΛ231 Δομές Δεδομένων
Διαβάστε περισσότεραΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 5. Αφηρημένοι Τύποι Δεδομένων / Στοίβες και Ουρές ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 2 Διάλεξη 05: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα
Διαβάστε περισσότεραΣΧΕΔΙΟΤΥΠΑ (TEMPLATES)
ΣΧΕΔΙΟΤΥΠΑ (TEMPLATES) Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τι είναι τα σχεδιότυπα και που μας εξυπηρετούν Template συναρτήσεις Template κλάσεις Εξειδίκευση σχεδιοτύπων Σχεδιότυπα και
Διαβάστε περισσότεραΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ
ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:
Διαβάστε περισσότεραΤύποι Δεδομένων και Απλές Δομές Δεδομένων. Παύλος Εφραιμίδης V1.0 ( )
Τύποι Δεδομένων και Απλές Δομές Δεδομένων Παύλος Εφραιμίδης V1.0 (2014-01-13) Απλές Δομές Δεδομένων Στην ενότητα αυτή θα γνωρίσουμε ορισμένες απλές Δομές Δεδομένων και θα τις χρησιμοποιήσουμε για την αποδοτική
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
Διαβάστε περισσότεραΔομές Δεδομένων (Data Structures)
Δομές Δεδομένων (Data Structures) Στοίβες Ουρές Στοίβες: Βασικές Έννοιες. Ουρές: Βασικές Έννοιες. Βασικές Λειτουργίες. Παραδείγματα. Στοίβες Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή πρώτη
Διαβάστε περισσότεραΜάθημα 22: Δυαδικά δέντρα (Binary Trees)
Trees Page 1 Μάθημα 22: Δυαδικά δέντρα (Binary Trees) Ένα δένδρο είναι δυαδικό αν όλοι οι κόμβοι του έχουν βαθμό (degree)
Διαβάστε περισσότεραΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ
ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ (Οι ερωτήσεις µε κίτρινη υπογράµµιση είναι εκτός ύλης για φέτος) ΕΙΣΑΓΩΓΗ Q1. Οι Πρωταρχικοί τύποι (primitive types) στη Java 1. Είναι όλοι οι ακέραιοι και όλοι οι πραγµατικοί
Διαβάστε περισσότεραΣύνοψη Προηγούμενου. Λίστες (Lists) Συνδεδεμένες Λίστες: Εισαγωγή (1/2) Συνδεδεμένες Λίστες. Ορέστης Τελέλης
Σύνοψη Προηγούμενου Λίστες (Lists) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς Στοίβες (Stacks) : στην κορυφή της στοίβας ( ) από την κορυφή της στοίβας ( ) Ουρές
Διαβάστε περισσότεραΣτοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 15η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Σχεδιότυπα συναρτήσεων και τάξεων. Αναπαράσταση δυαδικού δέντρου με
Διαβάστε περισσότεραΟνοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα προηγούμενα ακαδημαϊκά έτη: ΚΑΛΗ ΕΠΙΤΥΧΙΑ!
Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Προγραμματισμός Υπολογιστών με C++ Εξεταστική περίοδος: Φεβρουαρίου 2010. Διδάσκων: Α. Δημάκης Γράψτε όλες τις απαντήσεις σας πάνω σε αυτό το
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό
Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό 2013-14 Διδάσκων: Γεώργιος Παπαϊωάννου Μονογραφή επιτηρητή: Στοιχεία Φοιτητή (συμπληρώνεται από το φοιτητή) Όνομα: Αίθουσα/αμφιθέατρο:
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Διαβάστε περισσότεραΠρογραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται
Διαβάστε περισσότεραΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ
ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ηµιουργία και χειρισµός LIFO λιστών µεταβλητού µήκους µε στοιχεία ακεραίους αριθµούς. Γενίκευση για χειρισµό λιστών πραγµατικών
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 18η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υλοποίηση διπλά συνδεδεμένης λίστας ακεραίων με χρήση δεικτών, δυναμικής
Διαβάστε περισσότεραΤελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )
ΤΕΛΕΣΤΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τι είναι οι τελεστές Χρήση τελεστών Υπερφόρτωση τελεστών Chain-linking Τελεστών Τελευταία ενημέρωση: Ιούνιος 2013 Εισαγωγή - 2 Τελεστής
Διαβάστε περισσότεραΟι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Μια δομή δεδομένων στην πληροφορική, συχνά αναπαριστά οντότητες του φυσικού κόσμου στον υπολογιστή. Για την αναπαράσταση αυτή, δημιουργούμε πρώτα ένα αφηρημένο μοντέλο στο οποίο προσδιορίζονται
Διαβάστε περισσότεραΔιδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 12: Δέντρα ΙΙ -Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Δυαδικά Δένδρα - Δυαδικά Δένδρα Αναζήτησης(ΔΔΑ) - Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου - Εισαγωγή
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
Λίστες Λίστες - Απλά Συνδεδεμένες Λίστες - Διπλά Συνδεδεμένες Λίστες Είδη Γραμμικών Λιστών Σειριακή Λίστα Καταλαμβάνει συνεχόμενες θέσεις κύριας μνήμης Συνδεδεμένη Λίστα Οι κόμβοι βρίσκονται σε απομακρυσμένες
Διαβάστε περισσότεραΑλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα)
Ιόνιο Πανεπιστήμιο Τμήμα Πληροφορικής Εισαγωγή στην Επιστήμη των Υπολογιστών 2016-17 Αλγόριθμοι και Δομές Δεδομένων (IΙ) (γράφοι και δένδρα) http://mixstef.github.io/courses/csintro/ Μ.Στεφανιδάκης Αφηρημένες
Διαβάστε περισσότεραΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++
Πέρασμα μεταβλητών, Templates, Συσχετίσεις μεταξύ κλάσεων ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Πέρασμα με τιμή και με αναφορά Template functions και classes
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό
Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό 2013-14 Διδάσκων: Γεώργιος Παπαϊωάννου Μονογραφή επιτηρητή: Στοιχεία Φοιτητή (συμπληρώνεται από το φοιτητή) Όνομα: Αίθουσα/αμφιθέατρο:
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν
Διαβάστε περισσότεραΔομές δεδομένων (2) Αλγόριθμοι
Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student
Διαβάστε περισσότεραΔομές Δεδομένων. Λουκάς Γεωργιάδης.
Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δομή Δεδομένων: Μέθοδος αποθήκευσης
Διαβάστε περισσότεραAVL-trees C++ implementation
Τ Μ Η Μ Α Μ Η Χ Α Ν Ι Κ Ω Ν Η / Υ Κ Α Ι Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ AVL-trees C++ implementation Δομές Δεδομένων Μάριος Κενδέα 31 Μαρτίου 2015 kendea@ceid.upatras.gr Εισαγωγή (1/3) Δυαδικά Δένδρα Αναζήτησης:
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 19 Hashing - Κατακερματισμός 1 / 23 Πίνακες απευθείας πρόσβασης (Direct Access Tables) Οι πίνακες απευθείας
Διαβάστε περισσότερα4. Συνδεδεμένες Λίστες
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 4. Συνδεδεμένες Λίστες 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 10/11/2016 Εισαγωγή
Διαβάστε περισσότεραΔιάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές
Διάλεξη 07: Λίστες Ι Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ευθύγραμμες Απλά Συνδεδεμένες Λίστες (εισαγωγή, εύρεση, διαγραφή) Ευθύγραμμες Διπλά Συνδεδεμένες Λίστες
Διαβάστε περισσότεραΔομές Δεδομένων. Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες
Ενότητα 6: Εφαρμογή Συνδεδεμένων Λιστών: Αλφαβητικό ευρετήριο κειμένου- Υλοποίηση ΑΤΔ Στοίβα και Ουρά με δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Διαβάστε περισσότεραΔιάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Templates ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
Διαβάστε περισσότεραΔιδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 8: Αφηρημένοι Τύποι Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων (ΑΤΔ) Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Στατική Δέσμευση
Διαβάστε περισσότεραΕνδεικτικές Λύσεις σε Επιλεγμένα Θέματα της C++
Ενδεικτικές Λύσεις σε Επιλεγμένα Θέματα της C++ class ListNode public: T data; ListNode * next; ListNode(const ListNode & src) ; data = src.data; if (src.next!=null) next = new ListNode ((const
Διαβάστε περισσότεραΔομές Δεδομένων. Λουκάς Γεωργιάδης. http://www.cs.uoi.gr/~loukas/courses/data_structures/ email: loukas@cs.uoi.gr
Δομές Δεδομένων http://www.cs.uoi.gr/~loukas/courses/data_structures/ Λουκάς Γεωργιάδης email: loukas@cs.uoi.gr Αλγόριθμος: Μέθοδος για την επίλυση ενός προβλήματος Δεδομένα: Σύνολο από πληροφορίες που
Διαβάστε περισσότεραΔιάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα
Διάλεξη 12: Δέντρα ΙΙ Δυαδικά Δέντρα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυαδικά Δένδρα Δυαδικά Δένδρα Αναζήτησης (ΔΔΑ) Εύρεση Τυχαίου, Μέγιστου, Μικρότερου στοιχείου Εισαγωγή στοιχείου
Διαβάστε περισσότεραΚλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack
Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2
Διαβάστε περισσότερα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
Διαβάστε περισσότεραΟνοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ!
Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Προγραμματισμός Υπολογιστών με C++ Εξεταστική περίοδος: Σεπτεμβρίου 2011. Διδάσκων: Α. Δημάκης Γράψτε όλες τις απαντήσεις σας πάνω σε αυτό το
Διαβάστε περισσότεραΚλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1
Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2
Διαβάστε περισσότεραΠεριεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23
Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική
Διαβάστε περισσότεραΑπλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλή
Απλές Δοµές Δεδοµένων Απλές Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες απλές Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος
Διαβάστε περισσότεραΑντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT
= Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω
Διαβάστε περισσότεραStandard Template Library (STL)
Standard Template Library (STL) Η χαρά του προγραμματιστή δαίμων - τεύχος 6 Μορφονιός Κωνσταντίνος http://www.di.uoa.gr/~kmorfo K.Morfonios@di.uoa.gr Περιεχόμενα Τι είναι; Containers Algorithms Iterators
Διαβάστε περισσότεραΕισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Διαβάστε περισσότεραΒασικές Δομές Δεδομένων
Βασικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αφηρημένοι Τύποι Δεδομένων Οι ΑΤΔ Στοίβα και Ουρά Υλοποίηση των ΑΤΔ Στοίβα και Ουρά με Διαδοχική και Δυναμική Χορήγηση
Διαβάστε περισσότεραΠρογραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
Διαβάστε περισσότεραΕισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Διαβάστε περισσότεραΥπερφόρτωση τελεστών
Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας
Διαβάστε περισσότεραΤεχνολογίες Υλοποίησης Αλγορίθµων
Τεχνολογίες Υλοποίησης Αλγορίθµων Χρήστος Ζαρολιάγκης Καθηγητής Τµήµα Μηχ/κων Η/Υ & Πληροφορικής Πανεπιστήµιο Πατρών email: zaro@ceid.upatras.gr Γρηγόρης Πράσινος Υποψήφιος ιδάκτωρ Τµήµα Μηχ/κων Η/Υ &
Διαβάστε περισσότεραΒασικές Έννοιες Δοµών Δεδοµένων
Δοµές Δεδοµένων Δοµές Δεδοµένων Στην ενότητα αυτή θα γνωρίσουµε ορισµένες Δοµές Δεδοµένων και θα τις χρησιµοποιήσουµε για την αποδοτική επίλυση του προβλήµατος του ευσταθούς ταιριάσµατος Βασικές Έννοιες
Διαβάστε περισσότεραΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 3ο: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΜΕΡΟΣ 2 ο : ΣΤΟΙΒΑ & ΟΥΡΑ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ ΣΤΟΙΒΑ 2 Μια στοίβα
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε
Διαβάστε περισσότεραΕπιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012
Επιλογές και Κριτήρια Σχεδιασμού ΑΤΔ Ανεξαρτήτως από Γλώσσα Υλοποίησης 24/4/2012 Κύκλος (Ζωής) Λογισμικού (ΑΤΔ) Γενικά Ορισμός ΑΤΔ (Προδιαγραφές) Οργάνωση Δεδομένων Τι κάνει Υλοποίηση Σχεδιασμός (ανεξάρτητος
Διαβάστε περισσότεραΔομές Δεδομένων Ενότητα 4
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 4: Ουρές Απόστολος Παπαδόπουλος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Διαβάστε περισσότεραΠρογραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Διαβάστε περισσότεραΔιάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing)
Διάλεξη 22: Τεχνικές Κατακερματισμού I (Hashing) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ανασκόπηση Προβλήματος και Προκαταρκτικών Λύσεων Bit Διανύσματα Τεχνικές Κατακερματισμού & Συναρτήσεις
Διαβάστε περισσότεραΔιάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες
Διαβάστε περισσότεραΠληροφορική 2. Αλγόριθμοι
Πληροφορική 2 Αλγόριθμοι 1 2 Τι είναι αλγόριθμος; Αλγόριθμος είναι ένα διατεταγμένο σύνολο από σαφή βήματα το οποίο παράγει κάποιο αποτέλεσμα και τερματίζεται σε πεπερασμένο χρόνο. Ο αλγόριθμος δέχεται
Διαβάστε περισσότεραΔοµές Δεδοµένων. 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων. Ε. Μαρκάκης
Δοµές Δεδοµένων 6η Διάλεξη Αναδροµικές Εξισώσεις και Αφηρηµένοι Τύποι Δεδοµένων Ε. Μαρκάκης Περίληψη Χρήση αναδροµικών εξισώσεων στην ανάλυση αλγορίθµων Αφηρηµένοι τύποι δεδοµένων Συλλογές στοιχείων Στοίβα
Διαβάστε περισσότεραΔιάλεξη 21η: Απλά Συνδεδεμένες Λίστες
Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Απλές Λίστες CS100, 2015-2016 1 / 10 Δομές δεδομένων Ορισμός:
Διαβάστε περισσότεραΔομές Δεδομένων και Αλγόριθμοι
Δομές Δεδομένων και Αλγόριθμοι Χρήστος Γκόγκος ΤΕΙ Ηπείρου Χειμερινό Εξάμηνο 2014-2015 Παρουσίαση 14 Στοίβες 1 / 14 Στοίβες Η στοίβα είναι μια ειδική περίπτωση γραμμικής λίστας στην οποία οι εισαγωγές
Διαβάστε περισσότεραΔιάλεξη 16: Σωροί. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 16: Σωροί Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ουρές Προτεραιότητας - Ο ΑΤΔ Σωρός, Υλοποίηση και πράξεις Ουρά Προτεραιότητας Η δομή
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
Διαβάστε περισσότεραΠρογραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 10η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση των τελεστών εισόδου και εξόδου. Τάξεις και δυναμική καταχώριση
Διαβάστε περισσότεραΠρογραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
Διαβάστε περισσότεραJDSL Java Data Structures Library
ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ JDSL Java Data Structures Library Δομές Δεδομένων Μπαλτάς Αλέξανδρος 24 Μαρτίου 2015 ampaltas@ceid.upatras.gr Εισαγωγή Η JDSL είναι μια βιβλιοθήκη ομών εδομένων σε
Διαβάστε περισσότεραΚατ οίκον Εργασία 3 Σκελετοί Λύσεων
Κατ οίκον Εργασία 3 Σκελετοί Λύσεων Άσκηση 1 (α) Έστω Α(n) και Κ(n) ο αριθμός των ακμών και ο αριθμός των κόμβων ενός αυστηρά δυαδικού δένδρου με n φύλλα. Θέλουμε να αποδείξουμε για κάθε n 1 την πρόταση
Διαβάστε περισσότεραΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 231: Δομές Δεδομένων και Αλγόριθμοι Εαρινό Εξάμηνο 2013 ΘΕΩΡΗΤΙΚΗ ΑΣΚΗΣΗ 2 ΛΥΣΕΙΣ Γραμμικές Δομές Δεδομένων, Ταξινόμηση Διδάσκων Καθηγητής: Παναγιώτης Ανδρέου
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 19/10/2017 Ανακεφαλαίωση:
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 3. Στοίβες & Ουρές 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 4/11/2016 Ανακεφαλαίωση:
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για
Διαβάστε περισσότεραΕργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα
Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Λίστες -Υλοποίηση ταξινομημένης λίστας με δυναμική δέσμευση μνήμης ΕΠΛ035
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι
Διαβάστε περισσότεραΟντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Υπερφόρτωση Τελεστών ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ
Διαβάστε περισσότεραΔιασυνδεδεμένες Δομές. Λίστες. Προγραμματισμός II 1
Διασυνδεδεμένες Δομές Λίστες Προγραμματισμός II 1 lalis@inf.uth.gr Διασυνδεδεμένες δομές Η μνήμη ενός πίνακα δεσμεύεται συνεχόμενα η πρόσβαση στο i-οστό στοιχείο είναι άμεση καθώς η διεύθυνση του είναι
Διαβάστε περισσότεραΕνδεικτικές Λύσεις σε Επιλεγμένα Θέματα της C++
Ενδεικτικές Λύσεις σε Επιλεγμένα Θέματα της C++ class ListNode public: T data; ListNode * next; ListNode(const ListNode & src) ; data = src.data; if (src.next!=null) next = new ListNode ((const
Διαβάστε περισσότεραΔομές Δεδομένων & Αλγόριθμοι
- Πίνακες 1 Πίνακες Οι πίνακες έχουν σταθερό μέγεθος και τύπο δεδομένων. Βασικά πλεονεκτήματά τους είναι η απλότητα προγραμματισμού τους και η ταχύτητα. Ωστόσο δεν παρέχουν την ευελιξία η οποία απαιτείται
Διαβάστε περισσότερα19. ΠΡΟΤΥΠΑ (TEMPLATES)
19. ΠΡΟΤΥΠΑ (TEMPLATES) Πρότυπα συναρτήσεων µε ένα όρισµα int abs (int n) float abs (float n) return (n
Διαβάστε περισσότεραιαφάνειες παρουσίασης #5 (β)
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ http://www.softlab.ntua.gr/~nickie/courses/progtech/ ιδάσκοντες: Γιάννης Μαΐστρος (maistros@cs.ntua.gr) Στάθης Ζάχος (zachos@cs.ntua.gr) (nickie@softlab.ntua.gr) ιαφάνειες παρουσίασης
Διαβάστε περισσότεραΠίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Πίνακες (Μια παλιά άσκηση) Εισαγωγή. A n
Πίνακες (Μια παλιά άσκηση) Πίνακες Κατακερματισμού (Hash Tables) Ορέστης Τελέλης telelis@unipi.gr Τμήμα Ψηφιακών Συστημάτων, Πανεπιστήμιο Πειραιώς A n O(1) (στην πρώτη ελέυθερη θέση στο τέλος του πίνακα).
Διαβάστε περισσότεραΣτοίβες με Δυναμική Δέσμευση Μνήμης
ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές
Διαβάστε περισσότεραΠρογραμματισμός Δομές Δεδομένων
Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που
Διαβάστε περισσότεραΑντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java
Διαβάστε περισσότεραΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία
Διαβάστε περισσότεραΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης
ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 4 ο Στοίβα Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση Αφηρηµένος Τύπος εδοµένων Στοίβα Υλοποίηση µε Πίνακα Υλοποίηση
Διαβάστε περισσότεραΠανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων
Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων 2. Πίνακες 45 23 28 95 71 19 30 2 ομές εδομένων 4 5 Χρήστος ουλκερίδης Τμήμα Ψηφιακών Συστημάτων 12/10/2017
Διαβάστε περισσότερα