Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Различие между процедурами и функциями



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

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

Program ProcedureAndFunction;
Uses
Crt;
Var
a, b, SumNumbers: integer;
Procedure Summa1(Var Sum: integer; a, b: integer);
Begin
Sum:= a+b;
End;
{ - - - - - - - - - - - - - - - - - - - -}
Function Sum(a, b: integer): integer;
Begin
Sum:= a+b;
End;
{ - - - - - - - - - - - - - - - - - - - -}
Begin
ClrScr;
a:= 12;
b:= 15;
Summa1(SumNumbers, a, b);
writeln ('С помощью процедуры сумма чисел равна ',SumNumbers);
writeln ('С помощью функции сумма чисел равна ',Sum(a, b));
End.

Вызов процедуры производится по ее имени. Наряду с параметрами-значениями a и b, которые подлежат сложению, в списке параметров присутствует параметр-переменная Sum, который содержит возвращаемое процедурой значение - сумму.

Функция же имеет только два параметра. Это связано с тем, что само имя функции представляет собой идентификатор параметра, значение которого после окончания работы функции равно результату вычисления. Этот параметр соответствует параметру-переменной Sum процедуры. При объявлении функции ей в соответствие ставят определенный тип данных - тип возвращаемого функцией значения.

Объявление функции

Function Sum(a, b: integer): integer;

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

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

SumNumbers:= Sum(a,b);

Если не обращать внимания на наличие списка параметров, то этот оператор выглядит как присвоение переменной SumNumbers значения переменной Sum. Компилятор, кончно же, знает, что Sum - это имя функции (т.к. определение предшествует использованию) и организует вычисления соответствующим образом. Точно так же, как константа или переменная, вызов функций может использоваться в списках параметров оператора write (см. программу), что для процедур невозможно.

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

Итак, из вышесказанного возьмите на заметку следующее.

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

Формальные и фактические параметры. Назначение, варианты реализации.

Необходимо соблюдать строгое соответствие между формальными и фактическими параметрами по их количеству, типам и порядку следования в списке.

Формальным параметром может быть ТОЛЬКО переменная, тип которой обязательно указывается в заголовке описания функции или процедуры.

Если формальных параметров несколько и они имеют один и тот же тип, то их удобно объединить в группу:

<имя>, <имя>,┘, <имя>: <тип>;

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

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





Дата публикования: 2015-02-03; Прочитано: 274 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...