Paradygmaty programowania/Test 13: Programowanie w logice w Prologu I: Różnice pomiędzy wersjami
m (→Test 13) |
|||
Linia 2: | Linia 2: | ||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
− | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula | + | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(b, X). Co odpowie interpreter po wpisaniu celu a(b, c)? |
<wrongoption reply="Źle">"nie" (i nic więcej)</wrongoption> | <wrongoption reply="Źle">"nie" (i nic więcej)</wrongoption> | ||
<rightoption reply="Dobrze">"tak" (i nic więcej)</rightoption> | <rightoption reply="Dobrze">"tak" (i nic więcej)</rightoption> | ||
− | <wrongoption reply="Źle">X | + | <wrongoption reply="Źle">X = c, a następnie "nie"</wrongoption> |
− | <wrongoption reply="Źle">X | + | <wrongoption reply="Źle">X = c, a następnie "tak"</wrongoption> |
</quiz> | </quiz> | ||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
− | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula | + | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(b, X). Co odpowie interpreter po wpisaniu celu a(X, c)? |
<wrongoption reply="Źle">"nie" (i nic więcej)</wrongoption> | <wrongoption reply="Źle">"nie" (i nic więcej)</wrongoption> | ||
<wrongoption reply="Źle">"tak" (i nic więcej)</wrongoption> | <wrongoption reply="Źle">"tak" (i nic więcej)</wrongoption> | ||
− | <rightoption reply="Dobrze">X | + | <rightoption reply="Dobrze">X = b, a następnie "nie"</rightoption> |
− | <wrongoption reply="Źle">X | + | <wrongoption reply="Źle">X = b, a następnie "tak"</wrongoption> |
</quiz> | </quiz> | ||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
− | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula | + | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(b, X). Co odpowie interpreter po wpisaniu celu a(X, Y)? |
<wrongoption reply="Źle">"nie" (i nic więcej)</wrongoption> | <wrongoption reply="Źle">"nie" (i nic więcej)</wrongoption> | ||
<wrongoption reply="Źle">"tak" (i nic więcej)</wrongoption> | <wrongoption reply="Źle">"tak" (i nic więcej)</wrongoption> | ||
− | <rightoption reply="Dobrze">X | + | <rightoption reply="Dobrze">X = b, a następnie "nie"</rightoption> |
− | <wrongoption reply="Źle">X | + | <wrongoption reply="Źle">X = b, a następnie "tak"</wrongoption> |
</quiz> | </quiz> | ||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
− | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula | + | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(X, X). Co można sprawdzić za jej pomocą? |
<rightoption reply="Dobrze">czy podane argumenty dają się uzgodnić</rightoption> | <rightoption reply="Dobrze">czy podane argumenty dają się uzgodnić</rightoption> | ||
<wrongoption reply="Źle">czy podane argumenty są listami tej samej długości</wrongoption> | <wrongoption reply="Źle">czy podane argumenty są listami tej samej długości</wrongoption> | ||
Linia 42: | Linia 42: | ||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
− | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula | + | Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula: a(X, X). Co będzie wynikiem wpisania celu a(X, Y)? |
<wrongoption reply="Źle">odpowiedź "nie" (i nic więcej)</wrongoption> | <wrongoption reply="Źle">odpowiedź "nie" (i nic więcej)</wrongoption> | ||
<wrongoption reply="Źle">odpowiedź "tak" (i nic więcej)</wrongoption> | <wrongoption reply="Źle">odpowiedź "tak" (i nic więcej)</wrongoption> | ||
− | <rightoption reply="Dobrze">utożsamienie zmiennych X i Y, co interpreter wypisze jako X | + | <rightoption reply="Dobrze">utożsamienie zmiennych X i Y, co interpreter wypisze jako X = Y</rightoption> |
<wrongoption reply="Źle">wypisanie komunikatu o błędzie</wrongoption> | <wrongoption reply="Źle">wypisanie komunikatu o błędzie</wrongoption> | ||
</quiz> | </quiz> | ||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
− | Załóżmy, że program zawiera jedną tylko klauzulę | + | Załóżmy, że program zawiera jedną tylko klauzulę: a(b(c), d, e(f, g)). |
Który cel jest niepoprawny? | Który cel jest niepoprawny? | ||
<rightoption reply="Dobrze">a(X).</rightoption> | <rightoption reply="Dobrze">a(X).</rightoption> | ||
Linia 59: | Linia 59: | ||
<quiz type="exclusive"> | <quiz type="exclusive"> | ||
− | Załóżmy, że program zawiera jedną tylko klauzulę | + | Załóżmy, że program zawiera jedną tylko klauzulę: a(b, c, d). |
Dlaczego cel a(X) jest niepoprawny? | Dlaczego cel a(X) jest niepoprawny? | ||
<wrongoption reply="Źle">funktor a jest określony dla stałych, a nie dla zmiennych</wrongoption> | <wrongoption reply="Źle">funktor a jest określony dla stałych, a nie dla zmiennych</wrongoption> | ||
Linia 79: | Linia 79: | ||
<rightoption reply="Dobrze">a(X, X).</rightoption> | <rightoption reply="Dobrze">a(X, X).</rightoption> | ||
<wrongoption reply="Źle">a(b, X).</wrongoption> | <wrongoption reply="Źle">a(b, X).</wrongoption> | ||
− | <wrongoption reply="Źle">a(b, X) | + | <wrongoption reply="Źle">a(b, X) :- c(b).</wrongoption> |
− | <wrongoption reply="Źle">a(X, Y) | + | <wrongoption reply="Źle">a(X, Y) :- c(Y).</wrongoption> |
</quiz> | </quiz> |
Aktualna wersja na dzień 20:05, 25 wrz 2006
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).