Определение функции пользователя в отдельном модуле. Это дополнение в новых версиях.Функция пользователя определяется между операторами: DEF FN...END DEF Рассмотрим пример. Определим функцию пользователя –арксинус, которого нет в перечне стандартных. Для его определения используем стандартные функции ATN (арктангенс) и SQR (квадратный корень), а также математическое соотношение: ARCSIN(X) = ATN(X / SQR(-X * X + 1)).
В этой программе не определена функция в точках –1 и 1. Для её определения надо ввести дополнительные условия. В этом случае функция пользователя определяется в нескольких рядах программы.
PRINT " или "; 180*FNARCSIN(arv)/FNPII; " градусов."
Используя следующие математические соотношения, можно определить и другие математические функции:
Функция пользователя может обрабатывать текст. Рассмотрим например функцию пользователя, которая убирает пустые места (пробелы), как справа, так и слева.
FUNCTION...END FUNCTION
Удобнее оформлять функцию пользователя в виде отдельного модуля. Для этого надо: 1. Взять из меню EDIT команду New Function... 2. Напечатать имя функции (Первая – буква, без пробелов, английскими буквами и цифрами) 3. В открывшемся окне между FUNCTION и END FUNCTION напечатать описание функции. 4. Возвратится в основную программу, взяв из меню View команду Subs... и далее выбрав название своей программы.
Отличием от предыдущего случая является то, что перед названием программы не должны быть буквы FN и описание модуля функции не видно в основной программе. Общий вид функции пользователя:
Если нет слова STATIC, то значения переменных обнуляются. А если есть слово STATIC, то сохраняются промежуточные значения переменных при многократном использовании программы. EXIT FUNCTION даёт возможность прервать выполнение программы и выйти из неё. Приведём пример создания функции пользователя HYPOTENUUS, у которой 2 аргумента a и b. Значение функции находим с помощью теоремы Пифагора.
Для этого делаем следующее: 1. Выбираем Edit->New Function..
4. Теперь пишем аргументы в первую строку и формулу для гипотенузы.
5. Возвращаемся в основную программу View->Subs...и пробуем использовать функцию пользователя.
После сохранения программы, созданную функцию пользователя можно использовать только вместе с этой программой. После сохранения добавляется фраза в начало программы DECLARE FUNCTION... это вспомогательная фраза для, которую делает редактор QBASIC. При редактировании функции пользователя, эту фразу надо стирать.
Создадим программу, которая решает систему линейных уравнений относительно x и y.
A*x+b*y=c D*x+e*y=f У этой системы должно быть 6 аргументов (a, b, c, d, e, f) + ещё аргумент «какой», которым задаём, относительно чего решаем систему (x или y). Договоримся. Что аргумент «какой» может принимать только 2 значения –1 (верное) или 0 (неверное) и в зависимости от этого получаем решение первого или второго уравнения. Описание функции:
Однако возникают проблемы при d=0. Рассмотрим, как это решить с помощью оператора EXIT FUNCTION.
При d=0, значение функции получактся равным 0, что неверно. Исправим это.
Создадим функцию пользователя, которая находит наибольший общий делитель (НОД) двух чисел.
Приведём пример ещё одной программы сложения двух обыкновенных дробей.
Чтобы использовать функцию пользователя, она должна быть определена в данной программе.
Одна функция пользователя может содержать внутри себя другую. Например определим функцию пользователя VYK(a, b)=a*b/SYT(a, b).
При этом функция SYT(a,b) должна быть определена в этой программе.
Следующая функция пользователя выбирает из ”isikukood” дату рождения и оформляет её в виде: dd.mm.yy
Основная программа:
Если последний пример сохранить и открыть затем в текстовом редакторе, например NotePad, то текст программы будет выглядить следующим образом и его можно распечатать в виде:
|