WEBVTT 00:00:00.982 --> 00:00:02.174 A jsme zpátky u programu, 00:00:02.174 --> 00:00:04.414 který pomocí pole vypisuje seznam mých kamarádů. 00:00:04.414 --> 00:00:06.854 Něco se mi ale na něm vůbec nelíbí. 00:00:06.854 --> 00:00:09.146 Pokaždé, když do pole přidám nového kamaráda, 00:00:09.146 --> 00:00:11.403 musím zde dolů přidat nový textový příkaz. 00:00:11.403 --> 00:00:13.232 Řekněme, že přidám Winstona. 00:00:13.232 --> 00:00:15.333 Neukáže se jen tak. 00:00:15.333 --> 00:00:19.915 Pokud chci, aby se ukázal, musím napsat "text(myFriends[3]...". 00:00:19.915 --> 00:00:22.393 Potom ještě změním polohu y a pak už uvidím Winstona. NOTE Paragraph 00:00:22.393 --> 00:00:24.842 To je zbytečně moc práce. 00:00:24.842 --> 00:00:31.102 Chci, aby se při přidání někoho do pole vytvořil textový příkaz automaticky. 00:00:31.308 --> 00:00:34.056 Pamatujete si, jak jsme se učili cykly? 00:00:34.587 --> 00:00:38.206 Cykly nám pomohly opakovat tu samou část kódu několikrát za sebou. 00:00:38.206 --> 00:00:41.067 Například když jsme chtěli mít několik stromů za sebou. 00:00:41.067 --> 00:00:42.746 Nebo hromadu balónů. 00:00:42.746 --> 00:00:46.837 Cykly jsou mimo jiné taky skvělým způsobem pro to, 00:00:46.837 --> 00:00:49.307 jak přehrát část kódu pro každý prvek v poli. 00:00:49.766 --> 00:00:53.617 Cykly použijete skoro vždy, když budete používat pole. 00:00:53.617 --> 00:00:56.308 Pracují spolu opravdu dobře. 00:00:57.427 --> 00:01:00.401 Pojďme tedy pro zobrazení jmen mých přátel použít cyklus. 00:01:00.401 --> 00:01:03.118 Použijeme ho namísto všech těchto textových příkazů. 00:01:03.348 --> 00:01:05.338 Začneme se třemi otázkami, 00:01:05.338 --> 00:01:07.728 na které se ptáme vždy, když tvoříme cyklus. 00:01:07.728 --> 00:01:09.358 První: co chci opakovat? 00:01:09.358 --> 00:01:12.577 Podívám se, co se opakuje, a vidím textový příkaz. 00:01:12.762 --> 00:01:14.596 Druhá: co chci pokaždé změnit? 00:01:14.596 --> 00:01:19.833 Podíváme se a zjistíme, že odlišná je poloha y a aktuální index. 00:01:19.833 --> 00:01:25.153 Kamarádovo číslo a poloha y. 00:01:25.310 --> 00:01:27.338 Třetí: jak dlouho chceme opakovat? 00:01:27.338 --> 00:01:30.730 Chceme opakovat, až dokud nevypíšeme všechny kamarády. 00:01:33.900 --> 00:01:36.810 Teď už víme, co chceme, a tím pádem můžeme vytvořit cyklus. 00:01:36.952 --> 00:01:40.523 Začneme proměnnou pro počítaní, abychom měli přehled o stavu cyklu. 00:01:40.523 --> 00:01:43.392 Napíšeme: var friendNum = 0; 00:01:44.417 --> 00:01:48.712 A číslem 0 začíname kvůli tomu, že je to zároveň prvním číslem pole. 00:01:48.712 --> 00:01:50.029 Není to číslo 1. 00:01:50.029 --> 00:01:51.718 Poté máme while cyklus. 00:01:51.718 --> 00:01:57.208 Napíšeme: while(friendNum < myFriends.length) 00:01:57.869 --> 00:02:02.797 Porovnáme tedy aktuální počítadlo s celkovým počtem věcí v poli. 00:02:03.807 --> 00:02:06.898 A uvnitř cyklu, tam kde používáme textové příkazy, 00:02:06.898 --> 00:02:11.773 napíšeme textový příkaz myFriends, akorát místo čísla napíšeme "friendNum". 00:02:11.773 --> 00:02:14.342 FriendNum totiž představuje aktuální číslo. 00:02:14.469 --> 00:02:17.902 Pro teď určíme jen jednu pozici. 00:02:18.172 --> 00:02:22.032 Náš kód momentálně produkuje chybu s nekonečným cyklem. 00:02:22.032 --> 00:02:25.553 A to kvůli tomu, že jsme ohledně friendNum nic nezměnili. 00:02:25.553 --> 00:02:30.012 Musíme friendNum pokaždé zvyšovat, jinak pojede smyčka donekonečna. 00:02:30.012 --> 00:02:32.022 To kvůli tomu, že by to bylo vždy true. 00:02:32.022 --> 00:02:36.133 Něco se stalo, teď zakomentuji starý kód. 00:02:36.133 --> 00:02:38.323 Tím pádem můžu vidět, co se to vlastně stalo. 00:02:38.323 --> 00:02:43.543 Takže jsme zobrazili všechna jména, jsou ale všechna naházena přes sebe. 00:02:43.543 --> 00:02:45.494 Musíme změnit polohu y. 00:02:45.506 --> 00:02:49.235 Napíšeme friendNum krát 30. 00:02:49.888 --> 00:02:53.069 Je to sice fajn, ale Sophia se teď nachází mimo obrazovku. 00:02:53.069 --> 00:02:55.306 A pokud to zjistí, tak ji to moc nepotěší. 00:02:55.306 --> 00:02:59.588 Pojďme k tomu přidat 30, čímž je všechny posuneme o 30. 00:02:59.588 --> 00:03:03.931 Pěkné, teď máme cyklus zobrazující naše pole. 00:03:04.363 --> 00:03:07.129 A to znamená, že kdybychom měli více lidí, jako Ohnoes Guy, 00:03:07.129 --> 00:03:11.879 nebo dokonce Sala, z kterého přidáním do pole udělám svého kamaráda. 00:03:12.191 --> 00:03:14.232 A teď je můj kámoš. 00:03:14.232 --> 00:03:18.121 Jak vidíte, nové kamarády to zobrazuje automaticky, 00:03:18.121 --> 00:03:20.756 protože se to pokaždé přidá do celého pole. 00:03:21.005 --> 00:03:24.185 Náš starý kód můžeme smazat, už ho nebudeme potřebovat. 00:03:24.185 --> 00:03:27.886 Pojďme si teď kód projít a zopakovat si, jak vlastně funguje. 00:03:27.886 --> 00:03:31.015 Začínáme s proměnnou friendNum rovné číslu 0. 00:03:31.458 --> 00:03:34.216 Zkontrolujeme, zda je friendNum menší než aktuální délka. 00:03:34.216 --> 00:03:36.856 Takže si to představíme a vidíme, že 0 je méně než 6. 00:03:36.856 --> 00:03:37.856 To je pravdivé. 00:03:37.856 --> 00:03:41.940 Poté jdeme sem a napíšeme: text(myFriends[friendNum]...) 00:03:41.940 --> 00:03:44.438 Poprvé by to tedy bylo: myFriends[0]. 00:03:44.612 --> 00:03:47.378 Dále následuje: 30 plus 0 krát 30. 00:03:47.378 --> 00:03:52.868 Čímž se zajistí vyobrazení Sophie na pozicích 10 a 30. 00:03:53.771 --> 00:03:56.220 Poté máme friendNum++, čili se hodnota stává 1. 00:03:56.220 --> 00:03:59.300 Poté se cyklus opakuje a ptá se: je číslo 1 menší než délka pole? 00:03:59.300 --> 00:04:00.300 Ano, je. 00:04:00.300 --> 00:04:02.341 A cyklus běží a běží. 00:04:02.341 --> 00:04:05.419 A potom se dostaneme k Salovi. 00:04:05.419 --> 00:04:10.952 Sal je šestým prvkem v poli, má ale index 5 (kvůli začátku na 0). 00:04:10.952 --> 00:04:12.803 Je 5 méně než 6? 00:04:12.803 --> 00:04:13.803 Ano, je. 00:04:13.803 --> 00:04:18.602 Zobrazuje to kamaráda 5 a poté se hodnota stává 6. 00:04:18.602 --> 00:04:20.451 A je 6 méně než 6? 00:04:20.451 --> 00:04:21.828 Ne, není, je to rovno. 00:04:21.828 --> 00:04:23.658 Podmínka bude tedy nepravdivá (false). 00:04:23.658 --> 00:04:25.388 Nikdy se tedy nezobrazí šestý prvek. 00:04:25.388 --> 00:04:29.067 A to je dobře, protože v indexu 6 nic není. 00:04:29.067 --> 00:04:33.248 Šestý element je, ale index 6 nic neobsahuje. 00:04:33.248 --> 00:04:37.559 Může to být celkem matoucí, nejdřív je to 0, pak 1 a pak další. 00:04:37.559 --> 00:04:39.028 Naučíte se to. 00:04:39.587 --> 00:04:41.927 To je tedy náš cyklus. 00:04:41.927 --> 00:04:45.008 Pokud chcete, můžete klidně použít cyklus for. 00:04:45.008 --> 00:04:46.720 V případě, že preferuje cyklus for. 00:04:46.781 --> 00:04:54.271 Pro for cyklus napíšeme for(var FriendNum = 0) a podmínku. 00:04:54.271 --> 00:05:01.241 FriendNum je méně než myFriends.length, poté máme přírůstek friendNum++. 00:05:01.241 --> 00:05:06.612 A do vnitřku for cyklu vložíme tento řádek kódu. 00:05:06.612 --> 00:05:11.647 Změním polohu x a jak vidíte, dělá to úplně tu samou věc. 00:05:12.364 --> 00:05:14.234 Takže je na vás, který z nich použijete. 00:05:14.234 --> 00:05:17.094 Důležité je, že použijete cyklus v kombinaci s vaším polem. 00:05:17.094 --> 00:05:19.497 Učiní vás to opravdu mocnými.