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: Prof. Gundolf Haase
Übungsleiter an TUG:  MSc. Stefan Rosenberger

STUMAL: Cora Kumnig 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., 10:15-11:45 im HS 11.02): 

Freitag, 7. März
Draft der Vorlesung
Freitag, 14. März,
Draft der Vorlesung
Freitag, 21. März,
Draft der Vorlesung
Freitag, 28. März,
Draft der Vorlesung
Freitag, 4. April,

Draft der Vorlesung
Freitag, 11. April,

Draft der Vorlesung
Freitag, 2. Mai,

Draft der Vorlesung
Erweiterte Klasse Komplex incl. STL-Alg. und lambda-Funktion  (code, html)

Klasse Student (html) und  Student mit set (html).
Nutzung erster STL-Algorithmen mit Vergleichsoperatoren (html).

Nutzung lambda-Funktion in Bisection (code)
lambda-Funktionen: Bartek's coding blog 1, 2.
Freitag, 9. Mai,

Draft der Vorlesung
Templatefunktionen und -klassen (html); C++17 (html): type_traits, C++20 (html) concepts;
Freitag, 16. 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, 23. Mai,


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

Test von 2020,
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, 13. Juni
Anwendung der STL mit Container Klassenhierachie (raw pointer, shared_ptr, unique_ptr; als Liste);
Polymorphism vs. Performance: great video.
Draft der Vorlesung.
Sichere Pointer (Code), dangerous Pointer (Code), shallow vs. deep Copy,
Eigene Vektorklasse myvector (html), 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, span
Weitere Literatur: "The C++ Standard Library"; "C++20: Get the Details"
Frag den Vorlesenden: Offene Diskussionsrunde zu C++.
Square root in the computer, Inverse square root (video),
Obfuscated Code; Code Quality (fun); ... summer is over,
Freitag, 13. Juni
14:00-15:30 
Präsenztest: Uni Graz  HS 12.11
Freitag, 20. Juni,
Reservetermin
Freitag, 27. Juni,

Reservertermin

Termin des Tests:

Fr 13.06.2025, 14:00 - 15: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 (2023-intro, 2023-data, 2016) (15.8 MB) zum ersten C++-Programm mit der IDE Code::Blocks (Manual).
    Aufgaben: PDF (Termin: 17. März 2025 | Probeabgabe 14. März), Hinweise zu Codeblocks.
  2. Aufgaben: PDF (Termin: 31. März 2025), Regeln für Ihren Code, Hinweise zu doxygen (1, 2, guide)
    Hinweise zu typischen Fehlern und zu Compilerwarnungen.
    Timing (header file, doc)
  3. Aufgaben: PDF (Termin: 28. April 2025)
  4. Aufgaben: PDF (Termin: 12. Mai   2025), input_1.txt, modul file_io
  5. Aufgaben: PDF (Termin: 2. Juni 2025), templ_21.cpp, templ_22.cpp, input_25.txt
  6. Aufgaben: PDF (Termin: Mi 11. Juni 2025)
  7. Projektaufgaben (Termin:  23. Juni 2025)

Übungsabgabe über Moodle und das Kreuzlsystem:

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: 14. März, 2025