Количество и тип формальных и фактических параметров должны в точности совпадать.
Формальные параметры описываются в заголовке процедуры и определяют тип и место подстановки фактических параметров. Формальные параметры делятся на два вида: параметры-переменные и параметры-значения.
Параметры-переменные отличаются тем, что передними стоит служебное слово Var. Они используются тогда, когда необходимо, чтобы изменения значений формальных параметров в теле процедуры приводили к изменению соответствующих фактических параметров.
Параметры-значения отличаются тем, что перед ними слово Varне ставится. Внутри процедуры можно производить любые действия с параметрами-значениями, но все изменения никак не отражаются на значениях соответствующих фактических параметров, то есть какими они были до вызова процедуры, такими же и останутся после завершения ее работы.
Все переменные программы делятся на глобальные и локальные. Глобальные переменные объявляются в разделе описаний основной программы. Локальные переменные объявляются в процедурах и функциях. Таким образом, локальные переменные «живут» только во время работы подпрограммы.
Пример. Составить программу для вычисления аn : целые числа а и n (n>=0) вводятся с клавиатуры. ( составить процедуру для вычисления степени целого числа).
Programex;
var a, n : integer;
s: longint;
ProcedureDegree(x,y : integer; varst : longint);
vari : integer;
Begin
st:=1;
for i:=1 to y do st:=st*x;
End;
{ начало основной программы}
Begin
writeln(‘введите два числа - основание и показатель степени’);
readln(a,n);
Degree(a,n,s); { обращение к процедуре }
writeln(‘Результат ’,s);
End.
Процедура названа именем Degree. В скобках записан список формальных параметров, то есть перечислены переменные с указанием их типа. Используем три параметра: первый - основание степени, то есть число, которое надо возвести в степень; второй - показатель степени, третий - результат. Первые два формальных параметра - параметры значения, третий - параметр-переменная, и перед ним указано слово var.Все они описаны как целые (x и y - переменные типа integer, st - Longint, так как степенная функция быстро возрастает).
После заголовка процедуры идут разделы описаний. В нашем примере имеется только раздел описания переменных, в котором описывается одна переменная i (счетчик цикла).
Далее идет тело процедуры. Оно начинается служебным словом Beginи заканчивается служебным словом End,после которого стоит точка с запятой (в конце программы после последнего End ставится точка). В теле процедуры вычисляется степень числа x с помощью цикла For.
В программе процедуры и функции описываются после раздела описания переменных программы, но до начала ее основной части, то есть до Begin, начинающего эту часть программы.
!!!! Процедура вызывается как оператор, состоящий из имени процедуры. В круглых скобках записываются фактические параметры. В нашем примере формальные параметры x, y и st принимают значения фактических параметров a, n и s соответственно. После завершения работы процедуры переменные a и n сохранят те же значения, что и при вызове, а s получит новое значение.
Пример 2 : Используя процедуру для вычисления степени числа, найти значение выражения : y=a4x4 + a3x3 + a2x2 + a1x + a0
program ex2;
var a: array[0..4] of integer;
i, x: integer;
y,s: longint;
ProcedureDegree(xx,n : integer; varst : longint);
vari : integer;
Begin
st:=1;
for i:=1 to n do st:=st*xx;
End;
{ начало основной программы}
Begin
write(‘введите значение переменной х ‘); readln(x);
writeln(‘введите массив коэффициентов’);
for i:=0 to 4 do begin write(‘a[‘,i,’]=’); readln(a[i]); end;
y:=a[0];
for i:=1 to 4 do
begin
Degree(x,i,s); y:=y+a[i]*s;
end;
writeln(‘y=’,y);
end.
Пример 3.Просуммировать различные части массива.
Program sumir;
var a: array [1..100] of integer; sa1, sa2,sa3 : integer;
n,l,t : integer;
procedure summa(a:array [1..100] of integer; k,m :integer; var s:integer);
var i:integer;
begin
s:=0;
for i:=k to m do s:=s+a[i];
end;
BEGIN
for t:=1 to 100 do
begin
write(‘введите очередной элемент массива ‘);
readln(a[i]);
end;
summa(a,10,20,sa1);
summa(a, n , l , sa2);
summa(a, n,n+3,sa3);
end.
Дата добавления: 2015-01-15; просмотров: 1363;