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, MSc. Stefan Rosenberger
Ü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, 8. März
Draft der Vorlesung
Einführung in Programmiersprachen und IDEs: Hauptprogramm (html), Functions Quick & Dirty (code, html), advanced C++17 (code, html)
Freitag, 15. 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, 22. März,
Draft der Vorlesung
loops(0,1,2,3), dynamische Vektoren (html) in C++, Vektor als Funktionsparameter (html), Signatur einer Funktion;
Aufteilung in Header/Source-file (html);
pitfalls in Lösungen (pointer etc., return/break); Bei CrowdStrike hat jemand die Null gewählt (Effekt, Ursache) [19.07.2024]
switch (1,2)
Freitag, 12. April,
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, 19. April,

Draft der Vorlesung
rekursive Bisektion mit Funktional und komfortabler (html), mit lambda-Fkt (code, html), mit Array of Funktions (code, html);
verbesserte secret_number-Funktion (doku).
vom Pointer zum Iterator, Matrizen (code).
fun with ASCII
Freitag, 26. April,

Draft der Vorlesung
Mehr Dynamik mit einfachem Graphen (pdf, code, doc, code using map, doc).
Erste Schritte mit der eigenen Klasse
Komplex (+Operatorüberladung);
Klasse
Komplex (html)
Freitag, 3. 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, 17. Mai,

Draft der Vorlesung
Templatefunktionen und -klassen (html); C++17 (html): type_traits, C++20 (html) concepts;
Freitag, 24. 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, 31. 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, 7. 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, 14. 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++.
Inverse square root (video), Obfuscated Code; Code Quality (fun); ... summer is over,
Freitag, 14. Juni
13:00-14:30 
Präsenztest: Uni Graz  HS 12.11
Freitag, 21. Juni,


Keine  LV
Freitag, 28. Juni,

Keine LV

Termin des Tests:

Fr 14.06.2024, 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 (2023-intro, 2023-data, 2016) (15.8 MB) zum ersten C++-Programm mit der IDE Code::Blocks (Manual).
    Aufgaben: PDF (Termin: 18. März 2024 | Probeabgabe 14. März), Hinweise zu Codeblocks.
  2. Aufgaben: PDF (Termin: 15. April 2024), 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: 29. April 2024)
  4. Aufgaben: PDF (Termin: 13. Mai   2024), input_1.txt, modul file_io
  5. Aufgaben: PDF (Termin: 3. Juni 2024), templ_21.cpp, templ_22.cpp, input_25.txt
  6. Aufgaben: PDF (Termin: 17. Juni 2024)
  7. Projektaufgaben (Termin:  24. Juni 2024)

Ü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: 23. Juli, 2024