Περιεχόµενα - Η γλώσσα C++ σε βάθος

Περιεχόµενα
Κεφάλαιο 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