- •1. Решение задач на линейный процесс
- •3. Решение задач на циклический процесс
- •4. Работа с данными рабочего листа excel
- •5. Решение задач с подпрограммами
- •Задание
- •2. Разветвляющийся процесс
- •3. Циклический процесс
- •4. Решение задач на подпрограммы
- •Б) Вычислить f, задав значения переменным:
- •Разветвляющийся процесс
- •Решение задач на ряды
- •Решение задач на одномерный массив
- •Решение задач на двумерный массив
5. Решение задач с подпрограммами
ПРИМЕР 1. Для последовательности a(10) найти номера элементов и сумму значений элементов из диапазона [2,5].
Sub summa(ByRef a As Integer, ByVal i As Integer, sum As Integer)
If a >= 2 And a <= 5 Then
MsgBox "номер=" & CStr(i)
sum = sum + a
End If
End Sub
Sub main()
Dim a(10) As Integer, i, k, s As Integer
s = 0
For i = 0 To 9
a(i) = InputBox("a(i)=")
k = i
summa a(i), k, s
Next i
MsgBox "s=" & CStr(s)
End Sub
Здесь исходные данные вводятся в окно InputBox, а результат выводится в окно MsgBox.
ПРИМЕР 2. Для матрицы а(2,3) найти номер строки и столбца для тех элементов, значения которых лежат в диапазоне [2,5], а также их сумму (исходные данные берем с рабочего листа).
Sub summa(ByRef a() As Integer, ByVal k As Integer, ByVal l As Integer, sum As Integer)
Dim i, j As Integer
For i = 0 To k
For j = 0 To l
If a(i, j) >= 2 And a(i, j) <= 5 Then
MsgBox "номер строки=" & CStr(i + 1)
MsgBox "номер столбца=" & CStr(j + 1)
sum = sum + a(i, j)
End If
Next j
Next i
End Sub
Private Sub CommandButton1_Click()
Dim a(2, 3) As Integer, i, k, l, s As Integer
s = 0
k = 2: l = 3
For i = 0 To k
For j = 0 To l
a(i, j) = Cells((i + 1), (j + 1))
Next j
Next i
summa a, k, l, s
MsgBox "s=" & CStr(s)
End Sub
В данном примере исходные данные расположены на рабочем листе в столбце А, начиная с клетки А1, а номер строки, номер столбца и сама сумма выводятся в окно MsgBox.
ПРИМЕР 3. Найти сумму отрицательных элементов для каждой строки матрицы а(2,3), если исходные данные расположены на рабочем листе.
Sub summa(ByRef a() As Integer, ByVal k As Integer, ByVal l As Integer, sum() As Integer)
Dim i, j As Integer
For i = 0 To k
For j = 0 To l
If a(i, j) < 0 Then sum(i) = sum(i) + a(i, j)
Next j
Next i
End Sub
Private Sub CommandButton1_Click()
Dim a(2, 3) As Integer, i, k, l, s(2) As Integer
k = 2: l = 3
For i = 0 To k
s(i) = 0
For j = 0 To l
a(i, j) = Cells((i + 1), (j + 1))
Next j
Next i
summa a, k, l, s
For i = 0 To k
MsgBox "s(i)=" & CStr(s(i))
Next i
End Sub
Исходные данные в этом случае расположены на рабочем листе, начиная с клетки А1, а результаты выводятся в окно MsgBox.
Пример 4. Найти в процедуре сумму в каждом столбце.
Sub kol(ByRef x() As Integer, ByVal n As Integer, ByVal m As Integer)
Dim i, j, k(2) As Integer
For j = 0 To m
k(j) = 0
For i = 0 To n
k(j) = k(j) + x(i, j)
Next i
MsgBox "k(j)=" & CStr(k(j))
Next j
End Sub
Sub commandbutton1_click()
Dim i, j, n, m, x(4, 2) As Integer
Dim k(2) As Integer
n = 4
m = 2
For i = 0 To n
For j = 0 To m
x(i, j) = Cells(i + 1, j + 1)
Next j
Next i
kol x, n, m
End Sub
Пример 5. В процедуре найти сумму элементов 1 и 3 строки и записать их на место элементов 1 строки.
Sub kol(ByRef x() As Integer, ByVal n As Integer, ByVal m As Integer, k() As Integer)
Dim i, j As Integer
For j = 0 To m
x(1, j) = x(1, j) + x(3, j)
Next j
End Sub
Sub commandbutton1_click()
Dim i, j, n, m, x(4, 4) As Integer
Dim k(2) As Integer
n = 4
m = 4
For i = 0 To n
For j = 0 To m
x(i, j) = Cells(i + 1, j + 1)
Next j
Next i
kol x, n, m, k
For j = 0 To m
For i = 0 To n
Cells(i + 7, j + 1).Value = x(i, j)
Next i
Next j
End Sub