Um ein C++-Programm zu entwickeln, bedarf es einer Entwicklungsumgebung mit zumindest einem Texteditor, einem Compiler und einem Linker. Programme, die diese Komponenten zusammengefasst zur Verfügung stellen, nennt man auch Integrated Development Environment oder kurz: IDE. Qt Creator ist ein solches IDE. Neben Editor, Compiler und Linker stellt es zusätzlich noch einen Debugger und ein Werkzeug für den Entwurf von grafischen Benutzeroberflächen zur Verfügung. (Eine vollständige Beschreibung zur Bedienung von Qt Creator entnehmen Sie bitte dem Online-Handbuch – Sie erreichen es über die Funktionstaste [F1]!).Im vorangegangenen Abschnitt haben wir ein erstes C++-Programm entwickelt, ohne uns weiter um die “technischen” Hintergründe der Programmerstellung zu kümmern. Die Entwicklung eines Programmes folgt einem festen Schema:
1 – Quellcode erfassen
Um ein C++-Programm zu schreiben, benötigen Sie einen Texteditor, der in der dazu Lage ist, reinen ASCII-Text abzuspeichern. Der Editor von Qt Creator erfüllt diese Voraussetzung. Die Dateien, die Sie mit Ihrem Editor erstellen, bezeichnet man als Quelldateien. Normalerweise erhalten diese Dateien unter C++ die Dateierweiterung .cpp, .cp oder .c. In diesem Tutorial sind alle Quellcodedateien einheitlich mit der Erweiterung .cpp versehen.
2 – Quellcode übersetzen
Obwohl der Quellcode in Ihrer Datei etwas kryptisch aussieht und jeder, der sich mit C++ nicht auskennt, kaum versteht, für was das ganze gut ist, haben wir es trotzdem mit einer für den Menschen verständlichen Form zu tun. Die Quellcodedatei ist kein Programm und läßt sich auch nicht wie ein Programm ausführen.
Um aus dem Quellcode ein Programm zu machen, verwendet man einen Compiler. Wie man den Compiler aufruft und ihm den Standort der Quelldatei angibt, ist vom konkreten Compiler abhängig. Unter Qt Creator genügt es, die Tastenkombination [Strg] + [R] zu drücken.
Durch das Compilieren des Quellcodes entsteht eine sogenannte Objektdatei (in der Regel mit der Erweiterung .obj oder .o). Allerdings handelt es sich auch hier noch nicht um ein ausführbares Programm. Um aus der Objektdatei ein ausführbares Programm zu erstellen, ruft man den Linker auf. dies geschieht unter Qt Creator automatisch, sobald Sie den Compiler “angestoßen” haben.
3 – Ein ausführbares Programm mit dem Linker erstellen
C++-Programme werden in der Regel durch das Verbinden (Linken) einer oder mehrerer Objektdateien mit einer oder mehreren Bibliotheken erzeugt. Unter einer Bibliothek versteht man eine Sammlung von Dateien, die vom Linker direkt in ein Programm mit eingebunden werden können. Bibliotheken erwirbt man automatisch zusammen mit dem Compiler, man kauft sie extra dazu oder man erzeugt und compiliert sie selbst. Zu allen C++-Compilern gehört eine Bibliothek nützlicher Funktionen und Klassen, die Sie in Ihr Programm aufnehmen können. Eine Funktion ist ein Codeblock, der eine bestimmte Aufgabe realisiert, beispielsweise das Addieren zweier Zahlen oder die Ausgabe auf den Bildschirm. Unter einer Klasse versteht man eine Sammlung von Daten und verwandten Funktionen.
Das Zusammenspiel von Compiler und Linker nennt man unter Programmierern auch Erstellungsprozess oder Build-Vorgang.
Wenn jedes Programm auf Anhieb beim ersten Austesten fehlerfrei laufen würde, dann hätten wir es mit dem folgenden Entwicklungszyklus zu tun:
- Erstellen einer Quellcodedatei mit der Erweiterung .cpp
- Kompilieren der Quellcodedatei in eine Objektdatei mit der Erweiterung .obj.
- Linken der Objektdatei mit allen erforderlichen Bibliotheken zu einem ausführbaren Programm
- Ausführen des Programmes.
Leider enthält fast jedes Programm irgendwelche Fehler – sogenannte Bugs – und läuft nicht auf Anhieb. Einige Bugs verhindern bereits das Kompilieren, bei manchen Fehlern kann man das Programm nicht linken, und einige Fehler zeigen sich erst bei der Ausführung des Programms. Welchen Fehler Sie auch finden, er ist zu beseitigen. Und dazu gehört die Bearbeitung des Quellcodes, das erneute Kompilieren und Linken und schließlich ein neuer Start des Programms. Man nennt dies eine Strafschleife im Entwicklungszyklus. Daraus leitet sich der 4. Schritt im Entwicklungszyklus ab:
4 – Quelltext und Programm debuggen
Fehler können bei der Erstellung eines Programmes an mehreren Stellen im Entwicklungszyklus auftreten:
- beim Compilieren – meistens handelt es sich hier um Syntaxfehler, wie etwa ein falsch geschriebener Befehl, ein vergessenes Semikolon oder eine fehlende schließende Klammer. Qt Creator gibt in diesem Fall im Fenster “Build-Probleme” mehr oder minder konkrete Hinweise auf die Art des Fehlers aus. Um zur fehlerhaften Stelle im Quelltext zu springen, genügt es, die entsprechende Fehlermeldung doppelt anzuklicken. Die Schreibmarke des Editors springt dann zur entsprechenden Textstelle in der fehlerhaften Datei.
- beim Linken – in aller Regel geschieht dies dann, wenn eine für die Ausführung des Programmes erforderliche Bibliothek nicht zur Verfügung steht.
- während der Programmausführung – solche Fehler zeigen sich erst zur Laufzeit und sind am schwersten aufzuspüren. Das Programm stürzt entweder mitten in der Arbeit einfach ab, oder es verhält sich völlig anders, als man es erwarten würde. Häufige Ursache sind Speicherzugriffsfehler durch z. B. externe Bibliotheken, unsauber verwendete Variablen, oder einfach durch einen fehlerhaften Programmablauf aufgrund von unkorrekt verschachtelten Programmanweisungen.
Um Fehler während der Laufzeit eines Programmes aufzuspüren, setzt man den Debugger ein. Die Verwendung des Debuggers ist keine triviale Angelegenheit und wird in diesem Tutorial nicht weiter behandelt.
Übung zum Auffinden von Fehlern
- Starten Sie Qt Creator und öffnen Sie das Projekt 002_cout_ausgabe.
- Entfernen Sie in Zeile 21 den Umleitungsoperator “<<” nach cout und in Zeile 26 das abschließende Semikolon.
- Starten Sie die Programmübersetzung durch Drücken der Tastenkombination [Strg] + [R].
- Lesen Sie die Fehlermeldungen im Fenster “Build-Probleme”. Beseitigen Sie den ersten Fehler, indem Sie die Fehlermeldung doppelklicken und den Umleitungsoperator “<<” hinter cout wieder einfügen.
- Starten Sie erneut die Programmübersetzung und korrigieren Sie den nächsten Fehler in gleicher Weise. Wenn Sie jetzt auf die erste Fehlermeldung klicken, dann springt die Schreibmarke nicht, wie erwartet, in die Zeile 26, sondern in die Zeile danach. Dieses Verhalten ist typisch für ein vergessenes Semikolon! Wenn Sie also die Fehlermeldung: expected ‘;’ before ‘Befehl’ erhalten, dann sollten Sie immer auch ein paar Zeilen vor und nach der Fehlermeldung suchen! Korrigieren Sie also die Zeile 26, indem Sie ein Semikolon hinter endl setzen und compilieren Sie den Quelltext erneut. Das Programm startet nun wieder wie erwartet.
zurück: Das erste Programm | weiter: Funktionen | Inhaltsverzeichnis





