|
Inhalt |
6 |
|
|
Vorwort |
14 |
|
|
1 Einstieg in die Programmierung |
18 |
|
|
1.1 Programmieren |
18 |
|
|
1.1.1 Start eines Programms |
18 |
|
|
1.1.2 Eintippen, übersetzen, ausführen |
19 |
|
|
1.1.3 Der Algorithmus |
21 |
|
|
1.1.4 Die Sprache C++ |
22 |
|
|
1.1.5 Fragen zur Selbstkontrolle |
27 |
|
|
1.2 Grundgerüst eines Programms |
27 |
|
|
1.2.1 Kommentare |
28 |
|
|
1.2.2 Anweisungen |
30 |
|
|
1.2.3 Blöcke |
31 |
|
|
1.3 Variablen |
31 |
|
|
1.3.1 Variablende.nition |
32 |
|
|
1.3.2 Geltungsbereich |
34 |
|
|
1.3.3 Namensregeln und Syntaxgraph |
35 |
|
|
1.3.4 Typen |
38 |
|
|
1.3.5 Syntax der Variablende.nition |
48 |
|
|
1.3.6 Konstanten |
49 |
|
|
1.4 Verarbeitung |
60 |
|
|
1.4.1 Zuweisung |
60 |
|
|
1.4.2 Rechenkünstler |
61 |
|
|
1.4.4 Funktionen am Beispiel der Zufallsfunktion |
65 |
|
|
1.4.5 Typumwandlung |
67 |
|
|
1.5 Ein- und Ausgabe |
69 |
|
|
1.5.1 Ausgabestrom nach cout |
69 |
|
|
1.5.2 Formatierte Ausgabe |
71 |
|
|
1.5.3 Eingabestrom aus cin |
71 |
|
|
1.6 Übungen |
72 |
|
|
2 Ablaufsteuerung |
74 |
|
|
2.1 Verzweigungen |
75 |
|
|
2.1.1 Nur unter einer Bedingung: if |
75 |
|
|
2.1.2 Andernfalls: else |
77 |
|
|
2.1.3 Fall für Fall: switch case |
81 |
|
|
2.1.4 Kurzabfrage mit dem Fragezeichen |
85 |
|
|
2.2 Boolesche Ausdrücke |
86 |
|
|
2.2.1 Variablen und Konstanten |
86 |
|
|
2.2.2 Operatoren |
87 |
|
|
2.2.3 Verknüpfung von booleschen Ausdrücken |
90 |
|
|
2.3 Immer diese Wiederholungen: Schleifen |
96 |
|
|
2.3.1 Kopfgesteuert: while |
96 |
|
|
2.3.2 Fußgesteuert: do. . . while |
99 |
|
|
2.3.3 Abgezählt: for |
101 |
|
|
2.3.4 Schleifensprünge: break und continue |
103 |
|
|
2.3.5 Der brutale Sprung: goto |
106 |
|
|
2.4 Beispiele |
107 |
|
|
2.4.1 Primzahlen |
107 |
|
|
2.4.2 Größter gemeinsamer Teiler |
112 |
|
|
2.5 Übungen |
115 |
|
|
3 Datentypen und -strukturen |
116 |
|
|
3.1 Das Array |
116 |
|
|
3.1.1 Beispiel Bubblesort |
121 |
|
|
3.1.2 Zuweisung von Arrays |
125 |
|
|
3.1.3 C-Zeichenketten |
126 |
|
|
3.1.4 Beispiel: Zahleneingabe auswerten |
128 |
|
|
3.1.5 Mehrere Dimensionen |
131 |
|
|
3.1.6 Beispiel: Bermuda |
131 |
|
|
3.2 Der Zeiger und die Adresse |
134 |
|
|
3.2.1 Indirekter Zugriff |
138 |
|
|
3.2.2 Arrays und Zeiger |
139 |
|
|
3.2.3 Zeigerarithmetik |
141 |
|
|
3.2.4 Konstante Zeiger |
143 |
|
|
3.2.5 Anonyme Zeiger |
144 |
|
|
3.3 Der Variablenverbund: struct |
145 |
|
|
3.3.1 Beispiel: Bermuda |
148 |
|
|
3.4 Dynamische Strukturen |
150 |
|
|
3.4.1 Anlegen und Freigeben von Speicher |
150 |
|
|
3.4.2 Zur Laufzeit erzeugte Arrays |
152 |
|
|
3.4.3 Verkettete Listen |
152 |
|
|
3.5 Die Union |
155 |
|
|
3.6 Aufzählungstyp enum |
156 |
|
|
3.7 Typen de.nieren |
157 |
|
|
4 Funktionen |
160 |
|
|
4.1 Parameter |
165 |
|
|
4.1.1 Prototypen |
168 |
|
|
4.1.2 Zeiger als Parameter |
169 |
|
|
4.1.3 Arrays als Parameter |
171 |
|
|
4.1.4 Referenz-Parameter |
173 |
|
|
4.1.5 Beispiel: Stack |
175 |
|
|
4.1.6 Vorbelegte Parameter |
177 |
|
|
4.1.7 Die Parameter der Funktion main |
177 |
|
|
4.1.8 Variable Anzahl von Parametern |
180 |
|
|
4.2 Überladen von Funktionen |
181 |
|
|
4.3 Kurz und schnell: Inline-Funktionen |
182 |
|
|
4.4 Top-Down |
183 |
|
|
4.4.1 Beispiel: Bermuda |
184 |
|
|
4.5 Geltungsbereich von Variablen |
189 |
|
|
4.5.1 Globale Variablen |
189 |
|
|
4.5.2 Lokale Variablen |
190 |
|
|
4.5.3 Statische Variablen |
191 |
|
|
4.6 Selbstaufrufende Funktionen |
193 |
|
|
4.6.1 Einsatzbereich |
195 |
|
|
4.6.2 Beispiel: binärer Baum |
196 |
|
|
4.6.3 Türme von Hanoi |
199 |
|
|
4.6.4 Beispiel: Taschenrechner |
201 |
|
|
4.7 Funktionszeiger |
207 |
|
|
5 Klassen |
210 |
|
|
5.1 Die Klasse als Datenstruktur |
211 |
|
|
5.1.1 Funktion und Datenstruktur heiraten |
212 |
|
|
5.1.2 Zugriff auf Klassenelemente |
216 |
|
|
5.2 Geburt und Tod eines Objekts |
216 |
|
|
5.2.1 Konstruktor und Destruktor |
217 |
|
|
5.2.2 Konstruktor und Parameter |
219 |
|
|
5.3 Öffentlichkeit und Privatsphäre |
222 |
|
|
5.3.1 private und public |
222 |
|
|
5.3.2 Beispiel: Stack |
225 |
|
|
5.3.3 Freunde |
228 |
|
|
5.4 Kopierkonstruktor |
229 |
|
|
5.5 Überladen von Elementfunktionen |
233 |
|
|
5.6 Kür: Überladen von Operatoren |
234 |
|
|
5.6.1 Addition |
235 |
|
|
5.6.2 Globale Operatorfunktionen |
238 |
|
|
5.6.3 Inkrementieren und Dekrementieren |
239 |
|
|
5.6.4 Der Zuweisungsoperator |
240 |
|
|
5.6.5 Die Vergleichsoperatoren |
244 |
|
|
5.6.6 Der Ausgabeoperator |
245 |
|
|
5.6.7 Der Indexoperator |
247 |
|
|
5.6.8 Der Aufrufoperator () |
249 |
|
|
5.6.9 Der Konvertierungsoperator |
250 |
|
|
5.7 Attribute |
250 |
|
|
5.7.1 Statische Variablen und Funktionen in Klassen |
250 |
|
|
5.7.2 Konstanten |
253 |
|
|
5.8 Vererbung |
255 |
|
|
5.8.2 Konstruktoren und Zuweisung |
264 |
|
|
5.8.3 Mehrfachvererbung |
266 |
|
|
5.8.4 Polymorphie durch virtuelle Funktionen |
267 |
|
|
5.9 Klassende.nition und Syntaxgraph |
277 |
|
|
5.10 Aufteilung der Quelltexte |
279 |
|
|
5.10.1 Dateikennungen |
279 |
|
|
5.10.2 Deklaration und De.nition |
280 |
|
|
5.10.3 Header-Dateien |
281 |
|
|
5.10.4 Statische Funktionen |
283 |
|
|
5.10.5 Verborgene Implementation |
284 |
|
|
5.10.6 Bibliotheken |
286 |
|
|
5.10.7 Linker und Bibliotheken |
286 |
|
|
6 Weitere Sprachelemente von C++ |
288 |
|
|
6.1 Generische Programmierung |
288 |
|
|
6.1.1 Template-Funktionen |
288 |
|
|
6.1.2 Template-Klassen |
292 |
|
|
6.1.3 Makroprogrammierung mit #de.ne |
295 |
|
|
6.2 Namensräume |
297 |
|
|
6.2.1 De.nition eines Namensraums |
298 |
|
|
6.2.2 Zugriff |
299 |
|
|
6.2.3 Besondere Namensräume |
299 |
|
|
6.2.4 Anonyme Namensräume |
300 |
|
|
6.2.5 Syntaxgraph |
301 |
|
|
6.3 Katastrophenschutz mit try und catch |
301 |
|
|
6.3.1 Eigene Ausnahmen erzeugen |
303 |
|
|
6.3.2 Erstellen von Fehlerklassen |
306 |
|
|
6.3.3 Die Ausnahmen der Standardbibliotheken |
310 |
|
|
6.4 Systemnahe Programmierung |
315 |
|
|
6.4.1 Bit-Operatoren |
315 |
|
|
6.4.2 Shift-Operatoren |
318 |
|
|
6.4.3 Zugriff auf Hardware-Adressen |
319 |
|
|
6.4.4 Bit-Strukturen |
320 |
|
|
6.4.5 Portabilität und der Präprozessor |
321 |
|
|
7 Bibliotheken |
324 |
|
|
7.1 Zeichenketten: String |
324 |
|
|
7.1.1 Andere String-Bibliotheken |
330 |
|
|
7.1.2 Klassische C-Funktionen |
331 |
|
|
7.2 iostream für Fortgeschrittene |
338 |
|
|
7.2.1 Eingabe über cin |
338 |
|
|
7.2.2 Manipulatoren |
340 |
|
|
7.3 Dateioperationen |
344 |
|
|
7.3.1 Öffnen und Schließen |
345 |
|
|
7.3.2 Lesen und Schreiben |
347 |
|
|
7.3.3 Zustandsbeobachtung |
352 |
|
|
7.3.4 Dateizugriffe nach ANSI-C |
354 |
|
|
7.3.5 Dateisystemkommandos |
357 |
|
|
7.3.6 Datei-Eigenschaften ermitteln |
360 |
|
|
7.4 Mathematische Funktionen |
363 |
|
|
7.4.1 Die mathematische Standardbibliothek |
363 |
|
|
7.4.2 Komplexe Zahlen |
366 |
|
|
7.5 Die Standard Template Library (STL) |
367 |
|
|
7.5.1 Algorithmen und Arrays |
367 |
|
|
7.5.2 Container und Iteratoren |
375 |
|
|
7.5.3 Die Container-Klasse vector |
376 |
|
|
7.5.4 Die Container-Klasse deque |
381 |
|
|
7.5.5 Die Container-Klasse list |
383 |
|
|
7.5.6 Container-Adapter |
389 |
|
|
7.5.7 Die Container-Klassen set und multiset |
392 |
|
|
7.5.8 Die Container-Klassen map und multimap |
395 |
|
|
7.5.9 Iteratortypen |
396 |
|
|
7.5.10 Die Template-Klasse bitset |
397 |
|
|
7.6 Zeitfunktionen |
398 |
|
|
7.6.1 Datum und Uhrzeit |
399 |
|
|
7.6.2 Zeit stoppen |
400 |
|
|
7.7 Dynamische Bibliotheken |
402 |
|
|
Anhang |
406 |
|
|
A C++ fürHektiker |
408 |
|
|
B Programmierumgebung |
446 |
|
|
C Musterlösungen |
478 |
|
|
D Glossar |
500 |
|
|
E Literatur |
506 |
|
|
Index |
508 |
|
|
Mehr eBooks bei www.ciando.com |
0 |
|