2.3 Analyse des Programms
 
Jetzt soll das erste Programm in seine einzelnen Bestandteile zerlegt und Schritt für Schritt durchgegangen werden.
#include <stdio.h>
include ist kein direkter Bestandteil der Sprache C, sondern ein Befehl des Präprozessors. Der Präprozessor ist ein Teil des Compilers, der nicht das Programm übersetzt, sondern kontrollierend nicht bleibende Änderungen im Programmtext vornimmt. Diese Änderungen sind jedoch nur temporär.
Präprozessorbefehle erkennen Sie am vorangestellten #-Zeichen. Kompilieren Sie das Programm noch einmal ohne #include <stdio.h>, dann sollte eine Fehlermeldung folgen, wie z.B. die folgende:
Error. function 'printf' should have a prototype.
printf() kommt doch im Programm vor? Richtig. printf() ist eine (Standard–)Funktion, die in #include <stdio.h> deklariert ist. include-Dateien nennt man auch Headerdateien. Suchen Sie das Verzeichnis INCLUDE auf Ihrem System (unter Linux ist das typischerweise /usr/include oder /usr/bin/include und bei MS Windows z.B. C:\Name_des_Compilers\include), und Sie werden noch viele andere Headerdateien darin entdecken, die später noch Verwendung finden.
Die Abkürzung stdio steht für Standard-Input/Output, also Standard-Ein- und Ausgabe. Es wird noch öfters auf die Headerdateien eingegangen, die ohnehin in jedem Programm benötigt werden. Später werden Sie auch eigene Headerdateien entwerfen und im Programm einbinden.
Weiter zur Programmausführung:
int main(void)
Hier beginnt das Hauptprogramm. Eine main-Funktion wird immer benötigt, damit der Compiler weiß, wo er beginnen muss, das Programm zu übersetzen. Auch wenn später mehrere Module (Funktionen), also mehrere Quellcode-Dateien, kompiliert werden (zu einer ausführbaren Datei binden), benötigen Sie immer eine main-Funktion. main heißt auf Deutsch so viel wie Hauptfunktion. Das void in der main()-Funktion steht für einen »leeren« Datentyp (mehr dazu später). void könnten Sie hier auch ganz weglassen – allerdings soll hier nicht unerwähnt bleiben, dass () und (void) in C++ nicht dasselbe sind. Sofern Sie also Ihre Programme erweitern wollen, sollten Sie es gleich mit angeben.
int steht für eine Ganzzahl. Im Fall einer Funktion bedeutet dies, dass diese einen Rückgabewert hat, vom Typ int. In diesem Programm bekommt die main-Funktion den Rückgabewert 0 durch den Aufruf:
return 0;
Was bedeutet: Das Programm wurde ordnungsgemäß beendet. Es wird also mit return hier der Funktion main der Wert 0 zurückgegeben. Genaueres dazu (zur main()-Funktion und deren Rückgabewerte) in einem späteren Kapitel. Weiter mit:
{
printf(".....");
}
Zwischen den geschweiften Klammern steht der Anweisungsblock. Das heißt, in diesem Block befinden sich alle Anweisungen, die die Funktion int main() auszuführen hat. Natürlich können innerhalb eines Anweisungsblocks weitere Anweisungsblöcke verwendet werden. Das hört sich komplizierter an als es ist. Darauf wird später noch eingegangen.
Merke Geschweifte Klammern fassen Anweisungen zu einem Block zusammen.
|
Und was geschieht in diesem Anweisungsblock?
printf("Hallo Welt\n");
printf() ist eine Funktion, die in der Headerdatei stdio.h deklariert ist, wie bereits erwähnt wurde. Deswegen kann der Compiler, wenn Sie diese Headerdatei nicht im Programm angegeben haben, nichts mit printf() anfangen. Mit der Funktion printf() kann eine beliebige Stringkonstante formatiert auf dem Bildschirm ausgegeben werden. Die Stringkonstante, in diesem Fall »Hallo Welt«, die ausgegeben wird, steht immer zwischen zwei Hochkommata ("Stringkonstante"). Nicht erlaubt ist es, eine Stringkonstante über das Zeilenende fortzusetzen, wie etwa im folgenden Beispiel:
printf("Dies ist in C
nicht erlaubt");
Es gibt aber eine Ausnahme dieser Regel: indem Sie ein \ (Backslash) setzen. Hierzu ein Beispiel:
printf("Hier ist die Ausnahme der Regel \
dies hier ist erlaubt, dank Backslash");
Sie sollten aber dabei beachten, dass alle Leerzeichen nach dem Backslash in der nächsten Zeile ebenfalls bei der Ausgabe berücksichtigt werden. Das Zeichen '\n' in der Funktion von printf() ist ein Steuerzeichen und bedeutet newline und erzeugt auf dem Bildschirm einen Zeilenvorschub, wie er mit der Tastatur durch die Taste (¢) ausgelöst wird.
Jetzt zum Semikolon (;): Es wird hauptsächlich dazu verwendet, das Ende einer Anweisung anzuzeigen. Der Compiler weiß dann, hier ist das Ende der Anweisung von printf() und fährt nach der Abarbeitung der Anweisung mit der nächsten Zeile bzw. Anweisung fort. Natürlich hat das Semikolon keine Wirkung, wenn es in einer Stringkonstante verwendet wird:
printf("Hallo; Welt\n");
Ausgabe:
Hallo; Welt
Merke Anweisungen, denen kein Anweisungsblock folgt, werden mit einem Semikolon abgeschlossen.
|
|