<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<document>
<title>Programmierung 4</title>
<cid>PRI-PRG4</cid>
<bkey>pri2</bkey>
<ctypes>
<hours>3</hours>
<type>V</type>
<hours>1</hours>
<type>P</type>
</ctypes>
<cp>5</cp>
<semester>4</semester>
<mandatory>nein</mandatory>
<language>Deutsch</language>
<exam>Klausur</exam>
<curriculum>
<curriculum_entry>
<cid>PIBWI50</cid>
<branch>Praktische Informatik</branch>
<semester>4</semester>
<mandatory_tag>Wahlpflichtfach</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>PIB-PRG4</cid>
<branch>Praktische Informatik</branch>
<semester>4</semester>
<mandatory_tag>Wahlpflichtfach</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>PIB-PRG4</cid>
<branch>Praktische Informatik</branch>
<semester>4</semester>
<mandatory_tag>Wahlpflichtfach</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>PRI-PRG4</cid>
<branch>Produktionsinformatik</branch>
<semester>4</semester>
<mandatory_tag>Wahlpflichtfach</mandatory_tag>
</curriculum_entry>
<curriculum_entry>
<cid>PRI-PRG4</cid>
<branch>Produktionsinformatik</branch>
<semester>4</semester>
<mandatory_tag>Wahlpflichtfach</mandatory_tag>
</curriculum_entry>
</curriculum>
<workload>
Die Präsenzzeit dieses Moduls umfasst bei 15 Semesterwochen 60 Veranstaltungsstunden (= 45 Zeitstunden). Der Gesamtaufwand des Moduls beträgt bei 5 Creditpoints 150 Stunden (30 Stunden/ECTS Punkt). Daher stehen für die Vor- und Nachbereitung der Veranstaltung zusammen mit der Prüfungsvorbereitung 105 Stunden zur Verfügung.
</workload>
<prerequisites>
<prerequisite>
<pfcid>PRI-PRG1.</pfcid>
<pftitle>Hardwarenahe Programmierung</pftitle>
</prerequisite>
<prerequisite>
<pfcid>PRI-PRG2.</pfcid>
<pftitle>Anwendungsnahe Programmierung</pftitle>
</prerequisite>
</prerequisites>
<prerequisitesfor>
</prerequisitesfor>
<convenor>Prof. Dr.-Ing. Martin Burger</convenor>
<convenor-person-key>mbg</convenor-person-key>
<lecturers>
<lecturer>Prof. Dr.-Ing. Martin Burger</lecturer>
<lecturer-person-key>mbg</lecturer-person-key>
</lecturers>
<objectives>Die Studierenden 
• beherrschen die grundlegenden Sprachkonzepte (Datentypen, Ausdrücke, Kontrollstrukturen, Funktionen, Ausnahmebehandlung) von C++ sicher.
• beherrschen die speziellen C++-Konzepte der Objektorientierung (Klassen, Objekte, Vererbung, Polymorphismus) und können sie programmtechnisch umsetzen.
• können der Funktions- und Klassen-Templates in Programmen nutzbringend anwenden.
• können sicher mit grundlegenden Klassen und Algorithmen der C++-Standardbibliothek (z. B. Zeichenketten, Ein-/Ausgabe, Containerklassen, Generische Algorithmen) umgehen.
• sind in der Lage in kleinen Teams, auch zu schwierigeren Problemstellungen Lösungen zu entwickeln und diese gut strukturiert zu implementieren.
</objectives>
<content>Die Veranstaltung führt in die strukturierte, objektorientierte und generische Programmierung mit C/C++ ein. Ausgehend von den in den Modulen Programmierung 1-3 vermittelten Kenntnissen werden die Sprachelemente von C/C++ eingeführt und in Übungen vertieft. Besonderen Wert wird auf den Einsatz der C/C++-Standardbibliothek gelegt. 
 
1. Einführung
    - Historie
    - Verwendung
    - Entwicklung von C/C++-Programmen
    - Gegenüberstellung C++ und Java
2. Elementares
    2.1 Grundlagen und Datentypen
    2.2 Arithmetik
    2.3 Typumwandlungen
    2.4 Kontrollstrukturen 
3. Funktionen und Strukturen
    3.1 Funktionen und Referenzen
    3.2 Strukturen
    3.3 Präprozessordirektiven
4. Datentypen
    4.1 Enums und Felder
    4.2 C-Strings
    4.3 Die Klasse string
    4.4 Zeiger
5. Ein-Ausgabe
    5.1 Ein-Ausgabe
    5.2 Ein-Ausgabe-Formatierung
    5.3 Dateiverarbeitung
6. Klassen
    6.1 Aufbau von Klassen
    6.2 Verwendung von Doxygen
    6.3 Kopierkonstruktor und Zuweisungsoperator
    6.4 Klassenattribute und –methoden
    6.5 Friends
7. Überladen von Operatoren
    7.1 Überladbare Operatoren
    7.2 Eine Rationalzahlklasse
    7.3 Verschiedene Anwendungen
    7.4 Smart Pointer
8. Vererbung
    8.1 Einführung
    8.2 Virtuelle Funktionen
    8.3 Koperkonstruktor und Zuweisungsoperator
    8.4 Abstrakte Klassen
    8.5 Mehrfachvererbung
    8.6 Der Operator dynamic_cast
9. Ausnahmebehandlung
10. Templates
    10.1 Funktions-Templates
    10.2 Klassen-Templates
11. Standard Template Library
    11.1 Einführung
    11.2 Sequentielle Container
    11.3 Iteratoren und Algorithmen
    11.4 Assoziative Container
12. Runtime Type Information (RTTI)</content>
<media>Folien, Beamer, Vorlesungsspezifische Website</media>
<literature>Breymann, Ulrich: Der C++ Programmierer. C++ lernen - Professionell anwenden - Lösungen nutzen., Hanser-Verlag
Stroustrup, Bjarne: Einführung in die Programmierung mit C++, Pearson Studium 
Eckel, Bruce: Thinking in C++; Second Edition; Prentice Hall: www.bruceeckel.com
Grimm, Rainer: C++11: Der Leitfaden für Programmierer zum neuen Standard Addison-Wesley
Will, Torsten T.: C++11 programmieren: 60 Techniken für guten C++11-Code  Galileo Computing; 
Meyers, Scott: Effektiv C++ programmieren: 55 Möglichkeiten, Ihre Programme und Entwürfe zu verbessern; Addison-Wesley
Schäling, Boris: The Boost C++ Libraries; Xml Press
Bjarne Stroustrup&quot;s C++ Style and Technique FAQ: http://www.stroustrup.com/bs_faq2.html
The C++ Resources Network:  http://www.cplusplus.com/
C++ Reference: http://www.cppreference.com
Boost-Library: http://www.boost.org/

</literature>
<offered>
</offered>
<moduldb-query>Mon Jun 15 15:58:09 CEST 2026, CKEY=pprog4, BKEY=pri2, CID=[?], LANGUAGE=de, DATE=15.06.2026</moduldb-query>
</document>
