Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 2 Das erste Programm
  gp 2.1 Der beste Lernerfolg
  gp 2.2 »Hallo Welt« in C
  gp 2.3 Analyse des Programms


Galileo Computing - Zum Seitenanfang

2.3 Analyse des Programms  toptop

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.


 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de