Теория
У каждого исполнителя есть свой набор команд. Кузнечик прыгает по числовой прямой: «вперёд k» прибавляет k к координате, «назад k» — вычитает. Черепаха ходит по плоскости: «вперёд k» смещает её на k в текущем направлении, «направо k» и «налево k» поворачивают на k градусов (0° — вверх, отсчёт по часовой стрелке). Робот стоит на клетчатом поле: команды вверх, вниз, влево, вправо сдвигают его на одну клетку, «закрасить» отмечает клетку, в которой он находится.
Программа выполняется по шагам сверху вниз. Если одни и те же команды повторяются, их записывают циклом: «повтори 8 [ вперёд 3 направо 45 ]» — тело в квадратных скобках выполнится восемь раз. Вложенные циклы перемножаются: «повтори 3 [ повтори 4 [ вперёд 1 ] ]» выполнит вперёд 1 двенадцать раз. Число простых команд считают так же: произведение множителей циклов на число команд в теле.
Конечное положение находят суммированием смещений всех команд — для Кузнечика \(x = x_0 + \sum \pm k\), для Черепахи каждое «вперёд k» даёт \(\Delta x = k \sin \alpha\) и \(\Delta y = k \cos \alpha\), где \(\alpha\) — текущее направление. Надёжнее всего — трассировка: записывать положение после каждой команды, тогда ошибку видно на конкретном шаге.
Важно: Черепаха поворачивается относительно текущего направления, а не в абсолютных углах: после «направо 90» команда «налево 45» развернёт её под 45°, а не вернёт в исходное положение.
Пример с решением
- Условие. Кузнечик стоит в точке 0 и выполняет программу: повтори 3 [ вперёд 4 назад 1 ]. Где он окажется и сколько команд выполнит?
- Формулы. \(x = x_0 + \sum \pm k\); число команд — произведение множителей циклов на число команд в теле.
- Подстановка. За одну итерацию тело смещает Кузнечика на \(4 - 1 = 3\), итераций три, значит смещение \(3 \cdot 3 = 9\). Команд в теле две, итераций три: \(3 \cdot 2 = 6\).
- Вычисление. \(x = 0 + 9 = 9\).
- Ответ. Кузнечик окажется в точке 9, выполнив 6 команд. Калькулятор при исполнителе «Кузнечик» и той же программе показывает 6 шагов в таблице и координату 9.
Главное
- Команды Кузнечика: вперёд k — плюс k, назад k — минус k.
- Команды Черепахи: вперёд k, направо/налево k в градусах; 0° — вверх, углы относительные.
- Команды Робота: вверх, вниз, влево, вправо — на одну клетку, закрасить — отметка клетки.
- Циклы: повтори N [ … ] повторяет тело N раз; во вложенных циклах множители перемножаются.
- Конечная точка — сумма смещений; таблица шагов помогает не потерять положение в середине программы.