Grundgerüst eines C++-Programms
Willemers Informatik-Ecke
Ein Programm ist eine Aneinanderreihung von Befehlen, die dem Computer zur Abarbeitung zugeführt werden können. Wie schon erwähnt, wird ein C++-Programm in einem Texteditor geschrieben und dann von einem Compiler (In diesem Fall ist mit dem Compiler der komplette Übersetzer gemeint, der aus Compiler und Linker besteht. Diese Ungenauigkeit ist im allgemeinen Sprachgebrauch durchaus üblich.) in ausführbaren Code übersetzt. Danach kann es gestartet werden.

main()

Ein C++-Programm besteht mindestens aus der Funktion main(). Die Silbe »main« ist englisch und bedeutet so viel wie die deutsche Vorsilbe »Haupt«. Was in C++ genau unter einer Funktion zu verstehen ist, wird später noch sehr viel ausführlicher behandelt und soll Sie hier nicht verwirren. Wichtig ist, dass Sie in jedem C++-Programm irgendwo den Namen main mit einem Klammerpaar finden werden. In manchen Fällen stehen zwischen den Klammern ein paar kryptisch anmutende Zeichen. Aber auch das sollte Sie zu Anfang nicht stören. Ignorieren Sie es von ganzem Herzen, bis Sie wissen, wozu Sie es brauchen.

Die Hauptfunktion beginnt direkt nach einer öffnenden geschweiften Klammer und endet mit der schließenden Klammer. Zwischen den geschweiften Klammern stehen die Befehle der Hauptfunktion. Sie werden nacheinander ausgeführt. Das folgende kurze Listing enthält nichts und ist damit das kleinste denkbare C++ Programm.

[Minimalprogramm]

int main()
{
}

Dieses Programm tut gar nichts. Wenn es etwas täte, stünden die Befehle zwischen den geschweiften Klammern.

Kommentare

Wenn wir schon einmal ein Programm haben, das nichts tut, wollen wir es auch um Befehle erweitern, die nichts tun: Kommentare.

Freundlichkeit unter Kollegen

Sie können in das Programm Kommentare einfügen, die vom Compiler völlig ignoriert werden. Der Zweck solcher Kommentare ist es zu dokumentieren, warum das Programm so und nicht anders geschrieben wurde. Die Kommentare richten sich an Programmierer. Dies können Kollegen sein, die Ihr Programm korrigieren oder erweitern sollen. Aber noch öfter helfen Sie sich selbst damit. In der Praxis ist es so, dass Sie vermutlich auch herangezogen werden, wenn eines Ihrer Programme nicht korrekt läuft oder ergänzt werden soll. Da Sie zwischendurch andere Programme geschrieben haben werden, vielleicht geheiratet haben, umgezogen sind und noch drei weitere Programmiersprachen gelernt haben, werden Sie sich nicht mehr an jedes Detail erinnern. Sie werden dankbar sein, wenn Sie in den Programmen ausführliche Hinweise finden, wie und warum es so funktioniert oder zumindest funktionieren soll.

Zeilenweise

Es gibt zwei Arten, einen Text davor zu schützen, dass der Compiler versucht, ihn als Programm zu interpretieren. Die einfachere Art der Kommentierung ist es, zwei Schrägstriche direkt hintereinander zu setzen. Damit gilt der Rest der Zeile als Kommentar.

[Zeilenweises Kommentieren]

main()
{
    // Hier beginnt der Kommentar.
    // Die naechste Zeile braucht ihr
    // eigenes Kommentarzeichen.
}

Kommentarblock

Daneben gibt es die Möglichkeit, einen größeren Text in Kommentarklammern einzuschließen und damit dem Compiler zu entziehen. Der Anfang des Kommentars wird durch den Schrägstrich, gefolgt von einem Stern, festgelegt. Der Kommentar endet mit der umgekehrten Zeichenfolge, also mit einem Stern und dann einem Schrägstrich.

[Blockweises Kommentieren]

main()
{
  /* Hier beginnt der Kommentar.
     Die naechste Zeile braucht kein
     eigenes Kommentarzeichen.
   */
}

Die meisten Compiler können diese Kommentarklammern nicht verschachteln. Das bedeutet, dass Sie beliebig oft den Kommentaranfang mit Schrägstrich und Stern definieren können. Das erste Ende-Zeichen aus Stern und Schrägstrich beendet den Kommentar. Der Compiler wird den folgenden Text als Programm ansehen und versuchen, ihn zu übersetzen.

[Das geht schief!]

main()
{
  /* Hier beginnt der Kommentar
     /*
       Die naechste Zeile braucht kein
       eigenes Kommentarzeichen
      */
     Dies wird der Compiler wieder uebersetzen wollen.
  */
}

Kurzkommentar

Mit /* und */ können nicht nur große Blöcke, sondern auch kurze Teile innerhalb einer Zeile kommentiert werden. Diese Möglichkeit haben Sie mit dem doppelten Schrägstrich nicht, weil dieser Kommentar ja immer bis zum Ende der Zeile geht. Im folgenden Beispiel ist die schließende Klammer von main() außerhalb des Kommentars.

main( /* hier könnte auch noch etwas stehen */ )
{

Inhalt der Kommentare

In vielen Programmierkursen und auch in einigen Firmen finden Sie umfangreiche Beschreibungen, die sich darüber auslassen, wo Kommentare erscheinen sollen und was sie beinhalten sollen. Der Zweck dieser Vorschriften ist, dass die Investition in die Programmierung nicht verloren geht. Wenn ein unverständlicher Programmcode später kontrolliert wird, kann es sein, dass dann Fehler eingebaut werden, nur weil der Programmierer nicht verstanden hat, was der Zweck des Programmteils war. Die einfachste Regel in der Kommentierung lautet darum:

Kommentieren Sie nicht, was Sie gemacht haben, sondern warum Sie es so gemacht haben!

Ein Kommentar »Zwei Werte werden addiert« ist nutzlos. Denn jeder Programmierer, der die Sprache C++ auch nur halbwegs kennt, kann das direkt im Quelltext ablesen. Dagegen ist die Aussage »ermittle den Bruttobetrag aus Nettobetrag und MWSt« hilfreich, da dadurch jeder Leser weiß, warum diese Werte addiert werden.

Anweisungen

Ein Programm besteht nicht nur aus dem Rahmen und Kommentaren, sondern auch aus Anweisungen. Anweisungen sind die Befehle, aus denen ein Programm besteht. Eine Anweisung kann dazu dienen, etwas zu speichern, zu berechnen, zu definieren oder auf dem Bildschirm auszugeben. Anweisungen sind die Grundeinheiten, aus denen Programme bestehen.

Freie Gestaltung

Anweisungen können in C++ beliebig formatiert werden. Es besteht keine Verpflichtung, sie in einer bestimmten Position anzuordnen. Auch können Anweisungen über beliebig viele Zeilen gehen. Allerdings besteht der Compiler extrem kleinlich darauf, dass Anweisungen immer mit einem Semikolon abgeschlossen werden.

Blöcke

Zusammenfassung

Mehrere Anweisungen können zu einem Block zusammengefasst werden. Ein Block wird durch geschweifte Klammern eingefasst. Der Compiler wird einen Block wie eine einzige Anweisung behandeln.

Sicher ist Ihnen schon aufgefallen, dass die Hauptfunktion main() ebenfalls solche geschweiften Klammern hat. In der Tat ist dies der Block, in dem die Befehle des Programms zusammengefasst werden.

Konventionen

Um die Übersicht zu erhöhen, pflegt man alle Befehle innerhalb eines Blocks einzurücken. Achten Sie vor allem am Anfang darauf, dass die zusammengehörigen geschweiften Klammern auf einer Ebene stehen. Das folgende Beispiel mit Pseudobefehlen zeigt, wie das Einrücken korrekt ist.

[Eingerückte Blöcke]

main()
{
    Hier sind Pseudo-Anweisungen;
    Diese gehört dazu;
    {
        Neuer Block, also einrücken;
        Wir bleiben auf diesem Niveau;
        Das kann ewig weitergehen;
    }
    Nun ist die Klammer geschlossen;
    Und die Einrückung ist auch zurück;
}

Einrückweite

Wie weit Sie einrücken, ist Geschmacksache. Aus Erfahrung kann man sagen, dass eine Einrückung von einem Zeichen schwer erkennbar ist. Zwei Leerschritte sind darum das absolute Minimum. Drei oder vier Schritte sind weit verbreitet. Auch wenn viele Editoren acht Schritte für den Tabulator verwenden, wird der Code dadurch oft unübersichtlich, weil er zu weit nach rechts herausragt.