Главная / Программирование /
Основы программирования на языке 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) множество существ на левом берегу и местоположение лодки