Поэтому наш оператор If ответит ДО СВИДАНИЯ и высоким голубоглазым, и высоким неголубоглазым, и маленьким неголубоглазым. И лишь маленьким голубоглазым он ответит ВЫ МНЕ ПОДОЙДЕТЕ. В общем, And — строгий знак.
Программа для задачи ПОПАЛ — НЕ ПОПАЛ при использовании логических операций Значительно упростится:
Private Sub Command1_Click()
а = InputBox("Введите дальность выстрела")
If а > 28 And а < 30 Then MsgBox ("ПОПАЛ") Else MsgBox ("НЕ ПОПАЛ")
End Sub
Задача "Неразборчивая принцесса". Неразборчивой принцессе нравятся все маленькие независимо от цвета глаз и все голубоглазые независимо от роста. Программа неразборчивой принцессы будет отличаться от программы разборчивой одним единственным знаком логической операции:
If Tsvet ="Голубой" Or Rost<140 'Если цвет голубой ИЛИ рост<140
Знак логической операции Or переводится "или".
Поставленный между двумя условиями, знак Or говорит о том, что достаточно, если будет выполняться хотя бы одно из них.
Поэтому теперь оператор If ответит ВЫ МНЕ ПОДОЙДЕТЕ и высоким голубоглазым и маленьким голубоглазым и маленьким неголубоглазым. И лишь высоким неголубоглазым он ответит ДО СВИДАНИЯ.
Знаками And и Or можно объединять сколько угодно условий. Например:
If а>2 Or x=b Or с<>1 Then k=99 Else k=33. Здесь выполнится оператор k=99, если верно хотя бы одно из трех условий, и лишь когда все три неверны, будет выполняться оператор к=33.
Кроме логических операций And и Or применяется еще логическая операция Not (переводится "НЕ"). Запись If Not a>b Then… переводится так — ЕСЛИ НЕПРАВДА, ЧТО а больше Ь, ТО…. Вот фрагмент:
а=2: b=3: If Not a>b Then k=1 Else k=0
Здесь выполнится оператор k=1, так как неправда, что 2>3.
Логические выражения
Выражения
а>Ь
а > 28 And а < 30
Tsvet ="Голубой" Or Rost<140
а>2 Or x=b Or с<>1
имеют ту общую черту, что про каждое из них можно сказать, верно оно или нет в каждый момент времени. Такие выражения называются логическими выражениями. Если логическое выражение верно, то говорят, что оно имеет значение True (Правда). Если логическое выражение неверно, то говорят, что оно имеет значение False (Ложь). Любое логическое выражение может стоять в качестве условия в операторе If.
Логические выражения могут быть сложными — содержать одновременно операции And, Or, Not. Например, такое: а>2 And Not b>3 Or s>8
Чтобы его понять, нужно знать порядок действий. В арифметике сначала выполняется умножение, потом сложение. В логических выражениях сначала выполняется Not, затем And, затем Or. Для облегчения понимания не возбраняется расставлять скобки:
(а>2 And (Not b>3)) Or s>8
Это выражение равносильно предыдущему.
Скобки можно расставлять и чтобы изменить порядок действий: а>2 And Not (b>3 Or s>8)
Примеры:
Задание 27: "Замысловатая принцесса". Определите, кто нравится принцессе, по фрагменту из ее программы:
If Tsvet ="Черный" And (Rost<180 Or Rost>184) Then Print "ВЫ МНЕ ПОДОЙДЕТЕ" Else Print "ДО СВИДАНИЯ"
Задание 28: Усложним нашу задачу про ПОПАЛ — НЕ ПОПАЛ: Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 — то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля — НЕ БЕЙ ПО СВОИМ.
Задание 29: Человек вводит с клавиатуры строку, смысл которой — приветствие при встрече. Компьютер тоже должен ответить приветствием. Отвечать нужно в соответствии со следующей таблицей:
Оператор варианта Select Case
У авторов языков программирования есть похвальное стремление сделать язык попроще, попонятнее. Они с ужасом взирают на многочисленные "иначе если" и логические операции и стараются, где можно, от них избавиться. Возьмем, например, такую задачу: Компьютер спрашивает школьника, какую он получил отметку по физике, и реагирует на нее подходящим текстом. Вот программа без нововведений, использующая If:
Dim Otmetka As Integer
Private Sub Command1_Click()
Otmetka = InputBox("Какую отметку ты получил по физике?")
If Otmetka = 1 Or Otmetka = 2 Then
Print "Кошмар!"
Elself Otmetka = 3 Then
Print "Неважно"
Elself Otmetka = 4 Then
Print "Неплохо"
Elself Otmetka = 5 Then
Print "Молодец!"
Else
Print "Таких отметок не бывает"
End If
End Sub
Здесь может вызвать раздражение слишком часто встречающееся имя Otmetka, а также то, что и в такой простой задаче не обошлось без логических операций. Хорошо бы программу можно было писать попроще, например, так (по-русски): Выбери вариант отметки Вариант 1, 2