C++ Programmieren Grundlagen
Einleitung
Dieses Seminar vermittelt die fundamentalen Konzepte der Programmiersprache C++. Teilnehmer erlernen die prozedurale Syntax, den Umgang mit der Speicherverwaltung (Zeiger und Referenzen) sowie den Einstieg in die objektorientierte Programmierung (OOP). Ziel ist es, ein solides Verständnis für die Entwicklung robuster und performanter C++ Anwendungen zu schaffen.
Zielgruppe / Voraussetzung
- Zielgruppe: Angehende Softwareentwickler, Systemprogrammierer, Ingenieure und Umsteiger aus anderen Programmiersprachen.
- Voraussetzung: Allgemeines technisches Verständnis. Erste Programmiererfahrungen (z. B. in Skriptsprachen) sind hilfreich, aber nicht zwingend erforderlich.
Detaillierte Inhalte
Einführung und Entwicklungsumgebung
- Historie und Eigenschaften von C++ (Kompilierung vs. Interpretation)
- Der Build-Prozess: Präprozessor, Compiler, Linker
- Einrichtung der Entwicklungsumgebung (z. B. Visual Studio, CLion, GCC/Clang)
- Aufbau eines C++ Programms: Die
main()-Funktion und Namespaces (std) - Standard-Ein-/Ausgabe mit Streams (
std::cout,std::cin,std::endl)
Variablen, Datentypen und Operatoren
- Primitive Datentypen (
int,char,float,double,bool) - Typ-Modifizierer und Konstanten (
const,constexpr) - Automatische Typableitung mit
auto - Operatoren: Arithmetisch, relational, logisch und bitweise
- Typumwandlung (Type Casting):
static_castim Vergleich zum C-Style Cast
Kontrollstrukturen und Ablaufsteuerung
- Bedingte Anweisungen:
if,else if,else - Mehrfachverzweigungen: Das
switch-Statement - Schleifenkonstrukte:
while,do-while,for - Bereichsbasierte Schleifen (Range-based for-loop)
- Schleifensteuerung (
break,continue)
Funktionen und Modularisierung
- Definition, Deklaration und Funktionsprototypen
- Parameterübergabe: Call-by-Value vs. Call-by-Reference
- Rückgabewerte und der Datentyp
void - Funktionsüberladung (Function Overloading)
- Inline-Funktionen zur Performance-Optimierung
- Standardwerte (Default-Parameter) für Funktionen
Speicherverwaltung, Zeiger und Referenzen
- Konzept des Arbeitsspeichers: Stack vs. Heap
- Zeiger (Pointers): Deklaration, Adressoperator (
&) und Dereferenzierung (*) - Referenzen (
&): Unterschiede und Vorteile gegenüber Zeigern - Dynamische Speicherverwaltung:
newunddelete - Fehlervermeidung: Memory Leaks und Einführung in Smart Pointers (
std::unique_ptr)
Komplexe Datenstrukturen und Strings
- Statische Arrays (C-Style) vs.
std::array - Dynamische Arrays: Einführung in
std::vector - Zeichenketten: C-Strings (
char[]) vs. diestd::string-Klasse - Gruppierung von Daten mit Strukturen (
struct) - Aufzählungstypen:
enumund die typsichere Varianteenum class
Objektorientierte Programmierung (OOP) – Einstieg
- Klassen und Objekte definieren
- Datenkapselung und Sichtbarkeits-Modifizierer (
public,private,protected) - Konstruktoren (Standard, Parametrisiert) und Destruktoren
- Initialisierungslisten (Member Initializer Lists)
- Trennung von Deklaration (Header-Dateien
.h/.hpp) und Implementierung (.cpp)
Fehlerbehandlung (Exception Handling)
- Konzepte der Ausnahmebehandlung
try,catchundthrowBlöcke implementieren- Standard-Exceptions der C++ Bibliothek (
<stdexcept>) nutzen