Fakultät für Informatik
Die verschiedenen Programmierparadigmen von C++ |
||
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 |
|
Vorlesung "Die verschiedenen Programmierparadigmen von C++" WS 2023/24.
|
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.
|
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. |
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 |