Формальные параметры - это список имен переменных, следующий за именем подпрограммы, через которые передается информация от родительской подпрограммы в дочернюю, либо обратно. В этом списке может быть указан тип переменных.
Для того чтобы вызвать процедуру или функцию, необходимо к ней обратиться. Вызов процедуры NameProc производится оператором вида: NameProc(P1,P2,P3,...). Здесь P1, P2, P3 – фактические параметры. При различных вызовах подпрограммы в этом списке могут быть различные переменные и константы. Но должны выполняться следующие условия: фактические и формальные параметры должны соответствовать по числу, по типу и по смыслу.
Формальный параметр-значение при вызове подпрограммы копирует свое значение у фактического параметра. При этом для него выделяется дополнительная память и при изменении этой копии значение фактического параметра-значения (оригинала) – не меняется. Более того, фактический параметр-значение может быть константой или выражением.
Формальный параметр-значение
Фактический параметр-значение
function Sin(x: real): real;
Y:=Sin((x+Pi)/2);
Перед формальным параметром-переменной указывается служебное слово var и соответствующий фактический параметр должен быть переменной. Дополнительная область памяти для формального параметра-переменной не выделяется и, при изменение его внутри подпрограммы, меняется значение и фактического параметра.
Формальный параметр-переменная
Фактический параметр-переменная
Procedure Surf(a,b,c: real; var S: real);
SurF(1.2, 2+1, Sin(3.5), S);
Если для формального параметра-переменной не указан тип, то фактический параметр-переменная может быть ссылкой на переменную любого типа. В этом случае он называется нетипизированным параметром-переменной.
Существует две формы оператора IF:
if <ВЫРАЖЕНИЕ> then <ОПЕРАТОР>;
if <ВЫРАЖЕНИЕ> then <ОПЕРАТОР1> else <ОПЕРАТОР2>;
Выражение должно быть логического типа. Перед else нельзя ставить “;”.
Пример 1: if J <> 0 then A := I/J;
Пример 2: if J <> 0 then A := I/J else A := 0;
Пример 3. Решение квадратного уравнения Ax2+Bx+C=0.
Листинг 7. Решение квадратного уравнения
program PrSqr;
{$APPTYPE CONSOLE}
var
A,B,C,D: real;
begin
Write(‘A=’); Readln(A);
Write(‘B=’); Readln(B);
Write(‘C=’); Readln(C);
if A = 0 then
if B = 0 then
if C = 0 then
Writeln(‘X - любое’)
else
Writeln(‘нет корней’)
else
Writeln(‘X = ’,-C/B:8:2)
else
begin
D := B*B-4*A*C;
if D < 0 then
Writeln(‘Нет вещественных корней’)
else
begin
D:=Sqrt(D);
Writeln(‘X1=’,(-B+ D)/(2*A),‘X2=’,(-B-D)/(2*A));
end;
end;
end.
Пример 4. Даны длины трех отрезков. Если они могут образовать треугольник, то вычислить его площадь.