Rade Kutil
Lehrveranstaltungen
UV Programmiersprachen: C/C++ (WS19)

Inhalt

Einführung in C/C++ unter Voraussetzung von Programmierkenntnissen in Java.

Skriptum

Hier gibt es das Skriptum zum herunterladen: PDF. Außerdem noch die Beispiel-Programme aus dem Skriptum.

Nachtrag zur letzten Programmierübung (createCompilation) in der Vorlesung:

Das Problem war dann schnell gefunden. Ich hatte einen Copy-Konstruktor für Track geschrieben, der die Album-Id nicht kopiert hat, weil ich die nachher eh selber einsetzen wollte. Dieser Copy-Konstruktor wurde dann aber bei jedem Einfügen in die TrackList (z.B. beim Einlesen) implizit benutzt. Daher hatten alle Tracks keine Album-Id. AlbumList.findAlbum hat dann bei nicht gefundenen Album-Ids auch keinen Fehler produziert, sondern einfach einen Pointer auf albums.end() zurückgegeben. (Schlechte Programmierpraxis, geb ich zu!) Hier ist die funktionierende Version.

Programmieraufgaben

Jeder bekommt eine individuelle Programmieraufgabe, die für C und C++ gilt, in einer Datei aufgabe.txt in seinem Git-Verzeichnis. Die erste Zeile dieser Datei ist programm personen.dat stand.dat [weitere parameter]. Das heißt: Du sollst ein Programm namens programm erzeugen, das als erstes Kommando­zeilen­argument einen Dateinamen akzeptiert und als zweiten auch. Dahinter kommen möglicherweise noch weitere Parameter, wenn es die Aufgabe verlangt. Der Name des Programms ist ganz wichtig (also programm), sonst muss ich bei 60 Leuten rätseln, was für ein Programm ich nun aufrufen soll. Und bitte keines der Datei-Argumente weglassen, auch wenn die Datei nicht gebraucht wird.

Bis zum Do 5. Dez. soll das C-Programm programmiert werden. Das Programm wird von mir mit evtl. Verbesserungsvorschlägen kommentiert. Bis Ende Dez. kann das Programm dann noch verbessert werden. Alle C-Files und Header-Files sollen in einem Unterverzeichnis c/ sein. Bis zum Do 9. Jan. soll das C++-Programm programmiert werden, und zwar im Unterverzeichnis cpp/. Bis zum Do 23. Jan. kann dann noch verbessert werden. Erstelle in diesen Unterverzeichnissen auch ein Makefile. Mittels make ohne Argumente muss das Programm programm erzeugt werden. Adde nur .c-Files, .h-Files und das Makefile zum Git-Repository. Ich übersetze das Programm selbst.

Die zu erstellenden Programme sollen auf die Dateien teil.dat und schritt.dat zugreifen. Der exakte Filename wird allerdings auf der Kommandozeile übergeben. Die Dateien zum Testen bitte hier herunterladen (und nicht in Git einchecken). Die erste Datei teil.dat enthält Bauteile aus einer SciFi-Fabrik. Eine Zeile enthält:

Typ Bezeichnung Einheit Gewicht Preis

Die Einträge sind durch ein Leerzeichen getrennt. Ein Teil ist eindeutig durch Typ und Bezeichnung identifiziert. Die zweite Datei schritt.dat enthält Arbeitsschritte, um Teile aus teil.dat zusammenzubauen. Eine Zeile enthält:

Ziel-Typ Ziel-Bez Nr Quell-Typ Quell-Bez Menge Taetigkeit Zeit

Das bedeutet, dass beim Zusammenbauen von Ziel im Nr-ten Schritt Menge Stück (oder kg, etc.) Quelle-Teile durch Ausführen von Taetigkeit eingebaut werden, was Zeit Sekunden benötigt.

Die Ausgabe deines Programms kommt auch in eine Datei. Diese Datei soll ein ähnliches Format haben (z.B. ein Teil pro Zeile, Teile immer durch Typ und Bezeichnung identifizieren). Beachte: Das Programm soll die Sortierung der Datei nicht voraussetzen, sondern auch mit randomisierten Dateien funktionieren.

Benotungskriterien

Grundsätzlich muss das Programm funktionieren, damit es eine positive Note gibt. Das heißt, es muss compilierbar sein und das gewünschte Ergebnis liefern. Davon abgesehen, sollten folgende Kriterien beachtet werden:

Anmeldung per Git

Zur Programmabgabe und Anmeldung wird Git verwendet. Die persönliche Repository-URL kommt noch per Email. Die URL stellt eine Art Passwort für das Repository dar, diese also besser nicht an andere weitergeben. Zur Anmeldung bis spätestens 17.10. mit dieser URL git clone machen und dann eine Datei anmeldung.txt mit dem Namen (Vor- und Nachnamen) erstellen, adden und pushen. Z.B. so:

git clone <URL> ccpp
cd ccpp
echo Blasius Sacklmeier >anmeldung.txt
git add anmeldung.txt
git commit -m "Anmeldung"
git push

2019-12-20 16:12