Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
1 Eine erste Einführung
17
1.1 Was machen wir mit C++?
17
1.2 Was benötige ich zum Programmieren?
18
1.3 Die Entwicklung von C++
18
1.4 So sieht das erste Programm aus
19
1.5 Kommentieren Sie Ihre Programme
20
2 Arbeiten mit Zahlen und Operatoren
23
2.1 Wie speichere ich Zahlen?
23
2.2 Rechnen mit Operatoren
25
2.3 Fehler suchen
27
2.4 Wie können Daten eingegeben werden?
29
2.5 Zahlen formatieren mit Manipulatoren
30
2.6 Zuweisungen kürzer schreiben
32
2.7 Mehr über die Speicherung von Zahlen
34
2.7.1 Ganzzahlige Datentypen
34
2.7.2 Datentypen für Fließkommazahlen
36
2.8 Feste Werte in Konstanten speichern
38
2.9 Konstanten in Enumerationen zusammenfassen
39
2.10 Übung
40
3 Mehrere Zweige in einem Programm
41
3.1 Zwei Zweige mit »if« und »else«
41
3.2 Bedingungen benötigen Vergleiche
43
3.3 Mehr als zwei Zweige
45
3.4 Wie kann ich Bedingungen kombinieren?
47
3.5 Zweige zusammenfassen mit »switch« und »case«
48
3.6 Was ist mit dem Rest?
50
3.7 Welcher Operator hat Vorrang?
51
3.8 Wie speichere ich Wahrheitswerte?
52
3.9 Die Kurzform: der bedingte Ausdruck
54
3.10 Übungen
55
4 Teile von Programmen wiederholen
57
4.1 Regelmäßige Wiederholungen mit »for«
57
4.2 Wiederholungen für einen Bereich
59
4.3 Bedingte Wiederholungen mit »do-while«
61
4.4 Besser vorher prüfen mit »while«
62
4.5 Wiederholungen abbrechen oder fortsetzen
63
4.6 Die Wiederholung der Wiederholung
64
4.7 Übungen
66
5 Programme aufteilen in Funktionen
69
5.1 So schreibe ich eine eigene Funktion
69
5.2 Wie übergebe ich Daten?
71
5.3 Ein weiterer Zugriff über eine Referenz
73
5.4 Übergabe an eine Referenz
74
5.5 Übergabe an eine konstante Referenz
76
5.6 Wie erhalte ich ein Ergebnis zurück?
77
5.7 Mehr Ordnung im Programm
78
5.8 Statische Variablen behalten ihren Wert
80
5.9 Fehler suchen
81
5.10 Standardwerte vorgeben
82
5.11 Beliebig viele Parameter
83
5.12 Funktionen mehrfach definieren
85
5.13 Funktionen, die sich selbst aufrufen
87
5.14 Funktionen als Parameter
88
5.15 Übung
91
6 Große Datenmengen speichern in Feldern
93
6.1 Wie werden Felder unterschieden?
93
6.2 Einfache Felder mit fester Größe
94
6.3 Intelligente Felder mit fester Größe
95
6.4 Ausnahmen behandeln
97
6.5 Einfache Zeiger
99
6.6 Die Operatoren »new« und »delete«
101
6.7 Ein intelligenter und eindeutiger Zeiger
102
6.8 Weitere intelligente Zeiger
104
6.9 Intelligente Felder mit variabler Größe
105
6.10 Felder als Parameter
107
6.11 Daten in mehreren Dimensionen speichern
108
6.11.1 Ein zweidimensionales Feld mit fester Größe
109
6.11.2 Ein zweidimensionales Feld mit variabler Größe
111
6.12 Übungen
113
7 Arbeiten mit Zeichen und Texten
115
7.1 Einzelne Zeichen
115
7.2 Einfache Zeichenketten
116
7.3 Intelligente Zeichenketten: Strings
119
7.3.1 Strings erzeugen
119
7.3.2 Strings ändern
121
7.3.3 Strings vergleichen und durchsuchen
122
7.4 Wie wandle ich Zahlen in Strings um?
124
7.5 Wie verarbeite ich Eingaben?
126
7.6 Felder von Zeichenketten
129
7.7 Übung
131
8 Daten in Strukturen zusammenfassen
133
8.1 Wie speichere ich zusammengehörige Daten?
133
8.2 Besser einen Typ definieren
135
8.3 Strukturen und Felder
137
8.4 Strukturen und Funktionen
139
8.4.1 Das Hauptprogramm
140
8.4.2 Die Größe des Felds festlegen
141
8.4.3 Die Eingabefunktionen
142
8.4.4 Die Ausgabefunktionen
143
8.5 Eine Hierarchie von Strukturen
144
8.6 Übung
146
9 Vorhandene Funktionen nutzen
147
9.1 Umgang mit Datum und Uhrzeit
147
9.1.1 Datum und Uhrzeit ausgeben
147
9.1.2 Zeit messen
150
9.1.3 Zeitangaben erzeugen und berechnen
151
9.2 Wie erzeuge ich zufällige Zahlen?
153
9.3 Nützliche mathematische Funktionen
155
9.3.1 Winkelfunktionen
155
9.3.2 Funktionen zum Runden
157
9.3.3 Verschiedene mathematische Funktionen
158
9.3.4 Prüffunktionen
160
9.3.5 Betrag und Vergleich
161
9.4 Rechnen mit komplexen Zahlen
162
9.4.1 Konstruktoren
163
9.4.2 Spezielle Funktionen
164
9.4.3 Operatoren
166
9.4.4 Mathematische Funktionen
168
9.5 Daten mit dem Betriebssystem austauschen
169
9.5.1 Wie lauten die Parameter?
169
9.5.2 Berechnung der Summe der Parameter
171
9.5.3 Wie nutze ich die Rückgabe eines Programms?
172
9.5.4 Systemkommandos ausführen
174
9.5.5 Ausgabe umlenken
175
9.5.6 Eingabe umlenken
176
9.6 Zugriff auf Dateien und Verzeichnisse
178
9.6.1 Attribute von Dateien und Verzeichnissen
179
9.6.2 Zugriffsrechte ändern
183
9.6.3 Inhalt eines Verzeichnisses
186
9.6.4 Inhalt eines Verzeichnisbaums
188
9.6.5 Dateien ändern
190
9.6.6 Verzeichnisse ändern
192
10 Eigene Klassen entwerfen
195
10.1 Klassen umfassen Eigenschaften und Methoden
195
10.1.1 Die Definition der Klasse
196
10.1.2 Objekte als Instanzen einer Klasse
197
10.2 Zerlegen Sie das Programm
198
10.3 Schützen Sie die Daten
199
10.4 Wie erzeuge und lösche ich Objekte?
203
10.5 Objekte und Felder
207
10.6 Statische Elemente einer Klasse
209
10.7 Wie überlade ich Operatoren?
213
10.8 Objekte ausgeben
217
10.9 Eigenschaften können Objekte sein
219
10.10 Übung
221
11 Vererbung und Polymorphie
223
11.1 Basisklasse und abgeleitete Klassen
223
11.2 Welche Elemente sind an welcher Stelle erreichbar?
230
11.3 Konstruktoren in abgeleiteten Klassen
231
11.4 Was bedeutet Polymorphie?
235
11.5 Erben von mehreren Klassen
238
12 Datenströme verarbeiten
243
12.1 Sequenzielles Schreiben und Lesen
243
12.1.1 Schreiben in eine Datei
244
12.1.2 Pfadangaben
245
12.1.3 Lesen aus einer Datei
246
12.1.4 Mehrmals öffnen und schließen
249
12.2 Schreiben und Lesen an beliebiger Stelle
250
12.2.1 Formatiertes Schreiben in eine Datei
250
12.2.2 Lesen an beliebiger Stelle einer Datei
253
12.2.3 Schreiben an beliebiger Stelle in eine Datei
256
12.3 Wie leiten Sie Datenströme?
258
12.3.1 String-Streams auf dem Bildschirm ausgeben
259
12.3.2 String-Streams von Tastatur lesen
260
12.4 Wie ist das CSV-Format zum Austausch aufgebaut?
262
12.4.1 Im CSV-Format in eine Datei schreiben
262
12.4.2 Eine Datei im CSV-Format lesen
265
13 Container sind vielfältige Datenstrukturen
269
13.1 Wie durchlaufe ich Container?
269
13.2 Intelligente Felder mit fester Größe
272
13.3 Intelligente Felder mit variabler Größe
275
13.4 Eine Warteschlange mit zwei Enden
279
13.5 Daten in Listen verketten
282
13.5.1 Einfach verkettete Listen
283
13.5.2 Doppelt verkettete Listen
288
13.6 Zwei einfache Container
292
13.6.1 Last In First Out (LIFO)
293
13.6.2 First In First Out (FIFO)
294
13.7 Zwei nützliche Typen
295
13.7.1 Paare
295
13.7.2 Tupel
297
13.8 Eine Menge von Elementen
299
13.8.1 Sortiert und einzigartig
299
13.8.2 Sortiert und nicht einzigartig
303
13.8.3 Nicht sortiert und einzigartig
304
13.8.4 Nicht sortiert und nicht einzigartig
305
13.9 Schlüssel und Werte in einer Map
305
13.9.1 Sortiert und einzigartig
306
13.9.2 Nicht sortiert und einzigartig
309
13.9.3 Sortiert und nicht einzigartig
310
13.9.4 Nicht sortiert und nicht einzigartig
310
13.10 Algorithmen für Bereiche
311
13.11 Mengenlehre
313
13.12 Eine Menge von Bits
317
13.12.1 Funktionen für Bitsets
318
13.12.2 Operatoren für Bitsets
320
14 Mehr zu eigenen Klassen
323
14.1 Objekte initialisieren, kopieren und erzeugen
323
14.2 Klassen können Freunde haben
326
14.2.1 Befreundete Funktionen
326
14.2.2 Befreundete Klassen
327
14.3 Namen müssen eindeutig sein
329
14.4 Fehler behandeln mit Ausnahmen
332
14.4.1 Ausnahmen in Schleifen
332
14.4.2 Eigene Ausnahmen werfen
333
14.4.3 Ausnahme in Funktion behandeln
335
14.4.4 Eigene Ausnahmeklasse definieren
337
14.5 Innere Klassen
340
14.6 Templates sind Vorlagen
342
14.6.1 Templates für Funktionen
342
14.6.2 Templates für Klassen
346
15 Präprozessor-Anweisungen
349
15.1 Einbinden von Dateien
349
15.2 Definitionen und Makros
350
15.3 Definitionen und Verzweigungen
352
15.4 Eine Systemweiche
354
16 Grafische Benutzeroberflächen mit der Qt-Bibliothek
357
16.1 Qt installieren
358
16.1.1 Qt für Windows
358
16.1.2 Qt für Ubuntu Linux
359
16.1.3 Qt für macOS
361
16.2 Das erste Qt-Projekt
362
16.2.1 Ein neues Projekt anlegen
362
16.2.2 Projekt und Verzeichnis benennen
363
16.2.3 Kit auswählen
363
16.2.4 Die Fenster der Entwicklungsumgebung
364
16.2.5 Die Anwendung ausführen
364
16.2.6 Projekt schließen und öffnen
365
16.3 Die erste GUI-Anwendung
366
16.3.1 Klasse und Dateien
366
16.3.2 Projekt- und Codefenster
367
16.3.3 »Design«-Ansicht
368
16.3.4 Projekt ausführen
369
16.3.5 Ein Label einfügen und gestalten
370
16.3.6 Weitere Widgets einfügen und gestalten
372
16.3.7 Code und Verbindung erstellen
372
16.3.8 Registerkarte »Signals und Slots«
375
16.4 Ein einfacher Kopfrechentrainer
377
16.4.1 Die Erstellung der GUI
378
16.4.2 Die Deklaration der Klasse
378
16.4.3 Die Definition ohne Prüfung
379
16.4.4 Die Definition mit Prüfung
381
16.5 Ein erweiterter Kopfrechentrainer
382
16.5.1 Ein Projekt kopieren
383
16.5.2 Die Erweiterung der GUI
384
16.5.3 Die Erweiterung der Deklaration
385
16.5.4 Die Erweiterung des Konstruktors
385
16.5.5 Die Erweiterung des Prüfvorgangs
387
16.5.6 Die Erweiterung der Aufgabenstellung
388
16.6 Weitere Widgets
389
16.6.1 Beschreibung der Widgets
390
16.6.2 Die Erstellung der GUI
390
16.6.3 Die Deklaration der Klasse
391
16.6.4 Der Konstruktor der Klasse
392
16.6.5 Die Ereignismethoden der Klasse
394
17 Datenbanken mit SQLite verwalten
399
17.1 Der Aufbau einer Datenbank
399
17.2 Wie erzeuge ich Datenbank und Tabelle?
400
17.2.1 Die Erstellung der GUI
400
17.2.2 Die Deklaration der Klasse
401
17.2.3 Konstruktor und Destruktor der Klasse
402
17.2.4 Die Ereignismethode der Klasse
404
17.3 Wie speichere ich Daten in einer Tabelle?
406
17.4 So zeige ich alle Daten einer Tabelle an
407
17.5 Wie wähle ich bestimmte Daten aus?
410
17.5.1 Vergleichsoperatoren
411
17.5.2 Logische Operatoren
412
17.5.3 Vergleichsoperator »LIKE«
412
17.6 Der Benutzer wählt Daten aus
414
17.7 Daten sollten sortiert werden
415
17.8 Wie ändere ich Daten?
416
17.9 Vorsicht beim Löschen von Daten
418
17.10 Eine Datenbank mit mehreren Tabellen
419
17.10.1 Inhalt der Datenbank
419
17.10.2 Das Datenbankmodell
420
17.10.3 Der Aufbau des Qt-Projekts
421
17.10.4 Das Erstellen und Füllen der Tabellen
422
17.10.5 Abfragen über einzelne Tabellen
423
17.10.6 Abfragen über zwei verbundene Tabellen
424
17.10.7 Abfragen über drei verbundene Tabellen
425
17.10.8 Gruppieren und Summieren
425
17.11 Projekt Vokabeln
426
17.11.1 Die Benutzung des Programms
426
17.11.2 Der Aufbau des Qt-Projekts
431
17.11.3 Die Deklaration der Klasse
432
17.11.4 Der Konstruktor der Klasse
433
17.11.5 Das Aktivieren und Deaktivieren von Widgets
436
17.11.6 Die Auswahl der Sprachkombination
437
17.11.7 Der Vokabeltest wird gestartet
438
17.11.8 Die Übersetzung wird geprüft
440
17.11.9 Der Vokabeltest wird vorzeitig beendet
441
17.11.10 Die Neueingabe von Vokabeln wird gestartet
442
17.11.11 Die List Widgets werden parallel markiert
443
17.11.12 Eine neue Vokabel wird gespeichert
444
17.11.13 Eine Vokabel wird gelöscht
445
17.11.14 Die Neueingabe von Vokabeln wird beendet
446
17.11.15 Mögliche Erweiterungen des Programms
447
17.12 Übung
447
17.12.1 Benutzeroberfläche
448
17.12.2 Bedienung
448
17.12.3 Zugriff auf Date Edit Widget
450
17.12.4 Eintrag im List Widget aufsplitten
450
A Installationen
451
A.1 Installationen unter Windows
451
A.1.1 Orwell Dev-C++ installieren
452
A.1.2 Orwell Dev-C++ nutzen
452
A.1.3 Eclipse installieren
453
A.1.4 Eclipse nutzen
454
A.1.5 NetBeans installieren
455
A.1.6 NetBeans nutzen
456
A.1.7 MinGW installieren
457
A.1.8 MinGW im Systempfad eintragen
458
A.1.9 MinGW nutzen
459
A.1.10 Binden eines Programms
460
A.2 Installationen unter Ubuntu Linux
462
A.2.1 Arbeiten im Terminal
462
A.2.2 Eclipse installieren
463
A.2.3 NetBeans installieren
464
A.3 Installationen unter macOS
465
A.3.1 Xcode
465
A.3.2 Arbeiten im Terminal
466
A.3.3 Eclipse installieren
467
A.3.4 NetBeans installieren
468
A.4 Beispiele für C++14
468
A.4.1 Spezifizierer »auto« bei Funktionen
468
A.4.2 Spezifizierer »decltype«
469
A.4.3 Komponenten eines Tupels
470
A.4.4 Funktionstemplate »make_unique«
471
A.5 Installation für C++17
472
A.5.1 MinGW mit GCC 7.1 installieren
472
A.5.2 Eine Funktion aus C++17
472
B Tipps und Musterlösungen
475
B.1 Windows – einige Tastenkombinationen
475
B.2 Unix-Befehle
475
B.2.1 Inhalt eines Verzeichnisses
476
B.2.2 Verzeichnis anlegen, wechseln und löschen
477
B.2.3 Datei kopieren, verschieben und löschen
478
B.2.4 Schlüsselwörter der Sprache C++
479
B.3 Lösungen der Übungen
479
B.3.1 Übung zu Kapitel 2
479
B.3.2 Übungen zu Kapitel 3
480
B.3.3 Übungen zu Kapitel 4
482
B.3.4 Übung zu Kapitel 5
484
B.3.5 Übungen zu Kapitel 6
485
B.3.6 Übung zu Kapitel 7
487
B.3.7 Übung zu Kapitel 8
490
B.3.8 Übung zu Kapitel 10
496
Index
501