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

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

10px
2



Hon. 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 2024/25.
Mein 39. 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) die weltweit am häufigsten verwendeten Programmiersprachen sind (man muss noch nicht einmal C# dazu 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 13.07.2024).
Das Schwergewicht der Vorlesung wird eindeutig auf C++ liegen.
Die Vorlesung ist freitags in den ersten beiden Blöcke geplant. Sie am 23. September 2024, um 8:15 Uhr (Raum 223) mit einer Präsenzveranstaltung. Die folgende Vorlesung wäre am 4. Oktober. Tags zuvor ist allerdings ein Feiertag. Wir werden in der ersten Vorlesung gemeinsam festlegen, wann die folgende Veranstaltung sein wird, fü mich am einfachsten wäre am Freitag, den 4. Oktober. Entsprechendes gilt für dem 1. November.
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 nach Rücksprache mit Ihnen.

Unterlagen zur Vorlesung

__Infos / Organisatorisches (15.09.2024) __Lehrbücher zu C++ (12.08.2023) __ Skript (06.08.2023)
Link zur Clicker-Emulation mit BBB (13.07.2024)
Die Zahlen in Klammern geben das Datum der letzten Aktualisierung an.

Fr. 15.11.2024 Fr. 22.11.2024
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. 23.09.2024 zu den Unterlagen
2. Woche Mi. 02.10.2024 (statt Fr. 4.10) Raum 9/1 (TWW) 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.
3. Woche Fr. 11.10, 2024 zu den Unterlagen
4. Woche Fr. 18.10.2024 zu den Unterlagen
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).
5. Woche Fr. 25.10.2024 zu den Unterlagen
6. Woche Mi. 06.11.2024, 16:00 bis 19:15 Uhr, statt Fr. 1.11; Raum 9/1 (TWW) zu den Unterlagen Mittwoch
7. Woche Fr. 08.11.2024 zu den Unterlagen Freitag
8. Woche keine Vorlesung am 15.11.2024 Zur Aufgabe 4
Im dritten Teil lernen wir die generische Programmierung (Template-Programmierung) mit C++ kennen.
9. Woche Vorlesung am 22.11.2024 nicht an der Ostfalia
Stattdessen Besuchsmöglichkeit des DLR in Braunschweig am Lilienthalplatz 7, Eintreffen am Tor kurz vor 9:00 Uhr
Zur Aufgabe 4
Im vierten Teil werden wir in die Programmierung mit der STL (Standard Template Library) einsteigen.
10. Woche ab Fr. 29.11.2024 zu den Unterlagen Freitag
11. Woche ab Fr. 06.12.2024 zu den Unterlagen Freitag
12. Woche ab Fr. 13.12.2024 zu den Unterlagen Freitag
Zum Abschluss folgt nochmals eine Zusammenfassung als Vorbereitung auf die Klausur im Januar 2024 Durch Teilnahme an der Abschlussaufgabe und Teilnahme an den Tests können Sie erste Punkte für die Klausur am Semesterende sammeln.
13. Woche ab Fr. 20.12.2024 zu den Unterlagen Freitag



Die Zahlen in Klammern geben das Datum der letzten Aktualisierung an.
Dateien von 2023 und früher bitte ignorieren. Sie sind in der Regel hier noch gar nicht verfügbar.
Link zur Clicker-Emulation mit BBB (13.07.2024)

1. Vorlesung; Fr. 23.09.2024

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

Vorlesung

Sonstiges

Einleitung (13.07.2024) __Worte in Datei zählen (13.07.2024) __Datentypen (13.07.2024) __Steueranweisungen (13.07.2024)

Visual Studios 2022 Comm Edition installieren und nutzen, (13.07.2024)
Hilfen zu speziellen Problemen mit Visual Studio und C++, (13.07.2024)
Einführung: Benutzung von Visual Studio, (13.07.2024)
Probleme bei der Arbeit im Team (06.08.2023)

Übung/Code aus der Vorlesung zum Herumspielen

Zählen der Worte einer Datei, VS 2022 Code in einer Datei (13.07.2024)
Zählen der C++-Schlüsselworte, VS 2022 Code in einer Datei (13.07.2024)
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 ü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; Mi. 02.10.2024 Raum 9/1 (TWW)

Link zur Clicker-Emulation mit BBB (13.07.2024)

Vorlesung

Software

_Wiederholung / Ankündigung (30.09.2024)
__Funktionen (30.09.2024)) benutzerdefinierte Datenstrukturen (30.09.2024) _Aufteilung von Code auf Dateien (30.09.2024)
Ausgangscode für Struktur Vektor nach Test-first (30.09.2024)
Lösung für Struktur Vektor nach Test-first (30.09.2024)

Übungsaufgaben WS 2024/25; Levenshtein-Berechnung, Abgabe bis Sa 19.10.2024 über SVN oder zur Not per E-Mail als Zip-File

Lösungen und andere Hilfen zum Lotsensprechfunk

Einführung in die Aufgabenstellung der großen Übung Air Traffic Controllers and challenge of manual input (21.09.2024)
Automatic Speech Recognition (ASR) (21.09.2024)
Literatur zu den Aufgaben (21.09.2024)
Exercise 1: Levenshtein Distance Calculation (21.09.2024)
Aufgabenübersicht (nur grob, Details bei Aufgaben selbst) (21.09.2024)
Kurzeinführung zur Installation und Nutzung von TortoiseSVN an der FH Ostfalia (21.09.2024)

Übungsaufgaben WS 2020/21 (immer noch aktuell)

Lösungen

Aufgabentext für Durchschnittsberechnung in einem Array (17.09.2022)
Aufgabentext für Referenzparameter in Funktionen (17.09.2022).
Hier finden Sie
Codefragmente zur Laufzeitmessung von Heapsort mit und ohne inline (17.09.2022).


3. Vorlesung; Fr. 11.10.2024

Vorlesung

Software

_Wiederholung / Ankündigung (05.10.2024) _Header- und Source-Dateien, Namensräume (05.10.2024)
Motivation eines dynamischen Vektors und Lösung (05.10.2024)
Code für farbliche Bildschirmausgaben oder als pdf-Datei (29.03.2023)

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation, siehe Vorlesung 2, Abgabe 19.10.2024

Lösungen und andere Hilfen

Übungsaufgaben

Lösungen

Aufgabencode zur Aufteilung der Vektor-Struktur auf mehrere Dateien __VS2022 (05.10.2024 )
Cmake für VS erstellen (Beispiel WS 2021) (05.10.2024)
Aufgabencode: dynamischer Vektor __VS2022 (05.10.2024 ) __CMake (11.10.2024)
Lösungscode: Aufteilung Vektor auf mehrere Dateien __VS2022 (05.10.2024 ) __CMake (11.10.2024)
Lösungscode: dynamischer Vektor mit new und delete __VS2022 (12.10.2024 ) __CMake (12.10.2024)


4. Vorlesung; Fr. 18.10.2024

Vorlesung

Software

_Wiederholung / Ankündigung (12.10.2024) __Was im Code auffiel (06.10.2023)
Weiteres zu Zeigern (05.10.2024)
Übung mit 30/40 belegen (05.10.2024)
Weniger Wichtiges zu Zeigern (05.10.2024)
Klasse string aus der STL (05.10.2024)
Klassen vector und array aus der STL (05.10.2024)

Übungsaufgaben WS 2024/25; LD mit Zeigern, keine direkte Bewertung; Voraussetzung für Aufgabe 03, Fr. 15.11.2024, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Exercise: Usage of Dynamic Arrays (05.10.2024)
Kurzversion (05.10.2024), Überblick Aufgabe 2

Übungsaufgaben

Lösungen

Aufgabentext mit 30 und 40 Belegen (05.10.2024) sowie Ausgangscode VS2022 bzw. __CMake (05.10.2024)

Mit 30 und 40 Belegen VS2022 bzw. CMake (05.10.2024)


5. Vorlesung; Fr. 25.10.2024

Vorlesung

Software

_Wiederholung / Ankündigung (20.10.2024)
Selbststudium: Aufgabensammlung zu Referenzen, Werten Zeigern (12.10.2024)
Klassen als abstrakte Datentypen (12.10.2024)
keine, siehe auch Lösungen und Übungsaufgaben

Übungsaufgaben WS 2024/25; LD mit Zeigern, keine direkte Bewertung; Voraussetzung für Aufgabe 03, Fr. 15.11.2024, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Mein Code zum Start von Aufgabe02 Visual Studio 2022 (20.10.2024)

Übungsaufgaben

Lösungen

Vektor als Klasse implementieren: Ausgangscode: VS 2022 (12.10.2024)

dynamischer Vektor als abstrakter Datentyp VS 2022 bzw. CMake (12.10.2024)


6. Vorlesung; Mi. 06.11.2024, 16:00 bis 19:15 Uhr

Vorlesung

Software / Literatur

_Wiederholung / Ankündigung (26.10.2024) __tiefe und flache Kopie (26.10.2024)
Weitere Informationen zu Konstrukturen (Selbststudium als Clickeraufgaben) (26.10.2024)

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation, Abgabe Fr, 15.11.2024, 23:59 Uhr über SVN zusammen mit Aufgabe 02

Lösungen und andere Hilfen

Kurzform Aufgabe 03 (06.11.2024)
Exercise: Tiefe Kopie der Levenshtein-Klasse etc. (24.10.2024)
Kurzform Aufgabe 04 (06.11.2024)

Übungsaufgaben

Lösungen

Infos zu cmake (05.10.2024)
DynVorgangsArray mit Problemen VS 2022 bzw. CMake (26.10.2024)
Vektor mit Kopier-Problemen VS 2022 bzw. CMake (26.10.2024)
DynVorgangsArray mit Kopierkonstruktor VS 2022 bzw. CMake (26.10.2024)
Vektor mit Kopier-Konstruktor VS 2022 bzw. CMake (26.10.2024)


7. Vorlesung; Fr. 08.11.2024

Vorlesung

Software

Wiederholung / Ankündigung (06.11.2024) __Operatoren (26.10.2024)
__Sonstiges zu Klassen (zum Selbststudium) (26.10.2024)
__Templates (06.11.2024) __Polymorphie dynamisches Binden (26.11.2024)

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Vorlesung; mit Abgabe bis Freitag, den 15.11.2024 23:59 Uhr

Übungsaufgaben

Lösungen

Klasse Vektor mit Operatoren Ausgangscode (26.10.2024) VS2022
Aufgabe Klasse Matrix mit Operatoren Ausgangscode (26.10.2024) VS2022
Ausgangscode: Vektor als Template 06.11.2024) __sowie Ausgangscode: Matrix als Template (06.11.2024)

Lösung Vektor mit Operatoren (26.10.2024) VS2022
Vektor als Schablonenklasse (06.11.2024) __sowie Matrix als Schablonenklasse (06.11.2024)


keine Vorlesung am Fr. 15.11.2024, 8. Woche

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation; Zwischenreview 29.11, finale Abgabe Di. 17.12.24

Lösungen und andere Hilfen

Exercise: Rufzeichen-Extraktion, Teil 1 (Bewertung) (23.11.2024)
Teil 2, Extraktion an sich (31.10.2024)
Beispielwortfolgen (31.10.2024)
siehe hierzu im SVN in ..\AlleGruppen\VonJedemInSeineUmgebungZuKopieren\Aufgabe04


8. Vorlesung, Besuch im DLR, Fr. 22.11.2024, Eintreffen am Tor kurz 9 Uhr, 9. Woche

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Vorlesung siehe hierzu im SVN in ..\AlleGruppen\VonJedemInSeineUmgebungZuKopieren\Aufgabe04


9. Vorlesung; Fr. 29.11.2024; 10. Woche

Vorlesung

Software

Wiederholung / Ankündigung (26.11.2024) __Beobachtungen beim Bewerten der zweiten Übung (26.11.2024)
Einführung in die STL am Beispiel Komponenten/Lieferanten (27.11.2024)
Wiederholungen zu Schleifen, Speicherbelegung ... (27.11.2024)

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation; finale Abgabe Di. 17.12.24, 23:59 im SVN

Lösungen und andere Hilfen

Exercise: Rufzeichen-Extraktion, Teil 1 (31.10.2024)
Exercise: Rufzeichen-Extraktion, Teil 1 (Bewertung) (23.11.2024)
Teil 2, Extraktion an sich (31.10.2024)

Übungsaufgaben

Lösungen

Lieferant / Komponente Übung Ausgangscode VS 2022 (27.11.2024) __CMake (27.11.2024) Lieferant / Komponente add und hatElem VS 2022 (27.11.2024)


10. Vorlesung; Fr. 06.12.2024, 11. Woche

Vorlesung

Software

Wiederholung / Ankündigung (27.11.2024)
Container-Klassen der STL (27.11.2024) __Teil 2 Lieferantenbeispiel (27.11.2024)
Aufgaben aus alten Tests (27.11.2024)
__Beobachtungen in den studentischen Lösungen Übung (27.11.2024)
keine

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation; finale Abgabe Di. 17.12.24, 23:59 im SVN

Lösungen und andere Hilfen

siehe Vorlesung vom 15.11 und 29.11. 2024

Übungsaufgaben

Lösungen

Aufgabe MeinMinElement VS 2022 (05.12.2024)
MeinMinElement VS 2022 (27.11.2024)


11. Vorlesung; Fr. 13.12.2024, 12. Woche

Vorlesung

Software

Wiederholungen, Ankündigungen (27.11.2024)
__ Intelligente Zeiger (unique_ptr) (27.11.2024) ___Intelligente Zeiger (shared_ptr) (27.11.2024)
__Verschiebe-Semantik (27.11.2024, zum Selbststudium)
Motivation Verschiebeoperatoren (26.11.2023)
unique_ptr VS2022 (14.12.2024) shared_ptr VS 2022 (14.12.2024)

Übungsaufgaben WS 2024/25; Sprechfunk-Annotation; finale Abgabe Di. 17.12.24, 23:59 im SVN

Lösungen und andere Hilfen

siehe vorherigen Wochen am 15.11. bzw. 29.11.2024

Übungsaufgaben

Lösungen

Aufgabentexte für unique mit verschiedenen linearen Containern (18.11.2023)
Aufgabentexte für assoziative Container (18.11.2023)
AufgabenCode für beide Aufgaben VS 2022 ;__nur Code (13.11.2023)
Lieferant / Komponente add und hatElem delete VS 2022 (18.11.2023)
Lösungscode für lineare und assoziative Container (18.11.2023)
Vektor-Klasse mit Verschiebeoperatoren (26.11.2023)


12. Vorlesung; Fr. 20.12.2024, 13. Woche

Vorlesung

Klausurvorbereitung

Wiederholungen, Ankündigungen (14.12.2024)
__Lambda-Ausdrücke (27.11.2024, zum Selbststudium)
Allgemein (14.12.2024) __Objekterzeugung (14.12.2024)
Zeiger, Adressen etc. (14.12.2024))
STL (14.12.2024) __Intelligente Zeiger (14.12.2024)

Abgabe 17.12.2024; 23:59 Uhr; Bewertungsdatei zur Eigenbewertung ist im SVN

Übungsaufgaben

Lösungen

Zusammengesetzte Objekte (14.12.2024)
nicht vorhanden







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.2024 Datenschutzerklärung