Оператори break, continue. Приклади застосування
Зміст
- 1. Оператор break. Особливості застосування. Загальна форма
- 2. Оператор break з міткою. Особливості застосування. Ключове слово goto
- 3. В яких операторах можна використовувати оператор break?
- 4. Оператор continue. Особливості застосування. Загальна форма
- 5. Оператор continue з міткою
- 6. В яких операторах можна застосовувати оператор continue?
- 7. Приклади розвʼязку задач, в яких використовується оператор break
- 8. Приклад використання оператора break з міткою
- 9. Приклади розвʼязку задач, в яких використовується оператор continue
- 10. Приклади розвʼязку задач, в яких використовується оператор continue з міткою
- 11. Які переваги дає використання операторів break та continue у програмах
- 12. Яка відмінність між оператором break з міткою та оператором continue з міткою
- Зв’язані теми
Пошук на інших ресурсах:
1. Оператор break. Особливості застосування. Загальна форма
Оператор break здійснює вихід з блоку фігурних дужок { } оператора циклу або оператора switch і передає управління наступному оператору в програмі. Якщо використовуються вкладені оператори, то оператор break здійснює вихід з самого внутрішнього оператора.
Загальна форма оператора break наступна
break;
2. Оператор break з міткою. Особливості застосування. Ключове слово goto
Оператор break з міткою може застосовуватись як аналог оператора goto, який є присутній в інших мовах програмування. В мові Java оператор goto не використовується. Однак, ключове слово goto є зарезервоване.
Загальна форма оператора break з міткою має наступний вигляд:
break labelName;
де labelName – це імʼя мітки, що відповідає кодовому блоку. Кодовий блок – це набір операторів, взятих у фігурні дужки { }.
Якщо у програмі зустрічається оператор break з міткою, то відбувається перехід до мітки, яка має бути реалізована у програмі.
Загальна форма оголошення мітки має наступний вигляд
labelName: { // послідовність операторів // ... }
де labelName – імʼя мітки. Імʼя мітки задається так само як і для будь-якого ідентифікатора.
3. В яких операторах можна використовувати оператор break?
Оператор break можна використовувати в усіх операторах циклу та операторі switch. Іншими словами, оператор break не може бути використаний за межами циклу або оператора switch.
4. Оператор continue. Особливості застосування. Загальна форма
Оператор continue застосовується в циклах. Оператор continue забезпечує перехід до наступної ітерації в циклі.
Загальна форма оператора continue має вигляд:
continue;
Частіш за все, оператор continue викликається при досягненні деякої умови в тілі циклу.
5. Оператор continue з міткою
Оператор continue може бути реалізований з міткою. У цьому випадку загальна форма оператора continue наступна
continue labelName;
де labelName – імʼя мітки, що відповідає циклу, в якому реалізовано виклики оператором continue.
6. В яких операторах можна застосовувати оператор continue?
Оператор continue можна застосовувати тільки в циклах. Іншими словами, оператор continue не можна застосовувати за межами циклу.
7. Приклади розвʼязку задач, в яких використовується оператор break
Приклад 1. Визначення наявності відʼємного числа в одновимірному масиві.
// Визначення наявності від'ємного числа в одновимірному масиві int A[] = { 3, 5, -7, 20, 39, 12 }; boolean f_is = false; for (int i=0; i<A.length; i++) if (A[i]<0) // чи є від'ємне число в масиві? { f_is = true; // якщо є, то рішення знайдено break; // вихід з циклу, подальше виконання циклу не має сенсу } if (f_is) System.out.println("Від\'ємне число є в масиві."); else System.out.println("Від\'ємного числа немає в масиві.");
Приклад 2. Визначення наявності заданого числа n у двовимірному масиві розміром 2×3. У даному прикладі оператор break викликається два рази. Перший раз, коли потрібно вийти з внутрішнього циклу, в якому змінна j є ітератором. Другий раз, коли потрібно вийти з зовнішнього циклу, в якому змінна i є ітератором.
// Визначення наявності від'ємного числа в одновимірному масиві int A[][] = { { 3, 5, -3 }, { 2, 8, 0 } }; boolean f_is = false; int n = 5; for (int i=0; i<A.length; i++) { for (int j=0; j<A[i].length; j++) if (A[i][j]==n) { f_is = true; // якщо число знайдене, то вихід з внутрішнього циклу break; // подальше виконання не має сенсу } if (f_is) break; // вихід з зовнішнього циклу } if (f_is) System.out.println("Число є в масиві."); else System.out.println("Числа немає в масиві.");
Якщо двовимірний масив є великим за розміром, то використання оператора break підвищує швидкість виконання циклу.
8. Приклад використання оператора break з міткою
Оператор break з міткою працює так само, як і оператор goto в інших мовах програмування. У мові Java оператор goto не використовується. Однак, ключове слово goto зарезервоване. Замість goto використовується оператор break з міткою з деякими обмеженнями.
Задано двовимірний масив цілих чисел. Визначити, чи є в масиві від’ємні елементи. Нижче наводиться фрагмент коду, що розв’язує дану задачу.
// Оператор break з міткою int[][] A = { { 2, 5, 8, }, { 3, -7, 4 }, { -2, 1, 3 }, { -4, 2, 3 } }; boolean f_is = false; // мітка з іменем M1 M1: for (int i=0; i<A.length; i++) for (int j=0; j<A[i].length; j++) { k++; if (A[i][j]<0) { f_is = true; break M1; // повне завершення циклу, перехід до наступного оператора // continue M1; - перехід до наступної ітерації зовнішнього циклу (лічильник i) } } if (f_is) System.out.println("В масиві A є додатні елементи."); else System.out.println("В масиві A додатніх елементів немає");
Перебір усіх елементів двовимірного масиву здійснюється у двох вкладених циклах. Перед викликом циклів розміщується мітка з іменем M1. Якщо у циклі нижнього рівня (лічильник j) зустрічається команда
break M1;
то відбувається вихід з обох циклів і перехід до наступного оператора програми:
... if (f_is) System.out.println("В масиві A є додатні елементи."); else System.out.println("В масиві A додатніх елементів немає");
Якщо мітку M1 розмістити перед оператором if, наприклад:
... M1: if (f_is) System.out.println("В масиві A є додатні елементи."); else System.out.println("В масиві A додатніх елементів немає");
то компілятор Java згенерує помилку
Unresolved compilation problem: The label M1 is missing
тому що, в операторі break з міткою, мітка може розміщуватись тільки перед циклом, в якому вона використовується.
9. Приклади розвʼязку задач, в яких використовується оператор continue
Приклад 1. Дано n. Написати фрагмент програмного коду, який обчислює наступну суму S = 2 + 4 + … + 2*n.
Існує багато способів рішення даної задачі. У даному випадку задача розвʼязується з використанням оператора continue.
int s=0; int n; n = 10; for (int i=1; i<=2*n; i++) { if (i%2==1) continue; // непарні значення i пропустити s = s+i; // додавати тільки парні значення i }
У рядку
if (i%2==1) continue;
перевіряється значення i. Якщо i непарне (i%2==1), то відбувається перехід на наступну ітерацію з допомогою оператора continue. Таким чином, додаються тільки парні значення i.
Приклад 2. У заданому масиві чисел усі додатні елементи помножити на 2. Для рішення використовується оператор continue.
// використання оператора continue double[] A = { 3.8, -2.5, 4.6, -1.8, -2.2, 5.6, 1.5 }; // у масиві A усі додатні елементи помножити на 2 for (int i=0; i<A.length; i++) { // якщо елемент масиву від'ємний, то перехід до наступної ітерації if (A[i]<0) continue; // інакше, помножити цей елемент на 2 A[i] = A[i] * 2; }
10. Приклади розвʼязку задач, в яких використовується оператор continue з міткою
Приклад 1. Демонструється використання оператора continue з міткою, яка розміщена у вкладеному циклі (внутрішньому циклі). Мітка має імʼя loop. У прикладі знаходиться сума елементів, що лежать на головній діагоналі матриці A розміру 5*5.
// додати елементи матриці, що розміщені на головній діагоналі // в цих елементах позиція в рядку i рівна позиції в стовпці j int n = 5; // розмірність матриці double A[][] = { { 3.2, 4.1, 2.8, 3.4, 3.4 }, { 1.3, 4.3, 5.5, 0.4, 1.4 }, { 3.4, 4.7, 2.1, 3.4, 3.4 }, { 6.2, 4.1, 2.6, 2.4, 2.4 }, { 0.7, 7.1, 3.8, 1.4, 4.4 } }; double summ = 0; // у внутрішньому циклі оголошується мітка з іменем loop for (int i=0; i<n; i++) loop: for (int j=0; j<n; j++) { // якщо не головна діагональ, то перехід на наступну ітерацію if (i!=j) continue loop; summ += A[i][j]; }
Приклад 2. Демонструється використання оператора continue з міткою, яка розміщена на зовнішньому (верхньому) циклі. У програмі визначається кількість рядків масиву A, в яких є відʼємні елементи.
// додати елементи матриці, що розміщені на головній діагоналі // в цих елементах позиція в рядку i рівна позиції в стовпці j int n = 0; // к-сть рядків, в яких є від'ємні елементи double A[][] = { { 3.2, -4.1, 2.8, 3.4, 3.4, 3.6, 4.8 }, { 1.3, 4.3, 5.5, 0.4, 1.4, 2.0, 1.0 }, { 3.4, -4.7, 2.1, -3.4, 3.4, 3.0, 5.5 }, { 6.2, 4.1, 2.6, 2.4, 2.4, 1.8, 1.9 }, { -0.7, 7.1, 3.8, 1.4, 4.4, 2.3, 4.0 } }; // оголошується мітка з іменем nextRow nextRow: for (int i=0; i<A.length; i++) for (int j=0; j<A[i].length; j++) { // якщо знайдено від'ємний елемент, то перехід на наступний рядок масиву if (A[i][j]<0) { n++; // збільшити лічильник continue nextRow; } } System.out.println("n = " + n); // n = 3
Перебір усіх елементів масиву здійснюється з допомогою двох вкладених циклів. За номер рядка відповідає змінна i, за номер стовпця відповідає змінна j.
Якщо в i-му рядку масиву знайдено хоча б один відʼємний елемент, то подальший перебір елементів цього рядка не має сенсу. Потрібно переходити на наступний рядок. Саме тому, тут викликається оператор continue з міткою, яка розміщується на верхньому (зовнішньому циклі). Мітка має назву nextRow.
11. Які переваги дає використання операторів break та continue у програмах
Використання break та continue дає наступні переваги:
- у випадку виконання циклічного процесу не має потреби виконувати зайві ітерації якщо знайдене шукане значення або досягнуто потрібного результату. Це дає підвищення швидкості виконання програми;
- при передчасному припиненні циклічного процесу не порушується структура коду.
12. Яка відмінність між оператором break з міткою та оператором continue з міткою
Оператори break з міткою та continue з міткою можуть використовуватись тільки тоді, коли є вкладені цикли. Оператор break з міткою здійснює повний вихід з усіх вкладених циклів. Оператор continue з міткою здійснює вихід з поточного вкладеного циклу і перехід до наступної ітерації зовнішнього циклу.
Зв’язані теми
- Оператор вибору switch. Вкладені оператори switch
- Цикли for, while, do..while. Приклади використання. Розв’язки задач з використанням циклів