Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб_4_Циклы.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
270 Кб
Скачать
☆

Упражнение 1

  1. Изучите оператор For…Next.

  2. Скопируйте в модуль код процедур TestFor, TestFor1, TestFor2 и TestFor3.

  3. Выполните процедуры и проанализируйте результаты их выполнения.

  4. Сделайте активным другой лист книги Excel.

  5. Скопируйте в модуль код процедуры TestFor4, выполните её и проанализируйте результат выполнения.

  1. Оператор While…Wend

Инструкция While…Wend выполняет некоторую последовательность инструкций до тех пор, пока заданное условие имеет значение True (Истина). Данный оператор является устаревшим и сохранён в языке VBA только из-за преемственности – чтобы сохранить возможность выполнения давно написанной программы.

Сиснтаксис оператора:

While условие

операторы

Wend

Здесь условие – обязательный параметр, это числовое или строковое выражение, результатом вычисления которого являются значения True или False;

операторы – один или более операторов, выполняемых, если условие равно значению True, параметр необязательный.

Пример использования:

Sub WW() 'Подсчёт суммы чётных чисел от 0 до 10

Dim k As Integer

Dim i As Integer

While k < 10

k = k + 2

i = i + k

Wend

MsgBox "Сумма чётных чисел от 0 до 10 равна " & i

End Sub

Результат работы процедуры:

Упражнение 2

  1. Изучите оператор While….Wend.

  2. Скопируйте в модуль код процедуры WW, выполните процедуру и проанализируйте результаты её выполнения.

  3. Составьте процедуру подсчёта суммы S нечётных чисел L натурального ряда, находящихся в пределах 0<L<10, используя инструкцию While…Wend.

  4. Составьте процедуру определения максимального и минимального значения числа в заданной строке листа Excel. Концом последовательности просматриваемых ячеек является пустая ячейка (значение =””). При выполнении этой процедуры использовать свойство рабочего листа Cells (см. лабораторную работу № 2).

  1. Оператор Do…Loop

Существует четыре типа инструкции Do…Loop – два с предусловием и два с постусловием.

Цикл Do…Loop с предусловием:

1). Do While <условие>

[операторы_1]

[Exit Do]

[операторы_2]

Loop

Данный оператор повторяет выполнение операторов тела цикла до тех пор, пока заданное логическое условие истинно. Каждый раз перед выполнением операторов тела цикла проверяется условие и выполняется тело цикла, когда условие равно True, когда False – не выполняется, выполнение цикла завершается и программа переходит к выполнению оператора, следующего за оператором Do…Loop.

2). Do Until <условие>

[операторы_1]

[Exit Do]

[операторы_2]

Loop

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

Необязательный оператор Exit Do предусматривает выход из цикла из любого места тела цикла.

Цикл Do…Loop с постусловием:

1). Do

[операторы_1]

[Exit Do]

[операторы_2]

Loop While <условие>

1). Do

[операторы_1]

[Exit Do]

[операторы_2]

Loop Until <условие>

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

Ниже приведены примеры использования оператора Do…Loop.

Sub DWL()

Dim sName As String

Dim iResponse As Integer

Do While sName = ""

sName = InputBox("Введите свое имя: ")

If sName = "" Then

MsgBox "Вы не ввели имя "

iResponse =MsgBox("Хотите выйти из программы?", _ vbYesNo)

End If

If iResponse = vbYes Then Exit Sub

Loop

MsgBox "Вы ввели имя " & sName

End Sub

При запуске процедуры DWL выводится окно,

и если имя введено, то выводится окно с сообщением введённого имени.

Если же имя не введено и нажата кнопка OK или Cancel, то выводится диалоговое окно

и при нажатии кнопки “OK” выводится диалоговое окно

При нажатии кнопки “Да” выполнение процедуры завершается, а при нажатии “Нет” появится окно с предложением ввести имя снова.

В результате выполнения процедуры DUL в ячейке A1 активного листа будет выведено вычисленное значение, равное 10.

Sub DUL()

Dim j As Integer

Range("A1") = 0

Do Until Range("A1") > 8

Range("A1") = Range("A1") + j

j = j + 1

Loop

End Sub