Урок 6. Основы программирования. Условия
Условия необходимы при реализации алгоритма «ветвление»: чтобы что-то произошло, необходимо выполнение каких-то условий. В программировании они выражаются специальными конструкциями – условными операторами – и являются одним из элементов управления процессом программы.
Условные операторы
Условные операторы – это специальные конструкции, благодаря которым в программе происходит ветвление в зависимости от условий. Программа принимает логическое решение, выбор, в зависимости от которого выполняет те или иные действия: если так, то идём сюда, если иначе, то сюда.
Подбробнее об алгоритмах мы говорили в Уроке 1.
Чтобы программа смогла осуществить нужный выбор, программисту необходимо:
1. Задать в коде одно или более условий.
2. Задать одно или несколько действий, которые программа осуществит, если одно из условий определено как истина «true» или если все другие определены как ложь «false».
Справка! На основании результатов логического выражения – «true» или «false» – принимается решение, какую часть программы выполнять далее. Это и есть алгоритм ветвления.
Чтобы осуществить этот алгоритм, в языках программирования существуют специальные операторы условий. В JavaScript, как и в большинстве языков программирования, они делятся на три вида:
— Единичный выбор.
— Двойной выбор.
— Множественный выбор.
Единичный
Для этого используется конструкция if… – логическое выражение, в котором производится сравнение данных с 1 условием и выбирается дальнейшее действие. При результате true процесс выполняется дальше, при false выполняется следующий блок кода.
Рассмотрим, как это работает:
1. Создадим переменную year со значением 2020:
let year = 2020;
Не забывайте ставить «;» в конце строки в JS.
2. Пропишем условие «если год не равен 2020, то выведи в консоль «А вот и нет! Год другой». Для этого после оператора if в круглых скобках необходимо указать условие, а затем в фигурных скобках вариант кода, который выполнится, если это условие определится как верное:
if (year != 2020) {
console.log ('А вот и нет! Год другой');
}
3. Во всех других случаях укажем вывести фразу «Скоро или уже 2020!»:
if (year != 2020) {
console.log ('А вот и нет! Год другой');
}
console.log ('Скоро или уже 2020!');
4. Запустим программу и увидим в консоли результат:
"Скоро или уже 2020!"
Поскольку мы ввели значение переменной 2020, то условие if «если year не равно 2020» не сработало. Мы увидели только фразу «Скоро или уже 2020!», которую задали выводить в консоль в любом случае.
5. Изменим значение переменной year на 2019 и заново запустим программу. В этом случае увидим другой результат:
"А вот и нет! Год другой"
"Скоро или уже 2020!"
Теперь условие стало истинным (2019 не равно 2020) и в консоль выводятся оба сообщения: определённое внутри оператора if «А вот и нет! Год другой» и «Скоро или уже 2020!».
Двойной
Здесь используется конструкция if… else… – если проверяемое условие истинно «true», то выполняется блок команд, указанный после if. В противном случае – блок команд, указанный после else.
При этом у программы есть только 2 возможные ветви.
Добавим в рассмотренный выше пример с оператором if вторую ветку, которая при ложном значении проверяемого условия выведет в консоль строку «Всё верно! Уже 2020!»:
let year = 2020;
if (year != 2020) {
console.log ('А вот и нет! Год другой');
} else {
console.log ('Все верно! Уже 2020!');
}
Увидим в консоли результат:
"Все верно! Уже 2020!"
Всё сработало правильно: так как значение переменной 2020, то выполняется блок else, а не if.
Множественный
Множественный выбор в JavaScript выражается несколькими конструкциями:
— else if;
— switch case.
При множественном выборе определяется несколько условий, а также действия, которые компьютер выполнит при истинности каждого из условий.
Логические выражения проверяются друг за другом по веткам. Программа перейдет на ту ветку, на которой результат станет истинным «true».
Else if
Начнём с оператора else if. В отличие от оператора else, его допускает указывать в условном операторе несколько раз, образуя множество веток. Возьмём переменную year и создадим несколько условий:
let year = 2020;
if (year == 2020) {
console.log('Да, но скоро 2021!');
} else if (year == 2021) {
console.log('Ещё не 2021, но уже скоро!');
} else if (year > 2021) {
console.log('Кажется, вы откуда-то из будущего!');
} else {
console.log('Скорее всего, вы из прошлого!');
}
Справка! Последняя ветка строится с помощью оператора else, а не else if, так как она не содержит дополнительных условий. В неё мы записываем ответ, который получает пользователь, если ни одно из условий выше не выполняется.
Результат:
"Да, но скоро 2021!"
Сейчас значение переменной year равно 2020. Поэтому мы перешли на ветку, где указано условие (year == 2020) и получили ответ «Да, но скоро 2021!».
Поменяем значение переменной на 2022, чтобы оно соответствовало условию (year > 2021) и увидим результат:
"Кажется, вы откуда-то из будущего!"
Если же мы присвоим переменной значение меньше 2020 года, то оно не будет соответствовать ни одному из условий и запустится ветка else:
"Скорее всего, вы из прошлого!"
Switch case
Теперь попробуем использовать условную конструкцию switch. Синтаксис такой:
1. Берём созданную переменную year и создаем switch, передав ему значение year:
let year = 2020;
switch (year) {
}
2. Внутри фигурных скобок записываем все варианты ветвей друг за другом, только вместо else if используем ключевое слово case. Здесь не нужно помещать каждую ветку в отдельные фигурные скобки, как в else if.
Внимание! Необходимо ставить двоеточие между условием и действием. Это похоже на конструкцию «Если..., то» в русском языке. И в данном случае двоеточие заменяет союз «то».
Вот как выглядит код:
let year = 2020;
switch (year) {
case 2020:
console.log('Да, но скоро 2021!');
break;
case 2021:
console.log('Ещё не 2021, но уже скоро!');
break;
case 2022:
console.log('Кажется, вы откуда-то из будущего!');
break;
default:
console.log('Скорее всего, вы из прошлого!');
break;
}
3. Для обозначения ветки, которая выполняется в случае несоответствия ни одному значению case, вместо else используем слово default. А после каждого условия необходимо прописать команду break.
Справка! Команда break означает, что если условие выполнено, необходимо прекратить работу и произвести соответствующее условию действие. Если его не поставить, программа продолжит сравнивать условия и выводить дополнительно иные значения до ближайшего break или до конца всех условий switch.
4. Запустим созданный нами switch со значением переменной year 2020 и посмотрим на результат в консоли:
"Да, но скоро 2021!"
Если бы мы забыли написать слово break после каждого условия, то получили бы результат:
"Да, но скоро 2021!"
"Ещё не 2021, но уже скоро!"
"Кажется, вы откуда-то из будущего!"
"Скорее всего, вы из прошлого!"
С помощью этого оператора получится только сопоставить равенство переменной, указанной в скобках после switch, с конкретными значениями после слов case.
Чтобы через switch проверить больше, меньше, больше или равно, меньше или равно, конструкцию придётся изменить вот так:
let year = 2022;
switch (true) {
case (year==2020):
console.log('Да, но скоро 2021!');
break;
case (year==2021):
console.log('Ещё не 2021, но уже скоро!');
break;
case (year>2020):
console.log('Кажется, вы откуда-то из будущего!');
break;
default:
console.log('Скорее всего, вы из прошлого!');
break;
}
Результат в консоли:
"Кажется, вы откуда-то из будущего!"
Здесь мы передали switch не значение переменной year, как в предыдущем варианте, а значение логического выражения true. В этом случае компьютер сравнивает условия в скобках после case со значением true, а не со значением переменной year. То условие, которое в зависимости от значения year определено, как true, и будет выполнять.
Но чаще всего подобные неравенства прописываются через конструкцию else if.
Switch удобен, если вам предстоит описать множественный выбор с точными значениями. Через else if пришлось бы прописывать сравнение переменной для каждого условия, а конструкция switch по умолчанию сравнивает значение переменной со значением в case.
Домашнее задание
1. Представьте, что вы просите пользователя ответить на вопрос: «Сколько ног у паука?». Правильный ответ – 8. Пропишите несколько возможных сообщений для пользователя, в зависимости от введённых им значений, используя конструкцию else if:
— если пользователь ввёл 8, то он получит сообщение «Правильно!»;
— если меньше 8, то «Нет! Это слишком мало.»;
— если любое другое число, то «Нет! Это очень много.».
2. Теперь попросим пользователя вычислить результат простого арифметического выражения 3+2. Пропишите условия, используя конструкцию switch case:
— если пользователь ввёл 5, то он получит сообщение «Верно! Это 5.»;
— если 6, то «Нет, необходимо сложить, а не умножить!»;
— если 1, то «Нет, не вычитай, а складывай!»;
— во всех других случаях «Кажется, у тебя плохо с математикой!».