Формальные параметры
Формальные параметры – это наименование переменных, через которые передается информация из программы в процедуру либо из процедуры в программу.
Пусть, например, процедура sq осуществляет решение квадратного уравнения ax2 + bx + c=0. Тогда она должна иметь пять формальных параметров: для значений коэффициентов a, b, c и для результатов: x1 и x2.
Для того, чтобы запустить процедуру в работу, необходимо к ней обратиться (ее вызвать). Вызов процедуры N производится оператором вида
-
N (p1, p2, p3, …);
Здесь N – имя процедуры, p1, p2, p3 – фактические параметры.
При вызове процедуры машина производит следующие действия. Устанавливает взаимно однозначное соответствие между фактическими и формальными параметрами, затем управление передает процедуре. После того, как процедура проработает, управление передается вызывающей программе на оператор, следующий за вызовом процедуры.
Соответствие между фактическими и формальными параметрами должно быть следующим:
а) число фактических параметров должно быть равно числу формальных параметров;
б) соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Соответствующие параметры не обязательно должны быть одинаково обозначены.
Пример. Вызвать процедуру sq можно так:
-
sq(p, q, r, y, z);
здесь p, q, r – коэффициенты квадратного уравнения, а y и z – корни этого уравнения. Если вызвать sq оператором sq(x1, x2, a, b, c); то машина воспримет x1, x2, a как коэффициенты уравнения, а корни зашлет в переменные b и c.
Пример. Составим процедуру sq решения квадратного уравнения ax2 + bx + c=0 в предположении, что дискриминант не отрицателен. С помощью этой процедуры решим квадратное уравнение 5.7y2 – 1.2y – 8.3=0.
-
var
-
y1, y2: real;
-
-
procedure sq(a, b, c: real; var x1, x2: real);
-
var
-
d: real;
-
begin
-
d :=b * b - 4 * a * c;
-
x1 :=(-b + sqrt(d)) / (2 * a);
-
x2 :=(-b - sqrt(d)) / (2 * a);
-
end;
-
-
begin
-
sq(5.7, -1.2, -8.3, y1, y2);
-
writeln('y1=', y1, '; y2=', y2);
-
-
readln
-
end.
Как видно из примера, процедура помещается после декларативных операторов программы. Первым выполняется оператор обращения к процедуре:
-
sq(5.7, -1.2, -8.3, y1, y2);
здесь первые три фактические параметра соответствуют формальным a, b, c, а последние два фактических параметра y1 и y2 соответствуют формальным x1 и x2. После того как процедура «запустится», в ячейки a, b, c попадут числа 5.7, -1.2, -8.3 и начнут выполняться операторы процедуры.
После окончания работы процедуры управление возвратиться к операторуwriteln, который отпечатает результат. Параметры процедур могут быть четырех видов: параметры-значения, параметры-переменные, параметры-процедуры, параметры-функции.