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

Inhalt

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

Abhaltung

Im Hörsaal bzw. per WebEx findet der Vorlesungsteil statt, der noch im Dezember zu Ende sein wird. Der Übungsteil besteht aus den abzugebenden Programmen (siehe unten).

Skriptum

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

Programmieraufgaben

Jeder bekommt eine individuelle Programmieraufgabe, die für C und C++ gilt, in einer Datei aufgabe.txt in seinem Subversion-Verzeichnis. Die erste Zeile dieser Datei ist programm stadt.dat gebiet.dat strasse.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 und dritten 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 90 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 10. 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 14. Jan. soll das C++-Programm programmiert werden, und zwar im Unterverzeichnis cpp/. Bis Ende 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 (und natürlich die Verzeichnisse c/ und cpp/) ins Git-Repository. Ich übersetze das Programm selbst.

Die zu erstellenden Programme sollen auf die Dateien stadt.dat, gebiet.dat und strasse.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 stadt.dat enthält Städte mit folgenden Angaben:

stadtId name einwohner gebietId meereshöhe

Die Einträge sind durch ein Leerzeichen getrennt. Eine Stadt ist eindeutig durch stadtId (natürliche Zahl) identifiziert. Die zweite Datei gebiet.dat enthält Regionen (R), Länder (L) und Kontinente (K), in denen die Städte angesiedelt sind. Eine Zeile enthält:

gebietId name obergebietId typ

gebietId ist eine eindeutige Id (natürliche Zahl), die in stadt.dat referenziert wird. name ist der Name des Gebiets. obergebiet ist z.B. die Id eines Landes von dem das Gebiet Teil ist. Der typ kann R, L oder K sein (siehe oben). R kann Obergebiet L oder R haben, L kann Obergebiet K haben. Die dritte Datei strasse.dat definiert Straßen zwischen den Städten. Eine Zeile enthält:

vonStadtId nachStadtId entfernung

Straßen sind natürlich in beide Richtungen benutzbar, jedoch nur in einer Richtung (von vonStadt nach nachStadt) eingetragen. entfernung gibt die Länge der Straße in km an.

Beachte: Die Einträge in den Dateien sind in zufälliger Reihenfolge. Ein Obergebiet kann z.B. vor oder nach einem Untergebiet kommen.

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 15.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

2020-10-23 10:33