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

Что значит "структурное проектирование алгоритмов"? "Структурное проектирование алгоритмов" – это методика разработки алгоритмов, в основе которой два принципа:

  1) любой алгоритм может быть построен из трёх базовых управляющих структур:

следование (см. линейные алгоритмы, 1-й урок),

ветвление (3-й урок),

цикл (4-й урок);

 2) метод последовательной (пошаговой) детализации.

Сначала разрабатывается основной алгоритм, затем вспомогательные алгоритмы первого уровня, затем – второго уровня и т.д..

Поэтому другое название этого метода – метод проектирования алгоритмов "сверху вниз".

Что такое "основной алгоритм"? Применение метода пошаговой детализации означает, что необходимо разделить поставленную задачу на подзадачи. Каждую из подзадач нужно решать отдельно, независимо от других, оформляя решение в виде вспомогательного алгоритма.

Правильно построенный основной алгоритм содержит только вызовы вспомогательных алгоритмов.

Что такое "процедура"? Вспомогательные алгоритмы принято называть процедурами.

Термин "процедура" происходит от латинского procedere, что значит продвигаться. Использование процедур позволяет упростить и ускорить разработку сложных алгоритмов.

 Описать процедуру решения подзадачи означает указать её имя и записать команды, исполняя которые исполнитель решит эту подзадачу.

Для Стрелочки общий вид описания процедуры таков:

ПРОЦЕДУРА <Имя процедуры>
    <Команды>
КОНЕЦ ПРОЦЕДУРЫ

Команды, описанные внутри процедуры, называют также телом процедуры.

 Вызов процедуры означает обращение к процедуре по имени с ключевым словом ДЕЛАЙ :

ДЕЛАЙ <Имя процедуры>

При вызове процедуры исполнитель исполнит команды тела процедуры. Затем будет исполнена команда, стоящая после вызова  ДЕЛАЙ <Имя процедуры> и далее следующие за ней команды.

Описание и вызов процедуры на языке блок-схем. Вызов процедуры изображается символом "предопределенный процесс" (или "блок с двойными стенками"). Все процедуры должны быть описаны в виде отдельных блок-схем, имя процедуры должно стоять в блоке НАЧАЛО.
Общий вид блок-схемы любой задачи, разбитой на подзадачи:

Описание и вызов процедур в интерфейсе "Стрелочки". При описании или вызове процедуры для "Стрелочки" после нажатия на соответствующую кнопку открывается окно со списком уже описанных для данной задачи процедур и строкой ввода имени для новой процедуры. Любое новое имя вводится только один раз и в дальнейшем должно выбираться из списка.
Закрыть окно без выбора процедуры можно нажатием клавиши <Esc>.

 

 

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

Постановка задачи.

Постановка задачи: Разработайте алгоритм перемещения исполнителя из точки А в точку Б, при этом след должен точно соответствовать приведенному в образце орнаменту. Для изображения фрагмента орнамента используйте процедуру.

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

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

Решение задачи. Решение задачи: В образце видны повторяющиеся фрагменты:

Всего - четыре одинаковых фрагмента:

Следовательно, нужно разработать вспомогательный алгоритм (процедуру) изображения одного фрагмента. А в основном алгоритме разместить четыре вызова процедуры.

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

АЛГОРИТМ ПУТЬ_1
  Дано: Исполнитель в т.А
  Надо: Исполнитель в т.Б
НАЧ
  ДЕЛАЙ фрагмент
  ДЕЛАЙ фрагмент
  ДЕЛАЙ фрагмент
  ДЕЛАЙ фрагмент
КОН

ПРОЦЕДУРА фрагмент
  ШАГ
  ПОВОРОТ
  ШАГ
  ПОВОРОТ
  ШАГ
  ПОВОРОТ
  ПОВОРОТ
  ПОВОРОТ
  ШАГ
  ПОВОРОТ
  ПОВОРОТ
  ПОВОРОТ
КОНЕЦ ПРОЦЕДУРЫ

Представление алгоритма в виде блок-схемы: