Занятие 6. Алгоритмическая конструкция подпрограмма

(поделиться сведениями)

Вспомогательный алгоритм (подпрограмма)

Программа рисования флажка, которая была рассмотрена на предыдущем занятии, хорошо решает поставленную задачу. Но, как уже было отмечено, она довольно длинная, и в ней встречаются повторяющиеся последовательности команд. Если дать таким последовательностям имена, а потом использовать эти имена в программе вместо самих последовательностей, то программа станет короче. Это напоминает вынесение за скобки общего множителя в математике: (a · x + b · x + c · x) = (a + b + c) · x

Дадим, например, последовательности из двух команд шаг — имя линия. Тогда программа рисования флажков примет вид:

прыжок
прыжок
поворот
поворот
поворот
прыжок
линия
линия
поворот
поворот
линия
линия
поворот
поворот
поворот
линия
поворот
поворот
поворот
линия
поворот
поворот
поворот
линия
поворот
поворот
поворот
линия
прыжок
поворот
поворот
поворот
прыжок
прыжок
прыжок

В информатике часть алгоритма, которой дано собственное имя, называется вспомогательным алгоритмом или подпрограммой. Обычно в подпрограммы выносят те участки алгоритмов, которые решают небольшие, но законченные подзадачи, которые нельзя решить одной командой из СКИ. Например, подпрограмма линия решает подзадачу рисования отрезка длиной две клетки.

Хорошо, если решить такие подзадачи алгоритмом требуется несколько раз — тогда программа становится короче. Но иногда вспомогательные алгоритмы используют только для того, чтобы алгоритм стал более понятным.

Вспомогательный алгоритм или подпрограмма — это ещё одна алгоритмическая конструкция, которая может использоваться при построении алгоритмов. На графических схемах вызов вспомогательного алгоритма обозначается с помощью прямоугольника с вертикальными чертами по краям, в котором записано имя вызываемой подпрограммы. Команды вспомогательного алгоритма оформляются таким же способом, как и программа (рис. 6.1).

Программа с подпрограммой
Рис. 6.1. Графическое изображение алгоритма со вспомогательным алгоритмом.

К сожалению, если представленную выше программу попытаться выполнить в ГРИС Букашка, то ничего хорошего не получится. Выполнение программы завершится с ошибкой на строке, в которой записано слово линия. Это не удивительно, потому что в СКИ ГРИС Букашка нет команды, которая обозначается таким словом.

Определение и вызов процедур

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

процедура НазваниеПроцедуры
…
(последовательность команд)
…
конец процедуры

Определение процедуры можно рассматривать как введение нового обозначения для последовательности команд. Эта последовательность команд называется телом процедуры. Определения процедур обычно размещаются в конце текста программы ГРИС. Чтобы выполнить действия, определённые процедурой, надо в требуемом месте программы разместить инструкцию вызова процедуры:

сделай НазваниеПроцедуры

Когда выполнение программы дойдёт до этой инструкции, выполняющая система запомнит текущую позицию в программе, после чего управление перейдёт на первую команду в определении процедуры (после инструкции процедура НазваниеПроцедуры). Далее будут последовательно выполнены все команды тела процедуры, а по команде конец процедуры произойдёт возврат в то место процедуры, откуда процедура была вызвана. После этого программа продолжит выполняться, как будто ничего не происходило (рис. 6.2).

Программа с процедурой
Рис 6.2. Выполнение программы, содержащей процедуры.

Теперь можно записать программу рисования флажка для ГРИС с использованием подпрограммы:


При вводе в редактор ГРИС Букашка программ, содержащих процедуры, можно использовать пункт меню F4… с последующим выбором пункта подменю, соответствующего команде вызова или определения процедуры. Чтобы определить новую процедуру, надо воспользоваться последовательностью пунктов меню F4…F8проц. В редакторе появится слово процедура, после которого надо набрать имя определяемой процедуры с клавиатуры. Затем вводятся строки с командами, составляющими тело процедуры. Завершается процедура с помощью последовательности пунктов меню F4…F9конец…F3…процедуры.

Чтобы написать инструкцию вызова процедуры, надо выбрать последовательность пунктов меню F4…F7сделай. После появившегося слова сделай надо набрать имя вызываемой процедуры.