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

Перед ними ставится слово 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;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: