top of page

Формальные параметры

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

 

Пусть, например, процедура 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.

 

  1. var

  2.     y1, y2: real;

  3.  

  4. procedure sq(a, b, c: real; var x1, x2: real);

  5.     var

  6.         d: real;

  7.     begin

  8.         d :=b * b - 4 * a * c;

  9.         x1 :=(-b + sqrt(d)) / (2 * a);

  10.         x2 :=(-b - sqrt(d)) / (2 * a);

  11.     end;

  12.  

  13. begin

  14.     sq(5.7, -1.2, -8.3, y1, y2);

  15.     writeln('y1=', y1, '; y2=', y2);

  16.  

  17. readln

  18. 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, который отпечатает результат. Параметры процедур могут быть четырех видов: параметры-значения, параметры-переменные, параметры-процедуры, параметры-функции.

bottom of page