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 2024/25.
|
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).
|
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. |
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 | Fr. 15.11.2024keine Vorlesung am 15.11.2024 | Zur Aufgabe 4 |
Im dritten Teil lernen wir die generische Programmierung (Template-Programmierung) mit C++ kennen. | ||
9. Woche | Fr. 22.11.2024Vorlesung 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. |
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 |