Řídící struktury programu

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Cyklus for: Doplněn pojem čítač a odkaz na stránku o podmíněných výrazech.)
m (Změna struktury nadpisů.)
 
(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 &lt;http://download.oracle.com/javase/tutorial/java/nutsandbolts/flow.html&gt;].
+
# ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. ''Řídící struktury''.
+
#:Dostupné z WWW: &lt;[http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_5 http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_5]&gt;.
+
# ARCANIS. Výuka PHP a MySQL [online]. Třeboň : 2008 [cit. 2011-06-07]. ''Cykly''.
+
#:Dostupné z WWW: &lt;[http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_6 http://arcanis.argon.cz/docs/seminarka1/index.php?incl=lekce_6]&gt;.
+

Aktuální verze z 9. 9. 2016, 12:03


Procesor počítačů 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 vyšších programovacích jazycích se používají pro přehlednější zápis ustálené řídící struktury.

Běžné řídící struktury vyšších programovacích jazyků jsou:

Větvení

if (hero.lives <= 0) {
   window.alert("Game over!")
}

switch(varianta) {
   case 1: return "Varianta A";
   case 2: return "Varianta B";
   case 3: return "Varianta C";
}


Cykly

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje