Исполнитель алгоритма

Кузнечик, Черепаха и Робот: трассировка программы, конечная координата и число шагов

От исполнителя зависят команды и поля ниже

Одна команда за другой; цикл — «повтори N [ … ]». Кузнечик: вперёд/назад k. Черепаха: вперёд k, направо/налево k (градусы). Робот: вверх/вниз/влево/вправо, закрасить

Для Черепахи и Робота

Для Черепахи и Робота

Нашли ошибку или хотите предложить улучшение?

Улучшить калькулятор «Исполнитель алгоритма»

Теория

У каждого исполнителя есть свой набор команд. Кузнечик прыгает по числовой прямой: «вперёд 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°, а не вернёт в исходное положение.

Пример с решением

  1. Условие. Кузнечик стоит в точке 0 и выполняет программу: повтори 3 [ вперёд 4 назад 1 ]. Где он окажется и сколько команд выполнит?
  2. Формулы. \(x = x_0 + \sum \pm k\); число команд — произведение множителей циклов на число команд в теле.
  3. Подстановка. За одну итерацию тело смещает Кузнечика на \(4 - 1 = 3\), итераций три, значит смещение \(3 \cdot 3 = 9\). Команд в теле две, итераций три: \(3 \cdot 2 = 6\).
  4. Вычисление. \(x = 0 + 9 = 9\).
  5. Ответ. Кузнечик окажется в точке 9, выполнив 6 команд. Калькулятор при исполнителе «Кузнечик» и той же программе показывает 6 шагов в таблице и координату 9.

Главное

  • Команды Кузнечика: вперёд k — плюс k, назад k — минус k.
  • Команды Черепахи: вперёд k, направо/налево k в градусах; 0° — вверх, углы относительные.
  • Команды Робота: вверх, вниз, влево, вправо — на одну клетку, закрасить — отметка клетки.
  • Циклы: повтори N [ … ] повторяет тело N раз; во вложенных циклах множители перемножаются.
  • Конечная точка — сумма смещений; таблица шагов помогает не потерять положение в середине программы.