1. Grundkonzepte der logischen Programmierung 2. Syntax von

Werbung
1. Grundkonzepte der logischen Programmierung
2. Syntax von Prolog
3. Rechnen in Prolog
IV.1 Grundkonzepte der logischen Programmierung - 1 -
Übersicht
Imperative Sprachen
Folge von nacheinander
ausgeführten Anweisungen
Prozedurale Sprachen
Variablen, Zuweisungen,
Kontrollstrukturen
Objektorientierte Sprachen
Objekte und Klassen
ADT und Vererbung
Deklarative Sprachen
Spezifikation dessen, was
berechnet werden soll
Compiler legt fest, wie
Berechnung verläuft
Funktionale Sprachen
keine Seiteneffekte
Rekursion
Logische Sprachen
Regeln zur Definition von
Relationen
IV.1 Grundkonzepte der logischen Programmierung - 2 -
Wichtige Programmiersprachen
1950
Fortran
1960
Cobol
Algol 60
PL/1
1970
Lisp
Simula
Algol 68
Pascal
Scheme
Smalltalk
C
1980
Prolog
ML
Ada
C++
Eiffel
Modula-3
1990
Ada-95
Miranda
Java
2000
Python
Haskell
Scala
prozedural
objektorientiert
funktional
logisch
I.2. Grundlagen von Programmiersprachen - 3 -
Fakten und Anfragen
werner
karin
monika
klaus
gerd
renate
susanne
dominique
peter
aline
Programm:
weiblich(monika).
weiblich(karin).
weiblich(renate).
weiblich(susanne).
weiblich(aline).
maennlich(werner).
maennlich(klaus).
maennlich(gerd).
maennlich(peter).
maennlich(dominique).
verheiratet(werner, monika).
verheiratet(gerd, renate).
verheiratet(klaus, susanne).
mutterVon(monika, karin).
mutterVon(monika, klaus).
mutterVon(renate, susanne).
mutterVon(renate, peter).
mutterVon(susanne, aline).
mutterVon(susanne, dominique).
mensch(X).
?- maennlich(gerd). ?- verheiratet(gerd, monika).
true
false
?- mensch(gerd).
true
IV.1 Grundkonzepte der logischen Programmierung - 4 -
Variablen in Anfragen
werner
karin
monika
klaus
Programm:
gerd
renate
susanne
dominique
peter
aline
weiblich(monika).
...
weiblich(aline).
maennlich(werner).
...
maennlich(dominique).
verheiratet(werner, monika).
...
verheiratet(klaus, susanne).
mutterVon(monika, karin).
...
mutterVon(susanne, dominique).
?- mutterVon(X, susanne).
X = renate
?- mutterVon(renate, Y).
Y = susanne ;
Y = peter
IV.1 Grundkonzepte der logischen Programmierung - 5 -
Kombination von Fragen
werner
karin
monika
klaus
Programm:
gerd
renate
susanne
dominique
peter
aline
weiblich(monika).
...
weiblich(aline).
maennlich(werner).
...
maennlich(dominique).
verheiratet(werner, monika).
...
verheiratet(klaus, susanne).
mutterVon(monika, karin).
...
mutterVon(susanne, dominique).
?- verheiratet(gerd,F), mutterVon(F,susanne).
F = renate
?- mutterVon(Oma,Mama), mutterVon(Mama,aline).
Oma = renate
Mama = susanne
IV.1 Grundkonzepte der logischen Programmierung - 6 -
Regeln
werner
karin
monika
klaus
gerd
renate
susanne
dominique
Programm:
peter
aline
weiblich(monika).
...
weiblich(aline).
maennlich(werner).
...
maennlich(dominique).
verheiratet(werner, monika).
...
verheiratet(klaus, susanne).
mutterVon(monika, karin).
...
mutterVon(susanne, dominique).
vaterVon(V,K)
:- verheiratet(V,F), mutterVon(F,K).
?- vaterVon(gerd, susanne).
true
?- vaterVon(gerd, Y).
Y = susanne ;
Y = peter
IV.1 Grundkonzepte der logischen Programmierung - 7 -
Mehrere Regeln für ein Prädikat
werner
monika
karin
gerd
renate
susanne
klaus
dominique
Programm:
peter
aline
weiblich(monika).
...
weiblich(aline).
maennlich(werner).
...
maennlich(dominique).
verheiratet(werner, monika).
...
verheiratet(klaus, susanne).
mutterVon(monika, karin).
...
mutterVon(susanne, dominique).
vaterVon(V,K)
:- verheiratet(V,F), mutterVon(F,K).
elternteil(X, Y)
elternteil(X, Y)
:- mutterVon(X,Y).
:- vaterVon(X,Y).
?- elternteil(X, susanne).
X = renate ;
X = gerd
IV.1 Grundkonzepte der logischen Programmierung - 8 -
Rekursive Regeln
werner
karin
monika
peter
dominique
weiblich(monika).
...
verheiratet(klaus, susanne).
elternteil(X, Y)
elternteil(X, Y)
renate
susanne
klaus
Programm:
vaterVon(V,K)
gerd
aline
maennlich(werner).
...
mutterVon(susanne, dominique).
:- verheiratet(V,F), mutterVon(F,K).
:- mutterVon(X,Y).
:- vaterVon(X,Y).
vorfahre(V,X) :- elternteil(V,X).
vorfahre(V,X) :- elternteil(V,Y), vorfahre(Y,X).
?- vorfahre(X, aline).
X = susanne ;
X = monika ;
X = klaus ;
X = renate ;
X = werner ;
X = gerd
IV.1 Grundkonzepte der logischen Programmierung - 9 -
Kennzeichen logischer Programme
Programme = Fakten und Regeln
Keine Kontrollstrukturen
Ein- und Ausgabevariablen liegen nicht fest
Besonders gut geeignet für Künstliche Intelligenz
(z.B. Expertensysteme, deduktive Datenbanken)
IV.1 Grundkonzepte der logischen Programmierung - 10 -
Herunterladen