Die verschiedenen Programmierparadigmen von C++; Helmke WS 2025/26
Fakultät für Informatik

kasten_gr.gif (78 Byte) Die verschiedenen Programmierparadigmen von C++

10px
2



Prof. Dr.-Ing. Hartmut Helmke
Deutsches Zentrum für Luft-
und Raumfahrt e.V. (DLR)
Institut für Flugführung
Abteilung Lotsenassistenzsysteme
Lilienthalplatz 7
38108 Braunschweig
E-Mail: Hartmut.Helmke@DLR.DE
Tel. 0531 / 295-2599

Vorlesung "Die verschiedenen Programmierparadigmen von C++" WS 2025/26.
Mein 40. Semester (Vorlesung) an der Ostfalia

Eine kurze (unverbindliche) E-Mail an Hartmut.Helmke@dlr.de, dass Sie planen, an der Veranstaltung teilzunehmen, würde mir die Vorbereitung (vor der Veranstaltung) sehr erleichtern.

Das Wahlpflichtfach "Die verschiedenen Programmierparadigmen von C++" gibt eine Einführung in die Programmiersprachen C und C++, die (immer noch) zud en weltweit am häufigsten verwendeten Programmiersprachen zählen; Quelle Tiobe-Index Seit Juli 2023 liegt C++ sogar vor C, was nur 2021 in der langen Geschichte von C und C++ der Fall war. Seit Mai 2023 lag C++ jedenfalls erstmals seit 2000 wieder vor Java. Man muss aber auch sagen, dass Python seit 2021 die Nr. 1 ist. (letzter Zugriff 26.07.2025) und jetzt auch unangefochten.
Das Schwergewicht der Vorlesung wird eindeutig auf C++ liegen.
Die Vorlesung ist freitags in den ersten beiden Blöcke geplant. Sie beginnt am 26. September 2025, um 8:15 Uhr (Raum 181) mit einer Präsenzveranstaltung. Die Vorlesungen am 3. und 31. Oktober entfallen feiertags bedingt.
Im Folgenden sehen Sie, was aus heutiger Sicht geplant ist. Sehen Sie die folgende Gliederung als einen Vorschlag zur Diskussion an.
Die aktuell geplanten Termine sehen Sie im Folgenden. Details in den nächsten Wochen.

Die Zahlen in Klammern geben das Datum der letzten Aktualisierung an.
Wir beginnen sofort mit einer eigentlich sehr einfachen Aufgabe.
Gegeben eine ASCII-Datei mit einem Text (z.B. die Bibel). Wir ermitteln für jedes Wort, das aus mindestens zwei Zeichen besteht und mit einem Buchstaben beginnt, wie oft es vorkommt und geben die Wörte mit mindestens 2 Zeichen und die Häufigkeit ihres Auftretens in alphabetischer Reihenfolge auf dem Bildschirm aus. Sie sehen hier den C++-Programm-Code (13.07.2024).
Am Semesterende sollten Sie den Code nicht nur verstehen, sondern problemlos auch ohne Hilfe selbst implementieren können.

Gute Kenntnisse in Java sind sehr hilfreich, aber nicht zwingend erforderlich. Zumindest in den ersten Wochen werden die jeweils neu eingeführten C/C++-Sprachelemente den entsprechenden Elementen von Java gegenübergestellt. Kenntnisse von C (zumindest Grundkenntnisse, z.B aus der Vorlesung "Programmieren in C" von Prof. Justen) sind zumindest nicht schädlich.
1. Woche Fr. 26.09.2025 zu den Unterlagen
2. Woche keine Vorlesung am 03.10.2025
3. Woche Fr. 10.10, 2025 zu den Unterlagen
Die erste Herausforderung wird das Zeigermodell von C/C++ sein; u.a. sehen wir hier die Grundelemente der Virenprogrammierung und vor allem durch welche Maßnahmen eigene Programme weniger anfällig für Viren werden.
4. Woche Fr. 17.10.2025 zu den Unterlagen
5. Woche Fr. 24.10.2025 zu den Unterlagen
6. Woche keine Vorlesung am 31.10.2025
Beim Kopieren und Erzeugen von Objekten hat der Entwickler aber viel mehr Möglichkeiten (Fehler zu begehen, was insbesondere am (meist) fehlenden Garbage Collector liegt).
7. Woche Fr. 07.11.2025 zu den Unterlagen
Beim Kopieren und Erzeugen von Objekten hat der Entwickler aber viel mehr Möglichkeiten als in C (Fehler zu begehen), was insbesondere am (meist) fehlenden Garbage Collector liegt. Die systematische Definition von eigenen Kopierkonstruktoren und Zuweisungsoperatoren kann hier die Fehlerzahl nochmals reduzieren.
8. Woche Fr. 14.11.2025 zu den Unterlagen
9. Woche Fr. 21.11.2025 zu den Unterlagen
10. Woche Fr. 28.11.2025 zu den Unterlagen
Im dritten Teil lernen wir die generische Programmierung (Template-Programmierung) mit C++ kennen.
11. Woche Fr. 05.12.2025 zu den Unterlagen Freitag
Im vierten Teil werden wir in die Programmierung mit der STL (Standard Template Library) einsteigen.
12. Woche Fr. 12.12.2025 zu den Unterlagen Freitag
Zum Abschluss folgt nochmals eine Zusammenfassung als Vorbereitung auf die Klausur im Januar 2025 Durch Teilnahme an der Abschlussaufgabe und Teilnahme an den Tests können Sie erste Punkte für die Klausur am Semesterende sammeln.
13. Woche Fr. 19.12.2025 zu den Unterlagen Freitag



Vorlesungsmaterialien

Die Zahlen in Klammern geben das Datum der letzten Aktualisierung an. Dateien von 2024 und früher bitte ignorieren. Sie sind in der Regel hier noch gar nicht verfügbar.
Zur Emulation von Clicker wird in der Vorlesung der folgende BBB-Link verwendet:Link zur Clicker-Emulation mit BBB (29.08.2025).

Allgemein

Folienkopien

Inhalt

Infos / Organisatorisches (02.08.2025) Kurze Übersicht, was in der Vorlesung geplant ist und wie Übungen und Vorlesung zusammenhängen und wie sich aus beiden die Gesamtnote ergibt.
Lehrbücher zu C++ (2023 Nichts Neues
Skript (2023, noch aktuell 2007 wurden in Zusmamenarbeit mit Prof. Isernhagen und Prof. Höppner ein Lehrbuch zur Programmierung erstellt, welches C++ und Java gegenüberstellt. Die wesentlichen Seiten aus diesem Lehrbuch sind hier als pdf-Dokument zur Verfügung gestellt. Das Lehrbuch liegt auch noch in der Bibliothek vor. Die Vorlesung baut überwiegend auf dem Standard C++-11 und folgende auf. Die letzten 4 Vorlesungen werden daher nicht mehr von diesem Skript abgedeckt.


1. Vorlesung; Fr. 26.09.2025

Die erste Woche beginnt mit einer Präsenz-Doppelvorlesung im 1. und 2. Block (Raum 181)

Folienkopien

Inhalt

Einleitung (01.09.2025) Übersicht über die gesamte Vorlesung und die zugehörigen Übungen
Worte in Datei zählen (01.09.2025) Ein erstes C++-Programm, das die Müchtigkeit von C++, aber auch die Herausforderungen an einem 30-Zeilen Programm zeigt. Ohne sehe viele vorherige C++-Kenntnisse werden Sie das Programm nicht komplett verstehen. Aber Mitte November werden Sie jedoch die meisten Elementen verstehen und auch selber anwenden können.
Datentypen (01.09.2025) Die Grunddatentypen von C++ wie short, int, double, ... werden vorgestellt. Sie sollten die Typen aus am Bachelorstudium (aus einer anderen Sprache) bereits kennen.
Steueranweisungen (01.09.2025) Die verschiedenen Steueranweisungen wie if, switch, Schleifen werden am Beispiel von C++ nochmals vorgestellt. Insbesondere wird an ganz kurz Programmen gezeigt, dass man trotz langjöhriger Programmiererfahrung noch vieles falsch machen kann. Tricks und Sicherheitsnetze, die auch för andere Programmiersprachen helfen können, werden vorgestellt.

Sonstige Materialien

Inhalt

Visual Studios 2022 Comm Edition installieren und nutzen (01.09.2025) Links zum Bezug von Visual Studio 2022 sind beschrieben. Die Links sind noch aktuell. Die Beschreibung ist von 2022.
Hilfen zu speziellen Problemen mit Visual Studio und C++ (01.09.2025) Der Foliensatz gibt Antworten zu ein paar Problemen, die in Zusammenhang mit Visual Studio während der vergangenen Semester aufgetreten sind.
Themen sind z.B.: Compilerwarnungen an- und abschalten, Konsolen-Fenster am Programmende NICHT schließen etc. Der Foliensatz wird wärend des Semester um weiter Hilfen ergänzt.
Einführung: Benutzung von Visual Studio (01.09.2025) In der Vorlesung wird gezeigt, wie man mit Visual Studio C++ ein Projekt anlegt, unm eine erste hello-world-Anwendung zu implementieren. Hinzufü von Dateien, Starten des Debuggers, durchfürung einer Debugging-Sitzung etc. werden skizziert. Die zugehörigen Folienkopien zum Nachlesen finden sich hier.
Probleme bei der Arbeit im Team (06.08.2023) Ein imer noch lesenswerter Artikel aus dem Jahr 2004, wie man die Herausforderungen der Zusammenarbeit in einem studentischen Team frühzeitig adressieren kann, bevor alle Teammitglieder nur noch gereizt sind.

Programm-Code

Inhalt

Zählen der Worte einer Datei (2025) zip-Verzeichnis bestehend aus Projektdateien für Visual Studio 2022 sowie Programmcode zum Zählen wie oft bestimmte Worte in einer Datei vorkommen.
Zählen der C++-Schlüsselworte einer Datei (2025) zip-Verzeichnis bestehend aus Projektdateien für Visual Studio 2022 sowie Programmcode zum Zählen wie oft vorgegebene Schlässelworte von Cpp in einer Datei vorkommen.


Ab der zweiten Vorlesung werden in den beiden Blöcken jeweils Übungsaufgaben integriert, die Sie selbstständig an Ihrem Rechner lösen.
Es wird erwartet, dass Sie bis zur zweiten Woche spütestens aber zur zweiten Vorlesung über eine Visual Studio-Installation (am besten VS 2022) auf Ihrem Rechner verfügen. Andere Entwicklungsumgebungen können auch verwendet werden. Ich kann allerdings wenig unterstützen. Bevorzugt ist VS 2022. Diese Entwicklungsumgebung kann man bei Microsoft kostenlos herunterladen.


2. Vorlesung; Fr. 10.10.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (05.10.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Funktionen (01.09.2025) Funktionen in C++ werden vorgestellt. Berücksichtigt werden insbesondere (i) Werte- und Referenzparameter, (ii) Überladen von Funktionen, (iii) inline-Funktionen, (iv) Funktionen mit Default-Parametern
benutzerdefinierte Datenstrukturen (01.09.2025) Das Konzept des Records bzw. des struct wird vorgestellt. Es entspricht einer Klasse, in der alles public ist.

Programm-Code

Inhalt

Ausgangscode für Struktur Vektor nach Test-first (11.10.2025)
Lösung für Struktur Vektor nach Test-first (11.10.2025) In der Vorlesung wird die Struktur Vektor in C++ vom Dozenten entwickelt. Hierbei werden verschiedene Probleme und Konzepte vorgestellt (Test-first, Referenzparameter). Es wird nicht exakt der Mustercode, wie er in der Vorlesung implementiert wurde, ins zip-Verzeichnis eingetragen, sondern Mustercode aus den vorgegangenen Semestern.


3. Vorlesung; Fr. 17.10.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (11.10.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Aufteilung von Code auf Dateien (01.09.2025) Die Aufteilung von Code auf Header- und Source-Dateien wird vorgestellt. Include-Wächter werden behandelt. Außerdem wird auf das Konzept des Namespaces eingegangen.
Motivation von Zeigern und Heap-Speicher (01.09.2025) Wie kann man Vektoren beliebiger Größe ermöglichen, deren Größe man auch noch zur Laufzeit verändern kann? Zeiger, Adressoperator, new/delete, Zeiger- und Wertesemantik

Programm-Code

Inhalt

Ausgangscode für Aufteilung von Vektor auf Dateien (11.10.2025)
Lösung fürVisual Studio 2022, (11.10.2025) CMake (11.10.2025) In der Vorlesung wird der Code der Struktur Vektor inkl. der Tests vom Dozenten auf Header- und Quellcodedateien aufgeteilt. Hierbei werden Compiler, Linker und Präprozessor erklärt. Außerdem werden daran Include-Wächter erklärt.
Ausgangscode für dynamischen Vektoren (11.10.2025)
Lösung für VS 2022, (11.10.2025) CMake (11.10.2025) In der Vorlesung wird dem Vektor der festen Größ von maximal 10 Elementen eine Struktur implementiert, die sogar zur Laufzeit ihre Größ dynamsich anpassen kann.
Code für farbliche Bildschirmausgaben oder als pdf-Datei (29.03.2023) Code, der unter Windows zur farblichen Ausgabe in einem DOS-Fenster genutzt werden kann. Er kann auch unter Linux compiliert werden, hat dort aber keinen Effekt.


4. Vorlesung; Fr. 24.10.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (23.10.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Übung mit 30/40 belegen (11.10.2025) Gemeinsame Übung, um nochmals das Konzept von Zeigern und Referenzen und insbesondere das eigene Wissen darüber zu hinterfragen. Um sich Tipparbeit in der Vorlesung zu ersparen, finden Sie Code-Teile zum Download unter dem folgenden Links: VS 2022 (12.10.2025) bzw. CMake (12.10.2025)
Was man noch zu Zeigern wissen sollte (25.10.2025) Der Foliensatz enth&äuml;lt weitere Informationen, die im Zusammenhang mit Zeigern nÜtzlich sind. Aspekte sind z.B.: Zugriff auf Attribute mit Pfeil-Operator; Zeigern auf lokale Speicheradressen; nicht-typisierte Zeiger (void*); const_cast-Operator; "const T*" versus "T* const" versus "const T* const"; Zeiger und Arrays; Drei Folien zu const-Zeigern wurden nach der Vorlesung ergänzt.
Weniger Wichtiges zu Zeigern (11.10.2025) Der Foliensatz enth&äuml;lt weitere Informationen, die im Zusammenhang mit Zeigern in vorherigen Semestern angesprochen wurden. Nett zu wissen, aber jetzt nicht Klausur-relevant (ich hoffe es). Aspekte sind z.B.: Implementierung eines generischen copy mit nicht-typisierten Zeigern; reinterpret_cast-Operator; Speicherbedarf von Zeigern; Komplexe Datenstrukturen wie "char* (*f[10])(int, int (*f1)(long, long))" mit Zeigern; Rechnen mit Zeigern und Adressen; Datentyp ptrdiff_t; C-Zeichenketten mit char* realisiert; typedef und Zeiger; Mehrdimensionale Arrays;
Selbststudium: Aufgabensammlung zu Referenzen, Werten Zeigern (11.10.2025) Wann wird ein Stern (*) vor eine Variable gesetzt. Wenn wird der Adressoperator (&) gebraucht? Hier finden Sie verschiedenste Kombinationen von & sowie * bzw. normale Variablen. Testen Sie Ihr Wissen. Die Lösungen sind jeweils angegeben. Einzelne Aufgaben werden auch in einer der Vorlesungen behandelt, aber Sie wissen selbst am besten, wo das Verstänis noch etwas hakt.

Programm-Code

Inhalt

VS2022 (12.10.2025) bzw. CMake (12.10.2025)
Lösungscode für die Übung, eine Zeigervariable mit einer Heapadresse in einer Funktion zu belegen (mit3040Belegen)


5. Vorlesung; Fr. 07.11.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung 25.10.2025 Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Klassenkonzept (12.10.2025) Ab hier wird systematisch die Programmierung mit abstrakten Datentypen eingeführt. Begonnen wird mit dem Klassenkonzept am Beispiel der schon bekannten Klasse Vektor.
Vorgestellt wird: Begriff "abstraktr Datentyp"; Zugriffsrechte von private, public, protected; Konstruktoren und Destruktoren; Anlegen von Instanzen (und Entfernen) auf dem Heap; "Missbrauch" von Konstruktor-/Destruktor-Funktionalität zum Funktions-Logging
Klasse vector (12.10.2025) Die Klasse std::vecor verwenden wir zwar schon seit der ersten Vorlesung. Hier wird die Klasse nochmals etwas systematischer vorgestellt. Außerdem wird die Klasse std::array vorgestellt, die bzgl. Effizienz dem C-Vektor entspricht, aber noch einige weitere Funktionalitäten bereit stellt.
Klasse string (12.10.2025) Die Klasse std::string verwenden wir zwar schon seit der ersten Vorlesung. Hier wird die Klasse nochmals etwas systematischer vorgestellt. Wennn man alle Methoden der Klassen benutzen will, findet man im Internet oder in den dicken Büchern natürlich noch viel mehr Informationen oder auch direkt im C++-Standard.

Programm-Code

Inhalt

Ausgangscode: Vektor als Klasse (12.10.2025) Ausgangscode: dynamischer Vektor als struct realisiert. Keine Verwendung von Konstruktoren und Destruktoren
Lösung für Vektor als Klasse VS 2022, (12.10.2025) CMake (11.10.2025) Bisher ist der Vektor lediglich modular, aber noch nicht mit dem Klassenkonzept von C++ implementiert. Dieses wird im Rahmen des hier vorgestellten Codes nun nachgeholt.


6. Vorlesung; Fr. 14.11.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (13.11.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Tiefe und flache Kopie (13.11.2025) Tiefes und flaches Kopieren von Instanzen wird vorgestellt und welche Probleme dieses in C++ verursachen kann, wenn Klassen selber Heap-Speicher benötigen. Lösungen sind der Kopier-Konstruktor und der selbstdefinierte Zuweisungsoperator (operator=) einer Klasse. Am 13.11. wurde nur der Verweis auf meine Homepage, wo der Code zu finden ist, angepasst.
LogTrace-Bibliothek (25.10.2025) Professionelle Variante von FunktionLog zum Protokollieren, wann eine Funktion/Methode betreten und wieder verlassen wird.
Parameterübergabe an Konstruktoren (13.11.2025) Arrays und Standardkonstruktoren, Default-Werte von Attributen, Delegierender Konstruktor: Die Konzepte werden anhand von Clickeraufgaben mit Lösungen vorgestellt. Insgesamt handelt es sich keine wesentlichen Konzepte von C++, aber eben nett zu wissen. Daher zum Selbststudium.
Weiteres zu Klassen (13.11.2025) Weitere nötzliche Dinge im Zusammenhang mit Klassen zum Selbststudium: Keyword mutable, statische Klassenelemente, Vorschlag von Namenskonventionen für Variablen, Argumente und Attribute, const und constexpr,
Überladen von Operatoren (13.11.2025) Was sind Operatoren? abstraktes Beispiel, Operatoren als globale Funktion oder als Klassenmethoden, das friend-Konzept, Wann wird eine globale Funktion und wann eine als Klassenmethode als Operator gewählt?

Programm-Code

Inhalt

Ausgangscode: Vektor ohne tiefes Kopieren VS2022 (25.10.2025) CMake (25.10.2025) Klasse Vektor mit der Funktion MacheNix, die eigentlich nichts macht oder doch zum Absturz führt; Motivation von tiefen Kopien
Lösung: Vektor mit minimaler Standardschnittstelle VS2022 (25.10.2025) CMake (25.10.2025) Klasse Vector ist um Kopierkonstruktur und Zuweisungsoperator samt Tests erweitert.
Ausgangscode: für Adjazenzmatrix ohne tiefes Kopieren VS2022 (25.10.2025) CMake (25.10.2025) Entsprechend der Klasse Vektor wird nun die Klasse DynVorgangsArray mit der Funktion MacheNix verwendet, die eigentlich nichts macht oder doch zum Absturz führt; Motivation von tiefen Kopien. Eine Klasse wird in der Vorlesung vorgeführt, die andere Klasse kann dann zum eigenen Üben verwendet werden.
Lösung: für Adjazenzmatrix ohne tiefes Kopieren VS2022 (25.10.2025) CMake (25.10.2025) Klasse DynVorgangsArray ist um Kopierkonstruktur und Zuweisungsoperator samt Tests erweitert.
Ausgangscode: Vektor ohne Operatoren VS2022 (13.11.2025) Klasse Vektor, aber noch ohne Operatoren bis auf operator=
Lösung: Vektor mit Operatoren VS2022 (13.11.2025) Klasse Vektor mit Operatoren
Ausgangscode: Klasse Matrix ohne Operatoren VS2022 (13.11.2025) Klasse Matrix, aber noch ohne Operatoren


7. Vorlesung; Fr. 21.11.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (20.11.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Polymorphie (13.11.2025) virtuelle Methoden, dynamisches Binden, virtueller Destruktor, abstrakte Klassen
Templates (13.11.2025) Einfürung in die Programmierung mit Schablonenklassen und Schablonenfunktionen

Programm-Code

Inhalt

Ausgangscode Polymorphie VS2022 (22.11.2025) Klassenhierarchie bestehend aus Mitarbeiter und Chef, die die Möglichkeiten und Probleme beim Überladen von Methoden aufzeigt. Am 22.11 um Folien zu final ergänzt
Ausgangscode: Vektor ohne Templates VS2022 (13.11.2025) Klasse Vektor, aber noch nicht als generische Klasse
Lösung: Vektor mit Templates VS2022 (13.11.2025) Klasse Vektor mit Schablonenmethoden
Ausgangscode: Matrix ohne Templates VS2022 (13.11.2025) Klasse Matrix, aber noch nicht als generische Klasse
Lösung: Matrix mit Templates VS2022 (13.11.2025) Klasse Matrix mit Schablonenmethoden


8. Vorlesung; Fr. 28.11.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (22.11.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Einführung STL (22.11.2025) Programmieraufgabe zur Verwaltung der Komponenten eines Computers und deren Lieferanten. Hieran wird die Programmierung mit der STL (=Standard Template Libarary) eingeführt. Themen sind Initialisierung von Klasseninstanzen im Konstruktor, Iteratoren, Algorithmus find

Programm-Code

Inhalt

Ausgangscode: Übung Iteratoren VS2022 (22.11.2025) _CMake (22.11.2025) Klassen Lieferant und Komponente mit Tests und teilweise implementierten Methoden. Aktuell scheitert der Test containerTest noch, weil die Methode Komponente::hatLieferant nur eine dummy-Implementierung aufweist. Implementieren Sie die Methode mit Hilfe einer einfachen for-Schleife. Für die Schnellen: Schauen Sie sich die folgenden Folien an, und versuchen Sie eine alternative Implementierung unter Nutzung von Iteratoren.
Lösung: Übung Iteratoren VS2022 (22.11.2025) Implementierung der Methode Komponente::hatLieferant mit zwei laufenden Tests


9. Vorlesung; Fr. 05.12.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (29.11.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Clicker-Fragen (29.11.2025) Clicker-Fragen zur Wiederholung von vorhergehenden Vorlesungen
STL-Container (29.11.2025) lineare Container wie list, vector, array, deque assoziative Container wie set, map, multi_map, multi_set, Hashes Stack, Queue, Priority-Queue, Komplexitätsbetrachtungen
Fortsetzung STL-Algorithmen (29.11.2025) verschiedene STL-Algorithmen wie sort, min_element, max_element, Fortsetzung des Lieferanten-Beispiels, globaler Algorithmus versus Methode, erase versus remove, Komplexitätsbetrachtungen zu Algorithmen und Methoden
Uuml;bung MeinMinElementUngleich
Clicker-Fragen zur Aufgabe 02 (22.11.2025) Was in den Semestern beim Review der Lösungen zur 2. Aufgabe so auffiel. Clicker-Fragen, um Diskussion einzuleiten

Programm-Code

Inhalt

Ausgangscode: Übung MeinMinElement VS2022 (29.11.2025) Implemetieren Sie selber den Schablonen-Algorithmus MeinMinElement (entsprechend max_element aus der STL). Der Code sollte bei Ihnen (allerdings mit Warnungen) kompilierbar sein und auch ausführbar. Allerdings scheitern die Tests (noch). Bringen Sie die Tests zum Laufen, indem Sie die beiden STL-Algorithmen implementieren. Es gibt hierzu bereits einen Test meinMinElementTest. Implementieren Sie nun den Schablonen-Algorithmus MeinMInElementUngleich. Erste Tests sind vorhanden.
Lösung: Übung MeinMinElement und MeinMinElementUngleich VS2022 (29.11.2025) Implementierung der beiden STL-Algorthmen mit lauffühigen Tests
Ausgangscode: Übung; lineare und assoziative Container VS2022 (29.11.2025) Aufgabe 1: 3mal einen Aufruf von unique einbauen; Aufgabe 2: 3 fast identische Funktionen PrintBeforeUniqueAfter* als eine Schablonen-Funktion implementieren; Aufgabe 3: eigener Algorthmus myUnique, der alle Dubletten und nicht aufeinander folgende entfernt
Aufgabe 4: Nutzung von verschiedenen assoziativen Container *set, um dort die Buchstaben des eigenen Names einzutragne; Aufgabe 5: Nutzung von verschiedenen assoziativen Container *map, um dort GehÜlter einzutragen
Lösung: Übung lineare und assoziative Container VS2022 (29.11.2025) Implementierung der Lösungen der vorherigen 5 Aufgaben


10. Vorlesung; Fr. 12.12.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (06.12.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Clicker-Fragen (06.12.2025) Clicker-Fragen zur Wiederholung von vorhergehenden Vorlesungen: Instanzerzeugung vor allem beim Kopienkonstruktor und Zuweisungsoperator; Visualisierung der Speicherbelegung des eigenen Programms;
Verschiebe-Konstruktor und -Zuweisungsoperator (06.12.2025) Verschiebe-Konstruktor (T&&) und Verschiebe-Zuweisungsoperator "T& operator(const T&&)". Motivation und Implementierung
Intelligente Zeiger (14.12.2025) Intelligente Zeiger werden motiviert, eine einfache mögliche Implementierung wird gezeigt. Zum Schluss wird die Nutzung der STL-Schablonen-Klasse unique_ptr anhand von Clicker-Aufgaben gezeigt. Korrektur 14.12.25: der 'f7' statt 'f6' bei einigen Funktionsaufrufen
Clicker-Fragen zur Aufgabe 02 (06.12.2025) Was in den Semestern beim Review der Lösungen so auffiel. Clicker-Fragen, um Diskussion einzuleiten
Gemeinsame Zeiger (06.12.2025) Gemeinsame Zeiger, die auf ein und dieselbe Instanz verweisen, werden motiviert, eine einfache mögliche Implementierung wird gezeigt. Zum Schluss wird die Nutzung der STL-Schablonen-Klasse shared_ptr anhand von Clicker-Aufgaben gezeigt.


11. Vorlesung; Fr. 19.12.2025

Folienkopien

Inhalt

Wiederholung / Ankündigung (14.12.2025) Wiederholung aus der letzten Vorlesung inkl. Übungsaufgaben, die in der Vorlesung per Clicker präsentiert werden.
Lambda-Ausdrücke (06.12.2025) Zunächst werden Funktionsobjekte wiederholt, d.h. Objekte, die den Operator operator() überladen haben. Lambda-Ausdrücke werden motiviert und deren Nutzung wird an Beispielen gezeigt. Syntax des allgemeinen Lambda-Ausdrucks; Beispiel für die Übergabe als globale Variable;

Klausurvorbereitung

Inhalt

Übersicht (14.12.2025) Übersicht über die folgenden Foliensätze zur Klausurvorbereitung
Smart Pointer (14.12.2025) Clicker Fragen zu den Themen unique_ptr, shared_ptr und Rekursion und weak_ptr
Instanzerzeugung und -zerstörung (14.12.2025) Clicker und andere Fragen zu den Themen: +X, -X; Kopierkonstruktor und Zuweisungsoperator; Instanzen auf dem Heap und Destruktoraufrufe; Speicherbelegung zeichnen; Vererbung mit Chef und Mitarbeiter; Zusammengesetzte Objekte und Instanzerzeugung
Dynamisches Binden (14.12.2025) Clicker Fragen zu den Themen virtuelle Methoden, d.h. dynamisches Binden; virtueller Destruktor; statischer und dynamischer Typ einer Variablen
STL (14.12.2025) Clicker Fragen zu den Themen: Container list; Iteratoren; Algorithmus for_each;
Zeiger (14.12.2025) Clicker Fragen zu den Themen am Beispiel der Klasse Mitarbeiter: Wann &? Wann *? Wann nichts? Zeiger und Referenzen; Was bedeutet noch && in Zusammenhang mit Verschiebesemantik?
Testen (14.12.2025) Hinweis auf Klausur-Fragen zu Themen des Testens

Programm-Code

Inhalt

Zusammengesetzte Objekte (14.12.2025) Codebeispiel zum Herumspielen bei der Instanzerzeugung bei zusammengesetzten Objekten, d.h. ein Auto hat z.B. Räder






Übungen, die ca. 30% der Klausurnote ausmachen

Aufgaben

Inhalt

Berechnung der Levenshtein-Distanz (09.10.2025)
das gleiche als Power Point (09.10.2025)
Die Abgabe der Lösungen ist für Freitag, den 17.10.2025, vorgesehen. Denken Sie an die Erstellung von ausreichend automatisch ablaufenden Tests. Sie gehören zu abzugebenden Lösung.
Feedback zur ersten Aufgabe (23.10.2025)
Kurze Zusammenstellung, was bei der Korrektur der ersten Übungsaufgabe in diesem Semester und vorher aufgefallen ist.
Aufgabe 2: dynamische Vektoren (23.10.2025)
das gleiche als Power Point (23.10.2025)
Die Abgabe der Lösungen ist für Freitag, den 31.10.2025, vorgesehen. Denken Sie an die Erstellung von ausreichend automatisch ablaufenden Tests. Sie gehören zu abzugebenden Lösung. Text bzgl. des Tests von Resize am 23.10 angepasst.
Aufgabe 3: Korrektur von Funksprüchen (01.11.2025)
das gleiche als Power Point (13.11.2025)
Die Aufgabestellung ist sehr umfangreich. Sie sollen die Aufgabe daher im Team mit ca. 3 bis 5 Kommilitonen bearbeiten. Lernziel ist u.a. die Möglichkeiten und Probleme von C++ bei der Programmierung im Großen anzureißen.
Schicken Sie Prof. Helmke möglichst bald (z.B. bis 7.11.) einen Vorschlag, mit wem Sie gerne im Team zusammenarbeiten wollen.
Schicken Sie Prof. Helmke bis zum 7.11. einen Vorschlag, wer welche Teilaufgabe (gerne auch unabhängig von den Aufgabenunterteilung in der pdf-Datei) bearbeiten soll. Dieses ist völlig unverbindlich. Sie dürfen und sollten es jederzeit anpassen.
Zwischenabnahme der ersten Teilaufgabe ist dann für Ende November vorgesehen. Details folgen





Alte Klausuren von mir mit Lösungen seit 2001

Nützliche Hilfen

__Lehrbücher zu C++ (12.08.2023)
Einführung: Benutzung von Visual Studios, (13.07.2024)
Hilfen zu speziellen Problemen mit Visual Studio und C++, (13.07.2024)
Visual Studios 2022 Comm Edition installieren und nutzen, (13.07.2024)

Links zu Subversion / Tortoise

Kurzeinführung zur Installation und Nutzung von TortoiseSVN an der FH Ostfalia (21.09.2024)
Deutsche Doku auf der Tortoise Homepage
Praktika, Studien- und Diplomarbeiten in meiner Arbeitsgruppe
Stellenangebote Institut für Flugführung beim DLR

Eigene Lehrbücher

Informationen bei Amazon

Letzte Änderung 14.12.2025 Datenschutzerklärung