|
|
(Nejsou zobrazeny 3 mezilehlé verze od 1 uživatele.) |
Řádka 2: |
Řádka 2: |
| | | |
| | | |
− | == Řídící struktury programovacích jazyků Java a PHP ==
| + | Procesor počítačů [[Von Neumannova architektura|von Neumannova typu]] provádí instrukce v takovém pořadí, v jakém jsou uloženy v operační paměti. Pokud chceme toto chování změnit, musíme použít speciální instrukci skoku. |
| | | |
− | Počítače von Neumannova typu provádí instrukce v takovém pořadí, v jakém jsou v operační paměti uloženy. Pokud chceme toto chování změnit, musíme použít speciální instrukci skoku. Ve [[Programovací_jazyky | vyšších programovacích jazycích]] se používají pro přehlednější zápis ustálené řídící struktury.
| + | Ve [[Programovací_jazyky | vyšších programovacích jazycích]] se používají pro přehlednější zápis ustálené řídící struktury. |
| | | |
− | Řídící struktury vyšších programovacích jazyků:
| + | Běžné řídící struktury vyšších programovacích jazyků jsou: |
− | * podmíněný příkaz (<code>if</code>)
| + | |
− | * cyklus <code>for</code>
| + | |
− | * cyklus <code>while</code>
| + | |
− | * cyklus <code>do-while</code>
| + | |
− | * + větvení (příkaz <code>switch</code>)
| + | |
| | | |
− | Dále uvádíme základní popis použití nejběžnějších řídících struktur. Jsme si vědomi, že '''následující text je velmi zjednodušený!'''
| + | == Větvení == |
| + | * Podle splnění podmínky pokračuje kód jednou z několika větví. |
| | | |
| + | * Podmíněný příkaz (<code>if-elseif-else</code>) |
| | | |
− | | + | if (hero.lives <= 0) { |
− | | + | window.alert("Game over!") |
− | == Podmíněný příkaz ==
| + | |
− | | + | |
− | === Zápis: ===
| + | |
− | | + | |
− | if (PODMÍNKA) PŘÍKAZ [ else PŘÍKAZ ]; | + | |
− | | + | |
− | * PODMÍNKA:
| + | |
− | *: výraz, který vrací pravdivostní hodnotu (pravda nebo nepravda)
| + | |
− | *: více o zápisu podmínek je v kapitole [[Podmíněný výraz]].
| + | |
− | * PŘÍKAZ:
| + | |
− | *: obvykle se jedná o ''''složený příkaz'''', tedy o posloupnost příkazů, ohraničenou složenými závorkami.
| + | |
− | * větev <code>else</code>:
| + | |
− | *: tento příkaz se provede, pokud podmínka '''není''' splněná.
| + | |
− | *: tato část příkazu ale nemusí být vůbec uvedena.
| + | |
− | | + | |
− | === Příklady PHP === | + | |
− | | + | |
− | <pre>
| + | |
− | if ($vek < 15) {
| + | |
− | echo "POZOR! Přístupné až od 15 let!";
| + | |
| } | | } |
− | </pre> | + | |
| + | * Příkaz <code>switch</code> |
| | | |
− | <pre>
| + | switch(varianta) { |
− | if ($hotovost > $cena) { | + | case 1: return "Varianta A"; |
− | $hotovost -= $cena;
| + | case 2: return "Varianta B"; |
− | } else {
| + | case 3: return "Varianta C"; |
− | die("Nákup nelze provést! Nemáme dostatek peněz.");
| + | |
| } | | } |
− | </pre>
| |
− |
| |
− | === Příklady Java ===
| |
− |
| |
− | if (vek < 15) {
| |
− | System.out.println("POZOR! Přístupné až od 15 let!");
| |
− | }
| |
− |
| |
− | if (zakaznik.getHotovost() > cena) {
| |
− | zakaznik.zaplat(cena);
| |
− | } else {
| |
− | System.err.println("Nákup nelze provést! Nemáme dostatek peněz.");
| |
− | }
| |
− |
| |
− | === Vícenásobné větvení ===
| |
− | * Můžeme opakovaně použít konstrukci <code>else if</code>:
| |
− |
| |
− | if (''PODMÍNKA'') ''PŘÍKAZ''
| |
− | else if (''PODMÍNKA'') ''PŘÍKAZ''
| |
− | ...
| |
− | else if (''PODMÍNKA'') ''PŘÍKAZ''
| |
− | else ''PŘÍKAZ''
| |
− |
| |
− | ''PŘÍKAZ'':
| |
− | # <code>{ ''posloupnost příkazů'' }</code>
| |
− | # <code>''jeden příkaz'' ;</code>
| |
− |
| |
− | ''PODMÍNKA''
| |
− | * Zápis podmínek viz [[Podmíněný výraz]].
| |
− |
| |
− | ; Příklad Java
| |
− | int denTydne;
| |
− | ...
| |
− | DenTydne vysledek = null;
| |
− | /* Třída DenTydne je společným předkem tříd
| |
− | * Pondeli, Utery, Streda, Ctvrtek, Patek a Sobota.
| |
− | */
| |
− | if (denTydne == 0) vysledek = new Nedele();
| |
− | else if (denTydne == 1) vysledek = new Pondeli();
| |
− | else if (denTydne == 2) vysledek = new Utery();
| |
− | else if (denTydne == 3) vysledek = new Streda();
| |
− | else if (denTydne == 4) vysledek = new Ctvrtek();
| |
− | else if (denTydne == 5) vysledek = new Patek();
| |
− | else vysledek = new Sobota();
| |
− |
| |
− | ; Úkol
| |
− | * Dostanete pořadové číslo měsíce.
| |
− | * Vypište na obrazovku text: <code>Dnes je jaro|léto|podzim|zima.</code>
| |
− | * Předpokládejte, že zimní měsíce jsou leden, únor a březen, jarní měsíce duben, květen a červen atd.
| |
− |
| |
− | == Cyklus <code>for</code> ==
| |
− |
| |
− | === Zápis: ===
| |
− |
| |
− | for (INICIALIZACE; PODMÍNKA; ÚPRAVA_ČÍTAČE) PŘÍKAZ;
| |
− |
| |
− | Cyklus <code>for</code> je v PHP a Javě hodně obecný, obvykle se ale používá tak, že definujeme řídící proměnnou (třeba <code>i</code>), která postupně nabývá hodnot od 0 do maximální hodnoty. Pro každou hodnotu řídící proměnné pak provádíme příkaz, který obvykle tuto hodnotu nějak využívá.
| |
− |
| |
− | Řídící proměnné se někdy také říká „čítač“.
| |
− |
| |
− | * INICIALIZACE_ČÍTAČE:
| |
− | *: příkaz, který se provede na začátku, před prováděním cyklu.
| |
− | *: obvykle nastaví počáteční hodnotu řídící proměnné cyklu.
| |
− | * ÚPRAVA_ČÍTAČE:
| |
− | *: příkaz, který se provede po každém provedení PŘÍKAZU. Obvykle zvýší či sníží hodnotu řídící proměnné.
| |
− | * PODMÍNKA:
| |
− | *: výraz, který vrací pravdivostní hodnotu (pravda nebo nepravda)
| |
− | *: více o zápisu podmínek je v kapitole [[Podmíněný výraz]].
| |
− | * PŘÍKAZ:
| |
− | *: obvykle se jedná o ''''složený příkaz'''', tedy o posloupnost příkazů, ohraničenou složenými závorkami.
| |
− |
| |
− | === Příklady PHP ===
| |
− |
| |
− | <pre>
| |
− | for ($i = 0; $i < 15; $i++) {
| |
− | echo "<p>Průchod číslo $i.</p>";
| |
− | }
| |
− | </pre>
| |
− |
| |
− | Tento příklad vlastně provede následující kód:
| |
− |
| |
− | <pre>
| |
− | $i = 0;
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 0
| |
− | $i++;
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 1
| |
− | $i++;
| |
− | .
| |
− | :
| |
− | :
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 13
| |
− | $i++;
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 14
| |
− | $i++;
| |
− | </pre>
| |
− |
| |
− | Dále už je hodnota <code>$i == 15</code>, takže není splněna podmínka <code>$i < 15</code> a tedy se provádění cyklu ukončí.
| |
− |
| |
− |
| |
− | === Příklady Java ===
| |
− |
| |
− | for (int i = 0; i < 15; i++) {
| |
− | System.out.println("Průchod číslo "+i+".");
| |
− | }
| |
− |
| |
− |
| |
− |
| |
− |
| |
− | == Cyklus <code>for each</code> ==
| |
− | * Pro průchod přes všechny prvky [[Java:_Kontejnery|kontejneru]] je lépe využít cyklus <code>for each</code>.
| |
− | * Více viz: [[Java:_Kontejnery#Proch.C3.A1zen.C3.AD_kontejneru| Java: Kontejnery]].
| |
− |
| |
− | == Cyklus <code>while</code> ==
| |
− |
| |
− | === Zápis: ===
| |
− |
| |
− | while (PODMÍNKA) PŘÍKAZ;
| |
− |
| |
− | Cyklus <code>while</code> provádí zadaný PŘÍKAZ tak dlouho, dokud je splněna PODMÍNKA.
| |
− |
| |
− | * PODMÍNKA:
| |
− | *: výraz, který vrací pravdivostní hodnotu (pravda nebo nepravda)
| |
− | *: více o zápisu podmínek je v kapitole [[Podmíněný výraz]].
| |
− | * PŘÍKAZ:
| |
− | *: obvykle se jedná o ''''složený příkaz'''', tedy o posloupnost příkazů, ohraničenou složenými závorkami.
| |
− |
| |
− | Pozn.: Cyklus <code>for</code> jazyků Java a PHP lze přepsat pomocí cyklu <code>while</code> následujícím způsobem:
| |
− |
| |
− | INICIALIZACE;
| |
− | while (PODMÍNKA) {
| |
− | PŘÍKAZ;
| |
− | ÚPRAVA_ČÍTAČE;
| |
− | }
| |
− |
| |
− | === Příklady PHP ===
| |
− |
| |
− | <pre>
| |
− | $i = 0;
| |
− | while ($i < 15) {
| |
− | echo "<p>Průchod číslo $i.</p>";
| |
− | $i++;
| |
− | }
| |
− | </pre>
| |
− |
| |
− | Tento příklad vlastně provede následující kód:
| |
− |
| |
− | <pre>
| |
− | $i = 0;
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 0
| |
− | $i++;
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 1
| |
− | $i++;
| |
− | .
| |
− | :
| |
− | :
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 13
| |
− | $i++;
| |
− | echo "<p>Průchod číslo $i.</p>"; // $i == 14
| |
− | $i++;
| |
− | </pre>
| |
− |
| |
− | Dále už je hodnota <code>$i == 15</code>, takže není splněna podmínka <code>$i < 15</code> a tedy se provádění cyklu ukončí.
| |
− |
| |
− | === Příklady Java ===
| |
− |
| |
− | int i = 0;
| |
− | while (i < 15) {
| |
− | System.out.println("Průchod číslo "+i+".");
| |
− | i++;
| |
− | }
| |
− |
| |
− |
| |
− |
| |
− | == Cyklus <code>do while</code> ==
| |
− |
| |
− |
| |
− |
| |
− |
| |
− | == Příkaz <code>switch</code> ==
| |
− |
| |
− |
| |
− |
| |
− | == Cvičení ==
| |
− |
| |
− | === 1. Hodnoty funkce ===
| |
− | * Vstup: čísla ''A'', ''B'' a ''K''.
| |
− | * Berte hodnoty funkce ''y = 1/2 x^2 - 5'' v rozsahu hodnot ''x'' z intervalu <''A'';''B''> s krokem ''K''.
| |
− | * Vypište hodnoty ''x'', ve kterých je hodnota ''y'' v intervalu <-2;2>.
| |
− |
| |
− | === 2. Průchod pole ===
| |
− | * Vstup: číslo ''K'' a pole kladných čísel ''P''.
| |
− | * Projděte hodnoty čísel v poli ''P''.
| |
− | * Pokud je hodnota dělitelná číslem ''K'', zapište na odpovídající pozici v poli ''P'' číslo ''-1''.
| |
− |
| |
| | | |
| + | * Více viz [[Větvení]]. |
| | | |
| | | |
− | == Zdroje: == | + | == Cykly == |
− | # The Java Tutorials [online]. 1995, 2011 [cit. 2011-06-07]. ''Control Flow Statements''.
| + | * Zadaný kód se opakuje, dokud je splněna podmínka. |
− | #:Dostupné z WWW: [http://download.oracle.com/javase/tutorial/java/nutsandbolts/flow.html <http://download.oracle.com/javase/tutorial/java/nutsandbolts/flow.html>].
| + | * Cyklus <code>for</code> |
− | # ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. ''Řídící struktury''.
| + | * Cyklus <code>for each</code> |
− | #:Dostupné z WWW: <[http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_5 http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_5]>.
| + | * Cyklus <code>while</code> |
− | # ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. ''Cykly''.
| + | * Cyklus <code>do-while</code> |
− | #:Dostupné z WWW: <[http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_6 http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_6]>.
| + | |
| | | |
− | ; Související stránky:
| + | * Více viz [[Cykly]]. |
− | * [[Programovací_jazyky]] | + | |
− | * [[Java:_Kontejnery#Proch.C3.A1zen.C3.AD_kontejneru]]
| + | |