Paradygmaty programowania/Test 13: Programowanie w logice w Prologu I: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
 
 
Linia 2: Linia 2:
  
 
<quiz type="exclusive">
 
<quiz type="exclusive">
Załóżmy, że w programie prologowym znajduje się jedna tylko klauzula\: a(b, X).  Co odpowie interpreter po wpisaniu celu a(b, c)?
+
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 \= c, a następnie "nie"</wrongoption>
+
<wrongoption reply="Źle">X = c, a następnie "nie"</wrongoption>
<wrongoption reply="Źle">X \= c, a następnie "tak"</wrongoption>
+
<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\: a(b, X).  Co odpowie interpreter po wpisaniu celu a(X, c)?
+
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 \= b, a następnie "nie"</rightoption>
+
<rightoption reply="Dobrze">X = b, a następnie "nie"</rightoption>
<wrongoption reply="Źle">X \= b, a następnie "tak"</wrongoption>
+
<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\: a(b, X).  Co odpowie interpreter po wpisaniu celu a(X, Y)?
+
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 \= b, a następnie "nie"</rightoption>
+
<rightoption reply="Dobrze">X = b, a następnie "nie"</rightoption>
<wrongoption reply="Źle">X \= b, a następnie "tak"</wrongoption>
+
<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\: a(X, X). Co można sprawdzić za jej pomocą?
+
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\: a(X, X). Co będzie wynikiem wpisania celu a(X, Y)?
+
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 \= Y</rightoption>
+
<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ę\: a(b(c), d, e(f, g)).
+
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ę\: a(b, c, d).
+
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) \:- c(b).</wrongoption>
+
<wrongoption reply="Źle">a(b, X) :- c(b).</wrongoption>
<wrongoption reply="Źle">a(X, Y) \:- c(Y).</wrongoption>
+
<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).