§ 29. Вспомогательные алгоритмы и подпрограммы
Основные темы параграфа:
♦ что такое вспомогательный алгоритм; ♦ обращение к вспомогательному алгоритму (процедуре); ♦ описание вспомогательного алгоритма (процедуры); ♦ метод последовательной детализации; ♦ сборочный метод.
Что такое вспомогательный алгоритм
А сейчас решим следующую задачу.
Задача 2. Пусть требуется составить программу, по которой ГРИС напишет на экране четырехзначное число 1919 (рис. 5.6).
Конечно, можно поступить так, как в предыдущей задаче, написав
одну длинную программу, по которой исполнитель шаг за шагом нарисует эти
цифры. Но с очевидностью возникает другая идея: поскольку здесь дважды
повторяются цифры 1 и 9, нельзя ли сократить работу, написав программу рисования той и другой цифры только один раз? Это действительно можно сделать.
Алгоритм, по которому решается некоторая подзадача из основной
задачи и который, как правило, выполняется многократно, называется
вспомогательным алгоритмом.
Вспомогательный алгоритм, записанный на языке программирования, называется подпрограммой или процедурой.
Обращение к вспомогательному алгоритму (процедуре)
В таком случае программа решения поставленной задачи разделяется
на основную программу (основной алгоритм) и процедуры (вспомогательные
алгоритмы). Каждая процедура должна иметь свое уникальное имя. Для
рассматриваемой задачи имена процедур выберем следующими: ЕДИНИЦА и
ДЕВЯТЬ. Тогда в основной программе команды обращения к этим процедурам
будут такими:
сделай ЕДИНИЦА сделай ДЕВЯТЬ
По этим командам управление передается соответствующим
процедурам, и после их выполнения управление вернется к следующей
команде основной программы.
Договоримся, что начальное и конечное состояния ГРИС при
вычерчивании каждой цифры будут такими, как показано стрелками на рис.
5.6 (внизу, на восток). У единицы начальное и конечное состояния
совпадают. Основная программа:
программа Число 1919 нач сделай ЕДИНИЦА прыжок сделай ДЕВЯТЬ прыжок сделай ЕДИНИЦА прыжок сделай ДЕВЯТЬ кон
Данный пример познакомил вас с новой командой из СКИ графического
исполнителя — командой обращения к процедуре. Ее формат, т. е. общий
вид, следующий:
сделай имя процедуры>
Описание вспомогательного алгоритма (процедуры)
Вот и все! Так просто! Но теперь надо «объяснить» исполнителю,
что такое ЕДИНИЦА и что такое ДЕВЯТЬ. Это делается в описаниях процедур
(здесь порядок выполнения — по столбцам):
Определение процедуры в программе называется ее описанием. Формат описания процедуры:
процедура <имя процедуры> нач <тело процедуры> кон
Имя в описании и имя в обращении должны точно совпадать (никаких
склонений по падежам!). Описание процедур располагается после основной
программы.
Добавив к программе описание процедуры, мы тем самым расширили
систему команд исполнителя. В данной программе стало возможным
использование команды обращения к этой процедуре.
Метод последовательной детализации
Использованный нами подход облегчает программирование сложных
задач. Задача разбивается на более простые подзадачи. Решение каждой
оформляется в виде вспомогательного алгоритма, а основной алгоритм
организует связку между ними.
Метод программирования,
при котором сначала пишется основная программа, в ней записываются
обращения к пока еще не составленным подпрограммам, а потом описываются
эти подпрограммы, называется методом последовательной (пошаговой)
детализации. Причем количество шагов детализации может быть гораздо
большим, чем в нашем примере, поскольку сами подпрограммы могут
содержать внутри себя обращения к другим подпрограммам.
Сборочный метод
Возможен и другой подход к построению сложных программ:
первоначально составляется множество подпрограмм, которые могут
понадобиться при решении задачи, а затем пишется основная программа,
содержащая обращения к ним. Подпрограммы могут быть объединены в
библиотеку подпрограмм и сохранены в долговременной памяти компьютера. Такую библиотеку можно постепенно пополнять новыми подпрограммами.
Например, если для управления графическим исполнителем создать
библиотеку процедур рисования всех букв и цифр, то программа получения
любого текста будет состоять из команд обращения к библиотечным
процедурам.
Описанный метод называется сборочным программированием. Часто в
литературе по программированию используется такая терминология: метод
последовательной детализации называют программированием сверху вниз, а
сборочный метод — программированием снизу вверх.
Коротко о главном
Для упрощения программирования сложных задач используются вспомогательные алгоритмы.
Вспомогательный алгоритм — это алгоритм решения некоторой подзадачи из исходной (основной) задачи.
Вспомогательный алгоритм, записанный на языке программирования, называется процедурой.
Вспомогательный алгоритм должен быть описан. После этого в
основном алгоритме можно использовать команду обращения к этому
вспомогательному алгоритму.
Метод программирования, при котором сначала записывается основной
алгоритм, а затем описываются использованные в нем вспомогательные
алгоритмы, называется методом последовательной детализации или
программированием сверху вниз. Обратный порядок программирования
называется программированием снизу вверх.
Вопросы и задания
1. Что такое основной алгоритм; вспомогательный алгоритм? 2. Чем отличается описание вспомогательного алгоритма от обращения к вспомогательному алгоритму? 3. Каковы правила описания вспомогательных алгоритмов (процедур) для исполнителя ГРИС? 4. Как записывается команда обращения к процедуре в языке исполнителя ГРИС? 5. В чем суть метода последовательной детализации? 6. Что такое программирование снизу вверх; сверху вниз? 7. Используя вспомогательные алгоритмы, запрограммируйте рисование следующих фигур:
|