Программная реализация алгоритма

Цикл DO..LOOP может использоваться в двух формах. Первая из них предполагает проверку условия в начале цикла, а другая — в конце него.

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

Схема выполнения такого цикла следующая:

1) вычисляется выражение (простое с применением операторов отношения либо сложное с применением логических операторов);

2) если выражение ложно (false), то выполнение оператора цикла заканчивается и выполняется следующая за оператором инструкция. Если выражение истинно (t rue), то выполняется тело оператора цикла;

3) процесс повторяется с пункта 1.

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


 

Вариант 1  (Цикл с предусловием) Вариант 2 (Цикл с постусловием)
Do while|Until условие Инструкции| [Exit Do] Loop Do Инструкции  [Exit Do] Loop while|Until условие

Ключевые слова While и Until по-разному обеспечивают реализацию проверки условия и выхода из цикла.

Ключевое слово While применяется, когда необходимо проверить на истинность условие, задаваемое в цикле. Другими словами, цикл выполняется ПОКА (While) условие истинно.

 Ключевое слово Until применятся тогда, когда необходимо обеспечить выполнение цикла ДО ТЕХ ПОР ПОКА (Until) условие ложно.

Логическое выражение, используемое в качестве условия, задает числовое или строковое выражение, при вычислении которого должно получиться значение либо “ true ”, либо “ false ”.

 Оператор Exit Do обеспечивает досрочный выход из цикла, независимо от условия продолжения инструкций. Квадратные скобки, внутрь которых помещается инструкция, указывают на необязательность параметра.

Программная реализация вышеуказанных задач выглядит следующим образом:

Сумма N натуральных чисел (цикл с предусловием) Максимум из N натуральных чисел (цикл с постусловием)
Sub summa () Dim N, a,sum N=InputBox(“N=”) Do while i<N a=val(inputbox(“Введите а”)) sum=sum+a i=i+1 loop msgbox sum end sub Sub summa () Dim i as byte, a, max i=inputbox(“ i=”) Do a=inputbox(“Введите а”) if a>max then max=a i=i -1 loop until i=0 msgbox max end sub

Предотвращение бесконечного цикла

При работе с циклами имеется опасность входа в бесконечный цикл, если значение заданного условия не может измениться. В этом случае цикл выполняется бесконечно или до прерывания пользователем работы программы (клавиши < Ctrl+Break >). Например:

....

counter=99

Do until counter = 0

MsgBox («Мы в цикле!»)

 counter = counter -2

loop

После 49 повторений значение счетчика counter станет равным 1, а затем, после следующего повторения, его значение станет равным –1. Нулевое значение пропущено и условие никогда не будет истинным.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: