- 1 Betriebssysteme, Programmiersprachen 1
- 1.1 Betriebssysteme 2
- 1.2 Programmiersprachen 3
- 1.3 Arbeiten mit diesem Tutorial 5
- 2 Hilfsmittel für die C-Programmierung 6
- 2.1 Compiler, Linker, Standard-Libraries 6
- 2.2 Editoren 7
- 2.3 Manuals, Lehrbücher 8
- 3 Grundlagen der Programmiersprache C 10
- 3.1 Wie lernt man eine Programmiersprache? 10
- 3.2 Vom Problem zum Programm 10
- 3.3 Das kleinste C-Programm "minimain.c" 12
- 3.4 C-Historie: Das "Hello, World"-Programm "hllworld.c" 14
- 3.5 Arithmetik und "for-Schleife": Programm "hptokw01.c" 16
- 3.6 Einige Grenzwerte der Implementation: Programm "limits.c" 20
- 3.7 Bedingte Anweisung und "Casting": Programm "reihe01.c" 21
- 3.8 Zeitmessung mit clock (): Programm "reihe02.c" 23
- 3.9 Standardfunktionen und "while-Schleife": Programm "valtab01.c" 25
- 3.10 Definition und Aufruf einer Funktion: Programm "valtab02.c" 27
- 3.11 Erster Kontakt mit Pointern: Programm "valtab03.c" 30
- 3.12 Formatgesteuerte Eingabe mit scanf: Programm "valtab04.c" 34
- 3.13 Stabilisierung der Eingabe: Programm "valtab05.c" 38
- 3.14 String-Konstanten als Funktionsargumente: Programm "valtab06.c" 41
- 3.15 Arrays und Strings: Programme "string1.c" und "syscall.c" 44
- 4 Arbeiten mit Libraries 49
- 4.1 Erzeugen einer Library 50
- 4.2 Einbinden einer persönlichen Library: Programm "valtab07.c" 53
- 4.3 Libraries mit Funktionen, die voneinander abhängig sind 55
- 4.4 Einbinden von Funktionen aus fremden Libraries 57
- 4.4.1 Ein mathematischer Parser für die "valtab"-Programme 58
- 4.4.2 Einbau von Parser-Library-Funktionen: Programm "valtab08.c" 60
- 5 Fortgeschrittene Programmiertechniken 64
- 5.1 Noch einmal: Strings und Pointer 64
- 5.2 Pointer-Arithmetik 73
- 5.3 Mehrdimensionale Arrays, Pointer-Arrays 76
- 5.4 Kommandozeilen-Argumente 79
- 6 File-Operationen 81
- 6.1 Öffnen und Schließen eines Files, Zeichen lesen mit fgetc 81
- 6.2 Lesen und Schreiben mit fgetc und fputc, temporäre Files 83
- 6.3 Lesen mit fgets, formatiertes Lesen mit fscanf 87
- 6.4 Speicherplatz dynamisch allokieren 91
- 7 Strukturen, verkettete Listen 96
- 7.1 Definition von Strukturen, Zugriff auf die Komponenten 96
- 7.2 Strukturen in Strukturen, Pointer auf Strukturen 100
- 7.3 Rekursive Strukturen, verkettete Listen 102
- 7.4 Sortieren mit verketteten Listen: Programm femfile4.c 107
- 8 Rekursionen, Baumstrukturen, Dateisysteme 114
- 8.1 Baumstrukturen 115
- 8.2 Die Dateisysteme unter UNIX und DOS 116
- 8.3 Eine UNIX-Besonderheit: Links auf Files und Directories 118
- 8.4 File-Information über die Files eines Directories 119
- 8.4.1 UNIX-Version 119
- 8.4.2 Turbo-C-Version: Programm tdirent2.c 126
- 8.4.3 MS-Visual-C-Version: Programm mdirent2.c 128
- 8.4.4 Pflege der privaten Library 130
- 8.5 Erster rekursiver Funktionsaufruf, Scannen eines Directory-Trees 131
- 8.6 Selektives Listen der Files eines Directory-Trees: Programm lst.c 133
- 8.7 Sortieren mit einem binären Baum: Programm lstsort.c 136
- 9 Grundlagen der Windows-Programmierung 141
- 9.1 Das MS-Windows-Konzept 142
- 9.2 Botschaften (Nachrichten, "Messages") 143
- 9.3 Das kleinste Windows-Programm "miniwin.c" 144
- 9.4 Windows-Skelett-Programm "winskel.c" 150
- 9.5 Text- und Graphik-Ausgabe, der "Device Context" 152
- 9.5.1 Die Botschaft WM_PAINT, Programm "Hello, Winworld" 152
- 9.5.2 Zeichnen mit MoveTo und LineTo, Programm "rosette1.c" 156
- 9.6 Maus-Botschaften, Programm "mouse1.c" 159
- 10 Ressourcen 163
- 10.1 Menü und Message-Box, Programm "menu1.c" 163
- 10.2 Stringtable und Dialog-Box, Programm "dialog1.c" 167
- 10.2.1 Modale und nicht-modale Dialoge 167
- 10.2.2 Definition einer Dialog-Box, Ressource-Datei "dialog1.rc" 168
- 10.2.3 Quelltext des Programms "dialog1.c" 170
- 10.3 Aufwendige Dialog-Boxen, Arbeiten mit einem Ressourcen-Editor 177
- 10.3.1 Ressource-Datei "hpkwin01.rc" 177
- 10.3.2 Programm "hpkwin01.c" 179
- 10.3.3 Erzeugen eines Dialog-Prototyps mit einem Ressourcen-Editor 185
- 10.4 Icon und Cursor 188
- 10.4.1 Erzeugen von Icons und Cursorformen 188
- 10.4.2 Ressourcen-Datei mit Icon, Cursor, Stringtable und Menü 189
- 10.4.3 Programm "cursor1.c" 190
- 11 "Microsoft Foundation Classes" (erster Kontakt) 197
- 11.1 Arbeiten mit dem "App Wizard", Projekt "minimfc1" 197
- 11.2 "Hello World" mit "App Wizard", Projekt "hllmfc1" 199
- 12 Einführung in C++ für C-Programmierer 202
- 12.1 Einige eher formale Unterschiede zur Sprache C 202
- 12.2 Klassen und Kapselung 208
- 12.2.1 Daten und Methoden in der Klasse 209
- 12.2.2 Konstruktoren und Destruktoren 213
- 12.2.3 Objektorientiertes Programmieren fordert objektorientiertes
Denken 216
- 12.3 Vererbung 219
- 12.4 Virtuelle Funktionen, abstrakte Klassen (Polymorphismus) 226
- 12.5 Überladen 236
- 12.6 Eingabe und Ausgabe, Arbeiten mit Dateien 240
- 12.6.1 Das Klassen-Objekt cout 240
- 12.6.2 Dateien 242
- 12.6.3 Die Methoden ostream::write und istream::read, Binär-Dateien 246
- 12.7 Was man sonst noch wissen sollte 250
- 12.7.1 Arbeiten mit friend-Funktionen und friend-Klassen 250
- 12.7.2 Der this-Pointer 251
- 12.7.3 Mehrfach-Vererbung 252
- 12.7.4 Virtuelle Basisklassen 256
- 12.7.5 Das Schlüsselwort const 257
- 12.7.6 inline-Funktionen 258
- 12.7.7 static-Variablen in Klassen-Deklarationen 259
- 12.7.8 Nutzung "fremdgefertigter" Basisklassen 260
- 13 Windows-Programmierung mit C++ und MFC 261
- 13.1 C oder C++ für die Windows-Programmierung? 261
- 13.2 Das C++-MFC-Minimal-Programm "minimfc2.cpp" 263
- 13.3 Bearbeiten von Botschaften, natürlich zuerst: "Hello World!" 267
- 13.4 Fazit aus den beiden Beispiel-Programmen 270
- 14 MS-Visual-C++-Programmierung mit "App Wizard",
"Class Wizard" und "App Studio" 271
- 14.1 Trennen von Klassen-Deklarationen und Methoden 271
- 14.2 Das "Document-View"-Konzept 272
- 14.3 Das vom "App Wizard" erzeugte "Hello World"-Programm 274
- 14.4 Das Projekt "fmom" 278
- 14.4.1 Die mit "fmom" zu realisierende Funktionalität 278
- 14.4.2 Erzeugen des Projektes (Version "fmom1") 279
- 14.4.3 Datenstruktur für "fmom", Entwurf der Klassen 283
- 14.4.4 Einbinden der Datenstruktur in die Dokument-Klasse,
die Klasse CObList 287
- 14.4.5 Menü mit "App Studio" bearbeiten 291
- 14.4.6 Dialog-Box mit "App Studio" erzeugen 293
- 14.4.7 Einbinden des Dialogs in das Programm 304
- 14.4.8 Bearbeiten der Ansichts-Klasse, Ausgabe erster
Ergebnisse 308
- 14.4.9 Die Return-Taste muß Kompetenzen abgeben 317
- 14.4.10 Ein zusätzlicher "Toolbar"-Button für "fmom" 319
- 14.4.11 Das Dokument als Binär-Datei, "Serialization" 322
- 14.4.12 Eine zweite Ansicht für das Dokument,
Splitter-Windows 329
- 14.4.13 GDI-Objekte und Koordinatensysteme 335
- 14.4.14 Graphische Darstellung der Flächen 347
- 14.4.15 Schwerpunkt markieren,
Durchmesser: 0,1 "Logical Inches" 354
- 14.4.16 Erweiterung der Funktionalität:
Flächenmomente 2. Ordnung 358
- 14.4.17 Listen, Ändern, Löschen
361
- 14.4.18 Dialog-Box mit "List Box"
364
- 14.4.19 Initialisieren der "List Box", die
Klasse CString 367
- 14.4.20 Ändern bzw. Löschen einer
ausgewählten Teilfläche 374
- 14.4.21 Sortieren in einer CObList-Klasse
377
- 14.4.22 Eine Klasse für die Berechnung
von Polygon-Flächen 378
- 14.4.23 Ressourcen für die Eingabe einer
Polygon-Fläche 382
- 14.4.24 Der "Dialog des Programms" mit der
Dialog-Box 385
- 14.4.25 Drucker-Ausgabe
391
- 14.4.26 Optionale Ausgabe der Eingabewerte
396
- 14.4.27 Platzbedarf für Texte
400