Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Инф_11-12.docx
Скачиваний:
13
Добавлен:
25.12.2018
Размер:
6.65 Mб
Скачать

Циклы типа Do ... Loop

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

Главной особенностью циклов с условием является наличие условия, которое может быть любым выражением, принимающим значение True (истина) или False (ложь).

Циклы с условием:

    1. Do … Loop с условием, вводимым ключевым словом While.

    2. Do … Loop с условием, вводимым ключевым словом Until.

Оба они могут быть с постусловием или предусловием

Цикл с предусловием

Do While | Until Выражение

Операторы

Loop

Цикл с постусловием

Do

Операторы

Loop While | Until Выражение

Do – ключевое слово

While и Until – ключевые слова, которые указывают тип цикла

Выражение – выражение условия (логическое условие)

Loop – ключевое слово, которое указывает на окончание цикла

1) цикл с While продолжает свою работу, пока условие остается истинным, т.е. условие выполняется, и задается в двух вариантах

Цикл Do … While с предусловием

Private Sub CommandButton1_Click()

x = 1

Do While x <= 3

MsgBox ("x=" & x)

x = x + 1

Loop

End Sub

Если условие ложно (False) то пропускаются все опера-торы цикла и осуществляется выход из цикла.

Операторы тела цикла не выполняются ни разу, если при первой проверке условия оно оказывается ложным (False).

Цикл Do … While с постусловием

Private Sub CommandButton1_Click()

x = 1

Do

MsgBox ("x=" & x)

x = x + 1

Loop While x <= 3

End Sub

Операторы тела такого цикла выполняются по крайней мере один раз.

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

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

2) цикл с Until продолжает свою работу, пока условие является ложным, т.е. условие не выполняется, и задается в двух вариантах

Цикл Do … Until с предусловием

Private Sub CommandButton1_Click()

x = 1

Do Until x >= 3

MsgBox ("x=" & x)

x = x + 1

Loop

End Sub

Условие проверяется до начала выполнения повторяющихся операторов, но тело цикла выполняется только в том случае, когда управляющее условие не выполнено, т.е. при вычислении логического выражения получилось ложное значение (False).

Цикл Do … Until с постусловием

Private Sub CommandButton1_Click()

x = 1

Do

MsgBox ("x=" & x)

x = x + 1

Loop Until x >= 3

End Sub

Условие проверяется после выполнения тела цикла. Цикл должен повторяться до тех пор, пока не будет выполнено управляющее условие.

Если произошло зацикливание (зависание машины), надо нажать Ctrl + Break

Пример 4: Программа вычислений для приведенной выше задачи вычисления таблицы значений функции y=aex+lnx, где x = 0,6 ( 0,2 ) 2 , т.е. x изменяется от 0,6 до 2 с шагом 0,2, a= -7,25с использованием оператора цикла с условием While

Private Sub CommandButton1_Click()

Dim x As Single, y As Single, a As Single

a = - 7.25

x = 0.6

Do While x < 2

y = a * Exp ( - x )+Log(x)

MsgBox ("при x=” & x & “ y= " & y)

x = x + 0.2

Loop

End Sub

В этом примере перед началом цикла переменной x присваивается начальное значение 0,6. Затем в начале цикла проверяется условие x< 2, где 2 - конечное значение x. Если это условие верно, то вычисляется значение x, увеличенное на величину шага, и выполняются все операторы, входящие в тело цикла. Как только условие x< 2 станет неверным, циклический процесс и выполнение программы завершается.

Пример 5: Программа решения задачи, приведенной выше, с помощью оператора Until и проверкой условия в конце цикла

Private Sub CommandButton1_Click()

Dim x As Single, y As Single, a As Single

a = - 7.25

x = 0.6

Do

y = a * Exp ( - x )+Log(x)

MsgBox ("при x=” & x & “ y= " & y)

x = x + 0.2

Loop Until x>1.8

End Sub

Приведенные программы могут решаться как с помощью операторов For…Next, так и с помощью операторов Do… Loop. А вот следующую задачу Вы вряд ли сможете решить с помощью оператора For…Next.

Пример 6: Грузоподъемность лифта составляет 350 кг. В лифт входят по одному человеку. Введя с клавиатуры вес каждого входящего человека, выдать сообщение о том, когда лифт будет переполнен, а также сообщить, сколько человек может ехать в лифте.

Обозначим через:

S – общий вес людей в лифте,

X – вес входящего человека,

N – количество человек, в лифте.

Private Sub CommandButton1_Click()

Dim X As Integer, S As Integer, N As Integer

S = 0

N = 0

Do While S <= 350

X = Val(InputBox("Введите вес человека"))

S = S + X

N = N + 1

Loop

MsgBox ("Лифт переполнен" & " Может поднятся " & N - 1 & "человек")

End Sub

Пример выполнения лабораторной работы

Вычислить:

Интерфейс программы:

Объявление глобальных переменных

Мы уже говорили раньше об уровне объявления переменных.

Переменные, объявленные на уровне процедуры, являются локальными по отношению к процедуре, в которой они объявлены.

Доступ к ним может происходить только из данной процедуры.

Переменные, объявленные на уровне модуля, являются глобальными.

Доступ к ним может осуществляться из любой процедуры данного рабочего листа.

Для кнопки «For … Next»

Текст программы для кнопки «DoWhile»

Текст программы для кнопки «DoUntil»

Текст программы для кнопки «Очистка»