Προλεγόμενα 9 1 Εισαγωγή 15 1.1 Χαρακτηριστικά της γλώσσας 15 1.2 Διαδικασία προγραμματισμού υπό το Unix 17 1.3 Προγραμματίζοντας στην C 19 2 Υπολογιστική 23 2.1 Μεταβλητές και σταθερές 23 2.2 Τύποι δεδομένων 24 2.3 Πράξεις 27 3 Βρόχοι 39 3.1 Ο βρόχος for 39 3.2 Ο βρόχος while 50 3.3 Ο βρόχος do 54 4 Κατασκευές ελέγχου 57 4.1 Διακλάδωση άνευ συνθηκών - goto 57 4.2 Διακλάδωση υπό συνθήκη 59 4.2.1 if 59 4.2.2 if-else 62 4.2.3 Σύνθετοι σχεσιακοί έλεγχοι - OR, AND 64 4.2.4 Φωλιασμένες if 65 4.2.5 else if 67 4.2.6 switch 70 4.2.7 Σημαίες. 75 4.2.8 Ο τελεστής έκφρασης υπό συνθήκη 77 5 Πίνακες 83 5.1 Μονοδιάστατοι πίνακες 83 5.2 Διδιάστατοι πίνακες 90 6 Συναρτήσεις 101 6.1 Η συνάρτηση ως προγραμματιστική κατασκευή 101 6.2 Συναρτήσεις και αυτόματες τοπικές μεταβλητές 103 6.3 Επιστροφή τιμής συνάρτησης 106 6.4 Κλήσεις συναρτήσεων από συναρτήσεις 108 6.5 Συναρτήσεις και πίνακες 11 1 6.6 Συναρτήσεις και τελεστές εκχώρησης 114 6.7 Συναρτήσεις και ολικές μεταβλητές 116
4 C Θεωρία και Πράξη 6.8 Συναρτήσεις και στατικές μεταβλητές 118 6.9 Αναδρομικές συναρτήσεις 119 7 Δομές 121 7.1 Γενικότητες 121 7.2 Δομές και συναρτήσεις 126 7.3 Αρχικές τιμές δομών και πίνακες δομών 1 30 7.4 Δομές εντός δομών 136 7.5 Πίνακες εντός δομών 138 8 Συμβολοσειρές 143 8.1 Βασικές έννοιες 143 8.2 Συμβαλοσειρές μεταβλητού μήκους 145 8.3 Εμφάνιση συμβολοσειρών 147 8.4 'Ελεγχος ισότητας συμβολοσειρών 149 8.5 Εισαγωγή συμβολοσειρών 151 8.6 Εισαγωγή χαρακτήρα 153 8.7 Χαρακτήρες διαφυγής 157 8.8 Συμβολοσειρές και δομές και πίνακες 160 8.9 Μετατροπές χαρακτήρων 164 9 Δείκτες 167 9.1 Γενική θεώρηση 167 9.2 Δείκτες και δομές 171 9.3 Δείκτες εντός δομών 1 74 9.4 Συνδεδεμένες λίστες 175 9.5 Δείκτες και συναρτήσεις 179 9.6 Δείκτες και πίνακες 183 9.7 Δείκτες προς συμβολοσειρές 188 9.8 Δείκτες και οι τελεστές αύξησης και μείωσης 191 9.9 Δείκτες και πράξεις 192 9.10 Δείκτες προς: συναρτήσεις και δείκτες 193 9.11 Δυναμική διανομή μνήμης 198 10 Πράξεις επί των δυαδικών ψηφίων 201 10.1 Προκαταρκτικά 201 10.2 Ο ψηφιακός τελεστής AND 203 10.3 Ο ψηφιακός τελεστής OR 205 10.4 Ο ψηφιακός τελεστής XOR 206 10.5 Ο ψηφιακός τελεστής συμπληρώματος ως προς ένα 208 10.6 Οι ψηφιακοί τελεστές αριστερής και δεξιάς ολίσθησης 210 10.7 bit-πεδία 214
Περιεχόμενα 5 11 Ο προεπεξεργαστής 221 11.1 Η δήλωση προεπεξεργαοτή #define 221 11.2 Η δήλωση προεπεξεργαοτή #include 232 11.3 Οι δηλώσεις προεπεξεργαστπ #ifdef, #else, #endif, #ifndef 234 11.4 Οι δηλώσεις προεπεξεργαοτή #if, #undef 236 12 Πρόσθετα 239 12.1 Απαριθμητοί τύποι δεδομένων 239 12.2 Η δήλωση typedef 242 12.3 Ξεχωριστές μεταγλωττίσεις 243 12.4 Επικοινωνία μεταξύ ενοτήτων προγράμματος 245 12.5 Μορφοποιημένη I/O: printf και scanf 248 12.6 Οι δηλώσεις: break, continue, μηδενική 255 12.7 Ενώσεις 257 12.8 Τα ορίσματα της main 259 13 Αρχεία 261 13.1 I/O αναλογίου 262 13.2 Ανακατεύθυνση I/O σε ένα αρχείο 262 13.3 Τέλος αρχείου 264 13.4 Το ενταμιευμένο σύστημα αρχείων 265 13.5 Η συνάρτηση fopen 266 13.6 Οι συναρτήσεις putc, getc, feof, fclose, ferror, rewind 268 13.7 Η συνάρτηση fseek και I/O τυχαίας πρόσβασης 273 13.8 Οι συναρτήσεις putw, getw 275 13.9 Οι συναρτήσεις fread, fwrite 276 13.10 stdin, stdout, stderr 284 13.11 Οι συναρτήσεις fprintf, fscanf 285 13.12 To μη ενταμιευμένο σύστημα αρχείων 286 13.13 Οι συναρτήσεις open, creat, close 287 13.14 Οι συναρτήσεις write, read, unlink 289 13.15 Η συνάρτηση Iseek και I/O τυχαίας πρόσβασης 292 14 C++ 295 14.1 Γενική επισκόπηση 295 14.2 Δημιουργία αφηρημένων τύπων 296 14.3 Αντικείμενα 298 14.4 Οριομός παραμέτρων συνάρτησης 299 14.5 Σχόλια 14.6 Κλάσεις 14.7 Ορισμός συναρτήσεων μελών 14.8 Κατασκευαστές και καταστροφείς 300 300 3 0 3 307
6 C Θεωρία και Πράξη 14.8.1 Συνάρτηση τύπου friend 312 14.9 Υπερφόρτωση συνάρτησης 313 14.10 Υπερφόρτωση τελεστών 316 14.11 Δημιουργία αφηρημένων τύπων και υπερφόρτωση τελεστών 320 14.12 Άλλα χαρακτηριστικά της C++ 322 14.12.1 Οι τελεστές new και delete 322 14.12.2 Η εντολή inline 323 1 5 Γραφικά 325 15.1 Τεχνολογίες γραφικών 325 15.1.1 Διαλογικά γραφικά (IC: Interactive Graphics) 325 15.1.2 Σχεδίαση με τη 6οήθεια υπολογιστή (CAD) 326 15.1.3 Παραγωγή με τη βοήθεια υπολογιστή (CAM) 326 15.2 Κύρια τεχνολογικά στοιχεία γραφικών 326 15.2.1 Προσαρμογέας οθόνης 326 15.2.2 Σάρωση 327 15.2.3 Απεικόνιση γραφικών 328 15.2.4 Επίδραση της διακριτότητας 328 15.2.5 Κωδικοποίηση γραφικών συστημάτων 329 15.2.6 Καθοδηγητικά προγράμματα 330 15.2.7 Συντεταγμένες γραφικών 330 15.2.8 Γεωμετρία γραφικών στιγμάτων 330 15.2.9 Οπτικές θύρες.. 331 15.3 Συναρτήσεις γραφικών 332 15.3.1 initgraph 332 15.3.2 closegraph 335 15.3.3 detectgraph 336 15.3.4 graphdefaults 337 15.3.5 getgraphmode 337 15.3.6 restorecrtmode 338 15.3.7 setgraphmode 338 15.3.8 cleardevice 339 15.3.9 getimage 340 15.3.10 putimage 341 15.3.11 imagesize 342 15.3.12 floodfill 342 15.3.13 getpixel 343 15.3.14 getmaxx 343 15.3.15 getmaxy 344 15.3.16 getx 344
Περιεχόμενα 7 15.3.17 gety 345 15.3.18 arc 345 15.3.19 bar 346 15.3.20 circle 346 15.3.21 drawpoly 347 15.3.22 floodpoly 348 15.3.23 ellipse 343 15.3.24 line 349 15.3.25 lineto 349 15.3.26 moveto 350 15.3.27 putpixel 350 15.3.28 rectangle 15.3.29 pieslice 352 15.3.30 outtext 15.3.31 setlinestyle 353 15.3.32 getlinesettings 354 15.3.33 setcolor 354 15.3.34 getcolor Εφαρμογές 1. Ταξινόμηση φυσαλίδας 361 2. Ταξινόμηση δι' επιλογής 3. Ταξινόμηση κατά shell 364 4. Ταξινόμηση κατά Hoare 366 5. Ταξινόμηση συμβολοσειρών 367 6. Ταξινόμηση δομών 368 7. Ταξινόμηση αρχείων δίσκου τυχαίας πρόσβασης 370 8. Ταξινόμηση ακολουθιακών αρχείων δίσκου 373 9. Ακολουθιακή αναζήτηση 377 10. Δυαδική αναζήτηση 377 11. Χρονοδρομολογητής απλού γεγονότος 378 12. Αριθμομηχανή τεσσάρων πράξεων 383 13. Ταχυδρομική λίστα 14. Παρουσίαση δυαδικού δέντρου 15. Διαχείριση μνήμης 16. Ένας συντάκτης κειμένου 17. Μουσική 18. Βασική στατιστική 18.1 Ο μέσος όρος 18.2 Η διάμεσος 351 352 355 3^3 38^ 39 5 3^7 398 406 407 408
8 C Θεωρία και Πράξη 18.3 Η επικρατούσα τιμή 409 18.4 Η τυπική απόκλιση 410 18.5 Η γραμμική παλινδόμηση 411 19 Κρυπτογράφηση 41 2 20. Παραγωγή τυχαίων αριθμών 418 21. Συμπίεση δεδομένων 419 Παράρτημα Α 423 ΠΕΡΙΛΗΨΗ C-ΒΙΒΛΙΟΘΗΚΗΣ ANSI 423 Παράρτημα Β 425 ΟΙ ΒΙΒΛΙΟΘΗΚΕΣ ΤΗΣ C ΣΕ ΠΕΡΙΒΑΛΛΟΝ UNIX 425 1. Συναρτήσεις συμβολοσειρών 425 2. Συναρτήσεις χαρακτήρων 427 3. Συναρτήσεις I/O 428 3.1 Συναρτήσεις γενικού χαρακτήρα (άνοιγμα/κλείσιμο αρχείων) 429 3.2 Συναρτήσεις εισαγωγής χαρακτήρων 431 3.3 Συναρτήσεις εισαγωγής συμβολοσειρών 432 3.4 Συναρτήσεις μορφοποιημένης (formatted) εισόδου 432 3.5 Συναρτήσεις εξόδου χαρακτήρων 433 3.6 Συναρτήσεις εξόδου συμβολοσειρών 433 3.7 Συναρτήσεις μορφοποιημένης εξόδου 434 3.8 Οι συναρτήσεις I/O fread, fwrite 434 4. Συναρτήσεις μετατροπής μορφής (format) εντός μνήμης 435 5. Συναρτήσεις δυναμικής διανομής μνήμης 436 Παράρτημα Γ 437 Ο ΣΥΝΤΑΚΤΗΣ ΚΕΙΜΕΝΟΥ νί 437 1. Εντολές σε κατάσταση εντολών για μετάβαση σε κατάσταση εισαγωγής 438 2. Εντολές σε κατάσταση εντολών για διαγραφή 439 3. Εντολές σε κατάσταση εντολών για τοποθέτηση του δρομέα 439 4. Εντολές σε κατάσταση εντολών για τροποποίηση κειμένου 440 5. Εντολές σε κατάσταση εντολών για διαχείριση οθόνης 440 6. Αλλες εντολές σε κατάσταση εντολών 440 7. Εντολές σε κατάσταση τελευταίας γραμμής (last line mode) 441 8. Εντολές σε κατάσταση εισαγωγής 443 9. Παράδειγμα χρήσης του νί 444 Ευρετήριο Ορων 447 Βιβλιογραφία 451 Λίγα λόγια για τον συγγραφέα 452