Сложные программы составляются из концептуальных блоков, значительно более крупных, чем отдельные операторы языка программирования. Такими блоками являются подпрограммы и модули.
Декомпозиция (разбиение) программы на небольшие логически завершенные блоки – это один из основных путей написания программы в ясной и понятной форме.
Подпрограмма – это логически завершенный компонент программы. Подпрограмма представляет собой некоторую функцию обработки информации, которая отображает конкретный набор аргументов в некоторый набор результатов. Определение подпрограммы состоит из двух частей: спецификации и реализации.
Спецификация ( прототип ) подпрограммы включает:
§ Тип подпрограммы: function (функция), procedure (процедура).
function – подпрограмма явно возвращает только один результирующий объект данных;
procedure – подпрограмма возвращает более одного значения или действия подпрограммы сводятся только к модификации ее аргументов вместо возвращения результата.
§ Имя подпрограммы;
|
|
§ Формальные параметры: аргументы (входные значения) и результаты (возвращаемые значения).
Реализация подпрограммы (тело подпрограммы) включает:
§ Описание локальных данных, используемых подпрограммой;
§ Операторы, задающие действия, которые должна выполнить подпрограмма.
Локальные данные и операторы инкапсулированы (спрятаны), так что ни локальные данные, ни операторы по отдельности не доступны Пользователю подпрограммы. Пользователь может только вызвать подпрограмму. В тело подпрограмм могут входить определения других (вложенных) подпрограмм.
Вызывающая программа – программа (подпрограмма), которая обращается к подпрограмме (вызывает подпрограмму).
Оператор вызова – оператор вызывающей программы, с помощью которого она обращается к подпрограмме. Оператор вызоваподпрограммы содержит:
§ имя подпрограммы;
§ список фактических параметров.
Фактические параметры – это элементы вызывающей программы (константы, переменные, массивы и другие), значения которых передаются в подпрограмму или возвращаются из нее.
Типы фактических и соответствующих им формальных параметров должны совпадать!
Вызываемая программа – подпрограмма, к которой обращается вызывающая программа. Вызываемая программа возвращает управление вызывающей программе, которая продолжает свое выполнение с оператора, следующего за оператором вызова.
Схема передачи управления между вызывающей и вызываемой программами приведена на рисунке 2.4.
Рисунок 2.4 – Схема передачи управления между вызывающей
и вызываемой программами
Обмен информацией между вызывающей и вызываемой программами может осуществляться с использованием глобальных данных или передачей параметров.