Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конструирование программ.doc
Скачиваний:
12
Добавлен:
05.05.2019
Размер:
12.37 Mб
Скачать

2.4.1 Глобальные данные

Глобальные данныеэто данные (константы, переменные, массивы и другие), объявленные в начале программы и доступные в подпрограммах и «главной программе» (основном блоке программы).

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

Структура программы, включающая подпрограммы и глобальные данные, приведена на рисунке 2.5.

Рисунок 2.5 – Структура программы

2.4.2 Способы передачи параметров

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

Передача значением

Схема обмена информацией с использованием передачи параметра значением приведена на рисунке 2.6.

В этом случае формальный параметр a обрабатывается в подпрограмме как локальная переменная, инициализируемая в начале выполнения подпрограммы значением соответствующего фактического параметра x.

В операторе вызова фактическим параметром может быть:

  • Константа;

  • Переменная;

  • Выражение;

  • Функция.

Значение фактического параметра при изменении соответствующего ему формального параметра не изменяется.

Рисунок 2.6 – Передача параметра значением

В приведенном примере (рисунок 2.6) после вызова подпрограммы P значение фактического параметра x остается равным 0

Передача по адресу

Схема обмена информацией с использованием передачи параметра по адресу приведена на рисунке 2.7. В этом случае формальный параметр a (описание параметра начинается со слова var) обрабатывается в подпрограмме как переменная, адрес которой есть адрес соответствующего фактического параметра x.

Рисунок 2.7 – Передача параметра по адресу

В операторе вызова фактическим параметром может быть только переменная.

Любое изменение формального параметра a есть изменение соответствующего ему фактического параметра x.

После вызова подпрограммы P (рисунок 2.7) значение x равно 1.

2.4.3 Функции

Синтаксис спецификации функции:

function <имя>(<список формальных параметров>): <тип результата>;

Для возвращения результата функция должна содержать хотя бы один оператор присваивания следующего вида:

<имя подпрограммы> := <результат>;

или

result := <результат>;{результат - значение, вычисленное в подпрограмме}

Вызов функции включается в оператор языка Object Pascal.

В качестве примера рассмотрим описание и использование функции power, которая возводит переменную base в степень exponentbaseexponent.

function power( base, exponent: real): real;

begin

power:= exp( exponent ln(base)); {exp, ln – встроенные функции Pascal: }

{ exp (x) – ex }

{ ln (x) – натуральный логарифм x }

end;

Пример вызова функции P(x):

writeln (power(3, 5)); { результат: 243 – 35 }