Einführung in C/C++ unter Voraussetzung von Programmierkenntnissen in Java.
Hier gibt es das Skriptum zum herunterladen: PDF, 512K oder PS, gzipped, 275K. Außerdem noch die Beispiel-Programme aus dem Skriptum.
Jeder bekommt eine individuelle Programmieraufgabe in einer Datei
aufgabe.txt
in seinem Subversion-Verzeichnis. Die erste
Zeile dieser Datei ist programm teil.dat schritt.dat [weitere
parameter]
. Das heißt: du sollst ein Programm namens
programm
erzeugen, das als erstes
Kommandozeilenargument 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 44
Leuten rätseln, was für ein Programm ich nun aufrufen soll.
Bis zum So 2.12. soll das C-Programm programmiert werden.
Das Programm wird von mir mit evtl. Verbesserungsvorschlägen
kommentiert. Bis So 16.12. kann das Programm dann noch
verbessert werden. Alle C-Files und Header-Files sollen in einem
Unterverzeichnis c/
sein. Bis zum So 13.1. soll
das C++-Programm programmiert werden, und zwar im Unterverzeichnis
cpp/
. Bis zum So 27.1. 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 teil.dat
und schritt.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 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).
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 textuellen Teile-Referenzen nach dem Einlesen
in Pointer umzuwandeln, damit diese nur einmal gesucht werden 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 Anmeldung wird Subversion verwendet. Anmelden bis spätestens So 21.10. Folgende Schritte sind zu machen:
Ein Verzeichnis mit dem Usernamen im Repository anlegen:
svn mkdir svn+ssh://svn.cosy.sbg.ac.at/export/LV_svn/ccpp/rkutil -m Anmeldung
Das Verzeichnis auschecken:
svn checkout svn+ssh://svn.cosy.sbg.ac.at/export/LV_svn/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.