C++ Sprachvorschau: Häufig gestellte Fragen (FAQ)
Was ist C++ und woher stammt es?
C++ ist eine allgemein verwendbare, objektorientierte Programmiersprache, die von Bjarne Stroustrup in den AT&T-Bell-Laboratorien entwickelt wurde. Sie entstand als Weiterentwicklung von C und beinhaltet C als Teilmenge. Die Entwicklung begann etwa 1983, ausgehend von der Notwendigkeit, ein Betriebssystem für den PDP-11 zu entwickeln und bessere Möglichkeiten für größere Softwareprojekte zu schaffen. Der Name „C++“ kommt vom Inkrement-Operator „++“ in C, der eine Erhöhung um 1 anzeigt und den evolutionären Charakter der Sprache symbolisiert.
Was zeichnet C++ als objektorientierte Programmiersprache aus?
In C++ werden objektorientierte Konzepte mit Klassen („class“) realisiert. Das Konzept basiert darauf, Objekte der realen Welt mit ihren Eigenschaften und Verhaltensweisen (Operationen) in der Programmierung abzubilden. Objekte werden in Klassen eingeteilt. Der Vorteil der objektorientierten Programmierung liegt in der besseren Ordnung und Übersichtlichkeit großer Programme, was zu größerer Verständlichkeit für Entwickler und Nicht-Entwickler führt.
Wo wird C++ eingesetzt?
C++ findet breite Anwendung, vor allem in der Systemprogrammierung. Es wird auch in der Spieleprogrammierung verwendet, insbesondere für zeitkritische Anwendungen wie 3D-Shooter, da es sich durch hohe Geschwindigkeit auszeichnet. Ein Beispiel für ein Betriebssystem, das C++ unterstützt, ist BeOS.
Welche wichtigen Unterschiede gibt es zwischen C++ und TP (wahrscheinlich Turbo Pascal)?
Der Text erwähnt die Klasse iostream in C++, die Streams für Ein- und Ausgabe verwendet (cin und cout mit den Operatoren << und >>). Ein weiterer Unterschied ist die Notwendigkeit einer main()-Funktion als Einstiegspunkt in C/C++ Programme. Ein detaillierterer Vergleich zwischen TP und C++ wird durch eine nicht enthaltene Abbildung dargestellt.
Wie funktionieren Variablen in C++?
C++ unterstützt verschiedene Variablentypen (die Abbildung im Text ist nicht enthalten). Es werden Operatoren (ebenfalls in einer nicht enthaltenen Abbildung dargestellt) zur Manipulation von Variablen verwendet. Die Variablendeklaration kann global oder lokal erfolgen, und das Schlüsselwort „const“ deklariert Konstanten.
Welche Schleifenarten gibt es in C++?
C++ bietet while-Schleifen (Bedingungsprüfung am Anfang), do-while-Schleifen (Bedingungsprüfung am Ende) und for-Schleifen (mit Ausgangswert, Bedingung und Inkrement). (Abbildungen der Schleifenkonstrukte sind im Text nicht enthalten)
Welche Anweisungen gibt es zur Steuerung des Programmablaufs?
Die break-Anweisung beendet eine Schleife vorzeitig. Die switch-Anweisung ermöglicht das Springen zu verschiedenen Anweisungsblöcken abhängig vom Wert eines Ausdrucks. (Eine Abbildung zu switch ist nicht enthalten).
Wie werden Strings in C++ behandelt?
Im Gegensatz zu vielen anderen Sprachen gibt es in C++ keinen eingebauten String-Datentyp. Strings werden stattdessen als Arrays vom Typ char repräsentiert (z.B. `char text[] = "Dies ist ein String";` oder mit Zeigern `char * text = "Dies ist ein String";`).
Wie funktionieren Funktionen in C++?
Funktionen müssen vor ihrem Aufruf deklariert werden. Sie können mehrere Parameter annehmen, aber nur einen Wert zurückgeben. (Eine Abbildung eines Beispielprogramms ist nicht enthalten).
Was sind Strukturen und Klassen in C++?
Strukturen sind Sammlungen verwandter Daten. Klassen ähneln Strukturen, sind aber kompakter und bilden die Grundlage der objektorientierten Programmierung in C++. Strukturelemente werden mit dem Punktoperator angesprochen. (Eine Abbildung eines Beispiels ist nicht enthalten).
Wie funktioniert der dynamische Speicher in C++?
Für größere Datenmengen wird dynamische Speicherverwaltung auf dem Heap verwendet. Der new-Operator reserviert Speicher, der mit delete wieder freigegeben werden muss. Lokaler Speicher wird auf dem Stack reserviert.
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
char* grosserspeicher = new char4096 ; //dafür (4096) dynamischer Speicher gee
- Arbeit zitieren
- Anne Baumgraß (Autor:in), 2001, Programmiersprache C++, München, GRIN Verlag, https://www.grin.com/document/103551