logo

Prolog-Programme

Die Verwendung der integrierten Prädikate, der Reihenfolge der Ziele oder die Angabe eines Ziels an der Systemeingabeaufforderung wäre an sich von geringem Wert. Um ein Prolog-Programm zu schreiben, muss der Benutzer zunächst ein Programm schreiben, das in der Prolog-Sprache geschrieben ist, dieses Programm laden und dann an der Eingabeaufforderung eine Sequenz aus einem oder mehreren Zielen angeben.

Um ein Programm in Prolog zu erstellen, besteht die einfache Möglichkeit darin, es in den Texteditor einzugeben und es dann als Textdatei zu speichern prolog1.pl .

Das folgende Beispiel zeigt ein einfaches Programm von Prolog. Das Programm enthält drei Komponenten, die als Klauseln bezeichnet werden. Jede Klausel wird mit einem Punkt abgeschlossen.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Verwenden des integrierten Prädikats ' konsultieren' , kann das obige Programm in das Prolog-System geladen werden.

?-consult('prolog1.pl').

Dies zeigt, dass die Datei prolog1.pl vorhanden ist und das Prolog-Programm systemisch korrekt ist, was bedeutet, dass es gültige Klauseln hat, das Ziel erfolgreich ist und zur Bestätigung, dass das Programm korrekt gelesen wurde, eine oder mehrere Ausgabezeilen erzeugt. z.B.,

?-
# 0,00 Sekunden, um prolog1.pl zu konsultieren
?-

Linksverknüpfung vs. Rechtsverknüpfung

Die Alternative zu „Konsultieren“ ist „Laden“, die in der Menüoption vorhanden ist, wenn das Prolog-System über eine grafische Benutzeroberfläche verfügt.

Wenn das Programm geladen wird, wird die Klausel in einem Speicherbereich abgelegt, und dieser Speicherbereich wird als Prolog-Datenbank bezeichnet. Geben Sie als Reaktion auf die Systemaufforderung eine Abfolge von Zielen an, woraufhin Prolog nach den zur Bewertung der Ziele erforderlichen Klauseln sucht und diese verwendet.

Terminologie

Im folgenden Programm zeigen drei Zeilen die Klauseln.

 dog(rottweiler). cat(munchkin). animal(A) :- cat(A). 

Mit dem Punkt wird jede Klausel beendet. Prolog-Programme haben eine Folge von Klauseln. Durch diese Klauseln werden Sachverhalte oder Regeln beschrieben.

Beispiel von Fakten Ist Hund (Rottweiler) Und Katze (Munchkin) . Sie meinen, dass ' Rottweiler ist ein Hund' und ' Munchkin ist eine Katze'.

Hund wird Prädikat genannt. Hund enthält ein Argument. Wort ' Rottweiler' in Klammern ( ) eingeschlossen. Rottweiler wird ein Atom genannt.

Das Beispiel einer Regel ist die letzte Zeile des Programms.

 animal(A) :- dog(A). 

Der Doppelpunkt (:-) wird als „if“ gelesen. Hier ist A eine Variable und repräsentiert einen beliebigen Wert. Auf natürliche Weise kann die Regel so gelesen werden: „Wenn A ein Tier ist, dann ist A ein Hund.“

Die obige Klausel zeigt, dass die Rottweiler ist ein Tier. Eine solche Schlussfolgerung kann auch von Prolog vorgenommen werden:

?- Tier(Rottweiler).
Ja

Um das zu implizieren Munchkin ist ein Tier, dafür gibt es keine Beweise.

?- Tier(Munchkin).
NEIN

Mehr Terminologie

Durch die Bewertung einer Zielbedingung wird bestimmt, ob diese erfüllt ist oder nicht. Es bedeutet auch, dass das Ziel als wahr oder falsch ausgewertet wird.

Beachten Sie, dass die Eingabe eines Ziels durch einen Benutzer manchmal als Befehl interpretiert werden kann. Zum Beispiel,

?- Halt. „Es wird verwendet, um das Prolog-System zu verlassen.“

Manchmal kann es als eine Frage betrachtet werden wie:

?- Tier(Rottweiler). & 'Ist Rottweiler ein Tier?'

Das folgende Programm zeigt ein weiteres Beispiel über Tiere. Es umfasst acht Klauseln. Der Kommentar wird durch den gesamten Text zwischen /* und */ angezeigt.

 /* Another Program of Animal */ Dog(rottweiler). cat(sphynx). dog(poodle). dog(bulldog). cat(bengal). dog(dobermann). cat(himalayan). cat(singapura). /* This Prolog program consists of various clauses. It is always terminated using the full stop.*/ 

Prädikat Hund und Prädikat Katze haben jeweils vier Klauseln. Angenommen, das Programm wurde in einer Textdatei „animal.pl“ gespeichert und die Ausgabe wird durch Laden des Programms generiert. An der Systemeingabeaufforderung geben wir eine Zielsequenz wie folgt ein:

?- Consult('animals1.pl'). Systemaufforderung
# 0,01 Sekunden, um Animals.pl zu konsultieren Animals.pl wurde mit der Consult geladen

?- Hund(Rottweiler).
Ja

?- Hund(Boxer).
NEIN

?- Hund(A).
A = Rottweiler pausiert – Eingabetaste wird vom Benutzer gedrückt

?- Hund(B).
B = Rottweiler; pausiert? Benutzer drückt ;
B = Pudel; pausiert? Benutzer drückt ;
B = Bulldogge; pausiert? Benutzer drückt ;
B = Dobermann Keine Pause? Es geht in die nächste Zeile

?- Katze(A). A = Sphinx; Pause ? Benutzer drückt;
A = Bengalen macht eine Pause? Der Benutzer drückt die Eingabetaste

?- zuhören(Hund). Es werden alle Klauseln aufgelistet, die das Prädikat Hund definieren

/* Hund/1 */

Hund (Rottweiler).
Hund (Pudel).
Hund (Bulldogge).
Hund (Dobermann).
Ja
?-

In diesem Beispiel werden verschiedene neue Funktionen von Prolog vorgestellt. Die Abfrage lautet wie folgt:

?- Hund(A).

Das bedeutet, dass Sie den A-Wert ermitteln müssen, und es wird der Name des Hundes sein. Die Antwort von Prolog lautet wie folgt:

A = Rottweiler

Andere mögliche Antworten von A sind wie folgt: Pudel, Bulldogge, Dobermann. Dadurch wird die Prolog-Pause verursacht, und aus diesem Grund müssen wir warten, bis der Benutzer die Eingabetaste drückt, bevor die Systemaufforderung ?- ausgegeben wird.

Die nächste Abfrage können wir wie folgt eingeben:

?- Hund(B).

Diese Abfrage ist die gleiche wie zuvor. Die obige Abfrage bedeutet: „Suchen Sie den B-Wert und es wird der Name eines Hundes sein.“ Die Antwort von Prolog lautet wie folgt:

B = Rottweiler

Singleton-Designmuster Java

Prolog wird erneut pausieren. Dieses Mal drückt der Benutzer die Semikolon-Taste (;). Jetzt wird Prolog einen alternativen Wert von B finden, der den Zielhund(B) erfüllt. Es wird wie folgt geantwortet:

B = Pudel

Prolog wird erneut pausieren. Die Semikolon-Taste (;) wird vom Benutzer erneut gedrückt. Prolog liefert eine weitere Lösung wie folgt:

B = Bulldogge

Prolog wird erneut pausieren. Die Semikolon-Taste (;) wird vom Benutzer erneut gedrückt. Prolog liefert eine weitere Lösung wie folgt:

B = Dobermann

Prolog erkennt, dass keine Lösung mehr verfügbar ist, indem es nicht pausiert, sondern die Systemaufforderung ?- indem es sofort zur Ausgabe übergeht.

arraylist.sort

In diesem Beispiel wird ein neues integriertes Prädikat eingeführt. Angabe des Ziels

?- Auflistung (Hund)

Im obigen Ziel listet Prolog alle vier Klauseln auf, die das Prädikat Hund definieren. Sie werden in derselben Reihenfolge definiert, in der sie in die Datenbank geladen wurden.

Die Verwendung von Variablen in der Abfrage wird anhand des folgenden Beispiels veranschaulicht. Die Reihenfolge der Ziele ist wie folgt:

?-cat(A),dog(B).

Dadurch erhalten wir alle möglichen Kombinationen einer Katze und eines Hundes.

?-cat(A),dog(B).
A = Sphinx,
B = Rottweiler;

A = Sphinx,
B = Pudel;

A = Sphinx,
B = Bulldogge;

A = Sphinx,
B = Dobermann;

usw.

Im Gegensatz dazu ist die Reihenfolge der Ziele wie folgt:

?-Katze(A), Hund(A).

Dadurch werden alle Tiere angezeigt, die sowohl eine Katze als auch ein Hund sind (in der Datenbank gibt es kein solches Tier). Hier ist A „beliebiger Wert“ sowohl in cat(A) als auch in dog(A), aber beide müssen den gleichen Wert haben.

?-cat(A),dog(A).
NEIN