Paradygmaty programowania/Test 7: Programowanie w logice - przegląd
Test 7
Używane w Prologu klauzule Horna mają w następniku:
co najmniej jeden term
dokładnie jeden term
dokładnie dwa termy
zero lub jeden term
Stosowana w Prologu metoda wnioskowania to:
indukcja pozaskończona
rezolucja
unifikacja
zasada instancjonowania prostego
Klauzula ,,dziadek(X, Z) \:- ojciec(X, Y), ojciec(Y, Z)".:
mówi tylko, że jeśli X jest ojcem Y i Y jest ojcem Z, to X jest dziadkiem Z
wyklucza, by któs mógł być swoim własnym dziadkiem
wyklucza, by któs mógł być swoim własnym ojcem
jest niepoprawna składniowo
Do tworzenia i rozkładania list w Prologu stosuje się:
funkcje cons, head i tail
operatory ++, + i -
operator | i odpowiednie dopasowania
w Prologu nie ma list
Zapis ,,X is 3 * Y + 4 w Prologu powoduje:
podstawienie wartości wyrażenia 3*Y+4 pod zmienną X
utożsamienie (lub sprawdzenie utożsamienia) zmiennej X z wartością wyrażenia 3*Y+4
wypisanie rozwiązania równania X\=3*Y+4
taki zapis jest niepoprawny
Jeśli Prologowi nie uda się udowodnić jednego z podcelów, to:
wraca do poprzednich podcelów, próbując znaleźć alternatywne rozwiązania
wypisuje komunikat o niepowodzeniu rezolucji
zgłasza błąd wykonania
nie robi nic, tzn. kontynuuje działanie
Dla stwierdzeń złożonych Prolog stosuje:
przeszukiwanie w głąb
przeszukiwanie wszerz
przeszukiwanie w głąb lub wszerz, w zależności od dostępnej pamięci
inną metdoę, nie wymienioną tutaj
Zapis [X | Y] w Prologu oznacza:
konkatenację list X i Y
listę, gdzie X jest głową, a Y -- ogonem listy
parę uporządkowaną złożoną z elementów X i Y
wyrażenie warunkowe z dozorem X
Jaką klauzulę należałoby dopisać przed ,,f(X, [_ | Y]) \:- f(X, Y).", by otrzymać funktor sprawdzający przynależność elementu do listy?
f(X, []).
f(X, [X]).
f(X, [X | _]).
tego nie da się tak zrobić
Lista [1, [2, 3], 4, []] ma długość:
3
4
5
jest niepoprawna składniowo