Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
informatika / Вариант1.doc
Скачиваний:
90
Добавлен:
16.04.2015
Размер:
1.9 Mб
Скачать

Лабораторная работа № 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

Второй вариант программного кода, использующий оператор DOLOOP 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

Соседние файлы в папке informatika