Оператор DEF FN

 

Оператор DEF FN определяет функцию, описываемую пользователем.

 

Синтаксис:

DEF FN<имя>[(<список параметров>)]=<описание функции>

 

Параметр <имя> должен быть допустимым в Бейсике именем переменной. Это имя с предшествующими буквами FN и будет именем функции. В <список параметров> включаются имена переменных из описания функции, которые при вызове функции будут заменены соответствующими значениями. Параметры в списке должны разделяться запятыми. Параметр <описание функции> представляет собой выражение, описывающее функцию. Это выражение ограничивается размерами строки. Имена переменных, которые включаются в выражение, используются только для описания функции и не влияют на переменные в программе, имеющие такие же имена. Переменные, используемые в описании функции, могут либо указываться, либо не указываться в списке параметров. Если переменная включена в список, то ее значение приводится во время вызова функции. Если же переменной в списке параметров нет, то используется текущее значение переменной.

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

Пример:

DEF FNAB(X,Y)=X^3/Y^2

T = FNAB(I,J)

 

Пример:

DEF FNT(X)=X*X+A

A=5

P=FNT(3)

Перед вычислением значения функции FNT формальный аргумент Х заменяется на фактический аргумент 3 указанный в обращении к функции и с этим значением Х (Х=3) будет вычислено значение выражения Х*Х+А в результате переменной Р присвоится значение 14.

 

Пример:

DEF FNT(X,Y) =X*X+Y*Y+A*A

A=2:T=3.1:Z=8.6:PI=3.14

P=0.5*SQR(FNV(SIN(T/PI),2*Z))

В последней строке имеется обращение к функции FNV используемой в качестве аргумента стандартной функции SQR. При вычислении функции FNV сначала будут вычислены выражения SIN(T/PI) и 2*Z значения которых заменяют формальные аргументы X и Y в арифметическом выражении определяющем функцию FNV(X,Y), а затем вычислено значение этого арифметического выражения, т.е. значение функции FNV, сведено к вычислениям:

X=SIN (T/PI)

Y=2*Z

V+X*X+Y*Y+A*A

P=0.5*SQR(V)

 

Задача:

Составить программу для вычисления sin(x) cos(x) tan(x) от аргумента заданного в градусах.

CLS

DEF fnsingrad (x) = SIN(x * 3.14 / 180)

DEF fncosgrad (x) = COS(x * 3.14 / 180)

DEF fntangrad (x) = TAN(x * 3.14 / 180)

PRINT fnsingrad(30), fncosgrad(90), fntangrad(45)

 

Задача:

Составить программу округляющее число до заданного количества знаков после запятой.

 

a = 2.156374

DEF fnr (x, d) = INT(x * 10 ^ d + .5) / 10 ^ d

PRINT fnr(a, 0), fnr(a, 1), fnr(a, 2), fnr(a, 3)

 

 

задача:

даны три стороны треугольника определить его углы.

 

Решение:

Теорема косинусов дает угол между сторонами А и В :

 

 

 

 

В бэйсике из всех обратных функций существует только арктангенс (ATN) . поэтому выводим две функции арккосинус (через арктангенс) и функцию для вычисления углов ( с использованием арккосинуса). Из справочников находим формулу связывающую арккосинус с арктангенсом.

 

 

 

 

Программа:

DEF FNAC (X) = ATN(SQR(1/X^2-1))

DEF FNUG (A,B,C)=FNAC((A^2+B^2-C^2)/(2*A*B))

INPUT “ВВЕДИТЕ ДЛИННЫ СТОРОН ТРЕУГОЛЬНИКА”;A,B,C

PRINT “УГОЛ A=”;FNUG (B,C,A);”РАДИАН”

PRINT “УГОЛ B=”;FNUG (A,C,B);”РАДИАН”

PRINT “УГОЛ C=”;FNUG (A,B,C);”РАДИАН”