Управляющие структуры
Условный переход, ветвление и циклы
Условный переход, ветвление и циклы
Без управляющих структур невозможна автоматизация решения задач.
Оператор условного перехода (от англ. если)
var n = /* какое-то число */
if (n > 0) {
console.log('n — положительное число');
}
Оператор if
указывает альтернативные варианты выполнения программы, создавая точку разветвления (подобно развилке на дороге).
Блок из одного выражения можно записать без фигурных скобок:
if (n > 0)
console.log('n — положительное число');
if (n >= 0) {
console.log('n — неотрицательное число');
} else {
console.log('n — отрицательное число');
}
if (n == 0) {
console.log('n равно нулю');
} else if (n > 0) {
console.log('n — положительное число');
} else {
console.log('n — отрицательное число');
}
Оператор перехода по сопоставлению (от англ. переключатель)
var weekday = /* строка с днем недели */
switch (weekday) {
case 'понедельник':
case 'вторник':
case 'среда':
case 'четверг':
case 'пятница':
console.log('Рабочий день');
break;
case 'суббота':
case 'воскресение':
console.log('Выходной день');
break;
default:
console.log('Неизвестный день');
}
break
воскресение
и Воскресение
— разные строки)
Цикл с предусловием (от англ. до тех пор пока)
var n = 10;
while (n > 0) {
console.log(n);
n -= 1;
}
Цикл while
выполняется, пока значение в круглых скобках истинно.
Самый простой способ «повесить» браузер или интерпретатор:
while (true) {}
Если Вы попробовали так написать, завершите процесс средствами операционной системы и возвращайтесь :)
Цикл с постусловием (от англ. делать ... до тех пор пока)
var n = 10;
do {
console.log(n);
n -= 1
} while(n > 0);
Похож на while(...) { ... }
, но блок выполняется как минимум один раз.
Цикл с параметром (от англ. для [всех значений])
for (var i = 0; i < 10; i++) {
console.log(i);
}
В консоли появятся числа от 0 до 9 включительно.
В круглых скобках записываются три выражения:
while
)
Итерация — это одно выполнение блока цикла
for (var i = 0; i < 10; i++) { /*...*/}
Инициализация: объявить переменную i
, присвоить значение 0
Условие завершения: выполнять блок, пока i
меньше %%10%%
Продвижение: прибавлять единицу к i
в конце каждого шага
Еще более простой способ «повесить» браузер или интерпретатор:
for (;;) {}
Вычислить факториал произвольного числа n
по формуле:
$$n! = 1 \cdot 2 \cdot \ldots \cdot n$$
var n = 10; // замените на любое положительное число
var f = 1;
for (var i = 2; i <= n; i++)
f = f * i;
console.log('%s! = %s', n, f);
Осторожно! Факториал — очень быстрорастущая функция.
Дано количество баллов от %%0%% до %%100%%.
Вычислить оценку по правилам:
var score = 81; // заменить на число от 0 до 100
if (score >= 85)
console.log('отлично');
else if (score >= 75)
console.log('хорошо');
else if (score >= 60)
console.log('удовлетворительно');
else
console.log('неудовлетворительно')
Вычислить сумму всех чисел от %%0%% до %%100%%, кратных %%3%%.
var sum = 0;
for (var i = 0; i <= 100; i++) {
if (i % 3 == 0) // условие кратности 3
sum += i;
}
console.log(sum);
Как оптимизировать это решение?