C++ - eine Einführung
von: Ulrich Breymann
Carl Hanser Fachbuchverlag, 2016
ISBN: 9783446449121
Sprache: Deutsch
398 Seiten, Download: 6467 KB
Format: PDF, auch als Online-Lesen
Inhalt | 6 | ||
Vorwort | 14 | ||
1 Erste Grundlagen | 16 | ||
1.1 Historisches | 16 | ||
1.2 Die Programmiersprache C++ und die Maschine | 17 | ||
1.3 Werkzeuge zum Programmieren | 19 | ||
1.3.1 Der Editor | 19 | ||
1.3.2 Der Compiler | 20 | ||
1.4 Die Beispiele | 21 | ||
1.5 Wo gibt es Hilfe? | 21 | ||
1.6 Das erste Programm! | 22 | ||
1.6.1 Fehlermeldungen | 25 | ||
1.7 Eingaben und Kommentare | 27 | ||
1.7.1 Kommentare und Namen | 29 | ||
1.8 Zahltypen und -bereiche | 30 | ||
1.8.1 Ganze Zahlen | 30 | ||
1.8.2 Kommazahlen | 34 | ||
1.8.3 Bit-Operatoren | 0 | ||
1.8.4 Vorsicht Falle: Umwandlung des Zahltyps | 36 | ||
1.9 Zeichen und Zeichenketten | 39 | ||
1.9.1 Eingabe | 42 | ||
1.9.2 Zeichen und Zahlen | 44 | ||
1.10 C++-Quiz | 45 | ||
2 Zahlen raten – Kontrollstrukturen anwenden | 48 | ||
2.1 Fallunterscheidung mit if | 48 | ||
2.1.1 Vergleichsoperatoren | 50 | ||
2.1.2 Logische Verknüpfungen | 51 | ||
2.1.3 Bedingungsoperator | 53 | ||
2.1.4 if und Fehler bei der Eingabe | 54 | ||
2.1.5 Fehler in Verbindung mit if | 56 | ||
2.1.6 C++-Quiz | 57 | ||
2.2 Wiederholungen | 58 | ||
2.2.1 while-Schleife | 58 | ||
2.2.2 do-while-Schleife | 60 | ||
2.2.3 for-Schleife | 62 | ||
2.2.4 Abbruch mit break | 63 | ||
2.2.5 Abbruch mit boolescher Variable | 64 | ||
2.2.6 continue – zurück an den Anfang | 64 | ||
2.2.7 C++-Quiz | 65 | ||
2.3 Der Zufall kommt ins Spiel | 67 | ||
2.3.1 Bereich für Zufallszahlen definieren | 70 | ||
2.4 Konstante | 72 | ||
2.5 Auswahl mit switch | 74 | ||
2.6 Aufzählungstyp | 77 | ||
2.7 C++-Quiz | 79 | ||
3 Ein- und Ausgabe | 80 | ||
3.1 Standardein- und -ausgabe | 81 | ||
3.1.1 Umleitung auf Betriebssystemebene | 82 | ||
3.2 Ein- und Ausgabe mit Dateien | 83 | ||
3.2.1 Schreiben einer Textdatei (Spielerdatenbank) | 83 | ||
3.2.2 Einlesen der Spielerdatenbank | 85 | ||
3.2.3 Binärdatei | 87 | ||
3.3 Formatierung der Ausgabe | 89 | ||
3.4 C++-Quiz | 90 | ||
4 Aufgaben strukturieren | 92 | ||
4.1 Deklaration und Definition | 93 | ||
4.1.1 Übergabe per Wert | 94 | ||
4.1.2 Überladen einer Funktion | 96 | ||
4.2 Trennung von Schnittstelle und Implementation | 97 | ||
4.2.1 Namensräume | 101 | ||
4.2.2 Präprozessoranweisungen | 102 | ||
4.3 Übergabe per Referenz | 103 | ||
4.4 Dateiübergreifende Sichtbarkeit | 105 | ||
4.5 Rekursion | 107 | ||
4.6 Einschränkung der Sichtbarkeit | 110 | ||
4.7 C++-Quiz | 113 | ||
5 Das Spielfeld | 114 | ||
5.1 Eine Zeile | 114 | ||
5.1.1 Zeilen mit array | 115 | ||
5.1.2 Zeilen mit vector | 117 | ||
5.2 Das Spielfeld – viele Zeilen | 118 | ||
5.2.1 Spielfeld mit vector | 120 | ||
5.2.2 Feld vorbesetzen | 121 | ||
5.3 Die Anwendung – TicTacToe | 122 | ||
5.4 C++-Quiz | 131 | ||
6 Spieler, Würfel und Klassen | 134 | ||
6.1 Objektorientierung | 135 | ||
6.2 Klasse Spieler | 137 | ||
6.2.1 explicit | 142 | ||
6.2.2 private oder public? | 143 | ||
6.3 Trennung von Schnittstelle und Implementation | 144 | ||
6.4 Mehr über Konstruktoren | 146 | ||
6.4.1 Allgemeiner Konstruktor | 146 | ||
6.4.2 Standardkonstruktor | 146 | ||
6.4.3 Kopierkonstruktor | 147 | ||
6.4.4 Einheitliche Initialisierung | 150 | ||
6.5 Die Zerstörung von Objekten | 151 | ||
6.5.1 Der Laufzeit-Stack | 151 | ||
6.5.2 Destruktor | 152 | ||
6.6 Klasse Würfel | 154 | ||
6.7 Würfelspiel: Mensch gegen Maschine | 156 | ||
6.7.1 Der Computer spielt gegen sich selbst | 157 | ||
6.8 C++-Quiz | 162 | ||
7 Grafik mit C++ | 164 | ||
7.1 Ereignisgesteuerte Programmierung | 165 | ||
7.2 Einfache Grafik | 166 | ||
7.3 Klassenvariablen und -funktionen | 170 | ||
7.4 Ereignisse | 172 | ||
7.5 Bewegte Grafik | 174 | ||
7.6 Grafikerzeugung | 182 | ||
7.7 C++-Quiz | 188 | ||
8 Dynamische Speicherbeschaffung | 190 | ||
8.1 Zeiger | 191 | ||
8.1.1 Zeiger auf Zeichen | 193 | ||
8.1.2 Zeigerarithmetik und Wahrheitswerte | 194 | ||
8.2 C-Arrays | 196 | ||
8.2.1 Parameterübergabe per Zeiger | 198 | ||
8.3 Speicherbeschaffung | 199 | ||
8.3.1 Die beste Art! | 199 | ||
8.3.2 new und delete – tun Sie es nicht! | 200 | ||
8.3.3 unique_ptr | 203 | ||
8.3.4 shared_ptr | 205 | ||
8.4 Grafische Objekte dynamisch erzeugen | 207 | ||
8.4.1 Speicherplatz besser nutzen | 209 | ||
8.5 Zeiger als Beobachter | 210 | ||
8.6 C++-Quiz | 212 | ||
9 Vererbung | 214 | ||
9.1 Generalisierung und Spezialisierung | 214 | ||
9.2 Vererbung am Beispiel | 215 | ||
9.2.1 Statische Auswertung | 221 | ||
9.3 Konstruktor erben | 221 | ||
9.4 Polymorphismus | 222 | ||
9.4.1 Polymorphismus und >>die großen Drei<< | 224 | ||
9.4.2 Überschreiben oder nicht überschreiben? | 224 | ||
9.4.3 Polymorphismus-Anwendung | 226 | ||
9.4.4 Herausfiltern bestimmter Klassen | 227 | ||
9.5 Abstrakte Klassen | 228 | ||
9.6 Mehrfachvererbung | 229 | ||
9.7 Polymorphismus und SFML – TicTacToe reloaded | 230 | ||
9.8 Probleme der Modellierung mit Vererbung | 237 | ||
9.9 C++-Quiz | 238 | ||
10 Fehlerbehandlung | 240 | ||
10.1 Fehler erkennen und signalisieren | 241 | ||
10.2 Fehler behandeln | 241 | ||
10.3 Vordefinierte Exceptions | 245 | ||
10.4 Eigene Exception-Klasse | 246 | ||
10.5 C++-Quiz | 248 | ||
11 Interaktives Spiel mit Grafik und Sound | 250 | ||
11.1 Anzeige des Spielergebnisses | 252 | ||
11.2 Einfache grafische Komponenten | 254 | ||
11.2.1 Der Mond | 254 | ||
11.2.2 Die fallenden Objekte | 255 | ||
11.3 Sprites | 257 | ||
11.3.1 Der Vogel | 260 | ||
11.4 Spielablauf | 261 | ||
12 Überladen von Operatoren | 270 | ||
12.1 Zeiger als Beobachter: Operatoren -> und * | 273 | ||
12.2 ++, ==, << und weitere | 275 | ||
12.2.1 Typumwandlung | 280 | ||
12.2.2 ++ vorangestellt (Präfix) | 280 | ||
12.2.3 ++ nachgestellt (Postfix) | 282 | ||
12.2.4 Gleichheitsoperator | 283 | ||
12.2.5 Subtraktion | 285 | ||
12.2.6 Ausgabeoperator << | 285 | ||
12.2.7 Eingabeoperator >> | 287 | ||
12.2.8 Objekte als Funktion | 288 | ||
12.2.9 Indexoperator [] | 288 | ||
12.2.10 Arithmetische Operatoren += und + | 290 | ||
12.2.11 Zuweisungsoperator | 292 | ||
12.2.12 new, delete und die großen Drei | 295 | ||
12.3 Empfehlungen | 299 | ||
12.4 C++-Quiz | 300 | ||
13 Die C++-Standardbibliothek | 302 | ||
13.1 Templates | 303 | ||
13.1.1 Funktions-Template | 304 | ||
13.1.2 Template-Spezialisierung | 306 | ||
13.1.3 Klassen-Template | 308 | ||
13.2 Funktionsobjekte und Lambda-Funktionen | 310 | ||
13.2.1 Funktionsobjekte | 311 | ||
13.2.2 Lambda-Funktionen | 315 | ||
13.3 Paare | 316 | ||
13.4 Iteratoren | 318 | ||
13.4.1 Iterator-Kategorien | 322 | ||
13.5 Algorithmen | 323 | ||
13.5.1 Funktionsweise | 323 | ||
13.5.2 sort | 325 | ||
13.5.3 find | 325 | ||
13.5.4 binary_search und lower_bound | 327 | ||
13.5.5 copy | 329 | ||
13.5.6 remove und erase | 330 | ||
13.5.7 fill | 331 | ||
13.5.8 Folge mit fortlaufenden Werten füllen | 332 | ||
13.5.9 generate | 332 | ||
13.5.10 min und max | 333 | ||
13.5.11 min_element und max_element | 334 | ||
13.5.12 accumulate | 334 | ||
13.5.13 Skalarprodukt | 336 | ||
13.6 Container | 337 | ||
13.6.1 Gemeinsame Eigenschaften | 337 | ||
13.6.2 Sequentielle Container | 340 | ||
13.6.3 array | 342 | ||
13.6.4 vector | 342 | ||
13.6.5 list | 343 | ||
13.6.6 deque | 344 | ||
13.6.7 stack | 345 | ||
13.6.8 Assoziative Container | 345 | ||
13.6.9 map | 346 | ||
13.6.10 set | 350 | ||
13.6.11 unordered_map | 351 | ||
13.6.12 unordered_set | 352 | ||
13.7 Zeitmessung und Datum/Uhrzeit | 353 | ||
13.8 Komplexe Zahlen | 355 | ||
14 Referenzsemantik | 358 | ||
14.1 Compiler-generierte Funktionen | 359 | ||
14.2 Empfehlungen | 360 | ||
14.3 Praktische Umsetzung | 361 | ||
15 Ausblick | 364 | ||
15.1 Template-Erweiterungen | 364 | ||
15.2 Die C++–Standardbibliothek | 365 | ||
15.3 Test von C++-Programmen | 367 | ||
A Anhang | 368 | ||
A.1 Installationshinweise für Windows | 369 | ||
A.1.1 Compiler | 369 | ||
A.1.2 Entwicklungsumgebung | 369 | ||
A.1.3 SFML | 371 | ||
A.2 Installationshinweise für Linux | 372 | ||
A.2.1 Compiler | 372 | ||
A.2.2 Entwicklungsumgebung | 372 | ||
A.2.3 SFML | 373 | ||
A.3 Installationshinweise für OS X | 374 | ||
A.3.1 Compiler und Entwicklungsumgebung | 374 | ||
A.3.2 SFML | 375 | ||
A.4 ASCII-Tabelle | 377 | ||
Glossar | 380 | ||
Literatur | 392 | ||
Stichwortverzeichnis | 394 |