Учебная задача

Постановка задачи. Постановка задачи: Разработайте алгоритм, исполняя который "Стрелочка" оставит след в виде двух параллельных линий от края до края поля (см. образец). Исполнение алгоритма "Стрелочка" должна завершить в точке Б.

Исходное положение "Стрелочки":
- точка А;
- направление вправо.
Результат: "Стрелочка" в точке Б.

Образец для воспроизведения рисунка:

Решение задачи. Решение задачи: Возможны два решения: без использования процедур и с использованием процедур.
В первом решении последовательно выполняются следующие действия. Сначала изображается верхняя линия, по ней же исполнитель прыжками возвращается назад для того, чтобы изобразить вторую линию и при этом завершить перемещение в точке Б. Во втором решении используется метод пошаговой детализации. Задача разбивается на следующие подзадачи: изобразить линию, выполнить разворот, выполнить переход на вторую линию. При этом замечено, что вернуться к началу первой линии можно не прыжками, а шагами. Поэтому процедура изображения линии вызывается три раза.
Представление первого решения в виде блок-схемы: Представление второго решения в виде блок-схемы:
Исполнение алгоритма для первого решения:

АЛГОРИТМ ПУТЬ_1
  Дано: Исполнитель в т.А
  Надо: Исполнитель в т.Б
НАЧ
   ПОКА впереди НЕ стена
      НЦ
         ШАГ
      КЦ
   ПОВОРОТ
   ПОВОРОТ
   ПОКА впереди НЕ стена
      НЦ
         ПРЫЖОК
      КЦ
   ПОВОРОТ
   ПРЫЖОК
   ПОВОРОТ
   ПОКА впереди НЕ стена
      НЦ
         ШАГ
      КЦ
   КОН

Исполнение алгоритма для второго решения:

АЛГОРИТМ ПУТЬ_1
  Дано: Исполнитель в т.А
  Надо: Исполнитель в т.Б
НАЧ
   ДЕЛАЙ линия
   ДЕЛАЙ разворот
   ДЕЛАЙ линия
   ДЕЛАЙ переход
   ДЕЛАЙ линия
КОН
ПРОЦЕДУРА линия
   ПОКА впереди НЕ стена
      НЦ
         ШАГ
      КЦ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА разворот
   ПОВОРОТ
   ПОВОРОТ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА переход
   ПОВОРОТ
   ПРЫЖОК
   ПОВОРОТ
КОНЕЦ ПРОЦЕДУРЫ

Сравнение двух решений. В первом решении не используются процедуры, но это решение довольно компактное и позволяет показать последовательное расположение циклов. Второе решение ещё раз демонстрирует преимущества применения метода пошаговой детализации. А именно: задача сведена к простейшим подзадачам; один раз описанный фрагмент кода (процедура "линия") исполняется несколько раз; управляющая структура цикл "пока" в алгоритме встречается один раз, а не три, как в первом решении. Эти преимущества не так ощутимы в простых задачах. Но для решения более сложных задач метод пошаговой детализации будет незаменим, поэтому должен быть освоен сейчас. С этой точки зрения оптимальным признано именно второе решение.