Оператор Do…Loop

Оператор организует цикл с условием, т. е. цикл с неизвестным заранее числом повторений цикла.

Он имеет 4 формы записи.

а) цикл с предусловием б) цикл с постусловием

делать пока истина
Do оператор 1 оператор 2 … оператор m Loop While Условие  
Do While Условие

оператор 1

оператор 2

оператор m

Loop

Условие – это логическое выражение, имеющее значение «истина» или «ложь». Такие циклы выполняются пока Условие имеет значение «истина». Когда Условие принимает значение «ложь», происходит выход из цикла и выполняется оператор, следующий за циклом.

Вместо слова While можно использовать служебное слово Until (пока не):

в) цикл с предусловием г) цикл с постусловием

делать пока не истина
Do оператор 1 оператор 2 … оператор m Loop Until Условие  
Do Until Условие

оператор 1

оператор 2

оператор m

Loop

Эти циклы выполняются пока Условие имеет значение «не истина», т. е. «ложно». Выход из цикла происходит, когда Условие будет иметь значение «истина».

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

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

Рассмотрим несколько вариантов алгоритма решения задачи нахождения суммы 10 значений функции, используя для организации цикла различные формы оператора Do…Loop.

а) Do While …Loop

Блок-схема:

 

 

Программный код процедуры вычисления суммы.

Private Sub btnOption_Click()

Dim x, dx, S as single, i as byte

x=Val(txtX.Text)

dx=Val(txtdX.Text)

S=0

i=0

Do While i< 10

S=S+x+sin(x)

x=x+dx

i=i+1

Loop

txtS.Text=Str(S)

End Sub

b) Do …Loop While

Блок-схема: Программный код:

       
 
   
Private Sub btnOption_Click() Dim x, dx, S as single, i as byte x=Val(txtX.Text) dx=Val(txtdX.Text) S=0 i=0 Do S=S+x+sin(x) x=x+dx i=i+1 Loop While i< 10 txtS.Text=Str(S) End Sub
 

 

 


в) Do Until…Loop

Блок-схема та же как в случае а), отличается только условием:

 
 

 

 


Фрагмент программного кода:

Do Until i>= 10

S=S+x+sin(x)

x=x+dx

i=i+1

Loop

Задача 2

Вычислить произведение 10 значений функции f(x)=x+sinx при значениях аргументах, изменяющихся от начального значения х = хнач с шагом = dx, т. е. вычислить произведение P:

при х = хнач и шагом dx

Для вычисления произведения используем рекуррентное выражение Р=Р*f(xi), где f(xi) = xi+sinxi

Начальное значение Р возьмем равным 1. Алгоритм аналогичен алгоритму для вычисления суммы.

Фрагмент программного кода:

Р=1

i=0

Do

P=P*(x+sin(x))

x=x+dx

i=i+1

Loop Until i >= 10