Die verschiedenen Programmierparadigmen von C++; Helmke WS 2023/24
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 2023/24.
Mein 38. Semester (Vorlesung) an der Ostfalia

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 Im Juli 2023 schien es sogar müglich, dass C++ erstmals in der Geschichte des Tiobe-Index C überholen könnte. Im 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 05.08.2023).
Das Schwergewicht der Vorlesung wird eindeutig auf C++ liegen.
Die Vorlesung beginnt am Montag, den 18. September 2023, im ersten Block um 8:15 Uhr (Raum 252) mit einer Präsenzveranstaltung. Inwieweit die Pandemie diesen Plan ggf. durchkreuzt, wird die Geschichte zeigen.
Im Folgenden sehen Sie, was aus heutiger Sicht geplant ist. Sehen Sie die folgende Gliederung als einen Vorschlag zur Diskussion an.
In den bisherigen Semestern war die Vorlesung immer montags. Der 3. Oktober und der 31. Oktober sind Dienstage. Ich könnte auch am 2. Oktober und 30. Oktober. Aus beruflichen Gründen kan ich als DLR-Mitarbeiter an zwei weiteren Montagen nicht. Einen anderen Wochentag kann ich auch nicht durchgängig garantieren. Ich plane daher die Vorlesung an mindestens drei Freitagen auch im ersten und zweiten Block anzubieten. Ich kann aber auch andere Termine ermüglichen (z.B. 2. und 30. Oktober). Das sollten wir in den ersten Wochen diskutieren. Die aktuell geplanten Termine sehen Sie im Folgenden. Details in den nächsten Wochen und nach Rücksprache mit Ihnen.

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.
Entsprechendes gilt für Ihre Terminmöglichkeiten und Wünsche über den Montag hinaus.

Unterlagen zur Vorlesung

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

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 (06.08.2023).
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 Mo. 18.09.2023 zu den Unterlagen
2. Woche Mo. 25.09.2023 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 Mo. 02.10, Fr. 06.10.2023 (per BBB Aufgabenbetreuung) zu den Unterlagen
4. Woche ab Mo. 09.10.2023 zu den Unterlagen
5. Woche Mo. 16.10., Fr. 20.10.2023 (per BBB Aufgabenbetreuung) zu den Unterlagen Montag, Freitag
6. Woche Mo. 23.10.2023 zu den Unterlagen Montag
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 ab Mo. 30.10.2023 zu den Unterlagen Montag
Im dritten Teil lernen wir die generische Programmierung (Template-Programmierung) mit C++ kennen.
8. Woche Mo. 06.11.2023 zu den Unterlagen Montag
Im vierten Teil werden wir in die Programmierung mit der STL (Standard Template Library) einsteigen.
9. Woche ab Mo. 13.11.2023 zu den Unterlagen Montag
10. Woche ab Mo. 20.11.2023 zu den Unterlagen Montag
11. Woche ab Mo. 27.11.2023 keine Vorlesung bzw. DLR-Besuch
12. Woche ab Mo. 04.12.2023 ausgefallen
13. Woche ab Mo. 11.12.2023 zu den Unterlagen Montag
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.
14. Woche Mo. 18.12.2023 zu den Unterlagen Montag



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

1. Vorlesung; Mo. 18.09.2023

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

Vorlesung

Sonstiges

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

Visual Studios 2022 Comm Edition installieren und nutzen, (12.08.2023)
Hilfen zu speziellen Problemen mit Visual Studio und C++, (12.08.2023)
Einführung: Benutzung von Visual Studio, (12.08.2023)
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 (12.08.2023)
Zählen der C++-Schlüsselworte, VS 2022 Code in einer Datei (12.08.2023)
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; Mo. 25.09.2023

Link zur Clicker-Emulation mit BBB (12.08.2023)

Vorlesung

Software

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

Übungsaufgaben WS 2023/24; Levenshtein-Berechnung, Abgabe bis Freitag, 13.10.2023, 23:59 Uhr über SVN

Lösungen und andere Hilfen zum Lotsensprechfunk

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

Ü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; Mo. 02.10.2023

Vorlesung

Software

_Wiederholung / Ankündigung (29.09.2023) _Namensräume (09.09.2023)
Motivation eines dynamischen Vektors und Lösung (01.10.2023)
Code für farbliche Bildschirmausgaben oder als pdf-Datei (29.03.2023)

Übungsaufgaben WS 2023/24; Sprechfunk-Annotation, siehe Vorlesung 2, Abgabe 13.10.23

Lösungen und andere Hilfen

Übungsaufgaben

Lösungen

Aufgabencode zur Aufteilung der Vektor-Struktur auf mehrere Dateien __VS22 (29.09.2023 )
Cmake für VS erstellen (Beispiel WS 2021) (29.09.2023)
Lösungscode: Aufteilung Vektor auf mehrere Dateien __VS22 (29.09.2023 ) __CMake (29.09.2023)


4. Vorlesung; Fr. 09.10.2023

Vorlesung

Software

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

Übungsaufgaben WS 2023/24; LD mit Zeigern, keine direkte Bewertung; Voraussetzung für Aufgabe 03, So 05.11.2023, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Exercise: Usage of Dynamic Arrays (09.10.2023)
Kurzversion (09.10.2023), überblick Aufgabe 2

Übungsaufgaben 2020/21

Lösungen

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

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


5. Vorlesung; Mo. 16.10.2023

Vorlesung

Software

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

Übungsaufgaben WS 2023/24; LD mit new/delete, keine direkte Bewertung; Voraussetzung für Aufgabe 03, So 05.11.2023, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Solution code of exercise 01 (Aufgabe01) Visual Studio 2022 (15.10.2023)

Übungsaufgaben

Lösungen

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

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


7. Vorlesung; Mo. 23.10.2023 / 6. Woche

Vorlesung

Software / Literatur

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

Übungsaufgaben WS 2023/24; Sprechfunk-Annotation, So 05.11.2023, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Exercise: Classes and deep and shallow copy (20.10.2023)

Übungsaufgaben

Lösungen

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


8. Vorlesung; Fr. 30.10.2023; 7. Woche

Vorlesung

Software

Wiederholung / Ankündigung (30.10.2023) __Operatoren (20.10.2023)
__Sonstiges zu Klassen (zum Selbststudium) (20.10.2023)

Übungsaufgaben WS 2023/24; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Woche; mit Abgabe am Sonntag, den 5.11.2023 23:59 Uhr

Übungsaufgaben

Lösungen

Klasse Vektor mit Operatoren Ausgangscode (20.10.2023) VS2022
Lösung Vektor mit Operatoren (20.10.2023) VS2022


9. Vorlesung; Mo. 06.11.2023; 8. Woche

Vorlesung

Software

Wiederholung / Ankündigung (11.11.2023) ____Templates (20.10.2023)

Übungsaufgaben WS 2023/24; Sprechfunk-Annotation; Abgabe bis 30.11.2023 (bzw. 24.11.23), 23:59 im SVN

Lösungen und andere Hilfen

Exercise: Rufzeichen-Extraktion, Teil 1 (28.10.2023)

Übungsaufgaben

Lösungen

Ausgangscode: Vektor als Template (20.10.2023) __sowie Ausgangscode: Matrix als Template (20.10.2023)
Vektor als Schablonenklasse (20.10.2023) __sowie Matrix als Schablonenklasse (20.10.2023)


10. Vorlesung; Mo. 13.11.2023

Vorlesung

Software

Wiederholung / Ankündigung (11.11.2023)
Einführung in die STL am Beispiel Komponenten/Lieferanten (11.11.2023)
Teil 2 Lieferantenbeispiel (13.11.2023) __Beobachtungen beim Bewerten der zweiten Übung (11.11.2023)
keine

Übungsaufgaben WS 2023/24; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Woche 06.11.2023; Abgabe 30.11.23 (bzw. 24.11.23) 23:59 Uhr über SVN

Übungsaufgaben

Lösungen

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


11. Vorlesung; Mo. 20.11.2023

Vorlesung

Software

Wiederholungen, Ankündigungen (18.11.2023)
___ Container-Klassen der STL (20.11.2023)
Wiederholungen zu Schleifen, Speicherbelegung ... (11.11.2023) Aufgaben aus alten Tests (11.11.2023)
keine Software in der Vorlesung entwickelt

Übungsaufgaben WS 2023/24; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Woche 06.11.2023; Abgabe 30.11.23 23:59 Uhr über SVN

Ü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)


12. Vorlesung; Mo. 11.12.2023

Vorlesung

Software

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

siehe 06.11.2023; Zwischen-Abgabe 30.11.23 23:59 Uhr über SVN mit Statistik, was bei den verschiedenen Beispielen herauskommt.

Lösungen und andere Hilfen

Übungsaufgaben

Lösungen

Vektor-Klasse mit Verschiebeoperatoren (26.11.2023)


13. Vorlesung; Mo. 18.12.2023

Vorlesung

Klausurvorbereitung

Wiederholungen, Ankündigungen (15.12.2022)
Lambda-Ausdrücke (16.12.2023, zum Selbststudium) __dynamisches Binden/virtual (20.11.2023, zum Selbststudium)
Allgemein (16.12.2023) __Objekterzeugung (16.12.2023)
Zeiger, Adressen etc. (16.12.2023))
STL (16.12.2023) __Intelligente Zeiger (16.12.2023)

Abgabe 18.12.2023; 23:59 Uhr für die dritte Aufgabe; siehe 06.11.2023;








Alte Klausuren von mir mit Lösungen seit 2001

Nützliche Hilfen

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

Links zu Subversion / Tortoise

Kurzeinführung zur Installation und Nutzung von TortoiseSVN an der FH Ostfalia (21.09.2023)
Deutsche Doku auf der Tortoise Homepage
Praktika, Studien- und Diplomarbeiten in meiner Arbeitsgruppe
Aufgaben in der Abteilung Lotsenassistenz beim DLR

Eigene Lehrbücher

Informationen bei Amazon

Letzte Änderung 16.12.2023 Datenschutzerklärung