Entdecken Sie die faszinierende Welt von C++! Dieser umfassende Leitfaden entführt Sie auf eine Reise durch die Grundlagen und fortgeschrittenen Konzepte dieser leistungsstarken Programmiersprache. Von den historischen Wurzeln in Algol68 über die bahnbrechenden Entwicklungen von Bjarne Stroustrup bis hin zur modernen Anwendung in Systemprogrammierung, Spieleentwicklung und vielem mehr – dieses Buch bietet Ihnen das Rüstzeug, um eigene Programme zu schreiben und die unendlichen Möglichkeiten von C++ zu nutzen. Tauchen Sie ein in die Welt der objektorientierten Programmierung mit Klassen und Objekten, lernen Sie die Unterschiede zu TP (Turbo Pascal) kennen und meistern Sie die grundlegenden Elemente wie Variablen, Operatoren und Schleifen. Erfahren Sie, wie Sie mit Anweisungen, Strings, Funktionen, Strukturen und Zeigern komplexe Aufgaben lösen. Ein besonderes Augenmerk liegt auf dem dynamischen Speicher und der effizienten Nutzung des Heaps, um auch anspruchsvolle Projekte zu realisieren. Egal, ob Sie Anfänger oder erfahrener Programmierer sind, dieses Buch vermittelt Ihnen ein tiefes Verständnis von C++ und befähigt Sie, innovative Software zu entwickeln. Werden Sie Teil der C++-Community und gestalten Sie die Zukunft der Technologie mit! Lassen Sie sich von der Eleganz und Effizienz dieser Sprache inspirieren und entdecken Sie, wie Sie Ihre kreativen Visionen in die Realität umsetzen können. Programmieren Sie Ihre Zukunft mit C++ – der Schlüssel zu unbegrenzten Möglichkeiten in der Welt der Softwareentwicklung. Dieses Buch ist Ihr idealer Begleiter auf dem Weg zum C++-Experten und vermittelt Ihnen nicht nur das notwendige Wissen, sondern auch die Freude am Programmieren selbst.
1. Was ist C++?
1.1. Entstehungsgeschichte
Pascal sowie Basic und C stammen alle von der gleichen Programmiersprache ab: algol68
- In den 60er Jahren wurden neue Programmiersprachen erfunden wie algol60
- PASCAL wird speziell für den Unterrichtsbereich entworfen
- In den 70er Jahren entwickelt sich die Software-Technologie fort
- Es wird eine neue Programmiersprache gebraucht
- Erkenntnis: objektorientierte Programmiersprache haben bedeutende
Vorteile gegenüber den bisherigen Generationen von Sprachen àbieten mehr Abstraktionen
C als auch C++ wurden von Bjarne Stroustrup erfunden
- In den 60er Jahren stellte sich bei AT&T in den USA die Aufgabe, ein Betriebsystem für den PDP-11 (einer der ersten in Serie gefertigten Computer) zu entwickeln
- bei AT&T wurde dazu die Programmiersprache C entwickelt (aus dieser Betriebssystemumgebung entstand später auch das UNIX-Betriebssystem)
- 1973, Denis Ritchie, entwickelte die Grundlagen von C
- die Programmiersprache C++ existiert etwa seit 1983
- in den AT&T-Bell-Laboratorien entwickelt (Betrieb von Telefonzentralen steuern)
- als Weiterentwicklung für populäres C (C ist als Teilmenge in C++ enthalten geblieben)
- der Name signalisiert den evolutionären Charakter der Sprache: „++" ist der Inkrement- Operator (+1) von C
- erweiterte um objektorientierte Abstraktionsmerkmale
- um die Realisierung größer Projekte (>10000 Code-Zeilen) unter den Kriterien Korrektheit, Robustheit, Erweiterbarkeit und Wiederverwendbarkeit zu optimieren
-nicht besonders umfangreiche Sprache, jedoch komplexe Merkmale und zahlreiche Fallen (z.B. for-Schleife, darf ken Semikolon folgen)
1.2. objektorientierte Programmiersprache:
- verwirklicht man in C++ mit sogenannten Klassen („class")
- nach folgendem Konzept erdacht:
- Die Vorstellung von Objekten der realen Welt werden in die Anwendungsentwicklung übertragen
- Jedes Objekt ist mit bestimmten Eigenschaften und Verhaltensweisen (Operationen) ausgestattet
- Einige Objekte sind komplexer als andere
- Die einzelnen Objekte können in Klassen eingeteilt werden
- Eine Orange wäre beispielsweise ein Objekt, das zur Klasse der Früchte gehört
Sinn und Zweck der objektorientierten Programmierung ist es Ordnung in große Programme zu bringen.
Durch diese Ordnung, die man durch die objektorientierte Programmierung erhält, werden die Programme für den Programmierer selbst, aber auch für andere (nicht Eingeweihte) leichter verständlich!
1.3. Anwendungsgebiete von C++:
- C++ ist eine allgemein verwendbare Programmiersprache
- hauptsächliches Anwendungsgebiet ist Systemprogrammierung im weitesten Sinne
- Ein neues Betriebssystem, welches vor kurzem auf den Markt kam, unterstützt die Programmierung von Anwendungen indem es Klassen von C++ mit Dokumentation mitliefert. Dieses Betriebssystem heißt BeOS.
- weiterer Einsatz von C++ liegt auch in der Spieleprogrammierung
- Besonders zeitkritische Spiele wie 3D-Shooter (zum Beispiel Quake) profitieren von der hohen Geschwindigkeit von C++.
Große Vorteile:
1. objektorientierte Programmiersprache
2. leichte Übertragfähigkeit in andere Betriebssysteme
3. Kürze, wenig Befehle, abe r ausreichend (Knappheit dieser)
4. Schnelligkeit
5. Übertragbarkeit von C einfach zu realisieren, notwenig für Erweiterungen
6. gutes Verständnis für Leser (übersichtlich)
2. Wichtige Unterschiede zu TP
2.1. C++-Klasse namens iostream
- Die Klasse iostream verwendet streams (Ströme), um grundlegende Ein- /Ausgabeoperationen durchzuführen - beispielsweise die Ausgabe von Text auf dem Bildschirm oder das Einlesen der Benutzereingabe.
- Über den cout-Strom werden Daten an den Standardausgabestrom gesendet
- Über den cin-Strom werden beispielsweise Benutzereingaben eingelesen.
- zwei spezielle Operatoren: Ü bergabeoperator (<<) und Ü bernahmeoperator (>>)
- um nach der Klassendeklaration von iostream zu suchen: #include <iostream.h>
- Compiler-Fehler: Undefined symbol 'cout' (wenn Header-Datei vergessen wurde)
2.2. Die main()-Funktion
Jedes C/C++-Programm muß über eine main()-Funktion verfügen. Diese Funktion stellt den Einstiegspunkt in das Programm dar.
In C++ beginnt ein Codeblock mit einer öffnenden ({) und endet mit einer schließenden geschweiften Klammer (})
2.3. Vergleich von TP und C++
Abbildung in dieser Leseprobe nicht enthalten
3. Variablen
3.1. Variablentypen
Abbildung in dieser Leseprobe nicht enthalten
Es könnten zwei Datentypen gemischt werden, denn C/C++ ist imstande, eine automatische
Umwandlung vorzunehmen. Dies liegt daran, dass die Zahlen umbrochen werden.
3.2. Operatoren
Abbildung in dieser Leseprobe nicht enthalten
Die Variablendekleration kann global sowie auch lokal erfolgen, abhängig vom Gebrauch! Das Schlüsselwort const ermöglicht es, eine Variable als Konstante zu deklarieren.
3.3. Beispielprogramm
Abbildung in dieser Leseprobe nicht enthalten
4. Schleifen
4.1. while-Schleifen
While-Schleifen enthalten nur eine Testbedingung, die zu Beginn eines jeden Durchlaufes neu geprüft wird. Solange die Testbedingung „wahr“ ist, wird die Schleife durchlaufen.
Abbildung in dieser Leseprobe nicht enthalten
4.2. do-while-Schleifen
In der do-while-Schleife erfolgt die Überprüfung der Bedingung am Ende der Schleife.
Abbildung in dieser Leseprobe nicht enthalten
4.3. for-Schleifen
for-Schleifen sind die am häufigsten verwendete Schleife.
Sie benötigt drei Parameter: den Ausgangswert, die Testbedingung, die festlegt, wann die Schleife abbricht, und den Inkrementausdruck.
4.4 Beispielprogramm für eine for-Schleife
Abbildung in dieser Leseprobe nicht enthalten
5. Anweisungen
5.1. break-Anweisung
Sie dient dazu, die Ausführung einer Schleife schon vor der Erfüllung der Testbedingung anzuhalten. Wenn zum Beispiel ein Feld mit Integerwerten nach einer bestimmten Zahl durchsuchen wird , erhält man den Index der gesuchten Zahl am schnellsten, wenn der Suchlauf bei der gefundenen Zahl abgebrochen wird.
5.2. switch-Anweisungen
Die switch-Anweisung kann man auch als erweiterte if-Anweisung betrachten. Sie erlaubt es, in Abhängigkeit von dem Wert eines bestimmten Ausdrucks zu verschiedenen Anweisungsblöcken zu springen. Der erste Teil besteht aus dem Ausdruck, danach folgen die case-Anweisungen, die den Ausdruck auf Gleichheit prüfen.
5.3. Beispielprogramm für switch
Abbildung in dieser Leseprobe nicht enthalten
6. String
6.1. Entstehung von String
Es mag zwar ungewöhnlich erscheinen, aber es gibt in C/C++ keine Unterstützung für String- Variablen. Statt dessen werden Strings in C/C++-Programmen durch Felder des Datentyps char repräsentiert.
Sie könnten zum Beispiel einen String einem Zeichen-Feld wie folgt zuweisen:
- char text[] = "Dies ist ein String"; oder mit Hilfe eines Zeigers:
- char * text = "Dies ist ein String";
6.2. Beispielprogramm
Abbildung in dieser Leseprobe nicht enthalten
7. Funktionen
- Bevor eine Funktion verwendet werden kann, muß sie erst einmal deklariert werden
- Funktionen können eine beliebige Zahl von Parametern aufnehmen, können jedoch nur einen Wert zurückliefern
7.1 Beispielprogramm
Abbildung in dieser Leseprobe nicht enthalten
8. Strukturen
8.1. Definition
- eine Struktur ist eine Sammlung von verwandten Daten in einer einzigen Speichereinheit
- die in einer Struktur aufgeführten Variablen nennt man auch Strukturelement e
- Achtung: das Semikolon nach der schließenden Klammer der Strukturdeklaration
- (fester Bestandteil jeder Struktur- oder Klassendeklaration)
- Instanzen einer Struktur können auch schon bei einer Deklaration erzeugt werden
- (am Ende der Strukturdeklaration zwischen der schließenden Klammer und dem Semikolon, einen (oder mehrere) Variablennamen anführen!)
- mit dem Punktoperator definiert man eine Elementvariable von struct
- gibt eine noch bedeuterende Struktur: die Klasse
Klassen:
- fast gleiche Struktur wie struct (Schlüsselwort: class , Klammerpaar, von Semikolon beendet), bloß kompakter
- ein Anwenderprogramm kann dann mit #include “klassenname.h“ die Klasse benutzen
8.2. Beispiel
Abbildung in dieser Leseprobe nicht enthalten
9. Zeiger
9.1. Beispielprogramm
Abbildung in dieser Leseprobe nicht enthalten
10. Dynamischer Speicher
10.1. Definition
Wenn man zu große Felder, Strukturen oder Klassen einsetzen möchte , wird man auf die dynamische Speicherbelegung von Speicher auf dem Heap zurückgreifen müssen. Dieser Heap umfaßt den freien physikalischen RAM des Computers sowie sämtlichen freien Festplattenspeicher.
Der Speicher kann also lokal (auf dem Stack) oder dynamisch (auf dem Heap) reserviert werden.
Die Speicherreservierung in C++-Programmen erfolgt mit Hilfe des new-Operators. Die Freigabe des Speichers erfolgt dann mit dem Operator delete.
10.2. Beispiele
- char kleinerspeicher80 ; //dafür ist lokaler Speicher noch groß genug
Häufig gestellte Fragen
Was ist C++?
C++ ist eine objektorientierte Programmiersprache, die von Bjarne Stroustrup entwickelt wurde und eine Weiterentwicklung der Programmiersprache C darstellt. Sie dient hauptsächlich der Systemprogrammierung und ermöglicht die Realisierung großer Projekte unter Berücksichtigung von Korrektheit, Robustheit, Erweiterbarkeit und Wiederverwendbarkeit.
Woher stammt C++?
C++ entstand in den AT&T-Bell-Laboratorien. Die Programmiersprache C, die C++ zugrunde liegt, wurde entwickelt, um ein Betriebssystem für den PDP-11-Computer zu entwickeln. C++ erweitert C um objektorientierte Merkmale.
Was sind die Vorteile von C++?
Die Vorteile von C++ sind die objektorientierte Programmierung, die leichte Übertragbarkeit in andere Betriebssysteme, die Knappheit an Befehlen, die Schnelligkeit, die einfache Übertragbarkeit von C sowie ein gutes Verständnis für Leser durch Übersichtlichkeit.
Was ist die iostream-Klasse in C++?
Die iostream-Klasse verwendet Streams, um grundlegende Ein- und Ausgabeoperationen durchzuführen, wie z.B. die Ausgabe von Text auf dem Bildschirm oder das Einlesen der Benutzereingabe. Die Header-Datei <iostream.h> muss included werden, um die Klasse verwenden zu können.
Was ist die main()-Funktion in C++?
Jedes C/C++-Programm benötigt eine main()-Funktion, die den Einstiegspunkt in das Programm darstellt. Der Codeblock wird durch öffnende und schließende geschweifte Klammern definiert.
Welche Variablentypen gibt es in C++?
Die Leseprobe enthält eine Abbildung zu Variablentypen. Variablen können global oder lokal deklariert werden. Mit dem Schlüsselwort 'const' kann eine Variable als Konstante deklariert werden.
Was sind Schleifen in C++?
Es gibt while-Schleifen, do-while-Schleifen und for-Schleifen. While-Schleifen prüfen die Bedingung am Anfang. Do-while-Schleifen prüfen die Bedingung am Ende. For-Schleifen benötigen einen Ausgangswert, eine Testbedingung und einen Inkrementausdruck.
Was sind Anweisungen in C++?
Es gibt die break-Anweisung, um die Ausführung einer Schleife vorzeitig zu beenden, und die switch-Anweisung, die als erweiterte if-Anweisung betrachtet werden kann und in Abhängigkeit von einem Wert zu verschiedenen Anweisungsblöcken springt.
Wie werden Strings in C++ behandelt?
In C++ werden Strings durch Felder des Datentyps char repräsentiert. Ein String kann einem Zeichen-Feld zugewiesen werden, z.B. mit char text[] = "Dies ist ein String"; oder mit Hilfe eines Zeigers char * text = "Dies ist ein String";
Was sind Funktionen in C++?
Funktionen müssen vor ihrer Verwendung deklariert werden. Sie können eine beliebige Anzahl von Parametern aufnehmen, aber nur einen Wert zurückliefern.
Was sind Strukturen (struct) in C++?
Eine Struktur ist eine Sammlung von verwandten Daten in einer einzigen Speichereinheit. Die Variablen in einer Struktur werden als Strukturelemente bezeichnet. Instanzen einer Struktur können auch bei einer Deklaration erzeugt werden. Mit dem Punktoperator greift man auf Elementvariablen zu. Die Klasse ist eine bedeutendere Struktur als struct.
Was sind Zeiger in C++?
Die Leseprobe enthält ein Beispielprogramm zu Zeigern.
Was ist dynamischer Speicher in C++?
Dynamischer Speicher (auf dem Heap) wird verwendet, wenn zu große Felder, Strukturen oder Klassen eingesetzt werden sollen. Die Speicherreservierung erfolgt mit dem new-Operator, die Freigabe mit dem delete-Operator.
- Quote paper
- Anne Baumgraß (Author), 2001, Programmiersprache C++, Munich, GRIN Verlag, https://www.grin.com/document/103551