Интерактивное графическое программное обеспечение PC-DMIS (Глава 26: Использование выражений и переменных), страница 12

Функции

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

Следующий список предоставляет дополнительную информацию по функциям:

·  Для воздания функций используется ключевое слово  FUNCTION.

·  Первый пункт, который высвечивается после ввода слова FUNCTION,- это список параметров.

·  Этот список состоит из параметров, отделенных друг от друга запятыми.

·  Список параметров окружен скобками.

·  Второй пункт – это выражение.

·  Выражение состоит из имен параметров, куда должны быть подставлены параметры при вызове функции.

Ниже приведены некоторые примеры функций.


Пример общей функции

Assign/MYFUNC = FUNCTION((X), X*3)

Создает функцию  и присваивает ее переменной  MYFUNC. Функция принимает один параметр и умножает его на три.

Assign/V1 = MYFUNC(7)

Приписывает V1 значение 21 путем вычисления функции MYFUNC(7). 7  - это параметр, который подставляется туда, где  X встречается в части выражения определения функции. Так, X*3 превращается в 7*3.

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

У функции может быть несколько параметров:

Assign/ADDANDDOUBLE = FUNCTION((A,B), 2*(A+B))

Создает функцию и приписывает ее переменной ADDAND DOUBLE. Функция принимает два параметра. складывает их и умножает результат на два.

Assign/V2 = ADDANDDOUBLE(4, 5)

Приписывает V2 значение 18. Параметры 4 и 5 подставляются в часть выражения функции. Получается 2*(4+5).

Пример Функций, переданных в виде переменных

Функции можно передавать виде переменных:

Assign/NEWFUNC = MYFUNC

Делает так, чтобы переменная  NEWFUNC имела ту же функцию, что и MYFUNC.

Assign/V3 = NEWFUNC(12)

Присваивает V3 значение 36.

Пример рекурсивно определенных Функций

Функции можно определить рекурсивно (т.е. они могут называть сами себя).

Assign/FACTORIAL = FUNCTION((X), IF(X<=1, 1, X*FACTORIAL(X-1))

Создает так называемую факторную функцию, которая принимает один параметр. Если параметр равен или меньше 1, то он вычисляется как 1, иначе он вычисляется как X, умноженное на FACTORIAL X-1.

Assign/V4 = FACTORIAL(5)

Присваивает V4 значение 120 (5*4*3*2*1).


Пример функций, создающих другие функции

Функции могут создавать другие функции.

Assign/COMPOSE = FUNCTION((F, G), FUNCTION((X), G(F(X)) ))

Назначает COMPOSE функцией, которая принимает две функции в качестве параметров и создает новую функцию на основе двух.

Assign/ADD2 = FUNCTION((X), X+2)

Назначает ADD2 функцией, прибавляющей два к переданному параметру.

Assign/ADD3 = FUNCTION((X), X+3)

Назначает ADD3 функцией, которая прибавляет три к переданному параметру.

Assign/ADD5 = COMPOSE(ADD2, ADD3)

Назначает ADD5 функцией, которая состоит из функций ADD2 и ADD3.

Assign/V5 = ADD5(3)

Присваивает V5 значение V8.

Пример функций, являющихся членами множеств

Функция может входить в состав множества.

Assign/ANARRAY = ARRAY(3, FACTORIAL, “Hello World”, ADD5)

Назначает ANARRAY множеством из 4 элементов: число (3), функция (FACTORIAL), ряд, (“Hello World”), и функция (Add5).

Assign/V6 = ANARRAY[2](4)

Второй элемент ANARRAY представляет собой функцию FACTORIAL. Этой функции передается параметр 4, и в результате 24 присваивается V6.

Assign/V7 = ANARRAY[2](ANARRAY[4] (ANARRAY[1]))

С другой стороны:  Первый элементANARRAY (3) передается функции четвертого элемента множества (Add5). Результат 8 передается функции второго элемента множества (FACTORIAL) и присваивается  V7. V7 получает значение 40320.

Округление объектов действия