Richtig geschriebene C++ Programme haben eine besondere Struktur. Nur wenn die Syntax korrekt ist, kann der Compiler den Quellcode übersetzen und ein ausführbares Programm erzeugen. Anhand von Beispielprogrammen lernen Sie in diesem Workshop die grundlegenden Elemente dieser Programmiersprache kennen. Während andere Sprachen oft eine unterschiedliche Syntax verwenden, sind große Teile der vorgestellten C++ Programme auch in C, C# oder Java lauffähig.
Anatomie eines C++ Programms
Das in Kapitel 1 und 2 vorgestellt Programm macht nichts anderes als den Text „Hallo Welt!“ auf den Bildschirm zu schreiben. Dennoch enthält dieser kleine Quellcode bereits einige wichtige Elemente eines C++ Programms. Werfen wir noch einmal einen Blick auf das Fenster mit unserem Programm. Vereinfacht gesagt lässt dieser sich in zwei Teile unterteilen: in die Anweisungen für den Präprozessor und in das eigentliche Hauptprogramm.
[sc name=“adsense_InText_ad“]
#include <iostream>
Das Hash-Zeichen (dt. Nummernzeichen) # definiert diesen Programmteil als eine Präprozessor-Anweisung. Präprozessoren sind Computerprogramme, die zum Beispiel Daten entgegennehmen und sie an andere Programmteile weitergeben. Präprozessoren werden nur in C- und C++ Programmen verwendet, andere Sprachen kennen dieses Konzept nicht.
Um die Standardanweisungen nicht für jedes Programm erneut schreiben zu müssen, werden die Befehle in einer Bibliothek zusammengefasst die der Compiler kennt und an der aktuellen Stelle in das eigentliche Programm eingefügt. In unserem Beispielprogramm ist das „<iostream>“ weil dieser Präprozessor die Definition von „cout“ und „endl“ enthält. Mit anderen Worten: Der Compiler kann die Zeile 10 nur übersetzen, weil der Präprozessor die Definition liefert. Alle Standard-Präprozessoren werden durch spitze Klammern gekennzeichnet. Präprozessor-Anweisungen stehen sinnvollerweise am Anfang eines Quellcodes längere Programme enthalten meistens mehrere dieser Anweisungen. Im Gegensatz zu anderen Programmteilen werden sie nicht durch ein Semikolon abgeschlossen.
using namespace std;
Um auszuschließen, dass bei einem Programm, das aus mehreren Quelltexten besteht gleiche Namen verwendet werden, besteht die Möglichkeit, Variablen, Klassen, Deklarationen etc. unter einem Namensraum zusammenzufassen. Dafür wird das Schlüsselwort namespace verwendet. In der C++ Standardbibliothek sind alle Funktionen und Variablen unter dem Namensraum std zusammengefasst. Durch den Befehl using erklären Sie, dass der Namensraum std verwendet werden soll.
int main ( ) {
Dies ist der Beginn des eigentlichen Programms. Es beginnt mit der Deklaration einer Funktion mit dem Namen main. Jedes C++ Programm muss diese Funktion enthalten. Mehr über die Bedeutung von int erfahren Sie im Kapitel 3.2. Das Thema Funktionen wird im Kapitel 4 behandelt.
Die öffnende geschweifte Klammer markiert den Beginn der eigentlichen Funktion. Die Funktion enthält die auszuführenden Befehle. Das leere Klammerpaar ( ) besagt, dass die Funktion keine Parameter enthält.
cout <<“Hallo Welt!“<<endl;
Das Hauptprogramm oder die Funktion main ( ) enthält in unserem Beispiel nur zwei Befehle. Der erste Befehl benutzt er cout, ein Objekt der Bibliothek std, das den Text Hallo Welt! auf dem Bildschirm schreibt. Dabei wird der Ausgabeoperator << verwendet, der den Ausgabestream nach cout umleitet. Durch endl ist das Ende der Ausgabezeile gekennzeichnet. Operatoren lernen Sie weiter unten im Text noch genauer kennen.
Ein Befehl ist eine fundamentale Anweisung in einem Computer-Programm. Alle Befehle, auch wenn sie sich über mehrere Zeilen erstrecken, enden mit einem Semikolon „;“. Eine Liste der in einem C++ Programm reservierten Zeichen finden Sie am Ende dieses Abschnitts.
system(„Pause“);
Hier bedient sich das Programm einer Funktion des Betriebssystems und pausiert die Ausführung bis eine beliebige Taste gedrückt wird.
}
Die schließende geschweifte Klammer kennzeichnet das Ende der Funktion und gleichzeitig des Hauptprogramms. Die öffnenden und schließenden Klammern werden in jeder C++ Funktion benötigt.
Befehle in einem Block zusammenfassen
Mehrere Befehle lassen sich in einem C++ Programm zu einem Block zusammenfassen. Ein Block ist durch eine öffnende und eine schließende geschweifte Klammer gekennzeichnet. Auch das Hauptprogramm main ( ) besteht aus einem Block, in dem die Befehle des Programms zusammengefasst werden.
Um die Übersicht zu erhöhen werden die Befehle innerhalb eines Blocks eingerückt. Beim Schreiben sollten Sie darauf achten dass die zugehörigen Klammern auf einer Ebene stehen. Ein Beispiel:
main ( )
{
Hier stehen die Anweisungen des ersten Blocks;
Diese Zeile gehört dazu;
{
Hier beginnt ein neuer Block;
Diese Zeile gehört dazu;
}
}
In den meisten Fällen wird für die Einrückung eine Tabulator-Breite genommen. Dadurch ist der Code gut lesbar. Sie können aber auch eine kleinere Einrückung wählen, wenn der Code zu weit nach rechts herausragt.
Symbole | Bedeutung |
; | Ende eines Befehls |
, | Trennung der Elemente einer Liste |
( ) | Arithmetische Klammern |
{ } | Beginn und Ende eines Blocks |
[ ] | Indexklammern bei Feldern |
“ “ | Anfang und Ende von Zeichenstrings |
‘ ‘ | Anfang und Ende von Einzelzeichen |
/* … */ | Mehrzeiliger Kommentar (Anfang und Ende) |
// | Kommentarzeile |
Tabelle 3.1: In C++ reservierte Zeichen.
Der Rückgabewert
Jeder Funktion in einem C++ Programm gibt einen Wert zurück, bei main ( ) ist das int (Integer-Wert). Dieser Variablentyp wird zur Speicherung ganzzahliger Werte verwendet. Der Wert wird in diesem Fall an das Betriebssystem zurückgegeben um zu signalisieren, dass eine Funktion normal beendet wurde und ein anderes Programm gestartet werden kann. Konventionell wird bei Erfolg der Wert 0 zurückgegeben, der Wert -1 kennzeichnet einen Fehler.
Dieser Artikel ist Teil unseres kostenlosen Workshops “C++ Programmieren lernen” – Geeignet für Einsteiger und Fortgeschrittene. Machen auch Sie mit und lernen Sie in 50 Artikeln, wie Sie Programme selbst schreiben!
Artikelbild: Fotolia / bramgino