Blockpraktikum zu den
Grundzügen der Informatik I
"Karel Interpreter"
News
An der Klasse TestAnalyzer sind kleinere Bugfixes vorgenommen worden. Der Quellcode kann
heruntergeladen werden.
Die öffentlichen Tests methods.task und methodsErr.task haben sich
geringfügig geändert: sie verzichten jetzt auf return-Statements. Die kompletten
aktuellen Tests stehen wie gewohnt zum Download bereit.
Das Materialien-Archiv für das Praktikum ist in seiner aktuellsten Form jeweils
hier zu finden. Die aktuelle Version ist vom 7. März 2002. Seit der
letzten Version hat sich nur die Datei AbstractSyntaxNode.java verändert, sie
kann separat heruntergeladen werden.
Aufgabe
Sie werden als Mitglied einer Vierergruppe einen Interpreter schreiben,
der in einer vereinfachten Karelsprache verfaßte Tasks ausführen
kann. Die Einzelheiten entnehmen Sie bitte der Aufgabenbeschreibung.
Sie erhalten hierzu von uns Ausgangsmaterial
(u.a., den Scanner), so daß Sie nicht von Null beginnen müssen.
Für das spätere Testat Ihres Interpretierers, aber auch zur Unterstützung
Ihres Entwicklungsprozesses, haben wir einen automatisierten Testvorgang
entwickelt. Hierfür stehen öffentliche Tests
bereit.
Bei Fragen
Sollten während der Entwicklung Fragen auftauchen versuchen Sie zunächst
das Problem in der Gruppe und unter Zuhilfenahme der ausführlichen
Dokumentation
bzw. der FAQ zu lösen. Ihr Tutor steht Ihnen
für so nicht lösbare Fragen jederzeit (4. März--15. März)
zur Verfügung. Als letztes Mittel können Sie sich auch an die
Adresse inf1p@st.informatik.tu-darmstadt.de
wenden. Fragen von allgemeinerem Interesse werden dann auch der FAQ
hinzugefügt.
Testat
Wenn Ihr Interpreter die Grammatik vollständig beherrscht und sowohl
die öffentlichen Tests, als auch Ihre selbst
entwickelten Tests besteht, dann lassen Sie sich Ihr Ergebnis von Ihrem
Tutor testieren. Dazu muß Ihr Interpreter alle öffentliche Tests,
aber auch eine Reihe von nicht-öffentlichen Tests bestehen. Sollte
der Interpreter einen nicht-öffentlichen Test nicht bestehen, so können
Sie das Testat trotzdem erlangen, falls Sie als Gruppe dazu in der Lage
sind, darzulegen warum der Interpreter fehlschlug und wie er verbessert
werden müßte. In jedem Fall wird Ihnen der Tutor Fragen zur
Implementierung stellen und dabei darauf achten jedes einzelnen Gruppenmitglied
zu hören, bzw. nach seinem Beitrag zu fragen.
Weiterführende Anregungen
Sollten Sie vor Ablauf des Praktikumszeitraums noch Zeit haben dann besteht
eine Vielzahl von Möglichkeiten über das Minimalziel hinausgehende
Aufgaben anzugehen:
-
Erzeugen des "PrettyPrint" in HTML, so daß z.B., Schlüsselwörter
fett dargestellt werden, usw.
-
Realisierung einer strikten statischen Wohlgeformtheitsprüfung, in
der bereits vor der Ausführung falsche Typisierung, fehlende Deklarationen
und andere Fehler gefunden werden.
-
Erweiterung der Grammatik, z.B. Unterstützung von Klassen, Vererbung
und Polymorphie oder das Erlauben mehrerer Tasks, die parallel ausgeführt
werden. Achten Sie bei solchen Erweiterungen aber darauf, daß Sie
auch eine funktionierende Version des Interpreters haben, die Tasks, die
mit der in der Aufgabenstellung definierten Grammatik verfaßt wurden,
akzeptiert. Ansonsten können Sie unsere Tests nicht bestehen. Falls
Sie nur konservative Erweiterungen vornehmen (z.B., Einführung von
"assert"-Zusicherungsanweisungen) ohne z.B. umzudefinieren woraus ein SJarel-Programm
besteht, gibt es natürlich keine Probleme.
-
Eine "SJarel"-Entwicklungsumgebung, mit der Tasks in einem Textfenster
eingegeben werden können und auf Knopfdruck ausgeführt werden
können. Von der Einzelschrittausführung bis zum Debugmodus, der
das Beobachten von Variableninhalten ermöglicht, sind hier viele Möglichkeiten
denkbar.
-
Erweiterungen der Robot-Funktionalität, so daß z.B., Wettbewerbe
von Müllsammelrobotern über das Netzwerk möglich werden.
Die besten Entwicklungen werden ggf. für den nächsten GDI I Zyklus
verwendet, bzw. dem Karel-"Erfinder" zugeschickt.