Program Primer;
Uses CRT;
Var a, b : Integer;
Function Nemo(Var x : Integer; y : Integer) : Integer;
x – параметр-переменная,
y – параметр-значение
Begin
x := x + y;
a := y;
Nemo := x;
End;
Begin
a := 1;
b := 2;
WriteLn(‘Nemo=’, Nemo(a, b),‘ a=’, a, ‘ b=’, b);
ReadLn;
End.
Результат работы программы:
Nemo=2 a=2 b=2
Значение переменной a будет испорчено, так как значения переменных a и x будут записываться в одной ячейке памяти, а функция Nemo вместо 3 примет значение, равное 2. Ошибки такого рада трудно найти, поэтому в функциях и не рекомендуется использовать параметры-переменные,
15. в заголовке функции нельзя использовать формальные параметры безымянных типов (стандартные типы считаются поименованными):
Function Func(x : 1..10; r : array [1..20] Of Real) : Real;
Типы формальных параметров x и r являются безымянными, так как не относятся к стандартным. Поэтому в вызывающей эту функцию программе необходимо определить новые типы данных:
Type TCount = 20;
TVector = Array [1 .. TCount] Of Real;
TInterval = 1 .. 10;
а в заголовке функции использовать эти новые типы:
Function Func(x : TInterval; r : TVector) : Real;
16. в любой функции в качестве формальных параметров могут быть использованы другие функции, составленные программистом – параметры-функции.
Требования к таким функциям:
ü их тип должен быть определен в разделе описания типов Type,
ü они не должны быть стандартными,
ü они не должны быть вложенными,
ü они должны иметь только параметры-значения,
ü они должны быть откомпилированы с использованием директивы компилятору {$F+} – использование дальнего типа вызова подпрограмм.
Пример: создать функцию для определения суммы, произведения двух чисел и произведения их суммы на их разность. Функции для выполнения этих операций описать как параметры-функции:
Дата добавления: 2015-08-08; просмотров: 725;