Učíme se PHP online a nekupujem knihy :o)

>> Pro všechny, kdo mají rádi tento jazyk nebo pro ty, kteří se v něm chějí zdokonalit.



Lekce 4: Cykly




- Tak, a jsme u mého oblíbeného tématu a to jsou cykly. Proč oblíbeného? Protože s cyklama si jde hodně "vyhrát". Za chvíli uvidite proč a hlavně pozor, ať se nezacyklíte.


Zkusme cyklit


- Cykly máme celkem 3, každý se v něčem liší a použivá při jiné příležitosti. Pokusím se to nějak stručně vysvělit na přikladech. Protože mi přijde, že na pochopení to je rozhodně lepší.

- Prvním typem je cyklus for. Tento cyklus je typický tím, že se použivá většinou v případech, kdy známe počet opakování.
- Ze začátku to může být matoucí, protože má 3 parametry, ale uvidíte, že to opravdu není nic težkého. Ukažme si tedy příklad.

/*
 * 1. parametr urcuje od jakeho cisla (pozice) se ma zacit cyklit
 * 2. nam urcuje podminku, pod kterou ma probihat cyklus, v tomto pripade pojede tak dlouho,
 *    dokud bude $i mensi nez 5, takze 5x
 * 3. inkrementace cyklu (o kolik si zvysi hodnota $i po kazdem opakovani)
 */

for ($i = 0; $i < 5; $i++)
{
  echo "ahoj"; // vypise 5x "ahoj"
}
- Jednoduché že? Tak teď zkusíme další typ cyklu a to je while. Tento liší jen tím, že neznáme počet opakování, takže bude probíhat tak dlouho, dokud bude splněna podmínka.
$i = 0; // nastavime prvni hodnotu

// bude probihat tak dlouho, dokud $i bude mensi nez 5
while ($i < 5)
{
  echo "ahoj"; // vypise 5x "ahoj"
  $i++; // zvysi $i o 1
}
- A na konec poslední typ cyklu a tím je do. Je to vlastně brácha cyklus while, protože je naprosto stejný, jen s tím rozdílem, že podmínka je na konci. Pro nás to tedy znamená, že cyklus proběhne minimálně jednou.
$i = 0; // nastavime prvni hodnotu

do
{
  echo "ahoj"; // vypise 5x "ahoj"
  $i++; // zvysi $i o 1
}
while ($i < 5); // bude probihat tak dlouho, dokud $i bude mensi nez 5
- Tyto 3 typy cyklů budeme používat a bude vždy na vás, aby jste zjistili s jakým typem to bude nejefektivnější.

- Někdy však potřebujem cyklus ukončit a nenechat ho zbytečně běžet do konce. K tomu slouží příkaz break, který už známe z příkazu switch.
for ($i = 0; $i < 5; $i++)
{
  if ($i == 3) break; // ukonci cyklus, pokud $i bude 3
  echo "ahoj"; // vypise 3x "ahoj"
}
- Také se můžeme setkat s příkazem continue, který je užitečný v tom, že přeskočí celý cyklus, ale neukončí ho.
for ($i = 0; $i < 5; $i++)
{
  // pokud $i bude 2 nebo 4, tak preskoci vse za podminkou
  if ($i == 2 || $i == 4) continue;
  echo $i; // vypise 0,1,3
}
- Další věc co jde s cyklama dělat je vnořit cyklus do jiného (né jen jednou).
- Takovým cyklům uvnitř cyklu se říká vnořené cykly.
/* Vypise:
 * 0 1 2 3 4 
 * 1 2 3 4 5 
 * 2 3 4 5 6 
 * 3 4 5 6 7 
 * 4 5 6 7 8
 */

// cyklus probehne 5x
for ($i = 0; $i < 5; $i++)
{
  // tento cyklus taky 5x (musi mit jiny nazev promenne nez prvni ($i a $j))
  for ($j = 0; $j < 5; $j++)
  {
	echo $j + $i."&nbsp;"; // secteme $i a $j + pridame mezeru
  }
  echo "
"; // vytvorime novy radek (lze take jako \n nebo \v) }
- K závěru se ještě naučíme dva nový příkazy. Jeden pro zjištění délky řetězce a tím je strlen(string) a druhý pro převedení dec. čísla na znak a to přes chr(int).
echo strlen("ahoj svete"); // 10 (pocita vse i bile znaky - mezera)
echo chr(64); // vypise @
- Doporučuji se cykly pořádně naučit, protože v další lekci bych nejspíš začal pole a dostane se i na cykly.
- Věnujte prosím pozornost i dobrovolným úkolům. Jak se říká procvičování je matka moudrosti.

Pozor: Nezobrazujte kód aniž by jste to zkusili sami, tím se nic nenaučíte! :P


Dobrovolný domácí úkol


1) Vypište přes cyklus všechna čísla od 1-100, která jsou sudá a dělitelná 4.

// inkrementuji od 0 po 2, protoze chceme jen suda cisla
for ($i = 0; $i < 101; $i += 2)
{
  // pokud $i bude 0 nebo nebude delitelne 4, tak cislo preskocim
  if (!$i || $i % 4) continue;
  echo $i;
}
2) Vygenerujte HTML tabulku přes tag <table>, která bude mít 5 řádků a na každém 3 buňky (5x3).
$table = ""; // budouci obsah vnitrku tabulky

// cyklus pro radky
for ($i = 0; $i < 5; $i++)
{
  $table.= "<tr>";
  
  // cyklus pro bunky
  for ($j = 0; $j < 3; $j++)
  {
	$table.= "<td>Buňka $j</td>";
  }
  $table.= "</tr>";
}
echo "".$table."
";
3) Vypište celou českou ascii tabulku (má 128 znaků).
for ($i = 0; $i < 128; $i++)
{
  echo $i.") ".chr($i)."
"; }
4) Uložte do proměnné nějaký text a přes cyklus ho vypište pozpátku.
$text = "Ahoj světe!";

/* vytvorime cyklus pozpatku, kde velikost $i bude pocet znaku v promenne $text
 * (-1 proto, protoze cyklus je od 0)
 * a vypiseme jmeno, kde hranate zavorky oznacuji pozici pismene
 */
for ($i = strlen($text) - 1; $i >= 0; $i--) echo $text[$i];


This page was loaded in 0.3346 seconds. © 2011-2025 by mimic | mimic.php5.cz
ICQ contact is 204-517-399