Тема: Выполнение алгоритмов для исполнителя. (A18) Выполнила: Н.Н.Севрюкова, учитель информатики с.Богучаны, Красноярского края
Задача 1: Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости: вверх вниз влево вправо. При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ: сверху свободно снизу свободно слева свободно справа свободно Цикл ПОКА команда выполняется, пока условие истинно, иначе происходит переход на следующую строку. Сколько клеток приведенного лабиринта соответствуют требованию, что, выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение? 1) 1 2) 2 3) 3 4) 0 НАЧАЛО ПОКА вниз ПОКА влево ПОКА вверх ПОКА вправо КОНЕЦ F E D C B A 1 2 3 4 5 6
НАЧАЛО КОНЕЦ ПОКА вниз ПОКА вправо ПОКА влево ПОКА вверх
НАЧАЛО КОНЕЦ ПОКА вверх ПОКА вниз ПОКА влево ПОКА вправо
F E D C B A 1 2 3 4 5 6
F E D C B A 1 2 3 4 5 6
F E D C B A 1 2 3 4 5 6
F E D C B A 1 2 3 4 5 6
F E D C B A 1 2 3 4 5 6 Задача 2 Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости: вверх вниз влево вправо. При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх ↑, вниз ↓, влево ←, вправо →. Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ: сверху свободно снизу свободно слева свободно справа свободно 654321ABCDEF Цикл ПОКА команда выполняется, пока условие истинно, иначе происходит переход на следующую строку. Сколько клеток приведенного лабиринта соответствуют требованию, что, выполнив предложенную ниже программу, РОБОТ уцелеет (не врежется в стену) и остановится в той же клетке, с которой он начал движение? 1) 1 2) 2 3) 3 4) 0 НАЧАЛО ПОКА вверх ПОКА вправо ПОКА вниз ПОКА влево КОНЕЦ
НАЧАЛО КОНЕЦ ПОКА вверх ПОКА влева ПОКА вправо ПОКА вниз
F E D C B A 1 2 3 4 5 6
Тема: Поиск алгоритма минимальной длины для исполнителя.
У исполнителя Калькулятор две команды, которым присвоены номера: 1. прибавь 3 2. умножь на 4 Выполняя первую из них, Калькулятор прибавляет к числу на экране 3, а выполняя вторую, умножает его на 4. Запишите порядок команд в программе получения из числа 3 числа 57, содержащей не более 6 команд, указывая лишь номера команд. (Например, программа 21211 это программа умножь на 4 прибавь 3 умножь на 4 прибавь 3 прибавь 3 которая преобразует число 2 в 50.) Задача
из числа 3 числа 57 «обратный ход»: 1. прибавь 3 2. умножь на 4 22111 Ответ: 22111 Ответ:
Задача Исполнитель Робот действует на клетчатой доске, между соседними клетками которой могут стоять стены. Робот передвигается по клеткам доски и может выполнять команды 1 (вверх), 2 (вниз), 3 (вправо) и 4 (влево), переходя на соседнюю клетку в направлении, указанном в скобках. Если в этом направлении между клетками стоит стена, то Робот разрушается. Робот успешно выполнил программу 3233241 Какую последовательность из трех команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?
1 (вверх), 2 (вниз), 3 (вправо), 4 (влево) 144 Ответ: 414 441 Нарисуем 3233241
Задача У исполнителя, который работает с положительными однобайтовыми двоичными числами, две команды, которым присвоены номера: 1. сдвинь влево 2. вычти 1 Выполняя первую из них, исполнитель сдвигает число на один двоичный разряд влево, а выполняя вторую, вычитает из него 1. Исполнитель начал вычисления с числа 104 и выполнил цепочку команд 11221. Запишите результат в десятичной системе.
= 45 1 0 1 1 0 1 0 0 ? бит переноса 0 0 1 0 1 1 0 1 0 =90 «* 2» «сдвиг влево» «* 2» «сдвиг вправо» «/ 2» «сдвиг влево»
104 Примечание Результат Действие Код команды 1. сдвинь влево 2. вычти 1 умножь на 2 208 1 1 Умножить на 2 mod 208*2 на 256 160 Вычти 1 2 159 2 Вычти 1 2 159 Вычти 1 2 158 Вычти 1 2 1 Умножить на 2 mod 158*2 на 256 60 число 104 выполнил цепочку команд 11221
остаток от деления 158*2 на 256 60 умножь на 2 1 158 вычти 1 2 159 вычти 1 2 остаток от деления 208*2 на 256 160 умножь на 2 1 208 умножь на 2 1 104 Примечание Результат Действие Код команды
Задача В приведенном ниже фрагменте алгоритма, записанном на алгоритмическом языке, переменные a, b, c имеют тип «строка», а переменные i, k – тип «целое». Используются следующие функции: Длина(a) – возвращает количество символов в строке a. (Тип «целое») Извлечь(a,i) – возвращает i-тый (слева) символ в строке a. (Тип «строка») Склеить(a,b) – возвращает строку, в которой записаны сначала все символы строки a, а затем все символы строки b. (Тип «строка») Значения строк записываются в одинарных кавычках (Например, a:=\'дом\'). Фрагмент алгоритма: i := Длина(a) k := 2 b := \'А\' пока i > 0 нц c := Извлечь(a,i) b := Склеить(b,c) i := i – k кц b := Склеить(b,\'Т\') Какое значение будет у переменной b после выполнения вышеприведенного фрагмента алгоритма, если значение переменной a было ‘ПОЕЗД’? 1) ‘АДЕПТ’ 2) ‘АДЗЕОП’ 3) ‘АДТЕТПТ’ 4) ‘АДЗОТ’
i := Длина(a) k := 2 b := «А» пока i > 0 нц c := Извлечь(a,i) b := Склеить(b,c) i := i – k кц b := Склеить(b,\'Т\') ‘ПОЕЗД’
? ? ? ? \'ПОЕЗД\' k i c b a i:=Длина(a) 5 k:=2 2 b:=«А» «А» i > 0? ДА c:=Извлечь(a,i) i:=Длина(a) 5 b:=Cклеить(b,c) «АД» i > 0? ДА i:=i–k 3 c:=Извлечь(a,i) «Е» b:=Cклеить(b,c) «АД» b:=Cклеить(b,c) «АДЕ» 1) ‘АДЕПТ’ 2) ‘АДЗЕОП’ 3) ‘АДТЕТПТ’ 4) ‘АДЗОТ’ 1) ‘АДЕПТ’ 2) ‘АДЗЕОП’ 3) ‘АДТЕТПТ’ 1) ‘АДЕПТ’ 2) ‘АДЗЕОП’ 3) ‘АДТЕТПТ’ 1) ‘АДЕПТ’ 2) ‘АДЗЕОП’ 4) ‘АДЗОТ’ 3) ‘АДТЕТПТ’ 1) ‘АДЕПТ’ 2) ‘АДЗЕОП’
http://kpolyakov.narod.ru/school/ege.htm Материалы: