Fakultät für Informatik der Technischen Universität München,
Lehrstuhl für Theoretische Informatik und Grundlagen der KI


Programmierpraktikum im WS 2002/2003

Programmieren in Logik - PROLOG


Allgemeine Informationen

Leitung: Prof. Dr. Dr. h.c. W. Brauer
Verantwortlicher Mitarbeiter: Stefan Römer

Termin: Achtung! Nach der Einschreibung sind diesem Programmierpraktikum leider keine Studierenden zugeteilt worden, sodaß diese Veranstaltung im Wintersemester 2002/2003 nicht durchgeführt wird. Wer am Programmierpraktikum Prolog Interesse hat, möge sich bitte für das Sommersemester 2003 dafür bewerben.
Raum:
Beginn:
Übungsbetrieb:
Teilnehmerkreis: Studierende der Informatik im Grundstudium
Teilnehmerzahl: maximal 24
Anmeldung: die zentrale Einschreibung fand vom 15. bis 18. Juli 2002 statt.
Voraussetzungen: Das Praktikum erfordert keine speziellen Kenntnisse, erste Erfahrungen in jeweils wenigstens einer imperativen und funktionalen Programmiersprache werden jedoch erwartet.

Inhalt

Die Sprache PROLOG, kurz für "PROgramming in LOGic", kann eingesetzt werden für Probleme, die ausgedrückt werden können in Form von Objekten und deren Beziehungen untereinander. Erste Versionen von PROLOG wurden bereits im Jahr 1972 entwickelt, inzwischen wird diese Sprache in vielen Gebieten eingesetzt für Anwendungen symbolischer Berechnungen. Beispiele hierfür sind Relationale Datenbanken und Datenbankabfragesprachen, Expertensysteme (z.B. in BWL, Medizin), abstraktes Problemlösen, mathematische Logik, symbolisches automatisiertes Gleichungslösen und Beweisen, Design-Automatisierung, Analyse und Synthese natürlicher Sprachen (Linguistik), biochemische Strukturanalyse sowie viele Felder der Künstlichen Intelligenz.

PROLOG ist eine deklarative Sprache: PROLOG-Programme bestehen aus einer Folge von Aussagen, bestehend aus Fakten und Regeln über Objekte und ihren Beziehungen, sowie von Anfragen an die so aufgestellte Daten- und Wissensbasis. Bei der Ausführung eines PROLOG-Programms wird die Folge der Aussagen in der gegebenen Reihenfolge überprüft und die ermittelten Lösungen werden ausgegeben. Die Überprüfung erfolgt dabei nicht-deterministisch, jeder kombinatorisch mögliche Lösungsweg wird beschritten; über spezielle Konstrukte kann dieser Nicht-Determinismus jedoch eingegrenzt werden. Eine Vielzahl einzelner kleiner Gleichungen muß dabei während der Programmausführung, unter Rückgriff auf formale Methoden und Schlußweisen der mathematischen Logik, gelöst werden.

Im Gegensatz zu imperativen, funktionalen oder gar maschinennahen Programmiersprachen legt PROLOG nicht so sehr Wert auf Typbindung oder eine schnelle Ausführbarkeit der Programme. Ziel ist vielmehr eine möglichst einfache und intuitive Formulierung von Problemstellungen. PROLOG orientiert sich dabei an logischen Denkweisen, im Gegensatz zu anderen Programmiersprachen gibt es keinen Bruch zwischen Denken und Programmieren, der so oft Ursache für Programmierfehler ist. Im allgemeinen werden daher beim Entwickeln PROLOG-Programmen sehr viel weniger Fehler gemacht als bei anderen Programmiersprachen, meist sind sie auf einfache Tippfehler zurückzuführen.

Das Praktikum führt in die Programmierung in PROLOG ein, dazu gehören Grundstruktur und Aufbau von Programmtexten: Syntax und Semantik von Fakten und Anfragen, Variablen, Regeln, Operatoren und Präfix-Schreibweise von Termen, Konjunktion und Negation, Arithmetik, Ein- und Ausgabe, dynamisches Ändern der Faktenbasis und Definite Klauselgrammatiken sowie zentrale Begriffe wie Resolution, Unifikation, Backtracking und Cuts. Elementare Datenstrukturen wie Listen und Bäume werden behandelt. Anhand kleinerer und größerer Programmieraufgaben wird der Umgang mit der Sprache PROLOG eingeübt und vertieft.

Literatur

W. F. Clocksin, C. S. Mellish: Programming in Prolog, Springer-Verlag
I. Bratko: Prolog Programming for Artificial Intelligence, Addison-Wesley, 1986
K.R. Apt: From Logic Programming to Prolog, Prentice Hall, 1997
... sowie jetdes andere Textbuch über Prolog (auf die jeweils verwendete Syntax achten!)


Kontakt

Für Rückfragen stehen wir gern zur Verfügung.
Stefan Römer,   E-mail: roemer@in.tum.de,   Tel. 289-22403, Stammgelände Raum 3167



Stefan Römer (Last modification: 2002/07/03-10:29)