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++

Die Vorgehensweise zum Erlernen einer objektorientierten Programmiersprache wie C++ kann in mehrere Phasen eingeteilt werden:

  1. Vorbereitungen
  2. Sprachregeln
  3. C++ Standard Library
  4. OOP (objektorientierte Programmierung)
  5. 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:

  1. Dev-C++
  2. MinGW Compiler
  3. Text-Editor Notepad++
  4. Visual Studio Code
  5. IDEs wie Eclipse oder Visual Studio Community
  6. 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:

  1. 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.
  2. 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):

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

  1. Einen Text-Editor zur Verfügung haben; oben wurde bereits Notepad++ empfohlen, der für viele Programmier- und Auszeichnungssprachen ein Syntax-Highlighting besitzt.
  2. 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.