double arrow
Cинтаксис. Если условие принимает значение False, то осуществляется выход из цикла, в противном случае работают операторы цикла

Do

Операторы

Loop While условие

Если условие принимает значение False, то осуществляется выход из цикла, в противном случае работают операторы цикла. Отличие от предыдущего в том, что эта структура при любом значении условия отработает всегда хотя бы один раз.

Начало цикла


Операторы

 
 


Условие True

 
 


False

Конец цикла

Cтруктуры Do Until … Loop и Do … Loop Until

Синтаксис Do Until условие

Операторы

Loop

Если условие равно False, то выполняются операторы цикла, в противном случае осуществляется выход из цикла. Если с самого начала условие равно True, то цикл не выполнится ни разу.

Синтаксис

Do

операторы

Loop Until условие

Если условие равно False, то выполняются операторы цикла, в противном случае осуществляется выход из цикла. Если условие равно True, то цикл будет выполнен хотя бы один раз.

Начало цикла


Операторы

 
 


Условие False

 
 


True

Конец цикла

Пример:

Вычислить приближённо ln(x) для значения -1<x<=1, как вычисление суммы убывающего ряда:

Ln(1+x)=x- , где каждый элемент последовательности

вычисляется по формуле a =-a * , где I=1,2,3,4,……; a =x

Вычисления проводить до тех пор, пока , где e=0.0001

Ввод х,e

А=х : S=0: I=1

Пока Abs(a)>e

S=S+A

A=-A*

I=I+1

ВсёЦикл

Вывод S,log(1+x)

Реализация этой задачи с помощью 4 видов цикла:

Do while …. Loop Do…. Loop while
   
   
Dim x As Single, s As Single, i As Integer Dim a As Single, e As Single x = 0.5 e = 0.0001 s = 0 a = x i = 1 Do While Abs(a) > e s = s + a a = -a * x * i / (i + 1) i = i + 1 Loop MsgBox Str(s) MsgBox Log(1.5) Dim x As Single, s As Single, i As Integer Dim a As Single, e As Single x = 0.5 e = 0.0001 s = 0 a = x i = 1 Do s = s + a a = -a * x * i / (i + 1) i = i + 1 Loop While Abs(a) > e MsgBox Str(s) MsgBox Log(1.5)
   

Ответы : s=0.4055323 log(1.5)=0.405465108108164




Do until…..loop Do ….loop until
   
Dim x As Single,s As Single,i As Integer Dim a as Single,e As Single x = 0.5 e = 0.0001 : s = 0 : a = x i = 1 Do s = s + a a = -a * x * i / (i + 1) i = i + 1 Loop Until Abs(a) < e MsgBox Str(s) MsgBox Log(1.5) Ответы : s=0.4055323 Dim x As Single, s As Single, i As Integer Dim a as Single, e As Single x = 0.5 e = 0.0001: s = 0: a = x i = 1 Do Until Abs(a) < e s = s + a a = -a * x * i / (i + 1) i = i + 1 Loop MsgBox Str(s) MsgBox Log(1.5) og(1.5)=0.405465108108164





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