Rade Kutil
Lehrveranstaltungen
VP Programmiersprachen: C/C++ (SS11)

Inhalt

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

Skriptum

Hier gibt es das Skriptum zum herunterladen: PDF, 476K. 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 bahnhof.dat zug.dat fahrplan.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 50 Leuten rätseln, was für ein Programm ich nun aufrufen soll.

Bis zum Mo 2. Mai soll das C-Programm programmiert werden. Das Programm wird von mir mit evtl. Verbesserungsvorschlägen kommentiert. Bis Mo 16. Mai kann das Programm dann noch verbessert werden. Alle C-Files und Header-Files sollen in einem Unterverzeichnis c/ sein. Bis zum Mo 6. Juni soll das C++-Programm programmiert werden, und zwar im Unterverzeichnis cpp/. Bis zum Mo 27. Juni 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 Subversion-Repository. Ich übersetze das Programm selbst.

Die zu erstellenden Programme sollen auf die Dateien bahnhof.dat, zug.dat und fahrplan.dat zugreifen. (Dateien jetzt mit mehr Inhalt und ohne doppelte Bahnhofs-Ids!) Der exakte Filename wird allerdings auf der Kommandozeile übergeben. Die Dateien zum Testen bitte hier herunterladen (und nicht ins Subversion einchecken). Die erste Datei bahnhof.dat enthält:

BahnhofId Name

Die Einträge sind durch ein Leerzeichen getrennt, Name enthält keine Leerzeichen. Ein Bahnhof ist eindeutig durch BahnhofId (natürliche Zahl) identifiziert. Wichtig: Wenn bei Programmaufruf in der Kommandozeile ein Bahnhof angegeben wird, wird dort immer der Name angegeben. Bei der Ausgabe von Bahnhöfen soll auch immer der Name ausgegeben werden. Die zweite Datei zug.dat enthält ein Verzeichnis von Zügen:

ZugId AnzahlWaggons

Die dritte Datei fahrplan.dat enthält für jeden Halt eines Zugs in einem Bahnhof eine Zeile:

ZugId BahnhofId An-Stunde An-Minute Ab-Stunde Ab-Minute AnzahlAussteiger AnzahlEinsteiger

Es ist sinnvoll, diese Datei nach dem Einlesen nach ZugId und An-Stunde und An-Minute zu sortieren. So ergeben sich aufeinander folgende Halte eines Zuges als aufeinander folgende Einträge der Liste. Es ist wahrscheinlich auch sinnvoll, An-Stunde und An-Minute durch Minuten seit 0 Uhr zu ersetzen, damit im Algorithmus leichter Zeiten miteinander verglichen und verknüpft werden können. Vor dem Ausgeben aber wieder zurück umwandeln!

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 mit Subversion

Zur Programmabgabe und daher zur effektiven Anmeldung wird Subversion verwendet. Anmelden bis spätestens 21.3.. Folgende Schritte sind zu tun:

  1. Ein Verzeichnis mit dem Usernamen im Repository anlegen:

    svn mkdir https://svn.cosy.sbg.ac.at/lv/ccpp/rkutil -m Anmeldung
  2. Das Verzeichnis auschecken:

    svn checkout https://svn.cosy.sbg.ac.at/lv/ccpp/rkutil
  3. Anmeldungsdaten (Nachname, Vorname, Matrikelnummer, Emailadresse, jeweils in eigene Zeile) in die Datei anmeldung.txt eintragen:

    cd rkutil
    cat >anmeldung.txt
    Kutil
    Rade
    9420697
    rkutil@cosy.sbg.ac.at
  4. Anmeldungsdaten commiten:

    svn add anmeldung.txt
    svn commit -m "Anmeldungsdaten eingetragen"

Statt rkutil natürlich den eigenen Usernamen verwenden.

2011-04-13 17:20