Перед ними ставится слово Var.
Для формального параметра – переменной используется именно та ячейка, которая содержит соответствующий фактический параметр и поэтому результаты работы процедуры могут быть переданы в программу только через параметр – переменную. В фактических параметрах – переменных допускается использовать только переменные.
Пример 1:
:
Procedure Xxx(Var A,B,C:Integer; Var D:Real);{A,B,C,D – формальные параметры – переменные; }
:
Xxx(M,N,X,Y);{M,N,X,Y – переменные}
Рассмотрим на примере принцип работы параметров-переменных:
Пример 2:
Program Pr1;
Var A,B:Integer;
Procedure Zamena(Var Y,X:Integer);
Begin
X:=X+1;Y:=Y+10;
End;
Begin
A:=0;B:=0;
Zamena(A,B);
Writeln(A,B);
End.
Результат: 1,10 {Результат работы процедуры передается в программу – переменные А и В изменили свое значение}
Задача.
Составить программу вычисления максимального из 4-х чисел, используя процедуру вычисления максимального из 2-х чисел.
Решение:
Program Pr3;
Var A,B,C,D,M1,M2,M3:Integer;
Procedure Max(Var X,Y,M:Integer);
Begin
If X>Y Then M:=X Else M:=Y;
End;
Begin
Readln(A,B,C,D);
Max(A,B,M1);
Max(C,D,M2);
Max(M1,M2,M3);
Writeln(’Max=’,M3);
|
|
End.
Задачи:
1. Правильно ли описана процедура и обращение к ней (если есть ошибки, то исправить):
Procedure Str(Var (A,B,C): Real;)
C:=A+B+C;
:
Str(X,Y,Z,S);
:
2. В чем отличие процедур:
а)Procedure Str1;
Begin
P:=(A+B+C)/2;
S:=sqrt(P*(P-A)*(P-B)*(P-C));
End;
в)Procedure Str1(Var A,B,C,S:Real);
Begin
P:=(A+B+C)/2;
S:=sqrt(P*(P-A)*(P-B)*(P-C));
End;
Используя эти процедуры вычислить площадь выпуклого четырехугольника, заданного длинами четырех сторон и диагональю.
3. Для каждого из приведенных ниже описаний процедур сформулировать назначение соответствующей процедуры:
а)Procedure M(Var X,Y,M:Real);
Begin M:=X+Y; End;
б)Procedure M1(Var X,Y,Z,T:Real);
Begin Z:=X+Y; T:=X*Y; End;
в)Procedure M2(Var X,Y,R:Real; Var P:Integer);
Begin If sqr(X)+sqr(Y)<=sqr(R) Then P:=1 Else P:=0; End;
4. Процедура описана следующим образом: Procedure M2(Var X,Y:Integer); Допустимо ли обращение к процедуре, имеющее вид М2(A,B-1);
5. Даны числа X,Y,Z. Используя процедуру нахождения максимального из двух чисел, вычислить U=(Max(X,Y)+Max(X,Z))/(Max(Y,Z));
6. Одинаковы ли последствия обращения к процедурам:
а) Procedure P;
Begin X:=X+Y; Y:=X-Y; End;
б) Procedure P;
Begin Y:=X-Y; X:=X+Y; End;