Функции
Функция — это независимый программный блок (программная единица), который позволяет получить только один результат. Примером являются стандартные функции Паскаля. Имеется возможность писать свои функции. Располагаются они в программе так же, как процедуры: после описания данных и перед операторами. Пример. Program...; Const ... Var ... Функция_1 ..... Функция_n Begin { основная программа } ..... End.
Функция оформляется так же, как процедура. Отличие имеется в заголовке и способе передачи результата. В общем виде функция оформляется так: Function Имя(формальные_параметры): Тип_Результата; Описание локальных переменных Begin .... Имя: = Выражение; .... End; Формальные параметры – это аргументы функции. Они могут отсутствовать. Результат передается через имя функции, поэтому в заголовке указывается тип результата. По этой же причине среди операторов в теле функции должен быть хотя бы один, в котором имени функции присваивается значение. Именно это значение и будет возвращено функцией в качестве результата. Пример. Оформить в виде функции операцию возведения вещественного числа в целую степень. Function Stepen(x: Real; n: Integer): Real; Var i: Integer; P: Real; Begin If X = 0 Then If n = 0 Then Stepen: = 1 Else Stepen: = 0 Else If n = 0 Then Stepen: = 1 Else If n > 0 then Begin P: = 1; For i: = 1 to n do P: = P*X; Stepen: = P; End else Begin P: =1; For i: = 1 to Abs(n) do P: = P/X; Stepen: = P; End; End; { Stepen }
Для вычисления значения функции с конкретным параметром ее, как и процедуру, вызывают из основной программы с указанием фактических параметров–аргументов. В отличие от процедуры имя функции может встречаться в выражениях в качестве операнда. Когда выражение вычисляется, функция выполняется и значением операнда становится величина, возвращаемая функцией. Формальные параметры функции могут быть только параметрами–значениями. При ее вычислении они не изменяются. Аргументы функции могут быть любых типов: 1) скалярные — числа, символы, булевские; 2) массивы; 3) другие типы. Сама функция (результат) имеет только скалярный тип, (т.е. число - целое или вещественное, а также символ или булевская переменная). При обращении к функции (вызове ее) на место формальных параметров подставляются фактические, как в процедуре. Типы, количество и порядок следования фактических и формальных параметров должны совпадать. В теле функции могут использоваться (вызываться) и другие функции, стандартные или написанные пользователем.
Пример. Вычислить гиперболический синус по формуле: Sinh(x) = (ex – e-x)/2 Функция будет иметь вид
Function Sinh(X: Real): Real; Begin Sinh: = (Exp(X)-Exp(-X))/2; End; К функции можно обращаться из основной программы; из другой функции и из самой себя. Функции, которые вызывают сами себя, называются рекурсивными. Такие функций часто встречаются в математике, например, вычисление факториала, возведение числа в целую степень, вообще, нахождение любых значений методом математической индукции. Так, факториал вычисляется по формуле: n! = n*(n -1)! - при n> 0 и n! = 1 - при n=0. Для рекурсивных функций необходимо вырабатывать условие завершения (иначе произойдет зацикливание). Это условие для n! записано во второй строчке (при n=0) – так как рекурсия производится на основе второго сомножителя - (n-1)! =(n-1)*(n-2)! и т.д. - до нуля. Запишем рекурсивную функцию вычисления факториала.
Function Fact (N: Integer): Integer; Begin If N=0 Then Fact: = 1 Else Fact: = N*Fact(N-1); End;
|