C++ - Dirk Louis - E-Book

C++ E-Book

Dirk Louis

0,0

Beschreibung

C++ ist eine der wichtigsten und meistgenutzten Programmiersprachen weltweit, gilt aber auch als sehr kompliziert.

Dieses Buch vermittelt Ihnen in leicht verständlichen Lektionen die Grundlagen der C++-Programmierung nach dem neuesten Standard C++ 17. Schritt für Schritt erfahren Sie alles über die Sprache und die Konzepte, die der C++-Programmierung zugrunde liegen.

Erste Schritte mit C++

- Der sichere Einstieg
- Keine Vorkenntnisse erforderlich
- Von den Grundlagen bis zum Profikurs


Der mehrteilige Aufbau des Buches spiegelt dabei Ihre vier Entwicklungsstufen wider:
Auf der ersten Stufe werden Sie in lockerem, leicht verständlichem Stil in die Grundlagen und Hintergründe der Programmierung eingeführt.
Die zweite Stufe erschließt Ihnen dann die wichtigsten Elemente der C++-Standardbibliothek, mit deren Hilfe Sie die unterschiedlichsten Programmideen umsetzen können.
Der dritte Teil führt Sie in die Geheimnisse der Objektorientierung ein und im vierten Teil untersuchen wir noch einige weit fortgeschrittene Themen wie die Operatorenüberladung, Zeiger auf Funktionen oder die Möglichkeiten der Bitmanipulation.

Referenz und Nachschlagewerk

Abgerundet wird das Buch durch zahlreiche Übungen, einen Lösungsteil, eine Syntax-Referenz und einen umfangreicher Index, damit Ihnen das Buch auch nach dem ersten Durcharbeiten als Referenz und Nachschlagewerk gute Dienste leisten kann.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 533

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Dirk Louis

C++

Das komplette Starterkit für den einfachen Einstieg in die Programmierung

2. Auflage

Der Autor:

Dirk Louis, Saarbrücken, [email protected]

Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht.

Ebenso übernehmen Autor und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen­ und Markenschutz­Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Bibliografische Information der Deutschen Nationalbibliothek: Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdruckes und der Vervielfältigung des Buches, oder Teilen daraus, vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren) – auch nicht für Zwecke der Unterrichtsgestaltung – reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

© 2018 Carl Hanser Verlag Münchenwww.hanser-fachbuch.de

Lektorat: Brigitte Bauer-Schiewek Copyediting: Petra Kienle, Fürstenfeldbruck Umschlagdesign: Marc Müller-Bremer, München, www.rebranding.de Umschlagrealisation: Stephan Rönigk

Print-ISBN 978-3-446-44597-0 E-Book-ISBN 978-3-446-45388-3

Verwendete Schriften: SourceSansPro und SourceCodePro (Lizenz) CSS-Version: 1.0

Inhalt

Titelei

Impressum

Inhalt

Vorwort

Teil I – Grundkurs

1 Keine Angst vor C++!

1.1 Von C zu C++

1.1.1 Rückblick

1.1.2 Die strukturierte Programmierung

1.1.3 Chips sind billig, Programmierer teuer

1.1.4 Fassen wir zusammen

1.2 Von der Idee zum fertigen Programm

1.3 Näher hingeschaut: der C++-Compiler

1.3.1 Der Compiler ist ein strenger Lehrer

1.3.2 Definition und Deklaration

1.3.3 Das Konzept der Headerdateien

1.3.4 Namensräume

1.3.5 Der Compiler bei der Arbeit

1.3.6 ISO und die Compiler-Wahl

1.3.7 Der neue C++17-Standard

1.4 Übungen

2 Grundkurs: Das erste Programm

2.1 Hallo Welt! – das Programmgerüst

2.1.1 Typischer Programmaufbau

2.1.2 Die Eintrittsfunktion main()

2.1.3 Die Anweisungen

2.1.4 Headerdateien

2.1.5 Kommentare

2.2 Programmerstellung

2.2.1 Programmerstellung mit Visual Studio

2.2.2 Programmerstellung mit GNU-Compiler

2.2.3 Programmausführung

2.3 Stil

2.4 Übungen

3 Grundkurs: Daten und Variablen

3.1 Konstanten (Literale)

3.2 Variablen

3.2.1 Variablendefinition

3.2.2 Werte in Variablen speichern

3.2.3 Variablen bei der Definition initialisieren

3.2.4 Werte von Variablen abfragen

3.3 Konstante Variablen

3.4 Die Datentypen

3.4.1 Die Bedeutung des Datentyps

3.4.2 Die elementaren Datentypen

3.4.3 Weitere Datentypen

3.5 Typumwandlung

3.5.1 Typumwandlung bei der Ein- und Ausgabe

3.5.2 Automatische Typumwandlungen

3.5.3 Explizite Typumwandlungen

3.6 Übungen

4 Grundkurs: Operatoren und Ausdrücke

4.1 Rechenoperationen

4.1.1 Die arithmetischen Operatoren

4.1.2 Die mathematischen Funktionen

4.2 Ausdrücke

4.3 Die kombinierten Zuweisungen

4.4 Inkrement und Dekrement

4.5 Strings addieren

4.6 Weitere Operatoren

4.7 Übungen

5 Grundkurs: Kontrollstrukturen

5.1 Entscheidungen und Bedingungen

5.1.1 Bedingungen

5.1.2 Die Vergleichsoperatoren

5.1.3 Die logischen Operatoren

5.2 Verzweigungen

5.2.1 Die einfache if-Anweisung

5.2.2 Die if-else-Verzweigung

5.2.3 Die switch-Verzweigung

5.3 Schleifen

5.3.1 Die while-Schleife

5.3.2 Die do-while-Schleife

5.3.3 Die for-Schleife

5.3.4 Schleifen mit mehreren Schleifenvariablen

5.3.5 Performance-Tipps

5.4 Sprunganweisungen

5.4.1 Abbruchbefehle für Schleife

5.4.2 Abbruchbefehle für Funktionen

5.4.3 Sprünge mit goto

5.5 Fallstricke

5.5.1 Die leere Anweisung ;

5.5.2 Nebeneffekte in booleschen Ausdrücken

5.5.3 Dangling else-Problem

5.5.4 Endlosschleifen

5.6 Übungen

6 Grundkurs: Eigene Funktionen

6.1 Definition und Aufruf

6.1.1 Der Ort der Funktionsdefinition

6.1.2 Funktionsprototypen (Deklaration)

6.2 Rückgabewerte und Parameter

6.2.1 Rückgabewerte

6.2.2 Parameter

6.3 Lokale und globale Variablen

6.3.1 Lokale Variablen

6.3.2 Globale Variablen

6.3.3 Gültigkeitsbereiche und Verdeckung

6.4 Funktionen und der Stack

6.5 Überladung

6.6 Übungen

7 Grundkurs: Eigene Datentypen

7.1 Arrays

7.1.1 Definition

7.1.2 Auf Array-Elemente zugreifen

7.1.3 Initialisierung

7.1.4 Arrays in Schleifen durchlaufen

7.1.5 Arrays an Funktionen übergeben

7.1.6 Mehrdimensionale Arrays

7.1.7 Vor- und Nachteile der Programmierung mit Arrays

7.2 Aufzählungen

7.2.1 Definition

7.2.2 Variablen

7.2.3 Aufzählungstypen und switch-Verzweigungen

7.2.4 Die neuen enum class-Aufzählungen

7.3 Strukturen

7.3.1 Definition

7.3.2 Variablendefinition

7.3.3 Zugriff auf Elemente

7.3.4 Initialisierung

7.3.5 Arrays von Strukturen

7.4 Klassen

7.4.1 Definition

7.4.2 Variablen, Objekte und Konstruktoren

7.4.3 Zugriffsschutz

7.5 Übungen

8 Grundkurs: Zeiger und Referenzen

8.1 Zeiger

8.1.1 Definition

8.1.2 Initialisierung

8.1.3 Dereferenzierung

8.1.4 Zeigerarithmetik

8.2 Referenzen

8.3 Einsatzgebiete

8.3.1 call by reference

8.3.2 Dynamische Speicherreservierung

8.4 Übungen

9 Grundkurs: Noch ein paar Tipps

9.1 Wie gehe ich neue Programme an?

9.2 Wo finde ich Hilfe?

9.2.1 Hilfe zu Compiler-Meldungen

9.2.2 Hilfe bei der Lösung von Programmieraufgaben

9.2.3 Hilfe bei Programmen, die nicht richtig funktionieren

9.2.4 Debuggen

9.3 Programme optimieren

Teil II – Aufbaukurs: die Standardbibliothek

10 Aufbaukurs: Einführung

10.1 Bibliotheken verwenden

10.2 Hilfe zu den Bibliothekselementen

11 Aufbaukurs: Mathematische Funktionen

11.1 Die mathematischen Funktionen

11.1.1 Mathematische Konstanten

11.1.2 Verwendung der trigonometrischen Funktionen

11.1.3 Überläufe

11.2 Zufallszahlen

11.3 Komplexe Zahlen

11.4 Übungen

12 Aufbaukurs: Strings

12.1 String-Literale

12.1.1 Escape-Sequenzen

12.1.2 Zeilenumbrüche

12.2 Strings erzeugen

12.3 Strings aneinanderhängen

12.4 Strings vergleichen

12.5 Sonstige String-Manipulationen

12.6 C-Strings

12.7 Umwandlungen zwischen Strings und Zahlen

12.8 Übungen

13 Aufbaukurs: Ein- und Ausgabe

13.1 Daten auf die Konsole ausgeben

13.2 Formatierte Ausgabe

13.2.1 Ausgabebreite

13.2.2 Füllzeichen

13.2.3 Genauigkeit

13.2.4 Formatierte Ausgabe mit printf()

13.3 Deutsche Umlaute

13.4 Daten über die Konsole (Tastatur) einlesen

13.5 Fehlerbehandlung

13.6 Streams

13.7 Textdateien

13.7.1 In Textdateien schreiben

13.7.2 Aus Textdateien lesen

13.8 Binärdateien

13.9 Übungen

14 Aufbaukurs: Zeit und Datum

14.1 Zeit und Datum

14.2 Laufzeitmessungen

14.3 Übungen

15 Aufbaukurs: Container

15.1 Die STL

15.2 vector – ein intelligenter Daten-Container

15.2.1 Einsatz eines Containers

15.2.2 Größenmanagement von Containern

15.2.3 Typische Memberfunktionen

15.3 Der Gebrauch von Iteratoren

15.4 Die Algorithmen

15.4.1 generate()

15.4.2 stable_sort()

15.5 Schlüssel/Wert-Paare

15.6 Übungen

16 Aufbaukurs: Programme aus mehreren Quelltextdateien

16.1 Quelltext verteilen

16.1.1 Funktionen über Dateigrenzen hinweg verwenden

16.1.2 Klassen über Dateigrenzen hinweg verwenden

16.1.3 Variablen über Dateigrenzen hinweg verwenden

16.1.4 Typdefinitionen über Dateigrenzen hinweg verwenden

16.2 Mehrfacheinkopieren von Headerdateien verhindern

16.3 Übungen

Teil III – Objektorientierte Programmierung

17 OOP-Kurs: Klassen

17.1 Objektorientiert denken – objektorientiert programmieren

17.1.1 Objektorientiertes Programmieren

17.1.2 Wie sind Objekte beschaffen?

17.1.3 Wie findet man einen objektorientierten Lösungsansatz?

17.1.4 Objekte und Klassen

17.2 Klassendefinition

17.2.1 Zugriffsrechte

17.2.2 Quelltext- und Headerdatei

17.2.3 Klassen zu Visual-Studio-Projekten hinzufügen

17.3 Membervariablen

17.3.1 Anfangswerte

17.3.2 Private-Deklaration

17.3.3 Eingebettete Objekte

17.3.4 Konstante Membervariablen

17.3.5 Statische Membervariablen

17.4 Memberfunktionen

17.4.1 Definition innerhalb der Klassendefinition

17.4.2 Definition außerhalb der Klassendefinition

17.4.3 Der this-Zeiger

17.4.4 Statische Memberfunktionen

17.4.5 Konstante Memberfunktionen

17.4.6 Get-/Set-Memberfunktionen

17.5 Die Konstruktoren

17.5.1 Definition und Aufruf

17.5.2 Ersatz- und Standardkonstruktoren

17.6 Der Destruktor

17.7 Übungen

18 OOP-Kurs: Vererbung

18.1 Das Prinzip der Vererbung

18.1.1 Der grundlegende Mechanismus

18.1.2 Die Syntax

18.1.3 Wann ist Vererbung gerechtfertigt?

18.1.4 Einige wichtige Fakten

18.2 Das Basisklassenunterobjekt

18.2.1 Zugriff

18.2.2 Instanzbildung

18.3 Die Zugriffsspezifizierer für die Vererbung

18.4 Verdecken, überschreiben und überladen

18.4.1 Verdeckung

18.4.2 Überladung

18.4.3 Überschreibung

18.5 Der Destruktor

18.6 Mehrfachvererbung

18.7 Übungen

19 OOP-Kurs: Polymorphie

19.1 Grundprinzip und Implementierung

19.2 Späte und frühe Bindung

19.2.1 Frühe Bindung

19.2.2 Späte Bindung

19.3 Generische Programmierung

19.3.1 Basisklassen-Arrays

19.3.2 Basisklassenparameter

19.4 Typidentifizierung zur Laufzeit (RTTI)

19.4.1 Umwandlung mit dynamic_cast

19.4.2 Der typeid()-Operator

19.5 Abstrakte Klassen

19.5.1 Rein virtuelle Funktionen

19.5.2 Abstrakte Klassen

19.6 Übungen

20 OOP-Kurs: Ausnahmebehandlung

20.1 Fehlerprüfung mit Ausnahmen

20.2 Ausnahmen abfangen

20.3 Ausnahmen auslösen

20.4 Programmfluss und Ausnahmebehandlung

20.4.1 Wo wird der Programmfluss nach einer Ausnahme fortgesetzt?

20.4.2 Die Problematik des gestörten Programmflusses

20.5 Übungen

Teil IV – Profikurs

21 Profikurs: Allgemeine Techniken

21.1 Vorzeichen und Überlauf

21.2 Arithmetische Konvertierungen

21.3 Lokale static-Variablen

21.4 Der ?:-Operator

21.5 Bit-Operatoren

21.5.1 Multiplikation mit 2

21.5.2 Division durch 2

21.5.3 Klein- und Großschreibung

21.5.4 Flags umschalten

21.5.5 Gerade Zahlen erkennen

21.6 Zeiger auf Funktionen

21.7 Rekursion

21.8 constexpr-Funktionen

21.9 Variablendefinition in if und switch

22 Profikurs: Objektorientierte Techniken

22.1 Zeiger auf Memberfunktionen

22.2 Friends

22.3 Überladung von Operatoren

22.3.1 Syntax

22.3.2 Überladung des Inkrement-Operators ++

22.3.3 Überladung arithmetischer Operatoren +, +=

22.3.4 Überladung der Streamoperatoren <<>>

22.4 Objekte vergleichen

22.4.1 Gleichheit

22.4.2 Größenvergleiche

22.5 Objekte kopieren

23 Profikurs: Gültigkeitsbereiche und Lebensdauer

24 Profikurs: Templates

24.1 Funktionen-Templates

24.2 Klassen-Templates

25 Profikurs: Reguläre Ausdrücke

25.1 Syntax regulärer Ausdrücke

25.1.1 Zeichen und Zeichenklassen

25.1.2 Quantifizierer

25.1.3 Gruppierung

25.1.4 Assertionen (Anker)

25.2 Musterabgleich mit regulären Ausdrücken

25.3 Suchen mit regulären Ausdrücken

25.4 Ersetzen mit regulären Ausdrücken

26 Profikurs: Lambda-Ausdrücke

26.1 Syntax

26.2 Einsatz

Anhang A: Lösungen

Anhang B: Die Beispiele zum Buch

B.1 Installation der Visual Studio Community Edition

B.2 Ausführung der Beispielprogramme

B.2.1 Ausführung mit VS Community Edition 2017

B.2.2 Ausführung mit beliebigen integrierten Entwicklungsumgebungen

B.2.3 Ausführung mit GNU-Konsolen-Compiler

Anhang C: Zeichensätze

C.1 Der ASCII-Zeichensatz

C.2 Der ANSI-Zeichensatz

Anhang D: Syntaxreferenz

D.1 Schlüsselwörter

D.2 Elementare Typen

D.3 Strings

D.4 Operatoren

D.5 Ablaufsteuerung

D.6 Ausnahmebehandlung

D.7 Aufzählungen

D.7.1 enum

D.7.2 enum class (C++11)

D.8 Arrays

D.9 Zeiger

D.10 Strukturen

D.11 Klassen

D.12 Vererbung

D.13 Namensräume

Anhang E: Die Standardbibliothek

E.1 Die C-Standardbibliothek

E.2 Die C++-Standardbibliothek

Vorwort

Sie besitzen einen Computer und wissen nicht, wie man programmiert?

Das ist ja furchtbar! Jetzt erzählen Sie mir nur nicht, dass Sie Ihren Computer nur zum Spielen und Internetsurfen benutzen. Dann wäre ich wirklich enttäuscht.

Ach so, jemand hat Ihnen erzählt, dass Programmieren sehr kompliziert sei und viel mit Mathematik zu tun hätte.

Tja, dann wollte sich dieser jemand wohl ein wenig wichtigmachen oder hat selbst nichts vom Programmieren verstanden, denn Programmieren ist nicht schwieriger als Kochen oder das Erlernen einer Fremdsprache. Und mehr mathematisches Verständnis als es von einem Schüler der sechsten oder siebten Klasse verlangt wird, ist definitiv auch nicht nötig.

Reizen würde Sie das Programmieren schon, aber Sie wissen ja gar nicht so recht, was Sie programmieren könnten.

Keine Angst, sowie Sie mit dem Programmieren anfangen, werden Ihnen zahlreiche Ideen kommen. Und weitere Anregungen finden sich in guten Lehrbüchern zuhauf beziehungsweise ergeben sich beim Austausch mit anderen Programmierern.

Immer noch Zweifel? Sie würden sich das Programmieren am liebsten im Selbststudium beibringen? Sie suchen ein Buch, das Sie nicht überfordert, mit dem Sie aber dennoch richtig professionell programmieren lernen?

Aha, Sie sind der unsicher-anspruchsvolle Typ! Dann dürfte das vorliegende Buch genau richtig für Sie sein. Es ist nicht wie andere Bücher primär thematisch gegliedert, sondern in Stufen – genauer gesagt vier Stufen, die Sie Schritt für Schritt auf ein immer höheres Niveau heben.

Aufbau des Buchs

Die erste Stufe ist der Grundkurs. Hier schreiben Sie Ihre ersten Programme und lernen die Grundzüge der Programmierung kennen. Danach besitzen Sie fundiertes Basiswissen und können eigenständig Ihre ersten Programmideen verwirklichen.

Bestimmte Aufgaben kehren bei der Programmierung immer wieder: beispielsweise das Abfragen des Datums, die Berechnung trigonometrischer Funktionen, die Verwaltung größerer Datenmengen oder das Schreiben und Lesen von Dateien. Für diese Aufgaben gibt es in der C++-Standardbibliothek vordefinierte Elemente. Wie Sie diese nutzen, erfahren Sie im Aufbaukurs – der zweiten Stufe.

Die dritte Stufe stellt Ihnen die objektorientierte Programmierung vor und lehrt Sie, wie Sie den Code immer größerer Programme sinnvoll organisieren.

Die vierte Stufe schließlich stellt Ihnen noch einige letzte C++-Techniken vor, die Sie vermutlich eher selten einsetzen werden, die ein professioneller C++-Programmierer aber kennen sollte.

Abgerundet wird das Buch durch einen umfangreichen Anhang, der unter anderem eine C++-Syntaxübersicht und eine Kurzreferenz der Standardbibliothek beinhaltet.

Nicht verzagen!

Natürlich gibt es auch Zeiten des Verdrusses und des Frusts. Oh ja, die gibt es! Aber seien wir ehrlich: Wäre der Weg nicht so steinig, wäre die Freude am Ziel auch nicht so groß. Was sind das denn für trostlose Gesellen, die in ihrer gesamten Zeit als Programmierer noch keine Nacht durchwacht haben, weil sie den Fehler, der das Programm immer zum Abstürzen bringt, nicht finden konnten? Und was soll man von einem Programmierer halten, der noch nie aus Versehen ein Semikolon hinter eine if-Bedingung gesetzt hat? (Und dem die Schamesröte ins Gesicht schoss, als er einen vorbeikommenden Kollegen um Hilfe bat und ihn dieser nach einem flüchtigen Blick auf den Quellcode auf den Fehler aufmerksam machte.) Sind das überhaupt echte Programmierer?

Wer programmieren lernen will, der muss auch erkennen, dass bei der Programmierung nicht immer alles glatt geht. Das ist nicht ehrenrührig, man darf sich nur nicht unterkriegen lassen. Sollten Sie also irgendwo auf Schwierigkeiten stoßen – sei es, dass Sie etwas nicht ganz verstanden haben oder ein Programm nicht zum Laufen bekommen –, versuchen Sie sich nicht zu sehr in das Problem zu verbohren. Legen Sie eine kleine Pause ein oder lesen Sie erst einmal ein wenig weiter – oftmals klärt sich das Problem danach von selbst.

Dirk Louis

Saarbrücken, im Frühjahr 2018

Teil I – Grundkurs

In diesem Teil erlernen Sie die Grundlagen von C++ und der Programmierung im Allgemeinen.

Das bedeutet, dass wir eine Menge Stoff zu bewältigen haben. Doch wir werden es gelassen angehen. Zuerst eigenen wir uns ein wenig Theorie an, anschließend betrachten wir die technische Seite der Programmerstellung und ab Kapitel 3 tauchen wir dann so richtig in die C++-Programmierung ein.

1 Keine Angst vor C++!

1 eine Funktion, die einen Funktionszeiger als Rückgabetyp besitzt

2 Moderne "Interpreter", wie sie beispielsweise für die Ausführung von Java-, C#- oder .NET-C++-Programmen verwendet werden, interpretieren daher vorkompilierte Programme und nennen sich JIT-Compiler (= "Just in time"-Compiler), weil sie die Programmausführung kaum verzögern.

3Einige objektorientierte Sprachen erlauben auch die direkte Definition von Objekten oder benutzen andere Begriffe, um die verschiedenen OOP-Konzepte zu bezeichnen.

4 Sollten Sie die "Bürgschaft" noch nicht gelesen haben, holen Sie dies unbedingt nach. Programmieren ist ein Spaß, humanistische Bildung eine Muss.

5 Tatsächlich ist jeder gute C++-Compiler auch in der Lage, (nahezu) beliebigen C-Code zu übersetzen. (Es gibt nur ganz wenige Punkte, in denen C++ die von C übernommene Syntax und Semantik verändert hat.) Umgekehrt gab es in der Übergangszeit – und gibt es wohl auch heute noch – nicht wenige Programmierer, die in C++ mehr oder weniger guten, alten C-Code schrieben.

6Vermutlich wird Ihnen dieser Code vollkommen unverständlich erscheinen. Machen Sie sich darüber keine Gedanken. Zum einen ist der Code schon recht komplex, zum anderen geht es hier ja nicht darum, dass Sie das Beispiel nachstellen, sondern nur darum, dass Sie einmal einen C++-Quelltext gesehen haben.

7 Insbesondere Microsoft tendierte früher dazu, die verschiedenen Programmiersprachen, für die das Softwarehaus Compiler anbietet, um neue und abweichende Syntaxformen zu erweitern, die dann ausschließlich von den passenden Microsoft-Compilern verstanden und unterstützt werden. Angeblich dient dies alles dazu, dem Programmierer die Arbeit zu erleichtern, faktisch bindet es den Programmierer aber vor allem an einen einzelnen Compiler.

8 Kombination aus Prozessor und Betriebssystem.

2 Grundkurs: Das erste Programm