- •Лабораторная работа № 3
- •3.1.1.Глобальные данные
- •3.1.2 Способы передачи параметров
- •3.1.3 Функции
- •3.1.4. Процедуры
- •3.1.5. Передача массивов в качестве параметров
- •3.1.6. Рекурсивные подпрограммы
- •3.2 Модули
- •Implementation {реализация }
- •3.3. Массивы
- •Interface {интерфейс модуля}
- •3.4. Компоненты StringGrid и Memo
- •Ход работы
- •Контрольные вопросы.
3.1.1.Глобальные данные
Глобальные данные — это данные (константы, переменные, массивы и другие), объявленные в начале программы и доступные в подпрограммах и «главной программе» (основном блоке программы).
Глобальные данные следует использовать только для передачи информации от одной программы (подпрограммы) к другой. Например, одна подпрограмма формирует значения данных, а другая подпрограмма использует эти значения.
Рисунок
3.2 - Структура программы
3.1.2 Способы передачи параметров
Когда вызывающая программа обращается к подпрограмме, требуется связать фактические параметры вызывающей программы с формальными параметрами подпрограммы. Чаще всего применяются два подхода: либо фактический параметр вычисляется и полученное значение передается формальному параметру (передача значением), либо формальному параметру становится доступен адрес значения фактического параметра (передача по адресу).
Передача значением
Схема обмена информацией с использованием передачи параметра значением приведена на рисунке 3.3.
В этом случае формальный параметр a обрабатывается в подпрограмме как локальная переменная, инициализируемая в начале выполнения подпрограммы значением соответствующего фактического параметра х.
В операторе вызова фактическим параметром может быть:
Константа;
Переменная;
Выражение;
Функция.
Значение фактического параметра при изменении соответствующего ему формального параметра не изменяется.
Рисунок
3.3 - Передача параметра значением
В приведенном примере (рисунок 3.3) после вызова подпрограммы P значение фактического параметра x остается равным 0
Передача по адресу
Схема обмена информацией с использованием передачи параметра по адресу приведена на рисунке 3.4. В этом случае формальный параметр a (описание параметра начинается со слова var) обрабатывается в подпрограмме как переменная, адрес которой есть адрес соответствующего фактического параметра х.
Рисунок 3.4. Передача параметра по адресу
В операторе вызова фактическим параметром может быть только переменная.
Любое изменение формального параметра a есть изменение соответствующего ему фактического параметра х. После вызова подпрограммы P (рисунок 3.4) значение x равно 1.
3.1.3 Функции
Формат спецификации функции:
function <имя>(<список формальных параметров>): <тип результата>;
Для возвращения результата функция должна содержать хотя бы один оператор присваивания следующего вида:
<имя подпрограммы> := <результат>;
где результат - это вычисленное значение в подпрограмме (константа, переменная, элемент массива и другие элементы данных).
Вызов функции включается в оператор языка Pascal.
Пример вызова функции P(x):
y:= P(x); {вызов P(x) в операторе присваивания}
if P(x)>0 then {вызов P(x) в операторах if и writeln } writeln(P(x));
В качестве примера рассмотрим описание и использование функции power, которая возводит переменную base в степень exponent - baseexponent.
function power( base, exponent: real): real;
begin
power:= exp( exponent * ln(base)); {exp, ln - встроенные функции Pascal: }
{ exp (x) - ex}
{ ln (x) - натуральный логарифм x }
end;
Вызов функции power может быть, например, таким: writeln (power(3, 5));
