Главная / Программирование /
Основы программирования на языке Visual Prolog / Тест 13
Основы программирования на языке Visual Prolog - тест 13
Упражнение 1:
Номер 1
Пусть грамматика имеет вид: d ::= dd | [(]d[)] | empty
, где empty
– пустое слово, в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
Ответ:
 (1) ()
 
 (2) (())()()
 
 (3) )()()
 
 (4) )))(((
 
Номер 2
Пусть грамматика имеет вид: d ::= dd | d[a] | [b]
, где в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
Ответ:
 (1) a
 
 (2) ab
 
 (3) baa
 
 (4) bbb
 
Номер 3
Пусть грамматика имеет вид: d ::= dd | [a]d[a] | [b]
, где в квадратных скобках написаны терминальные символы. Укажите те из перечисленных ниже слов, которые из нее выводятся:
Ответ:
 (1) aabaa
 
 (2) aa
 
 (3) baa
 
 (4) abba
 
Упражнение 2:
Номер 1
В результате вызова string::frontToken(" Karl meets Carla.", X, Y)
переменные X
и Y
примут значения:
Ответ:
 (1) X = "Karl", Y = " meets Carla."
 
 (2) X = " Karl", Y = " meets Carla."
 
 (3) X = "Karl", Y = "meets Carla."
 
 (4) X = "Karl", Y = "meets"
 
Номер 2
В результате вызова string::frontToken(" 23 + 5", X, Y)
переменные X
и Y
примут значения:
Ответ:
 (1) X = " 2", Y = "3 + 5"
 
 (2) X = " 23", Y = " + 5"
 
 (3) X = "23", Y = " + 5"
 
 (4) X = "23", Y = "+ 5"
 
Номер 3
В результате вызова string::frontToken(" f(g( a ))", X, Y)
переменные X
и Y
примут значения:
Ответ:
 (1) X = "f(g(", Y = "a ))"
 
 (2) X = " f", Y = "(g( a ))"
 
 (3) X = "f(g(", Y = " a ))"
 
 (4) X = "f", Y = "(g( a ))"
 
Упражнение 3:
Номер 1
Определение предиката scan
имеет вид:scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !.
scan(_) = [].
Какое значение примет переменная S
в результате вызова S = scan("f(g(1)).")
?
Ответ:
 (1) S = ["f(g(1))", "."]
 
 (2) S = ["f(g(1))."]
 
 (3) S = ["f", "(", "g", "(", "1", ")", ")"]
 
 (4) S = ["f", "(", "g", "(", "1", ")", ")", "."]
 
Номер 2
Определение предиката scan
имеет вид:scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !.
scan(_) = [].
Какое значение примет переменная S
в результате вызова S = scan(" 20 + 2! ")
?
Ответ:
 (1) S = ["20 + 2!"]
 
 (2) S = ["20", "+", "2!"]
 
 (3) S = ["20", "+", "2", "!"]
 
 (4) S = ["2", "0", "+", "2", "!"]
 
Номер 3
Определение предиката scan
имеет вид:scan(S) = [Tok | scan(Rest)]:- string::frontToken(S, Tok, Rest), !.
scan(_) = [].
Какое значение примет переменная S
в результате вызова S = scan(" The cat likes it. ")
?
Ответ:
 (1) S = ["The cat", "likes", "it", "."]
 
 (2) S = ["The", "cat", "likes", "it", "."]
 
 (3) S = ["The", "cat", "likes", "it"]
 
 (4) S = ["The", "cat", "likes", "it."]
 
Упражнение 4:
Номер 1
Вне имплементации класса b
могут вызываться предикаты, объявленные:
Ответ:
 (1) в имплементации класса b
 
 (2) в имплементации класса b
 
 (3) в декларации класса b
и в имплементации класса b
 
 (4) в имплементации класса-наследника 
Номер 2
Определение предиката пишется:
Ответ:
 (1) в имплементации класса 
 (2) в декларации класса 
 (3) в декларации класса и в имплементации класса 
 (4) в декларации класса-наследника 
Номер 3
Объявление домена, который можно использовать в других модулях, пишется:
Ответ:
 (1) в имплементации класса 
 (2) только в декларации класса 
 (3) в интерфейсе или в декларации класса  
 (4) только в интерфейсе 
Упражнение 5:
Номер 1
В языке Visual Prolog классы могут порождать объекты
Ответ:
 (1) тогда и только тогда, когда они имеют интерфейс 
 (2) когда они не имеют интерфейса 
 (3) независимо от того, имеют они интерфейс или нет 
 (4) классы не могут порождать объекты в Visual Prolog 
Номер 2
В языке Visual Prolog предикаты, объявленные в декларации класса
Ответ:
 (1) не должны иметь определения 
 (2) могут быть определены в имплементации любого класса 
 (3) должны быть определены в той же декларации класса 
 (4) определяются в имплементации этого же класса 
Номер 3
Отметьте все верные утверждения. В языке Visual Prolog
Ответ:
 (1) имеются средства для отладки 
 (2) нет средств для отладки 
 (3) можно создавать модули 
 (4) новые пакеты можно создавать только в GUI-приложениях 
Упражнение 6:
Номер 1
Определение класса b
с интерфейсом b
имеет вид: interface b
properties a : integer.
end interface b
class b : b
predicates counter : () -> integer.
end class b
implement b
facts a : integer := 0.
class facts n : integer := 0.
clauses new():- n := n + 1.
counter() = n.
end implement b
Какое число будет напечатано в результате вызова цели X = b::new(), X:a := 2, Y = b::new(), Y:a := X:a + 1, stdio::write(X:a+Y:a+b::counter())
?
Ответ:
 (1) 0 
 (2) 7 
 (3) 5 
 (4) 3 
Номер 2
Определение класса b
с интерфейсом b
имеет вид:interface b
properties a : integer.
end interface b
class b : b
end class b
implement b
facts a : integer := 0.
end implement b
Какое число будет напечатано в результате вызова цели X = b::new(), X:a := 2, Y = b::new(), Y:a := X:a + 1, stdio::write(X:a+Y:a+5)
?
Ответ:
 (1) 0 
 (2) 7 
 (3) 10 
 (4) 8 
Номер 3
Определение класса b
с интерфейсом b
имеет вид:interface b
properties a : integer.
end interface b
class b : b
predicates counter : () -> integer.
end class b
implement b
facts a : integer := 0.
class facts n : integer := 0.
clauses new():- n := n + 1, a := 1 - a.
counter() = n.
end implement b
Какое число будет напечатано в результате вызова цели X = b::new(),Y = b::new(), stdio::write(X:a + Y:a + b::counter())
?
Ответ:
 (1) 0 
 (2) 7 
 (3) 3 
 (4) 4 
Упражнение 7:
Номер 1
Если пространство состояний моделируется в виде графа, то обычно:
Ответ:
 (1) состояниям соответствуют вершины, а переходам между ними ребра 
 (2) состояниям соответствуют ребра, а переходам между ними вершины 
 (3) состояниям и переходам между ними соответствуют ребра 
 (4) состояниям и переходам между ними соответствуют вершины 
Номер 2
Состояниям на графе пространства состояний обычно соответствуют:
Ответ:
 (1) ребра 
 (2) вершины 
 (3) концевые вершины 
 (4) пути 
Номер 3
Если для решения задачи используется граф пространства состояний, то решение является
Ответ:
 (1) его вершиной 
 (2) его ребром 
 (3) его подграфом 
 (4) путем, соединяющим начальное состояние с конечным 
Упражнение 8:
Номер 1
Отметьте верное утверждение. Поиск в глубину на графе пространства состояний обычно используется:
Ответ:
 (1) если пространство состояний очень велико 
 (2) для поиска кратчайших путей 
 (3) если пространство состояний не слишком велико 
 (4) если другими способами найти решение не удается 
Номер 2
Отметьте верное утверждение. Поиск в ширину на графе пространства состояний обычно используется:
Ответ:
 (1) для поиска всех решений, даже если пространство велико 
 (2) для поиска одного из оптимальных решений 
 (3) если пространство состояний очень мало 
 (4) только если не удается найти решение поиском в глубину 
Номер 3
Отметьте верное утверждение. Состояние в задаче о перевозке через реку полностью описывается парой, содержащей
Ответ:
 (1) множества существ на одном берегу и на другом 
 (2) множества существ на одном из берегов и в лодке 
 (3) множество существ в лодке и местоположение лодки 
 (4) множество существ на левом берегу и местоположение лодки