На предыдущих занятиях в узнали, как использовать вложенные блоки если и если/иначе, чтобы проверить несколько условий. Но это можно сделать и при помощи логических операторов.
Используя логические операторы, вы можете комбинировать два или более выражения отношений, чтобы получить один результат фор- мата правда/ложь. Например, логическое выражение (x > 5) и (x < 10) состоит из двух логических выражений (x > 5 и x < 10), которые со- единены при помощи логического оператора и. Мы можем представить себе x > 5 и x < 10 как два компонента оператора и; результат верен, только когда верны оба компонента.
Логические операторы
Оператор И
Оператор и использует в качестве параметров два выражения. Если оба верны, и оказывается истиной, если нет — ложью. На рисунке ниже приводятся результаты для этого оператора по всем возможным комбинациям.
Таблица истины для оператора и
В качестве примера использования оператора и мы можем, скажем, разрабатывать игру, в которой пользователь получает 200 бонусных очков, если на первом уровне его счет достигает 100 баллов. Уровень игры отслеживается переменной под названием уровень, а счет — переменной под названием счет.
В обоих случаях бонусные очки добавлялись только в том случае, если оба условия выполнялись. Как вы видите, оператор и предлагает более компактный способ провести ту же проверку. Команды внутри блока будут выполнены, только если уровень равен 1, а счет — 100. Если одно из условий неверно, результат всей проверки оценивается как ложь и блок изменить счет на 200 выполняться не будет.
Оператор ИЛИ
Оператор или также использует в качестве параметров два выражения. Если одно из них верно, или оказывается истиной. Оно будет ложью, если оба выражения неверны. На рисунке ниже приводятся результаты для этого оператора по всем возможным комбинациям.
Таблица истины для оператора или
Чтобы продемонстрировать использование оператора или, представим себе, что в некой игре пользователи при попытке выйти на следующий уровень ограничены во времени. Они также начинают игру с определенным запасом энергии, которая расходуется по мере прохождения уровня.
Игра заканчивается, если игрок не может выйти на следующий уровень в доступное время или полностью израсходует всю энергию раньше, чем выйдет на следующий уровень. Остающееся время отслеживается при помощи переменной времяОсталось, а уровень энергии — переменной энергияОсталось.
Еще раз обратите внимание, что оператор или предлагает более компактный способ проверки множественных условий. Команды внутри блока если будут выполнены, только если времяОсталось или энергияОсталось равны 0. Если оба этих условия неверны, результат всей проверки оценивается как ложь и флаг играЗакончена не будет установлен на 1.
Оператор НЕ
Оператор не использует в качестве вводных данных только одно выражение. Результат верен, если выражение оказывается ложью, и неверен, если оно истинно
Таблица истины для оператора не
Возвращаясь к нашей гипотетической игре, представим, что пользователь не может выйти на следующий уровень, пока его счет не превысит 100 очков. Это хороший момент для использования оператора не. Вы можете прочесть этот блок кода как «если счет не больше 100, выполнить команду внутри блока если».
Если значение переменной счет меньше или равно 100, то выражение оценивается как верное и команда сказать будет выполнена. Обратите внимание на то, что выражение не (счет > 100) эквивалентно выражению (счет ≤ 100).
Использование логических операторов для проверки областей числовых значений
Когда вам нужно оценить данные, введенные другим пользователем, или отфильтровать ошибки, вы можете использовать логические операторы, чтобы определить, какие числа находятся внутри (или за пределами) области числовых значений.
Области числовых значений
В Scratch нет встроенных инструментов для операторов ≥ (больше или равно) и ≤ (меньше или равно), но вы можете использовать логические операторы. Представим себе, что вам нужно проверить в вашей про- грамме условие x ≥ 10. Решение показано ниже. Закрашенный кружок означает, что число 10 входит во множество решений.
Рисунок демонстрирует множество решений для x < 10, где незакрашенный кружок означает, что соответствующая точка не входит во множество решений. Как вы видите, дополнительное решение (x не меньше 10) эквивалентно x ≥ 10. Еще один способ провести проверку неравенства показан на том же рисунке. Очевидно, что если x ≥ 10, то либо x больше 10, либо x равен 10.