Stephen R. Davis fängt von vorn an: Wie arbeitet ein Programm? Wie installiert man die Programmierumgebung und den Compiler? Und was ist das überhaupt? Als nächstes lernen Sie grundlegende Programmiertechniken kennen: Variablendeklaration, Schleifen, Funktionen und anderes mehr. Fünf Kapitel widmen sich den unterschiedlichen Variablentypen, sodass Sie für die berühmten C++-Zeiger gut gerüstet sind. War gar nicht schwer? Es folgt eine Einführung in das objektorientierte Programmieren, und bevor Sie es sich versehen, liegen auch die Vererbung von Klassen, das Überladen von Operatoren und der Ausnahmemechanismus in Ihrer Reichweite. Mit den Programmbeispielen zum Herunterladen können Sie das Gelernte direkt ausprobieren.
Inhaltsverzeichnis
Ü ber den Autor 9 Widmung 10
Einfü hrung 23
Ü ber dieses Buch 23
Tö richte Annahmen ü ber den Leser 24
Wie dieses Buch organisiert ist 25
Teil I: Programmieren in C++ - die ersten Schritte 25
Teil II: Ein Programm schreiben: Entscheidungen, Entscheidungen 25
Teil III: Prozedural programmieren 25
Teil IV: Datenstrukturen 25
Teil V: Objektorientierte Programmierung 26
Teil VI: Fü r Fortgeschrittene 26
Teil VII: Der Top-Ten-Teil 26
Symbole in diesem Buch 26
Wie es weitergeht 27
Teil I Programmieren in C++ - die ersten Schritte 29
Kapitel 1 Was ist ein Programm? 31
Worin unterscheidet sich mein Sohn von einem Computer? 31
Einen 'menschlichen Computer' programmieren 33
Den Algorithmus erstellen 33
Die Entwicklung der Reifenwechsel-Sprache 34
Das Programm erstellen 34
Computerprozessoren 38
Computersprachen 38
Hö here Sprachen 40
Die Sprache C++ 40
Kapitel 2 Code::Blocks installieren 43
Der Kompilierungsvorgang 43
Code::Blocks installieren 45
Installation unter Windows 45
Installation unter Ubuntu Linux 48
Installation unter Mac OS 50
Code::Blocks einrichten 54
Die Code::Blocks-Installation testen 57
Das Projekt anlegen 57
Ihr Standardprojekt testen 62
Kapitel 3 Ihr erstes Programm 65
Ein neues Projekt anlegen 65
Dateinamenerweiterungen 67
Die Eingabe Ihres Programms 69
Das Programm erstellen 71
Was alles schiefgehen kann 71
Falsch geschriebene Befehle 71
Fehlendes Semikolon 73
Die Beispieldateien verwenden 74
Das Programm ausfü hren 75
Wie das Programm funktioniert 75
Die Vorlage 76
Das Conversion-Programm 77
Teil II Ein Programm schreiben: Entscheidungen, Entscheidungen 79
Kapitel 4 Integer-Ausdrü cke - fü r ganze Zahlen 81
Variablen deklarieren 81
Variablennamen 82
Einer Variablen einen Wert zuweisen 83
Eine Variable bei der Deklaration initialisieren 83
Ganzzahlige Konstanten 84
Ausdrü cke 85
Binä re Operatoren 86
Zusammengesetzte Ausdrü cke auflö sen 87
Unä re Operatoren 88
Die speziellen Zuweisungsoperatoren 90
Kapitel 5 Zeichenausdrü cke 93
Character-Variablen definieren 93
Zeichen codieren 93
Beispiel fü r die Zeichencodierung 96
Zeichenketten codieren 98
Sonderzeichen-Konstanten 98
Kapitel 6 Entscheidungen, Entscheidungen! 101
Die if-Anweisung 101
Vergleichsoperatoren 102
Geschweifte Klammern sind kein Luxus 104
Und andernfalls? 106
Verschachtelte if-Anweisungen 108
Zusammengesetzte bedingte Ausdrü cke 111
Kapitel 7 Ausfü hrungspfade wechseln 113
Mit der switch-Anweisung den Programmablauf steuern 113
Durchgerasselt: Habe ich es kaputtgemacht? 116
Implementierung eines einfachen Taschenrechners mit der switch-Anweisung 117
Kapitel 8 Programme debuggen, Teil I 121
Fehlertypen identifizieren 121
Fehler vermeiden 122
Codieren mit Stil 122
Namenskonventionen fü r Variablen festlegen 123
Den ersten Fehler finden - mit ein bisschen Unterstü tzung 124
Den Laufzeitfehler finden 125
Testdaten formulieren 125
Tests durchfü hren 126
Sehen wir nach, was das Programm macht 126
Teil III Prozedural programmieren 129
Kapitel 9 while - ein ewiger Kreislauf 131
while-Schleifen 131
Aus einer Schleife ausbrechen 134
Verschachtelte Schleifen 137
Kapitel 10 Weiter mit for-Schleifen 143
Die vier Teile jeder Schleife 143
Wir betrachten ein Beispiel 145
Mit dem Komma-Operator mehr erledigen 146
Kapitel 11 Funktionen 151
Aufgaben in Funktionen zerlegen 151
Die Arbeitsweise von Funktionen verstehen 152
Eine Funktion schreiben und verwenden 153
Dinge zurü ckgeben 154
Ein Beispiel 155
An Funktionen Argumente ü bergeben 158
Funktion mit Argumenten 158
Funktionen mit mehreren Argumenten 160
main() 161
Funktionsprototyp-Deklarationen definieren 161
Kapitel 12 Programme in Module unterteilen 165
Programme aufsplitten 165
Teilen ist gar nicht so schwer 166
Factorial. cpp erstellen 166
Eine #include-Datei erstellen 169
#include-Dateien einbinden 171
main. cpp erstellen 172
Das Ergebnis erstellen 174
Verwendung der C++-Standardbibliothek 174
Gü ltigkeitsbereiche von Variablen 175
Kapitel 13 Programme debuggen, Teil 2 177
Debugging eines Programms mit Rechenschwä che 177
Einheitentests durchfü hren 179
Eine Funktion fü r Tests ausstatten 180
Zurü ck zum Einheitentest 184
Teil IV Datenstrukturen 187
Kapitel 14 Andere numerische Variablentypen 189
Die Grenzen von Integern in C++ 189
Integer-Abrundung 189
Begrenzter Wertebereich 190
Ein 'doppelter' Typ fü r reelle Zahlen 191
Eine Lö sung fü r das Abrundungsproblem 191
Wenn ein Integer kein Integer ist 192
Die Grenzen eines double erkennen 193
Variablengrö ß e - die lange und die kurze Form 195
Wie weit reichen Zahlen? 197
Konstantentypen 198
Funktionen unterschiedliche Typen ü bergeben 199
Funktionsnamen ü berladen 199
Gemischtes Ü berladen 200
Kapitel 15 Arrays 203
Was ist ein Array? 203
Ein Array deklarieren 204
Array-Elemente ü ber einen Index ansprechen 204
Ein Beispiel 206
Ein Array initialisieren 208
Kapitel 16 Arrays mit Charakter 211
Das ASCII-Zero-Character-Array 211
Ein ASCIIZ-Array deklarieren und initialisieren 212
Ein Beispiel 213
Ein detaillierteres Beispiel 215
Hackerabwehr 218
Muss ich das wirklich alles machen? 220
Kapitel 17 Zeiger in C++ 223
Was ist ein Zeiger? 223
Einen Zeiger deklarieren 224
Einer Funktion Argumente ü bergeben 226
Argumente als Wert ü bergeben 226
Argumente als Referenz ü bergeben 229
Das groß e Ganze 231
Typen von Referenzargumenten 233
Speicherstapel 233
Brauchen Sie wirklich ein neues Schlü sselwort? 234
Vergessen Sie nicht, zum Schluss wieder aufzurä umen! 235
Ein Beispiel 236
Kapitel 18 C++-Zeiger - auf den zweiten Blick 239
Zeiger und Arrays 239
Operationen fü r Zeiger 239
Zeiger-Addition im Vergleich zur Indizierung eines Arrays 242
Der Inkrementoperator fü r Zeiger 244
Warum plagen wir uns mit Array-Zeigern? 247
Operationen fü r verschiedene Zeigertypen 248
Die Sache mit den Konstanten 248
Unterschiede zwischen Zeigern und Arrays 249
Meine Argumente von main() 250
Zeigerarrays 250
Arrays mit Argumenten 251
Kapitel 19 Programmieren mit Klasse 259
Daten gruppieren 259
Die Klasse 260
Das Objekt 261
Arrays von Objekten 262
Ein Beispiel 263
Kapitel 20 Programme debuggen, Teil 3 271
Ein neuer Ansatz fü r das Debugging 271
Die Lö sung 272
Debuggen Schritt fü r Schritt 272
Den Debugger starten 275
Navigation durch ein Programm mit dem Debugger 278
Den (ersten) Fehler korrigieren 282
Den zweiten Fehler finden und korrigieren 284
Teil V Objektorientierte Programmierung 287
Kapitel 21 Was ist objektorientierte Programmierung? 289
Abstraktion und Mikrowellenö fen 289
Prozedurale Nachos 290
Objektorientierte Nachos 291
Klassifizierung und Mikrowellenö fen 291
Warum sollten wir Objekte auf diese Weise aufbauen? 292
Abgeschlossene Klassen 293
Kapitel 22 Strukturiertes Spiel: Wie Klassen Dinge erledigen 295
Unsere Objekte aktivieren 295
Eine Elementfunktion erstellen 296
Eine Elementfunktion definieren 297
Namen fü r Klassenelemente 298
Aufruf einer Elementfunktion 299
Zugriff auf andere Elemente von einer Elementfunktion aus 300
Eine Elementfunktion hinter der Klasse halten 301
Elementfunktionen ü berladen 302
Kapitel 23 Zeiger auf Objekte 305
Zeiger auf Objekte 305
Pfeilsyntax 306
Aufruf aller Elementfunktionen 306
Funktionen Objekte ü bergeben 307
Aufruf einer Funktion mit einem Objektwert 307
Aufruf einer Funktion mit einem Objektzeiger 309
Ein Beispiel 310
Objekte auf dem Stapel reservieren 314
Kapitel 24 Bitte nicht stö ren: Geschü tzte Elemente 317
Elemente schü tzen 317
Warum Sie geschü tzte Elemente brauchen 317
Elemente schü tzen 318
Also? 321
Ein Freund, ein guter Freund . . . 322
Kapitel 25 Objekten einen guten Start verschaffen 325
Der Konstruktor 325
Einschrä nkungen von Konstruktoren 327
Kann ich ein Beispiel sehen? 327
Datenelemente konstruieren 330
Destruktoren 333
Ein Beispiel 334
Datenelemente zerstö ren 337
Kapitel 26 Konstruktive Argumente 341
Konstruktoren mit Argumenten 341
Ein Beispiel 342
Den Konstruktor ü berladen 346
Der Standard-Standardkonstruktor 350
Datenelemente konstruieren 352
Datenelemente mit dem Standardkonstruktor initialisieren 352
Datenelemente mit einem anderen Konstruktor initialisieren 354
Ein Beispiel 357
Neu in C++ 2011 360
Kapitel 27 Kopieren mit dem Copy-Konstruktor 361
Ein Objekt kopieren 361
Der Standard-Copy-Konstruktor 362
Ein Beispiel 363
Einen Copy-Konstruktor erstellen 366
Kopien vermeiden 369
Teil VI Fü r Fortgeschrittene 371
Kapitel 28 Eine Klasse vererben 373
Vorteile der Vererbung 373
Die Sprachbesonderheiten 374
Vererbung in C++ implementieren 375
Ein Beispiel 376
Eine HAT_EIN-Beziehung 380
Kapitel 29 Virtuelle Funktionen - Realitä t? 383
Elementfunktionen ü berschreiben 383
Frü hes Binden 384
Mehrdeutiger Fall 386
Eine spä te Bindung eingehen 388
Wann nicht virtuell? 391
Virtuelle Aspekte 393
Kapitel 30 Zuweisungsoperatoren ü berladen 397
Einen Operator ü berladen 397
Das Ü berladen des Zuweisungsoperators ist kritisch 398
Ein Beispiel 400
Ihren Eigenen schreiben (oder nicht) 403
Kapitel 31 Stream-I/O 405
Wie Stream-I/O funktioniert 405
Stream-Eingabe/Ausgabe 407
Ein Eingabe-Objekt erstellen 407
Ein Ausgabe-Objekt erstellen 408
Ö ffnen-Modi 409
Was ist der Binä rmodus? 410
Und in welchem Status ist eine Datei? 410
Weitere Elementfunktionen der fstream-Klassen 415
Streams direkt lesen und schreiben 415
Formatsteuerung 419
Und was macht eigentlich endl? 422
Manipulatoren manipulieren 422
Die stringstream-Klassen 423
Kapitel 32 Machen wir eine Ausnahme! 429
Der Ausnahmemechanismus 429
Betrachten wir den Ausnahmemechanismus im Detail! 432
Spezielle Aspekte fü r das Aufwerfen von Ausnahmen 433
Eine benutzerdefinierte Ausnahmeklasse erstellen 433
Einschrä nkungen von Ausnahmeklassen 437
Teil VII Der Top-Ten-Teil 439
Kapitel 33 Zehn Methoden, Fehler zu vermeiden 441
Aktivieren Sie alle Warnungen und Fehlermeldungen! 441
Gewö hnen Sie sich einen klaren und konsistenten Programmierstil an! 442
Kommentieren Sie den Code, wä hrend Sie ihn schreiben! 442
Durchlaufen Sie jeden Pfad mindestens einmal im Einzelschrittmodus im Debugger! 443
Begrenzen Sie die Sichtbarkeit! 443
Verwalten Sie Ihren Stapel! 444
Ü berschreiben Sie Zeiger mit 0, nachdem Sie gelö scht haben, worauf sie zeigen! 444
Verarbeiten Sie Fehler mit Ausnahmen! 445
Deklarieren Sie Destruktoren als virtuell! 445
Stellen Sie einen Copy-Konstruktor und einen ü berladenen Zuweisungsoperator bereit! 445
Kapitel 34 Zehn Dinge, die in diesem Buch nicht abgedeckt sind 447
Der goto-Befehl 447
Der ternä re Operator 448
Binä re Logik 448
Aufzä hlungstypen 448
Namensrä ume 449
Rein virtuelle Funktionen 449
Die string-Klasse 450
Mehrfachvererbung 450
Templates und die Standard Template Library 450
Lambda-Funktionen 451
Stichwortverzeichnis 453