Programmieren 1.1.1 Start eines Programms 1.1.2 Eintippen, übersetzen, ausführen 1.1.3 Der Algorithmus 1.1.4 Die Sprache C++ 1.1.5 Fragen zur Selbstkontrolle Grundgerüst eines Programms 1.2.1 Kommentare 1.2.2 Anweisungen 1.2.3 Blöcke Variablen 1.3.1 Variablendefinition 1.3.2 Geltungsbereich 1.3.3 Namensregeln und Syntaxgraph 1.3.4 Typen 1.3.5 Syntax der Variablendefinition 1.3.6 Konstanten Verarbeitung 1.4.1 Zuweisung 1.4.2 Rechenkünstler 1.4.3 Abkürzungen 1.4.4 Funktionen am Beispiel der Zufallsfunktion 1.4.5 Typumwandlung Ein- und Ausgabe 1.5.1 Ausgabestrom nach cout 1.5.2 Formatierte Ausgabe 1.5.3 Eingabestrom aus ein Übungen
Verzweigungen 2.1.1 Nur unter einer Bedingung: if 2.1.2 Andernfalls: eise
72 72 74
5
Inhalt
2.2
2.3
2.4
2.5
3.1
3.2
3.3 3.4
3.5 3.6 3.7
6
2.1.3 Fall für Fall: switch case 2.1.4 Kurzabfrage mit dem Fragezeichen Boolesche Ausdrücke 2.2.1 Variablen und Konstanten 2.2.2 Operatoren 2.2.3 Verknüpfung von booleschen Ausdrücken Immer diese Wiederholungen: Schleifen 2.3.1 Kopfgesteuert: while 2.3.2 Fußgesteuert: do. .. while 2.3.3 Abgezählt: for 2.3.4 Schleifensprünge: break und continue 2.3.5 Der brutale Sprung: goto Beispiele 2.4.1 Primzahlen 2.4.2 Größter gemeinsamer Teiler Übungen
Das Array 3.1.1 Beispiel Bubblesort 3.1.2 Zuweisung von Arrays 3.1.3 C-Zeichenketten 3.1.4 Beispiel: Zahleneingabe auswerten 3.1.5 Mehrere Dimensionen 3.1.6 Beispiel: Bermuda Der Zeiger und die Adresse 3.2.1 Indirekter Zugriff 3.2.2 Arrays und Zeiger 3.2.3 Zeigerarithmetik 3.2.4 Konstante Zeiger 3.2.5 Anonyme Zeiger Der Variablenverbund: struct 3.3.1 Beispiel: Bermuda Dynamische Strukturen 3.4.1 Anlegen und Freigeben von Speicher 3.4.2 Zur Laufzeit erzeugte Arrays
Statische Variablen und Funktionen in Klassen .. 242
5.7.2
Konstanten
244
Vererbung
246
5.8.1
Zugriff auf die Vorfahren
251
5.8.2
Konstruktoren und Zuweisung
255
5.8.3
Mehrfach Vererbung
256
5.8.4
Polymorphie durch virtuelle Funktionen
257
5.9
Klassendefinition und Syntaxgraph
267
5.10
Aufteilung der Quelltexte
269
5.10.1
Dateikennungen
270
5.10.2
Deklaration und Definition
270
5.10.3
Header-Dateien
271
5.10.4
Statische Funktionen
274
5.10.5
Verborgene Implementation
274
5.10.6
Bibliotheken
276
5.10.7
L i n k e r u n d Bibliotheken
276
6.1
6.2
6.3
8
5.6.1
Generische Programmierung
279
6.1.1
Template-Funktionen
280
6.1.2
Template-Klassen
283
6.1.3
AAakroprogrammierung mit #define
286
Namensräume
288
6.2.1
Definition eines Namensraums
288
6.2.2
Zugriff
290
6.2.3
Besondere Namensräume
290
6.2.4
A n o n y m e Namensräume
290
6.2.5
Syntaxgraph
292
Katastrophenschutz mit try und catch
292
6.3.1
293
Eigene Ausnahmen erzeugen
Inhalt
6.4
7.1
7.2
7.3
7.4
7.5
7.6
6.3.2 Erstellen von Fehlerklassen 6.3.3 Die Ausnahmen der Standardbibliotheken Systemnahe Programmierung 6.4.1 Bit-Operatoren 6.4.2 Shift-Operatoren 6.4.3 Zugriff auf Hardware-Adressen 6.4.4 Bit-Strukturen 6.4.5 Portabilität und der Präprozessor
297 300 306 306 309 310 310 311
Zeichenketten und Strings 7.1.1 Die Standardklasse string 7.1.2 Andere String-Bibliotheken 7.1.3 Klassische C-Funktionen iostream für Fortgeschrittene 7.2.1 Eingabe über ein 7.2.2 Manipulatoren Dateioperationen 7.3.1 Öffnen und Schließen 7.3.2 Lesen und Schreiben 7.3.3 Zustandsbeobachtung 7.3.4 Dateizugriffe nach ANSI-C 7.3.5 Dateisystemkommandos 7.3.6 Datei-Eigenschaften ermitteln Mathematische Funktionen 7.4.1 Die mathematische Standardbibliothek 7.4.2 Komplexe Zahlen Die Standard Template Library (STL) 7.5.1 Die Algorithmen der STL 7.5.2 Container und Iteratoren 7.5.3 Die Container-Klasse vector 7.5.4 Die Container-Klasse deque 7.5.5 Die Container-Klasse list 7.5.6 Container-Adapter 7.5.7 Die Container-Klassen set und multiset 7.5.8 Die Container-Klassen map und multimap 7.5.9 Iteratortypen 7.5.10 Die Template-Klasse bitset Zeitfunktionen 7.6.1 Datum und Uhrzeit
C++ für Hektiker A.1 Ein Programm A.2 Abfrage und Schleifen A.2.1 Abfrage und boolesche Ausdrücke A.2.2 Die while-Schleife A.2.3 Die for-Schleife A.3 Arrays A.4 Funktionen A.4.1 Programmaufteilung A.4.2 Rückgabewert A.4.3 Parameter A.5 Klassen A.5.1 Konstruktor A.5.2 Vererbung A.5.3 Polymorphie A.6 Templates Programmierumgebung B.1 Quelltexteditor B.2 Compiler B.3 Debugger B.4 GNU-Compiler unter UNIX/Linux B.4.1 Compiler-Optionen B.4.2 make B.4.3 gdbGNUdebug B.5 Borland C++-Compiler B.6 KDevelop B.6.1 Neues Projekt B.6.2 Kompilieren und starten B.7 Microsoft Visual C++ B.7.1 Neues Projekt B.7.2 Kompilieren und starten B.8 Borland C++-Builder/Kylix B.8.1 Neues Projekt B.8.2 Kompilieren und starten B.9 Bloodshed Dev-C++ (CD) B.9.1 Installation
B.9.2 Ein Projekt anlegen B.9.3 Übersetzen und starten B.10 CygWin B.11 Watcom C++(CD) B.11.1 Installation B.11.2 Erstellen eines Projekts Musterlösungen Glossar Literatur