Javascript ветвления и циклы

1. Введение

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

  • Цикл — управляющая конструкция в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций.
  • Тело цикла — последовательность инструкций, предназначенная для многократного исполнения.
  • Итерация — единичное выполнение тела цикла.
  • Условие выхода — выражение, определяющее будет в очередной раз выполняться итерация, или цикл завершится.
  • Счётчик — переменная, хранящая текущий номер итерации. Цикл не обязательно содержит счётчик, и он не обязан быть один, условие выхода из цикла может зависеть от нескольких изменяемых в цикле переменных.

Исполнение любого цикла включает:

  • первоначальную инициализацию переменных цикла
  • проверку условия выхода
  • исполнение тела цикла
  • обновление переменной цикла на каждой итерации

Кроме того, большинство языков программирования предоставляют средства управления циклом, например, операторы завершения цикла, то есть выхода из цикла независимо от истинности условия выхода.

2. Цикл while

Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу, если условие с самого начала ложно.

Инструкция while создает цикл, который выполняет блок кода, пока условие проверки оценивается как true .

while (expression)  // код, тело цикла (statement) > 
  • Оператор while вычисляет expression перед каждой итерацией цикла.
  • Если expression оценивается как true , оператор while выполняет statement .
  • Если expression оценивается как false , выполнение цикла прерывается и скрипт продолжает выполнять инструкции после цикла while .

Блок-схема иллюстрирует цикл while .

while loop

let counter = 0; while (counter  10)  console.log('counter: ', counter); counter += 1; > 

Будем заполнять места в отеле до тех пор пока текущее количество клиентов не будет равно максимально допустимому.

let clientCounter = 18; const maxClients = 25; while (clientCounter  maxClients)  console.log(clientCounter); clientCounter += 1; > 

3. Цикл do. while

Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз.

Оператор do. while создает цикл, который выполняет блок кода до тех пор, пока expression не станет равным false .

В отличие от цикла while , цикл do. while всегда выполняет statement как минимум один раз, прежде чем он оценит expression .

do  // statement > while (expression); 

Внутри цикла нужно внести изменения в некоторую переменную, чтобы убедиться, что выражение равно false после итераций. В противном случае будет бесконечный цикл.

Блок-схема иллюстрирует цикл do-while

do. while loop

let password = ''; do  password = prompt('Введите пароль длиннее 4-х символов', ''); > while (password.length  5); console.log('Ввели пароль: ', password); 

4. Цикл for

Цикл со счётчиком — цикл, в котором некоторая переменная изменяет своё значение от заданного начального до конечного значения с некоторым шагом и для каждого значения этой переменной тело цикла выполняется один раз.

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

for (initialization; condition; post-expression)  // statements > 

Алгоритм исполнения цикла for :

  • Инициализация (initialization) — выражение инициализации выполняется один раз, когда начинается цикл. Используется для инициализации переменной-счетчика. Если используется ключевое слово let , переменная счетчика является локальной для цикла.
  • Условие (condition, test) — выражение, оцениваемое перед каждой итерацией цикла. Тело цикла выполняется только тогда, когда выражение условия принимает значение true . Цикл завершается, если значение будет false .
  • Тело (statements) — выполняется в случае удовлетворения условия.
  • Пост-выражение (post-expression) — выполняется после тела на каждой итерации цикла, но перед проверкой условия. Используется для обновления переменной-счетчика.

Переменные-счетчики, по традиции, называются буквами i/j/k .

const max = 10; for (let i = 0; i  max; i += 1)  console.log(i); > 

Посчитаем сумму чисел до определенного значения.

const target = 3; let sum = 0; for (let i = 0; i  target; i += 1)  sum += i; > console.log(sum); 

Вспомним про операцию a % b и выведем остаток от деления используя цикл.

const max = 10; for (let i = 0; i  max; i += 1)  console.log(`$max> % $i> = `, max % i); > 

5. Инструкции break и continue

5.1. break

Выйти из цикла можно не только при проверке условия, но и вообще в любой момент. Эту возможность предоставляет инструкция break . Она полностью прекращает выполнение цикла и передаёт управление на строку за его телом.

Специально прервем цикл на 5-й итерации.

for (let i = 0; i  10; i += 1)  if (i === 5)  console.log('Дошли до 5-й итерации, прерываем цикл!'); break; > > 

5.2. continue

Директива continue прерывает не весь цикл, а только выполнение текущей итерации. Её используют, если понятно, что на текущей итерации цикла делать больше нечего или вообще ничего делать не нужно и пора переходить на следующую итерацию.

/* * Используем цикл для вывода только нечетных чисел. * Для чётных i срабатывает continue, выполнение тела прекращается * и управление передаётся на следующую итерацию. */ const number = 10; for (let i = 0; i  number; i += 1)  if (i % 2 === 0)  continue; > console.log('Нечетное i: ', i); // 1, 3, 5, 7, 9 > 

results matching » «

No results matching » «

Источник

Читайте также:  What is array copy in java
Оцените статью