Programmieren in Logik

Slides:



Advertisements
Ähnliche Präsentationen
Programmieren in Logik
Advertisements

ALP II: Objektorientierte Programmierung Sommersemester 2006
3. Operatoren und Ausdrücke
II. Arithmetik. II. Arithmetik 4. Die natürlichen Zahlen.
Polynomial Root Isolation
Gruppenwettbewerb. Gruppenwettbewerb Aufgabe G1 (8 Punkte)
Algebraische Zahlen: Exaktes Rechnen mit Wurzeln
Mathematik hat Geschichte
Schnelle Matrizenoperationen von Christian Büttner
Claudio Moraga; Gisbert Dittrich
Zusammenfassung der Vorwoche
2. Programmstruktur – Teil 2
Künstlichen Intelligenz
Kapitel 6. Suchverfahren
Seminar Stochastik im WS 02/03
Listen [mia, vincent, jules, yolanda] [mia, robber(honey_bunny), X, 2, mia] [] [mia, [vincent, jules], [butch, girlfriend(butch)]] [[], dead(zed), [2,
X =. Allgemeine Form der Gleichung (Addition): Allgemeine FormLösungshinweis x + a = b a + x = b x = b - a Allgemeine Form der Gleichung (Subtraktion):
Java: Objektorientierte Programmierung
C- Syntax. Bestandteile der Sprache C: Ausdrücke Anweisungen.
Algorithmentheorie 04 –Hashing
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Kapitel 5 Stetigkeit.
Kapitel 1 Das Schubfachprinzip
3. Rechnen mit natürlichen Zahlen
Semantik von Prolog & Unifikation
Fakten, Regeln und Anfragen
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
MicroSim DesignLab Sichere Lösungen unter Windows 95/NT.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Zahlen geschickt addieren
Julien Gaugaz 7. April 2011.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Das Wurzelzeichen √ und seine Bedeutung
Division.
Spiegelzahlen.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Kurvendiskussion Los geht´s Klick auf mich! Melanie Gräbner.
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Polynome und schnelle Fourier-Transformation
Multiplikation von Summen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Gleichungen und Gleichungssysteme
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Einführung ins Lösen von Gleichungen
4 6 5 Rechenoperationen hoch 2 ??? hoch 2 ??? hoch 2
Jahrgang 9 G- Kurs Quadratwurzel
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
MODULA-2.
ENDLICHE KÖRPER RSA – VERFAHREN.
PHP: Operatoren und Kontrollstrukturen
Zahlenmengen Eine Wiederholung Mag. Sabine Tullits.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Übersicht Nachtrag zu Ausdrücken
Anführungszeichen?! echo 'Apfel$atf'; // ergibt: Apfel$aft
(Syntax, Strings/Zahlen, Variablen, Arrays)
Prof. Dr. Herbert Göttler, Dr. Peter Dauscher Johannes Gutenberg-Universität, Mainz Einführung in die Funktionsweise von.
Variablen und Datentypen
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Programmieren 1 C++ Aufgaben / Übungen.
Reihenfolge der Operatoren
Lineare Optimierung Nakkiye Günay, Jennifer Kalywas & Corina Unger Jetzt erkläre ich euch die einzelnen Schritte und gebe Tipps!
kleinstes gemeinsames Vielfaches – größter gemeinsamer Teiler
Grundlagen und Grundbegriffe
Theorie der unscharfen Mengen
Das Wurzelzeichen √ und seine Bedeutung
 Präsentation transkript:

Programmieren in Logik 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 • 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 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 (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 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 Addition X - Y Subtraktion X * Y Multiplikation X / Y Division X // Y ganzzahlige Division X mod Y Rest bei der ganzzahligen Division GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

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 max(E1,E2), min(E1,E2) Max. / Min. von E1 und E2 sqrt(E) Wurzel aus E E1 ^ E2 E1 hoch E2 sin(E), cos(E), tan(E) asin(E), acos(E), atan(E) trig. Funktionen log(E), Log10(E) Ln / Lg - Funktionen exp(X) e - Funktion random(Int) Zufallszahl aus [ 0;Int [ GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

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 succ(Int1, Int2) erfüllt für Int2 = Int1 + 1 ein Argument kann eine Variable sein plus(Int1, Int2, Int3) erfüllt für Int3 = Int1 + Int2 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 der Bundesrepublik Deutschland war. Prolog: kanzler(adenauer,1949,1963). kanzler(erhard,1963,1966). kanzler(kiesinger,1966,1969). kanzler(brandt,1969,1974). kanzler(schmidt,1974,1982). kanzler(kohl,1982,1998). kanzler(schroeder,1989,2005). kanzler(merkel,2005,2007). regiert(K,J) :- kanzler(K,A,E), A =< J, E >= J. GK Info 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

Beispiel 1 Test: regiert(K,1960). regiert(K,1974). regiert(K,1900). regiert(kohl,1980). 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: 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! = n * (n-1)! für n>0 Prolog: fak(0,1). fak(N,F) :- N > 0, N1 is N - 1, fak(N1,F1), F is N * F1. 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 Erbe einer Tochter x Gulden an, so erhält man folgende Gleichung: x + x + 2x + 2*2x = 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 + 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 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 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,Liste) alle Objekte X, die 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 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 13 (Hö) PROLOG – Eine Sprache der Künstlichen Intelligenz

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