Составление циклических алгоритмов и программ, используя оператор цикла с предусловием

Страницы работы

Фрагмент текста работы

ЛЕКЦИЯ № 4 ПРОГРАММИРОВАНИЕ ЦИКЛОВ С ПРЕДУСЛОВИЕМ

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

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ: 

Оператор цикла с предусловием целесообразно использовать в случаях, когда число повторений тела цикла заранее неизвестно и тело цикла может ни разу не выполниться.  В языке программирования Visual Basic, цикл с предварительным условием может быть организован четырьмя способами: с помощью операторов условного и безусловного перехода, с помощью операторов цикла DO WHILE …LOOP, DO UNTIL…LOOP, WHILE…WEND. Оператор WHILE…WEND полностью соответствует оператору DO WHILE …LOOP, за исключением ключевых слов. 

Рассмотримосновные форматы перечисленных выше операторов цикла с предварительным условием. Первый оператор имеет следующий формат:

DO WHILE <условие>

<тело цикла>

LOOP

Условие, расположенное после ключевого слова WHILE представляет собой логическое выражение. Его значение вычисляется при  каждом выполнении цикла. Пока условие соблюдается, (логическое выражение является истинным – True), выполняются операторы, составляющие тело цикла. Как только логическое выражение станет ложным, произойдет выход из цикла и управление будет передано на оператор, расположенный после ключевого слова LOOP. 

В качестве примера рассмотримпрограмму, вычисляющую значения функции на промежутке [a,b] c шагом h. Пусть функция имеет следующий вид:

x2,

y=−x3,

3x,

x<−1

−1≤x<1 .

x≥1

Составим блок-схему алгоритма и программу решения данной задачи. Переменной - параметру цикла должно быть присвоено значение до начала работы цикла. Также, данная переменная должна изменять свое значение (в большую или меньшую сторону, в зависимости от условия), чтобы не произошло «зацикливание» программы.  Форма приложения изображена на рисунке 17.

 

Рис. 17. Изображение формы со списками.

Блок – схема алгоритма будет иметь следующий вид:

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

Private Sub Command1_Click()

Dim a As Single, b As Single, h As Single Dim x As Single, y As Single a = CSng(Text1.Text) b = CSng(Text2.Text) h = CSng(Text3.Text)

x  = a

Do While x <= b

If x < -1 Then

y  = x * x

ElseIf x >= 1 Then

y = 3 * x

Else y = -x ^ 3

End If

List1.AddItem (CStr(x)) List2.AddItem (CStr(y))

x = x + h

Loop End Sub

Private Sub Command2_Click()

End End Sub

Рассмотренная выше задача может быть решена вторым способом. Блок – схема и рисунок формы остаются без изменения. Используемый здесь оператор цикла с предусловием будет иметь следующий формат: DO UNTIL <условие>

<тело цикла>

LOOP

Данный оператор работает следующим образом. Пока <условие>, расположенное после ключевого слова UNTIL не соблюдается – выполняются операторы, составляющие тело цикла. Как только логическое выражение, записанное в условии станет истинным, то есть будет соблюдаться – произойдет выход из цикла и управление будет передано на следующий оператор, находящийся после ключевого слова LOOP.  Программный код приложения, использующего оператор  DO UNTIL…LOOP имеет вид:

Private Sub Command1_Click()

Dim a As Single, b As Single, h As Single Dim x As Single, y As Single a = CSng(Text1.Text) b = CSng(Text2.Text) h = CSng(Text3.Text)

x = a

Do Until  x > b

If x < -1 Then y = x * x

ElseIf x >= 1 Then

y = 3 * x

Else y = -x ^ 3

End If

List1.AddItem (CStr(x)) List2.AddItem (CStr(y))

x = x + h

Loop End Sub

Private Sub Command2_Click()

End End Sub

Оператор WHILE…WEND имеет следующий формат:

WHILE <условие>

<тело цикла>

WEND

Данный оператор работает следующим образом. При соблюдении условия, расположенного после ключевого слова WHILE, выполняется тело цикла. Как только условие перестанет соблюдаться (станет ложным), произойдет выход из цикла и управление будет передано на оператор, находящийся после ключевого слова WEND. Проиллюстрируем работу данного оператора на примерах. Программный код представленной выше задачи при помощи оператора WHILE…WEND будет иметь вид:

Private Sub Command1_Click()

Dim a As Single, b As Single, h As Single Dim x As Single, y As Single a = CSng(Text1.Text) b = CSng(Text2.Text) h = CSng(Text3.Text)

x = a

While  x <= b

If x < -1 Then y = x * x

ElseIf x >= 1 Then

y = 3 * x

Else y = -x ^ 3

End If

List1.AddItem (CStr(x)) List2.AddItem (CStr(y))

x = x + h

Wend End Sub

Private Sub Command2_Click()

End End Sub

Теперь рассмотрим пример вычисления факториала целого положительного числа N. Факториал числа N представляет собой произведение целых положительных чисел с шагом единица от единицы до N и  обозначается следующим образом:

            N                                                                              N

N!= i =1⋅2⋅...⋅ N , где символ ∏i означает произведение целых чисел

Похожие материалы

Информация о работе