18c0693f

Логические операции 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 ветвями.



Все публикации раздела