Prolog – Wprowadzenie
Prolog (skrót od francuskiego Programmation en Logique) to popularny język programowania logicznego, stworzony głównie do analizy języków naturalnych, a także wykorzystywany w sztucznej inteligencji. Jest to język deklaratywny, co oznacza, że koncentruje się na opisie problemu, a nie na sposobie jego rozwiązania.
Podstawy programowania w Prologu
Program w Prologu składa się z klauzul, które są faktami lub regułami. Aby uruchomić program, należy wprowadzić zapytanie. Przykładem relacji jest stwierdzenie „John ma książkę”, które wskazuje na posiadanie. W Prologu obiekty reprezentowane są za pomocą terminów.
Ogólne zasady
W Prologu bazą danych są fakty i reguły, a podstawową jednostką jest predykat, składający się z nagłówka i argumentów, np. ojciec(tomasz, agata)
. Predykaty nie mają przypisanego znaczenia, a ich interpretacja zależy od kontekstu. Reguły dotyczące równości terminów są następujące:
- Równość stałych opiera się na ich identyczności.
- Równość zmiennej i termu wynika z instancji.
- Równanie terminów złożonych wymaga zgodności funktorów i argumentów.
Listy w Prologu
Lista to uporządkowana sekwencja terminów zapisana w nawiasach kwadratowych. Elementy listy mogą być różnego typu, a lista może być dzielona na głowę i ogon za pomocą symbolu „|”. Przykłady list w Prologu to:
[jabłko, gruszka, pomarańcza]
[1, 2, 3]
Rekurencja
Prolog obsługuje rekurencję, co pozwala na operowanie na listach i wykonywanie działań na ich elementach poprzez dzielenie problemu na prostsze części. Proces rekurencyjny kończy się, gdy dalsze wywołania nie są potrzebne.
Operacje na listach
Poniżej przedstawiono przykłady operacji na listach w Prologu:
% Sprawdzenie, czy element należy do listy
list_member(X, [X|_]).
list_member(X, [_|Y]) :- list_member(X, Y).
% Łączenie dwóch list
list_append([], X, X).
list_append([H|T], X, [H|Y]) :- list_append(T, X, Y).
% Suma elementów listy
suma_elementow_listy([], 0).
suma_elementow_listy([H|T], Wynik) :- suma_elementow_listy(T, Tmp), Wynik is H + Tmp.