Процедуры и функции

Автор работы: Пользователь скрыл имя, 16 Декабря 2013 в 15:28, доклад

Описание работы

В среде Turbo-Pascal имеются две разновидности подпрограмм - процедуры и функции. Структура подпрограммы аналогична структуре программы в целом.
Подпрограмма должна быть описана до того, как она будет использована в основной программе или другой подпрограмме.

Файлы: 1 файл

N_Процедуры и функции.doc

— 21.50 Кб (Скачать файл)

Процедуры и функции

 

В среде Turbo-Pascal имеются две разновидности подпрограмм - процедуры и функции. Структура подпрограммы аналогична структуре программы в целом.

Подпрограмма должна быть описана до того, как она будет использована в основной программе или другой подпрограмме. Все параметры, которые использует подпрограмма, можно разбить на две категории: локальные параметры, объявленные внутри подпрограммы и доступные только ей самой, и

глобальные- объявленные в основной программме и доступные как основной программе, так и всем ее подпрограммам.

 

  • Формальное описание функции

 

function <имя функции> (<список формальных параметров>):<тип функции>;

       <секция описаний локальных переменных>;

begin

      <секция операторов>

end;


 

  где <имя функции> - идентификатор, к которому предъявляются те же         требования, как к любому идентификатору в среде Turbo-Pascal;     

     <список формальных параметров> - все параметры в списке

указываются вместе со своим типом (одного типа через запятую; различные типы через точку с запятой). Тип параметров в списке может быть любой. Как частный

случай, функция может быть без параметров.

     <тип функции> - задается обычным способом и может быть любым простым или String..

      

  • Вызов функции

Вызов функции может осуществляться из основной программы или

другой подпрограммы .

< имя переменной>:= <имя функции>(<список фактических параметров>);

или в операторе вывода

          Write( <имя функции>(<список фактических параметров>));


 

<cписок фактических параметров> - представляет собой, перечисленные через запятую значения, которые при обращении заменяют соответствующие формальные параметры в описании функции.

 

Следует обратить внимание на то, что количество, тип и порядок расположения фактических параметров в обращении к функции обязательно должен совпадать с количеством , типом и порядком расположения формальных параметров в описании функции.

 

Пример

 

Var XN : real;

      NN : word;

                                  {Подпрограмма-функция вычисления XN}

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.


 

 

 

 

 

 

 


Информация о работе Процедуры и функции