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

Hans Leiß

Organisatorisches

Da der Raum 0.33 zu klein ist, habe ich von der Verwaltung einen größeren Raum bekommen, weshalb wir Vorlesungs- und Übungsteil etwas umstellen:
Vorlesung Do, 8-10 R 1.14 Oettingenstr.67
Tutorium Di, 8-10 Z 11 Oettingenstr.67 (Rechnerraum) bzw.
Mi, 16-18, Z 11 Oettingenstr.67
Außerdem machen wir deshalb und auf Wunsch von Teilnehmern die Abgabe der Übungsaufgaben etwas anders: Ausgabe der Aufgaben jeweils am Donnerstag, Abgabe der Lösung am nächsten Donnerstag, Besprechnung am darauf folgenden Di/Mi.
Bei Fragen außerhalb der Veranstaltungszeiten können Sie mir eine Nachricht schicken an
leiss@cis.uni-muenchen.de
oder in meine
Mentorenstunde Mi, 11-12 Raum B 107, Oettingenstr.67
kommen.

Vorlesungsfolien

Die Folien der Vorlesung werden hier im Lauf des Semesters als .ps-Datei und als .pdf-Datei zur Verfügung gestellt. Markieren Sie die Seiten, die Sie noch nicht haben, und drucken Sie jeweils nur die aus.

Tutorium

Es werden möglichst jede Woche Übungsaufgaben gestellt, die Sie allein oder in kleinen Gruppen lösen sollten. Da im Moment noch kein (Ersatz-)Tutor feststeht, ist noch unklar, ob es wöchentlich Korrekturen der Aufgaben gibt oder eher eine weitere Übungsstunde, in der eine korrekte Lösung am Rechner oder an der Tafel erklärt wird.
Am Ende des Semesters gibt es eine Abschlußklausur, die für den Proseminarschein erfolgreich bestanden werden muß.
  1. Aufgabe 1, Abgabe Mo, 8.5.06 Beispiel Suchbaum
  2. Aufgabe 2 + 3, Abgabe Do, 18.5.2006       
  3. Aufgabe 4+5+6, Abgabe Mi, 24.5.2006       
  4. Aufgabe 7+8, Abgabe Do, 8.6.2006    
  5. Die Übungsstunde am Di 6.6.06 fällt aus, da dann an der LMU keine Lehrveranstaltungen stattfinden. Versuchen Sie, die Aufgaben, die in der Stunde am Mi 7.6.06 gemacht werden, selbst zu lösen! Anwesenheitsaufgaben für die Übung am 7.6.06 bzw. zum Selbermachen
  6. Aufgabe 9+10+11 Abgabe Do, 29.6.2006    
  7. Aufgabe 12+13 Abgabe Do, 6.7.2006    
    Satzende-Erkenner und Tokenizer
  8. Aufgabe 14+15+16 Abgabe Do, 20.7.2006
    Testklausur (= Klausur aus dem Jahr 2001) zum freiwilligen Selbsttest/Ueben
Abgabe Ihrer Lösung (nur ASCII-Text) über diese Eingabemaske (alle abzugebenden Aufgaben zusammen.)

Anwesenheitsaufgaben

  1. 30/31 Mai: Trennen einer Liste in Zahlen und Nicht-Zahlen (mit Akkumulatoren) trenneA.pro
    Protokoll der Übungsstunde (Das mit ?- protocol('woche7.protokoll'). erzeugte Protokoll zeigte leider nicht die interaktive Eingabe, deshalb eine Kopie des Emacs-*prolog*-Puffers). woche7.protokoll

Klausur: Donnerstag, 20.07.06, 8-10, Raum 1.14

       Ergebnisse und Scheine: In der Stunde am Donnerstag, 27.7.06., oder hier

PROLOG

Wir benutzen das SWI-Prolog von Jan Wielemaker, Version 5.2.13 (oder neuer). 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
pl-5.2.13
ein; dann startet SWI-Prolog 5.2.13 (wenn nicht, bitte bei mir melden!). 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.

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. meineProgramm.pro, indem man in Prolog den Befehl
consult('meineProgramm.pro').       oder       ['meineProgramm.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.

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.



File translated from TEX by TTH, version 3.70.
On 27 Jul 2006, 15:50.