Инструкция break
Иногда не нужно проходить весь цикл до конца. Если вы что-то ищете и уже нашли, продолжать поиск незачем. Инструкция break немедленно завершает цикл, и программа продолжает работу с кода после цикла. Вы уже знаете break по switch, где он завершает switch. В цикле он завершает цикл.
Найдём первое число, начиная со 100, которое делится на 7. Цикл выводит каждое проверяемое число, чтобы вы видели, где он остановится:
for (int number = 100; number < 200; number++) {
printf("Проверяю %d\n", number);
if (number % 7 == 0) {
printf("Первое число, кратное 7: %d\n", number);
break;
}
}
printf("Готово\n");Проверяю 100
Проверяю 101
Проверяю 102
Проверяю 103
Проверяю 104
Проверяю 105
Первое число, кратное 7: 105
ГотовоУсловие number % 7 == 0 истинно, когда остаток от деления на 7 равен 0. Когда цикл доходит до 105, условие истинно. Программа выводит результат, и break завершает цикл: числа начиная со 106 больше не проверяются, а программа переходит к строке, которая выводит Готово. Без break цикл дошёл бы до 199 и вывел все 14 чисел, кратных 7, а не только первое.
Почти всегда break стоит внутри if. Сам по себе он завершил бы цикл уже на первой итерации. break одинаково работает в циклах while и for.
Часто после цикла нужно знать и то, что вы нашли. Тогда сохраните это в переменной, созданной перед циклом. Каково наименьшее целое число, квадрат которого больше 500?
int found = 0;
for (int n = 1; n <= 100; n++) {
if (n * n > 500) {
found = n;
break;
}
}
printf("Наименьшее: %d\n", found);
printf("Его квадрат: %d\n", found * found);Наименьшее: 23
Его квадрат: 52922 * 22 равно 484, этого недостаточно, а 23 * 23 равно 529. Благодаря break в found остаётся первое достаточно большое число. Без break цикл продолжил бы работу, сохранил бы и все следующие числа, и found в итоге стала бы равна 100.
Задание
- 1
В игре у вас 200 монет, и каждый день вы зарабатываете ещё 50. Вы копите на меч, который стоит 590 монет. Цикл в редакторе выводит, сколько у вас монет в каждый из следующих 14 дней. В цикле, под строкой, которая выводит монеты, добавьте
if, который выводитДень 8: можно купить меч!(с номером дня), когда у вас не меньше 590 монет. Запустите программу: сообщение появляется в каждый день, начиная с 8-го, а вам нужен только первый такой день. - 2
Добавьте
breakв блокif, после вывода, чтобы цикл остановился в первый день, когда можно купить меч. Теперь вывод заканчивается строкамиДень 8, монет: 600иДень 8: можно купить меч!.