
- •Введение
- •Основные понятия объектно-ориентированного программирования
- •Основные элементы управления в редакторе vba
- •Стандартные приемы программирования в среде vba Введение
- •Отладка программы
- •Основные элементы программного кода в среде vba Описание переменных
- •Константы
- •Операторы присваивания
- •Арифметические выражения
- •Логические выражения
- •Текстовые выражения
- •Линейные программы
- •Оператор перехода
- •Конструкции принятия решений
- •Ветвление по условиям
- •Циклы в программе
- •Массивы
- •Пользовательские процедуры
- •Две основные функции преобразования типов данных
- •Ввод, вывод и генерация исходных данных
- •Приемы работы в среде программирования vba
- •Запуск среды vba
- •Создание функции пользователя
- •Создание макрокоманды (макроса)
- •Создание пользовательской формы
- •Работа с листами книги
- •Лабораторные задания по темам Целочисленное программирование
- •Ввод и вывод данных, оператор присваивания
- •Логические выражения: группа Boolean
- •Условный оператор: группа If
- •Оператор выбора
- •Цикл с параметром: группа For
- •Цикл с условием: группа While
- •Массивы
- •Функции и процедуры
- •Контрольные вопросы
- •Список литературы
- •Содержание
- •420015, Казань, к. Маркса, 68
Ветвление по условиям
Первая конструкция принятия решений – If...Then, называется условным оператором. На русский язык «If...Then» переводится как «если...то». Существует несколько разновидностей этой конструкции.
Простейший условный оператор:
If условие Then оператор
В этой конструкции условие представляет собой логическое выражение. Компьютер рассчитывает значение этого логического выражения. Если оно является Тruе, то будем говорить, что условие истинно. Если значением является False, то будем говорить, что условие ложно. При истинности условия выполняется оператор оператор, находящийся после ключевого слова Then, при ложности оператор не выполняется.
Далее выполняется оператор, следующий за конструкцией If...Then, вне зависимости от того, выполнен оператор или нет (если оператор не является оператором перехода GоТо).
Рассмотрим следующую программу:
Public Sub IT1()
Dim X As Byte
X = 12 'начальное значение X
If (X > 9 And X < 12) Then X = X + 1
X = X + 2
X = X * 2 'конечное значение X
End Sub
Задание
1) Поставьте точку останова напротив строки End Sub;
2) запустите программу, кликнув на стрелке панели инструментов;
3) убедитесь в том, что в момент останова х равняется 28;
4) объясните этот результат;
5) кликните на стрелке на панели инструментов для окончания выполнения программы;
6) в конструкции If...Then измените условие так, чтобы в момент останова переменная х имела значение 30;
7) текст программы IТ1 верните в исходное состояние.
Частным случаем рассмотренной конструкции If...Then является оператор условного перехода, включающий в себя оператор перехода GоТо. Синтаксис оператора условного перехода:
If условие Then GоТо метка
Согласно этому оператору, при истинности условия происходит переход на метку метка и выполняется помеченный оператор.
Пример
Public Sub IT2()
Dim X As Integer
X = 12
2: If X > 9 And X < 12 Then GоТо LastLine
X = X - 2
GoTo 2
LastLine:
End Sub
Задание
1) Выполните программу IТ2 пошагово, следя за последовательностью выполнения операторов и изменением значения х;
2) объясните, почему значение х меняется так, а не иначе.
Если при истинности условия требуется выполнить несколько операторов, то следует использовать конструкцию вида
If условие Then
операторы
End If
Э
Рис.9. Схема оператора
If…Then
До этого мы рассматривали операторы, имеющие одно условие, т.е. неполные операторы, но операторы могут быть и полными (содержать оба условия). Алгоритм полного оператора показан на рис.9.
Он может записываться в одну строку, если имеется не более чем по одному оператору на каждое из условий
If Mx<0 Then K=1 Else K=1
Иначе он пишется в несколько строк
If Mx<0 Then
операторы по условию Истина
Else
операторы по условию Ложь
End If
Эта конструкция условного оператора работает следующим образом. Если условие истинно, то выполняется блок операторы по условию Истина, находящийся после ключевого слова Then. Если условие ложно, то выполняется блок операторы по условию Ложь, находящийся после ключевого слова Else. После выполнения блока операторы по условию Истина или операторы по условию Ложь выполняется оператор, следующий за строкой End If.
В качестве примера использования последней конструкции приведем следующую программу:
Public Sub IT3()
Dim X As Byte
X = 12 'начальное значение X
If (X > 9 And X < 12) Then
X = X + 3
Else
X = X + 2
End If
X = X * 2 'конечное значение X
End Sub
В том случае, когда блок операторов нужно выполнять после проверки не одного, а нескольких условий, следует использовать такую конструкцию If…Then:
If условие1 Then
операторы1
ElseIf условие2 Then
операторы2
ElseIf условие3 Then
операторы3
...
[Else
операторыN]
End If
Если первое условие истинно (т.е. логическое выражение условие1 имеет значение Тrие), то выполняется блок операторы1. Если оно ложно, то проверяется второе условие, находящееся после ключевого слова ElseIf. При истинности второго условия (т.е. если логическое выражение условие2 имеет значение Тrие) выполняется блок операторы2, и т.д. Если ни одно из условий не являются истинным, то выполняется блок операторыN, расположенный после ключевого слова Else. Далее выполняется оператор, следующий за служебным словосочетанием End If, вне зависимости от того, какой из блоков (операторы1, операторы2,... или операторыN) выполнен.
Иногда можно пользоваться функцией условием
переменная = IIf(условие, выражение1, выражение2)
В ней условие представляет собой логическое выражение, а выражение1 и выражение2 — арифметические или логические выражения или строки, которые можно рассматривать как выражения.
Функция IIf возвращает в программу значение выражения выражение1 или выражение2 в зависимости от того, какое значение принимает логическое выражение ‑ Тrие или False.
Пример
Public Sub IT4()
Dim intA As Integer
Dim strA As String
intA = 6
strA = IIf(intA Mod 2 = 0, "Четнoe", "Heчeтнoe")
End Sub
Примером может служить выражение К=IIf(Mx<0, 1,-1).
Однако надо помнить, что оба выражения внутри оператора должны всегда иметь решения. Например, если в выражении стоят не конкретные числа, а исполняемые операторы и какая-либо переменная в них определяется начальным условием, то оператор всегда будет выдавать ошибку, так как не сможет вычислить оператор полностью – X=IIf(Y<>0, Z/Y, Z). В данной ситуации программа всегда будет пытаться поделить Z на Y и при равенстве Y нулю будет выводиться ошибка. Это условие обязательно надо писать в нормальной структуре If.
Вторая конструкция принятия решений (или ветвления) – Select Case, называемая оператором выбора:
Sеlесt Саsе выражение
Саsе значение1
операторы1
Саsе значение2
операторы2
…
[Саsе Е1sе
операторыN]
Еnd Sеlесt
В ней выражение — арифметическое или логическое выражение или строка. Работает оператор выбора следующим образом.
Если выражение принимает значение значение1, то выполняется блок операторов операторы1. Если выражение принимает значение значение2, то выполняется блок операторы2 и т.д. Если выражение не равно ни одному из приведенных значений, то выполняется блок операторыN, находящийся после служебного словосочетания Саsе Еlsе. Далее выполняется оператор, следующий за строкой Еnd Sеlесt, вне зависимости от того, какой из блоков (операторы1, операторы2, ... или операторыN) выполнен.
В том случае, когда при нескольких значениях выражения выражение необходимо выполнить один и тот же блок операторов, эти значения нужно перечислить после ключевого слова Саsе, разделяя их запятыми.
Пример
Public Sub Bыбop ()
Dim x As Integer
x = 1
Select Case 2 * x + 1
Case 1
x = x + 1
Case 2, 3, 4
x = 10
Case Else
x = 20
End Select
x = x Mod 3
End Sub