Логические операции и выражения

 

Логические операции

 

Применение вложенных If или многих Else lf создает довольно громоздкую, трудную для понимания программу. Поэтому в Visual Basic есть возможность записывать многие программы короче и понятнее. Для этого используются так называемые логические операции. Что это такое, разберем на примерах.

Задача. "Разборчивая принцесса". В прихожей у принцессы длинная очередь женихов. Принцессе нравятся только голубоглазые маленького роста. Устав принимать женихов и отбирать из них подходящих, принцесса вместо себя поставила компьютер, написав для него программу, которая говорит ВЫ МНЕ ПОДОЙДЕТЕ тем, у кого цвет глаз голубой и рост меньше 140 см. Остальным программа говорит ДО СВИДАНИЯ.

 

Вот эта программа:

 

Dim Tsvet As String          'Цвет

Dim Rost As Integer:        'Рост

Private Sub Command1_Click()

    Tsvet = InputBox ("Kaков цвет ваших глаз?")

    Rost = InputBox ("Введите ваш рост в сантиметрах")

    If Tsvet = "Голубой" And Rost < 140  Then Print "ВЫ МНЕ ПОДОЙДЕТЕ"

    Else Print "ДО СВИДАНИЯ"

End Sub

 

Мы видим, что условие в операторе If уже не такое простое, как мы описывали раньше, а сложное, то есть состоящее из двух условий, соединенных  знаком логической операции And (по-русски записывается как "И"). Весь оператор If можно прочесть так; если цвет глаз голубой И рост меньше 140 сантиметров, то печатай ВЫ МНЕ ПОДОЙДЕТЕ, иначе печатай ДО СВИДАНИЯ.

 

ПОЛЕЗНЫЕ СОВЕТЫ:

Знак логической операции And, поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.

 

Поэтому наш оператор If ответит ДО СВИДАНИЯ и высоким голубоглазым, и высоким неголубоглазым, и маленьким неголубоглазым. И лишь маленьким голубоглазым он ответит ВЫ МНЕ ПОДОЙДЁТЕ. В общем, And - строгий знак.

 

Задача. "Неразборчивая принцесса". Неразборчивой принцессе нравятся все маленькие независимо от цвета глаз и все голубоглазые независимо от роста. Программа неразборчивой принцессы будет отличаться от программы разборчивой одним единственным знаком логической операции:

If  Tsvet =Голубой"  Or  Rost<140  'Если цвет голубой ИЛИ рост<140

Знак логической операции Or по-русски записывается как ИЛИ.

 

ПОЛЕЗНЫЕ СОВЕТЫ:

Поставленный между двумя условиями знак Or говорит о том, что дос­таточно, если будет выполняться хотя бы одно из них.

 

Поэтому теперь оператор If ответит ВЫ МНЕ ПОДОЙДЕТЕ и высоким голубоглазым, и маленьким голубоглазым, и маленьким неголубоглазым. И лишь высоким неголубоглазым он ответит ДО СВИДАНИЯ.

Знаками And и Or можно объединять сколько угодно условий. Например:

If а>2 Or х=b Or с<>1   Then k=99  Else k=33

Здесь выполнится оператор k=99, если верно хотя бы одно из трех условий, и лишь когда все 3 неверны, будет выполняться оператор k=33.

 

Логические выражения

 

Выражения

    a>b

    a > 28 And а < 30

    Tsvet = "Голубой" Or Rost<140

     a>2 Or x=b Or c<>1

имеют ту общую черту, что про каждое из них можно сказать, оно или нет в каждый момент времени. Такие выражения называются логическими выражениями. Если логическое выражение верно, то говорят, что оно имеет значение True (правда). Если логическое выражение неверно, то говорят, что оно имеет значение False (ложь). Любое логическое выражение может стоять в качестве условия операторе If.

Логические выражения могут быть сложными - содержать одновременно операции And, Or, Not. Например, такое:

    а>2 And Not b>3 Or s>8   (Not означает  "НЕ")

Чтобы его понять, нужно знать порядок действий. В арифметике сначала выполняется умножение, потом сложение. В логических выражениях сначала выполняется Not, затем And, затем Оr. Для облегчения понимания не возбраняется расставлять скобки:

    (а>2 And (Not b>3)) Or s>8

Это выражение равносильно предыдущему.               

Скобки можно расставлять и чтобы изменить порядок действий:

    а>2 And Not (b>3 Or s>8)

 

Самостоятельное задание 5.

 

Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30, то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля - НЕ БЕЙ ПО СВОИМ.

 

А теперь постреляем!

 

 

 

Оператор варианта Select Case

 

Возьмем такую задачу: компьютер спрашивает школьника, какую он получил отметку по физике, и реагирует на нее подходящим текстом. Вот программа, использующая If:

 

Dim Otmetka As Integer

Private Sub Cornmand1_Click()

        Otmetka = InputBox ("Какую отметку ты получил по физике?")

    If Otmetka = 1 Or Otmetka = 2 Then

        Print "Кошмар!"

    Else lf Otmetka = 3 Then

        Print "Неважно"

    Else lf Otmetka = 4 Then

        Print "Неплохо"

    Else lf Otmetka = 5 Then

        Print "Молодец!"

    Else

        Print "Таких отметок не бывает"

    End If

End Sub

 

Здесь может вызвать раздражение слишком часто встречающееся: имя Otmetka, а также то, что и в такой простой задаче не обошлось без логических операций. Хорошо бы программу можно было писать попроще, например так (по-русски):

 

Выбери вариант отметки

 

Вариант   1, 2

    печатай "Кошмар!"

Вариант  3

    печатай "Неважно"

Вариант  4

    печатай "Неплохо"

Вариант   5

    печатай "Молодец!"

Вариант   остальное

    печатай "Таких отметок не бывает"

Конец выбора

 

И такой оператор варианта был придуман и назван Select Case, что и означает в переводе ВЫБЕРИ ВАРИАНТ. Теперь просто переписываем русский вариант программы по-английски:

 

Dim Otmetka As Integer

Private Sub Command1_Click()

Otmetka = InputBox ("Какую отметку ты получил по физике?")

Select Case Otmetka

    Case 1,2

        Print "Кошмар!"

    Case 3

        Print "Неважно"

    Case 4

        Print "Неплохо"

    Case 5

        Print "Молодец!"

    Case Else

        Print "Таких отметок не бывает"

    End Select

End Sub

 

В процессе исполнения оператора компьютер сравнивает значение переменной Otmetka по очереди со всеми значениями, перечисленными в вариантах. Наткнувшись на совпадающее значение, он выполняет операторы, стоящие в этом варианте. На этом исполнение оператора Select Case завершается. Если же совпадающего значения так и не нашлось, то выполняются операторы, стоящие в варианте Else (в нашей программе он полезен на тот случай, если ученик болен манией величия и вводит число 6).

Самостоятельное задание 6.

 

Человек вводит с клавиатуры строку, смысл которой приветствие при встрече.   Компьютер тоже должен ответить приветствием. Отвечать нужно в соответствии со следующей таблицей:

 

Приветствие человека

Ответ компьютера

Привет Привет
Здравствуйте Здравствуйте
Добрый день Салют
Приветик Салют
Салют Салют
Здравия желаю Вольно
Любое другое приветствие Я вас не понимаю

 

Созданный Вами проект приветствия должен выглядеть примерно так: Privetstvie.

 

Шпаргалка