logo
Информатика_ЗФ / 2013_Информатика УМО_легпром

Операторы цикла

Цикломназывается многократное повторение определенного действия или группы действий (так называемоготела цикла). Например, если нужно табулировать функцию, чтобы построить график, или загрузить исходные данные в массив, или произвести обработку данных в массиве, то так или иначе приходится неоднократно повторять однотипные вычислительные процедуры. В таких случаях предпочтительнее использовать не линейные, а циклические алгоритмы.

На рисунке 11.4 показаны блок-схемы циклических алгоритмических структур с предусловием(Цикл-Пока) ис постусловием(Цикл-До). Напомним, что их различие заключается в том, что действие (процесс) в зависимости от истинности условия в первой схеме может не выполниться ни разу, а во второй – выполняется не менее одного раза.

Рис. 11.45. Циклические алгоритмические структуры

Для реализации цикла с предусловием в VBAможет использоваться операторWHILE … WENDи более универсальный операторDO … LOOP(см.*), с помощью которого можно реализовать также и цикл с постусловием.

Программный код примера 3 на алгоритмическом языке VBA

Private SubcmdStart_Click()

Dim I As Integer

I = 0

txtIn.Value = I

Do While I < 10

I = I + 1

Loop

txtIk.Value = I

End Sub

Результат выполнения программного кода цикла с предусловием с использованием универсального оператора цикла DO … LOOPпредставлен на рисунке 11.5. Фрагмент программного кода данного примера отображается на форме внутри элемента управления типаLabel(метка).

Рис. 11.46. Форма для примера 3 (Цикл-Пока)

Для реализации так называемого цикла со счётчиком (с параметром) используется оператор FOR … NEXT(см.). Блок-схема соответствующей алгоритмической структуры показана на рисунке 11.6. По сути, это частный случай цикла с предусловием. При этом действие, изменяющее значение счётчика с заданным шагом, вынесено из тела цикла непосредственно в заголовок (символ подготовки).

Рис. 11.47. Цикл с параметром

Фрагмент программного кода для примера 4 на языке VBA

Dim strY As String * 15

Dim strX As String * 7

Dim I As Integer

Rad = Atn(1) * 4/180 'коэффициент для перевода градусной меры угла в радианы

I = 0

For x = -180 To 180 Step 10

I = I + 1

strI = I

strX = x

ModX = Abs(x)

If ModX>89 And ModX<91 Or ModX>269 _

And ModX<271 Then

strY = "-Нет решения"

Else

Y = b ^ sin(a ^ 2) / cos(x * Rad) - d

strY = Y

End If

lbxТабуляция.AddItem strI + "| " + _

strX + "| " + strY

Next x

Результаты выполнения программного кода цикла с параметром с использованием оператора цикла FOR … NEXTпредставлены на рисунке 11.7.

Рис. 11.48. Форма (Пример 4) с результатом работы цикла с параметром

Кроме того *, вVBAимеется очень похожий на цикл со счётчиком операторFor Each  Next, который повторяет тело цикла длякаждого элементамассива или коллекции объектов. При работе с коллекциями (наборами однотипных объектов) количество элементов может быть неизвестно, а концепция начального и конечного значений – не иметь смысла. В таких случаях использование циклаFor Each  Nextявляется наиболее предпочтительным.