Nur wenige höhere Programmiersprachen haben es geschafft, über mehrere Jahrzehnte erfolgreich zu sein. Die Sprache C gehört zweifelsfrei dazu und ist im Gegensatz zu anderen Sprachen, die eine vergleichbar lange Zeit überleben konnten, gerade in den letzten Jahren immer beliebter geworden. Und weil sie in der dominierenden objektorientierten Sprache C++ komplett enthalten ist, kann man ihr wohl ein noch langes Leben prophezeien (allerdings gelten in der Informatik Voraussagen schon dann als "Langzeit-Prognose", wenn sie einen Zeitraum von fünf Jahren umfassen). C-Programmierung gilt als schwierig. Ich kann aus eigener Erfahrung in der Lehre bestätigen, daß der Anfänger tatsächlich mehr Schwierigkeiten als mit anderen Programmiersprachen hat. Aber nach einer gewissen "Durststrecke" zahlen sich die Mühen aus. Wenn die Anfangs Schwierigkeiten überwunden sind, können nach vergleichsweise kurzer Zeit schon anspruchs vollere Probleme gelöst werden. Das setzt allerdings voraus, daß auch die Konzepte dafür gelehrt werden, denn es nützt wenig, sich durch die Problematik der "Pointer" und der "rekursiven Strukturen" hindurchzuquälen, wenn man nicht auch mit den verketteten Listen und den binären Bäumen die Datenstrukturen und dazu die rekursive Programmiertechnik behandelt, die diese Konzepte intensiv benutzen. Schließlich ist der Erfolg beim Erlernen einer Programmiersprache weitgehend auch vom Spaß abhängig, den man bei aller Mühe unbedingt haben sollte. Das schönste Ergebnis, ein funktionierendes Programm aus eigener Fertigung, sollte sich allerdings möglichst auch "so schön" präsentieren, wie es die professionell erzeugte Software tut. Dazu sind Kenntnisse der Windows-Programmierung heute unerläßlich.
Inhaltsverzeichnis
1 Betriebssysteme, Programmiersprachen. - 1. 1 Betriebssysteme. - 1. 2 Programmiersprachen. - 1. 3 Empfehlungen für Einsteiger , Umsteiger , Fortgeschrittene . - 2 Hilfsmittel für die C-Programmierung. - 2. 1 Compiler, Linker, Standard-Libraries. - 2. 2 Editoren. - 2. 3 Manuals, Lehrbücher. - 2. 4 Benötigt man einen Debugger ? . - 3 Grundlagen der Programmiersprache C. - 3. 1 Wie lernt man eine Programmiersprache? . - 3. 2 Vom Problem zum Programm. - 3. 3 Das kleinste C-Programm minimain. c . - 3. 4 C-Historie: Das Hello, World -Programm hllworld. c . - 3. 5 Arithmetik und for-Schleife : Programm hptokw01. c . - 3. 6 Einige Grenzwerte der Implementation: Programm limits. c . - 3. 7 Bedingte Anweisung und Casting : Programm reihe01. c . - 3. 8 Zeitmessung mit clock (): Programm reihe02. c . - 3. 9 Standardfunktionen und while-Schleife : Programm valtab01. c . - 3. 10 Definition und Aufruf einer Funktion: Programm valtab02. c . - 3. 11 Erster Kontakt mit Pointern: Programm valtab03. c . - 3. 12 Formatgesteuerte Eingabe mit scanf: Programm valtab04. c . - 3. 13 Stabilisierung der Eingabe: Programm valtab05. c . - 3. 14 String-Konstanten als Funktionsargumente: Programm valtab06. c . - 3. 15 Arrays und Strings: Programme stringl. c und syscall. c . - 3. 16 Zwischenbilanz. - 4 Arbeiten mit Libraries. - 4. 1 Erzeugen einer Library. - 4. 2 Einbinden einer persönlichen Library: Programm valtab07. c . - 4. 3 Libraries mit Funktionen, die voneinander abhängig sind. - 4. 4 Einbinden von Funktionen aus fremden Libraries. - 5 Fortgeschrittene Programmiertechniken. - 5. 1 Noch einmal: Strings und Pointer. - 5. 2 Pointer-Arithmetik. - 5. 3 Mehrdimensionale Arrays, Pointer-Arrays. - 5. 4 Kommandozeilen-Argumente. - 6 File-Operationen undSpeicherplatzverwaltung. - 6. 1 Öffnen und Schließen eines Files, Zeichen lesen mit fgetc. - 6. 2 Lesen und Schreiben mit fgetc und fputc, temporäre Files. - 6. 3 Lesen mit fgets, formatiertes Lesen mit fscanf. - 6. 4 Speicherplatz dynamisch allokieren. - 6. 5 Speicherplatzverwaltung. - 7 Strukturen, verkettete Listen. - 7. 1 Definition von Strukturen, Zugriff auf die Komponenten. - 7. 2 Strukturen in Strukturen, Pointer auf Strukturen. - 7. 3 Rekursive Strukturen, verkettete Listen. - 7. 4 Sortieren mit verketteten Listen: Programm femfile4. c. - 7. 5 Unions und Enumerations . - 8 Rekursionen, Baumstrukturen, Dateisysteme. - 8. 1 Baumstrukturen. - 8. 2 Die Dateisysteme unter UNIX und DOS. - 8. 3 Eine UNIX-Besonderheit: Links auf Files und Directories. - 8. 4 File-Informationen über die Files eines Directories. - 8. 5 Erster rekursiver Funktionsaufruf, Scannen eines Directory-Trees. - 8. 6 Selektives Listen der Files eines Directory-Trees: Programm lst. c . - 8. 7 Sortieren mit einem binären Baum: Programm lstsort. c . - 8. 8 Zwischenbilanz. - 9 Grundlagen der Windows-Programmierung. - 9. 1 Das Windows-Konzept. - 9. 2 Botschaften (Nachrichten, Messages ). - 9. 3 Das kleinste Windows-Programm miniwin. c . - 9. 4 Windows-Skelett-Programm winskel. c . - 9. 5 Text- und Graphik-Ausgabe, der Device context . - 9. 6 Maus-Botschaften, Programm mouse1. c . - 9. 7 Textausgabe mit TextOut, die Funktion GetSystemMetrics. - 9. 8 Fehlersuche in Windows-Programmen. - 10 Ressourcen. - 10. 1 Menü und Message-Box, Programm menu1. c . - 10. 2 Stringtable und Dialog-Box, Programm dialog1. c . - 10. 3 Dialog-Funktion, Dialog-Box, Ressourcen-Editor. - 10. 4 Icon und Cursor. - 11 C vertiefen oder C++ lernen? . - 11. 1 Empfehlungen für die Vertiefung der C-Kenntnisse. - 11. 2 Empfehlungen für das Lernenvon C++. - Anhang A Ein Blick in die Speicherzellen. - A1 Stellenwertsysteme. - A2 Darstellung von Integer-Werten im Rechner. - A3 Darstellung von float- und double-Werten im Rechner. - Anhang B Stack und Heap . - B1 Der Stack. - B2 Der Heap. - Literatur.