5 – Cykly - cyklus nebo také smyčka je řídicí struktura programu, která opakovaně provádí posloupnost příkazů - opakování i ukončení cyklu je řízeno nějakou podmínku - cyklus se skládá z posloupnosti příkazů a podmíněného skoku, pomocí kterého se cyklus ukončuje při splnění podmínky - nekonečný cyklus je typ cyklu programu, který se neustále opakuje, pro jejich ukončení se používá příkaz break Příkaz while
- příkaz testuje podmínku cyklu před průchodem cyklem - cyklus tedy nemusí proběhnout ani jednou - while používáme, závisí-li ukončovací podmínka na nějakém příkazu v těle cyklu. Předem tedy nedokážeme říci, proběhne-li cyklus jednou nebo stokrát. while (podmínka) { příkaz; } Příklad: int i=0; while (i < 10) { System.out.println(i); i++; } // vypíše čísla od 0 do 9
Příkaz do-while -
v tomto cyklu se podmínka testuje až po průchodu cyklem - cyklus tedy proběhne nejméně
jednou. - pokud zajistíme hned na počátku nesplnění podmínky cyklu, cyklus se vykoná jen jednou - pokud zajistíme, že podmínka cyklu nikdy není splněna, cyklus se stává nekonečným a ukončit jeho běh jde jen násilně do { příkazy; } while (podmínka);
Příklad: int i=0; do { System.out.println(i); i++; } while (i <= 10); //vypíše čísla od 0 do 10
Příkaz for - typický příkaz cyklu, který použijeme v případě, že známe předem počet průchodů cyklem - používá se k opakování bloku kódu v zadaném, pevném počtu opakování - například chceme-li, aby cyklus běžel od jedné do dvaceti - inicializace se provádí před zahájením cyklu
- v každém průchodu se provádí test podmínky - po ukončení každého průchodu cyklem se provede příkaz kroku - příkaz kroku by měl souviset s testovanou podmínkou, obvykle jde o navýšení (nebo snížení) proměnné, která počítá průchody cyklem for (inicializace; podmínka_ukončení; krok) { příkaz; } Příklad: int n=5; for(int i = 0; i < n; i++) { System.out.println(i); } // vypíše čísla od 0 do 4
Příkaz foreach - speciální typ příkazu for, který slouží k procházení polí - v Javě není definován jako samostatný příkaz a proto se používá v rámci příkazu for - v PHP je přímo definován příkaz foreach Java for (datový_typ proměnná : pole) { příkaz; }
for (int i = 0; i < a.length; i++) { int b = a[i]; System.out.println(b); } // vypíše jednotlivá čísla z pole
Příklad: int[] a={1,2,3,4,5,6,7,8,9,0}; for(int b : a){ System.out.println(b); } // vypíše jednotlivá čísla z pole
- nebo stejná funkčnost bez použití foreach Příklad: int[] a={1,2,3,4,5,6,7,8,9,0};
PHP foreach ($pole as $hodnota) { příkaz; } Příklad:
$pole = array(1,2,3,4,5,6,7,8,9,0); foreach ($pole as $hodnota) { echo $hodnota; } // vypíše jednotlivá čísla z pole
- můžeme také zjistit index prvku z pole foreach ($pole as $index => $hodnota) { příkaz;
} Příklad: $pole = array(1,2,3,4,5,6,7,8,9,0); foreach ($pole as $index => $hodnota) { echo $hodnota; // vypíše obsah prvku $pole[$index] = 100; // do prvku pole uloží hodnotu 100 }
Příkazy break a continue - oba tyto příkazy lze použít ve všech typech cyklů a oba nějakým způsobem mění “normální“ průběh cyklu break - ukončuje nejvnitřnější neuzavřenou smyčku - opouští okamžitě cyklus - přerušuje a ukončuje předčasně zpracování cyklu ještě před provedením všech průchodů - lze jím z cyklu vystoupit (obvykle na základě další, vnitřní podmínky) Přiklad: int hledane=8; boolean nalezeno=false; for (int i = 1; i < 10; i++) { if (i==hledane) { System.out.println(i); nalezeno=true; break; // pokud se hledané číslo } // najde, cyklus už nepokračuje } if (nalezeno==true) { System.out.println("Hledané číslo bylo nalezeno.");
} else { System.out.println("Hledané číslo nenalezeno."); }
continue - skáče na konec nejvnitřnější neuzavřené smyčky a tím vynutí další průchod smyčky - cyklus neopouští
- od break se liší tím, že z cyklu nevystupuje, pouze přeskočí ještě nevykonané příkazy do konce cyklu - poté přejde zpět na začátek cyklu a pokračuje dalším průchodem cyklu Příklad: for(int i = 0; i < 10; i++) { if(i == 8) { System.out.println(i); continue; System.out.println("Ahoj"); } } // vypíše pouze číslo 8, ale nevypíše Ahoj
php - příklady
<meta http-equiv="content-type" content="text/html; charset=utf-8"> "; $i=0; while ($i < 10) { echo $i; $i++; } echo "
"; ----------------------------------------------------------------------------------------echo "DO-WHILE - vypíše čísla od 0 do 10
"; $i=0; do { echo $i; $i++; } while ($i <= 10); echo "
"; ----------------------------------------------------------------------------------------echo "FOR - vypíše čísla od 0 do 4
"; $n=5; for($i = 0; $i < $n; $i++) { echo $i; } echo "
"; ----------------------------------------------------------------------------------------echo "FOREACH - vypíše jednotlivá čísla z pole (od 1 do 9 a 0)
"; $pole = array(1,2,3,4,5,6,7,8,9,0); foreach ($pole as $hodnota) { echo $hodnota; } echo "
"; ----------------------------------------------------------------------------------------echo "FOREACH - vypíše jednotlivá čísla z pole (od 1 do 9 a 0) a zjistí index prvku z pole
"; $pole = array(1,2,3,4,5,6,7,8,9,0); foreach ($pole as $index => $hodnota) { echo $hodnota; // vypíše obsah prvku $pole[$index] = 100; // do prvku pole uloží hodnotu 100 } echo "
"; ----------------------------------------------------------------------------------------echo "BREAK - hledání čísla 8
"; $hledane=8; $nalezeno=false; for ($i = 1; $i < 10; $i++) { if ($i==$hledane) { echo $i; $nalezeno=true; break; // pokud se hledané číslo } // najde, cyklus už nepokračuje } ----------------------------------------------------------------------------------------if ($nalezeno==true) { echo "
Hledané číslo bylo nalezeno."; } else { echo "
Hledané číslo nenalezeno."; } echo "
"; ----------------------------------------------------------------------------------------echo "CONTINUE - vypíše pouze číslo 8, ale nevypíše Ahoj
"; for($i = 0; $i < 10; $i++) { if($i == 8) { echo $i; continue; echo "Ahoj"; } }
java - příklady public class cykly { public static void main(String[] args) { System.out.println("WHILE - vypíše čísla od 0 do 9\n"); int i=0; while (i < 10) { System.out.println(i); i++; } ----------------------------------------------------------------------------------------System.out.println("DO-WHILE - vypíše čísla od 0 do 10\n"); i=0; do { System.out.println(i); i++; } while (i <= 10); ----------------------------------------------------------------------------------------System.out.println("FOR - vypíše čísla od 0 do 4\n"); int n=5; for(i = 0; i < n; i++) { System.out.println(i); } ----------------------------------------------------------------------------------------System.out.println("FOREACH - vypíše jednotlivá čísla z pole (od 1 do 9 a 0)\n"); int[] a={1,2,3,4,5,6,7,8,9,0}; for(int b : a){ System.out.println(b); } ----------------------------------------------------------------------------------------System.out.println("FOREACH - vypíše jednotlivá čísla z pole (od 1 do 9 a 0) a zjistí index prvku z pole\n"); int[] aa={1,2,3,4,5,6,7,8,9,0}; for (i = 0; i < aa.length; i++) { int b = aa[i]; System.out.println(b); } ----------------------------------------------------------------------------------------System.out.println("BREAK - hledaná čísla 8\n"); int hledane=8; boolean nalezeno=false; for (i = 1; i < 10; i++) { if (i==hledane) { System.out.println(i); nalezeno=true; break; // pokud se hledanĂ© číslo } // najde, cyklus uĹľ nepokraÄŤuje } if (nalezeno==true) { System.out.println("\nHledané číslo bylo nalezeno."); } else { System.out.println("\nHledané číslo nenalezeno."); } ----------------------------------------------------------------------------------------System.out.println("CONTINUE - vypíše pouze číslo 8, ale nevypíše Ahoj\n"); for(i = 0; i < 10; i++) { if(i == 8) { System.out.println(i); continue; System.out.println("Ahoj"); } } } }