Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 3-4(ЯП)+.doc
Скачиваний:
133
Добавлен:
10.06.2015
Размер:
681 Кб
Скачать
☆

Основные положения процедурного программирования

Главной проблемой структурного программирования и алгоритмических языков первых поколений стало отсутствие языковых средств структурирования исходного текста и, как следствие, крайне большая избыточность кода программ. Решением этих задач стало введение в языки программирования понятия подпрограммы как фундаментального средства ее структурирования. Подпрограмма – это средство представления исходного кода в виде логически связанных, но самостоятельных программных единиц, каждая из которых решает небольшую специфическую алгоритмическую задачу. Подпрограммы в общем случае бывают двух видов: процедуры(procedure) ифункции(function).

Подпрограмма представляет собой особым образом оформленный фрагмент исходного кода, имеющий собственный идентификатор, ограничивающий область видимости своих внутренних объектов. Упоминание идентификатора подпрограммы в исходном тексте приводит к активизации подпрограммы и называется ее вызовом(call). Сразу после активизации подпрограммы, распределяется память под ее внутренние переменные и начинают выполнятся входящие в нее операторы. После окончания выполнения последнего из них управление передается обратно вточку вызова подпрограммы (invocation point) и продолжают выполняются операторы, стоящие непосредственно за оператором вызова подпрограммы (рис. 13).

Подпрограмма может быть вызвана из других фрагментов кода множество раз. При этом ее код не копируется в точку вызова и существует в единственном экземпляре, что позволяет существенным образом сократить объем программы, путем выделения в ней некоторого количества подпрограмм.

Для обмена информацией между основной программой и подпрограммой используется один или несколько параметров вызова(call parameter). Параметр представляет собой некоторое значение, которое передается в подпрограмму и используется в ней посредством своего идентификатора. Синтаксически передача параметров выражается путем указания в операторе вызова после имени подпрограммы непосредственных значений параметров (в виде литералов) или идентификаторов переменных, которые задают значение этих параметров.

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

// вызов процедуры DoSomething

DoSomething (12, x); // Pascal

Параметры передаваемые в виде переменных могут быть использованы для передачи значения из вызываемой подпрограммы в вызывающую.

Рис. 13. Схематичная модель вызова подпрограммы

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

// вызов функции sin, возвращающая значение вещественного типа

y := sin(10 * x + 10); // Pascal

Наряду с подпрограммой, другим важным понятием в парадигме процедурного программирования является принятие программного модуля(program module). Характерным для всех современных ЯП является то, что элементарные строительные блоки программы, представляющие собой простые и структурные операторы должны быть объединены в программу посредством структурных элементов следующего уровня. Таким элементом являются подпрограммы. В свою очередь подпрограммы включаются в состав модулей, которые и являются основной структурной единицей декомпозиции программы. Программа или говорят проект, в целом, конструируется из таких модулей исходного кода.

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

На уровне программного модуля в ЯП определено понятие видимости(visibility) подпрограммы, которое регламентирует доступность подпрограммы из других модулей программного проекта. Подпрограммы так же, как и переменные, объявленные в модуле, в самом простейшем случае могут быть либо доступны только внутри модуля (private) или доступны как внутри, так и вне модуля, т.е. в других модулях проекта (public).

Физически модуль программы представляет собой файл с исходным тестом подпрограмм, он имеет имя, на основании которого на подпрограммы внутри него ссылаются другие модули.

Подробно остановимся на синтаксической реализации подпрограмм в алгоритмических языках программирования.