Praktische C-Programmierung, 3. Auflage von Steve Oualline

Wie C funktioniert

C ist als Brücke zwischen dem Programmierer und dem rohen Computer konzipiert. Die Idee ist, dem Programmierer die Möglichkeit zu geben, ein Programm in einer Weise zu organisieren, die er leicht verstehen kann. Der Compiler übersetzt dann die Sprache in etwas, das die Maschine verwenden kann.

Computerprogramme bestehen aus zwei Hauptteilen: Daten und Anweisungen. Der Computer unterwirft diese beiden Teile wenig oder gar keiner Organisation. Schließlich sind Computer so konzipiert, dass sie so allgemein wie möglich sind. Der Programmierer sollte seine Organisation dem Computer aufzwingen, nicht umgekehrt.

Die Daten in einem Computer werden als eine Reihe von Bytes gespeichert. C organisiert diese Bytes in nützliche Daten. Datendeklarationen werden vom Programmierer verwendet, um die Informationen zu beschreiben, mit denen er arbeitet. Ein Beispiel:

int total; /* Total number accounts */

sagt C, dass wir einen Teil des Computerspeichers verwenden wollen, um eine ganze Zahl namens total zu speichern. Wir lassen den Compiler entscheiden, welche Bytes des Speichers verwendet werden sollen; diese Entscheidung ist ein kleines buchhalterisches Detail, um das wir uns nicht kümmern wollen.

Unsere Variable total ist eine einfache Variable. Sie kann nur eine ganze Zahl enthalten und nur eine Gesamtsumme beschreiben. Eine Reihe von Ganzzahlen kann wie folgt in einem Array organisiert werden:

int balance; /* Balance (in cents) for all 100 accounts */

Auch hier kümmert sich C um die Details, um diese Organisation im Speicher des Computers durchzusetzen. Schließlich gibt es noch komplexere Datentypen. Ein Rechteck kann zum Beispiel eine Breite, eine Höhe, eine Farbe und ein Füllmuster haben. In C können wir diese vier Elemente in einer Gruppe organisieren, die Struktur genannt wird.

struct rectangle { int width; /* Width of rectangle in pixels */ int height; /* Height of rectangle in pixels */ color_type color; /* Color of the rectangle */ fill_type fill; /* Fill pattern */};

Der Punkt ist, dass Strukturen es dem Programmierer ermöglichen, die Daten so anzuordnen, dass sie seinen Bedürfnissen entsprechen, egal wie einfach oder komplex diese Daten sind. Die Übersetzung dieser Datenbeschreibung in etwas, das der Computer verwenden kann, ist die Aufgabe des Compilers, nicht des Programmierers.

Aber Daten sind nur ein Teil eines Programms. Wir brauchen auch Anweisungen. Soweit es den Computer betrifft, weiß er nichts über die Anordnung der Anweisungen. Er weiß, was er mit der aktuellen Anweisung macht und wo er die nächste bekommt, aber mehr nicht.

C ist eine Hochsprache. Sie ermöglicht es uns, eine Anweisung auf hoher Ebene zu schreiben, wie zum Beispiel:

area = (base * height) / 2.0; /* Compute area of triangle */

Der Compiler übersetzt diese Anweisung in eine Reihe von kryptischen Maschinenanweisungen auf niedriger Ebene. Diese Art von Anweisung wird als Zuweisungsanweisung bezeichnet. Sie wird verwendet, um den Wert eines arithmetischen Ausdrucks zu berechnen und zu speichern.

Wir können auch Steueranweisungen verwenden, um die Reihenfolge der Verarbeitung zu steuern. Anweisungen wie die if- und switch-Anweisungen ermöglichen es dem Computer, einfache Entscheidungen zu treffen. Anweisungen können immer wieder wiederholt werden, indem man Schleifenanweisungen wie while und for verwendet.

Gruppen von Anweisungen können zu Funktionen zusammengefasst werden. So müssen wir nur einmal eine Allzweckfunktion schreiben, um ein Rechteck zu zeichnen, und können sie dann immer wieder verwenden, wenn wir ein neues Rechteck zeichnen wollen.

C bietet dem Programm einen reichhaltigen Satz von Standardfunktionen, die allgemeine Funktionen wie Suchen, Sortieren, Eingabe und Ausgabe ausführen.

Ein Satz verwandter Funktionen kann in einer einzigen Quelldatei gruppiert werden. Viele Quelldateien können kompiliert und miteinander verknüpft werden, um ein Programm zu bilden.

Eines der Hauptziele der Sprache C ist es, Anweisungen in wiederverwendbaren Komponenten zu organisieren. Schließlich kann man Programme viel schneller schreiben, wenn man den größten Teil des Codes von irgendwo anders „ausleihen“ kann. Gruppen von wiederverwendbaren Funktionen können in einer Bibliothek zusammengefasst werden. Wenn Sie zum Beispiel eine Sortierroutine benötigen, können Sie die Standardfunktion qsort aus der Bibliothek nehmen und in Ihr Programm einbinden.

Die Datendeklarationen, Strukturen und Steueranweisungen und andere Elemente der Sprache C sind nicht für den Computer bestimmt. Der Computer kann nicht zwischen einer Million zufälliger Bytes und einem echten Programm unterscheiden. Alle Elemente der Sprache C sind dazu gedacht, dem Programmierer zu ermöglichen, seine Ideen klar auszudrücken und zu organisieren, und zwar in einer Weise, die auf ihn zugeschnitten ist, nicht auf den Computer.

Organisation ist der Schlüssel zum Schreiben guter Programme. In diesem Buch wissen Sie zum Beispiel, dass sich das Inhaltsverzeichnis vorne und der Index hinten befindet. Wir verwenden diese Struktur, weil Bücher auf diese Weise organisiert sind. Die Organisation erleichtert die Benutzung dieses Buches.

Mit der Sprache C können Sie Ihre Programme mit einer einfachen, aber leistungsfähigen Syntax organisieren. Dieses Buch geht über die C-Syntax hinaus und lehrt Sie Stilregeln, die es Ihnen ermöglichen, äußerst lesbare und zuverlässige Programme zu erstellen. Durch die Kombination einer leistungsfähigen Syntax mit einem guten Programmierstil können Sie leistungsfähige Programme erstellen, die komplexe und wunderbare Operationen ausführen, aber auch so organisiert sind, dass Sie sie leicht verstehen können, wenn Änderungen anstehen.

Leave a Reply