Einführung in das Symbolische Programmieren
mit PROLOG
              
Vorlesung mit Tutorium
CIS, SS 2002

Hans Leiß

Organisatorisches

Ich hoffe, daß wir am Anfang des Semesters an den Freitag-Terminen einen Rechnerraum der Informatik (Z11 im Keller) nutzen können.

Zeit Raum
Vorlesung Mi, 14-16 1.14 Oettingenstr.67
Tutorium Fr, 8-10 1.05 Oettingenstr.67 (ggf. Rechnerraum Z11)
Beginn Do, 17.4.02 1.14

Bei Fragen außerhalb der Veranstaltungszeiten können Sie mir eine Nachricht schicken an

leiss@cis.uni-muenchen.de

oder in meine

Mentorenstunde Di, 14-15 Raum B 107, Oettingenstr.67

kommen.

Vorlesungsfolien

Die Folien der Vorlesung werden im Lauf des Semesters unter

http://www.cis.uni-muenchen.de/~leiss/symbolischesProgrammieren-02/prologfolien.ps

zur Verfügung gestellt. Markieren Sie die Seiten, die Sie noch nicht haben, und drucken Sie jeweils nur die aus.

Tutorium

Für das Tutorium werden hier auch die Übungsaufgaben erscheinen. Die Aufgaben können in Gruppen bis zu 4 Teilnehmern bearbeitet werden. Bei Bedarf werden die Lösungen besprochen.

  1. Aufgabe 1 + 2, Abgabe Fr, 03.5.2002
  2. Aufgabe 3 + 4, Abgabe Mi, 15.5.2002
  3. Aufgabe 5 + 6, Abgabe Mi, 22.5.2002

  4. Aufgabe 7 + 8, Abgabe Mi, 29.5.2002

  5. Anwesenheitsaufgabe: Laenge von Wegen

  6. Aufgabe 9+10, Abgabe Mi, 05.6.2002 Abgabetermin verlängert bis Fr. 7.6.2002, in der Übungsstunde

  7. Aufgabe 11+12, Abgabe Mi, 12.6.2002, (in der Vorlesung)

  8. Aufgabe 13+14, Abgabe Mi, 19.06.2002

  9. Aufgabe 15+16, Abgabe Mi, 03.07.2002        Freiwillig: tokenizer.mini.pro

  10. Aufgabe 17+18, Abgabe Mi, 10.07.2002        dcg-uebersetzer.pro

    Anwesenheitsaufgabe: displayTree, Fr 04.07.02       dottree.pro

    Testklausur (= Klausur vom letzten Jahr) zum freiwilligen Selbsttest/Ueben

  11. Abschlußklausur: Freitag, 12.7.02, Raum 1.15, 8.15 Uhr

PROLOG

Wir benutzen das SWI-Prolog von Jan Wielemaker, Version 4.0.2 vom April 2001 (oder neuere Versionen). 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.

Schneller ist es, wenn man die Kopie der Dokumentation am CIS benutzt; sie befindet sich unter der Adresse

http://www.cis.uni-muenchen.de/docs/prolog/

Man sucht in der Dokumentation durch Anklicken der 4 Bilder in der ersten Zeile.

Man kann SWI-Prolog auf den Rechnern in Z11 auf drei Arten benutzen:

SWI-Prolog von der Unix-Shell aufrufen:

In einem X-Terminal (oder auch ohne Fensterumgebung) gibt man auf der Unix-Shell den Befehl

pl

ein; dann startet SWI-Prolog 4.0.2 (wenn nicht, bitte beim Superuser oder bei mir melden!). Es hat ein integriertes graphisches Hilfesystem, einen graphischen Tracer zur Fehlersuche, und eine schlanke 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 eine Nachahmung des Emacs-Editors (s.u.) aufrufen, der in einem eigenen Fenster startet. (- vorausgesetzt, daß man Prolog unter der X-Bedienoberfläche gestartet hat). Mit dem SWI-Prolog-Befehl

guitracer.

kann man den graphischen oder ,,symbolischen'' Tracer aufrufen, der dazu benutzt werden kann, 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.

SWI-Prolog aus dem Emacs-Editor aufrufen:

  1. An den Rechnern am CIS (Z 11): (sollte im SS 2001 unnötig sein) In seinem Heimverzeichnis sollte es eine Datei mit dem Namen .emacs geben, in die man folgende Zeilen einfügen muß:

    ;;; Emacs-mode fuer SWI-Prolog, am CIS auf Z11-Rechnen      22.4.2001
    
    (if (equal (getenv "OSTYPE") "linux")
        (load-file "/usr/local/lib/emacs/site-lisp/.emacs.prolog-kurs.swi")  ;; nicht aktuell!
      t)    
    

    Findet man (mit ls ~/.emacs) diese Datei nicht, so speichere man diese hier unter dem Namen ~/.emacs.

  2. An den Rechnern in der Informatik (Z 36): Man füge in seine Datei  /.emacs folgende Zeilen ein:
    ;;; ------------------------ Prolog - Unterstuetzung ------------------------------
    ;;; Beim Laden von Dateien mit Namen "<Datei>.pro" automatisch in Prolog-mode gehen:
    (setq auto-mode-alist (cons '("\\.pro$" . prolog-mode) auto-mode-alist))
    ;;; Welches Prolog-System? SWI-Prolog 4.0.3 vom April 2001
    (setq prolog-system 'swi)
    ;;; Wo ist der System-Aufruf davon? Es ist installiert unter /soft/bin/pl4:
    (setq prolog-program-name "pl4") 
    ;;; In welchem Verzeichnis liegt die Datei "prolog.el" des Emacs?
    (load-file "/soft/share/emacs/site-lisp/.emacs-addon")
    ;;; Mit "Esc-x run-prolog" im Emacs Prolog starten:
    (autoload 'run-prolog "prolog" "Run an inferior prolog process" t)
    ;;; Mit "Esc-x prolog-mode" einen Puffer in Prolog-mode setzen:
    (autoload 'prolog-mode "prolog" "Mode for editing Prolog programs" t)
    ;;; --------------------------------------------------------------------------------
    

  3. Man startet in einem Terminalfenster den Editor mit

    emacs        oder        emacs meineDatei.pro

    Dort kann man unter dem Menüpunkt Files eine neue Datei erstellen oder eine vorhandene wie meineDatei.pro in einen Puffer Buffer des Editors laden.

    Falls der Dateiname in ".pro" endet, erscheint auf der Menüleiste ein Feld Prolog. Durch Anklicken des Menüs kann man dann bequem z.B.

    Falls der Dateiname anders endet, kann man das Prolog-Menü auch durch

    Esc-x prolog-mode

    bekommen. (Mehr dazu im Tutorium.)

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 und kopiert sie entweder mit der Maus in das laufende Prolog-System, oder man lädt eine Programmdatei meineDatei.pro, indem man in Prolog den Befehl

consult('meineDatei.pro').       oder       ['meineDatei.pro'].

eingibt (ggf. mit passenden Pfadnamen).

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.

Emacs-Editor:

Wir empfehlen, SWI-Prolog im Emacs-Editor oder mit XPCE (und dem eingebauten Mini-Emacs) zu benutzen. Die wichtigsten Emacs-Befehle sind auf den zwei Seiten der

GNU Emacs Reference Card

zusammengefaßt, die man sich (doppelseitig: mit Druckeroption lpr -Plp) ausdrucken kann. Unter dem Menü Help findet man im Emacs auch ein Tutorium zur Bedienung, wo die Befehle genauer erklärt werden. Es lohnt sich, das frühzeitig zu lernen.

Proseminarscheine

Um einen Proseminarschein zu erhalten, sind entsprechende Prolog-Kenntnisse nachzuweisen. Dazu werden Programmieraufgaben verteilt, die man selbständig lösen muß. Am Ende des Semesters wird eine Klausur geschrieben. Dabei sollte man 60 Prozent der Aufgaben lösen können.

Literatur

Außerdem findet man im Internet verschiedene Tutorien zu Prolog. Eine gute Suchmaschine findet man unter:

http://www.google.de/


File translated from TEX by TTH, version 2.54.
On 10 Jul 2002, 14:16.