0 Vorwort

Die Kapitel 1 bis 7 behandeln die Grundlagen von ANSI-C und sind mit zahlreichen Beispielen belegt. Da die Beschreibung sehr kurz gehalten wurde und damit nicht alle Fragen der Programmierung in C abdecken kann, sei an dieser Stelle auf die Literatur /3/, /4/ und /5/ hingewiesen.

Kapitel 8 enthält alle ANSI-Standard-Funktionen von C in alphabetischer Reihenfolge und dient im Wesentlichen zum Nachschlagen.

Im Kapitel 9 befinden sich zahlreiche Tabellen und Übersichten, die als Hilfe bei der Suche nach Funktionen, Datentypen usw. gedacht sind.
 
 

1 Einführung in C

1.1 Die Entwicklungsgeschichte von C

Eine der ersten Hochsprachen war ALGOL 60 (ALGOrithmic Language) die von einem internationalen Komitee im Jahre 1960 entwickelt wurde. Sie war die erste exakt definierte Programmiersprache für mathematische Aufgabenstellungen (Backus-Naur-Beschreibung).

Aus dieser Sprache wurde CPL (Combined Programming Language) von der Cambridge Universität und der University of London 1963 entwickelt.

Martin Richards entwickelte im Jahre 1967 diese Sprache weiter zu BCPL (Basic CPL).

1970 wurde BCPL zur Sprache B durch Ken Thompson weiterentwickelt. B war eine Systemprogrammiersprache ohne Typkonzept für den Rechner DEC PDP-7 (DEC - Digital Equipment Corporation).
 

Die Entwicklung der Programmiersprache C ist eng mit der Entwicklung des Betriebssystems UNIX verbunden.

Die beiden Wissenschaftler Dennis Ritchie und Ken Thompson entwickelten in den Bell Laboratories am MIT das Betriebssystem UNIX. Die erste Version von UNIX wurde noch in ASSEMBLER geschrieben. Eine Programmiersprache, die nicht nur für den Menschen schwer verständlich ist, sondern auch auf verschiedenen Computern in einer anderen Variante vorliegt. Somit konnte UNIX nicht auf allen Systemen problemlos laufen.

Daher entstand der Wunsch, eine einfache, aber schnelle Sprache zu entwickeln, welche die Vorteile einer strukturierten Sprache bietet und die die Möglichkeiten eines Assemblers ausnutzt.

1971 enwickelte Dennis Ritchie aus den Sprachen BCPL und B die Programmiersprache C auf einer PDP-11 in den Bell-Laboratorien (Murray Hill, USA).

Das Betriebssystem UNIX wurde 1972 für den Rechner PDP-11 in C umgeschrieben und wurde ein großer Erfolg.

1978 erschien das Buch "The C Programming Language" von Brian Kernigham und Dennis Ritchie. Dieses Buch war lange Zeit ein Quasi-Standard für die Programmiersprache C. K&R-C ist zum festen Begriff geworden.

1988 wurde eine Sprachbeschreibung für C durch das ANSI- (American National Standard Institute) Komitee X3J11 veröffentlicht.

Diese Sprachbeschreibung wurde 1989 zum ANSI-Standard und wird als ANSI-C bezeichnet.
 
 

1.2 Charakterisierung von C
 
 

Der Kern von C ist relativ klein und besitzt, in Abhängigkeit des jeweiligen Compilers, nur etwa 30 bis 40 Schlüsselwörter (ANSI-C enthält 32 Schlüsselwörter). Außerdem sind die hardwareabhängigen Bestandteile von C dermaßen minimal gehalten, dass C leicht auf andere Systeme übertragbar ist. Man spricht in diesem Zusammenhang bei C auch von einer portablen Sprache. Diese Fähigkeit der leichten Übertragbarkeit ist auch der Grund dafür, dass man C heute auf fast allen Computersystemen (vom Heim-Computer bis zum Großrechner) vorfindet.

Die Programmiersprache C unterstützt in großem Maße den Zugriff auf Bits, Bytes und Adressen. Damit ist eine effektive Maschinenprogrammierung möglich. Ein weiteres Merkmal von C ist, dass von Hause aus keine Anweisungen für die Ein- und Ausgabe, Dateizugriffe oder Speicherverwaltung zum Sprachumfang gehören. Diese Aufgaben übernehmen standardisierte Funktionen, die meist in umfangreichen Bibliotheken zum Compiler mitgeliefert werden.
 
 

1.3 Die Phasen der Programmentwicklung

Damit aus einem C-Programm ein ausführbares Programm wird, sind folgende drei Schritte notwendig:

1. Mit Hilfe eines Editors oder eines Textverarbeitungsprogramms, welches in der Lage sein muss, Dateien im ASCII-Format abzuspeichern, wird der Programmtext, der sogenannte C-Quellcode, erstellt und mit der Dateiendung .c (bei C++ Pro- grammen mit .cpp) abgespeichert.

Große Projekte sollten modular programmiert werden. Der Quellcode wird dabei auf mehrere Quelldateien verteilt, die dann einzeln bearbeitet und übersetzt werden können.

2. Mit dem Compiler wird der Quellcode zunächst auf Korrektheit überprüft. Liegen keine Fehler vor, erstellt der Compiler den C-Objektcode.

3. Im letzten Schritt wird vom Linker aus dem Objektcode ein ausführbares Programm erzeugt. Der Linker verbindet den Objektcode mit den Bibliotheken, die vom

Programm benötigt werden. Aber auch beim Linkvorgang können Fehler auftreten,

z.B. wenn der Linker die Bibliotheken nicht findet.

Sind diese drei Schritte erfolgreich abgeschlossen, liegt ein ausführbares Programm vor. Doch sollte man beachten, dass auch dieses noch fehlerbehaftet sein kann, z.B. wenn eine Funktion nicht die beabsichtigte Aufgabe erfüllt oder Fehleingaben nicht rechtzeitig abgefangen werden, die dann zum Programmabsturz führen.

Erst nach einer umfangreichen Testphase des Programms und der Beseitigung o.g. Fehler ist die Programmentwicklung abgeschlossen.