Урок №73. Оператори break і continue

  Юрій  | 

  Оновл. 18 Чер 2020  | 

 179

Хоча ви вже бачили оператор break в зв’язці з оператором switch, все ж він заслуговує більшої уваги, оскільки може використовуватися і з циклами. Оператор break призводить до завершення виконання циклів do, for та while.

break і switch

В контексті оператора switch оператор break зазвичай використовується в кінці кожного кейсу для його завершення (запобігаючи виконанню fall-through):

break і цикли

В контексті циклів оператор break використовується для передчасного завершення роботи циклу:

Ця програма дозволяє користувачеві ввести до 10 чисел і в кінці підраховує їх суму. Якщо користувач введе 0, то виконається break і цикл завершиться (не важливо, скільки чисел в цей момент встиг ввести користувач).

Зверніть увагу, що оператор break може використовуватися і для виходу з нескінченного циклу:

break і return

Початківці часто плутають або не розуміють різниці між операторами break і return. Оператор break завершує роботу switch-а або циклу, а виконання коду продовжується зі стейтменту, який знаходиться відразу ж після цього switch-а або циклу. Оператор return завершує виконання всієї функції, в якій знаходиться цикл, а виконання продовжується в точці після виклику функції:

Оператор continue

Оператор continue дозволяє відразу перейти в кінець тіла циклу, пропускаючи весь код, який знаходиться під ним. Це корисно в тих випадках, коли ми передчасно хочемо завершити поточну ітерацію. Наприклад:

Ця програма виведе всі числа від 0 до 19, які не діляться націло на 4.

У випадку з циклом for частина інкременту/декременту лічильника як і раніше виконується навіть після виконання continue (так як інкремент/декремент відбувається поза тілом циклу).

Будьте обережні при використанні оператора continue з циклами while або do while. Оскільки в цих циклах інкремент лічильників виконується безпосередньо в тілі циклу, то використання continue може привести до того, що цикл стане нескінченним! Наприклад:

Мається на увазі, що програма виведе всі числа від 0 до 9, за винятком 5. Але насправді:

0 1 2 3 4

А потім цикл стане нескінченним. Коли значенням count стає 5, то умова оператора if стане true, потім виконається continue і ми, минаючи виведення числа і інкремент лічильника, перейдемо до наступної ітерації. Змінна count так і не збільшиться. Як результат, в наступній ітерації змінна count як і раніше залишиться зі значенням 5, а оператор if, як і раніше, залишиться true, і цикл стане нескінченним.

А ось правильне рішення, але з використанням циклу do while:

Результат виконання програми:

0 1 2 3 4 6 7 8 9

break і continue

Багато підручників попереджають не використовувати оператори break та continue, оскільки вони призводять до безпідставного переміщення точки виконання програми по всьому коду, що ускладнює розуміння і слідування логіки виконання такого коду.

Проте, розумне використання операторів break і continue може поліпшити читабельність циклів в програмі, зменшивши при цьому кількість вкладених блоків і необхідність наявності складної логіки виконання циклів. Наприклад, розглянемо наступну програму:

Ця програма використовує змінну логічного типу даних для виходу з циклу, а також вкладений блок, який буде працювати тільки в тому випадку, якщо користувач не використовує символ виходу.

А ось читабельніша версія, але з використанням оператора break:

Тут (з одним оператором break) ми уникли використання як логічної змінної (а також розуміння того, навіщо вона і де використовується), так і оператора else з вкладеним блоком.

Зменшення кількості використовуваних змінних і вкладених блоків покращують читабельність і розуміння коду набагато краще, ніж оператори break або continue можуть завдати шкоди. З цієї причини я вважаю прийнятним їх розумне використання.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (3 оцінок, середня: 5,00 з 5)
Loading...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *