9.7. Процедуры
Объявление процедуры в общем виде
Procedure <Имя>( p1, p2 : T1; ... // Параметр-значение
var p3, p4 : T2; ... // Параметр-переменная
const p5, p6 : T3; ...); //Параметр-константа
var
//объявление локальных переменных - параметров
begin
//тело процедуры
end;
--------------------------------------------------------
Имя - имя процедуры (глагол) подпрограмму-, используется для ее вызова
var - признак параметров-переменных,
const -признак параметров констант;
p1, p2, p3, p4, p5, p6 - имена параметров,
T1, T2, T3 - их типы.
Обращение. Форма вызова процедуры:
program Example5;
….
uses
SysUtils;
var // Объявление аргументов
a1: integer;
a2 : real;
{..........…..}
Procedure MyProc( var p1: integer; p2 : real);
//Разделы локальных определений
begin
//Тело подпрограммы
end;
begin // Основная программа
{...............}
MyProc(a1, a2); //Вызов процедуры по имени в строке кода
{...............}
end.
----------------------------------------------------------
Соответствия: p1 - a1, p2 - a2
Задача2. Вывести таблицу квадратных корней. Line
Для оформления таблицы использовать процедуру Line.
program Example6;
…
uses
SysUtils;
var
i:byte;
Procedure Line(n:integer; c:char);
var
k:byte;
begin
for k:=1 to n do write(c);
writeln;
end;
begin
writeln('Tabl kvadratnyx korney');
Line(15,'=');
writeln('Chislo | Koren');
Line(15,'=');
for i:=1 to 5 do
begin
writeln(i:5,' ',sqrt(i):6:2);
Line(15, '-');
end;
readln
end.
9.8. Процедура или функция?
Процедура и функция два способа оформления подпрограммы. Одну и ту же подпрограмму можно оформить как процедуру или как функцию.
Пример вычисления сопротивления цепи (Sopr), состоящей из трех параллельных сопротивлений (R1, R2, R3).
Procedure SoprPar(r1, r2, r3:real; var sr:real);
begin
sr := (r1+r2+r3)/(r1*r2*r3);
end;
Function SoprPar(r1, r2, r3:real; var sr:real):real;
var
sr : real;
begin
sr := (r1+r2+r3)/(r1*r2*r3);
SoprPar:=sr;
end;
Оформление подпрограммы в виде функции более предпочтительно, т.к. целью вычисления является получение одного значения.
Правило:
Если подпрограмма должна изменить значение только одной переменной основной программы, то ее следует оформить как функцию, в остальных случаях подпрограмму следует оформить как процедуру.