Řídící struktury programu
m (→Cyklus for each: Odkaz na Java_Kontejnery) |
(→Podmíněný příkaz: Doplnění složeného větvení.) |
||
Řádka 61: | Řádka 61: | ||
} | } | ||
+ | === 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> == | == Cyklus <code>for</code> == |
Verze z 7. 6. 2016, 06:43
Obsah |
Řídící struktury programovacích jazyků Java a PHP
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 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ů:
- podmíněný příkaz (
if
) - cyklus
for
- cyklus
while
- cyklus
do-while
- + větvení (příkaz
switch
)
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ý!
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
else
:- 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
if ($vek < 15) { echo "POZOR! Přístupné až od 15 let!"; }
if ($hotovost > $cena) { $hotovost -= $cena; } else { die("Nákup nelze provést! Nemáme dostatek peněz."); }
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
else if
:
if (PODMÍNKA) PŘÍKAZ else if (PODMÍNKA) PŘÍKAZ ... else if (PODMÍNKA) PŘÍKAZ else PŘÍKAZ
PŘÍKAZ:
-
{ posloupnost příkazů }
-
jeden příkaz ;
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:
Dnes je jaro|léto|podzim|zima.
- 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 for
Zápis:
for (INICIALIZACE; PODMÍNKA; ÚPRAVA_ČÍTAČE) PŘÍKAZ;
Cyklus for
je v PHP a Javě hodně obecný, obvykle se ale používá tak, že definujeme řídící proměnnou (třeba i
), 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
for ($i = 0; $i < 15; $i++) { echo "<p>Průchod číslo $i.</p>"; }
Tento příklad vlastně provede následující kód:
$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++;
Dále už je hodnota $i == 15
, takže není splněna podmínka $i < 15
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 for each
- Pro průchod přes všechny prvky kontejneru je lépe využít cyklus
for each
. - Více viz: Java: Kontejnery.
Cyklus while
Zápis:
while (PODMÍNKA) PŘÍKAZ;
Cyklus while
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 for
jazyků Java a PHP lze přepsat pomocí cyklu while
následujícím způsobem:
INICIALIZACE; while (PODMÍNKA) { PŘÍKAZ; ÚPRAVA_ČÍTAČE; }
Příklady PHP
$i = 0; while ($i < 15) { echo "<p>Průchod číslo $i.</p>"; $i++; }
Tento příklad vlastně provede následující kód:
$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++;
Dále už je hodnota $i == 15
, takže není splněna podmínka $i < 15
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 do while
Příkaz switch
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.
Zdroje:
- The Java Tutorials [online]. 1995, 2011 [cit. 2011-06-07]. Control Flow Statements.
- ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. Řídící struktury.
- Dostupné z WWW: <http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_5>.
- ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. Cykly.
- Dostupné z WWW: <http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_6>.
- Související stránky