Cykly

Cyklus while

Cykly jsou v podstatě rozšířené podmínky. Cyklus můžete umístit kamkoliv - jak do časové osy, tak na symbol. Cykly provádějí sadu daných příkazů, dokud není jejich podmínka vyhodnocena jako false. Rozdíl mezi cyklem a prostou podmínkou je ten, že podmínka je vyhodnocena pouze jednou - pokud je true, vykonají se příkazy ve složených závorkách, pokud je false, podmínka se přeskočí.

Ovšem pokud je u cyklu podmínka true, vykonají se dané příkazy, ale program nepokračuje dále, nýbrž se vrací zpět na začátek cyklu a opět se vyhodnocuje podmínka. Pokud je true, opět se provede sada příkazů a celý cyklus se vrací zpět na začátek. Takto se to opakuje, dokud není podmínka vyhodnocena jako false.

Program Flash rozeznává dva typy cyklů. První z nich je cyklus while. Nejlépe tento cyklus vysvětlím na příkladu.

while (i<=350) {
  pole.text+=i + " ";
  ++i;
}
_rotation=25;

Takže po řádcích. Skript říká toto: Dokud (while) je proměnná "i" menší nebo rovna 350, dělej příkazy v závorce. Tzn. vepiš do pole proměnnou "i" a mezeru. Na dalším řádku pak přidej k "i" jedničku.

Takže cyklus jako první vyhodnotí podmínku v závorce. Pokud je pravdivá, provede příkazy, pokud je nepravdivá, pokračuje dále (příkaz _rotation). Z tohoto mj. logicky vyplývá, že cyklus while nemusí proběhnout ani jednou.

Pokud je ale podmínka vyhodnoce jako true, vepíše se do pole určené číslo (=proměnná "i") a zároveň se přičte jednička k "i". Cyklus ale nekončí, vrátí se na začátek a znova vyhodnotí podmínku. Takhle postupuje, dokud nebude podmínka false. Až nastane, příkazy se již neprovedou a program pokračuje dále (příkaz _rotation).

První, co vás patrně napadne je, co když podmínka nikdy nebude false. Tak v tom případě můžete otevřít láhev kvalitního sektu - podařilo se vám zacyklit program. Tudíž v každém cyklu musí být čítač cyklu (to je právě ta proměnná "i" v podmínce cyklu) a zároveň se musí s čítačem v cyklu pracovat (to je to osudové ++i, bez čehož by došlo k zacyklení).

A teď ještě jak bude cyklus proveden konkrétně. Proměnná "i" není nikde deklarovaná, tudíž první kolo se nic nestane, pouze se k "i" přičte a jedna a od teď už má "i" hodnotu 1. Druhé kolo. Vyhodnocuje se podmínka jestli je 1<=350. To je samozřejmě pravda, takže cyklus může běžet dál. Do pole se vepíše "1 " a poté se k "i" opět přičte jedna. Cyklus se vrací zpět.

Třetí kolo. Proměnná "i" má nyní hodnotu dva a tak vyhodnocuje podmínka 2<=350. To je stále pravda, takže cyklus pokračuje. Do pole se připíše "2 " a k "i" se opět přičte jedna. Cyklus se vrací zpět.

...

...

Trochu přeskočíme. Proměnná "i" má nyní hodnotu 351. Vyhodnocuje se podmínka 351<=350. To není pravda, takže cyklus nepokračuje, do pole se již nic nepřipíše. Cyklus skončil.

prohlédnout
stáhnout zdroják

Cyklus for

Dalším cyklem je for. Je velmi podobný cyklu while a vlastně všechno co uděláte přes while se dá naprogramovat přes for a naopak. Podívejte se na syntaxi:

for (i=1; i<=100; ++i) {
  if ((i%2)==0) {
    pole.text+=i + " ";
  }
}

Takže popořadě. i=1; značí, kde má cyklus začít. Při prvním projetím cyklus bude mít "i" hodnotu jedna.

i<=100; je podmínka cyklu, která udává, jak dlouho se bude cyklus opakovat. Pokud bude tato podmínka true, budou provedeny příkazy cyklu. Pokud bude false, pokračuje se příkazy za cyklem.

++i; je obyčejný čítač cyklu, který se - namísto u while -zapisuje přímo do závorky.

Tyto tři hodnoty oddělujete středníkem, nikoliv čárkou, na to bacha. Pak už následují pouze příkazy cyklů - pokud bude po celočíselném dělení 2 proměnné "i" zbytek nula, vypíše to do textového pole hodnotu "i" (tzn., že to vypíše všechna sudá čísla do stovky).

Další praktičtější příklady na cykly: »Textové efekty nebo »Šipky

prohlédnout
stáhnout zdroják
další téma - Funkce

hlavní stránka # o tento web se stará Lukáš Havrlant # lukas.havrlant@gmail.com