Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование с помощью процедур VBA.doc
Скачиваний:
1
Добавлен:
28.09.2019
Размер:
149.5 Кб
Скачать

Управляющие операторы языка

Операторы, реализующие разветвленную структуру процесса вычислений

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

Оператор условной передачи управления

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

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

Синтаксис, т.е. правила записи строчного условного оператора таковы:

If условие then [оператоp1] [ еlsе [оператоp2] ].

Условие записывают в виде логического выражения, в зависимости от результата которого осуществляется выбор одной из ветвей (операторов): Сложные условия образуются из простых путем применения логических операций и круглых скобок.

если результат true, то выполняется оператор, следующий за служебным словом then - оператор1,

иначе - оператор, следующий за служебным словом else – оператор2.

В строчном операторе в каждой ветви допускается запись только одного оператора.

Cтруктура блочного оператора If:

If условие1 Then

оператоpы1

Elseif условие2 Then операторы2

операторы2

Elseif условие3 Then операторы3

…………

Else: операторыЗ

End if

В блочном операторе первая строка обязательно заканчивается словом Then.

Во время выполнения оператора if проверяется условие1 и, если результат сравнения равен Истина (true), то выполняется блок операторы1.

Если условие1 равно Ложь (False), то проверяется условие2 и, если результат равен True, выполняется блок операторы2.

Далее могут следовать другие операторы Elseif, в каждом из которых будут последовательно проверяться условия, пока одно из них не примет значение True.

Если ни одно из условий не равно True, выполняются операторы, стоящие за ключевым словом Else.

В любом случае, выполнится только один блок операторов, следующих за первым условием, имеющим значение True; все остальные операторы будут пропущены, даже если их условия имеют значение True.

Пример. Разработать функцию, которая вычисляет календарное количество дней любого месяца любого года:

Function Дней_в_месяце( Месяц, Год)

if (Месяц = 4) OR (Месяц = 6) OR (Месяц = 9) OR (Месяц = 11) Then

Дней_в_месяце =30

Elseif Месяц = 2 Then

if Int( Год / 4 )*4 <> Год Then Дней_в_месяце =28 Else Дней_в_месяце =29

Else: Дней_в_месяце =31

End if

End Function

Аргументами функции являются два числа – номер месяца и номер года.

В первой строке блочного условного оператора задается число дней 30 в месяцах с соответствующими номерами.

В операторе Elseif определяется количество дней в феврале в зависимости от номера года. Если номер года делится с остатком на 4, то год не високосный. Здесь используется стандартная функция VBA Int() для определения целой части от деления номера года на 4. Если год високосный, то результат деления, умноженный на 4, будет равен номеру года. Если деление было с остатком, то при умножении результата деления на 4 получится число меньшее исходного номера года, и значит год не високосный.

Во всех остальных случаях число дней в месяце равно 31.

Результаты расчетов всякий раз сохраняются в переменной с именем функции

Оператор выбора

В языке VBA для организации выбора по значениям некоторого параметра можно применить структуру Select… Case

Синтаксис структуры

Select Case выражение

Case список1

операторы1

Case список2

операторы2

Case Else

операторыЗ

End Select

Во время выполнения оператора Select … Case происходит вычисление выражения.

Значение выражения сравнивается со значениями в списке1. Значения в списке1 разделяются запятыми. Если значение выражения равно одному из значений в списке, то выполняется блок операторы1.

Иначе этот блок пропускается и проверяется следующий оператор Case.

Если значение выражения не равно ни одному значению из всех списков, то выполняется блок операторыЗ, следующий за ключевыми словами Case Else.

Так же как и в структуре If, в структуре Select … Case выполняется только один блок операторов.

Процедуру из предыдущего примера можно переписать с использованием оператора Select…Case и м.б., этот смотрится более понятным

Function Дней_в_месяце( Месяц, Год)

Select Case Месяц

Case 4,6, 9,11

Дней_в_месяце =30

Case 2

if Int( Год / 4 )*4 <> Год Then Дней_в_месяце =28 Else Дней_в_месяце =29

Case Else

Дней_в_месяце =31

End Select

End Function

Операторы организации циклической обработки

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

В теории программирования выделяют несколько основных видов циклов:

  • цикл-пока (рис. 3, а);

  • цикл-до (рис. 3, б);

  • счетный цикл (рис. 3, в)

Рис. 3. Структура циклов:

а - цикл-пока; б - цикл-до; в - счетный цикл