ЛАБОРАТОРНАЯ РАБОТА №8. Программирование циклов
Цель работы: рассмотреть операторы цикла - For...Next, For Each...Next, Do While, Do Until, While...Wend; научиться применять операторы цикла в создаваемых приложениях
Теоретическая часть
В программировании часто приходится, особенно при вычислениях, повторять одни и те же действия либо заданное количество раз, либо до наступления какого-либо события. Это достигается при помощи операторов цикла.
Цикл в общем случае состоит из оператора цикла и тела цикла. Оператор цикла – это его управляющая конструкция. Она определяет, сколько раз должны выполниться операторы, записанные в тело цикла, либо при каких условиях тело цикла должно повториться еще раз. Тип цикла определяется его оператором.
1. Цикл For…Next
Для повтора цикла заданное количество раз используется конструкция For…Next, синтаксис которой следующий:
For <переменная>=<начало> to <конец> [Step <шаг>]
<операторы>
Next
Здесь <переменная> - переменная (параметр) цикла целого типа
<начало> - начальное значение параметра цикла
<конец> - конечное значение параметра цикла
<оператор> - оператор (действие) тела цикла
<шаг> - шаг цикла, т.е. то значение, на которое увеличивается параметр цикла при каждом повторе; является необязательным
Например, покажем в окне MsgBox 10 раз слово «счетчик» с его порядковым номером:
For i = 1 to 10
MsgBox "Счетчик: " & i
Next
Чтобы указать, насколько должно прирастать значение счетчика, используется ключевое слово Step:
For i = 1 to10 Step 2
MsgBox "Счетчик: " & i
Next
Можно и уменьшать исходное значение счетчика:
For i = 10 to 1 Step -2
MsgBox "Счетчик: " & i
Next
Для безусловного выхода из конструкции For…Next используется команда Exit For.
x = InputBox (“Введите значение останова”)
y = CInt(x)
For i = 1 to10
MsgBox "Счетчик: " & i
Ifi =y Then Exit For
Next
2. Цикл For Each … Next
Очень часто в VBA требуется сделать какое-нибудь действие со всеми элементам коллекции или массива - перебрать все открытые документы, все листы Excel, все ячейки в определенном диапазоне и т.п. Для того, чтобы пройти циклом по всем элементам коллекции, используется команда For Each … Next.
Например:
For Each Wbk in Workbooks
MsgBox Wbk.Name
Next
При использовании этого приема можно очень просто найти и получить ссылку на нужный объект:
For Each Wbk in Workbooks
If Wbk.Name = "Сводка.xls" Then
Set MyWorkBook = Wbk
Exit For
End If
Next
В этом случае цикл проходит по всем элементам коллекции Workbooks (то есть открытым рабочим книгам в Excel), для каждой книги проверяет ее имя, и если найдена книга с именем Сводка.xls, то пользователь получает на нее ссылку и происходит выход из цикла. Коллекция рабочих книг - это специальная коллекция, которая умеет производить поиск в себе по имени элементов, поэтому можно было бы обойтись такой строкой:
Set MyWorkBook = Workbooks("Сводка.xls")
Но для многих других коллекций без конструкции For Each не обойтись.
3. Цикл Do While … Loop
Конструкция Do While означает: выполнять какое-либо действие до тех пор, пока условие истинно (проверка условия в начале цикла).
Общий вид конструкции следующий:
Do While <логическое выражение>
<операторы>
Loop
<логическое выражение> - это простое или сложное условие, или логическая константа (true или false).
Пока <логическое выражение> равно true, тело цикла выполняется, а как только <логическое выражение> станет равно false, работа продолжится со следующего оператора за служебным словом Loop.
Например:
Do While y < 10
y = y + 1
MsgBox “Y = “ & Y
Loop
Применений на практике - множество: пройти по всему набору записей, пока они не закончатся; требовать от пользователя ввести подходящее значение, пока он не введет его, и т.п.
4. Цикл Do Until … Loop
Этот цикл служит для того, чтобы, пока условие не выполняется, повторять тело цикла (проверка условия содержится в начале цикла).
Общий вид конструкции следующий:
Do Until <логическое выражение>
<операторы>
Loop
<логическое выражение> - это простое или сложное условие, или логическая константа (true или false).
Пока <логическое выражение> равно false, тело цикла выполняется, а как только <логическое выражение> станет равно true, работа продолжится со следующего оператора за служебным словом Loop.
Например:
Do Until y >= 10
y = y + 1
MsgBox “ Y = “ & y
Loop
Немедленный выход из цикла можно произвести по команде Exit Do.
5. Цикл Do … Loop While
Этот цикл служит для того, чтобы повторять тело цикла, пока выполняется условие (проверка условия содержится в конце цикла).
Общий вид конструкции следующий:
Do
<операторы>
Loop While <логическое выражение>
<логическое выражение> - это простое или сложное условие, или логическая константа (true или false).
Вначале выполняется тело цикла, расположенное после ключевого слова Do, а затем проверяется <логическое выражение>. Пока <логическое выражение> равно true, тело цикла выполняется, а как только <логическое выражение> станет равно false, работа продолжится со следующего оператора после Loop While <логическое выражение>.
Например:
Do
y = y + 1
MsgBox “ Y = “ & y
Loop While y < 10
В этом случае цикл будет выполнен, по крайней мере, один раз.
6. Цикл Do … Loop Until
Этот цикл служит для того, чтобы повторять тело цикла, пока условие не выполняется (проверка условия содержится в конце цикла).
Общий вид конструкции следующий:
Do
<операторы>
Loop Until <логическое выражение>
<логическое выражение> - это простое или сложное условие, или логическая константа (true или false).
Вначале выполняется тело цикла, расположенное после ключевого слова Do, а затем проверяется <логическое выражение>. Пока <логическое выражение> равно false, тело цикла выполняется, а как только <логическое выражение> станет равно true, работа продолжится со следующего оператора после Loop Until <логическое выражение>.
Например:
Do
y = y + 1
MsgBox “ Y = “ & y
Loop Until y > 10
7. Цикл While … Wend
В VBA имеется также конструкция While … Wend. Это вариант цикла, который оставлен для обратной совместимости с первыми версиями Visual Basic. Он служит для того, чтобы повторять тело цикла заранее неизвестное количество раз. Количество повторений определяет ситуация, возникающая во время выполнения тела цикла.
Общий вид конструкции следующий:
While <логическое выражение>
<операторы>
Wend
<логическое выражение> - это простое или сложное условие, или логическая константа (true или false).
Пока <логическое выражение> равно true, тело цикла выполняется, а как только <логическое выражение> станет равно false, работа продолжится со следующего оператора за служебным словом Wend.
Например:
While y < 10
y = y + 1
MsgBox “ Y = “ & y
Wend
Дата добавления: 2015-06-12; просмотров: 1100;