pascal - работа с подпрограммой
procedure <имя_процедуры> (<описание параметров-значений>; var: <описание параметров-переменных>); begin <операторы> end;
Для вызова процедуры достаточно указать её имя со списком фактических параметров.
function <имя_функции> (<описание входных данных>): <тип_функции>; begin <операторы>; <имя_функции> := <результат> end;
В блоке функции обязательно должен присутствовать оператор <имя_функции> := <результат>.
Пример вызова процедуры.
program digits;
var
n, k, j: integer;
procedure number_col(m: integer);
var
i: integer;
s: string;
begin
str(m, s);
for i := 1 to length(s) do
writeln(s[i]);
end;
begin
read(n);
number_col(n);
number_col(k);
number_col(j);
end.
Степень числа - возведение в степень.
program stepen_01;
var
R, x, n, i: integer;
begin
// R := x * x * x * x * x;
// R := x;
// R := R * x;
// R := R * x;
// R := R * x;
// R := R * x;
write('Input x, n: ');
readln(x, n);
R := x;
for i := 1 to n-1 do
R := R * x;
writeln('stepen = ', R);
end.
Механизм возведения в степень выделен в процедуру.
program stepen_02;
var
R, x, n: integer;
procedure stepen( x1, n1: integer; var R1: integer);
var
i: integer;
begin
R1 := x1;
for i := 1 to n1-1 do
R1 := R1 * x1;
end;
begin
write('Input x, n: ');
readln(x, n);
stepen( x, n, R);
writeln('stepen = ', R);
end.
Механизм возведения в степень из процедуры преобразован в функцию.
program stepen_03;
var
R, x, n: integer;
function stepen( x1, n1: integer): integer;
var
i: integer;
begin
stepen := x1;
for i := 1 to n1-1 do
stepen := stepen * x1;
end;
begin
write('Input x, n: ');
readln(x, n);
R := stepen( x, n);
writeln('stepen = ', R);
end.
Решение задачи с применением своей созданной функции.
program stepen_04;
var
R, x, n: integer;
function stepen( x1, n1: integer): integer;
var
i: integer;
begin
stepen := x1;
for i := 1 to n1-1 do
stepen := stepen * x1;
end;
begin
write('Input x, n: ');
readln(x, n);
R := stepen( x, 3) + stepen( x, 5) + stepen( x, n);
writeln('stepen = ', R);
end.
