double arrow

Программирование алгоритмов циклической структуры


С помощью инструкций присваивания и условного перехода можно реализовать сколь угодно сложный алгоритм. Однако на практике выполнение часто повторяющихся последовательностей действий и обработку массивов целесообразнее выполнять с помощью специальных инструкций цикла. Циклы являются основой алгоритмизации задач при их решении на компьютере. Циклы бывают двух видов: с фиксированным числом повторений и циклы с условием - с неизвестным числом повторений. Каждый цикл состоит из заголовка цикла и тела цикла – повторяемого блока операторов. Тело цикла может состоять из одного или нескольких инструкций. В циклах с условием необходимо задавать начальное значение параметра цикла до входа в цикл и его изменение в теле цикла.

В VBA применяются следующие способы организации таких циклов:

Do While < Условие> - Loop

Синтаксис:

Do While < Условие >

<Инструкции>

[Exit Do]

<Инструкции>

Loop

Цикл выполняется до тех пор, пока <Условие> истинно.

< условие> - логическое выражение, принимающее значение True(истина) или False(ложь).

Необязательная инструкция Exit Do предназначена для прекращения цикла и передачи управления Loop - конец цикла. Цикл с такой организацией называют также циклом с предусловием. Минимальное число повторений этого цикла – 0. Выполнение цикла с предусловием состоит из следующих шагов:




Проверяется <условие>. Если <условие> имеет значение True, то выполняются инструкции, составляющие тело цикла (до оператора Loop) столько раз, пока<условие> не примет значение False.

Как только <условие> получит значение False, осуществится выход из цикла, т. е. переход к оператору, следующему за Loop.

Пример 1. Вычислить N!, при N =10

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

Sub Factorial_1()

Dim N, Fact As Long ‘ Объявление переменных N и Fact

Fact=1 ‘Начальное значение переменной Fact

N=1 ’ Начальное значение параметра цикла

Do While N<=10 ‘Начало цикла, Проверка условия

Fact= Fact *N

MsgBox Fact, Vbinformation,”Вывод текущего значения”

N=N+1 ’ Изменение параметра цикла

Loop ‘ конец цикла

MsgBox “fact=” & fact, Vbinformation, “Результат”

End Sub

Цикл структуры Do - Loop Until <Условие >

Do

< Инструкции >

[Exit Do]

< Инструкции >

Loop Until <Условие >

Цикл повторяется, пока условие ложно. Как только условие станет истинным, цикл прекращается. Цикл с такой организацией называют также циклом с постусловием, рис.8.4.б)

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

Рассмотрим предыдущий пример с новой организацией цикла.

Пример 2. Вычислить и напечатать N! Для N =10.

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

Sub Factorial_2()

'Объявление переменных N,Fact

Dim N,Fact As Long

Fact = 1 'Начальное значение факториала

N = 1 'Начальное значение параметра цикла n



Do

Fact = Fact * N 'Вычисление факториала

'Вывод текущего значения факториала

MsgBox Fact,vbInformation, "Вывод текущего значения "

N = N + 1 'Изменение параметра цикла

Loop Until N >= 10

'Вывод результата

MsgBox "fact=" & fact,vbInformation, "Результат "

End Sub

Помимо рассмотренных структур имеются их модификации:

с предусловием Do Until < Условие>– Loop

Синтаксис структуры

_ Do Until < Условие>

< Инструкции >

[Exit Do]

< Инструкции >

Loop

Until указывает на то, что цикл выполняется до тех пор, пока условие не станет истинным. Минимальное число повторений цикла 0.

С постусловием Do - Loop While <Условие>

Синтаксис структуры

Do

<Инструкции>

[Exit Do ]

<Инструкции>

Loop While <Условие>

Цикл выполняется хотя бы один раз, проверка < условия> выполняется в конце цикла

While <условие > - Wend.

Синтаксис структуры

While <условие >

<Инструкции >

Wend

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

Пример 3. Вычислить значение функции f(x) = sin(x) при 1<=x<=2 с шагом h=0.1

Sub FN()

Dim X, f, H As Single, S, S1

X = 1 ’Начальное значение параметра цикла

H = 0.1 ’Шаг изменения параметра цикла

While X <= 2 ’Проверка условия

F=Sin(X)

F=Format(F, ” ###0.000”)

S=S & Str (F)

S1=S1 & Str(X)

X = X + H ’Изменение параметра цикла

X=Format (X, “###0.0”)

MsgBox “X = ” & S1 & “ ” & (Chr(10) & Chr(13)) _

& “F = ” & S & “ ” & (Chr(10) & Chr(13)) _

, VbInformation,” Значения аргумента Х и функции F”

Wend

End Sub







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