Частенько возникают такие ситуации кода вы имеете несколько различных условий, а принять вам необходимо только одно из них. Чтобы разобраться, давайте возьмем наш с вами пример. Теперь у нас будет два условия: погода солнечная, либо погода облачная. В обоих из наших случаев if должен отработать, так ка оба из этих условий удовлетворяют нашему запросу. А как же написать программу, чтобы она правильно работал? Как один из вариантов, мы можем вложить один if в другой, тем самым у нас получится условие внутри условия. JavaScript позволяет это сделать, но такой вариант нам не подойдет. Для большей наглядности ниже приведен код данного варианта программы:
1 2 3 4 5 6 7 8 9 10 11 12 |
var a = window.prompt (`Какую обещали погоду на сегодня?`); a = a.toLowerCase().substr(0, 4); if (a = `солн`){ window.alert (`Зонт можно не брать`); } else { if (a == `обла`) { // первое условие не выполнилось, // так что добавим другое window.alert (`Зонт можно не брать`); } else { window.alert (`Стоит взять зонтик!`); } } |
Данный вариант является на 100% рабочим. Но что же у нас получилось? Код довольно сильно усложнился, его трудно читать, но по сути функционал остался прежним. Кроме всего, в коде появились две абсолютно идентичные строчки, а это является первым признаком неправильной логики в коде программы (не забывайте об этом!). При этом в программе поменялось только одно условие и ничего более.
Давайте еще раз попробуем сформулировать нашу с вами задачу: «Если погода будет солнечной или облачной, то зонт не нужен, иначе же программа должна советовать взять зонт». Это почти дословное описание нашего с вами оператора if в прошлой версии программы, но с одним большим отличием – здесь появилось слово ИЛИ и еще одно дополнительное условие.
В программировании существует такой логический оператор как – ИЛИ, математики же называют его дизъюнкцией. Записываю же его ка две вертикальные черточки (||). Данный оператор как рас необходим в подобных ситуациях, как у нас. Но как же он работает? Его применяют к булевым значениям, он возвращает true если хоть одно из значений будет равно true. Если же оба значения false, то оператор ИЛИ вернет false.
Примеры с оператором ИЛИ:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
true || true; //вернет нам значение true true || false; // вернет нам значение true false || false; //вернет нам значение false var a =12; a <=5 || a >=15 /* вернет нам значение false, в прошлой статье я забыл рассказать вам о следующих операторах:*/ // это операторы сравнения: меньше или равно (<=) // и больше или равно (>=). |
Теперь давайте попробуем применить данный оператор к нашему с вами примеру. Для начала давайте снова проговорим нашу с вами формулировку задачи: «Если погода будет солнечной или облачной, то зонт не нужен, иначе же программа должна советовать взять зонт». Теперь же давайте напишем программу по этой формулировке:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
var inp = window.prompt ("Какую обещали погоду на сегодня?"); inp = inp.toLowerCase().substr(0, 4); // Добавляем второе условие с помощью оператора ИЛИ if (inp == "солн" || inp == "обла") { // Есло же выполнится хотя бы одно из наших условий, // то выводим сообщение window.alert ("Зонт можно не брать"); } else { window.alert ("Стоит взять зонтик!"); } |
О данной аналогии давайте так же разберемся с логическим оператором И или если говорить на языке математиков – конъюнкцией. Ее записывают с помощью двух амперсанд (&&) и следит за тем, чтобы все из условий были выполнены. Те есть если для оператора ИЛИ достаточно только одного true для продолжения работы, то для оператора И достаточно всего одного false, чтобы работа прекратилась.
Давайте занесем данный оператор и в нашу программу.
Когда вы собираетесь идти вы не только смотрите прогноз погоды, так же вы смотрите в окно — так как прогноз погоды мог быть не точным. Поэтому, вы оставите зонт дома только в том случае, если не только прогноз будет благоприятный, но И за окном действительно не идет дождь.
Теперь формулировка нашей задачи будет звучать так: «Если погоду обещали солнечную ИЛИ облачный И за окном тоже солнечно ИЛИ облачно, ТО зонт можно не брать»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
var inp1 = window.prompt ("Какую обещали погоду на сегодня?"); inp1 = inp1.toLowerCase().substr(0, 4); // добавим возможность вводить погоду за окном var inp2 = window.prompt ("А какая погода за окном?"); // далее обрабатываем данный ввод как и предыдущий inp2 = inp2.toLowerCase().substr(0, 4); /* добавляем второе условие с ИЛИ и ставим между ними И. Чтобы логика не нарушалась, возьмем оба ИЛИ в скобки — тогда интерпретатор выполнит их первыми, а иначе он бы пошел сравнивать результаты по очереди */ if ( (inp1 == "солн"|| inp1 == "обла") && (inp2 == "солн"|| inp2 == "обла") ) { // если выполнились все условия то зонт можно не брать window.alert ("Зонт можно не брать"); } else { window.alert ("Стоит взять зонтик!"); } |
Для большинства из вас данный программный код покажется сложным и непонятным, но вам необходимо в нем как следует разобраться и все понять. Не жалейте на это свое драгоценное время. Ведь это и является основной логики, без нее вы не сможете написать ни одну программу.