Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНСПЕКТ ЛЕКЦИЙ(рус).doc
Скачиваний:
80
Добавлен:
09.02.2016
Размер:
2.29 Mб
Скачать

2 Способ.

Вызов выполняется отдельной строкой с указанием имени подпрограммы и без круглых скобок фактические параметры. Например: max a, b, r1 .

Пример 17.1.

При заданных 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

End Sub

17.3. Подпрограмма - процедура Function

Такую подпрограмму называют встроенной функцией ( подобно 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

End Function

Вызов подпрограммы - процедуры Function

Основным способом вызова подпрограммы 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 (ByVal a, ByVal b). В этом случае 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

Dim y As Single

a = Val(InputBox(" Введите а "))

b = Val(InputBox(" Введите b "))

c = Val(InputBox(" Введите c "))

y = max(a, b) + max(a + b, c) ' 2 обращения к подпрограмме с именем max

MsgBox " y=" & y

End Sub

Во избежания ошибок в основной программе переменные описывать отдельными операторами Dim