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 TUG:  Rostislav Stanek

Tutorium: Anna Dauschan im GERAMB

Durchführung:

Modus und Fristen (Empfehlungen zu VU):

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

Freitag, 8. März
Einführung in Programmiersprachen und IDEs: Hauptprogramm, Functions Quick & Dirty (code, html), Strukturierte Programmierung Q&D (code, html) (advanced C++17 example)
Freitag, 15. März
GenauigkeitGeheimzahl (mit Dokumentation), string, vector (array), Nutzung von vector (code, html) ; verbesserte secret_number-Funktion (doku), 
IT-Pionierinnen: Als die Informatik weiblich war.
Freitag, 22. März
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, 29. März
modul file_io für Vektor-IO; Kommandozeilenparameter, vom Pointer zum Iterator,
Rekursion für pow, rekursive Bisektion mit Funktional und komfortabler; Variants of to_string; fun with ASCII
Freitag, 5. April
Matrizen (statisch, dynamisch), mehr Dynamik mit einfachem Graphen (pdf, code) .
Erste Schritte mit der eigenen Klasse
Komplex (+Operatorüberladung),
Freitag, 12. April
Klasse Komplex, Klasse Student u.a. Nutzung erster STL-Algorithmen mit Vergleichsoperatoren
Freitag, 3. Mai
Templatefunktionen und -klassen
STL: Vorlesungscode; zum lesen: Container, Algorithmen, Iteratoren, [Quick Ref. (condensed), guter Überblick];
Freitag, 10. Mai
Klasse Graph(simple, allgemeiner)
Klassenhierarchie(code, docu); zum lesen: Vererbung, virtuelle Methoden, abstrakte Klassen
Freitag, 17. Mai
virtuelle Methoden, abstrakte Klassen
Herleitung einer Klassenhierarchie mit: virtuellen Methoden, rein virtuelle Methoden, abstrakte Klassen (code)
Freitag, 24. Mai
Abgeleitete Klassen und Polymorphismus (mein script §12.2, code v_9b)
Bemerkungen zum Casting (code); STL mit Employee-Hierarchie (code);
Freitag, 7. Juni
Weiteres Bsp: ohne virtuelle Methoden (bringt nichts), mit virtuellen Methoden (doc),
                      Anwendung der STL (raw pointer, shared_ptr, unique_ptr; als Liste); Sichere Pointer (Code)
Beispiele:  Form, Sinn von mutable, shallow vs. deep Copy, myvector, Fun),
Test von 2016,
Frag den Vorlesenden: Offene Diskussionsrunde zu C++
Obfuscated Code; Code Quality (fun); ... summer is over,
Freitag, 14. Juni
keine LV: Herausgearbeitet am 5. April, 12. April, 3. Mai
Freitag, 21. Juni
keine LV: Herausgearbeitet am 15. März, 22. März, 29. März
Freitag, 28. Juni
Test:  HS 11.02 (KFU-Gruppen);  HS 04.01 (TU-Gruppen)

Termin des Tests:

Fr 28.06.2019, 13:00 - 14:30  an der  KFU: HS 11.02 (KFU-Gruppen);  HS 04.01 (TU-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 (jeweils Anwesenheitspflicht bei erster Übung nach dem Abgabetermin):

  1. Demovideo (15.8 MB) zum ersten C++-Programm mit der IDE Code::Blocks (Manual).
    Aufgaben: PDF (Termin: 18. März 2019), Hinweise zu Codeblocks.
  2. Aufgaben: PDF (Termin:   1. April 2019), Regeln für Ihren Code, Hinweise zu doxygen (1, 2, )
  3. Aufgaben: PDF (Termin: 29. April 2019)
  4. Aufgaben: PDF (Termin: 13. Mai 2019), input_1.txt, modul file_io
  5. Aufgaben: PDF (Termin:   3. Juni 2019), templ_20.cpp, templ_21.cpp, input_23.txt
  6. Aufgaben: PDF (Termin: 24. Juni 2019)
  7. Eine der folgenden Aufgaben bearbeiten (Termin: 24. Juni 2019) und als bsp_30x mit x aus {a,b,c,d,e,f,g} abgeben. 6 Punkte entsprechen 100%, d.h. es gibt aufgabenbezogen Mehr- und Zusatzpunkte.
    1. bsp_30a: Problem des Handlungsreisenden (PDF, Graphen)
                     (noch verfügbar für: Haase_Di (2), Haase_Do, Stanek_Di, Stanek_Do)
    2. bsp_30b: Polynomfaktorisierung (PDF); SystemOfLinearEquations (zip, doc)
                     (noch verfügbar für: Haase_Do, Stanek_Di, Stanek_Do)
    3. bsp_30c: Handball-EM (PDF, Data)
                     (noch verfügbar für: Haase_Di (1),  Stanek_Di, Stanek_Do)
    4. bsp_30d: Navigation (PDF, Map.txt)
                     (noch verfügbar für: Haase_Do, Stanek_Di, Stanek_Do)
    5. bsp_30e: Goldbachvermutung (PDF)
                     (noch verfügbar für: Haase_Do, Stanek_Di, Stanek_Do)
    6. bsp_30f:  Schach (PDF)
                     (noch verfügbar für:  Haase_Do, Stanek_Di, Stanek_Do)
    7. bsp_30g: Stammbaum (ex_stamm.txt)
                     (noch verfügbar für: Haase_Di(2), Stanek_Di, Stanek_Do)

Übungsabgabe über Moodle:

Sie müssen Ihre Lösungen über Moodle ("Selbsteinschreibung") abgeben. Hierzu sind entsprechende Themen (Lösungsabgaben) eingerichtet.
Sie müssen die Lösungen für das jeweilige Thema als ein einziges zip-File mit dem Filenamen Familienname_Vorname.zip abgeben welches die Verzeichnisse bsp_x der abzugebenden Lösungen als zugehörige Unterordner enthält (jeweils ohne die Unterverzeichnisse obj und bin), siehe auch die Screenshots (a,b). Wählen Sie als Namen für das zip-File  Familienname_Vorname.zip  .


Skriptum : als PDF   (gedruckte Skripten können für 4 EUR bei Fr. Weiß, Heinrichstraße 36/IV, Raum 516 abgeholt werden)

Literaturliste


Mitbeleger anderer Unis: Anleitung

Download des Compilers und Editors für Windows

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

Hilfe: CPlusPlus.com (auf Zahnrad klicken: Code-Editierung/Kompilierung) oder
die deutschsprachige C++-page mit online Code-Editierung/Kompilierung/ausführung, z.B., array.
Have a look at CppInsight.
Siehe auch die Khan Academy und die guten Tuorials unter SoloLearn.

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

Stand: 24.06.2019