Автор работы: Пользователь скрыл имя, 16 Декабря 2013 в 15:28, доклад
В среде Turbo-Pascal имеются две разновидности подпрограмм - процедуры и функции. Структура подпрограммы аналогична структуре программы в целом.
Подпрограмма должна быть описана до того, как она будет использована в основной программе или другой подпрограмме.
Процедуры и функции
В среде Turbo-Pascal имеются две разновидности подпрограмм - процедуры и функции. Структура подпрограммы аналогична структуре программы в целом.
Подпрограмма должна быть описана до того, как она будет использована в основной программе или другой подпрограмме. Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные параметры, объявленные внутри подпрограммы и доступные только ей самой, и
глобальные- объявленные в основной программме и доступные как основной программе, так и всем ее подпрограммам.
function <имя функции> (<список формальных параметров>):<тип функции>;
<секция описаний локальных переменных>;
begin
<секция операторов>
end;
где <имя функции> - идентификатор, к которому предъявляются те же требования, как к любому идентификатору в среде Turbo-Pascal;
<список формальных параметров> - все параметры в списке
указываются вместе со своим типом (одного типа через запятую; различные типы через точку с запятой). Тип параметров в списке может быть любой. Как частный
случай, функция может быть без параметров.
<тип функции> - задается обычным способом и может быть любым простым или String..
Вызов функции может осуществляться из основной программы или
другой подпрограммы .
< имя переменной>:= <имя функции>(<список фактических параметров>);
или в операторе вывода
Write( <имя функции>(<список фактических параметров>));
<cписок фактических параметров> - представляет собой, перечисленные через запятую значения, которые при обращении заменяют соответствующие формальные параметры в описании функции.
Следует обратить внимание на то, что количество, тип и порядок расположения фактических параметров в обращении к функции обязательно должен совпадать с количеством , типом и порядком расположения формальных параметров в описании функции.
Пример
Var XN : real;
NN : word;
function Ipow(X: real; N: word) : real;
Var I : word;
M: real;
Begin
M:=1;
for I:=1 to N do
M:=M * X;
Ipow:=M
end;
{Основная программа}
Begin
Readln(XN,NN);
Writeln(‘Значение функции = ‘, IPow(XN,NN))
end.
Как ранее указывалось, тип формальных параметров может быть любым, однако в заголовке подпрограммы нельзя вводить новый тип, так нельзя писать:
function Max(A : array [1..50] of real): real;
Правильно в основной программе ввести новый тип, а затем использовать его в заголовке подпрограммы:
Type MASS = array [1..50] of real;
function Max(A : MASS) : real;
procedure <имя процедуры>(<список формальных параметров>);
<секция описания локальных переменных>;
begin
<секция операторов>
end;
В отличие от формального описания функции, в заголовке процедуры отсутствует понятие <тип>, так как имя процедуры не является носителем формального результата. Результаты выполнения процедуры могут быть множественны и указываются в списке формальных параметров в качестве параметров-переменных.
В качестве формальных параметров наиболее часто встречаются параметры-значения и параметры-переменные.
Параметры-значения передаются основной программой в подпрограмму через стек в виде их копий и, следовательно, собственный параметр программы подпрограммой изменится не может.
При передаче параметров-переменных в подпрограмму фактически через стек передаются их адреса в порядке, объявленном в заголовке подпрограммы. Следовательно, подпрограмма имеет доступ к этим параметрам и может их изменять, поэтому результаты выполнения процедуры должны указываться в списке формальных параметров именно в качестве параметров-переменных.
Параметр-переменная указывается в заголовке процедуры аналогично параметру-значению, но только перед именем параметра записывается ключевое слово Var.
procedure MaxMin(A:MASS; Var Max,Min:real);
Здесь A - параметр-значение; Max, Min - параметры-переменные.
Для вызова процедуры из основной программы или другой подпрограммы используется отдельный оператор следующего вида:
<имя процедуры>(<список фактических параметров>);
Требования к списку фактических параметров в процедуре предъявляются те же, что и в подпрограмме-функции.
Пример
Var N: integer;
S: real;
{Подпрограмма-процедура вычисления суммы ряда
1/3 + 1/5 + 1/7 + ... + 1/(2*I+1) }
procedure Summa(Kol:integer; Var Sum:real);
Var I:integer;
Begin
Sum:=0;
for I:=1 to Kol do
Sum:=Sum+1/(2*I+1)
end;
{Основная программа}
Begin
Readln(N);
Summa(N,S); {вызов процедуры}
Writeln(‘Сумма ряда =´, S)
end.