C++ f?r Dummies, 8. Auflage by Arnold Willemer

C++ für Dummies

Schummelseite

Title page image

Einleitung

Über dieses Buch

Ich habe bereits ein paar Einsteigerbücher zu C++ geschrieben. Und davon wurden auch einige verkauft. Schauen Sie doch mal in Ihrem Bücherregal nach. Vielleicht waren Sie einer der Käufer.

Ich habe meine alten Manuskripte zugrunde gelegt, denn es war ja nicht alles schlecht. Und dann habe ich sie überarbeitet und noch einmal überarbeitet und ein weiteres Mal überarbeitet. Mein Lektor Marcel Ferner hat unglaubliche Geduld mit mir gehabt. Vielen Dank dafür.

Der Grund für die viele Arbeit war, dass ich wollte, dass das Buch möglichst leicht verständlich ist und möglichst auch etwas Spaß macht. Dafür ist es vielleicht nicht mehr so akademisch wertvoll. Aber was soll's. Ich kenne zufällig ein paar Akademiker und weiß, dass sie durchaus leicht verständliche Bücher schätzen.

Konventionen in diesem Buch

Es gibt da diverse Schriftvariationen, die man verwenden kann, um ein paar Dinge hervorzuheben. Ich hatte hier folgende Ideen:

  • Neue Fachbegriffe werden so, also kursiv hervorgehoben.
  • Oft haben Sie es mit Dateien oder Pfaden zu tun.
  • Manchmal finden Sie www.informationen.de/im/internet.
  • MENÜ- ODER BUTTONBESCHRIFTUNGEN in grafischen Oberflächen werden auf diese Weise hervorgehoben.
  • Befehle und Schlüsselwörter haben diese etwas langweilige Schrift.
  • Variablen, Funktionen und Klassen haben Namen. Diese Namen werden auch als Bezeichner bezeichnet. Das zeichnet sie aus.

Törichte Annahmen über den Leser

Ich gehe nicht davon aus, dass Sie bereits irgendeine Programmiersprache beherrschen. Ich setze voraus, dass Sie wissen, was ein Computer ist, und dass Sie damit grundlegend umgehen können.

Das Buch wird Ihnen allerdings nur etwas nützen, wenn Sie selbst programmieren. Dazu habe ich ein paar Übungen ersonnen. Es ist wie beim Schnitzen, beim Malen, beim Singen oder Musizieren. Wenn Sie das Buch nur lesen, mögen Sie viel erfahren, wie es wäre, wenn man programmieren könnte. Aber lernen werden Sie es nur, indem Sie es selbst tun.

Sie finden bei einigen Listings hinter den Beschriftungen in Klammern einen Dateinamen, der darauf hinweist, dass es diese Listings als Quellcode zum Download gibt. Ich habe sie in einer ZIP-Datei gesammelt, die Sie aus dem Internet unter einer der folgenden URLs herunterladen können:

http://wiley-vch.de/ISBN9783527717477

http://www.willemer.de/cpp4dummies

Die Downloads sollen Ihnen das Tippen und die Suche der Tippfehler ersparen. Ich habe sogar Musterlösungen für die Übungen geschrieben, obwohl ich immer noch nicht sicher bin, ob das eine gute Idee war. Denn wenn Sie nicht selbst auf die Lösung kommen, bringt Sie die Musterlösung nicht viel weiter. Also meine Empfehlung ist: Vergessen Sie die Musterlösungen. Vielleicht habe ich sogar Fehler hineingebaut.

Wie dieses Buch aufgebaut ist

Hier sehen Sie im Überblick, was Sie in diesem Buch lernen können.

  • Teil I: Wir steigen in die Programmierung ein. Das Ergebnis einfacher Berechnungen erscheint auf dem Bildschirm oder wird in Variablen geparkt. Das Programm fragt Bedingungen ab und wiederholt Abläufe.
  • Teil II: Die einfachen Variablen werden zu Verbunden zusammengestellt. Ein Array ist eine beliebig lange Folge gleicher Elemente. Eine Struktur stellt aus beliebigen Elementen einen eigenen Datentyp her. Zeiger ermöglichen eine flexible Dynamik, die man allerdings auch beherrschen können muss.
  • Teil III: Mehrere Anweisungen werden in Funktionen zusammengefasst. Sie bauen also eigene Befehle. Parameter und Rückgabewerte definieren den Datenfluss. Sie dienen aber auch zum Gliedern komplexer Aufgaben.
  • Teil IV: Zeichenketten sind nur Folgen von Buchstaben? Nicht ganz! C++ kennt sogar zwei verschiedene Arten von Zeichenketten. Die Zeichenketten bringen einige Funktionen mit, um Texte zu verändern.
  • Teil V: Mit den Klassen kommen wir zur objektorientierten Programmierung. Vererbung bedeutet bei Klassen nicht, dass der Erblasser stirbt. Was Polymorphie ist, werden Sie in der Mensa von Norgaardholz lernen.
  • Teil VI: Wir betrachten Techniken, um größere Projekte in den Griff zu bekommen, von der Aufteilung der Quelltexte auf Dateien bis zu statischen und dynamischen Bibliotheken. Ein professionelles Programm kommt ohne Fehlerbehandlung nicht aus. Generische Container machen Datenhaltung effizient, ohne dass man sich um Details kümmert.
  • Teil VII: Die Daten sollten auch dann noch existieren, wenn der Strom ausfällt oder das Programm endet. Dazu werden Dateien und Datenbanken eingesetzt.
  • Teil VIII: Wir behandeln die Entwicklung von Programmen für grafische Oberflächen. C++ kann da sehr viele verschiedene Varianten spielen. Als Beispiel sehen Sie die klassische C-API von Windows. wxWidgets zeigt, wie die objektorientierte Programmierung vieles erleichtert und grafische Oberflächen portierbar werden. Moderne grafische Tools vereinfachen das Design von Oberflächen. Eine solche Entwicklung wird am Beispiel Qt gezeigt.
  • Teil IX: Im diesem Kapitel werden die wichtigsten Programmierwerkzeuge vorgestellt, die Ihnen als Entwicklungsumgebung zur Verfügung stehen, und ich zeige Ihnen, wie Sie diese installieren. Der Umgang mit dem Debugger oder einer Versionsverwaltung kann für Programmierer langfristig überlebenswichtig sein.
  • Teil X: Im zehnten Teil folgen die Top-10-Listen, wie sie in den meisten Dummies-Büchern Tradition sind.

Symbole, die in diesem Buch verwendet werden

Als ich dieses Buch schrieb, durfte ich mir ein paar Symbole aussuchen, die Sie nun immer wieder sehen werden. Sie müssen sie nicht auswendig lernen. Sie werden vermutlich schon am Inhalt merken, was sie bedeuten. Aber damit alles seine Ordnung hat, stelle ich Ihnen die Symbole kurz vor.

imagesNeben diesem Symbol finden Sie oft das Konzentrat dieses Abschnitts, aber auf jeden Fall etwas, was Sie sich auf Ihren Spicker schreiben würden, wenn jemand Sie prüfen würde.

imagesEin Tipp lässt manche Arbeit etwas einfacher werden. Damit solche Hilfestellungen nicht verloren gehen, stehen sie neben diesem Symbol.

imagesWenn es da noch etwas zu erwähnen gibt, was zum Verständnis hilft oder sonst irgendwie wichtig ist, habe ich es neben dieses Symbol gestellt.

images Bevor Sie mit einem Fehlgriff Daten zerstören, den PC schädigen oder die Welt pulverisieren, sollten Sie den Text neben diesem Symbol lesen. Die Welt oder Ihre Daten werden Ihnen dankbar sein.

imagesManchmal gibt es ungeheuer spannende Hintergründe zu einem Thema, das den Anfänger aufgrund der Komplexität etwas verschrecken könnte. Bevor der Informatiker in mir durchgeht, habe ich versucht, dieses Symbol zu verwenden. Sie können dem Ausflug folgen oder den Inhalt einfach ignorieren.

Wie es weitergeht

Die Formalitäten sind erledigt. Nun werden Sie Ihren Computer satteln und damit in die wunderbare Welt der Programmierung reiten. Dabei wird Ihr PC Dinge kennenlernen, die er nie zuvor gesehen hat.

Falls Sie dieses Buch richtig gut finden, senden Sie eine Mail an den Verlag, schreiben Sie eine Rezension für Amazon und informieren Sie das Fernsehen.

Falls das Buch nicht so toll finden, schicken Sie eine Mail an cppfuerdummies@willemer.de. Ich werde sie lesen, und sobald ich die Schmach überwunden habe, dass ein Leser mich nicht verstanden hat, werde ich Ihnen antworten. Sie dürfen an diese Adresse aber selbstverständlich auch dann schreiben, wenn Sie an dem Buch Gefallen gefunden haben.

Norgaardholz

Arnold Willemer

Teil I

Wir programmieren

image

Kapitel 1

Grundgerüst eines Programms

IN DIESEM KAPITEL

  • Das erste Programm und die Methode main
  • Raus und rein: Bildschirm und Tastatur
  • Überraschung: Der Computer kann rechnen

Es spricht einiges dafür, dass Sie dieses Buch lesen, um zu lernen, wie Sie Ihren Computer in C++ programmieren können. So etwas geschieht in folgenden Schritten:

  1. Sie werden Ihr Programm eintippen müssen.
  2. Dabei werden Sie sich wohl oder übel an die Syntax halten müssen, die C++ vorgibt und dieses Buch beschreibt.
  3. Leider versteht Ihr Computer die Programme so nicht. Der Computer mag wilde Zahlenfolgen, die Menschen nicht eintippen wollen. Ein Compiler übersetzt menschengeschriebene Programme in ausführbare Programmdateien für den Computer.
  4. Sie starten die ausführbare Programmdatei und hoffen, dass das Programm das tut, was Sie dem Computer sagen wollten. Falls Sie unzufrieden sind, stimmt die Semantik nicht.

Sie werden einen Compiler brauchen. Davon gibt es jede Menge für alle möglichen Betriebssysteme. Ihr Chef wird Ihnen sicher gern auf Ihrem Arbeitsplatz einen Compiler zur Verfügung stellen. Sollten Sie keinen so fürsorglichen Chef haben, der sich so rührend um Sie kümmert, sollten Sie Kapitel 24 lesen. Ich warte hier solange auf Sie. Dann können wir anfangen.

Die Funktion main()

Ein C++-Programm besteht mindestens aus der Funktion main. Keine Sorge, was eine Funktion ist, wird in Kapitel 7 genau erklärt. In jedem C++-Programm muss irgendwo der Name main mit einem Klammernpaar stehen, dem die Silbe int voransteht.

image

In manchen Fällen stehen zwischen den Klammern ein paar kryptisch anmutende Zeichen. Lassen Sie sich nicht verwirren. Was diese Zeichen zwischen den Klammern bewirken, werden Sie noch rechtzeitig erfahren.

image

Die Hauptfunktion beginnt direkt nach einer öffnenden geschweiften Klammer und endet mit der passenden schließenden Klammer. Was dazwischen steht, nennt man einen Block. In diesem Block zwischen den geschweiften Klammern stehen Anweisungen für den Computer. Sie werden nacheinander ausgeführt.

Kommentare

Wenn wir schon einmal ein Programm haben, das nichts tut, wollen wir es auch um Befehle erweitern, die nichts tun: Kommentare. Sie dienen zur Dokumentation des Programms. Unverständliche Programme werden zu Fehlern führen. Gute Kommentare helfen beim Verständnis.

image

Sie sehen, es gibt zwei Arten von Kommentaren.

  • // Der Kommentar gilt bis zum Ende der Zeile.
  • /* Alles dazwischen ist Kommentar. */

Nicht verschachtelbar

/* und */ umschließen einen Kommentar. Sie können die Kommentarklammern allerdings leider nicht verschachteln. Mit dem ersten Auftreten der Kombination /* beginnt der Kommentar. Er endet mit dem ersten Auftreten der Kombination */. Dazwischen liegende Kommentaranfangzeichen gehören zum Kommentar. Der Compiler wird den folgenden Text als Programm ansehen und versuchen, ihn zu übersetzen.

image

Die Kommentare sollen dokumentieren, warum das Programm so und nicht anders geschrieben wurde, und richten sich an Programmierer. Dies können Kollegen sein, die Ihr Programm korrigieren oder erweitern sollen. Aber noch öfter helfen Sie sich selbst damit. In der Praxis ist es so, dass Sie vermutlich auch herangezogen werden, wenn eines Ihrer Programme nicht korrekt läuft oder ergänzt werden soll. Da Sie zwischendurch andere Programme geschrieben haben werden, vielleicht geheiratet haben, umgezogen sind und noch drei weitere Programmiersprachen gelernt haben, werden Sie dankbar sein, wenn Sie in den Programmen ausführliche Hinweise finden, wie und warum es so funktioniert oder zumindest funktionieren soll.

imagesGoldene Regel der Kommentierung: Kommentieren Sie nicht, was Sie gemacht haben, sondern warum Sie es so gemacht haben!

Ausgabe für Anfänger

Das erste Fachbuch über C zeigte als erstes Programm eines, das »Hello World!« auf dem Bildschirm ausgab. Seither grüßen fast alle Programmierbücher erst einmal die Welt. Ich finde, dass Munkbrarup in den Fachbüchern dieser Welt zu kurz kommt.

image

In der ersten Zeile sehen Sie die Anweisung an den Compiler, die Datei iostream an dieser Stelle einzufügen. Solche #include-Anweisungen führen dazu, dass das Programm die Funktionen einer Bibliothek kennenlernt. Das Grußprogramm findet dort heraus, wer eigentlich std::cout ist.

Nachdem der Compiler nun weiß, wer std::cout ist, wollen Sie es vermutlich auch wissen.

  • cout steht für »character out«. Es handelt sich um den Ausgang, zu dem die Zeichen auf den Bildschirm geschickt werden. Und damit sie den Weg auch sicher finden, weisen zwei Kleinerzeiichen dem Gruß an Munkbrarup den Weg.
  • std ist ein Namensraum und besagt, dass cout unter dem Suchbegriff std zu finden ist.
  • :: ist der Trenner zwischen Namensraum und Bezeichner.

Am Ende der Zeile finden Sie mit std::endl noch das Zeilenendezeichen. Damit werden nachfolgende Ausgaben in die nächste Zeile geschickt.

Ansonsten sind die Anführungszeichen noch bemerkenswert. Sie umrahmen jedes Literal einer Zeichenkette. Damit weiß der Compiler, dass Hallo und Munkbrarup keine Befehle sind, sondern zu einem Text zusammengefasst werden sollen.

Variante mit using namespace

Die Symbole in iostream beginnen mit std::. Das bedeutet, dass sich cout und endl im Namensraum std befindet. Sie können sich das Eintippen von std:: sparen, wenn Sie mit der Anweisung using namespace den Namensraum std einbinden.

image

Zahlenspielereien

Sie können nun zwischen die Anführungszeichen (beinahe) beliebige Texte setzen. Aber noch interessanter ist es, Zahlen einzusetzen. Wenn Sie zwischen die Zahlen noch Operatoren wie das Plus- oder Minuszeichen setzen, kann Ihr Programm sogar rechnen.

image

Wenn Sie das Programm übersetzen und starten, wirft es die Zahl 2241 auf dem Bildschirm aus. Da es auf Tastaturen keinen mittigen Punkt gibt, behelfen sich die meisten Programmiersprachen mit einem Stern als Operator für die Multiplikation. Für die Division hat sich der Schrägstrich durchgesetzt. Auch die Klammern können Sie genau wie in der Mathematik üblich einsetzen.

Sogar Nachkommastellen sind möglich, sofern Sie damit zurechtkommen, dass das Komma ein Punkt ist.

image

Übungen

So wie nur selbst essen fett macht, lernen Sie das Programmieren nur dadurch, dass Sie es selbst tun. Aus diesem Grund habe ich mir einige Aufgaben ausgedacht. Aber werden Sie kreativ und verwirklichen Sie auch eigene Programmideen!

  1. Schreiben Sie Listing 1.5 ab. Übersetzen und starten Sie es. In Kapitel 24 ist beschrieben, wie Sie Ihre Arbeitsumgebung einrichten.
  2. Schreiben Sie ein neues Programm, das die beiden Wörter »Hallo Benutzer« auf dem Bildschirm ausgibt.
  3. Ändern Sie das Programm in Listing 1.7, indem Sie andere Zahlen, Operatoren und Klammern einsetzen. Überlegen Sie, was Ihre Änderung bewirken, und probieren Sie, ob Ihre Erwartungen erfüllt werden. Falls Sie eine Fehlermeldung des Compilers erhalten, lesen Sie die Meldung. Versuchen Sie, den Zusammenhang zwischen Ihrer Änderung und der Compiler-Meldung herzustellen.