Учебная задача |
||
Постановка задачи. |
Постановка задачи: Разработайте алгоритм, исполняя который "Стрелочка" оставит след в виде двух
параллельных линий от края до края поля (см. образец). Исполнение алгоритма "Стрелочка" должна завершить в точке Б.
Исходное
положение "Стрелочки": | Образец для воспроизведения рисунка: |
Решение задачи. | Решение задачи: Возможны два решения: без использования процедур и с использованием процедур. | |
В первом решении последовательно выполняются следующие действия. Сначала изображается верхняя линия, по ней же исполнитель прыжками возвращается назад для того, чтобы изобразить вторую линию и при этом завершить перемещение в точке Б. | Во втором решении используется метод пошаговой детализации. Задача разбивается на следующие подзадачи: изобразить линию, выполнить разворот, выполнить переход на вторую линию. При этом замечено, что вернуться к началу первой линии можно не прыжками, а шагами. Поэтому процедура изображения линии вызывается три раза. | |
Представление первого решения в виде блок-схемы:
![]() |
Представление второго решения в виде блок-схемы:
![]() |
|
Исполнение алгоритма для первого решения:
АЛГОРИТМ ПУТЬ_1 |
Исполнение алгоритма для второго решения:
АЛГОРИТМ ПУТЬ_1 |
|
Сравнение двух решений. | В первом решении не используются процедуры, но это решение довольно компактное и позволяет показать последовательное расположение циклов. | Второе решение ещё раз демонстрирует преимущества применения метода пошаговой детализации. А именно: задача сведена к простейшим подзадачам; один раз описанный фрагмент кода (процедура "линия") исполняется несколько раз; управляющая структура цикл "пока" в алгоритме встречается один раз, а не три, как в первом решении. Эти преимущества не так ощутимы в простых задачах. Но для решения более сложных задач метод пошаговой детализации будет незаменим, поэтому должен быть освоен сейчас. С этой точки зрения оптимальным признано именно второе решение. |