Применение большого числа вложенных If создает довольно громоздкую, трудную для понимания программу. Применение вместо них ветвей ElseIf не всегда делает программу понятнее. Поэтому в VB есть возможность записывать программы короче и понятнее, используя так называемые логические операции. Что это такое, разберем на примерах.
Сформулируем последнюю задачу так: Если число больше 28 и одновременно меньше 30, то печатай ПОПАЛ, в противном случае – НЕ ПОПАЛ.
Обратите внимание, насколько эта формулировка короче и понятнее прежнего алгоритма. Упрощение достигнуто благодаря применению союза «и». В языках программирования в роли этого союза выступает логическая операция And (по-русски – логическая операция И). Вот как с ее помощью записывается наша программа:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a As Double = InputBox("Введите дальность выстрела")
If a > 28 And a < 30 Then MsgBox("ПОПАЛ") Else MsgBox("НЕ ПОПАЛ")
End Sub
Как видите, намного короче.
Обратите внимание, что условие в операторе If уже не такое простое, как мы описывали раньше, а стало таким:
a > 28 And a < 30
Оно состоит из двух условий, между которыми стоит знак логической операции And .
Знак логической операции And, поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.
Разберем еще один пример.
Задача «Разборчивая принцесса». В прихожей у принцессы – длинная очередь женихов. Принцессе нравятся только голубоглазые маленького роста. Устав принимать женихов и отбирать из них подходящих, принцесса вместо себя поставила компьютер, написав для него программу, которая говорит OK тем, у кого цвет глаз голубой и одновременно рост меньше 140. Остальным программа говорит BYE.
Вот эта программа:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Tsvet As String = InputBox("Каков цвет ваших глаз?")
|
ФРАГМЕНТ |
РЕЗУЛЬТАТ |
|
a=8: b=6: If a>b And b>1 Then k=1 Else k=0 |
k=1 |
|
a=8: b=6: If a>b And b>7 Then k=1 Else k=0 |
k=0 |
|
If 8>2 And 3>5 Then k=1 Else k=0 |
k=0 |
|
If c>d And c<d Then k=1 Else k=0 |
k=0 |
|
ФРАГМЕНТ |
РЕЗУЛЬТАТ |
|
a=8: b=6: If a>b Or b>7 Then k=1 Else k=0 |
k=1 |
|
a=8: b=6: If a<b Or b>7 Then k=1 Else k=0 |
k=0 |
|
If 1>2 Or 5<4 Then k=1 Else k=0 |
k=0 |
|
ПРИВЕТСТВИЕ ЧЕЛОВЕКА |
ОТВЕТ КОМПЬЮТЕРА |
|
Привет |
Привет |
|
Здравствуйте |
Здравствуйте |
|
Добрый день |
Салют |
|
Приветик |
Салют |
|
Салют |
Салют |
|
Здравия желаю |
Вольно |
|
Любое другое приветствие |
Я вас не понимаю |