Условный оператор ветвления (if)
реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true
.
Тернарный оператор (?:)
является альтернативным вариантом конструкции if…else
, позволяющим сократить ваш код, фактически записывая условие в одну строчку.
Инструкция if
Условный оператор if (в переводе с англ. — «если») реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true
.
Синтаксис:
if (условие) однострочная инструкция;
или
if (условие) {
блочная инструкция
}
Условие в этой конструкции может быть любым выражением. JavaScript автоматически преобразует результат выражения в логическое значение, вызывая для него функцию Boolean(). Если условие эквивалентно true
, выполняется инструкция, в противном случае – нет.
Выполняемая инструкций может быть представлена одной строкой или блоком кода (группой строк в фигурных скобках), например:
Примечание: Рекомендуется всегда использовать фигурные скобки, даже если нужно выполнить всего одну строку кода. Это ясно показывает, что должно быть выполнено в каждом случае и улучшает читаемость кода.
Конструкция if...else
Используйте конструкцию if....else для выполнения первой инструкции, если условие истинноtrue
, и второй инструкции, если условие ложно false
.
Синтаксис:
if (условие) {
инструкция 1
}
else {
инструкция 2
}
Следующий пример выведет соответствующее окно приветствия в зависимости от текущего времени в вашем браузере:
Инструкция else if
Инструкция else if
используется в случае, если требуется выполнить один из многих фрагментов кода. Формально это не JavaScript-инструкция, а лишь распространенный стиль программирования, который заключается в применении повторяющихся инструкций if/else
:
if (n == 1) {
инструкция 1
}
else if (n == 2) {
инструкция 2
}
else if (n == 3) {
инструкция 3
}
else {
// Если все остальные условия else не выполняются, исполняем инструкцию 4
}
Приведенный выше код – это всего лишь последовательность инструкций if
. Каждая следующая if
является частью else
предыдущей инструкции if
. Запись else if
более удобная, чем ее синтаксически эквивалентная форма, показывающая вложенность инструкций if
:
if (n == 1) {
инструкция 1
}
else {
if (n == 2) {
инструкция 2
}
else {
if (n == 3) {
инструкция 3
}
else {
// Если все остальные условия else не выполняются, исполняем инструкцию 4
}
}
}
В следующем примере, благодаря применению конструкции else if
, будет выведено одно из четырех окон приветствия в зависимости от времени суток:
Тернарный оператор (?:)
Условный оператор (?:) – это единственный тернарный (от лат. ternarius — «тройной») оператор с тремя операндами в JavaScript. Тернарный оператор возвращает свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом.
Первый операнд используется в качестве условия, он вычисляется и преобразуется, при необходимо, в булево значение. Если условие верно true
, то вычисляется и возвращается значение1. Если условие неверно false
, то вычисляется и возвращается значение2:
условие ? значение1 : значение2
Например:
Читается этот код так: если а больше b, то c = a, иначе c = b.
Можно записать тоже самое через if/else:
Вложенные инструкции if/else, так же можно заменить последовательностью из тернарных операторов:
Условный оператор ?:
имеет ассоциативность справа налево, поэтому следующие две инструкции эквивалентны:
z = a?b:c?d:e?f:g;
z = a?b:(c?d:(e?f:g));
&&
. Вспомните, что оператор &&
вычисляет второй операнд только при условии, если результат вычисления первого операнда – истина true
. В программировании данный процесс называют неполным вычислением, поскольку, если в логическом И &&
первый операнд возвращает false
, то общий результат тоже будет false
. Поэтому вычисление и преобразование второго операнда, в этом случае, не выполняется.
В предыдущем примере оператор &&
сначала проверяет выполняется ли временное условие (чему равна переменная time). Если условие выполняется, то в переменную message будет записана соответствующая строка приветствия. В противном случае, в силу побочного эффекта, связанного с неполным вычислением, оператор &&
выведет false
и т.д. Этот метод используется не очень часто, но если вам встретится нечто подобное, то вы теперь знаете, как работают подобные инструкции.
Задачи
-
Вам даны две переменные x и y, менять их не нужно. При помощи тернарного оператора сравните их и если x больше, чем y, то выведите фразу: "x больше, чем y", иначе выведите фразу: "x не больше, чем y".
var x = 10, y = 7; /* ваш код */
-
Четное или нечетное число
Пользователь вводит какое-то число (num). Используя конструкцию if..else, напишите код, который делает запрос: «Введите число».
Если посетитель вводит четное число, то выводить «"Число " + num + " четное"», если нечетное: "Число " + num + " нечетное".Показать решениеРешение:
Суть решения заключается в том, что проверяется остаток от деления числа на 2. Если остаток равен 0, значит число чётное, иначе – нечётное. Получить остаток от деления в можно с помощью оператора %.
-
Сколько цифр в числе и его знак
Напишите код, который предлагает пользователю ввести целое число. Нужно вывести на экран сколько в этом числе цифр, а также положительное оно или отрицательное. Например, "Число " + num + " однозначное положительное". Достаточно будет определить, является ли число однозначным, двухзначным или трехзначным и более.
Показать решениеРешение:
Алгоритм решения задачи:
- Проверяем, не является ли число нулем. Ноль не является ни положительным, ни отрицательным.
- После этого проверяем количество знаков в в положительном числе и выводим на эран соответствующее сообщение.
- Проверяем количество знаков в отрицательном числе, выводим сообщение.
-
Принадлежность точки окружности
Даны координаты точки A(x = 4, y = 9) и радиус окружности (R = 10) с центром в начале координат. Используя тернарный оператор напишите код, который будет выводить сообщение о том, лежит ли данная точка внутри окружности или за её пределами. Для извлечения квадратного корня из числа z вам понадобится метод Math.sqrt(z).
Показать решениеРешение:
Следует рассмотреть прямоугольный треугольник, один катет которого лежит на любой оси, а другой является перпендикуляром к этой оси из заданной точки A. В этом случае длины катетов треугольника равны значениям x и y, а гипотенуза L является отрезком, соединяющим начало координат O с точкой A. Если этот отрезок L больше радиуса круга R, то значит точка лежит вне окружности.
Длина гипотенузы находится по теореме Пифагора: L = Math.sqrt(x*x + y*y).-
Определить существование треугольника по трем сторонам
У треугольника сумма любых двух сторон должна быть больше третьей. Иначе две стороны просто <лягут> на третью и треугольника не получится.
Пользователь вводит поочерёдно через prompt длины трех сторон. Используя конструкцию if..else, напишите код, который должен определять, может ли существовать треугольник при таких длинах. Т. е. нужно сравнить суммы двух любых строн с оставшейся третьей стороной. Чтобы треугольник существовал, сумма всегда должна быть больше отдельной стороны.Показать решениеРешение:
Поскольку у треугольника три стороны, то можно составить три варианта сложения двух сторон: a + b, b + c, a + c. Первую сумму сравниваем с оставшейся стороной c, вторую - с a и третью - с b. Если хотя бы в одном случае сумма окажется не больше третьей стороны, то можно сделать вывод, что треугольник не существует.
-
Найти максимальное число из трех
Определить какое из трех, введенных пользователем, чисел максимальное и вывести его на экран.
Пользователь вводит поочерёдно через prompt числа. Используя конструкцию if..else, напишите код, который должен определять, какое из введенных чисел является наибольшим.Показать решениеРешение:
-
Найти сумму или произведение цифр трехзначного числа
Пользователь вводит через prompt трёхзначное число. Проверить трехзначное число на четность и найти сумму его цифр, если число четное, или произведение его цифр, если число нечетное.
Показать решениеРешение:
Чтобы извлечь первую цифру трехзначного числа, надо его разделить на 100 и округлить воспользовавшись побитовыми операторами.
Чтобы извлечь вторую цифру трехзначного числа, можно пойти разными способами. Например, найти остаток от деления на 100, потом разделить на 10 и снова округлить.
Последняя цифра любого числа, обозначающая единицы, извлекается путем нахождения остатка от деления на 10: n % 10.Проверить число на четность. Найти остаток от деления числа на 2. Для этого использовать оператор %. Если результат равен нулю, значит число четное. Иначе – нечетное.
-
-
-
-
-
Комментарии
<code>
, несколько строчек кода — в теги<pre><code>
...ваш код...</code></pre>
.