- •Предисловие
- •Лабораторная работа №1 программирование арифметических выражений
- •Лабораторная работа №2 программирование линейных алгоритмов
- •Ввод и вывод данных при помощи текстового окна (-TextBox)
- •Ввод и вывод данных с помощью системных функций InputBox() и MsgBox()
- •Лабораторная работа №3 программирование разветвляющихся процессов
- •Лабораторная работа № 4 программирование циклов с параметрами
- •Лабораторная работа № 5 программирование циклов с предусловием
- •Лабораторная работа № 6 программирование циклов с постусловием
- •Лабораторная работа №7 программирование вложенных циклов
- •Программирование одномерных массивов
- •Лабораторная работа № 9 программирование многомерных массивов
- •Оглавление
Лабораторная работа № 6 программирование циклов с постусловием
Цель работы – научиться составлять циклические алгоритмы и программы, используя оператор цикла с постусловием
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ:
Циклы с постусловием применяются тогда, когда число повторений цикла заранее неизвестно и определяется в процессе реализации циклического алгоритма. Цикл с постусловием может быть организован тремя способами: с помощью операторов условного и безусловного перехода, с помощью операторов DO…LOOPWHILEиDO…LOOPUNTIL.
Рассмотрим основные форматы перечисленных выше операторов цикла с постусловием. Первый вариант формата оператора имеет следующий вид:
DO
<тело цикла>
LOOP WHILE <условие>
Условие, расположенное после ключевого слова WHILEпредставляет собой логическое выражение. Его значение вычисляется при каждом выполнении цикла. Пока условие соблюдается, (логическое выражение является истинным –True), выполняются операторы, составляющие тело цикла. Как только логическое выражение станет ложным, произойдет выход из цикла и управление будет передано на оператор, расположенный после ключевых словLOOP WHILE. Тело цикла составляют любые операторыVisualBasicи в любом количестве.
Второй вариант формата оператора цикла с постусловием имеет следующий вид:
DO
<тело цикла>
LOOP UNTIL <условие>
В данном случае тело цикла будет выполняться до тех пор, пока условие расположенное после ключевого слова UNTILне соблюдается. При соблюдении условия произойдет выход из цикла и управление будет передано на следующий оператор, находящийся за ключевыми словамиLOOP UNTIL. Следует заметить, что операторы, составляющие тело цикла в циклах с постусловием, в отличие от циклов с предусловием, всегда выполняются хотя бы один раз, так как проверка условия выхода из цикла осуществляется не до, а после тела цикла.
В качестве примера рассмотрим программу, вычисляющую значения функции на промежутке [a,b]cшагомh. Пусть функция имеет следующий вид:
.
Рис. 19. Изображение
формы со списками.
Форма приложения изображена на рисунке 19.
Составим блок-схему алгоритма и программу решения данной задачи.
В приведенной выше блок-схеме, жирным подчеркнутым курсивом отмечены блоки, отвечающие за организацию цикла с постусловием. Программный код решения задачи будет иметь следующий вид:
Private SubCommand1_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
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 Whilex <= b
End Sub
Private Sub Command2_Click()
End
End Sub
Второй вариант программного кода, использующий оператор DO…LOOP UNTIL, приведен ниже. В данном случае форма и блок схема остаются без изменения, а условие, расположенное после ключевого словаWHILEпредыдущей программы – меняется на противоположное, когда используется ключевое словоUNTIL:
Private SubCommand1_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
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 Untilx > b
End Sub
Private Sub Command2_Click()
End
End Sub
ПРИМЕР ВЫПОЛНЕНИЯ ЗАДАНИЯ:
Блок-схема алгоритма решения задачи:
Вычислить значения функции на промежутке [a,b]cшагомh
Изображение формы:
Программный код:
Private SubCommand1_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
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 Whilex <= b
End Sub
Private Sub Command2_Click()
End
End Sub
ЗАДАНИЕ:
Программный код:
Private Sub Command1_Click()
Dim __ As _______, __As ______, __As ______
Dim __As ______, __As ______
__ = ____(Text1.____)
__ = CSng(_____.Text)
__ = ____(_____.____)
__ = __
Do
If _______ Then
y = _________________
ElseIf _________ Then
y = _________________
Else
y = _________________
End If
____.AddItem (CStr(__))
List2._______ (____(__))
__________
Loop While______
End Sub
Private Sub Command2_Click()
_____
End Sub