1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID Malan: Dobře. 3 00:00:11,940 --> 00:00:16,470 Tak tohle je CS50, a to je Nyní start tří týdnu. 4 00:00:16,470 --> 00:00:19,960 >> Takže až do teď, máme bylo psaní programů v jazyce C 5 00:00:19,960 --> 00:00:23,210 které vypadají trochu něco jako tohle. 6 00:00:23,210 --> 00:00:25,470 Takže máme pár ostré obsahuje v horní části. 7 00:00:25,470 --> 00:00:28,490 Máme int, hlavní, void, a pak se něco udělat ve středu, 8 00:00:28,490 --> 00:00:30,590 některá část kódu uvnitř této funkce. 9 00:00:30,590 --> 00:00:34,170 Ale klíč je skutečnost, že jsme se tu říká neplatné. 10 00:00:34,170 --> 00:00:39,320 Takže neplatné, všechny z této doby, specifikuje že tento program při spuštění, 11 00:00:39,320 --> 00:00:41,300 lze spustit pouze pomocí jeho názvu. 12 00:00:41,300 --> 00:00:46,330 Nelze zadat žádná jiná slova nebo Čísla za jménem programu, pokud 13 00:00:46,330 --> 00:00:46,830 spuštěním. 14 00:00:46,830 --> 00:00:51,200 Tak například, pokud program byl sestaveny do souboru s názvem Dobrý den, 15 00:00:51,200 --> 00:00:53,480 byste mohli udělat ./hello, ale to je vše. 16 00:00:53,480 --> 00:00:56,750 >> Jediný způsob, jak byste mohli přispívat k tomuto programu 17 00:00:56,750 --> 00:00:57,960 je voláním funkce. 18 00:00:57,960 --> 00:00:59,790 Například, co se funkce jsme používali doposud 19 00:00:59,790 --> 00:01:00,950 získat vstup od uživatele? 20 00:01:00,950 --> 00:01:02,117 >> Diváků: Získat řetězec. 21 00:01:02,117 --> 00:01:04,700 DAVID Malan: Chcete-li získat řetězec, nebo dostat int, nebo jste viděli ostatní, 22 00:01:04,700 --> 00:01:07,630 i když jste používali dosud, jako se dlouhé, dlouhé a podobně. 23 00:01:07,630 --> 00:01:09,380 Ale dejme tomu, že jsme opravdu chcete začít 24 00:01:09,380 --> 00:01:12,760 psaní programů, které jsou jen o málo více univerzální, a, upřímně řečeno, trochu víc 25 00:01:12,760 --> 00:01:15,090 jako příkazy, které jste Dostali, doufejme, 26 00:01:15,090 --> 00:01:16,550 trochu zvyklí. 27 00:01:16,550 --> 00:01:18,560 Stejně jako cd prostoru Dropbox. 28 00:01:18,560 --> 00:01:20,800 To, samozřejmě, změny adresář, za předpokladu, že 29 00:01:20,800 --> 00:01:23,590 jste na Johna Harvardu domova adresář, do vašeho Dropbox složky. 30 00:01:23,590 --> 00:01:27,380 Mezitím se příkaz jako je tento vytvoří nový adresář s názvem pset2, 31 00:01:27,380 --> 00:01:30,290 Jak jste si možná již ani bude brzy problém nastavit dva. 32 00:01:30,290 --> 00:01:33,970 Ujistěte se Dobrý den, samozřejmě, je příkaz že vytváří program s názvem ahoj 33 00:01:33,970 --> 00:01:35,770 ze souboru s názvem ahoj tečka c. 34 00:01:35,770 --> 00:01:39,140 A v každém z nich případy, teď jsme měli 35 00:01:39,140 --> 00:01:43,620 poskytnout argument na takzvaný příkazový řádek, blikání rychlé, 36 00:01:43,620 --> 00:01:48,540 takže make ví, co stavět, a tak že mkdir ví, co složku, kterou chcete vytvořit, 37 00:01:48,540 --> 00:01:51,110 a aby cd ví kam chcete jít. 38 00:01:51,110 --> 00:01:54,720 Ale až do teď, máme pořád říkáš že hlavním Vaše výchozí funkce, 39 00:01:54,720 --> 00:01:58,500 má void výraz uvnitř těchto závorkách, 40 00:01:58,500 --> 00:02:01,250 což znamená, že nemůže mít žádné argumenty. 41 00:02:01,250 --> 00:02:03,240 >> Tak začíná dnes, co budeme dělat 42 00:02:03,240 --> 00:02:06,270 se, jdeme na začátek podporovat takové věci ještě. 43 00:02:06,270 --> 00:02:08,990 Ve skutečnosti, v tomto případě, který vám nejsou obvykle ručně zadat, 44 00:02:08,990 --> 00:02:11,130 Ujistěte se dělá pro nás nejsou 45 00:02:11,130 --> 00:02:15,840 jeden, ale jeden, dva, tři další struny Po skončení programu je pojmenovaný 46 00:02:15,840 --> 00:02:16,850 zvonění. 47 00:02:16,850 --> 00:02:18,240 Tak jak toho dosáhnout? 48 00:02:18,240 --> 00:02:20,260 >> No, začíná dnes, v případech, kdy chceme 49 00:02:20,260 --> 00:02:22,855 poskytovat prostřednictvím vstupu takzvaný příkazový řádek, 50 00:02:22,855 --> 00:02:24,980 budeme začít přidávat zde to, co je v yellow-- 51 00:02:24,980 --> 00:02:30,520 výměnou za neplatné s int argc čárkou string argv závorka závorka. 52 00:02:30,520 --> 00:02:32,520 Nyní je to zajímavé pár důvodů. 53 00:02:32,520 --> 00:02:35,690 Za prvé, bude to nám napsat programy, které jsou o něco větší dynamiku. 54 00:02:35,690 --> 00:02:37,570 Ale více přesvědčivě, bude to otevřít 55 00:02:37,570 --> 00:02:40,340 nyní rozhovor, aby se co pole může opravdu 56 00:02:40,340 --> 00:02:43,300 být použity, za to, co řetězec Opravdu je pod kapotou, 57 00:02:43,300 --> 00:02:47,320 až do příštího týdne, kdy začneme potápění v ještě hlubší, jak je stroj 58 00:02:47,320 --> 00:02:48,590 aby všechny tyto věci práce. 59 00:02:48,590 --> 00:02:51,920 Ale teď, pojďme kreslit, Možná, obraz. 60 00:02:51,920 --> 00:02:54,950 >> Když napíšete program s hlavním prohlásil, 61 00:02:54,950 --> 00:02:58,810 tímto způsobem, tak, že hlavní přijímá dva argumenty, int 62 00:02:58,810 --> 00:03:03,233 a-- jaký typ dat je druhý argument? 63 00:03:03,233 --> 00:03:04,529 >> DIVÁKŮ: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID Malan: Array. 65 00:03:05,320 --> 00:03:09,170 Takže to vypadá na první pohled jako by to string, ale všimněte si hranatých závorek. 66 00:03:09,170 --> 00:03:12,760 Připomeňme, minule jsme uvedli na trh Pojem pole. 67 00:03:12,760 --> 00:03:16,210 A pole používají hranaté závorky v několika souvislostech. 68 00:03:16,210 --> 00:03:19,160 Můžete použít na náměstí držáky jít do pole 69 00:03:19,160 --> 00:03:22,710 a získání určitého prvku, jako je držák 0 nebo 1 nebo držák držák 2. 70 00:03:22,710 --> 00:03:25,500 Ale viděli jsme, je-li krátce, minulý týden, že je také 71 00:03:25,500 --> 00:03:28,790 použít tyto hranaté závorky pro deklarovat velikost pole, 72 00:03:28,790 --> 00:03:31,790 pokud předem víte, kolik ints nebo kolik řetězce nebo cokoliv 73 00:03:31,790 --> 00:03:32,630 vlastně chtějí. 74 00:03:32,630 --> 00:03:34,790 Tak to dopadá tu třetina kontext zde 75 00:03:34,790 --> 00:03:37,890 která nemá číslo uvnitř z hranatých závorkách. 76 00:03:37,890 --> 00:03:41,920 Zadáte-li, jak jsem se zde, název něco jako argv, 77 00:03:41,920 --> 00:03:44,550 což je jen ozdobný způsob, jak říká argument, vektor, který 78 00:03:44,550 --> 00:03:47,750 je další ozdobný způsob, jak říká řadu argumentů, 79 00:03:47,750 --> 00:03:50,870 závorka závorka jen Znamená to, že nemusíte nutně 80 00:03:50,870 --> 00:03:52,960 vědět předem, jak velký pole bude, 81 00:03:52,960 --> 00:03:55,070 ale víte, že to bude pole. 82 00:03:55,070 --> 00:03:57,320 Takže pokud nevíte, číslo nedávejte to tam, 83 00:03:57,320 --> 00:04:01,160 pro závorka závorka znamená, že argv není řetězec, 84 00:04:01,160 --> 00:04:03,124 ale pole řetězců. 85 00:04:03,124 --> 00:04:05,040 Takže syntakticky, pokud máte vzpomínat minulý týden, 86 00:04:05,040 --> 00:04:09,460 je to velmi podobné, jako kdybychom řekli něco jako int věku otevřený držák, 87 00:04:09,460 --> 00:04:10,984 a pak něco později. 88 00:04:10,984 --> 00:04:12,150 Takže to, co to vypadá? 89 00:04:12,150 --> 00:04:13,399 Pojďme se vlastně nakreslit obrázek. 90 00:04:13,399 --> 00:04:18,756 Takže při spuštění tohoto programu s hlavními mít dva argumenty jsou definovány uvnitř 91 00:04:18,756 --> 00:04:21,339 z těch závorek, je v zásadě nejméně dva kusy 92 00:04:21,339 --> 00:04:23,560 paměti podal na vás pod kapotou. 93 00:04:23,560 --> 00:04:26,550 Jednou, když jsem si kreslí jako tento obdélník, se bude nazýván argc. 94 00:04:26,550 --> 00:04:30,645 A stejně jako rychlou rekapitulaci, co je typ dat argc? 95 00:04:30,645 --> 00:04:31,270 Takže je to int. 96 00:04:31,270 --> 00:04:33,480 Takže číslo bude jít argc-- zatáčkách 97 00:04:33,480 --> 00:04:35,660 na to, že je zkratka pro počet argumentů. 98 00:04:35,660 --> 00:04:38,887 Mezitím jsem vypracovány argv jako pole. 99 00:04:38,887 --> 00:04:40,970 A já opravdu nevím jak dlouho to bude, 100 00:04:40,970 --> 00:04:42,470 takže pro dnešní účely dot dot dot. 101 00:04:42,470 --> 00:04:43,636 To by mohlo dostat nějaké délky. 102 00:04:43,636 --> 00:04:45,640 Ale já jsem tady na obrázku nejméně čtyři obdélníky. 103 00:04:45,640 --> 00:04:50,970 Takže argv kus paměti, která uchovává string string string dot dot dot 104 00:04:50,970 --> 00:04:53,950 a argc je jen jeden kus paměti na celé číslo. 105 00:04:53,950 --> 00:04:55,710 >> Takže buďme trochu přesnější. 106 00:04:55,710 --> 00:04:59,200 Pokud když mám struny v tomto poli, nazvaný 107 00:04:59,200 --> 00:05:03,290 argv, chci, aby si na ně individuálně, stejně jako minulý týden, 108 00:05:03,290 --> 00:05:05,670 budeme používat notaci jako argv držáku 0 109 00:05:05,670 --> 00:05:07,650 Chcete-li získat první věc pole. 110 00:05:07,650 --> 00:05:10,440 Argv držák 1, aby si Druhá věc, a tak dále. 111 00:05:10,440 --> 00:05:14,597 Klíčem je zde je, že jsme stále 0 indexed-- pořád počítat od 0. 112 00:05:14,597 --> 00:05:16,430 Takže teď pojďme skutečně dát něco na to. 113 00:05:16,430 --> 00:05:21,670 Pokud bych měl sestavit program s názvem Dobrý den ze souboru s názvem Dobrý den tečka c, 114 00:05:21,670 --> 00:05:24,340 a pak jsem se spustit tento program s tečkou lomítko Dobrý den, 115 00:05:24,340 --> 00:05:28,380 to, co dělá můj počítač, notebook, vypadat jako pod kapotou 116 00:05:28,380 --> 00:05:31,300 v okamžiku, kdy jsem běžet tečka lomítko ahoj a stiskněte klávesu Enter? 117 00:05:31,300 --> 00:05:33,500 Tak, to je možná co bychom mohli popsat 118 00:05:33,500 --> 00:05:37,010 jako obsah počítače paměti nebo na paměťové RAM-- Random Access. 119 00:05:37,010 --> 00:05:40,330 Jinými slovy, počítač, nějak pro vás jako mávnutím kouzelného proutku, 120 00:05:40,330 --> 00:05:45,360 uvádí číslo 1 v argc, AKA argcount, a to dá doslova řetězec 121 00:05:45,360 --> 00:05:48,200 ./hello v argv držáku 0. 122 00:05:48,200 --> 00:05:51,750 Nemám tušení, upřímně řečeno, to, co je v argv držáku 1 nebo 2 nebo 3, 123 00:05:51,750 --> 00:05:55,550 proto, že v případě, že uživatel nemá napsal cokoliv kromě ./hello, 124 00:05:55,550 --> 00:05:58,550 budeme předpokládat, že tyto jsou s největší pravděpodobností hodnoty na odpadky, 125 00:05:58,550 --> 00:05:59,700 abych tak řekl. 126 00:05:59,700 --> 00:06:02,650 Tyto kousky paměti existují, ale není to na nás 127 00:06:02,650 --> 00:06:05,710 dívat se na ně, protože argcount je jen jedna. 128 00:06:05,710 --> 00:06:07,870 >> Teď, mezitím, když jsem napsat spustit jiný program, 129 00:06:07,870 --> 00:06:12,250 cd, což je více vhodně příkaz, v blikajícím prompt-- cd prostoru 130 00:06:12,250 --> 00:06:17,200 Dropbox-- při spuštění, že efektivně, při spuštění cd program argc, 131 00:06:17,200 --> 00:06:22,270 vnitřní paměti svého počítače, je pro nejvíce nejkratší druhé číslo dvě. 132 00:06:22,270 --> 00:06:25,936 A pak argv držák o má cd, argv držák 1 má Dropbox, 133 00:06:25,936 --> 00:06:28,560 a pak samozřejmě příkaz dokončí, takže všechny tyto paměti 134 00:06:28,560 --> 00:06:30,420 v podstatě zmizí a se používá pro něco jiného. 135 00:06:30,420 --> 00:06:32,270 A to je důvod, proč říkám, jen zlomek vteřiny. 136 00:06:32,270 --> 00:06:35,720 >> Mezitím, když to uděláme mkdir pset2, obrázek vypadá téměř stejný, 137 00:06:35,720 --> 00:06:37,900 ale s různými šňůrky, uvnitř argv. 138 00:06:37,900 --> 00:06:42,570 Pokud se mi zvonění pomlčka ahoj ahoj tečka c, stejný nápad. 139 00:06:42,570 --> 00:06:47,060 Další věc je vyplněn pro argv a argc, samozřejmě, je 4. 140 00:06:47,060 --> 00:06:49,150 Takže jinými slovy, i když tohoto pole 141 00:06:49,150 --> 00:06:52,950 mohou být dot dot dot některých proměnné délky, abych tak řekl, 142 00:06:52,950 --> 00:06:56,720 budete vždy vědět, kde je jeho konec je, protože argc se ti to říct 143 00:06:56,720 --> 00:07:00,120 na jakém místě budete muset přestat při pohledu na prvky argv. 144 00:07:00,120 --> 00:07:03,660 Můžete se podívat jen na čtyři celkem v této věci. 145 00:07:03,660 --> 00:07:06,600 >> Takže pojďme se teď podívat na, Možná, jednoduchý program. 146 00:07:06,600 --> 00:07:09,070 Jeden, který jen říká, ahoj s někým, jako je Zamyla. 147 00:07:09,070 --> 00:07:12,620 Takže tvrdím, budu psát program za chvíli, přes který bych mohl udělat 148 00:07:12,620 --> 00:07:16,670 ./hello prostor Zamyla, a pak chci můj program vytisknout něco 149 00:07:16,670 --> 00:07:18,520 super-jednoduchý jako "ahoj, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Nyní, v minulosti jsme použili getString. 151 00:07:20,100 --> 00:07:22,850 Takže v minulosti, a to i v případě, jste k programování nového, 152 00:07:22,850 --> 00:07:27,180 pravděpodobné, můžete vybičovat program, který používá getString 153 00:07:27,180 --> 00:07:29,390 a potom pomocí printf pozdravit Zamyla. 154 00:07:29,390 --> 00:07:31,290 Ale pojďme nepoužívejte getString tentokrát. 155 00:07:31,290 --> 00:07:37,510 Dovolte mi, abych místo toho jít do Appliant a to včetně standardního I O dot hodin. 156 00:07:37,510 --> 00:07:41,160 Dovolte mi, abych také zahrnovat CS50 dot hodin. 157 00:07:41,160 --> 00:07:44,730 Nyní int main, a teď jsem nebudu dělat neplatné dnes. 158 00:07:44,730 --> 00:07:51,200 Místo toho, budu dělat int argc string argv závorka závorka, 159 00:07:51,200 --> 00:07:52,640 není ani číslo. 160 00:07:52,640 --> 00:07:54,644 A teď je můj takzvaný dělat. 161 00:07:54,644 --> 00:07:57,560 Co budu dělat teď, je, že jsem dělat trochu skok víry, 162 00:07:57,560 --> 00:08:00,560 Budu předpokládat, že uživatel je bude správně používat tento program, 163 00:08:00,560 --> 00:08:04,980 a já jsem prostě jít do to printf Dobrý den,% Sn. 164 00:08:04,980 --> 00:08:06,630 Takže nic nového tam. 165 00:08:06,630 --> 00:08:11,470 Ale já chci, aby se dal co slovo uživatel zadá za jménem programu. 166 00:08:11,470 --> 00:08:16,970 Takže když jsem to ./hello prostor Zamyla jsem Chcete nějak programově přístup 167 00:08:16,970 --> 00:08:20,870 citovat konec citátu "Zamyla." tak jsem může jít do mého argumentu vektoru, 168 00:08:20,870 --> 00:08:25,980 moje pole řetězců, a je-li příkaz, opět, byl ./hello prostor Zamyla, 169 00:08:25,980 --> 00:08:29,340 jaké číslo to chci , aby zde v argv? 170 00:08:29,340 --> 00:08:29,840 Diváků: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID Malan: 1, protože držák 0 dopadá 172 00:08:32,355 --> 00:08:34,230 bude název programu, jak jsme viděli. 173 00:08:34,230 --> 00:08:37,789 Takže držák 1 je první slovo že já, jako uživatel zadali. 174 00:08:37,789 --> 00:08:39,559 Chystám se jít dopředu a ušetřete to. 175 00:08:39,559 --> 00:08:42,830 Chystám se jít do mé složky kde jsem umístil tento soubor. 176 00:08:42,830 --> 00:08:44,920 Budu dělat, aby ahoj 3. 177 00:08:44,920 --> 00:08:46,230 Comp IO je v pořádku. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Co jsem udělal špatně? 180 00:08:54,480 --> 00:08:57,270 Byl jsem chycen překvapením já jen na chvíli tam. 181 00:08:57,270 --> 00:08:58,230 Co jsem udělal špatně? 182 00:08:58,230 --> 00:08:59,220 >> DIVÁKŮ: Name. 183 00:08:59,220 --> 00:09:01,767 >> DAVID Malan: Soubor je vlastně volal hello3.c. 184 00:09:01,767 --> 00:09:03,850 A já jsem to jen pro konzistence, protože jsme 185 00:09:03,850 --> 00:09:06,550 měli hello.c je v minulost v on-line kódu. 186 00:09:06,550 --> 00:09:11,550 Takže pojďme vyřešit tento ./hello Držák pomlčka 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 A teď máme ahoj, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Zatím můžu změnit na je Rob, nebo opravdu jiné slovo. 190 00:09:17,650 --> 00:09:19,230 >> Ale uvažujme rohový případ. 191 00:09:19,230 --> 00:09:24,360 Co můžete očekávat, pokud se stane, Nechci psát název něčí vůbec? 192 00:09:24,360 --> 00:09:25,270 >> DIVÁKŮ: Chyba. 193 00:09:25,270 --> 00:09:27,300 >> DAVID Malan: chyba nějakého druhu, snad. 194 00:09:27,300 --> 00:09:28,200 Pojďme se podívat. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Takže printf je skutečně malý ochranný nás 198 00:09:33,870 --> 00:09:38,131 tu, a doslova tisk otevřené závorka null, ale i horší věci se může stát. 199 00:09:38,131 --> 00:09:40,130 A právě k prokázání něco, co absolutně 200 00:09:40,130 --> 00:09:42,800 neměli dělat, jdeme na zde a začít vrtat. 201 00:09:42,800 --> 00:09:43,300 Je to tak? 202 00:09:43,300 --> 00:09:46,410 Pokud já vím, že obraz v paměť je v podstatě to, 203 00:09:46,410 --> 00:09:52,660 argv držák 1 má Zamyla, argv Držák 0 je ./hello, nebo ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Co je v držáku 2? 205 00:09:55,400 --> 00:09:58,210 Takže můžu odpovědět, že ptát sám sebe, že jo? 206 00:09:58,210 --> 00:10:00,460 Mohu jen změnit 1 na 2. 207 00:10:00,460 --> 00:10:07,270 Nyní mohu překompilovat ahoj 3, ./hello3 Pojďme přiblížit a stiskněte klávesu Enter. 208 00:10:07,270 --> 00:10:08,270 Jejda. 209 00:10:08,270 --> 00:10:10,660 No quote značka. 210 00:10:10,660 --> 00:10:12,540 Zajímavé. 211 00:10:12,540 --> 00:10:15,530 Tak to je docela v pohodě vidět, co ještě je tady. 212 00:10:15,530 --> 00:10:17,130 >> Takže co jiného je uvnitř mého notebooku? 213 00:10:17,130 --> 00:10:20,390 Zachraňme s držákem 3. 214 00:10:20,390 --> 00:10:25,190 Ujistěte se hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Zvědavý. 216 00:10:26,500 --> 00:10:30,560 A teď pojďme opravdu bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Tak to je opravdu potápění hluboko do paměti svého počítače. 218 00:10:34,340 --> 00:10:35,930 50 indexy v. 219 00:10:35,930 --> 00:10:41,950 Tak, aby ahoj 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Zvědavý. 221 00:10:42,680 --> 00:10:44,660 Tak jo, teď jsem jen dostane bezohledné. 222 00:10:44,660 --> 00:10:47,331 Pojďme do 5000. 223 00:10:47,331 --> 00:10:47,830 V pořádku. 224 00:10:47,830 --> 00:10:49,520 Takže mi dovolte překompilovat. 225 00:10:49,520 --> 00:10:51,460 Ujistěte se hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 OK. 228 00:10:56,460 --> 00:10:59,250 Nyní někteří z vás, může se být žárovka bude vypnuto. 229 00:10:59,250 --> 00:11:01,900 Kolik z vás má viděl tuto zprávu? 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Tak proč? 232 00:11:04,420 --> 00:11:07,250 >> Kurzy jsou-- a tam je jiný věci, které mohou způsobit to, 233 00:11:07,250 --> 00:11:09,730 a jasně, že jste v dobré company-- máme jasně 234 00:11:09,730 --> 00:11:11,900 způsobil, co se nazývá poruchy segmentace. 235 00:11:11,900 --> 00:11:15,890 A dlouhý příběh krátký pro dnešek, jsem se dotkly segment paměti 236 00:11:15,890 --> 00:11:17,060 že jsem neměl. 237 00:11:17,060 --> 00:11:19,970 V případě segmentu prostě znamená kus paměti, že bych neměl mít. 238 00:11:19,970 --> 00:11:25,530 Nyní je počítač zaručuje, že když jsem spustit ./helloZamyla, že mohu dotknout argv 239 00:11:25,530 --> 00:11:27,760 být držák 0 a argv držák 1. 240 00:11:27,760 --> 00:11:32,730 Ale argc je hodnota 2, to znamená, že jsem pouze allowed-- je to trochu cti 241 00:11:32,730 --> 00:11:35,180 system-- na dotek držák 0 a 1 držák. 242 00:11:35,180 --> 00:11:37,990 Mám-li jít dál, je tu absolutně bude existovat paměti. 243 00:11:37,990 --> 00:11:40,660 Můj RAM existuje fyzicky v počítači. 244 00:11:40,660 --> 00:11:42,080 Ale kdo ví, co je to? 245 00:11:42,080 --> 00:11:44,450 Ve skutečnosti, já jsem běh více programy najednou. 246 00:11:44,450 --> 00:11:46,910 Možná jsem seen-- kdybych nebyl dělá na Appliant tento 247 00:11:46,910 --> 00:11:49,937 ale na mém počítači Mac nebo PC-- bych mohl mít vidět obsah e-mailu. 248 00:11:49,937 --> 00:11:52,270 Možná jsem viděl na okamžik Zpráva Nedávno jsem poslal. 249 00:11:52,270 --> 00:11:55,390 Cokoliv, co by mohlo být přetrvávající kolem v paměti 250 00:11:55,390 --> 00:11:59,180 mohly být přístupné prostřednictvím Tento svévolný hranatá závorka notaci. 251 00:11:59,180 --> 00:12:02,850 Nebo ještě hůř, pravděpodobně budete muset našel jeden z mých hesel 252 00:12:02,850 --> 00:12:05,859 že jsem nedávno napsal v roce, který Program se uloží do paměti tak, aby 253 00:12:05,859 --> 00:12:07,900 mi ověřit, a pak jen tak nechal 254 00:12:07,900 --> 00:12:09,910 v paměti RAM, až jsem přestal tento program. 255 00:12:09,910 --> 00:12:12,860 >> A skutečně, to je jeden z nebezpečí a jeden pravomoci 256 00:12:12,860 --> 00:12:15,980 používání jazyka, jako je C Máte neomezený přístup 257 00:12:15,980 --> 00:12:18,860 na celý obsah paměti programu je, 258 00:12:18,860 --> 00:12:21,340 a co protivníci mohou dokonce dělat v těchto cases-- 259 00:12:21,340 --> 00:12:23,807 zvláště když jsme dostat do programování pro web 260 00:12:23,807 --> 00:12:26,890 ke konci semestru, budeme znovu tuto topic-- se hrabat kolem sebe, 261 00:12:26,890 --> 00:12:31,660 potenciálně někdo počítače paměti a najít takové podivné věci 262 00:12:31,660 --> 00:12:32,570 jak jsme tam viděli. 263 00:12:32,570 --> 00:12:36,900 Nebo dokonce ještě horší, hesla, že nebo ona pak mohou použít k dělat špatné věci. 264 00:12:36,900 --> 00:12:40,240 >> Tak jasně jsem neměl dělat to, protože divné věci začnou dít. 265 00:12:40,240 --> 00:12:42,310 Opravdu, toto je program shazovat. 266 00:12:42,310 --> 00:12:44,580 To by bylo ekvivalentní Mac OS nebo Windows 267 00:12:44,580 --> 00:12:46,770 okno programu právě mizí. 268 00:12:46,770 --> 00:12:48,300 Došlo k neočekávané chybě. 269 00:12:48,300 --> 00:12:50,840 V prostředí příkazového řádku vidíme něco takového. 270 00:12:50,840 --> 00:12:54,480 Ale to je důvod, proč se mi pouhým dotykem paměti, že nepatří ke mně. 271 00:12:54,480 --> 00:12:57,090 >> Takže pojďme se bránit proti tomuto A trochu jinak 272 00:12:57,090 --> 00:12:59,010 při pohledu na tento program naleznete zde. 273 00:12:59,010 --> 00:13:01,000 Takže, opět, kostra že jsme viděli earlier-- 274 00:13:01,000 --> 00:13:02,480 a já jsem se zvýrazní tentokrát int. 275 00:13:02,480 --> 00:13:05,900 A celou tu dobu hlavní má opravdu vrátil hodnotu. 276 00:13:05,900 --> 00:13:09,120 I když se ve většině naší přednášky Příklady jsme ani jednou použité 277 00:13:09,120 --> 00:13:10,990 vrátit něco v main. 278 00:13:10,990 --> 00:13:13,710 Právě jsme se napsat printf zavřít složená závorka a je to. 279 00:13:13,710 --> 00:13:16,500 Ale zdarma to, co kompilátor dělal pro vás, 280 00:13:16,500 --> 00:13:19,510 efektivně, se vrací 0 pro vás. 281 00:13:19,510 --> 00:13:22,950 Ukázalo out-- a je to trochu counterintuitive--, že 0 je dobrá. 282 00:13:22,950 --> 00:13:24,690 To neznamená, že falešný sobě. 283 00:13:24,690 --> 00:13:29,080 0 je dobrá, a všechny non-0 hodnota, se svět rozhodl, 284 00:13:29,080 --> 00:13:30,619 může znamenat chybu. 285 00:13:30,619 --> 00:13:32,910 Takže pokud jste někdy zmatek něco, co se na vašem počítači, 286 00:13:32,910 --> 00:13:36,600 nebo program, který právě zemřel na vás a jste se dostali nějaké chybné okno 287 00:13:36,600 --> 00:13:40,360 na obrazovce, říká chyba Negativní 49 nebo chyba 23-- 288 00:13:40,360 --> 00:13:44,170 některé zdánlivě libovolný value-- to protože programátor se pevně 289 00:13:44,170 --> 00:13:49,370 hodnoty jako negativní nebo pozitivní 49 23 představují libovolný počet, troufám tvrdit, 290 00:13:49,370 --> 00:13:53,340 4 miliardy možných věcí které by mohly pokazit v programu. 291 00:13:53,340 --> 00:13:55,700 >> Tak jak bych mohl vzít Výhodou sám? 292 00:13:55,700 --> 00:13:58,970 No, dovolte mi, abych otevřít program že jsem napsal v předstihu, 293 00:13:58,970 --> 00:14:01,450 a hrabat kolem on-line s názvem Hello 4. 294 00:14:01,450 --> 00:14:05,650 A je to téměř totožné, kromě toho, že jeho dostal trochu kontrolu chyb. 295 00:14:05,650 --> 00:14:09,660 V tomto případě jsem se znovu prohlásil Hlavní as ohledem dva argumenty, 296 00:14:09,660 --> 00:14:13,180 ale tentokrát na lince 17, oznámení Dělám trochu kontroly sanity. 297 00:14:13,180 --> 00:14:17,100 Já ujistěte se, že argc rovná se rovná 2. 298 00:14:17,100 --> 00:14:18,960 Vzhledem k tomu, je-li, že znamená, že můžete bezpečně 299 00:14:18,960 --> 00:14:21,420 dotknout nejen držáku 0, ale držák 1. 300 00:14:21,420 --> 00:14:24,330 A já jsem do toho pusťte a vytisknout, v tomto případě, Zamyla nebo Rob 301 00:14:24,330 --> 00:14:26,020 nebo co slovo, které jsem napsal ven. 302 00:14:26,020 --> 00:14:28,020 A teď jen proto, aby trochu správný, 303 00:14:28,020 --> 00:14:31,910 Chystám se výslovně návrat 0 znamenat vše je v pořádku. 304 00:14:31,910 --> 00:14:33,300 Nic zlého se nestalo. 305 00:14:33,300 --> 00:14:38,590 >> Ale konvencí, budu vrátí 1, nebo upřímně nějaké non-hodnota 0, 306 00:14:38,590 --> 00:14:40,160 kdyby se něco pokazilo. 307 00:14:40,160 --> 00:14:43,270 Nyní se uživatel nebude opravdu všimnete, co se děje. 308 00:14:43,270 --> 00:14:50,410 Ve skutečnosti, když půjdu do tohoto adresáře, jsme se přiblížit a dělat, aby ahoj 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla chová, jak jsem očekávat. 310 00:14:54,210 --> 00:14:58,570 Ale kdybych místo nezadávejte nic, se zdánlivě nic neděje, 311 00:14:58,570 --> 00:14:59,680 ale to není krach. 312 00:14:59,680 --> 00:15:04,660 A kdybych místo toho udělat něco jako Rob je prokurista 313 00:15:04,660 --> 00:15:07,550 v Thayer-- sdílení libovolné informace. 314 00:15:07,550 --> 00:15:13,680 Ale oznámení, argv 1, 2, 3, 4, a 5 by nyní existovat v paměti. 315 00:15:13,680 --> 00:15:16,540 To také není to, co můj program očekává, 316 00:15:16,540 --> 00:15:20,300 protože jsem zkontrolovat, zda argc rovná roven 2 nebo ne. 317 00:15:20,300 --> 00:15:22,140 Takže jsem teď bránit proti tomu. 318 00:15:22,140 --> 00:15:25,290 >> Nyní, stejně jako stranou, jsme programmer-- nebo spíše jsme users-- 319 00:15:25,290 --> 00:15:29,670 nikdy vidět, že 0 nebo 1, ale s použitím nástroj s názvem Debugger nebo jiné nástroje, 320 00:15:29,670 --> 00:15:32,250 jak uvidíme před dlouho jste programátor 321 00:15:32,250 --> 00:15:36,590 můžete skutečně vidět, co by mohlo být špatně uvnitř programu. 322 00:15:36,590 --> 00:15:39,170 >> Takže nějaké otázky týkající se argc? 323 00:15:39,170 --> 00:15:40,873 Jo. 324 00:15:40,873 --> 00:15:45,292 >> Diváků: Viděl jsem, kde neměl charakter, [neslyšitelné] 325 00:15:45,292 --> 00:15:49,669 právě řekl string hvězda d, jako je Znak hvězdička čárka. 326 00:15:49,669 --> 00:15:50,710 Jsou ekvivalentní tady? 327 00:15:50,710 --> 00:15:51,626 >> DAVID Malan: Jsou to. 328 00:15:51,626 --> 00:15:55,080 Takže otázka je, máte občas vidět programy 329 00:15:55,080 --> 00:15:57,270 takhle, že ne říci, string argv držák 330 00:15:57,270 --> 00:16:01,015 ale něco říct jako char hvězda argv držáku. 331 00:16:01,015 --> 00:16:03,140 A je tu ještě další varianty, které můžete vidět. 332 00:16:03,140 --> 00:16:04,264 Oni jsou opravdu ekvivalentní. 333 00:16:04,264 --> 00:16:06,240 Nyní máme tyto druh koleček 334 00:16:06,240 --> 00:16:09,737 na ve formě řetězce v CS50 knihovna, ale jen něco málo přes týden 335 00:16:09,737 --> 00:16:12,570 nebo tak budeme odstranit, aby dohromady a vlastně obstrukce 336 00:16:12,570 --> 00:16:16,820 Podívejte se, co char a hvězdy jsou, a jak ty se týkají paměti 337 00:16:16,820 --> 00:16:18,140 zastoupení obecně. 338 00:16:18,140 --> 00:16:19,540 Takže se vrátíme k tomu. 339 00:16:19,540 --> 00:16:21,540 >> Další otázky týkající se naší argv nebo argc? 340 00:16:21,540 --> 00:16:22,397 Jo. 341 00:16:22,397 --> 00:16:24,438 Diváků: Proč se to vrátí Chyba [neslyšitelné]? 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID Malan: Proč to udělal vrátí chybu only-- oh! 344 00:16:29,230 --> 00:16:31,813 V předchozím případě, kdy byly futzing kolem s pamětí, 345 00:16:31,813 --> 00:16:35,110 proč se to jen vrátí chybu když jsem opravdu napsal velký počet? 346 00:16:35,110 --> 00:16:36,620 Stručná odpověď je, že jsme jen měli štěstí. 347 00:16:36,620 --> 00:16:39,240 Obecně řečeno, počítač přiděluje paměť v kusech, 348 00:16:39,240 --> 00:16:42,900 a to mi dal dost velký kus, který Jsem pryč, aniž by si všiml, 349 00:16:42,900 --> 00:16:46,280 dotyku držáku 2, držák 3, držák 50, ale jakmile jsem se tlačil 350 00:16:46,280 --> 00:16:49,080 moje štěstí, šel jsem za Hranice kus paměti 351 00:16:49,080 --> 00:16:50,520 operační systém dal mi. 352 00:16:50,520 --> 00:16:52,720 A to je, když je zakročil a řekl, ne. 353 00:16:52,720 --> 00:16:54,580 Chyba segmentace. 354 00:16:54,580 --> 00:16:55,692 Jo. 355 00:16:55,692 --> 00:16:58,890 >> Diváků: Jak funguje počítač znát hodnotu argc? 356 00:16:58,890 --> 00:17:02,390 >> DAVID Malan: Jak funguje počítač znát hodnotu argc? 357 00:17:02,390 --> 00:17:07,920 Při spuštění programu, tento program, podle povahy blikající řádku 358 00:17:07,920 --> 00:17:11,359 je podal řadu slova, které byly zadány 359 00:17:11,359 --> 00:17:13,300 na výzvu, která byla zadali na příkazovém řádku. 360 00:17:13,300 --> 00:17:16,569 A tak to je váš operační systém, který v podstatě 361 00:17:16,569 --> 00:17:20,329 naplní argumenty Hlavní je pro vás. 362 00:17:20,329 --> 00:17:22,829 Takže to je jedna ze služeb, že dostanete, tak nějak tajně 363 00:17:22,829 --> 00:17:24,869 pod kapotou operační systém. 364 00:17:24,869 --> 00:17:27,118 Další otázky? 365 00:17:27,118 --> 00:17:27,618 Jo. 366 00:17:27,618 --> 00:17:29,787 >> Diváků: Co core dump znamená? 367 00:17:29,787 --> 00:17:31,370 DAVID Malan: Co core dump znamená? 368 00:17:31,370 --> 00:17:32,950 Tak to je dobrá otázka. 369 00:17:32,950 --> 00:17:35,312 A dovolte mi vrátit se do tento adresář zde. 370 00:17:35,312 --> 00:17:37,270 A všimněte si, že Mám nový soubor tam. 371 00:17:37,270 --> 00:17:41,670 Je to opravdu nazývá jádro a to je ve skutečnosti obvykle slušné velikosti souboru. 372 00:17:41,670 --> 00:17:45,300 To je v podstatě snímek obsah paměti mého programu 373 00:17:45,300 --> 00:17:46,902 nebo RAM, když havaroval. 374 00:17:46,902 --> 00:17:49,110 A to bude užitečné, potenciálně diagnosticky, 375 00:17:49,110 --> 00:17:52,850 jakmile budeme mluvit v další přednášce a sekce o ladění, 376 00:17:52,850 --> 00:17:55,730 protože můžete skutečně dělat ekvivalent digitální pitvy 377 00:17:55,730 --> 00:18:00,300 v tomto souboru pomůže zjistit, to, co jste udělali špatně ve vašem programu. 378 00:18:00,300 --> 00:18:01,220 Jo. 379 00:18:01,220 --> 00:18:04,450 >> DIVÁKŮ: Je argc příkazu v sama o sobě, nebo můžete ji pojmenovat něco? 380 00:18:04,450 --> 00:18:05,575 >> DAVID Malan: Dobrá otázka. 381 00:18:05,575 --> 00:18:08,040 Je argc příkaz sám o sobě, nebo můžete ji pojmenovat něco? 382 00:18:08,040 --> 00:18:09,290 Rozhodně to není příkaz. 383 00:18:09,290 --> 00:18:13,500 Je to prostě proměnná je nebo název argument je, 384 00:18:13,500 --> 00:18:15,481 a tak naprosto jsme mohli nazvat tuto foo, 385 00:18:15,481 --> 00:18:18,480 bychom mohli nazvat tento bar, které mají tendenci jako go-to slovy, že počítač 386 00:18:18,480 --> 00:18:19,860 vědec jde. 387 00:18:19,860 --> 00:18:22,820 Ale konvence, budeme používat argc a argv. 388 00:18:22,820 --> 00:18:25,360 Ale to je jen člověk konvence, nic víc. 389 00:18:25,360 --> 00:18:25,860 V pořádku. 390 00:18:25,860 --> 00:18:28,140 Tak se ukázalo, byl jsem vyprávění trochu bílého lie-- 391 00:18:28,140 --> 00:18:31,264 a upřímně řečeno, v budoucnu uvidíte jsme říkali ostatní White Lies. 392 00:18:31,264 --> 00:18:33,510 Ale teď jedeme loupat se po jednom z nich. 393 00:18:33,510 --> 00:18:37,310 V tomto případě je zde, když jsem předtím běžel program, jako je ./hello nebo ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla jsme měli obsah mého paměti počítače při pohledu zhruba jako 395 00:18:42,780 --> 00:18:43,280 to. 396 00:18:43,280 --> 00:18:45,070 Ale vzpomenout, co je řetězec. 397 00:18:45,070 --> 00:18:49,279 Co jsme si řekli před týdnem, co Řetězec je vlastně pod kapotou? 398 00:18:49,279 --> 00:18:50,320 Diváků: Pole znaků. 399 00:18:50,320 --> 00:18:52,111 DAVID Malan: Je to řada znaků, ne? 400 00:18:52,111 --> 00:18:55,760 Takže můžeme mít celou řadu řetězce, ale na druhou stranu, řetězec 401 00:18:55,760 --> 00:18:57,150 je pole znaků. 402 00:18:57,150 --> 00:19:00,010 Takže jestli opravdu chci být anální když kreslím tento obrázek, 403 00:19:00,010 --> 00:19:03,290 Měl bych opravdu kreslení to trochu jako je tento, 404 00:19:03,290 --> 00:19:08,000 , přičemž v každém z nich indexy mého argv pole, 405 00:19:08,000 --> 00:19:11,432 je sama o sobě celý řetězec který sám o sobě je v matici. 406 00:19:11,432 --> 00:19:13,140 A teď nevinná lež říkáme dnes 407 00:19:13,140 --> 00:19:15,181 je, že obraz není vypadají docela takhle. 408 00:19:15,181 --> 00:19:19,110 Ve skutečnosti, malé čtverce jsou obvykle mimo velkých obdélníků 409 00:19:19,110 --> 00:19:19,610 tam. 410 00:19:19,610 --> 00:19:21,280 Ale vrátíme se k tomu zanedlouho. 411 00:19:21,280 --> 00:19:25,440 Ale to je ./hello zpětné lomítko 0, že je speciální znak, který 412 00:19:25,440 --> 00:19:28,310 vymezuje konec řetězce, a máme ještě jeden po 413 00:19:28,310 --> 00:19:29,360 Zamyla jméno. 414 00:19:29,360 --> 00:19:30,900 Takže co to znamená? 415 00:19:30,900 --> 00:19:33,410 >> No, nech mě jít napřed a otevřít další dva příklady 416 00:19:33,410 --> 00:19:35,220 které jsou k dispozici on-line. 417 00:19:35,220 --> 00:19:40,590 Jeden se nazývá argv1.c a druhý je argv2. 418 00:19:40,590 --> 00:19:44,260 To je super-jednoduchý program, který se liší od předchozích programů 419 00:19:44,260 --> 00:19:47,260 v tom, že teď jsem pomocí argc a argv tady. 420 00:19:47,260 --> 00:19:54,300 A teď jsem integraci s pro smyčce v souladu 18, od i = 0 až na argc. 421 00:19:54,300 --> 00:19:56,850 A co mám dělat tento řádek kódu tady? 422 00:19:56,850 --> 00:19:58,270 V angličtině. 423 00:19:58,270 --> 00:20:00,510 To samozřejmě ukazuje použití argc. 424 00:20:00,510 --> 00:20:03,670 Ale v angličtině to, co dělá to dělat, když jsem spustit tento program? 425 00:20:03,670 --> 00:20:04,366 Jo? 426 00:20:04,366 --> 00:20:07,386 >> Diváků: Bude k tisku Obrazovka tolikrát, kolikrát chcete. 427 00:20:07,386 --> 00:20:08,260 DAVID Malan: Přesně tak. 428 00:20:08,260 --> 00:20:10,480 Takže bez ohledu na slova, která jsem zadejte na příkazový řádek, je to 429 00:20:10,480 --> 00:20:13,120 bude opakovat je na mě jeden na řádek. 430 00:20:13,120 --> 00:20:14,370 Tak pojďme do toho a to. 431 00:20:14,370 --> 00:20:17,862 Nech mě jít do mého seznamu a dělat, aby argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 A teď pojďme držet to jednoduchý. 434 00:20:21,770 --> 00:20:23,834 Pojďme dělat nic na prvním místě. 435 00:20:23,834 --> 00:20:26,750 To přece vytisknout na jednu věc, a to je opravdu název programu, 436 00:20:26,750 --> 00:20:28,240 protože to je v závorce 0. 437 00:20:28,240 --> 00:20:33,290 Kdybych teď řekl foo, že to bude dělat ti dva, a když řeknu, foo bar, 438 00:20:33,290 --> 00:20:35,580 to bude říkat ty tři věci. 439 00:20:35,580 --> 00:20:37,740 Tak to je trochu zajímavé, možná. 440 00:20:37,740 --> 00:20:41,450 Ale připomenout, že argv je pole řetězců, 441 00:20:41,450 --> 00:20:45,960 ale řetězec je pole znaků, takže můžeme vzít věci do zářezu 442 00:20:45,960 --> 00:20:48,560 a platí, že základní logika a provést kód, který 443 00:20:48,560 --> 00:20:51,160 Vypadá trochu záhadné, nepochybně. 444 00:20:51,160 --> 00:20:53,540 Ale tím, že vnořený smyčka, něco jako 445 00:20:53,540 --> 00:20:57,030 na to, co by mohlo vyvolat od Mario, Například, pokud jste to udělal takhle. 446 00:20:57,030 --> 00:21:00,380 >> Takže teď zjistíte na lince 19, jsem znovu iterace přes mé argumenty, 447 00:21:00,380 --> 00:21:02,410 z 0 až na argc. 448 00:21:02,410 --> 00:21:05,510 A nyní v souladu 21-- jsem zapůjčení trik z loňského week-- 449 00:21:05,510 --> 00:21:11,090 Já jsem kontrolu toho, co je Délka argv držáku i. 450 00:21:11,090 --> 00:21:12,920 Já ukládání, že odpověď v n. 451 00:21:12,920 --> 00:21:18,230 A pak jsem integraci z j na až n, kde je inicializována na hodnotu 0 j. 452 00:21:18,230 --> 00:21:19,460 Takže, konvence pro počítání. 453 00:21:19,460 --> 00:21:22,335 Poté, co jste použili i pokud máte vnořené smyčky, nemůžete i znovu použít, 454 00:21:22,335 --> 00:21:25,770 jinak budete hadry, případně, hodnota mimo vnitřní smyčku. 455 00:21:25,770 --> 00:21:27,200 Takže jsem pomocí j konvencí. 456 00:21:27,200 --> 00:21:28,020 Mohli bychom použít k. 457 00:21:28,020 --> 00:21:31,080 Pokud máte více než k, budete pravděpodobně příliš mnoho hnízdění, typicky. 458 00:21:31,080 --> 00:21:33,800 Ale teď si všimněte, můj printf linka se mírně liší. 459 00:21:33,800 --> 00:21:37,520 Nejsem tisku% s, já jsem tisk% C, který, samozřejmě, 460 00:21:37,520 --> 00:21:39,460 je zástupný symbol pro char. 461 00:21:39,460 --> 00:21:40,770 >> A teď všimnete tuto syntaxi. 462 00:21:40,770 --> 00:21:41,270 Nové. 463 00:21:41,270 --> 00:21:42,630 Neviděli jsme už dříve. 464 00:21:42,630 --> 00:21:47,290 Ale logicky, to jen znamená, že se té řetězec argv 465 00:21:47,290 --> 00:21:50,067 a dostat j-té, co? 466 00:21:50,067 --> 00:21:50,900 DIVÁKŮ: Character. 467 00:21:50,900 --> 00:21:52,800 DAVID Malan: Znak v tomto řetězci. 468 00:21:52,800 --> 00:21:57,100 Takže pomocí hranatých závorek následuje v hranatých závorkách, 469 00:21:57,100 --> 00:22:00,390 To je první potápění do řetězce argv je, 470 00:22:00,390 --> 00:22:02,225 a pak druhý hranaté závorky s j 471 00:22:02,225 --> 00:22:06,580 je potápění do postav že konkrétní řetězec v argv. 472 00:22:06,580 --> 00:22:09,562 A pak, jen pro jistotu, Jsem tu tisku nový řádek. 473 00:22:09,562 --> 00:22:12,020 Takže teď nech mě jít napřed a otevřít až mírně větší okně 474 00:22:12,020 --> 00:22:13,600 a tak můžeme vidět v akci. 475 00:22:13,600 --> 00:22:15,700 Nech mě jít do této složky. 476 00:22:15,700 --> 00:22:22,550 A teď to, aby argv-2-- whoops-- aby argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 A je to trochu těžké číst vertikálně, 479 00:22:24,860 --> 00:22:27,920 ale to je opravdu jméno Program, následovaný prázdným řádkem. 480 00:22:27,920 --> 00:22:30,210 A teď mě nech jít dál a dělat foo. 481 00:22:30,210 --> 00:22:33,210 Podobně špatně čitelný, ale je to opravdu tisku jeden znak na každém řádku. 482 00:22:33,210 --> 00:22:36,780 A když to udělám bar, je to teď tisk těch řádek po řádku. 483 00:22:36,780 --> 00:22:40,140 Takže stánek s jídlem zde není tolik že wow, podívejte se na tento elegantní nový trik 484 00:22:40,140 --> 00:22:44,750 kde můžete získat na obsah specifických znaků pole, je, 485 00:22:44,750 --> 00:22:48,380 ale jak jsme se s ohledem na tyto základní nápady, jako je indexace do pole, 486 00:22:48,380 --> 00:22:51,620 a indexování do pole, které je v tomto poli, 487 00:22:51,620 --> 00:22:56,180 a právě použití stejné myšlenky na poněkud složitější příklady. 488 00:22:56,180 --> 00:22:59,560 Ale základy opravdu není změnit, a to i od minulého týdne. 489 00:22:59,560 --> 00:23:02,350 >> Teď je to trochu včas, v tom, že vzpomínám, v týdnu nula 490 00:23:02,350 --> 00:23:04,110 jsme hráli s telefonním seznamu, jako je tato. 491 00:23:04,110 --> 00:23:06,670 A i když je to samozřejmě fyzické kusy papíru, 492 00:23:06,670 --> 00:23:09,150 můžete trochu myslet telefonní seznam jako pole. 493 00:23:09,150 --> 00:23:12,770 Jistě, pokud jste byli reimplement tento kousky Tyto kousky papíru 494 00:23:12,770 --> 00:23:15,260 v počítači, pravděpodobně měli byste použít něco 495 00:23:15,260 --> 00:23:20,270 jako pole pro uložení všech těch jména a čísla od A po vší cestě, 496 00:23:20,270 --> 00:23:23,800 díky Z. Tak to je pěkné, protože umožňuje nám příležitost, 497 00:23:23,800 --> 00:23:28,310 Možná, aby zvážila, jak byste mohli skutečně realizovat něco takového. 498 00:23:28,310 --> 00:23:31,250 Jako s řadou dveří zde. 499 00:23:31,250 --> 00:23:36,380 Takže když jsem mohli-- budeme potřebovat dobrovolně přijít nahoru. 500 00:23:36,380 --> 00:23:36,980 Pojďme se podívat. 501 00:23:36,980 --> 00:23:40,650 Neznámá tvář snad, možná neznámá tvář. 502 00:23:40,650 --> 00:23:42,090 Jak se o oranžovou barvou? 503 00:23:42,090 --> 00:23:42,680 Tady. 504 00:23:42,680 --> 00:23:45,870 Oranžová košile, pojď nahoru. 505 00:23:45,870 --> 00:23:52,230 >> Pojďme dál nyní a pohyb tyto dveře na stranu, 506 00:23:52,230 --> 00:23:54,020 přesunout to z cesty na chvíli. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Jak se jmenujete? 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVID Malan: Ajay. 511 00:23:58,655 --> 00:23:58,680 David. 512 00:23:58,680 --> 00:23:59,451 Těší mě. 513 00:23:59,451 --> 00:23:59,950 V pořádku. 514 00:23:59,950 --> 00:24:04,500 Takže máme za těchto šest Dveře digitálně na screen-- 515 00:24:04,500 --> 00:24:07,810 Nebo spíš sedm dveře na screen-- spoustu čísel. 516 00:24:07,810 --> 00:24:10,099 A já jsem ti nic v advance-- souhlasil? 517 00:24:10,099 --> 00:24:11,140 AJAY: Nic předem. 518 00:24:11,140 --> 00:24:14,730 DAVID Malan: Všechno, co chci, abys Nyní je třeba najít pro mě a pro nás, 519 00:24:14,730 --> 00:24:20,920 Opravdu, číslo 50, jeden krok v době. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Počet 50? 521 00:24:21,830 --> 00:24:22,580 >> DAVID Malan: číslo 50. 522 00:24:22,580 --> 00:24:24,746 A vy můžete odhalit, co je Za každou z těchto dveří 523 00:24:24,746 --> 00:24:27,930 jednoduše tím, že se jí dotknete prstem. 524 00:24:27,930 --> 00:24:31,364 Sakra. [SMÍCH] 525 00:24:31,364 --> 00:24:34,560 >> [APPLAUSE] 526 00:24:34,560 --> 00:24:39,540 >> Velmi dobře. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Máme krásný dárek cena pro Vás. 529 00:24:44,090 --> 00:24:46,520 Vyberte si z filmů jsme diskutovali minulý týden. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: Oh, chlape. 531 00:24:47,362 --> 00:24:49,050 Oh, jsem nikdy neviděl Spaceballs. 532 00:24:49,050 --> 00:24:49,520 >> DAVID Malan: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 V pořádku. 534 00:24:50,140 --> 00:24:53,790 Takže držet jen na okamžik. 535 00:24:53,790 --> 00:24:57,430 Jak-- udělejme to učenlivý moment-- 536 00:24:57,430 --> 00:25:00,412 jak se vám jít o najít číslo 50? 537 00:25:00,412 --> 00:25:01,370 AJAY: Vybral jsem náhodně. 538 00:25:01,370 --> 00:25:03,420 DAVID Malan: Takže jste si vybrali náhodně a měl jsem štěstí. 539 00:25:03,420 --> 00:25:03,790 AJAY: Ano. 540 00:25:03,790 --> 00:25:04,456 DAVID Malan: OK. 541 00:25:04,456 --> 00:25:05,050 Výborně. 542 00:25:05,050 --> 00:25:08,470 Takže teď, měl tě dostal štěstí, co ještě 543 00:25:08,470 --> 00:25:10,210 by se stalo, za těmito dveřmi? 544 00:25:10,210 --> 00:25:12,930 Takže když jsem se do toho pusťte a ukazují tato čísla zde, 545 00:25:12,930 --> 00:25:15,180 ve skutečnosti jsou v náhodném pořadí. 546 00:25:15,180 --> 00:25:17,750 A to nejlepší, co mohl mít udělal, upřímně řečeno, není v konečném důsledku 547 00:25:17,750 --> 00:25:19,410 v nejhorším případě, kontrola je všechny. 548 00:25:19,410 --> 00:25:23,000 Takže máš super-štěstí, které není to, co bychom zavolat algoritmus. 549 00:25:23,000 --> 00:25:24,730 Ano, gratulujeme. 550 00:25:24,730 --> 00:25:27,010 Ale teď let's-- humor mi, kdybys mohl. 551 00:25:27,010 --> 00:25:28,310 Pojďme se na této kartě zde. 552 00:25:28,310 --> 00:25:31,460 A tady jsou čísla v jasně co se zdá být náhodné pořadí, 553 00:25:31,460 --> 00:25:32,280 a oni byli. 554 00:25:32,280 --> 00:25:35,160 Ale teď, pokud místo toho jsem nárok že za těmito dveřmi 555 00:25:35,160 --> 00:25:39,070 jsou čísla, která jsou setříděny. 556 00:25:39,070 --> 00:25:41,780 Cílem je nyní také kde nás najdete číslo 50. 557 00:25:41,780 --> 00:25:45,910 Ale to algoritmicky a Řekněte nám, jak budete o tom. 558 00:25:45,910 --> 00:25:48,020 A pokud si ho najít, budete mít film. 559 00:25:48,020 --> 00:25:49,520 Nenajdete to, můžete dát zpět. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Tak jdu zkontrolovat konce nejprve zjistit, zda there's-- 562 00:25:58,112 --> 00:26:02,048 [Smích a APPLAUSE] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID Malan: Tady to je. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Pojďme se podívat na jeden z Ajay předchůdců, 567 00:26:21,700 --> 00:26:25,450 Sean, který nebyl tak šťastný. 568 00:26:25,450 --> 00:26:28,670 OK, takže vaším úkolem zde, Seane, je následující. 569 00:26:28,670 --> 00:26:32,970 Jsem schovaný za těchto dveře číslo sedm, 570 00:26:32,970 --> 00:26:37,200 ale zastrčený v některé z těchto dveří jakož i jiné non-záporná čísla. 571 00:26:37,200 --> 00:26:40,730 A vaším cílem je myslet na to, horní řada čísel jen jako pole. 572 00:26:40,730 --> 00:26:43,590 Jsme jen sled kusů papíru s čísly za sebou. 573 00:26:43,590 --> 00:26:47,640 A vaším cílem je, pouze pomocí horní Pole tu, najděte mi číslo sedm. 574 00:26:47,640 --> 00:26:51,200 A my se pak bude kritika jak se vám jít o to dělá. 575 00:26:51,200 --> 00:26:52,920 Kde nás najdete číslo sedm, prosím. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Ne 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 To není chyták. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 V tomto okamžiku je vaše skóre není příliš dobře, takže si klidně dál. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 Jdi na. 590 00:27:39,802 --> 00:27:42,510 Upřímně řečeno, nemohu si pomoci, ale zajímalo, to, co jste ještě myslet. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: Dokážu se pouze z horní řady. 592 00:27:44,990 --> 00:27:46,240 DAVID Malan: pouze horní řádek. 593 00:27:46,240 --> 00:27:47,281 Takže máš tři vlevo. 594 00:27:47,281 --> 00:27:48,310 Tak mi najít 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [Publikum křičí Návrh] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Takže oba to byly úžasné z velmi rozdílných důvodů. 599 00:28:26,130 --> 00:28:29,150 Tak tohle je místo, kde jsme se skončili před chvílí, 600 00:28:29,150 --> 00:28:32,530 a Klíčovou myšlenkou zde se tyto dveře měly čísla 601 00:28:32,530 --> 00:28:37,390 za nimi, které byly tříděny, ideální stánek s jídlem, pro kterou je to, že byste mohli udělat 602 00:28:37,390 --> 00:28:39,670 podstatně lépe Tato druhá example-- 603 00:28:39,670 --> 00:28:42,380 a, opravdu, to byl Sean První pokus s náhodnými čísly 604 00:28:42,380 --> 00:28:45,460 stejně before-- ale jakmile jak tato čísla jsou tříděny, 605 00:28:45,460 --> 00:28:47,980 podobně jako v telefonním seznamu, co můžete samozřejmě udělat? 606 00:28:47,980 --> 00:28:50,090 Nebo jak můžete využít, že znalosti? 607 00:28:50,090 --> 00:28:51,530 Jo. 608 00:28:51,530 --> 00:28:54,910 >> Diváků: Jdete na půli cesty [neslyšitelné]. 609 00:28:54,910 --> 00:28:55,660 DAVID Malan: Jo. 610 00:28:55,660 --> 00:28:56,160 Přesně tak. 611 00:28:56,160 --> 00:28:59,680 Takže prvotní instinkt Ajay byl zkontrolovat konců, pokud si dobře vzpomínám, 612 00:28:59,680 --> 00:29:02,320 a pak jsme se trochu hotové Příklad rychle. 613 00:29:02,320 --> 00:29:05,220 Ale když jsme začali dělat to více metodicky v tomto směru, 614 00:29:05,220 --> 00:29:07,860 ale vycházeje možná v střední, protože jsou tříděny, 615 00:29:07,860 --> 00:29:10,900 jakmile se odhalí číslo 16, proto vím-- 616 00:29:10,900 --> 00:29:14,850 a pojďme dělat přesně že-- my Proto víme, že 50, v dnešním případě, 617 00:29:14,850 --> 00:29:16,080 má být doprava. 618 00:29:16,080 --> 00:29:18,735 Tak jako v prvním týdnu, kdy nula jsme se roztrhl telefonního seznamu na polovinu 619 00:29:18,735 --> 00:29:21,490 a hodil polovinu problém pryč, stejný nápad zde. 620 00:29:21,490 --> 00:29:23,680 Můžeme hodit to polovina problému pryč. 621 00:29:23,680 --> 00:29:25,730 A pravděpodobně to, co vás mohl udělat algoritmicky, 622 00:29:25,730 --> 00:29:28,710 Jakmile budete vědět, že 50 musí být vpravo, pokud je to kdekoliv, 623 00:29:28,710 --> 00:29:31,390 je zkusit tam, uprostřed ze zbývajících dveří. 624 00:29:31,390 --> 00:29:33,450 Samozřejmě, 50 je vyšší než 42, takže můžeme 625 00:29:33,450 --> 00:29:36,060 hodit to zbývající Čtvrtina problému pryč, 626 00:29:36,060 --> 00:29:38,510 a, konečně, jaké něco jako 50. 627 00:29:38,510 --> 00:29:41,050 Ale stejně jako u telefonní seznam, tato čísla 628 00:29:41,050 --> 00:29:44,560 byla nám dána již v tříděný pořadí, což nám ponechává 629 00:29:44,560 --> 00:29:47,450 s otázkou, jak se vám dát věci do seřazené pořádku? 630 00:29:47,450 --> 00:29:49,640 A upřímně řečeno, za jakou cenu? 631 00:29:49,640 --> 00:29:51,390 To je jedna věc, že ​​je podal telefonního seznamu 632 00:29:51,390 --> 00:29:54,810 a ohromit své přátele tím, že najde telefonní číslo opravdu rychle, že jo? 633 00:29:54,810 --> 00:29:58,520 Trhací 32 stran za účelem zjištění osoba z 4000000000 stran, 634 00:29:58,520 --> 00:30:00,470 jsme si řekli, byl jeden extrémní příklad. 635 00:30:00,470 --> 00:30:03,320 Ale jak dlouho to trvalo Verizon třídit, že telefonní seznam? 636 00:30:03,320 --> 00:30:06,170 Kolik času to trvalo nám seřadit těchto sedm čísel? 637 00:30:06,170 --> 00:30:10,110 To je otázka, kterou máme dosud zcela ignoroval. 638 00:30:10,110 --> 00:30:12,330 >> Takže pojďme odpovědět na tuto otázku teď. 639 00:30:12,330 --> 00:30:15,920 A všichni jsme z filmů nyní, ale máme nějaké stresové koule. 640 00:30:15,920 --> 00:30:19,480 Je-li, řekněme, osm dobrovolníků Nevadilo by nám připojila tady? 641 00:30:19,480 --> 00:30:24,100 Pojďme dál a dělat, co čtyři z vás, vy tři tady? 642 00:30:24,100 --> 00:30:25,290 Získat nějaké nové tváře. 643 00:30:25,290 --> 00:30:27,220 A čtyři z vás tam? 644 00:30:27,220 --> 00:30:30,760 A teď-- nesmíme zaujatost tady-- a číslo osm sem na konci. 645 00:30:30,760 --> 00:30:32,060 Pojď nahoru. 646 00:30:32,060 --> 00:30:32,560 V pořádku. 647 00:30:32,560 --> 00:30:37,480 Takže to, co jsme tady Každý z vás je číslo. 648 00:30:37,480 --> 00:30:40,055 Pokud byste chtěli jet dopředu, aby toto číslo. 649 00:30:40,055 --> 00:30:40,763 Jak se jmenujete? 650 00:30:40,763 --> 00:30:41,950 >> ARTIE: Artie. 651 00:30:41,950 --> 00:30:43,100 >> DAVID Malan: Artie, v pořádku. 652 00:30:43,100 --> 00:30:44,297 Jsi číslo jedna. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: Amin. 654 00:30:45,310 --> 00:30:46,060 DAVID Malan: Amin. 655 00:30:46,060 --> 00:30:46,820 David. 656 00:30:46,820 --> 00:30:47,530 Vy jste číslo dvě. 657 00:30:47,530 --> 00:30:49,100 A do toho, jak jsem ruku si listy papíru, 658 00:30:49,100 --> 00:30:52,130 seřadit sami se před hudby stojí ve stejném pořadí, jako tam. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Ahoj, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID Malan: Andy, to je hezké, že tě vidím. 661 00:30:53,970 --> 00:30:54,520 Číslo 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID Malan: Jacob, číslo 4. 664 00:30:56,760 --> 00:30:57,549 Vítejte na palubě. 665 00:30:57,549 --> 00:30:58,090 GRANT: Grant. 666 00:30:58,090 --> 00:30:58,881 DAVID Malan: Grant. 667 00:30:58,881 --> 00:31:00,348 Číslo 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID Malan: Alanna, číslo 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Frances. 671 00:31:03,589 --> 00:31:04,880 DAVID Malan: Frances, číslo 7. 672 00:31:04,880 --> 00:31:05,200 A? 673 00:31:05,200 --> 00:31:05,830 >> Rachel: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID Malan: Rachel, číslo 8. 675 00:31:06,815 --> 00:31:07,100 V pořádku. 676 00:31:07,100 --> 00:31:08,766 Nestyď se a dostat se v tomto pořadí. 677 00:31:08,766 --> 00:31:11,440 Dovolte mi, abych dal jeden zbývající hudba stojí na místě. 678 00:31:11,440 --> 00:31:13,670 Kde budete potřebovat stojan? 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Jděte do toho a jen dát své číslo kde publikum je vidět na, 681 00:31:18,710 --> 00:31:20,340 hudební stojan směrem ven. 682 00:31:20,340 --> 00:31:27,240 A doufejme, že naše první Kontrola rozum tady-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Počkej chvíli. 685 00:31:29,070 --> 00:31:31,140 Nemáme k 8. 686 00:31:31,140 --> 00:31:35,180 Musím k vám vypudit ze Příklad nějak. 687 00:31:35,180 --> 00:31:35,680 Ne 688 00:31:35,680 --> 00:31:36,940 Ne, to je v pořádku. 689 00:31:36,940 --> 00:31:37,890 Pojďme se podívat. 690 00:31:37,890 --> 00:31:38,880 Můžeme to udělat. 691 00:31:38,880 --> 00:31:39,440 Stand by. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Jdeme na to. 694 00:31:45,740 --> 00:31:46,800 Správně. 695 00:31:46,800 --> 00:31:47,360 V pořádku. 696 00:31:47,360 --> 00:31:50,260 Tak, teď máme 8, 1, 3, 7 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Výborně. 699 00:31:51,360 --> 00:31:54,400 >> Takže otázka po ruce, je na jakou cenu, a pomocí jaké metody, 700 00:31:54,400 --> 00:31:58,580 můžeme vlastně tato čísla zde třídění takže můžeme trochu pozpátku, 701 00:31:58,580 --> 00:32:02,759 nakonec, a decide-- je to opravdu působivé, je to opravdu efektivní, 702 00:32:02,759 --> 00:32:04,550 že mohu rozdělit a dobýt telefonní seznam? 703 00:32:04,550 --> 00:32:06,716 Je to opravdu efektivnější, že Mohu rozděl a panuj 704 00:32:06,716 --> 00:32:08,600 tyto digitální ks papíru na palubě, 705 00:32:08,600 --> 00:32:14,500 pokud možná, že to bude stát nás štěstí v čase nebo energie, nebo CPU cyklů 706 00:32:14,500 --> 00:32:17,340 skutečně získat naše data do nějakého tříděném pořádku? 707 00:32:17,340 --> 00:32:18,930 Takže pojďme se zeptat na tuto otázku. 708 00:32:18,930 --> 00:32:22,077 >> Takže prvé, tato čísla jsou ve skoro náhodném pořadí, 709 00:32:22,077 --> 00:32:24,160 a budu navrhovat jeden algoritmus, nebo proces 710 00:32:24,160 --> 00:32:25,970 , podle kterého můžeme řadit tyto lidi. 711 00:32:25,970 --> 00:32:28,100 Chystám se blíží to docela naivně. 712 00:32:28,100 --> 00:32:30,730 A já si uvědomit že je to tak trochu hodně pro mě 713 00:32:30,730 --> 00:32:32,890 zabalit mou mysl kolem celý datový soubor najednou. 714 00:32:32,890 --> 00:32:33,640 Ale víte co? 715 00:32:33,640 --> 00:32:37,450 Chystám se udělat nějaký velmi jednoduché marginální opravy. 716 00:32:37,450 --> 00:32:41,152 4 a 2 mimo provoz, v případě, že Cílem je přejít od 1 až na 8. 717 00:32:41,152 --> 00:32:41,860 Tak víš co? 718 00:32:41,860 --> 00:32:43,776 Budu mít vás kluci vyměnit, pokud přepnete 719 00:32:43,776 --> 00:32:46,380 fyzicky pozice a vaše kousky papíru. 720 00:32:46,380 --> 00:32:47,894 Nyní 4 a 6, to jsou v pořadí. 721 00:32:47,894 --> 00:32:49,060 Chystám se odejít ti být. 722 00:32:49,060 --> 00:32:50,227 6 a 8, ty jsou v pořádku. 723 00:32:50,227 --> 00:32:51,185 Chystáte se nechat je být. 724 00:32:51,185 --> 00:32:52,170 8 a1, mimo provoz. 725 00:32:52,170 --> 00:32:54,790 Pokud vy dva to nebude vadit, že vymění. 726 00:32:54,790 --> 00:32:57,300 Nyní 8 a 3, pokud byste mohli vyměnit. 727 00:32:57,300 --> 00:32:59,320 8 a 7, pokud byste mohli vyměnit. 728 00:32:59,320 --> 00:33:01,790 A 8 a 5, pokud byste mohli vyměnit. 729 00:33:01,790 --> 00:33:03,980 >> Teď jsem to udělal? 730 00:33:03,980 --> 00:33:05,200 Ne, samozřejmě že ne. 731 00:33:05,200 --> 00:33:07,880 Ale já jsem dělal situace lepší, že jo? 732 00:33:07,880 --> 00:33:09,430 Jaká byla Vaše jméno znovu, číslo 8? 733 00:33:09,430 --> 00:33:10,055 >> Rachel: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID Malan: Takže Rachel má účinně bublal pěkně daleko, 735 00:33:12,850 --> 00:33:15,660 celou cestu až do konce moje pole čísel zde. 736 00:33:15,660 --> 00:33:17,310 A tak, že problém je trochu vyřešen. 737 00:33:17,310 --> 00:33:21,670 Teď, jasně, 2 stále potřebuje pohybovat trochu, 4 a 6 a 1. 738 00:33:21,670 --> 00:33:24,420 Ale já jsem zdá se, že se dostali trochu blíž k řešení. 739 00:33:24,420 --> 00:33:26,790 Takže pojďme se vztahují ta samá opět naivní heuristické. 740 00:33:26,790 --> 00:33:27,690 2 a 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 a 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 a 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Pojďme výměnu. 744 00:33:32,230 --> 00:33:33,200 6 a 3, mm-mm. 745 00:33:33,200 --> 00:33:34,420 Pojďme výměnu. 746 00:33:34,420 --> 00:33:35,580 6 a 7 je v pořádku. 747 00:33:35,580 --> 00:33:36,590 7 a 5, ani náhodou. 748 00:33:36,590 --> 00:33:37,790 Pojďme výměnu. 749 00:33:37,790 --> 00:33:38,470 A teď 7 a 8. 750 00:33:38,470 --> 00:33:39,862 A co se jmenuješ? 751 00:33:39,862 --> 00:33:40,570 FRANCES: Frances. 752 00:33:40,570 --> 00:33:41,445 DAVID Malan: Frances. 753 00:33:41,445 --> 00:33:44,230 Takže teď Frances je ještě lepší postavení, protože teď 7 a 8 754 00:33:44,230 --> 00:33:46,440 jsou správně bublal až na vrchol. 755 00:33:46,440 --> 00:33:47,510 Tak 2 a 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 a 1, swap pojďme. 757 00:33:48,720 --> 00:33:50,410 4 a 3, swap pojďme. 758 00:33:50,410 --> 00:33:51,550 4 a 6, jsi v pořádku. 759 00:33:51,550 --> 00:33:53,340 6 a 5, swap pojďme. 760 00:33:53,340 --> 00:33:54,590 A teď ti chlapi jsou dobré. 761 00:33:54,590 --> 00:33:55,780 Už tam skoro jsme. 762 00:33:55,780 --> 00:33:57,706 2 a 1, mimo provoz, tak vyměnit. 763 00:33:57,706 --> 00:33:59,080 A teď mě nech dělat kontrolu zdravý rozum. 764 00:33:59,080 --> 00:34:03,080 2 a 3, 3 a 4, 4 a 5, 5 a 6, 6 a 7, 8. 765 00:34:03,080 --> 00:34:05,060 OK, takže jsme hotovi. 766 00:34:05,060 --> 00:34:09,310 >> Ale za jakou cenu udělal já Tato čísla seřadit tady? 767 00:34:09,310 --> 00:34:13,960 No, kolik kroků nebo jo potenciálně se při řazení tyto lidi? 768 00:34:13,960 --> 00:34:15,710 No, tak se vrátíme na tuto otázku. 769 00:34:15,710 --> 00:34:18,030 Ale, upřímně řečeno, pokud máte nudit, je to 770 00:34:18,030 --> 00:34:22,270 druh odhaluje v tom, že to není možná nejefektivnější algoritmus. 771 00:34:22,270 --> 00:34:25,230 A skutečně, upřímně řečeno, potím všechny další chůzi sem a tam. 772 00:34:25,230 --> 00:34:26,639 To se necítil zvlášť efektivní. 773 00:34:26,639 --> 00:34:27,805 Tak pojďme zkusit něco jiného. 774 00:34:27,805 --> 00:34:31,870 Pokud byste mohli obnovit sami do těchto osmi hodnot. 775 00:34:31,870 --> 00:34:32,969 Dobrá práce. 776 00:34:32,969 --> 00:34:36,570 >> Pojďme se podívat digitálně, jen za před chvílí jsme se zkusit něco jiného, 777 00:34:36,570 --> 00:34:38,179 na to, co se právě stalo. 778 00:34:38,179 --> 00:34:41,330 Tady nahoře, ty jsi asi vidět vizualizace z těchto osmi lidí 779 00:34:41,330 --> 00:34:44,719 přičemž modré a červené sloupce představují čísla. 780 00:34:44,719 --> 00:34:46,670 Vyšší je sloupec, Čím vyšší je číslo. 781 00:34:46,670 --> 00:34:48,510 Čím kratší je bar, menší počet. 782 00:34:48,510 --> 00:34:51,560 A co budete vidět, je v náhodném pořadí více než osm z nich. 783 00:34:51,560 --> 00:34:55,830 Budeš vidět tyto tyče dostat řazeny podle stejného algoritmu, 784 00:34:55,830 --> 00:34:59,890 nebo sadu instrukcí, které zavoláme nadále bubble sort. 785 00:34:59,890 --> 00:35:04,000 Tak všimnout, každý druhý nebo tak, dva bary se rozsvítí červeně, 786 00:35:04,000 --> 00:35:05,590 jsou porovnávány s počítačem. 787 00:35:05,590 --> 00:35:08,630 A pak se v případě, že velký bar a malý bar jsou mimo provoz, 788 00:35:08,630 --> 00:35:11,220 oni jsou vyměněny za mě. 789 00:35:11,220 --> 00:35:15,120 >> Teď je to neuvěřitelně únavné se dívat na to, jistě, 790 00:35:15,120 --> 00:35:18,630 velmi dlouho, ale všimnete takeaway-- velké tyče pohybující se doprava, 791 00:35:18,630 --> 00:35:20,460 malé bary pohybující se doleva. 792 00:35:20,460 --> 00:35:23,380 Pojďme zrušit tento proces a urychlíte 793 00:35:23,380 --> 00:35:27,330 je mnohem rychlejší, takže můžeme si o tom, co na vysoké úrovni, 794 00:35:27,330 --> 00:35:29,970 opravdu, bublina trochu dělá. 795 00:35:29,970 --> 00:35:33,150 Ve skutečnosti, je to bublá až pravá strana seznamu, 796 00:35:33,150 --> 00:35:35,260 nebo pole, tím větší barů. 797 00:35:35,260 --> 00:35:40,020 A naopak, malé bary jsou bublající cestu dolů na levé straně, 798 00:35:40,020 --> 00:35:42,950 i když v rychlejším tempu než jsme dosud udělali. 799 00:35:42,950 --> 00:35:45,850 Takže těžší vidět s lidmi, ale vizuálně to je opravdu to, co 800 00:35:45,850 --> 00:35:46,540 se děje. 801 00:35:46,540 --> 00:35:49,110 >> Ale zkusme to zásadně Odlišný přístup teď. 802 00:35:49,110 --> 00:35:52,387 Zkusme jiný algoritmus, kdy jsme tě 803 00:35:52,387 --> 00:35:59,640 kluci začít v těchto původních místa, ve kterém byl tento příkaz zde. 804 00:35:59,640 --> 00:36:00,827 A pojďme do toho hned. 805 00:36:00,827 --> 00:36:02,910 A já jdu něco dělat ještě jednodušší, že jo? 806 00:36:02,910 --> 00:36:06,710 Ve zpětném pohledu, vyměňovat po dvou znovu a znovu, skoro trochu chytrý. 807 00:36:06,710 --> 00:36:10,460 Pojďme dělat věci ještě více naivně, kde, když chci řadit tyto lidi, 808 00:36:10,460 --> 00:36:12,560 dovolte mi, abych dál Pro nejmenší prvek. 809 00:36:12,560 --> 00:36:14,570 Takže teď, 4 je Nejmenší číslo jsem kdy viděl. 810 00:36:14,570 --> 00:36:15,695 Budu si to pamatovat. 811 00:36:15,695 --> 00:36:17,750 Ne, dva je lepší, a pamatujte, že. 812 00:36:17,750 --> 00:36:20,730 1 je ještě menší. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 OK. 815 00:36:22,470 --> 00:36:23,750 One-- co se jmenuješ? 816 00:36:23,750 --> 00:36:24,400 >> ARTIE: Artie. 817 00:36:24,400 --> 00:36:24,610 >> DAVID Malan: Artie. 818 00:36:24,610 --> 00:36:25,460 Takže, Artie, jděte do toho. 819 00:36:25,460 --> 00:36:27,043 Chystám se tě vytáhnout z linky. 820 00:36:27,043 --> 00:36:28,400 Pokud byste mohli přijít sem. 821 00:36:28,400 --> 00:36:30,790 A já potřebuji, aby se prostor pro něj. 822 00:36:30,790 --> 00:36:32,040 Máme bodu rozhodnutí zde. 823 00:36:32,040 --> 00:36:36,000 Jak můžeme vytvořit prostor pro Artie zde na začátku, kde číslo 1 patří? 824 00:36:36,000 --> 00:36:36,770 >> DIVÁKŮ: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID Malan: OK, mohly přesunout všechny. 826 00:36:38,950 --> 00:36:40,860 Ale navrhnout optimalizaci. 827 00:36:40,860 --> 00:36:43,410 Že se cítí trochu nepříjemné pro mě zeptat čtyři lidi 828 00:36:43,410 --> 00:36:44,620 přesunout celou cestu dolů. 829 00:36:44,620 --> 00:36:45,520 Co jiného jsem mohl dělat? 830 00:36:45,520 --> 00:36:46,360 >> Diváků: Přepínač je. 831 00:36:46,360 --> 00:36:46,850 >> DAVID Malan: je spínač. 832 00:36:46,850 --> 00:36:47,900 A co se jmenuješ? 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID Malan: Jacob, pohybovat. 835 00:36:50,330 --> 00:36:54,440 Mnohem efektivnější, jen aby měli Místa swapové Jacob s Artie, 836 00:36:54,440 --> 00:36:56,710 na rozdíl nutí všechny čtyři z těchto lidí, 837 00:36:56,710 --> 00:36:58,734 děkuji moc, aby jejich správná poloha. 838 00:36:58,734 --> 00:37:01,150 Co je hezké o Artie nyní, že je ve své správné poloze. 839 00:37:01,150 --> 00:37:02,060 Pojďme to udělat znovu. 840 00:37:02,060 --> 00:37:03,730 2, to je nejmenší číslo, co jsem viděl. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 OK. 843 00:37:06,190 --> 00:37:07,467 2 je určitě nejmenší. 844 00:37:07,467 --> 00:37:08,550 Nemusíte dělat žádnou práci. 845 00:37:08,550 --> 00:37:09,320 Udělejme to znovu. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Nejmenší? 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Ne. 850 00:37:11,590 --> 00:37:11,720 4? 851 00:37:11,720 --> 00:37:12,220 Ooh. 852 00:37:12,220 --> 00:37:13,420 Dovolte mi, abych pamatovat 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Dovolte mi, abych pamatovat 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Nejmenší číslo jsem vidět na tomto průchodu je 3. 857 00:37:18,490 --> 00:37:20,340 Pokud byste pojď ven. 858 00:37:20,340 --> 00:37:21,986 Kam jdeme, aby vám? 859 00:37:21,986 --> 00:37:22,860 A Jak se jmenujete? 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID Malan: Alanna jsme bude muset vystěhovat. 862 00:37:25,780 --> 00:37:28,670 Ale to je efektivnější, jen vyměnit dva lidi, 863 00:37:28,670 --> 00:37:31,850 než mít více lidí ve skutečnosti vyhnout všem. 864 00:37:31,850 --> 00:37:32,850 Nyní se pojďme to udělat znovu. 865 00:37:32,850 --> 00:37:34,980 Jdu vybrat 4, tak pojď ven. 866 00:37:34,980 --> 00:37:36,540 A kdo to bude pohybovat? 867 00:37:36,540 --> 00:37:37,750 Číslo 8, samozřejmě. 868 00:37:37,750 --> 00:37:40,260 Kdybych teď najít číslo 5, pojď ven. 869 00:37:40,260 --> 00:37:42,104 Číslo 8 se dostane opět vypuzen. 870 00:37:42,104 --> 00:37:43,770 Já jsem teď bude najít číslo 6 na místě. 871 00:37:43,770 --> 00:37:44,410 7 na místě. 872 00:37:44,410 --> 00:37:45,080 8 v místě. 873 00:37:45,080 --> 00:37:48,590 >> To, co jsme právě udělali je něco, co nazývá výběr třídit, 874 00:37:48,590 --> 00:37:52,560 a pokud si to představit, je to bude cítit trochu jinak. 875 00:37:52,560 --> 00:37:56,800 Pojďme do toho a z toho Nabídka zde tento visualization-- 876 00:37:56,800 --> 00:38:02,920 změňme to na-- pojď, Firefox. 877 00:38:02,920 --> 00:38:07,610 Pojďme to změnit do výběru druhu. 878 00:38:07,610 --> 00:38:11,830 A pojďme urychlí jako dříve, a spusťte vizualizaci teď. 879 00:38:11,830 --> 00:38:13,990 A tento algoritmus jiný pocit k tomu. 880 00:38:13,990 --> 00:38:16,480 V každé iteraci, upřímně řečeno, je to ještě jednodušší. 881 00:38:16,480 --> 00:38:18,385 Já jsem jen výběrem nejmenší prvek. 882 00:38:18,385 --> 00:38:21,510 A teď, upřímně řečeno, jsem trochu štěstí, že čas, v tom, že řazeny super-rychle. 883 00:38:21,510 --> 00:38:22,660 Tyto prvky byly náhodné. 884 00:38:22,660 --> 00:38:25,520 Není to, jak jsme si nakonec vidět, zásadně rychlejší. 885 00:38:25,520 --> 00:38:29,400 Ale podívejme se třetí a poslední přístup, který zde o tom, co se děje. 886 00:38:29,400 --> 00:38:36,230 Tak pojďme do toho pusťte a znovu vám kluci jeden poslední čas, aby se v tomto pořadí zde. 887 00:38:36,230 --> 00:38:38,450 >> A teď, budu být trochu chytřejší, 888 00:38:38,450 --> 00:38:40,220 jen završují naše algoritmy. 889 00:38:40,220 --> 00:38:41,230 Chystám se to udělat. 890 00:38:41,230 --> 00:38:43,140 Chystám se jít tam a zpět tak. 891 00:38:43,140 --> 00:38:44,900 Upřímně řečeno, už mě nebaví vše pojezdu. 892 00:38:44,900 --> 00:38:47,691 Jdu jen, aby se to, co jsem uveden na začátku seznamu, 893 00:38:47,691 --> 00:38:49,460 a budu třídit že tehdy a tam. 894 00:38:49,460 --> 00:38:50,140 Tak jsme tady. 895 00:38:50,140 --> 00:38:51,030 Číslo 4. 896 00:38:51,030 --> 00:38:53,680 Jdu vložit číslo 4 do seřazený seznam. 897 00:38:53,680 --> 00:38:54,180 Hotovo. 898 00:38:54,180 --> 00:38:58,300 Tvrdím nyní, a jen proto, aby to více jasné, tato část mého seznamu je řazen. 899 00:38:58,300 --> 00:39:02,610 Je to trochu hloupé tvrzení, ale ve skutečnosti 4 je seřazen v seznamu velikost jednoho. 900 00:39:02,610 --> 00:39:04,210 Teď, budu trvat na počtu 2. 901 00:39:04,210 --> 00:39:07,670 Číslo 2 Já jsem teď bude vložit na správné místo. 902 00:39:07,670 --> 00:39:08,680 Takže tam, kde se dva patří? 903 00:39:08,680 --> 00:39:09,824 Je zřejmé, že tady. 904 00:39:09,824 --> 00:39:11,490 Takže jděte do toho a vrátit, pokud mohl. 905 00:39:11,490 --> 00:39:14,406 A proč ne vy jen se vaše hudba stojí s vámi tentokrát. 906 00:39:14,406 --> 00:39:17,020 A pojďme násilně vložit vás do začátku seznamu. 907 00:39:17,020 --> 00:39:17,936 Tak trochu víc práce. 908 00:39:17,936 --> 00:39:20,890 Musel jsem se pohybovat kolem Jacoba, a Jak se jmenujete? 909 00:39:20,890 --> 00:39:21,420 >> AMIN: Amin. 910 00:39:21,420 --> 00:39:22,270 >> DAVID Malan: Amin. 911 00:39:22,270 --> 00:39:24,350 Ale aspoň jsem se tam a zpět. 912 00:39:24,350 --> 00:39:25,739 Jen jsem s věcí, jak jsem jít. 913 00:39:25,739 --> 00:39:27,530 Já jsem jen vložením na správném místě. 914 00:39:27,530 --> 00:39:29,220 6, je to vlastně docela jednoduché. 915 00:39:29,220 --> 00:39:31,510 Pojďme vložit tě tam, pokud si chtěl přejít přes mírně. 916 00:39:31,510 --> 00:39:32,870 Číslo 8, a to i docela snadné. 917 00:39:32,870 --> 00:39:33,741 Támhle. 918 00:39:33,741 --> 00:39:34,240 Sakra. 919 00:39:34,240 --> 00:39:37,590 Číslo 1 můžeme nejen zaměnit s Amin zde 920 00:39:37,590 --> 00:39:39,340 protože, co se děje zkazit objednávky. 921 00:39:39,340 --> 00:39:40,660 Takže musíme být trochu chytřejší. 922 00:39:40,660 --> 00:39:42,770 Takže, Artie, kdybys mohl zálohovat na chvíli. 923 00:39:42,770 --> 00:39:46,550 Pojďme dál a posunout se, Na rozdíl od našich předchozích algoritmů, 924 00:39:46,550 --> 00:39:50,910 aby se vytvořil prostor pro Artie tady na začátku. 925 00:39:50,910 --> 00:39:54,690 Takže na konci dne, jsem trochu dělat to, co jsem chtěl, aby se zabránilo před. 926 00:39:54,690 --> 00:39:57,770 A tak se můj algoritmus je trochu z obrácené, intelektuálně, 927 00:39:57,770 --> 00:39:59,070 z toho, co to původně bylo. 928 00:39:59,070 --> 00:40:01,240 Dělám jen přesun na jiném místě. 929 00:40:01,240 --> 00:40:02,291 Teď jsem na tři. 930 00:40:02,291 --> 00:40:02,790 Oh, sakra. 931 00:40:02,790 --> 00:40:04,039 Musíme udělat více práce znovu. 932 00:40:04,039 --> 00:40:05,060 Takže pojďme tlačit ven. 933 00:40:05,060 --> 00:40:09,360 Pojďme 8, 6, 4-- oh Oh-- a 3 se chystá jít právě tam. 934 00:40:09,360 --> 00:40:11,490 Tak alespoň nepatrné úspory tentokrát. 935 00:40:11,490 --> 00:40:13,100 7, není příliš mnoho práce je třeba udělat. 936 00:40:13,100 --> 00:40:15,370 Takže pokud chcete, aby pop zpět, pojďme vložte vás. 937 00:40:15,370 --> 00:40:17,440 A konečně, 5, pokud máte chci zaběhnout zpátky jsme 938 00:40:17,440 --> 00:40:22,610 Potřebuju tě posunout, ty, ty, do pěti, je na místě. 939 00:40:22,610 --> 00:40:25,670 >> Teď tak vidět na Vysoká úroveň graficky, 940 00:40:25,670 --> 00:40:31,080 pojďme tento algoritmus vizualizace jeden další čas. 941 00:40:31,080 --> 00:40:33,580 Takže to budeme nazývat vložení druhu. 942 00:40:33,580 --> 00:40:37,700 Uděláme to stejně jako rychle, a spusťte jej sem. 943 00:40:37,700 --> 00:40:39,580 A taky má jiný pocit. 944 00:40:39,580 --> 00:40:42,180 Je to trochu lepší a lepší, ale nikdy to není dokonalý 945 00:40:42,180 --> 00:40:44,630 dokud jsem jít a hladké v těchto mezer. 946 00:40:44,630 --> 00:40:47,860 Vzhledem k tomu, znovu, já jsem jen s tím, co Jsem dána zleva doprava. 947 00:40:47,860 --> 00:40:50,350 Tak jsem se nedostal tolik štěstí , že všechno bylo perfektní. 948 00:40:50,350 --> 00:40:54,190 To je důvod, proč jsme se to trochu mispositions že pevné v průběhu času. 949 00:40:54,190 --> 00:40:58,890 >> Takže všechny tyto algoritmy se zdají běží na mírně různým tempem. 950 00:40:58,890 --> 00:41:02,030 Ve skutečnosti, které by vám říci, nejlepší a nejrychlejší tak daleko? 951 00:41:02,030 --> 00:41:03,450 Bubble sort, první? 952 00:41:03,450 --> 00:41:05,000 Výběr třídění druhého? 953 00:41:05,000 --> 00:41:08,450 Vložení třídění, třetí? 954 00:41:08,450 --> 00:41:10,710 Slyšel jsem, že některé druhy výběru. 955 00:41:10,710 --> 00:41:13,280 Jiné myšlenky? 956 00:41:13,280 --> 00:41:16,880 >> Takže se ukazuje, že všech těchto algoritmů 957 00:41:16,880 --> 00:41:22,400 jsou v zásadě stejně účinný jako každý other-- nebo, naopak, stejně jako 958 00:41:22,400 --> 00:41:25,980 neefektivní jako každý jiný, protože můžeme dělat zásadně 959 00:41:25,980 --> 00:41:28,120 lepší než všechny tři z těchto algoritmů. 960 00:41:28,120 --> 00:41:29,990 A to je trochu bílé lži, taky. 961 00:41:29,990 --> 00:41:32,580 když říkám, že jako účinný nebo jako neúčinné, 962 00:41:32,580 --> 00:41:35,040 To je alespoň pro super-velké hodnoty n. 963 00:41:35,040 --> 00:41:38,450 Když máme jen osm lidí tady, nebo možná 50 nebo tak pruhy na obrazovce, 964 00:41:38,450 --> 00:41:41,645 budete naprosto všimnete rozdílů Mezi těmito třemi algoritmů. 965 00:41:41,645 --> 00:41:44,020 Ale jak n, počet osob, nebo počet čísel, 966 00:41:44,020 --> 00:41:46,350 nebo počet osob v telefonu kniha, nebo počet webových stránek 967 00:41:46,350 --> 00:41:48,230 v databázi Google dostane větší a větší, 968 00:41:48,230 --> 00:41:51,650 uvidíme, že všechny tři z nich algoritmy jsou vlastně docela špatné. 969 00:41:51,650 --> 00:41:54,060 A co můžeme udělat v podstatě lepší než to. 970 00:41:54,060 --> 00:41:56,830 >> Pojďme se podívat, konečně, na to, co tyto algoritmy by mohly 971 00:41:56,830 --> 00:41:59,520 zvuk jako v kontextu několika dalších 972 00:41:59,520 --> 00:42:03,550 jakož i prostřednictvím této vizualizace zde 973 00:42:03,550 --> 00:42:06,860 která nás zavede do počet algoritmů. 974 00:42:06,860 --> 00:42:10,330 Pojďme dál a pogratulovat naši účastníci tady, z nichž 975 00:42:10,330 --> 00:42:11,690 řazeny sami velmi dobře. 976 00:42:11,690 --> 00:42:15,124 Pokud byste chtěli, aby se dárek na rozloučenou. 977 00:42:15,124 --> 00:42:16,540 Můžete ponechat své číslo stejně. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 A to, co uvidíte, nebo spíše slyšet, teď, 980 00:42:22,520 --> 00:42:25,710 je to, že jak dát zvuky Do každé z těchto tyčí 981 00:42:25,710 --> 00:42:28,660 a spojit ji se softwarem, různé frekvence zvuku, 982 00:42:28,660 --> 00:42:33,970 můžete zabalit svou mysl více audioly kolem toho, co každá z těchto věcí 983 00:42:33,970 --> 00:42:34,470 vypadat. 984 00:42:34,470 --> 00:42:39,325 První z nich je vložení druh 985 00:42:39,325 --> 00:42:44,275 >> [TONES] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Je to bublina druh. 988 00:42:49,720 --> 00:42:54,175 >> [TONES] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Výběr sort. 991 00:43:18,222 --> 00:43:22,596 >> [TONES] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Něco, co nazývá merge sort. 994 00:43:35,150 --> 00:43:38,140 >> [TONES] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Gnome sort. 997 00:43:51,278 --> 00:43:56,390 >> [TONES] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> To je pro CS50. 1000 00:44:09,430 --> 00:44:13,360 Uvidíme se ve středu. 1001 00:44:13,360 --> 00:44:16,671 >> Vypravěč: A teď, "Hluboká Myšlenky, "od Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Proč je to pro smyčce? 1004 00:44:21,590 --> 00:44:23,200 Proč ne, aby to lépe? 1005 00:44:23,200 --> 00:44:25,970 Já bych udělat pět smyčku. 1006 00:44:25,970 --> 00:44:28,720 >> [SMÍCH]