Некоторые алгоритмы обработки матриц
Поиск минимального элемента матрицы
Пример. Дана матрица А(2,3). Найти минимальный элемент.
Программа
Sub MinMat()
Dim a(2, 3) As Single
Dim min As Single, i, j As Integer
'ввод матрицы
For i = 1 To 2
For j = 1 To 3
a(i, j) = Cells(i + 1, j)
Next j
Next i
min = a(1, 1)
For i = 1 To 2
For j = 1 To 3
If a(i, j) < min Then min = a(i, j)
Next j
Next i
MsgBox ("Минимальный элемент min=" + Str(min))
End Sub
Умножение матрицы на вектор
Пример. Дана матрица А(2,3) и вектор В(3). Найти произведение А*В.
Программа
Sub UmnMatNaVec()
Dim a(2, 3) As Single, b(3) As Single, c(2) As Single
Dim s As Single, i, j As Integer
'ввод матрицы
For i = 1 To 2
For j = 1 To 3
a(i, j) = Cells(i + 1, j)
Next j
Next i
'ввод массива
For i = 1 To 3
b(i) = Cells(4, i + 1)
Next i
For i = 1 To 2
s = 0
For j = 1 To 3
s = s + a(i, j) * b(j)
Next j
c(i) = s
Next i
'вывод нового массива b(5)
Cells(6, 1) = "Массив c(2)"
For i = 1 To 2
Cells(6, i + 1) = c(i)
Next i
End Sub
Подпрограммы и функции
При разработке макросов часто требуется выполнять одни и те же законченные действия в различных его частях. Чтобы избежать многократного набора кода для этих действий, целесообразно описать их в виде подпрограммы и обращаться к ней по мере необходимости. Различают подпрограммы-процедуры и подпрограммы-функции. Описываются подпрограммы при помощи инструкций Sub...End Sub— это подпрограмма-процедура, инструкций Function...End Function
— это подпрограмма-функция. Подпрограмма Function и подпрограмма Sub являются самостоятельной программой, которая может получать аргументы, выполнять последовательность операторов и изменять значения своих аргументов. Различие между процедурами и функциями состоит в том, что функция всегда возвращает значение и процедура Function может применяться в правой части выражения, как и любая другая встроенная функция, например, Sqr, Cos или Chr, а процедура Sub не может. Для работы подпрограммам иногда необходимо передать данные, которые носят названия параметров или аргументов подпрограммы. Параметры передаются в подпрограммы при ее вызове при помощи перечисления их после имени подпрограммы. При этом описание действий в подпрограмме осуществляется с использованием формальных параметров. Обращение к подпрограмме осуществляется с фактическими параметрами, которые должны соответствовать формальным по числу, типу и месту расположения.
Оператор Sub...End Sub
Описывает имя, аргументы и текст программы, составляющий тело процедуры Sub.
Синтаксис инструкции
Sub имя [(слисока аргументов)]
операторы
End Sub
Здесь
имя — обязательный элемент, это имя процедуры Sub, удовлетворяющее =: стандартным правилам именования переменных.
список аргументов — необязательный элемент. Список переменных, представляющий параметры, которые передаются в процедуру Sub при ее вызове (формальные параметры). Имена переменных разделяются запятой.
операторы— любая группа операторов, выполняемых в процедуре Sub, находятся между Sub и End Sub.
Не допускается определение процедуры Sub внутри другой процедуры Sub или Function.
Оператор вызова подпрограмм Call
Обращение к процедуре осуществляется с помощью оператора Call.
Синтаксис оператора:
Call имя подпрограммы [параметры]
Синтаксис инструкции Call содержит следующие элементы:
имя подпрограммы — обязательный элемент, содержит имя вызываемой про- цедуры.
параметры — необязательный элемент, это разделяемый запятыми список переменных, массивов или выражений, передаваемых в процедуру (фактические параметры).
Для передачи в процедуру полного массива следует воспользоваться именем массива с пустыми скобками.
Оператор Function...End Function
Описывает имя, аргументы и текст программы, составляющий тело подпрограммы- функции Function.
