Параметри - значення виконують роль вхідних параметрів процедури. Вони можуть отримувати значення фактичних параметрів, але не можуть передавати свої значення фактичним параметрам. Параметри-змінні виконують роль як вхідних, так і вихідних параметрів процедури. Вони можуть отримувати значення фактичних параметрів, змінювати їх в процедурі та повертати нові значення фактичним параметрам. Для виділення параметрів-змінних перед ними ставиться слово VAR.
В якості фактичних параметрів можуть бути константи, змінні та вирази. При цьому їх тип повинен відповідати типу формального параметру. В Паскалі допускається використання процедур без параметрів. В цьому випадку формальні та фактичні параметри відсутні. В процедурі, як і в основній програмі, може бути відсутнім розділ опису змінних.
Приклад: Є масив дійсних чисел С [і], де і=(1,п). Визначити мінімальний елемент і порядковий номер (в вигляді процедури без параметрів ).
program proz2;
const n-5;
var c: array [I.. n] of real;
i,k: Integer;
m:real;
procedure min;
var k:integer;
begin
m: =c[1];
for i: =2 to n do
If m>c[i] then
begin
m: =c [i];
k:=i;
end;
end;
begin
witeln('Bведіть масив ');
for i: =1 to n do read(c[i]);
min;
writeln('Мінімальний елемент= ',т:8:2);
writeln('Його порядковий номер =’,k:2);
END.
Приклад: написати програму підрахунку кількості зірочок в першому рядку і кількість літер ' k' в другому.
program proz3;
type str=array[1.. 2 5 5] of char;
var a,b:str;
xl,x2, i, kol: integer;
ch:char;
procedure sumb(ch:char; var m:integer; mas:str; n: integer);
{(символ} (кіл-ть) (мас) (границя)}
var m:integer;
begin
т: =0;
for і: =1 to n do
If mas[i]=ch then m: =т+1;
end;
Begin
write('Bведіть кількість елементів в першому рядку');
readln (xl);
for і: =1 to x1 do read(a[i]);
write ('Введіть кількість елементів в другому рядку');
readln(x2);
for і:=1 to x2 do read(B[i]);
sumb (' * ', kol,a,xl);
writeln(‘Кількість * = ',kol);
sumb ('k', kol, b,x2);
writeln ('Кількість k = ',kol);
End.
Приклад:Знайти суму і добуток елементів у двох масивів: М[і],i =(1,10); N[i]=(1..5), (У процедурі).
program proz4;
uses crt;
type a=array[1.10] of Integer;
var masl,mas2:a;
i,summa, dob: integer; N1,N2: integer; kol:integer;
procedure L (n: integer;var mas: a; var sum, pr: integer) ;
begin
sum:=0; pr:=1;
for i: -1 to kol do begin
sum: =sum+mas [i];
pr: =pr*mas[i] ;
end;
end;
begin
clrscr;
writeln('Bведіть кількість елементів масивів 1-го, ІІ-го');
read(nl,n2);
writeln('Bвeдimь 1-й масив');
for і:=1 to n1 do read (masl [i]);
L(nl,MAS1, summa, dob);
writeln('Сумма:=',summa:2);
writeln(‘Дo6ymoк=’,dob:2) ;
writeln('Введіть 2-й масив');
for і:=1 to n2 do read(mas2[i] );
L (n2, mas2, summa, dob);
writeln(‘Cyммa= ', summa:2) ;
writelп('Добуток= ', dob:2) ;
END.
Завдання 1: Є масив цілих чисел М[1..20]. Обчислити суму елементів з 5-го по 15-й і з 15-го по 20-й (в процедурі).
program proz5;
uses crt;
var sum, n,i,j: integer;
m: array [I ..20] of integer;
procedure proc(i,j: integer);
begin
sum:=0;
for n:=i to j do sum: =sum+m[n];
writeln('from ', i, 'to ',j, ' ':3,'сума= ',sum);
end;
begin
clrscr;
writeln(‘введіть елементи масива');
for n:=1 to20 do
read(m[n]);
proc(5,15);
proc(15,20);
end.