Suchen und Finden
Service
C++ - eine Einführung
Ulrich Breymann
Verlag Carl Hanser Fachbuchverlag, 2016
ISBN 9783446449121 , 398 Seiten
Format PDF, OL
Kopierschutz Wasserzeichen
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