Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОЦЕДУРЫ И ФУНКЦИИ.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
349 Кб
Скачать
☆

Функции

Функция аналогична процедуре, но имеются два отличия: функция передает в точку вызова скалярное значение; имя функции может входить в выражение как операнд. Например, функция Chr(65) возвратит в точку вызова символ А (код ASCII — 65), Sqr(X) —возведет в квадрат значения целого или вещественного X и возвратит в точку вызова вычисленное значение квадрата числа X.

Синтаксис описания функции очень похож на синтаксис описания процедуры-оператора: <описание функции>::= <заголовок фунщии>; <блок>

<заголовок функции>::= Function <имяфункции>:<тпп> |

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

Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово function, идентификатор (имя) функ­ции, заключенный в круглые скобки, необязательный список формальных парамет­ров и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе:

function <имя> (Формальные параметры) : <тип результата>;

const ...;

type

var ...; .

begin

<операторы>

end;

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

<имя функции> := <выражение>,

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

В качестве примера приведем программу вычисления выражения Z=(A5+A3)/2*Am в которой возведение в сте­пень выполняется функцией Step.

{Программа вычисления выражения Z=(А5+А3) /2*Аm}

program DemoFuncj;

var М : integer;

A,Z,R : real;

function Step(N : integer; X : real): real;

var I : integer; У : real;

begin

Y:=1;

for I:=l to N do

Y:=Y*X;

Step:=Y

end;

begin

Write('Введите значение числа А и показатель степени М');

Readln(A,M);

Z:=Step(5,A);

Z:=Z+ Step(3,1/A);

if M=0 then R:=l

else if M>0 then R:=Step(M,A) else R:=Step(—M,1/A);

Z:=Z/2*R;

Writeln('Для А=',А,'M=',М,' Значение выражения =',Z);

end.

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

Процедура не может выступать как операнд в выражении