Blog (1)
Komentarze (205)
Recenzje (0)
@szymon189Jezyk programowania Prolog

Jezyk programowania Prolog

24.05.2011 | aktual.: 26.05.2011 18:57

Prolog język programowania logicznego. Program Prologu to opis reguły wnioskowania oraz celu do którego zmierzamy, a rola komputera polega na odpowiednim zastosowaniu reguł aby znaleźć rozwiązanie.

Do programowania w Prologu, używałem darmowego SWI-Prolog oraz edytora SWI-Prolog-Editor.

Instalacja programu

Pobieramy na początek SWI‑Prolog, który instalujemy na swoim sprzęcie, a później edytor, który ułatwi nam pracę z programem.

Obsługa programu

Podczas tworzenia nowego projektu powinniśmy go najpierw zapisać, a przed jego uruchomieniem dokonać sprawdzenia (Start - Consult lub klawisz F9). Górne cześć to okno edytora, gdzie umieszczamy fakty oraz reguły. Jeżeli mamy zamiar wprowadzić jakieś zapytanie to wykonujemy go w dolnej części.

Fakty

W Prologu podaje się bazę faktów i reguł. Potem można wykonywać zapytania na tej bazie. Podstawową jednostką w Prologu jest predykat. Predykat składa się z nagłówka i argumentów, na przykład: ojciec(tomasz, agata), gdzie ojciec to nagłówek a tomasz i agata to argumenty.

Przykładowe fakty:

rodzic(jacek,krzys).
rodzic(iza,krzys).
rodzic(jacek,ola).
rodzic(iza,ola).
rodzic(andrzej,jas).
rodzic(anna,jas).
rodzic(krystyna,iza).
rodzic(krystyna,andrzej).
rodzic(halina,jacek).
rodzic(jozef,jacek).
rodzic(jan,iza).
rodzic(jan,andrzej).
rodzic(cecylia,halina).

Przykładowe rozwiązanie:

?- rodzic(jacek,krzys).
yes
?- rodzic(ola,krzys).
no

Sprawdzenie czy Jacek jest rodzicem Krzysia? Tak.

Możemy sprawdzić kto jest rodzicem Oli.

?- rodzic(X,ola).
jacek ;
iza

Dodając kolejne fakty do obecnych

kobieta(iza).
kobieta(anna).
kobieta(ola).
kobieta(krystyna).
kobieta(halina).
kobieta(hanna).
kobieta(cecylia).
mezczyzna(krzys).
mezczyzna(jacek).
mezczyzna(andrzej).
mezczyzna(jozef).
mezczyzna(jan).

Sprawdźmy teraz kto jest wnukami Krystyny.

?- rodzic(krystyna, X), rodzic(X,Y).

Możemy zapisać to w inny sposób dodając regułę

babcia(X,Y):-rodzic(X,Z),rodzic(Z,Y),kobieta(X).

Sprawdźmy czy działa:

?- babcia(krystyna,Y).
Y = krzys ;
Y = ola ;
Y = jas.
Wybrane dla Ciebie
Komentarze (14)