Замечание: цикл, поведение которого определяется логическим выражением, проверяемым после выполнения тела цикла, называется циклом с постусловием. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Замечание: цикл, поведение которого определяется логическим выражением, проверяемым после выполнения тела цикла, называется циклом с постусловием.



Do Until... Loop

Этот тип цикла служит для того, чтобы пока условие не выполняется повторять тело цикла (проверка условия содержится в начале цикла).

Общий вид данной конструкции выглядит следующим образом:

 

Do Until <логическое выражение> заголовок цикла

<оператор>

... тело цикла

[<оператор>]

Loop

<логическое выражение> - это простое или сложное условие, или логическая константа (true или false).

Пока <логическое выражение> возвращает false, тело цикла выполняется, а как только <логическое выражение> возвратит true, то работа продолжится со следующего оператора за служебным словом Loop.

Пример использования цикла Do Until…Loop:

Задача: Пользователь вводит число, если оно меньше 20 выводить его квадрат, если больше или равно то закончить выполнение сценария.

Текст программы:

option explicit

Dim Number 'вводимое число

Number=CInt(InputBox("Введите число","Диалоговое окно"))

Do Until Number>=20 'условие

MsgBox "Квадрат число: " & Number & " равен " & (Number*Number)

Number=CInt(InputBox("Введите число","Диалоговое окно"))

Loop

Do... Loop Until

Этот тип цикла служит для того, чтобы повторять тело цикла пока условие не выполняется (проверка условия содержится в конце цикла).

Общий вид данной конструкции выглядит следующим образом:

Do

<оператор>

... тело цикла

[<оператор>]

Loop Until <логическое выражение>

<логическое выражение> - это простое или сложное условие, или логическая константа (true или false).

Вначале выполняется тело цикла, а затем проверяется <логическое выражение>. Пока <логическое выражение> возвращает false, тело цикла выполняется, а как только <логическое выражение> возвратит true, то работа продолжится со следующего оператора после Loop Until <логическое выражение>.

 

Пример использования цикла Do …Loop Until:

Задача: Пользователь вводит число, если оно меньше 20 выводить его квадрат, если больше или равно то закончить выполнение сценария.

Текст программы:

option explicit

Dim Number 'вводимое число

Number=CInt(InputBox("Введите число","Диалоговое окно"))

Do

MsgBox "Квадрат число: " & Number & " равен " & (Number*Number)

Number=CInt(InputBox("Введите число","Диалоговое окно"))

Loop Until Number>=20 'условие

Как выбрать, какой из циклов использовать в программе?

Ниже приведены основные правила, помогающие выбрать наиболее подходящий из этих операторов:

1. если вам заранее известно число повторений тела цикла, лучше всего использовать оператор цикла For;

2. если вам заранее не известно число повторений тела цикла и если окончание цикла зависит от выполнения некоторого условия, лучше использовать конструкции While…Wend, Do While…Loop или Do Until…Loop

3. если необходимо, чтобы цикл всегда выполнялся хотя бы один раз, то используйте конструкции Do …Loop While или Do …Loop Until.

Примечания

· Оператор break используется в теле цикла для преждевременного завершения его выполнения, например, по некоторому условию.

· Оператор continue используется, для того чтобы прервать выполнение данного шага цикла и продолжить со следующего.

· Операторы Exit Do и Exit For служат соответственно для преждевременного выхода из циклов Do и For.

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

ДЕМОНСТРАЦИОННЫЕ ПРИМЕРЫ

Пример 1

'Имя файла: From 1 to 20.vbs

'Вывод на экран чисел от 1 до 20 с шагом 2

 

For x=1 To 20 Step 2

s=s&vbCrLf&x

MsgBox "Последовательность от 1 до 20 с шагом 2: " & s

Next

Пример 2

'Имя файла: For_Next.vbs

'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60

'C использованием конструкции Do... Loop Until

 

option explicit

dim a, s

MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"

s=0

For a=1 to 60

s=s+1/a

Next

MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"


Пример 3

'Имя файла: For_Step.vbs

'Вычисление значений функции y=x*x+3 при х изменяющемся от -12 до 12 с шагом 2

MsgBox "Вычисление значений функции y=x*x+3"&vbCrLf&_

"при х изменяющемся от -12 до 12 с шагом 2",,"Вычисление значений функции"

For i=-12 to 12 Step 2

s1=i*i+3

s="при x="&i&" y="&s1&vbCrLf&s

Next

MsgBox s,,"Значения функции y=x*x+3"

Пример 4

'Имя файла: While_Wend.vbs

'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60

'C использованием конструкции While...Wend

option explicit

dim a, s

MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"

a=1

s=0

While a<=60

s=s+1/a

a=a+1

Wend

MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"

Пример 5

'Имя файла: Do While__Loop.vbs

'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60

'C использованием конструкции Do While...Loop

option explicit

dim a, s

MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"

a=1

s=0

Do While a<=60

s=s+1/a

a=a+1

Loop

MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"


Пример 6

'Имя файла: Do__Loop While.vbs

'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60

'C использованием конструкции Do Loop...While

option explicit

dim a, s

MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"

a=1

s=0

Do

s=s+1/a

a=a+1

Loop While a<=60

MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"

Пример 7

'Имя файла: Do Until__Loop.vbs

'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60

'C использованием конструкции Do Until...Loop

option explicit

dim a, s

MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"

a=1

s=0

Do Until a>60

s=s+1/a

a=a+1

Loop

MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"

Пример 8

'Имя файла: Do __Loop Until.vbs

'Вычислить сумму s=1+1/2+1/3+1/4+...+1/60

'C использованием конструкции Do... Loop Until

option explicit

dim a, s

MsgBox "Вычисление суммы s=1+1/2+1/3+1/4+...+1/60"

a=1

s=0

Do

s=s+1/a

a=a+1

Loop Until a>60

MsgBox "s=1+1/2+1/3+1/4+...+1/60= "&s,,"Результат:"

Пример 9

'Имя файла: simple.vbs

'Пусть a и b - положительные вещественные числа и a>b.

'Данная программа находит такое минимальное натуральное x, что x*b>a

option explicit

dim a, b, x

a=CDbl(InputBox("Введите положительное вещественное значение a: ","Окно ввода:"))

If a>0 Then

b=CDbl(InputBox("Введите положительное вещественное значение b, меньшее”&_ " "чем "&a,"Окно ввода:"))

If ((a>b)And(b>0)) Then

x=1

While x*b<=a

x=x+1

Wend

MsgBox "a="&a&" b="&b&vbCrLf&"Найдено минимальное натуральное"&_ "x="&x&", при котором x*b>a",,"Результат:"

Else

MsgBox "Вы ввели неправильное значение ",vbCritical,"Ошибка:"

End If

Else

MsgBox "Вы ввели неправильное значение ",vbCritical,"Ошибка:"

End If

Пример 10

'Имя файла: summa.vbs

'Вычислить сумму s=1+1/2+1/3+1/4+..., которая состоит из n слагаемых

'C использованием конструкции Do While...Loop

option explicit

dim a, s, w, n

n=CInt(InputBox ("Введите число слагаемых: ",_

"Вычисление суммы s=1+1/2+1/3+... "))

a=2

w=1

s=1

Do While a<=n

s=s+1/a

w=w& "+1/" &a

a=a+1

Loop If n=1 Then

MsgBox "s=1",,"Результат:"

ElseIf n=0 Then

MsgBox "s=0",,"Результат:"

ElseIf n<0 Then

MsgBox "Вы ввели неправильное значение!",vbCritical,"Ошибка ввода:"

Else

MsgBox "s="&w&"="&s,,"Результат:"

End If

Пример 11

'Имя файла: Palindrom.vbs

'Программа подсчитывает, сколько палиндромических чисел лежат в промежутке от

'100 до 1000 (число M называется палиндромическим числом, если оно равно

'своему обращённому). Выведите все эти числа.

option explicit

dim x, y, z, d, n, m, s

MsgBox "Сколько палиндромических чисел лежат в промежутке от 100 до 1000",,"Задача:"

For x=1 to 9

For y=0 to 9

For z=0 to 9

n=100*x+10*y+z

m=100*z+10*y+x

If n=m Then

d=d+1

s=s&" "&n

End If

Next

Next

Next

MsgBox "В промежутке от 100 до 1000 лежит "&d&" палиндромов: "&vbCrLf&s

Пример 12

'Имя файла: Otrezok.vbs

'Нахождение всех простых чисел на заданном отрезке

option explicit

dim x1, x2, k, s, i, j

x2=CLng(InputBox("Введите верхню границу отрезка: ","Окно ввода: ","10"))

x1=CLng(InputBox("Введите нижню границу трезка: ","Окно ввода: ","5"))

s="Все простые числа из отрезка ["&x1&", "&x2&"]:"&vbCrLf

For i=x1 to x2

k=0

For j=2 to Fix(Sqr(i))

If i mod j=0 Then

k=k+1

End If

Next

If k=0 Then

s=s&" "&i

End if

Next

MsgBox s,,"Результат: "

Пример 13

'Имя файла: Mnoziteli.vbs

'Программа нахождения всех простых множителей целого положительного числа

'Программа учитывает множество условий неправильного ввода

IF boolic THEN 'если мы ввели число, то...

x=CDbl(x)

x2=CLng(x) 'CLng округляет число до целого

If CDbl(x2)-x<>0 Then ' если число не целое изменим флаг

boolic=false

End if

If boolic and (x>1) Then 'если мы ввели мы ввели число целого типа, большее 1

m=2

i=0

 

s="Простые множители числа "&x&":"&vbCrLf

While m<=x 'ищем простые множители числа и записываем их в строку s

If x Mod m=0 Then

s=s&" "&m

x=x/m

i=i+1

Else m=m+1

End If

Wend

If i=1 Then

MsgBox "Число "&x1&" нельзя разложить на простые”&_ “множители, так как оно само”&_ является простым числом.",,"Результат:"

Else

Msgbox s,,"Результат:"

End If

ElseIf boolic and (x=1) Then ' если введённое число равно 1, то...

MsgBox "Число 1 нельзя разложить на простые множители,"&_

" так как оно само является простым числом.",,"Результат:"

Else

MsgBox "Вы ввели неправильное значение x",vbCritical,"Ошибка"

End If

ELSE ' если введённое значение не числовое...

MsgBox "Вы ввели неправильное значение x",vbCritical,"Ошибка"



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 317; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.203.172 (0.038 с.)