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, Dr. Elias Karabelas
Übungsleiter an TUG:  MSc. Stefan Rosenberger

Tutorium: Christoph Raunjak 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, 4. März
Draft der Vorlesung
Einführung in Programmiersprachen und IDEs: Hauptprogramm, Functions Quick & Dirty (code, html), advanced C++17 example
Freitag, 11. März,
Draft der Vorlesung
Strukturierte Programmierung Q&D (code, html),
GenauigkeitGeheimzahl (mit Dokumentation), string, vector (array), Nutzung von vector (code, html) ; verbesserte secret_number-Funktion (doku), 
IT-Pionierinnen: Pionierinnen, Ada; Wo sind die Frauen in der IT? (wiki, list)
Freitag, 18. 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), File-I/O: intro, copy_file, modul file_io (html) für Vektor-IO; 
Freitag, 25. März,
Draft der Vorlesung
Kommandozeilenparameter,
Variants of to_string;
Rekursion für pow, rekursive Bisektion mit Funktional und komfortabler;

Freitag, 1. April,

Draft der Vorlesung
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, 8. April,

Draft der Vorlesung
Erste Schritte mit der eigenen Klasse
Komplex (+Operatorüberladung);
Klasse
Komplex (html)
Freitag, 29. April,
 
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, 6. Mai,

Draft der Vorlesung
Klasse Student (html) und  Student mit set (html).
Nutzung erster STL-Algorithmen mit Vergleichsoperatoren (html)
Templatefunktionen und -klassen (html); C++17 (html): type_traits, C++20 (html) concepts
Freitag, 13. Mai,
Draft der Vorlesung
Templatefunktionen und -klassen (html); C++17 (html): type_traits, C++20 (html) concepts;

STL: Vorlesungscode (html); zum lesen: Container, Algorithmen, Iteratoren, [Quick Ref. (condensed), guter Überblick];

Info: Event on "Women in Mathematics in Graz"; 19.Mai, 15:15 HS 12.01
Freitag, 20. Mai,

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, 3. Juni,

Test von 2020,

Draft der Vorlesung.
Einführung Klassenhierarchie(code, docu); zum lesen: Vererbung, virtuelle Methoden, abstrakte Klassen;
Klassenhierarchie(code, docu); virtuelle Methoden, abstrakte Klassen
Herleitung einer Klassenhierarchie mit: virtuellen Methoden, rein virtuelle Methoden, abstrakte Klassen (code)
Freitag, 10. Juni
Präsenztest an KFU: HS 12.11
Freitag, 17. Juni,


Draft der Vorlesung.
Abgeleitete Klassen und Polymorphismus (mein script §12.2, code v_9b)
STL mit Employee-Hierarchie und shared_ptr (code);
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);
Freitag, 24. Juni,
Draft der Vorlesung.
Sichere 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 10.06.2022, 13:00 - 14:30  an der  KFU: HS 12.11 (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: 21. März 2022), Hinweise zu Codeblocks.
  2. Aufgaben: PDF (Termin: 4. April 2022), Regeln für Ihren Code, Hinweise zu doxygen (1, 2, guide)
    Hinweise zu typischen Fehlern und zu Compilerwarnungen.
  3. Aufgaben: PDF (Termin: 25. April 2022)
  4. Aufgaben: PDF (Termin: 9. Mai   2022), input_1.txt, modul file_io
  5. Aufgaben: PDF (Termin: 30. Mai 2022), templ_21.cpp, templ_22.cpp, input_24.txt
  6. Aufgaben: PDF (Termin: 27. Juni 2022)
  7. Projektaufgaben (Termin: 27. Juni 2022)

Ü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 die Screenshots (Struktur zip-File, benötigte Files pro Aufgabe). Sie packen diese Unterverzeichnisse in ein zip-File ein und geben dieses via Moodle ab.


Skriptum : als PDF  

Literaturliste


Mitbeleger anderer Unis: Anleitung


Stand: June 24, 2022