 |
|
|
Prolog |
|
Autor: mk
22.01.2008 19:12 1581
|
|
Grundlagen
|
Erste Schritte
- Starte den SWi-Prolog-Editor.
- Öffne eine neue Datei und speichere sie z.B. unter dem Namen p1.pl ab.
- Schreibe in die Datei den Fakt
es_regnet.
- Consultiere das Programm mit F9 (im Programm steckt Wissen, das das System erfragt).
Das System, die Wissensbasis kennt jetzt den Fakt.
- Gib im Anfrage-Fenster (am Prompt ?- )
?- es_regnet.
ein. Das System antwortet mit Yes. Das System hält den Fakt es_regnet für wahr.
- Fragt man das Sytem, ob die Straße nass ist
?- strasse_nass.
, so lautet die Antwort 'ERROR: Undefined procedure: strasse_nass/0'. Dh. das System kennt den Bezeichner
'strasse_nass' nicht.
- Erweitere das Prolog-Programm um die Regel
strasse_nass :- es_regnet.
und consultiere neu. Das Symbol :- steht eigentlich für den Folgepfeil <=.
- Frage nun das System erneut, ob die Straße nass ist
?- strasse_nass.
Yes
Jetzt lautet die Antwort 'ja'. Das System hat aus einem Fakt mit Hilfe einer Regel einen weiteren
Fakt hergeleitet.
- Das System soll einige Farben lernen. Gib also ein
farbe(rot).
farbe(orange).
farbe(gelb).
farbe(gruen).
farbe(blau).
farbe(violett).
ein und consultiere. farbe/1 ist ein einstelliges Prädikat. rot, orange,... sind Konstanten.
- Stelle die Frage '?- farbe(lila).' .
- Auf die Frage '?- farbe(X).' gibt das System die Antwort
?- farbe(X).
X = rot ;
X = orange ;
X = gelb ;
X = gruen ;
X = blau ;
X = violett ;
No
, dh. es werden nacheinander alle Belegungen der (großgeschriebenen) Variablen X ausgegeben, die die Anfrage
wahr machen. Erst als keine weitere Belegung zur Verfügung steht, erfolgt die Antwort No.
- Will man ausdrücken, dass Wolfgang Christines Vater ist, so könnte man dem System mitteilen:
vater(wolfgang,christine).
vater/2 ist dann ein zweistelliges Prädikat. Beachte, dass die Konstanten 'wolfgang' und 'christine'
kleingeschrieben werden müssen, damit sie nicht mit Variablen verwechselt werden.
Aufgabe
Lies im Buch
'Informatik mit Prolog'
im
Kapitel 2 2.1 bis 2.5 und erledige die Aufgaben 2.8/1, 2 und 4.
Kapitel 4.1-4.4
Provisor
Provisor
lokal