Smyčkování v programovacích jazycích je funkce, která usnadňuje provádění sady instrukcí/funkcí opakovaně, zatímco se některá podmínka vyhodnotí jako pravdivá. Java poskytuje tři způsoby provádění smyček. Zatímco všechny způsoby poskytují podobnou základní funkčnost, liší se svou syntaxí a dobou kontroly stavu.
java poskytuje tři typy podmíněných příkazů, tento druhý typ je příkaz smyčky.
- while smyčka: Smyčka while je příkaz toku řízení, který umožňuje opakované provádění kódu na základě dané booleovské podmínky. Smyčku while si lze představit jako opakující se příkaz if.
Syntaxe:
while (boolean condition) { loop statements... }>
Jáva
/*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++;> > }> > }> }> |
>
>Výstup
0 1 2 3 4 5 6 7 8 9 10>
- Vývojový diagram:
- Zatímco smyčka začíná kontrolou booleovské podmínky. Pokud je vyhodnocena jako true, pak jsou provedeny příkazy těla smyčky, jinak se provede první příkaz následující po cyklu. Z tohoto důvodu se také nazývá Vstupní regulační smyčka
- Jakmile je podmínka vyhodnocena jako pravdivá, provedou se příkazy v těle smyčky. Normálně příkazy obsahují aktualizační hodnotu pro proměnnou zpracovávanou pro další iteraci.
- Když se podmínka stane nepravdivou, smyčka se ukončí, což znamená konec jejího životního cyklu.
- pro smyčku: for loop poskytuje stručný způsob zápisu struktury smyčky. Na rozdíl od smyčky while využívá příkaz for inicializaci, podmínku a přírůstek/snižování na jednom řádku, čímž poskytuje kratší, snadno laditelnou strukturu smyčkování.
Syntax:
for (initialization condition; testing condition;increment/decrement) { statement(s) }>
Jáva
/*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);> > }> > }> }> |
normalizace v databázi
>
>Výstup
0 1 2 3 4 5 6 7 8 9 10>
- Vývojový diagram:
- Inicializační podmínka: Zde inicializujeme používanou proměnnou. Označuje začátek cyklu for. Lze použít již deklarovanou proměnnou nebo lze deklarovat proměnnou, pouze lokálně do smyčky. Testovací podmínka: Používá se pro testování výstupní podmínky pro smyčku. Musí vrátit booleovskou hodnotu. To je také Vstupní řídicí smyčka protože podmínka je zkontrolována před provedením příkazů smyčky. Provádění příkazu: Jakmile je podmínka vyhodnocena jako pravdivá, provedou se příkazy v těle smyčky. Increment/Decrement: Používá se pro aktualizaci proměnné pro další iteraci. Ukončení smyčky: Když se podmínka stane nepravdivou, smyčka se ukončí a značí konec jejího životního cyklu.
- dělat, zatímco: smyčka do while je podobná cyklu while s jediným rozdílem, že kontroluje podmínku po provedení příkazů, a proto je příkladem Ukončete ovládací smyčku.
Syntax:
do { statements.. } while (condition);>
Jáva
řetězec pro char v Javě
/*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> );> > }> }> |
>
>Výstup
0 1 2 3 4 5 6 7 8 9 10>
- Vývojový diagram:
- smyčka do while začíná provedením příkazu(ů). Napoprvé nedochází ke kontrole žádného stavu.
- Po provedení příkazů a aktualizaci hodnoty proměnné je podmínka zkontrolována na hodnotu true nebo false. Pokud je vyhodnocena jako true, začne další iterace smyčky.
- Když se podmínka stane nepravdivou, smyčka se ukončí, což znamená konec jejího životního cyklu.
- Je důležité poznamenat, že smyčka do-while provede své příkazy alespoň jednou před kontrolou jakékoli podmínky, a proto je příkladem řídicí smyčky ukončení.
Úskalí smyček
- Nekonečná smyčka: Jednou z nejčastějších chyb při implementaci jakéhokoli druhu smyčky je, že se nemusí nikdy ukončit, to znamená, že smyčka běží nekonečně dlouho. K tomu dochází, když podmínka z nějakého důvodu selže. Příklady: Nekonečná smyčka for :
Jáva
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main(String[] args)> > {> > for> (;;) {> > }> > }> }> |
>
>
nekonečná smyčka while:
Jáva
/*package whatever //do not write package name here */> import> java.io.*;> class> GFG {> > public> static> void> main (String[] args) {> > while> (> true> )> > {> > // statement> > }> > > }> }> |
>
>
Jáva
//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');> > }> > }> }> |
>
>
Dalším úskalím je, že můžete něco přidávat do objektu sbírky pomocí smyčky a může vám dojít paměť. Pokud se pokusíte spustit níže uvedený program, po nějaké době bude vyvolána výjimka nedostatku paměti.
Jáva
//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); } } }> |
jak blokovat reklamy na youtube na android
>
>
Výstup:
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)>
Vnořená smyčka:
Vnořená smyčka znamená příkaz smyčky uvnitř jiného příkazu smyčky.
Existují různé kombinace použití smyčky pro smyčka, zatímco smyčka, dělat, zatímco smyčka.
Příklad 1 Vnořená smyčka for
Jáva
/*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();> > }> > }> }> |
gb vs mb
>
>Výstup
0 0 1 1 2 2>
Příklad 2 Vnořená smyčka while
Jáva
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> ;> > }> > }> }> |
>
>Výstup
multithreading v Javě
123 123 123>
Příklad 3 Vnořená smyčka do while
Jáva
/*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>= řádek);> > column => 1> ;> > do> {> > System.out.print(column +> );> > column++;> > }> while> (column <=> 5> );> > System.out.println(> );> > row++;> > }> while> (row <=> 5> );> > }> }> |
>
>Výstup
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>
Př.4 Vnořená smyčka while a for
Jáva
/*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;> > }> > }> }> |
>
>Výstup
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>