Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Позволяет повторить группу операторов заданное число раз.
Его синтаксис:
For счетчик_цикла = начало To конец [Step шаг]
тело цикла
Next [счетчик_цикла]
Здесь счетчик_цикла – числовая переменная. В началевыполнения цикла онапринимает значение, задаваемое числовым выражением начало.(переменная счетчик_цикла не может иметь тип Boolean или быть элементом массива). Числовое выражение конец задает заключительное значение счетчика цикла. Оно вычисляется до начала исполнения тела цикла и не меняется, даже если входящие в него переменные изменяют в теле цикла свои значения. Числовое выражение шаг необязательно. Его значение также вычисляется в начале цикла и прибавляется к счетчику цикла всякий раз, когда завершается выполнение тела цикла и вычисление достигает строки Next [счетчик_цикла]. Если шаг цикла явно не указан, по умолчанию он равен 1. Тело цикла – это последовательность операторов, которая будет выполнена заданное число раз. При каком значении переменной счетчик_цикла происходит завершение цикла, зависит от знака параметра шаг. Если шаг положителен, цикл завершится, когда впервые выполнится условие: счетчик_цикла > конец
Если шаг цикла отрицателен, условие его завершения:
счетчик_цикла < конец.
Это условие проверяется перед началом выполнения цикла, а затем – после каждого прибавления шага к счетчику цикла в операторе Next. Если оно выполнено, управление передается на оператор, следующий за Next, нет – выполняются операторы из тела цикла. Завершить цикл For... Next можно и с помощью оператора Exit For. такие операторы могут быть расположены в тех метах тела цикла, где требуется из него выйти, не дожидаясь выполнения условия завершения.
Пример.
В данном примере три вложенных цикла For... Next использованы для вычисления произведения двух целочисленных матриц, инициализированных случайными числами. Затем результирующая матрица проверяется на наличие в ней нулевого значения:
Public Sub For1()
Dim A(1 To 5, 1 To 5) As Integer
Dim B(1 To 5, 1 To 5) As Integer
Dim C(1 To 5, 1 To 5) As Integer
Dim I As Integer, J As Integer, K As Integer
Dim Res As String
' Инициализация матриц А и В случайными числами в интервале [-10, +10]
VBA.Randomize
For I=1 To 5
For J=1 To 5
'Получение случайного числа Rnd и преобразование его в целое
A(I,J)=Int(21*Rnd)-10
Next J
Next I
For I=1 To 5
For J=1 to 5
B(I,J)=Int(21*Rnd)-10
Next J
Next I
' Вычисление произведения матриц
For I=1 To 5
For J=1 To 5
C(I,J)=0
For K=1 to 5
C(i,j)=C(I,J)+A(I,K)*B(K,J)
Next K
Next J
Next I
Res="No"
C(2,2)=0
'Проверка на нулевое значение
For I=1 To 5
For J=1 To 5
If C(I,J)=0 Then
Debug.Print "Индексы:", I, J
Res="Yes"
exit For
End If
Next J
Next I
Debug.Print Res
End Sub
Следует обратить внимание на оператор выхода Exit For, прекращающий выполнение только внутреннего цикла, так что проверка на ноль будет осуществляться в каждой строке матрицы, независимо от существования нулей в предыдущих строках.
Сделаем еще несколько замечаний по поводу оператора For... Next:
- По окончании цикла счетчик цикла сохраняет свое значение в момент выхода, и его можно использовать, например, для анализа преждевременного выхода из цикла.
- В операторе Next можно не указывать имя переменной. задающей счетчик, - это имя подразумевается по умолчанию, как завершающее последний открытый оператор For. Однако и эту возможность не следует использовать. рекомендуется всегда явно указывать имя счетчика в операторе Next.
- Допускается менять значение счетчика в теле цикла, но делать этого не следует никогда, т.к. существует риск зацикливания программы.
Public Sub For2()
Dim A(1 To 5) As Integer
Dim i As Integer
For i=5 to 1 step –1
A(i)=i
i=i+1
Next i
End Sub
Обычно попытка изменить значение счетчика цикла в его теле означает, что вместо цикла For... next следовало бы применять цикл другого вида.
Решение игр по свойству оптимальных стратегий, по теореме Шепли-Сноу. Сведение игры к задаче линейного программирования. Нахождение общего решения как грани симплекса допустимых решений
2 E56k3A06TZJcO+xZPnQ40n1Hzef24AyE+o329feiWSTvq9ZTun94ekRjLi/mu1tQkeb4F4ZffEGH Sph2/sA2qEF0msuWaCDN16AkkK4yMXYGsmwNuir1/wXVDwAAAP//AwBQSwECLQAUAAYACAAAACEA toM4kv4AAADhAQAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRlbnRfVHlwZXNdLnhtbFBLAQItABQA BgAIAAAAIQA4/SH/1gAAAJQBAAALAAAAAAAAAAAAAAAAAC8BAABfcmVscy8ucmVsc1BLAQItABQA BgAIAAAAIQB+kD4lVQIAAGAEAAAOAAAAAAAAAAAAAAAAAC4CAABkcnMvZTJvRG9jLnhtbFBLAQIt ABQABgAIAAAAIQDyNcYD3gAAAAkBAAAPAAAAAAAAAAAAAAAAAK8EAABkcnMvZG93bnJldi54bWxQ SwUGAAAAAAQABADzAAAAugUAAAAA "/>
Дата публикования: 2015-02-18; Прочитано: 261 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!