1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [Tónlist spila] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 DAVID J. MALAN: Allt í lagi. 5 00:00:12,660 --> 00:00:15,590 Þetta er CS50, og þetta er að byrja á viku tvö. 6 00:00:15,590 --> 00:00:19,120 Svo skulum byrja í dag með galla. 7 00:00:19,120 --> 00:00:20,974 A galla, að sjálfsögðu, er mistök í áætlun, 8 00:00:20,974 --> 00:00:22,890 og þú munt fá mjög þekki þetta hugtak 9 00:00:22,890 --> 00:00:26,050 ef þú hefur aldrei forritað áður. pset0 og nú pset1. 10 00:00:26,050 --> 00:00:29,280 En við skulum íhuga eitthvað smá einfalt að byrja. 11 00:00:29,280 --> 00:00:32,189 Þetta forrit hér að ég kastaði saman í fyrirfram, 12 00:00:32,189 --> 00:00:37,280 og ég halda því fram að þetta ætti að prenta 10 stjörnur á skjáinn með printf, 13 00:00:37,280 --> 00:00:41,020 en það er víst þrjótur á einhvern hátt. 14 00:00:41,020 --> 00:00:45,370 >> Í ljósi þess að skilgreining sem það ætti að prenta 10 stjörnur, 15 00:00:45,370 --> 00:00:50,230 en það er ekki víst, hvað myndir þú halda því er villan? 16 00:00:50,230 --> 00:00:52,004 Já? 17 00:00:52,004 --> 00:00:54,420 Svo er það að burt með einum villa, og hvað áttu við með því? 18 00:00:54,420 --> 00:01:00,991 19 00:01:00,991 --> 00:01:01,490 OK. 20 00:01:01,490 --> 00:01:09,820 21 00:01:09,820 --> 00:01:10,410 Excellent. 22 00:01:10,410 --> 00:01:13,930 Þannig að við höfum tilgreint a byrja á núll fyrir i, 23 00:01:13,930 --> 00:01:18,399 og við höfum tilgreint í n gildi 10, en við höfum notað minna en eða jafnt og. 24 00:01:18,399 --> 00:01:21,190 Og ástæðan að þetta er tveir stafir og ekki bara einn tákn, 25 00:01:21,190 --> 00:01:22,630 eins og í stærðfræði bók, er að þú þarft ekki 26 00:01:22,630 --> 00:01:24,880 leið til að tjá það einn staf jafngildi. 27 00:01:24,880 --> 00:01:28,450 >> Svo það þýðir færri, en ef þú byrjar að telja á núlli, 28 00:01:28,450 --> 00:01:31,690 en þú telja alla leið upp í gegnum og jöfn 10, 29 00:01:31,690 --> 00:01:34,170 þú ert auðvitað að fara að telja 11 hluti í aðaleinkunn. 30 00:01:34,170 --> 00:01:35,900 Og svo þú ert að fara að prenta 11 stjörnur. 31 00:01:35,900 --> 00:01:37,990 Svo það gæti verið festa fyrir þetta? 32 00:01:37,990 --> 00:01:39,970 Já? 33 00:01:39,970 --> 00:01:43,980 >> Svo bara stilla minna en eða jafnt og bara að vera minna en, 34 00:01:43,980 --> 00:01:46,250 og það er, ég kröfu, kannski Önnur lausn líka. 35 00:01:46,250 --> 00:01:47,210 Hvað gæti annað sem þú gerir? 36 00:01:47,210 --> 00:01:48,590 Já? 37 00:01:48,590 --> 00:01:53,660 >> Svo byrja að jafngildi það að 1, og yfirgefa minna en eða jafnt og. 38 00:01:53,660 --> 00:01:56,187 Og vildi ég myndi halda að fyrir dæmigerðri manneskju sem, 39 00:01:56,187 --> 00:01:57,770 þetta er sennilega meira einfalt. 40 00:01:57,770 --> 00:02:00,280 Byrja að telja á 1 og telja upp í gegnum 10. 41 00:02:00,280 --> 00:02:01,690 Í meginatriðum gera það sem þú átt við. 42 00:02:01,690 --> 00:02:04,010 >> En raunin er í forritun, eins og við höfum séð, 43 00:02:04,010 --> 00:02:07,598 tölvunarfræðingar og forritarar almennt ekki byrja að telja á núlli. 44 00:02:07,598 --> 00:02:09,389 Og svo er það allt í lagi einu sinni þú venst því. 45 00:02:09,389 --> 00:02:12,640 Ástand þitt mun almennt vera eitthvað eins og minna en. 46 00:02:12,640 --> 00:02:14,910 Svo einfaldlega rökrétt villa sem við gátum nú 47 00:02:14,910 --> 00:02:17,990 festa og að lokum laun þetta og fá bara 10. 48 00:02:17,990 --> 00:02:19,610 >> Jæja hvernig væri þennan galla hér? 49 00:02:19,610 --> 00:02:24,200 Hér aftur, kröfu ég að ég hef markmið prentun 10 stars-- 50 00:02:24,200 --> 00:02:28,140 eitt í hverja línu í þetta sinn, en það gerir það ekki. 51 00:02:28,140 --> 00:02:30,940 Áður en við leggjum það sem festa er, hvað gerir þetta 52 00:02:30,940 --> 00:02:34,640 prenta sjónrænt ef ég væri að safna saman og keyra þetta forrit finnst þér? 53 00:02:34,640 --> 00:02:35,140 Já? 54 00:02:35,140 --> 00:02:38,360 55 00:02:38,360 --> 00:02:38,860 >> Star. 56 00:02:38,860 --> 00:02:41,690 Svo allir stjörnum á Sama lína er það sem ég heyrði, 57 00:02:41,690 --> 00:02:43,391 og síðan nýja línu staf. 58 00:02:43,391 --> 00:02:44,140 Svo skulum reyna það. 59 00:02:44,140 --> 00:02:48,710 Svo gera þrjótur-1, slá, og ég sé clang stjórn 60 00:02:48,710 --> 00:02:50,090 að við ræddum um í síðasta sinn. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, og reyndar ég sjá allar 10 stjörnurnar á sömu línu, jafnvel þó að ég krafa 62 00:02:55,180 --> 00:02:58,690 í lýsingu minni bara athugasemd á topp kóðinn sem ég ætlaði að gera einn á hvern 63 00:02:58,690 --> 00:02:59,230 lína. 64 00:02:59,230 --> 00:03:00,580 En þetta lítur rétt. 65 00:03:00,580 --> 00:03:04,620 >> Nú lína 15 það lítur út eins og ég er prentun á stjörnuna, og þá línu 16 66 00:03:04,620 --> 00:03:06,620 það lítur út eins og ég er prentun ný lína eðli, 67 00:03:06,620 --> 00:03:09,560 og þeir eru báðir inndregin þannig Ég er inni í lykkju greinilega. 68 00:03:09,560 --> 00:03:13,610 Svo ætti ég ekki að vera að gera stjörnuna, ný lína, stjarna, ný lína, stjarna, nýja línu? 69 00:03:13,610 --> 00:03:14,110 Já? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> Já, ólíkt tungumál eins Python, ef þú ert kunnuglegur, 72 00:03:21,240 --> 00:03:23,540 inndráttur ekki máli við tölvuna. 73 00:03:23,540 --> 00:03:25,280 Það skiptir máli aðeins við mönnum. 74 00:03:25,280 --> 00:03:29,860 Svo á meðan hér ég hef fundið línur 15 og 16-- sem lítur falleg, 75 00:03:29,860 --> 00:03:31,330 en tölvan er ekki sama. 76 00:03:31,330 --> 00:03:34,640 Tölvan er ekki sama um í raun hafa hrokkið axlabönd 77 00:03:34,640 --> 00:03:36,310 kringum þessar línur af kóða. 78 00:03:36,310 --> 00:03:39,520 >> Þannig að það er clear-- rétt eins og í Scratch-- að þessum tveimur línum af kóða 79 00:03:39,520 --> 00:03:40,450 ætti að framkvæma. 80 00:03:40,450 --> 00:03:44,390 Eins og einn af þeim gula grunni ráðgáta stykki aftur og aftur og aftur. 81 00:03:44,390 --> 00:03:50,920 >> Svo nú ef ég aftur hlaupa þetta program-- ./buggy-2-- Hm. 82 00:03:50,920 --> 00:03:51,770 Ég hef villu núna. 83 00:03:51,770 --> 00:03:54,212 Hvað gerði ég gleyma að gera? 84 00:03:54,212 --> 00:03:55,420 Já, svo ég vissi ekki þýða það. 85 00:03:55,420 --> 00:03:56,740 Svo gera þrjótur-2. 86 00:03:56,740 --> 00:03:59,840 Engin slík skrá vegna þess að ég gerði ekki reyndar saman seinni útgáfa. 87 00:03:59,840 --> 00:04:04,860 Svo nú áhugavert óskilgreinda variable-- ekki 2. 88 00:04:04,860 --> 00:04:05,510 Við erum að gera 1. 89 00:04:05,510 --> 00:04:11,050 Gera þrjótur-1-- ./buggy-1-- og nú hver af þeim er á sömu línu. 90 00:04:11,050 --> 00:04:13,880 >> Nú er það undantekning þetta átti tilkall minn 91 00:04:13,880 --> 00:04:15,520 að þú þarft þessar hrokkið axlabönd. 92 00:04:15,520 --> 00:04:20,160 Þegar það er í raun OK-- ef þú hefur tekið í kafla eða textbooks-- 93 00:04:20,160 --> 00:04:22,130 að sleppa hrokkið axlabönd? 94 00:04:22,130 --> 00:04:22,630 Já? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> Nákvæmlega. 97 00:04:26,870 --> 00:04:28,940 Þegar það er bara einn lína af kóða sem þú 98 00:04:28,940 --> 00:04:32,830 langar að vera í tengslum við lykkja eins og í fyrsta dæminu okkar. 99 00:04:32,830 --> 00:04:36,380 Það er fullkomlega lögmætur að sleppa hrokkið axlabönd 100 00:04:36,380 --> 00:04:40,310 eins konar hægðarauka frá þýðanda til þín. 101 00:04:40,310 --> 00:04:40,810 Já? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 Góð spurning. 104 00:04:43,930 --> 00:04:45,500 Myndi það teljast stíl villa? 105 00:04:45,500 --> 00:04:49,340 Við myndi promote-- eins og í CS50 stíl fylgja, slóðin sem 106 00:04:49,340 --> 00:04:51,926 er í pset1-- sem alltaf nota hrokkið axlabönd. 107 00:04:51,926 --> 00:04:53,550 Örugglega ef þú ert nýr til forritun. 108 00:04:53,550 --> 00:04:56,800 Staðreyndin er að við erum ekki að fara að banna þig 109 00:04:56,800 --> 00:04:58,680 frá því að gera þessar verslanir. 110 00:04:58,680 --> 00:05:00,846 En ef þú ert bara að fá í sveiflu af hlutur, 111 00:05:00,846 --> 00:05:04,020 algerlega bara alltaf að nota hrokkið axlabönd þar til þú fá the hanga af það. 112 00:05:04,020 --> 00:05:04,640 Góð spurning. 113 00:05:04,640 --> 00:05:05,320 >> Allt í lagi. 114 00:05:05,320 --> 00:05:07,660 Þannig að þá var padda. 115 00:05:07,660 --> 00:05:09,190 Að minnsta kosti í einhverju nokkuð einfalt. 116 00:05:09,190 --> 00:05:11,260 Og enn þú might hugsa þessi er nokkuð rudimentary, ekki satt? 117 00:05:11,260 --> 00:05:13,635 Þetta er tegund af fyrstu viku að horfa á tungumáli 118 00:05:13,635 --> 00:05:14,890 eins, sjá galla þínum þar. 119 00:05:14,890 --> 00:05:17,250 En raunin að þetta eru reyndar fulltrúi 120 00:05:17,250 --> 00:05:20,310 af sumir laglegur ógnvekjandi vandamál sem geta komið upp í hinum raunverulega heimi. 121 00:05:20,310 --> 00:05:23,530 >> Svo sumir af þú might muna ef þú fylgir tækni fréttir, 122 00:05:23,530 --> 00:05:25,740 eða kannski jafnvel lent vindur um þetta í febrúar 123 00:05:25,740 --> 00:05:29,434 þessa síðasta ári að Apple hafði gerði smá mistök í báðum IOS, 124 00:05:29,434 --> 00:05:31,350 stýrikerfi á þeirra sími, og einnig 125 00:05:31,350 --> 00:05:34,220 Mac OS, the stýrikerfi á skjáborð og fartölvur. 126 00:05:34,220 --> 00:05:36,480 Og þú sást svo fyrirsagnir og þessa. 127 00:05:36,480 --> 00:05:41,120 Og eftir það, Apple lofaði að laga þessa villu, 128 00:05:41,120 --> 00:05:45,950 og mjög fljótt gerði festa það í IOS, en þá á endanum fast það í Mac OS 129 00:05:45,950 --> 00:05:46,810 og vel. 130 00:05:46,810 --> 00:05:50,370 >> Nú ekkert af þessum fyrirsögnum eingöngu raunverulega sýna hvað undirliggjandi vandamál var, 131 00:05:50,370 --> 00:05:55,640 en villa var að lokum lækkaður padda í SSL, örugg fals lag. 132 00:05:55,640 --> 00:05:57,390 Og langa sögu stutta, þetta er hugbúnaður 133 00:05:57,390 --> 00:06:01,030 sem vafrar okkar og öðrum hugbúnaður nota til að gera hvað? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> Ef ég sagði að SSL er þátt, þegar þú 136 00:06:06,860 --> 00:06:13,920 heimsækja vefslóð sem byrjar með HTTPS, hvað þá gæti SSL vera tengdar? 137 00:06:13,920 --> 00:06:14,580 Dulkóðun. 138 00:06:14,580 --> 00:06:16,470 Þannig að við munum tala um þetta á næstu dögum. 139 00:06:16,470 --> 00:06:18,750 Dulkóðun, the list af spæna upplýsingar. 140 00:06:18,750 --> 00:06:22,200 >> En langa sögu stutta, Apple einhvern síðan hafði gert mistök 141 00:06:22,200 --> 00:06:25,970 um framkvæmd þeirra á SSL, sem hugbúnaður sem á endanum framkvæmd 142 00:06:25,970 --> 00:06:30,120 Slóðir eins HTTPS eða max tengingar þar líka. 143 00:06:30,120 --> 00:06:32,850 Afleiðing sem er að þín tengingar gætu hugsanlega 144 00:06:32,850 --> 00:06:33,920 að stöðva. 145 00:06:33,920 --> 00:06:37,130 Og sambönd þín voru ekki endilega dulkóðuð 146 00:06:37,130 --> 00:06:40,350 ef þú hefðir slæmar strákur á milli þú og ákvörðunarstaður heimasíðu sem 147 00:06:40,350 --> 00:06:42,170 vissi hvernig á að nýta sér þetta. 148 00:06:42,170 --> 00:06:45,090 >> Nú Apple lokum staða a laga um þetta að lokum, 149 00:06:45,090 --> 00:06:46,920 og lýsing af fix þeirra var þetta. 150 00:06:46,920 --> 00:06:49,878 Öruggur samgöngur tókst að sannreyna áreiðanleika tengingu. 151 00:06:49,878 --> 00:06:52,920 Útgáfan var beint af endurheimta vantar löggilding skref. 152 00:06:52,920 --> 00:06:57,250 >> Þannig að þetta er mjög hönd bylgjaður skýring fyrir einfaldlega að segja að við ruglaður upp. 153 00:06:57,250 --> 00:07:00,920 Það er bókstaflega eitt lína af kóða sem var þrjótur 154 00:07:00,920 --> 00:07:05,130 um framkvæmd þeirra á SSL, og ef þú ferð á netinu og leita að þessu 155 00:07:05,130 --> 00:07:07,210 þú getur í raun að finna upprunalega kóðann. 156 00:07:07,210 --> 00:07:11,960 Til dæmis, þetta er skjámynd af bara hluti af nokkuð stór skrá, 157 00:07:11,960 --> 00:07:15,965 en þetta er fall virðist kallað SSL staðfesta skilti miðlara lykill skipti. 158 00:07:15,965 --> 00:07:17,840 Og það tekur fullt af Rök og inntak. 159 00:07:17,840 --> 00:07:20,298 Og við erum ekki að fara að einblína of mikið á minutia þar, 160 00:07:20,298 --> 00:07:24,390 en ef þú leggir áherslu á kóða inni þess Efsta function-- skulum 161 00:07:24,390 --> 00:07:25,590 zoom í á það. 162 00:07:25,590 --> 00:07:28,140 Þú gætir nú þegar grunar hvað gæti villa 163 00:07:28,140 --> 00:07:31,230 jafnvel ef þú hefur enga hugmynd á endanum það sem þú ert að leita að. 164 00:07:31,230 --> 00:07:35,924 Það er góður af frávik hér, sem er hvað? 165 00:07:35,924 --> 00:07:38,940 >> Já, ég í raun ekki eins og Útliti tveimur Goto mistekst. 166 00:07:38,940 --> 00:07:42,060 Frankly, ég í raun ekki vita hvað goto mistakast hætti, en hafa tvö af þeim 167 00:07:42,060 --> 00:07:42,810 í bak og fyrir. 168 00:07:42,810 --> 00:07:45,290 Það bara svona nuddar mig vitsmunalega röng leið, 169 00:07:45,290 --> 00:07:48,910 og örugglega ef við zoom í á bara þær línur, þetta er C. 170 00:07:48,910 --> 00:07:52,220 >> Svo mikið af kóða Apple er sjálft skrifað í C, 171 00:07:52,220 --> 00:07:55,780 og þetta virðist er í raun equivalent-- 172 00:07:55,780 --> 00:07:59,060 ekki þeirri stuttu skerðing útgáfa, en ef þú viðurkenna staðreynd 173 00:07:59,060 --> 00:08:02,560 að það er engin hrokkið axlabönd, hvað Apple skrifaði í raun var númer sem lítur 174 00:08:02,560 --> 00:08:03,540 eins og þetta. 175 00:08:03,540 --> 00:08:07,080 Svo ég hef aðdregna út og ég bara fastur inndreginn í skilningi 176 00:08:07,080 --> 00:08:10,690 að ef það er engin hrokkið axlabönd, að annað goto mistakast það er í gulu 177 00:08:10,690 --> 00:08:12,500 er að fara að framkvæma sama hvað. 178 00:08:12,500 --> 00:08:15,540 Það er ekki í tengslum við að ef ástand yfir það. 179 00:08:15,540 --> 00:08:19,590 >> Svo jafnvel aftur, ef þú ert ekki alveg skilja hvað þetta gæti hugsanlega 180 00:08:19,590 --> 00:08:23,230 vera að gera, veit að hvert af þessum conditions-- í þessum línum 181 00:08:23,230 --> 00:08:26,180 er mjög mikilvægt skref í því ferli að stöðva 182 00:08:26,180 --> 00:08:28,350 ef gögn þín er í raun dulkóðuð. 183 00:08:28,350 --> 00:08:31,710 Svo skipstjóri einn af þessum skref, ekki besta hugmynd. 184 00:08:31,710 --> 00:08:34,840 >> En vegna þess að við höfum þetta Annað goto mistakast í gulum, 185 00:08:34,840 --> 00:08:36,840 og vegna þess að þegar vér konar fagurfræðilega 186 00:08:36,840 --> 00:08:40,480 færa það til vinstri þar sem það rökrétt er í augnablikinu, hvað 187 00:08:40,480 --> 00:08:43,230 þýðir þetta fyrir línuna af kóða fyrir neðan annað Goto 188 00:08:43,230 --> 00:08:46,480 mistakast myndir þú hugsa? 189 00:08:46,480 --> 00:08:48,860 Það er alltaf að fara til að vera skipstjóri. 190 00:08:48,860 --> 00:08:52,100 Svo gotos eru yfirleitt hleypa brúnum ástæðum munum við ekki raunverulega fara í, 191 00:08:52,100 --> 00:08:54,940 og reyndar í CS50 við hafa tilhneigingu að kenna þessa yfirlýsingu Fara á, 192 00:08:54,940 --> 00:08:58,130 en þú getur hugsa um Goto mistakast eins merking go jump 193 00:08:58,130 --> 00:08:59,600 að einhverjum öðrum hluta af kóða. 194 00:08:59,600 --> 00:09:03,120 >> Með öðrum orðum að stökkva yfir þetta síðasta lína að öllu leyti, 195 00:09:03,120 --> 00:09:07,420 og svo niðurstaðan af þessu heimskulegt einföld mistök sem var bara 196 00:09:07,420 --> 00:09:10,330 vegna líklega einhver afritar og límir einn of 197 00:09:10,330 --> 00:09:14,150 oft var það allt öryggi IOS og Mac OS 198 00:09:14,150 --> 00:09:18,240 var viðkvæmt hlerun með slæmur krakkar fyrir alveg sumir tími. 199 00:09:18,240 --> 00:09:19,940 Þangað til Apple loksins fastur þetta. 200 00:09:19,940 --> 00:09:23,100 >> Nú ef sum ykkar eru í raun gangi gamla útgáfur af IOS eða Mac OS, 201 00:09:23,100 --> 00:09:27,250 þú getur farið til gotofail.com sem er vefsíða sem einhver sett upp 202 00:09:27,250 --> 00:09:29,190 að í raun að ákvarða kerfisbundið 203 00:09:29,190 --> 00:09:30,980 ef tölvan þín er enn viðkvæmt. 204 00:09:30,980 --> 00:09:33,600 Og hreinskilnislega, ef það er, það er líklega góð hugmynd 205 00:09:33,600 --> 00:09:36,870 að uppfæra símann eða þinn Mac á þessum tímapunkti. 206 00:09:36,870 --> 00:09:40,120 En það, bara vitnisburður um það hversu gengishækkun þessara lægra stigi 207 00:09:40,120 --> 00:09:42,400 upplýsingar og nokkuð einföld hugmyndir geta raunverulega 208 00:09:42,400 --> 00:09:44,590 þýða ákvarðanir og vandamál sem 209 00:09:44,590 --> 00:09:47,320 affected-- í þessu case-- milljónir manna. 210 00:09:47,320 --> 00:09:49,107 >> Nú orð á munn. 211 00:09:49,107 --> 00:09:50,690 Kafla verður byrjað þetta kemur sunnudagur. 212 00:09:50,690 --> 00:09:53,360 Þú munt fá tölvupóst með því helgi um kafla, á hver benda 213 00:09:53,360 --> 00:09:55,290 að resectioning ferli mun byrja ef þú hefur 214 00:09:55,290 --> 00:09:56,998 áttaði þú ert nú nokkrar nýjar átök. 215 00:09:56,998 --> 00:10:00,180 Svo gerist þetta á hverju ári, og við mun rúma á næstu dögum koma. 216 00:10:00,180 --> 00:10:02,430 >> Skrifstofa hours-- gera halda að auga á þessa áætlun hér. 217 00:10:02,430 --> 00:10:05,100 Breytingar svolítið í þessari viku, einkum í upphafi tíma 218 00:10:05,100 --> 00:10:08,180 og staðsetningu, svo samráð að áður yfirskrift til skrifstofutíma 219 00:10:08,180 --> 00:10:09,520 einhverju næstu fjórar nætur. 220 00:10:09,520 --> 00:10:12,680 Og nú orð á mati, sérstaklega þar sem þú kafa inn í vandamál 221 00:10:12,680 --> 00:10:14,350 setur eitt og víðar. 222 00:10:14,350 --> 00:10:17,070 >> Svo á forskrift, þetta eru yfirleitt 223 00:10:17,070 --> 00:10:20,360 ásarnir eftir sem við að meta starf þitt. 224 00:10:20,360 --> 00:10:23,170 Svigrúm er átt við það mæli kóða útfærir þín 225 00:10:23,170 --> 00:10:25,690 aðgerðir þarf með forskrift okkar. 226 00:10:25,690 --> 00:10:28,290 Í öðrum orðum, hversu mikið af stykki sett gerðir þú bítur burt. 227 00:10:28,290 --> 00:10:30,440 Vissir þú að gera þriðjung af því, helmingur af því, 100% af því. 228 00:10:30,440 --> 00:10:33,000 Jafnvel ef það er ekki rétt, hversu mikið fannst þér að reyna? 229 00:10:33,000 --> 00:10:35,290 Svo að fangar borði af átaki og fjárhæð 230 00:10:35,290 --> 00:10:38,260 sem þú beit burt vandamál Heimadæmi er. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- þessu einn, til hve miklu leyti, er númerið þitt 232 00:10:40,690 --> 00:10:43,150 í samræmi við okkar forskriftir og frjáls af bugs. 233 00:10:43,150 --> 00:10:44,770 Svo virkar það rétt? 234 00:10:44,770 --> 00:10:48,700 Ef við gefum honum inntak, er það gefa okkur framleiðsla sem við gerum ráð fyrir? 235 00:10:48,700 --> 00:10:52,570 Design-- nú er þetta fyrsta the sérstaklega eigindlegum sjálfur, 236 00:10:52,570 --> 00:10:56,180 eða þau sem þurfa mannlega dómgreind. 237 00:10:56,180 --> 00:10:59,690 Og reyndar, þetta er ástæðan að við höfum starfsfólk af svo mörgum félögum kennslu og námskeið 238 00:10:59,690 --> 00:11:00,350 aðstoðarmenn. 239 00:11:00,350 --> 00:11:03,480 Að hve miklu leyti er þinn númerið skrifað vel? 240 00:11:03,480 --> 00:11:05,810 >> Og aftur er þetta mjög eigindlegum mat 241 00:11:05,810 --> 00:11:09,100 sem mun vinna með þér á bi-stefnuboraà í vikur til að koma. 242 00:11:09,100 --> 00:11:12,060 Þannig að þegar þú færð ekki Aðeins tölugildi skora, en einnig 243 00:11:12,060 --> 00:11:16,682 skriflegri skorar eða slegið viðbrögð, eða skrifað athugasemdir á ensku orðum. 244 00:11:16,682 --> 00:11:19,640 Það er það sem við munum nota til að aka þér átt í raun að skrifa betri kóða. 245 00:11:19,640 --> 00:11:23,320 Og í fyrirlestri og kafla munum við reyna að benda out-- eins oft og við can-- 246 00:11:23,320 --> 00:11:26,420 hvað gerir forritið ekki aðeins rétt og virkni góð, 247 00:11:26,420 --> 00:11:28,200 en einnig vel hannað. 248 00:11:28,200 --> 00:11:31,850 Skilvirkt og það gæti verið, eða jafnvel fallegasta það getur verið. 249 00:11:31,850 --> 00:11:33,100 >> Sem leiðir okkur að stíl. 250 00:11:33,100 --> 00:11:36,876 Style á endanum er fagurfræði dómur. 251 00:11:36,876 --> 00:11:38,750 Vissir þú velur gott nöfn fyrir breytur þínar? 252 00:11:38,750 --> 00:11:40,330 Hefur þú inndregin númerið þitt almennilega? 253 00:11:40,330 --> 00:11:44,010 Er það líta vel út, og því, það er auðvelt fyrir aðra manneskju 254 00:11:44,010 --> 00:11:46,550 að lesa viðkomandi þitt af misskilning hennar. 255 00:11:46,550 --> 00:11:50,300 >> Nú almennt á kennsluáætlun, skora við þetta á fimm punkta kvarða. 256 00:11:50,300 --> 00:11:53,640 Og láta mig negla heim benda að í þremur er örugglega gott. 257 00:11:53,640 --> 00:11:55,550 Mjög fljótt að gera fólkinu byrja að gera stærðfræði. 258 00:11:55,550 --> 00:11:58,133 Þegar þeir fá þrír af fimm á réttmæti fyrir sumir pset 259 00:11:58,133 --> 00:12:02,040 og þeir hugsa fjandinn, ég að fara að 60% sem er í raun D eða E. 260 00:12:02,040 --> 00:12:03,980 >> Það er ekki eins og við hugsa um þessar tölur. 261 00:12:03,980 --> 00:12:06,880 Þriggja er örugglega gott og hvað við almennt búist í upphafi 262 00:12:06,880 --> 00:12:09,820 á hugtakinu er að ef þú ert að fá fullt af three's-- kannski par 263 00:12:09,820 --> 00:12:12,540 af kaupstefnum, a par af fours-- eða par twos, a par af fours-- 264 00:12:12,540 --> 00:12:13,748 það er góður staður til að byrja. 265 00:12:13,748 --> 00:12:16,320 Og svo lengi sem við sjáum að upp feril tímanum, 266 00:12:16,320 --> 00:12:18,540 þú ert í sérstaklega góðum stað. 267 00:12:18,540 --> 00:12:20,752 >> Formúlan sem við notum til að þyngd hlutir er í raun 268 00:12:20,752 --> 00:12:22,710 þetta á kennsluáætlun, sem þýðir bara að vér 269 00:12:22,710 --> 00:12:24,750 gefa fleiri þyngd til misskilning. 270 00:12:24,750 --> 00:12:27,930 Vegna þess að það er mjög oft misskilning sem tekur mest tíma. 271 00:12:27,930 --> 00:12:28,760 Treystu mér núna. 272 00:12:28,760 --> 00:12:31,190 Þú verður að find-- amk í einni pset-- að þér 273 00:12:31,190 --> 00:12:36,790 eyða 90% af tíma þínum vinna á 10% af vandamálinu. 274 00:12:36,790 --> 00:12:39,320 >> Og allt svona virkar nema fyrir einn eða tvo galla, 275 00:12:39,320 --> 00:12:41,570 og þeir eru villur sem halda þér upp seint á kvöldin. 276 00:12:41,570 --> 00:12:43,380 Þeir eru þær sem konar flýja yður. 277 00:12:43,380 --> 00:12:45,560 En eftir að sofa á það, eða sækja skrifstofutíma 278 00:12:45,560 --> 00:12:48,844 eða spyrja spurninga á netinu, er þegar þú færð að því 100% markinu, 279 00:12:48,844 --> 00:12:50,760 og það er hvers vegna við þyngd misskilning sem mest. 280 00:12:50,760 --> 00:12:54,102 Hönnun aðeins minna, og stíll aðeins minna en það. 281 00:12:54,102 --> 00:12:56,060 En hafðu í mind-- stíl er kannski auðveldasta 282 00:12:56,060 --> 00:12:58,890 af þessum að bíta á eins og á stíl fylgja. 283 00:12:58,890 --> 00:13:01,580 >> Og nú, alvarlegri skýringu um fræðilegum heiðarleika. 284 00:13:01,580 --> 00:13:05,000 CS50 hefur óheppileg greinarmun á vera stærsti framleiðandi stjórnar Ad 285 00:13:05,000 --> 00:13:07,330 tilvikum nánast á hverju ári sögulega. 286 00:13:07,330 --> 00:13:11,012 Þetta er ekki vegna þess að nemendur svindla í CS50 eitthvað meira svo en önnur tegund, 287 00:13:11,012 --> 00:13:13,720 heldur vegna þess að eftir eðli starfsins, sú staðreynd að það er rafræn, 288 00:13:13,720 --> 00:13:16,636 sú staðreynd að við lítum á það, og sú staðreynd að við erum tölvunarfræðingar, 289 00:13:16,636 --> 00:13:20,570 Ég get sagt að við erum því miður mjög góðir í að finna hana. 290 00:13:20,570 --> 00:13:22,710 >> Svo hvað þýðir þetta að raunvirði? 291 00:13:22,710 --> 00:13:24,820 Svo það, og á kennsluáætlun, heimspeki Námskeiðið er 292 00:13:24,820 --> 00:13:28,090 raunverulega hjartarskinn sjóða niður til að vera sanngjarn. 293 00:13:28,090 --> 00:13:31,684 Það er þessi lína á milli gera vinnu manns á eigin spýtur 294 00:13:31,684 --> 00:13:34,100 og fá smá sanngjarnt hjálp frá vini, 295 00:13:34,100 --> 00:13:38,020 og beina að gera að vinna fyrir þínum vinur, eða senda honum eða henni númerið þitt 296 00:13:38,020 --> 00:13:41,080 svo að hann eða hún getur einfaldlega taka eða láni það út rétt. 297 00:13:41,080 --> 00:13:43,580 Og það fer yfir strikið að við dregin í bekknum. 298 00:13:43,580 --> 00:13:45,410 >> Sjá, námsefni lokum fyrir línurnar 299 00:13:45,410 --> 00:13:48,209 að við sjáum eins og að vera sanngjarn og óraunhæft hegðun, 300 00:13:48,209 --> 00:13:50,000 en það þýðir í raun að sjóða niður á kjarna 301 00:13:50,000 --> 00:13:53,980 af vinnu þinni að þurfa að vera þinn eigin í lokin. 302 00:13:53,980 --> 00:13:56,230 Nú með því að segja, það er leitandi. 303 00:13:56,230 --> 00:13:58,980 Því eins og þú might imagine-- frá skrifstofutíma og myndefni 304 00:13:58,980 --> 00:14:01,060 og myndbönd við höfum sýnt þannig far-- CS50 305 00:14:01,060 --> 00:14:04,530 er örugglega ætlað að vera eins samstarf og eins samstarfsverkefni og félagsleg 306 00:14:04,530 --> 00:14:06,450 og hægt er. 307 00:14:06,450 --> 00:14:08,570 Sem samstarfsverkefni eins og það er erfitt. 308 00:14:08,570 --> 00:14:11,314 >> En með þessu sagt, leitandi, eins og þú munt sjá í kennsluáætlun, 309 00:14:11,314 --> 00:14:12,980 er að þegar þú ert having sumir vandamál. 310 00:14:12,980 --> 00:14:16,470 Þú hafa sumir galla í kóðanum þínum, sem þér getur ekki leyst, er það sanngjarnt fyrir þig 311 00:14:16,470 --> 00:14:18,039 til að sýna númerið þitt til að einhver annar. 312 00:14:18,039 --> 00:14:21,080 Vinur jafnvel í bekknum, vinur situr við hliðina á þér á skrifstofutíma, 313 00:14:21,080 --> 00:14:22,680 eða starfsmaður. 314 00:14:22,680 --> 00:14:25,810 En þeir mega ekki sýna kóðann þeirra til þín. 315 00:14:25,810 --> 00:14:27,710 >> Með öðrum orðum, svara til question-- þinn 316 00:14:27,710 --> 00:14:29,940 Ég þarf help-- ekki ó, hér er númerið mitt. 317 00:14:29,940 --> 00:14:32,440 Taka a líta á þetta og ráða af því hvað þú vilt. 318 00:14:32,440 --> 00:14:34,580 Nú, að sjálfsögðu, að það er leið greinilega að leik 319 00:14:34,580 --> 00:14:37,760 þetta kerfi þar sem ég ætla að sýna þér númerið mitt áður en spurningu. 320 00:14:37,760 --> 00:14:40,150 Þú sýna mér mína númerið þitt áður en spurningu. 321 00:14:40,150 --> 00:14:45,870 En sjá kennsluáætlun aftur fyrir fínni smáatriði þar þessi lína er. 322 00:14:45,870 --> 00:14:50,606 >> Bara að nú mála mynd og deila eins gagnsær og mögulegt 323 00:14:50,606 --> 00:14:53,480 þar sem við erum á á undanförnum árum, þetta er fjöldi stjórnarmanna Ad tilfellum 324 00:14:53,480 --> 00:14:56,260 að CS50 hefur haft yfir Á síðustu sjö árum. 325 00:14:56,260 --> 00:14:58,717 Með 14 tilvikum nýjustu haust. 326 00:14:58,717 --> 00:15:01,300 Hvað varðar nemendur sem taka þátt, það var 20 sumir stakur nemendur 327 00:15:01,300 --> 00:15:02,490 síðasta haust. 328 00:15:02,490 --> 00:15:05,670 Það var hámarki 33 nemendur nokkur ár síðan. 329 00:15:05,670 --> 00:15:08,830 Sem margir hverjir eru því miður ekki lengur hér á háskólasvæðinu. 330 00:15:08,830 --> 00:15:13,100 >> Nemendur sem taka þátt sem hlutfall af flokkur hefur sögulega bilinu 0% 331 00:15:13,100 --> 00:15:17,300 til 5,3%, sem er aðeins að segja þetta er árlega áskorun. 332 00:15:17,300 --> 00:15:20,390 Og í átt að lokum, hvað við viljum gera er að flytja eitt 333 00:15:20,390 --> 00:15:24,310 að við dd-- bara FYI-- bera á a sanngirni við þá nemendur sem 334 00:15:24,310 --> 00:15:26,520 eru eftirfarandi línu til samræmis. 335 00:15:26,520 --> 00:15:29,620 Við gerum bera alla núverandi skráningar gegn öllum fyrri verkefnum 336 00:15:29,620 --> 00:15:30,840 frá síðustu árum. 337 00:15:30,840 --> 00:15:33,620 >> Við vitum líka hvernig á að Prófaðu kring og finna kóða útibúum 338 00:15:33,620 --> 00:15:36,360 online, Umræðuhópar online, starf staður á netinu. 339 00:15:36,360 --> 00:15:41,580 Ef nemandi getur fundið það, getum við örugglega finna það eins mikið og við gerum miður. 340 00:15:41,580 --> 00:15:45,330 Svo það sem þú munt sjá í kennsluáætlun þó er þetta eftirsjá ákvæði. 341 00:15:45,330 --> 00:15:47,500 Ég get vissulega þakka, og við öll hefur 342 00:15:47,500 --> 00:15:50,870 starfsfólk hafa gert námskeið eins þetta eða þetta sig með tímanum, 343 00:15:50,870 --> 00:15:53,997 vissulega veit hvað það er eins og þegar lífið fær í leiðinni þegar þú hefur 344 00:15:53,997 --> 00:15:56,080 sumir seint nóttina deadline-- ekki aðeins í þessum flokki, 345 00:15:56,080 --> 00:15:58,660 en another-- þegar þú ert alveg búinn, stressuð, 346 00:15:58,660 --> 00:16:00,659 haft umtalsverð númer af öðrum hlutum til að gera. 347 00:16:00,659 --> 00:16:03,660 Þú verður að gera á einhverjum tímapunkti í lífið vissulega slæmt, kannski seint 348 00:16:03,660 --> 00:16:04,620 nótt ákvörðun. 349 00:16:04,620 --> 00:16:06,520 >> Svo á kennsluáætlun, það er þetta ákvæði, 350 00:16:06,520 --> 00:16:10,629 þannig að ef innan 72 klst til að gera sumir fátækur ákvörðun, eiga þér upp á það 351 00:16:10,629 --> 00:16:12,670 og ná til mín og Eitt af höfðum Námskeiðið er 352 00:16:12,670 --> 00:16:14,300 og við munum hafa samtal. 353 00:16:14,300 --> 00:16:16,220 Við munum höndla það innra í von 354 00:16:16,220 --> 00:16:18,770 af því að verða meira af kennslu stund eða líf kennslustund, 355 00:16:18,770 --> 00:16:22,120 og ekki eitthvað með sérstaklega róttækar afleiðingar 356 00:16:22,120 --> 00:16:24,570 eins og þú gætir séð á þessum kortum hér. 357 00:16:24,570 --> 00:16:26,540 >> Svo er það mjög alvarlegt tón. 358 00:16:26,540 --> 00:16:29,960 Skulum staldra fyrir aðeins nokkrum sekúndur til að brjóta úr spennu. 359 00:16:29,960 --> 00:16:34,442 >> [Tónlist spila] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> DAVID J. MALAN: Allt í lagi, svo hvernig var að fyrir segue? 362 00:17:20,250 --> 00:17:22,059 Til aðal málefni dagsins í dag. 363 00:17:22,059 --> 00:17:23,859 Fyrsta sem er abstrakt. 364 00:17:23,859 --> 00:17:26,900 Annar sem er að fara að vera framsetning gagna, sem hreinskilnislega 365 00:17:26,900 --> 00:17:31,640 er mjög þurr leið til að segja hvernig getum við fara um að leysa vandamál og hugsa 366 00:17:31,640 --> 00:17:33,250 um að leysa vandamál? 367 00:17:33,250 --> 00:17:37,285 Svo þú hefur séð í grunni, og þú hefur séð kannski í pset1 með C 368 00:17:37,285 --> 00:17:39,930 sem þú ekki aðeins hægt að nota aðgerðir, eins og printf, 369 00:17:39,930 --> 00:17:42,770 að annað fólk í ár fortíð skrifaði fyrir þig. 370 00:17:42,770 --> 00:17:45,340 Þú getur líka skrifað eigin starfsemi þína. 371 00:17:45,340 --> 00:17:48,440 >> Og jafnvel þó að þú gætir ekki hafa gert þetta í C, og hreinskilnislega í pset1 372 00:17:48,440 --> 00:17:51,866 þú í raun ekki þörf á að skrifa þína eigin virkni vegna þess að problem-- 373 00:17:51,866 --> 00:17:53,990 en kannski erfitt að fyrst glance-- þú munt sjá 374 00:17:53,990 --> 00:17:57,910 getur að lokum verið leyst með ekki allt sem margar línur af kóða. 375 00:17:57,910 --> 00:18:01,140 En með því að segja, í skilmálar að skrifa eigin færni, 376 00:18:01,140 --> 00:18:03,570 gera sér grein fyrir að C er að gefa þú þetta hæfileiki. 377 00:18:03,570 --> 00:18:06,940 >> Ég ætla að fara í dag kóða, sem er í boði nú þegar á netinu, 378 00:18:06,940 --> 00:18:10,900 og ég ætla að fara á undan og opna upp forrit sem heitir virka 0.C, 379 00:18:10,900 --> 00:18:14,620 og í aðgerð núll munum við sjá nokkra hluti. 380 00:18:14,620 --> 00:18:19,160 Í fyrstu línum 18 í gegnum 23 er helsta virka minn. 381 00:18:19,160 --> 00:18:22,414 Og núna þegar við erum farin að lesa númer sem við erum ekki að skrifa á flugu, 382 00:18:22,414 --> 00:18:25,080 en í staðinn ég hef skrifað fyrirfram eða að þú í vanda sett 383 00:18:25,080 --> 00:18:27,910 fengjum að hafa verið skrifað fyrirfram. 384 00:18:27,910 --> 00:18:30,040 Góð leið til að byrja lesa kóða einhvers annars 385 00:18:30,040 --> 00:18:31,400 er að leita að the aðalæð virka. 386 00:18:31,400 --> 00:18:34,420 Reikna út hvar þessi færslu lið er að keyra forritið, 387 00:18:34,420 --> 00:18:36,580 og þá fylgja því rökrétt þaðan. 388 00:18:36,580 --> 00:18:40,190 >> Svo þetta forrit víst prentar nafn þitt eftir tvípunkti. 389 00:18:40,190 --> 00:18:42,490 Við notum þá GetString frá CS50 bókasafn 390 00:18:42,490 --> 00:18:46,050 að fá band eða orð eða setningu frá notanda í lyklaborðinu. 391 00:18:46,050 --> 00:18:48,390 Og þá er það þetta hlutur here-- PrintName. 392 00:18:48,390 --> 00:18:51,420 >> Nú er PrintName ekki fall sem kemur með C 393 00:18:51,420 --> 00:18:52,970 Það er ekki í venjulegu io.h. 394 00:18:52,970 --> 00:18:55,570 Það er ekki í CS50.h. 395 00:18:55,570 --> 00:18:57,880 Það er frekar í sömu skrá. 396 00:18:57,880 --> 00:19:01,000 Taka ef ég skruna niður a bit-- línur 25 að 27-- 397 00:19:01,000 --> 00:19:05,330 það er bara nokkuð hátt á athugasemdir númerið þitt með því að nota stjörnurnar og skástrik. 398 00:19:05,330 --> 00:19:07,320 Þetta er multi-lína comment, og þetta er bara 399 00:19:07,320 --> 00:19:10,570 lýsing mín í bláa hvað þessi aðgerð gerir. 400 00:19:10,570 --> 00:19:14,530 >> Vegna þess að í línum 28 til 31., Ég hef skrifað frábær einfalt fall 401 00:19:14,530 --> 00:19:16,280 er nafn hans PrintName. 402 00:19:16,280 --> 00:19:19,560 Það tekur hversu margir rök myndir þú segja? 403 00:19:19,560 --> 00:19:25,120 Svo einn argument-- vegna þess að það er eitt rök skráð inni í sviga. 404 00:19:25,120 --> 00:19:27,000 The tegund sem er String. 405 00:19:27,000 --> 00:19:30,240 Sem er að segja PrintName er svona svartur kassi 406 00:19:30,240 --> 00:19:32,910 eða aðgerð sem tekur sem inntak streng. 407 00:19:32,910 --> 00:19:35,730 >> Og nafn þess String þægilegan verður Nafn. 408 00:19:35,730 --> 00:19:37,840 Ekki S, ekki N, en nafn. 409 00:19:37,840 --> 00:19:41,090 Svo hvað þýðir PrintName gera? 410 00:19:41,090 --> 00:19:42,210 Það er gott einfalt. 411 00:19:42,210 --> 00:19:45,390 Rétt eins og einni línu af kóða fyrir sem printf, en svo virðist það 412 00:19:45,390 --> 00:19:47,950 prentar út "Halló," svo og svo. 413 00:19:47,950 --> 00:19:50,070 Ef svo og svo kemur frá rifrildi. 414 00:19:50,070 --> 00:19:52,300 >> Nú er þetta ekki mikið nýjung hér. 415 00:19:52,300 --> 00:19:56,710 Raunverulega, Ég hef tekið upp forrit sem gat hafa verið skrifuð með einni línu af kóða 416 00:19:56,710 --> 00:20:00,190 með því að setja þetta upp hér, og breytt því að eitthvað 417 00:20:00,190 --> 00:20:04,920 sem felur í sér sumir sex eða sjö eða svo línur af kóða alla leið niður hér. 418 00:20:04,920 --> 00:20:08,190 >> En það er æfa á a meginreglan þekktur sem abstrakt. 419 00:20:08,190 --> 00:20:12,550 Konar encapsulating inni ný fall sem hefur nafn, og betri 420 00:20:12,550 --> 00:20:14,590 enn það nafn bókstaflega segir hvað það gerir. 421 00:20:14,590 --> 00:20:16,880 Ég meina printf-- það er ekki sérstaklega lýsandi. 422 00:20:16,880 --> 00:20:18,932 Ef ég vil að búa til púsluspil stykki, eða ef ég 423 00:20:18,932 --> 00:20:21,140 langar til að búa til fall sem prentar nafn einhvers, 424 00:20:21,140 --> 00:20:23,230 fegurð að gera þetta er að ég get í raun 425 00:20:23,230 --> 00:20:27,170 gefa því fall nafn sem lýsir því sem það gerir. 426 00:20:27,170 --> 00:20:29,844 >> Nú tekur það í inntak sem Ég hef geðþótta nefndi, 427 00:20:29,844 --> 00:20:32,760 en það er líka frábærlega lýsandi stað þess að vera a lítill fleiri 428 00:20:32,760 --> 00:20:36,140 almenn eins S. og ógild, fyrir nú, bara þýðir 429 00:20:36,140 --> 00:20:38,330 að þessi aðgerð virkar ekki afhenda mér aftur neitt. 430 00:20:38,330 --> 00:20:41,127 Það er ekki eins GetString sem bókstaflega hendur mér aftur a band 431 00:20:41,127 --> 00:20:43,960 eins og við gerðum með stykki af pappír við bekkjarfélaga síðustu viku þína, 432 00:20:43,960 --> 00:20:45,990 heldur hefur það bara aukaverkun. 433 00:20:45,990 --> 00:20:48,080 Það prentar eitthvað á skjáinn. 434 00:20:48,080 --> 00:20:53,880 >> Svo í lok dagsins, ef ég gera aðgerð-0, ./function-0, 435 00:20:53,880 --> 00:20:55,450 Við munum sjá að það biður um nafn mitt. 436 00:20:55,450 --> 00:20:58,150 Ég slá Davíð, og það gerðir út nafn mitt. 437 00:20:58,150 --> 00:21:01,080 Ef ég gera það aftur með Rob, það er að fara að segja "Hello, Rob." 438 00:21:01,080 --> 00:21:04,280 Svo einföld hugmynd, en kannski framreikna frá þessu andlega 439 00:21:04,280 --> 00:21:06,750 að sem áætlanir þínar fá svolítið flóknara, 440 00:21:06,750 --> 00:21:10,290 og þú vilt að skrifa klumpur af númer og kalla það code-- ákalla 441 00:21:10,290 --> 00:21:13,270 að code-- af sumum lýsandi nafn eins PrintName, 442 00:21:13,270 --> 00:21:15,600 C er efni okkur þessa getu. 443 00:21:15,600 --> 00:21:17,660 >> Hér er annað einfalt dæmi. 444 00:21:17,660 --> 00:21:22,940 Til dæmis, ef ég opna upp skrá frá í dag heitir return.c, 445 00:21:22,940 --> 00:21:24,270 taka eftir hvað ég hef gert hér. 446 00:21:24,270 --> 00:21:26,330 Flest af þessu aðalæð virka er printf. 447 00:21:26,330 --> 00:21:30,360 Ég fyrst geðþótta frumstilla a breytu sem heitir x til númer 2. 448 00:21:30,360 --> 00:21:34,110 Ég prenta þá út "x er nú % I "liggur í verðmæti x. 449 00:21:34,110 --> 00:21:35,500 Þannig að ég ætla bara að segja hvað það er. 450 00:21:35,500 --> 00:21:37,208 >> Nú er ég bara með djörfung krafa með printf. 451 00:21:37,208 --> 00:21:42,050 Ég er cubing að gildi x, og ég er gera það með því að hringja í aðgerð 452 00:21:42,050 --> 00:21:45,590 kallast teningur liggur í X sem rök, 453 00:21:45,590 --> 00:21:49,300 og þá að vista framleiðsla í breytunni sjálfri, x. 454 00:21:49,300 --> 00:21:51,340 Þannig að ég ætla clobbering gildi x. 455 00:21:51,340 --> 00:21:53,380 Ég hunsa það gildi x við hvað 456 00:21:53,380 --> 00:21:56,510 afleiðing af starf þetta teningur virka er. 457 00:21:56,510 --> 00:21:59,530 Og þá er ég að prenta bara út sumir Fluffy efni hér að segja það sem ég gerði. 458 00:21:59,530 --> 00:22:01,600 >> Svo hvað þá er teningur? 459 00:22:01,600 --> 00:22:03,510 Taka eftir hvað er í grundvallaratriðum öðruvísi hér. 460 00:22:03,510 --> 00:22:05,540 Ég hef gefið aðgerðina nafn eins og áður. 461 00:22:05,540 --> 00:22:08,270 Ég hef tilgreint nafn rifrildi. 462 00:22:08,270 --> 00:22:11,650 This tími það er kallað n stað nafns, en ég gæti kalla það eitthvað sem ég vil. 463 00:22:11,650 --> 00:22:12,650 En þetta er öðruvísi. 464 00:22:12,650 --> 00:22:14,080 Þessi hlutur vinstri. 465 00:22:14,080 --> 00:22:16,290 Áður var það leitarorð? 466 00:22:16,290 --> 00:22:16,870 Strákar. 467 00:22:16,870 --> 00:22:18,580 Nú er það augljóslega int. 468 00:22:18,580 --> 00:22:20,630 >> Svo hvað er kannski taka í burtu? 469 00:22:20,630 --> 00:22:24,090 En ógilt dregur konar tómi, og það var raunin. 470 00:22:24,090 --> 00:22:25,970 PrintName aftur ekkert. 471 00:22:25,970 --> 00:22:27,942 Það gerði eitthvað, en það var ekki hönd mig aftur 472 00:22:27,942 --> 00:22:30,650 eitthvað sem ég gæti sett á vinstri hönd hlið af jafnaðarmerki 473 00:22:30,650 --> 00:22:32,460 eins og ég hef gert hér á línu 22. 474 00:22:32,460 --> 00:22:36,780 >> Svo ef ég segi í á línu 30, hvað er það líklega að gefa í skyn 475 00:22:36,780 --> 00:22:38,610 um hvað teningur er fyrir mig? 476 00:22:38,610 --> 00:22:41,110 Já? 477 00:22:41,110 --> 00:22:42,310 Það skilar heiltölu. 478 00:22:42,310 --> 00:22:44,590 Svo það hendur mér til baka, fyrir dæmi, a stykki af pappír 479 00:22:44,590 --> 00:22:46,580 sem hún hefur skrifað svar. 480 00:22:46,580 --> 00:22:50,130 2 cubed, eða 3 cubed, eða 4 cubed-- hvað ég fór í, 481 00:22:50,130 --> 00:22:51,540 og hvernig var ég framkvæma þetta? 482 00:22:51,540 --> 00:22:54,810 Jæja, bara n sinnum n sinnum n er hvernig ég gæti teningur gildi. 483 00:22:54,810 --> 00:22:57,110 Svo aftur, frábær einfalt hugmynd, en sýnileg 484 00:22:57,110 --> 00:23:00,100 nú hvernig við getum skrifað aðgerðir sem í raun hafði okkur aftur 485 00:23:00,100 --> 00:23:02,380 gildi sem gætu vakið áhuga. 486 00:23:02,380 --> 00:23:05,740 >> Við skulum líta á eitt síðasta dæmi hér kallað virka einn. 487 00:23:05,740 --> 00:23:08,530 Í þessu dæmi, það byrjar til að fá meira sannfærandi. 488 00:23:08,530 --> 00:23:12,400 Svo í aðgerð einn, þetta program-- tilkynning lokum 489 00:23:12,400 --> 00:23:14,920 kallar fall kallast GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt er ekki virka í CS50 bókasafn, 491 00:23:17,800 --> 00:23:20,400 en við ákváðum að við langar það að vera til. 492 00:23:20,400 --> 00:23:24,550 >> Þannig að ef við skruna niður síðar í skránni, eftir hvernig ég gekk um framkvæmd 493 00:23:24,550 --> 00:23:26,560 fá jákvæða int, og ég segja að það er meira sannfærandi 494 00:23:26,560 --> 00:23:28,992 vegna þess að þetta er ágætis Fjöldi lína af kóða. 495 00:23:28,992 --> 00:23:30,700 Það er ekki bara kjánalegt lítið leikfang program. 496 00:23:30,700 --> 00:23:33,870 Það er í raun fengið nokkrar villuprófun og gera eitthvað fleiri gagnlegur. 497 00:23:33,870 --> 00:23:38,470 >> Þannig að ef þú hefur ekki séð walkthrough myndbönd sem við höfum embed í pset1, 498 00:23:38,470 --> 00:23:42,350 veit að þetta er tegund af lykkja í C, svipað í anda 499 00:23:42,350 --> 00:23:44,270 til hvers konar hlutum grunni getur gert. 500 00:23:44,270 --> 00:23:46,320 Og gera segir að gera þetta. 501 00:23:46,320 --> 00:23:47,500 Prenta þetta út. 502 00:23:47,500 --> 00:23:51,860 Þá fara á undan og fá n- fá int og geyma það í n, 503 00:23:51,860 --> 00:23:55,760 og halda að gera þetta aftur og aftur og aftur svo lengi sem n er minna en eitt. 504 00:23:55,760 --> 00:23:58,720 >> Svo n er að fara að vera minna en eitt aðeins ef mönnum er ekki samstarf. 505 00:23:58,720 --> 00:24:01,980 Ef hann eða hún er að skrifa í 0 eða -1 eða -50, 506 00:24:01,980 --> 00:24:04,790 Þessi lykkja er að fara að halda framkvæmd aftur og aftur. 507 00:24:04,790 --> 00:24:07,549 Og að lokum eftir, ég einfaldlega skila gildi. 508 00:24:07,549 --> 00:24:09,590 Svo nú höfum við fall sem hefði verið gott 509 00:24:09,590 --> 00:24:14,040 ef CS50 myndi framkvæma í CS50.h og CS50.c fyrir þig, 510 00:24:14,040 --> 00:24:16,520 en hér getum við nú framkvæma þetta sjálf. 511 00:24:16,520 --> 00:24:19,230 >> En tveir um ýmsar helstu upplýsingar. 512 00:24:19,230 --> 00:24:24,390 One-- hverju gerði ég lýsa int n, heldur þú, á línu 29 513 00:24:24,390 --> 00:24:27,139 í stað þess að bara að gera þetta hér, sem er 514 00:24:27,139 --> 00:24:28,930 meira í samræmi við það sem við gerðum í síðustu viku? 515 00:24:28,930 --> 00:24:29,430 Já? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 Góð hugsun. 518 00:24:35,110 --> 00:24:37,080 Þannig að ef við vorum að setja það hér er það eins og vér 519 00:24:37,080 --> 00:24:39,110 halda lýsa það aftur og aftur. 520 00:24:39,110 --> 00:24:42,000 Það er í sjálfu sér er ekki erfið, í sjálfu sér, 521 00:24:42,000 --> 00:24:43,940 vegna þess að við þurfum aðeins að gildi einu sinni og þá 522 00:24:43,940 --> 00:24:45,330 við erum að fara að fá nýjan samt. 523 00:24:45,330 --> 00:24:45,940 En góð hugsun. 524 00:24:45,940 --> 00:24:46,440 Já? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> Loka. 527 00:24:53,330 --> 00:24:59,030 Svo vegna þess að ég hef lýst n á lína 29. utan lykkju, 528 00:24:59,030 --> 00:25:01,390 það er aðgengilegt í gegnum þetta allt virka. 529 00:25:01,390 --> 00:25:05,400 Ekki aðrar aðgerðir vegna n er enn inni af þessum hrokkið 530 00:25:05,400 --> 00:25:06,470 axlabönd hér. 531 00:25:06,470 --> 00:25:07,940 So-- viss. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> Nákvæmlega. 534 00:25:12,940 --> 00:25:14,356 Svo er þetta jafnvel meira til að benda. 535 00:25:14,356 --> 00:25:18,600 Ef við lýst í staðinn n hérna á línu 32, 536 00:25:18,600 --> 00:25:22,340 það er erfitt vegna þess að giska hvar annars þarf ég að nálgast það? 537 00:25:22,340 --> 00:25:25,620 Á línu 34, og að Einföld þumalputtaregla er 538 00:25:25,620 --> 00:25:30,060 að þú getur aðeins notað breytilegt inni af nýjustu hrokkið axlabönd 539 00:25:30,060 --> 00:25:31,420 þar sem þú lýst því. 540 00:25:31,420 --> 00:25:35,230 >> Því miður, lína 34 er ein lína of seint, 541 00:25:35,230 --> 00:25:38,560 vegna þess að ég hef nú þegar lokað sem hrokkið Brace á línu 33 542 00:25:38,560 --> 00:25:41,220 sem svarar til hrokkið Brace á línu 30. 543 00:25:41,220 --> 00:25:44,180 Og svo er þetta leið til að segja að þessi breyta int er scoped, 544 00:25:44,180 --> 00:25:46,970 svo að segja, að aðeins innan þessara hrokkið axlabönd. 545 00:25:46,970 --> 00:25:48,910 Það bara er ekki til utan af þeim. 546 00:25:48,910 --> 00:25:51,580 >> Svo reyndar, ef ég geri þetta rangt, láttu mig vistað kóða 547 00:25:51,580 --> 00:25:53,530 eins og það is-- rangt skrifað. 548 00:25:53,530 --> 00:25:57,990 Leyfðu mér að fara á undan og gera það virka-1, og notice-- villa. 549 00:25:57,990 --> 00:26:03,502 Notkun á svart, kennimerki n á línu 35, sem er hérna. 550 00:26:03,502 --> 00:26:05,210 Og ef við skruna upp frekar, annað. 551 00:26:05,210 --> 00:26:08,750 Notkun á óskilgreinda kennimerki n á línu 34. 552 00:26:08,750 --> 00:26:11,200 >> Svo þýðanda, Clang, er að taka eftir að það bara 553 00:26:11,200 --> 00:26:13,720 er ekki til, jafnvel þótt greinilega er það þar sjónrænt. 554 00:26:13,720 --> 00:26:16,090 Svo einfalt festa er að lýsa yfir því þar. 555 00:26:16,090 --> 00:26:18,790 >> Nú láta mig fletta að efst á skránni. 556 00:26:18,790 --> 00:26:21,080 Hvað stekkur út á þig sem vera svolítið öðruvísi 557 00:26:21,080 --> 00:26:23,070 frá efni við skoðuðum í síðustu viku? 558 00:26:23,070 --> 00:26:26,990 Ekki aðeins hef ég heiti, ekki bara Ég hef nokkrar skarpur nær upp efst, 559 00:26:26,990 --> 00:26:29,340 Ég hef eitthvað sem ég er hringja frumgerð. 560 00:26:29,340 --> 00:26:36,100 Nú lítur það afskaplega svipað því sem Við sáum bara smá stund síðan á línu 27. 561 00:26:36,100 --> 00:26:39,230 >> Svo skulum álykta frá mismunandi villuboð vegna hef ég gert þetta. 562 00:26:39,230 --> 00:26:42,050 Leyfðu mér að fara á undan og eyða þessum línum þar. 563 00:26:42,050 --> 00:26:44,240 Og svo vitum við ekkert um frumgerð. 564 00:26:44,240 --> 00:26:45,430 Endurgerð þessa skrá. 565 00:26:45,430 --> 00:26:46,890 Gera virka einn. 566 00:26:46,890 --> 00:26:48,090 Og nú, fjandinn, fjórir villur. 567 00:26:48,090 --> 00:26:50,220 Við skulum fletta upp á fyrsta. 568 00:26:50,220 --> 00:26:55,070 >> Óbeinir yfirlýsing um virka fá jákvæða int er ógilt í C99. 569 00:26:55,070 --> 00:26:57,780 C99 þýðir bara 1999 útgáfa af tungumálinu 570 00:26:57,780 --> 00:26:59,710 C, sem er það sem við erum örugglega að nota. 571 00:26:59,710 --> 00:27:01,050 Svo hvað þýðir þetta? 572 00:27:01,050 --> 00:27:05,250 Jæja C-- og sérstaklega C compilers-- eru nokkuð heimsk forrit. 573 00:27:05,250 --> 00:27:07,420 Þeir vita bara hvað þú hefur sagði þeim, og það er 574 00:27:07,420 --> 00:27:08,960 reyndar þema síðustu viku. 575 00:27:08,960 --> 00:27:12,910 >> Vandamálið er að ef ég fer um framkvæmd heiti hér, 576 00:27:12,910 --> 00:27:17,640 og ég kalla fall sem kallast GetPositiveInt hér á línu 20, 577 00:27:17,640 --> 00:27:22,520 að virka tæknilega ekki til fyrr þýðandinn sér línu 27. 578 00:27:22,520 --> 00:27:25,450 Því miður, the compiler er gera hlutina efst, niður, til vinstri, hægri, 579 00:27:25,450 --> 00:27:29,580 svo vegna þess að það hefur ekki séð framkvæmd GetPositiveInt, 580 00:27:29,580 --> 00:27:32,400 en það sér að reyna að nota það upp hér, 581 00:27:32,400 --> 00:27:35,810 það er bara að fara að bail-- æpa þú með villu message-- kannski 582 00:27:35,810 --> 00:27:38,440 dulinn, og í raun ekki þýða skrána. 583 00:27:38,440 --> 00:27:41,940 >> Svo svokölluð frumgerð upp hér er vissulega óþarfi. 584 00:27:41,940 --> 00:27:47,870 Bókstaflega, fór ég hingað og ég afrita og límt þetta og ég setti það upp hér. 585 00:27:47,870 --> 00:27:51,020 Ógilt væri meira viðeigandi, þannig að við munum bókstaflega afrita og líma það í þetta sinn. 586 00:27:51,020 --> 00:27:52,854 Ég afrita bókstaflega og líma það. 587 00:27:52,854 --> 00:27:54,270 Í raun bara eins og eins og brauð Crumb. 588 00:27:54,270 --> 00:27:56,260 >> Smá vísbending að þýðanda. 589 00:27:56,260 --> 00:27:58,860 Ég veit ekki hvað þetta þýðir enn, en ég ætla að lofa að þér 590 00:27:58,860 --> 00:28:00,260 að það muni vera til á endanum. 591 00:28:00,260 --> 00:28:04,010 Og það er hvers vegna þetta line-- í lína 16-- endar með semíkommu. 592 00:28:04,010 --> 00:28:05,486 Það er óþarfi af hönnun. 593 00:28:05,486 --> 00:28:05,986 Já? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> Ef þú myndað af did ekki vísa bókasafn að the-- ó, góð spurning. 596 00:28:14,360 --> 00:28:17,350 Sharp inniheldur haus skrá innifalið. 597 00:28:17,350 --> 00:28:20,040 Þarftu að be-- ætti nánast alltaf að vera á the mjög toppur 598 00:28:20,040 --> 00:28:23,270 skrárinnar fyrir similar-- fyrir nákvæmlega sama ástæða, já. 599 00:28:23,270 --> 00:28:26,430 Vegna þess að í venjulegu io.h er bókstaflega lína 600 00:28:26,430 --> 00:28:30,560 eins og þetta, en með orðinu printf, og með rökum sínum og tegund aftur hennar. 601 00:28:30,560 --> 00:28:33,310 Og svo með því að gera mikil meðal annars upp hér, hvað þú ert bókstaflega að gera 602 00:28:33,310 --> 00:28:36,380 er að afrita og líma efni einhver annar skrifaði upp efst. 603 00:28:36,380 --> 00:28:39,660 Þannig cluing kóðann þinn í til staðreynd að þau virka ekki til. 604 00:28:39,660 --> 00:28:40,160 Já? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> Algerlega. 607 00:28:48,260 --> 00:28:51,690 Svo mjög snjall og rétt lausn væri, þú veist hvað? 608 00:28:51,690 --> 00:28:53,760 Ég veit ekki hvað Frumgerðin er, en ég veit 609 00:28:53,760 --> 00:28:56,390 ef ég skil að C er bara heimsk og Friedman með nýjan vinkil efst til botn. 610 00:28:56,390 --> 00:28:57,820 Jæja við skulum gefa það hvað það vill. 611 00:28:57,820 --> 00:29:01,650 Skulum skera þessi kóðann, líma það upp efst, og nú ýta helstu niður hér að neðan. 612 00:29:01,650 --> 00:29:03,470 Þetta of myndi leysa vandann. 613 00:29:03,470 --> 00:29:07,409 >> En þú getur mjög auðveldlega komið upp með atburðarás þar sem A þarf að hringja B, 614 00:29:07,409 --> 00:29:10,075 og kannski B kallar aftur til A. Þetta er eitthvað sem kallast endurkvæmni, 615 00:29:10,075 --> 00:29:11,370 og við munum koma aftur til það. 616 00:29:11,370 --> 00:29:13,911 Og það mega eða mega ekki vera góður hlutur, en þú getur örugglega 617 00:29:13,911 --> 00:29:15,110 brjóta þessa lausn. 618 00:29:15,110 --> 00:29:17,690 >> Og þar að auki, vildi ég kröfu stylistically, 619 00:29:17,690 --> 00:29:20,760 sérstaklega þegar forrit verða þetta lengi og þetta lengi, 620 00:29:20,760 --> 00:29:23,064 það er bara frábær þægilegt að setja helstu efst 621 00:29:23,064 --> 00:29:25,730 vegna þess að það er hlutur mest forritari eru að fara að hugsa um. 622 00:29:25,730 --> 00:29:28,150 Og svo er það svolítið hreinni, að öllum líkindum, að gera það á þann hátt 623 00:29:28,150 --> 00:29:30,380 Ég upphaflega gerði það með frumgerð jafnvel 624 00:29:30,380 --> 00:29:33,396 þó það lítur svolítið óþarfi við fyrstu sýn. 625 00:29:33,396 --> 00:29:33,895 Já? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 Því miður, þú getur sagt það hávær? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> Ef þú kveikir staðsetningar sem framkvæmd og frumgerð? 630 00:29:49,580 --> 00:29:51,270 Svo er það góð spurning. 631 00:29:51,270 --> 00:29:53,780 Ef þú aftur lýsa þessu niður hér, við skulum sjá hvað gerist. 632 00:29:53,780 --> 00:29:55,530 Þannig að ef ég setti þetta niður hér, þú ert að segja. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 Ó, fyrirgefðu. 635 00:29:58,360 --> 00:29:58,859 Hávær? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 Jafnvel hávær. 638 00:30:04,011 --> 00:30:04,760 Ó, góð spurning. 639 00:30:04,760 --> 00:30:05,860 Myndi hann rift virka? 640 00:30:05,860 --> 00:30:08,901 Þú veist, eftir öll þessi ár, ég hafa aldrei farið frumgerð eftirá. 641 00:30:08,901 --> 00:30:13,810 Svo skulum gera gera virka-1 eftir að gera það. 642 00:30:13,810 --> 00:30:15,279 >> [Muldur] 643 00:30:15,279 --> 00:30:16,320 DAVID J. MALAN: Ó, bíddu. 644 00:30:16,320 --> 00:30:17,944 Við höfum enn að setja allt upp á brún. 645 00:30:17,944 --> 00:30:21,400 Svo skulum gera þetta upp hér, ef ég er skilja spurninguna þína rétt. 646 00:30:21,400 --> 00:30:24,700 Ég er að setja allt, þar á meðal frumgerð yfir helstu, 647 00:30:24,700 --> 00:30:28,180 en ég ætla að setja frumgerð neðan framkvæmd. 648 00:30:28,180 --> 00:30:33,190 >> Þannig að ef ég geri einn, ég er að fá aftur að error-- ónotað breytilegum n. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 Ó, það. 651 00:30:37,860 --> 00:30:38,360 Þakka þér. 652 00:30:38,360 --> 00:30:39,430 Við skulum sjá, fáum við losna við þetta. 653 00:30:39,430 --> 00:30:41,304 Það er öðruvísi galla, þannig að við skulum hunsa það. 654 00:30:41,304 --> 00:30:43,910 Skulum virkilega hratt endurgerð þetta. 655 00:30:43,910 --> 00:30:48,100 >> Allt í lagi, þannig að gögn rök ekki nota prentstrengjum 656 00:30:48,100 --> 00:30:52,310 n- ó, það er vegna þess að Ég breytt í þessum hér. 657 00:30:52,310 --> 00:30:55,885 Allt í lagi, við vitum hvað svarið er að fara to-- allt í lagi, hér við fara. 658 00:30:55,885 --> 00:31:00,560 Æ, takk fyrir jákvæð. 659 00:31:00,560 --> 00:31:03,430 Allt í lagi, mun ég laga þetta kóða after-- hunsa þetta tiltekna galla 660 00:31:03,430 --> 00:31:08,300 þar sem þetta was-- það virkar er svarið. 661 00:31:08,300 --> 00:31:11,560 >> Svo það er ekki skrifa hvað þú varst að gera. 662 00:31:11,560 --> 00:31:14,800 Mig grunar þýðanda er skrifað á þann hátt 663 00:31:14,800 --> 00:31:18,420 að það er hunsa frumgerð þína vegna þess að líkamanum, svo að segja, 664 00:31:18,420 --> 00:31:20,922 af aðgerðin er þegar verið hrint í framkvæmd ofar. 665 00:31:20,922 --> 00:31:23,380 Ég þyrfti að raunverulega samráð handbók um þýðanda 666 00:31:23,380 --> 00:31:26,171 að skilja ef það er einhver annar vísbendingu, en við fyrstu sýn 667 00:31:26,171 --> 00:31:29,290 bara með því að reyna og gera tilraunir, það virðist vera engin áhrif. 668 00:31:29,290 --> 00:31:30,730 Góð spurning. 669 00:31:30,730 --> 00:31:33,660 >> Svo skulum sækja fram núna, að færa frá aukaverkunum sem 670 00:31:33,660 --> 00:31:36,660 eru aðgerðir sem gera eitthvað eins og sjónrænt á skjánum með printf, 671 00:31:36,660 --> 00:31:38,090 en ekki aftur gildi. 672 00:31:38,090 --> 00:31:41,550 Og aðgerðir sem hafa aftur gildi eins og við bara sáum nokkrar af. 673 00:31:41,550 --> 00:31:45,350 Við sáum nú þegar þetta hugmynd af umfangi, og við munum sjá þetta aftur og aftur. 674 00:31:45,350 --> 00:31:47,210 En nú, aftur, nota þumalputtaregla 675 00:31:47,210 --> 00:31:51,410 að breytilegum aðeins hægt að nota inni af the nýlega opnað 676 00:31:51,410 --> 00:31:54,350 og lokuð hrokkið axlabönd sem við sá í viðkomandi dæmi. 677 00:31:54,350 --> 00:31:56,910 >> Og eins og þú bent á, það er ability-- 678 00:31:56,910 --> 00:32:00,040 þú gætir leyst sum þessara vandamála með því að setja inn breytu heimsvísu 679 00:32:00,040 --> 00:32:01,290 á the mjög toppur af a skrá. 680 00:32:01,290 --> 00:32:03,630 En í næstum öllum tilfellum myndum við leiður á því, 681 00:32:03,630 --> 00:32:06,170 og örugglega ekki einu sinni að fara inn í þessi lausn núna. 682 00:32:06,170 --> 00:32:09,890 Svo nú er takeaway er að breytur hafa þessa hugmynd um gildissvið. 683 00:32:09,890 --> 00:32:13,430 >> En nú skulum við skoða aðra þurr vegur í raun að leita 684 00:32:13,430 --> 00:32:15,810 á sumir laglegur áhugaverður framkvæmd upplýsingar. 685 00:32:15,810 --> 00:32:17,810 Hvernig við gætum tákna upplýsingar. 686 00:32:17,810 --> 00:32:20,370 Og við skoðuðum þegar á þessu í fyrstu viku í bekknum. 687 00:32:20,370 --> 00:32:23,320 Horfa á forritum og minnir okkur á aukastaf. 688 00:32:23,320 --> 00:32:28,310 >> En muna frá síðustu viku að C hefur mismunandi gerðir gagna og bunches meira, 689 00:32:28,310 --> 00:32:30,600 en mestu gagni sjálfur nú gæti verið þetta. 690 00:32:30,600 --> 00:32:36,030 A bleikju, eða eðli, sem gerist að vera eitt bæti, eða átta bita alls. 691 00:32:36,030 --> 00:32:40,060 Og það er að segja að stærð af bleikju er bara eitt bæti. 692 00:32:40,060 --> 00:32:45,370 A bæti er átta bitar, þannig að þetta þýðir að við getum tákna hversu marga stafi. 693 00:32:45,370 --> 00:32:47,320 Hversu margir stafir eða tákn á lyklaborðinu 694 00:32:47,320 --> 00:32:49,210 ef við höfum eitt bæti eða átta bita. 695 00:32:49,210 --> 00:32:51,546 Hugsaðu til baka viku núll. 696 00:32:51,546 --> 00:32:53,420 Ef þú ert átta bita, hversu margir samtals gildi 697 00:32:53,420 --> 00:32:55,503 getur þú tákna með mynstur núllum og sjálfur? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- meira en það. 700 00:33:00,260 --> 00:33:03,490 Svo 256 alls ef þú byrja að telja frá núlli. 701 00:33:03,490 --> 00:33:07,120 Svo ef þú ert átta bits-- þannig að ef við hafði tvöfaldur ljósaperur okkar upp hér aftur, 702 00:33:07,120 --> 00:33:12,180 við gætum snúið þeim ljósaperur á og burt í einhverju 256 einstaka mynstrum. 703 00:33:12,180 --> 00:33:13,640 >> Nú er þetta dálítið erfið. 704 00:33:13,640 --> 00:33:16,857 Ekki svo mikið fyrir ensku og rómantík tungumál, en vissulega 705 00:33:16,857 --> 00:33:19,190 þegar þú kynna, að dæmis Asíu tungumálum, sem 706 00:33:19,190 --> 00:33:22,580 hafa mun fleiri tákn en eins 26 bókstafir. 707 00:33:22,580 --> 00:33:24,390 Við reyndar gæti þurft fleiri en eitt bæti. 708 00:33:24,390 --> 00:33:28,240 Og sem betur fer á undanförnum árum hefur samfélagið 709 00:33:28,240 --> 00:33:31,040 samþykkt önnur staðlar sem nota meira en eitt bæti á ákæra. 710 00:33:31,040 --> 00:33:34,210 >> En nú í C, sjálfgefið er bara eitt bæti eða átta bitar. 711 00:33:34,210 --> 00:33:38,195 Heiltala, á meðan, er fjórir bæti, annars þekkt sem 32 bita. 712 00:33:38,195 --> 00:33:41,320 Sem þýðir hvað er stærsti kostur tala við getur táknað með int 713 00:33:41,320 --> 00:33:41,820 virðist? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 Með milljarð. 716 00:33:45,050 --> 00:33:46,760 Svo er það fjögurra milljarða gefa eða taka. 717 00:33:46,760 --> 00:33:49,840 2 til 32th vald, ef við ráð neinar neikvæðar tölur 718 00:33:49,840 --> 00:33:52,530 og bara nota allt jákvætt tölur, er það fjóra milljarða 719 00:33:52,530 --> 00:33:53,730 gefa eða taka möguleika. 720 00:33:53,730 --> 00:33:57,890 Flotholt, á meðan er mismunandi gerð gögn tegund í C. Það er enn a tala, 721 00:33:57,890 --> 00:33:58,990 en það er rauntala. 722 00:33:58,990 --> 00:34:00,660 Eitthvað með kommu. 723 00:34:00,660 --> 00:34:03,000 Og það kemur í ljós að C notar einnig fjórum bytes 724 00:34:03,000 --> 00:34:05,340 að tákna fleytitölum. 725 00:34:05,340 --> 00:34:09,420 >> Því miður hversu margir fljótandi benda gildi eru í heiminum? 726 00:34:09,420 --> 00:34:11,582 Hversu margir alvöru tölur eru þarna? 727 00:34:11,582 --> 00:34:13,540 Það er óendanlega númer og fyrir þessi efni 728 00:34:13,540 --> 00:34:15,164 það er óendanlegur fjöldi heiltalna. 729 00:34:15,164 --> 00:34:18,070 Þannig að við erum nú þegar konar grafa oss holu hér. 730 00:34:18,070 --> 00:34:21,780 Þar virðist í computers-- á Síst forrit skrifuð í C á them-- 731 00:34:21,780 --> 00:34:24,110 getur aðeins treyst eins hátt og fjóra milljarða gefa eða taka, 732 00:34:24,110 --> 00:34:26,260 og fleytitölum getur aðeins virðist 733 00:34:26,260 --> 00:34:28,330 hafa sumir endanlegt magn af nákvæmni. 734 00:34:28,330 --> 00:34:30,810 Bara svo margir tölustafir eftir aukastaf lið þeirra. 735 00:34:30,810 --> 00:34:32,822 >> Vegna þess, að sjálfsögðu, ef þú hefur aðeins 32 bita, 736 00:34:32,822 --> 00:34:36,030 Ég veit ekki hvernig við ætlum að fara um fulltrúi alvöru Numbers líklega 737 00:34:36,030 --> 00:34:37,409 með mismunandi gerðir af mynstrum. 738 00:34:37,409 --> 00:34:40,030 En það er örugglega endanlegt Fjöldi slíkra mynstur, 739 00:34:40,030 --> 00:34:41,830 svo hér líka, þetta er erfið. 740 00:34:41,830 --> 00:34:43,710 >> Nú getum við forðast vandamál lítillega. 741 00:34:43,710 --> 00:34:45,710 Ef þú notar ekki fljóta, þú getur notað tvöfalt 742 00:34:45,710 --> 00:34:50,230 í C, sem gefur þér átta bæti, sem er leið fleiri mögulegar mynstur núllum 743 00:34:50,230 --> 00:34:50,730 og sjálfur. 744 00:34:50,730 --> 00:34:55,199 En það er samt tímabundið, sem er að fara að vera erfið ef þú skrifar hugbúnað 745 00:34:55,199 --> 00:34:57,670 fyrir grafík eða ímynda stærðfræði formúlur. 746 00:34:57,670 --> 00:35:00,410 Svo þú gætir í raun vilja að telja upp stærri en það. 747 00:35:00,410 --> 00:35:05,640 A langur long-- heimskulega named-- er einnig átta bæti eða 64 bita, 748 00:35:05,640 --> 00:35:10,260 og þetta er tvisvar sinnum eins lengi og int, og það er í langan heiltölu gildi. 749 00:35:10,260 --> 00:35:15,655 >> Gaman fact-- ef int er fjögur bæti, hversu lengi er lengi í C oftast? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 Einnig fjórum bæti, en lengi lengi er átta bæti, 752 00:35:21,560 --> 00:35:23,050 og þetta er fyrir sögulegum ástæðum. 753 00:35:23,050 --> 00:35:26,450 >> En takeaway nú er bara hefur þessi gögn 754 00:35:26,450 --> 00:35:29,625 að eiga fulltrúa í computer-- sem er líkamleg tæki með rafmagni, 755 00:35:29,625 --> 00:35:32,190 það er yfirleitt akstur þessir núll og ones-- 756 00:35:32,190 --> 00:35:34,320 með endanlegt magn af nákvæmni. 757 00:35:34,320 --> 00:35:35,620 Svo er það vandamálið þá? 758 00:35:35,620 --> 00:35:37,480 >> Jæja það er vandamál af heiltölu flæða. 759 00:35:37,480 --> 00:35:39,780 Ekki bara í C, en í tölvur almennt. 760 00:35:39,780 --> 00:35:42,590 Til dæmis, ef þetta er bæti virði bit-- 761 00:35:42,590 --> 00:35:45,120 þannig að ef þetta er átta bit-- allt þar af eru númer eitt. 762 00:35:45,120 --> 00:35:47,300 Hvað tala er þetta fulltrúi ef við gerum ráð fyrir 763 00:35:47,300 --> 00:35:50,730 það er allt jákvætt gildi í tvöfaldur? 764 00:35:50,730 --> 00:35:54,410 >> 255, og það er ekki 256, því núll er lægsta tala. 765 00:35:54,410 --> 00:35:56,760 Svo er 255 hæsta einn, en vandamálið 766 00:35:56,760 --> 00:36:00,330 er ráð fyrir að ég vildi að vöxtur þessa breytu sem 767 00:36:00,330 --> 00:36:04,030 er að nota átta bita samtals ef ég vil að hækka það. 768 00:36:04,030 --> 00:36:07,160 >> Jæja eins fljótt og ég bæta við einn til allar þessar sjálfur, 769 00:36:07,160 --> 00:36:10,500 þú getur kannski ímyndað visually-- bara eins og vopnaður einn með decimals-- 770 00:36:10,500 --> 00:36:12,300 eitthvað er að fara að renna til vinstri. 771 00:36:12,300 --> 00:36:15,590 Og reyndar, ef ég bæti við fjölda einn að þessu, hvað gerist í tvöfaldur 772 00:36:15,590 --> 00:36:17,670 er að það yfirfullt aftur í núll. 773 00:36:17,670 --> 00:36:21,730 >> Svo ef þú use-- bara ekki við int, en eitt bæti til að telja heiltölur 774 00:36:21,730 --> 00:36:27,170 í forriti, því default-- eins fljótt og þú færð að 250, 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0 kemur á eftir 255, sem er líklega ekki hvað 776 00:36:32,710 --> 00:36:34,790 notandi er að fara að búast við. 777 00:36:34,790 --> 00:36:39,620 >> Nú meðan í fleytitölu heiminum, þú ert líka svipuð vandamál. 778 00:36:39,620 --> 00:36:42,670 Ekki svo mikið með stærsta number-- þó að það er enn málið. 779 00:36:42,670 --> 00:36:45,360 En með the magn af nákvæmni að þú getur táknað. 780 00:36:45,360 --> 00:36:49,490 Svo skulum taka a líta á þetta dæmi hér einnig frá upptökum code-- dag 781 00:36:49,490 --> 00:36:52,070 fljóta-0.c. 782 00:36:52,070 --> 00:36:54,280 >> Og eftir það er frábær einfalt forrit sem 783 00:36:54,280 --> 00:36:56,580 ætti greinilega að prenta út hvaða gildi? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 Hvað gera veðja að þú þetta er að fara að prenta jafnvel þó að það er hluti af nýjum setningafræði 786 00:37:04,110 --> 00:37:05,540 hér? 787 00:37:05,540 --> 00:37:06,700 Svo vonandi 0.1. 788 00:37:06,700 --> 00:37:10,000 Svo sem nemur einum tíunda vegna þess að ég ætla að gera 1 deilt með 10. 789 00:37:10,000 --> 00:37:12,430 Ég geyma svarið í breytu sem heitir f. 790 00:37:12,430 --> 00:37:15,850 Það breytu er af taginu fljóta, sem er lykilorð sem ég lagði bara hendi. 791 00:37:15,850 --> 00:37:18,910 >> Við höfum ekki séð þetta áður, en þetta er góður af a snyrtilegur vegur í printf 792 00:37:18,910 --> 00:37:22,110 að tilgreina hversu margir stafir sem þú langar að sjá á eftir kommu. 793 00:37:22,110 --> 00:37:25,020 Þannig að þetta ritháttur þýðir bara sem hér er tákn. 794 00:37:25,020 --> 00:37:27,900 Það er um fleytitölu gildi, og ó, við the vegur, 795 00:37:27,900 --> 00:37:31,389 sýna það með kommu með eitt númer eftir kommu. 796 00:37:31,389 --> 00:37:33,180 Svo er að fjöldi af tölustöfum, 797 00:37:33,180 --> 00:37:34,650 svo að segja, að þú vilt kannski. 798 00:37:34,650 --> 00:37:40,450 >> Svo láta mig fara á undan og gera gera fljóta-0, ./float-0, 799 00:37:40,450 --> 00:37:46,660 og virðist 1 deilt með 10 er 0,0. 800 00:37:46,660 --> 00:37:47,760 Nú hvers vegna er þetta? 801 00:37:47,760 --> 00:37:51,380 >> Jæja aftur, tölvan er að taka mér bókstaflega, og ég hef skrifað 1 802 00:37:51,380 --> 00:37:56,680 og ég skrifað 10, og taka giska hvað er gert ráð fyrir gögn gerð fyrir þá tvo 803 00:37:56,680 --> 00:37:58,440 gildi? 804 00:37:58,440 --> 00:38:00,970 Int er það tæknilega eitthvað svolítið öðruvísi. 805 00:38:00,970 --> 00:38:04,150 Það er yfirleitt langur, en það er lokum óaðskiljanlegur gildi. 806 00:38:04,150 --> 00:38:06,030 Ekki fleytitölu gildi. 807 00:38:06,030 --> 00:38:09,456 >> Sem er að segja að ef þetta er int og þetta er int 808 00:38:09,456 --> 00:38:11,830 vandamálið er að í tölvunni er ekki hafa getu 809 00:38:11,830 --> 00:38:13,680 að jafnvel geyma það kommu. 810 00:38:13,680 --> 00:38:16,430 Svo þegar þú gerir 1 skipt af 10 með heilar tölur 811 00:38:16,430 --> 00:38:20,950 fyrir bæði teljara og þess nefnara, svarið ætti að vera 0.1. 812 00:38:20,950 --> 00:38:24,930 En computer-- því þeir eru integers-- 813 00:38:24,930 --> 00:38:27,430 veit ekki hvað ég á að gera við 0.1. 814 00:38:27,430 --> 00:38:30,010 >> Svo hvað er það að gera skýrt? 815 00:38:30,010 --> 00:38:33,120 Það er bara að henda henni í burtu, og hvað ég ætla að sjá á endanum 816 00:38:33,120 --> 00:38:38,830 er 0,0 bara vegna þess að ég hélt því fram að printf sýna mér eina kommu. 817 00:38:38,830 --> 00:38:41,740 En vandamálið er að ef þú skipta heila tölu frá heiltala, 818 00:38:41,740 --> 00:38:44,347 þú munt get-- samkvæmt skilgreiningu af C-- heiltala. 819 00:38:44,347 --> 00:38:46,680 Og það er ekki að fara að gera eitthvað gott og þægilegan 820 00:38:46,680 --> 00:38:49,040 eins umferð það upp til næsta einn upp eða niður. 821 00:38:49,040 --> 00:38:51,860 Það er að fara að Hà allt eftir aukastaf. 822 00:38:51,860 --> 00:38:54,030 >> Svo bara innsæi, hvað er líklega festa? 823 00:38:54,030 --> 00:38:55,351 Hvað er einfaldasta festa hér? 824 00:38:55,351 --> 00:38:55,850 Já? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 Nákvæmlega. 827 00:39:01,100 --> 00:39:04,200 Hvers vegna fáum við ekki að meðhöndla bara þessar sem fleytitölum raun 828 00:39:04,200 --> 00:39:05,860 breyta þeim í flotum eða tvöfaldar. 829 00:39:05,860 --> 00:39:10,500 Og nú ef ég gera fljóta-0, eða ef ég saman fljóta-1, 830 00:39:10,500 --> 00:39:12,570 sem er nákvæmlega eins hvað var bara lagt. 831 00:39:12,570 --> 00:39:16,400 Og nú er ég að gera fljóta-0, nú er ég að fá 0.1 mitt. 832 00:39:16,400 --> 00:39:17,234 >> Nú er þetta magnað. 833 00:39:17,234 --> 00:39:19,441 En nú ætla ég að gera eitthvað svolítið öðruvísi. 834 00:39:19,441 --> 00:39:22,280 Ég er forvitinn að sjá hvað er í raun fara á undir hetta, 835 00:39:22,280 --> 00:39:26,050 og ég ætla að prenta þetta út að 28 aukastöfum. 836 00:39:26,050 --> 00:39:29,730 Ég vil virkilega sjá 0.1000-- að infinite-- 837 00:39:29,730 --> 00:39:32,710 [Inaudible] 27 núll eftir því 0,1. 838 00:39:32,710 --> 00:39:34,740 >> Jæja við skulum sjá hvort það er það sem ég fæ örugglega. 839 00:39:34,740 --> 00:39:39,430 Gera flýtur-0 sömu skrá. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 Skulum súmma inn á dramatískan svar. 842 00:39:44,380 --> 00:39:49,980 Allan þennan tíma hefur þú verið að hugsa 1 deilt með 10 er 10%, eða 0.1. 843 00:39:49,980 --> 00:39:50,810 Það er ekki. 844 00:39:50,810 --> 00:39:53,210 Að minnsta kosti svo langt sem tölva er málið varðar. 845 00:39:53,210 --> 00:39:57,060 >> Nú hvers vegna-- í lagi, sem er lokið lygi 1 deilt með 10 er 0,1. 846 00:39:57,060 --> 00:39:59,710 En hvers vegna-- sem er ekki að takeaway dag. 847 00:39:59,710 --> 00:40:04,010 Svo hvers vegna er tölvan held, ólíkt okkur öllum í herberginu, 848 00:40:04,010 --> 00:40:06,870 að 1 deilt með 10 er reyndar að brjálaður gildi? 849 00:40:06,870 --> 00:40:10,620 Hvað er tölva gera greinilega? 850 00:40:10,620 --> 00:40:12,490 Hvað er það? 851 00:40:12,490 --> 00:40:13,785 >> Það er ekki flæða yfir, í sjálfu sér. 852 00:40:13,785 --> 00:40:15,910 Yfirfall er oftast þegar þú sett um gildi. 853 00:40:15,910 --> 00:40:18,970 Það er þetta mál af imprecision í fleytitölu gildi 854 00:40:18,970 --> 00:40:22,220 þar sem þú ert bara 32 eða kannski jafnvel 64 bita. 855 00:40:22,220 --> 00:40:25,230 En ef það er óendanlega Fjöldi alvöru Numbers 856 00:40:25,230 --> 00:40:27,940 tölur með aukastafa og tölur thereafter-- vafalaust 857 00:40:27,940 --> 00:40:29,380 þú getur ekki tákna þeim öllum. 858 00:40:29,380 --> 00:40:32,870 Svo tölvan hefur gefið okkur næst passa 859 00:40:32,870 --> 00:40:37,090 við gildið sem það getur táknað með því að nota að margir bitar til verðmæti sem ég vil í raun og veru, 860 00:40:37,090 --> 00:40:38,690 sem er 0,1. 861 00:40:38,690 --> 00:40:40,685 >> Því miður, ef þú byrja að gera stærðfræði, eða þú 862 00:40:40,685 --> 00:40:44,360 byrja þar þessar tegundir fljótandi benda gildi í mikilvægum programs-- 863 00:40:44,360 --> 00:40:46,770 fjárhagslega hugbúnaður, her software-- neitt 864 00:40:46,770 --> 00:40:49,090 þar skynjun er sennilega nokkuð mikilvægt. 865 00:40:49,090 --> 00:40:51,520 Og þú byrjar að bæta tölur eins og þetta, og byrja 866 00:40:51,520 --> 00:40:54,050 gangi að hugbúnaður með mjög stórum aðföng 867 00:40:54,050 --> 00:40:56,890 eða fyrir fullt af tíma eða fullt daga eða fullt af árum, 868 00:40:56,890 --> 00:41:01,060 þessir pínulítill lítill mistök vafalaust hægt að bæta upp með tímanum. 869 00:41:01,060 --> 00:41:04,252 >> Nú sem innskot, ef þú hefur einhvern tíma séð Superman 3 eða Office Space 870 00:41:04,252 --> 00:41:05,960 og þú gætir muna hvernig þessir gaurar stálu 871 00:41:05,960 --> 00:41:08,668 a einhver fjöldi af peningum frá tölvunni sinni með því að nota fljótandi punkta gildi 872 00:41:08,668 --> 00:41:11,290 og bæta upp litla remainders, vonandi að bíómynd 873 00:41:11,290 --> 00:41:12,390 gerir nú meira vit. 874 00:41:12,390 --> 00:41:14,930 Þetta er það sem þeir voru vísa til í þeirri mynd. 875 00:41:14,930 --> 00:41:16,710 Sú staðreynd að flest fyrirtæki myndi ekki líta 876 00:41:16,710 --> 00:41:18,600 eftir ákveðinn fjölda aukastafa, 877 00:41:18,600 --> 00:41:20,009 en þeir eru þættir sent. 878 00:41:20,009 --> 00:41:22,550 Svo þú byrjar að bæta þeim upp, þú byrjar að gera a einhver fjöldi af peningum 879 00:41:22,550 --> 00:41:23,424 inn á bankareikning þinn. 880 00:41:23,424 --> 00:41:25,160 Svo er að Office Space útskýra. 881 00:41:25,160 --> 00:41:28,220 >> Nú miður út Skrifstofa Space, þar 882 00:41:28,220 --> 00:41:31,794 eru sumir löglega áhyggjur og veruleg áhrif 883 00:41:31,794 --> 00:41:33,710 af þessum tegundum undirliggjandi hönnun ákvarðanir, 884 00:41:33,710 --> 00:41:35,990 og örugglega einn af þeim ástæðum við notum C í námskeiðinu 885 00:41:35,990 --> 00:41:39,640 er þannig að þú þarft virkilega þetta jörð upp skilning á því hvernig tölvur vinna, 886 00:41:39,640 --> 00:41:42,440 hvernig hugbúnaður virkar og gera ekki taka neitt sem sjálfsögðum hlut. 887 00:41:42,440 --> 00:41:45,820 >> Og reyndar því miður, jafnvel með sem grundvallaratriði skilningur, 888 00:41:45,820 --> 00:41:47,370 við menn gera mistök. 889 00:41:47,370 --> 00:41:51,310 Og það sem ég hélt að ég myndi deila er þetta átta mínútna vídeó hér tekin 890 00:41:51,310 --> 00:41:56,980 frá Modern undur þætti, sem er fræðandi sýning um hvernig hlutirnir virka 891 00:41:56,980 --> 00:42:00,370 sem málar tvær myndir af þegar óviðeigandi notkun 892 00:42:00,370 --> 00:42:02,540 og skilning á fleytitölum 893 00:42:02,540 --> 00:42:05,610 leiddi til nokkur mikilvæg óæskilegar niðurstöður. 894 00:42:05,610 --> 00:42:06,363 Við skulum taka a líta. 895 00:42:06,363 --> 00:42:07,029 [Vídeó spilun] 896 00:42:07,029 --> 00:42:11,290 -Við Nú aftur að "Engineering Neyðarástand "á Modern undur. 897 00:42:11,290 --> 00:42:12,940 Tölvur. 898 00:42:12,940 --> 00:42:15,580 Við höfum komið öll að samþykkja oft pirrandi vandamál sem 899 00:42:15,580 --> 00:42:20,960 fékk með them-- galla, veirur, og hugbúnaður glitches-- fyrir lítil verð 900 00:42:20,960 --> 00:42:23,100 að borga fyrir þægindi. 901 00:42:23,100 --> 00:42:27,770 En í Hátækni og hár hraði hersins og rúm program forrit, 902 00:42:27,770 --> 00:42:32,780 minnsti vandamálið getur eflast í hörmung. 903 00:42:32,780 --> 00:42:38,880 >> Hinn 4. júní 1996, vísindamenn reiðubúin að ráðast í unmanned Ariane 5 eldflaug. 904 00:42:38,880 --> 00:42:41,190 Það var vopnaður vísindalegar gervihnettir hannað 905 00:42:41,190 --> 00:42:44,570 að koma nákvæmlega hvernig Segulsviði jarðar Hefur samskipti 906 00:42:44,570 --> 00:42:47,380 með sól vindur. 907 00:42:47,380 --> 00:42:50,580 Eldflaugar var byggt fyrir Geimvísindastofnun Evrópu, 908 00:42:50,580 --> 00:42:54,400 og lyfti burt frá leikni á strönd Franska Gvæjana. 909 00:42:54,400 --> 00:42:57,520 >> Seinasta um 37 sekúndur inn Flugferðin þeir fyrst 910 00:42:57,520 --> 00:42:59,070 tekið eitthvað var að fara úrskeiðis. 911 00:42:59,070 --> 00:43:02,240 Það stútar voru segulnagli á þann hátt sem þeir ættu í raun ekki. 912 00:43:02,240 --> 00:43:06,550 Um 40 sekúndur inn í flugi, greinilega ökutækið var í vandræðum, 913 00:43:06,550 --> 00:43:08,820 og það er þegar þeir gerðu ákvörðun um að eyðileggja það. 914 00:43:08,820 --> 00:43:12,370 Bilið öryggi liðsforingi, með gríðarlega hugaður, ýtti á takkann 915 00:43:12,370 --> 00:43:18,030 og blés upp eldflaugar áður en það gæti verða hættulegir öryggi almennings. 916 00:43:18,030 --> 00:43:21,010 >> -Þetta var mær sjóferðin á Ariane 5, 917 00:43:21,010 --> 00:43:23,920 og eyðingu hennar tók setja vegna galla 918 00:43:23,920 --> 00:43:25,932 innbyggð í hugbúnaði eldflaugar er. 919 00:43:25,932 --> 00:43:27,640 -The vandamál á Ariane var að það 920 00:43:27,640 --> 00:43:30,500 var að tala sem þarf 64 bitar að tjá, 921 00:43:30,500 --> 00:43:33,560 og þeir vildu til að breyta það að 16-bita númer. 922 00:43:33,560 --> 00:43:36,820 Þeir gera ráð fyrir að fjöldi var aldrei að fara að vera mjög stór. 923 00:43:36,820 --> 00:43:40,940 Að flestir af þeim tölustöfum 64-bita tala voru núll. 924 00:43:40,940 --> 00:43:42,450 Þeir voru rangar. 925 00:43:42,450 --> 00:43:45,000 >> -The vanhæfni af einum hugbúnað til að samþykkja 926 00:43:45,000 --> 00:43:49,460 eins konar fjölda mynda af annar var á rót bilun. 927 00:43:49,460 --> 00:43:54,260 Hugbúnaðarþróun hafði orðið mjög dýrt hluti af nýrri tækni. 928 00:43:54,260 --> 00:43:57,060 The Ariane 4 eldflaugar höfðu gengið mjög vel. 929 00:43:57,060 --> 00:44:01,600 Svo mikið af hugbúnaði til fyrir það var einnig notað í Ariane 5. 930 00:44:01,600 --> 00:44:04,790 >> -The Grunn vandamálið var að Ariane 5. 931 00:44:04,790 --> 00:44:11,200 Var faster-- flýta hraðar og að hugbúnaður hafði ekki grein fyrir því. 932 00:44:11,200 --> 00:44:14,910 >> -The eyðilegging af the eldflaugar var gríðarlegur fjárhagslegur hörmung. 933 00:44:14,910 --> 00:44:18,630 Allt vegna þess að eina mínútu hugbúnaður villa. 934 00:44:18,630 --> 00:44:21,160 En þetta var ekki fyrsta tími vefhegðunargögn vandamál 935 00:44:21,160 --> 00:44:24,770 hafði stríða nútíma eldflaugar tækni. 936 00:44:24,770 --> 00:44:28,020 >> -í 1991 með upphafi af fyrsta Persaflóastríðinu, 937 00:44:28,020 --> 00:44:30,540 Patriot eldflaugum upplifað svipað konar 938 00:44:30,540 --> 00:44:32,465 af fjölda viðskipta vandamál. 939 00:44:32,465 --> 00:44:36,760 Og eins og a afleiðing 28 people-- 28 American soldiers-- voru drepnir, 940 00:44:36,760 --> 00:44:39,010 og um hundrað öðrum sár. 941 00:44:39,010 --> 00:44:42,830 Þegar Patriot, sem átti til að vernda gegn komandi Scuds, 942 00:44:42,830 --> 00:44:45,780 tókst að skjóta eldflaugum. 943 00:44:45,780 --> 00:44:51,610 >> Hvenær Írak ráðist Kúveit og Ameríku hóf Desert Storm í byrjun 1991, 944 00:44:51,610 --> 00:44:55,720 Patriot eldflaugum rafhlöður voru á vettvangi að vernda Sádi-Arabía og Ísrael 945 00:44:55,720 --> 00:44:59,180 frá Írak Scud eldflaugum árás. 946 00:44:59,180 --> 00:45:03,080 The Patriot er bandarískt miðlungs-svið yfirborð-til-loft kerfi 947 00:45:03,080 --> 00:45:06,530 framleitt af Raytheon fyrirtækisins. 948 00:45:06,530 --> 00:45:09,500 >> -The stærð af the Patriot interceptor itself-- 949 00:45:09,500 --> 00:45:14,705 það er um það bil 20 fet á lengd, og það vega um 2.000 pund. 950 00:45:14,705 --> 00:45:19,090 Og það ber warhead á um, Ég held að það er um 150 £. 951 00:45:19,090 --> 00:45:23,880 Og Warhead sjálft er a hár sprengiefni, sem 952 00:45:23,880 --> 00:45:26,700 hefur brot kringum sig. 953 00:45:26,700 --> 00:45:31,630 Svo hlíf á Warhead er sem ætlað er að bregðast við eins og buckshot. 954 00:45:31,630 --> 00:45:34,040 >> -The Eldflaugar eru gerðar fjögur á ílát, 955 00:45:34,040 --> 00:45:37,170 og eru flutt af parhús kerru. 956 00:45:37,170 --> 00:45:44,880 >> -the Patriot gegn eldflaugum kerfi fer aftur að minnsta kosti 20 ár núna. 957 00:45:44,880 --> 00:45:48,380 Það var upphaflega hannað sem loft í varnarmálum eldflaugum 958 00:45:48,380 --> 00:45:50,810 að skjóta niður flugvélar óvinur. 959 00:45:50,810 --> 00:45:54,410 Í fyrsta Persaflóastríðinu þegar að stríð kom á, 960 00:45:54,410 --> 00:45:59,650 her vildi nota það til að skjóta niður Scuds, ekki flugvélum. 961 00:45:59,650 --> 00:46:03,580 Írak Air Force var ekki svo mikið vandamál, 962 00:46:03,580 --> 00:46:06,590 en her var áhyggjur Scuds. 963 00:46:06,590 --> 00:46:10,120 Og svo reyndu þeir að uppfæra Patriot. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting Óvin eldflaugum ferðast á Mach 5 965 00:46:12,740 --> 00:46:15,670 var að fara að vera erfitt nóg. 966 00:46:15,670 --> 00:46:18,440 En þegar Patriot var hljóp í notkun, 967 00:46:18,440 --> 00:46:22,580 her var ekki kunnugt um An Írak breytingar sem 968 00:46:22,580 --> 00:46:25,880 gerði scuds þeirra næstum ómögulegt við það. 969 00:46:25,880 --> 00:46:30,690 >> Hvað gerðist er á Scuds að voru að koma í voru óstöðug. 970 00:46:30,690 --> 00:46:32,000 Þeir voru óstöðugir. 971 00:46:32,000 --> 00:46:37,210 Ástæðan fyrir þessu var á Iraqis-- í því skyni að fá 600 km út 972 00:46:37,210 --> 00:46:41,680 af 300 km á bilinu missile-- tók þyngd úr fremstu warhead, 973 00:46:41,680 --> 00:46:43,340 og gerði Warhead léttari. 974 00:46:43,340 --> 00:46:48,490 Svo nú Patriot er að reyna að koma á Scud, og mest af time-- 975 00:46:48,490 --> 00:46:52,880 yfirgnæfandi meirihluti af time-- það myndi bara fljúga í Scud. 976 00:46:52,880 --> 00:46:57,120 >> -Þegar Patriot kerfi rekstraraðila áttaði Patriot ungfrú markmiði sínu, 977 00:46:57,120 --> 00:47:01,630 þeir sprengt warhead Patriot er til að forðast hugsanlegar mannfall ef það 978 00:47:01,630 --> 00:47:04,440 var leyft að falla til jarðar. 979 00:47:04,440 --> 00:47:08,700 >> -Þetta Var það sem flestir sáu eins stór fireballs á himninum, 980 00:47:08,700 --> 00:47:14,180 og misskilið eins rekur í Scud warheads. 981 00:47:14,180 --> 00:47:18,020 >> -Although Í himininn, Patriots virtist vera tekist að eyðileggja 982 00:47:18,020 --> 00:47:23,280 Scuds á Dhahran það gæti verið engin mistök um frammistöðu sína. 983 00:47:23,280 --> 00:47:27,930 Það Patriot er ratsjá kerfi missti utan um komandi Scud 984 00:47:27,930 --> 00:47:30,260 og aldrei sett vegna að hugbúnaður galli. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> Það var þá Ísraelsmenn sem fyrst uppgötvaði að því lengur sem kerfið var á, 987 00:47:38,880 --> 00:47:41,130 því meiri tíma misræmi varð. 988 00:47:41,130 --> 00:47:44,770 Vegna klukku embed í tölvunni kerfisins. 989 00:47:44,770 --> 00:47:48,190 >> About tveimur vikum áður en harmleikur í Dhahran, 990 00:47:48,190 --> 00:47:50,720 Ísraelar tilkynnt Defense Department 991 00:47:50,720 --> 00:47:52,410 Fjármálakerfið var að tapa tíma. 992 00:47:52,410 --> 00:47:54,410 Eftir um það bil átta klukkustundir af hlaupum, þeir taka 993 00:47:54,410 --> 00:47:57,690 að kerfið er að verða orðinn ónákvæmari. 994 00:47:57,690 --> 00:48:01,850 The Defense Department brást við með segja öllum Patriot rafhlöður 995 00:48:01,850 --> 00:48:04,800 að ekki yfirgefa kerfi á í langan tíma. 996 00:48:04,800 --> 00:48:06,980 Þeir sögðu aldrei hvað fyrir löngu var. 997 00:48:06,980 --> 00:48:09,140 8 klukkustundir, 10 klukkustundir, þúsund klukkustundir. 998 00:48:09,140 --> 00:48:11,300 Enginn vissi. 999 00:48:11,300 --> 00:48:13,320 >> -The Patriot rafhlaða aðstöðu við kastalann 1000 00:48:13,320 --> 00:48:18,310 á Dhahran og gölluð innri þess klukka hafði verið á fyrir yfir 100 klst 1001 00:48:18,310 --> 00:48:21,520 á nótt 25 febrúar. 1002 00:48:21,520 --> 00:48:25,792 >> -Það Fylgst tími til nákvæmni um tíunda hluta úr sekúndu. 1003 00:48:25,792 --> 00:48:27,950 Nú tíundi úr sekúndu er áhugavert tala 1004 00:48:27,950 --> 00:48:31,850 vegna þess að það er ekki hægt að gefa upp í tvöfaldur nákvæmlega sem 1005 00:48:31,850 --> 00:48:36,500 þýðir að það er ekki hægt að gefa upp nákvæmlega í hvaða nútíma stafrænum tölva. 1006 00:48:36,500 --> 00:48:41,070 Það er erfitt að trúa því, en nota þetta sem dæmi. 1007 00:48:41,070 --> 00:48:43,420 >> Við skulum taka númer þriðjung. 1008 00:48:43,420 --> 00:48:47,330 Einn þriðji er ekki hægt að gefið upp í aukastaf nákvæmlega. 1009 00:48:47,330 --> 00:48:52,060 Þriðjungur er 0,333 fara á fyrir óendanleika. 1010 00:48:52,060 --> 00:48:56,420 Það er engin leið að gera það með alger nákvæmni í tugabrot. 1011 00:48:56,420 --> 00:48:59,530 Það er nákvæmlega eins konar vandamál sem gerðist í Patriot. 1012 00:48:59,530 --> 00:49:04,040 Því lengur sem kerfið hljóp að verri tíma villa varð. 1013 00:49:04,040 --> 00:49:08,840 >> -Eftir 100 klukkustunda starfrækslu, sem villa í tíma var aðeins um þriðjungur 1014 00:49:08,840 --> 00:49:10,440 úr sekúndu. 1015 00:49:10,440 --> 00:49:14,150 En hvað varðar að miða að eldflaugum ferðast á Mach 5, 1016 00:49:14,150 --> 00:49:18,560 það í för með sér að fylgjast með villa yfir 600 metra. 1017 00:49:18,560 --> 00:49:21,870 Það væri banvæn villa hermannana í Dhahran. 1018 00:49:21,870 --> 00:49:28,455 >> Hvað gerðist er Scud ræst var greind með viðvörunarkerfi gervitungl, 1019 00:49:28,455 --> 00:49:32,710 og þeir vissu að Scud kæmi almennt átt þeirra. 1020 00:49:32,710 --> 00:49:35,150 Þeir vissu ekki hvar hún var að koma. 1021 00:49:35,150 --> 00:49:38,210 Það var nú allt að ratsjá hluti af Patriot kerfi 1022 00:49:38,210 --> 00:49:43,150 verja Dhahran að finna og halda lag af komandi óvini eldflaugum. 1023 00:49:43,150 --> 00:49:44,561 >> -The ratsjá var mjög klár. 1024 00:49:44,561 --> 00:49:46,560 Það væri í raun að fylgjast með sem staða Scud 1025 00:49:46,560 --> 00:49:48,930 og þá spá fyrir um hvar það myndi líklega vera 1026 00:49:48,930 --> 00:49:51,380 næst þegar ratsjá sendi púls út. 1027 00:49:51,380 --> 00:49:53,040 Það var kallað á bilinu hliðið. 1028 00:49:53,040 --> 00:49:57,620 >> -Þá Þegar Patriot ákveður nægur tími hefur 1029 00:49:57,620 --> 00:50:02,400 samþykkt að fara til baka og athuga næsta staðsetning fyrir þetta greinist hlut 1030 00:50:02,400 --> 00:50:03,550 það fer aftur. 1031 00:50:03,550 --> 00:50:07,820 Svo þegar það fór aftur til the rangur staður, sér það þá ekki mótmæla. 1032 00:50:07,820 --> 00:50:10,360 Og það ákveður að það væri enginn hlutur. 1033 00:50:10,360 --> 00:50:13,630 Að það var falskur uppgötvun og það dropar lag. 1034 00:50:13,630 --> 00:50:16,970 >> -The Komandi Scud hvarf frá skjánum ratsjá, 1035 00:50:16,970 --> 00:50:20,200 og sekúndum síðar, það skellur inn í kastalann. 1036 00:50:20,200 --> 00:50:22,570 The Scud drap 28. 1037 00:50:22,570 --> 00:50:26,110 Það var það síðasta sem rekinn á fyrsta Persaflóastríðinu. 1038 00:50:26,110 --> 00:50:31,920 Hörmulegan, sem uppfærð hugbúnaður kom í dögun daginn eftir. 1039 00:50:31,920 --> 00:50:34,870 Hugbúnaðurinn galli hafði verið fastur, lokun 1040 00:50:34,870 --> 00:50:39,150 einn kaflinn í vandræði Saga Patriot eldflaugum. 1041 00:50:39,150 --> 00:50:40,030 >> [END vídeó spilun] 1042 00:50:40,030 --> 00:50:41,488 >> DAVID J. MALAN: Það er það fyrir CS50. 1043 00:50:41,488 --> 00:50:42,820 Við munum sjá þig á miðvikudag. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [Tónlist spila] 1046 00:50:50,370 --> 00:54:23,446