- •Информатика Сборник лабораторных работ по программированию в среде Visual Basic for Applications
- •Содержание
- •Введение
- •Лабораторная работа №1. Vba. Основные понятия. Среда разработки. Основы пРоГраммирования. Переменные
- •Среда программирования vba
- •Основы программирования на vba
- •Переменные
- •Математические операторы
- •Лабораторная работа №2. Диалоговые окна
- •Контрольные вопросы
- •Лабораторная работа № 3. Разветвляющиеся алгоритмы
- •1. Операторы условия if...Then
- •1.1 Строчный оператор If…Then…Else
- •1.2 Блочный условный оператор
- •1.3 Вложенные операторы If
- •1.4 Логические операции
- •2. Безусловный переход GoTo
- •3. Оператор выбора – переключатель
- •5. Задачи для самостоятельного решения!
- •Лабораторная работа № 4. Циклы со счетчиком
- •Лабораторная работа № 5. Циклы с условием
- •1. Циклы с предусловием
- •2. Цикл с постусловием
- •3. Цикл For Each … Next
- •4. Задания к лабораторной работе
- •5. Контрольные вопросы
- •Лабораторная работа № 6. Работа с формами. Создание интерактивных программ.
- •Примеры создания программ для работы с объектами окна диалога
- •Кнопка на рабочем листе создается с помощью Панели инструментов Формы (Элементы управления). Макрос назначается двойным щелчком левой кнопки мыши или с помощью контекстного меню.
- •Варианты для самостоятельных работ:
- •Литература
Лабораторная работа № 5. Циклы с условием
Циклы с неизвестным числом повторений
Рассматриваемые в данной лабораторной работе циклы (циклы с предусловием, циклы с постусловием, цикл For Each…Next) используют тогда, когда неизвестно число повторений цикла.
1. Циклы с предусловием
Циклы с предусловием – это такие циклы, в которых до начала выполнения тела цикла проверяется условие выполнения следующего шага цикла. Если значение этого условия истинно (т.е. условие выполняется), то выполняется тело цикла. В теле цикла должно изменяться значение, по крайней мере, одной переменной, которая влияет на значение условия (иначе произойдет «зацикливание»). Далее опять проверяется условие выполнения цикла, и если значение условия ложно, то осуществляется выход из цикла.
Можно использовать и еще один вариант этого цикла, когда проверяется не истинность значения условия, а ложность. В этом случае выход из цикла происходит, когда значение условия цикла становится истинным. Тот или иной вариант цикла используется в зависимости от того, какое условие в данном алгоритме программисту удобнее использовать.
Особенность этого типа цикла – тело цикла может не выполниться ни разу, если условие первоначально ложно в первом варианте (или истинно во втором).
На блок-схеме такой цикл реализуется следующей конструкцией:
Рис.11. Блок-схема цикла с предусловием
Операторы циклов с предусловием
Рассмотрим два варианта:
1) тело цикла будет выполняться до тех пор, пока значение условия истинно.
Do While <условие>
Loop
2) тело цикла будет выполняться до тех пор, пока значение условия ложно.
Do Until <условие>
Loop
Чтобы прервать цикл с предусловием до его завершения и передать управление первому оператору, следующему за Loop, используют оператор Exit Do.
Пример 1. Скопировать ячейки столбца В с Листа 1, начиная с ячейки В2 и до первой пустой ячейки, в аналогичные клетки на Лист 2.
Рис.12. Блок-схема к примеру 1
1 вариант программы с использованием конструкции Do While:
Sub Pr1_1()
Dim i As Integer
i=2
Do While IsEmpty(Sheets(”Лист1”).Cells(i,2)) = False
Sheets(”Лист2”).Cells(i,2)) = Sheets(”Лист1”).Cells(i,2))
i=i+1
Loop
2 вариант программы с использованием конструкции Do Until:
Sub Pr1_2()
Dim i As Integer
i=2
Do Until IsEmpty(Sheets(”Лист1”).Cells(i,2))
Sheets(”Лист2”).Cells(i,2)) = Sheets(”Лист1”).Cells(i,2))
i=i+1
Loop
2. Цикл с постусловием
Этот тип цикла также используется при неизвестном заранее количестве повторений цикла, но в отличие от цикла с предусловием здесь условие на выход из цикла проверяется после того, как выполнились операторы тела цикла, поэтому хотя бы один раз тело цикла будет выполнено обязательно.
На блок схеме этот тип цикла изображается следующим образом:
Рис. 13. Блок-схема цикла с постусловием
Операторы циклов с постусловием
Рассмотрим также два варианта операторов цикла с постусловием:
тело цикла будет выполняться до тех пор, пока значение условия истинно.
Do
Loop While <условие>
2) тело цикла будет выполняться до тех пор, пока значение условия ложно
Do
Loop Until <условие>
В операторах цикла с постусловием для досрочного выхода из цикла, как и в цикле с предусловием, используют оператор Exit Do.
Пример 2. Скопировать ячейки столбца В с Листа 1, начиная с ячейки В2, в аналогичные клетки на Лист 2. Копировать клетки до тех пор, пока сумма значений скопированных клеток не станет больше 100. Если среди копируемых клеток встретится клетка, содержащая отрицательное число, выйти из цикла, не копируя эту клетку.
Рис.14. Блок-схема к примеру 2
1 вариант программы с использованием конструкции Do While:
Sub Pr2_1()
Dim I As Integer, S As Single
i=1: S=0
Do
i=i+1
If Sheets(”Лист1”).Cells(i,2))<0 Then Exit Do
Sheets(”Лист2”).Cells(i,2)) = Sheets(”Лист1”).Cells(i,2))
S=S + Sheets(”Лист1”).Cells(i,2)
Loop While S <= 100
2 вариант программы с использованием конструкции Do Until:
Sub Pr2_2()
Dim I As Integer, S As Single
i=1: S=0
Do
i=i+1
If Sheets(”Лист1”).Cells(i,2))<0 Then Exit Do
Sheets(”Лист2”).Cells(i,2)) = Sheets(”Лист1”).Cells(i,2))
S=S + Sheets(”Лист1”).Cells(i,2)
Loop Until S > 100
