Читайте также:
|
|
4.2.1. Цикл со счётчиком
For ИндекснаяПеременная = НачальноеЗначение To КонечноеЗначение Step Шаг
группа_операторов
Next ИндекснаяПеременная
Оператор цикла For…Next повторяет выполнение группы операторов, пока значение индексной переменнойизменяется от начального значения до конечного с шагом, указанным после слова Step. Ветвь Step Шаг является необязательной. В качестве начального и конечного значений могут использоваться численные переменные и константы, выражения или функции, возвращающие число. Если шаг не задан, то он полагается равным 1. При использовании индексной переменной после цикла следует помнить, что после выполнения цикла она содержит значение КонечноеЗначение + Шаг. Например, следующая программа выводит на экран окна со значениями индексной переменной цикла:
Sub N3()
Dim i As Integer
For i = 1 To 4
MsgBox "i=" & CStr(i)
Next i
End Sub
После слова Next ставится та же индексная переменная, что и после слова For. Об этом следует помнить при применении вложенных друг в друга циклов.
В следующей программе пользователь вводит с клавиатуры размер одномерного массива (переменная N), вводит его элементы с клавиатуры, а затем элементы массива выводятся на рабочий лист Excel:
Sub N4()
Dim A() As Single ‘объявление массива А без размеров как динамического
Dim i As Integer, N As Integer
N = InputBox("N=")
ReDim A(1 To N) As Single ‘задание размера массива А
For i = 1 To N
A(i) = InputBox("A(" & CStr(i) & ")=")
Next i
For i = 1 To N
Sheets("Лист1").Cells(1, i).Value = A(i)
Next i
End Sub
Ввод с клавиатуры элементов двумерного массива и вычисление суммы его элементов:
Sub MM()
Dim S() As Single
Dim i As Integer, j As Integer
Dim Sum As Single
i = InputBox("Введите число строк:")
j = InputBox("Введите число столбцов:")
ReDim S(1 To i, 1 To j) As Single
For k = 1 To i ‘ внешний цикл перебирает строки
For n = 1 To j ‘ внутренний - столбцы
S(k, n) = InputBox("Введите значение элемента " & CStr(k) & _
"-й строки, " & CStr(n) & "-го столбца“, _
"Ввод массива S")
Next n
Next k
For k = 1 To i
For n = 1 To j
Sum = Sum + S(k, n)
Next n, k ‘ В Basic допустимо и такое завершение вложенных циклов
MsgBox "Сумма элементов массива S:" & CStr(Sum)
End Sub
4.2.2. Оператор For Each … Next
Оператор For Each … Next повторяет выполнение группы инструкций для каждого элемента массива или группы:
For Each элемент In группа
группа_операторов
Next
Этот оператор работает только с элементами типа Variant или с объектами.
Для выхода из циклов For до завершения используется оператор Exit For. Например:
Function Summ()
Dim F(1 To 50) As Integer
Dim i As Integer, Limit As Integer
Sum = 0
Limit = InputBox("Введите индекс предела суммирования", _
"Массивы и циклы")
For i = 1 To 50
If i < Limit Then
F(i) = 0.98 * i ^ 2
Sum = Sum + F(i)
Else
Exit For
End If
Next i
MsgBox "Сумма элементов массива при i = 1,..., " & _
CStr(limit) & " равна " & CStr(Sum)
End Function
В этом примере в цикле вычисляются все значения массива и, в переменную Sum, накапливается сумма элементов массива от 1-го индекса до введённого предела.
Следующий пример демонстрирует работу с динамическим массивом. Пользователь с клавиатуры вводит число строк и столбцов в двумерном массиве, а затем вычисляется сумма элементов массива.
Дата добавления: 2015-07-11; просмотров: 54 | Нарушение авторских прав