Веду на сто
Конспект

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

Трассировка Робота, Черепахи, Чертёжника и строкового редактора.

На экзамене

Задания 5, 6 и 12. Нужно буквально выполнить команды над числом, строкой, положением исполнителя или рисунком.

Формулы и факты

ИсполнительСостояниеЧто проверять
РоботКлетка, стены, закрашенные клеткиПроходимость перед каждым сдвигом
Черепаха, ЧертёжникКоординаты, направление, пероПоворот не меняет координаты; поднятое перо не рисует
Числовой исполнительТекущее числоПорядок арифметических команд
РедакторТекущая строкаКакое вхождение заменяется и когда цикл останавливается
\Delta x = d\cos\alpha,\quad \Delta y = d\sin\alpha
  • Итоговое смещение: сумма векторов всех перемещений.
  • Полный внешний поворот замкнутого выпуклого многоугольника: 360 градусов.
  • Обратные команды выполняются с конца программы: +a заменяется на -a, *a на /a.
  • В цикле "пока нашлось" поиск начинается заново после каждой замены.

Алгоритм

  1. Выпиши начальное состояние и точный смысл каждой команды.
  2. Раздели программу на одиночные команды и циклы.
  3. После каждого действия обновляй только изменяемую часть состояния.
  4. Перед новой итерацией снова проверяй условие цикла.
  5. Для длинного цикла найди изменение за один проход; сворачивай только одинаковые итерации.
  6. Для подбора входа читай программу справа налево и применяй обратные операции.
  7. Проверь результат прямым выполнением и ответь в требуемой величине.

Ловушки

  • Путают: порядок программы и удобный порядок вычислений. Сверь: команды переставлять нельзя.
  • Путают: проверку цикла и его тело. Сверь: отмечай их отдельными шагами.
  • Путают: длину пути и расстояние между концами. Сверь: сложи все пройденные отрезки.
  • Путают: перемещение и рисование. Сверь: проверь состояние пера.
  • Путают: одну замену и замену всех вхождений. Сверь: следуй точной семантике команды.