Dim t As Single, w As Single
Dim p As Single, k As Integer
P=1
For k = 1 To 6
t = Val(InputBox(“t=”))
p=p*sin(t(k))
Next
w=2+p
MsgBox w
End Sub
Одномерные массивы. Вычисление экстремумов
Массивами называются совокупности данных одного типа, объединенные одним именем. Элементы массивов называются индексированными переменными.
Одномерные массивы имеют один индекс, например a(i), где a – имя массива, i – номер элемента массива.
Массивы, до их использования в программе, должны быть объявлены в операторе Dim, например:
Dim a(5) As Single
Здесь определено, что будет использоваться одномерный массив с 6-ю элементами вещественного типа одинарной точности. Число в скобках указывает номер последнего доступного для использования номера индекса. Нумерация индексов начинается с нуля.
После объявления элементы массива могут использоваться в выражениях подобно простым переменным, но с указанием индекса в круглых скобках. Например, после приведенного выше объявления массива а(i) в программном коде можно обращаться к следующим элементам массива: а(0), а(1), а(2), а(3), а(4), а(5)
Если необходимо использовать определенную нумерацию элементов массива, например с 5 до 10, то это указывается при объявлении массива следующим образом:
Dim a(5 to 10) As Single
После этого в программном коде будут доступны следующие элементы массива: а(5), а(6), а(7), а(8), а(9), а(10)
Пример 3. Программа определения максимального элемента массива d = {12; 0,4; 30; –2; 5; 9,3} и номера этого элемента.
Sub CommandButton2_Click()
Dim d(1 To 6) As Single, max As Single, n As Integer, i As Integer
For i = 1 To 6
d(i) = Val(InputBox(«Введите элемент массива d»))
Next
max = d(1) : n = 1
For i = 1 To 6
If d(i) > max Then max = d(i): n = i
Next
MsgBox (“Макс. Знач. =” & max & “ имеет элемент с номером ” & n)
End Sub
Пример 4. В таблице на рис.7.1 представлены значения температуры воздуха. Необходимо определить среднюю, минимальную и максимальную температуры, а также количество дней с положительной и отрицательной температурой.
Для решения этой задачи оформим лист Excel согласно образцу (рис. 7.1). Переменные можно объявить в разделе General (на листе программы в самом верху перед первым Sub) и тогда они могут быть использованы для расчета в разных процедурах рабочей книги:
Dim i As Integer, Ndata As Integer
Dim Nplus As Integer, Nminus As Integer
Dim sum As Single, mx As Single, disp As Single
Dim min As Single, max As Single, x As Single
Рис. 7.1 − Образец оформления программы расчета температуры
Процедура для кнопки «Среднее значение» (расчет средней температуры):
Private Sub CommandButton1_Click()
i = 6
Do Until Worksheets("Лист1").Cells(i, 4) = ""
i = i + 1
Loop
Ndata = i – 1 ‘количество расчетных дней
‘Вычисление суммарной температуры
sum = 0 ‘ ячейка с именем Sum обнуляется
‘ цикл для просмотра всех строк таблицы
For i = 7 To Ndata
x = Worksheets("Лист1").Cells(i, 4)‘ ввод значения температуры из i-той строки 4-го столбца
sum = sum + x‘суммирование значений температуры
Next i
mx = sum / (Ndata - 6)‘определение среднего значения
Worksheets("Лист1").Cells(Ndata + 2, 4)="Средняя температура"
Worksheets("Лист1").Cells(Ndata + 2, 7) = mx
End Sub
Для кнопки «min» (расчет минимальной температуры) процедура имеет вид:
Private Sub CommandButton2_Click()
Dim l as Integer
min = Worksheets("Лист1").Cells(Ndata - 6, 4)
l=7 ‘номер строки, с которой начинается таблица
For i = 7 To Ndata
x = Worksheets("Лист1").Cells(i, 4)
If x < min Then
min = x
l=i ‘запоминание номера строки с минимальной температурой
End If
Next i
Worksheets("Лист1").Cells(Ndata+3,4)="Минимальная температура"
Worksheets("Лист1").Cells(Ndata + 3, 7) = min
Worksheets("Лист1").Cells(Ndata + 3, 9) = "Была "
Worksheets("Лист1").Cells(Ndata + 3, 10) = Cells(l, 3)
End Sub
В данной процедуре переменной min присваивается значение температуры из первой строки таблицы. Затем каждое очередное значение сравнивается со значением min. Если очередное значение температуры оказывается меньше min, то это число посылается в min.
Процедура для кнопки «max» (расчет максимальной температуры):
Private Sub CommandButton3_Click()
min = Worksheets(" Лист1 ").Cells(Ndata - 6, 4)
For i = 7 To Ndata
x = Worksheets(" Лист1 ").Cells(i, 4)
If x > max Then max = x
Next i
Worksheets(" Лист1 ").Cells(Ndata + 4, 4) = «Максимальная температура "
Worksheets(" Лист1 ").Cells(Ndata + 4, 7) = min
End Sub
Для кнопки «>0 и <0» (расчет количества дней с положительной и отрицательной температурой):