Smyčky v programování umožňují, aby se sada instrukcí spouštěla vícekrát na základě podmínky. V Javě existují tři typy smyček, které jsou vysvětleny níže:
1. pro smyčku
Cyklus for se používá, když známe počet iterací (víme, kolikrát chceme úlohu opakovat). Příkaz for obsahuje podmínku inicializace a přírůstek/snižování na jednom řádku.
Příklad: Níže uvedený Java program ukazuje cyklus for, který tiskne čísla od 0 do 10 na jeden řádek.
Java
// Java program to demonstrates the working of for loop import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i <= 10; i++) { System.out.print(i + ' '); } } }
Výstup
0 1 2 3 4 5 6 7 8 9 10
Syntax:
for (inicializace; podmínka; zvýšení/snížení) {
// kód, který se má provést
}
Obrázek níže ukazuje vývojový diagram cyklu for:
Vývojový diagram for -loop- 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 proměnnou deklarovat pouze jako lokální smyčku.
- Podmínka testování: Používá se pro testování výstupní podmínky pro smyčku. Musí vrátit booleovskou hodnotu. Je to také vstupní řídicí smyčka, protože podmínka je kontrolována před provedením příkazů smyčky.
- Provedení výpisu : Jakmile je podmínka vyhodnocena jako pravdivá, provedou se příkazy v těle smyčky.
- Zvýšení/ snížení : 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.
Poznámka : Existuje další forma cyklu for známá jako Vylepšená smyčka for nebo (pro každou smyčku).
vyhledávací algoritmy
Vylepšená smyčka for (pro každou)
Tato smyčka se používá k iteraci přes pole nebo kolekce.
Příklad : Níže uvedený Java program demonstruje Enhanced for smyčku (pro každou smyčku) pro iteraci polem a tisk jmen.
Java// Java program to demonstrate // the working of for each loop import java.io.*; class Geeks { public static void main(String[] args) { String[] names = { 'Sweta' 'Gudly' 'Amiya' }; for (String name : names) { System.out.println('Name: ' + name); } } }
Výstup
Name: Sweta Name: Gudly Name: Amiya
Syntax:
for (proměnná dataType: arrayOrCollection) {
// kód, který se má provést
}
2. zatímco smyčka
Smyčka while se používá, když chceme zkontrolovat podmínku před provedením těla smyčky.
Příklad: Níže uvedený program Java ukazuje smyčku while, která tiskne čísla od 0 do 10 na jeden řádek.
Java// Java program to demonstrates // the working of while loop import java.io.*; class Geeks { public static void main(String[] args) { int i = 0; while (i <= 10) { System.out.print(i + ' '); i++; } } }
Výstup
0 1 2 3 4 5 6 7 8 9 10
Syntax:
while (condition) {
// kód, který se má provést
}
Níže uvedený obrázek ukazuje vývojový diagram smyčky while:
prohlášení bash if
Vývojový diagram smyčky while- Zatímco smyčka začíná kontrolou booleovské podmínky. Pokud je vyhodnocena jako true, 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.
3. do-while Loop
Smyčka do-while zajišťuje provedení bloku kódu alespoň jednou před kontrolou stavu.
Příklad : Níže uvedený program Java demonstruje smyčku do-while, která tiskne čísla od 0 do 10 na jeden řádek.
Java// Java program to demonstrates // the working of do-while loop import java.io.*; class Geeks { public static void main(String[] args) { int i = 0; do { System.out.print(i + ' '); i++; } while (i <= 10); } }
Výstup
0 1 2 3 4 5 6 7 8 9 10
Syntax:
udělat {
// kód, který se má provést
} while (podmínka);
Níže uvedený obrázek ukazuje vývojový diagram smyčky do-while:
Vývojový diagram smyčky do-while- 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 výstupní řídicí smyčky.
Nejčastější chyby ve smyčce a jak se jim vyhnout
Pokud se smyčky nepoužívají správně, mohou představovat úskalí a chyby, které ovlivňují čitelnost a funkčnost kódu. Níže jsou uvedena některá běžná úskalí smyček:
1. Nekonečné smyčky
Toto je jedna z nejčastějších chyb při implementaci jakéhokoli druhu smyčky, protože se nemusí nikdy ukončit, protože smyčka běží nekonečně dlouho. K tomu dochází, když podmínka z nějakého důvodu selže.
Typy nekonečných smyček:
- nekonečné pro smyčku
- nekonečné zatímco Loop
Příklad: Zde oba příklady demonstrují nekonečné smyčky.
Infinite For Loop// Java program to demonstrate // the infinite for loop import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i < 5; i--) { System.out.println( 'This loop will run forever'); } } }
Infinite While Loop // Java Program to demonstrate // the infinite while loop import java.io.*; class Geeks { public static void main(String[] args) { while(true) { System.out.println( 'Basic example of infinte loop'); } } }
výstup: Když spustíte oba výše uvedené kódy, zobrazí se chyba TLE (Time Limit Exceeded).
2. Chyby Off-by-One
Chyby Off-by-One jsou způsobeny, když smyčka běží o jeden nebo o jeden méně, než jste chtěli. V zásadě se to stane, když není správně nastavena podmínka smyčky.
Příklad : Níže uvedený program Java demonstruje chybu Off-by-One, kde se smyčka spustí 6krát a my jsme očekávali, že se spustí 5krát.
Java// Java Program to demonstrates Off-by-One Errors import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i <= 5; i++) { System.out.print(i + ' '); } } }
3. Úprava proměnných smyčky uvnitř smyčky
Když změníme podmínku smyčky (jako i) uvnitř smyčky, může to způsobit, že smyčka přeskočí určité iterace nebo se bude chovat způsobem, který jsme neočekávali. To může vést k chybám nebo neočekávanému chování.
java řetězec pole
Příklad : Níže uvedený Java program demonstruje úpravu proměnné smyčky uvnitř smyčky, která způsobí, že smyčka přeskakuje určité iterace a chová se neočekávaně.
Java// Java program demonstrates // modification in i variable import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i < 5; i++) { if (i == 2) { // Modifies the loop variable and skips // the next iteration i++; } System.out.println(i); } } }
4. Tělo prázdné smyčky
Prázdné tělo smyčky se objeví, když je smyčka zapsána k iteraci, ale neprovádí se uvnitř smyčky žádné operace. Spouštění smyčky bez jakýchkoli užitečných operací uvnitř může být matoucí.
Příklad: Níže uvedený program Java ukazuje tělo prázdné smyčky.
Java// Java program to demonstrates Empty loop body import java.io.*; class Geeks { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // Empty body no operations } } }
Pro toto nebude generován žádný výstup, protože tělo smyčky je prázdné.
Souhrnná tabulka
Typ smyčky | Kdy použít | Kontrola stavu | Provede alespoň jednou? |
|---|---|---|---|
pro smyčku | Když chcete přesné iterace | Před tělem smyčky Nazývá se Entry-controlled. | žádný jak inicializovat pole v Javě |
zatímco smyčka | Když potřebujete nejprve zkontrolovat stav. | Před tělem smyčky Nazývá se Entry-controlled. | žádný |
smyčka do-while | Když potřebujete alespoň jednou běhat | Po těle smyčky Říká se tomu Exit-controlled. | Ano |
pro každou smyčku | Když zpracujete všechny sbírkové předměty | Interně řešeno | žádný |
Související příspěvky:
- pro smyčku
- zatímco smyčka
- smyčka do-while