1 00:00:00,000 --> 00:00:00,000 2 00:00:00,000 --> 00:00:00,000 [MUSIC PLAYBACK] 3 00:00:00,000 --> 00:00:13,950 4 00:00:13,950 --> 00:00:16,240 >> David J. Malan: Dobre, to je CS50. 5 00:00:16,240 --> 00:00:18,010 A to je jeden týždeň. 6 00:00:18,010 --> 00:00:22,050 Takže pripomenúť, že naposledy v týždni nula, sme sa zamerali na výpočtovú myslenie. 7 00:00:22,050 --> 00:00:25,440 A my sme prešli od toho, aby Scratch, grafické programovanie 8 00:00:25,440 --> 00:00:27,360 jazyka od našich priateľov v Media Lab MIT. 9 00:00:27,360 --> 00:00:31,730 >> A s Scratch, sme preskúmať teda idey ako funkcia, a podmienky, 10 00:00:31,730 --> 00:00:35,210 a slučky, a premenné, a to aj udalosti, a nite a ďalšie. 11 00:00:35,210 --> 00:00:37,880 A dnes, budeme naďalej používať tie nápady, 12 00:00:37,880 --> 00:00:40,630 a naozaj pričom je pre samozrejmosť, ale preložiť 13 00:00:40,630 --> 00:00:44,220 do iného jazyka známeho ako C. Now, C je viac tradičné jazyk. 14 00:00:44,220 --> 00:00:46,020 Je to nižšia úroveň Jazyk, ak chcete. 15 00:00:46,020 --> 00:00:47,300 >> Je to čisto textová. 16 00:00:47,300 --> 00:00:49,910 A tak na prvý pohľad, je to všetko bude vyzerať trochu záhadný 17 00:00:49,910 --> 00:00:51,430 ak ste nikdy predtým naprogramovaný. 18 00:00:51,430 --> 00:00:53,530 budeme mať bodkočiarkami a zátvorky, 19 00:00:53,530 --> 00:00:55,150 a zložené zátvorky a ďalšie. 20 00:00:55,150 --> 00:00:57,240 Ale uvedomiť, že aj aj keď je syntaxe 21 00:00:57,240 --> 00:01:00,600 asi vyzerať trochu neznáma pre väčšinu z vás, vidieť minulosť. 22 00:01:00,600 --> 00:01:03,220 A pokúsiť sa zistiť, nápady že sú skutočne oboznámený, 23 00:01:03,220 --> 00:01:06,750 pretože tu v týždni jedno, čo začneme urobiť, je porovnať, 24 00:01:06,750 --> 00:01:08,980 spočiatku, Scratch proti C. 25 00:01:08,980 --> 00:01:12,350 >> Tak napríklad, pripomenúť, že keď realizovaný prvý z našich programov 26 00:01:12,350 --> 00:01:16,220 Naposledy sme mali blok, ktorý vyzeral trochu niečo ako tohle-- keď 27 00:01:16,220 --> 00:01:19,990 zelenou vlajkou klikli, a potom sme mali jeden alebo viac dielikov pod ním, 28 00:01:19,990 --> 00:01:22,150 V tomto prípade, povedzme, hello world. 29 00:01:22,150 --> 00:01:24,870 Takže, naozaj, vo Scratch, keď kliknem, že zelený príznak 30 00:01:24,870 --> 00:01:27,390 spustiť svoj program, takže hovoriť, to sú 31 00:01:27,390 --> 00:01:29,520 bloky, ktoré sa dostanú vykonané, alebo spustiť. 32 00:01:29,520 --> 00:01:32,230 A konkrétne Scratch povedal, ahoj, svet. 33 00:01:32,230 --> 00:01:35,377 >> Teraz som mohol špecifikované rôzne slová tu. 34 00:01:35,377 --> 00:01:37,960 Ale uvidíme, že mnohé z týchto blocks-- a naozaj, 35 00:01:37,960 --> 00:01:41,880 v jazyku C veľa functions-- môže byť parametrized alebo prispôsobené 36 00:01:41,880 --> 00:01:43,150 robiť rôzne veci. 37 00:01:43,150 --> 00:01:45,520 V skutočnosti, v C keby sme chcete previesť, teraz, 38 00:01:45,520 --> 00:01:47,567 Tento Scratch programu do tohto jazyka, 39 00:01:47,567 --> 00:01:49,650 budeme písať Trochu niečo také. 40 00:01:49,650 --> 00:01:52,540 >> Je pravda, že tam je nejaká neznáma Syntax tam s najväčšou pravdepodobnosťou, int, 41 00:01:52,540 --> 00:01:54,380 a zátvorky a neplatné. 42 00:01:54,380 --> 00:01:57,740 Ale printf-- hoci by ste myslím, že to bude len tlač. 43 00:01:57,740 --> 00:02:00,120 Ale tlač znamená tlač formátovaný, ako budeme čoskoro vidieť. 44 00:02:00,120 --> 00:02:02,140 To doslovne bude tlačiť na obrazovku bez ohľadu 45 00:02:02,140 --> 00:02:05,990 je vo vnútri týchto zátvorkách, ktoré Samozrejme v tomto prípade je, hello world. 46 00:02:05,990 --> 00:02:09,290 >> Ale všimnite si, niektoré ďalšie syntax, niektoré úvodzovky, 47 00:02:09,290 --> 00:02:11,890 že zátvorky na konci, bodkočiarka a podobne. 48 00:02:11,890 --> 00:02:15,027 Takže tam to trochu nad hlavou, tak povediac, a to ako kognitívno 49 00:02:15,027 --> 00:02:17,860 a syntakticky, že ideme musieť pamätať onedlho. 50 00:02:17,860 --> 00:02:20,720 Ale uvedomiť, že s praxou, to začne skákať na vás. 51 00:02:20,720 --> 00:02:24,920 >> V skutočnosti, poďme zamerať sa na tomto jednom Funkcia specifically-- v tomto prípade, 52 00:02:24,920 --> 00:02:26,290 pozdraviť svet. 53 00:02:26,290 --> 00:02:27,560 Takže povedať, je funkcia. 54 00:02:27,560 --> 00:02:31,320 Dobrý deň, svet je jeho parameter, Argument alebo jej prispôsobenie. 55 00:02:31,320 --> 00:02:34,320 >> A ekvivalencie v C je len Bude tento jeden riadok tu, 56 00:02:34,320 --> 00:02:38,710 kde printf je ekvivalentná, povedzme, dvojitý reťazec v úvodzovkách, ahoj 57 00:02:38,710 --> 00:02:41,470 svet je ekvivalentné, samozrejme, s tým, čo je v bielom poli tam. 58 00:02:41,470 --> 00:02:45,680 A spätné lomítko n, aj keď trochu podivné a neprítomný od nuly, 59 00:02:45,680 --> 00:02:49,380 proste bude mať za následok Budeme pozri v počítači, ako môj Mac alebo PC, 60 00:02:49,380 --> 00:02:51,660 púheho Pohybom kurzor na ďalší riadok. 61 00:02:51,660 --> 00:02:53,970 Je to ako biť Enter na klávesnici. 62 00:02:53,970 --> 00:02:55,580 >> Takže uvidíme, že zase onedlho. 63 00:02:55,580 --> 00:02:58,640 Ale prvé, poďme sa na to pozrieť Ďalším príkladom v prípade slučiek. 64 00:02:58,640 --> 00:03:02,830 Mali sme navždy slučka minule, čo bola séria skladačky 65 00:03:02,830 --> 00:03:05,490 že urobil niečo doslovne forever-- v tomto prípade, 66 00:03:05,490 --> 00:03:08,360 hovoria, Hello World, hello world, hello world, hello world. 67 00:03:08,360 --> 00:03:10,350 Takže je to nekonečné slučke zámerné. 68 00:03:10,350 --> 00:03:14,580 >> V jazyku C, ak chceme implementovať toto Rovnaká myšlienka, mohli by sme jednoducho to urobiť. 69 00:03:14,580 --> 00:03:19,570 Aj keď pravda, world-- printf ahoj teraz zatiaľ čo len sémanticky, druh 70 00:03:19,570 --> 00:03:23,090 vykúzli predstavu o tom opäť niečo, a znovu a znovu, 71 00:03:23,090 --> 00:03:23,980 a na ako dlho? 72 00:03:23,980 --> 00:03:27,990 No, true-- pripomeňme, že pravda, je len na jedno alebo. 73 00:03:27,990 --> 00:03:30,660 >> A pravda je, samozrejme, vždy pravdivé. 74 00:03:30,660 --> 00:03:33,060 Takže je to akýsi bezvýznamný Vyhlásenie len povedať pravdu. 75 00:03:33,060 --> 00:03:36,890 Ale v skutočnosti, to je zámerné, pretože ak je to pravda, je jednoducho vždy pravdivý, 76 00:03:36,890 --> 00:03:40,850 než je síce pravda len naznačuje, keď trochu nepriamo 77 00:03:40,850 --> 00:03:44,070 že nasledujúce riadky kódu medzi týmito zloženými zátvorkami 78 00:03:44,070 --> 00:03:48,320 mal jednoducho spustiť znova a znova, a znova a vlastne nikdy nezastaví. 79 00:03:48,320 --> 00:03:50,230 >> Ak ale chcete, aby vaše slučka zastaviť, ako my 80 00:03:50,230 --> 00:03:54,500 minule sa niečo podobné toto opakujte nasledujúce 50-krát, 81 00:03:54,500 --> 00:03:57,700 v jazyku C môžeme urobiť to isté s tým, čo je volal pre loop-- kľúčové slovo 82 00:03:57,700 --> 00:03:59,330 nie je pritom, ale pre. 83 00:03:59,330 --> 00:04:03,290 A potom tu máme nejakú novú syntax tu, s int i = 0, aj menej ako 50, 84 00:04:03,290 --> 00:04:03,880 i ++. 85 00:04:03,880 --> 00:04:05,430 A vrátime sa k tomu. 86 00:04:05,430 --> 00:04:09,660 Ale to je jednoducho, ako by sme preložiť sadu Stieracie blokov 87 00:04:09,660 --> 00:04:13,079 k súboru C riadkov kódu. 88 00:04:13,079 --> 00:04:14,450 >> Medzitým, za premenné. 89 00:04:14,450 --> 00:04:16,540 A v skutočnosti, práve sme videl jeden pred chvíľou. 90 00:04:16,540 --> 00:04:21,220 A v prípade Scratch, keby sme chcel deklarovať premennú som zavolal 91 00:04:21,220 --> 00:04:24,590 pre i je celé číslo, len číslo, a chceme nastaviť na ľubovoľnú hodnotu, 92 00:04:24,590 --> 00:04:28,410 by sme použili oranžová blokovať here-- nastaviť aj na 0. 93 00:04:28,410 --> 00:04:30,800 >> A uvidíme dnes a mimo nej, rovnako ako minulý týždeň, 94 00:04:30,800 --> 00:04:33,850 programátori robiť takmer vždy začína počítať od nuly, ale naozaj 95 00:04:33,850 --> 00:04:34,950 konvencií. 96 00:04:34,950 --> 00:04:37,250 Ale aj preto, že stiahnutie z naša diskusia o binárne, 97 00:04:37,250 --> 00:04:39,990 Najmenšie číslo Môžete predstavujú s ľubovoľným počtom bitov 98 00:04:39,990 --> 00:04:41,640 Je len bude 0 sám. 99 00:04:41,640 --> 00:04:45,190 A tak budeme zvyčajne zahajujú inicializácia aj naše premenné na hodnotu 0. 100 00:04:45,190 --> 00:04:47,710 >> A v jazyku C, aby urobili to isté, budeme hovoriť, int 101 00:04:47,710 --> 00:04:50,110 pre celé číslo, ja len konvencií. 102 00:04:50,110 --> 00:04:53,390 Mohol som volal táto premenná čokoľvek chcem, rovnako ako v Scratch. 103 00:04:53,390 --> 00:04:57,770 A potom sa rovná 0 práve nadobúdatelia hodnota 0 z pravej 104 00:04:57,770 --> 00:05:01,319 a vloží ho do premennej, alebo skladovacie kontajner tam, na ľavej strane. 105 00:05:01,319 --> 00:05:04,360 A bodkočiarka, ako budeme see-- a sme videli niektoré z týchto already-- 106 00:05:04,360 --> 00:05:06,530 jednoducho znamená koniec myslenia. 107 00:05:06,530 --> 00:05:09,430 Pristúpiť k robiť niečo iné na tratiach, ktoré nasledujú. 108 00:05:09,430 --> 00:05:11,330 >> A teraz, čo boolovských výrazoch? 109 00:05:11,330 --> 00:05:14,320 Pripomeňme, že v Scratch, títo boli výrazy 110 00:05:14,320 --> 00:05:16,740 že sú buď pravdivé alebo false-- otázky, 111 00:05:16,740 --> 00:05:18,910 v skutočnosti, že sú buď pravdivé alebo nepravdivé. 112 00:05:18,910 --> 00:05:21,960 Takže v prípade Scratch, mohli by sme položiť jednoduchú otázku, ako je táto, 113 00:05:21,960 --> 00:05:24,586 je aj nižšia ako 50 ° C? 114 00:05:24,586 --> 00:05:25,710 Tak som sa, opäť je celé číslo. 115 00:05:25,710 --> 00:05:27,210 Možno by sme ju používate v programe Scratch 116 00:05:27,210 --> 00:05:29,310 sledovať skóre alebo nieco podobne. 117 00:05:29,310 --> 00:05:33,810 Takže táto syntaxe tu v Scratch jednoducho znamená, je aj nižšia ako 50 ° C? 118 00:05:33,810 --> 00:05:37,330 No, našťastie, je niečo Jednoduchý v C. A prekladať, 119 00:05:37,330 --> 00:05:41,780 Tento by sme jednoducho povedať, že menej ako 50 ° C, pomocou známeho kľúča 120 00:05:41,780 --> 00:05:42,850 na klávesnici. 121 00:05:42,850 --> 00:05:45,141 >> Zatiaľ, ak ste chceli hovoria všeobecnejší niečo, 122 00:05:45,141 --> 00:05:49,890 ako, no, je x menšie ako y, kde každý x a y sú samy o sebe premenné? 123 00:05:49,890 --> 00:05:52,280 Môžeme urobiť to isté v C, tak dlho, ako sme 124 00:05:52,280 --> 00:05:53,942 vytvoril tieto premenné už. 125 00:05:53,942 --> 00:05:55,650 A uvidíme, ako sa tomu, že onedlho. 126 00:05:55,650 --> 00:05:58,590 Radi by sme jednoducho povedať x menšie ako y. 127 00:05:58,590 --> 00:06:00,530 >> Takže vy začínate pozri určité podobnosti. 128 00:06:00,530 --> 00:06:03,490 A tých ľudí, ktorí urobili Scratch boli iste 129 00:06:03,490 --> 00:06:05,250 inšpirovaný niektoré z týchto základných myšlienok. 130 00:06:05,250 --> 00:06:10,350 A uvidíte tento druh syntax v mnohých languages-- 131 00:06:10,350 --> 00:06:12,160 nie len nuly, nie Len C, ale Python, 132 00:06:12,160 --> 00:06:14,790 a JavaScript, a Iné jazyky pokoja. 133 00:06:14,790 --> 00:06:18,270 >> Pozrime sa na ďalší konštrukt z C, potuchy o stave, 134 00:06:18,270 --> 00:06:20,370 robiť niečo podmienečne. 135 00:06:20,370 --> 00:06:22,720 Ak je niečo je pravda, to urobiť. 136 00:06:22,720 --> 00:06:24,457 Ak je pravda, niečo iné, urob to. 137 00:06:24,457 --> 00:06:27,040 Je to niečo programovanie ekvivalent k rázcestí. 138 00:06:27,040 --> 00:06:29,730 Možno je to obojsmerný vidlica, trojcestný vidlica, alebo viac. 139 00:06:29,730 --> 00:06:32,800 A v Scratch, mohli by sme mať vidieť niečo také. 140 00:06:32,800 --> 00:06:34,010 >> Takže toto je jeden veľký. 141 00:06:34,010 --> 00:06:36,750 Ale vziať do úvahy relatívnu jednoduchosť logiky. 142 00:06:36,750 --> 00:06:44,010 Ak je x menšie ako y, potom hovoria x menej než y, inak, ak x je väčšia ako y, 143 00:06:44,010 --> 00:06:46,230 potom hovoria, X viac než y. 144 00:06:46,230 --> 00:06:48,300 A potom, logicky, ak si myslíte, že späť do nuly 145 00:06:48,300 --> 00:06:52,610 alebo len svoju vlastnú ľudskú intuíciu, dobre, ak x nie je väčšie ako y, a x 146 00:06:52,610 --> 00:06:57,000 nie je menšia ako y, potom sa samozrejme x bude rovná y. 147 00:06:57,000 --> 00:06:59,690 Takže v tomto prípade by hniezdenia Stieracie tieto bloky, 148 00:06:59,690 --> 00:07:02,580 môžeme dosiahnuť tri cesta rázcestia? 149 00:07:02,580 --> 00:07:04,980 >> Medzitým, ak chceme to urobiť v C, ale pravdepodobne 150 00:07:04,980 --> 00:07:08,420 Vyzerá trochu simpler-- prinajmenšom akonáhle sa zoznámi so syntaxou. 151 00:07:08,420 --> 00:07:12,050 Ak x je menšia ako y, printf x je menšia než y. 152 00:07:12,050 --> 00:07:16,140 Else if X viac než y, printf X viac než y. 153 00:07:16,140 --> 00:07:21,210 Iný printf x je rovné y- a, opäť s tými, lomítko končí len 154 00:07:21,210 --> 00:07:24,160 u tých nových tratí, takže ak máte vlastne bežal tento druh programu 155 00:07:24,160 --> 00:07:25,940 to by len presunúť kurzor nakoniec 156 00:07:25,940 --> 00:07:28,100 na ďalší riadok obrazovky. 157 00:07:28,100 --> 00:07:31,270 >> Teraz sa medzitým Scratch mal iný sofistikovanejšie funkcie, iba 158 00:07:31,270 --> 00:07:34,320 z ktorých niektoré budeme najprv prejsť do sveta C. 159 00:07:34,320 --> 00:07:37,010 A jeden z nich bol volal zoznam v Scratch. 160 00:07:37,010 --> 00:07:39,100 A to bol zvláštny typ premennej 161 00:07:39,100 --> 00:07:42,840 Povolené ukladať viac vecí v nej späť k sebe, dozadu, dozadu. 162 00:07:42,840 --> 00:07:45,540 >> V C, nemá zoznamy, samy o sebe, ale niečo 163 00:07:45,540 --> 00:07:48,090 ktoré sú všeobecne s názvom poľa, aj keď budeme 164 00:07:48,090 --> 00:07:50,590 vrátiť neskôr tento semester sa pozerá na niečo 165 00:07:50,590 --> 00:07:52,780 volal zoznamu, alebo naozaj spájať zoznam. 166 00:07:52,780 --> 00:07:55,510 Ale teraz, najbližší ekvivalent v C počas nás 167 00:07:55,510 --> 00:07:57,345 sa bude niečo zvané polia. 168 00:07:57,345 --> 00:07:59,740 A pole je jednoducho špeciálny typ premennej 169 00:07:59,740 --> 00:08:03,160 ktorý vám umožní ukladať dáta späť k sebe, k sebe, k sebe. 170 00:08:03,160 --> 00:08:05,840 >> A skutočne, v Scratch, ak chceme pristupovať 171 00:08:05,840 --> 00:08:09,030 prvý prvok poľa alebo list-- a budem to hovoriť, 172 00:08:09,030 --> 00:08:13,600 Podľa konvencie argv, argumentácia vektora, ale o tom onedlho. 173 00:08:13,600 --> 00:08:17,090 Ak chcem sa dostať na prvý prvok z argv, vo svete Scratch 174 00:08:17,090 --> 00:08:20,930 vlastne robíte zvyčajne začína počítať od 1. 175 00:08:20,930 --> 00:08:22,850 >> A tak by som mohol dostať položky 1 argv. 176 00:08:22,850 --> 00:08:26,310 To je len, ako implementovaná MIT pojem zoznamov. 177 00:08:26,310 --> 00:08:29,860 Ale v C, idem Viac proste len povedať, argv, 178 00:08:29,860 --> 00:08:32,758 čo je opäť meno môjho list-- alebo aby bolo jasné, pole. 179 00:08:32,758 --> 00:08:34,549 A keď chcem prvý prvky, idem 180 00:08:34,549 --> 00:08:37,890 používať hranaté zátvorky, ktorý vás nemusí často používané pod klávesnicou. 181 00:08:37,890 --> 00:08:40,150 >> Ale jednoducho znamená 0, dajte mi ten prvý. 182 00:08:40,150 --> 00:08:42,160 Tak príležitostne a ako plynie čas, ideme 183 00:08:42,160 --> 00:08:44,570 začať vidieť všetky tieto dichotómia medzi Scratch a C, 184 00:08:44,570 --> 00:08:46,070 pričom Scratch používa. 185 00:08:46,070 --> 00:08:47,670 Sme v jazyku C použiť 0 tu. 186 00:08:47,670 --> 00:08:49,420 Ale budete rýchlo zistiť, akonáhle pochopíte 187 00:08:49,420 --> 00:08:52,920 základy každého jazyka, aby tieto veci začnú dostať o to viac 188 00:08:52,920 --> 00:08:56,860 zoznámi prostredníctvom prax a prax. 189 00:08:56,860 --> 00:08:59,700 >> Takže poďme sa vlastne vyzerajú teraz na programe. 190 00:08:59,700 --> 00:09:04,031 Tu je prvá našej C zdrojový kód pre kompletné programy. 191 00:09:04,031 --> 00:09:06,280 A program ideme ponúkať za odplatu 192 00:09:06,280 --> 00:09:09,340 je ten, ktorý je rovnocenný na tomto skoršom Scratch kus. 193 00:09:09,340 --> 00:09:13,210 >> Takže tu máme to, čo je pravdepodobne najjednoduchšie programu C 194 00:09:13,210 --> 00:09:15,410 môžete písať, že v skutočnosti robí niečo. 195 00:09:15,410 --> 00:09:18,250 Teraz sa pozrieme okolo, Pre túto chvíľu má zahŕňať 196 00:09:18,250 --> 00:09:21,190 Štandardné IO.H, a tieto uhol držiaky a int, a neplatná, 197 00:09:21,190 --> 00:09:22,840 a zložené zátvorky, a podobne. 198 00:09:22,840 --> 00:09:25,390 >> A poďme sústrediť len na čo, aspoň intuitívne, 199 00:09:25,390 --> 00:09:26,860 mohol vyskočiť na vás už. 200 00:09:26,860 --> 00:09:30,300 V skutočnosti je hlavné, nemám nutne vedieť, čo to je, 201 00:09:30,300 --> 00:09:34,580 ale podobne ako Scratch mal, že keď zelenou vlajkou kliknutí kúsok skladačky, 202 00:09:34,580 --> 00:09:39,070 tak robí C ako programovací jazyk majú hlavné kus kódu, ktorý 203 00:09:39,070 --> 00:09:43,380 dostane popravený v predvolenom nastavení. A naozaj, to doslova bude nazývaný hlavné. 204 00:09:43,380 --> 00:09:44,720 >> Takže hlavné je funkcia. 205 00:09:44,720 --> 00:09:48,720 A je to špeciálne funkcie, ktorá existuje v jazyku C, ktorý pri spustení programu, 206 00:09:48,720 --> 00:09:52,720 to je hlavné, ktorý sa prevádzkujú default. Vo svete Scratch, 207 00:09:52,720 --> 00:09:56,970 to bolo obvykle, keď zelená vlajka klikol, ktorá dostala spustí automaticky. 208 00:09:56,970 --> 00:10:01,130 >> Medzitým sme videli skôr, printf alebo vytlačiť formátovaný, to je 209 00:10:01,130 --> 00:10:05,620 Bude to funkcia, ktorá prichádza s C, spolu s celou partiou druhých, 210 00:10:05,620 --> 00:10:10,140 že vôľa čas od času a znovu, aby sa robiť presne 211 00:10:10,140 --> 00:10:12,450 ako už názov napovedá, niečo vytlačiť. 212 00:10:12,450 --> 00:10:13,500 Čo chcete vytlačiť? 213 00:10:13,500 --> 00:10:15,770 No, uvidíme, že uzavretím charaktery 214 00:10:15,770 --> 00:10:18,680 ako these-- hello world, lomítko n v úvodzovkách, 215 00:10:18,680 --> 00:10:23,040 môžeme povedať presne printf Čo k tlači na obrazovke. 216 00:10:23,040 --> 00:10:26,430 >> Aby však bolo možné urobiť že sme sa bohužiaľ 217 00:10:26,430 --> 00:10:30,010 je potrebné vziať niečo, čo je Už kryptické na nás ľudí, 218 00:10:30,010 --> 00:10:34,510 ale aspoň je to trochu readable-- ostré zahŕňajú štandardný IO.H, int, 219 00:10:34,510 --> 00:10:39,340 Hlavným, void, printf všetky magické zaklínanie sme práve videli na obrazovke. 220 00:10:39,340 --> 00:10:42,470 Ale v skutočnosti máme na ísť ešte tajomné. 221 00:10:42,470 --> 00:10:47,140 najprv musíme preložiť kód že píšeme do strojového kódu. 222 00:10:47,140 --> 00:10:51,370 A odvolávať z minulého týždňa, že stroje, aspoň tie vieme tu, 223 00:10:51,370 --> 00:10:54,450 Na konci dňa len porozumieť núl a jednotiek. 224 00:10:54,450 --> 00:10:58,100 >> A môj Bože, keby sme museli písať tieto nuly a jednotky vlastne programu, 225 00:10:58,100 --> 00:11:01,260 bolo by veľmi, veľmi rýchlo vziať srandu zo všetkého. 226 00:11:01,260 --> 00:11:05,150 Ale ukazuje sa, za minulého týždňa, že tieto vzory núl a jednotiek 227 00:11:05,150 --> 00:11:06,400 Len majú osobitný význam. 228 00:11:06,400 --> 00:11:08,500 Za určitých okolností, by mohlo znamenať čísla. 229 00:11:08,500 --> 00:11:11,840 >> V niektorých kontextoch, môžu znamenať listy, alebo farby, alebo ľubovoľný počet 230 00:11:11,840 --> 00:11:14,710 ďalších abstrakciou tam na. 231 00:11:14,710 --> 00:11:18,450 Ale rovnako ako má počítač CPU, Central Processing Unit, 232 00:11:18,450 --> 00:11:20,390 alebo mozgy vnútri počítača. 233 00:11:20,390 --> 00:11:22,240 Je to zvyčajne Intel vnútri, pretože to je 234 00:11:22,240 --> 00:11:24,900 jedna z najväčších firiem ktorá robí procesorov pre počítače. 235 00:11:24,900 --> 00:11:28,910 >> No, Intel procesory a ďalšie proste sa rozhodli v predstihu 236 00:11:28,910 --> 00:11:33,970 že určité vzory núl a Tí sa rozumie konkrétne veci. 237 00:11:33,970 --> 00:11:37,040 Niektoré vzory núl a jednotiek bude znamenať, tlačiť na obrazovku, 238 00:11:37,040 --> 00:11:39,710 alebo pridanie týchto dvoch čísel, alebo odpočítať týchto dvoch čísel, 239 00:11:39,710 --> 00:11:43,310 alebo presunúť tento kus dát z Pamäť môj počítač je tu, 240 00:11:43,310 --> 00:11:47,870 alebo ľubovoľný počet iných veľmi nízkej úrovni, ale nakoniec užitočné, operácia. 241 00:11:47,870 --> 00:11:53,022 Ale, našťastie, my ľudia nebudú musieť spoznať túto úroveň detailov. 242 00:11:53,022 --> 00:11:56,230 V skutočnosti, rovnako ako minule, kde sme abstrahovať znova a znova a znova, 243 00:11:56,230 --> 00:11:58,930 Budova z veľmi nízkej úrovni primitíva ako núl a jednotiek 244 00:11:58,930 --> 00:12:01,160 na vyššej úrovni pojmy ako čísla a písmená, 245 00:12:01,160 --> 00:12:04,330 a farby a ďalšie, takže môžeme ako programátori 246 00:12:04,330 --> 00:12:07,080 stojí na ramenách iní, ktorí prišli pred nami 247 00:12:07,080 --> 00:12:11,260 a použiteľný softvér, ktorý ostatných ľudia písali pred us-- 248 00:12:11,260 --> 00:12:14,340 menovite programy zvané kompilátory. 249 00:12:14,340 --> 00:12:17,770 >> C je jazyk, ktorý je obvykle zostavené, 250 00:12:17,770 --> 00:12:22,130 čo znamená, prepočítaná zdrojový kód do strojového kódu. 251 00:12:22,130 --> 00:12:25,230 Najmä, čo to znamená je, že ak máte zdroj 252 00:12:25,230 --> 00:12:29,530 kód, ktorý si sami písať, ako sme skoro bude za chvíľu na obrazovke, 253 00:12:29,530 --> 00:12:33,140 a chcete previesť v konečnom dôsledku k stroju code-- 254 00:12:33,140 --> 00:12:37,100 tie nuly a tie, ktoré Iba váš Mac alebo PC 255 00:12:37,100 --> 00:12:41,230 understands-- máte prvý krmivo, ktoré zdrojový kód sa ako 256 00:12:41,230 --> 00:12:46,340 vstup pre špeciálne program s názvom kompilátor, 257 00:12:46,340 --> 00:12:48,974 ktorého výstup sme Uvidíme je strojový kód. 258 00:12:48,974 --> 00:12:51,890 A skutočne, minule sme sa rozprávali o, naozaj, na konci dňa, 259 00:12:51,890 --> 00:12:52,610 riešenie problémov. 260 00:12:52,610 --> 00:12:53,360 Musíš vstupy. 261 00:12:53,360 --> 00:12:54,318 A máte výstupy. 262 00:12:54,318 --> 00:12:56,560 A máte nejakú algoritmu v stredu. 263 00:12:56,560 --> 00:12:59,830 >> Algoritmy môže určite byť realizované v softvéri, 264 00:12:59,830 --> 00:13:02,900 ako sme videli s pseudokódu minulého týždňa a ako uvidíme sa skutočným kódom 265 00:13:02,900 --> 00:13:03,490 tento týždeň. 266 00:13:03,490 --> 00:13:06,430 A tak kompilátor naozaj len má sadu algoritmov vnútri 267 00:13:06,430 --> 00:13:10,060 o tom, že vedia, ako previesť špeciálne kľúčové slová, 268 00:13:10,060 --> 00:13:12,180 ako hlavný a printf, a iní, že sme práve 269 00:13:12,180 --> 00:13:17,620 videl do vzorov núl a tie, ktoré Intel vnútri a ostatné CPU 270 00:13:17,620 --> 00:13:20,020 v skutočnosti chápe. 271 00:13:20,020 --> 00:13:22,460 Tak ako to urobíme? 272 00:13:22,460 --> 00:13:24,470 Kde získame kompilátor? 273 00:13:24,470 --> 00:13:26,400 >> Väčšina z nás tu máte Mac alebo PC. 274 00:13:26,400 --> 00:13:29,152 A vy systémom Mac OS, alebo Windows alebo Linux, alebo Solaris, 275 00:13:29,152 --> 00:13:30,860 alebo ľubovoľný počet iných operačné systémy. 276 00:13:30,860 --> 00:13:32,568 A vskutku, mohli by sme ísť von na web 277 00:13:32,568 --> 00:13:35,710 a stiahnuť prekladač pre váš Mac alebo PC 278 00:13:35,710 --> 00:13:37,360 pre príslušný operačný systém. 279 00:13:37,360 --> 00:13:39,617 Ale všetci by sme byť na Rôzne strany, tak povediac. 280 00:13:39,617 --> 00:13:41,450 Mali by sme mať mierne rôzne konfigurácie. 281 00:13:41,450 --> 00:13:43,210 A veci nebude fungovať všetky rovnaké. 282 00:13:43,210 --> 00:13:45,280 A vskutku, v týchto dňoch mnohí z nás nepoužívajú 283 00:13:45,280 --> 00:13:47,516 softvér, ktorý beží iba na našich notebookov. 284 00:13:47,516 --> 00:13:49,390 Namiesto toho použiť niečo ako prehliadač, ktorý 285 00:13:49,390 --> 00:13:52,930 nám umožňuje prístup k web-based aplikácie v cloude. 286 00:13:52,930 --> 00:13:55,630 A neskôr tento semester, urobíme presne to. 287 00:13:55,630 --> 00:13:59,660 Budeme písať aplikácie, alebo softvér pomocou code-- nie C, 288 00:13:59,660 --> 00:14:02,860 ale iné jazyky ako Python a JavaScript--, ktoré pracujú v cloude. 289 00:14:02,860 --> 00:14:05,860 >> A k tomu, že my sami V priebehu semestra 290 00:14:05,860 --> 00:14:11,890 bude skutočne používať na báze cloud- Prostredie známy ako CS50 IDE. 291 00:14:11,890 --> 00:14:16,030 To je programovací webová životné prostredie, alebo integrovaný rozvoj 292 00:14:16,030 --> 00:14:20,610 Prostredie IDE, ktorý je postavený na vrchole niektorej open source softvér s názvom Cloud 9. 293 00:14:20,610 --> 00:14:22,966 A my sme urobili niektoré pedagogický zjednodušenie do nej 294 00:14:22,966 --> 00:14:25,840 tak, aby sa skryť určité funkcie v v prvých týždňoch, ktoré nepotrebujeme, 295 00:14:25,840 --> 00:14:27,770 po ktorom môžete odhaľujú ich a robiť väčšinu 296 00:14:27,770 --> 00:14:29,400 čo chcete so životným prostredím. 297 00:14:29,400 --> 00:14:32,470 >> A nám umožňuje tiež, aby vopred nainštalovať určitý softvér. 298 00:14:32,470 --> 00:14:35,330 Veci ako tzv CS50 knižnica, ktorá budeme čoskoro vidieť 299 00:14:35,330 --> 00:14:39,210 nám poskytuje v jazyku C s niektorými ďalšie funkcie. 300 00:14:39,210 --> 00:14:44,392 Takže ak idete nakoniec CS50.io, výzva na prihlásenie, 301 00:14:44,392 --> 00:14:46,350 a akonáhle to urobíte a vytvárať účet zadarmo, 302 00:14:46,350 --> 00:14:52,150 budete môcť pristupovať k Prostredie, ktoré vyzerá celkom takhle. 303 00:14:52,150 --> 00:14:53,760 >> Teraz, to je v predvolenom režime. 304 00:14:53,760 --> 00:14:55,650 Všetko je pekné a svetlý na obrazovke. 305 00:14:55,650 --> 00:14:57,941 Mnohí z nás majú vo zvyku pracuje na CS50 kus, ktorý je 306 00:14:57,941 --> 00:14:59,150 pomerne neskoro do noci. 307 00:14:59,150 --> 00:15:02,400 A tak niektorí z vás možno radšej premeniť ju na nočný režim, tak povediac. 308 00:15:02,400 --> 00:15:05,550 >> Ale nakoniec, čo ste uvidí v rámci CS50 IDE 309 00:15:05,550 --> 00:15:08,340 Je tri odlišné areas-- oblasť na ležať tam, kde 310 00:15:08,340 --> 00:15:12,604 súbory sa bude v mrak, čo je oblasť v pravom hornom rohu 311 00:15:12,604 --> 00:15:14,270 kde váš kód bude upravovať. 312 00:15:14,270 --> 00:15:16,650 Budete mať možnosť otvoriť Jednotlivé karty pre akýkoľvek program 313 00:15:16,650 --> 00:15:19,670 že budete písať tento semester vnútri uvedeného pravom hornom rohu. 314 00:15:19,670 --> 00:15:23,070 A potom s najväčšou arcanely, a napriek tomu mocne, 315 00:15:23,070 --> 00:15:26,610 bude táto vec u Dno známy ako okno terminálu. 316 00:15:26,610 --> 00:15:29,450 >> To je stará škola Command Line Interface, 317 00:15:29,450 --> 00:15:32,240 alebo CLI, ktorý umožňuje môžete spúšťať príkazy 318 00:15:32,240 --> 00:15:35,260 Na computer-- v tomto prípade, Počítač v cloud-- 319 00:15:35,260 --> 00:15:39,090 robiť veci, ako je kompilácia kódu zo zdrojového kódu do strojového kódu, 320 00:15:39,090 --> 00:15:43,600 spúšťať programy, alebo začnite webový server, alebo o prístup k databáze, 321 00:15:43,600 --> 00:15:47,454 a akýkoľvek počet ďalších techník že začneme používať onedlho. 322 00:15:47,454 --> 00:15:49,370 Ale aby sa tam dostať, sme bude skutočne mať 323 00:15:49,370 --> 00:15:51,240 prejsť do režimu online a začať hrať. 324 00:15:51,240 --> 00:15:54,399 A k tomu, že, poďme najprv začať šťourat sa hlavné, 325 00:15:54,399 --> 00:15:55,940 a písať hlavná časť programu. 326 00:15:55,940 --> 00:15:59,170 A poďme použiť túto funkciu printf, ktorý sme použili skôr, 327 00:15:59,170 --> 00:16:01,050 proste niečo povedať. 328 00:16:01,050 --> 00:16:04,910 >> Tak som tu už vnútri CS50 IDE. 329 00:16:04,910 --> 00:16:05,930 Ja som vopred prihlásený. 330 00:16:05,930 --> 00:16:07,360 A ja na plný detekčné okno. 331 00:16:07,360 --> 00:16:09,670 A tak nakoniec budete tiež v najbližších problémov 332 00:16:09,670 --> 00:16:12,960 budú nasledovať podobné kroky, ktoré bude poskytovať dokumentáciu online. 333 00:16:12,960 --> 00:16:16,360 Takže nemusíte sa obávať absorbovať každý malý technický krok 334 00:16:16,360 --> 00:16:17,730 že ja tu dnes. 335 00:16:17,730 --> 00:16:19,222 >> Ale budete mať obrazovku podobnú nasledujúcej. 336 00:16:19,222 --> 00:16:20,430 A stalo, že sa v nočnom režime. 337 00:16:20,430 --> 00:16:22,944 A môžete oživiť všetko up vypnutím nočný režim. 338 00:16:22,944 --> 00:16:24,860 A na konci deň, budete vidieť 339 00:16:24,860 --> 00:16:30,090 Tieto tri hlavné areas-- súboru Prehliadač vľavo, kódové jazýčky hore vrchole, 340 00:16:30,090 --> 00:16:32,430 a okno terminálu v dolnej časti. 341 00:16:32,430 --> 00:16:34,890 >> Nechaj ma ísť dopredu a napísať svoj prvý program. 342 00:16:34,890 --> 00:16:42,300 Chystám sa preventívne ísť do súboru, Ukladať a uložiť svoj súbor ako hello.c. 343 00:16:42,300 --> 00:16:46,850 V skutočnosti, podľa konvencie, akýkoľvek program, ktorý sme píšu, že je napísaný v jazyku C. 344 00:16:46,850 --> 00:16:49,739 by mali byť pomenované niečo bodka c, konvencií. 345 00:16:49,739 --> 00:16:53,030 Takže budem menovať to hello.c, pretože Len chcem pozdraviť svet. 346 00:16:53,030 --> 00:16:54,820 Teraz idem pre zväčšenie out a na tlačidlo Uložiť. 347 00:16:54,820 --> 00:16:58,180 A to všetko teraz mám tu je karta v ktorom môžem začať písať kód. 348 00:16:58,180 --> 00:16:59,490 >> To nebude kompilovať. 349 00:16:59,490 --> 00:17:00,300 To znamená, že nič. 350 00:17:00,300 --> 00:17:02,750 A tak aj keď som prevedené to núl a jednotiek, 351 00:17:02,750 --> 00:17:05,390 CPU bude mať žiadny Myšlienka, čo sa deje okolo. 352 00:17:05,390 --> 00:17:14,170 Ale či píšem riadky, ktoré zodpovedajú up s C je conventions-- C bytosti, 353 00:17:14,170 --> 00:17:20,150 Znovu, toto language-- sa syntaxou ako to, printf Dobrý deň world-- I a som 354 00:17:20,150 --> 00:17:22,210 dostali pohodlne Pritom v priebehu času. 355 00:17:22,210 --> 00:17:24,510 Takže si nemyslím, že som urobil prípadné typografické chyby. 356 00:17:24,510 --> 00:17:27,910 >> Ale vždy, úplne prvá Doba tak urobíte, budete. 357 00:17:27,910 --> 00:17:31,090 A čo sa chystám urobiť, by mohli veľmi rovnako nebude pracovať pre vás prvýkrát. 358 00:17:31,090 --> 00:17:33,610 A to je úplne v poriadku, pretože práve teraz 359 00:17:33,610 --> 00:17:37,662 Možno len vidieť veľa novosti, ale v priebehu doby, akonáhle sa zoznámi 360 00:17:37,662 --> 00:17:39,870 s týmto prostredím, a Tento jazyk, a iní, 361 00:17:39,870 --> 00:17:42,370 začnete vidieť veci, ktoré sú buď správne alebo nesprávne. 362 00:17:42,370 --> 00:17:44,369 >> A to je to, čo učebné kolegami a samozrejme 363 00:17:44,369 --> 00:17:48,780 asistenti dostať tak dobrí v priebehu času, je špinenie chyby alebo chyby v kóde. 364 00:17:48,780 --> 00:17:52,110 Ale tvrdím, že existuje V tejto kóde nie sú žiadne chyby. 365 00:17:52,110 --> 00:17:53,990 Tak som teraz chcete spustiť tento program. 366 00:17:53,990 --> 00:17:57,440 >> Teraz na svoje vlastné Mac alebo PC, som v zvyk dvojitých ikon kliknutím 367 00:17:57,440 --> 00:17:59,350 keď chcem spustiť nejaký program. 368 00:17:59,350 --> 00:18:01,080 Ale to nie je model tu. 369 00:18:01,080 --> 00:18:04,570 V tomto prostredí, ktoré je CS50 IDE. 370 00:18:04,570 --> 00:18:07,192 Sme s použitím prevádzkovej Systém s názvom Linux. 371 00:18:07,192 --> 00:18:09,900 Linux je pripomínajúce ďalší operačný systém, všeobecne známy 372 00:18:09,900 --> 00:18:10,850 ako Unix. 373 00:18:10,850 --> 00:18:16,340 A Linux je zvlášť známy pre majúce prostredie príkazového riadka, CLI. 374 00:18:16,340 --> 00:18:20,070 Teraz sme pomocou špecifického Chuť Linux s názvom Ubuntu. 375 00:18:20,070 --> 00:18:22,770 A Ubuntu je jednoducho istá verzia Linuxu. 376 00:18:22,770 --> 00:18:27,900 >> Ale tieto Linuxu v týchto dňoch robiť vlastne prísť s grafickým užívateľským rozhraním. 377 00:18:27,900 --> 00:18:30,360 A tá, ktorú sme náhodou Tu bude používať je web-based. 378 00:18:30,360 --> 00:18:32,735 Tak to môže vyzerať aj trochu odlišný od niečoho 379 00:18:32,735 --> 00:18:35,310 vy sám môže mať videli alebo spustiť v minulosti. 380 00:18:35,310 --> 00:18:37,910 >> Takže budem pokračovať Teraz a vykonajte nasledujúce. 381 00:18:37,910 --> 00:18:40,950 Ja som zachránil tento súbor ako hello.c. 382 00:18:40,950 --> 00:18:47,350 Chystám sa ísť dopredu a Typ clanghello.c Tak Clang 383 00:18:47,350 --> 00:18:49,850 pre jazyk C je kompilátor. 384 00:18:49,850 --> 00:18:51,952 Je to pre-nainštalované v CS50 IDE. 385 00:18:51,952 --> 00:18:54,910 A môžete si stiahnuť a absolútne nainštalovať tento na vlastnom počítači Mac alebo PC. 386 00:18:54,910 --> 00:18:57,910 >> Ale opäť, nebudete mať všetky pre-konfigurácia pre teba urobil. 387 00:18:57,910 --> 00:19:00,940 Takže teraz som len chystá spustiť clanghello.c. 388 00:19:00,940 --> 00:19:03,240 A teraz si všimnúť túto syntax Tu bude nakoniec 389 00:19:03,240 --> 00:19:06,930 uvedomiť, znamená, že som v priečinok alebo adresár s názvom Pracovný priestor. 390 00:19:06,930 --> 00:19:11,030 Tento znak dolára je jednoducho konvencie po zmysle, zadajte svoje príkazy tu. 391 00:19:11,030 --> 00:19:14,560 >> To, čo sa nazýva prompt, stačí konvencií je znak dolára. 392 00:19:14,560 --> 00:19:19,130 A keď pôjdem napred a hneď na tlačidlo Vstúpiť, nič Zdá sa, že sa stalo. 393 00:19:19,130 --> 00:19:20,930 Ale to je vlastne dobrá vec. 394 00:19:20,930 --> 00:19:23,650 Čím menej sa to stane na obrazovky, tým väčšia je pravdepodobnosť 395 00:19:23,650 --> 00:19:26,710 váš kód je správny, aspoň syntakticky. 396 00:19:26,710 --> 00:19:29,120 >> Takže keď chcem spustiť tento Program, čo mám robiť? 397 00:19:29,120 --> 00:19:33,770 No, to ukáže, že Predvolený názov konvencií 398 00:19:33,770 --> 00:19:38,854 pre programy, ak nezadáte menovať váš program je len a.out. 399 00:19:38,854 --> 00:19:41,270 A táto syntaxe príliš, budete zoznámiť sa s onedlho. 400 00:19:41,270 --> 00:19:47,500 >> Dot lomítko jednoducho znamená, hej, CS50 IDE, spustiť program s názvom a.out 401 00:19:47,500 --> 00:19:49,400 to je v mojom aktuálnom adresári. 402 00:19:49,400 --> 00:19:51,520 Že bodka znamená aktuálny adresár. 403 00:19:51,520 --> 00:19:55,040 A uvidíme, aké ďalšie také sekvencie postáv znamená, že onedlho. 404 00:19:55,040 --> 00:19:58,430 >> Tak ideme na to, Enter, hello world. 405 00:19:58,430 --> 00:20:00,080 A všimnite si, že to, čo sa stalo? 406 00:20:00,080 --> 00:20:01,580 Nielenže tlačiť hello world. 407 00:20:01,580 --> 00:20:05,990 To tiež premiestnená kurzor na ďalší riadok. 408 00:20:05,990 --> 00:20:07,160 >> A prečo to bolo? 409 00:20:07,160 --> 00:20:12,400 Aký bol kód, ktorý sme písali skôr že zabezpečila, že sa kurzor by 410 00:20:12,400 --> 00:20:14,882 pokračovať na ďalšom riadku? 411 00:20:14,882 --> 00:20:16,840 Legrační vec, o Počítač je to len bude 412 00:20:16,840 --> 00:20:18,570 robiť doslova, čo si to povedať robiť. 413 00:20:18,570 --> 00:20:26,050 >> Takže ak ste to povedať, aby printf Dobrý deň, čiarka, medzera, svet, v blízkosti citácie, 414 00:20:26,050 --> 00:20:29,090 to doslova len bude vytlačiť tieto znaky. 415 00:20:29,090 --> 00:20:31,980 Ale musel som tento špeciálny znak Na konci odvolania, spätné lomítko n. 416 00:20:31,980 --> 00:20:34,230 A to je to, čo zaistená že postava šla 417 00:20:34,230 --> 00:20:36,570 na ďalší riadok obrazovky. 418 00:20:36,570 --> 00:20:38,097 >> V skutočnosti, nechaj ma ísť, a to urobiť. 419 00:20:38,097 --> 00:20:39,430 Nechaj ma ísť dopredu a zmazať. 420 00:20:39,430 --> 00:20:41,180 Teraz si všimnite, že Horná časť mojej obrazovke je tu 421 00:20:41,180 --> 00:20:42,890 trochu červené svetlo karta naznačuje, 422 00:20:42,890 --> 00:20:45,047 hej, ste neuložili súboru. 423 00:20:45,047 --> 00:20:47,880 Takže budem pokračovať s kontrolou S alebo príkaz S uložte súbor. 424 00:20:47,880 --> 00:20:51,130 Teraz to goes-- šiel na moment-- zelenú. 425 00:20:51,130 --> 00:20:53,760 A teraz je to späť do len byť blízky ikona. 426 00:20:53,760 --> 00:21:01,860 >> Ak mám teraz spustiť clanghello.c znovu, Enter, bodka lomítko, a.out, enter, 427 00:21:01,860 --> 00:21:04,110 uvidíte, že to ešte funguje. 428 00:21:04,110 --> 00:21:06,020 Ale je to pravdepodobne trochu buggy. 429 00:21:06,020 --> 00:21:08,714 Práve teraz, moja prompt-- pracovný priestor, a potom ten znak dolára, 430 00:21:08,714 --> 00:21:10,880 a potom môj skutočný prompt-- všetko je na rovnakom riadku. 431 00:21:10,880 --> 00:21:14,540 Tak to určite estetický chyba, aj keď to nie je naozaj logická chyba. 432 00:21:14,540 --> 00:21:16,250 >> Takže idem napraviť to, čo som práve urobil. 433 00:21:16,250 --> 00:21:18,560 Idem znova spustiť a.out. 434 00:21:18,560 --> 00:21:22,710 Všimnite si, som pridal znak nového riadku späť. 435 00:21:22,710 --> 00:21:24,280 Som uloženie súboru. 436 00:21:24,280 --> 00:21:31,630 >> Takže idem znova spustiť a.out, a-- sakra, chyba, chyba znamenať chybu. 437 00:21:31,630 --> 00:21:35,020 Takže chyba je, že hoci Pridal som spätné lomítko n tam, 438 00:21:35,020 --> 00:21:41,180 re-uloží, znova bežal program, správanie bol rovnaký. 439 00:21:41,180 --> 00:21:42,640 Prečo by to malo byť? 440 00:21:42,640 --> 00:21:43,910 >> Mi chýba krok, že jo? 441 00:21:43,910 --> 00:21:47,620 Že kľúčový krok skôr bolo, že máte to-- keď zmeníte zdrojový kód, 442 00:21:47,620 --> 00:21:49,610 to dopadá tiež spustiť to cez prekladač 443 00:21:49,610 --> 00:21:51,102 Znovu tak dostanete nový strojový kód. 444 00:21:51,102 --> 00:21:52,810 A strojový kód, nuly a tie, 445 00:21:52,810 --> 00:21:56,260 sa bude takmer identické, ale nie je dokonale tak, pretože potrebujeme, 446 00:21:56,260 --> 00:21:57,510 Samozrejme, že nový riadok. 447 00:21:57,510 --> 00:22:02,640 >> Takže tento problém odstrániť, budem potrebovať znovu spustiť clanghello.c, vstupovať, bodka 448 00:22:02,640 --> 00:22:03,800 lomítko, a.out. 449 00:22:03,800 --> 00:22:08,402 A teraz, hello world je späť tam, kde som, že to bude. 450 00:22:08,402 --> 00:22:09,610 Tak to je všetko v poriadku a dobré. 451 00:22:09,610 --> 00:22:13,150 Ale a.out je celkom hlúpe meno pre Program, aj keď to sa stane byť, 452 00:22:13,150 --> 00:22:16,530 z historických dôvodov default-- čo znamená, montážne výstupy. 453 00:22:16,530 --> 00:22:20,780 >> Ale dovoľte mi pokračovať tu a to inak. 454 00:22:20,780 --> 00:22:24,760 Chcem hello world skutočne nazvať Dobrý deň. 455 00:22:24,760 --> 00:22:28,320 Takže ak to bolo ikonu na mojom desktop, to by nemalo byť a.out. 456 00:22:28,320 --> 00:22:29,730 To by bol nazývaný Dobrý deň. 457 00:22:29,730 --> 00:22:33,660 >> Tak, ako to urobiť, to dopadá že Clang, rovnako ako mnoho programov, 458 00:22:33,660 --> 00:22:37,980 podporuje argumenty príkazového riadku, alebo vlajky, alebo prepínače, 459 00:22:37,980 --> 00:22:39,600 ktorý jednoducho ovplyvniť jeho správanie. 460 00:22:39,600 --> 00:22:45,160 Konkrétne Clang podporuje pomlčka O príznak, ktorý potom trvá druhé slovo. 461 00:22:45,160 --> 00:22:48,190 V tomto prípade budem svojvoľne, ale rozumne, hovorte tomu ahoj. 462 00:22:48,190 --> 00:22:50,710 Ale ja ju mohli nazvať niečo Chcem, s výnimkou a.out, ktorý 463 00:22:50,710 --> 00:22:52,390 by bolo skôr vedľa bodu. 464 00:22:52,390 --> 00:22:55,640 >> A potom stačí zadať meno spisu ja chcem zostaviť. 465 00:22:55,640 --> 00:22:59,190 Tak sa aj keď na začiatku príkazu mám ešte Clang, 466 00:22:59,190 --> 00:23:01,410 na konci príkazu Stále mám názov súboru, 467 00:23:01,410 --> 00:23:05,520 Teraz mám tieto príkazový riadok argumenty, tieto príznaky, ktoré hovoria, 468 00:23:05,520 --> 00:23:11,180 oh, mimochodom, výstup-o, súbor s názvom Dobrý deň, nie je predvolený a.out. 469 00:23:11,180 --> 00:23:13,810 >> Takže keď som stlačte klávesu Enter teraz, nič Zdá sa, že sa stalo. 470 00:23:13,810 --> 00:23:17,900 A predsa, teraz môžem robiť dot lomítko Dobrý deň. 471 00:23:17,900 --> 00:23:19,089 Takže je to rovnaký program. 472 00:23:19,089 --> 00:23:21,380 Nuly a tie sú identický na konci dňa. 473 00:23:21,380 --> 00:23:24,210 >> Ale sú v dvoch odlišný files-- a.out, 474 00:23:24,210 --> 00:23:26,490 čo je prvá verzia a len naivne menovaný, 475 00:23:26,490 --> 00:23:30,250 a teraz Dobrý deň, čo je oveľa presvedčivejšie názov programu. 476 00:23:30,250 --> 00:23:33,195 Ale úprimne, ja som nikdy bude to zase pamätať, 477 00:23:33,195 --> 00:23:34,070 a znova a znova. 478 00:23:34,070 --> 00:23:36,411 A skutočne, ako píšeme zložitejších programov, 479 00:23:36,411 --> 00:23:38,160 povely nablízku budem musieť písať 480 00:23:38,160 --> 00:23:40,920 sa dostane aj viac komplikuje stále. 481 00:23:40,920 --> 00:23:41,940 >> A tak, aby sa nebála. 482 00:23:41,940 --> 00:23:46,220 Ukazuje sa, že ľudia skôr aby sme si uvedomili, že príliš 483 00:23:46,220 --> 00:23:47,530 mal tento presne rovnaký problém. 484 00:23:47,530 --> 00:23:50,900 Oni príliš neužil museli typ pomerne dlhé, tajomných príkazov, 485 00:23:50,900 --> 00:23:52,200 nieto ešte pamätať si ich. 486 00:23:52,200 --> 00:23:56,070 A tak ľudia pred nami robili ďalšie programy, ktoré uľahčujú 487 00:23:56,070 --> 00:23:57,670 zostaviť svoj softvér. 488 00:23:57,670 --> 00:24:01,609 >> A skutočne, jedným z takých program sa nazýva Výrobok. 489 00:24:01,609 --> 00:24:03,150 Takže ja idem dopredu a to urobiť. 490 00:24:03,150 --> 00:24:05,691 Chystám sa vrátiť všetko, čo som práve urobil nasledujúcim spôsobom. 491 00:24:05,691 --> 00:24:07,690 Nechaj ma typ LS. 492 00:24:07,690 --> 00:24:10,980 A všimnite si tri things-- a.out, a hviezda, ahoj 493 00:24:10,980 --> 00:24:12,810 a hviezda a hello.c. 494 00:24:12,810 --> 00:24:14,730 Dúfajme, malo by to byť trochu intuitívne, 495 00:24:14,730 --> 00:24:18,220 ak už predtým došlo Nič v tomto priestore. 496 00:24:18,220 --> 00:24:21,240 Nebolo nič, čo by som mal vytvoriť, kým sme začali triedu. 497 00:24:21,240 --> 00:24:22,840 >> A som vytvoril hello.c. 498 00:24:22,840 --> 00:24:24,544 Potom som ho zostavil, a nazval ho a.out. 499 00:24:24,544 --> 00:24:27,460 A potom som zostavil ho opäť mierne odlišne a nazval ho pozdraviť. 500 00:24:27,460 --> 00:24:32,830 Takže mám tri súbory v tomto adresári, V tejto zložke s názvom Pracovný priestor. 501 00:24:32,830 --> 00:24:35,005 Teraz vidím, že rovnako keď som oddialiť skutočnosti. 502 00:24:35,005 --> 00:24:37,530 >> Keby som oddialiť tu a pozrite na tú hornej pravej ruky 503 00:24:37,530 --> 00:24:39,940 roh, ako bolo sľúbené ľavá na pravej strane obrazovky 504 00:24:39,940 --> 00:24:42,990 je vždy ukážem čo je vo vašom účte, čo je 505 00:24:42,990 --> 00:24:44,790 Vnútro CS50 IDE. 506 00:24:44,790 --> 00:24:46,680 A tam sú tri súbory tam. 507 00:24:46,680 --> 00:24:49,070 >> Takže chcem sa zbaviť a.out a ahoj. 508 00:24:49,070 --> 00:24:51,275 A ako by ste mohli si predstaviť, intuitívne, vás 509 00:24:51,275 --> 00:24:53,400 mohol radiť kontrolného kliknutie alebo kliknite pravým tlačidlom myši na túto tému. 510 00:24:53,400 --> 00:24:54,590 A táto malá ponuka objaví. 511 00:24:54,590 --> 00:24:57,170 Tu si môžete stiahnuť súbor, spustite to, prezrieť, obnovovaciu, premenovanie, 512 00:24:57,170 --> 00:24:57,700 alebo čo nie. 513 00:24:57,700 --> 00:25:00,260 >> A mohol by som len odstrániť, a to by ísť preč. 514 00:25:00,260 --> 00:25:05,260 Ale poďme robiť veci s príkazom linka pre túto chvíľu, tak, aby si pohodlne 515 00:25:05,260 --> 00:25:07,010 s tým, a to nasledujúcim spôsobom. 516 00:25:07,010 --> 00:25:12,345 Chystám sa ísť dopredu a vyberte a.out zadaním doslova rma.out. 517 00:25:12,345 --> 00:25:14,890 Ukázalo sa, že príkaz na odstránenie alebo odstránenie niečoho, 518 00:25:14,890 --> 00:25:16,280 nie je odstrániť alebo odstrániť. 519 00:25:16,280 --> 00:25:21,260 >> Je to stručnejšie RM, stačí uložiť vám niektoré stlačenia klávesov, a stlačte Enter. 520 00:25:21,260 --> 00:25:24,707 Teraz budeme mať trochu záhadne odstrániť bežný súbor a.out. 521 00:25:24,707 --> 00:25:27,040 Ja naozaj neviem, čo je to nepravidelný súbor by bolo doteraz. 522 00:25:27,040 --> 00:25:28,660 Ale ja chcem, aby ho odstrániť. 523 00:25:28,660 --> 00:25:30,150 >> Takže idem Napíšte A pre Áno. 524 00:25:30,150 --> 00:25:31,940 Alebo by som mohol písať to, a stlačte Enter. 525 00:25:31,940 --> 00:25:33,440 A opäť sa zdanlivo nič nedeje. 526 00:25:33,440 --> 00:25:35,840 Ale to je všeobecne dobrá vec. 527 00:25:35,840 --> 00:25:40,490 >> Keby som typ LS tentoraz, čo by som mal vidieť? 528 00:25:40,490 --> 00:25:44,930 Dúfajme, že len ahoj a hello.c. 529 00:25:44,930 --> 00:25:47,286 Teraz, ako stranou, budete Všimnite si túto hviezdu, hviezdička, 530 00:25:47,286 --> 00:25:48,660 to je na konci svojich programov. 531 00:25:48,660 --> 00:25:50,201 A oni tiež objavil v zelenej farbe. 532 00:25:50,201 --> 00:25:53,970 To je len CS50 IDE cesta z cluing vás do skutočnosti, 533 00:25:53,970 --> 00:25:55,280 že to nie je zdrojový kód. 534 00:25:55,280 --> 00:25:58,880 To je spustiteľný, je spustiteľný program, ktorý si môžete skutočne spustiť 535 00:25:58,880 --> 00:26:01,020 tým, že robí dot lomítko, a potom je to názov. 536 00:26:01,020 --> 00:26:05,860 >> A teraz, nechaj ma ísť dopredu a vyberte to, rm ahoj, Enter, odstrániť pravidelná 537 00:26:05,860 --> 00:26:08,010 súbor Dobrý deň, áno. 538 00:26:08,010 --> 00:26:11,180 A teraz keď som typ LS, sme späť hello.c. 539 00:26:11,180 --> 00:26:13,917 Snažte sa odstrániť vaše Skutočná zdrojový kód. 540 00:26:13,917 --> 00:26:16,250 Aj keď existuje funkcie zabudované do CS50 IDE kde 541 00:26:16,250 --> 00:26:19,870 môžete prejsť históriu revízií a vzad v čase Ak omylom 542 00:26:19,870 --> 00:26:23,660 zmazať niečo robiť budú mať na zreteli podľa týchto výziev áno alebo nie, 543 00:26:23,660 --> 00:26:25,381 o tom, čo vlastne chcete robiť. 544 00:26:25,381 --> 00:26:27,380 A keď som ísť až na vrchol ľavom rohu tu, 545 00:26:27,380 --> 00:26:30,696 všetko, čo zostáva, je hello.c. 546 00:26:30,696 --> 00:26:32,570 Takže tam zväzky ďalšie príkazy, ktoré ste 547 00:26:32,570 --> 00:26:37,550 môže vykonávať vo svete Linuxu z ktorých jedna je, opäť, I. 548 00:26:37,550 --> 00:26:40,180 A budeme si vyrobiť môj program teraz nasledovne. 549 00:26:40,180 --> 00:26:43,270 >> Namiesto toho, aby robil rinčanie, namiesto toho, aby Clang-o, 550 00:26:43,270 --> 00:26:45,860 idem proste Doslova typ, aby ahoj. 551 00:26:45,860 --> 00:26:49,630 A teraz si všimnúť, som nepíšete, aby hello.c. 552 00:26:49,630 --> 00:26:50,910 Som písanie robiť ahoj. 553 00:26:50,910 --> 00:26:54,840 >> A tento program, aby to prichádza s CS50 IDE a ďalšie 554 00:26:54,840 --> 00:26:57,090 všeobecne s Linuxom, je program, ktorý je 555 00:26:57,090 --> 00:26:59,120 chystá urobiť program s názvom Dobrý deň. 556 00:26:59,120 --> 00:27:03,680 A to bude predpokladať, podľa konvencie, že ak tento program môžu byť vykonané, 557 00:27:03,680 --> 00:27:09,030 to bude byť vyrobené zo zdroja Kód súbor končiace v bodovom c, hello.c. 558 00:27:09,030 --> 00:27:12,210 >> Takže keď som stlačte Enter Teraz si všimnite, že Príkaz, ktorý sa vykonaný 559 00:27:12,210 --> 00:27:14,340 je v skutočnosti ešte dlhšie Pred ako predtým. 560 00:27:14,340 --> 00:27:16,670 A to preto, že sme predkonfigurované CS50 IDE mať 561 00:27:16,670 --> 00:27:19,878 Niektoré ďalšie funkcie postavené v tom, že nepotrebujeme ešte nie, ale čoskoro bude. 562 00:27:19,878 --> 00:27:23,470 Ale kľúčové si uvedomiť Teraz mám program Dobrý deň. 563 00:27:23,470 --> 00:27:27,080 >> Keby som typ LS znovu, ja majú ahoj program. 564 00:27:27,080 --> 00:27:32,070 A môžem bežať ju Bodka a.out lomítko, nie, 565 00:27:32,070 --> 00:27:35,590 pretože celý zmysel tejto Cvičenie bolo bodka lomítko Dobrý deň. 566 00:27:35,590 --> 00:27:38,089 A teraz mám hello world. 567 00:27:38,089 --> 00:27:39,880 Takže vpred, Sme takmer vždy len 568 00:27:39,880 --> 00:27:42,088 bude kompilovať naše programy príkazom Vytvoriť. 569 00:27:42,088 --> 00:27:45,300 A potom budeme je prevádzkovaný dot lomítko a názov programu. 570 00:27:45,300 --> 00:27:49,610 Ale uvedomiť si, čo urobiť, je robí pre vy, je to, že nie je kompilátor. 571 00:27:49,610 --> 00:27:53,310 Je to len výhoda programu že vie, ako vyvolať kompilátor 572 00:27:53,310 --> 00:27:56,470 bežať tak, že vy sami ju použiť. 573 00:27:56,470 --> 00:28:00,220 >> Čo ďalšie príkazy existujú Linux, a podľa poradia CS50 IDE? 574 00:28:00,220 --> 00:28:03,107 Čoskoro vidieť, že je tu Príkaz CD, zmena Directory. 575 00:28:03,107 --> 00:28:05,190 To vám umožní v rámci Váš rozhranie príkazového riadku 576 00:28:05,190 --> 00:28:07,610 k pohybu vpred a späť, a otvárať rôzne zložky 577 00:28:07,610 --> 00:28:08,860 bez použitia myši. 578 00:28:08,860 --> 00:28:12,470 >> LS sme videli, čo je skratka pre zoznam súbory v aktuálnom adresári. 579 00:28:12,470 --> 00:28:14,650 Urobiť Dir, môžete asi začať odvodzovať 580 00:28:14,650 --> 00:28:18,150 čo to znamená now-- aby adresár, Ak chcete vytvoriť priečinok. 581 00:28:18,150 --> 00:28:21,270 RM pre odstránenie RM Dir pre odobrať directory-- a tie, 582 00:28:21,270 --> 00:28:24,160 Znova, sú príkazového riadku ekvivalenty toho, čo 583 00:28:24,160 --> 00:28:26,945 mohol robiť v CS50 IDE s myšou. 584 00:28:26,945 --> 00:28:28,820 Ale budete čoskoro zistí, že niekedy je to len 585 00:28:28,820 --> 00:28:30,610 oveľa rýchlejšie robiť veci s klávesnicou, 586 00:28:30,610 --> 00:28:33,690 a nakoniec oveľa silnejší. 587 00:28:33,690 --> 00:28:36,440 >> Ale je to ťažké tvrdiť, že niečo sme robili doteraz 588 00:28:36,440 --> 00:28:39,990 je všetko, čo silný, keď všetci sme boli hovorím, hello world. 589 00:28:39,990 --> 00:28:43,740 A v skutočnosti, I napevno Slová ahoj svet do môjho programu. 590 00:28:43,740 --> 00:28:45,530 Doteraz neexistuje žiadna dynamika. 591 00:28:45,530 --> 00:28:49,320 Scratch bol rádovo zaujímavejšie minulý týždeň. 592 00:28:49,320 --> 00:28:51,220 >> A tak sa poďme sa tam dostať. 593 00:28:51,220 --> 00:28:55,310 Poďme sa krok smerom, ktorý by spôsob, ako niektoré z týchto funkcií. 594 00:28:55,310 --> 00:28:59,470 Takže nielenže C prísť s printf, a zväzky ďalších funkcií 595 00:28:59,470 --> 00:29:01,850 z ktorých niektoré uvidíme v priebehu času, to nie je 596 00:29:01,850 --> 00:29:05,760 aby to všetko tak jednoduché, hneď po vybalení brány v získavaní užívateľských vstupov. 597 00:29:05,760 --> 00:29:08,140 >> V skutočnosti je jedným z nedostatkov jazykov, ako je C, 598 00:29:08,140 --> 00:29:10,140 a dokonca aj Java a napriek tomu iní, je, že to nie je 599 00:29:10,140 --> 00:29:15,860 uľahčujú len dostať veci, ako je celé čísla od užívateľov, alebo reťazcov, slová, 600 00:29:15,860 --> 00:29:19,970 a frázy, nieto veci ako hodnôt s plávajúcou čiarkou, alebo reálne čísla 601 00:29:19,970 --> 00:29:23,240 s desatinnými miestami a v skutočnosti dlhá čísla, ako sme skoro uvidí. 602 00:29:23,240 --> 00:29:27,000 Takže tento zoznam funkcií tu, títo sú rovnako ako ostatné Scratch dielikov 603 00:29:27,000 --> 00:29:31,090 že sme predinštalované v CS50 IDE, ktorý budeme používať po dobu niekoľkých týždňov 604 00:29:31,090 --> 00:29:34,010 ako koliesok druhov, a Nakoniec ich zložiť, a pozrite sa 605 00:29:34,010 --> 00:29:37,210 Pod kapotou zrejme tým, ako sú tieto veci realizované. 606 00:29:37,210 --> 00:29:40,460 >> Ale ako to urobiť, poďme v skutočnosti napísať program. 607 00:29:40,460 --> 00:29:41,770 Nechaj ma ísť napred teraz. 608 00:29:41,770 --> 00:29:44,750 A ja idem k vytvoreniu nového súbor kliknutím na tento malý Plus, 609 00:29:44,750 --> 00:29:45,970 a kliknutím na tlačidlo Nový súbor. 610 00:29:45,970 --> 00:29:49,250 >> Idem zachrániť tento ďalší jeden ako, povedzme, string.c, 611 00:29:49,250 --> 00:29:50,750 pretože chcem hrať s reťazcami. 612 00:29:50,750 --> 00:29:53,990 A reťazec v C je len postupnosť znakov. 613 00:29:53,990 --> 00:29:56,090 Takže teraz poďme vpred a vykonajte nasledujúce. 614 00:29:56,090 --> 00:30:01,204 >> Zahŕňajú štandardné IO.h-- a to dopadá štandardné IO, 615 00:30:01,204 --> 00:30:03,360 IO jednoducho znamená vstup a výstup. 616 00:30:03,360 --> 00:30:05,920 Tak to dopadá, že Táto linka je tu to, čo 617 00:30:05,920 --> 00:30:08,140 Je nám susedné použiť printf. 618 00:30:08,140 --> 00:30:10,410 Printf, samozrejme, produkuje výstup. 619 00:30:10,410 --> 00:30:15,000 Takže aby bolo možné používať printf, to dopadá out musíte mať tento riadok kódu 620 00:30:15,000 --> 00:30:16,040 V hornej časti súboru. 621 00:30:16,040 --> 00:30:18,456 >> A vrátime k tomu, čo že v skutočnosti znamená, že onedlho. 622 00:30:18,456 --> 00:30:20,400 Ukazuje sa, že v akýkoľvek program v jazyku C píšem, 623 00:30:20,400 --> 00:30:23,640 Musím začať ju kód, ktorý vyzerá takto. 624 00:30:23,640 --> 00:30:26,860 A všimnite si CS50 IDE a ostatné integrované vývojové 625 00:30:26,860 --> 00:30:30,050 prostredie, ako je to, sa pokúsime čo najlepšie 626 00:30:30,050 --> 00:30:31,780 oni môžu dokončiť svoje myšlienky. 627 00:30:31,780 --> 00:30:35,930 V skutočnosti, pred chvíľou, keď undo čo som urobil, som stlačte Enter. 628 00:30:35,930 --> 00:30:39,160 >> Potom som trafil otvorený kučeravé rovnátka, stlačte klávesu Enter znova. 629 00:30:39,160 --> 00:30:40,430 A to dokončil svoju myšlienku. 630 00:30:40,430 --> 00:30:45,140 To mi dal nový riadok, odsadené o nič menej pre príjemné štylistických dôvodov, uvidíme. 631 00:30:45,140 --> 00:30:48,559 A potom sa mi automaticky dal že zložená zátvorka dokončiť svoju myšlienku. 632 00:30:48,559 --> 00:30:50,600 Teraz to nie je vždy odhadnúť, čo chcete robiť. 633 00:30:50,600 --> 00:30:53,620 Ale z veľkej časti, to robí ušetrí niekoľko stlačení klávesov. 634 00:30:53,620 --> 00:30:59,560 Takže pred chvíľou sme spustili tento program-- Dobrý deň, svet, a potom ho zostavil, 635 00:30:59,560 --> 00:31:00,460 a potom ju bežal. 636 00:31:00,460 --> 00:31:01,867 Ale nie je tu žiadna dynamika. 637 00:31:01,867 --> 00:31:03,700 Čo keby sme chceli robiť niečo iné? 638 00:31:03,700 --> 00:31:07,630 No, čo keby som chcel vlastne získať reťazec od užívateľa? 639 00:31:07,630 --> 00:31:11,250 Idem na použitie kúsok skladačky volal presne že-- dostať reťazec. 640 00:31:11,250 --> 00:31:15,860 >> Ukázalo sa, že v jazyku C, že keď nechcete, poskytovať informácie pre kúsok skladačky, 641 00:31:15,860 --> 00:31:19,360 alebo viac vhodne funkciu, budete doslova proste otvorené zátvorky, 642 00:31:19,360 --> 00:31:20,430 V blízkosti zátvorka. 643 00:31:20,430 --> 00:31:25,540 Takže je to, ako by tam žiadny biely rámček písať do. 644 00:31:25,540 --> 00:31:27,720 Hlavné slovo blok pred Mal malú bielu krabičku. 645 00:31:27,720 --> 00:31:29,660 Nemáme tu biely rámček teraz. 646 00:31:29,660 --> 00:31:33,310 >> Ale keď som volať get reťazec I chcieť, aby výsledok niekde inde. 647 00:31:33,310 --> 00:31:37,680 Takže veľmi časté paradigma v C je volanie funkcie, ako get reťazec tu, 648 00:31:37,680 --> 00:31:41,070 a potom uložiť svoju návratovú hodnotu. 649 00:31:41,070 --> 00:31:44,450 Je to výsledok jeho úsilie v niečom. 650 00:31:44,450 --> 00:31:47,630 >> A čo je konštruovať v programovaní, 651 00:31:47,630 --> 00:31:53,450 či už v základe, alebo teraz C, aby sme možno použiť na uloženie vlastne niečo? 652 00:31:53,450 --> 00:31:55,990 Volal to premenná, že jo? 653 00:31:55,990 --> 00:32:00,320 A v Scratch, my nie v skutočnosti jedno, čo sa deje v premenných. 654 00:32:00,320 --> 00:32:02,170 >> Ale v tomto prípade sme vlastne robiť. 655 00:32:02,170 --> 00:32:03,719 Idem povedať reťazec. 656 00:32:03,719 --> 00:32:05,510 A potom som mohol zavolať to, čo chcem. 657 00:32:05,510 --> 00:32:08,340 Idem to nazvať meno, dostane dostať reťazec. 658 00:32:08,340 --> 00:32:10,250 >> A teraz aj keď ste trochu na tento nový, 659 00:32:10,250 --> 00:32:11,984 Všimnite si, že som chýba nejaký detail. 660 00:32:11,984 --> 00:32:13,150 Ja zabudla bodkočiarkou. 661 00:32:13,150 --> 00:32:14,400 Musím dokončiť túto myšlienku. 662 00:32:14,400 --> 00:32:17,480 Takže idem pohnúť kurzorom, a udrel bodkočiarka tam. 663 00:32:17,480 --> 00:32:19,130 A čo som práve urobil? 664 00:32:19,130 --> 00:32:21,440 V tomto riadku kódu, číslo 5 v čase, 665 00:32:21,440 --> 00:32:23,799 Volám get reťazec so žiadnymi vstupmi. 666 00:32:23,799 --> 00:32:26,090 Takže nie je málo bielej obrazovka ako na Save blok má. 667 00:32:26,090 --> 00:32:28,590 >> Len hovorím, hej, počítač, dajte mi reťazec. 668 00:32:28,590 --> 00:32:31,390 Znamienko rovnosti nie je naozaj znamienko rovnosti, samy o sebe. 669 00:32:31,390 --> 00:32:33,790 Je to úloha operátor, čo znamená, 670 00:32:33,790 --> 00:32:37,860 hej, počítač, posunúť hodnotu Z pravej strany smerom doľava. 671 00:32:37,860 --> 00:32:40,480 A v ľavej strany, mám nasledujúce. 672 00:32:40,480 --> 00:32:43,580 >> Hej, počítač, daj mi string-- postupnosť znakov. 673 00:32:43,580 --> 00:32:45,637 A volať, že String Name. 674 00:32:45,637 --> 00:32:47,220 A ja nemajú ani hovoriť Name. 675 00:32:47,220 --> 00:32:49,970 >> Aj to mohol zavolať, konvenčne, niečo ako S, 676 00:32:49,970 --> 00:32:52,900 rovnako ako sme použili aj na volať premenné i. 677 00:32:52,900 --> 00:32:54,829 Ale teraz musím niečo urobiť s ním. 678 00:32:54,829 --> 00:32:57,370 To by bolo dosť hlúpe kompilácie tento kód, beh 679 00:32:57,370 --> 00:32:59,410 tento program, aj keď Začínam reťazec, 680 00:32:59,410 --> 00:33:01,580 pretože je to stále len ísť pozdraviť svet. 681 00:33:01,580 --> 00:33:06,140 >> Ale čo keď chcem to zmeniť. 682 00:33:06,140 --> 00:33:07,940 Prečo to mám urobiť? 683 00:33:07,940 --> 00:33:11,632 Percento s, čiarka s. 684 00:33:11,632 --> 00:33:13,090 A to je ešte trochu záhadná. 685 00:33:13,090 --> 00:33:15,560 >> Takže mi dovoľte, aby sa moje premenné jasnejšie. 686 00:33:15,560 --> 00:33:17,510 Dovoľte mi, aby som pomenovať tento názov premennej. 687 00:33:17,510 --> 00:33:20,230 A uvidíme, či nemôžeme dráždiť okrem toho, čo sa tu deje. 688 00:33:20,230 --> 00:33:22,770 >> Takže na linke päť, ja začínam reťazec. 689 00:33:22,770 --> 00:33:25,620 A ja ukladanie tento reťazec, bez ohľadu na užívateľ zadal 690 00:33:25,620 --> 00:33:28,430 na svojej klávesnici, v premennej nazvanej názve. 691 00:33:28,430 --> 00:33:30,590 A ukázalo sa, že printf nie je len 692 00:33:30,590 --> 00:33:34,220 trvať jeden argument v dvojlôžkových citáty, jeden vstup do úvodzoviek. 693 00:33:34,220 --> 00:33:39,100 >> To môže trvať dva alebo tri, alebo viac, napríklad že druhý, alebo tretí, alebo štvrtý, 694 00:33:39,100 --> 00:33:42,320 sú všetky názvy premenných, alebo špecificky váži, 695 00:33:42,320 --> 00:33:48,610 ktorý chcete zapojiť do, dynamicky, že reťazec v úvodzovkách. 696 00:33:48,610 --> 00:33:52,110 Inými slovami, to, čo by bolo zlé? 697 00:33:52,110 --> 00:33:57,920 Keby som len pozdravil meno, lomítko n, mi zachránil súbor, zostavil môj kód, 698 00:33:57,920 --> 00:34:01,660 a bežal to, čo by sa stalo? 699 00:34:01,660 --> 00:34:05,139 >> Je to jednoducho nepovie, ahoj pomenovať, doslova N-A-M-E, 700 00:34:05,139 --> 00:34:07,900 čo je tak trochu hlúpy, pretože to nijako nelíši od sveta. 701 00:34:07,900 --> 00:34:10,400 Takže niečo v úvodzovkách je čo doslova sa vytlačí. 702 00:34:10,400 --> 00:34:12,520 Takže ak chcem mať zástupný tam, 703 00:34:12,520 --> 00:34:14,422 Ja vlastne nutné použiť niektoré špeciálne syntaxe. 704 00:34:14,422 --> 00:34:17,380 A ukázalo sa, ak si prečítať Dokumentácia pre funkciu printf, 705 00:34:17,380 --> 00:34:21,320 to vám povie, že Ak používate percent ov, 706 00:34:21,320 --> 00:34:23,920 môžete nahradiť hodnotu nasledujúcim spôsobom. 707 00:34:23,920 --> 00:34:27,190 >> Po čiarkou po tom dvojité úvodzovky, stačí 708 00:34:27,190 --> 00:34:29,179 zapísať na meno premenná, ktorá chcete 709 00:34:29,179 --> 00:34:33,790 zapojiť do tohto formátu kódu alebo Špecifikátor formátu, 710 00:34:33,790 --> 00:34:35,469 percentá s pre sláčiky. 711 00:34:35,469 --> 00:34:39,190 A teraz, či som zachránil svoj súbor, Idem späť do môjho terminálu. 712 00:34:39,190 --> 00:34:42,870 A píšem Urobiť reťazec, pretože, opäť, názov tejto 713 00:34:42,870 --> 00:34:45,510 Súbor, ktorý som si vybrala, než bude string.c. 714 00:34:45,510 --> 00:34:48,510 >> Tak som chcel povedať Urobiť reťazec, vstúpiť. 715 00:34:48,510 --> 00:34:51,550 Ach môj bože, pozrite sa na všetky chyby sme urobili už. 716 00:34:51,550 --> 00:34:55,540 A to je-- to, čo je to naozaj ako šesť, sedem riadok programu? 717 00:34:55,540 --> 00:34:57,790 Tak toto je miesto, kde to môže veľmi rýchlo získať ohromujúci. 718 00:34:57,790 --> 00:35:00,890 >> Toto okno terminálu má Teraz len vyvrhoval 719 00:35:00,890 --> 00:35:03,230 obrovské množstvo chybových správ. 720 00:35:03,230 --> 00:35:07,560 Iste, nemám väčšie chybu Správy než ja riadky kódu. 721 00:35:07,560 --> 00:35:08,680 Takže to, čo sa deje? 722 00:35:08,680 --> 00:35:10,920 >> No, najlepšie stratégie robiť kedykoľvek 723 00:35:10,920 --> 00:35:13,710 sa stretávajú drvivá zoznam chýb, ako je to, 724 00:35:13,710 --> 00:35:16,690 Je posúvať späť, pozrite sa na povel ste práve bežal, čo v mojom prípade 725 00:35:16,690 --> 00:35:18,020 je vytvoriť reťazec. 726 00:35:18,020 --> 00:35:21,630 Pozrite sa, čo robia urobil, a to, že dlhá Clang príkaz, neexistuje žiadny veľký problém. 727 00:35:21,630 --> 00:35:22,950 >> Ale červená je zlá. 728 00:35:22,950 --> 00:35:24,750 Green sa snaží byť jemný a užitočné. 729 00:35:24,750 --> 00:35:26,140 Ale je to stále zlé, v tomto prípade. 730 00:35:26,140 --> 00:35:27,510 Ale tam, kde je to zlé? 731 00:35:27,510 --> 00:35:31,450 >> String.c, linka päť, znak päť. 732 00:35:31,450 --> 00:35:32,930 Takže je to len obyčajný konvencie. 733 00:35:32,930 --> 00:35:36,060 Niečo niečo hrubého čreva znamená, Číslo linky a číslo charakter. 734 00:35:36,060 --> 00:35:41,080 Chyba, využitie nedeklarovaný Reťazec identifikátora. 735 00:35:41,080 --> 00:35:42,900 Mali ste na mysli štandardom? 736 00:35:42,900 --> 00:35:45,530 >> Takže, bohužiaľ, Clang sa snaží byť užitočný. 737 00:35:45,530 --> 00:35:46,850 Ale je to zle, v tomto prípade. 738 00:35:46,850 --> 00:35:49,350 Nie, Clang, nemal som na mysli štandardné IO. 739 00:35:49,350 --> 00:35:51,070 Myslel som, že na prvom riadku, áno. 740 00:35:51,070 --> 00:35:53,420 >> Ale linka päť Je to jeden tu. 741 00:35:53,420 --> 00:35:57,040 A Clang nie je pochopiť, S-T-R-j-n-G. 742 00:35:57,040 --> 00:36:01,490 Je to nedeklarovaný identifikátor, je Slovo to proste nikdy predtým nevidel. 743 00:36:01,490 --> 00:36:05,730 A to preto, že C, jazyk píšeme kód práve teraz, 744 00:36:05,730 --> 00:36:08,070 nemá premenné zvanej reťazca. 745 00:36:08,070 --> 00:36:11,380 >> To nie je v predvolenom nastavení podporu niečo, čo nazýva reťazec. 746 00:36:11,380 --> 00:36:16,750 To je CS50 kus žargón, ale veľmi bežné. 747 00:36:16,750 --> 00:36:18,600 Ale môžem opraviť nasledujúcim spôsobom. 748 00:36:18,600 --> 00:36:22,090 >> Mám chcete pridať jeden riadok kódu v hornej časti tohto programu, 749 00:36:22,090 --> 00:36:27,890 zahŕňajú CS50.h, čo je ďalší súbor Niekde vnútri CS50 IDE, niekde 750 00:36:27,890 --> 00:36:30,820 na pevnom disku, tak povediac, operačného systému Ubuntu 751 00:36:30,820 --> 00:36:33,590 že bežím, že je súbor, ktorý je 752 00:36:33,590 --> 00:36:38,740 bude učiť prevádzkové Systém, čo je reťazec, len 753 00:36:38,740 --> 00:36:41,930 ako štandardné IO.H je súbor v operačnom systéme, ktorý je 754 00:36:41,930 --> 00:36:44,430 bude učiť to, čo je printf. 755 00:36:44,430 --> 00:36:46,810 >> V skutočnosti by sme sa dostali veľmi podobná správa 756 00:36:46,810 --> 00:36:50,600 ak IO pripustil štandardu IO.H a snažil použiť printf. 757 00:36:50,600 --> 00:36:53,632 Takže ja idem dopredu a len prevziať kontrolu L, aby som si vyčistil obrazovku. 758 00:36:53,632 --> 00:36:56,340 Alebo môžete písať jasné a bude stačí zrušiť okno terminálu. 759 00:36:56,340 --> 00:36:58,020 Ale stále môžete posúvať späť v čase. 760 00:36:58,020 --> 00:37:01,100 >> A budem znovu spustiť Urobiť reťazec. 761 00:37:01,100 --> 00:37:03,660 Kríž prsty tentoraz Enter. 762 00:37:03,660 --> 00:37:05,380 Panebože, to fungovalo. 763 00:37:05,380 --> 00:37:09,280 to mi ukazuje dlhý záhadný povel to je tým, čo generovaná cez Clang, 764 00:37:09,280 --> 00:37:10,460 ale žiadne chybové hlásenia. 765 00:37:10,460 --> 00:37:12,460 Takže si uvedomiť, hoci môžete získať úplne 766 00:37:12,460 --> 00:37:14,480 zahltení počet chybových správ, 767 00:37:14,480 --> 00:37:17,540 že to môže byť tak nepríjemné kaskádových efekt, kedy Clang nerozumie 768 00:37:17,540 --> 00:37:19,620 Jedna vec, ktorá ju potom znamená, nerozumie ďalšie slovo, 769 00:37:19,620 --> 00:37:20,560 alebo ďalší riadok. 770 00:37:20,560 --> 00:37:22,850 A tak to proste tlmivky kódu. 771 00:37:22,850 --> 00:37:24,440 Ale oprava by mohla byť jednoduchá. 772 00:37:24,440 --> 00:37:27,822 A tak vždy zameria na Prvý riadok výstupu. 773 00:37:27,822 --> 00:37:29,530 A ak nie pochopiť, stačí sa pozrieť 774 00:37:29,530 --> 00:37:32,480 kľúčové slová, ktorá by mohla byť záchytné body, a číslo riadku, 775 00:37:32,480 --> 00:37:34,650 a charakter, ak že chyba môže byť. 776 00:37:34,650 --> 00:37:40,328 >> Teraz mi dovoľte ísť dopredu a zadajte dot lomítko, reťazec, vstúpiť. 777 00:37:40,328 --> 00:37:44,340 Hm, to nie je zdraviť nič. 778 00:37:44,340 --> 00:37:46,210 Prečo? 779 00:37:46,210 --> 00:37:48,170 No, spomínam, kde je to beží? 780 00:37:48,170 --> 00:37:53,730 >> Je to pravdepodobne uviazol v túto chvíľu v slučke, ak chcete na linke šesť, 781 00:37:53,730 --> 00:37:56,950 pretože Získať reťazec od návrhu, napísal zamestnanci CS50, 782 00:37:56,950 --> 00:38:00,350 je doslova chcel len sedieť čaká, a čaká, 783 00:38:00,350 --> 00:38:01,850 a čaká na povrázku. 784 00:38:01,850 --> 00:38:03,792 Všetko máme na mysli reťazca je vstup človeka. 785 00:38:03,792 --> 00:38:04,500 Tak viete čo? 786 00:38:04,500 --> 00:38:05,166 Nechaj ma ísť napred. 787 00:38:05,166 --> 00:38:08,704 A práve z rozmaru, dovoľte mi, aby som typ moje meno, David, vstúpiť. 788 00:38:08,704 --> 00:38:10,120 Teraz mám väčší dynamický program. 789 00:38:10,120 --> 00:38:11,240 To povedal, ahoj Dávid. 790 00:38:11,240 --> 00:38:16,280 >> Ak mám pokračovať a spustiť to znova, skúsim povedať meno Zamil, vstúpiť. 791 00:38:16,280 --> 00:38:17,940 A teraz máme dynamický program. 792 00:38:17,940 --> 00:38:19,380 Nemám pevne dané svet. 793 00:38:19,380 --> 00:38:21,760 Nemám ťažké kódované pomenovať, alebo David, alebo Zamil. 794 00:38:21,760 --> 00:38:25,350 >> Teraz je to oveľa viac ako programov Vieme, kde pokiaľ to trvať vstup, 795 00:38:25,350 --> 00:38:27,870 to produkuje trochu iný výstup. 796 00:38:27,870 --> 00:38:31,020 Teraz, to nie je najlepšia užívateľské skúsenosti, alebo UX. 797 00:38:31,020 --> 00:38:33,000 Aj spustiť program. 798 00:38:33,000 --> 00:38:35,830 >> Neviem, čo mám robiť, ak som vlastne prehliadnuť 799 00:38:35,830 --> 00:38:37,290 alebo si pamätať zdrojový kód. 800 00:38:37,290 --> 00:38:39,640 Takže poďme urobiť užívateľovi zažiť trochu lepšie 801 00:38:39,640 --> 00:38:41,240 s najjednoduchšou vecou. 802 00:38:41,240 --> 00:38:44,782 Nechaj ma ísť späť do toho Program a jednoducho povedať printf. 803 00:38:44,782 --> 00:38:48,870 >> A nechaj ma ísť dopredu a hovoriť meno, hrubého čreva, a priestor, a potom bodkočiarka. 804 00:38:48,870 --> 00:38:51,170 A len pre zábavu, nie vôľa n. 805 00:38:51,170 --> 00:38:52,980 A to je úmyselné, pretože nechcem 806 00:38:52,980 --> 00:38:54,590 výzvu pre presun na ďalší riadok. 807 00:38:54,590 --> 00:38:58,800 >> Chcem, namiesto toho, aby reťazec překompilovat svoj kód do nového stroja 808 00:38:58,800 --> 00:39:00,980 Kód bodka lomítko reťazec. 809 00:39:00,980 --> 00:39:02,460 Ach, to je oveľa krajší. 810 00:39:02,460 --> 00:39:05,780 Teraz už viem, čo vlastne počítač chce, aby som robil, dať mu meno. 811 00:39:05,780 --> 00:39:10,020 >> Takže ja idem dopredu a zadajte V Rob, vstupovať, a Dobrý deň, Rob. 812 00:39:10,020 --> 00:39:13,640 Tak, si uvedomiť, je to stále ešte na konci dňa, len deväť riadok programu. 813 00:39:13,640 --> 00:39:15,090 Ale my sme vziať tieto detské krôčiky. 814 00:39:15,090 --> 00:39:18,380 >> Písali sme o jeden riadok, s ktorými poznali, printf, hello world. 815 00:39:18,380 --> 00:39:19,980 Potom sme odstránili trochu to. 816 00:39:19,980 --> 00:39:21,560 A my skutočne použitá get reťazec. 817 00:39:21,560 --> 00:39:23,362 A my hodil túto hodnotu v premennej. 818 00:39:23,362 --> 00:39:26,070 A potom sme šli dopredu a zlepšilo ďalej s treťom riadku. 819 00:39:26,070 --> 00:39:29,220 A to iteratívny proces vypaľovacím softvérom je naozaj kľúčové. 820 00:39:29,220 --> 00:39:33,420 V CS50, av živote všeobecne, mali by ste všeobecne nie sadnúť, 821 00:39:33,420 --> 00:39:36,800 majú program na mysli, a pokúsiť písanie celá tá prekliata vec naraz. 822 00:39:36,800 --> 00:39:40,810 >> To bude nevyhnutne viesť k ceste viac chýb než my sami tu nevidel. 823 00:39:40,810 --> 00:39:44,070 Dokonca som až do dnešného dňa, neustále vykonať ďalšie hlúpe chyby, 824 00:39:44,070 --> 00:39:47,480 sú vlastne tvrdšie chyby ktoré sú ťažšie zistiť. 825 00:39:47,480 --> 00:39:52,095 Ale budete robiť ďalšie chyby tým viac riadkov kódu písať naraz. 826 00:39:52,095 --> 00:39:54,220 A tak to prax, napísať trochu kódu 827 00:39:54,220 --> 00:39:57,930 ktorý vám vyhovuje, kompiláciu to, spustite ho otestovať všeobecnejšie 828 00:39:57,930 --> 00:40:01,370 potom sa presunúť on-- tak rovnako ako my stále vrstvenie a vrstvenie minulý týždeň, 829 00:40:01,370 --> 00:40:04,190 budova z niečoho veľmi jednoduché niečo zložitejšie, 830 00:40:04,190 --> 00:40:05,200 to isté tu. 831 00:40:05,200 --> 00:40:08,500 Nesadajte, a pokúsiť sa napísať celý problém. 832 00:40:08,500 --> 00:40:10,780 V skutočnosti vziať tieto detské krôčiky. 833 00:40:10,780 --> 00:40:15,100 >> Teraz, reťazce nie sú všetky že užitočné sami sebe. 834 00:40:15,100 --> 00:40:18,210 Mali by sme v skutočnosti, v ideálnom prípade, rovnako ako na majú v našom súbore nástrojov niečo iné. 835 00:40:18,210 --> 00:40:20,990 Takže poďme vlastne robiť presne to. 836 00:40:20,990 --> 00:40:24,900 >> Nechaj ma ísť dopredu a hneď vybičovať trochu iný program. 837 00:40:24,900 --> 00:40:28,320 A budeme nazývať int.c, na celé číslo. 838 00:40:28,320 --> 00:40:30,870 Chystám sa, podobne, patrí CS550.h. 839 00:40:30,870 --> 00:40:33,060 Idem obsahovať štandardné IO. 840 00:40:33,060 --> 00:40:36,630 A to bude celkom obyčajný V týchto prvých dňoch triedy. 841 00:40:36,630 --> 00:40:39,050 >> A budem pripravený Sám s hlavnou funkciou. 842 00:40:39,050 --> 00:40:43,370 A teraz namiesto toho, ako sa dostať reťazec, Poďme ďalej a dostať int. 843 00:40:43,370 --> 00:40:49,285 Nazvime to aj, a volať to dostať int, úzkym parens, bodkočiarka. 844 00:40:49,285 --> 00:40:51,410 A teraz poďme robiť niečo s tým, printf. 845 00:40:51,410 --> 00:40:56,190 >> Povedzme, že niečo podobné Dobrý deň, lomítko n, čiarka i. 846 00:40:56,190 --> 00:41:00,010 Takže som celkom veľa napodobňovanie čo som urobil pred chvíľou. 847 00:41:00,010 --> 00:41:01,660 Mám zástupný tu. 848 00:41:01,660 --> 00:41:05,150 Som čiarkou aj tu, pretože chcem, zapojiť aj do tohto zástupného symbolu. 849 00:41:05,150 --> 00:41:07,250 >> Tak poďme do toho a skúste zostavovaní tohto programu. 850 00:41:07,250 --> 00:41:10,060 Súbor sa nazýva int.c. 851 00:41:10,060 --> 00:41:12,920 Tak som chcel povedať, aby int, vstúpiť. 852 00:41:12,920 --> 00:41:16,420 Ach môj bože, ale žiadny veľký problém, že jo? 853 00:41:16,420 --> 00:41:17,230 Tam je chyba. 854 00:41:17,230 --> 00:41:19,810 >> K dispozícii je syntaktická chyba Tu taká, že program nemôže 855 00:41:19,810 --> 00:41:25,460 byť zostavené vnútri int.c, riadok sedemmiestne 27 formátu, chyba 856 00:41:25,460 --> 00:41:28,400 špecifikuje typ char hviezda, čo to je. 857 00:41:28,400 --> 00:41:30,020 Ale typ argument je int. 858 00:41:30,020 --> 00:41:33,110 >> Takže aj tu nebudeme to-- aj keď dnes je veľa materiálu, 859 00:41:33,110 --> 00:41:35,710 budeme vás zahltiť úplne každý rys C, 860 00:41:35,710 --> 00:41:38,070 a programovanie všeobecnejšie V práve týchto prvých niekoľkých týždňov. 861 00:41:38,070 --> 00:41:40,400 Takže tam je často bude žargónu s ktorými nie ste oboznámení. 862 00:41:40,400 --> 00:41:43,350 A v skutočnosti, char hviezda je niečo ideme vrátiť do 863 00:41:43,350 --> 00:41:44,830 za týždeň až dva roky. 864 00:41:44,830 --> 00:41:47,530 >> Ale teraz uvidíme, či môžeme analyzovať slová, ktoré sú oboznámení. 865 00:41:47,530 --> 00:41:50,750 Formáty-- takže sme počuli formát projektant formát kódu predtým. 866 00:41:50,750 --> 00:41:51,840 To je oboznámený. 867 00:41:51,840 --> 00:41:53,840 Type-- ale argument typu int. 868 00:41:53,840 --> 00:41:55,980 Počkaj chvíľu, ja ich int. 869 00:41:55,980 --> 00:41:59,230 >> Možno percent to vlastne má nejaký uvedený význam. 870 00:41:59,230 --> 00:42:00,230 A naozaj, to robí. 871 00:42:00,230 --> 00:42:03,101 Celé číslo, ak chcete printf ho nahradiť, 872 00:42:03,101 --> 00:42:05,350 ste skutočne musieť použiť odlišný formát Špecifikátor. 873 00:42:05,350 --> 00:42:06,890 A vy by ste to nevedel Ak vám niekto povedal, 874 00:42:06,890 --> 00:42:07,973 alebo ste mali to urobil predtým. 875 00:42:07,973 --> 00:42:10,490 Ale percent i je čo môžu byť bežne používané 876 00:42:10,490 --> 00:42:12,240 V printf pre pripájanie celé číslo. 877 00:42:12,240 --> 00:42:14,920 Môžete tiež použiť percent d na desiatkové celé číslo. 878 00:42:14,920 --> 00:42:16,490 Ale ja ich pekný a jednoduchý tu. 879 00:42:16,490 --> 00:42:17,590 Takže pôjdeme s tým. 880 00:42:17,590 --> 00:42:21,160 >> Teraz mi dovoľte ísť dopredu a opakovanie make int, Enter. 881 00:42:21,160 --> 00:42:23,328 To je dobre, žiadne chyby. 882 00:42:23,328 --> 00:42:27,260 Dot lomítko int-- OK, zlé užívateľské skúsenosti, pretože som sa sám povedal, 883 00:42:27,260 --> 00:42:27,760 čo robiť. 884 00:42:27,760 --> 00:42:28,426 Ale to je v poriadku. 885 00:42:28,426 --> 00:42:29,480 Som na lov rýchlo. 886 00:42:29,480 --> 00:42:36,260 >> A teraz nechaj ma ísť dopredu a zadajte Davida, OK, Zamil, Robe. 887 00:42:36,260 --> 00:42:37,820 OK, takže to je dobrá vec. 888 00:42:37,820 --> 00:42:41,710 Tentokrát som pomocou funkcie, puzzle kus, nazvaný get int. 889 00:42:41,710 --> 00:42:44,230 A ukázalo sa out-- a my pozri neskôr v term-- 890 00:42:44,230 --> 00:42:47,730 personál CS50 zaviedla sa reťazec, takým spôsobom, 891 00:42:47,730 --> 00:42:50,350 že bude iba fyzikálno získať reťazec pre vás. 892 00:42:50,350 --> 00:42:54,340 >> Že vykonal get int takým spôsobom, že to bude len 893 00:42:54,340 --> 00:42:55,590 získať číslo pre vás. 894 00:42:55,590 --> 00:42:57,830 A ak vás, človek, nespolupracujú, je to 895 00:42:57,830 --> 00:43:00,590 doslova len tak hovoria opakovať, opakovať, opakovanie, 896 00:43:00,590 --> 00:43:05,200 Doslova tam sedí slučky, kým budete zaviazať s nejakým magickým číslom, 897 00:43:05,200 --> 00:43:07,670 ako je 50 ° C a 50 Dobrý deň. 898 00:43:07,670 --> 00:43:11,440 >> Alebo keď narazíme to znova a zadajte 42, ahoj 42. 899 00:43:11,440 --> 00:43:15,750 A tak sa funkcie get int Vnútri tejto skladačky 900 00:43:15,750 --> 00:43:19,050 je dosť logické, dosť myšlienka, prísť na to, čo je to slovo? 901 00:43:19,050 --> 00:43:20,330 A čo je to číslo? 902 00:43:20,330 --> 00:43:23,165 Iba prijatie, nakoniec aj čísla. 903 00:43:23,165 --> 00:43:25,690 904 00:43:25,690 --> 00:43:30,230 >> Tak to dopadá, že toto nie je všetko, že expresívne. 905 00:43:30,230 --> 00:43:30,910 tak ďaleko. 906 00:43:30,910 --> 00:43:33,690 Takže hurá, naposledy sme šlo celkom rýchlo 907 00:43:33,690 --> 00:43:38,320 do vykonávacích hier a animácií, a umeleckých diel v nuly. 908 00:43:38,320 --> 00:43:42,260 A tu sme, že obsah s Hello World, a privítajte 50. 909 00:43:42,260 --> 00:43:43,696 >> To nie je všetko, čo inšpiratívne. 910 00:43:43,696 --> 00:43:46,070 A skutočne, títo prvý pár Príklady bude trvať nejaký čas 911 00:43:46,070 --> 00:43:47,510 rozbehnúť vzrušením. 912 00:43:47,510 --> 00:43:49,854 Ale máme oveľa viac ovládať sa v skutočnosti. 913 00:43:49,854 --> 00:43:51,770 A budeme veľmi rýchlo začať vrstvenie 914 00:43:51,770 --> 00:43:53,870 v hornej časti týchto základných tvary. 915 00:43:53,870 --> 00:43:56,370 >> Ale prvé, poďme rozumieť aké sú obmedzenia. 916 00:43:56,370 --> 00:43:58,620 V skutočnosti, jednou z vecí, Scratch nie je ľahké 917 00:43:58,620 --> 00:44:00,990 robme naozaj vyzerať pod kapotou 918 00:44:00,990 --> 00:44:03,740 a pochopiť, čo je to Počítač je, čo to môže robiť, 919 00:44:03,740 --> 00:44:05,250 a aké sú jeho obmedzenia. 920 00:44:05,250 --> 00:44:08,580 A naozaj, že nedostatok porozumenie, potenciálne dlhodobý 921 00:44:08,580 --> 00:44:12,520 môže viesť k nášmu vlastnému písanie mistakes-- chyby, písanie nezabezpečeného softvéru, ktorý 922 00:44:12,520 --> 00:44:13,880 dostane hacknut nejakým spôsobom. 923 00:44:13,880 --> 00:44:17,130 >> Takže poďme sa niektoré kroky smerom Pochopenie tohto trochu lepšie 924 00:44:17,130 --> 00:44:19,710 spôsob, povedzme, nasledujúci príklad. 925 00:44:19,710 --> 00:44:23,550 Chystám sa ísť dopredu a realizovať real rýchly program s názvom vretenica. 926 00:44:23,550 --> 00:44:25,134 Rovnako ako, povedzme, pridať nejaké čísla dohromady. 927 00:44:25,134 --> 00:44:27,800 A idem ku kódu niektoré rohy tu, a len kopírovať a vkladať 928 00:44:27,800 --> 00:44:30,270 kde som bol predtým, len takže môžeme ísť skôr. 929 00:44:30,270 --> 00:44:33,090 Takže teraz mám základné začiatky z programu s názvom vretenica. 930 00:44:33,090 --> 00:44:34,670 >> A poďme do toho a to dosiahnuť. 931 00:44:34,670 --> 00:44:38,680 Chystám sa ísť dopredu a povedzme, intx dostane dostať int. 932 00:44:38,680 --> 00:44:39,430 A viete čo? 933 00:44:39,430 --> 00:44:40,990 Poďme urobiť lepšiu užívateľskú skúsenosť. 934 00:44:40,990 --> 00:44:45,740 >> Takže povedzme x a účinne vyzve užívateľa, aby nám x. 935 00:44:45,740 --> 00:44:50,600 A nechajte ma ísť dopredu a hovoriť, printf ako sa o y je tentoraz čaká 936 00:44:50,600 --> 00:44:53,140 dve hodnoty od užívateľa. 937 00:44:53,140 --> 00:44:59,759 A potom poďme jednoducho ísť dopredu a povedzme, printf súčet x a y je. 938 00:44:59,759 --> 00:45:01,300 A teraz nechcem robiť percent ov. 939 00:45:01,300 --> 00:45:09,080 Chcem robiť percent i, lomítko n, a potom pripojte súčet hodnoty. 940 00:45:09,080 --> 00:45:10,620 >> Tak ako môžem ísť asi robí? 941 00:45:10,620 --> 00:45:11,270 Vieš čo? 942 00:45:11,270 --> 00:45:12,840 Viem, ako používať premenné. 943 00:45:12,840 --> 00:45:15,140 Nechaj ma vyhlásiť novú, int Z. 944 00:45:15,140 --> 00:45:16,770 >> A budem hádať tu. 945 00:45:16,770 --> 00:45:21,470 Ak nie sú rovné v tom znamenie jazyk, možno môžem jednoducho X plus y, 946 00:45:21,470 --> 00:45:23,660 tak dlho, ako som skončiť môj Myslel s bodkočiarkou? 947 00:45:23,660 --> 00:45:28,170 Teraz sa môžem vrátiť tu dole, zapojte do Z, dokončiť túto myšlienku sa bodkočiarkou. 948 00:45:28,170 --> 00:45:33,160 A pozrime sa teraz, ak tieto Sekvencia lines-- x je dostať int. 949 00:45:33,160 --> 00:45:34,770 Y je dostať int. 950 00:45:34,770 --> 00:45:37,980 >> Pridajte x a y, ukladať hodnotu v Z- tak opäť spomenúť na znamienko rovnosti 951 00:45:37,980 --> 00:45:38,560 nerovná. 952 00:45:38,560 --> 00:45:41,100 Je to úloha sprava doľava. 953 00:45:41,100 --> 00:45:45,180 A poďme vytlačiť že súčet z X a Y nie je doslova z, 954 00:45:45,180 --> 00:45:46,830 ale to, čo je vo vnútri z. 955 00:45:46,830 --> 00:45:50,090 Takže poďme urobiť zmije - pekné, žiadne chyby tomto okamihu. 956 00:45:50,090 --> 00:45:53,030 Dot lomítko zmija, vstupovať, x bude 1. 957 00:45:53,030 --> 00:45:55,380 >> Y bude 2. 958 00:45:55,380 --> 00:45:58,964 A súčet x a y je 3. 959 00:45:58,964 --> 00:46:00,130 Takže to je všetko v poriadku a dobre. 960 00:46:00,130 --> 00:46:03,260 >> Takže by ste si predstaviť, že matematiku by mal pracovať v programe, ako je tento. 961 00:46:03,260 --> 00:46:04,040 Ale viete čo? 962 00:46:04,040 --> 00:46:06,904 Je táto premenná, riadok 12, dokonca nevyhnutné? 963 00:46:06,904 --> 00:46:09,820 Nemusíte sa dostať vo zvyku púheho ukladanie vecí do premenných 964 00:46:09,820 --> 00:46:10,980 len preto, že je to možné. 965 00:46:10,980 --> 00:46:13,550 A v skutočnosti, to je všeobecne považované za zlé konštrukcia 966 00:46:13,550 --> 00:46:18,100 Ak vytvárate premennú, nazvaný z v tomto prípade niečo, čo v ňom skladovania, 967 00:46:18,100 --> 00:46:21,390 a potom hneď ju používať, ale nikdy znova. 968 00:46:21,390 --> 00:46:24,700 Prečo niečo dať názov rovnako ako z Ak ste doslova 969 00:46:24,700 --> 00:46:26,770 bude používať, že to len raz, a to 970 00:46:26,770 --> 00:46:29,380 proximálnej k miestu, kde ste vytvorili sa v prvom rade, 971 00:46:29,380 --> 00:46:31,052 tak blízko, pokiaľ ide o riadkov kódu? 972 00:46:31,052 --> 00:46:31,760 Tak viete čo? 973 00:46:31,760 --> 00:46:34,480 Ukazuje sa, že C je dosť flexibilná. 974 00:46:34,480 --> 00:46:36,586 Keby som skutočne chcú plug-in hodnotách tu, 975 00:46:36,586 --> 00:46:38,210 Nepotrebujem vyhlásiť novú premennú. 976 00:46:38,210 --> 00:46:41,680 Mohol by som plug-in X plus y, pretože C rozumie 977 00:46:41,680 --> 00:46:43,390 aritmetika a matematické operátory. 978 00:46:43,390 --> 00:46:47,140 >> Takže môžem jednoducho povedať, robiť túto matematiku, x a y, či už tieto hodnoty, 979 00:46:47,140 --> 00:46:50,780 zástrčka výsledný integer do tohto reťazca. 980 00:46:50,780 --> 00:46:53,730 Takže by to mohlo byť, hoci iba jeden riadok kratšie, 981 00:46:53,730 --> 00:46:58,480 lepší dizajn, lepší program pretože tam je menej kódu, a preto 982 00:46:58,480 --> 00:46:59,921 menej pre mňa pochopiť. 983 00:46:59,921 --> 00:47:01,920 A je to tiež len čistejšie, ak nie sme 984 00:47:01,920 --> 00:47:04,620 zavádzanie nových slov, nové symboly, rovnako ako z, 985 00:47:04,620 --> 00:47:07,510 aj keď nie v skutočnosti slúži veľký účel. 986 00:47:07,510 --> 00:47:12,890 >> Bohužiaľ, matematika nie je všetci, že spoľahlivé niekedy. 987 00:47:12,890 --> 00:47:15,270 Poďme ďalej a to urobiť. 988 00:47:15,270 --> 00:47:18,200 Chystám sa pokračovať Teraz a vykonajte nasledujúce. 989 00:47:18,200 --> 00:47:27,650 >> Urobme printf, percento aj plus percentá Aj bude percenta aj, n lomka. 990 00:47:27,650 --> 00:47:32,240 A ja urobím tohle-- xyx navyše y. 991 00:47:32,240 --> 00:47:34,821 Takže som jednoducho ísť prepísať to trochu inak tu. 992 00:47:34,821 --> 00:47:36,320 Nechaj ma to jednoducho urobiť rýchlu kontrolu zdravý rozum. 993 00:47:36,320 --> 00:47:37,986 Opäť platí, poďme sa dostať pred seba. 994 00:47:37,986 --> 00:47:41,420 Urobiť sčítačka, bodka lomítko výbavu. 995 00:47:41,420 --> 00:47:44,950 x je 1, y je 2, 1 a 2 je 3. 996 00:47:44,950 --> 00:47:45,870 Tak to je dobre. 997 00:47:45,870 --> 00:47:49,060 Ale poďme skomplikovať to teraz bit, a vytvoriť nový súbor. 998 00:47:49,060 --> 00:47:53,350 >> Idem volať tento jeden, hovoria, ints, množné číslo pre celé čísla. 999 00:47:53,350 --> 00:47:55,980 Začnime, kde som bol pred chvíľou. 1000 00:47:55,980 --> 00:47:57,770 Ale teraz poďme urobiť niekoľko ďalších riadkov. 1001 00:47:57,770 --> 00:48:03,430 Nechaj ma ísť dopredu a urobiť nasledovné, printf, percento aj, mínus percenta i, 1002 00:48:03,430 --> 00:48:08,959 Je percenta aj, čiarka x, čiarka yx mínus y. 1003 00:48:08,959 --> 00:48:10,750 Tak som niečo robiť iná matematika tam. 1004 00:48:10,750 --> 00:48:11,624 Urobme ešte jeden. 1005 00:48:11,624 --> 00:48:16,610 Takže percent aj časy percent i je aj percento, lomítko n. 1006 00:48:16,610 --> 00:48:21,430 Poďme plug-in x a y a x y časy. 1007 00:48:21,430 --> 00:48:24,530 Budeme použiť hviezdičku na počítač pre časy. 1008 00:48:24,530 --> 00:48:26,390 >> Nepoužívať x. x je názov premennej tu. 1009 00:48:26,390 --> 00:48:28,270 Môžete použiť hviezda pre násobenie. 1010 00:48:28,270 --> 00:48:29,020 Urobme ešte jeden. 1011 00:48:29,020 --> 00:48:34,580 Printf percenta I, rozdelených podľa percent I sa percento aj, 1012 00:48:34,580 --> 00:48:40,460 lomítko n. xy deleno y- takže môžete použiť lomítko v jazyku C 1013 00:48:40,460 --> 00:48:41,502 robiť divízie. 1014 00:48:41,502 --> 00:48:42,460 A ideme na jednu ďalšiu. 1015 00:48:42,460 --> 00:48:47,920 1016 00:48:47,920 --> 00:48:55,240 Zostávajúce percentá I, rozdelených podľa percent Aj, sa percento aj. 1017 00:48:55,240 --> 00:48:59,550 xy-- a teraz zvyšok je to, čo zostane. 1018 00:48:59,550 --> 00:49:02,980 Pri pokuse rozdelením menovateľa do čitateľa, 1019 00:49:02,980 --> 00:49:05,570 koľko zostane, že ste nemohli rozdeliť von? 1020 00:49:05,570 --> 00:49:07,910 >> Takže tam nie je naozaj, nevyhnutne, symbol 1021 00:49:07,910 --> 00:49:09,470 sme použili na základnej škole za to. 1022 00:49:09,470 --> 00:49:13,830 Ale tam v C. Môžete hovoriť x modulo y, kde 1023 00:49:13,830 --> 00:49:18,000 Tento znak percenta v tomto context-- zavádzajúcim spôsobom, keď ste vo vnútri 1024 00:49:18,000 --> 00:49:20,170 z úvodzoviek, Vnútri printf, percentá 1025 00:49:20,170 --> 00:49:21,830 sa používa ako Špecifikátor formáte. 1026 00:49:21,830 --> 00:49:25,420 >> Ak použijete percent mimo že matematický výraz, 1027 00:49:25,420 --> 00:49:29,910 je to operátor modulo pre modulárne arithmetic-- pre naše účely 1028 00:49:29,910 --> 00:49:33,650 tu, jednoducho znamená, aká je Zvyšok x delené y? 1029 00:49:33,650 --> 00:49:36,130 Takže x delené y je x lomka y. 1030 00:49:36,130 --> 00:49:38,220 Aký je zvyšok x delené y? 1031 00:49:38,220 --> 00:49:41,780 Je x mod y, čo by programátor povedať. 1032 00:49:41,780 --> 00:49:48,300 >> Takže keď som sa žiadne chyby tu, dovoľte mi, aby som pokračovať a robiť ints, množné číslo, pekný, 1033 00:49:48,300 --> 00:49:50,010 a bodka Slash ints. 1034 00:49:50,010 --> 00:49:55,270 A poďme do toho a áno, povedzme, 1, 10. 1035 00:49:55,270 --> 00:49:58,390 Dobre, 1 plus 10 je 11, kontrola. 1036 00:49:58,390 --> 00:50:01,240 1 mínus 10 je negatívny 9, skontrolovať. 1037 00:50:01,240 --> 00:50:03,420 >> 1 krát 10 je 10, kontrola. 1038 00:50:03,420 --> 00:50:07,090 1 delené 10 je-- OK, budeme preskočiť, že jeden. 1039 00:50:07,090 --> 00:50:09,480 Zostávajúca časť 1 deleno 10 je 1. 1040 00:50:09,480 --> 00:50:10,680 To je správne. 1041 00:50:10,680 --> 00:50:12,630 Ale je tu chyba tu. 1042 00:50:12,630 --> 00:50:15,390 >> Takže ten, ktorý som dal môj odovzdať, nie je správne. 1043 00:50:15,390 --> 00:50:16,670 Myslím, že je to blízko do 0 ° C. 1044 00:50:16,670 --> 00:50:20,670 1 delené 10, viete, keď sme rezanie niektoré rohy, iste, je to nula. 1045 00:50:20,670 --> 00:50:28,050 Ale to by malo byť naozaj 1/10, 0,1, alebo 0,10, 0,1000, a tak ďalej. 1046 00:50:28,050 --> 00:50:30,600 >> To by nemalo byť naozaj nulový. 1047 00:50:30,600 --> 00:50:35,990 No, ukázalo sa, že je počítač robí doslova to, čo sme to oznámili robiť. 1048 00:50:35,990 --> 00:50:39,460 Robíme matematiku ako x delené y. 1049 00:50:39,460 --> 00:50:44,680 A obaja x a y, za riadky kódu skôr, sú celé čísla. 1050 00:50:44,680 --> 00:50:50,440 >> Okrem toho, na riadku 15, sme hovoriť printf, hej, printf plug-in 1051 00:50:50,440 --> 00:50:54,230 celé číslo, plug-in celé číslo, plug-in s integer-- špecificky 1052 00:50:54,230 --> 00:50:57,580 x, y a potom, a potom x delené y. x a y sú ints. 1053 00:50:57,580 --> 00:50:59,060 Sme tam dobre. 1054 00:50:59,060 --> 00:51:01,250 >> Ale čo je x delené x? 1055 00:51:01,250 --> 00:51:06,790 x delené y by mali byť, matematicky, desatina, alebo 0,1, 1056 00:51:06,790 --> 00:51:11,600 čo je reálne číslo, reálne číslo majúce potenciálne desatinnú čiarku. 1057 00:51:11,600 --> 00:51:13,230 To nie je celé číslo. 1058 00:51:13,230 --> 00:51:18,290 >> Ale čo je najbližšie číslo 1/10, alebo 0,1? 1059 00:51:18,290 --> 00:51:21,114 Jo, celkom to je nula. 1060 00:51:21,114 --> 00:51:22,030 0.1 je takhle moc. 1061 00:51:22,030 --> 00:51:22,890 A 1 je to moc. 1062 00:51:22,890 --> 00:51:25,870 Takže 1/10 je bližšie k 0, než je jedna. 1063 00:51:25,870 --> 00:51:30,800 >> A tak to, čo C robí pre us-- druh, pretože sme oznámili to to-- 1064 00:51:30,800 --> 00:51:32,600 Je skracovať, že celé číslo. 1065 00:51:32,600 --> 00:51:40,540 Trvá to na hodnotu, ktorá je opäť má byť niečo ako 0,1000, 1066 00:51:40,540 --> 00:51:41,800 0, a tak ďalej. 1067 00:51:41,800 --> 00:51:45,320 A to všetko skrátenie za desatinnou čiarkou 1068 00:51:45,320 --> 00:51:47,510 tak, že to všetko veci, pretože to nie je 1069 00:51:47,510 --> 00:51:51,910 zapadajú do konceptu celé číslo, ktoré je len číslo ako negatívne 1, 0, 1, 1070 00:51:51,910 --> 00:51:55,830 hore a dole, to všetko odhodí za desatinnou čiarkou, pretože ste 1071 00:51:55,830 --> 00:51:59,020 nezmestí desatinnú čiarku V celej číslo podľa definície. 1072 00:51:59,020 --> 00:52:01,290 >> Takže odpoveď je tu nulová. 1073 00:52:01,290 --> 00:52:02,600 Tak ako opraviť? 1074 00:52:02,600 --> 00:52:04,400 Musíme iné riešenie dohromady. 1075 00:52:04,400 --> 00:52:06,880 A môžeme to urobiť, a to nasledovne. 1076 00:52:06,880 --> 00:52:12,820 >> Nechaj ma ísť dopredu a vytvoriť novú Súbor, tentoraz s názvom floats.c. 1077 00:52:12,820 --> 00:52:16,500 A uložiť ho tu v Rovnaký adresár, float.c. 1078 00:52:16,500 --> 00:52:19,360 1079 00:52:19,360 --> 00:52:23,260 A nechaj ma ísť dopredu a kopírovanie niektoré z týchto kódu z skôr. 1080 00:52:23,260 --> 00:52:27,690 >> Ale namiesto toho, ako sa dostať int, ideme na to. 1081 00:52:27,690 --> 00:52:31,037 Daj mi plávajúce bodovú hodnotu s názvom x. kde s pohyblivou rádovou čiarkou 1082 00:52:31,037 --> 00:52:33,370 Hodnota je len doslovne niečo s plávajúcou desatinnou čiarkou. 1083 00:52:33,370 --> 00:52:34,410 Môže sa pohybovať doľava, doprava. 1084 00:52:34,410 --> 00:52:35,530 Je to reálne číslo. 1085 00:52:35,530 --> 00:52:38,050 >> A dovoľte mi hovoria nie dostať int, ale dostať sa plávať, 1086 00:52:38,050 --> 00:52:41,420 ktorý bol tiež medzi ponuke možností v knižnici C250. 1087 00:52:41,420 --> 00:52:43,220 Zmeňme r na hotovosť. 1088 00:52:43,220 --> 00:52:45,000 Takže to bude mať float. 1089 00:52:45,000 --> 00:52:47,620 >> A teraz nechceme pripojiť ints. 1090 00:52:47,620 --> 00:52:53,130 Ukazuje sa, že musíme použiť percenta f pre float, percento f pre float, 1091 00:52:53,130 --> 00:52:54,560 a teraz ho uložiť. 1092 00:52:54,560 --> 00:53:01,220 A teraz, palce, aby plaváky, pekné, dot lomítko plaváky. 1093 00:53:01,220 --> 00:53:04,280 x bude jeden 1. y Bude 10 znova. 1094 00:53:04,280 --> 00:53:08,240 >> A, pekný, OK môj prírastok je správny. 1095 00:53:08,240 --> 00:53:10,240 Dúfal som, že po dobu dlhšiu, ale zabudol som to napísať. 1096 00:53:10,240 --> 00:53:13,250 Takže poďme a opraviť túto logickú chybu. 1097 00:53:13,250 --> 00:53:16,280 >> Poďme ďalej a chytiť nasledujúce. 1098 00:53:16,280 --> 00:53:18,080 Budeme jednoducho trochu kopírovať a vložiť. 1099 00:53:18,080 --> 00:53:20,080 A budem hovoriť mínus. 1100 00:53:20,080 --> 00:53:21,890 >> A budem hovoriť krát. 1101 00:53:21,890 --> 00:53:24,060 A ja chcel povedať rozdelená. 1102 00:53:24,060 --> 00:53:28,240 A ja nebudem robiť modulo, čo nie je tak Germaine tu, 1103 00:53:28,240 --> 00:53:33,690 delené f, a doba plus-- OK, poďme to urobiť znova. 1104 00:53:33,690 --> 00:53:44,210 >> Robia plaváky, bodka lomítko plaváky, a 1, 10, a-- pekný, nie, OK. 1105 00:53:44,210 --> 00:53:45,250 Takže som idiot. 1106 00:53:45,250 --> 00:53:47,000 Tak to je veľmi častý v informatike 1107 00:53:47,000 --> 00:53:49,780 robiť hlúpe chyby, ako je táto. 1108 00:53:49,780 --> 00:53:53,100 >> Na pedagogické účely, čo som naozaj chcel robiť 1109 00:53:53,100 --> 00:53:57,410 ak bola zmeniť vedu tu na plus, mínus, do doby, 1110 00:53:57,410 --> 00:54:01,140 a rozdeliť, ako vy snáď Všimol počas tohto cvičenia. 1111 00:54:01,140 --> 00:54:04,700 Takže teraz poďme re-kompilácii to Program, robiť dot lomítko plaváky. 1112 00:54:04,700 --> 00:54:07,950 >> A tretíkrát, poďme uvidíme, či to spĺňa moje očakávania. 1113 00:54:07,950 --> 00:54:21,480 1, 10, vstupovať, áno, OK, 1,000, delené 10.000, je 0,100000. 1114 00:54:21,480 --> 00:54:24,952 A ukázalo sa môžeme kontrolovať, koľko Čísla sú po tých desatinné miesta. 1115 00:54:24,952 --> 00:54:25,660 v skutočnosti budeme. 1116 00:54:25,660 --> 00:54:26,790 Vrátime sa k tomu. 1117 00:54:26,790 --> 00:54:28,440 >> Ale teraz, v skutočnosti, že matematický je správne. 1118 00:54:28,440 --> 00:54:30,090 Takže, ešte raz, čo je tu stánok s jedlom? 1119 00:54:30,090 --> 00:54:33,050 Ukazuje sa, že v C existujú nielen len strings-- a v skutočnosti, 1120 00:54:33,050 --> 00:54:36,120 nie sú v skutočnosti, pretože my pridať tie s knižnicou CS50. 1121 00:54:36,120 --> 00:54:37,710 Ale tam nie sú len ints. 1122 00:54:37,710 --> 00:54:38,990 >> K dispozícii sú aj pláva. 1123 00:54:38,990 --> 00:54:42,810 A ukázalo sa, veľa ďalších údajov Typy tiež, že budeme používať onedlho. 1124 00:54:42,810 --> 00:54:46,270 Ukázalo sa, že ak chcete jediný znak, nie reťazec znakov, 1125 00:54:46,270 --> 00:54:47,610 môžete použiť len znak. 1126 00:54:47,610 --> 00:54:52,350 >> Ukazuje sa, že ak chcete bool, logickú hodnotu pravda, alebo len nepravdivé, 1127 00:54:52,350 --> 00:54:56,840 Vďaka knižnici CS50, máme pridaný do C dátový typ bool rovnako. 1128 00:54:56,840 --> 00:54:59,180 Ale je to tiež prítomný v mnoho iných jazykov rovnako. 1129 00:54:59,180 --> 00:55:04,130 A ukázalo sa, že niekedy Potrebujete väčšie množstvo potom príde v predvolenom nastavení 1130 00:55:04,130 --> 00:55:05,210 s ints a plaváky. 1131 00:55:05,210 --> 00:55:10,590 >> A v skutočnosti, dvojitý je číslo ktorý používa nie 32 bitov, ale 64 bitov. 1132 00:55:10,590 --> 00:55:14,990 A long je číslo, ktoré používa nie 32 bitov, ale 64 bitov, 1133 00:55:14,990 --> 00:55:19,190 respektíve pre plávajúcou desatinnou čiarkou hodnoty a celé čísla, resp. 1134 00:55:19,190 --> 00:55:22,780 Tak nech to vlastne teraz vidieť v akcii. 1135 00:55:22,780 --> 00:55:26,150 >> Chystám sa pokračovať tu a vybičovať jeden iný program. 1136 00:55:26,150 --> 00:55:32,020 Tu budem pokračovať a to zahŕňa CS50.h. 1137 00:55:32,020 --> 00:55:34,910 A nechaj ma ísť, zahŕňajú štandardný IO.h. 1138 00:55:34,910 --> 00:55:37,320 >> A všimnite si niečo funky sa tu deje. 1139 00:55:37,320 --> 00:55:40,592 Nie je to farebné kódovanie veci rovnakým spôsobom, ako tomu bolo predtým. 1140 00:55:40,592 --> 00:55:43,550 A ukázalo sa, že je to preto, že som nedal tá vec názov súboru. 1141 00:55:43,550 --> 00:55:47,270 >> Idem zavolať tento sizeof.c, a udrel na Uložiť. 1142 00:55:47,270 --> 00:55:51,039 A všimnite si, čo sa stane s mojím veľmi biela kód proti tomuto čiernemu pozadia. 1143 00:55:51,039 --> 00:55:52,830 A teraz, aspon je tu niektoré fialové tam. 1144 00:55:52,830 --> 00:55:54,490 A to je syntaxe zvýraznené. 1145 00:55:54,490 --> 00:55:57,700 >> To preto, že skrátka som povedal IDE, aký typ súboru 1146 00:55:57,700 --> 00:56:01,060 je to tým, že mu meno, a špecificky príponu súboru. 1147 00:56:01,060 --> 00:56:03,620 Teraz poďme do toho a to dosiahnuť. 1148 00:56:03,620 --> 00:56:08,910 Chystám sa ísť dopredu a veľmi jednoducho vytlačiť following-- bool 1149 00:56:08,910 --> 00:56:11,080 Je percenta LU. 1150 00:56:11,080 --> 00:56:12,950 >> Vrátime sa k že za chvíľu. 1151 00:56:12,950 --> 00:56:15,840 A potom idem veľkosť tlače bool. 1152 00:56:15,840 --> 00:56:18,170 A teraz, len preto, aby ušetriť Sám nejaký čas, som 1153 00:56:18,170 --> 00:56:20,280 robiť celok banda z nich naraz. 1154 00:56:20,280 --> 00:56:24,620 A konkrétne, idem zmeniť na char a char. 1155 00:56:24,620 --> 00:56:27,760 Ten, budem meniť na dvojnásobok a double. 1156 00:56:27,760 --> 00:56:31,440 >> Ten, budem meniť s plavákom a hotovosť. 1157 00:56:31,440 --> 00:56:35,670 Ten, budem zmeniť na int a int. 1158 00:56:35,670 --> 00:56:38,660 A tento, budem Pre zmenu na long. 1159 00:56:38,660 --> 00:56:40,840 A to stále trvajú dlhá doba, dlhá dlhá. 1160 00:56:40,840 --> 00:56:44,572 >> A potom konečne som dal Sám jeden príliš veľa, reťazec. 1161 00:56:44,572 --> 00:56:47,030 Ukazuje sa, že v jazyku C, je tu špeciálny operátor nazvaný 1162 00:56:47,030 --> 00:56:50,260 veľkosť, ktorá je doslova bude pri spustení, 1163 00:56:50,260 --> 00:56:52,099 povedzte nám veľkosť každej z týchto premenných. 1164 00:56:52,099 --> 00:56:53,890 A je to spôsob, teraz môžeme pripojiť späť 1165 00:56:53,890 --> 00:56:57,140 z minulého týždňa diskusie dát a reprezentácie. 1166 00:56:57,140 --> 00:57:00,330 >> Nechaj ma ísť dopredu a kompilovať veľkosť bodového veľkosti lomítko časti. 1167 00:57:00,330 --> 00:57:01,210 A pozrime. 1168 00:57:01,210 --> 00:57:05,210 Ukazuje sa, že v jazyku C, konkrétne na CS50 IDE 1169 00:57:05,210 --> 00:57:08,170 Najmä pokiaľ ide o operačný systém Ubuntu, 1170 00:57:08,170 --> 00:57:11,100 čo je 64-bitový operačný Systém v tomto prípade 1171 00:57:11,100 --> 00:57:14,189 boolovské sa chystá iba jeden bajt priestoru. 1172 00:57:14,189 --> 00:57:16,480 To je, ako sa meria veľkosť, nie je v bitoch, ale v bytoch. 1173 00:57:16,480 --> 00:57:18,690 A pripomínajú, že jeden bajt je osem bitov. 1174 00:57:18,690 --> 00:57:22,030 Takže bool, hoci Technicky je potrebné iba 0 alebo 1, 1175 00:57:22,030 --> 00:57:24,092 je to trochu zbytočné Ako sme implementoval. 1176 00:57:24,092 --> 00:57:26,800 Je to vlastne bude používať celok byte-- takže všetky nuly, sú možno 1177 00:57:26,800 --> 00:57:31,050 všetky z nich, alebo niečo také, alebo len jeden 1 medzi osem bitov. 1178 00:57:31,050 --> 00:57:34,962 >> Char, medzitým, ktorý sa používa pre znak ako ASCII znak za minulého týždňa, 1179 00:57:34,962 --> 00:57:36,170 bude jeden znak. 1180 00:57:36,170 --> 00:57:42,340 A to synchs s našou predstavou pričom nie viac ako 256 bits-- skôr, 1181 00:57:42,340 --> 00:57:45,360 synchs sa s tým, že nie dlhší ako 8 bitov, čo 1182 00:57:45,360 --> 00:57:47,450 dáva nám toľko ako 256 hodnôt. 1183 00:57:47,450 --> 00:57:49,680 Dvojité sa chystá byť 8 bajtov alebo 64 bitov. 1184 00:57:49,680 --> 00:57:50,510 >> Plávajúce je 4. 1185 00:57:50,510 --> 00:57:51,690 Int je 4. 1186 00:57:51,690 --> 00:57:52,980 Dlhý, dlhý je 8. 1187 00:57:52,980 --> 00:57:54,716 A je reťazec 8. 1188 00:57:54,716 --> 00:57:55,840 Ale nebojte sa o tom. 1189 00:57:55,840 --> 00:57:57,340 Budeme zlúpnite túto vrstvu. 1190 00:57:57,340 --> 00:57:59,940 Ukázalo sa, že reťazce môžu byť dlhší ako 8 bajtov. 1191 00:57:59,940 --> 00:58:02,310 >> A naozaj, sme napísali struny Už hello world, 1192 00:58:02,310 --> 00:58:03,700 dlhší ako 8 bajtov. 1193 00:58:03,700 --> 00:58:06,270 Ale vrátime do že za chvíľu. 1194 00:58:06,270 --> 00:58:09,690 Ale odniesť tu je nasledujúci. 1195 00:58:09,690 --> 00:58:15,320 >> Každý počítač má len konečný množstvo pamäte a priestoru. 1196 00:58:15,320 --> 00:58:17,860 Môžete ukladať iba toľko súbory na počítači Mac alebo PC. 1197 00:58:17,860 --> 00:58:23,030 Môžete uložiť len toľko programov RAM beží naraz, nutne, a to aj 1198 00:58:23,030 --> 00:58:26,360 s virtuálnej pamäte, pretože Máte obmedzené množstvo pamäte RAM. 1199 00:58:26,360 --> 00:58:28,990 >> A len preto, aby v prípade, picture-- ste nikdy otvoril notebook 1200 00:58:28,990 --> 00:58:31,300 alebo objednať ďalšie pamäť pre počítače, 1201 00:58:31,300 --> 00:58:33,670 nemusí vedieť, že vnútri počítača 1202 00:58:33,670 --> 00:58:36,590 je niečo, čo vyzerá trochu ako je tento. 1203 00:58:36,590 --> 00:58:40,540 Takže je to len obyčajný spoločnosť s názvom Rozhodujúce, aby činí RAM pre počítače. 1204 00:58:40,540 --> 00:58:43,620 RAM je miesto, kde programy žiť, zatiaľ čo oni beží. 1205 00:58:43,620 --> 00:58:46,630 >> Takže na každom počítači Mac alebo PC pri poklepaní Kliknite na program, a to otvára, 1206 00:58:46,630 --> 00:58:48,921 a otvára nejaký dokument Word alebo nieco podobne, 1207 00:58:48,921 --> 00:58:51,764 uloží ho do pamäte dočasne RAM, pretože RAM je rýchlejší 1208 00:58:51,764 --> 00:58:53,680 ako pevný disk, alebo Váš solid state disk. 1209 00:58:53,680 --> 00:58:56,600 Takže je to práve tam, kde programy ísť žiť, keď používate, 1210 00:58:56,600 --> 00:58:58,060 alebo ak sú používané súbory. 1211 00:58:58,060 --> 00:59:00,890 >> Takže máte veci, ktoré vyzerajú takhle vnútri vášho notebooku, 1212 00:59:00,890 --> 00:59:03,320 alebo mierne väčšie veci vnútri počítača. 1213 00:59:03,320 --> 00:59:07,440 Ale kľúč je máte len konečný počet týchto vecí. 1214 00:59:07,440 --> 00:59:11,230 A je tu len obmedzené množstvo hardware sedí na tomto stole vpravo 1215 00:59:11,230 --> 00:59:11,730 tu. 1216 00:59:11,730 --> 00:59:15,920 >> Takže určite nemôžeme skladovať nekonečne dlhá čísla. 1217 00:59:15,920 --> 00:59:19,030 A napriek tomu, ak si myslíte, späť do obecná škola, koľko číslic môže 1218 00:59:19,030 --> 00:59:21,400 máte doprava o desatinnou čiarkou? 1219 00:59:21,400 --> 00:59:24,680 Keď na to príde, koľko číslic môže máte vľavo od desatinnej čiarky? 1220 00:59:24,680 --> 00:59:26,300 Naozaj, nekonečne veľa. 1221 00:59:26,300 --> 00:59:30,840 >> Teraz, my ľudia by mohol len vedieť vysloviť miliónov, 1222 00:59:30,840 --> 00:59:34,990 a miliardy, trillion, a kvadrilion a quintillion. 1223 00:59:34,990 --> 00:59:39,370 A ja posúvať hranice môjho understanding-- alebo my-- Rozumiem 1224 00:59:39,370 --> 00:59:41,110 Čísla, ale my výslovnosť čísel. 1225 00:59:41,110 --> 00:59:44,720 Ale oni môžu dostať nekonečne veľké s nekonečne veľa Číslice vľavo 1226 00:59:44,720 --> 00:59:47,050 alebo napravo od desatinnej čiarky. 1227 00:59:47,050 --> 00:59:50,040 >> Ale počítače majú iba obmedzené množstvo pamäte, 1228 00:59:50,040 --> 00:59:53,510 konečný počet tranzistorov, je konečný počet žiaroviek vnútri. 1229 00:59:53,510 --> 00:59:57,350 Takže čo sa stane, keď vám dôjdu priestoru? 1230 00:59:57,350 --> 00:59:59,620 Inými slovami, ak spomenúť na posledný týždeň 1231 00:59:59,620 --> 01:00:03,160 Keď sme hovorili o číslach samy o sebe sú zastúpené v binárnom, 1232 01:00:03,160 --> 01:00:05,480 Domnievame sa, že máme Tento 8-bitová hodnota tu. 1233 01:00:05,480 --> 01:00:08,290 >> A máme sedem 1 a jedna 0. 1234 01:00:08,290 --> 01:00:10,827 A predpokladám, že chceme pridať 1 k tejto hodnote. 1235 01:00:10,827 --> 01:00:12,410 To je naozaj veľké číslo práve teraz. 1236 01:00:12,410 --> 01:00:16,610 >> To je 254, ak si dobre spomínam matematický z minulého týždňa vpravo. 1237 01:00:16,610 --> 01:00:19,480 Ale čo keď zmením že najpravejšie 0 na 1? 1238 01:00:19,480 --> 01:00:22,800 Celé číslo, z Samozrejme, že sa stane osem 1 je. 1239 01:00:22,800 --> 01:00:24,050 Takže sme stále dobré. 1240 01:00:24,050 --> 01:00:27,204 >> A to pravdepodobne predstavuje 255, aj keď v závislosti od kontextu 1241 01:00:27,204 --> 01:00:29,120 mohlo by v skutočnosti predstavovať záporné číslo. 1242 01:00:29,120 --> 01:00:31,240 Ale o tom až inokedy. 1243 01:00:31,240 --> 01:00:34,220 Tento pocit, že to o tak vysoko, ako sa môžem spoľahnúť. 1244 01:00:34,220 --> 01:00:35,290 >> Teraz je len 8 bitov. 1245 01:00:35,290 --> 01:00:38,170 A môj Mac, určite má cestu viac ako 8 bitov pamäte. 1246 01:00:38,170 --> 01:00:39,170 Ale to predsa má konečný. 1247 01:00:39,170 --> 01:00:43,230 Takže rovnaký argument platí, aj keby sme majú viac z týchto tie na obrazovke. 1248 01:00:43,230 --> 01:00:47,020 >> Ale čo sa stane, keď ste uloženie toto číslo, 255, 1249 01:00:47,020 --> 01:00:49,290 a chcete spočítať jeden kúsok vyššie? 1250 01:00:49,290 --> 01:00:51,600 Ak chcete ísť od 255 do 256. 1251 01:00:51,600 --> 01:00:55,800 Problémom však je, že ak začína počítať od nuly, ako minulý týždeň, 1252 01:00:55,800 --> 01:00:59,670 nemôžete počítať ako s vysokým as 256, nieto 257, 1253 01:00:59,670 --> 01:01:02,584 nieto 258 m, pretože to, čo sa stane, keď pridáte 1? 1254 01:01:02,584 --> 01:01:05,000 Ak tak urobíte starú základnú školu prístup, dáte 1 tu, 1255 01:01:05,000 --> 01:01:08,150 a potom 1 plus 1 je 2, ale to je naozaj nula, môžete niesť 1, 1256 01:01:08,150 --> 01:01:09,695 niesť 1, nesú 1. 1257 01:01:09,695 --> 01:01:12,620 Všetky tieto veci, Tieto 1, prejdite na nulu. 1258 01:01:12,620 --> 01:01:17,820 A skončíš, áno, ako niekoho, poukázal na to, 1 na ľavej strane. 1259 01:01:17,820 --> 01:01:22,540 Ale všetko, čo môžete skutočne vidieť a vojde do pamäti 1260 01:01:22,540 --> 01:01:27,960 Je len osem 0 je, čo znamená, na nejakom mieste, ak vás, počítač, 1261 01:01:27,960 --> 01:01:32,490 Skúšal počítanie dostatočne vysoko, že ste bude zalomiť okolo, ako sa zdá, 1262 01:01:32,490 --> 01:01:35,850 na nulu, alebo dokonca negatívny Čísla, ktoré sú dokonca nižšie ako nula. 1263 01:01:35,850 --> 01:01:37,260 >> A môžeme trochu vidieť. 1264 01:01:37,260 --> 01:01:39,900 Nechaj ma ísť dopredu a písať skutočný rýchly programu tu. 1265 01:01:39,900 --> 01:01:43,690 Nechaj ma ísť dopredu a písať program s názvom pretečeniu. 1266 01:01:43,690 --> 01:01:49,980 Patrí CS50.h, zahŕňajú Štandardné IO.h-- oh, 1267 01:01:49,980 --> 01:01:51,730 Naozaj zmeškal zvýrazňovanie syntaxe. 1268 01:01:51,730 --> 01:01:54,440 Takže poďme uložiť ako overflow.c. 1269 01:01:54,440 --> 01:01:57,084 >> A teraz int main void-- a netrvalo dlho, zmienime 1270 01:01:57,084 --> 01:01:59,500 vrátiť sa k vysvetlením, prečo držíme písanie int main neplatné. 1271 01:01:59,500 --> 01:02:02,080 Ale teraz, nech to jednoducho urobiť to, brať to ako samozrejmosť. 1272 01:02:02,080 --> 01:02:06,200 Dajme sám int, a inicializovať ju na hodnotu 0. 1273 01:02:06,200 --> 01:02:11,716 >> Poďme potom urobiť pre int i získať zero-- v skutočnosti, poďme urobiť nekonečnú slučku 1274 01:02:11,716 --> 01:02:12,590 a uvidíme, čo sa stane. 1275 01:02:12,590 --> 01:02:22,440 Aj keď pravda, potom poďme vytlačiť n Je percenta i, n lomítko, plug-in n. 1276 01:02:22,440 --> 01:02:27,200 Ale teraz, poďme robiť n dostane n plus 1. 1277 01:02:27,200 --> 01:02:29,660 >> Takže inými slovami, na každom iterácie tohto nekonečnej slučky, 1278 01:02:29,660 --> 01:02:32,550 berme hodnotu n je, a pridať 1 k nemu, a potom 1279 01:02:32,550 --> 01:02:34,350 uloženie výsledku späť do n na ľavej strane. 1280 01:02:34,350 --> 01:02:37,150 A v skutočnosti, sme videli syntax Mierne takhle krátko. 1281 01:02:37,150 --> 01:02:39,730 Chladný trikom je namiesto písanie to všetko preč, 1282 01:02:39,730 --> 01:02:42,770 môžete skutočne povedať n a rovná1. 1283 01:02:42,770 --> 01:02:47,480 >> Alebo naozaj chcete byť fantázie, keď si, môžete povedať, n a navyše bodkočiarku. 1284 01:02:47,480 --> 01:02:50,130 Ale tieto dva posledne menovaní sú len čo by sme zavolať syntaktický cukor 1285 01:02:50,130 --> 01:02:50,790 Pre prvú vec. 1286 01:02:50,790 --> 01:02:53,456 >> Prvá vec, ktorú je jasnejšie, úplne v poriadku, úplne správne. 1287 01:02:53,456 --> 01:02:55,470 Ale to je bežnejšie, poviem. 1288 01:02:55,470 --> 01:02:57,210 Takže budeme to len na chvíľu. 1289 01:02:57,210 --> 01:03:01,685 >> Pozrime sa teraz, aby prepad, ktorý znie trochu zlovestný, dot pretečeniu lomítko. 1290 01:03:01,685 --> 01:03:04,380 1291 01:03:04,380 --> 01:03:09,852 Pozrime sa, n je stále dosť veľký. 1292 01:03:09,852 --> 01:03:11,310 Ale povedzme si, aký veľký môže dostať n? 1293 01:03:11,310 --> 01:03:12,870 >> n je int. 1294 01:03:12,870 --> 01:03:16,400 Videli sme pred chvíľou s veľkosťou Príkladom že int je štyri bajty. 1295 01:03:16,400 --> 01:03:22,070 Vieme, že od minulého týždňa, štyri byty je 32 bitov, pretože 8 krát 4, to je 32. 1296 01:03:22,070 --> 01:03:23,460 Že to bude 4 miliardy. 1297 01:03:23,460 --> 01:03:25,802 >> A my sme až 800,000. 1298 01:03:25,802 --> 01:03:28,510 To bude trvať večne počítať tak vysoko, ako som len možné. 1299 01:03:28,510 --> 01:03:30,635 Takže budem pokračovať, Ako ste si možno onedlho, 1300 01:03:30,635 --> 01:03:34,910 a stlačte Control C- povedané, Control C, veľa, kde sa vykonáva kontrola C celkovo 1301 01:03:34,910 --> 01:03:36,034 prostriedky zrušiť. 1302 01:03:36,034 --> 01:03:38,200 Bohužiaľ, pretože toto beží v cloude, 1303 01:03:38,200 --> 01:03:41,190 Niekedy oblak je pľuvať toľko vecí, 1304 01:03:41,190 --> 01:03:44,180 toľko výstup, bude to chvíľu trvať pre môj vstup 1305 01:03:44,180 --> 01:03:45,630 sa dostať do cloudu. 1306 01:03:45,630 --> 01:03:49,240 Takže aj keď som trafil Ovládacie C pred niekoľkých sekúnd, 1307 01:03:49,240 --> 01:03:53,110 je to určite bočné Účinok nekonečnej slučke. 1308 01:03:53,110 --> 01:03:56,070 >> A tak v takých prípadoch, my sme opustí to byť. 1309 01:03:56,070 --> 01:03:59,050 A budeme pridávať ďalšie okno terminálu sem 1310 01:03:59,050 --> 01:04:03,186 s plus, čo samozrejme nekladie takto, pretože je to stále myslí. 1311 01:04:03,186 --> 01:04:05,310 A poďme do toho a bude trochu rozumnejšie. 1312 01:04:05,310 --> 01:04:07,768 >> Chystám sa ísť dopredu a robiť toto len konečne mnohokrát. 1313 01:04:07,768 --> 01:04:10,047 Poďme použiť pre sláčiky, ktorý spomínal som sa skôr. 1314 01:04:10,047 --> 01:04:10,630 Poďme to urobiť. 1315 01:04:10,630 --> 01:04:13,430 Daj mi ešte premennú int aj dostane 0. 1316 01:04:13,430 --> 01:04:17,430 i je nižšia ako, povedzme, 64 i ++. 1317 01:04:17,430 --> 01:04:24,010 A teraz nechaj ma ísť dopredu a tlač out n je percento aj, n čiarka. 1318 01:04:24,010 --> 01:04:27,547 A potom n- je to stále bude trvať večne. 1319 01:04:27,547 --> 01:04:28,130 Poďme to urobiť. 1320 01:04:28,130 --> 01:04:30,620 >> n dostane n krát 2. 1321 01:04:30,620 --> 01:04:34,140 Alebo by sme mohli byť ozdobný a to časy rovná 2. 1322 01:04:34,140 --> 01:04:37,120 Ale povedzme, že n rovná samotnej krát 2. 1323 01:04:37,120 --> 01:04:39,321 Inými slovami, v tejto Nová verzia programu, 1324 01:04:39,321 --> 01:04:41,820 Ja nechcem čakať večne od podobných 800.000 až 4 miliardy. 1325 01:04:41,820 --> 01:04:43,070 Povedzme to máme za sebou. 1326 01:04:43,070 --> 01:04:44,920 >> Poďme skutočne zdvojnásobiť n zakaždým. 1327 01:04:44,920 --> 01:04:47,660 Čo, recall, je zdvojnásobenie Opakom majú, samozrejme. 1328 01:04:47,660 --> 01:04:50,035 A vzhľadom k tomu minulý týždeň máme opäť niečo, a znovu, 1329 01:04:50,035 --> 01:04:52,200 a znova, super rýchly, Zdvojnásobenie budú určite 1330 01:04:52,200 --> 01:04:58,080 dostať nás od 1 do najväčší možný hodnota, ktorú môžeme počítať, aby s int. 1331 01:04:58,080 --> 01:04:59,750 >> Takže poďme robiť presne to. 1332 01:04:59,750 --> 01:05:01,720 A vrátime sa k tomu onedlho. 1333 01:05:01,720 --> 01:05:04,180 Ale to je opäť rovnako ako opakovanie blok v Scratch. 1334 01:05:04,180 --> 01:05:05,600 A budete používať tento onedlho. 1335 01:05:05,600 --> 01:05:10,170 >> To jednoducho znamená počítať od nuly až do, ale nie rovnaké, až 64. 1336 01:05:10,170 --> 01:05:14,285 A na každom opakovaní tejto slučka, len držať postupne i. 1337 01:05:14,285 --> 01:05:18,990 Takže aj ++ - a tento všeobecný konštrukt Na riadku 7 je jednoducho super obyčajný spôsob, 1338 01:05:18,990 --> 01:05:22,290 opakujúcich sa niekoľko riadkov kód, niektorí koľkokrát. 1339 01:05:22,290 --> 01:05:23,362 Ktoré riadkov kódu? 1340 01:05:23,362 --> 01:05:25,570 Tieto zložené zátvorky, ako vy môže byť zbierané od tejto chvíle, 1341 01:05:25,570 --> 01:05:26,780 znamená, postupujte nasledovne. 1342 01:05:26,780 --> 01:05:29,510 >> Je to v ako Scratch, keď má žlté bloky 1343 01:05:29,510 --> 01:05:32,680 a iné farby, ktoré druh objatí alebo objať ďalších blokov. 1344 01:05:32,680 --> 01:05:34,750 To je to, čo ty kučeravý rovnátka sú tu. 1345 01:05:34,750 --> 01:05:40,200 Takže keď som dostal syntax right-- vás môžete vidieť symbol mrkva v C prostriedkov 1346 01:05:40,200 --> 01:05:42,706 to je koľkokrát som bol sa snaží tento problém vyriešiť. 1347 01:05:42,706 --> 01:05:45,330 Takže poďme sa zbaviť že jeden dohromady, a zavrieť to okno. 1348 01:05:45,330 --> 01:05:46,520 A budeme používať novú. 1349 01:05:46,520 --> 01:05:51,980 Urobiť prepad, dot lomítko prepad, Enter, v poriadku, 1350 01:05:51,980 --> 01:05:53,090 to vyzerá zle na prvom mieste. 1351 01:05:53,090 --> 01:05:56,200 Ale poďme posunúť späť v čase, preto, že som to urobil 64-krát. 1352 01:05:56,200 --> 01:05:58,700 >> A Všimnite si, prvýkrát, n je 1. 1353 01:05:58,700 --> 01:06:03,110 Druhýkrát, n je 2, potom 4, potom 8, potom 16. 1354 01:06:03,110 --> 01:06:09,450 A zdá sa, že akonáhle Aj dostať do zhruba miliarda, 1355 01:06:09,450 --> 01:06:12,800 či som to dvakrát znovu, že by mal mi dať 2 miliardy. 1356 01:06:12,800 --> 01:06:14,980 Ale ukazuje sa, že je to priamo na prahu. 1357 01:06:14,980 --> 01:06:18,930 >> A tak to vlastne pretečeniu int od 1 miliardu 1358 01:06:18,930 --> 01:06:23,514 zhruba negatívne 2 miliardy, pretože celé číslo, 1359 01:06:23,514 --> 01:06:25,430 Na rozdiel od čísel, ktorá máme boli za predpokladu minulý týždeň, 1360 01:06:25,430 --> 01:06:28,397 môže byť pozitívne aj negatívne v skutočnosti a v počítači. 1361 01:06:28,397 --> 01:06:30,730 A tak aspoň jeden z tých, bitov je účinne ukradnutý. 1362 01:06:30,730 --> 01:06:34,190 Takže sme naozaj len 31 bitov, alebo 2 miliardy možných hodnôt. 1363 01:06:34,190 --> 01:06:38,220 >> Ale teraz, stánok s jedlom je celkom Jednoducho povedané, bez ohľadu na tieto čísla sú 1364 01:06:38,220 --> 01:06:42,280 a to bez ohľadu na matematika, sa stane niečo zlé nakoniec, 1365 01:06:42,280 --> 01:06:46,980 pretože nakoniec sa snažíte permutáciu bitov jeden príliš mnohokrát. 1366 01:06:46,980 --> 01:06:51,060 A efektívne prejsť zo všetkých 1 je pre všetkých možná 0 je, alebo možno 1367 01:06:51,060 --> 01:06:54,260 Len nejaký iný vzor, ​​ktorý ju Je zrejmé, že v závislosti od kontextu, 1368 01:06:54,260 --> 01:06:56,342 možno interpretovať ako záporné číslo. 1369 01:06:56,342 --> 01:06:59,300 A tak by sa mohlo zdať najvyššej I môže počítať v tomto konkrétnom programe 1370 01:06:59,300 --> 01:07:01,210 Iba zhruba miliarda. 1371 01:07:01,210 --> 01:07:02,760 Ale je tu čiastočné riešenie tu. 1372 01:07:02,760 --> 01:07:03,480 Vieš čo? 1373 01:07:03,480 --> 01:07:07,600 >> Dovoľte mi, aby som menil z int k dlhej dlhé. 1374 01:07:07,600 --> 01:07:10,633 A nechaj ma ísť napred tu a say-- budem mať 1375 01:07:10,633 --> 01:07:12,290 tento stav zmeniť na unsigned long. 1376 01:07:12,290 --> 01:07:16,860 Alebo sa pozrime, nikdy Spomínam si sám. 1377 01:07:16,860 --> 01:07:19,920 >> Poďme ďalej a robiť pretečeniu. 1378 01:07:19,920 --> 01:07:21,860 Nie, to nie je ono, LLD, ďakujem. 1379 01:07:21,860 --> 01:07:23,430 Takže niekedy Clang môže byť užitočný. 1380 01:07:23,430 --> 01:07:27,550 Nepamätal som si, aký formát Špecifikátor bol na dlhú dlho. 1381 01:07:27,550 --> 01:07:28,950 >> Ale naozaj, Clang mi to povedal. 1382 01:07:28,950 --> 01:07:31,570 Green je nejaká dobrá, Stále znamená, že ste urobili chybu. 1383 01:07:31,570 --> 01:07:33,190 Je to hádať, že som mal na mysli LLD. 1384 01:07:33,190 --> 01:07:38,750 >> Tak nech mi to brať radu, dlhá dlhá desatinné číslo, okrem toho, že. 1385 01:07:38,750 --> 01:07:43,190 A dovoľte mi, aby som ju znova spustiť, dot lomítko pretečeniu, Enter. 1386 01:07:43,190 --> 01:07:45,020 A teraz, čo je v pohode, je to. 1387 01:07:45,020 --> 01:07:49,140 >> Keby som posúvať späť v čase, stále začať počítanie na rovnakej place-- 1, 2, 4, 1388 01:07:49,140 --> 01:07:50,220 8, 16. 1389 01:07:50,220 --> 01:07:54,860 Všimnite si, dostaneme všetci cesta až 1 miliardy. 1390 01:07:54,860 --> 01:07:57,070 Ale potom sme sa bezpečne dostať na 2 miliardy. 1391 01:07:57,070 --> 01:08:01,300 >> Potom sme sa dostať na 4 miliardy, potom 8000000000, 17000000000. 1392 01:08:01,300 --> 01:08:03,340 A my ísť vyššie, a vyššie a vyššie. 1393 01:08:03,340 --> 01:08:05,740 Nakoniec, aj to zlomí. 1394 01:08:05,740 --> 01:08:09,350 >> Nakoniec, s dlhou dlhá, čo je 64-bitová hodnota, nie 1395 01:08:09,350 --> 01:08:13,660 32-bitová hodnota, ak rátaš príliš vysoká, môžete zabaliť okolo 0. 1396 01:08:13,660 --> 01:08:16,410 A v tomto prípade sme sa náhodou skončiť s záporné číslo. 1397 01:08:16,410 --> 01:08:17,550 >> Takže ide o problém. 1398 01:08:17,550 --> 01:08:20,439 A ukázalo sa, že toto Problém nie je všetko, že tajomný. 1399 01:08:20,439 --> 01:08:23,060 Aj napriek tomu, že som úmyselne indukovanej to s týmito chybami, 1400 01:08:23,060 --> 01:08:26,149 to dopadá to vidíme trochu zo všetkého okolo nás, alebo aspoň niektorí z nás robiť. 1401 01:08:26,149 --> 01:08:28,939 >> Takže Lego Star Wars, ak ste niekedy hrali hru, 1402 01:08:28,939 --> 01:08:33,830 to dopadá môžete obísť lámanie, čo sa v LEGO svete, 1403 01:08:33,830 --> 01:08:36,640 a zbieranie mincí v podstate. 1404 01:08:36,640 --> 01:08:39,200 A ak ste niekedy hrali táto hra príliš veľa času, 1405 01:08:39,200 --> 01:08:42,630 ako tento nemenovaný jednotlivca tu robil, celkový počet 1406 01:08:42,630 --> 01:08:46,700 mincí, ktoré môžete zbierať znamená, že by sa mohlo zdať, 4 miliardy. 1407 01:08:46,700 --> 01:08:48,240 >> Teraz, keď je to vlastne zaoblené. 1408 01:08:48,240 --> 01:08:50,239 Takže LEGO sa snažila udržať veci užívateľsky prívetivý. 1409 01:08:50,239 --> 01:08:53,779 Oni to neurobili presne 2 až 32 výkon, za minulého týždňa. 1410 01:08:53,779 --> 01:08:55,310 Ale 4000000000 je dôvod, prečo. 1411 01:08:55,310 --> 01:08:58,979 Zdá sa, že na základe týchto informácií, že LEGO, a spoločnosť, ktorá 1412 01:08:58,979 --> 01:09:02,624 urobil toto aktuálny softvér, rozhodol že maximálny počet mincí 1413 01:09:02,624 --> 01:09:04,540 užívateľ môže hromadiť Je skutočne 4000000000, 1414 01:09:04,540 --> 01:09:12,069 pretože oni si vybrali v ich kóde na použitie nie je dlhá dlhá, zdá sa, 1415 01:09:12,069 --> 01:09:16,140 ale len celé číslo bez znamienka celé číslo, iba kladné celé číslo, ktorého 1416 01:09:16,140 --> 01:09:18,089 max hodnota je zhruba to. 1417 01:09:18,089 --> 01:09:19,380 No, tu je ďalší smiešny. 1418 01:09:19,380 --> 01:09:23,500 Takže v hre Civilization, ktorý niektorí z vás by mohol byť oboznámení s 1419 01:09:23,500 --> 01:09:26,660 Ukazuje sa, že tam pred rokmi Bola to chyba v tejto hre, pričom 1420 01:09:26,660 --> 01:09:28,750 ak ste hral úlohu Gándhího v hre, 1421 01:09:28,750 --> 01:09:34,020 namiesto neho bol veľmi pacifista, Namiesto toho bol neuveriteľne, neskutočne 1422 01:09:34,020 --> 01:09:36,399 agresívne, za určitých okolností. 1423 01:09:36,399 --> 01:09:40,529 A najmä spôsob, akým civilizácie Práca je, že ak sa hráč, 1424 01:09:40,529 --> 01:09:44,680 prijmú demokraciu, vaše agresivita skóre dostane 1425 01:09:44,680 --> 01:09:48,130 zníži o dva, takže mínus mínus, a potom mínus mínus. 1426 01:09:48,130 --> 01:09:50,569 >> Takže si odpočítať z 2 vaše skutočné Iterácie. 1427 01:09:50,569 --> 01:09:56,650 Bohužiaľ, ak vaše Iterácia je spočiatku 1, a odpočítať 2 z neho 1428 01:09:56,650 --> 01:09:59,050 po prijatí demokracie ako Gandhi tu mohlo 1429 01:09:59,050 --> 01:10:02,200 urobil, pretože bol veľmi passive-- 1 v mierke agresivity. 1430 01:10:02,200 --> 01:10:04,830 Ale keď prijme demokraciu, potom sa pohybuje od 1 do negatívnej 1. 1431 01:10:04,830 --> 01:10:11,470 >> Bohužiaľ, oni boli pomocou nepodpísané čísla, 1432 01:10:11,470 --> 01:10:15,400 čo znamená, že ošetrené dokonca záporná Čísla ako by boli pozitívne. 1433 01:10:15,400 --> 01:10:19,780 A ukázalo sa, že pozitívne ekvivalent negatívne 1, 1434 01:10:19,780 --> 01:10:23,480 v typických počítačových programov, je 255. 1435 01:10:23,480 --> 01:10:27,250 Takže ak Gandhi prijme demokracia má, a teda 1436 01:10:27,250 --> 01:10:32,470 Jeho agresivita skóre znížil, to vlastne valí okolo 255 1437 01:10:32,470 --> 01:10:35,470 a robí ho najviac agresívne charakter v hre. 1438 01:10:35,470 --> 01:10:36,930 Takže si môžete Googlu sa na to. 1439 01:10:36,930 --> 01:10:39,380 A bolo to naozaj, čo náhodná programovanie chyba, 1440 01:10:39,380 --> 01:10:43,010 ale to je celkom vstúpil ten svet od tej doby. 1441 01:10:43,010 --> 01:10:44,360 >> To je všetko zábavné a roztomilé. 1442 01:10:44,360 --> 01:10:47,760 Desivejšie je, keď skutočná reálnych zariadení, a nie hry, 1443 01:10:47,760 --> 01:10:48,820 majú tie isté chyby. 1444 01:10:48,820 --> 01:10:54,500 V skutočnosti, pred rokom prišiel článok out o Boeing 787. 1445 01:10:54,500 --> 01:10:56,850 >> A článok na prvom mieste pohľad znie trochu Arcana. 1446 01:10:56,850 --> 01:11:01,480 Ale to povedal, softvér zraniteľnosť v Boeing 1447 01:11:01,480 --> 01:11:04,790 Nová 787 Dreamliner má ísť potenciál spôsobiť pilotov 1448 01:11:04,790 --> 01:11:07,220 stratiť kontrolu lietadlo, prípadne 1449 01:11:07,220 --> 01:11:11,750 V polovici letu, úradníci FAA varoval aerolínie v poslednej dobe. 1450 01:11:11,750 --> 01:11:14,520 To bolo stanovenie že model 787 1451 01:11:14,520 --> 01:11:19,770 lietadlo, ktorý bol poháňaný nepretržite po dobu 248 dní 1452 01:11:19,770 --> 01:11:24,880 môže stratiť všetok striedavý prúd, AC, elektrickej energie v dôsledku generátora 1453 01:11:24,880 --> 01:11:28,892 Riadiace jednotky, GCUs súčasne ísť do núdzového režimu zlyhania. 1454 01:11:28,892 --> 01:11:29,850 Je to trochu ma stratí. 1455 01:11:29,850 --> 01:11:35,390 Avšak memo uviedol, OK, teraz mám, že podmienka bola spôsobená softwarom 1456 01:11:35,390 --> 01:11:38,590 proti interné riadiace generátor 1457 01:11:38,590 --> 01:11:44,860 Jednotky, ktoré pretečie po 248 dní nepretržitého výkonu. 1458 01:11:44,860 --> 01:11:47,070 Sme to vydávajúci Všimnite si, aby nedošlo k strate 1459 01:11:47,070 --> 01:11:49,300 Zo všetkého striedavé elektrické energie, čo by mohlo mať za následok 1460 01:11:49,300 --> 01:11:50,980 k strate kontroly lietadla. 1461 01:11:50,980 --> 01:11:55,380 >> Takže doslova, tam je nejaké číslo, alebo nejaký ekvivalent dátový typ, 1462 01:11:55,380 --> 01:11:57,960 sa používa v softvéri v skutočnom lietadle 1463 01:11:57,960 --> 01:12:00,756 že ak budete mať vaše lietadlo na dosť dlho, čo zrejme 1464 01:12:00,756 --> 01:12:03,880 môže byť v prípade, ak ste práve beží je neustále a nikdy odpájaní 1465 01:12:03,880 --> 01:12:06,810 vaše lietadlo, ako sa zdá, alebo púšťanie jeho vybijú batérie, 1466 01:12:06,810 --> 01:12:09,840 nakoniec počítať hore a hore a hore a hore a hore, a hore. 1467 01:12:09,840 --> 01:12:12,150 >> A od prírody, je obmedzené množstvo pamäte 1468 01:12:12,150 --> 01:12:15,880 pretečie, návratu k nula alebo niektoré záporné hodnoty, 1469 01:12:15,880 --> 01:12:19,920 vedľajší účinok, čo je desivo skutočnej reality 1470 01:12:19,920 --> 01:12:23,970 že lietadlo môže potrebovať byť reštartovaný, efektívne, 1471 01:12:23,970 --> 01:12:27,290 alebo by mohli spadnúť ešte horšie, ako to letí. 1472 01:12:27,290 --> 01:12:29,230 Takže tieto druhy otázok sú stále s nami, 1473 01:12:29,230 --> 01:12:33,130 even-- to bolo 2015 článok, všetky ešte desivejšie 1474 01:12:33,130 --> 01:12:36,100 keď nie nevyhnutne pochopiť, oceniť, alebo predvídať 1475 01:12:36,100 --> 01:12:38,640 tieto druhy chýb. 1476 01:12:38,640 --> 01:12:42,030 >> Tak to dopadá je tu ešte jedna ďalšia zlá vec, o reprezentáciu dát. 1477 01:12:42,030 --> 01:12:47,080 Ukazuje sa, že aj plaváky sú druh chybné, pretože plaváky taky, 1478 01:12:47,080 --> 01:12:51,440 Navrhol som sa 32 bitov, alebo Možno 64, ak používate double. 1479 01:12:51,440 --> 01:12:53,070 Ale to je ešte konečný. 1480 01:12:53,070 --> 01:12:57,070 >> A Háčik je v tom, že ak je to možné dať nekonečný počet čísel 1481 01:12:57,070 --> 01:12:59,460 za desatinnou čiarkou, nie je tam žiadny spôsob, ako 1482 01:12:59,460 --> 01:13:02,690 môžu reprezentovať všetky možné čísla, ktoré nás učili 1483 01:13:02,690 --> 01:13:04,990 V základnej škole sa môžu vyskytovať vo svete. 1484 01:13:04,990 --> 01:13:08,870 Počítač, v podstate, musí zvoliť podskupinu týchto čísel 1485 01:13:08,870 --> 01:13:10,200 reprezentovať presne. 1486 01:13:10,200 --> 01:13:12,450 >> Teraz, keď počítač nemôže koleso možno trochu, 1487 01:13:12,450 --> 01:13:17,900 a môže vám umožní zhruba obchodu ľubovoľné číslo by ste mohli priať. 1488 01:13:17,900 --> 01:13:20,940 Ale len intuitívne, ak vás majú konečný počet bitov, 1489 01:13:20,940 --> 01:13:24,560 môžete permutáciu len im v mnohých konečných spôsobmi. 1490 01:13:24,560 --> 01:13:26,570 Takže si nemôže použiť konečný počet 1491 01:13:26,570 --> 01:13:29,880 permutácie bitov, vzory núl a jednotiek, 1492 01:13:29,880 --> 01:13:32,940 reprezentovať nekonečný počet čísel, 1493 01:13:32,940 --> 01:13:37,370 čo naznačuje, že by mohli počítače Veľmi dobre sa nám klame občas. 1494 01:13:37,370 --> 01:13:38,770 >> V skutočnosti, ideme na to. 1495 01:13:38,770 --> 01:13:41,239 Nechaj ma ísť späť do CS50 IDE. 1496 01:13:41,239 --> 01:13:43,030 Nechaj ma ísť dopredu a vytvoriť malý program 1497 01:13:43,030 --> 01:13:47,940 tzv Nepresnosť, ukázať, že Počítače sú skutočne nepresné. 1498 01:13:47,940 --> 01:13:51,910 >> A nechaj ma ísť dopredu a začať s niektoré z týchto kódu pred rokom, 1499 01:13:51,910 --> 01:13:53,830 a teraz len vykonať nasledujúce. 1500 01:13:53,830 --> 01:14:03,640 Nechaj ma ísť dopredu a urobiť printf, percento f n lomka, 1 delené 10. 1501 01:14:03,640 --> 01:14:07,430 Inými slovami, poďme ponoriť hlbšie 1/10, ako je 1 a delené 10. 1502 01:14:07,430 --> 01:14:09,760 Iste, počítač môže predstavovať 1/10. 1503 01:14:09,760 --> 01:14:13,620 >> Tak poďme do toho a robiť nepresnosť. 1504 01:14:13,620 --> 01:14:14,390 Pozrime sa. 1505 01:14:14,390 --> 01:14:16,210 Formát Určuje typ double. 1506 01:14:16,210 --> 01:14:18,160 Ale tento argument má typ int. 1507 01:14:18,160 --> 01:14:19,040 Čo sa deje? 1508 01:14:19,040 --> 01:14:21,970 >> Oh, zaujímavý, takže je to ponaučenie z predtým. 1509 01:14:21,970 --> 01:14:26,050 Hovorím, hej, počítač zobraziť mi plavák s percenta f. 1510 01:14:26,050 --> 01:14:28,200 Ale ja dávať to 2 celých čísel. 1511 01:14:28,200 --> 01:14:31,120 Tak to dopadá, môžem opraviť to v niekoľkých ohľadoch. 1512 01:14:31,120 --> 01:14:38,430 >> Mohol som len otočiť jeden do 1,0, a 10 do 10,0, čo by, samozrejme, 1513 01:14:38,430 --> 01:14:42,390 má za následok prevedenie je do floats-- stále s nádejou 1514 01:14:42,390 --> 01:14:43,180 rovnaký počet. 1515 01:14:43,180 --> 01:14:45,880 Alebo sa ukáže, je tu niečo, uvidíme opäť onedlho. 1516 01:14:45,880 --> 01:14:47,170 Dalo by sa obsadenie čísla. 1517 01:14:47,170 --> 01:14:49,880 >> Môžete pomocou tohto okrúhlych zátvoriek výrazom, môžete povedať, 1518 01:14:49,880 --> 01:14:52,560 hej, počítač, vziať 10, o ktorom viem, je int. 1519 01:14:52,560 --> 01:14:54,660 Ale zaobchádzať s tým, prosím, ako keby je to float. 1520 01:14:54,660 --> 01:14:56,680 Ale to cíti zbytočne zložité. 1521 01:14:56,680 --> 01:14:59,040 >> Pre naše účely dnes, Povedzme, doslovne 1522 01:14:59,040 --> 01:15:02,700 činí je plávajúca bodovej hodnoty s desatinnou čiarkou, ako je tento. 1523 01:15:02,700 --> 01:15:07,060 Nechaj ma ísť dopredu a opakovanie, aby nepresnosť, dobrá, dot lomítko 1524 01:15:07,060 --> 01:15:08,870 nepresnosť, vstúpiť. 1525 01:15:08,870 --> 01:15:10,990 OK, máme dobrý vzhľad. 1526 01:15:10,990 --> 01:15:18,194 >> 1 delené 10, podľa môjho Mac tu, je vskutku 0,100000. 1527 01:15:18,194 --> 01:15:21,360 Teraz som sa učil na základnej škole tam by mal byť nekonečný počet 0 rokov. 1528 01:15:21,360 --> 01:15:23,151 Takže poďme sa aspoň pokúsiť vidieť niektoré z nich. 1529 01:15:23,151 --> 01:15:26,770 Ukazuje sa, že printf je trochu milovník ešte než sme používali. 1530 01:15:26,770 --> 01:15:30,890 Ukazuje sa, že nemusíte špecifikovať Len percent f, alebo jednoducho percenta i. 1531 01:15:30,890 --> 01:15:33,830 V skutočnosti môžete zadať niektoré kontrolné možnosti tu. 1532 01:15:33,830 --> 01:15:36,470 >> konkrétne Idem hovoriť, hej, printf, 1533 01:15:36,470 --> 01:15:39,660 v skutočnosti mi ukázať 10 desatinných miest. 1534 01:15:39,660 --> 01:15:40,820 Tak to vyzerá trochu divne. 1535 01:15:40,820 --> 01:15:42,845 Ale hovoríte percent, bodka, koľko čísel 1536 01:15:42,845 --> 01:15:44,970 Ak chcete vidieť po desatinnou čiarkou, a potom f 1537 01:15:44,970 --> 01:15:48,340 pre ploché, len preto, že je čo dokumentácie hovorí. 1538 01:15:48,340 --> 01:15:50,080 Nechaj ma ísť dopredu a okrem toho, že. 1539 01:15:50,080 --> 01:15:52,460 >> A všimnite si tiež, začínam unavený prepisovanie veci. 1540 01:15:52,460 --> 01:15:55,900 Takže som proste nastavenie hore a šípka dole na mojej kľúče tu. 1541 01:15:55,900 --> 01:15:58,710 A keď som stále biť, tie môžete vidieť všetky príkazy 1542 01:15:58,710 --> 01:16:01,090 že som urobil, alebo nesprávne vyrobené. 1543 01:16:01,090 --> 01:16:04,630 >> A ja idem dopredu a hneď Nie je vlastne používať, že zdanlivo. 1544 01:16:04,630 --> 01:16:11,416 Urobiť Nepresnosť, bodka lomítko imprecision-- tak 1545 01:16:11,416 --> 01:16:13,290 čo som sa naučil v základnej škole odhlási. 1546 01:16:13,290 --> 01:16:19,010 Dokonca aj keď som ju vytlačiť až 10 desiatkovej ju skutočne je 0,10000. 1547 01:16:19,010 --> 01:16:19,840 Ale viete čo? 1548 01:16:19,840 --> 01:16:21,150 >> Poďme trochu chamtivý. 1549 01:16:21,150 --> 01:16:23,990 Povedzme, ako, ukáž mi 55 poukazuje za desatinnou čiarkou. 1550 01:16:23,990 --> 01:16:26,160 Poďme naozaj vziať naprogramovať von na prechádzku. 1551 01:16:26,160 --> 01:16:31,170 Nechaj ma prerobiť s make nepresnosť, bodka lomítko, nepresnosť. 1552 01:16:31,170 --> 01:16:32,390 >> A tu to máme. 1553 01:16:32,390 --> 01:16:34,420 Vaša detstva bola lož. 1554 01:16:34,420 --> 01:16:48,410 Zdá sa, že 1 deleno 10 je skutočne 0.100000000000000005551115123-- 1555 01:16:48,410 --> 01:16:49,740 >> Čo sa deje? 1556 01:16:49,740 --> 01:16:53,360 Tak to dopadá, keď sa druh vyzerať dosť ďaleko do podkladových 1557 01:16:53,360 --> 01:16:55,950 zastúpenie tohto číslo, to vlastne 1558 01:16:55,950 --> 01:17:00,400 nie je presne 1/10, alebo 0,1 a nekonečný počet núl. 1559 01:17:00,400 --> 01:17:01,630 A teraz, prečo tomu tak je? 1560 01:17:01,630 --> 01:17:06,250 >> No, aj keď je to jednoduchý Číslo na nás ľudí, 1 delené 10, 1561 01:17:06,250 --> 01:17:10,910 je to stále jedna z nekonečne veľa čísla, ktoré sme mohli vymyslieť. 1562 01:17:10,910 --> 01:17:14,490 Ale počítač môže predstavovať iba konečne veľa takže čísla. 1563 01:17:14,490 --> 01:17:18,710 A tak efektívne, čo Počítač sa ukazuje nám je jeho najbližší 1564 01:17:18,710 --> 01:17:22,940 približovanie k položke Chceme veriť, je 1/10, 1565 01:17:22,940 --> 01:17:27,760 alebo naozaj 0,10000 ad infinitum. 1566 01:17:27,760 --> 01:17:30,425 >> Skôr, keď sa jedná tak blízko, ako to môže dostať. 1567 01:17:30,425 --> 01:17:32,300 A skutočne, keď sa pozriete pod kapotou 1568 01:17:32,300 --> 01:17:37,050 ako sme tu prehliadaním 55 číslic za desatinnou čiarkou, 1569 01:17:37,050 --> 01:17:39,990 sme vlastne vidieť, že realitu. 1570 01:17:39,990 --> 01:17:42,610 Teraz ako stranou, ak ste niekedy videl movie-- 1571 01:17:42,610 --> 01:17:45,780 väčšina z vás pravdepodobne haven't-- ale pred Superman 3 niekoľkými rokmi, 1572 01:17:45,780 --> 01:17:49,500 Richard Pryor v podstate zadlžujú tento realita v jeho spoločnosti ukradnúť veľa 1573 01:17:49,500 --> 01:17:53,500 zlomkov a zlomkoch haliere, pretože company-- ak si dobre spomínam, 1574 01:17:53,500 --> 01:17:57,210 bol to while-- bola v zásade zahodili všetko, čo nezapadol 1575 01:17:57,210 --> 01:17:58,790 do pojmu centov. 1576 01:17:58,790 --> 01:18:01,480 >> Ale ak spočítate všetky tieto malé, malé, drobné čísla znovu, 1577 01:18:01,480 --> 01:18:04,960 a znova a znova, môžete, rovnako ako v jeho prípad, urobiť dobrý množstvo peňazí. 1578 01:18:04,960 --> 01:18:08,010 >> Ten rovnaký nápad bol oklamaný novšie, ale teraz staršie 1579 01:18:08,010 --> 01:18:10,500 film, nazvaný Kancelárske priestory, kde chlapci v tomto filme, 1580 01:18:10,500 --> 01:18:13,501 urobil to isté, naskrutkovať ju úplne, skončil s cestou príliš veľa 1581 01:18:13,501 --> 01:18:14,666 peniaze na svoj bankový účet. 1582 01:18:14,666 --> 01:18:15,800 Bolo to všetko veľmi podozrivé. 1583 01:18:15,800 --> 01:18:19,290 Ale na konci dňa, nepresnosť je všade okolo nás. 1584 01:18:19,290 --> 01:18:22,240 >> A to tiež môže byť desivo prípad. 1585 01:18:22,240 --> 01:18:25,590 Ukazuje sa, že Superman 3 Kancelárske priestory a stranou, tam 1586 01:18:25,590 --> 01:18:28,460 môžu byť niektoré veľmi reálne svet následky 1587 01:18:28,460 --> 01:18:32,290 z realít nepresný reprezentácie dát 1588 01:18:32,290 --> 01:18:34,770 že aj my ľudia do tento deň nemusí nutne 1589 01:18:34,770 --> 01:18:38,230 chápať rovnako ako by sme mali, alebo si pamätať tak často, ako by sme mali. 1590 01:18:38,230 --> 01:18:42,950 A vskutku, nasledujúci klip z pohľadu na niektoré veľmi reálnom svete 1591 01:18:42,950 --> 01:18:47,730 Dôsledky, čo sa stane, keď vás neváži nepresnosť, ktorá 1592 01:18:47,730 --> 01:18:50,065 sa môže stať v číslach reprezentácii. 1593 01:18:50,065 --> 01:18:51,300 >> [Videoprehrávanie] 1594 01:18:51,300 --> 01:18:55,620 >> -Computers, Všetci sme si zvykli na sú často nepríjemné problémy, ktoré 1595 01:18:55,620 --> 01:19:00,310 ísť s them-- chýb, vírusov, a softvérové ​​závady, 1596 01:19:00,310 --> 01:19:03,130 Pre malé ceny platiť pre pohodlie. 1597 01:19:03,130 --> 01:19:07,800 Ale v high-tech a vysokou rýchlosťou vojenský a kozmický program aplikácie, 1598 01:19:07,800 --> 01:19:12,800 Najmenší môže problém zväčšovať do katastrofy. 1599 01:19:12,800 --> 01:19:18,900 >> Dňa 4. júna 1996, pripravené vedci zahájiť bezpilotné Ariane 5 rakety. 1600 01:19:18,900 --> 01:19:21,220 To niesol vedecké satelity navrhnutý 1601 01:19:21,220 --> 01:19:24,600 stanoviť presne, ako sa vzájomnému pôsobeniu magnetického poľa Zeme 1602 01:19:24,600 --> 01:19:27,410 so solárnymi vetry. 1603 01:19:27,410 --> 01:19:30,800 Raketa bola postavená Európska vesmírna agentúra, 1604 01:19:30,800 --> 01:19:34,370 a odštartovala z jej zariadení na pobreží Francúzskej Guyany. 1605 01:19:34,370 --> 01:19:37,540 >> -Na Asi 37 sekúnd do rokov, sa prvýkrát 1606 01:19:37,540 --> 01:19:39,270 Všimol sa niečo deje zle. 1607 01:19:39,270 --> 01:19:42,250 Trysky boli otočné v spôsob, ako sa naozaj nemali. 1608 01:19:42,250 --> 01:19:46,580 Približne 40 sekúnd do letu, Je zrejmé, že vozidlo bolo v ťažkostiach. 1609 01:19:46,580 --> 01:19:48,850 >> A to je, keď oni robili rozhodnutie ho zničiť. 1610 01:19:48,850 --> 01:19:52,780 Bezpečnostné dôstojník rozsah, s obrovské čreva, stlačil tlačidlo, 1611 01:19:52,780 --> 01:19:58,150 vyhodil raketu, predtým to mohlo predstavovať nebezpečenstvo pre verejnú bezpečnosť. 1612 01:19:58,150 --> 01:20:01,060 >> Toto bola panna plavba Ariane 5. 1613 01:20:01,060 --> 01:20:03,960 A jeho zničenie vzal miesto z dôvodu chyby 1614 01:20:03,960 --> 01:20:05,822 vložené do softvéru rakety. 1615 01:20:05,822 --> 01:20:08,280 -The Problém na Ariane bol že existuje celý rad, ktorá 1616 01:20:08,280 --> 01:20:10,600 vyžadované 64 bitov vyjadriť. 1617 01:20:10,600 --> 01:20:13,590 A chceli previesť to na 16-bitové číslo. 1618 01:20:13,590 --> 01:20:15,610 Sa predpokladá, že číslo bolo nikdy 1619 01:20:15,610 --> 01:20:20,980 byť veľmi veľká, že väčšina z nich Číslice v 64-bitové číslo boli nuly. 1620 01:20:20,980 --> 01:20:22,440 Mýlili sa. 1621 01:20:22,440 --> 01:20:25,060 >> -The Neschopnosť jedného Softvérový program prijímať 1622 01:20:25,060 --> 01:20:29,510 druh číslo generované Ďalším bol pri koreni zlyhania. 1623 01:20:29,510 --> 01:20:34,350 Vývoj softvéru sa stala veľmi nákladné súčasťou novej technológie. 1624 01:20:34,350 --> 01:20:38,140 Raketa Ariane boli veľmi úspešný, toľko softvéru 1625 01:20:38,140 --> 01:20:41,550 vytvorený pre to bolo tiež použitý v Ariane 5. 1626 01:20:41,550 --> 01:20:47,940 >> -The Základným problémom bolo to, že Ariane 5 bol rýchlejší, urýchlením. 1627 01:20:47,940 --> 01:20:51,450 A softvér nemal účtuje za to. 1628 01:20:51,450 --> 01:20:55,060 >> -The Zničenie rakety Bola to obrovská finančná katastrofa, 1629 01:20:55,060 --> 01:20:58,790 všetko kvôli chybe minút softvéru. 1630 01:20:58,790 --> 01:21:01,210 Ale to nebol prvý Problémy s konverziou dát časové 1631 01:21:01,210 --> 01:21:04,820 bol sužovaný modernej raketovej techniky. 1632 01:21:04,820 --> 01:21:08,050 >> -in 1991, so štartom prvej vojny v Perzskom zálive, 1633 01:21:08,050 --> 01:21:10,570 Patriot Missile zažil podobný typ 1634 01:21:10,570 --> 01:21:12,800 konverzného číslo problému. 1635 01:21:12,800 --> 01:21:16,090 A ako výsledok, 28 ľudí, 28 amerických vojakov, 1636 01:21:16,090 --> 01:21:19,080 bolo zabitých a asi 100 ďalších zranených, 1637 01:21:19,080 --> 01:21:22,780 keď Patriot, ktorý mal chrániť pred prichádzajúcimi Scud, 1638 01:21:22,780 --> 01:21:25,830 nedokázal vystreliť raketu. 1639 01:21:25,830 --> 01:21:31,670 >> -Keď Irak napadol Kuvajt, a Ameriku zahájená Púštna búrka začiatkom roku 1991, 1640 01:21:31,670 --> 01:21:35,780 Patriot Missile batérie boli nasadené chrániť Saudskú Arábiu a Izrael 1641 01:21:35,780 --> 01:21:39,230 z irackých raketových útokov Scud. 1642 01:21:39,230 --> 01:21:43,810 Patriot je v USA stredného doletu povrch vzduchového systému, vyrábané 1643 01:21:43,810 --> 01:21:45,770 od firmy Raytheon. 1644 01:21:45,770 --> 01:21:52,340 >> -Veľkosť Patriot Interceptor sama o sebe je asi zhruba 20 stôp dlhý. 1645 01:21:52,340 --> 01:21:55,230 A váži asi 2000 libier. 1646 01:21:55,230 --> 01:21:59,320 A to so sebou nesie hlavicu asi, Myslím, že to je zhruba 150 libier. 1647 01:21:59,320 --> 01:22:03,930 A hlavica je sám o sebe vysoko výbušný, ktorý 1648 01:22:03,930 --> 01:22:07,330 Má fragmenty okolo neho. 1649 01:22:07,330 --> 01:22:11,680 Puzdro hlavice je navrhnuté tak, aby správať ako hrubé broky. 1650 01:22:11,680 --> 01:22:14,110 >> -The Rakety sú vykonávané štyri na kontajner, 1651 01:22:14,110 --> 01:22:17,130 a sú prepravované pomocou návesu. 1652 01:22:17,130 --> 01:22:24,930 >> -The Patriot protiraketový systém siaha teraz najmenej 20 rokov. 1653 01:22:24,930 --> 01:22:28,420 Pôvodne bol vyvinutý ako obranné rakety vzduchu 1654 01:22:28,420 --> 01:22:30,720 zostreliť nepriateľské lietadlá. 1655 01:22:30,720 --> 01:22:34,500 V prvej vojny v Perzskom zálive, keď tá vojna prišla, 1656 01:22:34,500 --> 01:22:39,745 Armáda ju chcel použiť na zostreliť Scud, nie lietadiel. 1657 01:22:39,745 --> 01:22:43,620 >> Iracké letectvo bolo Nie je tak veľký problém. 1658 01:22:43,620 --> 01:22:46,670 Ale armáda bola starosti Scud. 1659 01:22:46,670 --> 01:22:50,170 A tak sa snažili upgrade Patriot. 1660 01:22:50,170 --> 01:22:52,800 >> -Intercepting Nepriateľa raketa jede mach 5 1661 01:22:52,800 --> 01:22:55,830 šiel byť dosť náročné. 1662 01:22:55,830 --> 01:22:58,490 Ale keď Patriot bol behave do prevádzky 1663 01:22:58,490 --> 01:23:02,860 armáda nebol vedomý Iracký modifikácie, ktorá vyrobený 1664 01:23:02,860 --> 01:23:05,930 ich Pláva takmer nemožné zasiahnuť. 1665 01:23:05,930 --> 01:23:10,740 >> Čo sa stalo je, že Pláva prichádzali boli nestabilné. 1666 01:23:10,740 --> 01:23:11,692 Boli kymácení. 1667 01:23:11,692 --> 01:23:14,910 Dôvodom je to Iračania za účelom 1668 01:23:14,910 --> 01:23:18,280 získať 600 kilometrov z 300 kilometer 1669 01:23:18,280 --> 01:23:21,700 doletu, vzal váhu z prednej hlavice. 1670 01:23:21,700 --> 01:23:23,390 Urobili hlavice ľahší. 1671 01:23:23,390 --> 01:23:27,330 >> Takže teraz je Patriot snaží sa prísť na Scud. 1672 01:23:27,330 --> 01:23:30,230 A väčšinu času, Drvivá väčšina z času, 1673 01:23:30,230 --> 01:23:32,940 to by len lietať podľa Scud. 1674 01:23:32,940 --> 01:23:37,260 Akonáhle prevádzkovatelia Systém Patriot si uvedomil, že Patriot minul svoj cieľ, 1675 01:23:37,260 --> 01:23:41,690 oni odpálili Patriot v hlavici aby sa zabránilo prípadným obetiam ak sa 1676 01:23:41,690 --> 01:23:44,570 nechá spadnúť na zem. 1677 01:23:44,570 --> 01:23:48,790 >> -To Je to, čo väčšina ľudí videla, Tie veľké ohnivé gule na oblohe, 1678 01:23:48,790 --> 01:23:54,550 a nepochopený as zachytí Scud hlavíc. 1679 01:23:54,550 --> 01:23:56,630 >> -Although V noci neba, Patriots sa objavil 1680 01:23:56,630 --> 01:24:00,370 byť úspešne ničiť Scud na zahranie, 1681 01:24:00,370 --> 01:24:03,360 tam mohol byť žiadna chyba o jeho výkonnosti. 1682 01:24:03,360 --> 01:24:07,970 Tam, radarový systém Patriot stratil na prichádzajúce Scud, 1683 01:24:07,970 --> 01:24:10,721 a nikdy začal v dôsledku na softvér chybu. 1684 01:24:10,721 --> 01:24:14,090 1685 01:24:14,090 --> 01:24:18,940 Bolo Izraelčanov, ktorí prvýkrát objavený že čím dlhšie je systém bol na, 1686 01:24:18,940 --> 01:24:22,690 tým väčšia je časový nesúlad sa stal v dôsledku hodiny vložené 1687 01:24:22,690 --> 01:24:24,810 V počítači systému. 1688 01:24:24,810 --> 01:24:28,210 >> -O Dva týždne pred Tragédia v Dhahran, 1689 01:24:28,210 --> 01:24:30,770 Izraelčania hlásených ministerstvo obrany 1690 01:24:30,770 --> 01:24:32,590 že systém stráca čas. 1691 01:24:32,590 --> 01:24:35,360 Po asi osem hodín alebo beh, si všimli, že v systéme 1692 01:24:35,360 --> 01:24:37,720 stal sa nápadne menej presné. 1693 01:24:37,720 --> 01:24:41,900 Ministerstvo obrany reagovala hovoriť všetky batérie Patriot 1694 01:24:41,900 --> 01:24:44,950 nenechať systémy na dlhú dobu. 1695 01:24:44,950 --> 01:24:49,160 Oni nikdy nepovedal, čo je to dlhá doba was-- osem hodín, 10 hodín, 1000 hodín. 1696 01:24:49,160 --> 01:24:51,360 Nikto nevedel. 1697 01:24:51,360 --> 01:24:53,380 >> -The Patriot batérie umiestnený v kasárňach 1698 01:24:53,380 --> 01:24:58,350 na zahranie a jej chybné interné Hodiny bol na viac ako 100 hodín 1699 01:24:58,350 --> 01:25:01,670 v noci z 25. februára. 1700 01:25:01,670 --> 01:25:05,917 >> -Je Sledoval čas s presnosťou asi desatinu sekundy. 1701 01:25:05,917 --> 01:25:08,000 Teraz desatín sekundy je zaujímavé číslo, 1702 01:25:08,000 --> 01:25:11,920 pretože nemôže byť vyjadrená v binárnom presne, čo 1703 01:25:11,920 --> 01:25:16,820 znamená, že nemôže byť vyjadrený presne v každom modernom digitálnom počítači. 1704 01:25:16,820 --> 01:25:18,540 Je ťažké tomu uveriť. 1705 01:25:18,540 --> 01:25:21,210 >> Ale použiť ako príklad. 1706 01:25:21,210 --> 01:25:23,540 Zoberme si číslo jedna tretina. 1707 01:25:23,540 --> 01:25:27,350 Tretina nemôže byť vyjadrené v desiatkovej sústave presne. 1708 01:25:27,350 --> 01:25:32,080 Jedna tretina je 0,333 deje na nekonečno. 1709 01:25:32,080 --> 01:25:36,480 >> Neexistuje žiadny spôsob, ako to urobiť s absolútna presnosť v desiatkovej sústave. 1710 01:25:36,480 --> 01:25:39,560 To je presne ten druh problému ktorá sa stala v Patriot. 1711 01:25:39,560 --> 01:25:44,100 Čím dlhšia je systém bežal sa horšie sa stala chyba čas. 1712 01:25:44,100 --> 01:25:48,890 >> -po 100 hodinách prevádzky Chyba v dobe bol len asi tretina 1713 01:25:48,890 --> 01:25:50,600 sekundy. 1714 01:25:50,600 --> 01:25:54,210 Ale pokiaľ ide o zacielení raketa jede Mach 5, 1715 01:25:54,210 --> 01:25:58,710 to viedlo k sledovaniu Chyba viac ako 600 metrov. 1716 01:25:58,710 --> 01:26:02,120 Bolo by fatálna chyba pre vojakov o tom, čo 1717 01:26:02,120 --> 01:26:08,940 Stalo je Scud štart bol detekované satelity včasného varovania 1718 01:26:08,940 --> 01:26:12,860 a oni vedeli, že Scud bol prichádza vo svojom všeobecnom smere. 1719 01:26:12,860 --> 01:26:15,320 Nevedeli, kde sa blíži. 1720 01:26:15,320 --> 01:26:18,250 >> -To Bol teraz na radare súčasť systému Patriot 1721 01:26:18,250 --> 01:26:23,190 brániť zahranie nájsť a udržať Trať prichádzajúce nepriateľské rakety. 1722 01:26:23,190 --> 01:26:24,609 >> -The Radar bol veľmi šikovný. 1723 01:26:24,609 --> 01:26:26,650 To by v skutočnosti sledovať poloha Scud, 1724 01:26:26,650 --> 01:26:30,350 a potom predpovedať, kde to asi bude nabudúce radar odoslané 1725 01:26:30,350 --> 01:26:31,420 pulz von. 1726 01:26:31,420 --> 01:26:33,110 Ktorý bol nazývaný rad brána. 1727 01:26:33,110 --> 01:26:37,660 >> -Tak, Akonáhle Patriot Rozhodne dosť času má 1728 01:26:37,660 --> 01:26:42,450 odovzdaný vrátiť a skontrolovať ďalšie umiestnenie tohto detekovaným objektom, 1729 01:26:42,450 --> 01:26:43,600 sa vracia. 1730 01:26:43,600 --> 01:26:48,650 Takže keď sa vrátil k zlý Namiesto toho potom nevidí žiadny objekt. 1731 01:26:48,650 --> 01:26:52,160 A to sa rozhodne, že neexistuje objekt, išlo o falošné detekcie, 1732 01:26:52,160 --> 01:26:53,930 a upustí stopu. 1733 01:26:53,930 --> 01:26:57,030 >> -The Prichádzajúce Scud zmizol z obrazovky radaru. 1734 01:26:57,030 --> 01:27:00,260 A sekúnd neskôr ho narazila do kasární. 1735 01:27:00,260 --> 01:27:06,150 Plávať zabila 28, a bol posledný jeden vystrelil počas prvej vojny v Perzskom zálive. 1736 01:27:06,150 --> 01:27:11,960 >> Je tragické, že aktualizovaný softvér dorazil zahranie nasledujúci deň. 1737 01:27:11,960 --> 01:27:14,930 Softvér vada mala Bolo opravené, zatváranie 1738 01:27:14,930 --> 01:27:19,806 jedna kapitola v problémovej História Patriot rakety. 1739 01:27:19,806 --> 01:27:20,729 >> [Videoprehrávanie] 1740 01:27:20,729 --> 01:27:23,520 David J. Malan: Tak toto je všetko povedať, že tieto otázky prepadu 1741 01:27:23,520 --> 01:27:25,860 a nepresnosti sú až príliš reálne. 1742 01:27:25,860 --> 01:27:26,920 Tak ako sme sa sem dostali? 1743 01:27:26,920 --> 01:27:28,895 Začali sme sa rozprávali o printf. 1744 01:27:28,895 --> 01:27:31,270 Opäť platí, že táto funkcia, ktorá vytlačí niečo na obrazovku, 1745 01:27:31,270 --> 01:27:33,450 a zaviedli sme potom niekoľko ďalších funkcií 1746 01:27:33,450 --> 01:27:34,945 z tzv knižnice CS50 je. 1747 01:27:34,945 --> 01:27:36,910 A budeme aj naďalej pozri nich v stanovenej lehote. 1748 01:27:36,910 --> 01:27:40,760 A my, a to najmä, ktorý sa používa get reťazec, a získať int, a teraz tiež získať float, 1749 01:27:40,760 --> 01:27:44,410 a napriek tomu iní stále sa stretávame s a používať sami onedlho. 1750 01:27:44,410 --> 01:27:47,220 >> Ale občas, majú sme už videli potrebu 1751 01:27:47,220 --> 01:27:50,520 ukladať, čo tieto funkcie ruka späť? 1752 01:27:50,520 --> 01:27:52,920 Oni nás späť reťazec ruky, alebo int, alebo float. 1753 01:27:52,920 --> 01:27:56,070 A niekedy musíme dať, že reťazec, alebo int, alebo float, niekde. 1754 01:27:56,070 --> 01:28:00,100 >> A ukladať tie veci, pripomínajú len rovnako ako v Scratch, máme premenné. 1755 01:28:00,100 --> 01:28:03,260 Ale na rozdiel od Scratch, v jazyku C máme skutočné typy 1756 01:28:03,260 --> 01:28:05,530 z variables-- dát typy, viac generally-- 1757 01:28:05,530 --> 01:28:08,640 medzi nimi, reťazec, int, je plávať, a tí ostatní v pokoji. 1758 01:28:08,640 --> 01:28:12,321 >> A tak, keď budeme deklarovať premenné v jazyku C, budeme musieť deklarovať naše dátové typy. 1759 01:28:12,321 --> 01:28:14,820 To nie je niečo, čo bude musieť urobiť neskôr v priebehu semestra 1760 01:28:14,820 --> 01:28:16,810 ako sme prechod do iných jazykov. 1761 01:28:16,810 --> 01:28:19,610 Ale teraz, my potrebujeme sa a priori v predstihu, 1762 01:28:19,610 --> 01:28:24,370 vysvetliť, aký typ počítača premenné chceme, aby nám dať. 1763 01:28:24,370 --> 01:28:27,290 >> Teraz sa medzitým pre tlač tieto druhy dátových typov, 1764 01:28:27,290 --> 01:28:29,570 musíme povedať printf, čo môže očakávať. 1765 01:28:29,570 --> 01:28:32,450 A my sme videli percent ov pre sláčiky, a percento aj pre celé čísla, 1766 01:28:32,450 --> 01:28:33,790 a niekoľko ďalších už. 1767 01:28:33,790 --> 01:28:37,237 A tie sú proste požiadavky pre vizuálne prezentácie 1768 01:28:37,237 --> 01:28:38,070 týchto informácií. 1769 01:28:38,070 --> 01:28:42,080 >> A každý z nich môže byť v skutočnosti parametrized alebo vylepšil nejakým spôsobom, 1770 01:28:42,080 --> 01:28:45,370 Ak chcete ďalej ovládať typ výstup, ktorý dostanete. 1771 01:28:45,370 --> 01:28:49,604 A v skutočnosti sa ukázalo, že nielen Je tam spätné lomítko n pre nový riadok. 1772 01:28:49,604 --> 01:28:52,520 Je tu ešte niečo nazýva spätné lomítko R pre návrat vozíka, čo 1773 01:28:52,520 --> 01:28:54,360 je viac podobný k old school písací stroj, 1774 01:28:54,360 --> 01:28:57,690 a tiež Windows používa po mnoho rokov. 1775 01:28:57,690 --> 01:28:59,690 >> Tam je spätné lomítko t na kartách. 1776 01:28:59,690 --> 01:29:03,170 Ukázalo sa, že ak chcete dvojité úvodzovky vnútri reťazca, 1777 01:29:03,170 --> 01:29:05,000 Pripomeňme si, že sme použili úvodzovky double 1778 01:29:05,000 --> 01:29:07,900 citát vľavo a vpravo Konce našich reťazcoch tak ďaleko. 1779 01:29:07,900 --> 01:29:09,420 To by Zdá sa zmiasť veci. 1780 01:29:09,420 --> 01:29:12,503 >> Ak chcete dať úvodzovky v Uprostred string-- a samozrejme, 1781 01:29:12,503 --> 01:29:13,670 to je mätúce vidieť. 1782 01:29:13,670 --> 01:29:17,120 A tak budete musieť utiecť, takže sa hovoriť, s niečím, čo si úvodzovky 1783 01:29:17,120 --> 01:29:18,860 ako je doslova spätná lomky úvodzovky. 1784 01:29:18,860 --> 01:29:20,230 A je tu ešte niekoľko ďalších. 1785 01:29:20,230 --> 01:29:24,540 A uvidíme viac z tých, v skutočnom užívanie onedlho. 1786 01:29:24,540 --> 01:29:27,930 >> Takže poďme teraz prechod od dát a reprezentácie, 1787 01:29:27,930 --> 01:29:30,820 a aritmetické operátory, všetko z ktorých nám dal nejakú budovu 1788 01:29:30,820 --> 01:29:32,070 bloky, s ktorými hrať. 1789 01:29:32,070 --> 01:29:34,481 Ale teraz poďme skutočne dať us zvyšok slovníka 1790 01:29:34,481 --> 01:29:36,230 že sme už mali minulý týždeň Scratch 1791 01:29:36,230 --> 01:29:39,350 tým, že sa pozrieť na niektoré ďalšie konštrukty C- nie všetky z nich. 1792 01:29:39,350 --> 01:29:41,680 Ale myšlienky sme asi vidieť naozaj len 1793 01:29:41,680 --> 01:29:45,610 zdôrazniť preklad z jeden jazyk, Scratch, do druhého, C. 1794 01:29:45,610 --> 01:29:48,470 >> A v priebehu času, budeme vyzdvihnúť Ďalšie nástroje pre našu Toolkit 1795 01:29:48,470 --> 01:29:49,820 tak povediac, syntakticky. 1796 01:29:49,820 --> 01:29:54,190 A skutočne, uvidíte, že myšlienky sú teraz skôr známe z minulého týždňa. 1797 01:29:54,190 --> 01:29:55,200 Tak ideme na to. 1798 01:29:55,200 --> 01:29:58,870 >> Poďme ďalej a vybičovať program že v skutočnosti používa niektoré výrazy, 1799 01:29:58,870 --> 01:30:00,720 Boolean výraz. 1800 01:30:00,720 --> 01:30:02,810 Nechaj ma ísť napred tu a vytvoriť nový súbor. 1801 01:30:02,810 --> 01:30:06,090 Zavolám tento condition.c. 1802 01:30:06,090 --> 01:30:09,350 >> Nechaj ma ísť dopredu a zahrnúť knižnicu CS50. 1803 01:30:09,350 --> 01:30:12,640 A nechaj ma ísť dopredu a zahŕňajú Štandardné IO.H pre naše funkcie, 1804 01:30:12,640 --> 01:30:14,690 a printf, a ďalšie, resp. 1805 01:30:14,690 --> 01:30:18,900 Dovoľte mi, aby som sám seba, že často používaný vo int main neplatné, ktorého vysvetlenie zmienime 1806 01:30:18,900 --> 01:30:20,360 vrátiť sa v budúcnosti. 1807 01:30:20,360 --> 01:30:23,820 >> Teraz mi dovoľte ísť dopredu a dať Sám int cez get int. 1808 01:30:23,820 --> 01:30:25,970 Tak ma nechaj ísť dopredu a to urobiť. 1809 01:30:25,970 --> 01:30:30,150 Chcem povedať, či aj je less-- poďme rozlišovať medzi pozitívne, negatívne, 1810 01:30:30,150 --> 01:30:31,260 alebo nulové hodnoty. 1811 01:30:31,260 --> 01:30:36,630 >> Takže ak aj je menšia ako nula, dovoľte mi, aby som stačí tento program jednoducho povedať, 1812 01:30:36,630 --> 01:30:42,370 negatívne spätné lomítko n, inak ak aj je väčšia ako nula. 1813 01:30:42,370 --> 01:30:47,030 Teraz som samozrejme chcel povedať printf pozitívne, spätné lomítko n. 1814 01:30:47,030 --> 01:30:50,690 A potom ešte if-- by som mohol urobiť. 1815 01:30:50,690 --> 01:30:53,410 >> Mohol by som robil, keby som rovná 0. 1816 01:30:53,410 --> 01:30:55,840 Ale ja by som treba robiť na aspoň už jedna chyba. 1817 01:30:55,840 --> 01:30:59,480 Pripomeňme si, že znamienko rovnosti je nerovná, ako my ľudia to vedia. 1818 01:30:59,480 --> 01:31:01,010 >> Ale je to operátor priradenia. 1819 01:31:01,010 --> 01:31:05,640 A my nechceme, aby sa na 0 vpravo a vložte ho do aj na ľavej strane. 1820 01:31:05,640 --> 01:31:11,810 Tak, aby sa vyhli nejasnostiam, alebo Možno zneužitie rovná sa, 1821 01:31:11,810 --> 01:31:14,740 Ľudia sa rozhodol pred niekoľkými rokmi že v mnohých programovacích jazykoch 1822 01:31:14,740 --> 01:31:18,000 keď chcete skontrolovať rovnosť medzi ľavým a vpravo, 1823 01:31:18,000 --> 01:31:19,635 budete skutočne používať rovná rovná. 1824 01:31:19,635 --> 01:31:21,010 Takže ste hit znamienko rovnosti dvakrát. 1825 01:31:21,010 --> 01:31:25,600 Ak chcete priradiť sprava doľava, môžete použiť jediný znamienko rovnosti. 1826 01:31:25,600 --> 01:31:29,360 Takže sme mohli urobiť inak tohle-- ak aj rovná sa rovná nule. 1827 01:31:29,360 --> 01:31:31,710 >> Mohol by som potom ísť a otvorím zložené zátvorky, 1828 01:31:31,710 --> 01:31:36,087 a hovoria, printf 0, lomítko n, hotovo. 1829 01:31:36,087 --> 01:31:38,170 Ale pamätajte, ako tieto vidličky na ceste môže fungovať. 1830 01:31:38,170 --> 01:31:39,836 A naozaj, len premýšľať o logike. 1831 01:31:39,836 --> 01:31:41,510 i je číslo. 1832 01:31:41,510 --> 01:31:43,320 Je to celé číslo, konkrétne. 1833 01:31:43,320 --> 01:31:48,600 A to znamená, že to bude menej ako 0 alebo väčšia ako 0, alebo 0. 1834 01:31:48,600 --> 01:31:51,600 Takže tam je v istom zmysle to implicitné štandardný prípad. 1835 01:31:51,600 --> 01:31:54,920 >> A tak by sme mohli, rovnako ako Scratch, upustiť od else if, 1836 01:31:54,920 --> 01:31:55,747 a jednoducho povedať inde. 1837 01:31:55,747 --> 01:31:57,830 Logicky, ak vám programátor vedieť, že je to len 1838 01:31:57,830 --> 01:32:01,635 Tri vedierka, do ktorého scenár môže fall-- prvý, 1839 01:32:01,635 --> 01:32:03,510 druhý, alebo tretí v tomto case-- nie 1840 01:32:03,510 --> 01:32:07,100 obťažovať pridanie ďalšieho presnosť a ďalšie logika tam. 1841 01:32:07,100 --> 01:32:09,690 Jednoducho ísť dopredu s Predvolené prípad od iného. 1842 01:32:09,690 --> 01:32:11,950 >> Teraz sa poďme vpred po uložení to, aby 1843 01:32:11,950 --> 01:32:15,760 Podmienky dot lomítko conditions-- Nie je to skvelý užívateľské rozhranie, 1844 01:32:15,760 --> 01:32:18,914 Pretože nie som pobádať Užívateľ, ako som už spomenul. 1845 01:32:18,914 --> 01:32:19,580 Ale to je v poriadku. 1846 01:32:19,580 --> 01:32:20,454 Necháme to jednoduché. 1847 01:32:20,454 --> 01:32:21,890 Skúsme číslo 42. 1848 01:32:21,890 --> 01:32:23,240 A to je pozitívny. 1849 01:32:23,240 --> 01:32:26,120 skúsme číslo Negatívny 42, negatívne. 1850 01:32:26,120 --> 01:32:28,244 >> Skúsme hodnotu 0. 1851 01:32:28,244 --> 01:32:29,160 A skutočne to funguje. 1852 01:32:29,160 --> 01:32:33,900 Teraz uvidíte s problémy predtým, než Dlhé testovanie veci trikrát, 1853 01:32:33,900 --> 01:32:34,980 pravdepodobne nie je dostačujúce. 1854 01:32:34,980 --> 01:32:37,438 Pravdepodobne budete chcieť vyskúšať niektoré Väčšie čísla, niektoré menšie 1855 01:32:37,438 --> 01:32:40,520 Čísla, niektoré rohové prípady, as dôjdeme k ich popisu. 1856 01:32:40,520 --> 01:32:42,500 >> Ale teraz je to celkom jednoduchý program. 1857 01:32:42,500 --> 01:32:45,160 A som si istá, logicky, že spadá do troch prípadoch. 1858 01:32:45,160 --> 01:32:49,360 A skutočne, aj keď sme len zamerala na potenciálne tienisté stránky 1859 01:32:49,360 --> 01:32:53,480 nepresnosť a prepadu, v reality, kde je veľa problémov CS50 je, 1860 01:32:53,480 --> 01:32:56,000 nebudeme sa báť o, po celú dobu, 1861 01:32:56,000 --> 01:32:59,050 tieto otázky prepadu a nepresnosť, pretože v skutočnosti, v C, 1862 01:32:59,050 --> 01:33:01,889 je to vlastne nie je všetko, ľahko vyhnúť sa tie veci. 1863 01:33:01,889 --> 01:33:04,180 Ak chcete spočítať väčšie a väčšie a väčšie, 1864 01:33:04,180 --> 01:33:07,510 to dopadá existujú techniky, ktoré Môžete použiť, často zahŕňať veci zvanej 1865 01:33:07,510 --> 01:33:11,240 knižníc, zbierok kódu, aby ostatní ľudia písali, ktoré môžete použiť, 1866 01:33:11,240 --> 01:33:13,910 a iné jazyky, ako je Java a ďalšie, v skutočnosti 1867 01:33:13,910 --> 01:33:15,800 aby bolo oveľa jednoduchšie počítať ešte vyššia. 1868 01:33:15,800 --> 01:33:19,810 Takže je to naozaj niektoré z týchto nebezpečenstiev funkcií jazyka, ktorý používate. 1869 01:33:19,810 --> 01:33:22,710 A v najbližších týždňoch budeme vidieť, ako nebezpečné C v skutočnosti 1870 01:33:22,710 --> 01:33:24,950 môže byť, ak nechcete používať správne. 1871 01:33:24,950 --> 01:33:27,610 Ale odtiaľ, as Python a JavaScript, bude 1872 01:33:27,610 --> 01:33:32,620 máme vrstvu na niektoré dodatočné ochrany, a spustiť menej týchto rizík. 1873 01:33:32,620 --> 01:33:35,820 >> Takže poďme urobiť trochu viac Zaujímavý logika v našom programe. 1874 01:33:35,820 --> 01:33:39,110 Tak nechaj ma ísť dopredu a vytvoriť program s názvom Logical 1875 01:33:39,110 --> 01:33:43,804 Len tak môžem hrať s niektorými Skutočná logika, logical.c. 1876 01:33:43,804 --> 01:33:46,870 Budem stačí skopírovať a vložiť niektoré Kód z minulosti, takže sa vrátim 1877 01:33:46,870 --> 01:33:49,950 k tejto peknej východiskového bodu. 1878 01:33:49,950 --> 01:33:53,980 >> Nech mi tentoraz robiť char C. Som chystá dať mu meno C 1879 01:33:53,980 --> 01:33:58,510 len preto, že je to obvyklé, získať charakter od užívateľa. 1880 01:33:58,510 --> 01:34:00,730 A poďme predstierať, Ja sa vykonáva časť 1881 01:34:00,730 --> 01:34:04,130 Rm tohto programu je odstrániť Program pred tým vyzvanie užívateľa 1882 01:34:04,130 --> 01:34:05,400 na odstránenie súboru. 1883 01:34:05,400 --> 01:34:06,750 Ako by sme mohli urobiť? 1884 01:34:06,750 --> 01:34:11,090 >> Chcem povedať, či C sa rovná rovná, citácie koniec citátu, 1885 01:34:11,090 --> 01:34:16,304 y, potom budem predpokladať, že užívateľ zvolil áno. 1886 01:34:16,304 --> 01:34:17,470 Práve idem k tlači áno. 1887 01:34:17,470 --> 01:34:19,440 Ak by bolo skutočne písanie Program odstránenie, 1888 01:34:19,440 --> 01:34:21,420 môžeme odobrať súbor s viac riadkov kódu. 1889 01:34:21,420 --> 01:34:22,461 Ale budeme držať to jednoduchý. 1890 01:34:22,461 --> 01:34:25,950 1891 01:34:25,950 --> 01:34:31,250 >> Else if c rovná sa rovná n- a teraz tu, budem hovoriť, 1892 01:34:31,250 --> 01:34:32,980 užívateľ musí mať znamená nie. 1893 01:34:32,980 --> 01:34:34,360 A potom ešte, viete čo? 1894 01:34:34,360 --> 01:34:36,200 Neviem, čo iného Užívateľ bude písať. 1895 01:34:36,200 --> 01:34:38,533 Takže som len chcel povedať, že že je chyba, bez ohľadu 1896 01:34:38,533 --> 01:34:40,070 on alebo ona vlastne napísal. 1897 01:34:40,070 --> 01:34:41,180 >> Takže to, čo sa tu deje? 1898 01:34:41,180 --> 01:34:44,530 Tam je zásadný rozdiel proti, čo som urobil v minulosti. 1899 01:34:44,530 --> 01:34:49,300 Úvodzovky, úvodzovky, dvojité citácie, a napriek tomu jednoduché úvodzovky, 1900 01:34:49,300 --> 01:34:50,170 jednoduché úvodzovky. 1901 01:34:50,170 --> 01:34:52,860 Ukazuje sa, že v C, že keď Ak chcete napísať reťazec 1902 01:34:52,860 --> 01:34:56,680 použijete úvodzovky, rovnako ako máme Používam celú tú dobu sa printf. 1903 01:34:56,680 --> 01:35:02,030 >> Ale ak chcete riešiť len Jeden znak, tzv char, 1904 01:35:02,030 --> 01:35:03,780 potom ste skutočne používať apostrofy. 1905 01:35:03,780 --> 01:35:05,450 Tí z vás, ktorí si naprogramovať skôr, pravdepodobne nebude mať 1906 01:35:05,450 --> 01:35:07,850 musel starať o to Rozdiel v niektorých jazykoch. 1907 01:35:07,850 --> 01:35:09,450 V jazyku C, to záleží. 1908 01:35:09,450 --> 01:35:12,560 A tak keď som si char a ja chcem pristúpiť k porovnaniu tohto char pomocou rovná 1909 01:35:12,560 --> 01:35:18,350 sa rovná nejaké písmeno, ako je y alebo N, ja, v skutočnosti, je potrebné mať apostrofy. 1910 01:35:18,350 --> 01:35:19,770 >> Teraz poďme do toho a to dosiahnuť. 1911 01:35:19,770 --> 01:35:26,180 Poďme ďalej a robiť, aby logické bodka lomítko logické. 1912 01:35:26,180 --> 01:35:27,305 A teraz som boli vyzvaní. 1913 01:35:27,305 --> 01:35:30,638 Takže, podľa všetkého, lepšie užívateľskú skúsenosť by mi vlastne povedať, čo robiť tu. 1914 01:35:30,638 --> 01:35:33,030 Ale idem len slepo hovoria, Y áno, OK, pekný. 1915 01:35:33,030 --> 01:35:35,780 >> Povedzme to znovu spustiť, n po obdobie nie, pekný. 1916 01:35:35,780 --> 01:35:39,610 Predpokladajme, že rovnako ako u niektorých ľudí, ktorých poznám, moji Caps Lock kľúč je príliš často. 1917 01:35:39,610 --> 01:35:43,740 Takže ja kapitál Y, vstupovať, došlo k chybe. 1918 01:35:43,740 --> 01:35:46,130 OK, to nie je presne to, čo som očakával. 1919 01:35:46,130 --> 01:35:48,170 V skutočnosti, že počítač robí doslova čo 1920 01:35:48,170 --> 01:35:51,794 Povedal som to do-- kontrolu malé písmená Y a malé písmená n. 1921 01:35:51,794 --> 01:35:53,960 To nemá pocit, že dobrá užívateľské skúsenosti, hoci. 1922 01:35:53,960 --> 01:35:59,010 Spýtam sa pre a prijímam buď malé písmená alebo veľké písmená. 1923 01:35:59,010 --> 01:36:02,090 Tak to dopadá, možno budete chcieť hovoriť niečo ako vo Scratch, 1924 01:36:02,090 --> 01:36:08,150 rovnako ako doslovne alebo C sa rovná rovná sa kapitálu jednotnej citovanou y. 1925 01:36:08,150 --> 01:36:11,400 Ukázalo sa, že C nemá tento doslovný kľúčové slovo alebo. 1926 01:36:11,400 --> 01:36:12,880 >> Ale má dve zvislé pruhy. 1927 01:36:12,880 --> 01:36:15,463 Musíte sa držať Shift obvykle, Ak používate americkú klávesnicu, 1928 01:36:15,463 --> 01:36:18,910 a udrel na zvislý pruh Kľúčovým nad spiatočnej kľúč. 1929 01:36:18,910 --> 01:36:22,410 Ale to zvislá čiara zvislá čiara znamená alebo. 1930 01:36:22,410 --> 01:36:26,220 >> Pokiaľ naopak, chceli sme hovoriť a rovnako ako v Scratch, 1931 01:36:26,220 --> 01:36:28,180 by sme mohli urobiť ampersand znaku at. 1932 01:36:28,180 --> 01:36:31,330 To nedáva logický zmysel tu, pretože človek nemohol 1933 01:36:31,330 --> 01:36:37,110 zadali obaja y a malé písmená y a kapitál Y ako rovnaký znak. 1934 01:36:37,110 --> 01:36:39,470 Takže alebo je to, čo máme v úmysle tu. 1935 01:36:39,470 --> 01:36:46,280 >> Takže keď som to urobiť v oboch miestach alebo C rovná sa rovná kapitál N, teraz znovu spustiť, 1936 01:36:46,280 --> 01:36:49,390 make logické, spustite logické. 1937 01:36:49,390 --> 01:36:51,200 Teraz môžem písať y. 1938 01:36:51,200 --> 01:36:53,920 A môžem to urobiť znovu kapitál Y, alebo kapitál N. 1939 01:36:53,920 --> 01:36:56,630 A mohol by som pridať ďalšie kombinácia pokoja. 1940 01:36:56,630 --> 01:36:58,810 >> Tak toto je logickým Program ak teraz 1941 01:36:58,810 --> 01:37:01,940 Ja kontrola logicky pre táto hodnota alebo je táto hodnota. 1942 01:37:01,940 --> 01:37:06,420 A nemám na nevyhnutne prísť s ďalšími dvoma IFS Alebo keby. 1943 01:37:06,420 --> 01:37:09,960 Môžem skutočne spojiť niektoré z súvisiace logiku dohromady týmto spôsobom. 1944 01:37:09,960 --> 01:37:11,950 Takže by to bolo lepšie navrhnuté tak, ako len 1945 01:37:11,950 --> 01:37:17,490 povediac: Ak C sa rovná malými písmenami y, tlačiť áno, inak či c rovná kapitálu Y, 1946 01:37:17,490 --> 01:37:20,074 tlačiť áno, inak či c rovná lower-- inými slovami, 1947 01:37:20,074 --> 01:37:21,990 nemusíte mať stále viac a viac pobočiek. 1948 01:37:21,990 --> 01:37:28,840 Môžete kombinovať niektoré z ekvivalentu vetvy Logicky teda týmto spôsobom. 1949 01:37:28,840 --> 01:37:34,150 >> Takže poďme sa pozrieť na len jeden finálna prísada, jeden Finálny konštrukt, 1950 01:37:34,150 --> 01:37:34,847 ktorý umožňuje C. 1951 01:37:34,847 --> 01:37:36,930 A vrátime sa v Budúce ostatným ešte. 1952 01:37:36,930 --> 01:37:41,400 A potom budeme uzatvárať prehliadaním o teplote správnosti code-- 1953 01:37:41,400 --> 01:37:46,070 dostať kód work-- ale dizajn kódu, a zasadiť semienka tie čoskoro. 1954 01:37:46,070 --> 01:37:51,337 >> Tak nechaj ma ísť dopredu a otvárajú nový súbor tu. 1955 01:37:51,337 --> 01:37:51,920 Vieš čo? 1956 01:37:51,920 --> 01:37:54,450 Chystám sa znova zaviesť že rovnaký program, 1957 01:37:54,450 --> 01:37:55,940 ale s použitím iného konštruktu. 1958 01:37:55,940 --> 01:38:00,110 >> Tak mi dajte rýchlo dať sám Prístup zahrnúť CS50.h 1959 01:38:00,110 --> 01:38:04,150 pre knižnicu CS50, Štandardné IO.H pre printf. 1960 01:38:04,150 --> 01:38:06,510 Daj mi moje int main neplatné. 1961 01:38:06,510 --> 01:38:09,310 A potom tu, nech ma ísť dopredu a to urobiť. 1962 01:38:09,310 --> 01:38:12,010 >> Char c dostane dostať char, rovnako ako predtým. 1963 01:38:12,010 --> 01:38:16,770 A budem používať nový konštrukt now-- spínač, na aký charakter? 1964 01:38:16,770 --> 01:38:19,820 Takže prepínač je niečo ako spínanie koľaje. 1965 01:38:19,820 --> 01:38:22,070 Alebo, naozaj, to je v istom zmysle if iné, ak else if, 1966 01:38:22,070 --> 01:38:23,980 ale písaný trochu inak. 1967 01:38:23,980 --> 01:38:25,490 >> Prepínač vyzerá takto. 1968 01:38:25,490 --> 01:38:29,060 Máte vypínač a potom to, čo znak alebo číslo, ktoré chcete prezrieť, 1969 01:38:29,060 --> 01:38:32,000 potom niektoré zložené zátvorky ako v Scratch, stačí povedať robiť toto. 1970 01:38:32,000 --> 01:38:33,480 A potom máte rôzne prípady. 1971 01:38:33,480 --> 01:38:34,830 >> Nemusíte použiť, ak a inde. 1972 01:38:34,830 --> 01:38:37,050 Doslova používať prípad slovo. 1973 01:38:37,050 --> 01:38:38,790 A vy by ste povedať niečo také. 1974 01:38:38,790 --> 01:38:43,820 >> Takže v prípade malými písmenami y, alebo v prípade, že Y kapitálu, 1975 01:38:43,820 --> 01:38:47,350 pokračujte a vytlačiť áno. 1976 01:38:47,350 --> 01:38:49,020 A potom vypukne spínača. 1977 01:38:49,020 --> 01:38:49,580 To je všetko. 1978 01:38:49,580 --> 01:38:50,880 Skončili sme. 1979 01:38:50,880 --> 01:38:57,270 >> Else if, tak povediac, malé písmená n, alebo N kapitál, 1980 01:38:57,270 --> 01:39:02,560 potom choďte do toho a tlač out nie, a potom zlomiť. 1981 01:39:02,560 --> 01:39:08,022 Else-- a tento druh je štandardný prípad indeed-- printf error-- 1982 01:39:08,022 --> 01:39:10,980 a len pre istotu, hoci Logicky táto prestávka nie je nutné 1983 01:39:10,980 --> 01:39:12,896 preto, že sme na konci prepínače tak ako tak, 1984 01:39:12,896 --> 01:39:14,520 Ja som teraz vypadla z prepínača. 1985 01:39:14,520 --> 01:39:16,280 Takže to vyzerá trochu inak. 1986 01:39:16,280 --> 01:39:18,272 >> Ale logicky, je to v skutočnosti ekvivalentné. 1987 01:39:18,272 --> 01:39:19,980 A prečo by ste mali používať jeden nad druhým? 1988 01:39:19,980 --> 01:39:23,220 Niekedy proste osobné preferencie, Niekedy estetika, 1989 01:39:23,220 --> 01:39:25,420 keď som sa pozrel na to Teraz je tu niečo, 1990 01:39:25,420 --> 01:39:27,510 Treba povedať, pre čitateľnosť tohto kódu. 1991 01:39:27,510 --> 01:39:30,690 Myslím, nevadí skutočnosť, že toto Kód je nová pre mnohých z nás v miestnosti. 1992 01:39:30,690 --> 01:39:33,515 >> Ale to len tak je dosť. 1993 01:39:33,515 --> 01:39:37,760 Vidíte malé písmená Y, Y kapitálu, malé písmená n, kapitál N default, 1994 01:39:37,760 --> 01:39:40,150 to len trochu skoky na vás takým spôsobom, 1995 01:39:40,150 --> 01:39:42,200 že pravdepodobne, možno Predchádzajúci príklad 1996 01:39:42,200 --> 01:39:45,780 s IFS a zvislé pruhy, a inde IFS, nemusí mať. 1997 01:39:45,780 --> 01:39:51,600 Tak to je naozaj vec osobné voľba, naozaj, alebo čitateľnosť, 1998 01:39:51,600 --> 01:39:52,360 kódu. 1999 01:39:52,360 --> 01:39:58,230 >> Ale pokiaľ ide o funkčnosť, dovoľte mi, aby som pokračovať a robiť spínač, dot lomítko 2000 01:39:58,230 --> 01:40:05,830 switch, a teraz písať malými písmenami y, kapitál Y, malé n, kapitál N, 2001 01:40:05,830 --> 01:40:09,250 David, znovu pretože to je ani jeden znak. 2002 01:40:09,250 --> 01:40:12,050 Urobme x, chyba, ako sa očakávalo. 2003 01:40:12,050 --> 01:40:15,640 A logically-- a to je niečo, Chcel by som povzbudiť v general-- dokonca 2004 01:40:15,640 --> 01:40:17,790 aj keď sme len poškriabaniu Povrch niektoré z týchto funkcií. 2005 01:40:17,790 --> 01:40:20,560 >> A to nemusí byť zrejmé, keď vás si sadnúť na klávesnici, 2006 01:40:20,560 --> 01:40:21,370 Ako to funguje? 2007 01:40:21,370 --> 01:40:22,240 Čo by to urobiť? 2008 01:40:22,240 --> 01:40:25,630 Krásna vec, o ktoré majú notebook alebo desktop, alebo prístup 2009 01:40:25,630 --> 01:40:29,290 k počítaču pomocou prekladača, a s editora kódu, ako je táto, 2010 01:40:29,290 --> 01:40:32,990 sa môžete takmer vždy odpovedať na tieto otázky pre seba len pokúša. 2011 01:40:32,990 --> 01:40:36,570 >> Napríklad, ak je rétorická otázka po ruke boli, 2012 01:40:36,570 --> 01:40:39,540 čo sa stane, keď zabudnete prestávky na výroky? 2013 01:40:39,540 --> 01:40:41,400 Čo je vlastne veľmi časté, čo robiť, 2014 01:40:41,400 --> 01:40:43,540 pretože to nevyzerá ako by ste naozaj potrebujú. 2015 01:40:43,540 --> 01:40:46,790 Nemajú naozaj dokončiť svoj myslel ako zátvorke alebo kučeravé 2016 01:40:46,790 --> 01:40:47,714 rovnátka robí. 2017 01:40:47,714 --> 01:40:49,630 Poďme ďalej a překompilovat kód a uvidíme. 2018 01:40:49,630 --> 01:40:53,690 Tak, aby spínač, bodka lomítko prepínač. 2019 01:40:53,690 --> 01:40:56,435 Poďme písať malými písmenami y, vrchný prípad, Enter. 2020 01:40:56,435 --> 01:40:59,390 2021 01:40:59,390 --> 01:41:00,700 Tak som napísal y. 2022 01:41:00,700 --> 01:41:04,420 >> Program povedal, že áno, nie, chyba, ako by to bolo mení svoj názor. 2023 01:41:04,420 --> 01:41:09,280 Ale celkom to bolo, pretože to, čo sa deje s vypínačom sa o prvý prípad, že 2024 01:41:09,280 --> 01:41:13,899 Zápas v podstate znamená, hej počítač, vykonať všetky kód pod ňou. 2025 01:41:13,899 --> 01:41:16,690 A ak nechcete povedať zlomu, alebo Nehovorte pauzu, alebo nehovorte pauzu, 2026 01:41:16,690 --> 01:41:19,540 Počítač bude fúkať cez všetky tie linky 2027 01:41:19,540 --> 01:41:22,779 a vykonávať všetky z nich, kým sa dostane do tej zloženú zátvorkou. 2028 01:41:22,779 --> 01:41:24,320 Takže brzdy sú skutočne nevyhnutné. 2029 01:41:24,320 --> 01:41:27,120 Ale stánok s jedlom tu je, keď pochybností, skúsiť niečo. 2030 01:41:27,120 --> 01:41:29,510 Možno uložiť prvý kód, alebo ich uložiť do iného súboru 2031 01:41:29,510 --> 01:41:32,930 ak ste naozaj starosti poplietol a museli obnoviť 2032 01:41:32,930 --> 01:41:34,430 dielo, ktoré viete, že funguje. 2033 01:41:34,430 --> 01:41:35,410 >> Ale skúste veci. 2034 01:41:35,410 --> 01:41:38,074 A nebuďte ako strach, snáď, z toho, čo počítač môže robiť, 2035 01:41:38,074 --> 01:41:39,490 alebo že by ste mohli niečo rozbiť. 2036 01:41:39,490 --> 01:41:42,790 Vždy sa môžete vrátiť späť do istej staršej verzie. 2037 01:41:42,790 --> 01:41:45,640 >> Takže poďme končí pohľadom pri konštrukcii kódu. 2038 01:41:45,640 --> 01:41:49,020 Máme teraz túto schopnosť písať Podmienky a zápis slučky, 2039 01:41:49,020 --> 01:41:50,850 a premenné a funkcie volania. 2040 01:41:50,850 --> 01:41:54,590 Takže úprimne povedané, sme trochu späť na kde sme boli pred týždňom sa Scratch, 2041 01:41:54,590 --> 01:42:00,120 hoci s menej presvedčivé textovej Prostredie ako Scratch dovolí. 2042 01:42:00,120 --> 01:42:03,990 >> Ale všimnite si, ako rýchlo sme získali že slovnú zásobu, aj keď je to 2043 01:42:03,990 --> 01:42:07,570 bude chvíľu trvať prepadať, tak, že teraz môžeme použiť tento slovnú zásobu 2044 01:42:07,570 --> 01:42:10,320 písať ďalšie zaujímavé programy. 2045 01:42:10,320 --> 01:42:12,940 A poďme sa dieťa krok ku ktorej takto. 2046 01:42:12,940 --> 01:42:14,890 Nechaj ma ísť dopredu a vytvorenie nového súboru tu. 2047 01:42:14,890 --> 01:42:17,750 >> Idem to nazývať prototype.c, a zaviesť 2048 01:42:17,750 --> 01:42:20,954 Prvýkrát, schopnosť vytvoriť svoj vlastný funkcie. 2049 01:42:20,954 --> 01:42:22,870 Niektorí z vás môžu mať urobil to s Scratch, 2050 01:42:22,870 --> 01:42:25,430 kde si môžete vytvoriť svoj vlastné užívateľské bloky v základe, 2051 01:42:25,430 --> 01:42:27,892 a potom pretiahnuť na miesto všade tam, kde by ste chceli v C. 2052 01:42:27,892 --> 01:42:30,100 A vo väčšine programov jazyky, môžete to urobiť presne to, 2053 01:42:30,100 --> 01:42:33,580 že-- vytvoriť svoj vlastný funkcie, v prípade, že už neexistujú. 2054 01:42:33,580 --> 01:42:38,660 >> Tak napríklad, nechajte ma ísť napred a zahŕňajú CS50.h, a zahŕňajú 2055 01:42:38,660 --> 01:42:43,110 Štandardné IO.H, int main neplatné. 2056 01:42:43,110 --> 01:42:46,020 A teraz máme zástupného pripravený ísť. 2057 01:42:46,020 --> 01:42:48,550 Stále tlač veci rovnako ako mená ľudí dnes. 2058 01:42:48,550 --> 01:42:51,910 A to cíti jako-- by nemal byť pekné, keby tam 2059 01:42:51,910 --> 01:42:53,936 boli funkciu nazvanú názov tlačového? 2060 01:42:53,936 --> 01:42:55,060 Nemám použiť printf. 2061 01:42:55,060 --> 01:42:56,976 Nechcem mať na pamäti, Všetky formátu kódy. 2062 01:42:56,976 --> 01:43:00,050 Prečo nie ja, alebo prečo nie niekto predo mnou, 2063 01:43:00,050 --> 01:43:02,980 Vytvorenie funkcie nazýva tlač meno, že vzhľadom na to nejaké meno, 2064 01:43:02,980 --> 01:43:03,980 jednoducho vytlačí ho von? 2065 01:43:03,980 --> 01:43:08,700 >> Inými slovami, keď poviem, hej, počítač, daj mi reťazec 2066 01:43:08,700 --> 01:43:11,870 tým, že žiada užívateľov o také, pomocou funkcie get reťazec CS50 je. 2067 01:43:11,870 --> 01:43:15,090 Hej, počítač, dal, že reťazec premenná na ľavej strane, 2068 01:43:15,090 --> 01:43:16,150 a nazvať to. 2069 01:43:16,150 --> 01:43:22,150 A potom, hej počítač, pokračuj a vytlačiť to meno osoby, hotovo. 2070 01:43:22,150 --> 01:43:26,240 >> Teraz by to bolo pekné, pretože tento program, vhodne pomenovaný, 2071 01:43:26,240 --> 01:43:29,170 mi povie, čo to má robiť prostredníctvom mien tých, fungovali je. 2072 01:43:29,170 --> 01:43:32,930 Nechaj ma ísť a robiť prototyp, Enter. 2073 01:43:32,930 --> 01:43:34,930 A, bohužiaľ, toto sa nebude lietať. 2074 01:43:34,930 --> 01:43:39,430 >> Prototype.c, riadok 7, znak 5, chyba, implicitné vyhlásenie 2075 01:43:39,430 --> 01:43:42,960 z funkcie mená tlačového je neplatný v C99, C99 2076 01:43:42,960 --> 01:43:45,130 znamenať verzii C ktorá vyšla v roku 1999. 2077 01:43:45,130 --> 01:43:45,730 To je všetko. 2078 01:43:45,730 --> 01:43:48,780 >> Tak neviem, čo To všetko znamená, že doteraz. 2079 01:43:48,780 --> 01:43:50,810 Ale mám rozpoznať chybu v červenej farbe. 2080 01:43:50,810 --> 01:43:51,770 To je celkom zrejmé. 2081 01:43:51,770 --> 01:43:53,769 >> A zdá sa, že s zelená znak tu, 2082 01:43:53,769 --> 01:43:57,520 je problém s názvom tlače, otvorený Paren s, zavrieť zátvorka, semi-hrubého čreva. 2083 01:43:57,520 --> 01:44:01,800 Ale implicitné vyhlásenie Funkcia sme krátko predtým videl. 2084 01:44:01,800 --> 01:44:04,880 To znamená, jednoducho, že Clang nevie, čo mám na mysli. 2085 01:44:04,880 --> 01:44:09,000 >> Použil som slovo, slovnú zásobu, že je Nikdy nevidel, ani učili predtým. 2086 01:44:09,000 --> 01:44:11,950 A tak to musím naučiť čo táto funkcia znamená. 2087 01:44:11,950 --> 01:44:13,590 Takže ja idem dopredu a urobiť to. 2088 01:44:13,590 --> 01:44:17,970 >> Chystám sa ísť dopredu a realizovať moje vlastné volanie funkcie Print Name. 2089 01:44:17,970 --> 01:44:24,720 A budem hovoriť, ako vyplýva, že Robí to, printf, ahoj, percentá 2090 01:44:24,720 --> 01:44:27,760 s, lomítko n, meno, bodkočiarka. 2091 01:44:27,760 --> 01:44:29,250 Tak čo som práve urobil? 2092 01:44:29,250 --> 01:44:31,325 >> Tak to dopadá, aby implementovať svoje vlastné funkcie, 2093 01:44:31,325 --> 01:44:33,845 sme trochu požičať niektoré rovnakú štruktúru ako hlavný 2094 01:44:33,845 --> 01:44:35,720 že sme práve boli považovaná za samozrejmosť, a ja 2095 01:44:35,720 --> 01:44:37,730 viem len kopírovanie a vkladanie presne to, čo 2096 01:44:37,730 --> 01:44:39,170 Písal som v minulosti. 2097 01:44:39,170 --> 01:44:40,570 Ale všimnite si vzor tu. 2098 01:44:40,570 --> 01:44:43,750 Int, Main, Void, budeme šprýmař oddelene netrvalo dlho, čo to vlastne znamená. 2099 01:44:43,750 --> 01:44:46,160 >> Ale pre dnešok, len Všimnite si, súbežnosť. 2100 01:44:46,160 --> 01:44:48,210 Void, tlač názvu, string name, takže je tu 2101 01:44:48,210 --> 01:44:50,310 nachový kľúčových slov, ktoré ideme na začiatok 2102 01:44:50,310 --> 01:44:54,067 volá návratový typ, názov funkcie, a potom vstup. 2103 01:44:54,067 --> 01:44:56,400 Takže v skutočnosti, možno destilovať tento druh ako minulého týždňa 2104 01:44:56,400 --> 01:44:59,030 pretože sa jedná o názov alebo Algoritmus kódu ktorom sme 2105 01:44:59,030 --> 01:45:00,761 bude write-- algoritmus podkladových 2106 01:45:00,761 --> 01:45:02,010 Kód budeme písať. 2107 01:45:02,010 --> 01:45:03,180 >> To je jeho vklad. 2108 01:45:03,180 --> 01:45:04,670 To je jeho výstup. 2109 01:45:04,670 --> 01:45:08,730 Táto funkcia, názov tlač, je navrhnuté tak, aby reťazec s názvom názov, 2110 01:45:08,730 --> 01:45:11,350 alebo čokoľvek iné, ako vstup, a potom neplatné. 2111 01:45:11,350 --> 01:45:13,904 To nič nevracia, ako dostať reťazec alebo získať int robí. 2112 01:45:13,904 --> 01:45:15,570 Tak to bude mi niečo odovzdať späť. 2113 01:45:15,570 --> 01:45:17,960 Je to len bude mať Vedľajším efektom, tak povediac, 2114 01:45:17,960 --> 01:45:19,570 tlačiť meno osoby. 2115 01:45:19,570 --> 01:45:22,260 Takže si všimnúť, riadok 7, I môžu volať mená tlače. 2116 01:45:22,260 --> 01:45:25,920 Riadok 10, môžem definovať alebo zaviesť názov tlače. 2117 01:45:25,920 --> 01:45:28,450 Ale, bohužiaľ, to nestačí. 2118 01:45:28,450 --> 01:45:31,230 >> Nechaj ma ísť dopredu a překompilovat to po uložení. 2119 01:45:31,230 --> 01:45:33,910 Whoa, teraz som to urobil horšie, by sa mohlo zdať. 2120 01:45:33,910 --> 01:45:37,027 Takže implicitné vyhlásenie názov funkcie tlače je neplatná. 2121 01:45:37,027 --> 01:45:38,360 A opäť je tu ďalšie chyby. 2122 01:45:38,360 --> 01:45:41,430 Ale ako som varoval už skôr, a to aj ak sa dostanete zahltení, 2123 01:45:41,430 --> 01:45:44,850 alebo trochu smutné vidieť toľko Chyby, zamerať sa len na prvé 2124 01:45:44,850 --> 01:45:47,500 spočiatku, pretože by to mohlo len mali kaskádový účinok. 2125 01:45:47,500 --> 01:45:51,970 Takže C, alebo Clang konkrétnejšie, stále nerozpozná názov tlače. 2126 01:45:51,970 --> 01:45:54,580 >> A to preto, že Clang, zámerné, je tak trochu hlúpy. 2127 01:45:54,580 --> 01:45:56,280 To len robí to, čo si to povedať robiť. 2128 01:45:56,280 --> 01:46:00,950 A to robí len preto, v poradí v ktorom sa povedať robiť. 2129 01:46:00,950 --> 01:46:05,270 >> Tak som definované hlavné on-line štyri, rovnako ako sme robili dosť často. 2130 01:46:05,270 --> 01:46:07,980 Ja som je definovaný názov tlačového na riadku 10. 2131 01:46:07,980 --> 01:46:11,793 Ale ja sa snažím používať názov tlačového na linke sedem. 2132 01:46:11,793 --> 01:46:13,670 >> Je to príliš skoro, ešte neexistuje. 2133 01:46:13,670 --> 01:46:19,150 Takže som mohol byť šikovný, a to ako, OK, takže poďme len hrať spolu, 2134 01:46:19,150 --> 01:46:23,680 a pohybovať názov tlačového hore tu, a znovu zostaviť. 2135 01:46:23,680 --> 01:46:24,550 Panebože. 2136 01:46:24,550 --> 01:46:25,260 Fungovalo to. 2137 01:46:25,260 --> 01:46:26,670 Bolo to tak jednoduché, ako to. 2138 01:46:26,670 --> 01:46:28,120 >> Ale logika je presne to. 2139 01:46:28,120 --> 01:46:30,870 Musíte sa naučiť, čo to Clang je, že sa najprv definuje funkciu. 2140 01:46:30,870 --> 01:46:31,920 Potom ho môžete použiť. 2141 01:46:31,920 --> 01:46:33,940 Ale, úprimne povedané, to cíti ako šikmú plochu. 2142 01:46:33,940 --> 01:46:35,773 >> Takže zakaždým, keď som bežať na problém, som len 2143 01:46:35,773 --> 01:46:39,450 bude pre zvýraznenie a skopírujte kód Napísal som, nakrájajte a vložte ho sem. 2144 01:46:39,450 --> 01:46:41,370 A iste, mohli by sme vymyslieť niektoré scenáre 2145 01:46:41,370 --> 01:46:43,286 kde jedna funkcia by mohol treba volať iný. 2146 01:46:43,286 --> 01:46:46,030 A vy jednoducho nemôže dať každý Funkcia nad každý iný. 2147 01:46:46,030 --> 01:46:47,930 >> Tak to dopadá tú lepším riešením. 2148 01:46:47,930 --> 01:46:50,100 Môžeme nechať to byť. 2149 01:46:50,100 --> 01:46:53,677 A úprimne povedané, je to všeobecne pekné, a pohodlné, a dobrý dizajn 2150 01:46:53,677 --> 01:46:56,760 aby hlavné prvý, pretože, opäť, Hlavným rovnako ako kliknutie zelená vlajka, 2151 01:46:56,760 --> 01:46:59,027 že je funkcia, ktorá dostane popravený v predvolenom nastavení. 2152 01:46:59,027 --> 01:47:01,110 Takže si pokojne dať že v hornej časti súboru 2153 01:47:01,110 --> 01:47:03,560 takže keď vy alebo niektorý Iný človek pozrie na súbor 2154 01:47:03,560 --> 01:47:06,360 viete, čo sa deje jednoduchým prečítaním hlavné prvý. 2155 01:47:06,360 --> 01:47:15,360 Tak to dopadá, môžeme povedať Clang proaktívne, hej, Clang na linke štyri, 2156 01:47:15,360 --> 01:47:17,940 Sľubujem, že budem realizovať funkcia nazvaná Tlač 2157 01:47:17,940 --> 01:47:22,600 Názov, ktorý má názov reťazec s názvom ako vstup a vráti nič, void. 2158 01:47:22,600 --> 01:47:24,770 A budem dostať okolo vykonávanie neskôr. 2159 01:47:24,770 --> 01:47:25,680 >> Prichádza Main. 2160 01:47:25,680 --> 01:47:29,130 Hlavným teraz na linke 9 môžu používať Názov tlačového pretože Clang 2161 01:47:29,130 --> 01:47:32,600 dôveruje, že nakoniec, že narazia definíciu 2162 01:47:32,600 --> 01:47:34,880 implementácia Print Name. 2163 01:47:34,880 --> 01:47:37,390 Takže potom, čo mi zachránil súboru, nech ma ísť dopredu a vytvoriť prototyp, 2164 01:47:37,390 --> 01:47:38,498 vyzerá dobre tentokrát. 2165 01:47:38,498 --> 01:47:43,470 Dot lomítko, prototyp, dovoľte mi, aby som pokračovať a zadať názov. 2166 01:47:43,470 --> 01:47:48,440 David Ahoj Davide, Zamil, ahoj Zamil, a, naozaj, teraz to funguje. 2167 01:47:48,440 --> 01:47:52,200 >> Takže zložka je, že máme urobil vlastné funkcie, ako zvyk 2168 01:47:52,200 --> 01:47:54,219 Scratch blok my ju volá. 2169 01:47:54,219 --> 01:47:57,010 Ale na rozdiel od nuly, kde si môžete Len ju vytvoriť a začať používať, 2170 01:47:57,010 --> 01:47:59,330 Teraz musíme byť trochu pedantská, 2171 01:47:59,330 --> 01:48:03,410 a vlastne trénovať Clang používať, alebo ju čaká. 2172 01:48:03,410 --> 01:48:09,140 Teraz, ako stranou, prečo celú tú dobu majú sme boli len slepo na viere, vrátane 2173 01:48:09,140 --> 01:48:12,170 CS50.h vrátane štandardného IO.H? 2174 01:48:12,170 --> 01:48:15,190 >> Tak to dopadá, Medzi niekoľko ďalších vecí, 2175 01:48:15,190 --> 01:48:18,550 všetko, čo je v tých dot h Súbory, ktoré sa dejú byť súborov. 2176 01:48:18,550 --> 01:48:20,460 Sú hlavičkové súbory, tak povediac. 2177 01:48:20,460 --> 01:48:23,270 Sú stále napísaný v C. Ale oni sú iný typ súboru. 2178 01:48:23,270 --> 01:48:28,690 >> Pre túto chvíľu, môžete do značnej miery predpokladať, že všetko, čo je vo vnútri CS50.h 2179 01:48:28,690 --> 01:48:33,360 Je niekto vtipy, ako je táto, nie pre funkcie s názvom Print Name, 2180 01:48:33,360 --> 01:48:36,840 ale k Get reťazec, Get Float, a niekoľko ďalších. 2181 01:48:36,840 --> 01:48:41,510 A existujú podobné prototypy, jeden vložky, vnútri štandardného IO.H 2182 01:48:41,510 --> 01:48:46,241 pre printf, ktorá je teraz v moje vlastné tlače názov funkcie. 2183 01:48:46,241 --> 01:48:49,490 Takže inými slovami, celá táto doba máme práve slepo kopírovanie a vkladanie 2184 01:48:49,490 --> 01:48:51,780 patrí to, zahŕňajú to, čo sa deje? 2185 01:48:51,780 --> 01:48:55,310 To sú len trochu stopy k rinčanie pokiaľ ide o aké funkcie 2186 01:48:55,310 --> 01:49:00,170 sú skutočne realizované, len inde v rôznych súborov 2187 01:49:00,170 --> 01:49:02,440 inde v systéme. 2188 01:49:02,440 --> 01:49:05,160 >> Takže sme implementovaný meno tlače. 2189 01:49:05,160 --> 01:49:07,910 To predsa má tento nežiaduci účinok tlač niečo na obrazovke. 2190 01:49:07,910 --> 01:49:10,170 Ale to nie je v skutočnosti podaj mi niečo späť. 2191 01:49:10,170 --> 01:49:12,200 Ako môžeme ísť o vykonávania programu, ktorý 2192 01:49:12,200 --> 01:49:14,510 to mi podať niečo pre seba? 2193 01:49:14,510 --> 01:49:15,580 >> Dobre, skúsme to. 2194 01:49:15,580 --> 01:49:21,360 Nechaj ma ísť dopredu a realizovať súbor nazvaný return.c 2195 01:49:21,360 --> 01:49:24,530 takže môžeme ukázať, ako niečo rovnako ako Get reťazec, alebo získať Int, 2196 01:49:24,530 --> 01:49:27,340 je vlastne vracia niečo späť užívateľovi. 2197 01:49:27,340 --> 01:49:29,840 Poďme ďalej a definovať int main neplatné. 2198 01:49:29,840 --> 01:49:33,230 >> A opäť v budúcnosti, my budeme vysvetlí, čo to int i tú prázdnotu 2199 01:49:33,230 --> 01:49:34,090 je v skutočnosti robí. 2200 01:49:34,090 --> 01:49:35,840 Ale pre dnešok, zmienime brať ako samozrejmosť. 2201 01:49:35,840 --> 01:49:39,970 Chystám sa ísť dopredu a printf, pre dobrú užívateľské skúsenosti, x je. 2202 01:49:39,970 --> 01:49:44,360 A potom budem čakať na Užívateľ dať mi x s get int. 2203 01:49:44,360 --> 01:49:48,459 >> A potom budem pokračovať a vytlačiť x na námestí. 2204 01:49:48,459 --> 01:49:50,500 Takže keď máte len klávesnica, ľudia obyčajne 2205 01:49:50,500 --> 01:49:52,600 použite malú mrkvu symbol na klávesnici 2206 01:49:52,600 --> 01:49:55,330 reprezentovať na napájanie z nej alebo exponent. 2207 01:49:55,330 --> 01:49:58,960 SOx druhou je prítomný aj. 2208 01:49:58,960 --> 01:50:00,660 >> A teraz budem robiť. 2209 01:50:00,660 --> 01:50:03,940 Mohol by som do--, čo je x na druhú? x Squared je x krát x. 2210 01:50:03,940 --> 01:50:06,690 >> A my sme to urobili niektorí Pred časom už dnes. 2211 01:50:06,690 --> 01:50:08,730 To nemá pocit, všetko, čo veľký pokrok. 2212 01:50:08,730 --> 01:50:09,570 Vieš čo? 2213 01:50:09,570 --> 01:50:13,100 Poďme využiť niektoré z tejto myšlienky od minule abstrakcie. 2214 01:50:13,100 --> 01:50:16,080 >> Nebolo by pekné, keby tam je funkcia nazvaná 2215 01:50:16,080 --> 01:50:18,460 štvorec, ktorý robí presne to? 2216 01:50:18,460 --> 01:50:20,640 To ešte na konci deň, robí tú istú matematiku. 2217 01:50:20,640 --> 01:50:22,410 Ale poďme abstraktné preč myšlienky o venovanie 2218 01:50:22,410 --> 01:50:25,280 jedno číslo vynásobí Ďalším, a len dať mu meno, 2219 01:50:25,280 --> 01:50:27,360 ako štvorec túto hodnotu. 2220 01:50:27,360 --> 01:50:29,560 >> A, inými slovami, v C, poďme vytvoriť funkciu 2221 01:50:29,560 --> 01:50:32,660 volal štvorec, ktorý robí presne to. 2222 01:50:32,660 --> 01:50:34,600 Bude to nazvať štvorcových. 2223 01:50:34,600 --> 01:50:35,790 Bude to trvať int. 2224 01:50:35,790 --> 01:50:37,820 A my bude len nazývajú n, v predvolenom nastavení. 2225 01:50:37,820 --> 01:50:39,403 >> Ale my sme mohli nazvať niečo chceme. 2226 01:50:39,403 --> 01:50:42,900 A všetko, čo to bude áno, doslova, je návrat 2227 01:50:42,900 --> 01:50:45,810 výsledok n-krát n. 2228 01:50:45,810 --> 01:50:48,980 Ale preto, že je vracať niečo, ktorý 2229 01:50:48,980 --> 01:50:53,690 je kľúčové slovo vo fialovej máme Nikdy predtým nevidel, som na linke 11, 2230 01:50:53,690 --> 01:50:55,410 Nemožno jednoducho povedať void tentoraz. 2231 01:50:55,410 --> 01:51:01,320 >> Neplatné, v tomto príklade sme práve videli skôr názvu tlače, jednoducho znamená, 2232 01:51:01,320 --> 01:51:02,190 urob niečo. 2233 01:51:02,190 --> 01:51:04,170 Ale nie je mi odovzdať niečo späť. 2234 01:51:04,170 --> 01:51:06,790 V tomto prípade, ja chcem Pre návrat n krát n, 2235 01:51:06,790 --> 01:51:08,460 alebo čo to je, že číslo. 2236 01:51:08,460 --> 01:51:12,460 >> Takže nemôžem povedať, hej, počítač, Ja nič vrátiť, neplatné. 2237 01:51:12,460 --> 01:51:16,166 Bude to návrat zo svojej povahy, int. 2238 01:51:16,166 --> 01:51:17,790 A tak to je všetko, čo sa tu deje. 2239 01:51:17,790 --> 01:51:20,070 >> Vstup na námestí bude int. 2240 01:51:20,070 --> 01:51:24,760 A tak, že ju môžeme použiť, musí majú meno, N. To bude výstup 2241 01:51:24,760 --> 01:51:26,240 int, ktorý nepotrebuje meno. 2242 01:51:26,240 --> 01:51:29,590 Môžeme to nechať na hlavnej, alebo ten, kto je pomocou ma pamätať túto hodnotu Keby sme 2243 01:51:29,590 --> 01:51:31,120 chcieť s vlastným premenné. 2244 01:51:31,120 --> 01:51:33,230 >> A opäť, jedinou novou Tu je kľúčové slovo Return. 2245 01:51:33,230 --> 01:51:34,480 A ja som len robil nejakú matematiku. 2246 01:51:34,480 --> 01:51:41,825 Keby som naozaj chcel byť zbytočné, Mohol by som povedať, int výrobok dostane n-krát n. 2247 01:51:41,825 --> 01:51:44,170 >> A potom by som mohol povedať, vrátiť výrobok. 2248 01:51:44,170 --> 01:51:47,360 Ale opäť, aby môjho uhla čo nastane skôr to jednoducho nie je dobré design-- 2249 01:51:47,360 --> 01:51:50,060 podobne, prečo zaviesť názov, symbol, rovnako ako výrobok, 2250 01:51:50,060 --> 01:51:51,570 len preto, aby okamžite vrátiť? 2251 01:51:51,570 --> 01:51:53,670 Je to trochu čistejšie, o niečo silnejší, takže 2252 01:51:53,670 --> 01:51:59,380 hovoriť, len povedať návrat n-krát n, zbaviť sa tejto línie úplne. 2253 01:51:59,380 --> 01:52:02,860 >> A je to len menej kódu na čítanie, menej príležitostí k chybám. 2254 01:52:02,860 --> 01:52:05,180 A uvidíme, či to v skutočnosti teraz pracuje. 2255 01:52:05,180 --> 01:52:09,380 Teraz, ja idem dopredu a robiť návrat. 2256 01:52:09,380 --> 01:52:11,460 >> Uh-oh, implicitné deklarácie funkcie. 2257 01:52:11,460 --> 01:52:14,080 Urobil som túto chybu predtým, žiadny veľký problém. 2258 01:52:14,080 --> 01:52:18,950 Dovoľte mi písať, alebo zvýrazniť a kopírovať, ten istý prototyp funkcie, 2259 01:52:18,950 --> 01:52:21,342 alebo podpis, funkcia tu. 2260 01:52:21,342 --> 01:52:22,800 Alebo by som mohol pohybovať celú funkciu. 2261 01:52:22,800 --> 01:52:23,841 >> Ale to je trochu lenivý. 2262 01:52:23,841 --> 01:52:24,870 Takže nebudeme robiť. 2263 01:52:24,870 --> 01:52:27,960 Teraz mi dovoľte vrátiť Znovu dot návrat lomítko. 2264 01:52:27,960 --> 01:52:32,790 >> x je 2. x na druhú je 4. x je 3. x druhou 9. 2265 01:52:32,790 --> 01:52:35,300 A funkcie sa zdá Teraz je potrebné pracovať. 2266 01:52:35,300 --> 01:52:36,550 Takže to, čo je tu v tom rozdiel? 2267 01:52:36,550 --> 01:52:42,520 Mám funkciu, ktorá sa nazýva štvorec, V tomto prípade, ktorý som dal na vstupe. 2268 01:52:42,520 --> 01:52:43,830 A ja sa vrátim výstup. 2269 01:52:43,830 --> 01:52:46,210 A napriek tomu, skôr, pokiaľ Otvorím iný príklad 2270 01:52:46,210 --> 01:52:51,640 z minulosti, čo Bol nazývaný prototype.c, 2271 01:52:51,640 --> 01:52:54,770 Mal som tlačovú meno, ktoré vrátil neplatné, tak povediac, 2272 01:52:54,770 --> 01:52:58,730 Alebo sa vrátila nič, a jednoducho mala nežiaduci účinok. 2273 01:52:58,730 --> 01:53:00,230 >> Takže to, čo sa tu deje? 2274 01:53:00,230 --> 01:53:03,520 No, zvažovať funkciu dostať reťazec len na okamih. 2275 01:53:03,520 --> 01:53:06,570 Boli sme pomocou funkcie dostať reťazec v nasledujúcom spôsobom. 2276 01:53:06,570 --> 01:53:10,464 >> Mali sme funkcie dostať reťazec, ako napríklad: CS50.h, 2277 01:53:10,464 --> 01:53:16,624 zahŕňajú štandardný IO.H, int main, neplatné. 2278 01:53:16,624 --> 01:53:18,790 A potom zakaždým, keď som volal get reťazec tak ďaleko, 2279 01:53:18,790 --> 01:53:23,260 Povedal som niečo ako reťazec s dostane dostať reťazec, pretože get string-- 2280 01:53:23,260 --> 01:53:27,880 hovorme tento get.c-- get reťazec Samotný vracia reťazec, ktorý môžem potom 2281 01:53:27,880 --> 01:53:32,050 použiť, a hovoria, ahoj, čiarka, percent s, lomítko n, s. 2282 01:53:32,050 --> 01:53:35,660 >> Tak toto je rovnaký príklad, v skutočnosti, že sme mali predtým. 2283 01:53:35,660 --> 01:53:37,920 Tak sa vráti reťazec hodnotu. 2284 01:53:37,920 --> 01:53:41,260 Ale pred chvíľou, tlačový reťazec nevracia hodnotu. 2285 01:53:41,260 --> 01:53:42,721 To jednoducho má vedľajšie účinky. 2286 01:53:42,721 --> 01:53:44,220 Tak to je zásadný rozdiel. 2287 01:53:44,220 --> 01:53:46,710 Videli sme odlišný typy funkcií teraz, 2288 01:53:46,710 --> 01:53:49,490 z ktorých niektoré sa vrátili hodnôt, z ktorých niektoré nie sú. 2289 01:53:49,490 --> 01:53:51,890 Takže možno je to reťazec alebo int, alebo float. 2290 01:53:51,890 --> 01:53:53,480 Alebo možno je to len neplatné. 2291 01:53:53,480 --> 01:53:55,710 >> A rozdiel je že tieto funkcie, ktoré 2292 01:53:55,710 --> 01:53:59,940 získať dáta a vrátiť hodnotu sú vlastne prinášať niečo späť ku stolu, 2293 01:53:59,940 --> 01:54:01,110 tak povediac. 2294 01:54:01,110 --> 01:54:03,710 Tak poďme do toho a pozrite sa na jeden posledný sadu 2295 01:54:03,710 --> 01:54:09,129 príkladov, ktoré dáva zmysel, teraz z ako by sme mohli skutočne abstraktné lepšie, 2296 01:54:09,129 --> 01:54:11,670 a lepšie a lepšie, alebo viac, a ďalšie a ďalšie, v poradí 2297 01:54:11,670 --> 01:54:13,810 písať, nakoniec, lepšie kód. 2298 01:54:13,810 --> 01:54:16,860 Poďme do toho, a v duchu Scratch, vykonajte nasledujúce kroky. 2299 01:54:16,860 --> 01:54:21,700 >> Nechaj ma ísť dopredu a zahŕňajú CS50.h a štandardné IO.h. 2300 01:54:21,700 --> 01:54:24,010 Nechaj ma ísť dopredu a dať Sám int, hlavné, neplatné. 2301 01:54:24,010 --> 01:54:27,380 A nechaj ma ísť napred, volať toto cough.c. 2302 01:54:27,380 --> 01:54:35,510 >> A nechaj ma ísť dopredu a len ako Scratch, vytlačiť kašeľ / N. 2303 01:54:35,510 --> 01:54:37,170 A ja chcem urobiť trikrát. 2304 01:54:37,170 --> 01:54:39,670 Takže som samozrejme len tak skopírovať a vložiť trikrát. 2305 01:54:39,670 --> 01:54:46,440 Ja som teraz bude robiť kašeľ dot lomítko kašeľ. 2306 01:54:46,440 --> 01:54:50,120 Dajme sám trochu viac priestoru Tu, Enter, kašeľ, kašeľ, kašeľ. 2307 01:54:50,120 --> 01:54:53,970 >> Tam je, samozrejme, už teraz príležitosť pre zlepšenie. 2308 01:54:53,970 --> 01:54:55,679 Ja som skopírovať a vložiť párkrát dnes. 2309 01:54:55,679 --> 01:54:58,261 Ale to bolo len tak ja nie musieť zadať toľko znakov. 2310 01:54:58,261 --> 01:55:00,250 Aj napriek tomu čo zmenil tieto riadky kódu sú. 2311 01:55:00,250 --> 01:55:04,240 >> Tieto tri riadky sú identické, ktorý sa cíti leniví, a samozrejme tak, 2312 01:55:04,240 --> 01:55:07,110 a pravdepodobne nie je správny prístup. 2313 01:55:07,110 --> 01:55:11,029 Takže s tým, čo prísada môžeme zlepšiť tento kód? 2314 01:55:11,029 --> 01:55:12,570 Nemáme skopírovať a vložiť kód. 2315 01:55:12,570 --> 01:55:15,070 >> A vskutku, kedykoľvek máte pocit, yourself kopírovanie a vkladanie, 2316 01:55:15,070 --> 01:55:17,700 a to dokonca k zmene kódu, šance sú tam lepší spôsob. 2317 01:55:17,700 --> 01:55:19,470 A naozaj, tam je. 2318 01:55:19,470 --> 01:55:22,510 Nechaj ma ísť dopredu a urobiť pre sláčiky, aj keď možno nie syntaxe 2319 01:55:22,510 --> 01:55:24,570 prísť ešte prirodzene. 2320 01:55:24,570 --> 01:55:29,494 >> Tieto klávesy stlačte trikrát, jednoducho tým, že robí following-- 2321 01:55:29,494 --> 01:55:31,160 a ja náhodou viem z praxe. 2322 01:55:31,160 --> 01:55:32,810 Ale máme rad príkladov teraz. 2323 01:55:32,810 --> 01:55:34,950 A uvidíte on-line Ďalšie referencie v pokoji. 2324 01:55:34,950 --> 01:55:37,790 >> To je syntax na riadku 6, ktoré podobne ako Scratch, ktorý sa opakuje 2325 01:55:37,790 --> 01:55:40,090 blok, opakujte nasledujúce trikrát. 2326 01:55:40,090 --> 01:55:41,340 Je to trochu magické teraz. 2327 01:55:41,340 --> 01:55:43,050 Ale to dostane viac, a známejší. 2328 01:55:43,050 --> 01:55:45,050 >> A to bude opakovať linka osem trikrát, 2329 01:55:45,050 --> 01:55:52,390 takže keď som re-kompilácii make kašeľ, dot lomítko kašeľ, kašeľ, kašeľ, kašeľ. 2330 01:55:52,390 --> 01:55:54,030 To ešte pracuje rovnakým spôsobom. 2331 01:55:54,030 --> 01:55:55,550 Takže to je všetko v poriadku a dobre. 2332 01:55:55,550 --> 01:55:58,200 Ale to nie je moc roztržitý. 2333 01:55:58,200 --> 01:55:59,371 >> Je to úplne správne. 2334 01:55:59,371 --> 01:56:01,370 Ale je to pocit, ako by tam by mohlo byť príležitosťou, 2335 01:56:01,370 --> 01:56:03,750 ako vo svete Scratch, na druhom štarte 2336 01:56:03,750 --> 01:56:07,530 sem pridať nejaké sémantiku, takže Nemám jednoducho niečo pre sláčiky, 2337 01:56:07,530 --> 01:56:09,867 a funkcie, ktorá hovorí: kašeľ, alebo sa kašeľ. 2338 01:56:09,867 --> 01:56:10,450 Vieš čo? 2339 01:56:10,450 --> 01:56:12,620 skúsim byť málo chladnejšie než to, 2340 01:56:12,620 --> 01:56:16,090 a vlastne napísať funkciu, ktorá má niektoré nežiaduce účinky, ktoré hovoria, že kašeľ. 2341 01:56:16,090 --> 01:56:20,830 >> A to trvá žiadny vstup, a nevracia žiadnu hodnotu ako výstup. 2342 01:56:20,830 --> 01:56:22,680 Ale viete, čo to robí? 2343 01:56:22,680 --> 01:56:29,370 To robí tohle-- printf, citát koniec citátu, kašeľ. 2344 01:56:29,370 --> 01:56:32,380 >> A teraz tu, idem ísť dopredu a pre int, 2345 01:56:32,380 --> 01:56:36,070 aj dostane na nulu, aj menej ako tri, ja a navyše. 2346 01:56:36,070 --> 01:56:39,770 Chystám sa to urobiť printf, ktorá je pravdepodobne implementácia nízka úroveň 2347 01:56:39,770 --> 01:56:40,270 detail. 2348 01:56:40,270 --> 01:56:41,353 Nezaujíma ma, ako ku kašľu. 2349 01:56:41,353 --> 01:56:43,240 Len chcem použiť funkciu kašeľ. 2350 01:56:43,240 --> 01:56:44,840 A ja som jednoducho ísť zavolať kašeľ. 2351 01:56:44,840 --> 01:56:46,204 >> Teraz si všimnite dichotómia. 2352 01:56:46,204 --> 01:56:49,370 Pri volaní funkcie, ak nemáte chcú dať to vstupy, úplne v pohode. 2353 01:56:49,370 --> 01:56:51,780 Proste to otvorené zátvorka, v blízkom okolí párenia, a máte hotovo. 2354 01:56:51,780 --> 01:56:56,271 >> Pri definovaní funkcie, alebo deklarovať prototyp funkciu je, 2355 01:56:56,271 --> 01:56:58,770 ak vopred viete, že to nie je bude trvať žiadne argumenty, 2356 01:56:58,770 --> 01:57:01,170 hovoria neplatné tam tých zátvorkách. 2357 01:57:01,170 --> 01:57:05,660 A v tom je isté, že vás nebude náhodne zneužiť ho. 2358 01:57:05,660 --> 01:57:07,020 Nechaj ma ísť dopredu a robiť kašeľ. 2359 01:57:07,020 --> 01:57:08,540 A samozrejme som urobil chybu. 2360 01:57:08,540 --> 01:57:10,410 >> Sakra, tam je to implicitné vyhlásenia. 2361 01:57:10,410 --> 01:57:11,325 Ale to je v poriadku. 2362 01:57:11,325 --> 01:57:12,590 Je to ľahké opraviť. 2363 01:57:12,590 --> 01:57:18,240 Potrebujem len prototyp výš v mojom súbore, ako som vlastne používať. 2364 01:57:18,240 --> 01:57:20,070 >> Takže teraz mi dovoľte kašeľ znovu, pekný. 2365 01:57:20,070 --> 01:57:20,790 Teraz to funguje. 2366 01:57:20,790 --> 01:57:22,930 Skontrolujte, kašeľ, kašeľ, kašeľ, kašeľ. 2367 01:57:22,930 --> 01:57:25,930 Takže by ste si mohli myslieť, že sme naozaj len niečo málo cez engineering tento problém. 2368 01:57:25,930 --> 01:57:26,763 A skutočne sme. 2369 01:57:26,763 --> 01:57:28,870 To nie je dobrá kandidát programu 2370 01:57:28,870 --> 01:57:31,930 v okamihu, keď pre refactoring, a to, čo je 2371 01:57:31,930 --> 01:57:35,645 volal hierarchický rozklad, kde budete mať nejaký kód, a potom 2372 01:57:35,645 --> 01:57:38,790 tak nejako faktor veci von, tak ako pripisovať viac sémantiku k nim, 2373 01:57:38,790 --> 01:57:40,930 a opakovane to nakoniec z dlhodobého hľadiska. 2374 01:57:40,930 --> 01:57:43,490 Ale je to stavebným kameňom smerom sofistikovanejšie programy 2375 01:57:43,490 --> 01:57:45,600 že začneme písanie onedlho že 2376 01:57:45,600 --> 01:57:50,090 nám umožňuje mať slovnú zásobu s ktorým písať lepšie kód. 2377 01:57:50,090 --> 01:57:52,920 A skutočne, pozrieme sa, či by sme nemožno zovšeobecniť to ďalej. 2378 01:57:52,920 --> 01:57:57,984 >> Zdá sa, že trochu chromý, že ja, hlavné, musieť starať o tejto látat pre sláčiky, 2379 01:57:57,984 --> 01:57:59,400 a volanie kašeľ znovu a znovu. 2380 01:57:59,400 --> 01:58:03,050 Prečo nemôžem len povedať kašeľ, prosím kašeľ trikrát? 2381 01:58:03,050 --> 01:58:08,170 Inými slovami, prečo nie ja len dať impulz na kašeľ a to urobiť? 2382 01:58:08,170 --> 01:58:11,270 >> Prečo nemôžem len povedať, v Hlavným kašeľ trikrát. 2383 01:58:11,270 --> 01:58:13,150 A teraz, to je druh kúzelné. 2384 01:58:13,150 --> 01:58:14,540 Je to tu veľmi iteratívny. 2385 01:58:14,540 --> 01:58:15,940 A je to naozaj malé dieťa krok. 2386 01:58:15,940 --> 01:58:19,250 >> Ale práve schopnosť povedať linka osem, kašeľ trikrát, 2387 01:58:19,250 --> 01:58:20,730 je to tak oveľa čitateľnejšie. 2388 01:58:20,730 --> 01:58:24,210 A navyše, nemám vedieť alebo jedno, ako je implementovaný kašeľ. 2389 01:58:24,210 --> 01:58:26,460 A skutočne, neskôr v Termín a záverečných prác, 2390 01:58:26,460 --> 01:58:29,150 ak budete riešiť projekt s spolužiak alebo dvaja spolužiaci, 2391 01:58:29,150 --> 01:58:32,370 budete si uvedomiť, že budete musieť, alebo chcete, rozdeliť prácu. 2392 01:58:32,370 --> 01:58:34,650 >> A budete chcieť rozhodnúť v predstihu, kto to bude robiť to, čo, 2393 01:58:34,650 --> 01:58:35,483 a v ktorom kúsky? 2394 01:58:35,483 --> 01:58:37,520 A nebolo by to bolo pekné ak ste napríklad, 2395 01:58:37,520 --> 01:58:40,100 postarať sa o písaní Main, hotovo. 2396 01:58:40,100 --> 01:58:43,470 A váš spolubývajúci, alebo Váš partnerské všeobecnejšie 2397 01:58:43,470 --> 01:58:45,230 sa stará o vykonávaní kašeľ. 2398 01:58:45,230 --> 01:58:49,540 >> A toto rozdelenie, títo Steny abstrakcie, 2399 01:58:49,540 --> 01:58:52,310 alebo vrstvy abstrakcie ak budete, sú super silné, 2400 01:58:52,310 --> 01:58:55,480 preto, že najmä pre väčšie, Zložitejšie programy a systémy, 2401 01:58:55,480 --> 01:59:00,070 to umožňuje viac ľuďom stavať veci dohromady, a nakoniec 2402 01:59:00,070 --> 01:59:02,680 steh svoju prácu spoločne týmto spôsobom. 2403 01:59:02,680 --> 01:59:05,332 Ale samozrejme, my je potrebné opraviť teraz kašeľ. 2404 01:59:05,332 --> 01:59:07,290 Musíme povedať, kašeľ že hej, vieš čo? 2405 01:59:07,290 --> 01:59:11,230 Budeš musieť vziať input-- tak nie je neplatný, ale int i teraz. 2406 01:59:11,230 --> 01:59:15,170 Poďme dopredu a dať do kašeľ int. aj dostane na nulu. 2407 01:59:15,170 --> 01:59:16,890 >> i je menšia ako koľkokrát. 2408 01:59:16,890 --> 01:59:18,550 Povedal som tri predtým. 2409 01:59:18,550 --> 01:59:20,420 Ale to nie je to, čo chcem. 2410 01:59:20,420 --> 01:59:25,520 Chcem kašeľ, ktoré majú byť zovšeobecnené na podporovať ľubovoľný počet iterácií. 2411 01:59:25,520 --> 01:59:28,800 >> Takže, naozaj, to je n, že chcem, bez ohľadu na užívateľské mi. 2412 01:59:28,800 --> 01:59:31,620 Teraz môžem ísť dopredu a hovoriť tlače kašeľ. 2413 01:59:31,620 --> 01:59:34,750 A bez ohľadu na to, aké číslo používateľ prejde, 2414 01:59:34,750 --> 01:59:36,890 Budem sa opakovať, že mnohokrát. 2415 01:59:36,890 --> 01:59:39,160 >> Takže na konci dňa, Program je totožný. 2416 01:59:39,160 --> 01:59:42,820 Nevšimnúť všetky tieto veci mohli by byť aj v inom súbore. 2417 01:59:42,820 --> 01:59:45,620 V skutočnosti neviem at the moment, ako printf je implementovaná. 2418 01:59:45,620 --> 01:59:47,980 >> Neviem, v túto chvíľu, ako dostať reťazec, alebo získať int, alebo si plavák 2419 01:59:47,980 --> 01:59:48,646 sú implementované. 2420 01:59:48,646 --> 01:59:50,930 A ja nechcem je vidieť na mojej obrazovke. 2421 01:59:50,930 --> 01:59:55,320 Ako to je, začínam sa zamerať na môj program, nie tie funkcie. 2422 01:59:55,320 --> 01:59:59,070 >> A tak, naozaj, len čo vás spustiť factoring kód, ako je toto, 2423 01:59:59,070 --> 02:00:01,397 mohli by sme dokonca pohnúť kašeľ do samostatného súboru? 2424 02:00:01,397 --> 02:00:02,730 Niekto iný mohol realizovať. 2425 02:00:02,730 --> 02:00:06,810 A vy a váš program sa stal veľmi krásne a veľmi čitateľný, 2426 02:00:06,810 --> 02:00:10,830 pravdepodobne naozaj štyri riadok programu práve tam. 2427 02:00:10,830 --> 02:00:13,510 >> Tak poďme do toho teraz a vykonať ešte jednu zmenu. 2428 02:00:13,510 --> 02:00:16,180 Všimnite si, že môj prototyp sa musí zmeniť up vrchol. 2429 02:00:16,180 --> 02:00:18,390 Dovoľte mi teda napraviť tak Nechápem zareval. 2430 02:00:18,390 --> 02:00:22,580 >> Skontrolujte, kašeľ, dovoľte mi bežať kašeľ, akonáhle viac, stále robí to isté. 2431 02:00:22,580 --> 02:00:26,010 Ale teraz si všimnite, máme prísada pre jednu finálnu verziu. 2432 02:00:26,010 --> 02:00:26,940 Vieš čo? 2433 02:00:26,940 --> 02:00:29,040 Ja nechcem len kašeľ, nevyhnutne. 2434 02:00:29,040 --> 02:00:30,802 Chcem mať niečo všeobecnejšie. 2435 02:00:30,802 --> 02:00:31,510 Tak viete čo? 2436 02:00:31,510 --> 02:00:32,450 Chcem to urobiť. 2437 02:00:32,450 --> 02:00:37,140 Chcem mať, podobne ako Scratch áno, vyjadrovať blok, ale nie len 2438 02:00:37,140 --> 02:00:38,680 povedať niečo určitý počet opakovaní. 2439 02:00:38,680 --> 02:00:41,510 Chcem, aby to povedať veľmi špecifický reťazec. 2440 02:00:41,510 --> 02:00:43,850 A preto nemám chcem, aby to len povedať kašeľ. 2441 02:00:43,850 --> 02:00:47,660 Chcem, aby to hovoriť, čo Reťazec odovzdaný. 2442 02:00:47,660 --> 02:00:49,960 >> Takže si všimnúť, som generalizované to tak, že teraz 2443 02:00:49,960 --> 02:00:53,110 dajme tomu cíti ako dobrého mena pre toto, ako Scratch, 2444 02:00:53,110 --> 02:00:55,530 prijíma dva argumenty, na rozdiel od nuly. 2445 02:00:55,530 --> 02:00:56,570 Jedným z nich je reťazec. 2446 02:00:56,570 --> 02:00:57,300 Jedným z nich je int. 2447 02:00:57,300 --> 02:00:58,130 >> A ja ich mohol prejsť. 2448 02:00:58,130 --> 02:01:00,713 Len som niečo ako myšlienku hovoria reťazec a až potom 2449 02:01:00,713 --> 02:01:01,940 koľkokrát neskôr. 2450 02:01:01,940 --> 02:01:03,970 Void to znamená, že stále nič nevracia. 2451 02:01:03,970 --> 02:01:06,428 To sú len vizuálna stránka efekty, rovnako ako u [? Jordan?] 2452 02:01:06,428 --> 02:01:08,240 slovné vedľajším účinkom kričí. 2453 02:01:08,240 --> 02:01:12,630 To ešte urobí niečo n-krát, 0 až do, ale nie rovná n. 2454 02:01:12,630 --> 02:01:14,540 To znamená, že n celkom trikrát. 2455 02:01:14,540 --> 02:01:16,540 A potom už len vytlačiť čo to je reťazec. 2456 02:01:16,540 --> 02:01:19,060 Takže som naozaj zovšeobecniť tento riadok kódu. 2457 02:01:19,060 --> 02:01:22,460 Takže teraz, ako môžem implementovať Funkcia kašeľ? 2458 02:01:22,460 --> 02:01:25,520 >> Môžem robiť void kašeľ. 2459 02:01:25,520 --> 02:01:28,501 A môžem ešte trvať v tom, ako koľkokrát budete chcieť kašľať. 2460 02:01:28,501 --> 02:01:29,250 Ale viete čo? 2461 02:01:29,250 --> 02:01:31,240 Teraz môžem punt povedať. 2462 02:01:31,240 --> 02:01:36,540 >> Môžem zavolať povedať s Slovo kašeľ, prechádzajúcej v n. 2463 02:01:36,540 --> 02:01:40,410 A keď chcem tiež implementovať, len tak pre zábavu, funkcie kýchnutí, 2464 02:01:40,410 --> 02:01:42,290 Môžem kýchanie určitý počet opakovaní. 2465 02:01:42,290 --> 02:01:47,300 A môžem mať znovu použitie n, pretože Všimnite si, že m v tomto kontexte alebo rozsah 2466 02:01:47,300 --> 02:01:49,470 existuje iba v tejto funkcii. 2467 02:01:49,470 --> 02:01:52,767 >> A n v tejto súvislosti len existuje v rámci tejto funkcie tu. 2468 02:01:52,767 --> 02:01:54,600 Takže sa vrátime k Tieto otázky rozsahu. 2469 02:01:54,600 --> 02:02:01,160 A tu, ja len chcel povedať, mesta Akko a potom n časy, bodkočiarka. 2470 02:02:01,160 --> 02:02:04,340 >> A teraz už stačí len požičať Tieto funkcie podpisy tady. 2471 02:02:04,340 --> 02:02:06,290 Takže kašeľ je správna. 2472 02:02:06,290 --> 02:02:10,090 Void kýchnutie je teraz správna. 2473 02:02:10,090 --> 02:02:12,390 >> A ja stále stačí povedať. 2474 02:02:12,390 --> 02:02:18,990 Tak som chcel povedať, povedzme reťazec s, int n, bodkočiarka. 2475 02:02:18,990 --> 02:02:22,010 Tak som over-skonštruoval sakra z tohto programu. 2476 02:02:22,010 --> 02:02:23,760 >> A to nie je nutne znamenať, že sa jedná 2477 02:02:23,760 --> 02:02:26,343 čo by ste mali robiť pri písaní aj tie najjednoduchšie programov. 2478 02:02:26,343 --> 02:02:29,280 Urobte niečo, čo je zjavne naozaj jednoduché, naozaj málo, 2479 02:02:29,280 --> 02:02:31,800 a re-implementovať ju s použitím príliš veľa kódu. 2480 02:02:31,800 --> 02:02:34,560 Ale budete skutočne vidieť, av čas obzerať na tieto príklady, 2481 02:02:34,560 --> 02:02:38,610 a uvedomiť si, ach, tie sú kroky sme sa skutočne generalizovať, 2482 02:02:38,610 --> 02:02:40,797 faktor niečo, až na konci dňa 2483 02:02:40,797 --> 02:02:42,380 môj kód je vlastne celkom rozumné. 2484 02:02:42,380 --> 02:02:45,960 Pretože ak chcem kašeľ tri Časy potom kýchnuť trikrát, 2485 02:02:45,960 --> 02:02:50,420 Ja jednoducho len znovu spustiť to, Program robiť kašeľ a spustite kašeľ. 2486 02:02:50,420 --> 02:02:53,620 A mám tri kašeľ a tri smrkaní. 2487 02:02:53,620 --> 02:02:55,990 >> A tak to je základným paradigma, ak chcete, 2488 02:02:55,990 --> 02:03:00,110 za ako by sme mohli ísť o v skutočnosti vykonávanie programu. 2489 02:03:00,110 --> 02:03:03,220 Ale poďme sa jednoducho vidieť teraz, čo to je sme robili všetko tejto doby, 2490 02:03:03,220 --> 02:03:06,940 a čo niektorí z finálnych kusov sú za týmto jednoduchým príkazom. 2491 02:03:06,940 --> 02:03:09,620 Na konci dňa, máme Bol pomocou Clang ako náš prekladač. 2492 02:03:09,620 --> 02:03:11,494 Boli sme písať zdroj kód, prevedením 2493 02:03:11,494 --> 02:03:12,820 cez Clang do strojového kódu. 2494 02:03:12,820 --> 02:03:15,540 >> A my sme používali len Urobiť s cieľom uľahčiť našim stlačenia klávesov, takže 2495 02:03:15,540 --> 02:03:20,740 že nebudeme mať na pamäti, tie zaklínanie sama o sebe Clang. 2496 02:03:20,740 --> 02:03:22,640 Ale čo je Uistite sa vlastne robí? 2497 02:03:22,640 --> 02:03:24,750 A, podľa poradia, čo je Clang vlastne robí? 2498 02:03:24,750 --> 02:03:28,790 >> Ukázalo sa, že aj keď sme zjednodušili dnešná diskusia tým, že hovorí, 2499 02:03:28,790 --> 02:03:33,090 budete mať zdrojový kód, odovzdať ako vstup do kompilátor, ktorý vám dáva 2500 02:03:33,090 --> 02:03:35,750 výkon stroja kód, dopadá tú 2501 02:03:35,750 --> 02:03:37,420 niekoľko rôznych krokov tam vnútri. 2502 02:03:37,420 --> 02:03:41,940 A kompilácie sa stane byť dáždnik termín pre veľa krokov. 2503 02:03:41,940 --> 02:03:43,970 Ale poďme len dráždiť na to naozaj rýchlo. 2504 02:03:43,970 --> 02:03:48,070 >> Ukazuje sa, že sme robili viac vecí Zakaždým, keď som spustiť program, 2505 02:03:48,070 --> 02:03:50,990 alebo zakaždým, keď som kompiláciu programu dnes. 2506 02:03:50,990 --> 02:03:55,020 Tak sa odkazuje na predspracovanie tohle-- niečo v programe C, 2507 02:03:55,020 --> 02:03:58,720 ako uvidíme znova a znova, ktorý začína týmto symbolom hash, 2508 02:03:58,720 --> 02:04:03,320 alebo hashtag symbol tu, znamená, je to direktíva preprocesoru. 2509 02:04:03,320 --> 02:04:07,330 To znamená, že v tomto prípade, hej počítač, urob niečo s týmto súborom 2510 02:04:07,330 --> 02:04:09,430 ako je skutočne zostaviť svoj vlastný kód. 2511 02:04:09,430 --> 02:04:15,220 >> V tomto prípade hash patrí znamená, v podstate, C je spôsob, ako povedať, 2512 02:04:15,220 --> 02:04:19,325 hej počítač, choď obsah z CS50.h a vložiť ich tu. 2513 02:04:19,325 --> 02:04:22,170 Hej počítač, ísť dostať Obsah štandardného IO.H, 2514 02:04:22,170 --> 02:04:24,690 všade tam, kde to je na pevný disk, vložte ho sem. 2515 02:04:24,690 --> 02:04:27,390 Takže tie veci sa dejú najprv počas predspracovania. 2516 02:04:27,390 --> 02:04:28,880 >> A Clang robí všetko za nami. 2517 02:04:28,880 --> 02:04:30,510 A to robí tak sakramentsky rýchlo, vy ani 2518 02:04:30,510 --> 02:04:32,000 zobraziť štyri rôzne veci deje. 2519 02:04:32,000 --> 02:04:34,100 Ale to je prvý takýto krok. 2520 02:04:34,100 --> 02:04:35,560 >> Čo sa vlastne bude diať ďalej? 2521 02:04:35,560 --> 02:04:38,320 No, ďalší úradník krokom je kompilácia. 2522 02:04:38,320 --> 02:04:40,385 A ukázalo sa, že zostavovaní programu 2523 02:04:40,385 --> 02:04:44,060 technicky znamená ísť od zdrojový kód, tie veci máme 2524 02:04:44,060 --> 02:04:47,890 píše dnes k niečomu volal zhromaždenia kód, niečo 2525 02:04:47,890 --> 02:04:49,260 ktorý vyzerá trochu inak. 2526 02:04:49,260 --> 02:04:51,050 >> A v skutočnosti, môžeme vidieť veľmi rýchlo. 2527 02:04:51,050 --> 02:04:53,890 Nechaj ma skutočne ísť do môjho IDE. 2528 02:04:53,890 --> 02:04:58,050 Nechaj ma ísť dopredu a otvorené hello.c, ktorý je prvý program, s ktorým sme sa 2529 02:04:58,050 --> 02:04:59,120 začala dnes. 2530 02:04:59,120 --> 02:05:04,130 A nechaj ma ísť dopredu a spustenie zvonenie A trochu inak, Clang-s, hello.c, 2531 02:05:04,130 --> 02:05:07,720 ktorý bude skutočne Daj mi iný súbor hello.s. 2532 02:05:07,720 --> 02:05:10,330 >> A budeme pravdepodobne nikdy znovu vidieť tento druh kódu. 2533 02:05:10,330 --> 02:05:13,030 Ak budete mať nižšiu úroveň Trieda systémy ako CS61, 2534 02:05:13,030 --> 02:05:14,920 uvidíte oveľa viac tohto druhu kódu. 2535 02:05:14,920 --> 02:05:17,020 Ale to je jazyk symbolických inštrukcií. 2536 02:05:17,020 --> 02:05:22,050 To je X86 jazyk symbolických inštrukcií že procesor, ktorý je základom 2537 02:05:22,050 --> 02:05:24,460 CS50 IDE skutočne rozumie. 2538 02:05:24,460 --> 02:05:27,060 >> A mystický, ako to robí hele, to je niečo, 2539 02:05:27,060 --> 02:05:29,180 Počítač rozumie celkom dobre. 2540 02:05:29,180 --> 02:05:30,790 Sub q, to ​​je odpočítať. 2541 02:05:30,790 --> 02:05:31,660 Je tu pohyby. 2542 02:05:31,660 --> 02:05:35,730 >> Je tu volanie funkcií tu, x vý, hnutie, doplnok, pop, 2543 02:05:35,730 --> 02:05:36,430 návrat. 2544 02:05:36,430 --> 02:05:38,850 Takže tam je nejaký veľmi Návod na nízkej úrovni 2545 02:05:38,850 --> 02:05:41,280 že CPU pochopili, že spomínal som sa skôr. 2546 02:05:41,280 --> 02:05:43,100 To je to, čo Intel Inside. 2547 02:05:43,100 --> 02:05:45,030 >> K dispozícii sú vzory nuly a tie, ktoré 2548 02:05:45,030 --> 02:05:51,800 mapovať tieto arcanely znie, ale trochu dobre menovaný, inštrukcie, 2549 02:05:51,800 --> 02:05:52,780 tak povediac. 2550 02:05:52,780 --> 02:05:54,780 To je to, čo sa stane, keď kompiláciu kódu. 2551 02:05:54,780 --> 02:05:58,560 získate zostavu jazyk z toho, ktorý 2552 02:05:58,560 --> 02:06:04,680 znamená, že tretí krok je zostaviť že zostava kód do, nakoniec, 2553 02:06:04,680 --> 02:06:09,080 strojné code-- nuly a jednotky, nie Text, ktorý sme práve videli pred chvíľou. 2554 02:06:09,080 --> 02:06:13,370 >> Takže predspracovania to má nájsť a nahradiť, a pár ďalších vecí. 2555 02:06:13,370 --> 02:06:16,430 Kompilácia trvá zdroj Kód z C, zdrojový kód 2556 02:06:16,430 --> 02:06:18,980 že sme napísali, na montáž kód, ktorý sme práve pozrel na. 2557 02:06:18,980 --> 02:06:22,170 Montáž trvá toto zhromaždenie Kód na nuly a tie 2558 02:06:22,170 --> 02:06:24,680 že procesor v skutočnosti bude pochopiť na konci dňa. 2559 02:06:24,680 --> 02:06:27,630 A prepojenie je posledným krokom že sa stane pre us-- znova, 2560 02:06:27,630 --> 02:06:29,830 tak rýchlo, my ani notice--, ktorý hovorí, 2561 02:06:29,830 --> 02:06:32,460 hej počítač, prijmú všetky nuly a tie, ktoré 2562 02:06:32,460 --> 02:06:36,750 vyplýval z kompilácie Davida kód, a jeho hlavnou funkciou je v tomto prípade. 2563 02:06:36,750 --> 02:06:39,160 >> A hele počítač, choď všetky núl a jednotiek 2564 02:06:39,160 --> 02:06:42,180 že personál CS50 napísal vnútri knižnice CS50. 2565 02:06:42,180 --> 02:06:43,440 Zmiešajte tie sa Davida. 2566 02:06:43,440 --> 02:06:46,648 A hele počítač, choď všetky nuly a tie, ktoré napísal niekto iný let 2567 02:06:46,648 --> 02:06:47,470 Pred pre printf. 2568 02:06:47,470 --> 02:06:49,880 A pridať tie, do Celá vec, takže máme 2569 02:06:49,880 --> 02:06:52,870 svy núl a jednotiek, The nuly a jednotky CS50 personálu, 2570 02:06:52,870 --> 02:06:55,370 printf nuly a jednotky, a niečo iné užívame. 2571 02:06:55,370 --> 02:07:00,410 >> Všetci si spojí dohromady do jedného program s názvom, v tomto prípade, ahoj. 2572 02:07:00,410 --> 02:07:03,141 Takže odteraz budeme len použiť slovo kompilácie. 2573 02:07:03,141 --> 02:07:06,390 A budeme brať za samozrejmosť, že keď hovoríme, zostaviť svoj program, to znamená, 2574 02:07:06,390 --> 02:07:08,849 hej vykonať predbežné spracovanie, zostavovanie a prepájanie. 2575 02:07:08,849 --> 02:07:11,890 Ale je to vlastne šťavnaté niektoré veci tam deje pod kapotou. 2576 02:07:11,890 --> 02:07:13,723 A to najmä ak zvedaví nejaký čas, 2577 02:07:13,723 --> 02:07:15,900 môžete začať strkať okolo seba na tejto nižšej úrovni. 2578 02:07:15,900 --> 02:07:19,660 Ale teraz si uvedomiť, že Medzi stánok s jedlom pre dnešok 2579 02:07:19,660 --> 02:07:23,420 sú pomerne jednoducho začiatok procesu, 2580 02:07:23,420 --> 02:07:26,700 ako sa dostať pohodlne niečo ako hello world. 2581 02:07:26,700 --> 02:07:29,575 V skutočnosti väčšina z toho, čo sme urobili dnes určite nebude klesať v super rýchlo. 2582 02:07:29,575 --> 02:07:31,491 A to bude trvať nejaký čas, a niektorí cvičí. 2583 02:07:31,491 --> 02:07:33,864 A šance sú, budete radiť of chcú zasiahnuť klávesnice 2584 02:07:33,864 --> 02:07:34,780 alebo kričať na obrazovke. 2585 02:07:34,780 --> 02:07:35,880 A to všetko je v poriadku. 2586 02:07:35,880 --> 02:07:38,320 Aj keď, možno snažiť sa to v knižnici toľko. 2587 02:07:38,320 --> 02:07:40,820 >> A nakoniec, budete byť schopný aj keď pre začiatok 2588 02:07:40,820 --> 02:07:44,580 videnie vzory, a to ako v dobrom kóde že ste napísali a chýb 2589 02:07:44,580 --> 02:07:45,370 že ste urobili. 2590 02:07:45,370 --> 02:07:48,965 A podobne ako proces stáva TF alebo CA je ako, 2591 02:07:48,965 --> 02:07:51,590 začnete cítiť lepšie a lepšie pri pohľade na tieto vzory, 2592 02:07:51,590 --> 02:07:53,774 a práve riešenie vašich vlastné problémy nakoniec. 2593 02:07:53,774 --> 02:07:56,940 Do tej doby, tam bude veľa z nás požičiavať ho podporili, a dostanete 2594 02:07:56,940 --> 02:07:57,481 cez to. 2595 02:07:57,481 --> 02:07:59,450 A v write-up pre všetky problémy 2596 02:07:59,450 --> 02:08:01,366 budete prevedení všetky príkazy 2597 02:08:01,366 --> 02:08:05,330 že som iste poznajú z veľa praxe teraz, 2598 02:08:05,330 --> 02:08:07,380 ale mohol letieť nad hlavou zatiaľ. 2599 02:08:07,380 --> 02:08:08,580 A to je úplne v poriadku. 2600 02:08:08,580 --> 02:08:11,230 >> Ale nakoniec, budete začať vidieť vzory objaviť. 2601 02:08:11,230 --> 02:08:14,260 A akonáhle sa dostať cez všetky hlúpe detaily, ako sú zátvorky, 2602 02:08:14,260 --> 02:08:16,710 a zložené zátvorky a bodkočiarkami, a veci, úprimne povedané, 2603 02:08:16,710 --> 02:08:19,360 že nie je vôbec intelektuálne zaujímavé. 2604 02:08:19,360 --> 02:08:22,690 A nie je cieľom užívať akýkoľvek úvodný triedu. 2605 02:08:22,690 --> 02:08:24,410 Sú to myšlienky, ktoré idú na hmotu. 2606 02:08:24,410 --> 02:08:26,659 >> To je slučky, a podmienky a funkcie, 2607 02:08:26,659 --> 02:08:30,552 a silnejšie abstrakcie, a factoring kódu, 2608 02:08:30,552 --> 02:08:33,510 a dobrý dizajn a dobrú štýl, a nakoniec správnosť 2609 02:08:33,510 --> 02:08:37,330 z kódu, ktorý je v konečnom dôsledku bude záležať najviac. 2610 02:08:37,330 --> 02:08:40,925 Takže budúci týždeň, budeme brať tieto myšlienky, ktoré sme prvýkrát videli v Scratch 2611 02:08:40,925 --> 02:08:42,800 a teraz preložené k C. A začneme 2612 02:08:42,800 --> 02:08:45,740 predstaviť prvý z Samozrejme je skutočný svet domén. 2613 02:08:45,740 --> 02:08:50,140 >> Budeme sa sústrediť na svete bezpečnosti, a konkrétnejšie kryptografia, 2614 02:08:50,140 --> 02:08:51,980 umenie zakódovanie informácie. 2615 02:08:51,980 --> 02:08:54,000 A medzi prvými Problémy vy sám 2616 02:08:54,000 --> 02:08:56,840 dostane písať mimo hrať s niektorými z syntaxe 2617 02:08:56,840 --> 02:08:59,880 a riešiť niektoré logické Problémy, nakoniec netrvalo dlho, 2618 02:08:59,880 --> 02:09:03,960 Je skutočne zakódovanie, alebo šifrovanie, a nakoniec dešifrovanie informácií. 2619 02:09:03,960 --> 02:09:06,470 A všetko, čo sme urobili Dnes sa pomerne nízky 2620 02:09:06,470 --> 02:09:09,190 Hladina sa len tak dovoliť nám, aby jeden a jeden, 2621 02:09:09,190 --> 02:09:13,550 a ďalší krok smerom k vyššie písanie napriek tomu najzaujímavejšie kód. 2622 02:09:13,550 --> 02:09:15,050 >> Takže o tom až budúci týždeň. 2623 02:09:15,050 --> 02:09:17,834 2624 02:09:17,834 --> 02:09:18,762 >> [Videoprehrávanie] 2625 02:09:18,762 --> 02:09:19,690 2626 02:09:19,690 --> 02:09:22,006 >> Čo mi môžete povedať o v poslednej dobe ste ho videl? 2627 02:09:22,006 --> 02:09:26,041 2628 02:09:26,041 --> 02:09:27,040 Čo môžem povedať, naozaj? 2629 02:09:27,040 --> 02:09:30,500 2630 02:09:30,500 --> 02:09:35,340 Myslím, že to bolo ako každá iná pre-produkcie skúška, 2631 02:09:35,340 --> 02:09:40,510 s výnimkou tam bolo niečo, povedal na samom konci, ktorý uviazol so mnou. 2632 02:09:40,510 --> 02:09:44,810 2633 02:09:44,810 --> 02:09:46,640 >> Toto bol CS50. 2634 02:09:46,640 --> 02:09:49,440 2635 02:09:49,440 --> 02:09:52,190 >> -To Strih všetci, skvelú prácu na skúšku. 2636 02:09:52,190 --> 02:09:53,070 >> -To Obed? 2637 02:09:53,070 --> 02:09:54,986 >> Jo, vy a ja môžem chytiť sendvič v trochu. 2638 02:09:54,986 --> 02:09:58,380 Nechaj ma vypočuť s David naozaj rýchlo. 2639 02:09:58,380 --> 02:09:59,160 David? 2640 02:09:59,160 --> 02:10:01,260 David? 2641 02:10:01,260 --> 02:10:03,110 >> [END PLAYBACK]