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


Programmierpraktikum im WS 2000/2001

Programmieren in Logik - PROLOG

Allgemeine Informationen

Leitung: Prof. Dr. Javier Esparza
Verantwortlicher Mitarbeiter: Stefan Römer

Termin: Montags 8.00-10.00 Uhr c.t.
Raum: 1221 (Stammgelände)
Beginn: Mo., 16. Oktober 2000
Teilnehmerkreis: Studierende der Informatik im Grundstudium
Teilnehmerzahl: maximal 20
Anmeldung: die zentrale Einschreibung findet in der Zeit vom 24. bis 26. Juli 2000 statt.
Voraussetzungen: Das Praktikum setzt keine speziellen Kenntnisse voraus. Inhaltlich ist es an Studierende im 3. Semester adressiert, erste Erfahrungen in wenigstens einer imperativen und funktionalen Programmiersprache sollten also vorhanden sein.

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 sowie zentrale Begriffe wie 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.

Übungsbetrieb

Hier entlang.

Literatur

W. F. Clocksin, C. S. Mellish: Programming in Prolog, Springer-Verlag

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: 2000/06/29-08:15)