Składnia i struktura

Prolog jest językiem programowania w logice. Jest językiem deklaratywnym, co oznacza, że nie ma potrzeby tworzenia algorytmu, który rozwiązuje problem – należy za to opisać problem tak, by system mógł sam wywnioskować, jakie jest jego rozwiązanie.
 

Opisujemy CO chcemy rozwiązać, a nie JAK chcemy to zrobić.

 
Programowanie polega na podaniu zbioru predykatów – podstawiając do nich stałe tworzymy bazę faktów, a określając związki logiczne między stałymi, tworzymy zbiór reguł.
 
Etapy pracy z prologiem:
1.Definiowanie obiektów poprzez fakty i związki między obiektami.
2.Definiowanie reguł.
3.Tworzenie zapytań.
 
Termy:

  • stałe:
    • atomy – zapisujemy za pomocą ciągu znaków, rozpoczynając od małej litery; zdanie ujęte w apostrofy też jest atomem;
    • liczby – całkowite jak i rzeczywiste;
  • zmienne – zapisujemy jako ciąg znaków, rozpoczynając od dużej litery; zmienną może być też znak podkreślenia, który jest zmienną anonimową, używaną w momencie, w którym chcemy się tylko dowiedzieć, czy coś jest prawdą i nie interesuje nas co to;
  • termy złożone – to struktura, którą tworzymy poprzez zagnieżdżanie termów;

Proste termy to stałe i zmienne, a złożone to zbiór term łączących się w jedną całość. Do łączenia termów potrzebne są predykaty, które podobnie jak stałe są ciągiem cyfr lub znaków rozpoczynających się od małej litery.
predykant(terma, termb)
predykant(terma, predykant(termb,termc))
Natomiast powyżej predykant połączył term prosty terma z termem złożonym, którym jest predykant(termb,termc).
Termy to obiekty.
 
Predykant – to nazwa związku lub relacji między obiektami. Kolejność obiektów w relacji jest bez znaczenia, jednak przyjmując konkretny sposób zapisywania i odczytywania należy się go konsekwentnie trzymać.
 
Fakt – to predykat zakończony kropką; stwierdzenie, które w odniesieniu do opisywanych obiektów uważamy za prawdziwe.
posiada(tomek,auto). – to prawda, że obiekt tomek posiada obiekt auto; przedstawiona całość to fakt.
 
Reguła – składa się z dwóch części:

  • głowa – to jeden predykat; znajduje się po lewej stronie;
  • ciało – to jeden lub więcej predykatów, które rozdzielamy przecinkami (oznaczają logiczne „i”) bądź średnikami (oznaczają logiczne „lub”); znajduje się po prawej stronie;

Głowę od ciała oddzielamy znakami dwukropku i średnika :- oznaczającymi „jeżeli”, a całą regułę kończymy kropką.
Najprościej ujmując reguła to zbiór warunków (które znajdują się w ciele), które muszą zostać spełnione aby cel (którym jest głowa) również został spełniony, czyli aby można było mu przypisać logiczną prawdę.
 
Baza danych – zbiór faktów i reguł.
 
Klauzula to fakty i reguły.
 
Program składa się z uporządkowanych klauzul – klauzule w uruchomionym programie rozpatrywane są w takiej kolejności w jakiej znajdują się w pliku źródłowym.
 
Zapytanie ma strukturę reguły i tak samo kończy się kropką. Wprowadzamy je w kompilatorze języka prolog po znaku zachęty, którym jest znak zapytania ze średnikiem ?-. Wciskając klawisz ENTER zlecamy kompilatorowi przeszukanie naszego programu – czy na podstawie faktów i reguł znajdujących się w tym programie można wykazać prawdziwość wprowadzonego przez nas zapytania – true oznacza, że istnieją takie klauzule, które stwierdzają prawdziwość naszego zapytanie, false oznacza, że albo istnieją klauzule na podstawie których stwierdza się nie prawdę naszego zapytania, albo nie istnieją takie klauzule, na podstawie których można by było stwierdzić prawdę bądź nieprawdę.

  • zapytanie elementarne – nie zawiera zmiennych; oczekiwaną odpowiedzią jest true/false;
  • zapytanie nieelementarne – zawierają zmienne; oczekiwaną odpowiedzią są podstawienia dla wprowadzonych w zapytanie zmiennych.

Komentowanie jest wyłączone.