Проверяет понимание работы оператора break во вложенных циклах и его влияния на поток выполнения.
Оператор break в языках программирования, таких как JavaScript, Python или Java, завершает выполнение только самого внутреннего цикла, в котором он вызван. Это означает, что если у вас есть два вложенных цикла, break внутри внутреннего цикла прервет только его, а внешний цикл продолжит работу.
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) break; // выходит только из цикла по j
console.log(i, j);
}
}
// Вывод: (0,0), (1,0), (2,0)Здесь break прерывает внутренний цикл при j === 1, но внешний цикл продолжает выполняться для всех i.
Чтобы выйти из всех вложенных циклов сразу, можно использовать метки (labels). Метка ставится перед внешним циклом, и break с этой меткой прерывает весь помеченный блок.
outerLoop: for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) break outerLoop; // выходит из обоих циклов
console.log(i, j);
}
}
// Вывод: (0,0)Метки поддерживаются в JavaScript, Java, C/C++ и некоторых других языках, но не во всех (например, в Python меток нет, там используются флаги или исключения).
Если метки не поддерживаются или нежелательны, можно использовать булеву переменную-флаг для управления выходом.
let shouldBreak = false;
for (let i = 0; i < 3 && !shouldBreak; i++) {
for (let j = 0; j < 3; j++) {
if (j === 1) {
shouldBreak = true;
break;
}
console.log(i, j);
}
}
// Вывод: (0,0)Этот метод работает во всех языках и часто используется для читаемости.
Используйте break без меток для выхода из одного цикла, а для прерывания всех вложенных циклов применяйте метки или флаги. Выбор зависит от языка и стиля кода, но метки делают код более лаконичным, а флаги — более универсальными.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию