Skip to main content
main-content

Inhaltsverzeichnis

Frontmatter

1. Ein Überblick

Zusammenfassung
Die Entstehung von C erfolgte simultan zur Entwicklung des Betriebssystems UNIX. In den Jahren 1969–72 schrieb Ken THOMSON in den AT&T-BELL-Laboratories mit Hilfe von Dennis RITCHIE ein Betriebssystem (die erste Version von UNIX) für den Rechner DEC PDP-7 von Digital Equiment. Dazu entwickelte Thomson die Programmiersprache BCPL (Basic Combined Programming Language) von M.Richards (1967) weiter und nannte sie B B war wie BCPL für Systemprogrammierung gedacht; daher war der einzige verwendete Datentyp das Maschinenwort. Bei der Einführung der DEC PDP-11 1972 stellte sich das Problem, wie man das Betriebssystem am einfachsten an die Architektur der neuen Maschinen anpassen sollte. Da die PDP-11 nunmehr auch Zeichen, Ganz- und Fließkommazahlen unterstützte, war klar, daß B um dieses Datentypkonzept erweitert werden mußte. Das Resultat dieser Erweiterung war C, wie die neue Programmiersprache nun folgerichtig genannt wurde.
Dietmar Herrmann

2. Syntax

Zusammenfassung
Die Syntax einer Programmiersprache zählt stets zu den etwas trockenen Kapiteln eines Buches. Die Kenntnis der Syntax aber ist unerläßlich, um korrekte Programme zu schreiben und die Arbeitsweise des Compilers zu verstehen. Gerade in C, das sich durch eine Vielzahl von Operatoren, eine Kurzschreibweise und eine spezielle Interpretation von Ausdrücken wesentlich von anderen Programmiersprachen unterscheidet, ist die genaue Kenntnis aller “Grammatikregeln” der Sprache wichtig.
Dietmar Herrmann

3. Einfache Datentypen

Zusammenfassung
Der einfachste Datentyp ist der der Ganzzahl (engl. integer). Bei den meisten 16-Bit-Rechnern werden int-Zahlen durch ein Rechnerwort implementiert und haben somit eine 16-Bit Darstellung. Berücksichtigt man, daß ein Bit davon zur Speicherung des Vorzeichens benötigt wird, lassen sich
$${2^{15}} = 32768$$
verschiedenen Zahlen darstellen. Unter Einbeziehung der Null lassen sich damit die positiven Zahlen 0 bis 32767 darstellen.
Dietmar Herrmann

4. Kontrollstrukturen

Zusammenfassung
Die FOR-Schleife, auch als Zählwiederholung bezeichnet, hat folgende Syntax
$$\matrix{{{\rm{for(ausdruck1; ausdruck2; ausdruck3)}}} \cr {\{\,\,\,\,\,\,\,\,\,\,\,\,\,\,\} ;} \cr} $$
Dietmar Herrmann

5. Felder und Zeichenketten

Zusammenfassung
Gleichartige Elemente wie Folgenglieder, Polynom-Koeffizienten, Vektorkomponenten usw. können zu Feldern zusammengefeßt werden.
Dietmar Herrmann

6. Pointer

Zusammenfassung
Von vielen Leuten werden Pointer als das Kapitel der Programmiersprache C betrachtet, das am schwierigsten zu verstehen ist. Wie das obenstehende Zitat von HOARE zeigt, lehnen einige Informatiker das Arbeiten mit Zeigern als Rückschritt in die Assemblerzeit generell ab. Dies kommt zum einen daher, daß viele Programmiersprachen wie Basic oder Fortran überhaupt keine Pointer kennen und neuere Sprachen — wie Pascal — den Gebrauch von Pointern wesentlich einschränken. Zum anderen gilt, daß durch die in C verwendete Syntax für Pointer das Verständnis des Lernenden nicht gerade erleichtert wird.
Dietmar Herrmann

7. Funktionen

Zusammenfassung
Eine Funktion ist mathematisch gesehen eine Vorschrift, die einen bestimmten Funktionswert liefert. Entsprechend versteht man in der Informatik darunter einen selbständigen Programmteil, der in Abhängigkeit von gewissen Parametern einen wohlbestimmten Wert liefert.
Dietmar Herrmann

8. Speicherklassen

Zusammenfassung
C kennt zwei verschiedene Gültigkeitsbereiche von Variablen. Variable, die nur in dem Block gültig sind, in dem sie vereinbart worden sind, heißen automatisch (engl, automatic). Die Speicherklasse auto wird in C als Voreinstellung (Default) gewählt, wenn die Variable nicht explizit in eine andere Speicherklasse gesetzt wird. Dies bedeutet, daß die Vereinbarungen
$$\matrix{{{\rm{auto int i;}}} \hfill \cr {{\rm{int i;}}} \hfill \cr} $$
gleichbedeutend sind. Eine automatische Variable hat außerhalb ihres Blocks -gegeben durch das geschweifte Klammerpaar, das die Deklaration der Variablen umfaßt —Wert; man sagt, sie ist außerhalb des Blocks unsichtbar.
Dietmar Herrmann

9. Operatoren und Ausdrücke

Zusammenfassung
C kennt, wie kaum eine andere Programmiersprache, eine Vielzahl von Operatoren.
Dietmar Herrmann

10. Rekursion

Zusammenfassung
Eine Funktion, die sich zur Berechnung eines Funktionswertes selbst aufruft, heißt rekursiv.
Dietmar Herrmann

11. Höhere Datentypen

Zusammenfassung
Den Datentyp enum (englisch enumeratedaufgezählt) gab es schon bei zahlreichen älteren C-Compilern; er wird nun durch die neue ANSI C-Norm vollständig unterstützt.
Dietmar Herrmann

12. Dynamische Datenstrukturen

Zusammenfassung
Da die obere Indexgrenze eines Feldes zur Compilierzeit festliegen muß und auch zur Laufzeit nicht geändert werden kann, ist der Speicherbedarf eines Feldes genau festgelegt. Hinzu kommt, daß bei den kleineren Speichermodellen die Größe eines Feldes auf ein Segment, d.h. auf 64K, beschränkt ist. Das Feld stellt daher einen statischen Datentyp dar, im Gegensatz zu dynamischen Datentypen, bei denen der benötigte Speicherplatz nach Bedarf vergrößert oder verkleinert werden kann. Solche dynamische Datenstrukturen werden rekursiv definiert und mit Hilfe von Pointern realisiert. Als Beispiel solcher dynamischen Strukturen sollen Stacks, verkettete Listen und Binärbäume besprochen werden.
Dietmar Herrmann

13. Präprozessor und Bibliotheken

Zusammenfassung
Der Präprozessor ist ein Programm, das den Quellcode für die Compilerübersetzung vorbereitet.
Dietmar Herrmann

14. Dateien und stdin

Zusammenfassung
Die am meisten verwendete Standard-Funktion, die eine formatierte Ausgabe liefert, ist printf().
Dietmar Herrmann

15. Programmier-Prinzipien

Zusammenfassung
Stößt man auf eine besonders elegante Formulierung eines Algorithmus, fragt man sich oft, wie der Autor auf die entsprechende Programmidee gekommen ist. Mustert man jedoch eine Vielzahl von Programmen genauer, erkennt man bald, daß es im Grunde nur wenige grundlegende Programmierprinzipien gibt. Einige dieser Programmiertechniken sollen im folgenden dargestellt werden.
Dietmar Herrmann

16. System-Programmierung

Zusammenfassung
Obwohl die in diesem Abschnitt verwendeten Schlüsselwörter MS-DOS-spezi-fisch sind und daher nicht der ANSI C-Norm entsprechen, soll an einigen Beispielen gezeigt werden, wie man in C Zugang zum MS-DOS-Betriebssystem erhält. Eine vollständige Darstellung ist im Rahmen des Buches natürlich nicht möglich. Es wird hier verwiesen auf die Literatur [13] bzw. [22],
Dietmar Herrmann

17. Der Quick C-Compiler

Zusammenfassung
Im folgenden Abschnitt wurde die englische Version 1.0 des Quick C-Compi-lers verwendet. Dieser Compiler existiert in zwei Versionen: Der Compiler qc mit integriertem Editor und die Version qcl, die im Kommandozeilenmodus arbeitet.
Dietmar Herrmann

18. Der Turbo C-Compiler

Zusammenfassung
Die hier verwendete Version des Turbo C-Compilers ist die englische Version 2.0. Diese Version unterscheidet sich von 1.5 nur durch den zusätzlich eingebauten Debugger. Ab der Version 1.5 unterstützt der Compiler auch die Graphik.
Dietmar Herrmann

Backmatter

Weitere Informationen