Entwicklung korrekter Systeme

Prolog-Kurs

Auf dieser Seite

 
 

zum Seitenanfang

Termine

Vorlesungstermin: Do 16-17, HS B.
Erste Vorlesung: Donnerstag 19.04.2001

Übungstermine: Mo 9-10 (s.t.) A5 0-054.
Abgabe der Übungszettel: Donnerstag bis 12 Uhr, Briefkasten Prolog A4 2. Etage

 

zum Seitenanfang

Inhalt

Aufgrund der Änderungen in den Prüfungsordnungen wird für diejenigen, die noch nach DPO 3 das Vordiplom bekommen wollen und nicht den Prolog-Schein haben, eine (voraussichtlich letzte) Möglichkeit angeboten, diesen Schein zu bekommen. Es wird die deklarative Programmiersprache Prolog eingeführt, die in ihrem Kern die theoretische Grundlagen der Logikprogrammierung in die Praxis umsetzt. Wegen der knapp bemessenen Zeit kann bzgl. der theoretischen Aspekte nur auf die Logik-Vorlesung verwiesen werden. Stattdessen werden die wichtigsten Eigenschaften und Konzepte von Prolog als Programmiersprache vorgestellt.

 

zum Seitenanfang

Relevante Links

SWI-Prolog
http://www.swi.psy.uva.nl/projects/SWI-Prolog/
GNU-Prolog
http://www.gnu.org/software/prolog/prolog.html

 

zum Seitenanfang

Scheinanforderungen

  • Von jedem Aufgabenblatt muss mindestens eine Aufgabe sinnvoll bearbeitet werden,
  • Regelmäßige, aktive Mitarbeit in den Übungen,
  • Vorstellung einer Lösung,
  • Lösung von mind. 60% Aufgaben, und
  • Lösung und Präsentation der größeren Programmieraufgabe.
Zur Lösung jeder Programmieraufgabe gehört eine gute Dokumentation.

 

zum Seitenanfang

Übungsaufgaben

Hier wird die Möglichkeit geboten, die aktuellen Übungsblätter zu dieser Lehrveranstaltung im Postscript- oder DVI-Format abzurufen. Wir bitten jedoch im Interesse aller, die Übungsblätter nicht gedankenlos auszudrucken, insbesondere nicht auf den Laserdruckern der ARBI. Photokopien sind unter Berücksichtigung aller Kosten in der Regel günstiger als Laserdrucke!

Dieses Angebot richtet sich hauptsächlich an diejenigen, die auf anderem Wege kein Exemplar der Übungsblätter erhalten konnten, bzw. die die Aufgaben während der Bearbeitung am Bildschirm betrachten möchten.

 

zum Seitenanfang

Semesteraufgabe ``Mühle''

Als größere Programmieraufgabe soll in diesem Semester ein Mühle-Spiel programmiert werden. Die Aufgabenstellung, sowie der ``Spiele-Server'' und Hinweise hierzu stehen an dieser Stelle bereit.

Beim ``Spiele-Server'' handelt es sich um ein Tcl/Tk-Programm, dass eine graphische Ansicht des Spielfeldes bietet und zwei Programme gegeneinander spielen lässt. Der Server sorgt dafür, dass beide Programme ihren Zug mit dem write/1 Prädikat mitteilen, und einen Zug durch read/1 entgegennehmen können. Alternativ kann jede der beiden Farben statt von einem Programm auch interaktiv gespielt werden.
(Für Interessierte: Als Spieler kann ein mit einer beliebigen Programmiersprache erstelltes Programm genutzt werden, sofern es seine Züge auf die Standardausgabe schreibt und Gegnerische Züge von der Standardeingabe liest).

Die folgende Beschreibung setzt voraus, dass man mit der benutzten Plattform so vertraut ist, dass man Umgebungsvariablen setzen kann (auch wenn dies u.U. nicht nötig ist). Außerdem sollte man wissen, wie man eine Kommandozeile bekommt (xterm, DOS-Box, ...). Bei Problemen mit der Benutzung auf den Rechner der ARBI helfen wir gerne weiter.

Damit der Spiele-Server genutzt werden kann, muss das Prolog-Programm (bzw. die Prolog-Programme) in eine ausführbare Datei übersetzt werden. Dazu sollte man zunächst SWI-Prolog installieren (in der ARBI bereits vorhanden und als pl im Pfad - nicht prolog; auch Bestandteil vieler Linux-Distributionen). Nach der Installation sollte pl (bzw. unter Windows plcon) im Pfad liegen. Angenommen das Prolog-Programm liegt im Source-Code in der Datei mein-muehle.pl vor, dann erzeugt folgender Befehl ein ausführbares Programm:

$> pl --goal=start --stand_alone=true -o mein-muehle -c mein-muehle.pl


bzw. unter Windows mit dem Befehl
C:\Muehle\> plcon --goal=start --stand_alone=true -o muehle.exe -c mein-muehle.pl

Für weitere Einzelheiten zur Compilation möge man das Handbuch, Kapitel 2.10, zu Rate ziehen.

Um den Spiele-Server ausführen zu können, wird ein Tcl-Interpreter benötigt. Dieser gehört bei fast allen Linux-Distributionen zur Standard-Installation und ist auch auf der ARBI bereits vorhanden und im Pfad. Tcl/Tk ist aber auch für Windows erhältlich.

Das Tcl-Programm kann direkt ausgeführt werden. Unter Unix/Linux funktioniert das, sofern man die Datei ausführbar gemacht hat und der Tcl-Interpreter wish im Pfad liegt. Unter Windows muss der Tcl-Interpreter ebenfalls im Pfad liegen und für die Dateiendung .tcl muss ein entsprechender Dateityp eingetragen sein, der den Interpreter startet (das macht die Tcl-Installation normalerweise selbst). In beiden Fällen folgt darauf das Programm für Weiß und dann das Programm für Schwarz. Es kann statt eines Programms auch ``-'' angegeben werden, um anzuzeigen, dass die entsprechende Farbe manuell über die Oberfläche gespielt werden soll.

Beispiele:
(Unix/Linux) Angenommen das eigene Programm wurde übersetzt nach mein-muehle, dann startet der folgende Befehl das Mühle-Spiel, in dem das Programm gegen sich selbst spielt.

$> ./muehle.tcl mein-muehle mein-muehle

(Windows) Das Programm wurde nach muehle.exe übersetzt, dann spielt es mit folgendem Aufruf gegen sich selbst:
C:\Muehle\> muehle.tcl muehle.exe muehle.exe

Wenn man als Weiß gegen sein Programm antreten möchte, so geht das mit dem Aufruf (unter Unix/Linux - unter Windows analog):
$> ./muehle.tcl - mein-muehle

Das Protokoll, dass die Programme unterstützen müssen, ist in der Aufgabe und im Kommentar am Anfang des Tcl-Programms beschrieben.

Zum Testen der eigenen Spielstrategie hat Jochen Hoenicke ein Programm in C geschrieben, das das Protokoll des Tcl-Scriptes benutzt. Versionen hiervon stehen als jms-<Architektur> zum Download bereit. Sie können wie die übersetzten Prolog-Programm als Argumente dem Spiele-Server übergeben.