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
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: d o . . . 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
Die Klasse als Datenstruktur 5.1.1 Funktion und Datenstruktur heiraten 5.1.2 Zugriff auf Klassenelemente Geburt und Tod eines Objekts 5.2.1 Konstruktor und Destruktor 5.2.2 Konstruktor und Parameter Öffentlichkeit und Privatsphäre 5.3.1 private und public 5.3.2 Beispiel: Stack 5.3.3 Freunde Kopierkonstruktor Überladen von Elementfunktionen Kür: Überladen von Operatoren
Addition Globale Operatorfunktionen Inkrementieren und Dekrementieren Der Zuweisungsoperator Die Vergleichsoperatoren Der Ausgabeoperator Der Indexoperator
227 229 230 232 235 237 238
5.6.8 Der Aufrufoperator 0 5.6.9 Der Konvertierungsoperator Attribute 5.7.1 Statische Variablen und Funktionen in Klassen 5.7.2 Konstanten Vererbung 5.8.1 Zugriff auf die Vorfahren 5.8.2 Konstruktoren und Zuweisung 5.8.3 Mehrfachvererbung 5.8.4 Polymorphie durch virtuelle Funktionen Klassendefinition und Syntaxgraph
240 241 242 242 244 246 251 255 257 257 267
Der C++-Compiler 6.1.1 Compiler-Aufruf 6.1.2 Compiler-Optionen 6.1.3 Fehlermeldungen Präprozessor 6.2.1 Einbinden von Dateien: #include 6.2.2 Konstanten und Makros: #define 6.2.3 Abfragen: #if 6.2.4 Vordefinierte Makros 6.2.5 Weitere Präprozessorbefehle Aufteilung der Quelltexte 6.3.1 Beispiel Bermuda 6.3.2 Datei ken nungen 6.3.3 Deklaration und Definition 6.3.4 Header-Dateien 6.3.5 Statische Funktionen 6.3.6 Verborgene Implementierung Linker und Bibliotheken 6.4.1 Einbinden von statischen Bibliotheken 6.4.2 Dynamische Bibliotheken
Zeichenketten und Strings 8.1.1 Die Standardklasse string 8.1.2 Andere String-Bibliotheken 8.1.3 Klassische C-Funktionen iostream für Fortgeschrittene 8.2.1 Eingabe über ein 8.2.2 Manipulatoren Dateioperationen 8.3.1 Öffnen und Schließen 8.3.2 Lesen und Schreiben 8.3.3 Zustandsbeobachtung 8.3.4 Dateizugriffe nach ANSI-C
337 338 350 351 358 358 359 363 364 366 371 373
7.1
7.2
7.3
7.4
8.1
8.2
8.3
9
Inhalt
8.4
8.5
9.1
9.2 9.3
9.4
9.5 9.6
9.7 9.8
9.9
10
8.3.5 Dateisystemkommandos 8.3.6 Dateieigenschaften ermitteln Mathematische Funktionen 8.4.1 Die mathematische Standardbibliothek 8.4.2 Komplexe Zahlen Zeitfunktionen 8.5.1 Datum und Uhrzeit 8.5.2 Zeit stoppen
376 378 381 382 384 385 385 387
Die Container-Klasse vector 9.1.1 Dimensionsänderung 9.1.2 Iteratoren 9.1.3 Weitere Funktionen Die Container-Klasse deque Die Container-Klasse list 9.3.1 Einfügen und Löschen 9.3.2 Umhängen von Elementen: splice 9.3.3 Mischen sortierter Listen 9.3.4 Sortierung und Reihenfolge Die Container-Klassen set und multiset 9.4.1 Einfügen und Löschen 9.4.2 Suchen und Sortieren Die Container-Klassen map und muitimap Container-Adapter 9.6.1 Der Container-Adapter stack 9.6.2 Der Container-Adapter queue 9.6.3 Der Container-Adapter priority_queue Iteratortypen Die Algorithmen der STL 9.8.1 Suchen: findO 9.8.2 Sortieren 9.8.3 Binäres Suchen 9.8.4 Kopieren: copyO 9.8.5 Umdrehen: reverseO
9.8.8 Funktion als Parameter: findjfO 9.8.9 for_each Die Template-Klasse bitset
419 419 423 423
A
В
С D E
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 Compilereinrichtung B.1 KDevelop В.1.1 Neues Projekt B.1.2 Kompilieren und starten B.2 Bloodshed Dev-C++ (CD) B.2.1 Installation B.2.2 Ein Projekt anlegen B.2.3 Übersetzen und starten B.3 CygWin Musterlösungen Glossar Literatur