Тема: Выполнение алгоритмов для исполнителя. (A18) Выполнила: Н.Н.Севрюкова, учитель информатики с.Богучаны, Красноярского края
Задача 1: Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости: вверх вниз влево вправо. При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх, вниз, влево, вправо. Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ: сверху свободноснизу свободно слева свободно справа свободно Цикл ПОКА команда выполняется, пока условие истинно, иначе происходит переход на следующую строку. Сколько клеток приведенного лабиринта соответствуют требованию, что, выполнив предложенную ниже программу, РОБОТ остановится в той же клетке, с которой он начал движение? 1) 1 2) 2 3) 3 4) 0 НАЧАЛО ПОКА вниз ПОКА влево ПОКА вверх ПОКА вправо КОНЕЦ ABCDEF
НАЧАЛО КОНЕЦ ПОКА вниз ПОКА вправо ПОКА влево ПОКА вверх
НАЧАЛО КОНЕЦ ПОКА вверх ПОКА вниз ПОКА влево ПОКА вправо
ABCDEF
ABCDEF
ABCDEF
ABCDEF
Задача 2 Система команд исполнителя РОБОТ, «живущего» в прямоугольном лабиринте на клетчатой плоскости: вверх вниз влево вправо. При выполнении любой из этих команд РОБОТ перемещается на одну клетку соответственно: вверх, вниз, влево, вправо. Четыре команды проверяют истинность условия отсутствия стены у каждой стороны той клетки, где находится РОБОТ: сверху свободноснизу свободно слева свободно справа свободно ABCDEF Цикл ПОКА команда выполняется, пока условие истинно, иначе происходит переход на следующую строку. Сколько клеток приведенного лабиринта соответствуют требованию, что, выполнив предложенную ниже программу, РОБОТ уцелеет (не врежется в стену) и остановится в той же клетке, с которой он начал движение? 1) 1 2) 2 3) 3 4) 0 НАЧАЛО ПОКА вверх ПОКА вправо ПОКА вниз ПОКА влево КОНЕЦ ABCDEF
НАЧАЛО КОНЕЦ ПОКА вверх ПОКА влева ПОКА вправо ПОКА вниз
ABCDEF
Тема: Поиск алгоритма минимальной длины для исполнителя.
У исполнителя Калькулятор две команды, которым присвоены номера: 1. прибавь 3 2. умножь на 4 Выполняя первую из них, Калькулятор прибавляет к числу на экране 3, а выполняя вторую, умножает его на 4. Запишите порядок команд в программе получения из числа 3 числа 57, содержащей не более 6 команд, указывая лишь номера команд. (Например, программа это программа умножь на 4 прибавь 3 умножь на 4 прибавь 3 которая преобразует число 2 в 50.) Задача
из числа 3 числа 57 «обратный ход»: 1. прибавь 3 2. умножь на Ответ: Ответ:
Задача Исполнитель Робот действует на клетчатой доске, между соседними клетками которой могут стоять стены. Робот передвигается по клеткам доски и может выполнять команды 1 (вверх), 2 (вниз), 3 (вправо) и 4 (влево), переходя на соседнюю клетку в направлении, указанном в скобках. Если в этом направлении между клетками стоит стена, то Робот разрушается. Робот успешно выполнил программу Какую последовательность из трех команд должен выполнить Робот, чтобы вернуться в ту клетку, где он был перед началом выполнения программы, и не разрушиться вне зависимости от того, какие стены стоят на поле?
Нарисуем (вверх), 2 (вниз), 3 (вправо), 4 (влево) 144 Ответ:
Задача У исполнителя, который работает с положительными однобайтовыми двоичными числами, две команды, которым присвоены номера: 1. сдвинь влево 2. вычти 1 Выполняя первую из них, исполнитель сдвигает число на один двоичный разряд влево, а выполняя вторую, вычитает из него 1. Исполнитель начал вычисления с числа 104 и выполнил цепочку команд Запишите результат в десятичной системе.
«сдвиг влево» ? = 45 бит переноса =90 «* 2» «сдвиг влево» «* 2» «сдвиг вправо» «/ 2»
Код команды Действие Результа т Примечание 104 число 104 выполнил цепочку команд сдвинь влево 2. вычти 1 умножь на Умножить на 2 mod 208*2 на Вычти Вычти Вычти Вычти Умножить на 2 mod 158*2 на
Код командыДействиеРезульта т Примечание умножь на умножь на остаток от деления 208*2 на вычти вычти умножь на 2 60 остаток от деления 158*2 на 256
Задача В приведенном ниже фрагменте алгоритма, записанном на алгоритмическом языке, переменные 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,'Т')
a bcik 'ПОЕЗД' ???? i:=Длина(a)5 k:=22 b:=«А» «А»«А» i > 0?ДА c:=Извлечь(a,i) i:=Длина(a) 5 b:=Cклеить(b,c ) «АД» i > 0?ДА i:=i–k3 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) АДЗЕОП
Материалы: