Результат работы:
Пример
Создать функцию, которая находит сумму всех элементов в двумерном массиве.
Алгоритм
1.В окне базы данных нажать вкладку Модули/Создать и записать функцию:
Public Function СУММА(A() As Integer) As Integer
СУММА = 0
For i = 1 To UBound(A, 2)
For j = 1 To UBound(A, 2)
СУММА = СУММА + A(i, j)
Next j
Next i
End Function
2. В конструкторе форм создать форму с элементами: 2 текстовых поля под вывод матрицы и суммы элементов массива и кнопку, по нажатию которой пишем процедуру:
Private Sub Кнопка8_Click()
Dim A(3, 3) As Integer, i, j As Byte, s As String, y As Integer
' Заполнение матрицы через генератор случайных чисел
For i = 1 To 3
For j = 1 To 3
A(i, j) = Int(10 * Rnd(5))
s = s & Str(A(i, j)) & " "
Next j
s = s & Chr(13) & Chr(10)
Next i
Поле0.Value = s
' Вызов функции СУММА с передачей параметра А
y = СУММА(A)
Поле6.Value = Str(y)
End Sub
Пример
Вычислить n!
n!=1*2*3*4*5* …
При решении этой задачи удобно использовать понятие рекурсивности объекта.
Объект называется рекурсивным, если он целиком или частично определяет самого себя. Рекурсивной функцией-процедурой называется такая функция-процедура, которая вызывает саму себя.
|
|
Алгоритм.
1. Создаём модуль с функцией:
Public Function factorial(n As Integer) As Double
factorial = 1
If n > 0 Then
‘ Рекурсивный вызов функции
factorial = n * factorial(n - 1)
End If
End Function
2. В конструкторе создаём форму с 2 текстовыми полями для ввода n и вывода значения факториала и кнопкой, по нажатию которой пишется процедура:
Private Sub Кнопка8_Click()
Dim n As Integer, y As Double
n = Val(Поле0.Value) ‘ В переменную n записываем преобразованное в
‘ число значение текстового поля0
y = factorial(n)
Поле6.Value = Str(y)
End Sub
Классические задачи программирования: сортировка,
Поиск
Пример
Сортировка методом “пузырьков”.
1. Функция для сортировки:
Public Function сортировка(массив() As Variant) As Boolean
Dim a As Boolean, t As Variant, x As Integer
For x = LBound(массив) To UBound(массив)
If IsNull(массив(x)) Then Exit Function
Next x
Do
a = False
For x = UBound(массив) To (LBound(массив) + 1) Step -1
If массив(x - 1) > массив(x) Then
t = массив(x - 1)
массив(x - 1) = массив(x)
массив(x) = t
a = True
End If
Next x
For x = (LBound(массив) + 1) To UBound(массив)
If массив(x - 1) > массив(x) Then
t = массив(x - 1)
массив(x - 1) = массив(x)
массив(x) = t
a = True
End If
Next x
Loop While a
сортировка = True
End Function
2. Создадим форму с двумя текстовыми полями и кнопкой и по событию Нажатие кнопки пишем процедуру для вызова этой функции:
Private Sub Кнопка0_Click()
Dim массив() As Variant