Řídící struktury programu
|  (→Cyklus for:  Doplněn pojem čítač a odkaz na stránku o podmíněných výrazech.) |  (Zápis podmínek na samostatnou stránku. Dodán cyklus while.) | ||
| Řádka 30: | Řádka 30: | ||
| * PODMÍNKA: | * PODMÍNKA: | ||
| *: výraz, který vrací pravdivostní hodnotu (pravda nebo nepravda) | *: 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: | * PŘÍKAZ: | ||
| *: obvykle se jedná o ''''složený příkaz'''', tedy o posloupnost příkazů, ohraničenou složenými závorkami. | *: obvykle se jedná o ''''složený příkaz'''', tedy o posloupnost příkazů, ohraničenou složenými závorkami. | ||
| Řádka 72: | Řádka 73: | ||
| * PODMÍNKA: | * PODMÍNKA: | ||
| *: výraz, který vrací pravdivostní hodnotu (pravda nebo nepravda) | *: výraz, který vrací pravdivostní hodnotu (pravda nebo nepravda) | ||
| − | *: více zápisu podmínek je v kapitole [[Podmíněný výraz]]. | + | *: více o zápisu podmínek je v kapitole [[Podmíněný výraz]]. | 
| * PŘÍKAZ: | * PŘÍKAZ: | ||
| *: obvykle se jedná o ''''složený příkaz'''', tedy o posloupnost příkazů, ohraničenou složenými závorkami. | *: obvykle se jedná o ''''složený příkaz'''', tedy o posloupnost příkazů, ohraničenou složenými závorkami. | ||
| Řádka 103: | Řádka 104: | ||
| 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čí. | 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čí. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | ===  | + | == 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čí. | ||
| + | |||
| + | |||
| + | |||
| == Cvičení == | == Cvičení == | ||
| Řádka 132: | Řádka 172: | ||
| * Projděte hodnoty čísel v poli ''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''. | * Pokud je hodnota dělitelná číslem ''K'', zapište na odpovídající pozici v poli ''P'' číslo ''-1''. | ||
| + | |||
| + | |||
| + | |||
| == Zdroje: == | == Zdroje: == | ||
Verze z 12. 1. 2012, 09:19
| 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.");
 }
  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čí.
  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čí.
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>.
 
