Uni-Logo
Algorithms and Complexity
 


Informatik II - Algorithmen und Datenstrukturen
Sommersemester 2014
Fabian Kuhn

 


Informationen zu den Programmierübungen

Die Programmierübungen können entweder in Java oder in C++ programmiert werden. Im Folgenden wird kurz beschrieben, an welche Richtlinien Sie sich halten sollten, damit die Unit Tests, der Style Checker, sowie damit das Zusammenspiel mit dem Build-Server Jenkins funktionieren. Um konkrete Beispiele zu haben, sind die Dateien aus den ersten zwei Vorlesungen im Daphne-SVN, im Unterverzeichnis

vorlesungen/vorlesungen_0102

unter der folgenden URL abgelegt:

https://daphne.informatik.uni-freiburg.de/svn/InformatikIISS2014/public

Damit Ihre Übungen vom Build-Server Jenkins bearbeitet werden können (und damit die Tutoren die Übungsabgaben nicht mühsam suchen müssen), müssen sie jeweils in einem Unterordner uebungsblatt-xx Ihres Daphne-Homeverzeichnisses liegen, wobei xx die Nummer des Übungsblattes bezeichnet. In Folgenden beschreiben wir kurz das konkrete Vorgehen für Java und für C++. Beispiele für die benötigten Dateien finden Sie jeweils entweder unter den oben angegebenen Vorlesungsdateien, oder indem Sie unter folgender URL, die Coding Standards aus dem SVN auschecken:

https://daphne.informatik.uni-freiburg.de/svn/CodingStandards

Im Folgenden beschreiben wir kurz das Vorgehen, zuerst für Java und dann für C++. Am Schluss wird noch kurz das Wichtigste zu Jenkins erklärt.

Java

Um die Übungen in Java zu programmieren, müssen Sie natürlich einen Java-Compiler installieren. Zudem sollten Sie Apache Ant (erhältlich unter http://ant.apache.org) installieren. Damit Sie die Unit Tests ausführen können und den Style Checker aufrufen können, müssen Sie zusätzlich die notwendigen Bibliotheken in Ihr Daphne-Verzeichnis kopieren. Dazu kopieren Sie am besten den ganzen lib Unterordner im java-Unterverzeichnis der Coding Standards in Ihr Daphne-Stammverzeichnis. (Den lib-Ordner finden Sie auch im Unterordner vorlesungen des oben erwähnten public-Verzeichnisses auf dem Vorlesungs-SVN.)
Damit Sie in standardisierter Art auf den Java-Compiler und den Style Checker zugreifen, sowie die Unit Tests ausführen können, sollten Sie das Programm ant verwenden. Um dieses anzuwenden, müssen Sie noch die zwei Konfigurationsdateien build.xml und build.properties in Ihr aktuelles Arbeitsverzeichnis kopieren. Im Falle der Übungen heisst das Arbeitsverzeichnis (wie bereits erwähnt) immer uebungsblatt-xx, wobei xx die Nummer der Übungsblatts bezeichnet. In der Datei build.xml müssen Sie in den ersten paar Zeilen noch anpassen, wo ant nach den Java-Sourcen und nach dem lib-Verzeichnis suchen soll. Falls Sie die gleiche Struktur wie in den Vorlesungs-Beispielen übernehmen, können Sie dazu auch einfach die build.xml Datei aus dem Ordner vorlesungen_0102 übernehmen. In der Datei build.properties müssen Sie bei jeder Übung noch angeben, wie Ihr Main-Programm heisst (Name sollte immer auf Main.java enden) und wie die jar-Datei heissen soll, welche beim Kompilieren erstellt wird. Bei der ersten Übung benötigen Sie z.B. ein Main-Programm, um die Zeitmessungen durchzuführen. Eine jar-Datei beispiel.jar kann dann mit dem Befehl java -jar beispiel.jar ausgeführt werden.
Um zu Überprüfen, ob alle Ihre Java-Source-Dateien dem Standard des Style Checkers entsprechen, führen sie

ant checkstyle

aus. Um alle vorhandenen Java-Source-Dateien zu kompilieren, führen Sie

ant compile

aus. Unit Tests schreiben Sie, indem Sie Source-Dateien erstellen, welche auf Test.java enden (ant sucht für die Tests nach solchen Dateien). Wie solche Unit Tests aussehen sollten, entnehmen Sie am besten den Beispielen in den Coding Standards und bei den Vorlesungsbeispielen. Das Ausführen der Unit Test (kompiliert bei Bedarf auch gleich) geschieht mit

ant test

Um alle drei Dinge gemeinsam auszuführen, können Sie auch einfach den Befehl ant (ohne Argumente) oder ant all verwenden. Um alle Binaries (class files, jar file) zu löschen, können Sie zudem

ant clean

aufrufen. Bitte tun Sie das, bevor Sie Dateien zum SVN-Repository hinzufügen. Alle von Ihrem Compiler generierten Dateien müssen (und sollen) Sie nicht über SVN hochladen.

C++

Um die Übungen in C++ zu programmieren, müssen Sie natürlich einen C++-Compiler installieren (z.B. die gnu-Compile-Suite installieren). Zudem müssen Sie f¨r die Unit Tests, Google Test installieren. Instruktionen dazu finden Sie unter folgender URL:

https://ad-wiki.informatik.uni-freiburg.de/teaching/ProgrammierenCplusplusSS2012/GTest

Melden Sie sich bei Problemen am besten über's Forum.
Damit Sie in standardisierter Art auf den C++-Compiler und den Style Checker zugreifen, sowie die Unit Tests ausführen können, sollten Sie das Programm make verwenden. Um dieses anzuwenden, müssen Sie noch die zwei Konfigurationsdatei Makefile (aus den Coding Standards oder den Vorlesungsbeispielen) in Ihr aktuelles Arbeitsverzeichnis kopieren. Im Falle der Übungen heisst das Arbeitsverzeichnis (wie bereits erwähnt) immer uebungsblatt-xx, wobei xx die Nummer der Übungsblatts bezeichnet. Um den Style Checker aufrufen zu können, müssen Sie zusätzlich die Python-Datei cpplint.py in ihr aktuelles Arbeitsverzeichnis kopieren.
Um zu Überprüfen, ob alle Ihre Source-Dateien dem Standard des Style Checkers entsprechen, führen sie

make checkstyle

aus. Um alle vorhandenen Source-Dateien zu kompilieren, führen Sie

make compile

aus. Unit Tests schreiben Sie, indem Sie Source-Dateien erstellen, welche auf Test.cpp enden (make sucht für die Tests nach solchen Dateien). Wie solche Unit Tests aussehen sollten, entnehmen Sie am besten den Beispielen in den Coding Standards und bei den Vorlesungsbeispielen. Das Ausführen der Unit Test (kompiliert bei Bedarf auch gleich) geschieht mit

make test

Um alle drei Dinge gemeinsam auszuführen, können Sie auch einfach den Befehl make (ohne Argumente) oder make all verwenden. Falls Sie ein asführbares Main-Programm erstellen müssen (z.B. in der 1. Übung für die Zeitmessungen), sollte der Name der Source-Datei auf Main.cpp enden. Der Compiler erstellt dann eine ausführbare Datei mit dem gleichen Namen (ohne die Endung). Eine Vorlage gibt es wiederum bei den Vorlesungsbeispielen. Um alle Binaries zu löschen, können Sie zudem

make clean

aufrufen. Bitte tun Sie das, bevor Sie Dateien zum SVN-Repository hinzufügen. Alle von Ihrem Compiler generierten Dateien müssen (und sollen) Sie nicht über SVN hochladen.

Jenkins

Um gleich zu sehen, ob Ihre Lösungen auch auf einem anderen Rechner (und im Speziellen auf dem Daphne-Server) funktionieren, gibt's den Jenkins-Server. Sobald Sie Ihre Lösungen ins SVN Repository hochgeladen haben, können Sie über den Jenkins Server überprüfen, ob die Dinge auch auf dem Server funktionieren. Solange Sie sich an die obigen Richtlinien halten, sollte dies eigentlich immer der Fall sein, wenn es lokal bei Ihnen funktioniert. Damit es funktioniert, müssen Sie allerdings auch das lib-Verzeichnis, sowie die Dateien build.xml und build.properties (bei Java), respektive die Dateien Makefile und cpplint.py (bei C++) ins SVN-Repository hochladen. Um ant (bzw. make) für ein bestimmtes Übungsblatt auf Jenkins auszuführen, wählen Sie einfach "Build workspace" aus und geben die zweistellige Nummer des Übungsblatts an.