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

Das Wahlpflichtfach "Weitere Programmiersprache" 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 (Zugriff 13.08.2021). Das Schwergewicht wird aber eindeutig auf C++ liegen.
Die Vorlesung beginnt am Montag, den 20. September 2021 im ersten Block um 8:15 Uhr (Raum 2/026) mit einer Präsenzveranstaltung. Inwieweit die Pandemie diesen Plan ggf. zu nichte macht, 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.

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

Unterlagen zur Vorlesung

__Infos / Organisatorisches (14.08.2021) __Lehrbücher zu C++ (05.09.2021) __ Skript (03.09.2021)

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 (05.09.2020).
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. 20.09.2021 zu den Unterlagen
2. Woche Mo. 27.09.2021 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. 04.10.2021 zu den Unterlagen
4. Woche Mo. 11.10.2021 zu den Unterlagen
Im zweiten Teil stellen wir die objektorientierte Seite von C++ vor, die sich zunächst nur im Detail von Java unterscheidet.
5. Woche Mo. 18.10.2021 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).
6. Woche Mo. 25.10.2021 zu den Unterlagen
7. Woche Mo. 01.11.2021 zu den Unterlagen
Im dritten Teil lernen wir die generische Programmierung (Template-Programmierung) mit C++ kennen.
8. Woche Mo. 08.11.2021 zu den Unterlagen
9. Woche Mo. 15.11.2021 zu den Unterlagen
Im vierten Teil werden wir in die Programmierung mit der STL (Standard Template Library) einsteigen.
10. Woche Mo. 22.11.2021 zu den Unterlagen
11. Woche Mo. 29.11.2021 zu den Unterlagen
12. Woche Mo. 06.12.2021 zu den Unterlagen
13. Woche Mo. 13.12.2021 (ggf. Abnahme der Abschlussaufgabe Teil 1) zu den Unterlagen
Zum Abschluss folgt nochmals eine Zusammenfassung als Vorbereitung auf die Klausur im Januar 2022 Durch Teilnahme an der Abschlussaufgabe und Teilnahme an den Tests können Sie erste Punkte für die Klausur am Semesterende sammeln (Planungsstand August 2021).
14. Woche Mo. 20.12.2021 (ggf. Abnahme der Abschlussaufgabe Teil 2) zu den Unterlagen



Die Zahlen in Klammern geben das Datum der letzten Aktualisierung an.
Dateien von 2020 und früher dürfen sie ignorieren, sie sind in der Regel hier noch gar nicht verfügbar.

1. Woche; Mo. 20.09.2021

Die erste Woche beginnt mit einer Präsenz-Doppelvorlesung im 1. und 2. Block (Raum 2/026)
Link zu Clicker-Emulation mit BBB (19.09.2021)

Vorlesung

Sonstiges

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

Einführung: Benutzung des Visual Studios 2020 etc.(03.09.2021)
Visual Studios 2020 Comm Edition installieren und nutzen, (03.09.2021)
Probleme bei der Arbeit im Team (05.09.2020)

Übung/Code aus der Vorlesung zum Herumspielen

Zählen der Worte einer Datei, VS 2019 Code in einer Datei (05.09.2020)
Zählen der Worte einer Datei, VS 2017 Code in einer Datei (05.09.2020)
Ab der zweiten Woche 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 (2019, 2017, 2015 oder 2013) Installation auf Ihrem Rechner verfügen. Andere Entwicklungsumgebungen können auch verwendet werden. Hier kann ich aber ggf. nicht unterstützen.


2. Woche; Mo. 27.09.2021

Vorlesung

Software

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

Übungsaufgaben WS 2021/22; Sprechfunk-Annotation, Abgabe bis Montag, 11.10.2020, 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 (25.09.2021)
Automatic Speech Recognition (ASR) (25.09.2021)
Literatur zu den Aufgaben (25.09.2021)
Exercise: Reading from file (25.09.2021)
Aufgabenübersicht (nur grob, Details bei Aufgaben selbst) (25.09.2021)
Kurzeinführung zur Installation und Nutzung von TortoiseSVN an der FH Ostfalia (25.09.2021)
Short test file with input data (25.09.2021) __Longer test file with input data (25.09.2021)

Übungsaufgaben WS 2018/19

Lösungen

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


3. Woche; Mo. 04.10.2021

Vorlesung

Software

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

Übungsaufgaben WS 2021/22; Sprechfunk-Annotation, Abgabe bis Montag, 11.10.2021, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Exercise: Reading from file (25.09.2021)
Weiter Informationen (02.10.2021)

Übungsaufgaben

Lösungen

Aufgabencode zur Aufteilung der Vektor-Struktur auf mehrere Dateien __VS19 (02.10.2021 )
Cmake für VS 2019 erstellen (02.10.2021 )
Lösungscode: Aufteilung Vektor auf mehrere Dateien __VS17 (02.10.2021 ) __CMake (02.10.2021)


4. Woche; Mo. 11.10.2021

Vorlesung

Software

_Wiederholung / Ankündigung (08.10.2021)
Weiteres zu Zeigern (08.10.2021)
Übung mit 30/40 belegen (08.10.2021)
Weniger Wichtiges zu Zeigern (08.10.2021)

Übungsaufgaben WS 2021/22; Sprechfunk-Annotation, Abgabe bis Montag, 25.10.2021, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Very long test file with input data (later)
Exercise: Usage of Dynamic Arrays (05.10.2021)

Übungsaufgaben 2020/21

Lösungen

Aufgabentext mit 30 und 40 Belegen (08.10.2021) sowie Ausgangscode VS2019 bzw. __CMake (08.10.2021)
optionale Aufgabe zur Ermittlung der Binärdarstellung von float-Zahlen (08.10.2021)

Mit 30 und 40 Belegen VS2019 bzw. CMake (08.10.2021)


5. Woche; Mo. 18.10.2021

Vorlesung

Software

_Wiederholung / Ankündigung (17.10.2021)
Aufgabensammlung zu Referenzen, Werten Zeigern (09.10.2021)
Klasse string aus der STL (09.10.2021)
Klassen vector und array aus der STL (09.10.2021)
Klassen als abstrakte Datentypen (09.10.2021)
keine, siehe auch Lösungen und Übungsaufgaben

Übungsaufgaben WS 2021/22; Sprechfunk-Annotation, Abgabe bis Montag, 25.10.2021, 23:59 Uhr über SVN

Lösungen und andere Hilfen

Dynamsiche Arrays und viele Dateien (05.10.2021)
Solution code of exercise 01 (Aufgabe03-04) Visual Studio 2019 (17.10.2021)

Übungsaufgaben

Lösungen

Vektor als Klasse implementieren: Ausgangscode: VS 2019 (09.10.2021)

dynamischer Vektor als abstrakter Datentyp VS 2019 bzw. CMake (09.10.2021)


6. Woche; Mo. 25.10.2021

Vorlesung

Software / Literatur

_Wiederholung / Ankündigung (22.10.2021) __tiefe und flache Kopie (22.10.2020)
Komplexere Hilfen zu speziellen Problemen mit Visual Studio und C++, (03.09.2021)

Übungsaufgaben WS 2021/22; Sprechfunk-Annotation; Abgabe bis Sonntag, 07.11.2020; 23:59 Uhr

Lösungen und andere Hilfen

Exercise: Classes and deep and shallow copy (22.10.2021)

Übungsaufgaben

Lösungen

Projekt mit mehreren Dateien im gleichen Verzeichnis mit Cmake für VS 2019 erstellen (22.10.2021)
DynVorgangsArray mit Problemen VS 2017 bzw. CMake (22.10.2021)
Vektor mit Kopier-Problemen VS 2019 bzw. CMake (22.10.2021)
DynVorgangsArray mit Kopierkonstruktor VS 2017 bzw. CMake (22.10.2021)
Vektor mit Kopier-Konstruktor VS 2019 bzw. CMake (22.10.2021)


7. Woche; Mo. 01.11.2021

Vorlesung

Software

Wiederholung / Ankündigung (30.10.2021) __Beobachtungen beim Bewerten der zweiten Übung (30.10.2021)
__Operatoren (30.10.2021)
Weitere Informationen zu Konstrukturen (Selbststudium als Clickeraufgaben) (30.10.2021) __Sonstiges zu Klassen (zum Selbststudium) (30.10.2021)

Übungsaufgaben WS 2020/21; Sprechfunk-Annotation

Lösungen und andere Hilfen

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

Übungsaufgaben

Lösungen

Klasse Vektor mit Operatoren Ausgangscode (30.10.2021) VS2019
Klasse Matrix mit Operatoren Ausgangscode (30.10.2021) VS2019
Lösung Vektor mit Operatoren (30.10.2021) VS2019


8. Woche; Mo. 08.11.2021

Vorlesung

Software

Wiederholung / Ankündigung (30.10.2021) Wiederholungen zu Schleifen, Speicherbelegung ... (30.10.2021) ____Templates (30.10.2021)

Übungsaufgaben WS 2021/22; Sprechfunk-Annotation; Abgabe bis Sonntag, 28.11.2021; 23:59 Uhr

Lösungen und andere Hilfen

Efficiency of string (27.11.2021)

Übungsaufgaben

Lösungen

Ausgangscode: Vektor als Template (30.10.2021)
sowie Ausgangscode: Matrix als Template (30.10.2021)
Vektor als Schablonenklasse (30.10.2021)
Matrix als Schablonenklasse (30.10.2021)


9. Woche; Mo. 15.11.2021

Vorlesung

Software

Wiederholung / Ankündigung (13.11.2021) Einführung in die STL am Beispiel Komponenten/Lieferanten (13.11.2021)
Wiederholungen (13.11.2021)
keine

Übungsaufgaben WS 2020/21; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Woche;

Übungsaufgaben

Lösungen

Lieferant / Komponente Übung Ausgangscode VS 2019 (13.11.2021) __CMake (13.11.2021) Lieferant / Komponente add und hatElem VS 2019 (13.11.2021)
MeinMinElement VS 2019 (13.11.2021)


10. Woche; Mo. 22.11.2021

Vorlesung

Software

Wiederholungen, Ankündigungen (20.11.2021) Wiederholungen, Ankündigungen (20.11.2021) ___ Container-Klassen der STL (20.11.2021)
keine Software in der Vorlesung entwickelt

Übungsaufgaben WS 2021/22; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Woche; Abgabe bis 28.11.2021, 23:59 Uhr über SVN Solution code of exercise 06 (Aufgabe06) Visual Studio 2019 (20.11.2021)

Übungsaufgaben

Lösungen

Aufgabentexte für unique mit verschiedenen linearen Containern (20.11.2021)
Aufgabentexte für assoziative Container (20.11.2021)
AufgabenCode für beide Aufgaben (20.11.2021)
Lieferant / Komponente add und hatElem delete VS 2019 (27.11.2020)
Lösungscode für lineare und assoziative Container (20.11.2021)


11. Woche; Mo. 29.11.2021

Vorlesung

Software

Wiederholungen, Ankündigungen (27.11.2021) Intelligente Zeiger (unique_ptr) (27.11.2021)
unique_ptr (27.11.2021)

Finale Übungsaufgaben WS 2021/22; Sprechfunk-Annotation; Abgabe bis Freitag, 17.12.2021; 23:59 Uhr

frühere (Zwischen-)Abgabe sehr gern gesehen

Lösungen und andere Hilfen

Efficient extraction of callsigns, ATC concepts and command types (27.11.2021) Description of Test Data (27.11.2021)

Übungsaufgaben

Lösungen



12.Woche; Mo. 06.12.2021

Vorlesung

Software

____Verschiebe-Semantik (13.11.2021)
Intelligente Zeiger (shared_ptr) (27.11.2021)
Lambda-Ausdrücke (13.12.2020)
Lambda-Ausdrücke, Code aus der Vorlesung (13.12.2020)

Übungsaufgaben WS 2020/21; Sprechfunk-Annotation

Lösungen und andere Hilfen

Verschiebeoperatoren bei der Klasse Vektor (30.10.2021)

Übungsaufgaben

Lösungen

shared_ptr (27.11.2021)
Aufgabe EqualButNot (13.12.2020)
Lösungen zu EqualButNot (13.12.2020)


13.Woche; Mo. 13.12.2021

Vorlesung

Software

Überladen von Methoden (29.12.2020) Konstruktor-Verkettung (03.01.2021) ___Vererbung (03.01.2021)
Beobachtungen beim Bewerten der vierten Übung (29.12.2020)
Polymorphie oder doch nicht!? (29.12.2020)

Übungsaufgaben WS 2019/20; Sprechfunk-Annotation

Lösungen und andere Hilfen

siehe vorherige Woche;

Übungsaufgaben

Lösungen

Konstruktor-Verkettung (03.01.2021)


14. Woche; Mo. 20.12.2021

Vorlesung

Software

Klausurvorbereitung (07.01.2021)
Zeiger, Adressen etc.(07.01.2021)
STL (07.01.2021)
Stack/Heap (07.01.2021)
Intelligente Zeiger (07.01.2021)
keine Software in der Vorlesung entwickelt

Übungsaufgaben

Lösungen

keine keine





Alte Klausuren mit Lösungen seit 2001

Nützliche Hilfen

__Lehrbücher zu C++ (28.07.2019)
Einführung: Benutzung des Visual Studios 2017 etc., (03.09.2021)
Komplexere Hilfen zu speziellen Problemen mit Visual Studio und C++, (03.09.2021)
Visual Studios 2019 Comm Edition installieren und nutzen, (03.09.2021)

Links zu Subversion / Tortoise

Kurzeinführung zur Installation und Nutzung von TortoiseSVN an der FH Ostfalia (25.09.2021)
Deutsche Doku auf der Tortoise Homepage
Eine Einführung in Subversion und Tortoise SVN durch das Fraunhoferinstitut (5,4MB)
Praktika, Studien- und Diplomarbeiten in meiner Arbeitsgruppe
Aufgaben in der Abteilung Lotsenassistenz beim DLR

Eigene Lehrbücher

Informationen bei Amazon

Homepage zum Buch
Helmke/Höppner/Isernhagen

Letzte Änderung 27.11.2021 Datenschutzerklärung