Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 2012-2003.doc
Скачиваний:
8
Добавлен:
23.11.2019
Размер:
5.1 Mб
Скачать

Использование подпрограмм

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

Различают два типа пользовательских подпрограмм:

– подпрограммы типа Function(функция), которые производят действия, определенные ее программным кодом, и в результате этого действия возвращают одно значение определенного типа;

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

Функция пользователя в общем виде имеет следующий вид:

Function <имя функции> (<аргумент1> <As тип>, ...) <As тип>

<программный код для определения функции>

End Function

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

Конечный результат помещается в переменную с тем же именем, что и имя функции. Заканчивается функция пользователя оператором End Function.

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

Пример. Написать программу для вычисления выражения С= М!N!/ (M + N)!, где расчет факториала в общем виде k! = 1 * 2 * 3 * … * k производится с использованием функции пользователя F(k).

Функция пользователя

Основная программа

Function F(k)

Dim i As Integer

F = 1

For i = 2 To k

F = F * i

Next

End Function

Sub CommandButton1_Click()

Dim С As Single

Dim N As Integer, M As Integer

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

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

C = F(M) * F(N) / F(M + 1)

MsgBox C

End Sub

Пользовательская функция листа. Excel позволяет создавать пользовательские функции листа, написанные на языке VBA и реализующие алгоритм пользователя.

Для создания пользовательской функции листа нужно на листе редактора VBA выполнить команду Вставка / Модуль (Insert / Module) и написать функцию пользователя типа Function в появившемся окне. После создания функции ее имя помещается приложением Excel в категорию функций «Определенные пользователем», которая отображается в окне Мастера функций и воспринимается Excel как встроенная функция. Используется такая функция в ячейках на рабочем листе Excel по обычным правилам использования встроенных функций.

Процедуры пользователя типа Sub. Общая структура процедуры имеет вид:

Sub <имя процедуры> (<параметр1>, <параметр 2>, …)

<программный код для определения процедуры>

End Sub

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

По существу в предыдущих разделах рассматривались процедуры, но процедуры обработки событий, привязанные к объекту, над которым это событие совершается. Например, запись Sub CommandButton1_Click() означает, что программа выполняется, когда по кнопке CommandButton1 делается щелчок Click.

Пример. Пусть требуется вычислить сумму произведений: , где Предварительно надо создать процедуру пользователя, которая вычисляет произведение любого количества чисел из массива.

Процедура пользователя

Основная программа

Sub proizv(k, z, p)

Dim i As Integer

p = 1

For i = 1 To k

p = p * z(i)

Next

End Sub

Sub CommandButton1_Click()

Dim f(5) As Single, S As Single

Dim p As Single, p1 As Single, i As Integer

For i = 1 To 4

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

Next

proizv 4, f, p1

proizv 5, f, p2

S = p1 + p2

MsgBox S

End Sub

Назад