
Entwicklung korrekter Systeme
Prolog-Kurs
Auf dieser Seite
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
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.
Relevante Links
- SWI-Prolog
- http://www.swi.psy.uva.nl/projects/SWI-Prolog/
- GNU-Prolog
- http://www.gnu.org/software/prolog/prolog.html
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.
Ü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.
- blatt08.dvi (2 KByte)
- blatt08.ps (26 KByte)
- blatt07.ps (34 KByte)
- blatt07.dvi (2 KByte)
- blatt06.dvi (3 KByte)
- blatt06.ps (34 KByte)
- tictactoe.pl (10 KByte)
- blatt05.ps (36 KByte)
- blatt05.dvi (4 KByte)
- blatt04.ps (37 KByte)
- blatt04.dvi (3 KByte)
- blatt03.ps (35 KByte)
- blatt03.dvi (3 KByte)
- blatt02.ps (24 KByte)
- blatt02.dvi (1 KByte)
- blatt01.ps (33 KByte)
- blatt01.dvi (3 KByte)
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.
- muehle2.tcl ( 8.Jul 2001, 29 KByte)
- jms.exe (19.Jun 2001, 131 KByte)
- jms-solaris (19.Jun 2001, 21 KByte)
- jms-mips (19.Jun 2001, 67 KByte)
- jms-linux (19.Jun 2001, 22 KByte)
- jms-alpha (19.Jun 2001, 48 KByte)
- muehle.tcl (18.Jun 2001, 26 KByte)
- protokoll-test.pl (12.Jun 2001, 1 KByte)
- COPYING (11.Jun 2001, 18 KByte)
- Semesteraufgabe.ps (11.Jun 2001, 53 KByte)
- Semesteraufgabe.dvi (11.Jun 2001, 11 KByte)
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.