1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] DAVID J. Malan: Dobře, to je CS50, a to je 2 00:00:11,630 --> 00:00:14,790 Začátek týdne dva. 3 00:00:14,790 --> 00:00:16,300 Děkuju. 4 00:00:16,300 --> 00:00:19,000 Začněme zde s telefonní hovor. 5 00:00:19,000 --> 00:00:30,005 Chystám se vytočit 617-bug-CS50. 6 00:00:30,005 --> 00:00:31,230 CS50: To je CS50. 7 00:00:31,230 --> 00:00:33,930 Pro raketoplánu Boy, stiskněte 1. 8 00:00:33,930 --> 00:00:36,660 Chcete-li začít znovu, stiskněte tlačítko 9. 9 00:00:36,660 --> 00:00:38,180 DAVID J. Malan: Tak řekl pro Shuttle Boy, stiskněte 1. 10 00:00:38,180 --> 00:00:41,560 Takže budeme stiskněte 1. 11 00:00:41,560 --> 00:00:43,230 CS50: Jaký je váš původ? 12 00:00:43,230 --> 00:00:45,340 Pro quad, stiskněte tlačítko 1. 13 00:00:45,340 --> 00:00:47,080 Mather, stiskněte tlačítko 2. 14 00:00:47,080 --> 00:00:49,240 Boylston, stiskněte tlačítko 3. 15 00:00:49,240 --> 00:00:51,280 Lamont, stiskněte 4. 16 00:00:51,280 --> 00:00:53,210 Mem Hall, stiskněte tlačítko 5. 17 00:00:53,210 --> 00:00:55,660 Chcete-li začít znovu, stiskněte tlačítko 0. 18 00:00:55,660 --> 00:00:59,590 DAVID J. Malan: Budeme stiskněte 1 pro čtyřkolky. 19 00:00:59,590 --> 00:01:03,610 CS50: Další shuttle listy téhle chvíli na odpoledne 01:10, a 20 00:01:03,610 --> 00:01:09,820 pak na 13:20, 13:30, 13:40. 21 00:01:09,820 --> 00:01:12,030 To je CS50. 22 00:01:12,030 --> 00:01:15,570 >> DAVID J. Malan: Tak to je CS50 hlas. 23 00:01:15,570 --> 00:01:18,030 A to je příklad druhů závěrečných prací, pro 24 00:01:18,030 --> 00:01:19,500 instance, můžete ukousnout směrem 25 00:01:19,500 --> 00:01:20,600 konec semestru. 26 00:01:20,600 --> 00:01:23,840 Například, že existuje shuttleboy.cs50.net - 27 00:01:23,840 --> 00:01:28,200 vlastně projekt, který jsem poprvé psal po užití CS51 28 00:01:28,200 --> 00:01:29,740 zpět, když jsem byl vysokoškolák. 29 00:01:29,740 --> 00:01:32,250 A inspirace zde bylo tehdy, všechno, co měl, byl 30 00:01:32,250 --> 00:01:34,320 vytištěné plány shuttle bus, a tam nebyl žádný 31 00:01:34,320 --> 00:01:35,970 Pojem hledá věci on-line. 32 00:01:35,970 --> 00:01:38,730 A tak nějak jsem holubice v jednom víkendu, přelije přes 33 00:01:38,730 --> 00:01:41,460 vytisknout plán, a přenést ji do počítačového programu. 34 00:01:41,460 --> 00:01:43,790 V té době, počítačový program náhodou napsáno 35 00:01:43,790 --> 00:01:47,110 v C. A skutečně běžel jej zadáním Shuttle Boy na 36 00:01:47,110 --> 00:01:48,600 bliká výzvu, jako jsme to dělali doposud. 37 00:01:48,600 --> 00:01:50,450 Ale v průběhu let, je to vyvinulo do okamžiku 38 00:01:50,450 --> 00:01:51,390 Zprávy bot. 39 00:01:51,390 --> 00:01:53,970 Je to vyvinulo v poslední době do této stránky, do 40 00:01:53,970 --> 00:01:57,720 SMS-nástroj, stejně jako v tomto hlasové nástroj. 41 00:01:57,720 --> 00:02:00,170 A to je se zmínit o druzích věcí, které můžete 42 00:02:00,170 --> 00:02:02,380 udělat pro sebe tím, že semestr konce. 43 00:02:02,380 --> 00:02:05,490 >> Například, tam, verze SMS kyvadlové Boy děje 44 00:02:05,490 --> 00:02:06,510 fungovat takto. 45 00:02:06,510 --> 00:02:10,880 Pokud se na vašem mobilním telefonu, odešlete textovou zprávu na 41411 a 46 00:02:10,880 --> 00:02:14,300 pak poslat zvláštní symbol sboy, pro Shuttle Boy, 47 00:02:14,300 --> 00:02:18,350 následuje A a B, kde A je původ a B je 48 00:02:18,350 --> 00:02:19,070 cíl - 49 00:02:19,070 --> 00:02:21,030 Například, Boylston Space Quad - 50 00:02:21,030 --> 00:02:23,330 co byste měli vrátit během několika sekund je textový 51 00:02:23,330 --> 00:02:25,820 Zpráva z raketoplánu Boy říct přesně, kdy 52 00:02:25,820 --> 00:02:28,990 Příštích několik raketoplány jsou od tohoto okamžiku bude, že 53 00:02:28,990 --> 00:02:29,640 bod B. 54 00:02:29,640 --> 00:02:32,510 A to je obecnější příklad toho, co je známo jako 55 00:02:32,510 --> 00:02:33,920 pomocí API. 56 00:02:33,920 --> 00:02:36,930 >> Tak například, to je zde právě shuttleboy.cs50.net, 57 00:02:36,930 --> 00:02:39,300 Skutečný web-based inkarnací tohoto. 58 00:02:39,300 --> 00:02:42,480 Ale údaje, které podtrhuje a další aplikace, které CS50 59 00:02:42,480 --> 00:02:45,560 vyvinula jsou vystaveny všem zde ve formě 60 00:02:45,560 --> 00:02:49,340 rozhraní API, rozhraní pro programování aplikací. 61 00:02:49,340 --> 00:02:52,220 A to je jen fantazie způsob, jak říct, že lidé jako my na 62 00:02:52,220 --> 00:02:56,010 Internet a další strávili nějaký čas vytvoření 63 00:02:56,010 --> 00:02:59,970 software, který můžete použít, aby se chytit data z nás a 64 00:02:59,970 --> 00:03:02,510 pak stavět své vlastní aplikace na vrcholu 65 00:03:02,510 --> 00:03:03,840 tohoto datového souboru. 66 00:03:03,840 --> 00:03:06,610 Tak například, to Kyvadlový Boy API strana, která sem 67 00:03:06,610 --> 00:03:09,390 se stane, že v CS50 manuálu, v podstatě dokumenty 68 00:03:09,390 --> 00:03:13,080 jak můžete jít o žádat CS50 servery pro data. 69 00:03:13,080 --> 00:03:16,240 Například, pokud jste obeznámeni s CSV soubory, čárka 70 00:03:16,240 --> 00:03:18,940 oddělené hodnoty, to jsou jen jakési rychlé a špinavé 71 00:03:18,940 --> 00:03:20,310 Excel-jako soubory. 72 00:03:20,310 --> 00:03:23,110 Takže se můžete zeptat Kyvadlová Boy všech dat na všech 73 00:03:23,110 --> 00:03:25,090 domů a jejich GPS souřadnice, a budete mít 74 00:03:25,090 --> 00:03:27,300 zpět, v podstatě, spreadsheet, jako že 75 00:03:27,300 --> 00:03:30,820 pak můžete přečíst v programu vlastní a pak 76 00:03:30,820 --> 00:03:33,250 generovat výsledky, stejně jako kyvadlová Boy sám 77 00:03:33,250 --> 00:03:34,160 se stane, že dělá. 78 00:03:34,160 --> 00:03:37,030 Pro ty známější, více moderních datových reprezentací 79 00:03:37,030 --> 00:03:39,420 patří JSON, JavaScript Object Notation. 80 00:03:39,420 --> 00:03:40,620 Něco se vrátí k vám k 81 00:03:40,620 --> 00:03:41,720 konec semestru. 82 00:03:41,720 --> 00:03:45,440 >> Ale znovu, to je jen jeden z několika vlastního API CS50 je. 83 00:03:45,440 --> 00:03:48,320 A zajímavá věc je nyní, v těchto dnech, Facebook a 84 00:03:48,320 --> 00:03:51,110 Twitter a Google a skoro každý populární webové stránky z 85 00:03:51,110 --> 00:03:54,130 tam má nějaký API, což znamená, že pokud si přečtete 86 00:03:54,130 --> 00:03:56,620 dokumentace na svých internetových stránkách, se přihlásit k 87 00:03:56,620 --> 00:03:59,980 účet, pak můžete začít psát software na vrcholu 88 00:03:59,980 --> 00:04:03,680 bez ohledu na nástroje, nebo údaje, které společnost poskytuje tam. 89 00:04:03,680 --> 00:04:06,210 A tak jeden z našich vlastních výukových kolegy o pár let zpět 90 00:04:06,210 --> 00:04:07,620 napsal verzi Mac tohoto. 91 00:04:07,620 --> 00:04:10,990 Takže na odkaz s názvem Mac zde vlevo nahoře, můžete skutečně 92 00:04:10,990 --> 00:04:13,940 stáhnout Mac OS widget, který běží na vašem vlastním počítači Mac, aby učinili 93 00:04:13,940 --> 00:04:15,040 stejné druhy věcí. 94 00:04:15,040 --> 00:04:17,970 Takže je to všechno o budování na vrcholu dat, jako jsou tyto. 95 00:04:17,970 --> 00:04:21,839 Ale o tom ke konci semestru. 96 00:04:21,839 --> 00:04:25,780 >> Takže pojďme ponořit do opravdu rychle k chybě, jen trochu dostat 97 00:04:25,780 --> 00:04:27,990 věci zahřeje dnes, a vzpomenu na některé 98 00:04:27,990 --> 00:04:29,660 věci, které jsme se na poslední týden. 99 00:04:29,660 --> 00:04:32,840 Zejména, nechte mě jít napřed a vytáhnout, řekněme, 100 00:04:32,840 --> 00:04:34,080 tento příklad zde. 101 00:04:34,080 --> 00:04:37,500 Buggy1.c, to je k dispozici na internetových stránkách kursu kdybyste 102 00:04:37,500 --> 00:04:40,250 Líbí jej stáhnout a hrabat kolem sebe. 103 00:04:40,250 --> 00:04:43,520 Ale pojďme přiblížit zde na tomto poměrně krátkém programu, a jen 104 00:04:43,520 --> 00:04:46,550 super-rychlé rekapitulace některých ze základních stavebních bloků, které 105 00:04:46,550 --> 00:04:48,880 opravdu se chystáte jen začít užívat za samozřejmost. 106 00:04:48,880 --> 00:04:51,860 >> Takže modré věci, v řádcích 1 až 9, jsou jen 107 00:04:51,860 --> 00:04:53,670 softball otázky. 108 00:04:53,670 --> 00:04:54,590 Tak to jsou jen komentáře. 109 00:04:54,590 --> 00:04:56,230 Nemají funkční význam. 110 00:04:56,230 --> 00:04:58,460 Ale oni jsou komentáře v tom smyslu, že to bere na vědomí, že 111 00:04:58,460 --> 00:05:02,010 Já, člověk, se na sebe tak, že v přednášce a po 112 00:05:02,010 --> 00:05:04,340 přednáška, mohu vlastně vzpomenout, co tento program 113 00:05:04,340 --> 00:05:07,120 dělá, aniž byste museli číst přes to řádek po řádku a 114 00:05:07,120 --> 00:05:08,990 obnovovat historii v mé mysli. 115 00:05:08,990 --> 00:05:11,000 Navíc, když jsem předat tento program někomu jinému, jako je 116 00:05:11,000 --> 00:05:14,420 si, že je to mnohem jasnější pro vás, protože připomínek, jako je tato, 117 00:05:14,420 --> 00:05:16,680 co program je skutečně dělá, nebo alespoň to, co 118 00:05:16,680 --> 00:05:18,210 Program to má dělat. 119 00:05:18,210 --> 00:05:20,760 Zda je či není, že je to správné, je jiná věc úplně. 120 00:05:20,760 --> 00:05:25,040 Nyní, v C, s multi-line připomínky, připomínají, že on-line 121 00:05:25,040 --> 00:05:27,880 jeden tady je magický symbol, / *. 122 00:05:27,880 --> 00:05:30,380 To znamená, že tady je začátek komentáře. 123 00:05:30,380 --> 00:05:34,560 A na ničem jiném nezáleží, dokud se nedostanete na konec zakončení, 124 00:05:34,560 --> 00:05:36,700 který je * /, naopak. 125 00:05:36,700 --> 00:05:39,120 Takže skutečnost, že mám 80-nějaké podivné hvězdy zde od 126 00:05:39,120 --> 00:05:41,550 zleva doprava, je opravdu jen estetický detail. 127 00:05:41,550 --> 00:05:43,370 To nemá funkční význam. 128 00:05:43,370 --> 00:05:44,490 >> Nyní, jak o souladu 11? 129 00:05:44,490 --> 00:05:46,940 Co to dělat v Laicky řečeno? 130 00:05:51,560 --> 00:05:52,540 Co je to? 131 00:05:52,540 --> 00:05:54,280 PUBLIKUM: Zahrnuje standard. 132 00:05:54,280 --> 00:05:54,740 DAVID J. Malan: OK, dobře. 133 00:05:54,740 --> 00:05:57,500 Takže to zahrnuje stdio.h knihovnu. 134 00:05:57,500 --> 00:05:58,230 Takže co to znamená? 135 00:05:58,230 --> 00:06:01,570 No, v tomto souboru, stdio.h, jsou celá parta 136 00:06:01,570 --> 00:06:03,320 funkce prohlášení - 137 00:06:03,320 --> 00:06:05,290 to znamená, že kód, který někdo napsal. 138 00:06:05,290 --> 00:06:08,160 A dokonalý příklad funkce, která je deklarována v 139 00:06:08,160 --> 00:06:10,250 stdio.h je - 140 00:06:10,250 --> 00:06:11,980 které oblíbenou teď? 141 00:06:11,980 --> 00:06:14,300 Takže printf, jeden z nejčastějších z nich použít, určitě 142 00:06:14,300 --> 00:06:15,840 brzy, od té knihovny je tam. 143 00:06:15,840 --> 00:06:19,290 Kdybych vyloučit, že řádek kódu, zvonění bude ječet 144 00:06:19,290 --> 00:06:22,550 na mě něco o použití nepřiznanou symbol. 145 00:06:22,550 --> 00:06:24,930 Něco nehlášené je pravděpodobně klíčové slovo, protože 146 00:06:24,930 --> 00:06:27,770 jsme neinformovali kompilátor, co printf vypadá 147 00:06:27,770 --> 00:06:29,230 Líbí pokud zahrneme tento řádek. 148 00:06:29,230 --> 00:06:31,830 A ještě na Zemi, opravdu, co to linka říká, je 149 00:06:31,830 --> 00:06:34,890 otevřít tento soubor, stdio.h, všude tam, kde je to na výkon serveru 150 00:06:34,890 --> 00:06:38,200 pevný disk, nebo spotřebič na pevný disk, a copy-paste je 151 00:06:38,200 --> 00:06:40,240 tady do mého souboru, aniž bych 152 00:06:40,240 --> 00:06:41,730 museli udělat ručně. 153 00:06:41,730 --> 00:06:44,420 >> Teď, když jsme se sem na hlavní, zanedlouho začneme 154 00:06:44,420 --> 00:06:46,900 škádlit sebe, co int a co void je. 155 00:06:46,900 --> 00:06:48,430 Ale teď, pojďme se podívat na tři řádky 156 00:06:48,430 --> 00:06:50,350 v rámci 15 až 17. 157 00:06:50,350 --> 00:06:52,250 Tady jsem tvrdit, as buggy. 158 00:06:52,250 --> 00:06:54,900 Linka 7 ve svých připomínkách říká: "Pokud tisk 10 159 00:06:54,900 --> 00:06:59,410 hvězdičky, ale není. "Proč to netiskne, ve skutečnosti, 160 00:06:59,410 --> 00:07:01,097 10 takové hvězdy? 161 00:07:01,097 --> 00:07:02,347 PUBLIKUM: [neslyšitelnou]. 162 00:07:05,210 --> 00:07:05,800 DAVID J. Malan: Přesně tak. 163 00:07:05,800 --> 00:07:08,720 Takže si, že začínáme počítat od 0. 164 00:07:08,720 --> 00:07:10,780 A to je vlastně konvence v programování a 165 00:07:10,780 --> 00:07:13,230 počítačové vědy obecně, začíná počítat 166 00:07:13,230 --> 00:07:14,610 od 0 místo 1. 167 00:07:14,610 --> 00:07:16,690 A to opravdu jen vychází ze skutečnosti, že, pro 168 00:07:16,690 --> 00:07:18,940 instance, když jsme měli osm lidí na jevišti, kdy 169 00:07:18,940 --> 00:07:20,680 nikdo zvednutím ruky, byli 170 00:07:20,680 --> 00:07:22,340 všechny efektivně nuly. 171 00:07:22,340 --> 00:07:24,260 A tak je to jen trochu počítačové úmluvy tak, 172 00:07:24,260 --> 00:07:26,030 Proto, kdo počítat od 0. 173 00:07:26,030 --> 00:07:29,130 Pokud je to nejnižší číslo, můžete reprezentovat v binárním formátu. 174 00:07:29,130 --> 00:07:32,270 >> Tak tady jsme začali inicializace i na 0. 175 00:07:32,270 --> 00:07:34,230 Jsme nastavili i rovná 0. 176 00:07:34,230 --> 00:07:37,780 Ale pak jsem udělal tuto chybu tady, říká i je menší než nebo 177 00:07:37,780 --> 00:07:38,820 rovná 10. 178 00:07:38,820 --> 00:07:41,700 Ale pokud si myslíte, že přes kdybych začal na 0 a pak jdu 179 00:07:41,700 --> 00:07:46,410 až 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, já jsem vlastně bude 180 00:07:46,410 --> 00:07:49,980 vytisknout 11 hvězd na obrazovce, protože jsem šel do 181 00:07:49,980 --> 00:07:52,410 na a rovná 10. 182 00:07:52,410 --> 00:07:55,090 Tak snadno opravit tady pak je to, co? 183 00:07:55,090 --> 00:07:56,070 PUBLIKUM: [neslyšitelnou]. 184 00:07:56,070 --> 00:07:57,350 DAVID J. Malan: Stačí změnit to na méně než. 185 00:07:57,350 --> 00:07:59,700 Pokud opravdu chcete, jsi to mohl udělat. 186 00:07:59,700 --> 00:08:01,370 Ale obecně, je, že odsuzoval. 187 00:08:01,370 --> 00:08:04,020 A tak začíná počítat od 0, je prostě něco, co byste měli 188 00:08:04,020 --> 00:08:05,510 obvykle zvyknout. 189 00:08:05,510 --> 00:08:07,810 A teď, co o celé konstrukce ve sama o sobě? 190 00:08:07,810 --> 00:08:10,640 Tento řádek 15 demarks cyklu for. 191 00:08:10,640 --> 00:08:12,510 Takže, není funkce. 192 00:08:12,510 --> 00:08:13,640 Je to jen konstatování. 193 00:08:13,640 --> 00:08:16,180 Je to opakování konstrukt, jako jsme viděli v Scratch. 194 00:08:16,180 --> 00:08:17,600 A to má tři části. 195 00:08:17,600 --> 00:08:19,740 Všimněte si, že zde je první část na 196 00:08:19,740 --> 00:08:21,350 v levé části středníkem. 197 00:08:21,350 --> 00:08:24,200 Tam je střední část mezi dvěma středníky. 198 00:08:24,200 --> 00:08:26,250 A pak je tu pravá část na pravé 199 00:08:26,250 --> 00:08:27,640 druhé středníkem. 200 00:08:27,640 --> 00:08:31,822 Nyní, první z nich má co? 201 00:08:31,822 --> 00:08:33,679 PUBLIKUM: [neslyšitelnou]. 202 00:08:33,679 --> 00:08:34,270 DAVID J. Malan: Zpět tam? 203 00:08:34,270 --> 00:08:34,816 Jo? 204 00:08:34,816 --> 00:08:35,980 Diváků: Inicializace. 205 00:08:35,980 --> 00:08:36,850 >> DAVID J. Malan: Inicializace. 206 00:08:36,850 --> 00:08:37,840 Takže co to znamená? 207 00:08:37,840 --> 00:08:40,690 Jsme deklarovali proměnnou s názvem i. 208 00:08:40,690 --> 00:08:43,840 Je typu int, protože jsem zadán int i. 209 00:08:43,840 --> 00:08:46,470 A já inicializaci i na hodnotu 0. 210 00:08:46,470 --> 00:08:47,730 Tak co to vlastně říká? 211 00:08:47,730 --> 00:08:50,680 Je to skutečně říká k počítači hej, dej mi dost 212 00:08:50,680 --> 00:08:53,660 paměti, dostatek paměti RAM, aby se vešly číslo, a pak dal 213 00:08:53,660 --> 00:08:56,130 číslo 0 v tomto bloku paměti RAM. 214 00:08:56,130 --> 00:08:59,100 A jako stranou, jak velká je int typicky alespoň uvnitř 215 00:08:59,100 --> 00:09:00,280 spotřebiče? 216 00:09:00,280 --> 00:09:01,000 Diváků: 32 bit. 217 00:09:01,000 --> 00:09:01,670 DAVID J. Malan: 32 bitů. 218 00:09:01,670 --> 00:09:04,890 Takže to znamená, že mi 32 bitů, jinak známý jako 4 bajty, 219 00:09:04,890 --> 00:09:07,250 a dal hodnotu 0 v něm, což je docela snadné, protože 220 00:09:07,250 --> 00:09:09,110 Znamená to jen, vyber všechny bity, které se 0. 221 00:09:09,110 --> 00:09:11,690 >> Takže teď, druhá část je zde podmínka. 222 00:09:11,690 --> 00:09:14,590 A podmínka je, jak již název napovídá, je to, co je kontrolována 223 00:09:14,590 --> 00:09:18,100 znovu a znovu a znovu o tom, zda je to pravda, nebo ne. 224 00:09:18,100 --> 00:09:21,410 Takže je to jen říká proveďte následující řádky kódu - 225 00:09:21,410 --> 00:09:23,950 konkrétně linka 16, protože to je jediný členité jeden 226 00:09:23,950 --> 00:09:24,820 pod - 227 00:09:24,820 --> 00:09:26,980 tak dlouho, jak jsem je menší než 10. 228 00:09:26,980 --> 00:09:30,520 A po každé iteraci prostřednictvím tohoto vedení, proveďte 229 00:09:30,520 --> 00:09:33,840 inkrementace, který je v tomto případě i + +. 230 00:09:33,840 --> 00:09:35,580 Nyní, to nemusí být i + +. 231 00:09:35,580 --> 00:09:37,610 Mohlo by to být i -. 232 00:09:37,610 --> 00:09:39,860 Ale když jsem to udělal, co se chování děje 233 00:09:39,860 --> 00:09:41,370 být z tohoto programu? 234 00:09:41,370 --> 00:09:42,290 PUBLIKUM: to bude nekonečná smyčka. 235 00:09:42,290 --> 00:09:44,060 DAVID J. Malan: to bude nějaký nekonečné smyčce, 236 00:09:44,060 --> 00:09:47,720 pokud budeme mít štěstí po negativním 2000000000 nebo tak. 237 00:09:47,720 --> 00:09:51,320 Možná, že věci se zalomí kolem, jen podle povahy konečném 238 00:09:51,320 --> 00:09:53,930 počet bitů, které jsme byly přiděleny pro int. 239 00:09:53,930 --> 00:09:56,270 Ale je to jistě bude přecházet daleko více než 10 a 240 00:09:56,270 --> 00:09:58,630 určitě víc než 11 krát zde. 241 00:09:58,630 --> 00:10:02,240 >> A teď, stejně jako stranou, si uvědomit, že i + + a i - 242 00:10:02,240 --> 00:10:04,420 jsou opravdu jen syntaktický cukr. 243 00:10:04,420 --> 00:10:07,210 Je to jen zkrácený zápis pro to, co je trochu víc 244 00:10:07,210 --> 00:10:08,720 výslovně napsáno takto: 245 00:10:08,720 --> 00:10:11,200 i = i + 1. 246 00:10:11,200 --> 00:10:13,460 , Která je identická se i + +. 247 00:10:13,460 --> 00:10:15,860 Je to prostě vypadá hezčí říct i + +. 248 00:10:15,860 --> 00:10:17,490 Je to stručnější, srozumitelnější. 249 00:10:17,490 --> 00:10:19,030 A tak většina lidí, že místo. 250 00:10:19,030 --> 00:10:21,840 To je však totožný funkčně na 251 00:10:21,840 --> 00:10:22,900 to, co jsme právě viděli. 252 00:10:22,900 --> 00:10:27,770 Takže ve zkratce, rychlá oprava je zde jen říct iteraci i 253 00:10:27,770 --> 00:10:30,690 od 0 po celou cestu až na méně než 10. 254 00:10:30,690 --> 00:10:32,700 A pak budeme skutečně dostat 10 hvězd. 255 00:10:32,700 --> 00:10:33,430 >> Tak pojďme to zkusit. 256 00:10:33,430 --> 00:10:35,310 Dovolte mi, abych otevřít terminál v dolní části. 257 00:10:35,310 --> 00:10:37,420 Nech mě jít do adresáře, který je in 258 00:10:37,420 --> 00:10:40,030 A budu kompilovat ručně pomocí Clang pro teď. 259 00:10:40,030 --> 00:10:44,880 A já jdu sestavit to jako buggy1.c, Enter. 260 00:10:44,880 --> 00:10:50,280 A teď buggy1, proč je tam žádný takový soubor nebo adresář 261 00:10:50,280 --> 00:10:52,026 volal buggy1? 262 00:10:52,026 --> 00:10:53,850 PUBLIKUM: [neslyšitelnou]. 263 00:10:53,850 --> 00:10:54,240 DAVID J. Malan: Jo. 264 00:10:54,240 --> 00:10:55,420 Takže je to vlastně říká a.out. 265 00:10:55,420 --> 00:10:57,480 Takže vzpomínám-li stačí spustit řinčet, kde zvonění je 266 00:10:57,480 --> 00:11:00,420 kompilátor, a nemusíte zadat název, který chcete 267 00:11:00,420 --> 00:11:03,550 dát do svého programu, to bude výchozí a.out. 268 00:11:03,550 --> 00:11:05,030 Takže opravdu, když to ls - 269 00:11:05,030 --> 00:11:05,510 oops. 270 00:11:05,510 --> 00:11:07,680 A já didn't - Black-and-white problém některé 271 00:11:07,680 --> 00:11:08,840 jste museli čelit byla stanovena. 272 00:11:08,840 --> 00:11:10,670 Ale dovolte mi, abych to. 273 00:11:10,670 --> 00:11:14,570 Tam máme a.out na levé straně tam. 274 00:11:14,570 --> 00:11:17,360 Takže musíme běžet a.out místo buggy1. 275 00:11:17,360 --> 00:11:19,140 >> Tak nech mě jít dál a dělat to. 276 00:11:19,140 --> 00:11:22,840 . / A.out, Enter. 277 00:11:22,840 --> 00:11:26,160 A já jsem zřejmě neměl dělat co? 278 00:11:26,160 --> 00:11:26,620 Diváků: Uložit. 279 00:11:26,620 --> 00:11:27,390 DAVID J. Malan: Zachraňte mého soubor. 280 00:11:27,390 --> 00:11:31,520 Tak, že je snadno vyřešit tím, že udeří Control S, nebo jít do 281 00:11:31,520 --> 00:11:33,450 Soubor, Uložit, stejně jako ve většině programů. 282 00:11:33,450 --> 00:11:36,360 Nech mě jít sem dolů, je vymazat obrazovku, spusťte jej znovu. 283 00:11:36,360 --> 00:11:37,960 A je tu ještě chyba. 284 00:11:37,960 --> 00:11:41,618 Takže to, co se děje - 285 00:11:41,618 --> 00:11:42,980 PUBLIKUM: Ty jsi zkompilovat. 286 00:11:42,980 --> 00:11:44,040 DAVID J. Malan: Ah, dobře. 287 00:11:44,040 --> 00:11:45,010 Nechtěl jsem zkompilovat. 288 00:11:45,010 --> 00:11:47,250 Stejně jako idiot, dívám se na kód aby viděli, co se děje. 289 00:11:47,250 --> 00:11:51,275 Takže zvonění buggy1.c, nyní a.out. 290 00:11:51,275 --> 00:11:52,640 A uf, zachránil. 291 00:11:52,640 --> 00:11:55,090 >> Takže to vypadá trochu ošklivá, protože neexistuje žádný nový řádek 292 00:11:55,090 --> 00:11:55,970 kdekoliv v programu. 293 00:11:55,970 --> 00:11:57,390 Ale zase, že je to jen estetický detail. 294 00:11:57,390 --> 00:11:59,430 A alespoň pokud budeme počítat ty, měli bychom 295 00:11:59,430 --> 00:12:01,160 nyní vidí 10 takové hvězdy. 296 00:12:01,160 --> 00:12:03,260 No, co tento druhý warm-up například? 297 00:12:03,260 --> 00:12:07,750 Takže v buggy2, tvrdím, že tato verze také budou vytištěny 298 00:12:07,750 --> 00:12:10,110 10 hvězd, jeden na řádek. 299 00:12:10,110 --> 00:12:12,340 Takže tentokrát, mám znak nového řádku, jen aby se 300 00:12:12,340 --> 00:12:13,520 věci trochu hezčí. 301 00:12:13,520 --> 00:12:15,410 Ale místo toho, co jsem si je to. 302 00:12:15,410 --> 00:12:19,590 Tak mě nech dělat řinčet buggy2.c, Enter. 303 00:12:19,590 --> 00:12:21,790 Teď je to zase jen a.out. 304 00:12:21,790 --> 00:12:23,130 Enter. 305 00:12:23,130 --> 00:12:26,900 Vidím jen jednu novou linku, jen poslední nový řádek 306 00:12:26,900 --> 00:12:29,370 pohybuje moje výzva na další řádek. 307 00:12:29,370 --> 00:12:32,660 A přesto jasně jsem tisk *, pak nový řádek, 308 00:12:32,660 --> 00:12:33,990 *, Pak nový řádek. 309 00:12:33,990 --> 00:12:35,490 Ale co je to bug tady? 310 00:12:35,490 --> 00:12:35,974 Jo? 311 00:12:35,974 --> 00:12:37,224 PUBLIKUM: [neslyšitelnou]. 312 00:12:39,850 --> 00:12:40,470 >> DAVID J. Malan: Přesně tak. 313 00:12:40,470 --> 00:12:44,110 Takže na rozdíl od některých jazycích, jako je Python, kde odsazení 314 00:12:44,110 --> 00:12:46,030 skutečnosti má funkční význam, v 315 00:12:46,030 --> 00:12:47,150 jazyk C - 316 00:12:47,150 --> 00:12:49,140 jak uvidíme, PHP, JavaScript - 317 00:12:49,140 --> 00:12:51,940 odsazení je opravdu jen pro prospěch lidskému. 318 00:12:51,940 --> 00:12:55,690 Takže skutečnost, že jsem odsazený řádek 16 a 17 vypadá skvěle, 319 00:12:55,690 --> 00:12:57,530 ale nemá funkční význam zde. 320 00:12:57,530 --> 00:13:00,700 Pokud chci oba řádky spustit jako součást pro 321 00:13:00,700 --> 00:13:05,140 smyčka, pak musím uvést je do složených závorek tím, že dělá to. 322 00:13:05,140 --> 00:13:08,540 Můžete snížit tento roh a vynechat složené závorky-li to 323 00:13:08,540 --> 00:13:10,036 Co je případ? 324 00:13:10,036 --> 00:13:10,410 PUBLIKUM: Jen jeden řádek. 325 00:13:10,410 --> 00:13:11,130 DAVID J. Malan: Jen jeden řádek. 326 00:13:11,130 --> 00:13:15,280 Takže to je tak nějak pěkné syntaxi detailu tak, aby 327 00:13:15,280 --> 00:13:17,900 nemusíte ztrácet čas psát tři řádky, z nichž dva jsou 328 00:13:17,900 --> 00:13:20,040 Složené závorky, stačí napsat jediný řádek kódu. 329 00:13:20,040 --> 00:13:21,650 Ale pokud máte dva nebo více řádků, jsme 330 00:13:21,650 --> 00:13:22,860 opravdu potřeba udělat. 331 00:13:22,860 --> 00:13:24,210 >> Tak teď se mi zachránit to. 332 00:13:24,210 --> 00:13:27,140 Nech mě jít dopředu a znovu spustit zvonění. 333 00:13:27,140 --> 00:13:31,375 Pak mi dovolte spusťte a.out, a teď jsem si jim jedno na řádek. 334 00:13:31,375 --> 00:13:33,670 Nyní, a.out je opět trochu hloupé jméno pro program. 335 00:13:33,670 --> 00:13:37,500 Jak poznám, zvonění skutečně mi název souboru 336 00:13:37,500 --> 00:13:39,820 to je více uživatelsky přívětivé, jako buggy2 sám? 337 00:13:43,200 --> 00:13:44,466 Trochu jasněji? 338 00:13:44,466 --> 00:13:45,220 PUBLIKUM: [neslyšitelnou]. 339 00:13:45,220 --> 00:13:47,810 DAVID J. Malan: OK, tak jsem se mohl skutečně čerpat velmi 340 00:13:47,810 --> 00:13:51,000 uživatelsky příjemný zkratka a jen psát, aby buggy2. 341 00:13:51,000 --> 00:13:53,840 Nechci specifikovat. C v tomto případě, a stiskněte klávesu Enter. 342 00:13:53,840 --> 00:13:58,530 A co si dělá, je to překládá buggy2.c pro mě 343 00:13:58,530 --> 00:14:00,260 žádá řinčet to udělat. 344 00:14:00,260 --> 00:14:05,100 Konkrétně, volá řinčet, běží řinčet pomocí mnohem více 345 00:14:05,100 --> 00:14:08,540 argumenty příkazového řádku nebo přepínače, než jsem skutečně potřebují. 346 00:14:08,540 --> 00:14:11,270 V době, budeme vracet k tomu, co všichni těchto různých 347 00:14:11,270 --> 00:14:13,810 mystické dvojdomými výrazy rozumí. 348 00:14:13,810 --> 00:14:16,910 Ale teď, to je jen uložení mi problémy s 349 00:14:16,910 --> 00:14:19,600 nutnosti pamatovat si a museli psát si všechny ty 350 00:14:19,600 --> 00:14:21,150 různé dvojdomými výrazy. 351 00:14:21,150 --> 00:14:23,240 A obráceně to nakonec je 352 00:14:23,240 --> 00:14:25,900 že teď mám buggy2. 353 00:14:25,900 --> 00:14:27,480 Pokud chci udělat ručně, když jsem 354 00:14:27,480 --> 00:14:28,775 Místo toho můžete udělat - 355 00:14:28,775 --> 00:14:34,110 řinčení-o buggy2 a pak buggy2.c. 356 00:14:34,110 --> 00:14:37,980 A to bude podobně mi soubor s názvem buggy2. 357 00:14:37,980 --> 00:14:39,710 >> Takže ve zkratce, zvonění je kompilátor. 358 00:14:39,710 --> 00:14:43,080 Udělejte je jen uživatelsky příjemný nástroj, který budeme používat více 359 00:14:43,080 --> 00:14:44,420 a více, protože to prostě začíná 360 00:14:44,420 --> 00:14:47,330 zjednodušit věci pro nás. 361 00:14:47,330 --> 00:14:49,430 A vracíme 0, konečně. 362 00:14:49,430 --> 00:14:51,890 Pro tuto chvíli, jen proto, že, ale začneme legraci, že část 363 00:14:51,890 --> 00:14:52,930 dnes a ve středu. 364 00:14:52,930 --> 00:14:55,560 Jakékoliv dotazy týkající se něco z toho? 365 00:14:55,560 --> 00:14:56,450 Jo? 366 00:14:56,450 --> 00:14:58,234 PUBLIKUM: [Neslyšitelné] 367 00:14:58,234 --> 00:15:00,020 ls v uvozovkách tam? 368 00:15:00,020 --> 00:15:01,710 DAVID J. Malan: OK. 369 00:15:01,710 --> 00:15:05,880 Když jsem napsal ls v uvozovkách, který byl mi dělají nějaké kouzlo 370 00:15:05,880 --> 00:15:07,160 v zákulisí opravit chybu. 371 00:15:07,160 --> 00:15:09,370 Zapomněl jsem, jak jsme říkal mnozí z vás na 372 00:15:09,370 --> 00:15:11,600 diskusní fóra, zajímavosti - 373 00:15:11,600 --> 00:15:17,220 uděláme to teď - sudo yum-y aktualizace appliance50. 374 00:15:17,220 --> 00:15:19,790 Jejda, že to je napsána správně. 375 00:15:19,790 --> 00:15:23,240 Takže přístroj je jako operační systém. 376 00:15:23,240 --> 00:15:25,650 Je to běh tohoto operačního systému s názvem Fedora. 377 00:15:25,650 --> 00:15:27,450 A teď, protože mé pomalé připojení k internetu, mám 378 00:15:27,450 --> 00:15:28,260 Opravdu hosed to. 379 00:15:28,260 --> 00:15:31,620 Takže běží sudo yum aktualizace, jak jsme ti dělat v 380 00:15:31,620 --> 00:15:34,080 Problém set, je v podstatě rád běží automatických aktualizací 381 00:15:34,080 --> 00:15:35,420 v Mac OS nebo Windows. 382 00:15:35,420 --> 00:15:37,280 A důvod, proč pro spuštění tohoto na samém začátku 383 00:15:37,280 --> 00:15:39,640 Problém set proto, že když jsme vytvořili přístroj, I 384 00:15:39,640 --> 00:15:42,480 zpackal, a náhodou jsem dělal všechny programy vypadají 385 00:15:42,480 --> 00:15:45,210 černá na černé obrazovce, což je důvod, proč nejste vidět je 386 00:15:45,210 --> 00:15:45,860 Ve výchozím nastavení. 387 00:15:45,860 --> 00:15:48,020 Ale nejnovější verze spotřebiče řeší to. 388 00:15:48,020 --> 00:15:50,500 A já zařídím, že během přestávky jednou jsem internet 389 00:15:50,500 --> 00:15:51,280 připojení. 390 00:15:51,280 --> 00:15:54,630 >> Takže citace jen skrývá svou chybu, velmi diskrétně, 391 00:15:54,630 --> 00:15:55,730 zřejmě. 392 00:15:55,730 --> 00:15:56,980 Další otázky? 393 00:15:59,750 --> 00:16:00,668 Ano? 394 00:16:00,668 --> 00:16:02,012 PUBLIKUM: Kde se, aby přišel z? 395 00:16:02,012 --> 00:16:03,810 [Neslyšitelné] 396 00:16:03,810 --> 00:16:04,280 DAVID J. Malan: Dobrá otázka. 397 00:16:04,280 --> 00:16:05,460 Pokud přece dělá pochází? 398 00:16:05,460 --> 00:16:09,390 Je Linux program, který je již mnoho let, dokud 399 00:16:09,390 --> 00:16:10,570 před CS50. 400 00:16:10,570 --> 00:16:12,930 A je dodáván s operačním systémem, jako je Fedora. 401 00:16:12,930 --> 00:16:14,830 Nepochází z CS50 knihovny. 402 00:16:14,830 --> 00:16:17,560 Ve skutečnosti, jen věci, které přicházejí z CS50 knihovny 403 00:16:17,560 --> 00:16:20,470 tak daleko, že jsme viděli, jsou GetString, GetInt, všichni 404 00:16:20,470 --> 00:16:25,550 ty si funkce, a slovo řetězec, a na některé 405 00:16:25,550 --> 00:16:26,575 rozsahu, slovo bool. 406 00:16:26,575 --> 00:16:29,180 Ale budeme dráždit, že od sebe, když jsme do toho ponořit do CS50 407 00:16:29,180 --> 00:16:30,580 Přístroj sám o sobě. 408 00:16:30,580 --> 00:16:32,820 >> Takže ano, ještě jedna otázka zde. 409 00:16:32,820 --> 00:16:36,636 PUBLIKUM: Když jsi řekl, make a pak buggy, jak dělá 410 00:16:36,636 --> 00:16:39,980 Počítač vědět [neslyšitelné]? 411 00:16:39,980 --> 00:16:40,520 DAVID J. Malan: Dobrá otázka. 412 00:16:40,520 --> 00:16:43,830 Takže když stačí spustit, aby buggy1 nebo se buggy2, jak 413 00:16:43,830 --> 00:16:45,220 to, aby vědět? 414 00:16:45,220 --> 00:16:49,900 Takže ve výchozím nastavení, pokud zadáte, aby buggy1, aby vzhled pro 415 00:16:49,900 --> 00:16:52,330 soubor s názvem buggy1.c. 416 00:16:52,330 --> 00:16:55,570 A pak to provede příslušné řinčet příkazy, 417 00:16:55,570 --> 00:17:00,380 čímž přepíše výchozí výstupní soubor s názvem a.out. 418 00:17:00,380 --> 00:17:03,670 Ve skutečnosti, když se podíváme na to, co dělat, co - 419 00:17:03,670 --> 00:17:04,839 pojďme ukončení tohoto. 420 00:17:04,839 --> 00:17:09,530 Pokud se podíváme na to, co dělat se skutečně dělá, aby buggy2, 421 00:17:09,530 --> 00:17:10,470 je to už aktuální. 422 00:17:10,470 --> 00:17:13,020 Dovolte mi tedy odstranit rm příkazu, 423 00:17:13,020 --> 00:17:14,319 Program jsem psal dříve. 424 00:17:14,319 --> 00:17:17,319 Psaní Y-E-S potvrdit, že chci odstranit. 425 00:17:17,319 --> 00:17:20,480 Kdybych teď udělat, aby si všimněte, že v této velmi dlouhé řadě, 426 00:17:20,480 --> 00:17:22,980 tam je to poslední věc, kterou tady,-o buggy2. 427 00:17:22,980 --> 00:17:26,959 Všechny značka dělá se kolem tohoto argumentu, tak mluvit, 428 00:17:26,959 --> 00:17:29,665 Řinčet, takže nemám psát sám. 429 00:17:29,665 --> 00:17:32,660 >> Dobře, tak rychle pár administrativních 430 00:17:32,660 --> 00:17:33,470 oznámení. 431 00:17:33,470 --> 00:17:36,940 Takže pro oblasti, které oficiálně začalo letos 432 00:17:36,940 --> 00:17:38,970 Neděle, budete vždy chtít, aby, pokud 433 00:17:38,970 --> 00:17:40,120 máte jednu, notebook. 434 00:17:40,120 --> 00:17:42,570 Pokud nemáte notebook, se dostat ven mi 435 00:17:42,570 --> 00:17:43,580 klesá mi e-mail. 436 00:17:43,580 --> 00:17:44,810 A budeme vymyslet postup. 437 00:17:44,810 --> 00:17:47,100 Co obecně najdete v sekci je, že jsou součástí 438 00:17:47,100 --> 00:17:48,770 koncepční, část hands-on. 439 00:17:48,770 --> 00:17:52,190 Budeme konkrétně využít část otázek, část 440 00:17:52,190 --> 00:17:54,110 Tento týden je problém set, projít některé z 441 00:17:54,110 --> 00:17:55,820 koncepční materiál z přednášky. 442 00:17:55,820 --> 00:17:57,480 A to je vše v aktuálním problému sady. 443 00:17:57,480 --> 00:18:00,010 A budeme také ponořit se do některých hands-o činnosti, někdy 444 00:18:00,010 --> 00:18:02,190 které budou muset být předloženy, někdy 445 00:18:02,190 --> 00:18:02,830 která nebude. 446 00:18:02,830 --> 00:18:04,630 Například, tento první týden, že to znamenalo, stejně jako 447 00:18:04,630 --> 00:18:05,780 warm-up cvičení. 448 00:18:05,780 --> 00:18:07,800 A zjistíte, že tyto problémy jsou opravdu jen to. 449 00:18:07,800 --> 00:18:10,220 Jsou znamenalo velmi malý, ale ne nezbytně 450 00:18:10,220 --> 00:18:13,100 triviální programy napsat, které nejsou nutně 451 00:18:13,100 --> 00:18:16,230 vzrušující samy o sobě, ale jsou zde dobré možnosti pro 452 00:18:16,230 --> 00:18:19,620 cvičit se syntaxí, s novými funkcemi, v pohodlí 453 00:18:19,620 --> 00:18:21,900 sekce, kde budete mít několik svých spolužáků prezentovat jako 454 00:18:21,900 --> 00:18:22,870 stejně jako vaše TF. 455 00:18:22,870 --> 00:18:26,210 >> A co budeme dělat v průběhu času, je použít nástroj nazvaný CS50 prostory, 456 00:18:26,210 --> 00:18:28,940 , kdy místo jen pomocí CS50 Appliance, budete si muset vybrat 457 00:18:28,940 --> 00:18:32,450 místo toho jít na webovou stránku v prohlížeči, kde si budete moci 458 00:18:32,450 --> 00:18:35,610 psát kód v okně prohlížeče při sekci. 459 00:18:35,610 --> 00:18:38,240 A pak, když se přihlásíte, můžete vaše vyučování kolega pak zobrazí 460 00:18:38,240 --> 00:18:40,980 co to je píšete na obrazovce ve vašem prohlížeči 461 00:18:40,980 --> 00:18:43,930 Okno se na přední části třídy, ať už anonymně nebo 462 00:18:43,930 --> 00:18:47,250 veřejně, tak, že on nebo ona může pak projít s 463 00:18:47,250 --> 00:18:50,080 tví spolužáci, co jsi udělal dobře, co jsi neudělal dobře. 464 00:18:50,080 --> 00:18:52,750 A opět, buďte ujištěni, to vše může být pěkně anonymní. 465 00:18:52,750 --> 00:18:54,410 Ale to bude pěkná příležitost pro mnohem více 466 00:18:54,410 --> 00:18:56,810 interaktivita, než něco jako přednášky umožňuje. 467 00:18:56,810 --> 00:18:58,910 >> Mezitím, budeme mít tyto věci nazvaný výborný 468 00:18:58,910 --> 00:19:01,610 profily, které jsou volitelné, ale jsou otevřené pro každého v 469 00:19:01,610 --> 00:19:04,030 třídy, takže můžete udělat více společně pro 470 00:19:04,030 --> 00:19:05,190 Problém nastavit jednu. 471 00:19:05,190 --> 00:19:06,010 Tady je plán. 472 00:19:06,010 --> 00:19:08,870 To je také zveřejněn na domovské stránce cs50.net. 473 00:19:08,870 --> 00:19:10,850 Všimněte si, že tam bude hacker specifické 474 00:19:10,850 --> 00:19:12,430 jeden zítra odpoledne. 475 00:19:12,430 --> 00:19:15,460 A budeme točit jeden dnes a jeden zítra a post ty 476 00:19:15,460 --> 00:19:16,720 on-line do 24 hodin. 477 00:19:16,720 --> 00:19:19,370 Takže pokud nemůžete provádět žádné z těchto časů, ne se bát. 478 00:19:19,370 --> 00:19:22,720 A opět, plán je nyní online na cs50.net. 479 00:19:22,720 --> 00:19:25,350 >> Pokud jde o krájení sám, měli byste se dostali 480 00:19:25,350 --> 00:19:28,520 email pokyn, abyste šli do kurzu domovskou stránku najít 481 00:19:28,520 --> 00:19:29,610 z vašeho oddílu. 482 00:19:29,610 --> 00:19:32,890 Je-li život se změnil a je třeba změnit bod, 483 00:19:32,890 --> 00:19:33,560 není problém. 484 00:19:33,560 --> 00:19:37,900 Vraťte se na tuto stejnou adresu URL, cs50.net/section, singulární, 485 00:19:37,900 --> 00:19:40,090 a budete vyplnit podobný formulář, takže můžete 486 00:19:40,090 --> 00:19:41,260 pak nám své preference. 487 00:19:41,260 --> 00:19:43,360 A budeme sledovat do konce týdne, jak na to, co můžeme 488 00:19:43,360 --> 00:19:44,240 ubytovat. 489 00:19:44,240 --> 00:19:49,530 Minulý týden, připomenout, že jsme navrhli pomocí CS50 diskutovat, 490 00:19:49,530 --> 00:19:51,370 Předmět je diskuze nástrojem, v přednášce. 491 00:19:51,370 --> 00:19:53,680 Takže jsme měli 40 otázek, které byly položeny a 492 00:19:53,680 --> 00:19:54,720 zodpovězena během přednášky. 493 00:19:54,720 --> 00:19:56,280 Takže to vypadalo, že funguje dobře, takže budeme pokračovat 494 00:19:56,280 --> 00:19:57,180 se snaží udělat to. 495 00:19:57,180 --> 00:19:59,600 Pokud se během přednášky, to není jen pocit, pohodlné zvyšování 496 00:19:59,600 --> 00:20:00,780 tvá ruka, není problém. 497 00:20:00,780 --> 00:20:04,640 Přejít na cs50.net/discuss, psát tam, a jeden z našich výuky 498 00:20:04,640 --> 00:20:07,270 chlapi budou buď přijmout elektronicky nebo zvýšit jejich 499 00:20:07,270 --> 00:20:10,620 Použité vaším jménem anonymně se zeptat, v závislosti 500 00:20:10,620 --> 00:20:12,470 na povaze otázky. 501 00:20:12,470 --> 00:20:15,000 A, pokud jde o zpětné vazby, bude obecně psets být 502 00:20:15,000 --> 00:20:16,760 vrátil do týdne. 503 00:20:16,760 --> 00:20:19,080 Vzhledem k tomu, že trvá chvíli pro oddíly pro dosažení 504 00:20:19,080 --> 00:20:22,430 rovnováha, první Pset, 0 a 1, se trochu 505 00:20:22,430 --> 00:20:24,130 zpoždění, neboť se věci uklidní. 506 00:20:24,130 --> 00:20:27,130 Ale zůstaňte naladěni na to v příštích týdnech. 507 00:20:27,130 --> 00:20:29,750 >> Dobře, tak mi dovolte dát na můj vážný 508 00:20:29,750 --> 00:20:31,040 hlas na chvíli. 509 00:20:31,040 --> 00:20:32,690 Takže je to vlastně zajímavé klima být 510 00:20:32,690 --> 00:20:35,210 s tuto diskusi, co se všechny jiné 511 00:20:35,210 --> 00:20:37,310 děje na akademické půdě s ním související. 512 00:20:37,310 --> 00:20:40,220 Ale CS50 má jistě své historii této konkrétní 513 00:20:40,220 --> 00:20:43,360 téma, v jak hodně jako každý rok, tento kurz, pro mnohé 514 00:20:43,360 --> 00:20:46,910 let, Ad-desky zhruba 3% třídy. 515 00:20:46,910 --> 00:20:51,620 Tento poslední rok, 2011, CS50 Ad-Boarded 35 studentů. 516 00:20:51,620 --> 00:20:54,120 To není, myslím, že vzhledem k nedostatku jasnosti. 517 00:20:54,120 --> 00:20:56,760 Si uvědomit, že se v průběhu jeho osnovy, tam je strana 518 00:20:56,760 --> 00:20:59,020 Prohlášení o vysvětlení, kde linky jsou. 519 00:20:59,020 --> 00:21:01,350 Tentýž prohlášení se opakuje na každém jednom z 520 00:21:01,350 --> 00:21:03,070 Problém nastaví na straně jedné. 521 00:21:03,070 --> 00:21:05,760 >> Tak jsem zmínil to dnes opravdu jen, aby se 522 00:21:05,760 --> 00:21:07,030 lidé mající na paměti to. 523 00:21:07,030 --> 00:21:08,080 A my jsme se snažili různé věci. 524 00:21:08,080 --> 00:21:10,630 A to, co jsem si myslel, budeme dělat dnes je jen chvilku na 525 00:21:10,630 --> 00:21:13,830 vlastně se podívat na některé z posledních případů, které mají přijít. 526 00:21:13,830 --> 00:21:16,160 Spíše než udržovat tyto jako malé špinavé tajemství, ve skutečnosti 527 00:21:16,160 --> 00:21:19,170 poukázat na to, co studenti udělali a jak jsme objevili 528 00:21:19,170 --> 00:21:21,630 to a to, co opravdu zastřešujícím motivace je pro 529 00:21:21,630 --> 00:21:23,950 i tenhle rozhovor. 530 00:21:23,950 --> 00:21:27,060 Takže s tím řekl, že linka je v podstatě to - 531 00:21:27,060 --> 00:21:29,200 dle osnov, jste vítáni, doporučujeme, aby 532 00:21:29,200 --> 00:21:30,210 mluvit se spolužáky. 533 00:21:30,210 --> 00:21:31,910 To je celý smysl má tato spolupráce 534 00:21:31,910 --> 00:21:34,470 úřední hodiny v Annenberg a povzbuzování lidí k 535 00:21:34,470 --> 00:21:35,755 Závěrečný projekt spolupracovat. 536 00:21:35,755 --> 00:21:38,590 Ale linka je vypracován, když přijde čas, aby skutečně psát 537 00:21:38,590 --> 00:21:39,790 vaše konečné řešení. 538 00:21:39,790 --> 00:21:42,590 Mluvení v angličtině, v pohodě, mluvit v pseudokódu, 539 00:21:42,590 --> 00:21:43,400 úplně v pohodě. 540 00:21:43,400 --> 00:21:46,340 Emaily spolužák si PSet, nechat je prohlédnout 541 00:21:46,340 --> 00:21:48,610 na obrazovce jako hands pokračovat v psaní, 542 00:21:48,610 --> 00:21:50,110 přes čáru stejně. 543 00:21:50,110 --> 00:21:52,250 Líbí se podívat do učebních osnov pro jednotlivé linky. 544 00:21:52,250 --> 00:21:55,850 >> Ale jen dokresluje obraz o tom, jak je to bohužel 545 00:21:55,850 --> 00:21:58,370 reality, si uvědomit, že existují webové stránky tam, že 546 00:21:58,370 --> 00:22:01,490 mají řešení z této třídy a mnoha dalších tříd. 547 00:22:01,490 --> 00:22:04,940 Skutečnost, že jste vy nebo přibližně 3% z vás ví, že toto existuje 548 00:22:04,940 --> 00:22:07,240 Znamená to, že víme, že to existuje. 549 00:22:07,240 --> 00:22:09,340 Skutečnost, že existují stránky jako to, kde se 550 00:22:09,340 --> 00:22:11,540 může zaplatit někoho, kdo skutečně udělat váš problém sady - to bylo 551 00:22:11,540 --> 00:22:13,450 skutečný případ, který přišel loni. 552 00:22:13,450 --> 00:22:15,790 To je webové stránky s názvem odesk.com. 553 00:22:15,790 --> 00:22:20,090 A Tim bylo jméno osoby, která byla zde vysílání na 554 00:22:20,090 --> 00:22:24,580 tento web a požádal někoho, aby mu PSet 7 v 555 00:22:24,580 --> 00:22:25,570 tento konkrétní případ. 556 00:22:25,570 --> 00:22:28,350 No, odesk.com je velmi Google-moci, a my se 557 00:22:28,350 --> 00:22:30,310 velmi dobrý Googling. 558 00:22:30,310 --> 00:22:32,360 Také zde existují místa - a tohle je spíše 559 00:22:32,360 --> 00:22:34,234 otřesné, upřímně řečeno. 560 00:22:34,234 --> 00:22:38,050 [Smích] 561 00:22:38,050 --> 00:22:39,610 DAVID J. Malan: legrační věc, o tomto webu, je-li 562 00:22:39,610 --> 00:22:41,970 čtete stránku O, mluví o jejich firemní 563 00:22:41,970 --> 00:22:44,390 kultura a jak zákaznický servis je jejich číslo jedna 564 00:22:44,390 --> 00:22:46,190 prioritou, aby se ujistil, že vaše úkoly se 565 00:22:46,190 --> 00:22:47,890 obrátil na čase. 566 00:22:47,890 --> 00:22:50,580 >> Ale ve vší vážnosti, opět skutečnost, že by tyto stránky 567 00:22:50,580 --> 00:22:52,910 existují, si uvědomit, my taky, jsou vědomi 568 00:22:52,910 --> 00:22:53,730 Tyto druhy míst. 569 00:22:53,730 --> 00:22:55,890 A aby vám pocit, co tvoří tuto obecně 570 00:22:55,890 --> 00:22:58,570 trvá, jsme obvykle nemají velké aféry, kde se lidé 571 00:22:58,570 --> 00:23:01,080 spolupracují na jakékoliv masovém měřítku, ale spíše 572 00:23:01,080 --> 00:23:04,540 je tato pozdně noční chvíle slabosti, kde máte tak 573 00:23:04,540 --> 00:23:07,550 co dělat, je to 04:00, jste vyčerpaná, a 574 00:23:07,550 --> 00:23:09,770 myslet na sebe, dobře, nech mě stačí se podívat na mé 575 00:23:09,770 --> 00:23:11,770 spolubydlící je nebo mého přítele kód nebo podobné. 576 00:23:11,770 --> 00:23:14,800 A projevy to bohužel zahrnují Student 577 00:23:14,800 --> 00:23:17,640 Předložením něco takového a Student B předkládání 578 00:23:17,640 --> 00:23:20,370 něco takového, což jistě v počítači 579 00:23:20,370 --> 00:23:23,830 věda třídy, je pozoruhodně snadné pro počítačové vědce 580 00:23:23,830 --> 00:23:25,690 k detekci se softwarem. 581 00:23:25,690 --> 00:23:28,410 To je další obyčejný paradigma, kde jste druh 582 00:23:28,410 --> 00:23:31,010 pracuje po boku někoho, možná mluví v 583 00:23:31,010 --> 00:23:32,360 Anglicky, dobře, pseudokód. 584 00:23:32,360 --> 00:23:35,080 Ale pak přijde čas na skutečně předložit, a psets 585 00:23:35,080 --> 00:23:37,910 Jen si vyměnili prostřednictvím e-mailu nebo Dropbox nebo podobně. 586 00:23:37,910 --> 00:23:41,120 Ale v pokusu, aby to méně zřejmé, že toto je 587 00:23:41,120 --> 00:23:44,830 co se stalo, pak je to to, co se nám. 588 00:23:44,830 --> 00:23:47,880 To taky, nevypne se dobře psané kusy 589 00:23:47,880 --> 00:23:50,360 software, jako bychom měli skutečně odhalit 590 00:23:50,360 --> 00:23:51,280 tyto druhy věcí. 591 00:23:51,280 --> 00:23:53,760 A skutečně to, co děláme, je běh software, který srovnává všechny 592 00:23:53,760 --> 00:23:55,540 letošní podání proti všem minulý rok je 593 00:23:55,540 --> 00:23:57,380 podání, proti všemu, co jsme našli na 594 00:23:57,380 --> 00:24:00,060 Internet, proti každé pracovní stránkách venku. 595 00:24:00,060 --> 00:24:01,710 Je to všechno velmi automatizovaný. 596 00:24:01,710 --> 00:24:05,665 A tak jsme to opravdu ve velkém spravedlnosti na 97%, kteří 597 00:24:05,665 --> 00:24:07,760 jsou opravdu funguje své prdele v tomto av dalších 598 00:24:07,760 --> 00:24:11,530 třídy a uvedení do všech tohoto úsilí tak, že práce 599 00:24:11,530 --> 00:24:13,030 oni nakonec předloží je jejich vlastní. 600 00:24:13,030 --> 00:24:14,220 A můžu jít na věky. 601 00:24:14,220 --> 00:24:16,030 >> To je jen několik z loňských případech. 602 00:24:16,030 --> 00:24:19,350 Několik studentů nám tyto soubory shodně pro PSet 2, 603 00:24:19,350 --> 00:24:22,460 Pset 3, Pset 4, Pset 5, Pset 6, Pset 9. 604 00:24:22,460 --> 00:24:26,360 V tomto případě, je to kvíz 0 a v posledním roce, kdy dva 605 00:24:26,360 --> 00:24:29,570 Studenti nám shodně tuto větu z mnoha 606 00:24:29,570 --> 00:24:32,210 jiní, "Žádost typu -" tečka, tečka, tečka. 607 00:24:32,210 --> 00:24:34,530 Takže i ve třídě 600 jsme to zjistí 608 00:24:34,530 --> 00:24:36,310 na předložené kvízy. 609 00:24:36,310 --> 00:24:39,080 Takže ve zkratce, tento - upřímně řečeno, nesnáším mít tento druh 610 00:24:39,080 --> 00:24:41,300 konverzace - ale to je opravdu úmyslné úsilí 611 00:24:41,300 --> 00:24:43,540 v letošním roce, aby se pokusili snížit toto číslo. 612 00:24:43,540 --> 00:24:45,650 Protože i když jsme říkají, že tyto druhy věcí každé 613 00:24:45,650 --> 00:24:48,100 rok, myslím, že realitu že pobýval na něm několik 614 00:24:48,100 --> 00:24:50,800 více sekund, než je obvyklé, a vlastně jen poukazuje na 615 00:24:50,800 --> 00:24:53,600 že to, co se může zdát jako, eh, ne tak velký problém, alespoň 616 00:24:53,600 --> 00:24:56,390 si vzpomenu na tomto konkrétním okamžiku, a to jak v spravedlivě přiznat 617 00:24:56,390 --> 00:25:00,100 sami a na své spolužáky zde. 618 00:25:00,100 --> 00:25:02,480 Takže pokud budete mít jakékoliv dotazy ohledně kde je hranice 619 00:25:02,480 --> 00:25:04,290 je, prosím, jen natáhnout ruku ke mně osobně. 620 00:25:04,290 --> 00:25:07,190 Ale odpověď je vždy naprosto zdůraznil Na 621 00:25:07,190 --> 00:25:09,090 last minute, hotovosti v pozdní den. 622 00:25:09,090 --> 00:25:11,080 Nebo jestli je to věc, že ​​nemá žádné pozdní dny, 623 00:25:11,080 --> 00:25:12,900 upřímně, napište mi osobně. 624 00:25:12,900 --> 00:25:14,110 Budeme něco vymyslet. 625 00:25:14,110 --> 00:25:17,480 Prosím, nedávejte svůj čas tady na Harvardu v ohrožení. 626 00:25:17,480 --> 00:25:18,570 >> Teď jsem si myslel, že bychom měli náladu, a tak jsem 627 00:25:18,570 --> 00:25:20,264 zahrnul jako další snímek. 628 00:25:20,264 --> 00:25:22,770 [Smích] 629 00:25:22,770 --> 00:25:23,630 DAVID J. Malan: Tato webová stránka byla skvělá. 630 00:25:23,630 --> 00:25:24,820 Vlastně jsem trochu roztržitý. 631 00:25:24,820 --> 00:25:26,330 Tam je to jeden. 632 00:25:26,330 --> 00:25:29,590 A pak tenhle byl úžasný. 633 00:25:29,590 --> 00:25:35,190 Dobře, tak si tohoto kotěte pozdě v noci při 634 00:25:35,190 --> 00:25:36,040 tato rozhodnutí. 635 00:25:36,040 --> 00:25:40,110 Dobře, tak zpět do více zábavy a méně závažné věci, jako je 636 00:25:40,110 --> 00:25:40,780 podmínek. 637 00:25:40,780 --> 00:25:43,900 >> Dobře, tak jsme si povídali krátce o nich. 638 00:25:43,900 --> 00:25:46,080 To je něco, co je asi dost známé z 639 00:25:46,080 --> 00:25:47,260 svět Scratch. 640 00:25:47,260 --> 00:25:49,860 A ve světě Scratch, máme tuto potřebu někdy 641 00:25:49,860 --> 00:25:51,110 jít dělat vidličky na silnici. 642 00:25:51,110 --> 00:25:54,840 Buď to, nebo to, nebo tu druhou věc tady. 643 00:25:54,840 --> 00:25:58,990 A když chceme udělat, můžeme použít v C nyní, tuto možnost, pokud 644 00:25:58,990 --> 00:26:00,860 else. 645 00:26:00,860 --> 00:26:06,420 A pak tady máme booleovských výrazů. 646 00:26:06,420 --> 00:26:09,260 Například, Booleovské výrazy tady, můžeme OR 647 00:26:09,260 --> 00:26:12,260 dohromady, v tom smyslu, že mají tuto podmínku OR 648 00:26:12,260 --> 00:26:13,200 tato podmínka. 649 00:26:13,200 --> 00:26:15,100 Můžeme A dohromady, v tom smyslu, že chceme 650 00:26:15,100 --> 00:26:17,710 zkontrolovat tento stav, přičemž tato podmínka. 651 00:26:17,710 --> 00:26:22,440 A tady máme switch nyní, což není tak 652 00:26:22,440 --> 00:26:26,040 podobně syntakticky na ty druhy podmínek, ale 653 00:26:26,040 --> 00:26:30,160 nám umožňuje dělat ekvivalent if, else if, else if, else 654 00:26:30,160 --> 00:26:34,990 v případě, a jako jednoduše výčet jim případ od případu 655 00:26:34,990 --> 00:26:36,670 by případ od případu. 656 00:26:36,670 --> 00:26:38,370 Takže jsme viděli ty minule. 657 00:26:38,370 --> 00:26:40,430 A pak jsme začali se dotýká věcí, jako smyčky. 658 00:26:40,430 --> 00:26:42,070 Viděli jsme jednu z nich před chvílí. 659 00:26:42,070 --> 00:26:44,180 Ale jsou tyto další smyčkování konstrukce. 660 00:26:44,180 --> 00:26:46,370 >> Například, tento zde. 661 00:26:46,370 --> 00:26:50,140 Takže zatímco (podmínka), dělat tuto věc znovu a znovu. 662 00:26:50,140 --> 00:26:53,070 Takže v podstatě, co se zdá být odlišný od tohoto 663 00:26:53,070 --> 00:26:55,760 pro smyčce a tento zatímco smyčka zde? 664 00:27:00,810 --> 00:27:05,045 To pro smyčce a tento smyčce while. 665 00:27:05,045 --> 00:27:07,840 Jo? 666 00:27:07,840 --> 00:27:08,800 Co je to? 667 00:27:08,800 --> 00:27:10,050 PUBLIKUM: [neslyšitelnou]. 668 00:27:14,632 --> 00:27:15,120 DAVID J. Malan: Dobré. 669 00:27:15,120 --> 00:27:17,130 Takže zatímco v cyklu for podmínkou, že je jasně 670 00:27:17,130 --> 00:27:17,940 více syntaxe. 671 00:27:17,940 --> 00:27:20,560 Tam je to inicializace, je tu tato aktualizace. 672 00:27:20,560 --> 00:27:23,820 V cyklu while, je to prostě tento stav. 673 00:27:23,820 --> 00:27:26,630 Takže se zdá, že je to trochu zredukováno proti pro 674 00:27:26,630 --> 00:27:28,770 smyčka, což znamená, že pokud chceme mít proměnné a chceme 675 00:27:28,770 --> 00:27:30,800 mít inkrementace, skutečnosti máme k 676 00:27:30,800 --> 00:27:32,500 udělat tuto věc sami. 677 00:27:32,500 --> 00:27:34,420 >> Tak nech mě jít napřed a otevřít gedit. 678 00:27:34,420 --> 00:27:36,320 Dovolte mi, abych na ni přepnete zařízení. 679 00:27:36,320 --> 00:27:38,110 A řekněme, udělat rychlý malý příklad, že 680 00:27:38,110 --> 00:27:40,550 rozlišuje jeden z nich z druhé. 681 00:27:40,550 --> 00:27:42,490 A v zadní části mé mysli tady, měl bych říct jednu věc. 682 00:27:42,490 --> 00:27:44,120 I výslovně uvedeno jméno Tim. 683 00:27:44,120 --> 00:27:47,740 Tim byl vlastně někdo, že student se snažil najít dělat 684 00:27:47,740 --> 00:27:48,680 jejich domácí úkol pro ně. 685 00:27:48,680 --> 00:27:51,280 Neměli jsme žádné Tim v tomto konkrétním bodě. 686 00:27:51,280 --> 00:27:53,690 Takže si uvědomit, abych zveřejněny studenta, to není studentem. 687 00:27:53,690 --> 00:27:55,720 Byla to náhodná osoba na internetu dělat věci 688 00:27:55,720 --> 00:27:57,180 o serveru proxy v loňském roce. 689 00:27:57,180 --> 00:27:58,670 Tak jsme zjistili, že taky. 690 00:27:58,670 --> 00:28:00,630 Takže v tomto případě zde, nechte mě jít napřed a 691 00:28:00,630 --> 00:28:02,810 otevřít nový soubor. 692 00:28:02,810 --> 00:28:04,800 Soubor, Nový. 693 00:28:04,800 --> 00:28:06,050 To mi dává kartu zde. 694 00:28:06,050 --> 00:28:09,940 Nech mě jít dopředu a uložit jej jako loop.c. 695 00:28:09,940 --> 00:28:11,810 Nech mě jít a klikněte na tlačítko Uložit. 696 00:28:11,810 --> 00:28:15,340 A pak tady dole, pojďme do toho a začněte psát 697 00:28:15,340 --> 00:28:16,605 # Include . 698 00:28:19,116 --> 00:28:20,520 Dovolte mi, abych Zoom 699 00:28:20,520 --> 00:28:23,410 Teď uděláme int main (void). 700 00:28:23,410 --> 00:28:30,020 Teď mě nech jít dál a dělat for (int i = 0; i < 701 00:28:30,020 --> 00:28:33,480 oh, 10, i + +). 702 00:28:33,480 --> 00:28:36,620 A teď budu pokračovat a to vytisknout hvězdu, která mi 703 00:28:36,620 --> 00:28:37,890 dělali dříve. 704 00:28:37,890 --> 00:28:39,390 A pak na konci tohoto programu, jsme jen tak 705 00:28:39,390 --> 00:28:41,130 vytisknout nový řádek, jen proto, že moje výzva 706 00:28:41,130 --> 00:28:42,470 nevypadá všude chaotický. 707 00:28:42,470 --> 00:28:45,170 návrat 0. 708 00:28:45,170 --> 00:28:47,610 Zdá se syntakticky korektní? 709 00:28:47,610 --> 00:28:48,040 Tak daleko. 710 00:28:48,040 --> 00:28:48,560 Tak uvidíme. 711 00:28:48,560 --> 00:28:51,290 >> Dovolte mi tedy vzdálíte, jít do mého terminálovém okně. 712 00:28:51,290 --> 00:28:54,570 A nech mě jít napřed a spustit smyčku, protože jsem volal toto 713 00:28:54,570 --> 00:28:55,690 věc loop.c. 714 00:28:55,690 --> 00:28:56,780 Takže si smyčku. 715 00:28:56,780 --> 00:28:57,840 Zdá se, že sestavení OK. 716 00:28:57,840 --> 00:29:00,210 Dovolte mi, abych běžet smyčku, a teď Enter. 717 00:29:00,210 --> 00:29:01,820 A zdá se, že vytisknout 10 hvězd. 718 00:29:01,820 --> 00:29:03,780 Takže řekněme, převést tuto smyčky while a vidět, co 719 00:29:03,780 --> 00:29:05,220 druhy otázek jsme zakopnout. 720 00:29:05,220 --> 00:29:11,290 Takže místo toho, nechte mě jít sem a říct, když jsem je 721 00:29:11,290 --> 00:29:12,760 méně než 10 - 722 00:29:12,760 --> 00:29:14,910 dovolte mi, abych se zbavit smyčky for. 723 00:29:14,910 --> 00:29:17,170 OK, takže máme pár problémů, které v. 724 00:29:17,170 --> 00:29:21,110 Takže stav je stejný, ale já jsem samozřejmě chybí 725 00:29:21,110 --> 00:29:21,680 inicializace. 726 00:29:21,680 --> 00:29:23,840 Jsem chybí inkrementace. 727 00:29:23,840 --> 00:29:28,020 Takže to, co by měl kompilátor pravděpodobně řekni mi, když se snažím 728 00:29:28,020 --> 00:29:29,170 sestavit tento program? 729 00:29:29,170 --> 00:29:29,666 Jo? 730 00:29:29,666 --> 00:29:31,154 PUBLIKUM: [neslyšitelnou]. 731 00:29:31,154 --> 00:29:31,650 >> DAVID J. Malan: Dobré. 732 00:29:31,650 --> 00:29:34,180 Takže to bude říkat něco jako neoficiální - v tomto 733 00:29:34,180 --> 00:29:35,280 případě, že proměnná i. 734 00:29:35,280 --> 00:29:37,980 A skutečně, použijte nehlášené identifikátor i. 735 00:29:37,980 --> 00:29:40,960 A tak to je v rozporu s jazycích jako PHP a 736 00:29:40,960 --> 00:29:43,120 Python a Ruby, s níž někteří z vás by mohl být obeznámeni, 737 00:29:43,120 --> 00:29:44,820 kde můžete to prostě začít používat proměnné 738 00:29:44,820 --> 00:29:47,420 chtě-nechtě, a nemusíte se starat o vyhlášení jim 739 00:29:47,420 --> 00:29:48,560 explicitně vždy. 740 00:29:48,560 --> 00:29:51,770 V C a v jazycích, jako je Java a C + +, musíte být 741 00:29:51,770 --> 00:29:53,020 Super explicitní. 742 00:29:53,020 --> 00:29:55,760 A pokud chcete proměnnou s názvem i, musíš mi říct, 743 00:29:55,760 --> 00:29:57,360 jaké proměnné je. 744 00:29:57,360 --> 00:29:59,360 Takže budeme muset opravit takto. 745 00:29:59,360 --> 00:30:05,510 Budu muset jít sem a zadejte int i; proto, 746 00:30:05,510 --> 00:30:07,860 Jsem deklaroval proměnnou s názvem i. 747 00:30:07,860 --> 00:30:09,180 Teď jsem přeskočil jeden krok. 748 00:30:09,180 --> 00:30:11,340 Já jsem samozřejmě není inicializována, ale uvidíme, jestli to na 749 00:30:11,340 --> 00:30:13,650 Alespoň značek zvonění přestaň si stěžovat. 750 00:30:13,650 --> 00:30:15,770 Takže dovolte mi, abych předělal tento program. 751 00:30:15,770 --> 00:30:16,770 >> Dobře, teď je to jen stěžovat 752 00:30:16,770 --> 00:30:17,870 z jiného důvodu. 753 00:30:17,870 --> 00:30:21,130 "Proměnná" i "je inicializována při použití zde." Dobře, tak 754 00:30:21,130 --> 00:30:22,340 to je docela jasné. 755 00:30:22,340 --> 00:30:25,510 Inicializován jen znamená nastavení je rovna hodnotě. 756 00:30:25,510 --> 00:30:30,820 A my jsme neudělali, takže zkusím rovná 0. 757 00:30:30,820 --> 00:30:35,030 Nyní se pojďme zkusit to znovu a znovu spustit zvonění. 758 00:30:35,030 --> 00:30:36,140 Zpracovala tentokrát. 759 00:30:36,140 --> 00:30:37,210 A já jsem o tom jej spustit. 760 00:30:37,210 --> 00:30:43,120 Ale velký starý nekonečná smyčka, protože jsem to udělal 761 00:30:43,120 --> 00:30:45,530 inicializace, udělal jsem podmínku, ale já jsem nikdy nedělal 762 00:30:45,530 --> 00:30:47,030 jakýkoliv druh inkrementace. 763 00:30:47,030 --> 00:30:48,780 Tak jak to mám udělat v inkrementace? 764 00:30:48,780 --> 00:30:51,170 No, v cyklu while, to vypadá, budu mít 765 00:30:51,170 --> 00:30:54,180 na to uvnitř smyčky, protože podobně jako první 766 00:30:54,180 --> 00:30:56,570 týden příklady dělat smyčky konstrukce, jako s 767 00:30:56,570 --> 00:30:59,040 ponožky a self-počítání, co jsme museli udělat 768 00:30:59,040 --> 00:31:01,550 něco na samém konci, rád se vrátit na další řádek. 769 00:31:01,550 --> 00:31:05,040 Co když půjdu do toho a to i + + tady? 770 00:31:05,040 --> 00:31:06,030 Pojďme ani zkompilovat to. 771 00:31:06,030 --> 00:31:06,890 Chyť mě už. 772 00:31:06,890 --> 00:31:09,704 Co je tady špatně? 773 00:31:09,704 --> 00:31:10,690 PUBLIKUM: [neslyšitelnou]. 774 00:31:10,690 --> 00:31:11,770 >> DAVID J. Malan: Tak to rozhodně není int. 775 00:31:11,770 --> 00:31:13,080 Je to i. 776 00:31:13,080 --> 00:31:15,110 A složené závorky, jako dříve, 777 00:31:15,110 --> 00:31:16,800 odsazení nestačí. 778 00:31:16,800 --> 00:31:18,410 Takže teď jsem se to postavit. 779 00:31:18,410 --> 00:31:21,780 Takže když jsem je menší než 10, vytisknout hvězdu, 780 00:31:21,780 --> 00:31:23,220 pak zvyšovat i. 781 00:31:23,220 --> 00:31:25,680 A způsob, jakým při smyčka funguje tak, že jakmile hit 782 00:31:25,680 --> 00:31:29,630 Spodní část smyčky, která je v tomto případě vypadá řádku 10, 783 00:31:29,630 --> 00:31:32,880 to jít zpátky do řady 6, na kterém místě 784 00:31:32,880 --> 00:31:34,400 podmínka bude znovu. 785 00:31:34,400 --> 00:31:37,500 A pokud je i nadále nižší než 10, uděláme linky 8 a 786 00:31:37,500 --> 00:31:41,250 pak 9, pak budeme hit 10, a vrátit se do 6, znovu a 787 00:31:41,250 --> 00:31:45,580 znovu a znovu a znovu, tak dlouho, jak jsem je menší než 10. 788 00:31:45,580 --> 00:31:47,860 Takže pojďme znovu spustit, aby tady. 789 00:31:47,860 --> 00:31:48,940 >> Dobře, jsme sestavili v pořádku. 790 00:31:48,940 --> 00:31:50,300 Dovolte mi, abych znovu-run smyčky. 791 00:31:50,300 --> 00:31:52,620 A teď to vlastně vypadá, že pracuje. 792 00:31:52,620 --> 00:31:55,100 Takže plusy a minusy tady? 793 00:31:55,100 --> 00:31:58,910 No, zatím je to vlastně není celý PLO - 794 00:31:58,910 --> 00:31:59,420 tak roztomilý. 795 00:31:59,420 --> 00:32:01,870 Dobře, že je - ach, to byla nehoda. 796 00:32:01,870 --> 00:32:05,200 Dobře, tak pojďme zpět k cyklu for. 797 00:32:05,200 --> 00:32:07,530 Takže pro smyček jsou pěkné, protože jste super explicitní. 798 00:32:07,530 --> 00:32:09,720 A i když jsou trochu neohrabaný psát, že je to 799 00:32:09,720 --> 00:32:11,500 velmi silný a to vám umožní udělat 800 00:32:11,500 --> 00:32:12,980 více věcí najednou. 801 00:32:12,980 --> 00:32:16,240 While se nezdá, že obrovské množství hodnoty jen 802 00:32:16,240 --> 00:32:18,500 Zatím, protože to vypadá, budeme muset udělat více práce. 803 00:32:18,500 --> 00:32:20,670 Musíme dát inicializace sem se 804 00:32:20,670 --> 00:32:23,480 aktualizovat tady dole, a musíme mít na paměti, aby to všechno. 805 00:32:23,480 --> 00:32:26,260 Tak uvidíme, v čase, který while skutečně půjčit 806 00:32:26,260 --> 00:32:29,380 samy do několika různých kontextech, různé údaje 807 00:32:29,380 --> 00:32:33,900 struktury, jako seznamy a hašovacích tabulek, co se dostaneme 808 00:32:33,900 --> 00:32:34,970 mid-semestr. 809 00:32:34,970 --> 00:32:37,900 Ale teď, vím, že tam je to třetí typ známý jako do- 810 00:32:37,900 --> 00:32:38,480 while. 811 00:32:38,480 --> 00:32:39,540 A my jsme viděli tuto krátce. 812 00:32:39,540 --> 00:32:41,830 A to by mohlo být super užitečné s PSet 1. 813 00:32:41,830 --> 00:32:45,570 Kdykoliv budete chtít něco udělat, a pak zkontrolujte, zda 814 00:32:45,570 --> 00:32:48,940 uživatel spolupracoval, a pokud ne, udělejte to znovu, do- 815 00:32:48,940 --> 00:32:51,460 zatímco smyčka půjčuje sebe k tomuto druhu logiky. 816 00:32:51,460 --> 00:32:55,640 Vzhledem k tomu, jak objednávat od shora dolů zde naznačuje, 817 00:32:55,640 --> 00:32:57,750 to doslovně znamená to. 818 00:32:57,750 --> 00:32:59,830 A to znovu a znovu, možná to, co to mělo být? 819 00:32:59,830 --> 00:33:03,000 Možná to znamená volání GetInt nebo GetString a pak 820 00:33:03,000 --> 00:33:05,830 kontrolou hodnoty GetInt nebo GetString a pak křičí 821 00:33:05,830 --> 00:33:08,260 na uživatele, pokud to není spolupracovali a požádal je, 822 00:33:08,260 --> 00:33:10,100 znovu a znovu a znovu. 823 00:33:10,100 --> 00:33:11,730 Kam chcete udělat něco jednou, 824 00:33:11,730 --> 00:33:13,210 pak zkontrolovat nějakou podmínku. 825 00:33:13,210 --> 00:33:14,110 >> Tak pojďme to zkusit. 826 00:33:14,110 --> 00:33:17,130 Dovolte mi, abych skutečně změnit to nyní na do-while. 827 00:33:17,130 --> 00:33:18,830 A já jdu dál a proveďte následující. 828 00:33:18,830 --> 00:33:21,830 Takže postupujte následovně. 829 00:33:21,830 --> 00:33:26,870 Pojďme udělat int i = GetInt (), ale pojďme se nejprve sdělit uživateli 830 00:33:26,870 --> 00:33:27,410 co dělat. 831 00:33:27,410 --> 00:33:29,050 Tak trochu jiný tentokrát. 832 00:33:29,050 --> 00:33:31,270 "Dejte mi int". 833 00:33:31,270 --> 00:33:32,910 Takže budu používat printf za to. 834 00:33:32,910 --> 00:33:35,740 A teď jdu tady dole, a já udělám to 835 00:33:35,740 --> 00:33:41,520 když jsem je, řekněme, větší než - 836 00:33:41,520 --> 00:33:47,540 uvidíme, i je, řekněme, méně než 0, nebo i je 837 00:33:47,540 --> 00:33:48,730 větší než 10. 838 00:33:48,730 --> 00:33:51,810 Jinými slovy, chci číslo 1-9, jen 839 00:33:51,810 --> 00:33:52,720 libovolně. 840 00:33:52,720 --> 00:33:55,290 Takže jsem pomocí kombinovaného logický výraz zde 841 00:33:55,290 --> 00:33:59,930 ujistit, že i je menší než 0 nebo větší než 10, ve kterém 842 00:33:59,930 --> 00:34:02,530 případ, že bych se to udělat smyčku opět zde. 843 00:34:02,530 --> 00:34:04,400 Takže znovu, to - 844 00:34:04,400 --> 00:34:08,480 zatímco i je menší než 0 nebo i je větší než 10. 845 00:34:08,480 --> 00:34:11,440 >> Takže teď pojďme dál a udělat to jednou udělali jsme to. 846 00:34:11,440 --> 00:34:13,270 Pojďme udělat rychlou kontrolu zdravý rozum. 847 00:34:13,270 --> 00:34:18,929 printf ("Díky, i je% d", i). 848 00:34:18,929 --> 00:34:21,350 Takže tento jednoduchý program požádá uživatele o int, 849 00:34:21,350 --> 00:34:24,000 je si jistý, že je to v nějakém rozsahu, 1-9 včetně, 850 00:34:24,000 --> 00:34:26,280 a pak děkuje uživatele připomeňte jim, co právě 851 00:34:26,280 --> 00:34:27,940 napsal v, stejně jako malý přece nejsou kontroly. 852 00:34:27,940 --> 00:34:30,659 Ale uvidíme, jestli to funguje, jak bylo zamýšleno. 853 00:34:30,659 --> 00:34:34,533 Nech mě jít hlavou sem a znovu spustit, aby smyčku. 854 00:34:34,533 --> 00:34:35,350 Hmm. 855 00:34:35,350 --> 00:34:38,600 "Použití nehlášené identifikátor" i "". To je divné. 856 00:34:38,600 --> 00:34:41,509 Myslel jsem, že jsme se rozhodli, že. 857 00:34:45,489 --> 00:34:47,560 Stejný jev se ale jiný kód. 858 00:34:47,560 --> 00:34:47,899 Jo? 859 00:34:47,899 --> 00:34:50,191 PUBLIKUM: [Neslyšitelné] uvnitř dva, musíme 860 00:34:50,191 --> 00:34:52,639 [Neslyšitelné]. 861 00:34:52,639 --> 00:34:53,260 >> DAVID J. Malan: Přesně tak. 862 00:34:53,260 --> 00:34:55,989 Takže to vlastně vede nás k tématu známé jako rozsah. 863 00:34:55,989 --> 00:34:59,350 Ukazuje se, že C, opět, je to opravdu vás doslova. 864 00:34:59,350 --> 00:35:02,970 A pokud se vám něco takového, kde si deklarovat int 865 00:35:02,970 --> 00:35:06,120 a pak přiřadit mu nějakou hodnotu, ale vy, že uvnitř 866 00:35:06,120 --> 00:35:09,840 pár složených závorek, co dělá, je, že C se předpokládá, že 867 00:35:09,840 --> 00:35:14,800 chtějí jen ty 32 bitů známé jako i existovat uvnitř 868 00:35:14,800 --> 00:35:18,200 souvislosti s těmito složenými závorkami, v souvislosti s linií 869 00:35:18,200 --> 00:35:22,420 6 až 9. Tak jsem je deklarován, a to je přiřazen 870 00:35:22,420 --> 00:35:26,530 hodnota v řádku 8, ale jakmile se dostanete mimo 871 00:35:26,530 --> 00:35:30,270 linka 9 pod ortézy kudrnaté, i již není v 872 00:35:30,270 --> 00:35:31,910 rozsah, abych tak řekl. 873 00:35:31,910 --> 00:35:35,030 S-C-O-P-E. Je to již ve správném kontextu. 874 00:35:35,030 --> 00:35:37,940 Takže teď není i tak, je to, jako bychom neměli ani 875 00:35:37,940 --> 00:35:38,770 prohlásil to vůbec. 876 00:35:38,770 --> 00:35:41,520 >> Takže to, co je oprava a pak na něco takového, pokud 877 00:35:41,520 --> 00:35:44,300 Důvodem je to, že i je deklarována v rámci složených závorek, které 878 00:35:44,300 --> 00:35:45,120 je zřejmě špatné? 879 00:35:45,120 --> 00:35:45,410 Tady? 880 00:35:45,410 --> 00:35:46,820 PUBLIKUM: [neslyšitelnou]. 881 00:35:46,820 --> 00:35:47,150 DAVID J. Malan: Jo. 882 00:35:47,150 --> 00:35:48,710 Takže můžeme inicializovat to venku. 883 00:35:48,710 --> 00:35:53,530 Tak nech mě jít dopředu a odstraňte z prohlášení části který spočívá 884 00:35:53,530 --> 00:35:55,820 I specifikovat typ, a dovolte mi, abych to tady. 885 00:35:55,820 --> 00:36:00,220 Takže v řádku 5, nyní říká, že "Dejte mi int." Nazvěme to i. 886 00:36:00,220 --> 00:36:03,400 Všimněte si, v řádku 9, nechci to udělat, protože jsem 887 00:36:03,400 --> 00:36:04,830 již mají 32 bitů. 888 00:36:04,830 --> 00:36:06,140 Nechci se zeptat počítač pro 889 00:36:06,140 --> 00:36:07,630 různé 32 bitů. 890 00:36:07,630 --> 00:36:09,850 Chci používat tytéž 32 bitů. 891 00:36:09,850 --> 00:36:13,190 A teď, protože jsem je deklarována v souladu 5, je to stále legit 892 00:36:13,190 --> 00:36:16,550 použít v souladu 11 a řádek 12. 893 00:36:16,550 --> 00:36:19,310 >> Tak zkusím překompilovat to a vidět 894 00:36:19,310 --> 00:36:20,490 pokud zvonění přestane řvát. 895 00:36:20,490 --> 00:36:22,380 aby smyčku. 896 00:36:22,380 --> 00:36:25,470 Takže teď je to "implicitní deklarace funkce 897 00:36:25,470 --> 00:36:29,880 "GetInt" je neplatný v C99. "Co je to? 898 00:36:29,880 --> 00:36:30,400 Jo? 899 00:36:30,400 --> 00:36:32,330 PUBLIKUM: [neslyšitelnou]. 900 00:36:32,330 --> 00:36:32,690 DAVID J. Malan: Jo. 901 00:36:32,690 --> 00:36:35,520 Takže teď, že jsem vlastně pomocí GetInt, to není něco, 902 00:36:35,520 --> 00:36:38,190 že právě přichází s C. To pochází z CS50. 903 00:36:38,190 --> 00:36:39,890 Takže potřebujeme tady. 904 00:36:39,890 --> 00:36:41,450 A nech mě jít zpátky do řádku dole 905 00:36:41,450 --> 00:36:43,500 zde a znovu spusťte make. 906 00:36:43,500 --> 00:36:44,160 Dobře, konečně. 907 00:36:44,160 --> 00:36:46,270 Nyní jsme se rozhodl, že i druhý chybu. 908 00:36:46,270 --> 00:36:48,930 Dovolte mi, abych nyní spustit smyčku a uvidíme, co se stane. 909 00:36:48,930 --> 00:36:51,740 "Dejte mi int." Dám to 11. 910 00:36:51,740 --> 00:36:53,100 Dám to -1. 911 00:36:53,100 --> 00:36:54,470 Dám to foo. 912 00:36:54,470 --> 00:36:56,080 Dám to 5. 913 00:36:56,080 --> 00:36:57,450 A teď to opravdu funguje. 914 00:36:57,450 --> 00:36:59,410 Ale řádku změnit z nějakého důvodu zde. 915 00:36:59,410 --> 00:37:02,800 Proč se to říct, opakování jedné z těchto časů, ale dejte mi 916 00:37:02,800 --> 00:37:03,920 int další třikrát? 917 00:37:03,920 --> 00:37:05,500 Proč je to, že chování liší? 918 00:37:05,500 --> 00:37:06,980 PUBLIKUM: Dal jí řetězec. 919 00:37:06,980 --> 00:37:07,830 DAVID J. Malan: Je nám líto,? 920 00:37:07,830 --> 00:37:08,570 PUBLIKUM: Dal jsi jí řetězec. 921 00:37:08,570 --> 00:37:08,990 DAVID J. Malan: Jo. 922 00:37:08,990 --> 00:37:11,450 Tak jsme to řetězec v této třetí pokus, 923 00:37:11,450 --> 00:37:12,490 když jsem napsal foo. 924 00:37:12,490 --> 00:37:13,200 Foo je řetězec. 925 00:37:13,200 --> 00:37:14,340 Je to samozřejmě není int. 926 00:37:14,340 --> 00:37:17,500 A způsob, jakým CS50 provedlo GetInt je, že jsme 927 00:37:17,500 --> 00:37:20,330 nekontrolovat, pokud něco je méně než 0 nebo větší než 10 928 00:37:20,330 --> 00:37:22,260 pro vás, protože jak víme, předem, jaké 929 00:37:22,260 --> 00:37:23,130 int chcete? 930 00:37:23,130 --> 00:37:25,880 Ale můžeme minimálně zkontrolovat pro vás, to si uživatelský nejméně 931 00:37:25,880 --> 00:37:26,730 zadejte celé číslo? 932 00:37:26,730 --> 00:37:30,500 A kdyby ne, jsme křičet na uživatele zadáním "opakování" na 933 00:37:30,500 --> 00:37:31,440 obrazovce. 934 00:37:31,440 --> 00:37:34,210 >> Takže teď máme program, který je smyčkovací. Dobře. 935 00:37:34,210 --> 00:37:37,070 Nyní, který z nich je něco jako lepší konstrukce? 936 00:37:37,070 --> 00:37:39,060 Takže tohle je místo, kde se věci začnou se dostat trochu chaotický, je 937 00:37:39,060 --> 00:37:42,360 Skutečnost, že musíte mít na paměti, jak deklarovat proměnnou sem 938 00:37:42,360 --> 00:37:44,630 Chcete-li používat uvnitř některých 939 00:37:44,630 --> 00:37:46,460 Složené závorky a mimo. 940 00:37:46,460 --> 00:37:48,490 Ale i kdyby to vypadá trochu záhadný na první 941 00:37:48,490 --> 00:37:50,750 pohled, jen znovu vzpomenout na jednoduchou logiku. 942 00:37:50,750 --> 00:37:54,630 Aby bylo možné použít cokoliv v jazyce C, ať už je to funkce nebo 943 00:37:54,630 --> 00:37:57,680 je to proměnná, musíte zahrnout, pokud je to funkce 944 00:37:57,680 --> 00:37:59,770 v některých knihovny, nebo budete muset prohlásit ho. 945 00:37:59,770 --> 00:38:02,405 Ale teď musíte být extra dbát na skutečnost, že 946 00:38:02,405 --> 00:38:04,940 jste prohlášením v pravém rozsahu. 947 00:38:04,940 --> 00:38:08,150 Nejste uvedení příliš těsně uvnitř závorek. 948 00:38:08,150 --> 00:38:09,410 >> Dovolte mi tedy skutečně vrátit. 949 00:38:09,410 --> 00:38:12,660 Vrátíme-li se k našemu například z dříve, a já jdu 950 00:38:12,660 --> 00:38:19,245 zpět na pro int, int i = 0; i <10; i + +, a já 951 00:38:19,245 --> 00:38:26,370 to printf hvězdy, jako je tento, a pak zavřete paren, a nyní 952 00:38:26,370 --> 00:38:30,410 printf i nyní - 953 00:38:30,410 --> 00:38:33,500 Podle stejné logiky, co se stane, když se snažím 954 00:38:33,500 --> 00:38:35,500 sestavit tento program? 955 00:38:35,500 --> 00:38:36,790 Diváků: Neplatný identifikátor. 956 00:38:36,790 --> 00:38:38,560 DAVID J. Malan: Takže je to další neplatný identifikátor, 957 00:38:38,560 --> 00:38:39,470 nedeklarovaný identifikátor. 958 00:38:39,470 --> 00:38:41,810 Nyní, důvodem je trochu jiný. 959 00:38:41,810 --> 00:38:44,370 Je tu samozřejmě žádné složené závorky zde, ale stejné 960 00:38:44,370 --> 00:38:46,790 idea, stejný příběh rozsah platí. 961 00:38:46,790 --> 00:38:50,340 Pokud jste deklarovali proměnnou jako i uvnitř 962 00:38:50,340 --> 00:38:53,960 pro smyčce, i když jste výslovně zapsán kudrnaté 963 00:38:53,960 --> 00:38:56,980 šle, myslím, že z nich psychicky ještě, že tam, kde 964 00:38:56,980 --> 00:39:00,310 případ i je platná pouze uvnitř smyčky for. 965 00:39:00,310 --> 00:39:03,080 To není platné, jakmile se dostanete na další řádek, který v 966 00:39:03,080 --> 00:39:05,090 V tomto případě je nyní 10. 967 00:39:05,090 --> 00:39:09,060 Takže jen několik otázek, z rozsahu a podobně. 968 00:39:09,060 --> 00:39:12,620 Dobře, nějaké otázky? 969 00:39:12,620 --> 00:39:15,310 >> Dobře, takže tohle je triviální malého programu, 970 00:39:15,310 --> 00:39:17,450 tisk jen malé hvězdy. 971 00:39:17,450 --> 00:39:20,400 Ale uvidíme, jestli si pamatujete tuto píseň zde. 972 00:39:20,400 --> 00:39:22,530 To je neuvěřitelně otravné píseň děti zpívali na 973 00:39:22,530 --> 00:39:23,550 škola autobus a podobně. 974 00:39:23,550 --> 00:39:25,990 Ale co je hezké na tom je, že to má tento cykličnosti, 975 00:39:25,990 --> 00:39:27,910 přičemž je to "99 lahví piva na zdi, 976 00:39:27,910 --> 00:39:28,520 99 lahví piva. 977 00:39:28,520 --> 00:39:31,030 Vezměte jeden dolů, projít kolem, 98 lahví piva na 978 00:39:31,030 --> 00:39:34,330 zeď. "A pak píseň opakuje 97, pak 96, pak 979 00:39:34,330 --> 00:39:38,040 95, pak 94, celou cestu až na 0, pokud jste skutečně dostali, že 980 00:39:38,040 --> 00:39:38,920 Pokud na sběrnici. 981 00:39:38,920 --> 00:39:41,960 Tak to je pěkný program se trochu nářadí, protože my 982 00:39:41,960 --> 00:39:43,650 Bože, jestli byste mohl jen implementovat to s několika 983 00:39:43,650 --> 00:39:46,660 řádků kódu, můžete vyplivnout celý text k této 984 00:39:46,660 --> 00:39:48,240 song docela rychle. 985 00:39:48,240 --> 00:39:50,420 Ale na cestě, můžeme začít hned šprýmaři odděleně některé 986 00:39:50,420 --> 00:39:52,460 z těchto základních smyčkování konstrukty a nyní také 987 00:39:52,460 --> 00:39:55,830 zavést funkce, které budeme psát sami, návrat hodnot 988 00:39:55,830 --> 00:39:57,020 že jsme se projít kolem. 989 00:39:57,020 --> 00:39:58,910 Ale nejdřív, proč nejdeme dopředu a vzít naše pět minut 990 00:39:58,910 --> 00:39:59,320 rozbít tu? 991 00:39:59,320 --> 00:40:01,480 A když se vrátíme, budeme zpívat tuto píseň. 992 00:40:05,680 --> 00:40:08,760 >> Dobře, tak jsme se vrátili. 993 00:40:08,760 --> 00:40:11,850 A když říkám, že nyní budeme zpívat tuto píseň, myslím 994 00:40:11,850 --> 00:40:13,250 programově, ne slovně. 995 00:40:13,250 --> 00:40:19,370 Takže tu máme beer1.c, což je jedna implementace této 996 00:40:19,370 --> 00:40:20,580 zvláštní píseň. 997 00:40:20,580 --> 00:40:23,110 A jen proto, aby bylo jasno, pro ty, kteří neznají, co 998 00:40:23,110 --> 00:40:24,460 ta věc vypadá, nech mě jít napřed 999 00:40:24,460 --> 00:40:27,070 a aby beer1, Enter. 1000 00:40:27,070 --> 00:40:30,400 Nyní mi dovolte běžet beer1, a to, co uvidíme - kolik lahví 1001 00:40:30,400 --> 00:40:31,140 piva bude? 1002 00:40:31,140 --> 00:40:33,240 Budu psát 99, stejně jako píseň říká. 1003 00:40:33,240 --> 00:40:34,040 Enter. 1004 00:40:34,040 --> 00:40:35,650 A teď, když jsme se procházet - 1005 00:40:35,650 --> 00:40:38,280 oops - pokud bychom procházet přes to všechno, uvidíme, že 1006 00:40:38,280 --> 00:40:41,350 Tento skutečně zpívat celou písničku. 1007 00:40:44,050 --> 00:40:44,540 Počkejte chvilku. 1008 00:40:44,540 --> 00:40:46,240 Můj scroll bar je trochu zpackal. 1009 00:40:46,240 --> 00:40:47,940 Pojďme používat větší okna. 1010 00:40:47,940 --> 00:40:53,500 Takže beer1, 99, tam jdeme. 1011 00:40:53,500 --> 00:40:56,420 Takže tu máme celou skladbu, zpívaný mnohem rychleji NAVRŽENÝM 1012 00:40:56,420 --> 00:40:58,450 počítač, než by to mohlo být u nás. 1013 00:40:58,450 --> 00:41:00,340 Takže upozornění, když jde o cyklickou povahu zde. 1014 00:41:00,340 --> 00:41:03,380 Říká 99, pak 99, pak "vzít jednu dolů, předat ji 1015 00:41:03,380 --> 00:41:04,740 kolem, "pak 98. 1016 00:41:04,740 --> 00:41:06,640 A teď se opakuje znovu a znovu. 1017 00:41:06,640 --> 00:41:08,840 >> Takže je to vlastně ideální příležitost pro jakési 1018 00:41:08,840 --> 00:41:10,400 konstrukce cyklu. 1019 00:41:10,400 --> 00:41:12,950 Všimněte si, že jsem trochu řezání roh zde. 1020 00:41:12,950 --> 00:41:15,960 Všimněte si, že říkám "98 lahví piva na zdi, 1021 00:41:15,960 --> 00:41:19,010 97 lahví piva na zdi, "a že je to tak 1022 00:41:19,010 --> 00:41:21,640 že když se dostaneme k jednomu lahví piva, nemám 1023 00:41:21,640 --> 00:41:23,300 se starat o anglické gramatiky. 1024 00:41:23,300 --> 00:41:25,790 Ale můžeme také opravit s trochou pokud 1025 00:41:25,790 --> 00:41:26,910 stav, možná. 1026 00:41:26,910 --> 00:41:30,110 Pokud je toto číslo je singulární, jděte do toho a říct "láhev", 1027 00:41:30,110 --> 00:41:31,840 jinak, pokud je to množné číslo, řekněme "lahve". 1028 00:41:31,840 --> 00:41:34,150 Ale teď, jsem úplně řezání, která roh. 1029 00:41:34,150 --> 00:41:35,520 Tak se podíváme, co tu máme. 1030 00:41:35,520 --> 00:41:37,150 Takže máme několik poznámek na vrcholu. 1031 00:41:37,150 --> 00:41:39,450 Jsem včetně těchto dvou knihoven, as 1032 00:41:39,450 --> 00:41:41,140 jsme obyčejně byli. 1033 00:41:41,140 --> 00:41:43,610 A teď mi dovolte přejděte dolů na první 1034 00:41:43,610 --> 00:41:44,990 skutečné řádky kódu. 1035 00:41:44,990 --> 00:41:47,020 Řádek 17 začíná hlavní. 1036 00:41:47,020 --> 00:41:50,610 Linka 21 a 20 má kolik lahví piva bude? 1037 00:41:50,610 --> 00:41:52,060 A pak jsem zavolat GetInt. 1038 00:41:52,060 --> 00:41:53,800 A teď mám trochu zdravý rozum kontroly. 1039 00:41:53,800 --> 00:41:57,030 >> Tak to je konvence, že budeme nyní začít přijímat na 1040 00:41:57,030 --> 00:41:59,620 přísněji kontrolovat vstup uživatele. 1041 00:41:59,620 --> 00:42:01,710 Někdy si prostě nechtějí, aby přiměli je znovu 1042 00:42:01,710 --> 00:42:02,630 a znovu a znovu. 1043 00:42:02,630 --> 00:42:05,620 Pokud uživatel šrouby a nespolupracuje, v pořádku. 1044 00:42:05,620 --> 00:42:07,430 Ukončete a prostě se s nimi vypořádat. 1045 00:42:07,430 --> 00:42:08,990 A tak to je to, co tady dělám. 1046 00:42:08,990 --> 00:42:12,520 Jestliže je n menší než 1, já jen tak křičet na uživatele, 1047 00:42:12,520 --> 00:42:14,330 "Promiň, to nedává smysl." A pak budu 1048 00:42:14,330 --> 00:42:16,650 libovolně vrátit 1. 1049 00:42:16,650 --> 00:42:18,550 Takže znovu, je to jen konvence zvyknout. 1050 00:42:18,550 --> 00:42:19,850 Pro tuto chvíli, si to o víře. 1051 00:42:19,850 --> 00:42:22,700 Ale až do teď, jsme vždy vrací 0, protože 1052 00:42:22,700 --> 00:42:25,204 jsme řekli vrací 0 označuje, co? 1053 00:42:25,204 --> 00:42:26,000 Diváků: Úspěch. 1054 00:42:26,000 --> 00:42:27,320 DAVID J. Malan: Úspěch, to je všechno. 1055 00:42:27,320 --> 00:42:29,740 Takže teď, že jsme konečně začínají přemýšlet o tom, 1056 00:42:29,740 --> 00:42:31,330 non-úspěchy - 1057 00:42:31,330 --> 00:42:33,760 jinými slovy, rohové případy, chybové podmínky - 1058 00:42:33,760 --> 00:42:37,520 teď mám nekonečnou nabídku, nebo alespoň čtyři miliardy 1059 00:42:37,520 --> 00:42:39,790 možné věci, které se mohou pokazit v mých programech. 1060 00:42:39,790 --> 00:42:42,300 A můžu začít přiřadit jim jednotlivé číslice. 1061 00:42:42,300 --> 00:42:44,340 Nyní, obecně stačí jen návrat 1062 00:42:44,340 --> 00:42:45,730 něco jiného než 0. 1063 00:42:45,730 --> 00:42:48,040 Takže budeme jednoduše vrátit 1 pro teď. 1064 00:42:48,040 --> 00:42:51,440 Ale důvodem pro vrácení 1 je, že jakmile se vrátíte 1065 00:42:51,440 --> 00:42:55,110 1, odhadnout, co se stane se zbytkem programu? 1066 00:42:55,110 --> 00:42:55,720 To zastaví. 1067 00:42:55,720 --> 00:42:56,560 To je všechno. 1068 00:42:56,560 --> 00:42:59,150 Takže skutečnost, že se vracím 1 je účinně 1069 00:42:59,150 --> 00:43:02,950 zkratování tohoto programu popravu, aby 1070 00:43:02,950 --> 00:43:06,780 nic pod linii 27 bude pokračovat v provádění. 1071 00:43:06,780 --> 00:43:09,210 Jakmile hlavní vrátí, že je to. 1072 00:43:09,210 --> 00:43:13,160 >> Dobře, takže pokud uživatel nemá spolupracovat a dojdeme řádek 30 1073 00:43:13,160 --> 00:43:15,680 protože napsal v legitimním číslo, tady je moje 1074 00:43:15,680 --> 00:43:16,990 provádění této písně. 1075 00:43:16,990 --> 00:43:19,050 Tak jsem poprvé vytisknout znak nového řádku, jen pro 1076 00:43:19,050 --> 00:43:19,880 estetika. 1077 00:43:19,880 --> 00:43:21,500 Nyní mám pro smyčce. 1078 00:43:21,500 --> 00:43:22,930 A všimněte si, že dělám věci trochu 1079 00:43:22,930 --> 00:43:23,880 jiného směru. 1080 00:43:23,880 --> 00:43:26,210 Nemám dělat méně, než, nemám k tomu + +. 1081 00:43:26,210 --> 00:43:30,660 Mohu říci, místo inicializovat proměnnou i, nastavte ji rovno 1082 00:43:30,660 --> 00:43:35,080 n je počet uživatel napsal v, proveďte následující, tak 1083 00:43:35,080 --> 00:43:39,590 pokud i je větší než 0, pak i - 1084 00:43:39,590 --> 00:43:42,070 jakmile jste dokončil jeden iteraci tohoto cyklu. 1085 00:43:42,070 --> 00:43:44,310 Takže můžeme odpočítávat pomocí smyčky for stejně. 1086 00:43:44,310 --> 00:43:47,520 Nyní, to je docela hodně týden jedna věc teď, s printf. 1087 00:43:47,520 --> 00:43:51,770 Takže tisku "lahve% d piva na zdi." Print "% d 1088 00:43:51,770 --> 00:43:54,990 láhve piva. "" Vezmi si jeden dolů, projít kolem. "Tisk 1089 00:43:54,990 --> 00:43:58,880 "% D lahví piva na zdi." Takže je to stále% d, ale 1090 00:43:58,880 --> 00:44:02,770 Všimněte si, že argument funkce printf se mění. 1091 00:44:02,770 --> 00:44:05,840 Po čárkou, já jsem, protože chci říct 99. 1092 00:44:05,840 --> 00:44:08,590 Po tomto čárkou, já jsem, protože chci říct 99. 1093 00:44:08,590 --> 00:44:14,030 Po tomto čárkou, mám i - 1, protože chci říct 98 v 1094 00:44:14,030 --> 00:44:16,260 Tento první iteraci, a tak dále. 1095 00:44:16,260 --> 00:44:18,520 A teď tady dole, budu muset nějakou blbou malou poznámku. 1096 00:44:18,520 --> 00:44:22,270 A pak řádek 42, vracím 0 konvencí, znamenat, že 1097 00:44:22,270 --> 00:44:23,650 všechno je v pořádku. 1098 00:44:23,650 --> 00:44:24,490 >> A co když jsem podělal? 1099 00:44:24,490 --> 00:44:26,350 Co by mohlo běžnou chybou tady být? 1100 00:44:26,350 --> 00:44:29,200 No, co kdybych náhodou řekl dobře, já chci počítat 1101 00:44:29,200 --> 00:44:31,640 až 0, chci 0 lahví piva na zdi? 1102 00:44:31,640 --> 00:44:34,620 Tak jsem řekl, i je větší než nebo rovno 0. 1103 00:44:34,620 --> 00:44:38,920 Co to bude příznak, který nyní vidím, jestli jsem překompilovat 1104 00:44:38,920 --> 00:44:41,173 beer1 a spustit? 1105 00:44:41,173 --> 00:44:42,120 Diváků: Negativní. 1106 00:44:42,120 --> 00:44:43,590 DAVID J. Malan: Jo, bude to jít negativní. 1107 00:44:43,590 --> 00:44:45,950 To je off-by-one chyba, neuvěřitelně 1108 00:44:45,950 --> 00:44:47,270 Běžnou chybou dělat. 1109 00:44:47,270 --> 00:44:48,960 Pojďme skutečně jít zpět do okna terminálu a to 1110 00:44:48,960 --> 00:44:50,620 tady, tak můžeme vidět více najednou. 1111 00:44:50,620 --> 00:44:53,280 Zadejte, 99 lahví piva. 1112 00:44:53,280 --> 00:44:56,580 Zavřít, ale šli jsme někdy tak trochu příliš daleko. 1113 00:44:56,580 --> 00:45:00,500 Zpívali jsme píseň příliš daleko, tak, že nyní hit 1114 00:45:00,500 --> 00:45:01,510 záporné číslo. 1115 00:45:01,510 --> 00:45:03,680 Takže to není úplně fungovat. 1116 00:45:03,680 --> 00:45:06,450 >> Dobře, takže můžeme snadno opravit, že jde zpátky do 1117 00:45:06,450 --> 00:45:07,650 způsob, jak to kdysi bylo. 1118 00:45:07,650 --> 00:45:10,360 Ale co jsou některé možnosti nyní 1119 00:45:10,360 --> 00:45:11,190 zlepšení? 1120 00:45:11,190 --> 00:45:17,200 No, dovolte mi otevřít beer2.c a přejděte sem a vzít 1121 00:45:17,200 --> 00:45:19,310 podívej se na tuto verzi. 1122 00:45:19,310 --> 00:45:21,370 Co je první věc, která vyskočí na vás, jak různé 1123 00:45:21,370 --> 00:45:23,715 v této verzi zde? 1124 00:45:23,715 --> 00:45:24,190 PUBLIKUM: [neslyšitelnou]. 1125 00:45:24,190 --> 00:45:26,510 DAVID J. Malan: Jo, takže nic víc jsem, protože došlo k 1126 00:45:26,510 --> 00:45:29,350 mi víte co, já se ptám uživatele pro n, a pak jsem 1127 00:45:29,350 --> 00:45:33,580 nastavení i se rovnat k n, a pak měním i, ale já jsem nikdy 1128 00:45:33,580 --> 00:45:34,590 dotýká n znovu. 1129 00:45:34,590 --> 00:45:37,390 Tak co to sakra byl bod z vás přidělování další 32 1130 00:45:37,390 --> 00:45:45,210 bitů tzv. i jen proto, že mohu mít jinou proměnnou? 1131 00:45:45,210 --> 00:45:47,960 Takže v tomto případě, tak nějak jsem uznal, že zbytečné 1132 00:45:47,960 --> 00:45:49,190 charakteristika. 1133 00:45:49,190 --> 00:45:52,730 A já jsem teď chtěl říct, když n je větší než 0, přejděte 1134 00:45:52,730 --> 00:45:56,180 dopředu a vytisknout stejnou písničku, předáním n k printf jako 1135 00:45:56,180 --> 00:46:00,210 Druhý argument, a n - 1 jako druhý argument tady. 1136 00:46:00,210 --> 00:46:02,930 A pak na každé iteraci tohoto cyklu, jděte do toho a jen 1137 00:46:02,930 --> 00:46:05,080 decrement n sám. 1138 00:46:05,080 --> 00:46:06,960 Nyní, funkčně, tento program 1139 00:46:06,960 --> 00:46:08,010 bude totožné. 1140 00:46:08,010 --> 00:46:10,730 Kdybych zadejte 99, n začíná v 99. 1141 00:46:10,730 --> 00:46:12,890 I dekrement, dekrement, dekrement, útlum. 1142 00:46:12,890 --> 00:46:15,875 Jdu si celou cestu až k "jedné láhve piva na 1143 00:46:15,875 --> 00:46:16,740 stěna, jedna láhev piva. 1144 00:46:16,740 --> 00:46:18,020 Vezměte jeden dolů, projít kolem. 1145 00:46:18,020 --> 00:46:21,480 0 lahví piva na zdi. "Konec, protože jsem 1146 00:46:21,480 --> 00:46:23,200 se podmínka správné. 1147 00:46:23,200 --> 00:46:24,280 Je to větší než 0. 1148 00:46:24,280 --> 00:46:26,220 Nechtěl jsem, aby tuto chybu. 1149 00:46:26,220 --> 00:46:28,470 >> Tak který je lepší, verze jeden nebo verzi dva? 1150 00:46:31,380 --> 00:46:33,480 Slyšel jsem spoustu reptání pro dva. 1151 00:46:33,480 --> 00:46:34,730 Proč dva? 1152 00:46:37,210 --> 00:46:38,225 Co je to? 1153 00:46:38,225 --> 00:46:39,215 PUBLIKUM: [neslyšitelnou]. 1154 00:46:39,215 --> 00:46:40,070 DAVID J. Malan: Oh, dobře. 1155 00:46:40,070 --> 00:46:42,870 Takže to nepůjde pod 0, ale pamatujte, ve verzi jedna, 1156 00:46:42,870 --> 00:46:45,870 Originální správnou verzi nešel pod 0 obou. 1157 00:46:45,870 --> 00:46:48,340 Takže pamatujte, že je to správná verze. 1158 00:46:48,340 --> 00:46:51,630 Tak ať je to alespoň tyto dvě správné verze. 1159 00:46:51,630 --> 00:46:53,300 Co je argumentem ve prospěch verze 1160 00:46:53,300 --> 00:46:55,146 dva být, mmm, lépe? 1161 00:46:55,146 --> 00:46:55,642 Jo? 1162 00:46:55,642 --> 00:46:57,630 PUBLIKUM: To zabírá méně místa. 1163 00:46:57,630 --> 00:46:59,530 DAVID J. Malan: Dobře, tak to zabírá méně místa, ne? 1164 00:46:59,530 --> 00:47:02,900 Vzhledem k tomu, který se používá verze 32 bitů pro n, a pak další 1165 00:47:02,900 --> 00:47:07,680 32 bitů pro i. 1166 00:47:07,680 --> 00:47:10,060 Verze dvě používá pouze 32 bitů pro n, tak, aby 1167 00:47:10,060 --> 00:47:11,700 Zdá se, že plus. 1168 00:47:11,700 --> 00:47:12,950 Ostatní myšlenky? 1169 00:47:18,070 --> 00:47:21,520 Má někdo chtěl argumentovat ve prospěch jednoho? 1170 00:47:21,520 --> 00:47:22,070 Jo? 1171 00:47:22,070 --> 00:47:25,240 PUBLIKUM: Musíte použít další řádek kódu pro n -. 1172 00:47:25,240 --> 00:47:26,090 >> DAVID J. Malan: Dobře, jistě. 1173 00:47:26,090 --> 00:47:26,960 Takže to je fér. 1174 00:47:26,960 --> 00:47:29,040 Takže to jen, alespoň pro mě - 1175 00:47:29,040 --> 00:47:31,940 Chci říct, tohle skutečně cítí trochu Messier, skutečnost, že 1176 00:47:31,940 --> 00:47:35,120 Nemohu nějak zapouzdřit všechny mé logiky v jednom 1177 00:47:35,120 --> 00:47:38,030 překrásná line, pro smyčce, protože pro smyčce může. 1178 00:47:38,030 --> 00:47:40,240 Tady, jsem tak trochu se k obratu na této n - 1179 00:47:40,240 --> 00:47:41,120 Na konci smyčky, protože 1180 00:47:41,120 --> 00:47:42,550 je to logicky nutné. 1181 00:47:42,550 --> 00:47:45,190 Ale docela to leští mi špatně, jen proto, že 1182 00:47:45,190 --> 00:47:48,260 Zdá se odděleně od logiky se zde, i když, 1183 00:47:48,260 --> 00:47:49,430 znovu, je to nutné. 1184 00:47:49,430 --> 00:47:50,990 Ostatní myšlenky? 1185 00:47:50,990 --> 00:47:51,490 Jo? 1186 00:47:51,490 --> 00:47:52,740 PUBLIKUM: [neslyšitelnou]. 1187 00:47:57,990 --> 00:47:58,350 >> DAVID J. Malan: Jo. 1188 00:47:58,350 --> 00:48:00,730 Takže co když místo toho, na konci skladby, chtěl 1189 00:48:00,730 --> 00:48:02,950 vytisknout znovu název písně? 1190 00:48:02,950 --> 00:48:05,660 Jako "Díky za hraní 99 lahví piva", nebo něco 1191 00:48:05,660 --> 00:48:06,690 hloupé takhle? 1192 00:48:06,690 --> 00:48:09,750 Ale jde o to, co jste chtěli přístup k původní hodnoty. 1193 00:48:09,750 --> 00:48:13,180 Skutečnost, že jste mutované nebo změnit n na každém 1194 00:48:13,180 --> 00:48:16,330 iterace, a proto se zničil jeho původní hodnotu 1195 00:48:16,330 --> 00:48:18,650 znamená, že prostě nemůže dělat, že na konci. 1196 00:48:18,650 --> 00:48:20,660 Nyní, pravděpodobně jsme jasně nechceme dělat 1197 00:48:20,660 --> 00:48:21,450 , že v tomto programu. 1198 00:48:21,450 --> 00:48:22,350 Takže koho to zajímá? 1199 00:48:22,350 --> 00:48:23,630 Ale to je velmi platný bod. 1200 00:48:23,630 --> 00:48:25,520 A abych byl upřímný, je to opravdu nikdo 1201 00:48:25,520 --> 00:48:26,630 správná odpověď zde. 1202 00:48:26,630 --> 00:48:28,740 Jsou oba stejně správné. 1203 00:48:28,740 --> 00:48:30,210 Mohl bych být přesvědčen o tom, v obou směrech. 1204 00:48:30,210 --> 00:48:33,310 Nebudu říkat, že, obecně, je to dobrá zásada, pokud 1205 00:48:33,310 --> 00:48:36,030 požádal uživatele o nějaké hodnoty a je uložen v proměnné 1206 00:48:36,030 --> 00:48:38,730 jako n, jen trochu na principu, že je to asi dobře 1207 00:48:38,730 --> 00:48:40,160 aby, že kolem. 1208 00:48:40,160 --> 00:48:43,400 A jakákoliv data, která chcete mutovat znovu a znovu, jen 1209 00:48:43,400 --> 00:48:46,030 dát si kopii této proměnné, jen proto, že jste 1210 00:48:46,030 --> 00:48:47,830 mají přístup k originálu. 1211 00:48:47,830 --> 00:48:51,040 Nacházíte se tráví 32 více bitů, ale realita je to 1212 00:48:51,040 --> 00:48:53,490 počítač, software, dva gigabajty paměti RAM v těchto dnech, 1213 00:48:53,490 --> 00:48:55,310 a my jsme hašteření přes 32 bitů? 1214 00:48:55,310 --> 00:48:56,320 Opravdu není tak velký problém. 1215 00:48:56,320 --> 00:48:58,550 A i na tomto zařízení zde, s polovinou koncertu nebo 1216 00:48:58,550 --> 00:49:01,700 gigabyte RAM, 32 bitů oproti 64 bitů, 1217 00:49:01,700 --> 00:49:02,920 není tak velký problém. 1218 00:49:02,920 --> 00:49:05,890 Jistě dnes, to bude tak ohromen podle velikosti 1219 00:49:05,890 --> 00:49:08,400 samotném programu, který bude několik set 1220 00:49:08,400 --> 00:49:10,890 kB, ne-li několik megabajtů, v těchto dnech. 1221 00:49:10,890 --> 00:49:13,550 >> Takže rozumné obavy, ne jediná správná odpověď. 1222 00:49:13,550 --> 00:49:15,490 Ale aspoň to jsou myšlenky, které by se měly začít 1223 00:49:15,490 --> 00:49:16,790 projít vaší mysli? 1224 00:49:16,790 --> 00:49:19,600 Protože v PSet 0, i když opravdu jen čekal, 1225 00:49:19,600 --> 00:49:22,340 správnost, nebo alespoň popření různé chyby, že 1226 00:49:22,340 --> 00:49:25,440 můžete se setkali, jak jsme vpřed, design 1227 00:49:25,440 --> 00:49:27,910 bude dalším klíčovým aspektem, a to jak z psaní kódu 1228 00:49:27,910 --> 00:49:29,770 a také naše hodnocení kód. 1229 00:49:29,770 --> 00:49:32,310 A tak alespoň dát si na věci, jako je tento. 1230 00:49:32,310 --> 00:49:35,590 A jen proto, že něco funguje neznamená že je to dobré, 1231 00:49:35,590 --> 00:49:37,130 neznamená, že je to dobře navržen. 1232 00:49:37,130 --> 00:49:38,820 A to je jedna z věcí, které výuky lektorů a 1233 00:49:38,820 --> 00:49:41,990 problém sady nám pomůže škádlit část v průběhu času. 1234 00:49:41,990 --> 00:49:45,020 >> No, co asi, řekněme, tuto verzi tady? 1235 00:49:45,020 --> 00:49:49,090 Dovolte mi, abych něco trochu sexy tady za chvíli. 1236 00:49:49,090 --> 00:49:50,740 Nejprve mi dovolte se zbavit toho. 1237 00:49:50,740 --> 00:49:54,120 A teď pojďme vyřešit tento gramatický problém. 1238 00:49:54,120 --> 00:49:58,780 Takže v této verzi, chci opravit gramatiku tak, aby 1239 00:49:58,780 --> 00:50:02,460 spíše než jen říct vsunutá s, stejně jako "láhev" 1240 00:50:02,460 --> 00:50:03,360 nebo "lahve" - 1241 00:50:03,360 --> 00:50:04,900 Nechci snižovat, aby roh - 1242 00:50:04,900 --> 00:50:08,350 Chci také dynamicky vytisknout slovo "lahve" 1243 00:50:08,350 --> 00:50:12,820 nebo "láhev", čímž se pomocí těchto% s zástupné symboly dnes. 1244 00:50:12,820 --> 00:50:16,550 Tak jsem třeba podmíněně zjistit, jaká je hodnota i. 1245 00:50:16,550 --> 00:50:19,590 A jestli je to 1, chci říct, "láhev", a pokud je to něco 1246 00:50:19,590 --> 00:50:23,115 jiného, ​​chci říct, "lahví". Tak zkusme to. 1247 00:50:23,115 --> 00:50:31,340 Takže pokud i == 1, pak nechte mě jít dopředu a prohlásit - 1248 00:50:31,340 --> 00:50:34,080 Potřebuji řetězec, tak ať mi to řetězec s1, protože je to 1249 00:50:34,080 --> 00:50:36,070 První řetězec já se starám o právě teď. 1250 00:50:36,070 --> 00:50:40,980 Já řeknu "láhev". A pak, uvidíme, string 1251 00:50:40,980 --> 00:50:43,110 s2 - a já ti to vysvětlím, kam jdu za chvíli - 1252 00:50:43,110 --> 00:50:47,650 "Lahve". Takže připomenout, že v této písni, musíme být schopni 1253 00:50:47,650 --> 00:50:50,580 tisknout věci, dvě různá slova potenciálně. 1254 00:50:50,580 --> 00:50:53,590 Takže když se podíváme zpátky, zjistíte, že když se dostaneme do 1255 00:50:53,590 --> 00:50:56,440 tento příklad zde, "dvě lahve piva na stěně, 1256 00:50:56,440 --> 00:50:59,490 dvě láhve piva, vzít jednu dolů, projít kolem ", chci 1257 00:50:59,490 --> 00:51:02,380 Tento čtvrtý řádek se dnes říká, "jednu láhev piva na 1258 00:51:02,380 --> 00:51:04,900 zeď ". Tak jsem třeba rozhodnout, chci říct," lahví "nebo 1259 00:51:04,900 --> 00:51:07,780 "Bottle"? Takže budu libovolně říct, dobře, 1260 00:51:07,780 --> 00:51:10,530 Jdu nyní deklaruje proměnnou s názvem S1, řetězec 1261 00:51:10,530 --> 00:51:13,830 jeden, který je dostane zapojený sem i zde, 1262 00:51:13,830 --> 00:51:16,070 protože tato slova jsou vždy shodné, jen proto, že z 1263 00:51:16,070 --> 00:51:17,290 povaha písně. 1264 00:51:17,290 --> 00:51:20,100 A já jdu volat s2, co slovo chci 1265 00:51:20,100 --> 00:51:21,560 nakonec se objeví tady. 1266 00:51:21,560 --> 00:51:25,530 Nyní, doslova, 99 krát z 100, to bude být 1267 00:51:25,530 --> 00:51:28,820 stejný v obou těchto případech, protože 3 je množné číslo, 2 je 1268 00:51:28,820 --> 00:51:30,200 množné číslo, 4 je množné. 1269 00:51:30,200 --> 00:51:34,640 Ale v tomto případě rohu, kde se dostaneme do 2 a pak 1, nebo 1270 00:51:34,640 --> 00:51:37,250 dokonce 1 a pak 0, musím tuto logiku. 1271 00:51:37,250 --> 00:51:41,020 Tak jsem se strávit nějaký čas v mém kódu dostat toto právo. 1272 00:51:41,020 --> 00:51:47,530 Takže pokud jsem to, když jsem == 1, pak nastavit s1 rovná "láhev" 1273 00:51:47,530 --> 00:51:52,010 a s2 rovno "lahví", protože to bude pro 1 1274 00:51:52,010 --> 00:51:56,340 Láhev, a to bude pro 0 lahví. 1275 00:51:56,340 --> 00:51:58,250 A tohle, co to představuje? 1276 00:51:58,250 --> 00:51:59,780 Jen aby bylo jasno. 1277 00:51:59,780 --> 00:52:00,620 To je jen poznámka. 1278 00:52:00,620 --> 00:52:03,730 Takže skutečnost, že můžete mít jednořádkové komentáře se rozumí vás 1279 00:52:03,730 --> 00:52:06,110 může vyjádřit svůj kód, jako je tento, ale další společné 1280 00:52:06,110 --> 00:52:09,050 paradigma, také je, že pokud máte super krátkou frázi, která 1281 00:52:09,050 --> 00:52:11,410 Chcete se vžít a je to jen čitelnější, aby 1282 00:52:11,410 --> 00:52:13,270 to přímo na konci řádku kódu, můžete 1283 00:52:13,270 --> 00:52:15,230 naprosto něco takového. 1284 00:52:15,230 --> 00:52:20,150 >> Takže co teď, pokud to udělat? Else pokud je i není rovno 1. 1285 00:52:20,150 --> 00:52:21,620 Takže bang rovná - 1286 00:52:21,620 --> 00:52:23,150 Vykřičník je známý jako "bang". 1287 00:52:23,150 --> 00:52:25,080 Takže bang = 1. 1288 00:52:25,080 --> 00:52:28,530 Takže pokud je i není rovno 1, co mám místo toho chcete dělat? 1289 00:52:28,530 --> 00:52:31,700 No, první slovo, které jsem chci být co? 1290 00:52:34,620 --> 00:52:40,030 Takže řetězec 1 by měla být "lahve" pro pluralitních lahví, 1291 00:52:40,030 --> 00:52:42,440 a pak to bude množné "lahve" dobře, protože teď. 1292 00:52:42,440 --> 00:52:43,800 A uvidíme, jestli to tak skutečně dostane k nám na 1293 00:52:43,800 --> 00:52:44,870 kde chceme jít. 1294 00:52:44,870 --> 00:52:47,680 Takže teď, když jsem se posunout dolů tady, všimněte si, že jsem připojením 1295 00:52:47,680 --> 00:52:50,170 nejen já, ale s1. 1296 00:52:50,170 --> 00:52:51,860 Jsem zapojíte i a S1. 1297 00:52:51,860 --> 00:52:54,440 A pak se zde, že jsem mínus 1, který je stejný jako 1298 00:52:54,440 --> 00:52:55,920 před, ale s2. 1299 00:52:55,920 --> 00:52:58,730 Jinými slovy, chci anglické slovo změnit na základě 1300 00:52:58,730 --> 00:52:59,930 Na základě této logiky. 1301 00:52:59,930 --> 00:53:03,310 Nyní je tu už některé problémy v tomto kódu. 1302 00:53:03,310 --> 00:53:08,460 Co je rozbité už z brány tady? 1303 00:53:08,460 --> 00:53:10,796 Jo? 1304 00:53:10,796 --> 00:53:13,210 PUBLIKUM: [neslyšitelnou]. 1305 00:53:13,210 --> 00:53:13,800 >> DAVID J. Malan: Přesně tak. 1306 00:53:13,800 --> 00:53:16,030 Takže jsem už porušil lekci rozsahu. 1307 00:53:16,030 --> 00:53:19,610 Tak jsem prohlásil s1 a s2, ale udělal jsem to uvnitř 1308 00:53:19,610 --> 00:53:22,980 Složené závorky, což znamená, jo, bude tento kód fungovat až 1309 00:53:22,980 --> 00:53:27,430 do řádku 42, ale jakmile jsem narazila řádek 43, hádejte co ne 1310 00:53:27,430 --> 00:53:28,900 již existuje? 1311 00:53:28,900 --> 00:53:32,600 No, víš co je již v rozsahu - ani s1 nebo s2. 1312 00:53:32,600 --> 00:53:33,780 Takže musíme to opravit. 1313 00:53:33,780 --> 00:53:36,180 Dovolte mi tedy odstranit prohlášení. 1314 00:53:36,180 --> 00:53:39,320 A nechám názvy proměnných a odstranit to tady 1315 00:53:39,320 --> 00:53:40,120 a odstranit to tady. 1316 00:53:40,120 --> 00:53:43,557 A v tom, co řádky by měly opravdu prohlásit tyto věci? 1317 00:53:43,557 --> 00:53:44,960 PUBLIKUM: [neslyšitelnou]. 1318 00:53:44,960 --> 00:53:45,410 DAVID J. Malan: Jo, tak asi 1319 00:53:45,410 --> 00:53:46,850 přímo tady, 33-ish. 1320 00:53:46,850 --> 00:53:50,670 Takže řetězce s1 a pak řetězec s2. 1321 00:53:50,670 --> 00:53:51,950 A ukázalo se, já to zvládnu. 1322 00:53:51,950 --> 00:53:54,260 Pokud jste prohlašuje dvě proměnné stejného typu, 1323 00:53:54,260 --> 00:53:57,420 můžete skutečně stačí použít čárku a to, že v C. Všechny 1324 00:53:57,420 --> 00:53:58,970 Dobře, takže teď mám dvě proměnné - 1325 00:53:58,970 --> 00:53:59,860 s1 a s2. 1326 00:53:59,860 --> 00:54:02,000 Já přiřadit jim hodnoty v těchto 1327 00:54:02,000 --> 00:54:04,210 podmínky zde, nebo zde. 1328 00:54:04,210 --> 00:54:06,690 A pak jsem pomocí je dole. 1329 00:54:06,690 --> 00:54:10,960 Jak dobře se to nyní bude fungovat? 1330 00:54:10,960 --> 00:54:12,740 >> No, je to stále trochu buggy, ale pojďme alespoň vidět 1331 00:54:12,740 --> 00:54:13,730 jak daleko jsme se dostali. 1332 00:54:13,730 --> 00:54:16,500 Tak nech mě jít dopředu a dělat beer3. 1333 00:54:16,500 --> 00:54:17,695 Je to beer3? 1334 00:54:17,695 --> 00:54:19,410 Jo, to je beer3. 1335 00:54:19,410 --> 00:54:21,510 A teď mi dovolte pokračovat a spustit beer3. 1336 00:54:21,510 --> 00:54:23,820 399 99. 1337 00:54:23,820 --> 00:54:25,840 Pravděpodobně můžeme přeskočit většinu z nich. 1338 00:54:25,840 --> 00:54:29,100 A tady dole, podívej se na to. 1339 00:54:29,100 --> 00:54:31,110 "Jedna láhev piva na zdi, jedna láhev piva, se 1340 00:54:31,110 --> 00:54:34,306 jeden dole, projít kolem, 0 lahví piva na zdi. " 1341 00:54:34,306 --> 00:54:37,570 Ale já jsem kreslení pozornost pouze polovinu roztoku. 1342 00:54:37,570 --> 00:54:39,620 Druh podělal zde. 1343 00:54:39,620 --> 00:54:43,030 Takže se zdá, že rohové případy nastávají, pokud i rovnají tomu, co 1344 00:54:43,030 --> 00:54:44,030 dvě hodnoty? 1345 00:54:44,030 --> 00:54:45,020 PUBLIKUM: 2, 1. 1346 00:54:45,020 --> 00:54:46,190 DAVID J. Malan: 2 a 1. 1347 00:54:46,190 --> 00:54:48,180 Není to 1 a ne 1. 1348 00:54:48,180 --> 00:54:51,890 Je to opravdu jen tyto dvě poslední sloky této písně. 1349 00:54:51,890 --> 00:54:53,890 Takže to, co mám místo toho chcete dělat? 1350 00:54:53,890 --> 00:54:58,890 Tak se mi zdá, že chytil na případ, kdy pokud je i == až 1, 1351 00:54:58,890 --> 00:55:02,240 pak první slovo je "láhev", ale druhé slovo 1352 00:55:02,240 --> 00:55:07,230 je "lahve". Ale tady, chci to změnit, aby bylo == 2. 1353 00:55:07,230 --> 00:55:08,570 A pokud tomu tak je, co já chci 1354 00:55:08,570 --> 00:55:09,620 první slovo má být? 1355 00:55:09,620 --> 00:55:10,430 PUBLIKUM: "Láhve". 1356 00:55:10,430 --> 00:55:12,890 DAVID J. Malan: "Láhve", tak za dvě láhve. 1357 00:55:12,890 --> 00:55:14,690 A pak je zde slovo by mělo být - 1358 00:55:14,690 --> 00:55:15,340 PUBLIKUM: "Bottle". 1359 00:55:15,340 --> 00:55:17,316 DAVID J. Malan: "Bottle", singulární. 1360 00:55:20,430 --> 00:55:25,160 >> Dobře, pojďme vzdálíte, vrátit se sem, re-spusťte make, 1361 00:55:25,160 --> 00:55:28,590 re-run beer3, typ 99 znovu. 1362 00:55:28,590 --> 00:55:30,710 Dobře, "Segmentation fault (core dumpingové)." 1363 00:55:30,710 --> 00:55:32,780 Co jsem udělal špatně? 1364 00:55:36,050 --> 00:55:38,722 PUBLIKUM: Nemáte hodnotu [neslyšitelnou]. 1365 00:55:38,722 --> 00:55:40,480 DAVID J. Malan: Ah, vynikající bod. 1366 00:55:40,480 --> 00:55:43,310 Dobře, tak co je špatně? 1367 00:55:43,310 --> 00:55:45,450 Takže segmentation fault, a my vlastně bude vidět 1368 00:55:45,450 --> 00:55:49,020 tento docela několikrát v budoucnosti, záměrně. 1369 00:55:49,020 --> 00:55:51,030 Ale teď, co to vlastně znamená? 1370 00:55:51,030 --> 00:55:53,620 Segmentation fault téměř vždy znamená, že máte 1371 00:55:53,620 --> 00:55:56,760 nějak se pokusil o přístup paměti, RAM v počítači, 1372 00:55:56,760 --> 00:56:00,600 že nevlastníte, že jste ve skutečnosti požádal 1373 00:56:00,600 --> 00:56:02,050 operační systém pro. 1374 00:56:02,050 --> 00:56:04,440 Takže v tomto případě, upozornění, co jsem udělal, což je 1375 00:56:04,440 --> 00:56:05,870 vadný v mém logice. 1376 00:56:05,870 --> 00:56:09,500 Jsem převedl S1 a S2 hodnotu, pokud i rovná 1. 1377 00:56:09,500 --> 00:56:11,590 Také jsem udělal, že když jsem se rovná 2. 1378 00:56:11,590 --> 00:56:13,710 Ale já jsem to neudělal v nekonečné řadě dalších 1379 00:56:13,710 --> 00:56:14,690 možnosti - 1380 00:56:14,690 --> 00:56:17,940 zejména, 3 nebo 4, nebo tečka, tečka, tečka, 99. 1381 00:56:17,940 --> 00:56:20,100 Takže jedna oprava by to mohlo být jen pojďme 1382 00:56:20,100 --> 00:56:22,190 mají jiného stavu. 1383 00:56:22,190 --> 00:56:26,780 A nech mě jít sem a říct s1 rovná - 1384 00:56:26,780 --> 00:56:28,180 co by mělo být? 1385 00:56:28,180 --> 00:56:28,750 PUBLIKUM: [neslyšitelnou]. 1386 00:56:28,750 --> 00:56:30,460 >> DAVID J. Malan: "Láhve", protože v běžném případě, 1387 00:56:30,460 --> 00:56:32,020 je to jen samé. 1388 00:56:32,020 --> 00:56:35,580 Takže se rovná quote, konec citátu, "lahve." Takže pro množný 1389 00:56:35,580 --> 00:56:41,010 láhve, a pak tady, plurálové lahví. 1390 00:56:41,010 --> 00:56:44,580 Dobře, takže teď mi dovolte vrátit se k mému terminálovém okně, 1391 00:56:44,580 --> 00:56:47,200 rekompilovat, re-spustit. 1392 00:56:47,200 --> 00:56:48,440 99. 1393 00:56:48,440 --> 00:56:49,150 Uff. 1394 00:56:49,150 --> 00:56:50,610 A pojďme udělat rychlý zdravý rozum kontrolu. 1395 00:56:50,610 --> 00:56:52,400 Technicky, že chceme, aby si všechny tyto, aby se ujistil 1396 00:56:52,400 --> 00:56:53,370 jsou správná, ale pojďme se podívat na 1397 00:56:53,370 --> 00:56:54,640 nejméně známé viníky. 1398 00:56:54,640 --> 00:56:57,370 3 láhve, 2 láhve, 2 láhve, 1 1399 00:56:57,370 --> 00:57:00,380 láhev, 1 láhev, 0 láhve. 1400 00:57:00,380 --> 00:57:03,080 Zdá se, že se alespoň stanovit je pro teď. 1401 00:57:03,080 --> 00:57:06,010 Ale úlovek je, že to, co bůh hrozné bordel je to 1402 00:57:06,010 --> 00:57:07,470 jen vyřešit hloupý 1403 00:57:07,470 --> 00:57:09,540 jeden znak gramatické detail. 1404 00:57:09,540 --> 00:57:11,150 Takže tam je trochu toho důvodu, že jsem řez tohoto koutu 1405 00:57:11,150 --> 00:57:14,090 dříve, protože je to jen zcela nepříjemné muset 1406 00:57:14,090 --> 00:57:15,020 napsat tolik kód. 1407 00:57:15,020 --> 00:57:17,530 Ale ukazuje se, že je tu něco víc elegantní způsoby 1408 00:57:17,530 --> 00:57:20,110 vyjadřující přesně to samé. 1409 00:57:20,110 --> 00:57:22,040 A můžeme to takto. 1410 00:57:22,040 --> 00:57:23,890 >> Dovolte mi, abych ponechat na obrazovce na chvíli a 1411 00:57:23,890 --> 00:57:27,320 představit něco známý jako ternární operátor. 1412 00:57:27,320 --> 00:57:29,600 To je tak trochu one-vložky, která je jen chtěl, aby se naše 1413 00:57:29,600 --> 00:57:31,880 žije trochu svůdnější, jak slíbil. 1414 00:57:31,880 --> 00:57:33,130 A já budu dělat to takto. 1415 00:57:33,130 --> 00:57:35,810 Dej mi řetězec s názvem s1, a dovolte mi, abych 1416 00:57:35,810 --> 00:57:37,200 přiřadit to následujícím způsobem. 1417 00:57:37,200 --> 00:57:39,900 (I == 1)? 1418 00:57:39,900 --> 00:57:47,820 "Láhev", jinak "lahve". String s2 dostane (i == 2)? 1419 00:57:47,820 --> 00:57:52,670 "Láhev", jinak "lahve". 1420 00:57:52,670 --> 00:57:57,050 Takže to, co je tedy rozdíl? 1421 00:57:57,050 --> 00:57:59,370 Tyto dva řádky kódu, tvrdím, může 1422 00:57:59,370 --> 00:58:02,200 nahradit celou nepořádek. 1423 00:58:02,200 --> 00:58:04,280 Tak říkám, že nepořádek, jen proto, že druh tře mi 1424 00:58:04,280 --> 00:58:05,940 špatně, že je to tak mnoho řádků kódu. 1425 00:58:05,940 --> 00:58:06,650 Není špatné. 1426 00:58:06,650 --> 00:58:07,700 Není to špatný design. 1427 00:58:07,700 --> 00:58:10,140 Stejně jako, to je naprosto správné a naprosto v pořádku. 1428 00:58:10,140 --> 00:58:12,970 Ale kódování dostane únavné, pokud budete mít možnost vyjádřit se tak 1429 00:58:12,970 --> 00:58:15,530 zatraceně konkrétně znovu a znovu a znovu s jednoduchou 1430 00:58:15,530 --> 00:58:16,620 scénář takhle. 1431 00:58:16,620 --> 00:58:19,470 Takže C má některé klávesové zkratky, jako je tento. 1432 00:58:19,470 --> 00:58:24,270 Takže to v podstatě říká, deklarovat řetězec s názvem s1 a 1433 00:58:24,270 --> 00:58:32,610 přiřadit buď tato hodnota, nebo je tato hodnota pokud je i == - 1434 00:58:32,610 --> 00:58:35,290 líto, měl to říct jasněji. 1435 00:58:35,290 --> 00:58:41,680 Deklarovat proměnnou s1, přiřadit jí tuto hodnotu, pokud je to pravda. 1436 00:58:41,680 --> 00:58:44,280 V opačném případě, přiřaďte tuto hodnotu. 1437 00:58:44,280 --> 00:58:47,220 Takže jinými slovy, to je druh jednořádkovém způsobu 1438 00:58:47,220 --> 00:58:51,490 říká-li jiný, ale dělá úkol na cestě. 1439 00:58:51,490 --> 00:58:55,540 Takže pokud i = 1, pak jděte do toho a říkají "láhev". A 1440 00:58:55,540 --> 00:58:59,830 pak to ostatní, nazývat to "lahve". Mezitím, s2, 1441 00:58:59,830 --> 00:59:04,060 Druhé slovo, které je třeba definovat, jestli i rovná 2, sejdeme se 1442 00:59:04,060 --> 00:59:08,350 nastavit s2 na "láhev". V opačném případě, nastavte ji na "lahví". A co 1443 00:59:08,350 --> 00:59:11,460 to znamená, teď je můžu projít a odstranit všechny 1444 00:59:11,460 --> 00:59:12,860 ty řádky kódu. 1445 00:59:12,860 --> 00:59:17,220 A když říkám, poněkud směšně, že je to teď 1446 00:59:17,220 --> 00:59:20,060 svůdnější, je to sexy v druhu stylistické smyslu. 1447 00:59:20,060 --> 00:59:22,660 Skutečnost, že funkčně, tento kód bude skutečně 1448 00:59:22,660 --> 00:59:24,610 udělat přesně to samé. 1449 00:59:24,610 --> 00:59:26,890 A i když to může vypadat trochu záhadný na první 1450 00:59:26,890 --> 00:59:29,250 pohled, protože jsme to viděli tuto konstrukci před, tak bych 1451 00:59:29,250 --> 00:59:31,850 tvrdí, že to nakonec bude mnohem víc 1452 00:59:31,850 --> 00:59:34,820 čitelné a tak mnohem jednodušší pro my lidé se trochu 1453 00:59:34,820 --> 00:59:36,830 pochopit, protože nyní můžete jen číst 1454 00:59:36,830 --> 00:59:38,830 Kód na jednom řádku. 1455 00:59:38,830 --> 00:59:41,550 Je to stále podobné ducha tehdy, pokud je to 1456 00:59:41,550 --> 00:59:44,920 stav a pak je to to, co je uvnitř, pokud, a to 1457 00:59:44,920 --> 00:59:46,480 je to, co je uvnitř jiného. 1458 00:59:46,480 --> 00:59:49,450 Ale můžeme udělat jen mnohem více elegantně. 1459 00:59:49,450 --> 00:59:52,650 >> A když jsem teď zpátky k mému terminálu, co budou všechna 1460 00:59:52,650 --> 00:59:55,530 z těchto linek a nahradil je jen těch dvou, 1461 00:59:55,530 --> 01:00:00,150 rekompilovat, re-run lahví piva s 99, všimněte si, že moje 1462 01:00:00,150 --> 01:00:03,350 gramatika je, ve skutečnosti, stále správná. 1463 01:00:03,350 --> 01:00:06,160 Takže znovu, něco začít. 1464 01:00:06,160 --> 01:00:08,840 2 láhve piva, 1 láhev piva. 1465 01:00:08,840 --> 01:00:09,370 Vypadá dobře. 1466 01:00:09,370 --> 01:00:10,100 Jo. 1467 01:00:10,100 --> 01:00:13,900 Tak tady to máme mnohem stručnější řešení. 1468 01:00:13,900 --> 01:00:16,020 Tak tohle taky, jak si získat více vyhovuje C, ne 1469 01:00:16,020 --> 01:00:18,630 nutně s prvním PSet nebo i druhé, ale 1470 01:00:18,630 --> 01:00:21,170 si uvědomit, že tyto pojmy nám umožní dělat věci stále 1471 01:00:21,170 --> 01:00:22,810 více elegantně. 1472 01:00:22,810 --> 01:00:25,200 Nyní se pojďme udělat jednu věc zde. 1473 01:00:25,200 --> 01:00:31,460 Nech mě jít napřed a otevřít return1.c. 1474 01:00:31,460 --> 01:00:34,340 Nyní pojďme začít řešit další problém způsobem, který 1475 01:00:34,340 --> 01:00:37,140 nám umožňuje psát sofistikovanější kód. 1476 01:00:37,140 --> 01:00:39,960 >> Tak tady je to jednoduchý malý program, jehož smysl života 1477 01:00:39,960 --> 01:00:41,870 je zvýšit hodnoty. 1478 01:00:41,870 --> 01:00:43,100 A skutečně, pojďme o krok zpět. 1479 01:00:43,100 --> 01:00:44,400 Nech mě to udělat ručně. 1480 01:00:44,400 --> 01:00:52,200 Dovolte mi, abych to patří a int main (void). 1481 01:00:52,200 --> 01:00:53,450 A dovolte mi, abych volání této increment.c. 1482 01:00:57,150 --> 01:00:58,570 A co chci dělat? 1483 01:00:58,570 --> 01:01:02,240 Chystám se jít dopředu a říct něco jako - 1484 01:01:02,240 --> 01:01:04,280 budeme volat čísla stejná - 1485 01:01:04,280 --> 01:01:04,980 int x. 1486 01:01:04,980 --> 01:01:13,670 Takže int x dostane 2; printf x je% d, nový řádek, x. 1487 01:01:13,670 --> 01:01:16,780 Takže píšu rychle, ale nějak známé věci nyní. 1488 01:01:16,780 --> 01:01:18,830 Pak budu dělat x + +. 1489 01:01:18,830 --> 01:01:21,710 Pak budu tisknout stejnou větu znovu. 1490 01:01:21,710 --> 01:01:24,550 A pak budu vracet 0 jen ukončete program. 1491 01:01:24,550 --> 01:01:25,960 Dobře, tak to je program, který 1492 01:01:25,960 --> 01:01:26,960 zvýší číslo. 1493 01:01:26,960 --> 01:01:29,830 Je to první bude inicializovat něco 2, a pak je to 1494 01:01:29,830 --> 01:01:33,470 bude zvyšovat, a vytisknout znovu. 1495 01:01:33,470 --> 01:01:36,930 >> Takže pojďme spustit přírůstek, neuvěřitelně jednoduchý program. 1496 01:01:36,930 --> 01:01:40,940 Předpokládejme však, že teď, že chci, aby kostka hodnotu, tak se 1497 01:01:40,940 --> 01:01:42,490 něco poněkud subjektivní. 1498 01:01:42,490 --> 01:01:45,140 A já vlastně chci dělat x dostane kostku něj. 1499 01:01:45,140 --> 01:01:47,570 Takže bych mohl použít to, co se nazývá funkce pow, ale já ne 1500 01:01:47,570 --> 01:01:48,650 Opravdu víte, kde to je ještě. 1501 01:01:48,650 --> 01:01:50,580 Takže budu dělat to staromódním způsobem. 1502 01:01:50,580 --> 01:01:54,550 x krát který se rovná x krát x krát x. 1503 01:01:54,550 --> 01:01:56,880 Takže jsem Cubing hodnotu, že se vynásobí sám znovu 1504 01:01:56,880 --> 01:02:00,440 a znovu, tak, že se se výkon 1505 01:02:00,440 --> 01:02:02,050 z 3 v tomto případě. 1506 01:02:02,050 --> 01:02:06,000 Takže teď čísla bych tisknout by měla být, jak uvidíme 1507 01:02:06,000 --> 01:02:08,450 zde - aby přírůstek, takže je to vlastně není opravdu zvýšit 1508 01:02:08,450 --> 01:02:10,260 už, ale necháme jméno sám - 1509 01:02:10,260 --> 01:02:11,590 2 a pak 8. 1510 01:02:11,590 --> 01:02:17,670 Nyní máme začátky příležitost pro zdokonalování 1511 01:02:17,670 --> 01:02:21,570 zde, přičemž tato cubing věc násobení čísla 1512 01:02:21,570 --> 01:02:24,680 sama o sobě sama o sobě sama o sobě se cítí jako by to mohlo být jen 1513 01:02:24,680 --> 01:02:27,920 vhodné mít jako funkce, podobně jako někdo rozhodl 1514 01:02:27,920 --> 01:02:30,430 lety - víte, trochu užitečná, pokud jeden z nás se posadí 1515 01:02:30,430 --> 01:02:33,120 a píše printf tak, že zbytek světa se mohou použít, 1516 01:02:33,120 --> 01:02:36,160 proč bychom si sednout a napsat funkci nazvanou krychle 1517 01:02:36,160 --> 01:02:39,250 , který toto Cubing pro nás, takže jsme se nemuseli ručně 1518 01:02:39,250 --> 01:02:41,500 provádět pojem Cubing hodnoty zde? 1519 01:02:41,500 --> 01:02:44,040 >> Tak jednoduchý příklad, ale pojďme dál a použít je jako 1520 01:02:44,040 --> 01:02:46,280 možnost napsat vlastní funkci. 1521 01:02:46,280 --> 01:02:49,110 Tak zatím, jsme používá pouze hlavní, a jsme použili jiné 1522 01:02:49,110 --> 01:02:51,780 Funkce lidí, ale my jsme nenapsal naše vlastní. 1523 01:02:51,780 --> 01:02:52,650 Tak jdeme na to. 1524 01:02:52,650 --> 01:02:56,330 Chystám se jít dopředu a napsat funkci nazvanou krychle. 1525 01:02:56,330 --> 01:02:58,490 A já budu mít to trvat vstup. 1526 01:02:58,490 --> 01:03:02,070 Takže jeho vstupní bude celé číslo. 1527 01:03:02,070 --> 01:03:03,570 A co to bude dělat? 1528 01:03:03,570 --> 01:03:08,500 Bude to prohlásit int výstup = vstup krát vstup 1529 01:03:08,500 --> 01:03:09,880 krát vstup. 1530 01:03:09,880 --> 01:03:12,190 A pak to bude vrátit tento výstup. 1531 01:03:12,190 --> 01:03:14,500 A pak jsem musel být konkrétní teď. 1532 01:03:14,500 --> 01:03:16,820 Tato funkce bude vracet hodnotu typu int. 1533 01:03:16,820 --> 01:03:19,130 Takže tady je pak, jak byste psát své vlastní funkce. 1534 01:03:19,130 --> 01:03:20,850 Si nejprve ujasnit, co je jméno vašeho 1535 01:03:20,850 --> 01:03:21,720 Funkce bude. 1536 01:03:21,720 --> 01:03:23,964 A obecně, něco vysvětlovací je dobré, tak budu 1537 01:03:23,964 --> 01:03:25,060 říkají krychle. 1538 01:03:25,060 --> 01:03:27,180 Pak budete muset určit, co to bude vrátit, co je 1539 01:03:27,180 --> 01:03:28,240 jeho výstup bude. 1540 01:03:28,240 --> 01:03:29,595 A nemáme, že mnoho možností ještě. 1541 01:03:29,595 --> 01:03:32,260 Int, char, float, bool, string. 1542 01:03:32,260 --> 01:03:34,260 Pro tuto chvíli, budu držet s int, protože chci to 1543 01:03:34,260 --> 01:03:35,880 vrátí celočíselnou hodnotu. 1544 01:03:35,880 --> 01:03:38,770 Pak budete muset určit, co jeho vstupy, pokud existují, jsou. 1545 01:03:38,770 --> 01:03:41,570 A pokud kostka argument, trvá něco mezi 1546 01:03:41,570 --> 01:03:44,970 závorky, musíte dát tento argument název tak, aby 1547 01:03:44,970 --> 01:03:47,860 můžete volat to něco, co se ti, kterým se provádí, nebo písemně 1548 01:03:47,860 --> 01:03:50,550 tato funkce, a budete muset dát typ, který v této 1549 01:03:50,550 --> 01:03:51,810 Případ bude int. 1550 01:03:51,810 --> 01:03:54,690 Takže ve zkratce, kostka je funkce, která vezme celé číslo 1551 01:03:54,690 --> 01:03:57,560 jako vstup a vrátí celočíselnou jako výstup. 1552 01:03:57,560 --> 01:03:59,240 >> Takže to, co to dělá s tou vstup? 1553 01:03:59,240 --> 01:04:03,710 No, v řádku 14, prohlašuji proměnnou zvanou výstup, a já 1554 01:04:03,710 --> 01:04:07,410 přiřadit jí hodnotu, vstupní krát vstup časy vstupní. 1555 01:04:07,410 --> 01:04:11,490 A pak jsem se vrátit výstup. 1556 01:04:11,490 --> 01:04:14,890 Tak jak je mohu použít tohle? 1557 01:04:14,890 --> 01:04:19,210 Co mám změnit tyto zvýrazněné znaky na řádku 1558 01:04:19,210 --> 01:04:21,006 7 k, myslíš? 1559 01:04:21,006 --> 01:04:21,800 PUBLIKUM: [neslyšitelnou]. 1560 01:04:21,800 --> 01:04:25,570 DAVID J. Malan: Jo, tak kostka x. 1561 01:04:25,570 --> 01:04:28,290 Takže x je proměnná, což znamená, že má určitou hodnotu. 1562 01:04:28,290 --> 01:04:30,190 Naštěstí, to je typu integer. 1563 01:04:30,190 --> 01:04:34,280 A protože x je int, to znamená, že mohu předat ji do krychle. 1564 01:04:34,280 --> 01:04:39,500 A i když jsem přepsání hodnotu x s ​​hodnotou 1565 01:04:39,500 --> 01:04:42,780 z krychle x, jak tomu bylo doposud, kdykoliv budete 1566 01:04:42,780 --> 01:04:46,150 mají znaménko rovná se a řádek kódu, je ke stažení na pravé straně 1567 01:04:46,150 --> 01:04:49,090 se provede, a pak dostane přiřazený 1568 01:04:49,090 --> 01:04:50,150 hodnota na levé straně. 1569 01:04:50,150 --> 01:04:52,950 Takže pořadí operací je, jak bychom doufat. 1570 01:04:52,950 --> 01:04:56,620 Takže to funguje? 1571 01:04:56,620 --> 01:04:58,410 No, nechte mě jít sem dolů. 1572 01:04:58,410 --> 01:04:59,970 Dovolte mi, abych otevřou své okno terminálu. 1573 01:04:59,970 --> 01:05:03,610 Dovolte mi, abych se, aby přírůstek, Enter. 1574 01:05:03,610 --> 01:05:07,140 "Implicitní prohlášení o funkce" krychle ", je neplatný v 1575 01:05:07,140 --> 01:05:13,700 C99. "Jak stranou, C99 odkazuje na jazyce C, jak to bylo 1576 01:05:13,700 --> 01:05:16,790 definovány v roce 1999, který byl update přes verzi z 1577 01:05:16,790 --> 01:05:19,360 1989, což je změna přes původní. 1578 01:05:19,360 --> 01:05:21,740 Tak to je vše, co znamená. 1579 01:05:21,740 --> 01:05:24,250 >> Takže co to znamená, že "implicitní prohlášení 1580 01:05:24,250 --> 01:05:26,790 funkce "kostka" je neplatná? "Je to přímo tady. 1581 01:05:26,790 --> 01:05:28,430 Je to přímo tady v souladu 12. 1582 01:05:28,430 --> 01:05:30,460 PUBLIKUM: [neslyšitelnou]. 1583 01:05:30,460 --> 01:05:30,730 DAVID J. Malan: Co je to? 1584 01:05:30,730 --> 01:05:32,470 PUBLIKUM: To ne dříve. 1585 01:05:32,470 --> 01:05:33,540 DAVID J. Malan: To není před. 1586 01:05:33,540 --> 01:05:34,740 Tak tohle je věc. 1587 01:05:34,740 --> 01:05:38,190 C je druh hloupý, nebo C kompilátory jsou trochu hloupé. 1588 01:05:38,190 --> 01:05:41,060 Jsou opravdu jen to, co řeknete, aby dělali. 1589 01:05:41,060 --> 01:05:44,770 A oni, zejména, pouze si přečíst kód top dolů, 1590 01:05:44,770 --> 01:05:45,620 zleva doprava. 1591 01:05:45,620 --> 01:05:49,140 Takže pokud kompilátor, zvonění, čte kód, řádek 1, je 1592 01:05:49,140 --> 01:05:50,120 zjistí, jak to udělat. 1593 01:05:50,120 --> 01:05:50,940 Oh, tady je hlavní. 1594 01:05:50,940 --> 01:05:53,000 Dobře, nech mě jít napřed a deklarovat proměnnou x. 1595 01:05:53,000 --> 01:05:54,160 Dovolte mi, abych něco tisknete. 1596 01:05:54,160 --> 01:05:55,890 Linka 7, co to sakra je krychle? 1597 01:05:55,890 --> 01:05:58,230 Není to prohlásil v stdio.h. 1598 01:05:58,230 --> 01:06:00,950 To nepřichází s C. Nemám tušení, co dělat. 1599 01:06:00,950 --> 01:06:03,960 A tak zvonění jen kaucí a ukončen s tímto chybovým hlášením. 1600 01:06:03,960 --> 01:06:05,850 Takže můžeme opravit v několika způsoby. 1601 01:06:05,850 --> 01:06:10,530 Naučíme klap, co kostka je jen o pohybu, pokud 1602 01:06:10,530 --> 01:06:11,820 prohlášení. 1603 01:06:11,820 --> 01:06:14,640 Tak jsem vyjmout a vložit ho na vrcholu hlavní. 1604 01:06:14,640 --> 01:06:17,770 Nyní si uvědomit, že jen proto, že hlavní není první, je to 1605 01:06:17,770 --> 01:06:19,150 ještě provedeny ve výchozím nastavení. 1606 01:06:19,150 --> 01:06:20,060 Hlavní je hlavní. 1607 01:06:20,060 --> 01:06:21,022 Je to výchozí název funkce. 1608 01:06:21,022 --> 01:06:22,930 Nezáleží na tom, je-li v souboru. 1609 01:06:22,930 --> 01:06:26,910 Ale alespoň teď zvonění viděl kostku, než jsem ji používat. 1610 01:06:26,910 --> 01:06:28,500 Tak uvidíme, jestli zvonění je šťastnější. 1611 01:06:28,500 --> 01:06:31,410 Udělejte přírůstek, to zkompilovat tento čas. 1612 01:06:31,410 --> 01:06:33,060 >> Dovolte mi, abych běžet přírůstek. 1613 01:06:33,060 --> 01:06:34,810 A skutečně, zdá se, že funguje. 1614 01:06:34,810 --> 01:06:36,810 Nyní, můžete přijít se scénáři nakonec, kde 1615 01:06:36,810 --> 01:06:38,650 to není možné, aby všechny funkce 1616 01:06:38,650 --> 01:06:39,740 nad všechny ostatní funkce. 1617 01:06:39,740 --> 01:06:42,140 Budete uvíznou v této nekonečné smyčce ve skutečnosti, 1618 01:06:42,140 --> 01:06:43,480 pokud ten chlap chce být, ale to 1619 01:06:43,480 --> 01:06:44,390 chlap musí být tam. 1620 01:06:44,390 --> 01:06:45,830 Takže nemusí vždy fungovat. 1621 01:06:45,830 --> 01:06:49,020 Takže naštěstí, C má více elegantní řešení. 1622 01:06:49,020 --> 01:06:50,790 Chystám se dát to zpátky, kde to bylo, jen proto, že jsem 1623 01:06:50,790 --> 01:06:53,390 preferují, jako v zásadě, že hlavní vždy 1624 01:06:53,390 --> 01:06:55,550 na vrcholu, protože je to jen hezké vidět, co tento program 1625 01:06:55,550 --> 01:06:56,920 se ve výchozím nastavení. 1626 01:06:56,920 --> 01:06:58,950 A co budu dělat, až tady se prohlásit to, co se nazývá 1627 01:06:58,950 --> 01:07:00,250 prototyp. 1628 01:07:00,250 --> 01:07:05,730 Chystám se znovu prohlašuji, že kostka funkci doslova 1629 01:07:05,730 --> 01:07:07,180 kopírování a vkládání. 1630 01:07:07,180 --> 01:07:08,290 Vlastně, to není doslova. 1631 01:07:08,290 --> 01:07:13,060 Takže doslova kopírování a vkládání řádku 15 1632 01:07:13,060 --> 01:07:15,160 nahoře souladu 6. 1633 01:07:15,160 --> 01:07:17,010 Nezáleží na tom, jaký postoj to skončí na. 1634 01:07:17,010 --> 01:07:18,380 Stává se, že je na lince 4. 1635 01:07:18,380 --> 01:07:19,950 Ale to musí být před hlavní. 1636 01:07:19,950 --> 01:07:21,150 Ale všimněte si rozdílu. 1637 01:07:21,150 --> 01:07:24,100 Linka 4 konce středníkem, což znamená, hej, 1638 01:07:24,100 --> 01:07:27,510 Řinčet, věřte mi za to, že existuje funkce 1639 01:07:27,510 --> 01:07:31,350 tzv. kostku, která vezme int a vrací int. 1640 01:07:31,350 --> 01:07:33,020 Ale já nejsem ti to říct, co to je. 1641 01:07:33,020 --> 01:07:35,180 Jen vím, že jsem slíbit, že ti nakonec. 1642 01:07:35,180 --> 01:07:38,490 A skutečně, teď je to v pořádku, že je to dole. 1643 01:07:38,490 --> 01:07:41,275 >> Takže je to obecně lepší, protože pak v horní části 1644 01:07:41,275 --> 01:07:44,240 váš soubor, stačí odříkat, rapid-fire, jeden řádek 1645 01:07:44,240 --> 01:07:46,470 Každý, jaké názvy vašich funkcí, jaké jsou jejich 1646 01:07:46,470 --> 01:07:49,120 vstupy jsou, jaké jsou jejich výstupy jsou. 1647 01:07:49,120 --> 01:07:52,210 A být jasnější, vstupní obecně znamená argument nebo 1648 01:07:52,210 --> 01:07:54,110 parametr, synonymem. 1649 01:07:54,110 --> 01:07:56,890 Výstup se rozumí návratovou hodnotu, co to 1650 01:07:56,890 --> 01:07:58,700 ruka se ke mně. 1651 01:07:58,700 --> 01:08:03,420 Takže v tomto případě zde, že kostka prohlášena v horní části, ale 1652 01:08:03,420 --> 01:08:06,940 definován, jinak známá jako realizován, v dolní části. 1653 01:08:06,940 --> 01:08:09,620 Takže teď se vraťme sem a znovu spustit tento. 1654 01:08:09,620 --> 01:08:13,430 Takže teď mě nech jít dopředu a znovu spustit, aby, znovu spustit přírůstek. 1655 01:08:13,430 --> 01:08:16,500 A nyní se zdá, že funguje v pohodě. 1656 01:08:16,500 --> 01:08:19,450 Takže teď můžeme jít dopředu a vytknout něco jako 1657 01:08:19,450 --> 01:08:23,720 Pivo příklad do této čtvrté verze. 1658 01:08:23,720 --> 01:08:25,590 Dovolte mi tedy přejděte sem. 1659 01:08:25,590 --> 01:08:28,149 A zjistíte, že jsem tak trochu vzal tuto lekci k srdci právě teď. 1660 01:08:28,149 --> 01:08:31,140 Skutečnost, že jsem zpíval stejnou sloku znovu a 1661 01:08:31,140 --> 01:08:34,130 znovu a znovu, stejně Chorus Line v písni, cítil 1662 01:08:34,130 --> 01:08:36,439 Rád proč ne já faktorem, který se do funkce? 1663 01:08:36,439 --> 01:08:38,470 A skutečně, mělo by to být jedna z motivací. 1664 01:08:38,470 --> 01:08:40,960 Kromě toho, že někdo jiný na světě mohl chtít 1665 01:08:40,960 --> 01:08:42,390 použít kostky funkci - 1666 01:08:42,390 --> 01:08:44,560 to je dobrý důvod k faktoru něco a napsat svůj 1667 01:08:44,560 --> 01:08:45,720 vlastní vlastní funkce - 1668 01:08:45,720 --> 01:08:48,720 v případě, že je kus kódu ve vašem programu, který právě dělá 1669 01:08:48,720 --> 01:08:51,370 koncepční pocit, že tak nějak chceš, aby to 1670 01:08:51,370 --> 01:08:53,740 Název - jako v tomto případě, sbor - 1671 01:08:53,740 --> 01:08:57,380 pak může podobně napsat, že jako samostatná funkce. 1672 01:08:57,380 --> 01:08:59,560 Nemusíte psát vše v hlavním pokud to jen 1673 01:08:59,560 --> 01:09:02,609 cítí čistší oddělit ji a dát mu jméno. 1674 01:09:02,609 --> 01:09:05,529 >> Takže v tomto případě zde si všimněte, že mám komentář na vrcholu 1675 01:09:05,529 --> 01:09:06,859 Tato funkce, která právě zpívá o tom, 1676 01:09:06,859 --> 01:09:08,630 uvedené počty lahví. 1677 01:09:08,630 --> 01:09:10,609 Všimněte si, že nemám potřebu volat tyto 1678 01:09:10,609 --> 01:09:12,520 věci vstupní a výstupní. 1679 01:09:12,520 --> 01:09:16,090 Ve skutečnosti, tentokrát jsem volal můj vstup B pro láhev. 1680 01:09:16,090 --> 01:09:19,960 A všimněte si, tady, void naznačuje, co? 1681 01:09:19,960 --> 01:09:21,309 To chorus - 1682 01:09:21,309 --> 01:09:22,660 PUBLIKUM: Má ho nemohla vrátit. 1683 01:09:22,660 --> 01:09:23,870 DAVID J. Malan: nevrací hodnotu. 1684 01:09:23,870 --> 01:09:26,800 A skutečně, funkce nemají vracet hodnoty. 1685 01:09:26,800 --> 01:09:28,060 Mohou jenom něco. 1686 01:09:28,060 --> 01:09:30,270 Mohou mít co se nazývá vedlejší účinky, které v této 1687 01:09:30,270 --> 01:09:33,109 případ je jen celá parta tisku na obrazovce. 1688 01:09:33,109 --> 01:09:36,580 Tak zjistíte, že tento kód zde, jsem doslova ukradl 1689 01:09:36,580 --> 01:09:37,680 předchozí příklad. 1690 01:09:37,680 --> 01:09:39,930 Jediný rozdíl je, namísto použití i jako můj 1691 01:09:39,930 --> 01:09:42,890 proměnná, jsem nyní používá b jako můj proměnné. 1692 01:09:42,890 --> 01:09:45,880 Tak jsem si b tady dole, mám b tady dole, mám b 1693 01:09:45,880 --> 01:09:47,109 minus 1 tady. 1694 01:09:47,109 --> 01:09:49,279 Ale kód je přesně stejný. 1695 01:09:49,279 --> 01:09:52,529 Ale jen ti ukáže hned, jak můžeme použít, nechte mě jít 1696 01:09:52,529 --> 01:09:56,780 dopředu a skutečně změnit to být pro smyčce. 1697 01:09:56,780 --> 01:10:03,850 for (int i = n; i> n, i -). 1698 01:10:03,850 --> 01:10:06,230 >> Tak jsem ukradl, že z našeho předchozího příkladu. 1699 01:10:06,230 --> 01:10:08,970 Dříve, to je v souladu 37 vyplývá, že bych začal 1700 01:10:08,970 --> 01:10:10,640 zpívat tento nepříjemný píseň. 1701 01:10:10,640 --> 01:10:15,810 Ale místo toho, já jen tak nyní volají sbor i. 1702 01:10:15,810 --> 01:10:16,870 Hotovo. 1703 01:10:16,870 --> 01:10:20,260 Takže teď v každé iteraci tohoto cyklu, říkám to jiné 1704 01:10:20,260 --> 01:10:22,220 funkce, chorus, že jsem se náhodou psát. 1705 01:10:22,220 --> 01:10:24,110 To nebyla napsána někým jiným lety. 1706 01:10:24,110 --> 01:10:27,930 Ale chorus, mezitím, používá printf pro tisk 1707 01:10:27,930 --> 01:10:29,840 z těchto čtyř linek. 1708 01:10:29,840 --> 01:10:32,720 Ale fakt, že volám refrén znovu a znovu v roce 1709 01:10:32,720 --> 01:10:35,900 loop znamená, že budu se dostat, na samém konci, 1710 01:10:35,900 --> 01:10:39,310 přesně stejný song, jak jsem se tak daleko. 1711 01:10:39,310 --> 01:10:42,130 Takže ve zkratce, teď, když se podívám zpátky na můj kód, i když 1712 01:10:42,130 --> 01:10:44,240 funkčně je to stejné, zjistíte, že je to 1713 01:10:44,240 --> 01:10:46,020 začíná být ještě více čitelné. 1714 01:10:46,020 --> 01:10:48,410 Já přesně nevím, jak GetInt 1715 01:10:48,410 --> 01:10:49,250 je realizován. 1716 01:10:49,250 --> 01:10:52,050 Upřímně řečeno, nevím, jak je implementována chorus. 1717 01:10:52,050 --> 01:10:52,970 Ale to nezáleží na mně. 1718 01:10:52,970 --> 01:10:55,620 Nezajímá mě, protože teď můžu nějak, jako člověk, přečtěte si 1719 01:10:55,620 --> 01:10:57,050 to z vrcholu k dolní části. 1720 01:10:57,050 --> 01:10:59,950 A protože funkce jsou pojmenovány podle toho, co 1721 01:10:59,950 --> 01:11:02,910 dělat, můj kód je stále čitelný. 1722 01:11:02,910 --> 01:11:05,190 A jak naše programy dostat mnohem složitější - 1723 01:11:05,190 --> 01:11:07,220 podle semestru je konec, budete psát stovky řádků 1724 01:11:07,220 --> 01:11:10,970 kódu v jazycích jako PHP a JavaScriptu a jako - 1725 01:11:10,970 --> 01:11:13,550 zjistíte, že je to tak mnohem jednodušší, než si udržet přehled o 1726 01:11:13,550 --> 01:11:14,080 co jsi udělal. 1727 01:11:14,080 --> 01:11:15,810 A když začnete spolupracovat s přáteli nebo 1728 01:11:15,810 --> 01:11:19,010 partnery nebo kolegy, budete moci psát mnohem více 1729 01:11:19,010 --> 01:11:22,910 masivní programy od spuštění vykonávat tyto základní 1730 01:11:22,910 --> 01:11:23,990 stavební kameny. 1731 01:11:23,990 --> 01:11:25,550 >> Takže s tím řekl, proč ne my říkáme den? 1732 01:11:25,550 --> 01:11:27,190 A my se uvidíme ve středu. 1733 01:11:27,190 --> 01:11:33,611 [APPLAUSE]