Jakie są operatory porównania w języku prolog
OPERATORY :
operand - duza literka X,Y,Z przekazywana w predykacie
operand lewostronny - operand po lewej stronnie,
vice versa dla operanda prawostronnego
X is Y - X M U S I byc operandem ,operand prawostronny może być
czymś innym, np wyrażeniem arytematycznym
X =:= Y - wartosci arytmetyczne wyrazen X i Y sa takie same
X == Y - wartosci arytmetyczne wyrazen X i Y sa rozne
X == Y - termy X i Y sa identyczne, maja identyczna strukture i identyczne
argumenty z dokladnoscia do nazwy, np. X==Y jest zawsze nieprawda
X == Y —termy X i Y nie sa identyczne
Za co odpowiada operator =
Operator = porównuje operandy. Jeśli obie są termami stałymi, zwraca logiczny wyniki porównania. Jeśli jeden operand lub oba operandy są zmiennymi, wtedy wynik jest zawszę prawdą, z efektem ubocznym przypisania zmiennej stałego operandu. Gdy oba operandy były zmiennymi, to pozostają nimi, ale są zunifikowane, czyli muszą mieć równą wartość w przyszłości.
Czym są reguły w języku Prolog?
Reguły w języku Prolog to konstrukcje logiczne, które określają zależności między różnymi faktami i predykatami. Składają się z nagłówka (celu) i ciała, gdzie ciało zawiera warunki, które muszą być spełnione, aby nagłówek był prawdziwy. Reguły są zapisane w postaci klauzul Horn’a, na przykład: nagłówek :- warunek1, warunek2.. Są one podstawą wnioskowania w Prologu, pozwalając na definiowanie bardziej złożonych relacji niż proste fakty. Dzięki regułom, Prolog może wykonywać rekurencyjne zapytania i rozwiązywać problemy poprzez proces dowodzenia.
W jaki sposob Prolog znajduje odpowiedzi na pytania?
Prolog szuka odpowiedzi na pytania w bazie danych:
Sukces wywołania rekurencyjnego oznacza pozytywną odpowiedź na pytanie.
Czym jest język Prolog?
Prolog to język programowania logicznego, używany głównie w sztucznej inteligencji i lingwistyce komputerowej. Opiera się na deklaratywnym podejściu, gdzie programista definiuje fakty i reguły, a program sam wnioskuje rozwiązania. Jego składnia i semantyka są oparte na rachunku predykatów pierwszego rzędu. W Prologu, zapytania są zadawane w celu sprawdzenia, czy dane fakty i reguły mogą być spełnione, co czyni go szczególnie użytecznym w problemach związanych z logiką i przeszukiwaniem przestrzeni stanów. Jest ceniony za zdolność do rozwiązywania problemów przez wnioskowanie i rekurencję.
Co to klauzula Horn’a
Klauzula Horn’a w kontekście Prologu to specjalna forma klauzuli logicznej, która jest używana do reprezentowania faktów i reguł. Składa się z co najwyżej jednego literału dodatniego (konkluzji) i dowolnej liczby literałów ujemnych (przesłanek). Klauzula Horn’a ma postać:
Fakt: P. (gdzie P jest literałem dodatnim)
Reguła: P :- Q1, Q2, …, Qn. (gdzie P jest literałem dodatnim, a Q1, Q2, …, Qn są literałami, które mogą być zarówno dodatnie, jak i ujemne)
Dzięki tej strukturze, klauzule Horn’a są prostsze do przetwarzania przez algorytmy wnioskowania, co czyni je efektywnym narzędziem w języku Prolog.
Spojniki logiczne w Prolog
ALTERNATYWY uzywamy za pomoca “;”
KONIUNKCJI uzywamy za pomoca “,”
Jak tworzymy listę w Prologu?
Listę w Prologu tworzymy za pomocą nawiasów kwadratowych [ ].
Listę można zapisać za pomocą określenia głowy i reszty w postaci [Head|Rest], podobnie do języka Huskell
Do czego używa się operatora odciecia?
Odciecia uzywa sie do :
Jak wyglada operator odciecia
! przykładowo fakt(a) :- !.
Jakie operacje można wykonać na termach w Prologu?
var(term) - sprawdza, czy term jest zmienną.
nonvar(term) - odwrotnie niż var.
atom(term) - sprawdza, czy term jest atomem.
integer(term) - sprawdza, czy term jest liczbą całkowitą.
atomic(term) - sprawdza, czy term jest atomem lub liczbą.
clause - zwraca klauzulę z bazy danych.
functor - zwraca funktor termu.
arg - zwraca argumenty termu.
=.. - zamienia term na listę.
Jakie predykaty umożliwiają dynamiczne modyfikowanie bazy danych w Prologu?
asserta(term) - dodaje term na początek bazy danych.
assertz(term) - dodaje term na koniec bazy danych.
retract(term) - usuwa term z bazy danych.
Operacje te pozwalają na dynamiczne modyfikowanie bazy wiedzy w Prologu.
Jakie są podstawowe operacje wejścia/wyjścia w Prologu?
Wczytywanie i wypisywanie termów:
read(X) - wczytuje z terminala jeden term zakończony kropką . i podstawia go pod zmienną X.
write(X) - wypisuje na terminalu wartość termu podstawioną pod zmienną X.
see(‘stary’) - otwiera istniejący plik do zapisu.
seen - kończy czytanie z pliku i zamyka plik.
consult(plik1) - ładuje plik z aksjomatami.
reconsult(plik2) - ponownie ładuje plik z aksjomatami.
nl - wypisuje znak nowej linii na terminalu.
Wczytywanie i wypisywanie znaków:
get(X) - czyta znak (w postaci numerycznego kodu znaku).
put(X) - pisze jeden znak, np. put(104) wypisuje znak h.
Operacje na plikach:
tell(‘nowy’) - otwiera nowy plik o nazwie ‘nowy’ i przełącza standardowe wyjście na ten plik.
told - zamyka plik aktualnie otwarty i przełącza standardowe wyjście na terminal.