1. Ziel und Inhalt dieses Buchs.- 1.1 Zum Inhalt.- 1.2 Motivation.- 1.3 Feedback.- 1.4 Die beiliegende CD-ROM.- 2. Begriffsklärung.- 2.1 Syntax und Semantik.- 2.2 Programmiersprachen.- 2.2.1 Klassifikation nach Hardwarenähe.- 2.2.2 Klassifikation höherer Programmiersprachen nach Kon-zepten.- 2.3 Vorschriften und Arten der Abarbeitung.- 2.4 Werkzeuge und Zwischenschritte bei der Programmerstellung.- 2.4.1 Interpreter.- 2.5 Testen.- 2.6 Software-Design.- 2.7 Verschiedenes.- 3. Erste Schritte in C.- 3.1 Hello World § das erste Beispiel.- 4. Datentypen und Variablen.- 5. Operatoren.- 5.1 Klammerung von Ausdrücken.- 5.2 Arithmetische Operatoren.- 5.2.1 Binäre arithmetische Operatoren.- 5.2.2 Unäre arithmetische Operatoren.- 5.3 Logische - und Vergleichsoperatoren.- 5.4 Bitoperatoren.- 5.4.1 Setzen von Einzelbits.- 5.4.2 Löschen von Einzelbits.- 5.4.3 Prüfen von Einzelbits.- 5.4.4 Aneinanderreihen von kurzen Zahlen zu einer langen.- 5.4.5 Ein Beispiel zu den Bitoperationen.- 5.5 Zuweisungs-Kurzformen.- 6. Implizite Typumwandlungen.- 7. Kontrollstrukturen.- 7.1 if-else Statements.- 7.2 switch Statements.- 7.3 while Schleifen.- 7.4 do - while Schleifen.- 7.5 for Schleifen.- 7.6 break und continue.- 7.7 Das unselige goto Statement.- 8. Funktionen.- 8.1 Allgemeines.- 8.2 Scope und Lifetime.- 9. Kaffeeautomat - ein kleines Beispiel.- 9.1 User Requirements.- 9.1.1 Wünsche des Auftraggebers.- 9.1.2 Das User Requirements Document.- 9.2 Das Handbuch zum API.- 9.2.1 Erklärung des Callback-Mechanismus.- 9.3 Software Requirements.- 9.3.1 Das Software Requirements Document.- 9.4 Architectural Design.- 9.4.1 Das Architectural Design Document.- 9.5 Detailed Design.- 9.5.1 Das Detailed Design Document.- Variablen.- Funktionen.- 9.6 Implementation.- 10. Pointer.- 10.1 Das Prinzip von Pointern.- 10.2 Pointer und Adressen.- 10.3 Dynamische Memory-Verwaltung.- 10.4 Dynamische Arrays.- 10.5 Pointerarithmetik.- 10.6 Strings in C.- 10.7 Funktionspointer.- 11. Structures.- 12. Arbeitsprioritäten - ein kleines Beispiel.- 12.1 Aufgabenstellung.- 12.2 Designentscheidungen.- 12.3 Implementation.- 13. Typendefinitionen und Casts.- 14. Rekursion.- 15. Arbeiten mit mehreren Files: make.- 15.1 Das Prinzip von Make.- 15.2 Make Rules.- 15.3 Variablen in Makefiles.- 16. Der C-Preprocessor.- 16.1 Macros.- 16.1.1 Macros ohne Parameter.- 16.1.2 Macros mit Parametern.- 16.1.3 Definitionen rückgängig machen.- 16.2 Einfügen von Files.- 16.3 Bedingte Übersetzung.- 17. Speicherklassen.- 17.1 Die Speicherklasse extern.- 17.2 Die Speicherklasse register.- 17.3 Die Speicherklasse static.- 18. Der Datentyp enum.- 19. Unions.- 20. Weitere wichtige C-Konstrukte.- 20.1 Command-Line Arguments.- 20.2 File Handling.- 21. Diverse hilfreiche Befehle und Tools.- 21.1 Suche nach Textstellen in Files.- 21.2 Suche nach bestimmten Files im Filesystem.- 21.3 Kombination von Text-und Filesuche.- 21.4 Löschen von Files.- 21.5 Erstellen eines tar-Archivs.- 21.6 Versionskontrolle von Source-Code.- 21.7 Emacs.- 22. Ein paar Datenstrukturen.- 22.1 Einfach und doppelt verkettete Liste.- 22.2 Binärbaum.- 22.3 Hashmap.- 22.4 Stack.- 23. Beispiele zur Übung.- 23.1 Beispiel 1: Binäre Ganzzahlrepräsentation.- 23.1.1 Aufgabenstellung.- 23.2 Beispiel 2: Sortierte Liste.- 23.2.1 Aufgabenstellung.- Informelle Formulierung der Aufgabenstellung.- User Requirements Document.- 23.2.2 Ein paar Tipps.- 23.3 Beispiel 3: Taschenrechner.- 23.3.1 Aufgabenstellung.- Informelle Formulierung der Aufgabenstellung.- User Requirements Document.- A. Binäre Zahlenrepräsentationen.- A.1 Organisation von Bits und Bytes.- A.2 Ganzzahlen.- A.2.1 Verschiedene Shift-Operationen, Over-und Underflow.- A.2.2 Oktal-und Hexadezimalzahlen.- A.3 Gleitkommazahlen.- B. Reihenfolge der Auflösung von Operatoren.- C. Coding-Standard.- C.1 Generelle Regeln.- C.2 Coding-Rules.- D. Vollständige Implementation des Kaffeeautomaten.- E. readLine unter MS-Windows.- F. Vollständige Implementation der Clean Structures.- G. Vollständige Implementation der Arbeitsprioritäten-Liste.- H. Vollständige rekursive Implementation eines Binärbaumes.- I. Emacs.- I.1 Konventionen.- I.2 Allgemeine Tastenkombinationen.- I.3 Hilfe in Emacs.- I.4 Keyboard Macros.- I.5 Email.- I.6 News.- I.7 Dmacro Mode.- I.8 Konfiguration.- J. Lösungen zu den Übungsbeispielen.- J.1 Lösung zu Beispiel 1 (Binäre Ganzzahlrepräsentation).- J.1.1 Implementation 1.- J.1.2 Implementation 2.- J.1.3 Implementation 3.- J.2 Lösung zu Beispiel 2 (Sortierte Liste).- J.2.1 Implementation 1.- Vergleich der Anforderungen.- SRD.- Das Programm.- J.2.2 Implementation 2.- Doppelt Verkettete Liste.- Input Handling.- Error Handling.- Das Hauptprogramm.- Makefile.- J.3 Lösung zu Beispiel 3 (Taschenrechner).- J.3.1 Identifikation der Module.- J.3.2 Error-Handling.- J.3.3 Steuerungseinheit und Operationen.- J.3.4 Input-Handling.- J.3.5 Hashmap.- J.3.6 Stack.- J.3.7 Debugging.- J.3.8 Makefile.- J.3.9 Schlussfolgerungen aus der Implementation.