Цикл у мовах програмування — це функція, яка полегшує виконання набору інструкцій/функцій багаторазово, поки якась умова оцінюється як істинна. Java надає три способи виконання циклів. Хоча всі способи забезпечують однакову базову функціональність, вони відрізняються синтаксисом і часом перевірки умов.
java надає три типи умовних операторів, цей другий тип є оператором циклу.
- цикл while: Цикл while — це оператор потоку керування, який дозволяє багаторазово виконувати код на основі заданої логічної умови. Цикл while можна розглядати як повторюваний оператор if.
Синтаксис:
while (boolean condition) { loop statements... }>
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > int> i=> 0> ;> > while> (i<=> 10> )> > {> > System.out.println(i);> > i++;> > }> > }> }> |
>
>Вихід
0 1 2 3 4 5 6 7 8 9 10>
- Блок-схема:
- Цикл While починається з перевірки логічної умови. Якщо воно оцінюється як істина, тоді виконуються оператори тіла циклу, інакше виконується перший оператор, наступний за циклом. З цієї причини його також називають Вхідний контур контролю
- Як тільки умова оцінюється як істинна, оператори в тілі циклу виконуються. Зазвичай оператори містять значення оновлення для змінної, що обробляється для наступної ітерації.
- Коли умова стає хибною, цикл завершується, що означає кінець його життєвого циклу.
- для циклу: Цикл for забезпечує стислий спосіб запису структури циклу. На відміну від циклу while, оператор for використовує ініціалізацію, умову та приріст/зменшення в одному рядку, таким чином забезпечуючи коротшу структуру циклу, яку легко налагодити.
Синтаксис:
for (initialization condition; testing condition;increment/decrement) { statement(s) }>
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > for> (> int> i=> 0> ;i<=> 10> ;i++)> > {> > System.out.println(i);> > }> > }> }> |
>
>Вихід
0 1 2 3 4 5 6 7 8 9 10>
- Блок-схема:
- Умова ініціалізації: тут ми ініціалізуємо використовувану змінну. Він позначає початок циклу for. Можна використовувати вже оголошену змінну або оголошувати змінну, лише локально для циклу. Умова перевірки: використовується для перевірки умови виходу з циклу. Він повинен повертати логічне значення. Це також є Петля контролю входу оскільки умова перевіряється перед виконанням операторів циклу. Виконання оператора: як тільки умова оцінюється як істинна, оператори в тілі циклу виконуються. Інкремент/декремент: використовується для оновлення змінної для наступної ітерації. Завершення циклу: коли умова стає хибною, цикл завершується, позначаючи кінець його життєвого циклу.
- робити поки: Цикл do while подібний до циклу while з тією лише різницею, що він перевіряє умову після виконання операторів, і тому є прикладом Вийти з циклу керування.
Синтаксис:
do { statements.. } while (condition);>
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > int> i=> 0> ;> > do> > {> > System.out.println(i);> > i++;> > }> while> (i<=> 10> );> > }> }> |
>
архітектура linux
>Вихід
0 1 2 3 4 5 6 7 8 9 10>
- Блок-схема:
- Цикл do while починається з виконання оператора(ів). Перевірка жодного стану з першого разу не проводиться.
- Після виконання операторів і оновлення значення змінної умова перевіряється на істинне чи хибне значення. Якщо воно оцінюється як істина, починається наступна ітерація циклу.
- Коли умова стає хибною, цикл завершується, що означає кінець його життєвого циклу.
- Важливо відзначити, що цикл do-while виконає свої оператори принаймні один раз перед перевіркою будь-якої умови, і тому є прикладом циклу керування виходом.
Підводні камені петель
- Нескінченний цикл: одна з найпоширеніших помилок під час впровадження будь-якого циклу полягає в тому, що він може ніколи не вийти, тобто цикл виконується протягом нескінченного часу. Це трапляється, коли умова з якоїсь причини не виконується. Приклади: нескінченний цикл for:
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > for> (;;) {> > }> > }> }> |
>
>
нескінченний цикл while:
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > while> (> true> )> > {> > // statement> > }> > > }> }> |
>
>
Java
//Java program to illustrate various pitfalls.> public> class> LooppitfallsDemo> {> > public> static> void> main(String[] args)> > {> > // infinite loop because condition is not apt> > // condition should have been i>0.>> > for> (> int> i => 5> ; i !=> 0> ; i -=> 2> )> > {> > System.out.println(i);> > }> > int> x => 5> ;> > // infinite loop because update statement> > // is not provided.> > while> (x ==> 5> )> > {> > System.out.println('In the loop');> > }> > }> }> |
>
>
Ще один підводний камінь полягає в тому, що ви можете додавати щось у свій об’єкт колекції через цикл, і у вас може вичерпатися пам’ять. Якщо ви спробуєте виконати наведену нижче програму, через деякий час буде викинуто виключення браку пам’яті.
Java
//Java program for out of memory exception.> import> java.util.ArrayList;> public> class> Integer1> {> > public> static> void> main(String[] args)> > {> > ArrayList ar => new> ArrayList();> > for> (> int> i => 0> ; i { ar.add(i); } } }> |
>
>
Вихід:
Exception in thread 'main' java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.ArrayList.grow(Unknown Source) at java.util.ArrayList.ensureCapacityInternal(Unknown Source) at java.util.ArrayList.add(Unknown Source) at article.Integer1.main(Integer1.java:9)>
Вкладений цикл:
Вкладений цикл означає оператор циклу всередині іншого оператора циклу.
Існують різні комбінації використання циклу для петля, поки петля, do-while петля.
Приклад 1 Вкладений цикл for
Java
файли Linux
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > for> (> int> i => 0> ; i <> 3> ; i++){> > for> (> int> j => 0> ; j <> 2> ; j++){> > System.out.println(i);> > }> > System.out.println();> > }> > }> }> |
>
>Вихід
0 0 1 1 2 2>
Приклад 2. Вкладений цикл while
Java
import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> i => 1> , j => 1> ;> > while> (i <=> 3> ) {> > while> (j <=> 3> ) {> > System.out.print(j);> > j++;> > }> > i++;> > System.out.println(> ''> );> > j => 1> ;> > }> > }> }> |
>
>Вихід
123 123 123>
Приклад 3 Вкладений цикл do while
Java
перший нащадок css
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> row => 1> , column => 1> ;> > int> x;> > do> {> > x => 4> ;> > do> {> > System.out.print(> ''> );> > x--;> > }> while> (x>= рядок);> > column => 1> ;> > do> {> > System.out.print(column +> ' '> );> > column++;> > }> while> (column <=> 5> );> > System.out.println(> ' '> );> > row++;> > }> while> (row <=> 5> );> > }> }> |
>
>Вихід
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5>
Приклад 4 Вкладений цикл while і for
Java
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > int> weeks => 3> ;> > int> days => 7> ;> > int> i => 1> ;> > // outer loop> > while> (i <= weeks) {> > System.out.println(> 'Week: '> + i);> > // inner loop> > for> (> int> j => 1> ; j <= days; ++j) {> > System.out.println(> ' Days: '> + j);> > }> > ++i;> > }> > }> }> |
>
>Вихід
Week: 1 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 2 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7 Week: 3 Days: 1 Days: 2 Days: 3 Days: 4 Days: 5 Days: 6 Days: 7>