Любой из формальных параметров подпрограммы может быть либо параметром-значением, либо параметром-переменной, либо параметром-константой. Если параметры определяются как параметры-переменные, перед ними необходимо ставить зарезервированное слово VAR, например:
procedure p (var a : real); Здесь параметр а - параметр-переменная.
Заголовок процедуры может быть устроен так, что некоторые группы формальныхпараметров не содержат слова VAR. Например:
procedure p (a,b,c:real; var s:real);
Формальные параметры, которые входят в группы, не содержащие слова VAR,называются формальными параметрами-значениями.
Определение формального параметра тем или иным существенно толькодля вызывающей программы: если формальный параметр объявлен как параметр-переменная, то при вызове подпрограммы ему должен соответствовать фактический параметр в виде переменной определенного типа; если формальный параметр объявлен как параметр-значение, то при вызове ему может соответствовать произвольное выражение. Контроль за неукоснительным соблюдением этого правила осуществляет компилятором ТУРБО ПАСКАЛЯ.
Для того чтобы понять, в каких случаях использовать параметры значения, а вкаких - параметры-переменные, рассмотрим, как осуществляется замена формальных параметров на фактические в момент обращения к подпрограмме.
Если параметр определен как параметр-значение, то перед вызовомподпрограммы это значение вычисляется, полученный результат копируется во временную память и передается подпрограмме. Важно учесть, что даже если в качестве фактического параметра указано выражение в виде переменной или константы, все равно подпрограмме будет передана лишь копия переменной (константы). Таким образом, назначение параметра-значения – передача данных из программы в подпрограмму. Если же параметр определен как параметр-переменная, то при вызове подпрограммы передается сама переменная, а не ее копия. Любые возможные изменения в подпрограмме параметра-значения никак не воспринимаются вызывающей программой, так как в этом случае изменяется копия фактического параметра, в то время как изменение параметра-переменной приводит к изменению самого фактического параметра в вызывающей программе. Параметр-константа схож с параметром-переменной: в подпрограмму передается сама константа, но изменение её невозможно. Назначение такого параметра совпадает с назначением параметра-значения. Формальные параметры-константы указываются в заголовке программы после служебного слова const. Его действие рас до ближайшей точки с запятой.
Объяснение:
Первая
const n=10;
var a:array[1..n] of integer;
i,t:integer;
begin
randomize;
for i:=1 to n do a[i]:=random(100);
for i:=1 to n do begin
writeln('a[',i,']=',a[i]);
if(t < a[i]) then
t:=a[i];
end;
writeln('Максимимум: ',t);
end.
Вторая
const n=5;
var a:array[1..n] of integer;
i,t,c:integer;
begin
for i:=1 to n do readln(a[i]);
for i:=1 to n do begin
if(t < a[i]) then begin
t:=a[i];
c:=0;
end;
if(t = a[i]) then
c += 1;
end;
writeln(c);
end.
Третья
const n=5;
var a:array[1..n] of integer;
i,t,c:integer;
begin
for i:=1 to n do readln(a[i]);
for i:=1 to n do begin
if(i mod 2 = 0) then
t:=t + a[i];
if(i mod 2 <> 0) then
c:=c + a[i];
end;
writeln(t-c);
end.
Дополнение
i:=1;
while i <= 20 do begin
i:=i+1;
end;
for i:=1 to 20 do begin
end;