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
-
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen. -
Laden Sie Ihre eigenen Arbeiten hoch! Geld verdienen und iPhone X gewinnen.