Vorgehensweise und Vorbereitungen zum Erlernen von C++
Um C++-Programme schreiben, compilieren und ausführen zu können, muss man sich eine geeignete Umgebung bereitstellen. Es werden einige Möglichkeiten beschrieben; empfohlen wird die Entwicklungsumgebungen Code::Blocks, die es in einer Version mit integriertem MinGW-Compiler gibt.
- Einordnung des Artikels
- Vorgehensweise beim Erlernen von C++
- Vorbereitungen: Compiler, Editor und eine Ordnerstruktur für Quelltexte
- Dev-C++
- MinGW Compiler
- Installation des MinGW Compilers
- Compilieren mit MinGW
- Text-Editor Notepad++
- Visual Studio Code
- IDEs wie Eclipse oder Visual Studio Community
- Code::Blocks (mit MinGW-Compiler)
- Ordnerstruktur für Quelltexte
- Text-Editor und Datei-Browser
Einordnung des Artikels
- Einführung in die Informatik
- Einführung in C++
- Vorgehensweise und Vorbereitungen zum Erlernen von C++
- Einführung in C++
Vorgehensweise beim Erlernen von C++
Die Vorgehensweise zum Erlernen einer objektorientierten Programmiersprache wie C++ kann in mehrere Phasen eingeteilt werden:
- Vorbereitungen
- Sprachregeln
- C++ Standard Library
- OOP (objektorientierte Programmierung)
- OOAD (object-oriented analysis and desing process)
Die ersten beiden Punkte sollten nach den Vorbereitungen zur Einführung in die Programmierung klar sein; die weiteren Punkte beziehen sich darauf, dass mit C++ eine Sprache erlernt werden soll, die zum einen schon eine lange Entwicklungsgeschichte hinter sich hat und daher viele Erfahrungen früherer Programmierer genutzt werden können und die zum anderen eine objektorientierte Sprache ist, in der Algorithmen eine weit weniger zentrale Rolle spielen als es die einführenden Kapitel zur Programmierung vermuten lassen.
Im Detail:
1. Vorbereitungen:
Editor und Compiler: Um C++-Quelltexte zu schreiben, benötigt man zunächst einen Text-Editor. Die Quelltexte werden dann vom Compiler in die ausführbare Datei übersetzt.
Um alle neuen Sprachregeln und die Möglichkeiten von C++ sofort testen zu können, sollte man sich unbedingt vor dem Studium der eigentlichen Sprache die Umgebung zurechtlegen. Je nachdem wie geübt man bereits im Umgang mit Editoren und Compilern ist, gibt es hier viele Möglichkeiten (vom primitiven Text-Editor bis zur professionellen Entwicklungsumgebung, siehe unten).
2. Sprachregeln:
Die Syntax der Sprache muss eingeübt werden: Variablen, Datentypen, Kontrollstrukturen, Funktionen, Klassen.
3. C++ Standard Library:
Wer sicher mit den Sprachregeln umgehen kann, ist in der Lage vorgefertigten Quelltext zu verwenden. Dieser ist in der C++ Standard Library in großem Umfang enthalten — deutlich mehr als in diesem kurzen Kurs besprochen werden kann. Der Einsatz der Standard-Bibliothek beschleunigt die Arbeit und hilft Fehler zu vermeiden. Weiter sind die Programme aus der Standard-Bibliothek meist schneller als eigene.
4. OOP:
Eine Kenntnis der Konzepte der objektorientierten Programmierung erlaubt den effektiven Einsatz des eigenen Quelltextes und den aus Bibliotheken: Programme können zu Modulen zusammengefasst und wiederverwendet werden.
Voraussetzung dafür ist die Unterscheidung zwischen Klassen und Objekten: Eine Klasse beschreibt den allgemeinen Bauplan, ein Objekt ist eine konkrete Realisierung davon.
Dieser allgemeine Bauplan umfasst die Attribute (oder Datenelemente) und Funktionalitäten (Tätigkeiten = member functions).
5. OOAD (object-oriented analysis and design process):
für umfangreiche Projekte, die meist in einem Team bearbeitet werden; dabei werden Vorgehensweisen wichtig, wie sie sonst im Projektmanagement diskutiert werden (Arbeitsaufteilung, Zeitpläne). Das wichtigste inhaltliche Hilfsmittel dabei sind UML-Diagramme.
Vorbereitungen: Compiler, Editor und eine Ordnerstruktur für Quelltexte
Um Programme zu übersetzen, benötigt man einen Compiler. Die Quelltexte werden zuvor in einem Text-Editor geschrieben. Es gibt zahllose Möglichkeiten, wie man Compiler und Editor kombiniert. In einer sogenannten IDE (= integrated development environment) sind Editor und Compiler meist schon enthalten, manchmal muss auch ein externer Compiler installiert werden. Eine IDE liefert meist zusätzliche Funktionalitäten, erfordern aber eine lange Einarbeitungszeit, um diese auch nutzen zu können.
Völlig ungeeignet zum Editieren von Quelltexten sind Textverarbeitungsprogramme wie Word, OpenOffice oder LibreOffice — nachdem Sie erste Erfahrungen mit C++ gesammelt haben, werden Sie schnell verstehen warum.
Hier werden einige dieser zahllosen Möglichkeiten vorgestellt, die zunehmende Erfahrung im Umgang mit Editoren und Compilern voraussetzen:
- Dev-C++
- MinGW Compiler
- Text-Editor Notepad++
- Visual Studio Code
- IDEs wie Eclipse oder Visual Studio Community
- Empfehlung: Code::Blocks (mit MinGW-Compiler)
TIP:
Installieren Sie zunächst Code::Blocks (mit integriertem Compiler) und machen Sie sich schnell damit vertraut, wie Sie den Compiler außerhalb von Code::Blocks nutzen können. Dann können Sie jederzeit auf eine der anderen Varianten umsteigen.
Dev-C++
Die wohl einfachste Variante, um mit C++-Programmen zu arbeiten, ist die Installation der Entwicklungsumgebung Dev-C++, die unter
https://sourceforge.net/projects/orwelldevcpp/
heruntergeladen werden kann. Dev-C++ ist freie Software und enthält bereits einen C++-Compiler, so dass man als Nutzer nach der Installation sofort loslegen kann.
Obwohl es — wie für jede Entwicklungsumgebung — eine Projektverwaltung gibt, sollte man sich dennoch vor dem Anlegen des ersten Projektes eine Ordnerstruktur überlegen (siehe weiter unten). Auch kann man unter Build Options für Executable Output Directory und Object File Output Directory selber die Orte angeben; dies ist empfehlenswert, weil dann die Projekte übersichtlicher bleiben.
MinGW Compiler
Wer den Compiler völlig unabhängig von einer Entwicklungsumgebung nutzen möchte, sollte den MinGW-Compiler installieren. Mit ihm kann dann ein C++-Programm jederzeit von der Konsole aus kompiliert und ausgeführt werden.
Installation des MinGW Compilers
Ein C++-Compiler ist zum Erlernen der Programmiersprache unerlässlich. Der MinGW-Compiler (MinGW = Minimalist GNU for Windows) liefert die Funktionalitäten, die zum Einstieg nötig sind. Auf der Projektseite
http://www.mingw.org/
findet man unter Downloads den Installer und unter Documents zahlreiche Dokumentationen.
Bei der Installation werden Compiler für mehrere Sprachen angeboten, C++ muss natürlich dabei sein!
Nach der Installation in einem Verzeichnis, dessen Name keine Leerzeichen enthalten sollte, findet man im Homeverzeichnis von MinGW, hier als
<MinGW-home>
bezeichnet, das Verzeichnis bin (binaries), also:
<MinGW-home>\bin
Dort liegen die zum Compilieren eines C++-Programmes nötigen .exe-Dateien wie gpp.exe oder g++.exe.
Die Installation enthält auch die meisten Systembibliotheken, auf die man als Anfänger zugreifen möchte, sie liegen in
<MinGW-home>\lib\gcc\mingw32\5.3.0\include\c++
(5.3.0 war die aktuelle Versionsnummer von MinGW beim Erstellen dieses Textes.)
Kommt es beim Kompilieren eines Programmes mit inkludierten Systembibliotheken zu Fehlermeldungen, wonach einige Systembibliotheken fehlen, kann dies mehrere Ursachen haben:
- Man hat den Compiler mit gpp.exe aufgerufen. Der Compiler, der sich hinter gpp.exe verbirgt, lädt die Systembibliotheken nur, wenn man sie bei seinem Aufruf explizit angibt.
- Der Compiler g++.exe lädt die Systembibliotheken selbständig aus dem genannten Verzeichnis. Kommt mit g++ immer noch eine Fehlermeldung, muss man womöglich einige .dll-Dateien nachträglich installieren. (Die Fehlermeldung lautet etwa: libmpc-3.dll missing) Dies geschieht besser nicht aus der graphischen Oberfläche, die bei der Installation zu sehen war, sondern direkt aus der Konsole.
Dazu wird wieder in
<MinGW-home>\bin
der Befehl
mingw-get install mpc
aufgerufen. Nach einem Neustart des Computers sollte der Fehler behoben sein.
Compilieren mit MinGW
Befindet sich etwa im Verzeichnis
<C++Programme>
die Datei
HelloWorld.cpp
so kann sie folgendermaßen in Maschinencode übersetzt werden: Man öffnet im Verzeichnis, in dem HelloWorld.cpp liegt, eine Konsole und gibt ein
<MinGW-home>\bin\g++ HelloWorld.cpp -o HelloWorld
Dieser Befehl ruft den Compiler g++ aus dem bin-Verzeichnis von MinGW auf, compiliert die Datei HelloWorld.cpp und erzeugt die ausführbare Datei HelloWorld.exe. Sie können die .exe-Datei im Explorer sehen. Hat der Quelltext von HelloWorld.cpp noch Syntax-Fehler enthalten, wird die exe-Datei nicht erzeugt, aber in der Konsole erscheinen Fehlermeldungen, die Ihnen hoffentlich weiterhelfen, um den Quelltext auszubessern.
Aufgerufen wird das Programm (die Konsole ist immer noch in dem Verzeichnis geöffnet, in dem sich HelloWorld.cpp befindet — und jetzt auch HelloWorld.exe) mit
HelloWorld
Vermutlich erzeugt Ihr Programm Konsolenausgaben — diese erscheinen jetzt in der Konsole.
Text-Editor Notepad++
Notepad++ ist ein einfach zu bedienender Text-Editor. Er bietet sich als Default-Editor für alle Text-Dateien an, da er für zahlreiche Programmiersprachen Syntax-Highlighting besitzt — natürlich auch für C++ (Sie können es auch gemäß Ihren Wünschen anpassen). Die in ihm erstellten Quelltexte können wie oben beschrieben mit Hilfe von MinGW übersetzt und ausgeführt werden.
Mit dem Plugin NppExec für Notepad++ kann man den Compiler-Aufruf und die Ausführung der .exe-Datei auch direkt von Notepad++ aus erledigen.
Bevor Sie anfangen, mehrere C++-Programme zu schreiben und zu testen, überlegen Sie sich eine Ordnerstruktur, in der Sie Ihre Quelltexte ablegen, so dass Ihre Arbeit übersichtlich bleibt und Sie später schnell darauf zugreifen können.
Visual Studio Code
1. Installation von Visual Studio Code und Vorbereitung für C++
Nach der Installation ist Visual Studio Code noch nicht in der Lage, Sie beim Erstellen von C++-Quelltexten zu unterstützen — man hat zunächst einen reinen Text-Editor vor sich. Sie benötigen zusätzlich die Extension C/C++.
Nach deren Installation werden Sie deutlich besser unterstützt als bei Notepad++: es gibt Syntax-Highlighting (wofür man zwischen mehreren themes auswälen kann), Autovervollständigung und Text-Vorschläge.
Um mit Visual Studio Code auch arbeiten zu können, muss der C++-Compiler installiert sein. Man kann ihn direkt von der Konsole aus einsetzen wie oben beschrieben. Oder man kann ihn aus Visual Studio Code ansprechen.
2. Compilieren von C++-Programmen
Bisher wurde Visual Studio Code nur eingesetzt, um Quelltexte zu schreiben. Man kann den Compiler auch direkt ansprechen. Dazu sucht man unter
Anzeigen ... Befehlspalette
nach
Taskausführung konfigurieren
oder
Configure Task Runner
Es öffnet sich eine Datei tasks.json. Die default-Version sieht etwa folgendermaßen aus:
{ "version": "0.1.0", "command": "echo", "isShellCommand": true, "args": ["Hello World"], "showOutput": "always" }
Die entscheidenden Zeilen darin sind command und args. Die Bedeutung von
"command": "echo",
ist, dass das in die Konsole eingegebene Kommando (hier Hello World
) nochmals auf der Konsole ausgegeben wird — so hat man zumindest die Gewissheit, dass die Konsole erfolgreich angesprochen wurde.
Zum Compilieren eines C++-Quelltextes muss der MinGW-Compiler g++ angesprochen werden (geschieht in command) und der Rest des Befehls wandert in die args.
"command": "<MinGW-home>\\bin\\g++ ", "args": ["HelloWorld.cpp", "-o" "HelloWorld"],
Achten Sie darauf, dass jetzt jeder backslash in der Pfadangabe mit einem zusätzlichen backslash markiert werden muss (warum das nötig ist, lernen Sie später in C++). Und die drei übergebenen Argumente müssen wie eine Liste behandelt werden (also in eckigen Klammern, jedes Listenelement in Anführungsstrichen und durch Kommas getrennt); schreibt man alle args in die Anführungsstriche, wird das Argument falsch interpretiert. Es wäre also falsch für args einzugeben:
"args": ["HelloWorld.cpp -o HelloWorld"], // FALSCH!!
Diese Eingabe wird interpretiert als ein Dateiname, der Leerzeichen enthält.
Die Bedeutung von command und args (aus der richtigen Version):
- Der Compiler g++ wird angesprochen und das C++-Programm in der Datei HelloWorld.cpp wird compiliert,
- das Maschinensprache-Programm wird in der Datei HelloWorld.exe abgespeichert (.exe ist aber nicht anzugeben),
- falls der Quelltext noch Fehler enthalten hat, wird keine .exe-Datei erzeugt, stattdessen sollten auf der Konsole Fehlermeldungen zu sehen sein.
Zum Ausführen des Programms gibt man einfach in die Konsole
HelloWorld
ein; es sollten die Konsolenausgaben des Programms erscheinen.
IDEs wie Eclipse oder Visual Studio Community
Diese werden hier nicht ausführlich vorgestellt; wer mit solch schwergewichtigen Entwicklungsumgebungen arbeiten möchte, muss auch in der Lage sein, diese selbständig zum Laufen zu bringen. Es sei nur darauf hingewiesen, dass die Installation von Visual Studio Community etwa 20 GB Speicherplatz beansprucht (und regelmäßige Updates) und daher gut überlegt sein sollte.
Code::Blocks (mit MinGW-Compiler)
Die Entwicklungsumgebung Code::Blocks wird in zwei Versionen angeboten: mit oder ohne den MinGW-Compiler. Falls Sie den MinGW-Compiler bereits installiert haben, reicht die Version ohne MinGW-Compiler, Sie müssen Code::Blocks nur sagen, wo der Compiler zu finden ist.
Haben Sie die Version mit MinGW-Compiler installiert, müsste Code::Blocks nach der Installation sofort einsatzbereit sein.
Die Homepage für Code::Blocks lautet:
http://www.codeblocks.org/
Ein umfangreiches Wiki mit zahlreichen Dokumentationen und Hilfen finden Sie unter:
http://wiki.codeblocks.org/index.php/Main_Page
Ordnerstruktur für Quelltexte
Überlegen Sie sich schon bevor Sie die ersten Quelltexte schreiben, wie Sie diese in einer geeigneten Ordnerstruktur unterbringen, so dass Sie schnell auffindbar sind. Vergeben Sie dazu etwa Namen für Unterordner, die sich an der Gliederung der besprochenen Inhalte orientieren (wie Syntax, Schleifen, OOP und so weiter).
Sie werden sehen, wie wichtig es ist, auf die Quelltexte schnell zuzugreifen: weniger, weil Sie die Quelltexte wiederverwenden wollen — hier handelt es sich meist um Sandkastenspiele, mit denen die Sprachelemente eingeübt werden. Vielmehr dokumentieren diese Sandkastenspiele Ihren Lernerfolg und Sie werden diese als Nachschlagewerk lieber benutzen als Lehrbücher.
Dazu sollten Sie auch früh genug beginnen, Quelltexte ausführlich zu kommentieren — weniger um das Programm zu beschreiben sondern um die Sprachelemente und den Umgang damit zu beschreiben.
Falls Sie verschiedene Editoren oder Entwicklungsumgebungen ausprobieren wollen, sollten Sie niemals eine Datei aus dem workspace einer Entwicklungsumgebung mit einer anderen Entwicklungsumgebung öffnen. Denn eine Entwicklungsumgebung legt immer Dateien zur Projektverwaltung an und womöglich entstehen ärgerliche Konflikte.
TIP:
Für jeden Editor oder jede Entwicklungsumgebung einen eigenen workspace anlegen.
Text-Editor und Datei-Browser
Für alle folgenden Tätigkeiten ist es wichtig, dass Sie
- Einen Text-Editor zur Verfügung haben; oben wurde bereits Notepad++ empfohlen, der für viele Programmier- und Auszeichnungssprachen ein Syntax-Highlighting besitzt.
- Mit dem Datei-Browser umgehen können und diesen insbesondere so einstellen, dass die Datei-Endung erkennen können.
Fehler:
Gerade typische Anwender neigen dazu, den Datei-Browser so einzustellen, dass die Datei-Endung nicht angezeigt wird (weil man bestimmte Datei-Typen mit nur einem Programm öffnet). Als Programmierer muss man immer wissen, welchen Datei-Typ man vor sich hat und diese oft mit einem Text-Editor öffnen. Daher immer den Datei-Browser so einstellen, dass die Datei-Endung sichtbar ist.