Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB_6.doc
Скачиваний:
97
Добавлен:
01.12.2018
Размер:
3.77 Mб
Скачать

3.5.2.2. Итерационные циклы.

Итерационные циклы делятся на циклы с предусловием и постусловием. Эти циклы используются, когда количество повторений зара -

нее неизвестно.

Итерационные циклы с предусловием:

1) Конструкция Do While . . . . Loop.

Синтаксис этого цикла:

Do While <условие>

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

Loop

Аргумент <условие> является логическим выражением. Если его значение равно True, то выполняется тело цикла. Если при очередном проходе оно станет ложным, происходит выход из цикла на оператор, следующий за оператором цикла. Проверка значения условия происходит перед каждой очередной итерацией, поэтому операторы тела этого цикла могут не выполниться ни разу, если при первой проверке условие ложно. Значит, до цикла должны быть заданы или вычислены значения всех переменных, входящих в условие. Кроме того, в теле цикла должен быть хотя бы один оператор, влияющий на значение условия, иначе цикл может оказаться бесконечным.

2) Конструкция Do Until . . . . Loop.

Синтаксис:

Do Until <условие>

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

Loop

Здесь <условие> является логическим выражением, служащим

для выхода из цикла, а не для его продолжения, как в предыдущей конструкции. Операторы тела этого цикла повторяются до тех пор, пока логическое выражение остаётся ложным. Поэтому, если до входа в цикл переменные, входящие в условия, таковы, что условие истинно, то целесообразно использовать конструкцию Do While . . . . Loop. В противном случае лучше использовать конструкцию Do Until . . . . Loop.

Итерационные циклы с постусловием:

Проверка истинности условия в итерационных циклах может быть вынесена в конец цикла, тогда они приобретают вид:

1) Конструкция Do . . . . Loop While <условие>.

Синтаксис:

Do

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

Loop While <условие>

2) Конструкция Do . . . . Loop Until <условие>.

Синтаксис:

Do

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

Loop Until <условие>

При использовании этих конструкций операторы тела цикла выполняются всегда хотя бы один раз, так как первая проверка истинности условия в них происходит после того, как хотя бы один раз выполнились операторы тела цикла. По этой причине переменные, определяющие значение условия необязательно должны быть заданы перед входом цикла: они могут быть заданы или вычислены операторами тела цикла. Только следует помнить, что среди операторов тела цикла должны быть такие, которые влияют на значение условия, чтобы оно не оставалось постоянно только истинным или только ложным, иначе цикл никогда не завершится.

Иногда требуется специально организовать бесконечный итерационный цикл. Для этого достаточно вместо условия поставить логическую константу True или False:

Do While True

. . . . . . . . .

Loop

Такой цикл никогда не завершится, поскольку условие в нем постоянно истинно.

Для досрочного выхода из всех итерационных циклов или прерывания бесконечного цикла в теле цикла должен присутствовать оператор Exit Do, который при выполнении некоторого условия в теле цикла обеспечивает выход из цикла. Например:

n = 0

Do

n = n + 1

If n >= 500 Then Exit Do

Loop Until False

Пример. Определить, сколько раз во вводимой последовательности целых чисел чередуются четные и нечетные числа.

Private Sub Command1_Click()

Dim n%, k%, fp As Boolean, fs As Boolean

k = 0: fp = False

n = InputBox(“Введите 1- ый элемент последовательности”)

If n mod 2 = 0 Then fp = True

Do

fs = False

n = InputBox(“Введите очередной элемент ”)

If n mod 2 = 0 Then fs = True

If fp Xor fs Then k = k + 1: fp = fs

Loop Until MsgBox(“Продолжить ввод ?”, 36) = vbNo

Text1.Text = “Количество чередований = ” & k

End Sub

Здесь fp и fs – это логические переменные, которые принимают значение True, когда введенное число является четным, иначе они принимают значение False. Индикатором четности предыдущего элемента последовательности является fp, а следующего – fs. Результат логической операции Xor равен True, если значения операндов противоположны. Иначе он равен False.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]