Процедура и функция – это два способа оформления программы или фрагмента программы, предназначенного для решения общей части задачи. Одну и ту же программу можно оформить как процедуру или функцию.
procedure SoprPar (r1,r2,r3:real; var sr:real);
Begin
sr:=(r1+r2+r3)/(r1*r2*r3);
end;
function SoprPar (r1,r2,r3:real):real;
Var
sr:real;
Begin
sr:=(r1+r2+r3)/(r1*r2*r3);
SoprPar:=sr;
end;
Очевидно, что оформление подпрограммы в виде функции в данном случае более предпочтительно, так как целью вычисления является получение только одного значения. Кроме того, инструкция вычисления сопротивления цепи sr:= SoprPar (r1,r2,r3); выглядит более естественно по сравнению с инструкцией вызова процедуры SoprPar (r1,r2,r3, sr);.
Возникает вопрос, каким критерием пользоваться при выборе способа оформления подпрограммы?
Ответ можно сформулировать в виде следующего правила:
Если подпрограмма должна изменить значение только одной переменной основной программы, то ее следует оформить как функцию, в остальных случаях подпрограмму следует оформлять как процедуру.