Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_1 / Элементы программирования - методичка.doc
Скачиваний:
60
Добавлен:
06.03.2016
Размер:
449.02 Кб
Скачать

Операторы цикла Do…Loop

Циклы DoLoop– это циклы с условием. Существуют два типа циклов с условием:цикл с предусловиемицикл с постусловием.

Синтаксис цикла с предусловием:

Do While | Until Условие

Операторы – тело цикла

Loop

Синтаксис цикла с постусловием:

Do

Операторы – тело цикла

Loop While | Until Условие

В этих выражениях:

  • Doвыполнить, ключевое слово, обозначающее начало цикла;

  • Loopпетля, ключевое слово, означает возврат к началу цикла;

  • Whileпока; с этим ключевым словом операторы цикла будут выполнятьсяпока Условие истинно (True), т. е. пока условие выполняется. При первом невыполнении условия цикл прекращается и выполняется строка кода, следующая послеLoop;

  • Untilдо, пока не; с этим ключевым словом операторы циклабудут циклически выполняться при невыполнении Условия (False). При первом выполнении условия (True) цикл прекращается, и выполняется строка кода, следующая послеLoop. ПередУсловиемиспользуется одно из ключевых слов:WhileилиUntil.

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

Цикл с предусловием может ни разу не выполниться, если при первом же выполнении цикла с Whileусловие не выполнится, а в цикле сUntil, наоборот, выполнится.

Приведем примеры четырех вариантов цикла при решении одной и той же задачи.

Пример 9.15. Определение суммы ряда натуральных чисел 1+2+3+4+…, превышающую 350, но наиболее близкую к 350.

Словесно опишем 4 варианта алгоритма.

Первый вариант (с предусловием, Пока ).

Пока сумма не превышает величину 350, складываем натуральные числа 1 + 2 + 3 +….

Второй вариант (с предусловием, До).

До выполнения неравенства Сумма > 350складываем числа 1 + 2 + 3 +….

Третий вариант (с постусловием, Пока ).

Складываем натуральные числа 1 + 2 + 3 +…., пока сумма не превышает величину 350.

Четвертый вариант (с постусловием, До).

Складываем числа 1 + 2 + 3 +….до выполнения неравенства Сумма > 350.

Приведем программы, реализующие эти варианты алгоритма.

Первый вариант этого цикла (с предусловием):

intSum = 0: s = 0

Do While intSum < 350

s = s + 1: intSum = intSum + s

Loop

Второй вариант этого цикла (с предусловием):

intSum = 0: s = 0

Do Until intSum > 350

s = s + 1: intSum = intSum + s

Loop

Третий вариант этого цикла (с постусловием):

intSum = 0: s = 0

Do

s = s + 1: intSum = intSum + s

Loop While intSum < 350

Четвертый вариант этого цикла (с постусловием):

intSum = 0: s = 0

Do

s = s + 1: intSum = intSum + s

Loop Until intSum > 350

Если после цикла вывести сумму intSumиs– последнее суммируемое число, то получимintSum= 351 иs= 26. Следовательно, были просуммированы числа: 1 +2 + 3 + … + 26.

В заключение приведем задачу, для решения которой, кроме оператора Do…Loopиспользуем также процедуру-функциюFunction.

Пример 9.16. Вычисление суммы членов бесконечного ряда Cosx с заданной точностью:

Программа вычислений:

Private Sub cmdВычислить_Click()

Const Pi As Single = 3.141593, Pi2 = 2 * Pi

Dim x As Single, eps As Single, S As Single

Dim Sn As Single, k As Integer ‘ в поле txtX вводим х в радианах:

x = Val(txtX): eps = Val(txtEps) ‘eps – точность расчета

x = x * Pi / 180 'перевод из градусов в радианы

x = x - Pi2 * Int(x / Pi2) 'исключается кратность 360 градусам

Cls ‘ чистка формы

CurrentY = 3240

S = 0: k = 0

Do

Sn = (-1) ^ k * x ^ (2 * k) / Fak2(k)

S = S + Sn: k = k + 1

Loop Until Abs(Sn) < eps

Print " CosX = "; FormatNumber(S, 11)

End Sub

Public Function Fak2(k) As Long ‘вычисляет факториал (2k)!

Dim i As Long, Fak As Long

Fak = 1 ' если k = 0

For i = 1 To 2 * k

Fak = Fak * i ‘ при k = 0 этот оператор не выполнится,

Next i ‘ т. к. 1 > 2*k

Fak2 = Fak

End Function