Einführung in C++
--++Einführung

Was ist C++

Die Wurzeln von C++

Um ein Betriebssystem für die Computer der Serie PDP-11 (die schlußendlich zum UNIX Betriebssystem führten) zu schreiben, wurde von AT&T die Programmiersprache C entwickelt. Das Ziel der Entwickler war eine möglichst effiziente Programmiersprache. Bjarne Stroustrup, auch Mitarbeiter von AT&T, entwickelte C++, um C um die Objektorientierung zu erweitern. Da das Konzept der Objektorientierung zu diesem Zeitpunkt noch neu und alle Implementationen von objektorientierten Programmiersprachen sehr langsam waren, war es oberstes Ziel, die Effizients von C in C++ beizubehalten.

C++ kann als traditionelle prozedurale Programmiersprache mit einigen zusätzlichen Funktionen gesehen werden. C wird um einige Konstrukte für objektorientiertes Programmieren erweitert und um einige Konstrukte, die die allgemeine Syntax verbessern sollen. Jedes gut geschriebene C++ Programm wird sowohl Elemente des objektorientierten Programmierens als auch solche klassischen prozeduralen Programmierens enthalten. C++ ist eine erweiterbare Sprache, da wir neue Typen definieren können, die sich wie die vordefinierten Typen verhalten, die Teil der Programmiersprache selbst sind. C++ ist somit für größere Programmieraufgaben geeignet.

Wie fange ich an?

Die Programmiersprache C war ursprünglich durch die klassische Publikation von Kernigan und Ritchie, ''The C Programming language``, definiert und dies war bis vor wenigen Jahren der Standard für alle C Programmiererinnen. Der ANSI Standard für C wurde schließlich im Dezember 1989 als offizieller Standard für das Programmieren in C festgelegt. Der ANSI-C Standard erweitert die ursprüngliche Sprache der Kernigan und Ritchie-Definition um Vieles und ändert sie in einigen wenigen Punkten ab. Die beiden Definitionen sind nicht zu hundert Prozent kompatibel und einige erfahrene C Programmiererinnen haben die neueren Konstrukte des ANSI-C Standards möglicherweise noch nicht genau studiert.

Diese Einführung setzt ein solides Grundwissen der Programmiersprache C voraus und wir werden nur sehr wenig Zeit mit den Grundlagen verbringen. Um denjenigen, die den C-Dialekt nach Kernigan und Ritchie gelernt haben, ein wenig unter die Arme zu greifen, werden sich einige Abschnitte den Neuerungen des ANSI Standards widmen. Während der ANSI-C Standard entwickelt wurde, übernahm man viele der neuen Konstrukte von C++ in die Definition von C selbst. Zwar ist also C++ eine Erweiterung von C, es ist aber nur fair zu sagen, daß ANSI-C einige seiner Wurzeln in C++ hat. Ein Beispiel dafür wären etwa die Prototypen, die für C++ entwickelt und später zu C hinzugefügt wurden.

Der beste und einfachste Weg, C++ zu erlernen, ist, es zu verwenden. So gut wie jedes korrekte C Programm ist auch in C++ korrekt und die ungefähr 12 neuen Schlüsselwörter sind der einzige Grund, warum einige C Programme nicht als C++ Programme compiliert und ausgeführt werden können. Es gibt einige weitere Unterschiede, deren Diskussion wir uns aber für später aufheben. Somit ist der beste Weg, C++ zu erlernen, das vorhandene Wissen (C) zu erweitern und neue Konstrukte zu verwenden, wenn sie in einem Programm gerade nützlich sind. Es wäre ein großer Fehler, zu versuchen, alle neuen Konstrukte und Konzepte in Deinem ersten C++ Programm anzuwenden. Am Ende hättest Du möglicherweise einen unverständlichen Mischmasch an Quellcode, ineffizienter als dasselbe Programm in C alleine. Es wäre viel besser, nach und nach neue Konstrukte in Deinen Talon aufzunehmen und sie anzuwenden, wenn sie gebraucht werden während Du Erfahrung im Umgang mit ihnen sammelst.

Als Illustration der Portabilität von C nach C++ kann wohl der Hinweis dienen, daß alle Beispielprogramme des Coronado Enterprises C Tutorial einwandfrei als C++ Programme kompiliert und ausgeführt werden konnten. Dabei handelte es sich um Version 2.6, die 1994 erschien. Durch die Neuerungen und Änderungen der C++ Compiler seit damals mag dies heute nicht mehr stimmen. Keines der C++ Programme wird sich allerdings als C Programm kompilieren lassen, aus dem ganz einfachen Grund, daß der neue C++ Kommentarstil verwendet wird (da die meisten neueren C Compiler auch C++ Compiler sind, tolerieren sie aber in vielen Fällen die Verwendung dieser Kommentare und geben schlimmstenfalls eine Warnung aus).

Wie verwende ich diese Einführung

Wenn Du diese Einführung verwendest, sitzt Du idealerweise vor Deinem Computer. Es soll Dir helfen, neben der richtigen Verwendung der Programmiersprache C++ auch die Verwendung Deines Compilers zu erlernen. Lade ein Beispielprogramm in Deinen bevorzugten Text Editor und lies den dazugehörigen Text, der alle neuen Konstrukte, die im Beispielprogramm vorkommen, erläutert. Wenn Du das Programm und die neu eingeführten Konstrukte verstanden hast, kompiliere das Programm mit Deinem C++ Compiler.

Hast Du das Programm erfolgreich kompiliert und ausgeführt, baust Du einige Fehler ein und achtest darauf, welche Fehlermeldungen der Compiler ausgibt. Wenn Du schon einige Erfahrung im Programmieren hast, wird es Dich nicht erstaunen, Fehlermeldungen zu erhalten, die anscheinend überhaupt nichts mit dem Fehler, den Du eingefügt hast, zu tun haben. Das ist darauf zurückzuführen, daß die Fehleranalyse für jede moderne Programmiersprache ein sehr schwieriges Problem darstellt. Die wertvollste Erfahrung, die Du dabei sammeln sollst, ist diejenige im Umgang mit Deinem Compiler und seinen Eigenheiten. Dann solltest Du versuchen, das Programm mit Hilfe der neu vorgestellten Techniken zu erweitern, um weitere Erfahrungen zu sammeln.

Es wird nicht notwendig sein, jedes einzelne Beispielprogramm zu kompilieren und auszuführen. Am Ende jedes Programmes findest Du in Kommentaren das Resultat, wenn das kompilierte Programm ausgeführt wird. Einige Konstrukte sind sehr einfach und leicht zu verstehen, sodaß Du auf die Schritte der Kompilation und Programmausführung verzichten wirst und Dich an die Kommentare hältst.

Im Text dieser Einführung werden Schlüsselwörter, Variablennamen und Funktionsnamen gesondert hervorgehoben, um das Studium der Beispielprogramme zu erleichtern.

Verschiedene C++ Implementationen

Es gibt im Wesentlichen zwei Arten der Benennung von C++ Dateien, eine mit der Erweiterung .CPP, die andre mit der Erweiterung .CXX. Alle Dateien in dieser Einführung verwenden die .CPP Erweiterung. Sollte Dein Compiler eine andere Erweiterung verlangen, bleibt es Dir überlassen, die Dateien umzubenennen. In den Jugendjahren von C++ wurden header-Dateien mit der Erweiterung .HPP benannt, es gibt aber einen Trend, alle header-Dateien mit der Erweiterung .H zu versehen. Aus diesem Grund folgen alle header-Dateien in dieser Einführung dieser Konvention.

Wir haben zwar versucht, alle Konstrukte in ihrer ursprünglichsten Version zu verwenden, es ist aber möglich, daß einige Konstrukte mit einigen C++ Compilern nicht kompiliert werden können. Wir werden aber im Versuch, die Beispielprogramme so allgemein verwendbar wie möglich zu machen, jedes Programm mit neueren Versionen von Compilern testen.

Es gibt ein Komitee, das einen ANSI-C++ Standard zum Ziel hat, der aber nicht vor 1998 zu erwarten ist. Bis dahin wird die Sprache einigen Veränderungen unterliegen. In der Tat hat es in den letzten zwei Jahren viele Änderungen gegeben, da die Autoren von Compilern mit der Sprache Schritt zu halten versuchen.

Programmieraufgaben

Am Ende jedes Kapitels finden sich Programmieraufgaben, die es Dir ermöglichen sollen, einige der neuen Konstrukte des Kapitels auszuprobieren. Du wirst sicherlich sehr davon profitieren, wenn Du versuchen, die Aufgaben zu lösen. Nur durch das Lesen dieser Einführung wirst Du zwar ein recht ansehnliches theoretisches Wissen um die Programmiersprache C++ erworben haben, zur C++ Programmiererin wirst Du aber nur durch Schreiben von C++ Programmen. Die Programmieraufgaben sollen als Anregungen für eigene Programme dienen.

Einführung in C++
--++Heinz Tschabitscher
Copyright © 1997 Heinz Tschabitscher - Letzte Änderung, 14. November 1997
Heinz Tschabitscher - semper@doubt.com - Kommentare, Kritik, Anregungen, Heiratsanträge?.

[ Die ]