Einführung in C/C++ unter Voraussetzung von Programmierkenntnissen in Java.
Hier gibt es das Skriptum zum herunterladen: PDF, 518K oder PS, gzipped, 275K. Außerdem noch die Beispiel-Programme aus dem Skriptum.
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 article.dat citation.dat author.dat [weitere
parameter]
. Das heißt: Du sollst ein Programm namens
programm
erzeugen, das als erstes
Kommandozeilenargument 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 So 9. Mai soll das C-Programm programmiert werden.
Das Programm wird von mir mit evtl. Verbesserungsvorschlägen
kommentiert. Bis So 23. Mai kann das Programm dann noch
verbessert werden. Alle C-Files und Header-Files sollen in einem
Unterverzeichnis c/
sein. Bis zum So 13. Juni
soll das C++-Programm programmiert werden, und zwar im
Unterverzeichnis cpp/
. Bis zum So 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 article.dat
, citation.dat
und author.dat
zugreifen. Der exakte Filename wird allerdings auf der
Kommandozeile übergeben. Die Dateien zum Testen bitte hier
herunterladen (und nicht ins Subversion einchecken). Die
erste Datei article.dat
enthält Artikel aus verschiedenen
wissenschaftlichen Journals mit folgenden Angaben:
AritkelId Titel JournalName Ausgabe Jahr VonSeite BisSeite
Die Einträge sind durch ein Leerzeichen getrennt. Ein Artikel ist
eindeutig durch ArtikelId (natürliche Zahl) identifiziert. Die zweite
Datei citation.dat
enthält Zitationen, d.h. die Information,
welcher Artikel welchen Artikel zitiert. Eine Zeile enthält:
ZitierenderArtikelId ZitierterArtikelId
Die Ids beziehen sich auf die ArtikelId aus article.dat
.
Die dritte Datei author.dat
gibt die Autoren der Artikel an.
Eine Zeile enthält:
ArtikelId AutorNr AutorName
Worauf ich bei Programmen Wert lege: Nicht alles in ein
.c-File geben, das Hauptprogramm programm.c
soll nur die
Funktion main
enthalten, in C++ am besten für jede Klasse
ein Header-File und (falls notwendig) ein .cc-File. Beim Einlesen der
Dateien am besten für jede Zeile ein struct
-Objekt
bzw. in C++ ein Klassenobjekt erzeugen. In C liegt das Augenmerk noch
nicht auf Performance, Suchen und Sortieren in Arrays kann durch
lineares Iterieren und Bubble-Sort o.ä. implementiert werden, es ist
allerdings geschickt, die Id-Referenzen nach dem Einlesen in Pointer
umzuwandeln, da die Dateien nicht nach Id sortiert sein müssen. Bitte
nach Möglichkeit keine globalen Variablen verwenden. In C++
müssen allerdings die Sortieralgorithmen der STL und passende
Container verwendet werden, die das Suchen beschleunigen.
Zur Programmabgabe und daher zur effektiven Anmeldung wird Subversion verwendet. Anmelden bis spätestens 21.3.. Folgende Schritte sind zu tun:
Ein Verzeichnis mit dem Usernamen im Repository anlegen:
svn mkdir https://svn.cosy.sbg.ac.at/lv/ccpp/rkutil -m Anmeldung
Das Verzeichnis auschecken:
svn checkout https://svn.cosy.sbg.ac.at/lv/ccpp/rkutil
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
Anmeldungsdaten commiten:
svn add anmeldung.txt
svn commit -m "Anmeldungsdaten eingetragen"
Statt rkutil
natürlich den eigenen Usernamen
verwenden.