1 00:00:00,000 --> 00:00:10,920 >> [Tónlist spila] 2 00:00:10,920 --> 00:00:14,680 >> DAVID J Malan: Allt í lagi, velkomin aftur til CS50. 3 00:00:14,680 --> 00:00:16,500 Þetta er upphaf viku tvö. 4 00:00:16,500 --> 00:00:18,940 Orð frá einum af okkar vinir á háskólasvæðinu - 5 00:00:18,940 --> 00:00:22,620 ef þú hefur áhuga, hugsanlega, annaðhvort nú eða í sumum framtíð tíma 6 00:00:22,620 --> 00:00:25,670 jafnvel, þegar öruggari, kennslu miðja nemendur skólans svolítið 7 00:00:25,670 --> 00:00:27,680 eitthvað um tölvunarfræði, gera höfuð til að vefslóð. 8 00:00:27,680 --> 00:00:32,360 Þeir eru einkum þörf núna af kennara, sérstaklega ef þú hefur 9 00:00:32,360 --> 00:00:34,700 fengum útsetningu tölvunarfræði. 10 00:00:34,700 --> 00:00:38,060 >> Svo muna að síðasta sinn, kynnti við nokkrar gerðir gagna í C, og 11 00:00:38,060 --> 00:00:40,590 þú gætir hafa byrjað að fá þinn hendur óhreinum með þessum svona langt 12 00:00:40,590 --> 00:00:41,940 í vanda sett einn. 13 00:00:41,940 --> 00:00:43,230 Og við átti bleikju. 14 00:00:43,230 --> 00:00:49,100 Svo í nokkuð tæknilegur skilmálar, hvað er bleikju eins og þú veist það í dag? 15 00:00:49,100 --> 00:00:51,050 >> Svo er það eðli, en við skulum vera nákvæmari nú. 16 00:00:51,050 --> 00:00:53,735 Hvað er átt við með eðli eða einstaklingur bleikju? 17 00:00:53,735 --> 00:00:56,700 18 00:00:56,700 --> 00:00:59,500 A non-tölulega eðli - 19 00:00:59,500 --> 00:01:00,670 svo ekki endilega. 20 00:01:00,670 --> 00:01:04,580 Það kemur í ljós að jafnvel tölur, jafnvel greinarmerki og bréf eru 21 00:01:04,580 --> 00:01:06,980 fulltrúa með þessum gögnum nefnast sem bleikju. 22 00:01:06,980 --> 00:01:09,440 Svo það er ekki endilega stafrófsröð. 23 00:01:09,440 --> 00:01:11,100 Já? 24 00:01:11,100 --> 00:01:12,275 >> Svo er það ASCII staf. 25 00:01:12,275 --> 00:01:15,510 Svo ef þú heldur aftur til viku núll, þegar við höfðum bæti okkar sjálfboðaliða 26 00:01:15,510 --> 00:01:19,150 koma upp og annað hvort halda höndum þeirra upp eða ekki allir, fulltrúa þeir bita. 27 00:01:19,150 --> 00:01:22,450 En sameiginlega sem hópur af átta, þeir fulltrúa bæti. 28 00:01:22,450 --> 00:01:26,030 Og við kynntum hugmyndina um ASCII á þeim fyrirlestur, sem er einfaldlega 29 00:01:26,030 --> 00:01:28,170 kortleggja milli tölur og bókstafi. 30 00:01:28,170 --> 00:01:32,010 Og ASCII notar, eins og þessir menn gefið í skyn, átta bitar 31 00:01:32,010 --> 00:01:33,660 að tákna staf. 32 00:01:33,660 --> 00:01:36,890 >> Svo Samkvæmt því, ef átta bitar geta hver taka á einn af tveimur gildum - 33 00:01:36,890 --> 00:01:38,010 núll eða einn - 34 00:01:38,010 --> 00:01:40,280 Það þýðir að það voru tveir möguleikar fyrir þennan mann - 35 00:01:40,280 --> 00:01:41,230 núll eða einn - 36 00:01:41,230 --> 00:01:44,070 Tveir fyrir þennan mann, tveir fyrir þetta maður, tveir fyrir þessu. 37 00:01:44,070 --> 00:01:47,450 Svo samtals tveimur tímum tvisvar sinnum tvisvar sinnum tveir sinnum tveir - 38 00:01:47,450 --> 00:01:49,700 svo tveir áttunda í aðaleinkunn. 39 00:01:49,700 --> 00:01:54,320 Þannig að það er Stafafjöldi 256 mögulegt að þú getur 40 00:01:54,320 --> 00:01:55,750 tákna með átta bita. 41 00:01:55,750 --> 00:01:59,210 >> Nú, þeir sem tala Asian tungumál gætir vita að það er meira 42 00:01:59,210 --> 00:02:02,620 stafir í heiminum en bara Eins og Bs og Cs og Ds. 43 00:02:02,620 --> 00:02:06,130 Og reyndar, ASCII ekki nægja fyrir mikið af tungumálum í heiminum. 44 00:02:06,130 --> 00:02:07,760 En meira um það seinna. 45 00:02:07,760 --> 00:02:11,240 Fyrir nú, ég veit að í C ef þú vilt að tákna staf, a stykki af 46 00:02:11,240 --> 00:02:15,780 greinarmerki, eða bara eitthvað eðli í náttúrunni, notum við bleikju. 47 00:02:15,780 --> 00:02:18,240 Og það er eitt bæti eða átta bita. 48 00:02:18,240 --> 00:02:19,690 >> Hvað um int? 49 00:02:19,690 --> 00:02:20,780 Ja, int er heiltala. 50 00:02:20,780 --> 00:02:23,175 Hversu margir bitar, ef þú manst, var heiltala yfirleitt? 51 00:02:23,175 --> 00:02:25,930 52 00:02:25,930 --> 00:02:27,512 Einhver muna? 53 00:02:27,512 --> 00:02:29,600 Svo það er yfirleitt 32. 54 00:02:29,600 --> 00:02:32,120 Það veltur raunverulega á tölvunni sem þú ert að nota. 55 00:02:32,120 --> 00:02:35,770 En í tækinu, og í fullt af tölvur, það er 32 bita eða fjögur 56 00:02:35,770 --> 00:02:37,140 bæti - átta sinnum fjórir. 57 00:02:37,140 --> 00:02:39,790 Og ints eru bara notuð til að geyma tölur, annaðhvort neikvæð, 58 00:02:39,790 --> 00:02:41,610 jákvæð eða núll. 59 00:02:41,610 --> 00:02:45,250 >> Og ef þú hefur fengið 32 bita og þú aðeins sama um jákvæðar tölur, getur 60 00:02:45,250 --> 00:02:48,960 einhver Ballpark hvernig margir mögulegur heiltölur a tölva getur táknað frá 61 00:02:48,960 --> 00:02:51,820 núll á allt? 62 00:02:51,820 --> 00:02:56,130 Svo það væri tveir til 32, sem er u.þ.b. fjóra milljarða. 63 00:02:56,130 --> 00:02:59,720 Svo þessi völd tveir eru að fara að vera algengt þema í tölvunarfræði. 64 00:02:59,720 --> 00:03:03,930 Eins og við munum sjá, þá eru þeir alveg þægilegt að vinna með jafnvel ef það er ekki alveg 65 00:03:03,930 --> 00:03:05,790 auðvelt að gera stærðfræði í höfuðið manns. 66 00:03:05,790 --> 00:03:07,000 >> Þannig að við munum segja u.þ.b. fjóra milljarða. 67 00:03:07,000 --> 00:03:08,620 Nú, fyrir löngu - 68 00:03:08,620 --> 00:03:09,770 þú getur konar giska. 69 00:03:09,770 --> 00:03:10,480 Það er lengri en int. 70 00:03:10,480 --> 00:03:12,440 Hversu margir bitar? 71 00:03:12,440 --> 00:03:14,250 Svo 64 bita eða átta bytes. 72 00:03:14,250 --> 00:03:17,480 Þetta þýðir bara að þú getur táknað jafnvel stærri tölur, stærri jákvæð eða 73 00:03:17,480 --> 00:03:19,160 stærri neikvæðar tölur. 74 00:03:19,160 --> 00:03:20,060 >> Og hvernig óður fljóta? 75 00:03:20,060 --> 00:03:22,260 Það er fljótandi lið verðmæti 32 bita. 76 00:03:22,260 --> 00:03:25,180 Þetta er bara alvöru tala, eitthvað með kommu. 77 00:03:25,180 --> 00:03:30,100 En ef þú þarft í staðinn fleiri stöðum eftir kommu eða þú vilt 78 00:03:30,100 --> 00:03:33,720 tákna stærri fjölda með nokkrum brot eftir það er hægt að nota í 79 00:03:33,720 --> 00:03:36,260 tvöfaldur, sem er 64 bita. 80 00:03:36,260 --> 00:03:38,240 >> En það er áhugavert takeaway hér. 81 00:03:38,240 --> 00:03:42,890 Svo ef ints takmarkast við 32 bita og jafnvel löngu LONGS eru takmörkuð af 64 82 00:03:42,890 --> 00:03:46,180 bitar, þessi tegund af bidur spurningin, hvað ef þú vilt í raun að telja 83 00:03:46,180 --> 00:03:48,790 hærri en 4 milljarða á int? 84 00:03:48,790 --> 00:03:50,330 Jæja, þú notar bara lengi lengi. 85 00:03:50,330 --> 00:03:54,200 En hvað ef þú vilt að telja hærra en tveir á 64., gefa eða taka? 86 00:03:54,200 --> 00:03:55,810 >> Nú, það er a gríðarstór tala. 87 00:03:55,810 --> 00:03:59,250 En að lokum, þú might raunverulega sama um þessar tegundir af gildum, 88 00:03:59,250 --> 00:04:03,070 sérstaklega ef þú ert að nota gagnagrunn og byrja að safna fullt og fullt 89 00:04:03,070 --> 00:04:06,190 og hellingur af gögnum og framselja einstök Tölurnar hverju stykki af þessi gögn. 90 00:04:06,190 --> 00:04:07,430 Þannig að við eins konar átt í vandræðum. 91 00:04:07,430 --> 00:04:10,700 Og sömuleiðis, með fljótandi lið gildi - flýtur eða tveggja manna - 92 00:04:10,700 --> 00:04:14,290 ef þú hefur aðeins fengið endanlega fjölda bits, hversu margir heildarfjölda gastu 93 00:04:14,290 --> 00:04:16,980 hugsanlega tákna? 94 00:04:16,980 --> 00:04:19,540 >> Jæja, það er óljósara þegar þú falið kommu. 95 00:04:19,540 --> 00:04:20,899 En það er örugglega tímabundið. 96 00:04:20,899 --> 00:04:24,390 Ef þú ert með endanlega fjölda bita, endanlega fjölda af mönnum, endanlegt 97 00:04:24,390 --> 00:04:27,350 fjöldi ljósaperur, vafalaust þú getur aðeins tákna endanlega fjölda 98 00:04:27,350 --> 00:04:28,510 Fljótandi Point gildi. 99 00:04:28,510 --> 00:04:33,170 En hversu margir rauntölur eru þeirra í heiminum? 100 00:04:33,170 --> 00:04:33,680 Það er óendanlega. 101 00:04:33,680 --> 00:04:37,280 Svo er það eins konar vandamál vegna þess að við hafa ekki óendanlega mikið 102 00:04:37,280 --> 00:04:39,970 minni eða RAM inni á tölvum okkar. 103 00:04:39,970 --> 00:04:41,780 Svo sumir krefjandi það getur gerst. 104 00:04:41,780 --> 00:04:43,900 >> Svo skulum við fara á undan og reyna að tjá þetta hér. 105 00:04:43,900 --> 00:04:46,240 Leyfðu mér að fara á undan og opna gedit. 106 00:04:46,240 --> 00:04:50,360 Ég ætla að fara á undan og vista skrá kallast "floats0.c" bara til að vera 107 00:04:50,360 --> 00:04:54,630 samræmi við dæmi sem er í boði á netinu, ef þú vilt. 108 00:04:54,630 --> 00:04:58,080 Og ég ætla að fara á undan og skilgreina það sem hér segir - 109 00:04:58,080 --> 00:05:01,540 Ég ætla að fara á undan og segja, int Helstu ógilt, eins og við gerum oft. 110 00:05:01,540 --> 00:05:07,190 >> Og síðan í þessari áætlun, ég ætla að lýsa mér fljóta, svo 32-bita 111 00:05:07,190 --> 00:05:09,700 breytu sem heitir f geðþótta. 112 00:05:09,700 --> 00:05:13,910 Og þá ætla ég að geyma í henni Ég veit ekki, einum tíunda, svo 0.1. 113 00:05:13,910 --> 00:05:16,590 Þannig að ég ætla að tjá það sem einn deilt með 10, sem er fullkomlega 114 00:05:16,590 --> 00:05:17,790 lögmæt í C. 115 00:05:17,790 --> 00:05:20,460 >> Og síðan á annarri línu, einfaldlega að ég vilt prenta út þessi gildi. 116 00:05:20,460 --> 00:05:22,950 Svo muna að við getum notað The printf þekki. 117 00:05:22,950 --> 00:05:25,420 Við viljum ekki að nota% i fyrir int. 118 00:05:25,420 --> 00:05:28,360 Við viljum nota% f fyrir fljóta. 119 00:05:28,360 --> 00:05:33,080 Og þá ætla ég að gera sviga N, loka tilvitnun, kommu, f, semíkommu. 120 00:05:33,080 --> 00:05:34,400 >> Svo er hér forritið mitt. 121 00:05:34,400 --> 00:05:35,820 Það er nú þegar einn galla. 122 00:05:35,820 --> 00:05:38,640 Er einhver fyrir hvern þetta smellt þegar á að benda á kosti 123 00:05:38,640 --> 00:05:40,220 ein villa sem ég hef gert? 124 00:05:40,220 --> 00:05:42,470 Já? 125 00:05:42,470 --> 00:05:42,800 Já. 126 00:05:42,800 --> 00:05:47,860 Ég gleymdi "# include" á efst, einkenni þau sem ef ég reyni að 127 00:05:47,860 --> 00:05:50,490 saman er þetta að fara að vera að þýðandinn er að fara að æpa á mig, 128 00:05:50,490 --> 00:05:52,770 segja Óskilgreint tákn eða eitthvað þar að lútandi. 129 00:05:52,770 --> 00:05:55,360 Það skilur ekki eitthvað eins printf. 130 00:05:55,360 --> 00:05:59,380 >> Þannig að ég ætla að gera "# include ", Vista skrána. 131 00:05:59,380 --> 00:06:00,400 Og nú er það í betra form. 132 00:06:00,400 --> 00:06:02,690 En ég ætla líka að benda út eitt nýtt smáatriði í dag. 133 00:06:02,690 --> 00:06:08,620 Auk þess að tilgreina stað eigendur eins% f% i% s, getur þú 134 00:06:08,620 --> 00:06:12,320 stundum hafa áhrif á hegðun þeirrar tákn. 135 00:06:12,320 --> 00:06:15,540 Til dæmis, um er að ræða fljótandi lið gildi, ef ég vil bara 136 00:06:15,540 --> 00:06:22,200 að sýna einum aukastaf eftir tímabil, ég get í raun gert 0.1f. 137 00:06:22,200 --> 00:06:26,830 Svo í öðrum orðum, skilja ég f og The prósent skilti með 0,1, bara 138 00:06:26,830 --> 00:06:30,200 segja printf, þú might hafa a heild fullt af tölum eftir tuga 139 00:06:30,200 --> 00:06:30,930 benda fyrir mig. 140 00:06:30,930 --> 00:06:32,870 En ég vil bara að sjá einn af þeim. 141 00:06:32,870 --> 00:06:36,280 >> Þannig að ég ætla að fara á undan núna og vista þetta forrit, fara inn flugstöðinni minn 142 00:06:36,280 --> 00:06:41,870 glugga, og ég ætla að fara á undan og tegund gera fljóta 0, slá. 143 00:06:41,870 --> 00:06:44,930 Ég sé að nokkuð dulinn línu sem mun byrja að gera meira vit eins og við 144 00:06:44,930 --> 00:06:46,900 stríða það í sundur í þessari viku og næstu. 145 00:06:46,900 --> 00:06:50,480 Nú ætla ég að fara á undan og hlaupa fljóta núll. 146 00:06:50,480 --> 00:06:52,020 Og fjandinn. 147 00:06:52,020 --> 00:06:54,880 >> Svo er það annar padda hér fyrir sumir ástæða. 148 00:06:54,880 --> 00:07:02,490 Ég er nokkuð viss um að einn tíundi eða einn deilt með 10, er ekki 0,0. 149 00:07:02,490 --> 00:07:04,590 Kannski er ég bara ekki að leita á nóg tölustöfum. 150 00:07:04,590 --> 00:07:08,580 Svo hvers vegna get ég ekki sagt tvær 0,2 til að sjá tvo aukastafi í staðinn af réttlátur einn. 151 00:07:08,580 --> 00:07:11,810 Leyfðu mér að fara aftur til stöðvarinnar gluggann minn hér og högg upp nokkrum sinnum til 152 00:07:11,810 --> 00:07:12,840 sjá sögu mína. 153 00:07:12,840 --> 00:07:15,910 Gera fljóta núll aftur, og síðan upp aftur. 154 00:07:15,910 --> 00:07:17,730 Og nú færa. 155 00:07:17,730 --> 00:07:20,000 >> Og nú er ég nokkuð viss um að þetta er rangt. 156 00:07:20,000 --> 00:07:23,030 Og ég gæti gert þriggja og fjögurra, og ég er líklega að fara að halda að sjá núllum. 157 00:07:23,030 --> 00:07:24,880 Svo hvar er villan? 158 00:07:24,880 --> 00:07:27,910 Einn deilt með 10 ætti að vera 0.1. 159 00:07:27,910 --> 00:07:30,310 Einhver vilja til taka a stunga á hvað grundvallaratriði mál er? 160 00:07:30,310 --> 00:07:32,400 Já? 161 00:07:32,400 --> 00:07:33,420 Þeir eru báðir heiltölur. 162 00:07:33,420 --> 00:07:33,920 Svo hvað? 163 00:07:33,920 --> 00:07:37,820 Svo með einn deilt með 10, sem er hvað ég geri í stærðfræði. 164 00:07:37,820 --> 00:07:41,185 Og ég fæ 0,1. 165 00:07:41,185 --> 00:07:41,660 >> Já. 166 00:07:41,660 --> 00:07:43,240 Og svo er það örugglega þessi mál. 167 00:07:43,240 --> 00:07:46,700 Þegar þú tekur heiltölu á tölvu og þú deila því með öðrum heiltala, 168 00:07:46,700 --> 00:07:50,430 tölva sjálfgefið er að fara að gera ráð fyrir að þú viljir heiltala. 169 00:07:50,430 --> 00:07:54,620 Vandamálið þó, að sjálfsögðu, er að 0,1 er ekki heil tala. 170 00:07:54,620 --> 00:07:55,680 Það er alvöru tala. 171 00:07:55,680 --> 00:07:59,610 Og svo hvað tölva er með Sjálfgefið er það kastar bara burt 172 00:07:59,610 --> 00:08:01,070 allt eftir kommu. 173 00:08:01,070 --> 00:08:03,380 Það skiptir ekki umferð upp eða niður í sjálfu sér. 174 00:08:03,380 --> 00:08:06,480 Það kastar bara burt allt eftir kommu. 175 00:08:06,480 --> 00:08:07,430 Og nú gerir það vit. 176 00:08:07,430 --> 00:08:09,740 Því nú erum við greinilega vinstri með núll. 177 00:08:09,740 --> 00:08:10,250 >> En bíddu í eina mínútu. 178 00:08:10,250 --> 00:08:11,840 Ég er ekki að sjá að int núll. 179 00:08:11,840 --> 00:08:14,910 Ég er reyndar að sjá 0,00. 180 00:08:14,910 --> 00:08:16,340 Svo hvernig gera sætta ég þetta núna? 181 00:08:16,340 --> 00:08:22,850 Ef einn deilt með 10 er núll, en ég er sjá 0,00, þar er það að fá 182 00:08:22,850 --> 00:08:24,250 breytt aftur í alvöru tala? 183 00:08:24,250 --> 00:08:25,500 Já. 184 00:08:25,500 --> 00:08:29,850 185 00:08:29,850 --> 00:08:30,630 Einmitt. 186 00:08:30,630 --> 00:08:35,600 >> Svo hérna í línu fimm, þegar ég í raun geyma að 0,1, sem er þá 187 00:08:35,600 --> 00:08:39,549 styttu í núll, inni í flot, það er í raun jafngildir 188 00:08:39,549 --> 00:08:42,100 geyma það ekki sem int en örugglega, sem fljóta. 189 00:08:42,100 --> 00:08:46,540 Ennfremur er ég þá að nota printf til sérstaklega prenta að tala við tvo 190 00:08:46,540 --> 00:08:49,740 aukastafi jafnvel þó að það gæti í raun ekki vera nein. 191 00:08:49,740 --> 00:08:51,020 >> Svo af þessu tagi sjúga, ekki satt? 192 00:08:51,020 --> 00:08:53,640 Svo virðist sem þú getur ekki gert stærðfræði, að minnsta kosti á þessu stigi 193 00:08:53,640 --> 00:08:55,600 nákvæmni, í tölvu. 194 00:08:55,600 --> 00:08:56,930 En örugglega er það lausn. 195 00:08:56,930 --> 00:09:00,410 Hvað er einfaldasta festa við gætum kannski gera, jafnvel bara innsæi hér til 196 00:09:00,410 --> 00:09:01,130 leysa þetta? 197 00:09:01,130 --> 00:09:02,380 Já? 198 00:09:02,380 --> 00:09:04,700 199 00:09:04,700 --> 00:09:06,574 Snúðu heiltölur í - 200 00:09:06,574 --> 00:09:06,976 já. 201 00:09:06,976 --> 00:09:10,420 Jafnvel ef ég er ekki alveg viss um hvað er raunverulega að gerast hér, ef það 202 00:09:10,420 --> 00:09:13,440 grundvallaratriðum hefur að gera með þetta bæði vera ints, ja, af hverju ekki ég 203 00:09:13,440 --> 00:09:18,230 gera það 10,0, sem gerir þetta 1.0, vistað póstinn skrána. 204 00:09:18,230 --> 00:09:20,990 Leyfðu mér að fara aftur niður til botn og laun. 205 00:09:20,990 --> 00:09:23,030 Leyfðu mér að endursýning núna. 206 00:09:23,030 --> 00:09:23,420 Og þar - 207 00:09:23,420 --> 00:09:27,690 nú, hef ég fékk einum tíunda minn fulltrúa sem 0.10. 208 00:09:27,690 --> 00:09:28,420 >> Allt í lagi. 209 00:09:28,420 --> 00:09:29,220 Svo er það ekki slæmt. 210 00:09:29,220 --> 00:09:31,730 Og láta mig benda á einn annan hátt við hefðum getað leyst þetta. 211 00:09:31,730 --> 00:09:35,580 Leyfðu mér að rúlla í raun aftur í tímann að þegar við höfðum þetta sem einn 212 00:09:35,580 --> 00:09:36,680 tíunda fyrir augnabliki. 213 00:09:36,680 --> 00:09:40,800 Og láta mig fara á undan og vistað póstinn þessa skrá sem annar skrá nafn, bara til að 214 00:09:40,800 --> 00:09:41,750 hafa smá eftirlitsstöð. 215 00:09:41,750 --> 00:09:43,450 Svo sem var útgáfa einn. 216 00:09:43,450 --> 00:09:45,520 Og nú láta mig fara á undan og gera eitt útgáfu. 217 00:09:45,520 --> 00:09:48,540 Við munum kalla þetta útgáfu tvö núll verðtryggð. 218 00:09:48,540 --> 00:09:51,280 >> Og ég ætla að í stað gera þetta - þú veist hvað? 219 00:09:51,280 --> 00:09:54,400 Bæti punktur núll virkar í þessu tilfelli. 220 00:09:54,400 --> 00:09:56,060 En geri ráð fyrir einn var breytu. 221 00:09:56,060 --> 00:09:57,680 Ætlast 10 voru breytu. 222 00:09:57,680 --> 00:10:00,680 Með öðrum orðum, gera ráð fyrir að ég gat ekki bara erfitt-númer 0,0 í lok 223 00:10:00,680 --> 00:10:02,340 þessarar tölur tjáningu. 224 00:10:02,340 --> 00:10:05,820 Jæja, ég get í raun gert eitthvað í sviga kallast steypu. 225 00:10:05,820 --> 00:10:11,920 Ég get kastað heiltölu 10 til flot, og ég get kastað heiltölu einn til að 226 00:10:11,920 --> 00:10:12,800 fljóta, eins vel. 227 00:10:12,800 --> 00:10:17,190 Þá stærðfræði sem er að fara að gera er í raun 1,0 deilt með 10,0, 228 00:10:17,190 --> 00:10:19,250 afleiðing af sem fer í fyrsta skrefið er eins og áður. 229 00:10:19,250 --> 00:10:26,130 Svo ef ég laun þetta eins og gera fljóta 2, og nú flýtur 2, fá I sömu 230 00:10:26,130 --> 00:10:27,020 answer, eins og vel. 231 00:10:27,020 --> 00:10:29,640 >> Þannig að þetta er nokkuð háttuð dæmi, til að leysa þetta vandamál 232 00:10:29,640 --> 00:10:31,400 með því að kynna steypu. 233 00:10:31,400 --> 00:10:34,410 En almennt, steypu er að fara að vera öflugur hlutur, sérstaklega fyrir 234 00:10:34,410 --> 00:10:38,180 Heimadæmi tvö í einu viku, þegar þú vilt að umbreyta einni gögn gerð til 235 00:10:38,180 --> 00:10:41,800 annar að í lok dags eiga fulltrúa á sama hátt. 236 00:10:41,800 --> 00:10:44,970 Í lok dags, á hverjum einasta sem við höfum talað um svona langt er 237 00:10:44,970 --> 00:10:46,710 bara ints undir hetta. 238 00:10:46,710 --> 00:10:48,950 Eða ef það er of lágu stigi fyrir þú, þá eru þeir bara tölur 239 00:10:48,950 --> 00:10:49,750 undir hetta. 240 00:10:49,750 --> 00:10:52,850 Jafnvel stafir, aftur, muna frá núlli viku, eru tölur 241 00:10:52,850 --> 00:10:53,990 undir hetta. 242 00:10:53,990 --> 00:10:57,240 >> Hver er að segja, við getum umbreyta á milli mismunandi tegundir af tölum ef 243 00:10:57,240 --> 00:10:58,060 þeir eru bara bits. 244 00:10:58,060 --> 00:11:01,020 Við getum umbreyta á milli tölum og bréf ef þeir eru bara 245 00:11:01,020 --> 00:11:02,580 bits, og öfugt. 246 00:11:02,580 --> 00:11:07,170 Og greiða á þennan hátt er verkfæri í forritun sem leyfir þér valdi 247 00:11:07,170 --> 00:11:10,970 breyta einum gögn gerð til annars. 248 00:11:10,970 --> 00:11:14,570 Því miður, þetta er ekki eins einfalt eins og ég hefði viljað. 249 00:11:14,570 --> 00:11:19,220 >> Ég ætla að fara aftur í flotum 1, sem var einfaldari, 250 00:11:19,220 --> 00:11:22,830 einfalt einn með 0,0 bætt við til hvers. 251 00:11:22,830 --> 00:11:25,260 Og bara eins og a fljótur upprifjunar, láta mig fara á undan og laun 252 00:11:25,260 --> 00:11:27,670 þetta þarftu að fljóta 2 - 253 00:11:27,670 --> 00:11:30,300 Því miður, þetta er að fljóta 1. 254 00:11:30,300 --> 00:11:32,050 Og nú skulum hlaupa fljóta 1. 255 00:11:32,050 --> 00:11:34,810 Og í botn, taka að ég fæ örugglega 0,1. 256 00:11:34,810 --> 00:11:36,165 Svo, vandamálið leyst. 257 00:11:36,165 --> 00:11:37,280 >> En ekki enn. 258 00:11:37,280 --> 00:11:40,000 Ég ætla nú að fara að fá smá forvitinn, og ég ætla að fara aftur í mínum 259 00:11:40,000 --> 00:11:41,620 printf yfirlýsingu og segja, þú veist hvað? 260 00:11:41,620 --> 00:11:44,090 Mig langar til að staðfesta að þetta er í raun einn tíundi. 261 00:11:44,090 --> 00:11:47,890 Og ég er að fara að vilja að sjá þetta að segja, fimm aukastafi. 262 00:11:47,890 --> 00:11:48,570 Það er ekki vandamál. 263 00:11:48,570 --> 00:11:52,020 Ég breyta tvö til fimm, Ég laun með gera. 264 00:11:52,020 --> 00:11:53,770 Ég endursýning það flýtur eins 1. 265 00:11:53,770 --> 00:11:54,990 Leita ansi gott. 266 00:11:54,990 --> 00:11:58,570 Heilindarathugunum mín gæti enda þar, en Ég fæ smá fleiri ævintýrum. 267 00:11:58,570 --> 00:12:00,330 Ég ætla að breyta 0,5-0,10. 268 00:12:00,330 --> 00:12:03,440 Ég vil sjá 10 tölustafir á eftir The aukastaf. 269 00:12:03,440 --> 00:12:09,060 >> Og ég ætla að fara á undan og laun þetta og endursýning flýtur 1. 270 00:12:09,060 --> 00:12:13,060 Ég svona eftirsjá að hafa prófað þetta frekar vegna stærðfræði mín er ekki svo 271 00:12:13,060 --> 00:12:14,320 leiðrétta lengur, það virðist. 272 00:12:14,320 --> 00:12:15,630 En bíddu í eina mínútu, kannski það er bara fluke. 273 00:12:15,630 --> 00:12:17,810 Kannski tölvan er leikur svolítið skrítið. 274 00:12:17,810 --> 00:12:21,810 Leyfðu mér að fara á undan og gera 20 aukastöfum og fullvissa mig um að ég veit 275 00:12:21,810 --> 00:12:22,540 hvernig á að gera stærðfræði. 276 00:12:22,540 --> 00:12:23,460 Ég veit hvernig á að forrita. 277 00:12:23,460 --> 00:12:26,960 Gerðu fljóta 1, laun, og fjandinn. 278 00:12:26,960 --> 00:12:31,110 Það er virkilega, virkilega fá langt frá markinu. 279 00:12:31,110 --> 00:12:32,490 >> Svo hvað er að gerast hér? 280 00:12:32,490 --> 00:12:36,050 Innsæi, byggt á forsendum okkar Fyrr um stærð gerðir gagna, 281 00:12:36,050 --> 00:12:38,040 hvað þarf að gerast hér undir hetta? 282 00:12:38,040 --> 00:12:39,290 Já? 283 00:12:39,290 --> 00:12:43,000 284 00:12:43,000 --> 00:12:43,590 Einmitt. 285 00:12:43,590 --> 00:12:46,480 Ef þú vilt þetta mikið nákvæmni, og sem er Heck af a einhver fjöldi af nákvæmni - 286 00:12:46,480 --> 00:12:48,770 20 tölur eftir kommu. 287 00:12:48,770 --> 00:12:51,990 Þú getur ekki hugsanlega fulltrúi handahófskennt tala nema þú sért með 288 00:12:51,990 --> 00:12:52,930 handahófskennt fjölda bita. 289 00:12:52,930 --> 00:12:54,190 En við gerum ekki. 290 00:12:54,190 --> 00:12:57,200 Fyrir fljóta, höfum við aðeins 32 bita. 291 00:12:57,200 --> 00:13:02,260 >> Þannig að ef 32 bita er aðeins hægt permuted í leið - rétt eins og menn okkar á, stigi 292 00:13:02,260 --> 00:13:05,780 hendur upp eða niður - í endanlegri fjölda leiðir, það er aðeins tímabundið fjölda 293 00:13:05,780 --> 00:13:08,640 rauntalna þú getur táknað með þeim bita. 294 00:13:08,640 --> 00:13:10,500 Og svo í tölvunni á endanum er að fara til verða að 295 00:13:10,500 --> 00:13:11,730 byrja að skera horn. 296 00:13:11,730 --> 00:13:15,500 Tölvan getur falið þessar upplýsingar frá okkur í smá tíma. 297 00:13:15,500 --> 00:13:18,880 En ef við byrjum poking á tölurnar og leita lengra og lengra í að 298 00:13:18,880 --> 00:13:23,220 slóð tölur í heilu tölu, þá erum við að byrja að sjá að það er 299 00:13:23,220 --> 00:13:26,480 reyndar er nálgun á Hugmyndin um einn tíunda. 300 00:13:26,480 --> 00:13:29,860 >> Og svo kemur í ljós, tragically, það er óendanlegur fjöldi af tölum 301 00:13:29,860 --> 00:13:35,060 við getum ekki tákna nákvæmlega í tölva, amk með endanlegri 302 00:13:35,060 --> 00:13:38,030 fjölda bita, endanlegt magn af vinnsluminni. 303 00:13:38,030 --> 00:13:41,210 Nú því miður, þetta stundum hefur raunverulegur-veröld afleiðingar. 304 00:13:41,210 --> 00:13:45,980 Ef fólk er ekki alveg að meta þetta eða svoleiðis taka sem sjálfsögðum hlut þá staðreynd 305 00:13:45,980 --> 00:13:48,310 að tölvan þeirra mun bara gera það þeir segja það að gera og gera ekki 306 00:13:48,310 --> 00:13:51,430 skilja þetta undirliggjandi framsetning upplýsingar - 307 00:13:51,430 --> 00:13:55,290 sem satt, eru í sumum tungumálum falinn frá notandanum ólíkt í C - 308 00:13:55,290 --> 00:13:56,500 sumir slæmur hlutur getur gerst. 309 00:13:56,500 --> 00:13:58,650 >> Og hvað ég hélt að við myndum gera er að taka skref til baka. 310 00:13:58,650 --> 00:14:00,420 Og þetta er um að átta mínútna vídeó. 311 00:14:00,420 --> 00:14:04,200 Það frumsýnd fyrir nokkrum árum síðan, og það gefur innsýn í raun hvað getur farið 312 00:14:04,200 --> 00:14:09,290 rangt þegar þú undir-þakka þetta konar upplýsingar í mjög allur-of 313 00:14:09,290 --> 00:14:10,080 raunverulega heimi. 314 00:14:10,080 --> 00:14:12,965 Ef við gætum lítil ljósin í nokkrar mínútur. 315 00:14:12,965 --> 00:14:14,360 >> Ræðumaður 1: Við aftur nú í verkfræði 316 00:14:14,360 --> 00:14:17,160 hamfarir á nútíma undur. 317 00:14:17,160 --> 00:14:18,680 >> Tölvur - 318 00:14:18,680 --> 00:14:21,340 við höfum komið öll að samþykkja oft pirrandi vandamál 319 00:14:21,340 --> 00:14:23,170 að fara með þeim. 320 00:14:23,170 --> 00:14:27,570 Bugs, veirur og hugbúnaður galli eru lítil verð til að greiða fyrir 321 00:14:27,570 --> 00:14:28,960 þægindi. 322 00:14:28,960 --> 00:14:32,040 En í hátækni og hár-hraði her og rúm program 323 00:14:32,040 --> 00:14:38,650 umsóknir, minnstu vandamál má mikil í hörmung. 324 00:14:38,650 --> 00:14:44,480 >> Hinn 4. júní 1996, vísindamenn reiðubúin til hefja unmanned Ariane 5 eldflaugar. 325 00:14:44,480 --> 00:14:48,700 Það var vopnaður vísindalegar gervihnöttum hannað til að koma nákvæmlega hvernig 326 00:14:48,700 --> 00:14:53,250 segulsvið jarðar áhrif með sól vindur. 327 00:14:53,250 --> 00:14:57,540 The Rocket var byggt fyrir Evrópu Space Agency og lyfti burt frá sinni 328 00:14:57,540 --> 00:14:59,906 leikni á ströndinni af Franska Gvæjana. 329 00:14:59,906 --> 00:15:03,660 >> JACK GANSSLE: Á um 37 sekúndur inn Flugferðin tók þau fyrst 330 00:15:03,660 --> 00:15:04,910 eitthvað var að fara úrskeiðis. 331 00:15:04,910 --> 00:15:08,130 Nozzles voru segulnagli í leið þeir ættu í raun ekki. 332 00:15:08,130 --> 00:15:12,380 Um 40 sekúndur inn í flugi, greinilega ökutækið var í vandræðum. 333 00:15:12,380 --> 00:15:14,400 Og það er þegar þeir gerðu ákvörðun um að eyðileggja það. 334 00:15:14,400 --> 00:15:18,520 Öryggi svið liðsforingi, með gríðarlega hugaður, þrýsta á hnappinn, 335 00:15:18,520 --> 00:15:23,900 blés upp eldflaugar áður en það gæti verða hættulegir almannaöryggis. 336 00:15:23,900 --> 00:15:27,810 >> Ræðumaður 1: Þetta var jómfrúarferð að Ariane 5 og eyðingu hennar 337 00:15:27,810 --> 00:15:32,020 fór fram vegna galla embed í hugbúnaði eldflaugar er. 338 00:15:32,020 --> 00:15:33,980 >> JACK GANSSLE: Vandinn á Ariane var að það var a tala 339 00:15:33,980 --> 00:15:36,390 sem krafist er 64 bita til að tjá. 340 00:15:36,390 --> 00:15:39,420 Og þeir vildu að umbreyta til 16-bita tala. 341 00:15:39,420 --> 00:15:43,130 Þeir gera ráð fyrir að fjöldi var aldrei að fara að vera mjög stór, sem flest 342 00:15:43,130 --> 00:15:46,810 þessir tölustafir í 64-bita númer voru núll. 343 00:15:46,810 --> 00:15:48,270 Þeir voru rangar. 344 00:15:48,270 --> 00:15:51,380 >> Ræðumaður 1: The vanhæfni af einn hugbúnaður forrit til að samþykkja hvers konar 345 00:15:51,380 --> 00:15:55,350 Fjöldi mynda af annar var á rót bilun. 346 00:15:55,350 --> 00:15:59,970 Hugbúnaðarþróun orðinn mjög dýr hluti af nýrri tækni. 347 00:15:59,970 --> 00:16:03,980 The Ariane 4 flugeldur hefði verið mjög vel, svo mikið af hugbúnaði 348 00:16:03,980 --> 00:16:07,480 búið til fyrir það var einnig sem notuð eru í Ariane 5. 349 00:16:07,480 --> 00:16:11,980 >> PHILIP Coyle: Grunn vandamálið var að Ariane 5 var hraðari, 350 00:16:11,980 --> 00:16:13,720 hraða hraðar. 351 00:16:13,720 --> 00:16:17,250 Og the hugbúnaður var ekki grein fyrir því. 352 00:16:17,250 --> 00:16:20,770 >> Ræðumaður 1: The eyðileggingu eldflaugar var gríðarlegur fjárhagslega hörmung, 353 00:16:20,770 --> 00:16:24,200 allt vegna þess að eina mínútu hugbúnaðar villa. 354 00:16:24,200 --> 00:16:27,820 En þetta var ekki fyrsta gögn skipti viðskipti vandamál höfðu stríða nútíma 355 00:16:27,820 --> 00:16:30,620 eldflaugar tækni. 356 00:16:30,620 --> 00:16:34,480 >> JACK GANSSLE: Árið 1991, við upphaf í fyrsta Persaflóastríðinu, The Patriot 357 00:16:34,480 --> 00:16:38,610 eldflaugum upplifað svipað konar á viðskiptum fjölda vandamál. 358 00:16:38,610 --> 00:16:44,910 Þess vegna, 28 bandarískir hermenn voru drepnir og um 100 aðrir særðir 359 00:16:44,910 --> 00:16:48,600 þegar Patriot, sem átti að vernda gegn komandi Scuds, 360 00:16:48,600 --> 00:16:51,630 tókst að skjóta eldflaugum. 361 00:16:51,630 --> 00:16:55,110 >> Ræðumaður 1: Þegar Írak innrás Kúveit og America stokkunum Desert Storm í 362 00:16:55,110 --> 00:17:00,570 snemma 1991, Patriot eldflaugum rafhlöður voru sendar til að vernda Sádi-Arabíu 363 00:17:00,570 --> 00:17:04,760 og Ísrael frá Írak Scud eldflaugum árás. 364 00:17:04,760 --> 00:17:09,720 The Patriot er US miðlungs-svið yfirborð-til-loft kerfi framleidd með því að 365 00:17:09,720 --> 00:17:11,569 The Raytheon fyrirtækið. 366 00:17:11,569 --> 00:17:16,410 >> THEODORE POSTOL: The stærð af the Patriot interceptor sjálft er u.þ.b. 367 00:17:16,410 --> 00:17:17,710 20-feta langur. 368 00:17:17,710 --> 00:17:20,800 Og það vega um 2000 kíló. 369 00:17:20,800 --> 00:17:22,940 Og það ber warhead af um - 370 00:17:22,940 --> 00:17:24,905 Ég held að það er u.þ.b. 150 £. 371 00:17:24,905 --> 00:17:31,030 Og Warhead sjálft er hár sprengiefni sem hefur 372 00:17:31,030 --> 00:17:33,270 brot í kringum það. 373 00:17:33,270 --> 00:17:37,490 The hlíf á warhead er hannað að bregðast við eins buckshot. 374 00:17:37,490 --> 00:17:40,720 >> Ræðumaður 1: eldflaugar eru gerðar fjórum á umbúðum og eru flutt 375 00:17:40,720 --> 00:17:43,050 með hálf kerru. 376 00:17:43,050 --> 00:17:47,490 >> PHILIP Coyle: The Patriot gegn eldflaugum Kerfið fer aftur á 377 00:17:47,490 --> 00:17:50,710 amk 20 ár núna. 378 00:17:50,710 --> 00:17:54,350 Það var upphaflega hannað sem loft varnir eldflaugum til 379 00:17:54,350 --> 00:17:56,190 skjóta niður óvini flugvélar. 380 00:17:56,190 --> 00:18:02,490 Í fyrsta Persaflóastríðinu, þegar að stríð kom eftir, her vildi nota það 381 00:18:02,490 --> 00:18:05,535 að skjóta niður Scuds, ekki flugvélum. 382 00:18:05,535 --> 00:18:09,310 Í Írak Air Force var ekki svo mikið vandamál. 383 00:18:09,310 --> 00:18:12,450 En herinn var áhyggjur Scuds. 384 00:18:12,450 --> 00:18:15,950 Og svo þeir reyndu að uppfæra The Patriot. 385 00:18:15,950 --> 00:18:18,750 >> Ræðumaður 1: stöðvun á óvini eldflaugum ferðast á Mach fimm var 386 00:18:18,750 --> 00:18:20,890 fara að vera krefjandi nóg. 387 00:18:20,890 --> 00:18:25,590 En þegar Patriot var hljóp í þjónustu, her var ekki kunnugt um að 388 00:18:25,590 --> 00:18:31,710 Írak breytingar sem gerðar þeirra Scuds næstum ómögulegt að ná. 389 00:18:31,710 --> 00:18:35,240 >> THEODORE POSTOL: Hvað gerðist er Scuds sem voru 390 00:18:35,240 --> 00:18:36,570 koma í voru óstöðug. 391 00:18:36,570 --> 00:18:37,532 Þeir voru wobbling. 392 00:18:37,532 --> 00:18:43,220 Ástæðan fyrir þessu var Írakar, í Til þess að fá 600 km út af 393 00:18:43,220 --> 00:18:47,530 300-kílómetri-svið eldflaugum, tók þyngd af þessum fremstu warhead. 394 00:18:47,530 --> 00:18:49,290 Þeir gerði Warhead léttari. 395 00:18:49,290 --> 00:18:53,110 Svo nú Patriot er að reyna að koma á Scud. 396 00:18:53,110 --> 00:18:56,470 Og mest af þeim tíma, að yfirgnæfandi Meirihluti af the tími, myndi það bara 397 00:18:56,470 --> 00:18:58,730 fljúga með Scud. 398 00:18:58,730 --> 00:19:01,760 >> Ræðumaður 1: Þegar Patriot kerfi rekstraraðilar ljóst að Patriot misst 399 00:19:01,760 --> 00:19:06,690 miða þess, detonated þeir Patriots Warhead til að forðast mögulegt 400 00:19:06,690 --> 00:19:10,300 mannfall ef það var leyft að falla til jarðar. 401 00:19:10,300 --> 00:19:14,540 >> THEODORE POSTOL: Það var það sem mest fólk sá sem stór fireballs á himni 402 00:19:14,540 --> 00:19:20,350 og misskilið sem rekur af Scud warheads. 403 00:19:20,350 --> 00:19:23,320 >> Ræðumaður 1: Þótt í nótt himinn Patriots virtist vera giftusamlega 404 00:19:23,320 --> 00:19:27,530 eyðileggja Scuds á Dhahran þar gæti verið engin mistök Óður í 405 00:19:27,530 --> 00:19:29,140 árangur. 406 00:19:29,140 --> 00:19:34,180 Þar ratsjá kerfi Patriot er glataður utan um komandi Scud og aldrei 407 00:19:34,180 --> 00:19:36,380 hóf vegna hugbúnaðar galli. 408 00:19:36,380 --> 00:19:39,890 409 00:19:39,890 --> 00:19:42,700 >> Það var Ísraelar sem fyrst uppgötvað að því lengur sem kerfið 410 00:19:42,700 --> 00:19:48,020 var á, þeim mun meiri tíma misræmi varð vegna klukku 411 00:19:48,020 --> 00:19:50,470 innbyggð í tölvunni kerfisins. 412 00:19:50,470 --> 00:19:54,640 >> JACK GANSSLE: Um tveimur vikum áður en Harmleikur í Dhahran, Ísraelar 413 00:19:54,640 --> 00:19:58,440 tilkynnt til Defense Department Fjármálakerfið var að tapa tíma. 414 00:19:58,440 --> 00:20:01,280 Eftir um átta klukkustundir að keyra, þeir tekið eftir því að kerfið er 415 00:20:01,280 --> 00:20:03,530 verða orðinn ónákvæmari. 416 00:20:03,530 --> 00:20:07,710 The Defense Department brugðist við með segja öllum Patriot rafhlöður 417 00:20:07,710 --> 00:20:10,500 að ekki láta kerfi á í langan tíma. 418 00:20:10,500 --> 00:20:12,430 Þeir sögðu aldrei hvað fyrir löngu var. 419 00:20:12,430 --> 00:20:13,330 Átta klukkustundir? 420 00:20:13,330 --> 00:20:13,810 10 klukkustundir? 421 00:20:13,810 --> 00:20:14,990 1000 klst? 422 00:20:14,990 --> 00:20:17,150 Enginn vissi. 423 00:20:17,150 --> 00:20:20,220 >> Ræðumaður 1: The Patriot rafhlöðu setti á kastalann í Dhahran 424 00:20:20,220 --> 00:20:24,660 og gölluð innri klukka þess hefði verið á yfir 100 klukkustundir á nótt 425 00:20:24,660 --> 00:20:27,470 25 feb. 426 00:20:27,470 --> 00:20:31,770 >> JACK GANSSLE: Það elt tíma til að nákvæmni um tíunda hluta úr sekúndu. 427 00:20:31,770 --> 00:20:34,480 Nú, tíundi úr sekúndu er áhugavert tala vegna þess að það er ekki hægt að 428 00:20:34,480 --> 00:20:39,940 gefið upp í tvöfaldur nákvæmlega, sem þýðir það er ekki hægt að gefa upp nákvæmlega í 429 00:20:39,940 --> 00:20:42,500 allir nútíma stafræna tölvu. 430 00:20:42,500 --> 00:20:46,920 Það er erfitt að trúa því, en nota þetta sem dæmi. 431 00:20:46,920 --> 00:20:49,000 Skulum taka númer þriðjung. 432 00:20:49,000 --> 00:20:53,150 Einn þriðji geta ekki gefið upp í aukastaf nákvæmlega. 433 00:20:53,150 --> 00:20:57,500 Þriðjungur er 0,333 fara á fyrir óendanleika. 434 00:20:57,500 --> 00:21:02,270 Það er engin leið að gera það með alger nákvæmni í aukastaf. 435 00:21:02,270 --> 00:21:05,370 Það er einmitt sams konar vandamál sem gerðist í Patriot. 436 00:21:05,370 --> 00:21:09,880 Því lengur sem kerfið hljóp, sem versta tíma villa varð. 437 00:21:09,880 --> 00:21:13,840 >> Ræðumaður 1: Eftir 100 klst af rekstri, villa í tíma var aðeins 438 00:21:13,840 --> 00:21:16,140 um þriðjungur úr sekúndu. 439 00:21:16,140 --> 00:21:20,800 En hvað varðar að miða eldflaugum ferðast á Mach fimm, leiddi það í 440 00:21:20,800 --> 00:21:24,410 A hermiskekkja yfir 600 metra. 441 00:21:24,410 --> 00:21:27,670 Það væri banvæn villa fyrir hermenn á Dhahran. 442 00:21:27,670 --> 00:21:33,450 >> THEODORE POSTOL: Hvað gerðist er Scud ráðast var greind með snemma 443 00:21:33,450 --> 00:21:34,280 viðvörun gervihnöttum. 444 00:21:34,280 --> 00:21:38,550 Og þeir vissu að Scud kæmi almennt átt þeirra. 445 00:21:38,550 --> 00:21:41,000 Að þeir vissu ekki hvar það var að koma. 446 00:21:41,000 --> 00:21:43,900 >> Ræðumaður 1: Það var nú allt að ratsjá hluti af Patriot kerfi 447 00:21:43,900 --> 00:21:48,910 verja Dhahran að finna og halda utan um komandi óvini eldflaugum. 448 00:21:48,910 --> 00:21:50,580 >> JACK GANSSLE: The ratsjá var mjög klár. 449 00:21:50,580 --> 00:21:53,770 Það væri í raun að fylgjast með stöðu sem Scud og þá að spá þar sem það 450 00:21:53,770 --> 00:21:57,160 myndi sennilega vera the næstur tími ratsjá sendi púls út. 451 00:21:57,160 --> 00:21:58,870 Það var kallað svið hliðið. 452 00:21:58,870 --> 00:22:04,020 >> THEODORE POSTOL: Þá þegar Patriot ákveður nægur tími er liðinn til að fara 453 00:22:04,020 --> 00:22:09,420 aftur og athuga næsta stað fyrir þetta greind hlut, fer það aftur. 454 00:22:09,420 --> 00:22:14,450 Svo þegar það fór aftur til röng staður, sér það þá ekki mótmæla. 455 00:22:14,450 --> 00:22:18,200 Og það ákveður að það var enginn hlutur, það var falskur uppgötvun, og 456 00:22:18,200 --> 00:22:19,680 lækkar laginu. 457 00:22:19,680 --> 00:22:22,970 >> Ræðumaður 1: The komandi Scud hvarf frá ratsjá skjánum, og 458 00:22:22,970 --> 00:22:26,050 sekúndum síðar skellti inn í kastalann. 459 00:22:26,050 --> 00:22:31,950 The Scud drap 28 og var það síðasta rekinn á fyrsta Persaflóastríðinu. 460 00:22:31,950 --> 00:22:37,700 Tragically, the endurnýja hugbúnaður kom á Dhahran daginn eftir. 461 00:22:37,700 --> 00:22:41,800 The hugbúnaður galli hafði verið fastur, loka einum kafla í vandræði 462 00:22:41,800 --> 00:22:43,690 Saga Patriot eldflaugum. 463 00:22:43,690 --> 00:22:46,780 464 00:22:46,780 --> 00:22:50,710 >> Patriot er í raun skammstöfun fyrir áföngum Array Rekja 465 00:22:50,710 --> 00:22:51,960 Stöðva yfir verðbólgumarkmiði bankans. 466 00:22:51,960 --> 00:22:54,650 467 00:22:54,650 --> 00:23:00,840 >> DAVID J Malan: Allt í lagi, þannig að ódrukkinn dæmi, til að vera viss. 468 00:23:00,840 --> 00:23:03,430 Og sem betur fer, þessir lægra stigi bugs eru ekki eitthvað sem við munum 469 00:23:03,430 --> 00:23:06,220 yfirleitt að þakka, vissulega ekki með nokkrum af okkar 470 00:23:06,220 --> 00:23:07,360 Elstu af forritum. 471 00:23:07,360 --> 00:23:10,450 Frekar, flest galla sem þú munt kynni að vera rökrétt í náttúrunni, 472 00:23:10,450 --> 00:23:12,900 nokkur dæmi um setningarleg í náttúrunni þar sem númer bara virkar ekki rétt. 473 00:23:12,900 --> 00:23:14,140 Og þú veist það nokkuð hratt. 474 00:23:14,140 --> 00:23:16,850 >> En sérstaklega þegar við komum til lok misseris, það er að fara að 475 00:23:16,850 --> 00:23:20,620 verða fleiri og fleiri möguleika til raunverulega hugsa hart um hönnun 476 00:23:20,620 --> 00:23:22,960 af áætlunum þínum og undirliggjandi framsetning 477 00:23:22,960 --> 00:23:24,520 það líka, af gögnunum. 478 00:23:24,520 --> 00:23:28,010 Til dæmis, munum við kynna MySQL, sem er vinsæll gagnasafn vél 479 00:23:28,010 --> 00:23:30,850 sem þú getur notað með vefsíður til geyma gögn á bak endir. 480 00:23:30,850 --> 00:23:34,630 Og þú þarft að byrja að ákveða á í lok annarinnar ekki aðeins hvað 481 00:23:34,630 --> 00:23:38,790 tegundir af gögnum með þessum línum til að nota en nákvæmlega hversu margir bitar til að nota, 482 00:23:38,790 --> 00:23:42,740 hvort sem þú vilt geyma dagsetningar sem dagsetningar og tíma sem oft, og einnig 483 00:23:42,740 --> 00:23:46,890 hlutir eins hversu stór þú vilt að einstakt auðkenni að vera fyrir, segjum við notendur 484 00:23:46,890 --> 00:23:47,680 í gagnagrunninn. 485 00:23:47,680 --> 00:23:51,210 >> Í staðreynd, ef einhver ykkar hafa fengið Facebook reikninga fyrir alveg sumir tími, 486 00:23:51,210 --> 00:23:53,680 og þú veist hvernig á að fá aðgang Notandi kenni - 487 00:23:53,680 --> 00:23:57,930 sem sýnir stundum upp í þínum Profile er URL nema þú hafir valið 488 00:23:57,930 --> 00:24:02,070 gælunafn fyrir slóðina, eða ef þú hefur NOTAÐ Facebook Línurit API, sem 489 00:24:02,070 --> 00:24:05,510 aðgengilegar API sem þú getur beðið Facebook til hrár gögn - 490 00:24:05,510 --> 00:24:07,580 þú getur séð hvað tölustafir ID er. 491 00:24:07,580 --> 00:24:10,880 Og fyrir nokkrum árum, Facebook meginatriðum þurfti að breyta frá því að nota 492 00:24:10,880 --> 00:24:15,980 jafnvirði ints að nota lengi lengi því tímanum sem notendur koma 493 00:24:15,980 --> 00:24:19,780 og fara og búa til fullt af reikningum og falsa reikninga, jafnvel þeir auðveldlega mjög 494 00:24:19,780 --> 00:24:24,630 gátu að útblástur eitthvað eins 4 milljarða mögulegt gildi eins int. 495 00:24:24,630 --> 00:24:28,340 >> Svo meira á þessum tegundum af málum niður veginn, eins og vel. 496 00:24:28,340 --> 00:24:30,750 Allt í lagi, þannig að var að reka. 497 00:24:30,750 --> 00:24:31,670 Það var imprecision. 498 00:24:31,670 --> 00:24:32,730 A par af fljótur tilkynninga. 499 00:24:32,730 --> 00:24:35,710 Svo köflum hefjast formlega þetta kemur Sunnudagur, mánudagur, þriðjudagur. 500 00:24:35,710 --> 00:24:39,080 Þú munt heyra með tölvupósti síðar í þessari viku að kafla verkefni þitt. 501 00:24:39,080 --> 00:24:42,570 Og þú munt einnig hér á þeim tímapunkti hversu að breyta kafla ef þinn 502 00:24:42,570 --> 00:24:45,660 Áætlunin hefur nú breyst eða þinn þægindi stigi hefur nú breyst. 503 00:24:45,660 --> 00:24:49,380 Á meðan P-setja einn og tölvusnápur einn eru vegna þessa Fimmtudagur með möguleika til 504 00:24:49,380 --> 00:24:52,450 lengja þann tíma á að upplýsingar til föstudags 505 00:24:52,450 --> 00:24:53,830 á dæmigerðan hátt. 506 00:24:53,830 --> 00:24:57,500 >> Grein fyrir því að með í vanda setja upplýsingar eru leiðbeiningar um 507 00:24:57,500 --> 00:25:02,770 hvernig á að nota CS50 tæki, gera, eins og sumir CS50 sérstök tól 508 00:25:02,770 --> 00:25:06,540 eins stíl 50, sem hægt er að veita þér með athugasemdir dynamically hins 509 00:25:06,540 --> 00:25:10,230 gæði stíl og einnig athuga 50, sem geta veitt þér með 510 00:25:10,230 --> 00:25:13,160 dynamic viðbrögð sem til þín CODE í nákvæmni. 511 00:25:13,160 --> 00:25:16,850 Fyrirgefðu að við erum enn að strauja út nokkrum Kinks með ávísun 50. 512 00:25:16,850 --> 00:25:21,490 Nokkrar af bekkjarfélögum þínum sem gerði byrja um 04:00 á föstudagskvöldið þegar 513 00:25:21,490 --> 00:25:25,130 The sérstakur fór upp hafa tekið eftir síðan nokkrar villur sem við erum að vinna 514 00:25:25,130 --> 00:25:29,010 gegnum, og Apologies fyrir þá sem hefur upplifað óþarfa óánægju. 515 00:25:29,010 --> 00:25:30,340 The kenna er minn. 516 00:25:30,340 --> 00:25:34,080 En við munum fylgja eftir CS50 ræða þegar það er leyst. 517 00:25:34,080 --> 00:25:35,700 >> Svo orð á skorar sjálfum. 518 00:25:35,700 --> 00:25:38,990 Svo það verður í viku eða tvær áður en þú byrja að fá endurgjöf á setur vandamál 519 00:25:38,990 --> 00:25:40,640 vegna þess að þú ert ekki enn kominn kennsla náungi. 520 00:25:40,640 --> 00:25:44,510 Og jafnvel þá, munum við byrja að meta C vandamál setur áður en við 521 00:25:44,510 --> 00:25:46,970 fara til baka og meta klóra svo að þú fáir meira viðeigandi 522 00:25:46,970 --> 00:25:48,150 viðbrögð hraðar. 523 00:25:48,150 --> 00:25:51,870 En almennt á kennsluáætlun, CS50 vandamál setur eru metin meðfram 524 00:25:51,870 --> 00:25:53,580 Eftirfarandi fjögur ása - 525 00:25:53,580 --> 00:25:55,760 umfang, nákvæmni, hönnun, og stíl. 526 00:25:55,760 --> 00:25:59,210 >> Svigrúm er að fara til vera a tala venjulega á milli núll og fimm sem 527 00:25:59,210 --> 00:26:01,830 fangar hversu mikið af stykki sem þú bitu burt. 528 00:26:01,830 --> 00:26:03,750 Venjulega, þú vilja this til vera fimm. 529 00:26:03,750 --> 00:26:05,300 Þú reyndir að minnsta kosti allt. 530 00:26:05,300 --> 00:26:09,330 Og eftir það er margfeldisstuðull þáttur svo að gera aðeins hluti af 531 00:26:09,330 --> 00:26:12,520 Heimadæmi er ekki bestu leiðina. 532 00:26:12,520 --> 00:26:15,610 >> Á sama tíma, meira augljóst er mikilvægi misskilning - 533 00:26:15,610 --> 00:26:18,620 bara er program rétt með virða við forskrift? 534 00:26:18,620 --> 00:26:21,510 Þetta er vegið vísvitandi meira þungt en hinum tveimur ásum af 535 00:26:21,510 --> 00:26:24,450 þáttur af þremur þar sem við viðurkennum sem venjulega þú ert að fara að eyða 536 00:26:24,450 --> 00:26:28,600 mikið meiri tíma að elta niður sumir bugs, fá númerið þitt til að vinna, þá 537 00:26:28,600 --> 00:26:31,540 eru indenting það og velja viðeigandi breytu nöfn og 538 00:26:31,540 --> 00:26:33,800 eins og, sem er á hinum enda litrófs stíl. 539 00:26:33,800 --> 00:26:36,160 >> Það er ekki að segja stíll er ekki mikilvægt, og við munum prédika það yfir 540 00:26:36,160 --> 00:26:37,920 tími bæði í fyrirlestrum og í köflum. 541 00:26:37,920 --> 00:26:40,520 Style vísar til fagurfræði af kóðann þinn. 542 00:26:40,520 --> 00:26:43,980 Hefur þú valið vel-heitir breytur sem er stutt en nokkuð 543 00:26:43,980 --> 00:26:44,680 lýsandi? 544 00:26:44,680 --> 00:26:47,840 Er númerið þitt grafin sem þú hefur séð í Fyrirlestur og í samræmi 545 00:26:47,840 --> 00:26:49,070 með stæl 50? 546 00:26:49,070 --> 00:26:51,220 >> Loks er hönnun rétt þar í miðju. 547 00:26:51,220 --> 00:26:54,090 Hönnun er erfiðara einn til að setja á fingur á vegna þess að það er miklu meira 548 00:26:54,090 --> 00:26:55,000 huglæg. 549 00:26:55,000 --> 00:26:58,610 En það er ef til vill mikilvægasta þrír ása hvað varðar uppeldisfræði 550 00:26:58,610 --> 00:27:02,050 gildi með tímanum og að þetta mun vera Kennslan Fellow er tækifæri til 551 00:27:02,050 --> 00:27:04,110 veita þér með eigindlegum endurgjöf. 552 00:27:04,110 --> 00:27:08,100 Reyndar í CS50 þótt við höfum þessi uppskrift og skora, í lok 553 00:27:08,100 --> 00:27:11,350 dagsins eru þetta mjög vísvitandi mjög lítil fötunum - Point gildi 554 00:27:11,350 --> 00:27:13,460 milli núll og þremur og núll og fimm. 555 00:27:13,460 --> 00:27:17,800 Við reynum ekki að draga mjög gróft línur milli setur vandamál eða milli 556 00:27:17,800 --> 00:27:21,490 nemendur heldur einblína eins mikið og við getum á eigindlegum, longhand 557 00:27:21,490 --> 00:27:25,490 viðbrögð, annaðhvort tegund eða munnleg frá einkum kennslu náungi þinn, 558 00:27:25,490 --> 00:27:27,050 þú munt fá að vita nokkuð vel. 559 00:27:27,050 --> 00:27:32,340 >> En almennt, þá eru það þyngd að ýmsir ásar mun hafa. 560 00:27:32,340 --> 00:27:35,480 Á sama tíma, of er það þess virði að halda í huga að þú ættir ekki að gera ráð fyrir að 561 00:27:35,480 --> 00:27:38,870 þrjú af fimm er 60% og því u.þ.b. galli. 562 00:27:38,870 --> 00:27:41,410 Þrír er vísvitandi ætlað að vera konar miðjum veginum góða. 563 00:27:41,410 --> 00:27:43,480 Ef þú ert að fá threes á að upphafi misseris, sem er 564 00:27:43,480 --> 00:27:46,340 örugglega ætlað að vera góður staður til að byrja. 565 00:27:46,340 --> 00:27:50,510 Ef þú ætlar að fá twos, Kaup, það er örugglega sumir vinna til að borga smá 566 00:27:50,510 --> 00:27:53,250 meiri athygli, að nýta á köflum og Viðtalstímar. 567 00:27:53,250 --> 00:27:54,590 >> Ef þú ætlar að fá fjórum fótum og fives, frábært. 568 00:27:54,590 --> 00:27:57,430 En í raun, vonumst við til að sjá þróunarferil meðal nemenda - mjög 569 00:27:57,430 --> 00:28:00,575 einstaklingsbundið hvern nemanda, en byrja önn hér í einhverskonar 570 00:28:00,575 --> 00:28:04,100 tveir til þriggja svið en lýkur upp hér í 4-5 svið. 571 00:28:04,100 --> 00:28:05,440 Það er það sem við erum í raun að leita að. 572 00:28:05,440 --> 00:28:09,590 Og við hafa í huga að Delta sem þú sýna milli núll viku og viku 573 00:28:09,590 --> 00:28:12,170 12 þegar ég er að gera einkunnum. 574 00:28:12,170 --> 00:28:16,380 Það skiptir ekki máli fyrir okkur algerlega hvernig þú sanngjarn í upphafi ef þú 575 00:28:16,380 --> 00:28:19,330 braut er örugglega upp og sterk. 576 00:28:19,330 --> 00:28:24,000 >> Fræðilegum heiðarleika - svo látið mig setja á minn alvarlegri rödd fyrir réttlátur a augnablik. 577 00:28:24,000 --> 00:28:28,510 Svo hefur þetta auðvitað greinarmun á senda fleiri nemendur en nokkur annar 578 00:28:28,510 --> 00:28:30,950 í sögu við auglýsingu borð, tel ég. 579 00:28:30,950 --> 00:28:34,220 Við höfum konar glataður telja á þetta benda á hversu oft þetta gerist. 580 00:28:34,220 --> 00:28:37,090 Og það er ekki vegna þess að nemendur í 50 eru einhverjar fleiri óheiðarlegur en þeirra 581 00:28:37,090 --> 00:28:38,690 bekkjarfélagar víðar. 582 00:28:38,690 --> 00:28:42,800 En átta sig líka, að við erum mjög gott á uppgötvun þetta svoleiðis. 583 00:28:42,800 --> 00:28:45,920 >> Og er það kostur að tölvunarfræði bekknum hefur í að við 584 00:28:45,920 --> 00:28:49,110 getum og við bera alla nemendur Vandamálið setur par-vitur gegn hverjum 585 00:28:49,110 --> 00:28:51,470 öðrum, ekki aðeins í ár en öll fyrri ár. 586 00:28:51,470 --> 00:28:55,080 Við höfum getu, eins og nemendur í bekknum, Google og finna kóðann 587 00:28:55,080 --> 00:28:57,440 á síðum eins github og Umræðuhópar. 588 00:28:57,440 --> 00:29:00,840 Það eru algerlega lausnir er CS50 p-setur fljótandi í kringum það. 589 00:29:00,840 --> 00:29:02,710 En ef þú getur fundið þá, við getum fundið þá. 590 00:29:02,710 --> 00:29:07,130 Og allt þetta er mjög mikið sjálfvirk og auðvelt og sorglegt fyrir okkur að finna. 591 00:29:07,130 --> 00:29:10,990 >> En ég vil leggja áherslu á, líka, að bóknámsbrautir er heiðarleika stefna er 592 00:29:10,990 --> 00:29:13,960 mjög mikið ætlað að vera mjög mikið andstæða þess anda. 593 00:29:13,960 --> 00:29:17,506 Reyndar, á þessu ári sem við höfum uppá nýtt hlutina í kennsluáætlun að vera svona, punktur 594 00:29:17,506 --> 00:29:19,790 punktur punktur, með nánar í kennsluáætlun. 595 00:29:19,790 --> 00:29:22,860 En overarching þema í námskeiðinu raunverulega er að vera sanngjarn. 596 00:29:22,860 --> 00:29:26,160 Við viðurkennum að það er veruleg upphæð uppeldis 597 00:29:26,160 --> 00:29:30,550 gildi í samstarfi, að einhverju leyti, með bekkjarfélögum, þar sem þú 598 00:29:30,550 --> 00:29:33,700 tveir eða þú þrjú eða þú ert meira standa á hvítt borð 599 00:29:33,700 --> 00:29:35,670 whiteboarding, svo að tala, hugmyndir þínar - 600 00:29:35,670 --> 00:29:39,480 skrifa út sauðakóðanum í myndum, diagramming hvað ætti Mario að vera ef 601 00:29:39,480 --> 00:29:41,350 þú varst að skrifa það fyrst í sauðakóðanum. 602 00:29:41,350 --> 00:29:43,240 Hvað ætti gráðugur reiknirit - 603 00:29:43,240 --> 00:29:46,100 hvernig ætti það að hegða sér á vandamál setur einn? 604 00:29:46,100 --> 00:29:50,440 >> Og svo grein fyrir því að hegðun að við hvetjum er mjög 605 00:29:50,440 --> 00:29:51,470 mikið meðfram þeim línum. 606 00:29:51,470 --> 00:29:53,890 Og í kennsluáætlun, munt þú sjá a allt fullt af byssukúlum undir a 607 00:29:53,890 --> 00:29:57,740 sanngjarnt flokkur og ekki sanngjarnt flokkur sem hjálpar okkur að hjálpa 608 00:29:57,740 --> 00:30:00,740 þú sett huga þinn um hvar við draga þá línu. 609 00:30:00,740 --> 00:30:04,340 Og almennt, ágætis þumalputtaregla er að ef þú ert í erfiðleikum með að leysa 610 00:30:04,340 --> 00:30:07,990 sumir padda og vinur þinn eða bekkjarfélaga situr við hliðina á þér, er það 611 00:30:07,990 --> 00:30:11,530 sanngjarnt fyrir þig að sýna honum eða henni númerið þitt og segja, hey, þú getur hjálpað 612 00:30:11,530 --> 00:30:13,700 mig reikna út hvað er að gerast vitlaust hér? 613 00:30:13,700 --> 00:30:17,110 >> Við gerum ekki venjulega faðma hliðar. 614 00:30:17,110 --> 00:30:20,730 Það er ekki rétt svar fyrir þinn vinur eða bekkjarfélaga hér að segja, ó, 615 00:30:20,730 --> 00:30:22,510 bara líta á minn og reikna það út frá því. 616 00:30:22,510 --> 00:30:24,400 Það er tegund af óraunhæft. 617 00:30:24,400 --> 00:30:27,750 En að hafa einhvern annan, annar heila, annað par af augum líta á 618 00:30:27,750 --> 00:30:31,620 skjánum eða líta á kóðann þinn og segja, þú ert viss um að þú viljir 619 00:30:31,620 --> 00:30:32,760 til að hafa lykkju hér? 620 00:30:32,760 --> 00:30:34,800 Eða ertu viss um að þú viljir að semíkommu hér? 621 00:30:34,800 --> 00:30:37,090 Eða ó, að villuboð þýðir þetta. 622 00:30:37,090 --> 00:30:39,580 Þeir eru mjög eðlilegar og hvattir hegðun. 623 00:30:39,580 --> 00:30:44,010 >> Málin sem ég var alluding fyrr sjóða niður þegar nemendur eru 624 00:30:44,010 --> 00:30:47,350 seint á kvöldin að gera lélega dómgreind ákvarðanir og póst númer þeirra til 625 00:30:47,350 --> 00:30:50,130 einhver annar eða bara að segja, hér er það í Dropbox eða 626 00:30:50,130 --> 00:30:51,610 Googling seint á kvöldin. 627 00:30:51,610 --> 00:30:54,880 Og svo ég myndi hvetja og biðja þig um, ef þú ert þá óhjákvæmilegt 628 00:30:54,880 --> 00:30:58,450 stundir streitu, ert þú bumping upp gegn fresturinn, þarftu ekki seint 629 00:30:58,450 --> 00:31:01,490 dag þar sem það er nú þegar Föstudagur á að lið, email höfuð námskeiðið 'eða 630 00:31:01,490 --> 00:31:02,330 mig beint. 631 00:31:02,330 --> 00:31:04,790 Segja, hlusta, ég er á mínum brjóta lið hér. 632 00:31:04,790 --> 00:31:06,660 Skulum hafa samtal og reikna það út. 633 00:31:06,660 --> 00:31:10,400 Gripið er til á vefnum eða einhver annar ekki sanngjarnt hegðun er aldrei 634 00:31:10,400 --> 00:31:13,070 lausn, og of margir af þínum bekkjarfélagar eru ekki lengur hér á 635 00:31:13,070 --> 00:31:15,150 háskólasvæðinu af því lélega dómgreind. 636 00:31:15,150 --> 00:31:17,840 En það er mjög auðvelt að skirt þessi lína. 637 00:31:17,840 --> 00:31:22,950 >> Og hér er smá mynd til að hressa þú upp frá Reddit þannig að nú 638 00:31:22,950 --> 00:31:25,720 allt verður í lagi. 639 00:31:25,720 --> 00:31:30,210 >> Svo a fljótur ágrip, þá, þar sem við var horfið. 640 00:31:30,210 --> 00:31:33,690 Svo í síðustu viku, muna að við kynna aðstæður, ekki í grunni 641 00:31:33,690 --> 00:31:34,880 en í C þetta sinn. 642 00:31:34,880 --> 00:31:38,300 Og það var einhver nýr setningafræði en raun engar nýjar hugmyndir í sjálfu sér. 643 00:31:38,300 --> 00:31:42,630 Við höfðum Boolean tjáningu sem við gátum eða ásamt með tveimur lóðrétt 644 00:31:42,630 --> 00:31:46,490 barir eða og ásamt tveimur &-merkið og sagði að bæði vinstri 645 00:31:46,490 --> 00:31:49,990 og rétt verður að vera satt fyrir þetta að framkvæma. 646 00:31:49,990 --> 00:31:53,150 Þá höfðum við rofa, sem við skoðuðum á stutta stund, en ég leggja er mjög 647 00:31:53,150 --> 00:31:56,830 bara öðruvísi setningafræði til að ná því sams konar markmið ef þú veist í 648 00:31:56,830 --> 00:31:59,270 fram hvaða tilvik þín eru að fara að vera. 649 00:31:59,270 --> 00:32:00,160 >> Við leit á lykkjur. 650 00:32:00,160 --> 00:32:03,340 A for lykkja er kannski algengasta, eða að minnsta kosti eitt sem fólk 651 00:32:03,340 --> 00:32:05,330 yfirleitt ná til dragast. 652 00:32:05,330 --> 00:32:08,240 Jafnvel þó að það lítur svolítið dulinn, þú munt sjá marga, mörg dæmi um þetta 653 00:32:08,240 --> 00:32:11,590 áður en langur, sem þú hefur þegar seint í síðustu viku. 654 00:32:11,590 --> 00:32:14,280 Þó lykkjur getur sömuleiðis ná sama. 655 00:32:14,280 --> 00:32:17,550 En ef þú vilt gera allir incrementation eða uppfæra 656 00:32:17,550 --> 00:32:20,230 Gildi breytu, þú þarft að gera það meira handvirkt en 657 00:32:20,230 --> 00:32:22,440 fyrir lykkja gerir áður. 658 00:32:22,440 --> 00:32:25,310 Og þá er það ekki-en lykkja, sem gerir okkur kleift að gera eitthvað í 659 00:32:25,310 --> 00:32:28,460 amk einu sinni á meðan eitthvað annað er satt. 660 00:32:28,460 --> 00:32:31,550 Og þetta er sérstaklega gott fyrir forrit eða fyrir leiki þar sem þú vilt 661 00:32:31,550 --> 00:32:33,810 að hvetja notandann til eitthvað að minnsta kosti einu sinni. 662 00:32:33,810 --> 00:32:37,110 Og þá ef hann eða hún er ekki að vinna, þú might vilja til að gera það 663 00:32:37,110 --> 00:32:38,420 aftur og aftur. 664 00:32:38,420 --> 00:32:41,270 >> Með breytum, á meðan, við höfðum línur af kóða eins og þetta, sem gæti 665 00:32:41,270 --> 00:32:41,950 vera tvær línur. 666 00:32:41,950 --> 00:32:44,830 Þú gætir lýsa int heitir gegn, semíkommu. 667 00:32:44,830 --> 00:32:47,660 Eða þú getur bara lýsa og skilgreina hana, svo að segja. 668 00:32:47,660 --> 00:32:49,950 Gefa það a gildi á sama tíma. 669 00:32:49,950 --> 00:32:51,890 >> Og svo loks, talaði við um aðgerðir. 670 00:32:51,890 --> 00:32:54,270 Og þetta var ágætur dæmi í að því leyti að það sýnir 671 00:32:54,270 --> 00:32:55,840 tvær tegundir af störfum. 672 00:32:55,840 --> 00:32:59,030 Einn er GetString (), sem, aftur, fær a band frá notandanum. 673 00:32:59,030 --> 00:33:02,040 En GetString () er eins konar áhugavert, svo miklu leyti sem við höfum notað það, 674 00:33:02,040 --> 00:33:05,620 vegna þess að við höfum alltaf notað það með eitthvað á the vinstri-hönd hlið af óákveðinn greinir í ensku 675 00:33:05,620 --> 00:33:06,600 jafn skilti. 676 00:33:06,600 --> 00:33:09,830 Það er að segja að GetString () skilar gildi. 677 00:33:09,830 --> 00:33:11,970 Það skilar auðvitað streng. 678 00:33:11,970 --> 00:33:15,130 Og þá á the vinstri-hönd hlið, við erum einfaldlega sparnaður að streng inni í 679 00:33:15,130 --> 00:33:16,580 breytu nefndi. 680 00:33:16,580 --> 00:33:21,100 >> Þetta er öðruvísi, í vissum skilningi, frá printf vegna printf, amk í okkar 681 00:33:21,100 --> 00:33:23,540 notkun hér, ekki aftur neitt. 682 00:33:23,540 --> 00:33:24,960 Sem innskot, er það aftur eitthvað. 683 00:33:24,960 --> 00:33:26,380 Við bara alveg sama hvað það er. 684 00:33:26,380 --> 00:33:29,090 En það er það sem er kallað aukaverkun. 685 00:33:29,090 --> 00:33:31,840 Og hvað er að aukaverkun í hverjum Ef við höfum séð hingað til? 686 00:33:31,840 --> 00:33:34,720 Hvað þýðir printf gera? 687 00:33:34,720 --> 00:33:37,780 Það prentar eitthvað á skjáinn, birtir texta eða tölur eða eitthvað 688 00:33:37,780 --> 00:33:38,380 á skjánum. 689 00:33:38,380 --> 00:33:41,170 Og það er bara talin aukaverkun því það er í raun ekki fötlun 690 00:33:41,170 --> 00:33:41,900 það aftur til mín. 691 00:33:41,900 --> 00:33:44,770 Það er ekki svar innan þess svartur kassi sem ég get þá 692 00:33:44,770 --> 00:33:46,130 ná í og ​​grípa. 693 00:33:46,130 --> 00:33:49,160 Það er bara að gera það á eigin, þess mikið eins Colton var tengt inn þetta 694 00:33:49,160 --> 00:33:52,560 svartur kassi í síðustu viku, og hann einhvern veginn dularfullur var að teikna á töfluna 695 00:33:52,560 --> 00:33:54,500 án mín í raun þátt. 696 00:33:54,500 --> 00:33:55,560 Það væri aukaverkun. 697 00:33:55,560 --> 00:33:59,100 En ef ég hefði reyndar að ná aftur í hér og segja, ó, hér er strengurinn 698 00:33:59,100 --> 00:34:02,040 frá notanda, sem myndi vera skilagildi. 699 00:34:02,040 --> 00:34:05,650 >> Og svona langt að við höfum aðeins notað virka sem aðrir hafa skrifað. 700 00:34:05,650 --> 00:34:09,219 En við getum í raun gert þetta konar hlutum sjálf. 701 00:34:09,219 --> 00:34:12,730 Þannig að ég ætla að fara inn í CS50 tæki aftur. 702 00:34:12,730 --> 00:34:16,020 Leyfðu mér að loka the flipi sem við hafði opna fyrir augnabliki. 703 00:34:16,020 --> 00:34:18,530 Og láta mig fara á undan og búa til nýja skrá. 704 00:34:18,530 --> 00:34:22,400 Og ég ætla að fara á undan og kalla þetta einn positive.c. 705 00:34:22,400 --> 00:34:24,770 Svo ég vil gera eitthvað með jákvæðar tölur hér. 706 00:34:24,770 --> 00:34:27,219 Þannig að ég ætla að fara á undan og gera int - 707 00:34:27,219 --> 00:34:28,000 Því miður - 708 00:34:28,000 --> 00:34:31,840 # Include. 709 00:34:31,840 --> 00:34:34,280 Við skulum ekki gera það sama mistök eins og áður. 710 00:34:34,280 --> 00:34:40,020 Int helstu (tóm), opin hrokkið borsveif, lokað hrokkið Brace. 711 00:34:40,020 --> 00:34:41,639 >> Og nú vil ég að gera eftirfarandi. 712 00:34:41,639 --> 00:34:44,600 Ég vil skrifa forrit sem krefst þess að notandinn gefur 713 00:34:44,600 --> 00:34:46,770 mig jákvæða heiltölu. 714 00:34:46,770 --> 00:34:50,969 Svo það er engin GetPositiveInt virka í CS50 bókasafn. 715 00:34:50,969 --> 00:34:52,610 Það er bara GetInt (). 716 00:34:52,610 --> 00:34:55,790 En það er allt í lagi vegna þess að ég hef býr sem ég get leggja 717 00:34:55,790 --> 00:34:59,360 lítið meira þvingun á þessi gildi. 718 00:34:59,360 --> 00:35:00,990 Ég gæti gert eitthvað eins og this. 719 00:35:00,990 --> 00:35:02,780 >> Svo int n - 720 00:35:02,780 --> 00:35:04,920 og ef þú ert að skrifa eftir, bara átta Ég ætla að fara til baka og 721 00:35:04,920 --> 00:35:06,430 breyta einhverjum hlutum í augnablikinu - 722 00:35:06,430 --> 00:35:09,960 svo jafnt int n GetInt (). 723 00:35:09,960 --> 00:35:11,780 Og það er að fara að setja int inni n. 724 00:35:11,780 --> 00:35:13,830 Og láta mig vera meira lýsandi. 725 00:35:13,830 --> 00:35:23,270 Leyfðu mér að segja eitthvað eins og ég krefjast þess að þú gefur mér jákvæð heiltala. 726 00:35:23,270 --> 00:35:23,550 >> Allt í lagi. 727 00:35:23,550 --> 00:35:25,250 Svo bara smá leiðbeiningar. 728 00:35:25,250 --> 00:35:26,270 Og nú hvað get ég gert? 729 00:35:26,270 --> 00:35:29,840 Jæja, ég veit nú þegar frá einföldum minn skilyrði eða útibú, bara eins og ég 730 00:35:29,840 --> 00:35:36,100 hafði í grunni, gæti ég sagt eitthvað eins og ef n er minna en eða jafnt og 731 00:35:36,100 --> 00:35:44,460 núll, þá vil ég gera eitthvað eins og, sem er ekki jákvæð. 732 00:35:44,460 --> 00:35:45,560 Og þá gæti ég gert - 733 00:35:45,560 --> 00:35:47,310 OK, en ég vil endilega fá að int. 734 00:35:47,310 --> 00:35:52,020 Svo ég gæti farið upp hér og ég gat góður af afrita þetta og undirlið þetta. 735 00:35:52,020 --> 00:35:52,570 Og þá, OK. 736 00:35:52,570 --> 00:35:56,990 Þannig að ef n er minna en eða jöfn núlli að gera þetta. 737 00:35:56,990 --> 00:35:58,900 >> Nú, hvað ef notandinn ekki vinna? 738 00:35:58,900 --> 00:36:01,560 Jæja, þá ætla ég að láni þetta hér. 739 00:36:01,560 --> 00:36:03,130 Og þá fer ég hér og hér og hér. 740 00:36:03,130 --> 00:36:06,420 Svo er þetta greinilega ekki lausnin, ekki satt? 741 00:36:06,420 --> 00:36:07,810 Vegna þess að það er enginn endir í sjónmáli. 742 00:36:07,810 --> 00:36:13,100 Ef ég vil krefjast þess að notandi gefur mér jákvæð heiltala, get ég 743 00:36:13,100 --> 00:36:14,150 reyndar fá int. 744 00:36:14,150 --> 00:36:15,620 Ég get þá stöðva fyrir þessi int. 745 00:36:15,620 --> 00:36:18,570 En þá vil ég athuga það aftur og athuga það aftur og athuga það aftur. 746 00:36:18,570 --> 00:36:21,680 Svo augljóslega, hvað er betra reisa að vera með hér? 747 00:36:21,680 --> 00:36:22,840 Allt í lagi, svo einhvers konar lykkju. 748 00:36:22,840 --> 00:36:25,430 >> Þannig að ég ætla að losna tæplega þetta allt. 749 00:36:25,430 --> 00:36:27,320 Og ég vil fá þetta int minnsta kosti einu sinni. 750 00:36:27,320 --> 00:36:28,890 Þannig að ég ætla að segja að gera - 751 00:36:28,890 --> 00:36:32,110 og ég ætla að koma aftur til en á aðeins augnablik - 752 00:36:32,110 --> 00:36:33,050 nú, að gera hvað? 753 00:36:33,050 --> 00:36:35,860 Ég ætla að gera int n fær GetInt (). 754 00:36:35,860 --> 00:36:36,080 OK. 755 00:36:36,080 --> 00:36:37,250 Svo er það mjög gott. 756 00:36:37,250 --> 00:36:39,750 Og nú hvernig oft gera Ég vil gera þetta? 757 00:36:39,750 --> 00:36:45,770 >> Leyfðu mér að setja printf inni í lykkju svo ég geti krafist aftur og aftur, 758 00:36:45,770 --> 00:36:46,740 ef þörf krefur. 759 00:36:46,740 --> 00:36:49,720 Og hvað ég vil þetta en skilyrði til að gera? 760 00:36:49,720 --> 00:36:53,870 Ég vil halda þessu en hvað er málið? 761 00:36:53,870 --> 00:36:54,125 Já. 762 00:36:54,125 --> 00:36:55,390 N er minna en eða jafn og núll. 763 00:36:55,390 --> 00:36:58,180 Svo þegar, höfum við verulega hreinsa þennan kóða upp. 764 00:36:58,180 --> 00:37:00,700 Við höfum fengið að láni mjög einfalt reisa - gera-en lykkja. 765 00:37:00,700 --> 00:37:04,690 Ég hef stolið bara mikilvægt línur af kóða sem ég byrjaði að afrita og 766 00:37:04,690 --> 00:37:05,960 líma, sem var ekki skynsamlegt. 767 00:37:05,960 --> 00:37:09,790 Og svo núna er ég að fara til raunverulega líma það hér og bara gera það einu sinni. 768 00:37:09,790 --> 00:37:12,990 >> Og nú hvað ég vil gera í mjög lok þessa áætlun? 769 00:37:12,990 --> 00:37:16,810 Ég verð bara að segja eitthvað einfalt eins, takk fyrir - og 770 00:37:16,810 --> 00:37:18,980 Ég geri% i fyrir int - 771 00:37:18,980 --> 00:37:23,270 sviga n, komma, og þá stinga í n, semíkommu. 772 00:37:23,270 --> 00:37:23,910 >> Allt í lagi. 773 00:37:23,910 --> 00:37:27,290 Svo skulum sjá hvað gerist núna þegar ég keyra þetta forrit. 774 00:37:27,290 --> 00:37:30,600 Ég ætla að fara á undan og gera jákvætt. 775 00:37:30,600 --> 00:37:30,880 Fjandinn. 776 00:37:30,880 --> 00:37:31,600 Nokkrar villur. 777 00:37:31,600 --> 00:37:32,960 Svo láta mig fletta aftur upp til fyrsta. 778 00:37:32,960 --> 00:37:34,020 Ekki vinna með þeim aftur. 779 00:37:34,020 --> 00:37:37,000 Vinna með þeim úr efstu niður svo þeir Cascade og aðeins 780 00:37:37,000 --> 00:37:38,630 eitt rangt. 781 00:37:38,630 --> 00:37:42,532 Óbeina yfirlýsingu um virka GetInt (). 782 00:37:42,532 --> 00:37:43,020 Já. 783 00:37:43,020 --> 00:37:44,420 Svo það var ekki nóg. 784 00:37:44,420 --> 00:37:46,760 Ég gerði eins konar sömu mistök en svolítið öðruvísi að þessu sinni. 785 00:37:46,760 --> 00:37:51,940 Ég þarf að ekki aðeins innihalda stdio.h en einnig cs50.h, sem felur í sér 786 00:37:51,940 --> 00:37:56,770 svokölluð yfirlýsingar um að fá int, sem kenna á þvottavélinni, eða kennir 787 00:37:56,770 --> 00:37:58,760 C hvað GetInt () er. 788 00:37:58,760 --> 00:37:59,550 >> Svo láta mig vistað póstinn. 789 00:37:59,550 --> 00:38:02,040 Ég ætla að hunsa aðrar villur vegna þess að ég ætla að vona að þær séu 790 00:38:02,040 --> 00:38:05,210 einhvern veginn tengjast villa Ég fastur þegar. 791 00:38:05,210 --> 00:38:08,710 Svo láta mig fara á undan og laun með gera jákvætt, Enter. 792 00:38:08,710 --> 00:38:09,020 Fjandinn. 793 00:38:09,020 --> 00:38:09,985 Þrjár villur, enn. 794 00:38:09,985 --> 00:38:12,650 Leyfðu mér að fletta upp til fyrsta. 795 00:38:12,650 --> 00:38:14,320 Ónotaðar breyta n. 796 00:38:14,320 --> 00:38:15,850 Við höfum ekki séð þetta áður. 797 00:38:15,850 --> 00:38:17,200 Og þetta líka, er svolítið dulinn. 798 00:38:17,200 --> 00:38:18,850 Þetta er the framleiðsla af the þýðanda. 799 00:38:18,850 --> 00:38:23,610 Og hvað sem hápunktur lína þar - positive.c :9:13 - 800 00:38:23,610 --> 00:38:28,960 er að segja, það er að segja á línu níu positive.c, á 13. staf, 801 00:38:28,960 --> 00:38:31,510 13. dálki, gerði þér þetta mistök. 802 00:38:31,510 --> 00:38:34,230 >> Og einkum, er það að segja mig ónotaður breyta n. 803 00:38:34,230 --> 00:38:35,790 Svo skulum sjá - 804 00:38:35,790 --> 00:38:37,150 lína níu. 805 00:38:37,150 --> 00:38:40,430 Ég er að nota N í þeim skilningi að Ég ætla að gefa það a gildi. 806 00:38:40,430 --> 00:38:44,200 En hvað þýðandinn er ekki eins og er að ég er ekki að því er virðist að nota það. 807 00:38:44,200 --> 00:38:45,560 En bíddu í eina mínútu, ég er með það. 808 00:38:45,560 --> 00:38:48,170 Í samræmi 11, ég er að nota það hér. 809 00:38:48,170 --> 00:38:52,430 En ef ég skruna niður frekar á positive.c :11 - 810 00:38:52,430 --> 00:38:56,230 svo á línu 11, eðli 12, þýðanda er að segja mér, notkun 811 00:38:56,230 --> 00:38:58,670 undeclared Auðkenni n. 812 00:38:58,670 --> 00:39:02,760 >> Svo undeclared þýðir að ég hef ekki tilgreint það sem 813 00:39:02,760 --> 00:39:04,970 breytu með gögn tegund. 814 00:39:04,970 --> 00:39:05,500 En bíddu í eina mínútu. 815 00:39:05,500 --> 00:39:09,150 Ég gerði einmitt það í línu níu. 816 00:39:09,150 --> 00:39:11,100 Svo einhver er virkilega ruglaður hér. 817 00:39:11,100 --> 00:39:14,900 Það er annað hvort ég eða þýðanda vegna í samræmi níu, aftur, ég lýsa yfir 818 00:39:14,900 --> 00:39:18,650 int n, og ég er að framselja það skilagildi GetInt (). 819 00:39:18,650 --> 00:39:22,930 Þá er ég að nota þá breytu n í takt 11 og athuga hvort gildi þess er minni 820 00:39:22,930 --> 00:39:24,050 en eða jafnt og núll. 821 00:39:24,050 --> 00:39:27,430 En þetta er greinilega slæmt og brotinn hvers vegna? 822 00:39:27,430 --> 00:39:30,630 823 00:39:30,630 --> 00:39:32,490 Segja það aftur? 824 00:39:32,490 --> 00:39:35,690 >> Æ, ég verð að lýsa N áður inn í lykkju. 825 00:39:35,690 --> 00:39:36,370 En hvers vegna? 826 00:39:36,370 --> 00:39:39,830 Ég meina, lagt við bara svolítið síðan að það er allt í lagi að lýsa breytum 827 00:39:39,830 --> 00:39:43,600 allt á einni línu og þá úthluta þeim sum gildi. 828 00:39:43,600 --> 00:39:46,790 A Global breyta - við skulum koma aftur til að hugmynd í aðeins augnablik. 829 00:39:46,790 --> 00:39:48,690 Hvers vegna viltu að ég að setja það utan lykkju? 830 00:39:48,690 --> 00:40:03,170 831 00:40:03,170 --> 00:40:03,830 Það er. 832 00:40:03,830 --> 00:40:06,780 Einmitt. 833 00:40:06,780 --> 00:40:09,610 >> Svo, að vísu, nokkuð counterintuitive, Leyfðu mér að draga. 834 00:40:09,610 --> 00:40:13,510 Þegar þú lýsa n inni af blokk þarna - 835 00:40:13,510 --> 00:40:16,320 sérstaklega innan þá hrokkið axlabönd - 836 00:40:16,320 --> 00:40:19,210 að breyta n hefur hvað er kallað Umfang - 837 00:40:19,210 --> 00:40:23,210 óskyld sindur kerfi okkar í námskeið - en hefur svigrúm sem er 838 00:40:23,210 --> 00:40:25,190 takmörkuð við þá hrokkið axlabönd. 839 00:40:25,190 --> 00:40:28,460 Með öðrum orðum, yfirleitt ef þú lýsa breytu inni a setja af 840 00:40:28,460 --> 00:40:33,370 hrokkið axlabönd, að breyta til aðeins inni af þeim hrokkið axlabönd. 841 00:40:33,370 --> 00:40:37,320 Svo eftir að rökfræði einn, jafnvel þótt Ég hef lýst N í línu níu, það 842 00:40:37,320 --> 00:40:41,910 raun hverfur úr umfangi, hverfur úr minni, svo að segja, 843 00:40:41,910 --> 00:40:43,370 Þegar ég högg línu 11. 844 00:40:43,370 --> 00:40:47,370 Vegna lína 11, því miður er utan þessara hrokkið axlabönd. 845 00:40:47,370 --> 00:40:51,540 >> Svo ég því miður ekki hægt að laga þetta með því að fara aftur að því sem ég gerði það áður. 846 00:40:51,540 --> 00:40:53,370 Þú gætir á fyrst að gera þetta. 847 00:40:53,370 --> 00:40:56,370 En hvað ert þú nú ekki gera hagsveiflu? 848 00:40:56,370 --> 00:40:58,260 Þú ert augljóslega ekki að fá The int hagsveiflu. 849 00:40:58,260 --> 00:41:01,320 Svo við getum yfirgefa GetInt (), og við ætti yfirgefa GetInt () inni 850 00:41:01,320 --> 00:41:04,420 lykkja því það er það sem við viljum pester notanda fyrir aftur og aftur. 851 00:41:04,420 --> 00:41:08,660 En það er nægja til að fara allt að línu, segja, sex. 852 00:41:08,660 --> 00:41:10,150 Int n, semíkommu. 853 00:41:10,150 --> 00:41:12,990 Ekki gefa það a gildi enn vegna þess þú þarft ekki að strax. 854 00:41:12,990 --> 00:41:16,220 >> En nú niður hér, tilkynning - þetta væri mjög auðvelt mistök. 855 00:41:16,220 --> 00:41:19,440 Ég vil ekki að skuggi fyrri minn yfirlýsing um n. 856 00:41:19,440 --> 00:41:22,830 Ég vil nota n að raun er til staðar. 857 00:41:22,830 --> 00:41:25,780 Og svo nú í línu 10, Ég tengt n gildi. 858 00:41:25,780 --> 00:41:28,580 En í takt sex, lýsa ég n. 859 00:41:28,580 --> 00:41:32,940 Og svo get ég eða get ég ekki nota það í línu 12 núna? 860 00:41:32,940 --> 00:41:37,120 Ég get því milli sem hrokkið axlabönd er n lýst núna? 861 00:41:37,120 --> 00:41:38,770 Sá upp hér á línu fimm. 862 00:41:38,770 --> 00:41:40,330 Við einn hér á 14. línu. 863 00:41:40,330 --> 00:41:49,770 Þannig að ef ég súmma nú út, vista þessa skrá, fara aftur inn og hlaupa gera jákvætt, það 864 00:41:49,770 --> 00:41:50,820 saman að þessu sinni. 865 00:41:50,820 --> 00:41:51,940 Svo er það nú þegar framfarir. 866 00:41:51,940 --> 00:41:53,640 Rista. . / Jákvætt, Enter. 867 00:41:53,640 --> 00:41:56,060 >> Ég krefst að þú gefa mér jákvæð heiltala. 868 00:41:56,060 --> 00:41:57,750 Neikvætt 1. 869 00:41:57,750 --> 00:41:59,020 Neikvætt 2. 870 00:41:59,020 --> 00:42:00,680 Neikvætt 3. 871 00:42:00,680 --> 00:42:01,760 Núll. 872 00:42:01,760 --> 00:42:03,000 Einn. 873 00:42:03,000 --> 00:42:05,130 Og takk fyrir einn er hvað er nú prentuð. 874 00:42:05,130 --> 00:42:07,400 >> Leyfðu mér að reyna eitthvað annað, út af forvitni. 875 00:42:07,400 --> 00:42:09,600 Ég hef verið sagt að inntak heiltala. 876 00:42:09,600 --> 00:42:12,870 En hvað ef ég tegund í staðinn í lamb? 877 00:42:12,870 --> 00:42:14,460 Svo þú sérð nú öðruvísi hvetja - 878 00:42:14,460 --> 00:42:15,350 reyna aftur. 879 00:42:15,350 --> 00:42:17,670 En hvergi í númerið mitt gerði ég skrifa retry. 880 00:42:17,670 --> 00:42:22,320 Svo þar, væntanlega er þetta reyna aftur hvetja að koma frá, myndir þú segja? 881 00:42:22,320 --> 00:42:23,540 Já, frá GetInt () sjálft. 882 00:42:23,540 --> 00:42:26,650 Svo eitt af því sem starfsfólk CS50 nær fyrir þig, að minnsta kosti í þessir fyrstu 883 00:42:26,650 --> 00:42:30,400 vikur, er að við höfum skrifað talsverða af villa stöðva til að tryggja að ef 884 00:42:30,400 --> 00:42:34,260 þú kallar GetInt (), verður þú að minnsta kosti komast aftur við int frá notandanum. 885 00:42:34,260 --> 00:42:35,460 Þú munt ekki fá a band. 886 00:42:35,460 --> 00:42:36,440 Þú munt ekki fá bleikju. 887 00:42:36,440 --> 00:42:39,660 Þú munt ekki fá eitthvað annars að öllu leyti. 888 00:42:39,660 --> 00:42:40,510 Þú munt fá int. 889 00:42:40,510 --> 00:42:41,890 >> Nú, gæti það ekki verið jákvætt. 890 00:42:41,890 --> 00:42:42,770 Það gæti ekki verið neikvæð. 891 00:42:42,770 --> 00:42:44,550 Við gerum engar ábyrgðir í kringum það. 892 00:42:44,550 --> 00:42:48,960 En við munum pester notandi til að reyna aftur, reyna, reyna fyrr en hann eða hún raunverulega 893 00:42:48,960 --> 00:42:49,810 samstarf. 894 00:42:49,810 --> 00:42:53,085 Sama hátt, ef ég 1,23, það er ekki int. 895 00:42:53,085 --> 00:42:58,400 En ef ég tegund í, segjum, 50, sem gefur mér gildi sem ég vildi. 896 00:42:58,400 --> 00:42:59,050 >> Allt í lagi. 897 00:42:59,050 --> 00:43:01,380 Svo ekki slæmt. 898 00:43:01,380 --> 00:43:04,780 Einhverjar spurningar um hvað við höfum bara gert? 899 00:43:04,780 --> 00:43:07,930 Lykillinn takeaway vera, að vera skýr, ekki svo mikið að lykkja, sem við höfum séð 900 00:43:07,930 --> 00:43:10,880 áður jafnvel þó að við höfum í raun ekki notað það, en málið umfangi, þar 901 00:43:10,880 --> 00:43:17,045 breytur er einungis hægt að aðeins hægt að nota á næstunni tiltekins gildissvið. 902 00:43:17,045 --> 00:43:19,830 >> Allt í lagi, láttu mig taka tillögu þú gerðir áðan, að um 903 00:43:19,830 --> 00:43:20,860 Global breyta. 904 00:43:20,860 --> 00:43:24,880 Sem innskot, snýr það út að annar lausn á þessu vandamáli, en 905 00:43:24,880 --> 00:43:28,880 yfirleitt rangt lausn eða illa hannað lausn, er að 906 00:43:28,880 --> 00:43:31,670 lýsa breytu eins hvað er kallað Global breyta. 907 00:43:31,670 --> 00:43:34,610 Nú er ég eins konar brot skilgreiningu mína af umfangi því það eru 908 00:43:34,610 --> 00:43:37,680 engin hrokkið axlabönd efst og mjög neðst á skránni. 909 00:43:37,680 --> 00:43:40,190 En vísbendingu um að er að nú í takt fjórum, 910 00:43:40,190 --> 00:43:41,710 n er alþjóðlegt breytu. 911 00:43:41,710 --> 00:43:44,460 Og eins og nafnið gefur til kynna, það er bara alls staðar aðgengilegt. 912 00:43:44,460 --> 00:43:45,790 >> Scratch hefur í raun þessir. 913 00:43:45,790 --> 00:43:48,650 Ef þú notaðir breytu, þú might muna þú þurftir að velja ef það er fyrir 914 00:43:48,650 --> 00:43:50,780 þennan Sprite eða alla sprites. 915 00:43:50,780 --> 00:43:54,270 Jæja, allir sprites er bara skýrari leið til að segja alþjóðlegt. 916 00:43:54,270 --> 00:43:55,520 Já? 917 00:43:55,520 --> 00:44:09,690 918 00:44:09,690 --> 00:44:10,990 Ah, mjög góð spurning. 919 00:44:10,990 --> 00:44:14,310 >> Svo muna að í fyrstu útgáfu á númerið mitt, þegar ég rangt 920 00:44:14,310 --> 00:44:17,700 lýst og skilgreint n í línu níu - 921 00:44:17,700 --> 00:44:19,980 Ég lýsti því sem breytu og ég gaf það gildi með 922 00:44:19,980 --> 00:44:21,160 framsal rekstraraðila - 923 00:44:21,160 --> 00:44:22,520 þetta gaf mér tvo villur. 924 00:44:22,520 --> 00:44:26,560 One, þá staðreynd að n var ekki notað, og tveir, sem í línu 11 925 00:44:26,560 --> 00:44:27,770 það var bara ekki lýst. 926 00:44:27,770 --> 00:44:31,120 Svo fyrsta sem ég gerði ekki heimilisfang á þeim tíma. 927 00:44:31,120 --> 00:44:35,130 Það er ekki stranglega villa að lýsa breytu en ekki nota það. 928 00:44:35,130 --> 00:44:38,540 En eitt af því sem við höfum gert í The CS50 tæki, vísvitandi, 929 00:44:38,540 --> 00:44:43,340 pedagogically er við höfum sveif upp væntingar þýðanda að gera 930 00:44:43,340 --> 00:44:46,970 viss um að þú ert að gera hlutina ekki bara rétt en í raun rétt. 931 00:44:46,970 --> 00:44:51,520 >> Vegna þess að ef þú ert að lýsa yfir breytu eins n og aldrei nota það, eða nota það 932 00:44:51,520 --> 00:44:53,700 rétt, hvað þá er það að gera þarna? 933 00:44:53,700 --> 00:44:55,650 Það þjónar sannarlega ekki tilgangi. 934 00:44:55,650 --> 00:44:58,980 Og það er mjög auðvelt með tímanum, ef þú stilla ekki eiga tölvuna í 935 00:44:58,980 --> 00:45:01,960 Þannig, að bara hafa númer sem hefur litlu leifar hér, leifar þar. 936 00:45:01,960 --> 00:45:04,390 Og þá mánuðum seinna þú lítur til baka og þú ert eins og, af hverju er þessi lína af 937 00:45:04,390 --> 00:45:05,060 númer þar? 938 00:45:05,060 --> 00:45:07,940 Og ef það er engin góð ástæða, það ekki gagnast þér eða samstarfsfólk þitt 939 00:45:07,940 --> 00:45:10,650 niður veginn til að hrasa yfir það þá. 940 00:45:10,650 --> 00:45:12,540 >> Sem innskot, þar er að koma frá? 941 00:45:12,540 --> 00:45:16,410 Jæja, muna að í hvert skipti sem við safna saman program, allt þetta efni er 942 00:45:16,410 --> 00:45:17,380 verið að prenta. 943 00:45:17,380 --> 00:45:18,350 Þannig að við munum koma aftur til þetta. 944 00:45:18,350 --> 00:45:22,230 En aftur, gera er a gagnsemi þessi sjálfvirkan the aðferð af gerð af 945 00:45:22,230 --> 00:45:24,830 keyra raunverulegan þýðanda kallað clang. 946 00:45:24,830 --> 00:45:27,650 Þessi hlutur, munum við loksins sjá, hefur að gera með kembiforrit með sérstöku 947 00:45:27,650 --> 00:45:29,060 forrit sem heitir aflúsara. 948 00:45:29,060 --> 00:45:32,150 Þetta hefur að gera með hagræðingu í númer - meira um það í framtíðinni. 949 00:45:32,150 --> 00:45:33,620 Std = c99 - 950 00:45:33,620 --> 00:45:37,870 þetta þýðir bara að nota 1999 útgáfuna af C. C hefur verið í kringum jafnvel lengur en 951 00:45:37,870 --> 00:45:40,830 að, en þeir gerðu sumir ágætur breytingar 10 plús ár síðan. 952 00:45:40,830 --> 00:45:42,690 >> Og hér er viðeigandi sjálfur. 953 00:45:42,690 --> 00:45:45,880 Við erum að segja að eitthvað sem áður hefði verið viðvörun 954 00:45:45,880 --> 00:45:48,560 villu veg nemandanum frá söfnun. 955 00:45:48,560 --> 00:45:51,400 Og veggur þýðir að gera það fyrir allt fullt af hlutum, ekki 956 00:45:51,400 --> 00:45:53,060 bara tengjast breytum. 957 00:45:53,060 --> 00:45:54,700 Og þá láta mig fletta að í lok þessa línu. 958 00:45:54,700 --> 00:45:56,430 Og þetta líka, munum við að lokum koma aftur til. 959 00:45:56,430 --> 00:45:59,040 Þetta er augljóslega nafn skráin ég saman. 960 00:45:59,040 --> 00:46:02,160 Þetta minnir á nafnið á skránni Ég outputting eins og nafnið 961 00:46:02,160 --> 00:46:04,070 af runnable áætlun mína. 962 00:46:04,070 --> 00:46:08,970 Þetta-lcs50 þýðir bara að nota CS50 bókasafn, og allir núll og sjálfur að 963 00:46:08,970 --> 00:46:12,390 starfsfólk skrifaði og saman fyrr á þessu ári, samþætta 964 00:46:12,390 --> 00:46:13,490 þá inn í áætlun mína. 965 00:46:13,490 --> 00:46:16,130 >> Og einhver veit hvað-LM er? 966 00:46:16,130 --> 00:46:18,150 Það er stærðfræði bókasafn, sem er bara þarna jafnvel ef þú ert 967 00:46:18,150 --> 00:46:19,320 ekki gera neina stærðfræði. 968 00:46:19,320 --> 00:46:22,620 Það er bara sjálfkrafa veitt okkur með að gera. 969 00:46:22,620 --> 00:46:26,540 >> Jæja, láttu mig gera eitt annað dæmi hér með að opna nýja skrá. 970 00:46:26,540 --> 00:46:30,560 Og láta mig spara þetta einn eins string.c. 971 00:46:30,560 --> 00:46:37,980 Það kemur í ljós að þegar við tölum um gögn gerðir í dag, það er jafnvel meira 972 00:46:37,980 --> 00:46:40,630 fara á undir hetta en við höfum séð hingað til. 973 00:46:40,630 --> 00:46:42,290 Svo láta mig gera fljótlega fljótur program. 974 00:46:42,290 --> 00:46:44,510 Hafa stdio.h. 975 00:46:44,510 --> 00:46:45,730 Og ég spara það. 976 00:46:45,730 --> 00:46:48,110 Og þú veist, láttu mig ekki gera sömu mistök aftur og aftur. 977 00:46:48,110 --> 00:46:50,540 Hafa cs50.h. 978 00:46:50,540 --> 00:46:54,870 Og láta mig fara á undan nú og gera int helstu (tóm). 979 00:46:54,870 --> 00:46:58,790 >> Og nú vil ég bara að gera áætlun sem gerir þetta - lýsa streng 980 00:46:58,790 --> 00:47:03,610 kallað s og fá band frá notandanum. 981 00:47:03,610 --> 00:47:05,820 Og láta mig gera a lítill leiðbeiningar hér - 982 00:47:05,820 --> 00:47:09,960 vinsamlegast gefa mér band - svo notandinn veit hvað á að gera. 983 00:47:09,960 --> 00:47:13,190 Og svo hérna fyrir neðan þetta, Ég vil gera eftirfarandi - 984 00:47:13,190 --> 00:47:16,060 fyrir int i fær núll. 985 00:47:16,060 --> 00:47:18,580 Aftur, tölvunarfræðingar yfirleitt byrja að telja á núlli, en við gátum 986 00:47:18,580 --> 00:47:20,340 gera það einn ef við vildum virkilega. 987 00:47:20,340 --> 00:47:27,240 Nú ætla ég að gera ég er minna en band lengd s. 988 00:47:27,240 --> 00:47:28,430 Svo strlen - 989 00:47:28,430 --> 00:47:29,510 S-T-R-L-E-N - 990 00:47:29,510 --> 00:47:31,650 aftur er það nákvæm vegna þess að það er auðveldara að slá, jafnvel þó að það er 991 00:47:31,650 --> 00:47:32,590 lítið dulinn. 992 00:47:32,590 --> 00:47:35,290 >> Það er hlutverk sem við höfum ekki notað áður en bókstaflega þýðir að - 993 00:47:35,290 --> 00:47:37,810 aftur til mín númer sem sýnir lengd strengsins 994 00:47:37,810 --> 00:47:38,690 að notandinn slegið inn. 995 00:47:38,690 --> 00:47:41,740 Ef þeir slegið í halló, það myndi skila fimm vegna þess að það er fimm 996 00:47:41,740 --> 00:47:42,890 bréf í halló. 997 00:47:42,890 --> 00:47:45,390 Þá, á hverjum endurtekning á Þessi lykkja, ég plús plús. 998 00:47:45,390 --> 00:47:49,170 Svo aftur, a staðall smíða jafnvel þótt þú ert ekki alveg of þægilegt eða 999 00:47:49,170 --> 00:47:50,420 þekkja það enn. 1000 00:47:50,420 --> 00:47:53,220 >> En nú á hverri ítrun þessarar lykkju, taka eftir hvað ég ætla að gera. 1001 00:47:53,220 --> 00:47:56,690 Ég vil fara á undan og prenta út einn staf - 1002 00:47:56,690 --> 00:47:59,940 svo% C sviga n á nýja línu. 1003 00:47:59,940 --> 00:48:00,990 Og þá, þú veist hvað ég vil gera? 1004 00:48:00,990 --> 00:48:05,090 Hvað er orðið að notandinn slær í, eins og halló, ég vil að prenta 1005 00:48:05,090 --> 00:48:09,530 H-E-L-L-O, einn staf í hverja línu. 1006 00:48:09,530 --> 00:48:13,080 Með öðrum orðum, ég vil fá á einstakir bókstafir í streng, 1007 00:48:13,080 --> 00:48:16,770 þar allt þar til nú strengur hefur bara verið röð af stöfum. 1008 00:48:16,770 --> 00:48:21,690 >> Og það kemur í ljós ég get gert s, krappi, i, loka krappi, loka 1009 00:48:21,690 --> 00:48:23,580 sviga, semíkommu. 1010 00:48:23,580 --> 00:48:25,640 Og ég hef að gera eitt í viðbót. 1011 00:48:25,640 --> 00:48:30,570 Það er í skrá sem kallast string.h að strlen er lýst. 1012 00:48:30,570 --> 00:48:33,190 Svo ef ég vil nota þessi virka, Ég þarf að segja þýðanda, 1013 00:48:33,190 --> 00:48:34,450 búist við að nota það. 1014 00:48:34,450 --> 00:48:37,040 Nú láta mig fara á undan og gera the program sem heitir band. 1015 00:48:37,040 --> 00:48:39,150 Punktur, rista, band. 1016 00:48:39,150 --> 00:48:40,130 >> Vinsamlegast gefið mér streng. 1017 00:48:40,130 --> 00:48:40,900 Ég fer á undan og slá það. 1018 00:48:40,900 --> 00:48:43,040 Halló, í öllum húfur, Enter. 1019 00:48:43,040 --> 00:48:47,390 Og nú eftir ég hef prentað þetta einn staf á eftir öðru. 1020 00:48:47,390 --> 00:48:51,450 Svo er nýja smáatriðum hér að a band, í lok dagsins, er hægt að 1021 00:48:51,450 --> 00:48:54,810 nálgast með því að einstaklingur sinni stafir með því að kynna veldi 1022 00:48:54,810 --> 00:48:55,840 krappi tákn. 1023 00:48:55,840 --> 00:48:59,090 Og það er vegna þess að a band undir hetta er örugglega röð 1024 00:48:59,090 --> 00:48:59,810 stafir. 1025 00:48:59,810 --> 00:49:02,010 En hvað er sniðugt um þá er í RAM tölvunnar - 1026 00:49:02,010 --> 00:49:05,300 Mac, PC, hvað sem það er - þeir eru bókstaflega aftur til baka til baka - 1027 00:49:05,300 --> 00:49:06,225 H-E-L-L-O - 1028 00:49:06,225 --> 00:49:09,920 á einstaklingur, aðliggjandi bæti í minni. 1029 00:49:09,920 --> 00:49:13,210 >> Svo ef þú vilt fá á áttunda svo bæti, sem í þessu lykkju væri 1030 00:49:13,210 --> 00:49:16,900 krappi núll, krappi einn, krappi tveir, krappi þrír, krappi fjögurra - 1031 00:49:16,900 --> 00:49:18,890 sem er núll verðtryggð fram fimm - 1032 00:49:18,890 --> 00:49:23,330 sem mun prenta út H-E-L-L-O á eigin línu. 1033 00:49:23,330 --> 00:49:26,320 >> Nú, sem beitu, láttu mig sýna þér tegund af hlutur þú munt að lokum verða 1034 00:49:26,320 --> 00:49:31,950 fær um að skilja, að minnsta kosti með nokkrum loka útlit. 1035 00:49:31,950 --> 00:49:35,610 Fyrir einn, það sem við með í dag ' dæmi, ef þú vilt, er í raun 1036 00:49:35,610 --> 00:49:38,300 einn af fyrstu Jailbreaks fyrir iPhone. 1037 00:49:38,300 --> 00:49:40,800 Jailbreaking þýðir sprunga símann svo þú getur raunverulega notað hana á 1038 00:49:40,800 --> 00:49:43,380 mismunandi flutningafyrirtæki eða setja eigin hugbúnaður. 1039 00:49:43,380 --> 00:49:45,660 Og þú munt taka þetta lítur alveg dulinn, líklega. 1040 00:49:45,660 --> 00:49:46,520 En líta á þetta. 1041 00:49:46,520 --> 00:49:50,420 The iPhone var greinilega klikkaður með á fyrir lykkja, sem ef ástand, sem annars 1042 00:49:50,420 --> 00:49:52,580 ástand, fullt af störfum við höfum ekki séð. 1043 00:49:52,580 --> 00:49:54,230 >> Og aftur, þú vilja ekki fyrstu sýn líklega 1044 00:49:54,230 --> 00:49:55,620 skilja hvernig þetta virkar. 1045 00:49:55,620 --> 00:49:58,940 En allt sem við tökum svoleiðis sjálfsögðum hlut í nútíma lífi okkar 1046 00:49:58,940 --> 00:50:02,040 reyndar tilhneigingu til að draga jafnvel að sumir þessara grundvallaratriði sem við höfum verið 1047 00:50:02,040 --> 00:50:02,820 horfa á. 1048 00:50:02,820 --> 00:50:06,680 Leyfðu mér að fara á undan og opna einn önnur forrit, holloway.c. 1049 00:50:06,680 --> 00:50:08,970 Svo þetta, of, er eitthvað sem þú ætti í raun ekki að vita. 1050 00:50:08,970 --> 00:50:12,440 Jafnvel ekkert of the staff eða ég gat sennilega reikna þetta út með því að horfa á 1051 00:50:12,440 --> 00:50:15,450 það vegna þess að þetta var númer einhvers sem var lögð til hvað er 1052 00:50:15,450 --> 00:50:19,630 sögulega þekktur sem obfuscated C keppni, þar sem þú skrifa forrit 1053 00:50:19,630 --> 00:50:24,670 sem safnar og keyrir en er svo fjandinn dulinn enginn maður getur skilið hvað 1054 00:50:24,670 --> 00:50:27,530 það er að fara að gera þar þeir hlaupa í raun það. 1055 00:50:27,530 --> 00:50:29,940 >> Svo örugglega, ef þú lítur á þetta kóða, sjá ég skipta. 1056 00:50:29,940 --> 00:50:30,870 Ég sé helsta. 1057 00:50:30,870 --> 00:50:33,800 Ég sé þessar hornklofum felur einhvers konar fylki. 1058 00:50:33,800 --> 00:50:35,970 Er einhver sem vill giska á hvaða þetta forrit í raun 1059 00:50:35,970 --> 00:50:37,220 er ef ég keyrt Holloway? 1060 00:50:37,220 --> 00:50:39,940 1061 00:50:39,940 --> 00:50:40,750 Já. 1062 00:50:40,750 --> 00:50:43,050 OK. 1063 00:50:43,050 --> 00:50:44,690 Vel gert. 1064 00:50:44,690 --> 00:50:48,090 Svo að aðeins starfsfólk og ég get ekki fundið hvað þessir hlutir gera. 1065 00:50:48,090 --> 00:50:51,670 >> Og nú loks, láttu mig fara á undan og opna eitt annað forrit. 1066 00:50:51,670 --> 00:50:53,440 This einn - 1067 00:50:53,440 --> 00:50:55,550 aftur, munum við gera kóðann á netinu - þetta er bara 1068 00:50:55,550 --> 00:50:57,480 konar nokkuð til að líta á. 1069 00:50:57,480 --> 00:50:59,750 Allt sem þeir gerðu er ýtt á rúm bar töluvert. 1070 00:50:59,750 --> 00:51:01,320 En þetta er alvöru kóða. 1071 00:51:01,320 --> 00:51:04,790 Svo ef þú heldur það er nokkuð, ef við í raun að keyra þetta á að hvetja, 1072 00:51:04,790 --> 00:51:08,970 loksins að þú munt sjá hvernig við gæti gert hlutina svona. 1073 00:51:08,970 --> 00:51:14,008 >> Þannig að við munum láta þig á að huga og sjá þig á miðvikudag. 1074 00:51:14,008 --> 00:51:18,440 >> [Tónlist spila] 1075 00:51:18,440 --> 00:51:23,380 >> Ræðumaður 2: Í næsta CS50, að TFS leiksvið a uppreisn. 1076 00:51:23,380 --> 00:51:24,112 >> Ræðumaður 3: Það er hann. 1077 00:51:24,112 --> 00:51:25,362 Náðu honum! 1078 00:51:25,362 --> 00:51:29,912 1079 00:51:29,912 --> 00:51:32,074 >> [Tónlist spila]