VU: Programmieren(4h)


Inhalt: Einführung in das strukturierte und objektorientierte Programmieren mit C++

Vorlesender
(+Übungen KFU): Prof. Gundolf Haase, Heinrichstr. 36, Zi 506, Klappe 5178,
Übungsleiter an KFU: Haase
Übungsleiter an TUG:  MSc. Stefan Rosenberger

Tutorium: Peter Nussbaumer im SCHWAB

Durchführung: in Präsenz für alle LV-Teile (Übungen+Vorlesung), Maskenpflicht in LVs

Modus und Fristen (Empfehlungen zu VU):

Termine des Vorlesungsteils (Fr., 13:00-14:30 im HS 11.02): 

Freitag, 10. März
Draft der Vorlesung
Einführung in Programmiersprachen und IDEs: Hauptprogramm (html), Functions Quick & Dirty (code, html), advanced C++17 (code, html)
Freitag, 17. März,
Draft der Vorlesung
Strukturierte Programmierung Q&D (code, html),
GenauigkeitGeheimzahl (mit html), string, vector (array), Nutzung von vector (code, html) ; C-String vs. C++-String (code, html)
verbesserte secret_number-Funktion (doku), 
IT-Pionierinnen: Pionierinnen, Ada; Wo sind die Frauen in der IT? (wiki, list)
Freitag, 24. März,
Draft der Vorlesung
loops(0,1,2,3), dynamische Vektoren in C++, Vektor als Funktionsparameter (html), Signatur einer Funktion;
Aufteilung in Header/Source-file; pitfalls in Lösungen (pointer etc., return/break); switch (1,2)
Freitag, 31. März,
Draft der Vorlesung
Signatur einer Funktion;
File-I/O: intro, copy_file, modul file_io (html) für Vektor-IO;  Kommandozeilenparameter, Variants of to_string;
Rekursion für pow,

Freitag, 21. April,

Draft der Vorlesung
rekursive Bisektion mit Funktional und komfortabler (html), mit lambda-Fkt (code), mit Array of Funktions (code);
verbesserte secret_number-Funktion (doku).
vom Pointer zum Iterator, Matrizen (code), mehr Dynamik mit einfachem Graphen (pdf, code, code using map).
fun with ASCII
Freitag, 28. April,
11:00-12:30
Draft der Vorlesung
Erste Schritte mit der eigenen Klasse
Komplex (+Operatorüberladung);
Klasse
Komplex (html)
Freitag, 5. Mai,
10:15-11:45
Draft der Vorlesung
Erweiterte Klasse Komplex incl. STL-Alg. und lambda-Funktion  (code, html)
Nutzung lambda-Funktion in Bisection (code)
lambda-Funktionen: Bartek's coding blog 1, 2.
Freitag, 12. Mai,
10:15-11:45
Draft der Vorlesung
Klasse Student (html) und  Student mit set (html).
Nutzung erster STL-Algorithmen mit Vergleichsoperatoren (html)
Freitag, 26. Mai,
10:15-11:45
Draft der Vorlesung
Templatefunktionen und -klassen (html); C++17 (html): type_traits, C++20 (html) concepts;
Freitag, 2. Juni,
10:15-11:45

Draft der Vorlesung
STL: Vorlesungscode (html); zum lesen: Container, Algorithmen, Iteratoren, [Quick Ref. (condensed), guter Überblick];
Example (STL+Templates): sort_index (Idee, html).
Klasse Graph(simple [docu], allgemeiner [docu], komfortabler [docu])
Freitag, 9. Juni
--> 16. Juni
verschoben auf 16. Juni
Freitag, 16. Juni
10:15-11:45
Test von 2020,
Draft der Vorlesung (Video 2020).
Einführung Klassenhierarchie(code, docu); zum lesen: Vererbung, virtuelle Methoden, abstrakte Klassen;
Klassenhierarchie(code, docu); virtuelle Methoden, abstrakte Klassen (video, pdf)
Herleitung einer Klassenhierarchie mit: virtuellen Methoden, rein virtuelle Methoden, abstrakte Klassen (code, video, pdf)
Freitag, 16. Juni
13:00-14:30
Präsenztest an KFU: HS 06.01
Freitag, 23. Juni,
12:00-13:30

Draft der Vorlesung.
Abgeleitete Klassen und Polymorphismus (mein script §12.2, code v_9b)
STL mit Employee-Hierarchie und shared_ptr (code, video, pdf);
Weiteres Bsp: ohne virtuelle Methoden (bringt nichts), mit virtuellen Methoden (html);
Anwendung der STL mit Container Klassenhierachie (raw pointer, shared_ptr, unique_ptr; als Liste);
Polymorphism vs. Performance: great video.
Freitag, 30. Juni,
keine LV (herausgearbeitet am 23.6.)
Draft der Vorlesung.
Sichere Pointer (Code), dangerous Pointer (Code), shallow vs. deep Copy,
Eigene Vektorklasse myvector, inkl. Exception Handling.
Bemerkungen zum Casting in C++ (const_cast);  Beispiele:  Form (html), Sinn von mutable (html),

Thread-Parallelität in der STL mit C++17 (code)
Type-checking zur Compilezeit: C++17: type_traits, C++20 concepts,
Ranges in C++20.
Weitere Literatur: "The C++ Standard Library"; "C++20: Get the Details"
Frag den Vorlesenden: Offene Diskussionsrunde zu C++.
Inverse square root (video), Obfuscated Code; Code Quality (fun); ... summer is over,

Termin des Tests:

Fr 16.06.2023, 13:00 - 14:30  an der  KFU: HS 06.01 (alle TUG/KFU-Gruppen)
(3 handgeschriebene Blatt Din A4 sind zugelassen, keine elektronischen Geräte, d.h., Handies bleiben in der Tasche!)
Alte Tests: SS13, SS17


Übungsblätter:

  1. Demovideo (15.8 MB) zum ersten C++-Programm mit der IDE Code::Blocks (Manual).
    Aufgaben: PDF (Termin: 20. März 2023 | Probeabgabe 17. März), Hinweise zu Codeblocks.
  2. Aufgaben: PDF (Termin: 17. April 2023), Regeln für Ihren Code, Hinweise zu doxygen (1, 2, guide)
    Hinweise zu typischen Fehlern und zu Compilerwarnungen.
  3. Aufgaben: PDF (Termin: 1. Mai 2023)
  4. Aufgaben: PDF (Termin: 15. Mai   2023), input_1.txt, modul file_io
  5. Aufgaben: PDF (Termin: 12. Juni 2023), templ_21.cpp, templ_22.cpp, input_24.txt
  6. Aufgaben: PDF (Termin: 3. Juli 2023)
  7. Projektaufgaben (Termin:  26. Juni 2023)

Übungsabgabe über Moodle:

Sie müssen Ihre Lösungen über Moodle ("Selbsteinschreibung" für TUG-Studenten) abgeben. Hierzu sind in Moodle entsprechende Themen (Lösungsabgaben) eingerichtet.
Die Lösung zu Aufg. x ist in einem separaten Verzeichnis bsp_x abzuspeichern (jeweils ohne die Unterverzeichnisse obj und bin), siehe auch den Screenshot. Zum Abgeben all Ihrer Lösungsverzeichnisse packen Sie diese in ein zip-File ein und geben dieses in Moodle ab.


Skriptum : als PDF  

Literaturliste


Mitbeleger anderer Unis: Anleitung


Stand: 27. Juni, 2023