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: Tobias Antensteiner im GERAMB

Durchführung: online bis Ende Mai (oder länger) für alle LV-Teile

Modus und Fristen (Empfehlungen zu VU):

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

Freitag, 5. März
Fernlehre wegen Covid-19
Einführung in Programmiersprachen und IDEs: Hauptprogramm, Functions Quick & Dirty (code, html), Strukturierte Programmierung Q&D (code, html) (advanced C++17 example)
Freitag, 12. März,
Fernlehre wegen Covid-19
Draft der Vorlesung
GenauigkeitGeheimzahl (mit Dokumentation), string, vector (array), Nutzung von vector (code, html) ; verbesserte secret_number-Funktion (doku), 
IT-Pionierinnen: Als die Informatik weiblich war.
Freitag, 19. März,
Fernlehre wegen Covid-19
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 für Vektor-IO; 
Freitag, 26. März,
Fernlehre wegen Covid-19
Draft der Vorlesung
Kommandozeilenparameter,
Variants of to_string;
Rekursion für pow, rekursive Bisektion mit Funktional und komfortabler;
[vom Pointer zum Iterator, fun with ASCII]
Freitag, 16. April,
Fernlehre wegen Covid-19
Draft der Vorlesung
vom Pointer zum Iterator, Matrizen (code), mehr Dynamik mit einfachem Graphen (pdf, code, code using map) .
Freitag, 23. April,
Fernlehre wegen Covid-19
Erste Schritte mit der eigenen Klasse Komplex (+Operatorüberladung);
Klasse
Komplex (html)
Freitag, 30. April,
Fernlehre wegen Covid-19
Erweiterte Klasse Komplex (code, html)
Klasse Student u.a. Nutzung erster STL-Algorithmen mit Vergleichsoperatoren
lambda-Funktionen: Bartek's coding blog 1, 2.
Freitag, 7. Mai,
Fernlehre wegen Covid-19
Templatefunktionen und -klassen (C++17: type_traits, C++20 concepts)
STL: Vorlesungscode; zum lesen: Container, Algorithmen, Iteratoren, [Quick Ref. (condensed), guter Überblick];
Freitag, 21. Mai,
Fernlehre wegen Covid-19
Example (STL+Templates): sort_index.
Klasse Graph(simple [docu], allgemeiner [docu], komfortabler [docu])
Einführung Klassenhierarchie(code, docu); zum lesen: Vererbung, virtuelle Methoden, abstrakte Klassen
Freitag, 28. Mai,
Fernlehre wegen Covid-19
Klassenhierarchie(code, docu); virtuelle Methoden, abstrakte Klassen
Herleitung einer Klassenhierarchie mit: virtuellen Methoden, rein virtuelle Methoden, abstrakte Klassen (code)
Abgeleitete Klassen und Polymorphismus (mein script §12.2, code v_9b)
Freitag, 4. Juni,
Fernlehre wegen Covid-19
Test von 2020,
STL mit Employee-Hierarchie und shared_ptr (code);
Freitag, 11. Juni
Präsenztest an KFU
Freitag, 18. Juni,
Fernlehre wegen Covid-19

Weiteres Bsp: ohne virtuelle Methoden (bringt nichts), mit virtuellen Methoden (doc);
Anwendung der STL mit Container Klassenhierachie (raw pointer, shared_ptr, unique_ptr; als Liste);
Sichere Pointer (Code), shallow vs. deep Copy,
Eigene Vektorklasse myvector, inkl. Exception Handling.
Freitag, 25. Juni,
Fernlehre wegen Covid-19
Bemerkungen zum Casting in C++ (const_castcode); 
Beispiele:  Form, 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++.
Obfuscated Code; Code Quality (fun); ... summer is over,

Termin des Tests:

Fr 11.06.2021, 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 (Wegen Covid-19: Anwesenheitspflicht ist ausgesetzt, zu den Übungszeiten findet eine  Videokonferenz via Moodle-BigBlueButton statt):

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

Übungsabgabe über Moodle:

Sie müssen Ihre Lösungen über Moodle ("Selbsteinschreibung") 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

Download des Compilers und Editors für Windows

Für Programmieranfänger:  Blocky Games, im weiteren Scratch mit Examples.
und Fortgeschrittene: Coding game.

Hilfe: CPlusPlus.com (auf Zahnrad klicken: Code-Editierung/Kompilierung) oder
die deutschsprachige C++-page mit online Code-Editierung/Kompilierung/Ausführung, z.B., array.
Was macht der Compiler aus meinem Code: CppInsight, Compiler Explorer, WandBox.
Siehe auch die Khan Academy und die guten Tuorials unter SoloLearn.
Codequalität lehren und lernen.
Most Dangerous Software Weaknesses (2021)

Mein Linux unter Windows: What to Doc't special [05/17].
Überleben unter UNIX (Uni-Graz E-Book, html, PDF ) und mehr und noch mehr

Stand: 28.07.2021