ПОНЯТНО О Visual Basic NET (том 2)

Логические операции And, Or, Not


Применение большого числа вложенных 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("Каков цвет ваших глаз?")


        Dim Rost As Integer = InputBox("Введите ваш рост в сантиметрах")
        If  Tsvet = "Голубой"  And   Rost < 140   Then  MsgBox("OK ")  Else  MsgBox("BYE")
    End Sub
Оператор If в данном примере можно прочесть так – если цвет глаз голубой  И  рост меньше 140 сантиметров, то говори OK , иначе говори BYE.
Поэтому наш оператор If ответит BYE и высоким голубоглазым, и высоким неголубоглазым, и маленьким неголубоглазым. И лишь маленьким голубоглазым он ответит OK . В общем,  And  – строгая операция.
Примеры:

ФРАГМЕНТ
РЕЗУЛЬТАТ
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

Задача «Неразборчивая принцесса». Неразборчивой принцессе нравятся все маленькие независимо от цвета глаз и все голубоглазые независимо от роста. Программа неразборчивой принцессы будет отличаться от программы разборчивой одним единственным знаком логической операции:
        If  Tsvet = "Голубой"   Or   Rost < 140   Then  MsgBox("OK ")  Else  MsgBox("BYE")
Оператор If в данном примере можно прочесть так – если цвет глаз голубой  ИЛИ  рост меньше 140 сантиметров, то говори OK , иначе говори BYE.
Здесь мы употребили логическую операцию Or (по-русски – логическую операцию ИЛИ).
Поставленный между двумя условиями, знак Or говорит о том, что достаточно, если будет выполняться хотя бы одно из них.
Поэтому теперь оператор If ответит OK  и высоким голубоглазым и маленьким голубоглазым и маленьким неголубоглазым. И лишь высоким неголубоглазым он ответит BYE. В общем,  Or – добрая операция.
Примеры:

ФРАГМЕНТ
РЕЗУЛЬТАТ
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
<


Несколько And и Or. Знаками And и Or можно объединять не только два, а сколько угодно условий. Например:
If   a>2  Or  x=b  Or  c<>1   Then  k=99   Else  k=33
Здесь оператор k=99 выполнится, если верно хотя бы одно из трех условий, и лишь когда все три неверны, будет выполняться оператор k=33. Еще один пример:
If   a>2  And   x=b  And   c<>1   Then  k=99   Else  k=33
Здесь наоборот: оператор k=99 выполнится только тогда, когда верны все три условия, а когда хотя бы одно из них неверно, будет выполняться оператор k=33.
Not. Кроме логических операций And и Or применяется еще логическая операция Not (по-русски – НЕ). Запись  
If Not a>b Then...
переводится так –
ЕСЛИ НЕПРАВДА, ЧТО a больше b, ТО....
Вот фрагмент:
a=2:    b=3:    If   Not a>b   Then k=1   Else k=0
Здесь выполнится оператор k=1, так как неправда, что 2>3.
Знак логической операции Not, поставленный перед условием, говорит о том, что это условие не должно выполняться.
Задание 16.         
Усложним Задание 22 из 7.2.3 о треугольнике: В компьютер вводятся длины трех отрезков. Компьютер должен ответить на вопрос, можно или нельзя из этих отрезков образовать треугольник. Указание: Для этого каждый отрезок должен быть меньше суммы длин двух других отрезков. Напишите 3 варианта программы: без использования логических операций, с использованием логических операций Or, с использованием логических операций And.
Задание 17.         
Человек вводит с клавиатуры строку, смысл которой – приветствие при встрече. Компьютер тоже должен ответить приветствием. Отвечать нужно в соответствии со следующей таблицей:

ПРИВЕТСТВИЕ ЧЕЛОВЕКА
ОТВЕТ КОМПЬЮТЕРА
Привет
Привет
Здравствуйте
Здравствуйте
Добрый день
Салют
Приветик
Салют
Салют
Салют
Здравия желаю
Вольно
Любое другое приветствие
Я вас не понимаю

Используя логические операции, постарайтесь уложиться в один оператор If с 4 ветвями.

Содержание раздела