Оператор 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);”РАДИАН”