1. Вступ
Часто буває, що вам не потрібно виконувати всі ітерації циклу до кінця, а слід вийти з нього достроково — наприклад, щойно ви знайдете потрібний елемент. В інших випадках потрібно пропустити частину роботи й перейти до наступного кроку (наприклад, ви прочитали дані й хочете пропустити їх оброблення). Це й є керування потоком виконання в межах циклу.
Оператори break і continue у C# створено саме для цього. Розберімося, як вони працюють і для чого стануть у пригоді в реальних завданнях.
2. Оператор break: «Стоп, машина!»
Теорія і синтаксис
Оператор break використовується для негайного виходу з циклу, де б ви не перебували в його тілі. Щойно виконання програми доходить до break, цикл одразу завершує роботу, і виконання продовжується з першого рядка коду після циклу.
while (умова)
{
if (якась-умова)
{
break;
}
// інший код циклу
}
Те саме працює і для for, і для do-while:
for (int i = 0; i < 10; i++)
{
if (якась-умова)
{
break;
}
// інший код циклу
}
Приклад 1: перевірка числа на простоту
Число є простим, якщо воно ділиться тільки на 1 і на себе. Нам потрібно перевірити число на простоту: перебрати всі потенційні дільники від 2 до n-1. Якщо з’ясувалося, що наше число ділиться на дільник, то далі перевіряти не потрібно — число непросте! Можна завершувати цикл.
Приклад:
int number = 111;
bool found = false;
for (int i = 2; i < number; i++)
{
if (number % i == 0)
{
found = true;
Console.WriteLine("Знайдено дільник " + i );
break; // Зупиняємо цикл — більше нічого шукати не потрібно!
}
}
if (!found)
{
Console.WriteLine("Дільника не знайдено — число просте.");
}
Приклад 2: перевірка введення користувача
Напишімо невеликий застосунок, наприклад, інтерактивну анкету для збирання даних:
while (true)
{
Console.Write("Введіть свій вік: ");
string input = Console.ReadLine();
int age;
if (int.TryParse(input, out age) && age > 0)
{
Console.WriteLine($"Чудово! Ваш вік: {age}");
break; // Дані введено коректно — час завершувати цикл!
}
else
{
Console.WriteLine("Помилка! Введіть коректний додатний вік.");
}
}
Навіщо це потрібно:
Іноді потрібно виконувати цикл нескінченно (або дуже довго), поки користувач не введе коректні дані. Щойно відбудеться те, що нас влаштовує — застосовуємо break і остаточно виходимо з циклу.
3. Оператор continue: «Наступний, будь ласка!»
Теорія і синтаксис
На відміну від break, оператор continue не завершує весь цикл, а лише перериває поточну ітерацію: усе, що розміщено після continue у тілі циклу, не виконується — відбувається перехід до наступної ітерації.
for (int i = 0; i < 10; i++)
{
if (умова)
{
continue;
}
// ця частина виконається лише якщо continue не спрацював
}
Приклад 3: пропуск парних чисел
Уявіть, що вам потрібно вивести тільки непарні числа з діапазону. Парні потрібно пропускати.
for (int i = 1; i <= 10; i++)
{
if (i % 2 == 0)
{
continue; // якщо число парне — пропускаємо все, що нижче!
}
Console.WriteLine("Непарне число: " + i);
}
Що відбувається:
Коли i = 2, 4, 6… цикл зустрічає continue і одразу перескакує до наступної ітерації, не виконуючи Console.WriteLine.
Покрокова візуалізація роботи:
| i | i % 2 == 0 | Дія |
|---|---|---|
| 1 | false | виведення, continue немає |
| 2 | true | continue, виведення немає |
| 3 | false | виведення, continue немає |
| 4 | true | continue, виведення немає |
| ... | ... | ... |
Оператори break і continue використовують дуже часто — фактично в кожному другому циклі. Вам сподобається з ними працювати.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ