Вызов подпрограммы - процедуры Function
End Function
Подпрограмма - процедура Function
End Sub
Пример 17.1.
Способ.
Вызов выполняется отдельной строкой с указанием имени подпрограммы и без круглых скобок фактические параметры. Например: max a, b, r1 .
При заданных a,b,c cоставить программную единицу для вычисления y= max(a,b) + max(a+b, c).Значение max определить в подпрограмме Sub.
Переменные в подпрограмме и основной программе описаны по умолчанию как тип Variant.
Sub max (ByVal N,ByVal M, R) ' Заголовок подпрограммы max
If N < M Then R = M Else R = N ' Выходной параметр R
End Sub' Конец подпрограммы
В окне кода подпрограмма может быть расположена рядом с основной программой (до нее или после ее).
Private Sub Command1_Click()' Основная программа
Dim a, b, c, y, r1, r2
a = Val(InputBox(" Введите а "))
b = Val(InputBox(" Введите b "))
c = Val(InputBox(" Введите c "))
Call max(a, b, r1) ' Первый вызов подпрограммы
Call max(a + b, c, r2) ' Второй вызов подпрограммы
y = r1 + r2 ' r1 и r2 - результаты работы подпрограммы
MsgBox " y=" & y
Такую подпрограмму называют встроенной функцией ( подобно sin(x) ). В ней выполняется определенный набор операторов и возвращается один результат, присвоенный имени подпрограммы
Синтаксис процедуры Function:
[Public | Private] [Static]Function ИМЯ[(параметры)] [As тип]
[операторы процедуры]
[ИМЯ= результат работы подпрограммы - процедуры]
End Function
[Public | Private] [Static] – аналогично процедуре Sub.
Function - название процедуры. ИМЯ - имя процедуры .
параметры - в простейшем случае их называют формальными параметрами.
тип - тип имени процедуры Function.
Ниже приведена подпрограмма типа Function с именем max:
Function max (n As single, m As single ) As single
if n<m then max=m else max=n
Основным способом вызова подпрограммы Function является вызов из выражения вызывающей программы (из выражения оператора присваивания, оператора if и д.р.). Cам вызов состоит из имени подпрограммы, за которым в круглых скобках записываются фактические параметры, которые могут быть переменными и выражениями. При этом в подпрограмме формальные аргументы заменяются фактическими, выполняются ее операторы, и результат в виде имени подпрограммы возвращается в место вызова из основной программы. Если имени процедуры не присваивается никакого значения - числовая функция возвращает нулевое значение.
Function max (n As single, m As single ) As single
y = max(a, b) + max(a+b,c)
1-й вызов 2-й вызов
Примечание 1.
1. По умолчанию формальные и фактические параметры должны быть согласованы по количеству, порядку следования и типу.
2. По умолчанию формальные параметры после работы подпрограммы возвращаются на место фактических. Такой возврат отменятся, если перед формальными параметрами введено ключевое слово ByVal.
Например, Function F (ByVala,ByValb).В этом случае a, b не возвращается на место c,d.
Примечание 2. Существует еще два способа вызова подпрограммы Function, в которых возвращаемое значение F теряется:
1. Отдельным оператором: Call F(c,d)
2.Отдельным именем и фактическими параметрами без скобок : F c,d
Пример 17.2.При заданных a,b,c cоставить программную единицу для вычисления y= max(a,b) + max(a+b, c).Значение max определить в подпрограмме Function,которая расположена ниже:
Function max(n As Single, m As Single) As Single ‘Заголовок подпрограммы
If n < m Then max = m Else max = n
End Function ‘ Конец подпрограммы
Основная программа:
Private Sub Command1_Click()
Dim a As Single
Dim b As Single
Dim c As Single