Хелпикс

Главная

Контакты

Случайная статья





ПРОЦЕДУРЫ И ФУНКЦИИ. Процедуры



ПРОЦЕДУРЫ И ФУНКЦИИ

Объявляются процедуры и функции перед основной программой (обычно после раздела var – раздела описания переменных).

При описании и при использовании процедур и функций различают формальные и фактические параметры.

Параметры, определяемые при описании процедуры или функции, называются формальными параметрами.

Параметры, задаваемые при вызове процедуры или функции, называются фактическими параметрами.

В описании формального параметра перед именем параметра может стоять слово var, показывающее, что параметр является параметром-переменной. Отличие параметра-переменной от обычного параметра (т.е. параметра-значения) состоит в том, что действия процедуры или функции могут изменить значение переменной, являющейся фактическим параметром.

Использование параметров-переменных позволяет использовать процедуры для изменения значений переменных основной программы.

Переменные, объявленные в основной программе, доступны всей программе, в том числе и процедурам, и функциям. Такие переменные называются глобальными.

Переменные, объявленные в процедуре или функции, называются локальными. Локальные переменные доступны только действиям той подпрограммы (процедуры или функции), в которой они объявлены.

 

1. Процедуры

Часто некоторые действия в программе должны выполняться несколько раз. Для избежания дублирования повторяющиеся действия можно оформить как процедуру. Процедурой называется имеющая имя последовательность действий, предназначенная для решения определенной подзадачи.

Когда во время работы основной программы встречается вызов процедуры, то выполнение основной программ приостанавливается и выполняются действия процедуры. После того, как будут выполнены все действия процедуры, продолжается выполнение основной программы с того действия, которое следует за вызовом процедуры.

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

В общем виде процедуру можно записать:

Procedure Имя (var параметр1: тип1;…; var параметрК: типК);

     Var <описание внутренних (локальных) параметров>;

       

         Begin

               < блок действий процедуры>

         End;

где procedure – зарезервированное слово, обозначающее, что далее следует объявление процедуры; Имя – имя процедуры, используется для вызова действий, находящихся между begin и end, реализующих процедуру; ПараметрN – переменные, которые используются в процедуре. Параметры используются для передачи в процедуру информации, а также для передачи информации из процедуры в вызвавшую ее программу.

Параметры в процедурах могут быть входными и выходными. Для выходных параметров обязательно слово var. Для входных параметров слово var может отсутствовать. Если же var присутствует, то параметры могут быть одновременно и входными и выходными. Указанные в объявлении процедуры параметры являются формальными параметрами. При вызове процедуры параметрами являются переменные основной программы, которые являются фактическими параметрами.

Вызов и выполнение процедуры осуществляется при помощи операторов:

  <Имя> [(список параметров)];

где Имя – имя вызываемой процедуры; список параметров – разделенные запятыми фактические параметры, в качестве которых зависимости от описания параметров в объявлении процедуры, могут быть использованы константы, переменная или выражения.

 

Пример 1: Разработать процедуру вычисления факториала числа.

Решение. Опишем процедуру Factor от  двух параметров, где первый параметр n задает число, факториал которого надо вычислить, второй f – выходной параметр. 

Procedure Factor (n: integer, var f: integer);

Var

     i: integer;

begin

     f:=1;

for i:=2 to n do

    f:=f*i;

 end;

 

 

2. Функции

Функции – это последовательность действий, имеющая имя и результат.

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

Ранее рассматривались вопросы работы со стандартными функциями языка Pascal. Например, функция sqrt(x) вычисляет квадратный корень числа х. Значение, вычисленной функцией, связано с именем – sqrt. Поэтому для того, чтобы в программе вычислить значение квадратного корня из числа, находящегося в переменной х, и присвоить полученное значение переменной y, достаточно записать: y:=sqrt(x).

Программист может объявить свою собственную функцию и в дальнейшем использовать ее точно так же, как и стандартные функции. Например, можно определить (объявить) функцию вычисления факториала, назвав ее Factor. Затем в том месте программы, где нужно вычислить факториал, вместо последовательности действий, делающей это, написать:

y:=Factor(x).

В общем виде функцию описать можно так:

Function Имя (параметр1:тип1,…, параметрК: типК): Тип;

Var < объявление внутренних (локальных) переменных функции>

Begin

       <блок действий функции>

        Имя:=Выражение;

End;

где function – зарезервированное слово языка Pascal, обозначающее, что далее следуют действия, реализующие функции программиста; Имя – имя функции; Параметр – это переменная, значение которой используется для вычислений значения функции. Отличие параметра от обычной переменной программы состоит в том, что он объявляется не в разделе переменных функции, который начинается словом var, а в заголовке функции. Конкретное значение параметр получает при вызове функции из основной программы; Тип – тип значения, которое функция возвращает в вызвавшую ее программу.

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

Например, вычисление факториала числа, можно оформить в виде функции Factor с одним параметром n типа integer. Параметр задает число, факториал которого надо вычислить.

Function Factor (n: integer): integer;

Var f: integer;

     i: integer;

begin

     f:=1;

for i:=2 to n do

    f:=f*i;

Factor:=f;

end;

Вызовы функции могут быть:

y:=Factor (n);

y:=Factor (5);

writeln(Factor (n));

y:=sqr(k)+Factor (n).

Возвращает функция вычисленное значение факториала – число типа integer.

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

 

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

 Процедура и функция – это два способа оформления подпрограммы или фрагмента программы, предназначенного для решения части общей задачи. Одну и ту же подпрограмму можно оформить как процедуру или как функцию.

   

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.