C++ Programme werden compiliert, nicht interpretiert, sind also nach
der Compilierung und nach dem Linken als eine ausführbare .exe Datei vorhanden. Um diessen
Status zu erreichen braucht man einen Compiler, der den mit einem normalen Texteditor erzeugten Text
(Programmcode) zu übersetzen vermag.
Ein kostenloses, für alle möglichen Plattformen verfügbares Programm dieser Sorte ist der
DJGPP, dessen Downloadaddy ich leider momentan nicht zur Hand habe, den man aber leicht über
diverse Suchmaschinen im Internet finden kann. Im folgenden Text gehe ich nicht weiter auf die Installation
und Benutzung des Compilers bzw. Texteditors ein. Das kann, falls Bedarf besteht, jemand anderes machen.
Stattdessen stürze mich gleich in die Syntax und den C++ Code.
In jedem Programm muss ein Startpunkt definiert sein. In C(++) ist dies die main()-Funktion. Alle Instruktionen sind in Funktionen verpackt, d.h. in kleinere Unterprogramme strukturiert, die wie folgt definiert werden:
Typ_des_Rückgabewertes Funktionsname(Argumente_durch_Kommata_getrennt) {
Anweisungen, die bei Funktionsaufruf ausgeführt werden;
}
Am besten schauen wir es uns mal in einem kleinen, sogar schon lauffähigen Programm an, das, wie sollte es auch anders sein, "Hallo Welt!" ausgibt.
---- cut ----
// Programm 1.1 #include <iostream> int main() { std::cout << "Hallo Welt!\n"; return 0; }---- cut ----
Das ist jetzt schon gewaltig viel Holz auf einmal, aber keine Panik, sehen wir uns das Ganze Stück für Stück genauer an: In der ersten Zeile steht // Programm 1.1 . Dies könnte man auch einfach weglassen und das Programm würde noch genauso ausgeführt werden. Zwei Slashes // führen immer einen Kommentar ein. Der Compiler ignoriert alles bis zum Zeilenende. Der Text ist nur für den Programmierer gedacht, damit er sich, wenn er sich den Code zu einem späteren Zeitpunkt wieder ansieht, besser an bestimmte Sachen erinnern kann. Kommentare, die über mehrere Zeilen gehen, werden durch /* begonnen und durch */ abgeschlossen.
Das folgende #include <iostream> bindet die Header-Datei iostream ein, welche die Funktionalität der Ausgabeanweisung von cout (s.u.) gewährleistet.
Als nächstes steht int main() { dort. Diese Zeile beschreibt den Kopf der Funktion, die bei jedem Programmaufruf als Einstiegspunkt dient. Das int bezeichnet den Typ des Rückgabewertes, in diesem Fall einen ganzzahligen Wert (Integer). Die verschiedenen Typen werde ich später noch ausführlich beschreiben. main ist der Funktionsname, der genau so geschrieben werden muss. C++ unterscheidet zwischen Groß- und Kleinbuchstaben: main, Main und MAIN sind also drei verschiedene Namen. Die () Klammern enthalten keinen weiteren Text, was anzeigt, dass der Funktion keine Argumente übergeben werden. Die geschweifte Klammer { steht immer für den Anfang eines Blockes und wird uns später wieder begegnen. In der darauffolgenden Zeile findet man die Anweisung, die für die Bildschirmausgabe unseres ersten Programmes zuständig ist. cout ist der Name des Schlüsselwortes, das die Ausgabe auf das Standardausgabegerät (meist der Bildschirm) managed. std:: steht für den Standardnamensbereich, in dem alle möglichen Funktionen definiert sind, der uns aber zum jetzigen Zeitpunkt nicht weiter stören soll.
Als kleine Aufgabe für den Leser:
entfernt mal das std:: und schaut, was der Compiler für einen Fehler bringt. Dann ändert
auch #include <iostream>
in #include <iostream.h>
und kompiliert erneut. Das Programm sollte nun wieder funktioneren. Bei manchen nicht standardkonformen Compilern
kann es sein, dass man den Code sogar so schreiben muss, weil der Compiler den mit
"std::" und ohne ".h" nicht versteht.
Das << ist ein Operator, der den Text auf den Bildschirm "verschiebt". In doppelte Hochkommas ist dann der Text gestellt, der ausgegeben werden soll "Hallo Welt!\n". Wenn man sich nun den Programmoutput ansieht, so stellt man fest, dass \n nicht mit ausgegeben wird, sondern nur Hallo Welt! \n ist eine sogenannte Sequenz. Sequenzen bestehen aus einem einleitenden Backslash und einem folgenden Zeichen mit besonderer Bedeutung. Sequenzen werden ausgewertet und haben eine Funktionalität. In diesem Fall wird ein Zeilenvorschub (newline) bewirkt. Weitere Sequenzen sind \t (Tabulator) \a (Alarmpiepsen), \\ gibt einen Backslash aus, \x für eine hexadezimale Ausgabe, u.v.m.
Alle Anweisungen und Deklarationen werden mit einem Semikolon ; abgeschlossen.
Die letzte Zeile vor dem } , das den Funktionsblock schließt, return 0; bewirkt, dass die Zahl
0 zurückgegeben wird, was in diesem Fall, bei der main() Funktion, soviel bedeutet, wie "Programm ohne
Probleme ausgeführt". In anderen Funktionen, wie wir sie später besprechen werden,
geben sie oft das Ergebnis zurück, das sich aus den Operationen mit den Funktionsargumenten ergibt.
Ich weiß, das ist ziemlich viel auf einmal, wenn man noch nie programmiert hat. Wer sich schon mal in anderen Programmiersprachen umgesehen hat, wird sich jedoch um einiges leichter tun. Schaut euch das Programm nochmals genau an, schreibt es auf alle Fälle in eine Texteditor, startet es und modifiziert es (!!!). Als Übung bis zum nächsten Mal ändert ihr das Programm so, dass folgender Text auf dem Bildschirm erscheint:
Hallo Welt!
C++ ist (nicht) schwer!
Man beachte die ausgelassene Zeile und den Leerraum links und rechts von (nicht) , der genau einem Tabulator entspricht!
Bis zum nächsten Mal
Jolly Roger
webmaster@christoph-mueller.de
http://www.christoph-mueller.de