2.4 Das erste C++-Programm * 11 2.4 Das erste C++-Programm * Den besten Lernerfolg erzielen Sie, wenn Sie alle Beispiele dieses Buchs selbst nachvollziehen. Sie können hierzu einen Compiler verwenden, den Sie in einem Konsolenfenster aufrufen, oder eine fensterbasierte interaktive Entwicklungsumgebung, die verschiedene Werkzeuge zur Entwicklung von Programmen, darunter auch einen Editor zur Erfassung von Programmtexten, verbindet. Es empfiehlt sich, beide Möglichkeiten einzusetzen. Cygwin ist eine Unix-Umgebung für Windows und enthält eine Reihe leistungsfähiger, hauptsächlich kommandozeilenbasierter Entwicklungswerkzeuge, darunter auch einen C++-Compiler. Bloodshed Dev-C++ und Microsoft Visual Studio 6.0 für C++ sind integrierte Entwicklungsumgebungen für C++. Cygwin und Bloodshed Dev-C++ sind frei verfügbar und können in der jeweils aktuellsten Version aus dem Internet bezogen werden. Eine Bezugsquelle für Cygwin ist die Cygwin Homepage (http://www.cygwin.com). Bloodshed Dev-C++ ist auf der Bloodshed Homepage (http://www.bloodshed.net) erhältlich. Im Wissensbaustein»Hello World mit Cygwin«, S. 11, erfahren Sie, wie Sie das erste einfache C++-Programm namens»hello World«mit einem Texteditor erfassen, übersetzen und ausführen. Dies setzt voraus, dass auf Ihrem Computersystem Cygwin vorhanden ist. Wie Sie Cygwin beziehen und installieren, wird im kostenlosen E-Learning-Begleitkurs zum Buch erklärt. Dort wird außerdem beschrieben, wie Sie die Entwicklungsumgebungen Microsoft Visual Studio 6.0 und Dev-C++ installieren und mit ihnen das Programm»Hello World«erstellen. Empfehlungen 2.4.1»Hello World«mit Cygwin * Der schnellste und einfachste Weg ein kurzes C++-Programm zu erstellen und zu übersetzen, besteht in der Verwendung eines Texteditors und eines C++-Compilers, der in einem Konsolenfenster ausgeführt wird. Um diesen Wissensbaustein durchzuarbeiten und am Rechner nachzuvollziehen, muss Cygwin einschließlich C++-Compiler wie im kostenlosen E-Learning-Kurs zum Buch beschrieben installiert sein. Zur Vorbereitung legen Sie im Wurzelverzeichnis des Laufwerks, auf dem sich Ihre Dateien befinden, ein Verzeichnis namens uebung1 an (Abb. 2.4-1). Um ein C++-Programm einzugeben, können Sie einen beliebigen Editor verwenden. Er muss jedoch das als reine Textdatei speichern können. Die meisten Textverarbeitungspro- eingeben
12 2 Der Schnelleinstieg * Abb. 2.4-1: Verzeichnis uebung1 erstellen. gramme wie beispielsweise Microsoft Word oder OpenOffice Writer legen standardmäßig außer dem Text noch viele Formatierungsinformationen im Dokument ab. Eine solche Datei kann vom C++-Compiler nicht verarbeitet werden. Ein Editor, der Daten grundsätzlich als reinen Text ablegt, ist der Editor von Windows (Programm notepad.exe). Die Abb. 2.4-2 zeigt den Quelltext, den Sie mit einem Texteditor Ihrer Wahl, beispielsweise Notepad, erfassen. Abb. 2.4-2: Notepad von MS-Windows legt die Daten als reine Textdatei ab. speichern kompilieren Im nächsten Schritt speichern Sie das soeben eingegebene Programm unter dem Namen hello.cpp im Verzeichnis uebung1. Öffnen Sie nun ein Konsolenfenster und wechseln Sie in das Verzeichnis uebung1. Dort geben Sie den Befehl g++ hello.cpp ein. Nach erfolgreicher Übersetzung erscheint wieder die Eingabeaufforderung. Geben Sie nun den Befehl dir ein. Jetzt ist eine neue Datei namens a.exe in dem Verzeichnis uebung1 vorhanden.
2.4 Das erste C++-Programm * 13 Sobald Sie den Befehl a eingeben, wird das»hello World«-Programm ausgeführt und gibt seine Grußbotschaft aus (Abb. 2.4-3). Programm ausführen Abb. 2.4-3: hello.cpp mit Cygwin-C++ übersetzen und ausführen. Damit haben Sie Ihre erstes C++-Programm erstellt, übersetzt und ausgeführt. Probleme und Abhilfe Nach der Eingabe von g++ hello.cpp erhalten Sie eine Meldung, wonach der Befehl g++ falsch geschrieben sei oder nicht gefunden werden konnte. Der Compiler ist nicht installiert oder die nötigen Maßnahmen zu seinem Aufruf in einem Konsolenfenster von Windows wurden nicht durchgeführt. Prüfen Sie, ob der Compiler wie im kostenlosen E-Learning-Kurs zum Buch beschrieben, installiert wurde. Wurde cygwin1.dll in das Stammverzeichnis von Windows kopiert? Wurde das Verzeichnis C:\cygwin\bin beziehungsweise das bin-verzeichnis unterhalb des Installationsverzeichnisses von Cygwin in den Suchpfad für Programme aufgenommen? Damit eventuelle Änderungen wirksam werden, müssen Sie das alte Konsolenfenster schließen und ein neues öffnen. Der Compiler gibt irgendwelche Fehler- oder Warnmeldungen aus. Es wurden nicht alle Maßnahmen durchgeführt, um den Compiler in einem Konsolenfenster von Windows auszuführen oder das enthält Fehler. Glückwunsch! Problem Ursache Abhilfe Problem Ursache
14 2 Der Schnelleinstieg * Abhilfe Führen Sie zunächst die zuvor beschriebenen Abläufe noch einmal durch. Erhalten Sie weiterhin Fehlermeldungen, überprüfen Sie den Programmtext. Wurden die richtigen Klammern verwendet? Sind alle Strichpunkte gesetzt? 2.5 Der Aufbau des»hello World«- Programms * Das»Hello World«-Programm bewirkt die Ausgabe von»hello World!«in einem Konsolenfenster. Die entsprechende Ausgabeanweisung steht in der Funktion main(), die bei dem Start des Programms automatisch ausgeführt wird. Im Folgenden werden die Bestandteile des Programms»Hello World«und sein Aufbau kurz betrachtet. Wie das Programm kompiliert und ausgeführt wird, erfahren Sie im Wissensbaustein»Das erste C++-Programm«, S. 11. Programm: Hello World Ein-/Ausgabe Die erste Zeile #include <iostream> bewirkt, dass im Programm Möglichkeiten zur Ein- und Ausgabe zur Verfügung stehen. Dadurch kann unter anderem der Bezeichner cout verwendet werden. Die Anweisung using namespace std; erlaubt es, Bezeichner wie zum Beispiel cout zu nutzen, ohne dass ihnen std:: voran gestellt werden muss. Würde diese Anweisung fehlen, müsste Zeile 5 so lauten: std::cout << "Hello World!" << std::endl;. Eine Funktion fasst mehrere Anweisungen zusammen und erlaubt es, sie unter dem Namen der Funktion aufzurufen. Funktionen werden im Wissensbaustein»Funktionen«, S. 153 ausführlich beschrieben. Die Zeilen 4 bis 7 enthalten die Hauptfunktion main(). Jedes Programm muss genau eine Funktion namens main() besitzen. Diese wird beim Aufruf des Programms automatisch ausgeführt. Die Anweisungen der Funktion main() sind in ein Paar geschweifter Klammern eingeschlossen und stehen in den Zeilen 5 und 6. Die Zeile 5 enthält die einzige Anweisung, die Sie beim Ausführen des Programms wahrnehmen können. Sie bewirkt die Ausgabe von»hello World«in einem Konsolenfenster. Eine Ausgabeanweisung beginnt immer mit dem Namen des Standardaus- using- Anweisung Funktion main() Standardausgabestrom cout 1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 cout << "Hello World!" << endl; 6 return 0; 7 }
2.5 Der Aufbau des»hello World«-Programms * 15 gabestroms cout. Damitcout zur Verfügung steht, muss ein Programm zu Anfang die Anweisung include <iostream> enthalten. Die Anweisung << teilt dem Ausgabestrom mit, dass der rechts folgende Bestandteil ausgegeben werden soll. Es ist auch möglich, mehrere Ausgaben zu verketten. Zu diesem Zweck schreibt man nach dem auszugebenden Bestandteil erneut <<, gefolgt von einem weiteren Bestandteil. Beispielsweise bewirkt cout << "Hallo " << "Welt" <<! << endl; ebenfalls die Ausgabe von»hello World!«im Konsolenfenster. Achten Sie darauf, dass Sie mehrere aufeinander folgende Zeichen in doppelte Anführungszeichen, zum Beispiel "Text", einschließen und nicht in doppelte Hochkommas, etwa Text. Die Anweisung return 0; in Zeile 7 beendet die Funktion main() und damit auch das Programm»Hello World«. Laut C++-Standard ist es zulässig, dass die return-anweisung in der Funktion main() entfällt. In diesem Fall ergänzt der Compiler bei Beenden der Funktion automatisch return 0;. Visual Studio 6.0 gibt jedoch eine Warnung aus, wenn die return-anweisung in der Funktion main() fehlt. Daher empfiehlt es sich, sie an dieser Stelle immer aufzuführen. Wie Ihnen vielleicht aufgefallen ist, steht in dem Programm jede Anweisung in einer neuen Zeile. Nach einer geschweiften öffnenden Klammer werden alle folgenden Anweisungen um vier Leerzeichen eingerückt. Zwischen cout und << sowie dem nachfolgenden Bestandteil steht jeweils ein Leerzeichen. Dies macht das Programm leichter lesbar. Man könnte das Programm»Hello World«auch wie im Programm»"Hello World" schlecht formatiert«schreiben. 1 #include <iostream> 2 using namespace std;int main(){cout<<"hello World!" 3 <<endl;return 0;} Denken Sie immer daran, dass ein Programm meist nur einmal geschrieben, aber viel öfter gelesen wird. Ausgaben verketten Funktion beenden Formatierung Programm: "Hello World" schlecht formatiert Diese Version stimmt inhaltlich mit dem Programm»Hello World«überein, ist aber deutlich schlechter lesbar und verstehbar. In diesem Buch werden noch weitere solche Konventionen vorgestellt, die Sie ebenfalls übernehmen und einhalten sollten.