Paradygmaty programowania/Test 13: Programowanie w logice w Prologu I

From Studia Informatyczne

Test 13

Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(b, X). Co odpowie interpreter po wpisaniu celu a(b, c)?

"nie" (i nic więcej)

"tak" (i nic więcej)

X = c, a następnie "nie"

X = c, a następnie "tak"

Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(b, X). Co odpowie interpreter po wpisaniu celu a(X, c)?

"nie" (i nic więcej)

"tak" (i nic więcej)

X = b, a następnie "nie"

X = b, a następnie "tak"

Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(b, X). Co odpowie interpreter po wpisaniu celu a(X, Y)?

"nie" (i nic więcej)

"tak" (i nic więcej)

X = b, a następnie "nie"

X = b, a następnie "tak"

Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(X, X). Co można sprawdzić za jej pomocą?

czy podane argumenty dają się uzgodnić

czy podane argumenty są listami tej samej długości

czy podane argumenty są tego samego typu

klauzula ta jest niepoprawna

Która klauzula nie wystarcza do tego, by odpowiedzieć twierdząco na pytanie a(b, c)?

a(b, X).

a(X, c).

a(X, X).

a(_, _).

Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(X, X). Co będzie wynikiem wpisania celu a(X, Y)?

odpowiedź "nie" (i nic więcej)

odpowiedź "tak" (i nic więcej)

utożsamienie zmiennych X i Y, co interpreter wypisze jako X = Y

wypisanie komunikatu o błędzie

Załóżmy, że program zawiera jedną tylko klauzulę: a(b(c), d, e(f, g)). Który cel jest niepoprawny?

a(X).

a(X, Y, Z).

a(X, Y, e(Z1, Z2)).

a(_, _, X).

Załóżmy, że program zawiera jedną tylko klauzulę: a(b, c, d). Dlaczego cel a(X) jest niepoprawny?

funktor a jest określony dla stałych, a nie dla zmiennych

funktor a wymaga trzech parametrów

nie da się sprawdzić typu celu

ten cel jest poprawny

Jaka będzie konkretyzacja zmiennej X po uzgodnieniu listy [1 | X] z listą [Y, 2, 3, Z]?

[2, 3]

[2, 3, Z]

[2, 3 | Z]

to uzgodnienie nie powiedzie się

W której klauzuli użycie zmiennej anonimowej (znak podkreślenia) zamiast X zmieniłoby sens klauzuli?

a(X, X).

a(b, X).

a(b, X) :- c(b).

a(X, Y) :- c(Y).