|   |   | 
| (Není zobrazeno 8 mezilehlých verzí od 1 uživatele.) | 
| Řádka 1: | Řádka 1: | 
| − | [[Category:VSE]] | + | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:PHP]] | 
| − | [[Category:Informatika]] | + |  | 
| − | [[Category:Programování]] | + |  | 
|  |  |  |  | 
|  |  |  |  | 
|  | + | 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.  | 
|  |  |  |  | 
|  | + | 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 programovacích jazykůJava a PHP ==
 | + | Běžné řídící struktury vyšších programovacích jazyků jsou: | 
|  |  |  |  | 
| − | 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.
 | + | == Větvení == | 
|  | + | * Podle splnění podmínky pokračuje kód jednou z několika větví. | 
|  |  |  |  | 
| − | Řídící struktury vyšších programovacích jazyků:
 | + | * Podmíněný příkaz (<code>if-elseif-else</code>) | 
| − | * 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ý!'''
 | + |   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)
 | + |  | 
| − | * 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>
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | == 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 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čí.
 |  | 
| − | 
 |  | 
| − | == Zápis podmínek ==
 |  | 
| − | 
 |  | 
| − | === Porovnání čísel ===
 |  | 
| − | * <code>$a == 5</code> 
 |  | 
| − | * <code>$a != 5</code> (není rovno)
 |  | 
| − | * <code>$a < 5</code> 
 |  | 
| − | * <code>$a > 5</code> 
 |  | 
| − | * <code>$a <= 5</code> 
 |  | 
| − | * <code>$a >= 5</code> 
 |  | 
| − | 
 |  | 
| − | === Porovnání textových řetězců ===
 |  | 
| − | * PHP: <code>strcmp($t, "text")</code> 
 |  | 
| − | * Java: <code>text.equals("text")</code> 
 |  | 
| − | 
 |  | 
| − | === Logické funkce ===
 |  | 
| − | * PHP: <code>($a <= 5) AND ($b > 4)</code>, dále také <code>OR</code>, <code>XOR</code>, <code>NOT</code>
 |  | 
| − | * Java i PHP: <code>(a <= 5) && ($b > 4)</code>, dále také <code>||</code>, <code>^</code>, <code>!</code>
 |  | 
|  |  |  |  | 
| − | == Cvičení ==
 | + | * Více viz [[Větvení]]. | 
|  |  |  |  | 
| − | === 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 === | + | == Cykly == | 
| − | * Vstup: číslo ''K'' a pole kladných čísel ''P''. | + | * Zadaný kód se opakuje, dokud je splněna podmínka. | 
| − | * Projděte hodnoty čísel v poli ''P''.  | + | * Cyklus <code>for</code> | 
| − | * Pokud je hodnota dělitelná číslem ''K'', zapište na odpovídající pozici v poli ''P'' číslo ''-1''. | + | * Cyklus <code>for each</code> | 
|  | + | * Cyklus <code>while</code> | 
|  | + | * Cyklus <code>do-while</code> | 
|  |  |  |  | 
| − | == Zdroje: ==
 | + | * Více viz [[Cykly]]. | 
| − | # The Java Tutorials [online]. 1995, 2011 [cit. 2011-06-07]. ''Control Flow Statements''. 
 | + |  | 
| − | #:Dostupné z WWW: [http://download.oracle.com/javase/tutorial/java/nutsandbolts/flow.html <http://download.oracle.com/javase/tutorial/java/nutsandbolts/flow.html>].
 | + |  | 
| − | # 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 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 http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_6]>.
 | + |  |