Περιεχόµενα Κεφάλαιο 1: Εισαγωγή.....................................................................................17 O στόχος του βιβλίου και σε ποιους απευθύνεται .........................................19 Πως να διαβάσετε αυτό το βιβλίο..................................................................20 Η γλώσσα C++ — Ιστορική αναδροµή .........................................................21 Τα χαρακτηριστικά της C++..........................................................................22 Βασικές έννοιες του προγραµµατισµού.............................................................26 Μεταβλητές....................................................................................................26 Σταθερές.........................................................................................................28 Εντολές ..........................................................................................................28 Αναγνωριστικά ..............................................................................................29 Φιλοσοφίες και τεχνικές προγραµµατισµού ..................................................29 Αντικειµενοστρεφής προγραµµατισµός ............................................................32 Κλάσεις και αντικείµενα (classes and objects)..............................................33 Ενθυλάκωση (Encapsulation) ........................................................................36 Κληρονοµικότητα (Inheritance) ....................................................................37 Πολυµορφισµός (Polymorphism) ..................................................................38 Σχεδιασµός και ανάπτυξη προγραµµάτων.........................................................40 Λογικό διάγραµµα .........................................................................................40 Ανικειµενοστρεφής σχεδιασµός - UML ........................................................43 Κεφάλαιο 2: Μια πρώτη µατιά στη C++..........................................................49 Το πρώτο σας πρόγραµµα στη C++...............................................................50 Η δοµή ενός προγράµµατος στη C++............................................................52 Ο προ-µεταγλωττιστής της C++ ........................................................................68 Η οδηγία #include..........................................................................................69 Η οδηγία #define............................................................................................69 H γλώσσα C++ σε βάθος Κεφάλαιο 3: Προετοιµασία για αργότερα.......................................................77 Η C++ και η µνήµη........................................................................................78 ∆ύο αντικείµενα, µια συνάρτηση και µια εντολή..........................................80 Ολίγη if παρακαλώ ........................................................................................87 Κεφάλαιο 4: Οι βασικοί τύποι δεδοµένων της C++.......................................95 Ο τύπος δεδοµένων int.......................................................................................96 Σταθερές τύπου int.........................................................................................96 Μεταβλητές τύπου int....................................................................................96 ∆υαδικοί αριθµοί .........................................................................................101 Προτεραιότητα τελεστών.............................................................................107 Ο τύπος δεδοµένων float..................................................................................110 Σταθερές τύπου float....................................................................................110 Μεταβλητές τύπου float...............................................................................110 Χρήση δεδοµένων τύπου κινητής υποδιαστολής ........................................111 Ο τύπος δεδοµένων char ..................................................................................117 Σταθερές τύπου char ....................................................................................117 Μεταβλητές τύπου char ...............................................................................119 Πίνακας ASCII ............................................................................................122 Ο τύπος wchar_t ..........................................................................................123 Ο τύπος δεδοµένων bool..................................................................................126 Σταθερές τύπου bool....................................................................................126 Μεταβλητές τύπου bool...............................................................................126 Σταθερές και αυτόµατη µετατροπή τύπου .......................................................127 Απόλυτος προσδιορισµός τύπου σταθερών.................................................127 Κεφάλαιο 5: Εντολές συνθήκης ....................................................................139 Η εντολή if ...................................................................................................140 Η εντολή switch - case.................................................................................144 Ο τελεστής ? ................................................................................................146 8 Περιεχόµενα Κεφάλαιο 6: Εντολές αλλαγής ροής και επανάληψης ................................155 Η "επικίνδυνη" εντολή goto.........................................................................156 Ο βρόχος while ............................................................................................157 O βρόχος do-while .......................................................................................160 Ο βρόχος for ................................................................................................161 Ο τελεστής "κόµµα" (,)................................................................................167 Η εντολή break.............................................................................................168 Η εντολή continue........................................................................................170 Κεφάλαιο 7: Συναρτήσεις ..............................................................................181 Oρισµός µιας συνάρτησης ...........................................................................183 Συναρτήσεις που επιστρέφουν τιµή.............................................................187 Συναρτήσεις που δεν επιστρέφουν τιµή ......................................................188 Παράµετροι συνάρτησης .............................................................................191 Χρήση συναρτήσεων βιβλιοθήκης ..............................................................193 Μετατροπή τύπου (type casting) .................................................................195 Υπερφόρτωση συναρτήσεων ...........................................................................200 Παράµετροι συνάρτησης µε προκαθορισµένες τιµές ..................................201 Υπερφόρτωση συναρτήσεων και ασάφεια ..................................................203 Κεφάλαιο 8: Εµβέλεια µεταβλητών...............................................................217 Τοπικές µεταβλητές (local variables) ..........................................................218 Καθολικές µεταβλητές (global variables)....................................................222 ∆ήλωση τοπικών µεταβλητών σε σύνθετη πρόταση ...................................225 ∆ήλωση τοπικής µεταβλητής σε βρόχο for .................................................225 Στατικές τοπικές µεταβλητές (static local variables)...................................226 Κεφάλαιο 9: ∆είκτες .......................................................................................237 Μεταβλητές δείκτη (pointer variables)........................................................239 ∆ήλωση µιας µεταβλητής δείκτη.................................................................239 Οι τελεστές & και * .....................................................................................241 9 H γλώσσα C++ σε βάθος Μέχρι τώρα µάθαµε ότι ... ...........................................................................243 Η αριθµητική των δεικτών...........................................................................244 ∆είκτες τύπου Void......................................................................................247 ∆είκτης NULL .............................................................................................247 Κεφάλαιο 10: Προχωρηµένα θέµατα συναρτήσεων....................................255 Κλήση συνάρτησης µε τιµή, µε δείκτες και µε αναφορά ............................256 Συναρτήσεις που επιστρέφουν ως τιµή ένα δείκτη......................................260 Συναρτήσεις που επιστρέφουν ως τιµή µια αναφορά..................................262 ∆είκτες σε συναρτήσεις !!! ..........................................................................264 Εµβόλιµες συναρτήσεις (inline functions) ..................................................268 Κεφάλαιο 11: Πίνακες.....................................................................................277 Πίνακες µιας διάστασης...............................................................................278 Οι πίνακες µιας διάστασης και οι δείκτες....................................................280 Προσοχή Προσοχή !!!..................................................................................281 Μεταβίβαση ενός πίνακα ως παραµέτρου µιας συνάρτησης.......................282 Πίνακες χαρακτήρων ...................................................................................284 Συναρτήσεις και πίνακες χαρακτήρων ........................................................284 Συναρτήσεις βιβλιοθήκης που εφαρµόζονται σε συµβολοσειρές ..............286 Αρχική τιµή ενός πίνακα µίας διάστασης....................................................292 Χειρισµός πινάκων µίας διάστασης.............................................................293 Πίνακες πολλών διαστάσεων.......................................................................296 Πίνακες δύο διαστάσεων .............................................................................296 Πίνακες δύο διαστάσεων και δείκτες...........................................................298 Πίνακες δύο διαστάσεων για αποθήκευση σειρών χαρακτήρων................300 Μέγεθος πίνακα ...........................................................................................306 Πίνακες δεικτών σε συναρτήσεις.................................................................306 10 Περιεχόµενα Κεφάλαιο 12: Τύποι δεδοµένων οριζόµενοι από το χρήστη......................321 ∆οµές (structures) ........................................................................................322 Μεταβίβαση των µελών µιας δοµής σε µια συνάρτηση ..............................329 Μεταβίβαση ολόκληρης της δοµής σε συνάρτηση......................................330 ∆είκτες σε δοµές ..........................................................................................332 ∆οµές µέσα σε δοµές ...................................................................................334 Μέλη εύρους ενός, ή περισσοτέρων, bit (bit fields) ....................................336 Ενώσεις (unions)..........................................................................................341 Απαριθµήσεις (Enumerations).....................................................................342 Η χρήση της typedef ....................................................................................343 Κεφάλαιο 13: Κλάσεις και αντικείµενα .........................................................351 Τι είναι µια κλάση (class) ............................................................................352 Τι είναι ένα αντικείµενο (object) .................................................................353 Ορισµός µιας κλάσης...................................................................................354 Ορισµός και χρήση αντικειµένων................................................................356 ∆ηµόσια και ιδιωτικά µέλη µιας κλάσης .....................................................360 Συναρτήσεις δόµησης και αποδόµησης.......................................................364 Υπερφόρτωση συναρτήσεων-µελών............................................................369 Ανάθεση τιµών σε αντικείµενα....................................................................371 Πίνακες από αντικείµενα .............................................................................372 Κεφάλαιο 14: Προχωρηµένα θέµατα κλάσεων και αντικειµένων...............385 Αντικείµενα ως παράµετροι σε συναρτήσεις...............................................386 Συναρτήσεις που επιστρέφουν αντικείµενα.................................................390 Φίλιες συναρτήσεις µιας κλάσης .................................................................391 ∆είκτες σε αντικείµενα ................................................................................394 Στατικά µέλη µιας κλάσης ...........................................................................398 Κεφάλαιο 15: Υπερφόρτωση τελεστών........................................................413 Υπερφόρτωση τελεστών µε τη χρήση συναρτήσεων-µελών.......................416 Υπερφόρτωση τελεστών µε τη χρήση συναρτήσεων που δεν είναι µέλη της κλάσης ....................................................................425 11 H γλώσσα C++ σε βάθος Κεφάλαιο 16: Κληρονοµικότητα....................................................................433 ∆ηµιουργία µιας παράγωγης κλάσης...........................................................435 ∆ηµόσια (public) πρόσβαση βασικής κλάσης .............................................437 Ιδιωτική (private) πρόσβαση βασικής κλάσης ............................................442 Προστατευµένη (protected) πρόσβαση βασικής κλάσης.............................443 Συνοψίζοντας ... ...........................................................................................445 Αλλαγή προσδιορισµού πρόσβασης για συγκεκριµένα µέλη......................446 Πολλαπλά επίπεδα κληρονοµικότητας ........................................................448 Κληρονοµικότητα και συναρτήσεις δόµησης και αποδόµησης .................453 Κεφάλαιο 17: Προχωρηµένα θέµατα κληρονοµικότητας ............................467 ∆είκτες σε παράγωγες κλάσεις ....................................................................468 Εικονικές συναρτήσεις (virtual functions)...................................................471 Γνήσιες εικονικές συναρτήσεις (pure virtual functions) .............................477 Κληρονοµικότητα πολλών επιπέδων ...........................................................480 Πολλαπλή κληρονοµικότητα (multiple inheritance) ...................................482 Κεφάλαιο 18: Ρεύµατα εισόδου & εξόδου της C++......................................503 Προκαθορισµένα αντικείµενα ρευµάτων.....................................................507 Οι τελεστές εισαγωγής << και εξαγωγής >> ...............................................508 Μορφοποιηµένη είσοδος/έξοδος (formatted Ι/Ο)............................................510 Σηµαίες µορφοποίησης (format flags).........................................................511 Χειριστές (manipulators) .............................................................................515 Μορφοποίηση µε συναρτήσεις-µέλη...........................................................520 Χειρισµός αρχείων...........................................................................................529 Μορφοποιηµένη είσοδος/έξοδος σε αρχεία κειµένου .................................535 Μη µορφοποιηµένη είσοδος/έξοδος σε δυαδικά αρχεία .............................544 Αρχεία και αντικείµενα................................................................................553 Τυχαία προσπέλαση αρχείων.......................................................................558 Παράµετροι γραµµής εντολής .....................................................................570 12 Περιεχόµενα Κεφάλαιο 19: Αναδροµή ................................................................................587 Κεφάλαιο 20: Αναζήτηση και ταξινόµηση ....................................................595 Σειριακή αναζήτηση ....................................................................................597 ∆υαδική αναζήτηση (binary search) ............................................................599 Ταξινόµηση φυσαλίδας (bubble sort) ..........................................................602 Ταξινόµηση quick sort.................................................................................605 Αντικειµενοστρεφής προσέγγιση.................................................................612 Ταξινόµηση πίνακα αντικειµένων ...............................................................615 Κεφάλαιο 21: ∆υναµική διαχείριση µνήµης .................................................621 ∆υναµική κατανοµή µνήµης ........................................................................624 Αλλαγή στο µέγεθος ενός πίνακα ................................................................627 Συναρτήσεις δόµησης και αποδόµησης στις περιπτώσεις δυναµικής κατανοµής µνήµης .....................................................................629 Συναρτήσεις δόµησης αντιγράφου (copy constructors) ..............................630 Ο παλαιός µηχανισµός δυναµικής κατανοµής µνήµης................................636 Κεφάλαιο 22: ∆υναµικές δοµές δεδοµένων .................................................639 Συνδεδεµένες λίστες ........................................................................................641 Απλά συνδεδεµένη λίστα (simple linked list)..............................................641 Κυκλικά συνδεδεµένη λίστα (circularly linked list)....................................642 ∆ιπλά συνδεδεµένη λίστα (double linked list).............................................642 Κυκλικά διπλά συνδεδεµένη λίστα..............................................................643 Προσθήκη νέου κόµβου σε µια λίστα..........................................................643 Υλοποίηση συνδεδεµένης λίστας στη C++ .................................................645 ∆υαδικά δένδρα ...............................................................................................663 Χειρισµός ενός δυαδικού δένδρου...............................................................665 Προσθήκη νέου κόµβου...............................................................................666 Αναζήτηση κόµβου......................................................................................668 Επίσκεψη ενός δυαδικού δέντρου ...............................................................669 ∆ιαγραφή κόµβου από το δυαδικό δέντρο...................................................672 Υλοποίηση της δοµής δυαδικού δένδρου ....................................................674 13 H γλώσσα C++ σε βάθος Κεφάλαιο 23: Πρότυπα, εξαιρέσεις και χώροι ονοµάτων...........................691 Πρότυπα συναρτήσεων και κλάσεων ..........................................................692 Πρότυπα συναρτήσεων (function templates)...............................................692 Πρότυπα κλάσεων (class templates)............................................................702 Εξαιρέσεις........................................................................................................715 Γενικά ..........................................................................................................715 Ο χειρισµός εξαιρέσεων της C++ ................................................................717 Συνοψίζοντας ... ...........................................................................................732 Χώροι ονοµάτων..............................................................................................734 Κεφάλαιο 24: Μια µατιά στη καθιερωµένη βιβλιοθήκη προτύπων............749 Τι είναι η καθιερωµένη βιβλιοθήκη προτύπων STL; ..................................750 Η κλάση string .................................................................................................751 ∆ιαχείριση αντικειµένων της κλάσης string ................................................753 Strings ως ρεύµατα εισόδου/εξόδου ............................................................758 Αποδέκτες, αλγόριθµοι και επαναλήπτες ........................................................759 Αποδέκτες ....................................................................................................761 Επαναλήπτες (iterators) ...............................................................................767 Αλγόριθµοι...................................................................................................769 Αλγόριθµοι και αντικείµενα συναρτήσεων .................................................773 ∆ιανύσµατα (vectors)...................................................................................777 Λίστες (lists) ................................................................................................789 Χάρτες (maps) .............................................................................................793 Συµβατότητα αλγορίθµων, επαναληπτών και αποδεκτών...........................800 Για κάτι περισσότερο ..................................................................................803 Παράρτηµα Α: Επιλεγµένες συναρτήσεις βιβλιοθήκης της C++ ................811 Αρχείο κεφαλίδας <cctype> ........................................................................812 Αρχείο κεφαλίδας <cstdlib> ........................................................................813 Αρχείο κεφαλίδας <cstring> ........................................................................814 Αρχείο κεφαλίδας <cmath> .........................................................................817 14 Περιεχόµενα Παράρτηµα Β: Το ολοκληρωµένο περιβάλλον του DEV C++.....................821 Εγκατάσταση του DEV C++ .......................................................................822 Οι βασικές λειτουργίες του DEV C++ ........................................................823 Βιβλιογραφία ..................................................................................................827 Βιβλιογραφικές πηγές ......................................................................................828 Αναφορές στο διαδίκτυο..................................................................................828 Ευρετήριο ....................................................................................................831 15
© Copyright 2024 Paperzz