Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Функции, определяемые программистом



В QB довольно много готовых (стандартных) функций, которые бывают нужны для решения часто встречающихся задач. Это всевозможные математические функции, функции обработки строк. Чтобы передать функции значения, которые она должна обработать, эти значения (они называются параметрами, или аргументами) перечисляются через запятую в круглых скобках сразу после названия функции. Любую функцию можно использовать в выражении наравне с переменными.

QB позволяет программисту определить новую (собственную, пользовательскую) функцию. Для определения функции служат операторы FUNCTION и ENDFUNCTION:

FUNCTION имя [(список_формальных_параметров)] операторы [EXITFUNCTION] операторы имя = выражение END FUNCTION

где: FUNCTION–служебное слово, определяющее заголовок подпрограммы-функции; имя - допустимое имя переменной, которое может включать один из суффиксов явного объявления типа функции (тип возвращаемого функцией значения). При отсутствии такого суффикса тип функции определяется типом переменной имя, установленным оператором DEFтип или по умолчанию; список_формальных_параметров - перечень имен для обозначения аргументов функции с указанием их типа.Имеет следующий формат:

переменная [()] [AS тип][, переменная [()] [AS тип]]

Если параметр является массивом, то после имени соответствующей переменной ставятся пустые круглые скобки. Например, в следующем примере в функцию F передается переменная целого типа N и вещественный массив двойной точности B. Сама функция F возвращает результат вещественного типа, на что указывает суффикс, стоящий после имени функции #.Тип переменной может быть указан и явно.

FUNCTION F#(N%, B#()) или FUNCTION F#(N as Integer, B() as Double)

Переменные, перечисленные в списке при описании функции, являются формальными параметрами и их имена никак не связаны с именами фактических параметров при вызове функции.

выражение - любое допустимое арифметическое, логическое или строковое выражение, соответствующее типу функции. Оно может содержать, как формальные параметры, так и любые другие переменные. Вычисленное значение выражения служит результатом, который возвращается функцией через ее имя.

Для досрочного выхода из функции может быть использован оператор

EXIT FUNCTION

EndFunction – служебные слова, ограничивающие содержательную часть функции.

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

Пример 1. Требуется создать пользовательскую функцию f=x2+sin(x+z).

Решение. На рис.14 приведена схема алгоритма функции, а на рис. 15 – схема алгоритма вызывающего (основного) модуля.

  Рис.14 Рис. 15
Function f (x as double, z as double) f=x^2+sin(x+z) End Function

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

Вычислить с помощью функции f выражение s=f(a,b)+f(a,c)-f(c,b). Главная программа и вызов функции f:

Cls Dim a as double, b as double, c as double Dim s as double Input “введитеa,b,c ”, a,b,c S=f(a,b)+f(a,c)-f(c,b) ‘ вызов_функции_f_в_главном_модуле Print “s=”;s

Пример 2. Разработать функцию для поиска максимального элемента строки с номером K в матрице B(M, N). Применить эту функцию для построения одномерного массива из максимальных элементов строк заданной матрицы A (10,5).

Решение. На рис.16 приведена схема алгоритма функции, а на рис. 17 – схема алгоритма вызывающего (основного) модуля.





Дата публикования: 2015-09-17; Прочитано: 234 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...