Используются только для передачи исходных данных в процедуру. В ходе выполнения процедуры эти значения изменяться не могут и, следовательно, параметры – значения не могут выполнять роль результата работы. Все формальные параметры, кроме тех, которые присваивают результаты работы, рекомендуется объявлять параметрами – значениями. В фактических параметрах – значениях допускается ставить выражения.
Пример:
:
Procedure Xxx(A,B,C:Integer; Var D:Real);{A,B,C – формальные параметры – значения; D – формальный параметр – переменная; }
:
Xxx(M,N,X,Y);{M,N,X – могут быть выражениями; Y – только переменная}
Рассмотрим на примерах различия при использовании параметров-значений и параметров-переменных :
Пример1.
Program A1;
Var X:Integer;
Procedure Zamena(Y:Integer);
Begin
Y:=1;
End;
Begin
X:=0; Zamena(X);
Writeln(’X=’,X);
End.
Результат: X=0
Пример2.
Program Pr2;
Var X:Integer;
Procedure Zamena(Var Y:Integer);
Begin
Y:=1;
End;
Begin
X:=0; Zamena(X);
Writeln(’X=’,X);
End.
Результат: X=1
Задача:
Составить программу обращения к процедуре вычисления натуральной степени числа A (Z=Ak)
Переменная I, описанная в процедуре, называется локальной по отношению к процедуре. Локальная – местная, имеющая местное значение. Как только процедура выполнится, значение локальной переменной I забудется.
Задачи
1. В программе описана процедура Р с формальными параметрами X,Y и процедура Q с формальными параметрами S,T. Среди операторов программы встречаются операторы процедуры P(1,A) и Q(B,D+F). Какие из формальных параметров процедур P и Q заведомо являются параметрами-значениями?
2. Даны числа A, B, C, D. Найти значение выражения K=M*N+K, где M=Max(A,B); N=Max(B,C,D); K=Max(A,B,C,D);. Использовать процедуру нахождения максимального из 2-х чисел.
3. Даны натуральные числа A, B, C, D, X. Найти значение выражения M=(X*A)A+BC*(D*X)C. Использовать процедуру вычисления натуральной степени числа.
4. Составить программу обращения к процедуре вычисления целой степени числа А (Z=Ak) (К-целое число)
5. Даны натуральные числа K, M. Требуется вывести на экран рамку из звездочек высота которой – K строк, ширина – M знаковых позиций. Описать процедуру Zvezda(S,N), обращение к которой дает вывод данной рамки.