Einführung in das Symbolische Programmieren
mit PROLOG
              
Vorlesung mit Tafelübung
CIS, WS 2011/12

Hans Leiß

Organisatorisches

Vorlesung Di, 16-18 Raum B 001, Oettingenstr.67
Tafelübung Do, 16-18 Raum 157, Oettingenstr.67
Mentorenstunde Mi, 13-14 Raum C 110, Oettingenstr.67
Fragestunde (K.Groth) Di, 18-20 Raum BU102 Oettingenstr.67
Fragen Sie während der Vorlesung und der Tafelübung, wenn Sie etwas nicht verstehen! Kommen Sie in die Mentorenstunde, wenn Sie eine längere Frage oder ein größeres Verständnisproblem haben. Sie können auch eine Email an die Tutorin und mich schicken, um etwas zu klären.

Vorlesungsfolien

Die Folien der Vorlesung werden hier im Lauf des Semesters als .pdf-Datei (vom Feb 1, 2012 ), mit acroread und dort gewählten Druckoptionen drucken zur Verfügung gestellt. Im Wesentlichen werde ich mit Hilfe der Tutorin die Folien vom Sommersemester 2009 auf Beamer-Format umstellen und stellenweise ergänzen oder überarbeiten.

Tafelübung/Übungsaufgaben

Es werden möglichst jede Woche Übungsaufgaben gestellt, die Sie allein oder in einer 2-er Gruppe lösen sollten. Die abgegebenen Lösungen werden von der Tutorin korrigiert. In der Tafelübung wird eine korrekte Lösung am Rechner oder an der Tafel erklärt, Fragen zur Vorlesung geklärt und weitere Beispiele behandelt. (Abgabemodus: in der Tafelübungsstunde)
Für korrekte Lösungen von Hausaufgaben kann man sich Bonuspunkte erwerben, um die durch die Klausur erreichte Note zu verbessern. (Man muß aber die Klausur ohne Bonuspunkte bestehen!)

Fragestunde Di 18-20, Rechnerraum Kalahari BU102, Oettingenstr.67

Tutorin: Katharina Groth
  1. Aufgabe 1-3, Abgabe Do, 3.11.2011
  2. Aufgabe 4, Abgabe Do, 10.11.2011
  3. Aufgabe 5+6, Abgabe Do, 17.11.2011
  4. Aufgabe 7+8, Abgabe Do, 24.11.2011
  5. Aufgabe 9+10, Abgabe Do, 1.12.2011
  6. Aufgabe 11+12, Abgabe Do, 7.12.2011
  7. Aufgabe 13+14, Abgabe Do, 15.12.2011
  8. Aufgabe 15, Abgabe Do, 22.12.2011    tokenizer.pl
    P.S. Ich hatte nicht bemerkt, dass beim ins-Netz-Stellen der Aufgabe etwas nicht funktioniert hatte; deshalb brauchen Sie die Aufgabe nicht bis Do 22.12. zu machen, sondern erst für die erste Stunde im Januar.
  9. Aufgabe 16, Abgabe Do, 19.1.2012   
  10. Programme zur Anzeige des Parsebaums (Folien 196,197) mixer.pl parse.pl dottree.pl programmierer.baum.pl
Ein Programm zur Darstellung der Suchbäume kann man sich von graphviz.pl holen. Wenn dot und gv (ghostview) installiert sind und man graphviz.pl und das folgende Programm
why(Goal) :-  
    sld(Goal),             % erzeugt die Bildbeschreibung sld.dot des Suchbaums
    shell('dot -T ps -o sld.ps sld.dot'),  % wandelt sld.dot in sld.ps um
    shell('gv sld.ps &').  % zeigt die Postscript-Darstellung sld.ps am Bildschirm

in Prolog geladen hat, wird (unter Linux) durch ?- why(Goal) der Suchbaum für Goal graphisch angezeigt.
Entsprechend wird mit dem Programm
show(Term) :-  
    term(Term),
    shell('dot -T ps -o term.ps term.dot'),
    shell('gv term.ps &').

durch ?- show(Term). ein Term graphisch als Baum dargestellt.

Modulprüfung

Am Semesterende findet eine Modulprüfung in Form einer Klausur statt. (Formal sind es zwei Prüfungen, eine für den Vorlesungsteil und eine für die Tafelübung. Für Studenten der Informatik ist nur der erste Teil erforderlich.) Dabei sollte man 60 Prozent der Aufgaben lösen können.
Klausurtermin: (Vorlesungsteil) Di, 7.2.2012, 16-18 Uhr, Raum B 001, Oettingenstr.67
Klausurtermin: (Übungsteil) Di, 9.2.2012, 16-18 Uhr, Raum 157, Oettingenstr.67
Für den Kurs Computerlinguistische Anwendungen im SS 2012 sind Prologkenntnisse erforderlich.

Literatur

Außerdem findet man im Internet verschiedene Tutorien zu Prolog. Empfehlenswert ist http://www.learnprolognow.org.

PROLOG

Wir benutzen das SWI-Prolog von Jan Wielemaker, Version 5.6.47 oder neuer (mit der XPCE-Bedienoberfläche). Dazu gibt es eine WWW-Seite unter
http://www.swi-prolog.org/
wo man sich eine Kopie von SWI-Prolog besorgen kann, um es auf dem eigenen PC zu installieren. Auf dieser Seite findet man im Abschnitt Documentation eine WWW-Version des Handbuchs für SWI-Prolog. Darin sucht man durch Anklicken der 4 Bilder in der ersten Zeile.

SWI-Prolog von der Linux/Unix-Shell aufrufen:

In einem X-Terminal gibt man auf der Unix/Linux-Shell den Befehl
xpce (am Inst.für Informatik auch: pl-cis)
ein; dann startet SWI-Prolog 5.2.47 (bzw. SWI-Prolog 5.2.54). Es hat ein integriertes graphisches Hilfesystem, einen graphischen Tracer zur Fehlersuche, und eine vereinfachte Version des Emacs-Editors geladen. Mit dem SWI-Prolog-Befehl
help(Befehl).        oder       apropos(Thema).
kann man dann über ein Hilfsfenster Information über einen PROLOG-Befehl oder ein Thema im Handbuch suchen lassen. Mit dem SWI-Prolog-Befehl
emacs.
kann man den Editor aufrufen, der in einem eigenen Fenster startet. (Wir werden üben, wie man damit eine Programmdatei schreibt und das Programm an Prolog schickt.) Mit dem SWI-Prolog-Befehl
guitracer.
kann man den graphischen oder ,,symbolischen'' Tracer aufrufen, um die Abarbeitung eines Programms schrittweise zu verfolgen. (Der Tracer muß aber mit weiteren Befehlen, debug. oder trace. oder spy(Befehl) eingeschaltet werden.) Mit dem SWI-Prolog-Befehl
manpce.
kann man Hilfe über die Programmierung der graphischen Bedienoberfläche bekommen. Es erscheint ein Fenster, wovon wir höchstens brauchen, daß man unter ,,Tools'' u.a. den Emacs-Editor und den graphischen ,,Tracer'' findet. (M.E. ist der nicht-graphische Tracer trace/2 hilfreicher.)

Prolog beenden oder abbrechen

Man beendet Prolog durch die Eingabe von
halt.     oder     ^D        d.h. gleichzeitigem Drücken der Ctrl bzw. Strg-Taste und der Taste d.
Wenn sich das Programm in einer Endlosschleife befindet, muß man es durch Eingabe von
^C        d.h. gleichzeitigem Drücken der Ctrl bzw. Strg-Taste und der Taste c
stoppen und kann es dann mit
halt.     oder     ^D
abbrechen.

Programme schreiben

Programme schreibt man in einem Editor, speichet sie in einer Datei und lädt diese Datei, z.B. meinProgramm.pro, indem man in Prolog den Befehl
consult('meinProgramm.pro').       oder       ['meinProgramm.pro'].
eingibt (ggf. mit passenden Pfadnamen). Wir empfehlen, als Editor den eingebauten Editor zu benutzen, den man mit emacs. aus Prolog aufruft. (In seiner Fensterleiste gibt es Optionen, die Datei zu sichern und nach Prolog zu laden.)
Dateien mit Prolog-Programmen sollten einen Namen tragen, der mit ,,.pro'' endet. Daran erkennt der Emacs-Editor, daß es sich um PROLOG-Programme handeln soll; er kann dann die Schlüsselwörter von PROLOG farbig markieren und die Programme lesbar formatieren. Außerdem bietet er dann ein Menü Prolog an, in dem man bestimmte Befehle, z.B. das Laden einer Programm-Datei in das laufende PROLOLG-System, durch anklicken mit der Maus aufrufen kann.



File translated from TEX by TTH, version 3.67.
On 1 Feb 2012, 00:03.