Prolog Programmieren in Logik 5 Arithmetik GK Info

  • Slides: 21
Download presentation
Prolog Programmieren in Logik 5. Arithmetik GK Info 13 (Hö) PROLOG – Eine Sprache

Prolog Programmieren in Logik 5. Arithmetik GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Inhalt • Einführung • Zahlentypen • is - Operator • Grundrechenarten • Vergleichsoperatoren •

Inhalt • Einführung • Zahlentypen • is - Operator • Grundrechenarten • Vergleichsoperatoren • Funktionen • Beispiele GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Einführung Es mag verwundern, dass in einem Kurs über eine Programmiersprache bis jetzt kein

Einführung Es mag verwundern, dass in einem Kurs über eine Programmiersprache bis jetzt kein Wort über Zahlen und das Rechnen mit ihnen gefallen ist. Der Grund liegt darin, dass aus Effektivitätsgründen die arithmetischen Operationen PROLOG untypisch implementiert sind. Außerdem unterscheiden sich hier die verschiedenen PROLOG Systeme. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Zahlentypen In SWI-PROLOG gibt es zwei verschiedene Zahlentypen: • integer (ganze Zahlen) • float

Zahlentypen In SWI-PROLOG gibt es zwei verschiedene Zahlentypen: • integer (ganze Zahlen) • float (Kommazahlen) SWI-PROLOG versteckt den Unterschied zwischen den Zahlentypen, der Benutzer muss sich also nicht darum kümmern! GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

is - Operator In PROLOG erfolgt eine Wertzuweisung über den is – Operator: X

is - Operator In PROLOG erfolgt eine Wertzuweisung über den is – Operator: X is 3 + 5. Y is 17 mod 3. X is 3, Y is X * 2 + 7. X is 2 + 3, Y is X * 5. X is (1 + 2 + 3 + 4) / 10. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Grundrechenarten Die Grundrechenarten schreibt man in SWI-Prolog wie folgt: X+Y X-Y X*Y X/Y X

Grundrechenarten Die Grundrechenarten schreibt man in SWI-Prolog wie folgt: X+Y X-Y X*Y X/Y X // Y X mod Y GK Info 13 (Hö) Addition Subtraktion Multiplikation Division ganzzahlige Division Rest bei der ganzzahligen Division PROLOG – Eine Sprache der Künstlichen Intelligenz

Vergleichs-Operatoren In SWI-PROLOG gibt es folgende Vergleichsoperatoren: X =: = Y numerisch gleich X

Vergleichs-Operatoren In SWI-PROLOG gibt es folgende Vergleichsoperatoren: X =: = Y numerisch gleich X == Y numerisch ungleich X<Y numerisch kleiner X>Y numerisch größer X =< Y numerisch kleiner oder gleich X >= Y numerisch größer oder gleich GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Funktionen I In SWI-PROLOG gibt es u. a. folgende Funktionen: abs(E) Absolutwert von E

Funktionen I In SWI-PROLOG gibt es u. a. folgende Funktionen: abs(E) Absolutwert von E max(E 1, E 2), min(E 1, E 2) sqrt(E) Max. / Min. von E 1 und E 2 E 1 ^ E 2 sin(E), cos(E), tan(E) asin(E), acos(E), atan(E) log(E), Log 10(E) E 1 hoch E 2 exp(X) e - Funktion random(Int) Zufallszahl aus [ 0; Int [ GK Info 13 (Hö) Wurzel aus E trig. Funktionen Ln / Lg - Funktionen PROLOG – Eine Sprache der Künstlichen Intelligenz

Funktionen II In SWI-PROLOG gibt es folgende Spezial-Funktionen für integer – Zahlen: between(Low, High,

Funktionen II In SWI-PROLOG gibt es folgende Spezial-Funktionen für integer – Zahlen: between(Low, High, Value) erfüllt für Low <= Value <= High ist Value eine Variable, so durchläuft sie schrittweise alle Werte zwischen Low und High erfüllt für Int 2 = Int 1 + 1 succ(Int 1, Int 2) ein Argument kann eine Variable sein erfüllt für Int 3 = Int 1 + Int 2 plus(Int 1, Int 2, Int 3) ein Argument kann eine Variable sein GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 1 Aufgabe: Ein PROLOG-Programm soll angeben können, wer in einem bestimmten Jahr Kanzler

Beispiel 1 Aufgabe: Ein PROLOG-Programm soll angeben können, wer in einem bestimmten Jahr Kanzler der Bundesrepublik Deutschland war. Prolog: kanzler(adenauer, 1949, 1963). kanzler(kiesinger, 1966, 1969). kanzler(schmidt, 1974, 1982). kanzler(schroeder, 1989, 2005). regiert(K, J) : - kanzler(K, A, E), GK Info 13 (Hö) kanzler(erhard, 1963, 1966). kanzler(brandt, 1969, 1974). kanzler(kohl, 1982, 1998). kanzler(merkel, 2005, 2007). A =< J, E >= J. PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 1 Test: regiert(K, 1960). regiert(K, 1974). regiert(K, 1900). regiert(kohl, 1988). regiert(kohl, J). GK

Beispiel 1 Test: regiert(K, 1960). regiert(K, 1974). regiert(K, 1900). regiert(kohl, 1988). regiert(kohl, J). GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 2 Aufgabe: Das PROLOG-Programm soll die Regierungsdauer der einzelnen Kanzler angeben können. Prolog:

Beispiel 2 Aufgabe: Das PROLOG-Programm soll die Regierungsdauer der einzelnen Kanzler angeben können. Prolog: reg_dauer(K, D) : - kanzler(K, A, E), D is E - A. Test: reg_dauer(adenauer, J). reg_dauer(brandt, 10). reg_dauer(K, 3). GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 3 Aufgabe: Ein PROLOG-Programm soll die Fakultät berechnen können: 0! = 1; n!

Beispiel 3 Aufgabe: Ein PROLOG-Programm soll die Fakultät berechnen können: 0! = 1; n! = n * (n-1)! für n>0 Prolog: fak(0, 1). fak(N, F) : - N > 0, N 1 is N - 1, fak(N 1, F 1), F is N * F 1. Test: fak(4, F). fak(3, 5). fak(N, 24). GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 4 Aufgabe: Dies ist eine Aufgabe von Adam Riese: Setzt man für das

Beispiel 4 Aufgabe: Dies ist eine Aufgabe von Adam Riese: Setzt man für das Erbe einer Tochter x Gulden an, so erhält man folgende Gleichung: x + 2 x + 2*2 x = 360 GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 4 Lösung in Prolog: loesung(X) : - between(1, 360, X), 360 is X

Beispiel 4 Lösung in Prolog: loesung(X) : - between(1, 360, X), 360 is X + 2*X + 2*2*X. Erklärung: - das Prädikat between erzeugt der Reihe nach alle natürlichen Zahlen zwischen 1 und 360 - anschließend wird überprüft, ob diese die Bedingung des Rätsels erfüllen - Prinzip: erzeuge und überprüfe GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 5 Auf einer Wiese hütet Liesel Schafe und Gänse. Lehrer Flachsel, der gerade

Beispiel 5 Auf einer Wiese hütet Liesel Schafe und Gänse. Lehrer Flachsel, der gerade vorbeikommt, fragt Liesel nach deren Anzahl. Diese antwortet: „Es sind doppelt so viele Gänse wie Schafe, insgesamt habe ich 88 Beine gezählt. “ Wie viele von jeder Sorte sind es? Es soll ein PROLOG-Prädikat vorhanden definiert werden, das die Anfrage ? - vorhanden(88, Schafe, Gaense). gestattet. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 5 Idee: zwei Zählschleifen für Schafanzahl und für Gänseanzahl prüfen die beiden Bedingungen

Beispiel 5 Idee: zwei Zählschleifen für Schafanzahl und für Gänseanzahl prüfen die beiden Bedingungen Schafe*4 + Gänse*2 = 88 Schafe*2 + Gänse = 0 Prolog: vorhanden(Beine, Schafe, Gaense) : GS is Beine/4, between(1, GS, Schafe), GG is Beine/2, between(1, GG, Gaense), Beine is Schafe*4 + Gaense*2, Gaense is Schafe*2. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 6 Aufgabe: Die Teilermenge einer Zahl ist auszugeben. Idee: (1) Systemprädikat findall(X, Bedingung,

Beispiel 6 Aufgabe: Die Teilermenge einer Zahl ist auszugeben. Idee: (1) Systemprädikat findall(X, Bedingung, Liste) alle Objekte X, die Bedingung erfüllen, werden in der Liste zusammengefasst (2) die Teilermenge ist: {T| T teilt Zahl} teiler_menge(Zahl, Menge) : findall(T, teilt(T, Zahl), Menge). GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 6 Idee: (3) T teilt Zahl, wenn: - T zwischen 1 und Zahl

Beispiel 6 Idee: (3) T teilt Zahl, wenn: - T zwischen 1 und Zahl liegt - der Rest bei der Division Zahl/T Null ergibt teilt(T, Zahl) : - between(1, Zahl, T), Zahl mod T =: = 0. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Aufgaben Lösen Sie im PROLOG-Arbeitsbuch die Aufgaben S. 30/1 – S. 35/22 GK Info

Aufgaben Lösen Sie im PROLOG-Arbeitsbuch die Aufgaben S. 30/1 – S. 35/22 GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Aufgaben Lösen Sie die Aufgaben 21 bis 25. GK Info 13 (Hö) PROLOG –

Aufgaben Lösen Sie die Aufgaben 21 bis 25. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz