-
A jsme zpátky u programu,
-
který pomocí pole vypisuje
seznam mých kamarádů.
-
Něco se mi ale na něm
vůbec nelíbí.
-
Pokaždé, když do pole
přidám nového kamaráda,
-
musím zde dolů přidat nový
textový příkaz.
-
Řekněme, že přidám Winstona.
-
Neukáže se jen tak.
-
Pokud chci, aby se ukázal,
musím napsat "text(myFriends[3]...".
-
Potom ještě změním polohu y
a pak už uvidím Winstona.
-
To je zbytečně moc práce.
-
Chci, aby se při přidání někoho do pole
vytvořil textový příkaz automaticky.
-
Pamatujete si, jak jsme
se učili cykly?
-
Cykly nám pomohly opakovat
tu samou část kódu několikrát za sebou.
-
Například když jsme chtěli
mít několik stromů za sebou.
-
Nebo hromadu balónů.
-
Cykly jsou mimo jiné taky
skvělým způsobem pro to,
-
jak přehrát část kódu
pro každý prvek v poli.
-
Cykly použijete skoro vždy,
když budete používat pole.
-
Pracují spolu opravdu dobře.
-
Pojďme tedy pro zobrazení
jmen mých přátel použít cyklus.
-
Použijeme ho namísto všech
těchto textových příkazů.
-
Začneme se třemi otázkami,
-
na které se ptáme vždy,
když tvoříme cyklus.
-
První: co chci opakovat?
-
Podívám se, co se opakuje,
a vidím textový příkaz.
-
Druhá: co chci pokaždé změnit?
-
Podíváme se a zjistíme, že odlišná
je poloha y a aktuální index.
-
Kamarádovo číslo a poloha y.
-
Třetí: jak dlouho chceme opakovat?
-
Chceme opakovat, až dokud
nevypíšeme všechny kamarády.
-
Teď už víme, co chceme,
a tím pádem můžeme vytvořit cyklus.
-
Začneme proměnnou pro počítaní,
abychom měli přehled o stavu cyklu.
-
Napíšeme:
var friendNum = 0;
-
A číslem 0 začíname kvůli tomu,
že je to zároveň prvním číslem pole.
-
Není to číslo 1.
-
Poté máme while cyklus.
-
Napíšeme:
while(friendNum < myFriends.length)
-
Porovnáme tedy aktuální počítadlo
s celkovým počtem věcí v poli.
-
A uvnitř cyklu, tam kde používáme
textové příkazy,
-
napíšeme textový příkaz myFriends,
akorát místo čísla napíšeme "friendNum".
-
FriendNum totiž představuje
aktuální číslo.
-
Pro teď určíme jen jednu pozici.
-
Náš kód momentálně produkuje
chybu s nekonečným cyklem.
-
A to kvůli tomu, že jsme
ohledně friendNum nic nezměnili.
-
Musíme friendNum pokaždé zvyšovat,
jinak pojede smyčka donekonečna.
-
To kvůli tomu, že by
to bylo vždy true.
-
Něco se stalo, teď
zakomentuji starý kód.
-
Tím pádem můžu vidět,
co se to vlastně stalo.
-
Takže jsme zobrazili všechna jména,
jsou ale všechna naházena přes sebe.
-
Musíme změnit polohu y.
-
Napíšeme friendNum krát 30.
-
Je to sice fajn, ale Sophia se
teď nachází mimo obrazovku.
-
A pokud to zjistí,
tak ji to moc nepotěší.
-
Pojďme k tomu přidat 30,
čímž je všechny posuneme o 30.
-
Pěkné, teď máme cyklus
zobrazující naše pole.
-
A to znamená, že kdybychom
měli více lidí, jako Ohnoes Guy,
-
nebo dokonce Sala, z kterého přidáním
do pole udělám svého kamaráda.
-
A teď je můj kámoš.
-
Jak vidíte, nové kamarády to
zobrazuje automaticky,
-
protože se to pokaždé
přidá do celého pole.
-
Náš starý kód můžeme smazat,
už ho nebudeme potřebovat.
-
Pojďme si teď kód projít
a zopakovat si, jak vlastně funguje.
-
Začínáme s proměnnou friendNum
rovné číslu 0.
-
Zkontrolujeme, zda je friendNum
menší než aktuální délka.
-
Takže si to představíme a vidíme,
že 0 je méně než 6.
-
To je pravdivé.
-
Poté jdeme sem a napíšeme:
text(myFriends[friendNum]...)
-
Poprvé by to tedy bylo:
myFriends[0].
-
Dále následuje:
30 plus 0 krát 30.
-
Čímž se zajistí vyobrazení
Sophie na pozicích 10 a 30.
-
Poté máme friendNum++,
čili se hodnota stává 1.
-
Poté se cyklus opakuje a ptá se:
je číslo 1 menší než délka pole?
-
Ano, je.
-
A cyklus běží a běží.
-
A potom se dostaneme k Salovi.
-
Sal je šestým prvkem v poli,
má ale index 5 (kvůli začátku na 0).
-
Je 5 méně než 6?
-
Ano, je.
-
Zobrazuje to kamaráda 5
a poté se hodnota stává 6.
-
A je 6 méně než 6?
-
Ne, není, je to rovno.
-
Podmínka bude
tedy nepravdivá (false).
-
Nikdy se tedy
nezobrazí šestý prvek.
-
A to je dobře, protože v
indexu 6 nic není.
-
Šestý element je, ale
index 6 nic neobsahuje.
-
Může to být celkem matoucí,
nejdřív je to 0, pak 1 a pak další.
-
Naučíte se to.
-
To je tedy náš cyklus.
-
Pokud chcete,
můžete klidně použít cyklus for.
-
V případě, že
preferuje cyklus for.
-
Pro for cyklus napíšeme
for(var FriendNum = 0) a podmínku.
-
FriendNum je méně než myFriends.length,
poté máme přírůstek friendNum++.
-
A do vnitřku for cyklu
vložíme tento řádek kódu.
-
Změním polohu x a jak vidíte,
dělá to úplně tu samou věc.
-
Takže je na vás,
který z nich použijete.
-
Důležité je, že použijete cyklus
v kombinaci s vaším polem.
-
Učiní vás to opravdu mocnými.