Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

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

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

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