Процедури з параметрами. Формальні та фактичні параметри.
Program max;
Var x,y,u,v :real;
a,b,s :real;
procedure maxdva;
begin
if a>b then s:=a else s:=b;
end;
begin
read(x,y);
a:=x+y; b:=x*y;
maxdva;
u:=s; a:=0.5; b:=u;
maxdva;
v:=s;
writeln (‘u=’,u,’v=’,v);
end.
Процедура maxdva не дуже зручна у використанні, оскільки в ній жорстко зафіксовані вхідні дані a і b, тому перед кожним звертанням до процедури цим змінним треба присвоїти значення, з яких треба вибрати більше. Але в Паскалі можна не фіксувати вхідних даних, з якими працює процедура , а зробити їх параметрами, які набувають конкретних значень під час кожного звертання до процедури. Тоді впроцедурі maxdva введемо формальні два ідентифікатори, к1 і к2 , які порівнюють і вибирають більше з них
procedure maxdva(k1,k2:real);
begin
if k1>k2 then s:=k1 else s:=k2;
end;
Ці ідентифікатори називаються формальними параметрами. Параметри служать для обміну значеннями між підпрограмою і головною програмою. Ці параметри не мають ніякого відношення до імен змінних, які використоуються в інших частинах програми. Під час кожного звертання до процедури формальні параметри набувають конкретних значень. Формальні параметри зазначають у заголовку процедури і впорядковують. Для кожного параметра вказують його тип.
Під час виклика процедури записуємо ім’я цієї процедури і в круглих дужках- список фактичних параметрів –тих значень, за яким обчислюється значення процедури. Типи формальних і фактичних параметрів повинні співпадати, причому перший фактичний параметр відповідає першому формальному, другий фактичний параметр - другому формальному і т.д.
Можливі ,принаймні, три способи задання формальних параметрів :
1. параметри перед якими не стоїть службове слово var і за якими йде ідентифікатор типу;
2. параметри перед якими зазначенеслужбове слово var і за якими йде тип;
3. параметри, яким передує службове слово var і , які не мають типу .