«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript

Игра на «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих


Предыдущая статья была теоретической. Это было началом разговора о булевой логике и операторах И ИЛИ и НЕ. Но вернемся к работе с кодом и узнаем, как логические операторы работают в JavaScript.

Здесь будут использоваться булевы переменные из прошлой лекции. Напомним, что у персонажа Сары есть водительские права и у нее хорошее зрение.

Для начала, допустим, что переменные hasDriverLicense и hasGoodVision принимают истинное значение true. Условно это переменные А и B.


const hasDriverLicense = true; // A
const hasGoodVision = true; // B

Исходные данные есть и теперь мы начнем работать с операторами И, ИЛИ и НЕ.



Оператор И - Два амперсанда &&

Оператор И в JavaScript обозначается как два амперсанда &&.

Пример 1.1

const hasDriverLicense = true; // A
const hasGoodVision = true; // B

console.log(hasDriverLicense && hasGoodVision);

Результат


true

В результате мы видим true. Так как Истина И Истина в результате дают Истину: true && true --> true

Пример 1.2

const hasDriverLicense = true; // A
const hasGoodVision = false; // B

console.log(hasDriverLicense && hasGoodVision);

Результат


false

Здесь в результате мы видим false. Следует запомнить, что результатом Истины И Лжи является Ложь: true && false --> false.

Оператор ИЛИ - Две вертикальные лини ||

Продолжим работать с примером 1.2. Только теперь будет задействован оператор ИЛИ.

Оператор ИЛИ в JavaScript обозначается как две вертикальные лини ||.

Пример 1.3

const hasDriverLicense = true; // A
const hasGoodVision = false; // B

console.log(hasDriverLicense || hasGoodVision);

Результат


true

В результате мы видим true. И это известно из прошлой статьи: Истина ИЛИ Ложь - это Истина: true || false --> true.

В случае с оператором ИЛИ достаточно, чтобы один из операндов имел значение true, чтобы все выражение также было Истинным.

Оператор НЕ - Восклицательный знак !

Оператор НЕ в JavaScript обозначается восклицательным знаком !.

Пример 1.4

const hasDriverLicense = true; // A

console.log(!hasDriverLicense); // !A

Результат


false

В результате мы видим false. Из прошлой статьи известно, что оператор НЕ инвертирует логическое значение - меняет его на противоположное: A --> true; !A --> false.

Составление условий и принятие решений

Теперь, когда мы знаем, как себя ведут булевы переменные совместно с логическими операторами И ИЛИ и НЕ, мы можем использовать это для составления условий if-else и принятия решений.

Допустим, мы хотим определить, может ли Сара вести машину или нет. Условием, при котором Сара может водить, является наличие водительских прав и хорошее зрение. В результате мы должны увидеть одну из строк (в зависимости от значения true или false в условии):
Sarah is able to drive - Сара способна водить машину
Someone else should drive - Кто-то другой должен сесть за руль

Итак, используем булевы переменные и булеву логику для моделирования комплексных ситуаций. На самом деле это довольно просто.

Пример 2.1

const hasDriverLicense = true; // A
const hasGoodVision = false; // B 

const shouldDrive = hasDriverLicense && hasGoodVision;

if (shouldDrive) {
    console.log('Sarah is able to drive');
} else {
    console.log('Someone else should drive...');
}

Результат


Someone else should drive...

В результате мы видим Someone else should drive... - Кто-то другой должен сесть за руль. Как работает этот код?

  • Условие в блоке if: if(shouldDrive) не что иное, как логическое выражение if(hasDriverLicense && hasGoodVision). И в данном случае оно ложно - false.

  • Как работает конструкция if-else должно быть известно: если условие/выражение hasDriverLicense && hasGoodVision истинно, то выполняется блок if, в противном и в данном случае выполняется блок else.

Пример 2.2

Изменим одно из значений: false на true для переменной B.


const hasDriverLicense = true; // A
const hasGoodVision = true; // B 

if (hasDriverLicense && hasGoodVision) {
    console.log('Sarah is able to drive');
} else {
    console.log('Someone else should drive...');
}

Результат


Sarah is able to drive

В результате мы видим Sarah is able to drive - Сара способна водить машину, потому что в этом примере выражение if(hasDriverLicense && hasGoodVision) истинно - true и выполняется блок if.

И и ИЛИ - Больше двух параметров

Код в примерах 2.1 и 2.2 работает правильно, поэтому переходим к следующему этапу и добавим третий параметр isTired - усталость. Таким образом, у нас будет еще одна переменная C.

Пример 3.1

const hasDriverLicense = true; // A - Наличие прав
const hasGoodVision = true; // B - Хорошее зрение
const isTired = false; // C  - Усталость

console.log(hasDriverLicense || hasGoodVision || isTired);

Результат


true

В примере использовался оператор ИЛИ || и в результате мы видим true. При использовании оператора И && результат будет аналогичен - true, так как все переменные истинны: принимают значение true.

Если же при использовании оператора И && одно из значений изменить на false, то и результат будет false.

Пример 3.2

const hasDriverLicense = true; // A - Наличие прав
const hasGoodVision = true; // B - Хорошее зрение
const isTired = false; // C  - Усталость

console.log(hasDriverLicense && hasGoodVision && isTired);

Результат


false

В случае с логическим оператором И достаточно, чтобы хотя бы один из операндов имел значение false, чтобы все выражение также было ложным - false.

Составление условий - Больше двух параметров

Используем пример 3.1 с тремя логическими переменными, чтобы процесс принятия решений при составлении условий зависел от большего числа факторов (см. исходные примеры 2.1 и 2.2).

Немного логики. Переменная isTired обозначает усталость. И в логическом контексте успешного вождения усталости быть не должно.

Поэтому далее в условии конструкции if-else наряду с переменными hasDriverLicense - наличие прав и hasGoodVision - хорошее зрение будет фигурировать !isTired - НЕ усталость (нет усталости).

Пример 4.1

const hasDriverLicense = true; // A - Наличие прав
const hasGoodVision = true; // B - Хорошее зрение
const isTired = true; // C  - Усталость

// Наличие прав и Хорошее зрение и НЕ Усталость
if (hasDriverLicense && hasGoodVision && !isTired) {
    console.log('Sarah is able to drive');
} else {
    console.log('Someone else should drive...');
}

Результат


Someone else should drive...

В результате мы видим Someone else should drive... - Кто-то другой должен сесть за руль, так как один из операндов !isTired - НЕ isTired принимает значение false.

Соответственно логическое выражение hasDriverLicense && hasGoodVision && !isTired тоже false.

И так как в условии имеет место ложь false, то выполняется код блока else.

Пример 4.2

Если же переменная isTired изначально будет принимать ложное значение false, то в логическом выражении НЕ isTired будет принимать значение true. И тогда Сара будет допущена к вождению:


const hasDriverLicense = true; // A - Наличие прав
const hasGoodVision = true; // B - Хорошее зрение
const isTired = false; // C  - Усталость

// Наличие прав и Хорошее зрение и НЕ Усталость
if (hasDriverLicense && hasGoodVision && !isTired) {
    console.log('Sarah is able to drive');
} else {
    console.log('Someone else should drive...');
}

Результат


Sarah is able to drive

Здесь все верно. В результате мы видим Sarah is able to drive, то есть Сара способна водить машину.

Итак, использование логических операторов И, ИЛИ и НЕ в JavaScript позволяет моделировать различные виды комплексных решений, подобных тому, что было рассмотрено.

Не стоит расстраиваться, если для кого-то эта тема оказалась немного запутанной. Потому что с трудностями сталкиваются многие из тех, кто только начинает программировать.

Возможно, следует потратить немного времени после изучения этого материала и снова проанализировать, что здесь происходило. Как вариант нужно вернуться и к прошлой статье. Нужно быть уверенным в том, что эта тема ясна и понятна.



Читайте также...



Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


НЕ Рунет - Часть 2
Работа с логическими операторами И ИЛИ и НЕ
46
Логические операторы И ИЛИ НЕ - Таблица истинности
29
Задача кодирования №3 - Несколько условий if else
77

Тематические публикации
Популярные заметки
Последние заметки