ein Kapitel zurück                                           ein Kapitel weiter

Um Ihnen den Einstieg zu erleichtern wollen wir mit dem schon obligatorischen "Hello World" beginnen. Hier das Programm :

/*Download:hello.c*/
#include <stdio.h>

int main( )
{
printf("Hello World\n");
return 0;
}


Übersetzung des Programms mit GNU-C (Linux & MS-DOS)

Nehmen wir an Sie haben das Programm mit irgendeinem Texteditor geschrieben und den Quellcode unter den Namen "hello.c" abgespeichert. Wechseln sie in das Verzeichnis wo sie den Code abgespeichert haben. Übersetzen sie das Programm dann mit (unter Linux)...

gcc -o hello hello.c

...und mit dem DJGPP unter MS-DOS kompilieren sie mit...

gcc -o hello.exe hello.c

So werden sie die nächste Zeit Ihre Programme übersetzen. "gcc" ruft den Compiler auf. "hello" ist der Programmname mit dem sie das Programm dann aufrufen können. "hello.c" ist der Quellcode der übersetzt werden soll. Nun sollte in dem Verzeichnis in dem sie das Programm kompiliert und übersetzt haben ein Programm Namens hello stehen (unter MS-DOS: hello.exe). Nun können sie das Programm mit...

hello

...starten und es folgt die Ausgabe auf dem Bildschirm...

Hello World

Gratuliere sie haben soeben ihr erstes Programm geschrieben.

Die Übersetzung bei anderen Compilern a la Look & Feel (IDE's) funktioniert per Knopf bzw. Mausklick. Suchen sie einfach im Menü nach "Ausführen" oder "Compilieren". Wenn es nicht funktioniert benutzen sie einfach die Online-Hilfe die bei fast allen Compilern dabei ist. Falls sie es nicht hinbekommen können sie mir immer noch ein Mail schicken. Ein FAQ ist in Planung.

Nun wollen wir unser Programm schrittweise durchgehen. Also zerlegen wir das Programm in seine Einzelbestandteile...

#include <stdio.h>

include ist kein direkter Bestandteil der Sprache C, sondern ein Befehl des Präprozessors. Der Präprozessor ist ein Teil Ihres Compilers, der nicht das Programm Übersetzt, sondern kontrollierend nicht bleibende Änderung im Programmtext vornimmt die nur temporär benötigt werden.

Präprozessorbefehle erkennt man am # in der ersten Spalte. Compilieren sie das Programm doch mal ohne #include <stdio.h> - normalerweise sollte jetzt eine Fehlermeldung folgen wie :

Error. function 'printf' should have a prototype.

printf kommt doch im Programm vor sagen sie. Richtig erkannt. "printf" ist nichts anderes wie eine Funktion die in #include <stdio.h> definiert ist. #include - Dateien nennt man Headerdateien. Suchen sie mal das Verzeichnis "include" auf ihrem System (Linux unter /usr/include oder /usr/bin/include und MS-DOS z.B. C:\DJGPP\include). Sie werden noch viele andere Header-Dateien darin entdecken die wir später noch verwenden werden. Sie können sich die Header-Dateien auch mit einem Editor ansehen. Aber bitte ändern sie nichts darin. Die Abkürzung <stdio> steht für Standart I/O also Standart Aus. - und Eingabe. Zerbrechen sie sich jetzt nicht den Kopf wenn sie das jetzt noch nicht so recht verstehen. Wir kommen noch öfters auf die Headerdateien zurück die sowieso bei jedem Programm benötigt werden. Später werden wir auch eigene Header-Dateien entwerfen und in Programme einbinden.

Weiter zur Programmausführen...

int main( )

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 sie später mehrere Module (Funktionen), also mehrer Quellcodes, compilieren benötigen sie immer eine main-Funktion. "main" heisst auf deutsch soviel wie "Hauptfunktion".
Das "int" steht für eine Dezimal-Zahl. Im Fall einer Funkion bedeutet dies, daß diese einen Rückgabewert bekommt. In diesem Programm bekommt unsere main() - Funktion den Rückgabewert 0......

return 0;

....was soviel bedeutet das unser Programm sauber beendet wurde. Wir geben also mit return hier der Funktion main() den Wert 0 zurück. Mehr dazu erfahren sie in einem späteren Kapitel. Kommen wir zu...

{
 printf(".....");
}


Zwischen den geschweiften Klammern steht der Anweisungsblock. Das heißt in diesem Block steht was die Funktion "int main ()" macht. Natürlich können in dem Anweisungsblock weiter Anweisungsblöcke verwendet werden. Das hört sich komplizierter an als es ist. Ich komme noch darauf zurück. Merken sie sich einfach : Geschweifte Klammern fassen Anweisungen zu einem Block zusammen.
Also fassen wir zusammen was in unserem Block geschieht.....

printf("Hello World\n");

"printf" ist eine Funktion die in #include <stdio.h> festgelegt ist. Und deswegen wenn sie die Header-Datei #include <stdio.h> nicht im Programm angegeben haben kann der Compiler auch nichts mit "printf" anfangen. Mit "printf" kann eine beliebige Stringkonstanten auf dem Bildschirm formatiert ausgeben. Die Stringkonstante in diesem Fall "Hello Wordl\n" die ausgegeben wird steht immer zwischen zwei Hochkommata ("...."). Nicht erlaubt ist die Stringkonstante über das Zeilenende fortzusetzen wie in diesem Beispiel:

printf("Die ist in C
nicht erlaubt"
);


Es gibt aber eine Ausnahme der Regel in dem man ein "\" (Backslash) setzt. Hierzu das Beispiel:

printf("Hier ist die Ausnahme der Regel \
dies hier ist erlaubt, dank Backslash""
);


Das Zeichen "\n" in der Funktion von "printf" bedeutet newline und erzeugt auf dem Bildschirm eine Zeilenvorschub wie er mit der Tastatur mit der Taste ENTER ausgelöst wird. Es gibt noch mehr sogenannte ESCAPE-Sequenzen die mit einem Backslash beginnen. Auch dazu werden sie noch einiges Erfahren.

So jetzt nur noch das sogenannte Semikolon ";". Es wird eigentlich hauptsächlich dazu verwendet um das Ende einer Anweisung anzuzeigen. Der Compiler weiß hier, aha, hier ist das Ende der Anweisung von "printf" und fährt dann mit der nächsten Zeile bzw. Anweisung fort. Merken sie sich: Anweisungen, denen kein Anweisungsblock folgt, werden mit einem Semikolon abgeschlossen. In unserem Fall ist das Programm dann beendet.

Zum besseren Verständis können sie sich ja einmal den Programmablauf ansehen....


Programmablauf PAP


Hieran können sie erkennen das zuerst der Präprozessor seine Instruktionen abarbeitet. Als nächstes geht es zur main() - Funktion. In der main() - Funktion, oder genauer, in dem Anweisungsblock der main() - Funktion entscheidet der Programmierer dann über den weiteren Ablauf des Programms. Zum Beipsiel mit Schlüsselworten wie in unserem Beispiel printf.

Wer Lust hat zu schauen wie das Hello World - Programm in anderen Sprachen so aussieht kann sich ja mal auf dieser Homepage umschauen. Dort stehen maßig Hello-World-Beispiele zur Demonstration.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf