Entwicklungsgeschichte:
br /
B C P L
Martin Richards, 1969
Strukturierter Assembler
B
Ken Thompson, 1970
ähnlich Fortran
interpretativ ausgeführt
kein Typenkonzept
C
Dennis Ritchie, 1974
maschinennahe höhere Programmiersprache
Unterprogramme
Steuerstrukturen
Datentypen
C - Philosophie:
C ist auf der einen Seite eine relativ maschinennahe Sprache, die eine sehr gute Ausnutzung des
Rechners ermöglicht. Andererseits ist C eine höhere Sprache, die Details der Rechnerarchitektur
verbirgt, so dass die Programmerstellung programmiereffizient durchgeführt werden kann.
Charakteristika:
relativ maschinennahe Sprache: Register, Inkrement- und Dekrementoperatoren
Weiterentwicklung von BCPL (Basic Combined Programming Language)
Datentypen: int, short, long, float, double, char, Zeiger; kein bool
Datenstrukturen: Verbunde, Felder
Deklaration (Bezeichner, Datentyp) und Definition (Speicherreservierung)
Speicherklassen: auto, static, extern, register
nur Funktionen (keine Parameterüberprüfung bei Aufruf, nicht schachtelbar)
keine E/A-Möglichkeiten (nur über Bibliotheken mit Standardfunktionen)
Precompiler für include-Dateien und Makroexpander
90% von UNIX ist in C implementiert
- 0.2 -
Vorteile:
Geringer Sprachumfang
Weitgehend maschinenunabhängige Programmierung
Effiziente Übersetzung in Maschinenkode möglich
Entwicklungsgeschichte
2
Nachteile:
Viele Fehlermöglichkeiten werden vom Compiler nicht überprüft
Wertzuweisungen zwischen Variablen unterschiedlicher Typen gelten als korrekt
Durch Zugriff auf Adressen kann jede Typprüfung umgangen werden (trickreiches
Programmieren möglich)
Flache Programmhierarchie
Syntaktisch vielfältige Operationen mit gleicher Semantik
Mangelhafte Zähl - und Mehrfachauswahl
Programmaufbau:
TRIVIAL.C
main(){
}
Ein C-Programm besteht aus einer oder mehreren Funktionen, wobei es genau eine main()-
Funktion geben muss, da der Programmablauf dort startet.
Einem Funktionsbezeichner folgen immer runde Klammern (..), die Argumente oder
Parameter enthalten. Auch wenn keine Argumente oder Parameter vorhanden sind,
müssen die Klammern angegeben werden.
main() kann möglicherweise andere Funktionen anderen Namens aufrufen.
Außer dem obligatorischen Funktionsblock werden auch andere Anweisungsgruppen
mit geschweiften Klammern { .. } zu Blöcken zusammengefasst.
Ein Objekt ist in C eine im Programm benannte Speicherstelle. Namen bestehen aus
Buchstaben, Ziffern und der Unterstreichung.
Das erste Zeichen eines Namens muss ein Buchstabe sein.
In der Regel sind die ersten 8 Zeichen signifikant.
Groß- und Kleinschreibung werden unterschieden.
Für C ist Kleinschreibung gebräuchlich.
Alle Schlüsselwörter sind kleingeschrieben und reserviert.
Entwicklungsgeschichte
3
ANSI-Schlüsselwörter:
auto break case char const continue
default do double else enum extern
float for goto if int long
register return short signed sizeof static
struct switch typedef union unsigned void
volatile while
Programmeinfüqunqen:
WRTSOME.C
main() {
printf(\"This is a line of text to output.\");
}
Ausgabe:
Grundsätzlich besteht C nur aus Steuer- und Vereinbarungsbefehlen. Für alle anderen Funktionen
werden Programmeinfügungen benötigt. Diese werden durch den Gebrauch der Library-Funktionen
und des C-Präprozessors ermöglicht.
Standard- und Library-Funktionen dürfen in C-Programmen ohne weiteres benutzt werden. Sie
werden bei Bedarf beim Kompilieren einer Standardbibliothek entnommen und dem eigenen
Programm hinzugefügt.
Ein Beispiel einer solchen Funktion ist \"printf()\".
Diese Funktion wird im allgemeinen zur formatierten Ausgabe verwendet; sie steht in der CLibrary.
Die Funktion gibt den String (Zeichenkette), der zwischen den Anführungszeichen steht, aus.
Erstellen eines C - Programms:
Erzeugt und verändert eine C-Quelltext-
Datei (*.C)
Definition von Konstanten und Makros.
Einfügen von Definitionsdateien (*.H)
EDITOR
PRÄPROZESSOR
Entwicklungsgeschichte
4
erzeugt nicht lauffähigen Objektcode
(*.OBJ)
fügt erforderlichen Objektcode aus *.LIB
ein (und evtl. andere *.OBJ) und erzeugt
*.EXE
COMPILER
LINKER
|