
- •Российский государственный университет нефти и газа им. И.М. Губкина
- •Технология нисходящего программирования.
- •Структурирование программы.
- •Типы подпрограмм
- •Вызов процедуры
- •процедура функция
- •Примеры стандартных функций и процедур:
- •Процедуры и функции пользователя.
- •Структура процедуры.
- •процедура вычисляет площадь треугольника по формуле Герона
- •Структура функции.
- •функция вычисляет площадь треугольника по формуле Герона
- •Блок-схема подпрограммы-функции поиска максимального из двух чисел.
- •функция поиска максимального из двух чисел.
- •Список параметров.
- •Фактические параметры.
- •Механизм передачи параметров.
- •Функциональный тип
- •Иллюстрация механизма передачи параметров
- •Передача параметров по значению
- •Передача параметров по ссылке
- •Параметры-константы
- •Схема структуры блоков некоторой программы
- •Область видимости (область действия объектов).
- •Локальные и глобальные объекты.
- •Для доступа к объектам, описанным в различных блоках, требуется соблюдать следующие правила:

Передача параметров по ссылке
Параметры-переменные (variable parameter), описываются с ключевым словом var;
при подстановке фактического аргумента не создается его копия во временной памяти
на вход подпрограммы поступает указатель на переменную, которая передается в качестве фактического аргумента
соответствующий фактический параметр должен
быть переменной ! |
21 |
|

Параметры-константы
пример объявления параметра-константы:
procedure Goon(const s:string);
на вход подпрограммы передается только адрес фактической переменной или значения, а не их копия.
При этом компилятор не допускает использование в теле подпрограммы операторов, предназначенных для изменения их значения.
22

Схема структуры блоков некоторой программы
A–основная программа
B–подпрограмма
E–подпрограмма
C–подпрограмма
F–подпрограмма
D–подпрограмма

Область видимости (область действия объектов).
Любую подпрограмму можно описать локально в разделе описаний другой подпрограммы.
Вложенные процедуры и функции могут быть вызваны только в теле подпрограммы, в которой они были описаны.
Допускается произвольная иерархия вложенности подпрограмм.
24

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

Для доступа к объектам, описанным в различных блоках, требуется соблюдать следующие правила:
1.Имена объектов, описанные в некотором блоке считаются известными в пределах данного блока, включая и все вложенные блоки.
2.Имена объектов должны быть уникальны в пределах данного блока и могут совпадать с именами объектов из других блоков.
3.Локальные имена могут совпадать с глобальными. В этом случае локальные имена как бы «экранируют » глобальные, и тем самым делают их недоступными. (Т.е. это разные переменные, хотя и с одинаковыми именами.)
26