Предыдущий раздел ГРАФИЧЕСКИЙ ЯЗЫК ПРЕДСТАВЛЕНИЯ ЛОГИЧЕСКИХ СТРУКТУР Следующий раздел

4.2. Процедуры

Процедура - модуль, который имеется во всех универсальных языках программирования. Ее графическое изображение представляет собой небольшой прямоугольник (рис. 42).

Допустим, что модуль M «вызывает» процедуру P. Это означает, что M выдает управляющее воздействие, которое инициирует P, то есть “запускает в работу” ее алгоритм. Одновременно M передает процедуре P ее входные параметры, которые представляют собой исходные данные для ее алгоритма. После того как алгоритм процедуры завершится, она возвращает управление в ту точку алгоритма модуля M, из которой она была инициирована. Передаваемые при этом от P к M выходные параметры процедуры содержат выходные данные ее алгоритма.

 

 

Рис. 42. Графическое представление процедуры

 

Важным свойством процедуры является то, что ее алгоритм строго последователен. Это означает, что в любой момент времени может выполняться только один оператор алгоритма. Последовательный алгоритм процедуры может быть описан с помощью языка блок-схем или с помощью другого языка, используемого для представления последовательных программ.

Если два модуля (например, M и P на рис.42) взаимодействуют друг с другом, то между ними можно провести границу, называемую интерфейсом. Точное описание интерфейса называется спецификацией интерфейса. Спецификация интерфейса для процедуры представляет собой описание ее параметров и способа их передачи.

Одну и ту же процедуру могут вызывать два и более модулей (рис.43). Обычная процедура в принципе не может вызываться одновременно несколькими модулями. Только после того, как она выполнится в интересах одного модуля, она может быть инициирована другим. Если одновременные вызовы возможны, то логическая схема ошибочна. Исключением из этого правила являются реентерабельные процедуры.

 

Рис. 43. Вызов процедуры несколькими модулями

 

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

 


Предыдущий раздел В начало Следующий раздел