1 00:00:00,982 --> 00:00:02,174 A jsme zpátky u programu, 2 00:00:02,174 --> 00:00:04,414 který pomocí pole vypisuje seznam mých kamarádů. 3 00:00:04,414 --> 00:00:06,854 Něco se mi ale na něm vůbec nelíbí. 4 00:00:06,854 --> 00:00:09,146 Pokaždé, když do pole přidám nového kamaráda, 5 00:00:09,146 --> 00:00:11,403 musím zde dolů přidat nový textový příkaz. 6 00:00:11,403 --> 00:00:13,232 Řekněme, že přidám Winstona. 7 00:00:13,232 --> 00:00:15,333 Neukáže se jen tak. 8 00:00:15,333 --> 00:00:19,915 Pokud chci, aby se ukázal, musím napsat "text(myFriends[3]...". 9 00:00:19,915 --> 00:00:22,393 Potom ještě změním polohu y a pak už uvidím Winstona. 10 00:00:22,393 --> 00:00:24,842 To je zbytečně moc práce. 11 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. 12 00:00:31,308 --> 00:00:34,056 Pamatujete si, jak jsme se učili cykly? 13 00:00:34,587 --> 00:00:38,206 Cykly nám pomohly opakovat tu samou část kódu několikrát za sebou. 14 00:00:38,206 --> 00:00:41,067 Například když jsme chtěli mít několik stromů za sebou. 15 00:00:41,067 --> 00:00:42,746 Nebo hromadu balónů. 16 00:00:42,746 --> 00:00:46,837 Cykly jsou mimo jiné taky skvělým způsobem pro to, 17 00:00:46,837 --> 00:00:49,307 jak přehrát část kódu pro každý prvek v poli. 18 00:00:49,766 --> 00:00:53,617 Cykly použijete skoro vždy, když budete používat pole. 19 00:00:53,617 --> 00:00:56,308 Pracují spolu opravdu dobře. 20 00:00:57,427 --> 00:01:00,401 Pojďme tedy pro zobrazení jmen mých přátel použít cyklus. 21 00:01:00,401 --> 00:01:03,118 Použijeme ho namísto všech těchto textových příkazů. 22 00:01:03,348 --> 00:01:05,338 Začneme se třemi otázkami, 23 00:01:05,338 --> 00:01:07,728 na které se ptáme vždy, když tvoříme cyklus. 24 00:01:07,728 --> 00:01:09,358 První: co chci opakovat? 25 00:01:09,358 --> 00:01:12,577 Podívám se, co se opakuje, a vidím textový příkaz. 26 00:01:12,762 --> 00:01:14,596 Druhá: co chci pokaždé změnit? 27 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. 28 00:01:19,833 --> 00:01:25,153 Kamarádovo číslo a poloha y. 29 00:01:25,310 --> 00:01:27,338 Třetí: jak dlouho chceme opakovat? 30 00:01:27,338 --> 00:01:30,730 Chceme opakovat, až dokud nevypíšeme všechny kamarády. 31 00:01:33,900 --> 00:01:36,810 Teď už víme, co chceme, a tím pádem můžeme vytvořit cyklus. 32 00:01:36,952 --> 00:01:40,523 Začneme proměnnou pro počítaní, abychom měli přehled o stavu cyklu. 33 00:01:40,523 --> 00:01:43,392 Napíšeme: var friendNum = 0; 34 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. 35 00:01:48,712 --> 00:01:50,029 Není to číslo 1. 36 00:01:50,029 --> 00:01:51,718 Poté máme while cyklus. 37 00:01:51,718 --> 00:01:57,208 Napíšeme: while(friendNum < myFriends.length) 38 00:01:57,869 --> 00:02:02,797 Porovnáme tedy aktuální počítadlo s celkovým počtem věcí v poli. 39 00:02:03,807 --> 00:02:06,898 A uvnitř cyklu, tam kde používáme textové příkazy, 40 00:02:06,898 --> 00:02:11,773 napíšeme textový příkaz myFriends, akorát místo čísla napíšeme "friendNum". 41 00:02:11,773 --> 00:02:14,342 FriendNum totiž představuje aktuální číslo. 42 00:02:14,469 --> 00:02:17,902 Pro teď určíme jen jednu pozici. 43 00:02:18,172 --> 00:02:22,032 Náš kód momentálně produkuje chybu s nekonečným cyklem. 44 00:02:22,032 --> 00:02:25,553 A to kvůli tomu, že jsme ohledně friendNum nic nezměnili. 45 00:02:25,553 --> 00:02:30,012 Musíme friendNum pokaždé zvyšovat, jinak pojede smyčka donekonečna. 46 00:02:30,012 --> 00:02:32,022 To kvůli tomu, že by to bylo vždy true. 47 00:02:32,022 --> 00:02:36,133 Něco se stalo, teď zakomentuji starý kód. 48 00:02:36,133 --> 00:02:38,323 Tím pádem můžu vidět, co se to vlastně stalo. 49 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. 50 00:02:43,543 --> 00:02:45,494 Musíme změnit polohu y. 51 00:02:45,506 --> 00:02:49,235 Napíšeme friendNum krát 30. 52 00:02:49,888 --> 00:02:53,069 Je to sice fajn, ale Sophia se teď nachází mimo obrazovku. 53 00:02:53,069 --> 00:02:55,306 A pokud to zjistí, tak ji to moc nepotěší. 54 00:02:55,306 --> 00:02:59,588 Pojďme k tomu přidat 30, čímž je všechny posuneme o 30. 55 00:02:59,588 --> 00:03:03,931 Pěkné, teď máme cyklus zobrazující naše pole. 56 00:03:04,363 --> 00:03:07,129 A to znamená, že kdybychom měli více lidí, jako Ohnoes Guy, 57 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. 58 00:03:12,191 --> 00:03:14,232 A teď je můj kámoš. 59 00:03:14,232 --> 00:03:18,121 Jak vidíte, nové kamarády to zobrazuje automaticky, 60 00:03:18,121 --> 00:03:20,756 protože se to pokaždé přidá do celého pole. 61 00:03:21,005 --> 00:03:24,185 Náš starý kód můžeme smazat, už ho nebudeme potřebovat. 62 00:03:24,185 --> 00:03:27,886 Pojďme si teď kód projít a zopakovat si, jak vlastně funguje. 63 00:03:27,886 --> 00:03:31,015 Začínáme s proměnnou friendNum rovné číslu 0. 64 00:03:31,458 --> 00:03:34,216 Zkontrolujeme, zda je friendNum menší než aktuální délka. 65 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. 66 00:03:36,856 --> 00:03:37,856 To je pravdivé. 67 00:03:37,856 --> 00:03:41,940 Poté jdeme sem a napíšeme: text(myFriends[friendNum]...) 68 00:03:41,940 --> 00:03:44,438 Poprvé by to tedy bylo: myFriends[0]. 69 00:03:44,612 --> 00:03:47,378 Dále následuje: 30 plus 0 krát 30. 70 00:03:47,378 --> 00:03:52,868 Čímž se zajistí vyobrazení Sophie na pozicích 10 a 30. 71 00:03:53,771 --> 00:03:56,220 Poté máme friendNum++, čili se hodnota stává 1. 72 00:03:56,220 --> 00:03:59,300 Poté se cyklus opakuje a ptá se: je číslo 1 menší než délka pole? 73 00:03:59,300 --> 00:04:00,300 Ano, je. 74 00:04:00,300 --> 00:04:02,341 A cyklus běží a běží. 75 00:04:02,341 --> 00:04:05,419 A potom se dostaneme k Salovi. 76 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). 77 00:04:10,952 --> 00:04:12,803 Je 5 méně než 6? 78 00:04:12,803 --> 00:04:13,803 Ano, je. 79 00:04:13,803 --> 00:04:18,602 Zobrazuje to kamaráda 5 a poté se hodnota stává 6. 80 00:04:18,602 --> 00:04:20,451 A je 6 méně než 6? 81 00:04:20,451 --> 00:04:21,828 Ne, není, je to rovno. 82 00:04:21,828 --> 00:04:23,658 Podmínka bude tedy nepravdivá (false). 83 00:04:23,658 --> 00:04:25,388 Nikdy se tedy nezobrazí šestý prvek. 84 00:04:25,388 --> 00:04:29,067 A to je dobře, protože v indexu 6 nic není. 85 00:04:29,067 --> 00:04:33,248 Šestý element je, ale index 6 nic neobsahuje. 86 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ší. 87 00:04:37,559 --> 00:04:39,028 Naučíte se to. 88 00:04:39,587 --> 00:04:41,927 To je tedy náš cyklus. 89 00:04:41,927 --> 00:04:45,008 Pokud chcete, můžete klidně použít cyklus for. 90 00:04:45,008 --> 00:04:46,720 V případě, že preferuje cyklus for. 91 00:04:46,781 --> 00:04:54,271 Pro for cyklus napíšeme for(var FriendNum = 0) a podmínku. 92 00:04:54,271 --> 00:05:01,241 FriendNum je méně než myFriends.length, poté máme přírůstek friendNum++. 93 00:05:01,241 --> 00:05:06,612 A do vnitřku for cyklu vložíme tento řádek kódu. 94 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. 95 00:05:12,364 --> 00:05:14,234 Takže je na vás, který z nich použijete. 96 00:05:14,234 --> 00:05:17,094 Důležité je, že použijete cyklus v kombinaci s vaším polem. 97 00:05:17,094 --> 00:05:19,497 Učiní vás to opravdu mocnými.