[C/C++] Erklärung eines einfachen C++-Programms

Dieses Thema im Forum "Programmier Tutorials" wurde erstellt von Korunder, 26. August 2006 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 26. August 2006
    Erklärung eines einfachen C++-Programms

    Dies ist der Quellcode:

    #include <iostream.h>
    #include <stdio.h>

    int main() // Ein einfaches C++-Programm
    {
    int zahl1, zahl2, ergebnis;

    zahl2 = 4;

    cout<<"\nGeben Sie eine ganze Zahl ein: ";
    cin>>zahl1;

    ergebnis = zahl1 + zahl2;

    cout<<"\n"<<zahl1 <<" + "<<zahl2 <<" = "<<ergebnis;

    getchar();
    return 0;
    }// end of 'int main()'


    Was macht dieses Programm? Es liest eine Zahl ein, die der Benutzer auf dem Bildschirm eingibt, addiert zu dieser Zahl 4 hinzu und gibt das Ergebnis aus. Das ist wirklich nicht viel und das kann vermutlich nahezu jeder auch im Kopf rechnen. Da es hierbei jedoch nur darum geht, ein ganz einfaches C++-Programm zu verstehen, habe ich bewußt auf anspruchsvollere Berechnungen verzichtet.

    In den ersten beiden Zeilen werden sogenannte Haeder-Dateien bekannt gemacht. Ohne ein Einbinden dieser Dateien kennt C++ die Funktionen 'cout' und 'cin' zur Ein- und Ausgabe von Daten über den Bildschirm nicht. Noch bevor der Compiler mit der Übersetzung des Programms beginnt, bearbeitet der sogenannte 'Praeprozessor' alle Zeilen, die mit dem Zeichen '#' beginnen. Er ersetzt dann z.B. die Zeile '#include <iostream.h> durch den Inhalt der Header-Datei 'iostream.h'.

    Jedes C++-Programm beginnt an der Stelle, an der das Schlüsselwort 'main' (für 'Haupt' bzw. 'Hauptprogramm') steht. Warum vor 'main' 'int' steht und warum hinter 'main' Klammern stehen, ist für das erste Grundverständnis nicht von Bedeutung. Das eigentliche Programm beginnt mit einer öffnenden geschweiften Klammer und endet mit einer schließenden geschweiften Klammer.

    In der Zeile ' int zahl1, zahl2, ergebnis;' werden drei Variablen deklariert. Was bedeutet dies? Nun, wir wollen zwei Zahlen addieren. Diese müssen irgendwo im Rechner gespeichert werden und auch das Ergebnis der Addition möchten wir auf dem Rechner speichern. Nun könnten wir dem Rechner sagen: "Gib uns bitte Speicherplatz für drei Zahlen". Das hätte zwei Probleme zur Folge. Der Rechner wüßte noch nicht, wie viel Speicherplatz wir für jede Zahl benötigen. Wenn wir nur ganze Zahlen zwischen 0 und 255 abspeichern wollen, würde hierzu ein Byte genügen. Aber wenn wir auch Zahlen wie z.B. 3,4982174 * 1049 speichern möchten, benötigen wir mehr Speicherplatz. Außerdem sind alle Zahlen im Speicher als Folge von Nullen und Einsen abgelegt. Wie soll zum Beispiel die Zahl 18 als Folge von Nullen und Einsen im Speicher dargestellt werden? Dies sind Informationen, die der Computer benötigt. Daher teilen wir dem Computer in diesem Fall mit, dass wir eine ganze Zahl speichern möchten. Dieser Datentyp heißt 'int' (integer). Nun weiß der Computer, wie viel Speicherplatz er für diese Zahl zur Verfügung stellen muss und er weiß auch, wie die Folgen von Nullen und Einsen in Zahlen umzusetzen sind und umgekehrt. Aber das reicht noch nicht. Stellen Sie sich vor, der Computer würde Ihnen mitteilen: "O.K., habe ich gemacht, der Speicherplatz ist reserviert. Hier ist die Adresse dieses Speicherplatzes: 0x48BE3208". Wollen Sie sich so eine Adresse merken? Oder sogar hunderte solcher Adressen? Wohl kaum! Das müssen Sie zum Glück auch nicht. Sie können nämlich diesem Speicherplatz einen Namen geben. Wenn Sie dann auf diesen Speicherplatz zugreifen möchten, brauchen Sie nur noch den Namen zu verwenden und der Computer hat sich für Sie die Adresse dieses Speicherplatzes gemerkt. Wenn Sie eine Zahl speichern möchten, deren Wert sich zur Laufzeit des Programms ändern kann, dann spricht man von einer Variablen (variabel = veränderbar). Wenn der Wert jedoch am Anfang festgelegt wird und sich dann nicht mehr ändern darf, spricht man von einer Konstanten. Dass sich ein Wert zur Laufzeit des Programms nicht ändern darf, wird mit dem C++-Schlüsselwort 'const' kenntlich gemacht. Die Deklaration einer Konstanten sieht dann so aus: const int wert = 10; Jetzt ist nur noch das Wort 'deklarieren' zu erklären. 'Deklarieren' bedeutet 'Bekannt machen'. Sie teilen dem Computer mit, welche Variablen Sie benötigen. Für jede Variable müssen Sie dabei den Datentyp angeben und einen Namen für diese Variable wählen. Wenn Sie mehrere Variablen vom gleichen Datentyp benötigen, können Sie die Variablennamen auch durch Kommas getrennt auflisten.

    So, nun haben wir Speicherplatz für drei Variablen erhalten. Aber was ist denn nun in diesen drei Speicherstellen gespeichert? Vermutlich erstmal nichts! Diese Vermutung ist leider falsch! Sie müssen sich das wie ein Schließfach am Bahnhof vorstellen. Wenn es offen ist und Sie es somit für sich beanspruchen können, ist es meist leer. Aber es könnte auch nutzloser Müll drin sein. Genauso verhält es sich mit den Variablen in C++. Wenn Sie Speicherplatz anfordern, erhalten sie ihn, ohne dass dieser zuvor "aufgeräumt" wird. Es könnte sein, dass alle Bits auf 0 gesetzt sind, es könnte aber auch irgendetwas anderes an dieser Stelle gespeichert sein.

    In der Zeile 'zahl2 = 4; wird die Variable 'zahl2' initialisiert. Das heißt, es wird ihr ein Anfangswert zugewiesen. Nach dieser Anweisung ist in der Variablen 'zahl2' der Wert 4 gespeichert, unabhängig davon, was zuvor in 'zahl2' gespeichert war. Der vorherige Wert wird mit dem Wert 4 überschrieben, der vorherige Wert existiert somit nicht mehr. Das '='-Zeichen heißt in C++ Zuweisungsoperator und sollte nicht mit dem Gleichheitszeichen aus der Mathematik verwechselt werden. Wenn in der Mathematik a = b gilt, dann gilt auch genauso b = a. In C++ sieht das ganz anders aus. Wenn in der Variablen a der Wert 1 und in der Variablen b der Wert 5 gespeichert ist, dann ist nach Ausführung der Anweisung a = b; in beiden Variablen der Wert 5 gespeichert. Hätte die Anweisung b = a; gelautet, wäre nach Ausführung der Anweisung in beiden Variablen der Wert 1 gespeichert.

    Rechts vom Zuweisungsoperator steht immer, was gespeichert werden soll. Unter Umständen steht dort eine Rechnung, deren Ergebnis gespeichert werden soll.

    Links vom Zuweisungsoperator steht immer nur eine einzige Variable. In dieser Variablen wird das Ergebnis gespeichert.

    In der Zeile 'ergebnis = zahl1 + zahl2; werden die Inhalte von 'zahl1' und 'zahl2' addiert und das Ergebnis wird in der Variablen 'ergebnis' gespeichert.

    Die Zeile 'cout<<"\nGeben Sie eine ganze Zahl ein: ";' dient dazu, den in Anführungszeichen stehenden Text als Information für den Benutzer auf dem Bildschirm auszugeben. Dabei gibt es eine Ausnahme: das '\n' wird nicht so auf dem Bildschirm ausgegeben. Das 'n' steht für 'new line' und bedeutet, dass der Cursor zum Anfang der nächsten Zeile springen soll und dort die Ausgabe des Textes begonnen wird.

    Die Zeile 'cin>>zahl1;' bedeutet, dass der Inhalt für die Variable 'zahl1' vom Bildschirm eingelesen werden soll. Die Zahl, die der Benutzer eingibt, wird sobald der Benutzer seine Eingabe mit 'CR (Carriage Return)' abgeschlossen hat, in die Variable 'zahl1' geschrieben.

    Die Zeile 'cout<<"\n"<<zahl1 <<" + "<<zahl2 <<" = "<<ergebnis;' dient dazu, das Ergebnis der Addition auf dem Bildschirm auszugeben. Alles was in Anführungszeichen steht, soll so 1:1 auf dem Bildschirm ausgegeben werden (mit der Ausnahme von '\n'; siehe oben). 'zahl1' steht nicht in Anführungszeichen, weil auf dem Bildschirm nicht 'zahl1' stehen soll, sondern der Inhalt von 'zahl1', also der Wert, der in dieser Variablen gespeichert ist, soll angezeigt werden.

    'getchar();' ist die Anweisung, ein Zeichen von Bildschirm einzulesen. Ohne diese Zeile würde das Konsolenfenster nach der letzten Berechnung nicht geöffnet bleiben. Durch diese Anweisung kann sich der Benutzer den Bildschirminhalt in aller Ruhe ansehen und das Fenster wird erst geschlossen, wenn er eine beliebige Taste betätigt.

    'return 0;' bedeutet, dass unser Programm keine Ergebnis nach 'außen' liefert. Das könnte erst dann von Bedeutung sein, wenn unser Programm von einem anderen Programm aufgerufen wird und dieses ein Ergebnis von unserem Programm erwartet. Dieses Ergebnis würde dann mit mit der return-Anweisung an das aufrufende Programm geliefert. Diese Zeile kann auch entfallen, wenn wir die erste Zeile 'int main()'; ersetzen durch 'void main()'. Damit geben wir gleich zum Ausdruck, dass unser Programm kein Ergebnis zurückliefert. 'void' ist das englische Wort für 'nichts'.
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.