Пример. На карте внизу человеку нужно попасть в пункт, обозначенный красной меткой. Для нас этот человек играет роль исполнителя. Чтобы попасть в необходимую точку, исполнителю нужно выполнить 3 шага алгоритма: 1) шагнуть вперед; 2) повернуть налево; 3) повернуть направо.
В случае, когда алгоритм содержит условия или ветвится, его удобно представлять в виде блок-схемы. Представим, что нам надо сформулировать алгоритм поиска Золушки. Недолго думая, придем к следующей блок-схеме:
Исполнитель в экзамене
Для решения задач с исполнителем в экзамене по информатике необходимо внимательно читать условия и аккуратно и последовательно отслеживать алгоритм исполнителя при решении. Ниже рассмотрим это на паре нескольких примерах.
Пример задания с исполнителем, выполняющим арифметические действия.
Исполнитель КВАДРАТОР имеет только две команды, которым присвоены номера:
1. возведи в квадрат
2. прибавь 1
Выполняя команду номер 1, КВАДРАТОР возводит число на экране в квадрат, а выполняя команду номер 2, прибавляет к этому числу 1. Напишите программу, содержащую не более 4 команд, которая из числа 1 получает число 17. Укажите лишь номера команд.
Пример решения.
Команды: ХХХХ
Воспользуемся обратным ходом поиска решения данной задачи. 17 — не является квадратом числа, значит могли лишь прибавить 1. Команды: ХХХ2.
16 — является квадратом числа, значит возвели в квадрат. Команды: ХХ12.
4 — является квадратом числа, значит возвели в квадрат. Команды Х112.
2 — а мы должны были начать с 1, значит нужно было прибавить. Команды: 2112.
Ответ: 2112.
Пример задания с исполнителем, выполняющим арифметические действия.
У исполнителя Альфа две команды, которым присвоены номера:
1. прибавь 1
2. умножь на b
(b – неизвестное натуральное число; b ≥ 2).
Выполняя первую из них, Альфа увеличивает число на экране на 1, а выполняя вторую, умножает это число на b.
Программа для исполнителя Альфа – это последовательность номеров команд.
Известно, что программа 11211 переводит число 6 в число 82.
Определите значение b.
Пример решения.
Зная набор команд алгоритма, начальное и конечное число можно составить уравнение, прописав все действия, которые были выполнены исполнителем.
Команды | 1 1 2 1 1 |
---|---|
Число | \(6 \rightarrow 7 \rightarrow 8 \rightarrow 8b \rightarrow 8b + 1 \rightarrow 8b + 2\) |
Получаем уравнение: 8b + 2 = 82
8b = 80 → b = 10
Ответ: 10.
Пример задания с исполнителем, работающим с цифрами числа.
Автомат получает на вход трёхзначное десятичное число. По полученному числу строится новое десятичное число по следующим правилам.
1. Вычисляются два числа – сумма старшего и среднего разрядов, а также сумма среднего и младшего разрядов заданного числа.
2. Полученные два числа записываются друг за другом в порядке невозрастания (без разделителей).
Пример. Исходное число: 277. Поразрядные суммы: 9, 14. Результат: 149.
Определите, сколько из приведённых ниже чисел могут получиться в результате работы автомата.
1616 169 163 1916 1619 316 916 116
В ответе запишите только количество чисел
Пример решения.
Внимательно посмотрим на алгоритм работы исполнителя. Пусть число выглядит как abc (где a, b и c – это его цифры). На первом шаге исполнитель считает две суммы: a+b и b+с. Так как обе эти суммы – это суммы цифр числа, то ни одна из них не может оказаться больше 18 (9+9). Также должна быть возможность существования в суммах общего слагаемого.
Затем эти суммы записываются в порядке невозрастания, значит в начале идёт большая сумма, потом меньшая и возможна ситуация, когда обе суммы равные. Это два условия, которыми мы можем проверить результат работы алгоритма.
Рассмотрим по порядку числа.
1616 – оно разбивается на две равные суммы: 16 и 16, которые имеют допустимое значение – число подходит (оно могло получится в результате обработки числа 888).
169 – это число можно разбить на суммы: 16 и 9 – число подходит (оно могло получится в результате обработки, например, числа 881).
163 – число можно разбить на суммы 16 и 3, но оно не подойдёт, так как невозможно определить общее слагаемое в таких суммах. 16 может быть суммой 9 и 7 или 8 и 8, ни одна из данных цифр не может являться частью суммы равной трём.
1916 – число можно разбить на суммы 19 и 16 или 191 и 6 – ни один из этих вариантов не подходит для суммы цифр, так как есть сумма большая 18.
316 – с учётом правила невозрастания число можно разложить на суммы 31 и 6, которые невозможны как суммы цифр – число не подходит.
916 – с учётом правила невозрастания число можно разложить на суммы 91 и 6, которые невозможны как суммы цифр – число не подходит.
116 – число можно разложить на суммы 11 и 6 – число подходит (оно может получится в результате обработки, например, числа 247)
Таким образом из представленных чисел подходят три: 1616, 169 и 116.
Ответ: 3.
Пример задания с исполнителем Чертёжник.
Исполнитель Чертёжник перемещается на координатной плоскости, оставляя след в виде линии. Чертёжник может выполнять команду Сместиться на (a, b) (где a, b — целые числа), перемещающую Чертёжника из точки с координатами (x, у) в точку с координатами (x + а, у + b). Если числа a, b положительные, значение соответствующей координаты увеличивается; если отрицательные, уменьшается.
Например, если Чертёжник находится в точке с координатами (4, 2), то команда Сместиться на (2, −3) переместит Чертёжника в точку (6, −1).
Запись
Повтори k раз
Команда1 Команда2 КомандаЗ
Конец
означает, что последовательность команд Команда1 Команда2 КомандаЗ повторится k раз.
Чертёжнику был дан для исполнения следующий алгоритм:
Повтори 2 раз
Команда1 Сместиться на (3, 2) Сместиться на (2, 1)
Конец
Сместиться на (−6, −4)
После выполнения этого алгоритма Чертёжник вернулся в исходную точку. Какую команду надо поставить вместо команды Команда1?
1) Сместиться на (−2, −1)
2) Сместиться на (1, 1)
3) Сместиться на (−4, −2)
4) Сместиться на (2, 1)
Пример решения.
Так как Чертёжник вернулся в исходную точку, то его итоговое перемещение по оси х и y оказалось равно 0. Обозначим команду 1 как Сместиться на (a, b) и запишем перемещение по каждой из осей.
Х: 2*(a + 3 + 2) – 6 = 0
Y: 2*(b + 2 + 1) – 4 = 0
Теперь решив каждое уравнение найдём значения a и b.
2*(a + 3 + 2) – 6 = 0
2*(a + 5) = 6
a + 5 = 3
a = – 2
2*(b + 2 + 1) – 4 = 0
2*(b + 3) = 4
b + 3 = 2
b = -1
Получаем, что нужная команда: Сместиться на (−2, −1)
Ответ: 1.