Обращение к процедурам и функциям в программе

Лабораторная работа № 9

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

Цель:

Изучить порядок оформления подпрограмм в среде программирования VBA.

Результат обучения:

После успешного завершения занятия пользователь должен:

o уметь использовать функции при программировании в среде VBA;

o уметь использовать процедуры при программировании в среде VBA.

Определение подпрограммы

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

Процедуры и функции в языке Visual Basic помещаются в стандартный модуль. Стандартный модуль (или просто модуль программы) представляет собой файл с расширением .bas. Он содержит переменные и процедуры, которые могут быть использованы в любом месте проекта. В VBA стандартный модуль подключается к проекту с помощью команды Insert/Module. Созданный модуль по умолчанию получает имя Module1 и появляется в окне Code. В этом окне записываются процедуры-функции и процедуры.

Подпрограммы-функции

Синтаксис:

Function <Имя>[(Формальные параметры)] [as Type]

<Операторы>

<имя> = <выражение>

End Function

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

Пример 1.

Имеются три переменные X, Y, Z. Необходимо найти наименьшее из этих трех переменных. Оформить поиск наименьшего в виде функции.

Код:

Function MinABC(x, y, z) As Single

Обращение к процедурам и функциям в программе - student2.ru m = x

If y < m Then m = y

If z < m Then m = z

MinABC = m

End Function

Процедуры

Синтаксис:

Sub <Имя> [(Формальные параметры)]

<Операторы>

End Sub

Пример 2.

Имеются три переменные X, Y, Z. Необходимо найти наибольшее из этих трех переменных. Оформить поиск наибольшего в виде процедуры.

Код:

Sub MaxABC(x, y, z, Max)

Обращение к процедурам и функциям в программе - student2.ru Max = x

If y > Max Then Max = y

If z > Max Then Max = z

End Sub

При использовании массивов в качестве формальных параметров необходимо записывать имена массивов и следом скобки, например,

Sub MatrT(n, A( ), B( ))

У процедуры имя MatrT. В скобках указаны формальные параметры, где

n — количество элементов в массиве.

A, B — одномерные массивы.

Обращение к процедурам и функциям в программе

К процедуре-функции в основной программе обращаются по имени так же, как и к стандартным функциям. То есть имя процедуры-функции может присутствовать в правой части оператора присваивания, в операторе вывода и т.д. Например, Min =MinABC(x, y, z). В этом примере X, Y, Z — фактические параметры. Фактические параметры — это те переменные, с которыми будут выполняться вычисления в процедуре-функции. Результат вычисления передается основной программе через имя функции.

К процедуре обращаются с помощью специального оператора Call:

Call <имя>[(фактические параметры)]

В отличие от процедуры-функции в процедуре результат также передается через фактические параметры.

Пример обращения к подпрограммам:

Обращение к процедурам и функциям в программе - student2.ru

Код:

Private Sub CommandButton1_Click()

a = Val(TextBox1.Text)

b = Val(TextBox2.Text)

c = Val(TextBox3.Text)

Call MaxABC(a, b, c, m)

Обращение к процедурам и функциям в программе - student2.ru Label5.Caption = m

Label7.Caption = MinABC(a, b, c)

End Sub

Обращение к процедурам и функциям в программе - student2.ru

Самостоятельная работа

I) Оформите программу решения задачи в виде процедуры. Проверьте правильность работы процедуры.

Условие
Записать в виде процедуры определение максимального числа в числовом массиве. С помощью созданной процедуры найти максимальные элементы двух одномерных массивов.
Создать двухмерный массив с помощью датчика случайных чисел. Найти одномерный массив, элементы которого представляют собой среднее арифметическое соответствующей строки сформированной матрицы. Записать в виде процедуры определение среднего арифметического одномерного числового массива.
Найти количество нулевых элементов в каждой строке матрицы. Определение количества нулевых элементов в одномерном массиве оформить в виде процедуры.
Создать двухмерный массив с помощью датчика случайных чисел. Создать одномерный массив, элементы которого равны суммам элементов столбцов сформированной матрицы. Определение суммы элементов одномерного массива оформить в виде процедуры.
Сформировать одномерный массив, элементы которого равны максимальным элементам столбцов исходной матрицы А размером n на m. Исходную матрицу сформировать с помощью датчика случайных чисел.
Записать в виде процедуры алгоритм, который вычисляет, сколько раз введенное с клавиатуры число встречается в массиве.
Найти сумму диагональных элементов матрицы. Определение суммы элементов одномерного массива оформить в виде процедуры.
Записать в виде процедуры определение минимального числа в числовом массиве. С помощью созданной процедуры найти минимальные элементы двух одномерных массивов.
Записать в виде процедуры определение среднего арифметического положительных элементов вектора. С помощью созданной процедуры найти среднее арифметическое положительных элементов двух одномерных массивов.
Напишите программу, меняющую местами минимальный и максимальный элементы вектора. Поиск минимального и максимального элементов оформите в виде процедур.
Записать в виде процедуры определение количества отрицательных элементов вектора. С помощью созданной процедуры найти количество отрицательных элементов двух одномерных массивов.
Записать в виде процедуры алгоритм, который вычисляет математическое ожидание и дисперсию для данных, представленных в виде одномерного массива. Формулы для расчета математического ожидания и дисперсии: Обращение к процедурам и функциям в программе - student2.ru Обращение к процедурам и функциям в программе - student2.ru
Записать в виде процедуры определение корня квадратного из суммы квадратов элементов одномерного массива. Применить созданную процедуру для двух одномерных массивов.
Записать в виде процедуры алгоритм, который позволяет заменить все нулевые элементы массива на единицу. Применить созданную процедуру для двух одномерных массивов.
Записать в виде процедуры вычисление суммы и количества элементов массива, кратных 3. Применить созданную процедуру для двух одномерных массивов.

II) Оформите программу решения задачи в виде процедуры-функции. Проверьте правильность работы функции.

Условие
Определить функцию Y. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию Y. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию Y. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию r. Обращение к процедурам и функциям в программе - student2.ru Обращение к процедурам и функциям в программе - student2.ru Обращение к процедурам и функциям в программе - student2.ru
Определить функцию u. Обращение к процедурам и функциям в программе - student2.ru Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию v. Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию t. Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию Y. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию h. Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию h. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию Y. Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию t. Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию Y. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию h. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru
Определить функцию h. Обращение к процедурам и функциям в программе - student2.ru , где Обращение к процедурам и функциям в программе - student2.ru ; Обращение к процедурам и функциям в программе - student2.ru

Наши рекомендации