Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
16.03.2016
Размер:
103.94 Кб
Скачать

6Билет. Оператор ветвления по условию: правила записи и механизм. Вложения условий. Использование логических выражений.

Операторы условного и безусловного перехода

Операторы условного перехода — одни из самых важных и часто используе-мых элементов в языках программирования. Общий принцип их работы прост: проверяется соответствие каким-то условиям (истинность или ложность каких-либо выражений) и в зависимости от этого выполнение про-граммы направляется по одной или другой ветви. В VBA предусмотрено два оператора условного перехода: If...Then и Select Case.

Оператор If ... Then

Оператор If...Then — самый популярный у программистов. Полный его син-таксис выглядит так (необязательные части заключены в квадратные скобки):

If Условие Then

Команды1

[ElseIf УсловиеN Then

КомандыN]

[Else

Команды2]

End If

При этом:

  1. 􀂈Условие — выражение, которое проверяется на истинность. Если оно ис-тинно, то выполняются Команды1, если ложно — Команды2;

  2. 􀂈УсловияN — дополнительные условия, которые также можно проверить. В случае, если они выполняются (выражение УсловияN истинно), то вы-полняются КомандыN. Дополнительные условия (вместе с конструкцией ElseIf) можно повторять неограниченное количество раз, но если вам нужно реализовать проверку на соответствие большому количеству усло-вий, то правильнее будет использовать конструкцию Select Case (см. разд. 3.5.2).

Оператор If...Then применяется:

  1. 􀂈когда нужно проверить на одно условие и в случае соответствия сделать какое-то действие:

If nTemperature < 10 Then

MsgBox "Надеть куртку"

End If

  1. 􀂈когда нужно сделать то же, что и в предыдущем примере, а в случае несо-ответствия выполнить другое действие:

If nTemperature < 10 Then

MsgBox "Надеть куртку"

Else

MsgBox "Надеть ветровку"

End If

ность каких-либо выражений) и в зависимости от этого выполнение про-граммы направляется по одной или другой ветви. В VBA предусмотрено два оператора условного перехода: If...Then и Select Case.

  1. когда нужно проверить на соответствие несколько условий (обратите вни-мание на использование логических операторов):

If (nTemperature < 10) And (bRain = True) Then

MsgBox "Надеть куртку и взять зонтик"

End If

  1. 􀂈в случае, когда проверка первого условия вернула False, нужно проверить на соответствие еще несколько условий (удобно использовать ElseIf):

If (bIGoInCar = True) Then

MsgBox "Одеться для машины"

ElseIf nTemperature < 10 Then

MsgBox "Надеть куртку"

Else

MsgBox "Можно идти в рубашке"

End If

В этом примере, поскольку bIGoInCar — переменная типа Boolean и сама по себе принимает значения True или False, первая строка может выгля-деть так:

If bIGoInCar Then ...

Приведу некоторые замечания по использованию If...Then:

  1. 􀂈ключевое слово Then должно находиться в одной строке с If и условием. Если вы перенесете его на следующую строку, будет выдано сообщение об ошибке;

  2. 􀂈если разместить команду, которую нужно выполнить при истинности про-веряемого условия, на одной строке с If и Then, то End If можно не писать:

If nTemperature < 10 Then MsgBox "Надеть куртку"

Если же вы используете несколько команд или конструкции Else/ElseIf, то End If в конце нужно писать обязательно, иначе возникнет синтаксиче-ская ошибка;

  1. 􀂈для выражения If...Then настоятельно рекомендуется использовать от-ступы для выделения блоков команд. Иначе читать код будет трудно;

  2. 􀂈операторы If...Then можно вкладывать друг в друга:

If MyVar = 5 Then

MsgBox "MyVar = 5"

If MyVar = 10 Then

MsgBox "MyVar = 10"

End If

End If

Оператор Select Case

Оператор Select Case идеально подходит для проверки одного и того же зна-чения, которое нужно много раз сравнить с разными выражениями. Синтак-сис его очень прост:

Select Case Выражение

Case Условие1

Команды1

[Case УсловиеN

КомандыN]

[Case Else

Команды2]

End Select

Например:

Select Case sDayOfWeek

Case "Понедельник"

MsgBox "Салат из шпината"

Case "Вторник"

MsgBox "Салат из морской капусты"

Case Else

MsgBox "На этот день у нас ничего не предусмотрено"

End Select

Приведу некоторые замечания по поводу Select Case:

  1. 􀂈строка:

Case "Понедельник"

на самом деле означает:

Case sDayOfWeek = "Понедельник"

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

Case 0 To 5, 15, Is > 55

Такое выражение можно перевести как "Если проверяемое выражение по-пало в диапазон от 0 до 5 включительно, или равно 15, или больше 55".

Слово Is при этом можно пропустить — компилятор VBA добавит это ключевое слово за вас. Несколько критериев в Case перечисляются через запятые и объединяются так, как работает оператор Or, т. е. выполнение пойдет по этой ветви, если тестируемое значение будет удовлетворять хо-тя бы одному из критериев;

  1. при использовании диапазона (0 To 5) включаются и границы диапазона (в данном случае 0 и 5).

Оператор GoTo Оператор GoTo — это оператор безусловного перехода, когда ход выполнения программы без проверки каких-либо условий перепрыгивает на метку в коде. Пример использования GoTo может выглядеть так:

GoTo EngineNotStarted

...

EngineNotStarted:

MsgBox "Едем на метро"

...

Здесь EngineNotStarted: — это метка, для нее используется имя (выбираемое по правилам назначения имен для переменных), которое оканчивается двое-точием. Эта метка может находиться как до, так и после оператора GoTo. В любом случае, при выполнении оператора GoTo ход выполнения "пере-прыгнет" на указанную в GoTo метку.

Иногда использование GoTo очень удобно, например, когда нам нужно доби-ваться от пользователя ввода правильного значения неизвестное число раз. Однако использовать GoTo категорически не рекомендуется, потому что код становится трудночитаемым. Чаще всего GoTo можно заменить на конструк-цию Do While...Loop (см. разд. 3.6) или на вызов функции из самой себя.

Соседние файлы в папке программирование_1