C++-Tutorial
Dieses Tutorial bietet einen umfassenden, praxisnahen Einstieg in C++. Es richtet sich an erwachsene Lernende, die gründlich und strukturiert die Sprache C++ von Grund auf lernen oder ihr Wissen vertiefen möchten.
Inhaltsverzeichnis
- Was ist C++?
- Installation und erste Schritte
- Grundlagen: Syntax, Variablen & Datentypen
- Einfache Ein- und Ausgabe
- Operatoren und Rechnen
- Kontrollstrukturen: Bedingungen und Schleifen
- Funktionen und Argumente
- Arrays und Strings
- Zeiger und Referenzen
- Strukturen und Enums
- Klassen und Objektorientierte Programmierung
- Templates
- Standardbibliothek (STL)
- Dateien lesen und schreiben
- Fehlerbehandlung
- Praxisprojekte und Übungen
- Empfohlene Ressourcen
1. Was ist C++?
C++ ist eine leistungsfähige, weit verbreitete Programmiersprache, die als Erweiterung von C entwickelt wurde. Sie wird in Systemprogrammierung, Spieleentwicklung, eingebetteten Systemen, wissenschaftlicher Software und vielen weiteren Bereichen eingesetzt.
C++ unterstützt prozedurale, objektorientierte und generische Programmierung.
Typische Anwendungen: Spiele, Betriebssysteme, Datenbanken, Echtzeitsysteme, Simulationen.
2. Installation und erste Schritte
- Compiler: GCC (g++), Clang, Microsoft Visual C++, MinGW, Xcode
- IDE: Code::Blocks, Visual Studio, Eclipse
- Online: LearnCpp.com, W3Schools, Tutorialspoint
Erstes Programm („Hello, World!“)
#include <iostream>
using namespace std;
int main() {
cout << "Hello, World!" << endl;
return 0;
}
3. Grundlagen: Syntax, Variablen & Datentypen
Datentypen
Typ | Beispiel | Beschreibung |
---|---|---|
int | int a = 5; | Ganzzahl |
double | double pi = 3.14; | Gleitkommazahl |
char | char c = 'A'; | Einzelnes Zeichen |
bool | bool ok = true; | Wahr/Falsch |
string | string name = "Anna"; | Text (ab C++11, #include <string> ) |
#include <iostream>
#include <string>
using namespace std;
int main() {
int alter = 30;
double preis = 19.99;
char zeichen = 'Z';
bool fertig = false;
string name = "Maria";
cout << name << " ist " << alter << " Jahre alt." << endl;
return 0;
}
4. Einfache Ein- und Ausgabe
#include <iostream>
using namespace std;
int main() {
string name;
cout << "Wie heißen Sie? ";
cin >> name;
cout << "Hallo, " << name << "!" << endl;
return 0;
}
cin liest Eingaben, cout gibt aus. Für mehrere Wörter als Eingabe verwende getline(cin, name);
.
5. Operatoren und Rechnen
int a = 7, b = 3;
cout << a + b << endl; // Addition
cout << a - b << endl; // Subtraktion
cout << a * b << endl; // Multiplikation
cout << a / b << endl; // Ganzzahl-Division
cout << a % b << endl; // Rest (Modulo)
Vergleichsoperatoren: ==
, !=
, <
, >
, <=
, >=
Logische Operatoren: &&
(und), ||
(oder), !
(nicht)
6. Kontrollstrukturen: Bedingungen und Schleifen
Bedingungen (if, else if, else)
int zahl;
cout << "Geben Sie eine Zahl ein: ";
cin >> zahl;
if (zahl > 0) {
cout << "Positiv" << endl;
} else if (zahl == 0) {
cout << "Null" << endl;
} else {
cout << "Negativ" << endl;
}
Schleifen
for-Schleife
for (int i = 1; i <= 10; i++) {
cout << i << " ";
}
while-Schleife
int i = 1;
while (i <= 10) {
cout << i << " ";
i++;
}
do-while-Schleife
int i = 1;
do {
cout << i << " ";
i++;
} while (i <= 10);
break und continue
for (int i = 0; i < 10; i++) {
if (i == 5) break; // Schleife beenden
if (i % 2 == 0) continue; // nächsten Durchlauf
cout << i << " ";
}
7. Funktionen und Argumente
int addiere(int a, int b) {
return a + b;
}
int main() {
int summe = addiere(5, 7);
cout << "Summe: " << summe << endl;
return 0;
}
Funktionen mit Standardwerten
int multipliziere(int a, int b = 2) {
return a * b;
}
Funktionsprototypen
int quadrat(int x); // Prototyp
int main() {
cout << quadrat(4) << endl;
return 0;
}
int quadrat(int x) {
return x * x;
}
8. Arrays und Strings
Arrays
int zahlen[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
cout << zahlen[i] << " ";
}
Strings
#include <string>
string text = "Hallo";
cout << text.length() << endl;
cout << text.substr(0, 3) << endl;
9. Zeiger und Referenzen
Zeiger
int a = 5;
int* ptr = &a; // Zeiger auf a
cout << *ptr << endl; // Dereferenzierung (Wert von a)
Referenzen
void verdoppeln(int &x) {
x = x * 2;
}
int main() {
int zahl = 10;
verdoppeln(zahl);
cout << zahl << endl; // 20
return 0;
}
Dynamische Speicherverwaltung
int* arr = new int[10]; // Speicher reservieren
arr[0] = 42;
delete[] arr; // Speicher wieder freigeben
10. Strukturen und Enums
Strukturen
struct Person {
string name;
int alter;
};
Person p1;
p1.name = "Anna";
p1.alter = 28;
cout << p1.name << " (" << p1.alter << ")" << endl;
Enums
enum Wochentag { Mo, Di, Mi, Do, Fr, Sa, So };
Wochentag heute = Mi;
if (heute == Mi) cout << "Es ist Mittwoch." << endl;
11. Klassen und Objektorientierte Programmierung
class Auto {
public:
string marke;
int baujahr;
void hupen() {
cout << "Hup Hup!" << endl;
}
};
int main() {
Auto meinAuto;
meinAuto.marke = "VW";
meinAuto.baujahr = 2020;
meinAuto.hupen();
return 0;
}
Konstruktoren und Destruktoren
class Auto {
public:
Auto() { cout << "Auto gebaut!" << endl; }
~Auto() { cout << "Auto verschrottet!" << endl; }
};
Vererbung
class Fahrzeug {
public:
void fahren() { cout << "Fährt!" << endl; }
};
class Auto : public Fahrzeug {
public:
void hupen() { cout << "Hup Hup!" << endl; }
};
Auto a;
a.fahren();
a.hupen();
Polymorphismus
class Tier {
public:
virtual void sprich() { cout << "Ein Tier macht ein Geräusch." << endl; }
};
class Hund : public Tier {
public:
void sprich() override { cout << "Wuff!" << endl; }
};
Tier* t = new Hund();
t->sprich(); // "Wuff!"
delete t;
Freundfunktionen und -klassen
class Geheimnis {
private:
int geheim = 42;
friend void zeigeGeheimnis(const Geheimnis& g);
};
void zeigeGeheimnis(const Geheimnis& g) {
cout << g.geheim << endl;
}
12. Templates
template <typename T>
T maximum(T a, T b) {
return (a > b) ? a : b;
}
int main() {
cout << maximum(4, 7) << endl;
cout << maximum(3.5, 2.1) << endl;
return 0;
}
Templates ermöglichen generische Programmierung (z.B. für Listen beliebigen Typs).
13. Standardbibliothek (STL)
- Vektoren: Dynamische Arrays (
#include <vector>
) - Listen: Doppelt verkettete Listen (
#include <list>
) - Maps: Assoziative Arrays (
#include <map>
) - Sets: Mengen (
#include <set>
) - Algorithmen:
#include <algorithm>
(z.B.sort()
,find()
)
#include <vector>
#include <algorithm>
vector<int> zahlen = {4, 2, 8, 1};
sort(zahlen.begin(), zahlen.end());
for (int x : zahlen) cout << x << " ";
14. Dateien lesen und schreiben
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream datei("beispiel.txt");
datei << "Hallo Datei!" << endl;
datei.close();
ifstream eingabe("beispiel.txt");
string zeile;
while (getline(eingabe, zeile)) {
cout << zeile << endl;
}
eingabe.close();
return 0;
}
15. Fehlerbehandlung
try {
throw runtime_error("Ein Fehler ist aufgetreten!");
} catch (const exception& e) {
cout << "Fehler: " << e.what() << endl;
}
Fehler werden mit throw
ausgelöst und mit catch
behandelt. Die Standardbibliothek bietet viele Ausnahme-Typen (std::exception
und abgeleitete Klassen).
16. Praxisprojekte und Übungen
- Schreibe einen Rechner für Grundrechenarten.
- Erstelle ein Programm, das Namen sortiert und ausgibt.
- Implementiere eine einfache Kontaktverwaltung mit Datei-Speicherung.
- Simuliere ein Lotto-Spiel.
- Baue ein kleines Text-Adventure.
- Erstelle eine Klasse „Bruch“ mit Operatorüberladung für +, -, *, /.
17. Empfohlene Ressourcen
- LearnCpp.com – Sehr ausführliches, modernes Online-Tutorial
- W3Schools C++ Tutorial – Interaktiv und einsteigerfreundlich
- Tutorialspoint C++ – Kompakt und umfassend
- Learn-Cpp.org – Interaktives Lernen im Browser
- Cprogramming.com – Viele Beispiele und Tipps
- cppreference.com – Referenz für Sprache und Standardbibliothek
Viel Erfolg beim Lernen und Programmieren mit C++!