1. Grundkonzepte der logischen Programmierung 2. Syntax von

Werbung
n 1. Grundkonzepte der logischen Programmierung
n 2. Syntax von Prolog
n 3. Rechnen in Prolog
IV.1 Grundkonzepte der logischen Programmierung - 1 -
Übersicht
Imperative Sprachen
l Folge von nacheinander
ausgeführten Anweisungen
n Prozedurale Sprachen
l Variablen, Zuweisungen,
Kontrollstrukturen
n Objektorientierte Sprachen
l Objekte und Klassen
l ADT und Vererbung
Deklarative Sprachen
l Spezifikation dessen, was
berechnet werden soll
l Compiler legt fest, wie
Berechnung verläuft
n Funktionale Sprachen
l keine Seiteneffekte
l Rekursion
n Logische Sprachen
l 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
Smalltalk
C
1980
Scheme
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
n Programme = Fakten und Regeln
n Keine Kontrollstrukturen
n Ein- und Ausgabevariablen liegen nicht fest
n Besonders gut geeignet für Künstliche Intelligenz
(z.B. Expertensysteme, deduktive Datenbanken)
IV.1 Grundkonzepte der logischen Programmierung - 10 -
Herunterladen