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