скачать книгу бесплатно
Рис.4.8. Результаты вычисления выражений
с оператором логической эквивалентности Eqv
Логическая импликация Imp является единственным оператором, результат выполнения которого зависит от положения операндов. Он всегда равен True (Истина), кроме случая, когда первый операнд True (Истина), а второй – False (Ложь) (Рис.4.9).
Рис.4.9. Результаты вычисления выражений
с оператором логической импликации Imp
4.8. Приоритеты операций
Порядок вычисления сложного выражения, состоящего из нескольких операторов, зависит от их приоритетов (Рис.4.10).
Рис.4.10. Операторы языка Visual Basic
в порядке убывания их приоритета
Если друг за другом следуют несколько операторов с одинаковым приоритетом, то вычисление выражения производится слева направо.
В качестве примера попробуйте разобраться с порядком вычисления следующего выражения:
Form1.Visible = 2 <> 3 And Not 2 ^ 3> 2 +3
Даже на первый взгляд видно, что это сделать непросто, особенно если не заглядывать в таблицу. Совсем другое дело, если добавить в выражение несколько пар круглых скобок, явно указывающих на порядок выполнения операций:
Form1.Visible = (2 <> 3) And (Not ((2 ^ 3)> (2 +3)))
Глава 5. Условные переходы и циклы
В этой главе вы научитесь:
• изменять порядок выполнения операторов программы,
• использовать условные и безусловные переходы,
• вводить циклы там, где это необходимо.
5.1. Передача управления в программе
Операторы программы обычно выполняются последовательно, друг за другом. Тем не менее, часто возникает необходимость перехода к другой части программы в зависимости от выполнения определенного условия, а также повторного выполнения группы операторов некоторое количество раз. Для этого используются специальные инструкции языка Visual Basic, производящие передачу управления:
• условные переходы,
• безусловные переходы,
• циклы,
• вызовы подпрограмм.
Условные переходы проверяют одно или несколько условий и в зависимости от этого осуществляют выполнение того или иного блока операторов из нескольких возможных, либо вообще ни один из блоков не выполняется. Безусловные переходы передают управление безо всякой проверки.
Циклы дают возможность повторения несколько раз подряд части программы. Некоторые типы циклов делают фиксированное число повторений, другие – выполняются до тех пор, пока не будет выполнено заданное условие.
Подпрограммы будут рассматриваться в следующей главе.
5.2. Условный переход If…Then… Else
Наиболее часто встречается инструкция условного перехода If…Then… Else. В упрощенном варианте эта инструкция может располагаться в одну строку, тогда ее синтаксис будет следующим:
If условие Then инструкция [Else инструкция_else]
Ключевое слово If (Если) начинает строку. После этого находится условие, представляющее собой булево выражение, в зависимости от значения которого происходит выполнение последующих инструкций:
• если результат = True (Истина), то выполняется инструкция после Then (Затем),
• если результат = False (Ложь), то выполняется инструкция после Else (Иначе), а при отсутствии ключевого слова Else (Иначе) – ничего не выполняется.
Приведем несколько примеров использования упрощенного варианта условной инструкции If…Then… Else:
If 5 <varX Then varY = varX * 2
If Form1.Width <> 3800 Then Form1.Width = 3800
If Button = 2 Then PopupMenu mnuSelColor Else PSet (X, Y)
Гораздо более широкие возможности для программиста предоставляет блоковая форма синтаксиса инструкции If…Then… Else, которая допускает проверку не одного, а нескольких условий. В этом случае инструкции располагаются в несколько строк:
If условие Then
[инструкции]
[ElseIf условие-n Then
[инструкции_elseif]…
[Else
[инструкции_else]]
End If
Многое в блоковом синтаксисе похоже на предыдущую форму записи, но есть и отличия: если результатом проверки условия будет False (Ложь), то перед выполнением блока Else (Иначе) возможна проверка дополнительных условий с помощью ElseIf (Иначе Если). Весь блок завершается ключевым словом End If (Конец Если).
Вот пример, где дважды проверяется свойство Value (Значение) элемента управления HScrollBar (Горизонтальная полоса прокрутки). При достижении свойства Value (Значение) минимума (HScroll1.Value = HScroll1.Min) и максимума (HScroll1.Value = HScroll1.Max) выдаются соответствующие сообщения, в противном случае – происходят вычисления с использованием значения этого свойства:
If HScroll1.Value = HScroll1.Min Then
MsgBox «Достигнут минимум!»
ElseIf HScroll1.Value = HScroll1.Max Then
MsgBox «Достигнут максимум!»
Else
varY = varX / HScroll1.Value
End If
Инструкция условного перехода If…Then… Else может содержать внутри себя другие условные инструкции, причем допускается несколько уровней вложенности, например:
If varX> = 1 And varX <= 1000 Then
If varX <500 Then
MsgBox «Значение меньше 500»
ElseIf varX> 500 Then
MsgBox «Значение больше 500»
Else
MsgBox «Значение равно 500»
End If
Else
MsgBox «Исходное значение вне допустимого диапазона!»
End If
5.3. Условный переход Select Case
Условная инструкция Select Case по своим возможностям аналогична If…Then… Else, но, прежде всего, рассчитана на выбор одного варианта не из двух, а из нескольких возможных. Синтаксис инструкции Select Case следующий:
Select Case выражение
[Case список_значений_выражения-n
[инструкции-n]]…
[Case Else
[инструкции_else]]
End Select
Результат выражения, находящегося после ключевых слов Select Case, используется Visual Basic при выборе одного из блоков инструкций Case (Вариант). В начале каждого блока Case (Вариант) находится список допустимых значений. При совпадении одного из них с результатом выражения, выполняется именно этот блок Case (Вариант).
Данный список может содержать один или несколько элементов, разделенных запятыми, каждый из которых может быть:
• значением,
• выражением,
• диапазоном,
• оператором сравнения.
С непосредственными значениями и выражениями мы уже встречались. Диапазон использует ключевое слово To (До) и определяет множество допустимых значений, от минимального до максимального:
выражение_минимум To выражение_максимум
Примеры диапазонов:
1 To 5
varX To varX +20
Оператор сравнения обязательно содержит ключевое слово Is (Есть), которое олицетворяет текущий результат выражения:
Is оператор_сравнения выражение
Данный блок инструкций Case (Вариант) выполняется, если результатом оператора сравнения будет True (Истина). Примеры операторов сравнения:
Is <> 0
Is> varX
Блок инструкций Case Else (Другой вариант) выполняется, если Visual Basic не находит подходящего значения ни в одной из блоков Case (Вариант).
В следующем примере Select Case оценивает значение переменной Mark, которой до этого был присвоен номер школьной оценки в цифровом виде, и расшифровывает ее. Если значение переменной Mark отличается от допустимого (от одного до пяти), то выдается сообщение об этом.
Select Case Mark
Case 1
MsgBox «Единица»
Case 2
MsgBox «Двойка»
Case 3
MsgBox «Тройка»