1 00:00:00,000 --> 00:00:00,940 2 00:00:00,940 --> 00:00:05,440 >> [MUSIC KUCHEZA] 3 00:00:05,440 --> 00:00:11,577 4 00:00:11,577 --> 00:00:12,660 DAVID J. Malan: All wa kulia. 5 00:00:12,660 --> 00:00:15,590 Hii ni CS50, na hii ni mwanzo wa wiki mbili. 6 00:00:15,590 --> 00:00:19,120 Kwa hiyo, acheni kuanza leo na mdudu. 7 00:00:19,120 --> 00:00:20,974 mdudu, bila shaka, ni makosa katika mpango, 8 00:00:20,974 --> 00:00:22,890 na utapata sana ukoo na dhana hii 9 00:00:22,890 --> 00:00:26,050 kama wewe sijawahi iliyowekwa kabla ya. pset0 na sasa pset1. 10 00:00:26,050 --> 00:00:29,280 Lakini hebu fikiria kitu rahisi kidogo kwa mara ya kwanza. 11 00:00:29,280 --> 00:00:32,189 Mpango huu hapa kwamba mimi kurusha pamoja katika mapema, 12 00:00:32,189 --> 00:00:37,280 na mimi kudai kwamba hii lazima magazeti Nyota 10 juu ya screen kutumia printf, 13 00:00:37,280 --> 00:00:41,020 lakini ni inaonekana Buggy katika baadhi ya njia. 14 00:00:41,020 --> 00:00:45,370 >> Kutokana na kwamba vipimo kwamba ni lazima magazeti nyota 10, 15 00:00:45,370 --> 00:00:50,230 lakini haina inaonekana, nini ingekuwa wewe kudai ni mdudu? 16 00:00:50,230 --> 00:00:52,004 Yeah? 17 00:00:52,004 --> 00:00:54,420 Hivyo ni mbali na kosa moja, na je, maana na kwamba? 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 Hivyo tumekuwa maalum kuanza thamani ya sifuri kwa i, 23 00:01:13,930 --> 00:01:18,399 na tumekuwa maalum n thamani ya 10, lakini tumekuwa kutumika chini ya au sawa na. 24 00:01:18,399 --> 00:01:21,190 Na sababu kwamba hii ni mbili wahusika na si tu alama moja, 25 00:01:21,190 --> 00:01:22,630 kama katika kitabu math, ni kwamba huna 26 00:01:22,630 --> 00:01:24,880 njia ya kuonyesha tabia moja sawa. 27 00:01:24,880 --> 00:01:28,450 >> Hivyo kwamba maana chini ya, lakini kama wewe kuanza kuhesabu saa sifuri, 28 00:01:28,450 --> 00:01:31,690 lakini wewe kuhesabu njia yote juu kupitia na kuwa sawa na 10, 29 00:01:31,690 --> 00:01:34,170 wewe ni bila shaka kwenda mambo kuhesabu 11 katika jumla. 30 00:01:34,170 --> 00:01:35,900 Na hivyo wewe ni kwenda magazeti nyota 11. 31 00:01:35,900 --> 00:01:37,990 Hivyo kile anaweza kuwa fix kwa hili? 32 00:01:37,990 --> 00:01:39,970 Yeah? 33 00:01:39,970 --> 00:01:43,980 >> Hivyo tu kurekebisha chini ya au sawa na tu kuwa chini ya, 34 00:01:43,980 --> 00:01:46,250 na kuna, mimi kudai, labda ufumbuzi mwingine, pia. 35 00:01:46,250 --> 00:01:47,210 Nini kinaweza kingine unaweza kufanya? 36 00:01:47,210 --> 00:01:48,590 Yeah? 37 00:01:48,590 --> 00:01:53,660 >> Hivyo kuanza ni sawa na ni kwa 1, na kuondoka chini ya au sawa na. 38 00:01:53,660 --> 00:01:56,187 Na kusema ukweli mimi bila kudai kwamba, kwa kawaida ya binadamu, 39 00:01:56,187 --> 00:01:57,770 hii pengine ni zaidi moja kwa moja. 40 00:01:57,770 --> 00:02:00,280 Kuanza kuhesabu katika 1 na kuhesabu up kwa njia ya 10. 41 00:02:00,280 --> 00:02:01,690 Kimsingi kufanya nini. 42 00:02:01,690 --> 00:02:04,010 >> Lakini ukweli ni katika programu, kama tumeona, 43 00:02:04,010 --> 00:02:07,598 wanasayansi wa kompyuta na programmers katika ujumla wake huwa kuanza kuhesabu katika sifuri. 44 00:02:07,598 --> 00:02:09,389 Na hivyo hiyo ni faini mara moja kupata kutumika yake. 45 00:02:09,389 --> 00:02:12,640 Hali yako mapenzi kwa ujumla kuwa kitu kama chini ya. 46 00:02:12,640 --> 00:02:14,910 Hivyo tu mantiki makosa kwamba tunaweza sasa 47 00:02:14,910 --> 00:02:17,990 kurekebisha na hatimaye recompile hii na kupata 10 tu. 48 00:02:17,990 --> 00:02:19,610 >> Vizuri jinsi kuhusu hili mdudu hapa? 49 00:02:19,610 --> 00:02:24,200 Hapa, tena, mimi kudai kwamba nina Lengo la uchapishaji 10 stars-- 50 00:02:24,200 --> 00:02:28,140 moja kwa kila mstari wakati huu, lakini haina. 51 00:02:28,140 --> 00:02:30,940 Kabla ya sisi kupendekeza nini fix ni, nini hii 52 00:02:30,940 --> 00:02:34,640 magazeti kuibua kama ningekuwa kukusanya na kukimbia mpango huu unafikiri? 53 00:02:34,640 --> 00:02:35,140 Yeah? 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 Hivyo nyota wote juu ya mstari huo ni nini nikasikia, 57 00:02:41,690 --> 00:02:43,391 na kisha mpya line tabia. 58 00:02:43,391 --> 00:02:44,140 Basi hebu kujaribu kuwa. 59 00:02:44,140 --> 00:02:48,710 Hivyo kufanya buggy-1, kuingia, na mimi kuona amri Clang 60 00:02:48,710 --> 00:02:50,090 kwamba sisi aliyesema kuhusu wakati wa mwisho. 61 00:02:50,090 --> 00:02:55,180 ./buggy-1, na kwa kweli mimi kuona nyota zote 10 juu ya mstari huo hata mimi kudai 62 00:02:55,180 --> 00:02:58,690 katika vipimo yangu tu maoni atop kificho kwamba mimi nia ya kufanya kwa moja 63 00:02:58,690 --> 00:02:59,230 line. 64 00:02:59,230 --> 00:03:00,580 Lakini hii inaonekana haki. 65 00:03:00,580 --> 00:03:04,620 >> Sasa line 15 inaonekana kama mimi nina uchapishaji nyota, na kisha mstari 16 66 00:03:04,620 --> 00:03:06,620 inaonekana kama mimi nina uchapishaji mpya line tabia, 67 00:03:06,620 --> 00:03:09,560 na wao uko wote wawili indented hivyo Mimi nina ndani ya kitanzi wazi. 68 00:03:09,560 --> 00:03:13,610 Hivyo lazima si mimi kufanya nyota, mpya line, nyota, mstari wa mwezi, nyota, line mpya? 69 00:03:13,610 --> 00:03:14,110 Ndiyo? 70 00:03:14,110 --> 00:03:18,430 71 00:03:18,430 --> 00:03:21,240 >> Yeah, tofauti na lugha kama Python, kama wewe ni ukoo, 72 00:03:21,240 --> 00:03:23,540 indentation haina jambo na kompyuta. 73 00:03:23,540 --> 00:03:25,280 Ni tu mambo ya binadamu. 74 00:03:25,280 --> 00:03:29,860 Hivyo mstari wakati hapa nimekuwa zuliwa 15 na 16-- kwamba inaonekana nzuri, 75 00:03:29,860 --> 00:03:31,330 lakini kompyuta haina huduma. 76 00:03:31,330 --> 00:03:34,640 kompyuta wasiwasi kuhusu kweli kuwa braces curly 77 00:03:34,640 --> 00:03:36,310 karibu mistari haya ya code. 78 00:03:36,310 --> 00:03:39,520 >> Hivyo kwamba ni clear-- tu kama katika Scratch-- kwamba wale mistari miwili ya code 79 00:03:39,520 --> 00:03:40,450 lazima ifanyike. 80 00:03:40,450 --> 00:03:44,390 Kama mmoja wa wale njano Scratch puzzle vipande tena na tena na tena. 81 00:03:44,390 --> 00:03:50,920 >> Hivyo sasa kama mimi re-kukimbia hii program-- ./buggy-2-- Hm. 82 00:03:50,920 --> 00:03:51,770 Nina kosa sasa. 83 00:03:51,770 --> 00:03:54,212 Je, mimi kusahau kufanya nini? 84 00:03:54,212 --> 00:03:55,420 Yeah, hivyo sikuweza kukusanya yake. 85 00:03:55,420 --> 00:03:56,740 Hivyo kufanya buggy-2. 86 00:03:56,740 --> 00:03:59,840 Hakuna faili kama kwa sababu sikuwa na si kweli kukusanya toleo la pili. 87 00:03:59,840 --> 00:04:04,860 Hivyo sasa ya kuvutia Undeclared variable-- si 2. 88 00:04:04,860 --> 00:04:05,510 Sisi ni kufanya 1. 89 00:04:05,510 --> 00:04:11,050 Kufanya buggy-1-- ./buggy-1-- na sasa kila mmoja wao ni juu ya mstari huo. 90 00:04:11,050 --> 00:04:13,880 >> Sasa kuna ubaguzi kwa walidhani madai yangu hii 91 00:04:13,880 --> 00:04:15,520 kwamba unahitaji braces haya curly. 92 00:04:15,520 --> 00:04:20,160 Wakati ni kweli OK-- kama wameweza niliona katika sehemu au textbooks-- 93 00:04:20,160 --> 00:04:22,130 kwa saza braces curly? 94 00:04:22,130 --> 00:04:22,630 Yeah? 95 00:04:22,630 --> 00:04:26,290 96 00:04:26,290 --> 00:04:26,870 >> Hasa. 97 00:04:26,870 --> 00:04:28,940 Wakati kuna moja tu mstari wa kanuni kwamba wewe 98 00:04:28,940 --> 00:04:32,830 wanataka kuhusishwa na kitanzi kama katika mfano wetu wa kwanza. 99 00:04:32,830 --> 00:04:36,380 Ni kikamilifu halali kwa saza braces curly 100 00:04:36,380 --> 00:04:40,310 tu kama aina ya urahisi kutoka compiler na wewe. 101 00:04:40,310 --> 00:04:40,810 Yeah? 102 00:04:40,810 --> 00:04:43,347 103 00:04:43,347 --> 00:04:43,930 Swali nzuri. 104 00:04:43,930 --> 00:04:45,500 Je, ni kuchukuliwa style kosa? 105 00:04:45,500 --> 00:04:49,340 Tunataka promote-- kama katika CS50 style mwongozo, URL kwa ajili ya ambayo 106 00:04:49,340 --> 00:04:51,926 ni katika pset1-- kwamba daima kutumia braces curly. 107 00:04:51,926 --> 00:04:53,550 Hakika kama wewe ni mpya kwa programu. 108 00:04:53,550 --> 00:04:56,800 Ukweli ni sisi siyo kwenda kuzuia wewe 109 00:04:56,800 --> 00:04:58,680 kutoka kwa kufanya matumizi haya. 110 00:04:58,680 --> 00:05:00,846 Lakini kama wewe ni kupata tu ndani ya swing wa mambo, 111 00:05:00,846 --> 00:05:04,020 kabisa tu daima kutumia curly inakabiliwa na mpaka kupata hutegemea yake. 112 00:05:04,020 --> 00:05:04,640 Swali nzuri. 113 00:05:04,640 --> 00:05:05,320 >> Wote haki. 114 00:05:05,320 --> 00:05:07,660 Hivyo kwamba basi alikuwa mdudu. 115 00:05:07,660 --> 00:05:09,190 Angalau katika kitu haki rahisi. 116 00:05:09,190 --> 00:05:11,260 Na bado unaweza kufikiri hii ni haki rudimentary, haki? 117 00:05:11,260 --> 00:05:13,635 Hii ni aina ya wiki ya kwanza ya kuangalia lugha 118 00:05:13,635 --> 00:05:14,890 kama, angalia mende yako ndani yake. 119 00:05:14,890 --> 00:05:17,250 Lakini ukweli hizi ni kweli mwakilishi 120 00:05:17,250 --> 00:05:20,310 baadhi ya matatizo pretty kutisha ambayo yanaweza kutokea katika ulimwengu wa kweli. 121 00:05:20,310 --> 00:05:23,530 >> Hivyo baadhi yenu wanaweza kukumbuka kama wewe kufuata tech habari, 122 00:05:23,530 --> 00:05:25,740 au labda hata hawakupata upepo wa huu katika Februari 123 00:05:25,740 --> 00:05:29,434 ya mwaka huu siku za nyuma kwamba Apple alikuwa na alifanya kidogo ya makosa katika iOS zote mbili, 124 00:05:29,434 --> 00:05:31,350 mfumo wa uendeshaji kwenye simu zao, na pia 125 00:05:31,350 --> 00:05:34,220 Mac OS, mfumo wa uendeshaji juu ya kopyuta yao na Laptops. 126 00:05:34,220 --> 00:05:36,480 Na wewe aliona vichwa vya habari kama hii. 127 00:05:36,480 --> 00:05:41,120 Na baada ya hapo, Apple aliahidi kurekebisha mdudu hii, 128 00:05:41,120 --> 00:05:45,950 na kwa haraka sana alifanya kurekebisha katika iOS, lakini kisha hatimaye fasta katika Mac OS 129 00:05:45,950 --> 00:05:46,810 kama vizuri. 130 00:05:46,810 --> 00:05:50,370 >> Sasa hakuna hata mmoja wa vichwa haya peke yake kweli yatangaza nini tatizo la msingi ilikuwa, 131 00:05:50,370 --> 00:05:55,640 lakini mdudu alikuwa hatimaye kupunguzwa kwa mdudu katika SSL, soketi salama safu. 132 00:05:55,640 --> 00:05:57,390 Na hadithi muda mfupi, hii ni programu 133 00:05:57,390 --> 00:06:01,030 kwamba browsers wetu na wengine programu kutumika kufanya nini? 134 00:06:01,030 --> 00:06:04,090 135 00:06:04,090 --> 00:06:06,860 >> Kama mimi alisema kuwa SSL ni wanaohusika, wakati wowote 136 00:06:06,860 --> 00:06:13,920 kutembelea URL kwamba huanza na HTTPS, nini basi huenda SSL kuwa kuhusiana na? 137 00:06:13,920 --> 00:06:14,580 Encryption. 138 00:06:14,580 --> 00:06:16,470 Hivyo tutaweza majadiliano juu ya hii katika siku zijazo. 139 00:06:16,470 --> 00:06:18,750 Encryption, sanaa ya scrambling habari. 140 00:06:18,750 --> 00:06:22,200 >> Lakini hadithi muda mfupi, Apple wakati mwingine iliyopita alifanya makosa 141 00:06:22,200 --> 00:06:25,970 katika utekelezaji wake wa SSL, programu ya kwamba hatimaye kutekeleza 142 00:06:25,970 --> 00:06:30,120 URLs kama HTTPS au max uhusiano huko pia. 143 00:06:30,120 --> 00:06:32,850 matokeo ya ambayo ni kuwa wako uhusiano inaweza uwezekano wa 144 00:06:32,850 --> 00:06:33,920 kutekwa. 145 00:06:33,920 --> 00:06:37,130 Na uhusiano wako walikuwa si lazima encrypted 146 00:06:37,130 --> 00:06:40,350 kama alikuwa na baadhi guy mbaya katika kati ya wewe na tovuti marudio ambao 147 00:06:40,350 --> 00:06:42,170 alijua jinsi ya kuchukua faida ya hii. 148 00:06:42,170 --> 00:06:45,090 >> Sasa Apple hatimaye posted a kurekebisha kwa ajili ya hii hatimaye, 149 00:06:45,090 --> 00:06:46,920 na maelezo ya kurekebisha yao ilikuwa hii. 150 00:06:46,920 --> 00:06:49,878 Usafiri salama alishindwa kuthibitisha ukweli wa uhusiano. 151 00:06:49,878 --> 00:06:52,920 Suala hilo kushughulikiwa na kurejesha kukosa hatua uthibitisho. 152 00:06:52,920 --> 00:06:57,250 >> Hivyo hii ni mkono sana WAVY maelezo kwa tu kusema kwamba sisi Star up. 153 00:06:57,250 --> 00:07:00,920 Kuna literally moja mstari wa kanuni kwamba alikuwa Buggy 154 00:07:00,920 --> 00:07:05,130 katika utekelezaji wake wa SSL, na kama wewe kwenda online na kutafuta kwa ajili ya hii 155 00:07:05,130 --> 00:07:07,210 unaweza kweli kupata awali chanzo code. 156 00:07:07,210 --> 00:07:11,960 Kwa mfano, hii ni screen risasi ya tu sehemu ya faili haki kubwa, 157 00:07:11,960 --> 00:07:15,965 lakini hii ni kazi inaonekana kuitwa SSL kuthibitisha ishara server kubadilishana muhimu. 158 00:07:15,965 --> 00:07:17,840 Na inachukua rundo la hoja na pembejeo. 159 00:07:17,840 --> 00:07:20,298 Na sisi ni si kwenda kuzingatia sana juu ya minutia huko, 160 00:07:20,298 --> 00:07:24,390 lakini kama wewe kuzingatia kanuni ndani ya ya kwamba topmost function-- hebu 161 00:07:24,390 --> 00:07:25,590 zoom katika juu ya hilo. 162 00:07:25,590 --> 00:07:28,140 Unaweza mtuhumiwa tayari nini kosa nguvu 163 00:07:28,140 --> 00:07:31,230 kuwa hata kama wewe huna wazo hatimaye nini wewe kuangalia. 164 00:07:31,230 --> 00:07:35,924 Kuna aina ya makosa hapa, ambayo ni nini? 165 00:07:35,924 --> 00:07:38,940 >> Yeah, mimi si kweli kama kuangalia ya mbili goto inashindwa. 166 00:07:38,940 --> 00:07:42,060 Kusema ukweli, mimi si kweli kujua nini goto kushindwa maana yake, lakini baada ya kuwa wawili kati yao 167 00:07:42,060 --> 00:07:42,810 nyuma kwa nyuma. 168 00:07:42,810 --> 00:07:45,290 Hiyo tu aina ya rubs me kielimu njia sahihi, 169 00:07:45,290 --> 00:07:48,910 na kwa kweli kama sisi zoom katika juu ya tu mistari hizo, hii ni C. 170 00:07:48,910 --> 00:07:52,220 >> Hivyo mengi ya code Apple ni yenyewe imeandikwa katika C, 171 00:07:52,220 --> 00:07:55,780 na hii inaonekana ni kweli equivalent-- 172 00:07:55,780 --> 00:07:59,060 si kwa kuwa indentation pretty version, lakini kama wewe kutambua ukweli 173 00:07:59,060 --> 00:08:02,560 kwamba hakuna braces curly, nini Apple kweli aliandika mara kificho kwamba inaonekana 174 00:08:02,560 --> 00:08:03,540 kama hii. 175 00:08:03,540 --> 00:08:07,080 Hivyo nimekuwa zoomed nje na mimi tu fasta indentation katika akili 176 00:08:07,080 --> 00:08:10,690 kwamba kama kuna hakuna braces curly, kwamba goto pili kushindwa kwamba katika njano 177 00:08:10,690 --> 00:08:12,500 ni kwenda kutekeleza bila kujali. 178 00:08:12,500 --> 00:08:15,540 Ni si kuhusishwa na kama hali juu yake. 179 00:08:15,540 --> 00:08:19,590 >> Hivyo hata tena, kama huna kabisa kuelewa nini hii inaweza uwezekano wa 180 00:08:19,590 --> 00:08:23,230 kuwa kufanya, kujua kwamba kila moja ya haya conditions-- kila moja ya mistari haya 181 00:08:23,230 --> 00:08:26,180 ni hatua muhimu sana katika mchakato wa kuangalia 182 00:08:26,180 --> 00:08:28,350 ikiwa data yako ni katika ukweli encrypted. 183 00:08:28,350 --> 00:08:31,710 Hivyo kuruka mmoja wa haya hatua, si wazo bora. 184 00:08:31,710 --> 00:08:34,840 >> Lakini kwa sababu tuna hii goto pili kushindwa katika njano, 185 00:08:34,840 --> 00:08:36,840 na kwa sababu mara moja sisi aina ya aesthetically 186 00:08:36,840 --> 00:08:40,480 hoja hiyo kwa upande wa kushoto ambapo mantiki ni kwa wakati huu, nini 187 00:08:40,480 --> 00:08:43,230 hii haina maana kwa line wa kanuni chini kwamba goto pili 188 00:08:43,230 --> 00:08:46,480 kushindwa unafikiri? 189 00:08:46,480 --> 00:08:48,860 Ni daima kwenda kuwa skipped. 190 00:08:48,860 --> 00:08:52,100 Hivyo gotos kwa ujumla juu ya kipaji kwa sababu sisi si kweli kwenda katika, 191 00:08:52,100 --> 00:08:54,940 na kwa kweli katika CS50 sisi huwa si kufundisha hii goto taarifa, 192 00:08:54,940 --> 00:08:58,130 lakini unaweza kufikiria goto kushindwa kama maana go kuruka 193 00:08:58,130 --> 00:08:59,600 kwa baadhi ya sehemu nyingine ya kificho. 194 00:08:59,600 --> 00:09:03,120 >> Kwa maneno mengine kuruka juu ya line hii ya mwisho kabisa, 195 00:09:03,120 --> 00:09:07,420 na hivyo matokeo ya hili kijinga rahisi makosa kwamba mara tu 196 00:09:07,420 --> 00:09:10,330 matokeo ya pengine mtu kuiga na pasting moja pia 197 00:09:10,330 --> 00:09:14,150 mara nyingi ni kwamba nzima usalama wa iOS na Mac OS 198 00:09:14,150 --> 00:09:18,240 mara katika mazingira magumu na kutekwa na wabaya kwa muda kabisa. 199 00:09:18,240 --> 00:09:19,940 Hadi Apple hatimaye fasta huu. 200 00:09:19,940 --> 00:09:23,100 >> Sasa kama baadhi ya wewe ni kweli mbio matoleo ya zamani ya iOS au Mac OS, 201 00:09:23,100 --> 00:09:27,250 unaweza kwenda kwa gotofail.com ambayo ni tovuti ya kwamba mtu kuweka up 202 00:09:27,250 --> 00:09:29,190 kimsingi kuamua programmatically 203 00:09:29,190 --> 00:09:30,980 kama kompyuta yako bado ni katika mazingira magumu. 204 00:09:30,980 --> 00:09:33,600 Na kusema ukweli, kama ni, pengine ni wazo nzuri 205 00:09:33,600 --> 00:09:36,870 update simu yako au Mac yako katika hatua hii. 206 00:09:36,870 --> 00:09:40,120 Lakini kuna, tu ushahidi wa jinsi kuthamini ngazi hizi chini 207 00:09:40,120 --> 00:09:42,400 maelezo na haki mawazo rahisi unaweza kweli 208 00:09:42,400 --> 00:09:44,590 kutafsiri katika maamuzi na matatizo ambayo 209 00:09:44,590 --> 00:09:47,320 affected-- katika case-- hii mamilioni ya watu. 210 00:09:47,320 --> 00:09:49,107 >> Sasa neno juu ya utawala. 211 00:09:49,107 --> 00:09:50,690 Sehemu ya kuanza Jumapili hii ijayo. 212 00:09:50,690 --> 00:09:53,360 Utapokea barua pepe na mwishoni mwa wiki kuhusu sehemu, ambapo kiwango 213 00:09:53,360 --> 00:09:55,290 mchakato resectioning itaanza kama wameweza 214 00:09:55,290 --> 00:09:56,998 barabara sasa una baadhi ya migogoro mpya. 215 00:09:56,998 --> 00:10:00,180 Hivyo hii hufanyika kila mwaka, na sisi mapenzi ya malazi katika siku zijazo. 216 00:10:00,180 --> 00:10:02,430 >> Ofisi ya hours-- kufanya kuweka jicho juu ya ratiba hii hapa. 217 00:10:02,430 --> 00:10:05,100 Mabadiliko kidogo wiki hii, hasa wakati kuanza 218 00:10:05,100 --> 00:10:08,180 na eneo, hivyo kushauriana kwamba kabla ya viongozi wa masaa ya ofisi 219 00:10:08,180 --> 00:10:09,520 yoyote ya pili nne usiku. 220 00:10:09,520 --> 00:10:12,680 Na sasa neno juu ya tathmini, hasa kama wewe kupiga mbizi katika tatizo 221 00:10:12,680 --> 00:10:14,350 seti moja na kwingineko. 222 00:10:14,350 --> 00:10:17,070 >> Hivyo kwa vipimo, haya ni kwa ujumla 223 00:10:17,070 --> 00:10:20,360 shoka pamoja ambayo sisi kutathmini kazi yako. 224 00:10:20,360 --> 00:10:23,170 Wigo inahusu nini kiwango code yako zana 225 00:10:23,170 --> 00:10:25,690 makala required na vipimo yetu. 226 00:10:25,690 --> 00:10:28,290 Kwa maneno mengine, ni kiasi gani cha kipande kuweka alifanya wewe bite mbali. 227 00:10:28,290 --> 00:10:30,440 Je, kufanya theluthi yake, nusu yake, 100% ya hiyo. 228 00:10:30,440 --> 00:10:33,000 Hata kama ni si sahihi, jinsi kiasi gani jaribio la? 229 00:10:33,000 --> 00:10:35,290 Hivyo kwamba Ukamataji ngazi ya juhudi na kiasi 230 00:10:35,290 --> 00:10:38,260 ambayo wewe kidogo off matatizo tatizo kuweka ya. 231 00:10:38,260 --> 00:10:40,690 >> Correctness-- hii moja, kwa kiasi gani, ni code yako 232 00:10:40,690 --> 00:10:43,150 sambamba na yetu specifikationer na bure ya mende. 233 00:10:43,150 --> 00:10:44,770 Hivyo gani kazi kwa usahihi? 234 00:10:44,770 --> 00:10:48,700 Kama sisi kuwapa baadhi ya pembejeo, je, ni kutupa pato kwamba sisi kutarajia? 235 00:10:48,700 --> 00:10:52,570 Design-- sasa hii ni ya kwanza ya ndio hasa ubora, 236 00:10:52,570 --> 00:10:56,180 au ndio ambayo yanahitaji hukumu binadamu. 237 00:10:56,180 --> 00:10:59,690 Na hakika, hii ni kwa nini tuna wafanyakazi ya wenzake wengi kufundisha na bila shaka 238 00:10:59,690 --> 00:11:00,350 wasaidizi. 239 00:11:00,350 --> 00:11:03,480 Ni kwa kiwango gani ni yako code imeandikwa vizuri? 240 00:11:03,480 --> 00:11:05,810 >> Na tena hii ni sana upimaji 241 00:11:05,810 --> 00:11:09,100 kwamba kazi na wewe juu ya bi-directionally katika wiki ijayo. 242 00:11:09,100 --> 00:11:12,060 Hivyo kwamba wakati wewe kupata si tu numeric alama, lakini pia 243 00:11:12,060 --> 00:11:16,682 alama ya maandishi, au typed maoni, au kuandikwa maoni katika maneno ya Kiingereza. 244 00:11:16,682 --> 00:11:19,640 Hiyo ni nini tutaweza kutumia kwa gari wewe kuelekea kweli kuandika code bora. 245 00:11:19,640 --> 00:11:23,320 Na katika hotuba na sehemu, tutaweza kujaribu kwa uhakika out-- kama mara nyingi kama sisi can-- 246 00:11:23,320 --> 00:11:26,420 nini inafanya mpango si tu sahihi na functionally nzuri, 247 00:11:26,420 --> 00:11:28,200 lakini pia vizuri iliyoundwa. 248 00:11:28,200 --> 00:11:31,850 ufanisi zaidi inaweza kuwa, au hata nzuri zaidi inaweza kuwa. 249 00:11:31,850 --> 00:11:33,100 >> Ambayo inaongoza sisi style. 250 00:11:33,100 --> 00:11:36,876 Sinema hatimaye ni hukumu aesthetic. 251 00:11:36,876 --> 00:11:38,750 Je, kuchagua mema majina kwa vigezo yako? 252 00:11:38,750 --> 00:11:40,330 Je, indented code yako vizuri? 253 00:11:40,330 --> 00:11:44,010 Je, ni kuangalia vizuri, na kwa hiyo, ni rahisi kwa binadamu mwingine 254 00:11:44,010 --> 00:11:46,550 kusoma husika yako ya usahihi wake. 255 00:11:46,550 --> 00:11:50,300 >> Sasa kwa ujumla kwa mitaala, sisi alama mambo haya juu ya tano kumweka wadogo. 256 00:11:50,300 --> 00:11:53,640 Na napenda nyundo nyumbani uhakika kuwa watatu ni kweli nzuri. 257 00:11:53,640 --> 00:11:55,550 Haraka sana kufanya folks kuanza kufanya hesabu. 258 00:11:55,550 --> 00:11:58,133 Wakati wao kupata tatu nje ya tano juu ya usahihi kwa baadhi pset 259 00:11:58,133 --> 00:12:02,040 na wanadhani damn, mimi kwenda 60% ambayo kimsingi ni D au E. 260 00:12:02,040 --> 00:12:03,980 >> Hiyo si njia ya sisi kufikiri ya namba hizi. 261 00:12:03,980 --> 00:12:06,880 tatu ni kweli nzuri, na kile sisi kwa ujumla kutarajia mwanzoni 262 00:12:06,880 --> 00:12:09,820 ya muda mrefu ni kwamba kama wewe ni kupata rundo la three's-- labda michache 263 00:12:09,820 --> 00:12:12,540 ya maonyesho, wanandoa wa fours-- au wawili-wawili wanandoa, wanandoa wa fours-- 264 00:12:12,540 --> 00:12:13,748 hiyo ni nafasi nzuri kuanza. 265 00:12:13,748 --> 00:12:16,320 Na hivyo kwa muda mrefu kama sisi kuona zaidi trajectory baada ya muda, 266 00:12:16,320 --> 00:12:18,540 wewe ni katika mahali hasa nzuri. 267 00:12:18,540 --> 00:12:20,752 >> formula sisi kutumia kwa uzito mambo ni kimsingi 268 00:12:20,752 --> 00:12:22,710 hii kwa mitaala, ambayo tu ina maana kwamba sisi 269 00:12:22,710 --> 00:12:24,750 kutoa uzito zaidi kwa usahihi. 270 00:12:24,750 --> 00:12:27,930 Kwa sababu ni mara nyingi sana usahihi kwamba inachukua muda zaidi. 271 00:12:27,930 --> 00:12:28,760 Matumaini yangu sasa. 272 00:12:28,760 --> 00:12:31,190 Wewe find-- angalau katika pset-- moja kwamba wewe 273 00:12:31,190 --> 00:12:36,790 kutumia 90% ya muda wako kazi ya 10% ya tatizo. 274 00:12:36,790 --> 00:12:39,320 >> Na kila kitu aina ya kazi ila kwa ajili ya mende moja au mbili, 275 00:12:39,320 --> 00:12:41,570 na hao ni mende kwamba kuwalinda hadi mwishoni mwa usiku. 276 00:12:41,570 --> 00:12:43,380 Hao ni wale aina ya kutoroka wewe. 277 00:12:43,380 --> 00:12:45,560 Lakini baada ya kulala juu yake, au kuhudhuria masaa ya ofisi 278 00:12:45,560 --> 00:12:48,844 au kuuliza maswali online, ni wakati kupata kwamba lengo 100%, 279 00:12:48,844 --> 00:12:50,760 na kwamba ni kwa nini sisi uzito usahihi zaidi. 280 00:12:50,760 --> 00:12:54,102 Kubuni kidogo kidogo, na style kidogo kidogo kuliko hivyo. 281 00:12:54,102 --> 00:12:56,060 Lakini kuweka katika style mind-- ni labda rahisi 282 00:12:56,060 --> 00:12:58,890 wa haya bite mbali kama per style mwongozo. 283 00:12:58,890 --> 00:13:01,580 >> Na sasa, mbaya zaidi kumbuka juu ya uaminifu wa kitaaluma. 284 00:13:01,580 --> 00:13:05,000 CS50 ina tofauti bahati mbaya ya kuwa uzalishaji mkubwa wa Ad Bodi 285 00:13:05,000 --> 00:13:07,330 kesi karibu kila mwaka ya kihistoria. 286 00:13:07,330 --> 00:13:11,012 Hii ni kwa sababu si ya wanafunzi kudanganya katika CS50 yoyote zaidi kuliko darasa nyingine yoyote, 287 00:13:11,012 --> 00:13:13,720 lakini kwa sababu na asili ya kazi, ukweli kwamba ni za elektroniki, 288 00:13:13,720 --> 00:13:16,636 ukweli kwamba sisi kuangalia kwa ajili yake, na kweli sisi ni kompyuta wanasayansi, 289 00:13:16,636 --> 00:13:20,570 Naweza kusema sisi ni bahati mbaya nzuri sana katika kuchunguza yake. 290 00:13:20,570 --> 00:13:22,710 >> Hivyo hii ina maana gani katika hali halisi? 291 00:13:22,710 --> 00:13:24,820 Hivyo ni, kwa mitaala, falsafa bila shaka ya 292 00:13:24,820 --> 00:13:28,090 kweli haina kuchemsha kwa kuwa na busara chini. 293 00:13:28,090 --> 00:13:31,684 Kuna mstari huu kati ya kufanya kazi moja ya juu yako mwenyewe 294 00:13:31,684 --> 00:13:34,100 na kupata kidogo ya msaada busara kutoka kwa rafiki, 295 00:13:34,100 --> 00:13:38,020 na rent kufanya hivyo kazi kwa yako rafiki, au kutuma kwake code yako 296 00:13:38,020 --> 00:13:41,080 hivyo kwamba yeye au yeye anaweza tu kuchukua au kukopa nje ya haki. 297 00:13:41,080 --> 00:13:43,580 Na kwamba misalaba line kwamba sisi inayotolewa darasani. 298 00:13:43,580 --> 00:13:45,410 >> Angalia, mitaala hatimaye kwa ajili ya mistari 299 00:13:45,410 --> 00:13:48,209 kwamba sisi kuteka kama kuwa busara na tabia haina maana, 300 00:13:48,209 --> 00:13:50,000 lakini ni kweli haina jipu chini ya kiini 301 00:13:50,000 --> 00:13:53,980 ya kazi yako wanaohitaji kuwa yako mwenyewe katika mwisho. 302 00:13:53,980 --> 00:13:56,230 Sasa kwa kuwa alisema, kuna heuristic. 303 00:13:56,230 --> 00:13:58,980 Kwa sababu kama unaweza imagine-- kutoka masaa ya ofisi na kuonekana 304 00:13:58,980 --> 00:14:01,060 na video tumekuwa umeonyesha hivyo far-- CS50 305 00:14:01,060 --> 00:14:04,530 ni kweli maana ya kuwa kama shirikishi na kama vyama vya ushirika na kama kijamii 306 00:14:04,530 --> 00:14:06,450 iwezekanavyo. 307 00:14:06,450 --> 00:14:08,570 Kama shirikishi kama ni ukali. 308 00:14:08,570 --> 00:14:11,314 >> Lakini pamoja na hayo, wakasema, heuristic, kama utaona katika mitaala, 309 00:14:11,314 --> 00:14:12,980 ni kwamba wakati wewe ni kuwa na baadhi ya tatizo. 310 00:14:12,980 --> 00:14:16,470 Una baadhi mdudu katika code yako kwamba haiwezi kutatua, ni busara kwa wewe 311 00:14:16,470 --> 00:14:18,039 kuonyesha code yako kwa mtu mwingine. 312 00:14:18,039 --> 00:14:21,080 rafiki hata katika darasa, rafiki ameketi karibu na wewe katika masaa ya ofisi, 313 00:14:21,080 --> 00:14:22,680 au mwanachama wa wafanyakazi. 314 00:14:22,680 --> 00:14:25,810 Lakini wanaweza kuonyesha si kanuni zao na wewe. 315 00:14:25,810 --> 00:14:27,710 >> Kwa maneno mengine, kujibu kwa question-- yako 316 00:14:27,710 --> 00:14:29,940 Mimi haja help-- si oh, hapa code wangu. 317 00:14:29,940 --> 00:14:32,440 Tuangalie hii na kukisia kutokana na ni nini wewe. 318 00:14:32,440 --> 00:14:34,580 Sasa, bila shaka, kuna njia wazi ya mchezo 319 00:14:34,580 --> 00:14:37,760 mfumo huu ambapo mimi nitakuonyesha code yangu kabla ya kuwa na swali. 320 00:14:37,760 --> 00:14:40,150 You show me yangu code yako kabla ya kuwa na swali. 321 00:14:40,150 --> 00:14:45,870 Lakini kuona mtaala tena kwa maelezo ya finer ya ambapo mstari huu ni. 322 00:14:45,870 --> 00:14:50,606 >> Tu sasa kuchora picha na kushiriki kama uwazi iwezekanavyo 323 00:14:50,606 --> 00:14:53,480 ambapo sisi ni saa katika miaka ya hivi karibuni, hii ni idadi ya Ad Bodi ya kesi 324 00:14:53,480 --> 00:14:56,260 kwamba CS50 imekuwa na juu ya kipindi cha miaka saba. 325 00:14:56,260 --> 00:14:58,717 Pamoja na 14 kesi hii kuanguka hivi karibuni zaidi. 326 00:14:58,717 --> 00:15:01,300 Katika suala la wanafunzi waliohusika, ilikuwa 20 baadhi ya wanafunzi isiyo ya kawaida 327 00:15:01,300 --> 00:15:02,490 hii kuanguka nyuma. 328 00:15:02,490 --> 00:15:05,670 Kulikuwa na kilele cha 33 wanafunzi baadhi ya miaka iliyopita. 329 00:15:05,670 --> 00:15:08,830 Ambao wengi wao ni bahati mbaya tena hapa juu ya chuo. 330 00:15:08,830 --> 00:15:13,100 >> Wanafunzi kushiriki kama asilimia ya darasa kihistoria umetofautiana kutoka 0% 331 00:15:13,100 --> 00:15:17,300 kwa 5.3%, ambayo ni tu kusema hii ni kwa mwaka ni changamoto. 332 00:15:17,300 --> 00:15:20,390 Na kuelekea mwisho kwamba, kile tunataka kufanya ni kufikisha moja 333 00:15:20,390 --> 00:15:24,310 kwamba sisi dd-- tu FYI-- kulinganisha katika haki kwa wale wanafunzi ambao 334 00:15:24,310 --> 00:15:26,520 ni kufuatia mstari ipasavyo. 335 00:15:26,520 --> 00:15:29,620 Sisi kufanya kulinganisha wote sasa maoni juu ya ujumbe wa kila siku za nyuma 336 00:15:29,620 --> 00:15:30,840 kutoka kipindi cha miaka mingi. 337 00:15:30,840 --> 00:15:33,620 >> Tunajua pia jinsi ya Google karibu na kupata code hifadhi za seli 338 00:15:33,620 --> 00:15:36,360 online vikao, majadiliano online, maeneo ya kazi online. 339 00:15:36,360 --> 00:15:41,580 Kama mwanafunzi anaweza kupata hiyo, tunaweza hakika kupata kama kiasi sisi masikitiko kufanya. 340 00:15:41,580 --> 00:15:45,330 Hivyo kile utaona katika mtaala ingawa ni kifungu majuto. 341 00:15:45,330 --> 00:15:47,500 Mimi naweza kufanya kufahamu, na sisi wote ina 342 00:15:47,500 --> 00:15:50,870 wafanyakazi baada ya kufanya bila shaka kama hii, au hii moja yenyewe baada ya muda, 343 00:15:50,870 --> 00:15:53,997 hakika kujua ni kama wakati maisha anapata katika njia wakati una 344 00:15:53,997 --> 00:15:56,080 baadhi usiku wa marehemu deadline-- si tu katika darasa hili, 345 00:15:56,080 --> 00:15:58,660 lakini another-- wakati uko nimechoka kabisa, alisisitiza nje, 346 00:15:58,660 --> 00:16:00,659 kuwa na idadi kupita kiasi ya mambo mengine ya kufanya. 347 00:16:00,659 --> 00:16:03,660 Wewe kufanya wakati fulani katika maisha bila ya shaka mbaya, labda mwishoni mwa 348 00:16:03,660 --> 00:16:04,620 usiku uamuzi. 349 00:16:04,620 --> 00:16:06,520 >> Hivyo kwa mitaala, kuna kifungu hiki, 350 00:16:06,520 --> 00:16:10,629 vile kwamba masaa kama ndani ya 72 ya kufanya baadhi uamuzi maskini, wewe mwenyewe juu yake 351 00:16:10,629 --> 00:16:12,670 na kufikia nje kwangu na kimoja cha vichwa bila shaka ya 352 00:16:12,670 --> 00:16:14,300 na tutakuwa na mazungumzo. 353 00:16:14,300 --> 00:16:16,220 Sisi kushughulikia mambo ndani kwa matumaini 354 00:16:16,220 --> 00:16:18,770 yake kuwa zaidi ya mafundisho muda au maisha ya somo, 355 00:16:18,770 --> 00:16:22,120 na si kitu kwa ramifications hasa kuporomoka 356 00:16:22,120 --> 00:16:24,570 kama unaweza kuona juu ya chati hizi hapa. 357 00:16:24,570 --> 00:16:26,540 >> Hivyo hiyo ni tone kubwa sana. 358 00:16:26,540 --> 00:16:29,960 Tusimame kwa chache tu sekunde kuvunja mvutano. 359 00:16:29,960 --> 00:16:34,442 >> [MUSIC KUCHEZA] 360 00:16:34,442 --> 00:17:17,768 361 00:17:17,768 --> 00:17:20,250 >> DAVID J. Malan: zote haki, hivyo ni jinsi ni kwamba kwa segue? 362 00:17:20,250 --> 00:17:22,059 Na mada ya leo ya msingi. 363 00:17:22,059 --> 00:17:23,859 ya kwanza ambayo ni ya kufikirika tu. 364 00:17:23,859 --> 00:17:26,900 Mwingine ambayo ni ya kwenda kuwa uwakilishi wa data, ambayo kusema ukweli 365 00:17:26,900 --> 00:17:31,640 ni njia ya kweli kavu ya kusema jinsi gani tunaweza kwenda juu ya kutatua matatizo na kufikiri 366 00:17:31,640 --> 00:17:33,250 kuhusu utatuzi wa matatizo? 367 00:17:33,250 --> 00:17:37,285 Hivyo wameweza kuonekana katika Scratch, na wewe wameweza kuonekana labda tayari katika pset1 na C 368 00:17:37,285 --> 00:17:39,930 kwamba wewe si tu wanaweza kutumia kazi, kama printf, 369 00:17:39,930 --> 00:17:42,770 kwamba watu wengine katika kipindi cha miaka aliandika kwa ajili yenu. 370 00:17:42,770 --> 00:17:45,340 Unaweza pia kuandika kazi yako mwenyewe. 371 00:17:45,340 --> 00:17:48,440 >> Na hata kama unaweza kuwa na jambo hili katika C, na kusema ukweli katika pset1 372 00:17:48,440 --> 00:17:51,866 wewe si kweli haja ya kuandika yako kazi mwenyewe kwa sababu problem-- 373 00:17:51,866 --> 00:17:53,990 wakati labda ngumu katika kwanza glance-- utaona 374 00:17:53,990 --> 00:17:57,910 inaweza hatimaye kutatuliwa kwa si mistari yote kwamba wengi wa kanuni. 375 00:17:57,910 --> 00:18:01,140 Lakini kwa kuwa alisema, katika suala ya kuandika kazi yako mwenyewe, 376 00:18:01,140 --> 00:18:03,570 kutambua kwamba haina kutoa C wewe uwezo huo. 377 00:18:03,570 --> 00:18:06,940 >> Mimi nina kwenda katika chanzo code ya leo, ambayo inapatikana tayari online, 378 00:18:06,940 --> 00:18:10,900 na mimi nina kwenda mbele na wazi up programu inayoitwa kazi 0.C, 379 00:18:10,900 --> 00:18:14,620 na katika kazi zero tutaweza kuona mambo kadhaa. 380 00:18:14,620 --> 00:18:19,160 Katika mistari ya kwanza kwa njia ya 18 23 ni kazi yangu kuu. 381 00:18:19,160 --> 00:18:22,414 Na sasa kwamba sisi ni mwanzo wa kusoma kificho kwamba sisi siyo kuandika juu ya kuruka, 382 00:18:22,414 --> 00:18:25,080 lakini badala yake nimekuwa imeandikwa mapema au kwamba katika tatizo kuweka 383 00:18:25,080 --> 00:18:27,910 tupate kupokea kuwa yameandikwa katika mapema. 384 00:18:27,910 --> 00:18:30,040 njia nzuri ya kuanza kusoma code ya mtu mwingine 385 00:18:30,040 --> 00:18:31,400 ni kuangalia kwa ajili ya kazi kuu. 386 00:18:31,400 --> 00:18:34,420 Takwimu nje ambapo kuingia kwamba Suala ni kuendesha programu, 387 00:18:34,420 --> 00:18:36,580 na kisha kufuata mantiki kutoka huko. 388 00:18:36,580 --> 00:18:40,190 >> Hivyo mpango huu inaonekana prints jina yako ikifuatiwa na koloni. 389 00:18:40,190 --> 00:18:42,490 Sisi kisha kutumia GetString kutoka maktaba CS50 390 00:18:42,490 --> 00:18:46,050 kupata uzi, au neno au maneno kutoka kwa mtumiaji katika keyboard. 391 00:18:46,050 --> 00:18:48,390 Na kisha kuna hii kitu here-- PrintName. 392 00:18:48,390 --> 00:18:51,420 >> Sasa PrintName ni si kazi kuja na C. 393 00:18:51,420 --> 00:18:52,970 Ni si katika kiwango io.h. 394 00:18:52,970 --> 00:18:55,570 Ni si katika CS50.h. 395 00:18:55,570 --> 00:18:57,880 Ni badala katika faili moja. 396 00:18:57,880 --> 00:19:01,000 Taarifa kama mimi kitabu chini mistari bit-- 25 kwa 27-- 397 00:19:01,000 --> 00:19:05,330 ni njia tu pretty ya kutoa maoni code yako kwa kutumia nyota na mikwaju. 398 00:19:05,330 --> 00:19:07,320 Hii ni multi-line maoni, na hii ni 399 00:19:07,320 --> 00:19:10,570 maelezo yangu katika rangi ya bluu ya nini kazi hii haina. 400 00:19:10,570 --> 00:19:14,530 >> Kwa sababu katika mistari 28 kupitia 31, Nimeandika kazi super rahisi 401 00:19:14,530 --> 00:19:16,280 ambaye jina lake ni PrintName. 402 00:19:16,280 --> 00:19:19,560 Inachukua wangapi hoja unaweza kusema? 403 00:19:19,560 --> 00:19:25,120 Hivyo argument-- moja kwa sababu kuna moja Hoja waliotajwa ndani ya mabano. 404 00:19:25,120 --> 00:19:27,000 aina ya ambayo ni String. 405 00:19:27,000 --> 00:19:30,240 Ambayo ni kusema PrintName ni kama hii sanduku nyeusi 406 00:19:30,240 --> 00:19:32,910 au kazi kwamba inachukua kama pembejeo kamba. 407 00:19:32,910 --> 00:19:35,730 >> Na jina la Kamba kwamba conveniently itakuwa Jina. 408 00:19:35,730 --> 00:19:37,840 Si S, si N, lakini Jina. 409 00:19:37,840 --> 00:19:41,090 Kwa hiyo ni nini PrintName nini? 410 00:19:41,090 --> 00:19:42,210 Ni nzuri rahisi. 411 00:19:42,210 --> 00:19:45,390 Tu kama mstari mmoja wa code kwa printf, lakini inaonekana ni 412 00:19:45,390 --> 00:19:47,950 prints nje "Hello," hivyo na hivyo. 413 00:19:47,950 --> 00:19:50,070 Ambapo hivyo na hivyo linatokana na hoja. 414 00:19:50,070 --> 00:19:52,300 >> Sasa hii si innovation kubwa hapa. 415 00:19:52,300 --> 00:19:56,710 Kweli, nimekuwa kuchukuliwa mpango ambayo inaweza wamekuwa imeandikwa na line moja ya kanuni 416 00:19:56,710 --> 00:20:00,190 kwa kuweka hii up hapa, na iliyopita kwa kitu 417 00:20:00,190 --> 00:20:04,920 ambayo inahusisha baadhi sita au saba au hivyo mstari wa kanuni njia yote chini hapa. 418 00:20:04,920 --> 00:20:08,190 >> Lakini ni kufanya mazoezi ya kanuni inayojulikana kama kufikirika tu. 419 00:20:08,190 --> 00:20:12,550 Aina ya encapsulating ndani ya mpya kazi ambayo ina jina, na bora 420 00:20:12,550 --> 00:20:14,590 lakini jina kwamba literally anasema nini anafanya. 421 00:20:14,590 --> 00:20:16,880 I mean printf-- si kwamba hasa kina. 422 00:20:16,880 --> 00:20:18,932 Kama mimi wanataka kujenga puzzle kipande, au kama mimi 423 00:20:18,932 --> 00:20:21,140 wanataka kujenga kazi kwamba Prints jina la mtu, 424 00:20:21,140 --> 00:20:23,230 uzuri wa kufanya hivyo ni kwamba kweli mimi 425 00:20:23,230 --> 00:20:27,170 kutoa kazi ambayo jina kwamba inaeleza nini ni gani. 426 00:20:27,170 --> 00:20:29,844 >> Sasa inachukua katika pembejeo kwamba Nimekuwa kiholela kuitwa jina, 427 00:20:29,844 --> 00:20:32,760 lakini kwamba pia ni ajabu maelezo badala ya kuwa zaidi kidogo 428 00:20:32,760 --> 00:20:36,140 generic kama S. Na batili, kwa sasa, ina maana tu 429 00:20:36,140 --> 00:20:38,330 kwamba kazi hii haina mkono yangu nyuma ya kitu chochote. 430 00:20:38,330 --> 00:20:41,127 Siyo kama GetString kwamba literally mikono yangu nyuma kamba 431 00:20:41,127 --> 00:20:43,960 kama tulivyofanya na vipande vya karatasi na wanafunzi wako wiki iliyopita, 432 00:20:43,960 --> 00:20:45,990 lakini badala yake tu ina athari upande. 433 00:20:45,990 --> 00:20:48,080 Ni Prints kitu screen. 434 00:20:48,080 --> 00:20:53,880 >> Hivyo mwisho wa siku, kama mimi kufanya kufanya kazi-0, ./function-0, 435 00:20:53,880 --> 00:20:55,450 tutaweza kuona kwamba anauliza kwa jina langu. 436 00:20:55,450 --> 00:20:58,150 Mimi aina David, na aina nje jina langu. 437 00:20:58,150 --> 00:21:01,080 Kama mimi kufanya hivyo tena na Rob, ni kwenda kusema "Hello, Rob." 438 00:21:01,080 --> 00:21:04,280 Hivyo wazo rahisi, lakini labda extrapolate kutoka hii kiakili 439 00:21:04,280 --> 00:21:06,750 kwamba kama mipango yako kupata kidogo ngumu zaidi, 440 00:21:06,750 --> 00:21:10,290 na unataka kuandika chunk ya kanuni na wito kwamba code-- waomba 441 00:21:10,290 --> 00:21:13,270 kwamba code-- na baadhi ya maelezo jina kama PrintName, 442 00:21:13,270 --> 00:21:15,600 C gani kumudu us uwezo huo. 443 00:21:15,600 --> 00:21:17,660 >> Hapa ni mfano mwingine rahisi. 444 00:21:17,660 --> 00:21:22,940 Kwa mfano, kama mimi kufungua faili kutoka leo kuitwa return.c, 445 00:21:22,940 --> 00:21:24,270 taarifa na kile nimepata kufanyika hapa. 446 00:21:24,270 --> 00:21:26,330 Wengi wa kazi hii kuu ni printf. 447 00:21:26,330 --> 00:21:30,360 Mimi kwanza kiholela initialize x variable kuitwa kwa idadi 2. 448 00:21:30,360 --> 00:21:34,110 Mimi kisha magazeti nje "x ni sasa % I "kupita kwa thamani ya x. 449 00:21:34,110 --> 00:21:35,500 Hivyo Mimi tu kusema ni nini. 450 00:21:35,500 --> 00:21:37,208 >> Sasa mimi nina tu kwa ujasiri wakidai kwa printf. 451 00:21:37,208 --> 00:21:42,050 Mimi cubing kwamba thamani x, na mimi nina kufanya hivyo kwa wito kazi 452 00:21:42,050 --> 00:21:45,590 kuitwa mchemraba kupita katika x kama hoja, 453 00:21:45,590 --> 00:21:49,300 na kisha kuokoa pato katika variable yenyewe, x. 454 00:21:49,300 --> 00:21:51,340 Hivyo mimi nina clobbering thamani ya x. 455 00:21:51,340 --> 00:21:53,380 Mimi nina kuu thamani ya x na chochote 456 00:21:53,380 --> 00:21:56,510 matokeo ya wito hii kazi mchemraba ni. 457 00:21:56,510 --> 00:21:59,530 Na kisha mimi tu magazeti nje baadhi mambo fluffy hapa kusema nini mimi alivyofanya. 458 00:21:59,530 --> 00:22:01,600 >> Hivyo basi ni nini mchemraba? 459 00:22:01,600 --> 00:22:03,510 Taarifa nini kimsingi tofauti hapa. 460 00:22:03,510 --> 00:22:05,540 Nimekupa kazi jina kama kabla. 461 00:22:05,540 --> 00:22:08,270 Nimekuwa maalum jina kwa hoja. 462 00:22:08,270 --> 00:22:11,650 Wakati huu ni kuitwa n badala ya jina, lakini mimi naweza kuiita kitu chochote nataka. 463 00:22:11,650 --> 00:22:12,650 Lakini hii ni tofauti. 464 00:22:12,650 --> 00:22:14,080 Jambo hili upande wa kushoto. 465 00:22:14,080 --> 00:22:16,290 Hapo awali ilikuwa ni nini keyword? 466 00:22:16,290 --> 00:22:16,870 Boys. 467 00:22:16,870 --> 00:22:18,580 Sasa ni wazi int. 468 00:22:18,580 --> 00:22:20,630 >> Basi nini labda kuchukua mbali? 469 00:22:20,630 --> 00:22:24,090 Wakati kunaashiria utupu aina ya nothingness, na kwamba alikuwa kesi. 470 00:22:24,090 --> 00:22:25,970 PrintName akarudi chochote. 471 00:22:25,970 --> 00:22:27,942 Ni alifanya kitu, lakini hakuwa na mkono yangu nyuma 472 00:22:27,942 --> 00:22:30,650 kitu ambacho mimi naweza kuweka juu ya upande wa kushoto wa ishara sawa 473 00:22:30,650 --> 00:22:32,460 kama mimi tumefanya hapa juu ya line 22. 474 00:22:32,460 --> 00:22:36,780 >> Hivyo kama mimi kusema katika juu ya line 30, nini kwamba pengine akimaanisha 475 00:22:36,780 --> 00:22:38,610 kuhusu nini mchemraba gani kwa ajili yangu? 476 00:22:38,610 --> 00:22:41,110 Yeah? 477 00:22:41,110 --> 00:22:42,310 Ni anarudi integer. 478 00:22:42,310 --> 00:22:44,590 Hivyo ni mikono yangu nyuma, kwa mfano, kipande cha karatasi 479 00:22:44,590 --> 00:22:46,580 juu ya ambayo ameandika jibu. 480 00:22:46,580 --> 00:22:50,130 2 cubed, au 3 cubed, au 4 cubed-- chochote mimi kupita katika, 481 00:22:50,130 --> 00:22:51,540 na jinsi gani mimi kutekeleza hili? 482 00:22:51,540 --> 00:22:54,810 Naam, tu n mara n mara n ni jinsi nipate mchemraba thamani. 483 00:22:54,810 --> 00:22:57,110 Hivyo tena, super rahisi wazo, lakini demonstrative 484 00:22:57,110 --> 00:23:00,100 sasa ni jinsi gani tunaweza kuandika kazi kwamba kwa kweli alikuwa na sisi nyuma 485 00:23:00,100 --> 00:23:02,380 maadili ambayo inaweza kuwa ya riba. 486 00:23:02,380 --> 00:23:05,740 >> Hebu tuangalie mfano mmoja mwisho hapa aitwaye moja ya kazi. 487 00:23:05,740 --> 00:23:08,530 Katika mfano huu, ni kuanza kupata zaidi ya kulazimisha. 488 00:23:08,530 --> 00:23:12,400 Hivyo katika kazi moja, hii ilani program-- hatimaye 489 00:23:12,400 --> 00:23:14,920 wito kazi kuitwa GetPositiveInt. 490 00:23:14,920 --> 00:23:17,800 GetPositiveInt ni si kazi katika maktaba CS50, 491 00:23:17,800 --> 00:23:20,400 lakini tuliamua sisi ungependa kuwepo. 492 00:23:20,400 --> 00:23:24,550 >> Hivyo kama sisi kitabu chini baadaye katika faili, taarifa jinsi nilikwenda kuhusu utekelezaji wa 493 00:23:24,550 --> 00:23:26,560 kupata chanya int, na mimi kusema ni zaidi ya kulazimisha 494 00:23:26,560 --> 00:23:28,992 kwa sababu hii ni heshima idadi ya mistari ya kificho. 495 00:23:28,992 --> 00:23:30,700 Siyo tu silly kidogo toy mpango. 496 00:23:30,700 --> 00:23:33,870 Ni kweli got baadhi ya kuangalia makosa na kufanya kitu muhimu zaidi. 497 00:23:33,870 --> 00:23:38,470 >> Hivyo kama wewe hawajakiona walkthrough videos kwamba tuna iliyoingia katika pset1, 498 00:23:38,470 --> 00:23:42,350 kujua kwamba hii ni aina ya kitanzi katika C, sawa katika roho 499 00:23:42,350 --> 00:23:44,270 kwa aina ya mambo Scratch wanaweza kufanya. 500 00:23:44,270 --> 00:23:46,320 Na kufanya anasema kufanya hivyo. 501 00:23:46,320 --> 00:23:47,500 Magazeti hii nje. 502 00:23:47,500 --> 00:23:51,860 Kisha kwenda mbele na kupata n-- kupata int na kuhifadhi katika n, 503 00:23:51,860 --> 00:23:55,760 na kuendelea kufanya hivyo tena na tena na tena hivyo kwa muda mrefu kama n ni chini ya moja. 504 00:23:55,760 --> 00:23:58,720 >> Hivyo n ni kwenda kuwa chini ya moja tu kama binadamu si kushirikiana. 505 00:23:58,720 --> 00:24:01,980 Kama yeye au yeye ni kuandika katika 0 au -1 au -50, 506 00:24:01,980 --> 00:24:04,790 kitanzi hii ni kwenda kuweka utekelezaji tena na tena. 507 00:24:04,790 --> 00:24:07,549 Na hatimaye taarifa, mimi tu kurudi thamani. 508 00:24:07,549 --> 00:24:09,590 Hivyo basi, tuna kazi kwamba ingekuwa tumekuwa nzuri 509 00:24:09,590 --> 00:24:14,040 kama CS50 bila kutekeleza katika CS50.h na CS50.c kwa ajili yenu, 510 00:24:14,040 --> 00:24:16,520 lakini hapa tunaweza sasa kutekeleza hili sisi wenyewe. 511 00:24:16,520 --> 00:24:19,230 >> Lakini maoni mawili juu ya baadhi ya maelezo muhimu. 512 00:24:19,230 --> 00:24:24,390 One-- kwa nini mimi kutangaza int n, unafikiri, juu ya mstari 29 513 00:24:24,390 --> 00:24:27,139 badala ya kufanya tu hii hapa, ambayo ni 514 00:24:27,139 --> 00:24:28,930 zaidi sambamba na nini tulifanya wiki iliyopita? 515 00:24:28,930 --> 00:24:29,430 Yeah? 516 00:24:29,430 --> 00:24:34,485 517 00:24:34,485 --> 00:24:35,110 wazo nzuri. 518 00:24:35,110 --> 00:24:37,080 Hivyo kama sisi walikuwa na kuiweka hapa, ni kana kwamba sisi 519 00:24:37,080 --> 00:24:39,110 kuweka kutangaza ni tena na tena. 520 00:24:39,110 --> 00:24:42,000 Kwamba katika yenyewe ni si tatizo, per se, 521 00:24:42,000 --> 00:24:43,940 kwa sababu sisi tu haja thamani mara moja na kisha 522 00:24:43,940 --> 00:24:45,330 sisi ni kwenda kupata moja mpya anyway. 523 00:24:45,330 --> 00:24:45,940 Lakini wazo nzuri. 524 00:24:45,940 --> 00:24:46,440 Yeah? 525 00:24:46,440 --> 00:24:52,770 526 00:24:52,770 --> 00:24:53,330 >> Close. 527 00:24:53,330 --> 00:24:59,030 Hivyo kwa sababu nimekuwa alitangaza n juu ya line 29 nje ya kitanzi, 528 00:24:59,030 --> 00:25:01,390 ni kupatikana katika kazi hii nzima. 529 00:25:01,390 --> 00:25:05,400 Si kazi nyingine kwa sababu n ni bado ndani ya hizi curly 530 00:25:05,400 --> 00:25:06,470 inakabiliwa na hapa. 531 00:25:06,470 --> 00:25:07,940 So-- uhakika. 532 00:25:07,940 --> 00:25:12,430 533 00:25:12,430 --> 00:25:12,940 >> Hasa. 534 00:25:12,940 --> 00:25:14,356 Hivyo hii ni hata zaidi kwa uhakika. 535 00:25:14,356 --> 00:25:18,600 Kama sisi badala alitangaza n haki hapa kwenye mstari 32, 536 00:25:18,600 --> 00:25:22,340 ni tatizo kwa sababu nadhani mahali pengine ambapo mimi haja ya kupata hiyo? 537 00:25:22,340 --> 00:25:25,620 On line 34, na rahisi utawala wa kidole gumba ni 538 00:25:25,620 --> 00:25:30,060 kwamba unaweza tu kutumia variable ndani ya hivi karibuni braces curly 539 00:25:30,060 --> 00:25:31,420 katika ambayo wewe amekiri kuwa ni. 540 00:25:31,420 --> 00:25:35,230 >> Kwa bahati mbaya, line 34 ni line moja kuchelewa mno, 541 00:25:35,230 --> 00:25:38,560 kwa sababu nimekuwa tayari imefungwa brace curly juu ya line 33 542 00:25:38,560 --> 00:25:41,220 kwamba sambamba na curly brace juu ya line 30. 543 00:25:41,220 --> 00:25:44,180 Na hivyo hii ni njia ya kusema kwamba hii variable int ni scoped, 544 00:25:44,180 --> 00:25:46,970 hivyo kusema, kwa ndani ya tu ya braces wale curly. 545 00:25:46,970 --> 00:25:48,910 Ni tu haipo nje ya yao. 546 00:25:48,910 --> 00:25:51,580 >> Hivyo kweli, kama mimi kufanya hivyo vibaya, basi mimi kuokoa code 547 00:25:51,580 --> 00:25:53,530 kama ni is-- kimakosa maandishi. 548 00:25:53,530 --> 00:25:57,990 Hebu kwenda mbele na kufanya kufanya kazi-1, na makosa notice--. 549 00:25:57,990 --> 00:26:03,502 Matumizi ya Undeclared kitambulisho n juu ya line 35, ambayo ni haki hapa. 550 00:26:03,502 --> 00:26:05,210 Na kama sisi kitabu juu zaidi, mtu mwingine. 551 00:26:05,210 --> 00:26:08,750 Matumizi ya Undeclared kitambulisho n juu ya line 34. 552 00:26:08,750 --> 00:26:11,200 >> Hivyo compiler, Clang, ni noticing kwamba ni tu 553 00:26:11,200 --> 00:26:13,720 haipo ingawa wazi ni pale kuibua. 554 00:26:13,720 --> 00:26:16,090 Hivyo fix rahisi ni kutangaza ni huko. 555 00:26:16,090 --> 00:26:18,790 >> Sasa basi mimi kitabu kwa juu ya faili. 556 00:26:18,790 --> 00:26:21,080 Nini anaruka nje saa wewe kama kuwa tofauti kidogo 557 00:26:21,080 --> 00:26:23,070 na mambo sisi inaonekana katika wiki iliyopita? 558 00:26:23,070 --> 00:26:26,990 Wala si mimi tu na jina, si tu kufanya Mimi na baadhi ya mkali ni pamoja na juu juu, 559 00:26:26,990 --> 00:26:29,340 Nina jambo mimi nina wito mfano. 560 00:26:29,340 --> 00:26:36,100 Sasa kwamba inaonekana awfully sawa na kile sisi tu kuona wakati iliyopita juu ya line 27. 561 00:26:36,100 --> 00:26:39,230 >> Basi hebu infer kutoka mbalimbali ujumbe wa makosa kwa nini mimi tumefanya hii. 562 00:26:39,230 --> 00:26:42,050 Hebu kwenda mbele na kufuta mistari haya huko. 563 00:26:42,050 --> 00:26:44,240 Na hivyo sisi kujua chochote kuhusu mfano. 564 00:26:44,240 --> 00:26:45,430 Remake faili hii. 565 00:26:45,430 --> 00:26:46,890 Kufanya kazi moja. 566 00:26:46,890 --> 00:26:48,090 Na sasa, damn, makosa manne. 567 00:26:48,090 --> 00:26:50,220 Hebu kitabu juu kwa moja kwanza. 568 00:26:50,220 --> 00:26:55,070 >> Kinachojitokeza tamko la kazi kupata chanya int ni batili katika C99. 569 00:26:55,070 --> 00:26:57,780 C99 tu ina maana 1999 toleo la lugha 570 00:26:57,780 --> 00:26:59,710 C, ambayo ni nini sisi ni kweli kutumia. 571 00:26:59,710 --> 00:27:01,050 Hivyo hii ina maana gani? 572 00:27:01,050 --> 00:27:05,250 Naam C-- na hasa zaidi C compilers-- ni mipango pretty bubu. 573 00:27:05,250 --> 00:27:07,420 Wao tu kujua nini wameweza aliwaambia, na kwamba 574 00:27:07,420 --> 00:27:08,960 kweli mada kutoka wiki iliyopita. 575 00:27:08,960 --> 00:27:12,910 >> Tatizo ni kwamba kama mimi kwenda kuhusu utekelezaji wa jina up hapa, 576 00:27:12,910 --> 00:27:17,640 na mimi simu kazi kuitwa GetPositiveInt hapa juu ya line 20, 577 00:27:17,640 --> 00:27:22,520 kazi ambayo haina kitaalam kuwepo mpaka compiler anaona line 27. 578 00:27:22,520 --> 00:27:25,450 Kwa bahati mbaya, compiler ni kufanya mambo ya juu, chini, kushoto, kulia, 579 00:27:25,450 --> 00:27:29,580 hivyo kwa sababu ni hajapata kumwona utekelezaji wa GetPositiveInt, 580 00:27:29,580 --> 00:27:32,400 lakini anaona wewe kujaribu kutumia it up hapa, 581 00:27:32,400 --> 00:27:35,810 ni tu kwenda kwa bail-- yell saa wewe na makosa message-- labda 582 00:27:35,810 --> 00:27:38,440 cryptic, na si kweli kukusanya file. 583 00:27:38,440 --> 00:27:41,940 >> Hivyo kinachojulikana mfano up hapa ni admittedly redundant. 584 00:27:41,940 --> 00:27:47,870 Literally, nilikwenda chini hapa na mimi kunakiliwa na pasted hii, na mimi kuweka it up hapa. 585 00:27:47,870 --> 00:27:51,020 Void itakuwa sahihi zaidi, hivyo tutaweza literally nakala na kuweka wakati huu. 586 00:27:51,020 --> 00:27:52,854 I literally kunakiliwa na pasted yake. 587 00:27:52,854 --> 00:27:54,270 Kweli tu kama kama mkate chembe. 588 00:27:54,270 --> 00:27:56,260 >> kidokezo kidogo compiler. 589 00:27:56,260 --> 00:27:58,860 Sijui nini hii bado, lakini mimi nina kuahidi wewe 590 00:27:58,860 --> 00:28:00,260 kwamba itakuwa kuwepo hatimaye. 591 00:28:00,260 --> 00:28:04,010 Na kwamba ni kwa nini hii line-- katika line 16-- mwisho na semicolon. 592 00:28:04,010 --> 00:28:05,486 Ni redundant na design. 593 00:28:05,486 --> 00:28:05,986 Ndiyo? 594 00:28:05,986 --> 00:28:11,340 595 00:28:11,340 --> 00:28:14,360 >> Kama hakuwa na kiungo maktaba yako kwa the-- oh, swali zuri. 596 00:28:14,360 --> 00:28:17,350 Sharp ni pamoja na inclusions header file. 597 00:28:17,350 --> 00:28:20,040 Haja ya be-- lazima karibu daima kuwa saa ya juu sana 598 00:28:20,040 --> 00:28:23,270 ya faili kwa ajili ya similar-- kwa hasa sababu hiyo hiyo, ndiyo. 599 00:28:23,270 --> 00:28:26,430 Kwa sababu katika kiwango io.h ni literally line 600 00:28:26,430 --> 00:28:30,560 kama hii, lakini kwa neno printf, na na hoja yake na kurudi aina yake. 601 00:28:30,560 --> 00:28:33,310 Na hivyo kwa kufanya mkali ni pamoja na up hapa, nini wewe literally kufanya 602 00:28:33,310 --> 00:28:36,380 ni kuiga na pasting yaliyomo ya mtu mwingine aliandika juu juu. 603 00:28:36,380 --> 00:28:39,660 Hivyo cluing code yako katika ukweli kwamba kazi hizo kufanya kuwepo. 604 00:28:39,660 --> 00:28:40,160 Yeah? 605 00:28:40,160 --> 00:28:47,520 606 00:28:47,520 --> 00:28:48,260 >> Kabisa. 607 00:28:48,260 --> 00:28:51,690 Hivyo wajanja sana na sahihi ufumbuzi itakuwa, unajua nini? 608 00:28:51,690 --> 00:28:53,760 Mimi sijui nini a mfano ni, lakini Mimi najua 609 00:28:53,760 --> 00:28:56,390 kama mimi kuelewa kwamba C ni tu bubu na rethinks juu hadi chini. 610 00:28:56,390 --> 00:28:57,820 Naam hebu kuwapa nini anataka. 611 00:28:57,820 --> 00:29:01,650 Hebu kukata kwamba code, kuweka it up juu, na sasa kushinikiza kuu ya chini chini. 612 00:29:01,650 --> 00:29:03,470 Hii pia itakuwa kutatua tatizo. 613 00:29:03,470 --> 00:29:07,409 >> Lakini unaweza kwa urahisi sana kuja na mazingira ambayo A haja ya simu B, 614 00:29:07,409 --> 00:29:10,075 na labda B wito nyuma A. Hii ni kitu kinachoitwa kujirudia, 615 00:29:10,075 --> 00:29:11,370 na tutaweza kuja nyuma na kwamba. 616 00:29:11,370 --> 00:29:13,911 Na wanaweza au si kuwa nzuri kitu, lakini unaweza dhahiri 617 00:29:13,911 --> 00:29:15,110 kuvunja ufumbuzi huu. 618 00:29:15,110 --> 00:29:17,690 >> Na zaidi ya hayo, napenda kudai stylistically, 619 00:29:17,690 --> 00:29:20,760 hasa wakati mipango yako kuwa hii kwa muda mrefu na hii kwa muda mrefu, 620 00:29:20,760 --> 00:29:23,064 ni tu super rahisi kuweka kuu saa ya juu 621 00:29:23,064 --> 00:29:25,730 kwa sababu ni jambo la programmers ni kwenda huduma ya juu. 622 00:29:25,730 --> 00:29:28,150 Na hivyo ni safi kidogo, arguably, kwa kufanya hivyo kwa njia 623 00:29:28,150 --> 00:29:30,380 Mimi awali alifanya hivyo kwa mfano hata 624 00:29:30,380 --> 00:29:33,396 ingawa inaonekana kidogo redundant katika mtazamo wa kwanza. 625 00:29:33,396 --> 00:29:33,895 Yeah? 626 00:29:33,895 --> 00:29:36,472 627 00:29:36,472 --> 00:29:37,680 Sorry, unaweza kusema ni sauti? 628 00:29:37,680 --> 00:29:45,650 629 00:29:45,650 --> 00:29:49,580 >> Kama wewe kubadili maeneo ya utekelezaji na mfano? 630 00:29:49,580 --> 00:29:51,270 Hivyo hiyo ni swali zuri. 631 00:29:51,270 --> 00:29:53,780 Kama wewe re-kutangaza hii chini hapa, hebu angalia nini kinatokea. 632 00:29:53,780 --> 00:29:55,530 Hivyo kama mimi kuweka chini hii hapa, wewe ni kusema. 633 00:29:55,530 --> 00:29:57,860 634 00:29:57,860 --> 00:29:58,360 Oh, sorry. 635 00:29:58,360 --> 00:29:58,859 Louder? 636 00:29:58,859 --> 00:30:02,000 637 00:30:02,000 --> 00:30:04,011 Hata nguvu zaidi. 638 00:30:04,011 --> 00:30:04,760 Oh, swali zuri. 639 00:30:04,760 --> 00:30:05,860 Je, ni kubatilisha kazi? 640 00:30:05,860 --> 00:30:08,901 Unajua, baada ya miaka yote haya, mimi na kamwe kuweka mfano baadaye. 641 00:30:08,901 --> 00:30:13,810 Basi hebu kufanya kufanya kazi-1 baada ya kufanya hivyo. 642 00:30:13,810 --> 00:30:15,279 >> [Muttering] 643 00:30:15,279 --> 00:30:16,320 DAVID J. Malan: Oh, kusubiri. 644 00:30:16,320 --> 00:30:17,944 Bado tuna kuweka kila kitu juu juu. 645 00:30:17,944 --> 00:30:21,400 Basi hebu kufanya hili hadi hapa, kama mimi nina kuelewa swali lako kwa usahihi. 646 00:30:21,400 --> 00:30:24,700 Mimi nina kuweka kila kitu, ikiwa ni pamoja na mfano juu kuu, 647 00:30:24,700 --> 00:30:28,180 lakini mimi nina kuweka mfano chini ya utekelezaji. 648 00:30:28,180 --> 00:30:33,190 >> Hivyo kama mimi kufanya moja, mimi nina kupata nyuma error-- outnyttjade variable n. 649 00:30:33,190 --> 00:30:37,280 650 00:30:37,280 --> 00:30:37,860 Oh, huko. 651 00:30:37,860 --> 00:30:38,360 Asante. 652 00:30:38,360 --> 00:30:39,430 Hebu angalia, sisi kujikwamua hii. 653 00:30:39,430 --> 00:30:41,304 Hiyo ni mdudu tofauti, hivyo hebu kupuuza kwamba. 654 00:30:41,304 --> 00:30:43,910 Hebu kweli haraka remake hii. 655 00:30:43,910 --> 00:30:48,100 >> OK, hivyo hoja data si kutumiwa na String format 656 00:30:48,100 --> 00:30:52,310 n-- oh, hiyo ni kwa sababu Mimi iliyopita kwa haya hapa. 657 00:30:52,310 --> 00:30:55,885 Zote haki, sisi kujua nini jibu ni kwenda to-- yote ya haki, hapa sisi kwenda. 658 00:30:55,885 --> 00:31:00,560 Ah, shukrani kwa ajili ya chanya. 659 00:31:00,560 --> 00:31:03,430 Haki wote, mimi kurekebisha kanuni hii after-- kupuuza hii mdudu fulani 660 00:31:03,430 --> 00:31:08,300 tangu hii was-- kazi ni jibu. 661 00:31:08,300 --> 00:31:11,560 >> Hivyo hana overwrite nini umefanya tu kufanyika. 662 00:31:11,560 --> 00:31:14,800 Mimi mtuhumiwa compiler imeandikwa katika namna 663 00:31:14,800 --> 00:31:18,420 kuwa ni kupuuza mfano wako kwa sababu mwili, hivyo kusema, 664 00:31:18,420 --> 00:31:20,922 ya kazi tayari unatekelezwa juu up. 665 00:31:20,922 --> 00:31:23,380 Mimi ingekuwa kweli kushauriana mwongozo wa compiler 666 00:31:23,380 --> 00:31:26,171 kuelewa kama kuna mtu mwingine yeyote maana, lakini katika mtazamo wa kwanza 667 00:31:26,171 --> 00:31:29,290 tu kwa kujaribu na majaribio, inaonekana kuna kuwa hakuna madhara. 668 00:31:29,290 --> 00:31:30,730 Swali nzuri. 669 00:31:30,730 --> 00:31:33,660 >> Basi hebu yazua mbele sasa, kuhamia mbali na madhara ambayo 670 00:31:33,660 --> 00:31:36,660 ni kazi ambayo kufanya kitu kama kuibua juu ya screen na printf, 671 00:31:36,660 --> 00:31:38,090 lakini si kurudi thamani. 672 00:31:38,090 --> 00:31:41,550 Na kazi ambayo kuwa na kurudi maadili kama sisi tu kuona wachache. 673 00:31:41,550 --> 00:31:45,350 Sisi tayari aliona wazo hili la wigo, na tutaweza kuona hii tena na tena. 674 00:31:45,350 --> 00:31:47,210 Lakini kwa sasa, tena, kutumia utawala wa kidole gumba 675 00:31:47,210 --> 00:31:51,410 kwamba variable inaweza tu kutumika ndani ya hivi karibuni kufunguliwa 676 00:31:51,410 --> 00:31:54,350 na kufungwa braces curly kama sisi aliona katika mfano kwamba fulani. 677 00:31:54,350 --> 00:31:56,910 >> Na kama wewe alisema, kuna ability-- 678 00:31:56,910 --> 00:32:00,040 unaweza kutatua baadhi ya matatizo haya kwa kuweka variable kimataifa 679 00:32:00,040 --> 00:32:01,290 saa sana juu ya faili. 680 00:32:01,290 --> 00:32:03,630 Lakini katika karibu kesi zote tunataka frown juu kwamba, 681 00:32:03,630 --> 00:32:06,170 na kwa kweli si hata kwenda ndani ya kwamba ufumbuzi kwa sasa. 682 00:32:06,170 --> 00:32:09,890 Hivyo kwa sasa, takeaway ni kwamba vigezo na wazo hili la wigo. 683 00:32:09,890 --> 00:32:13,430 >> Lakini sasa hebu tuangalie mwingine njia kavu ya kweli kuangalia 684 00:32:13,430 --> 00:32:15,810 katika baadhi ya pretty kuvutia utekelezaji maelezo. 685 00:32:15,810 --> 00:32:17,810 Jinsi sisi wanaweza kuwakilisha habari. 686 00:32:17,810 --> 00:32:20,370 Na sisi tayari inaonekana saa hii katika wiki ya kwanza ya darasa. 687 00:32:20,370 --> 00:32:23,320 Kuangalia binaries, na kujikumbusha ya decimal. 688 00:32:23,320 --> 00:32:28,310 >> Lakini kukumbuka kutoka wiki iliyopita kwamba C ina aina mbalimbali data na mashada zaidi, 689 00:32:28,310 --> 00:32:30,600 lakini ndio muhimu zaidi kwa sasa inaweza kuwa hizi. 690 00:32:30,600 --> 00:32:36,030 char, au tabia, ambayo hufanyika kuwa Byte moja, au bits nane jumla. 691 00:32:36,030 --> 00:32:40,060 Na kwamba ni kusema kwamba ukubwa ya char ni byte moja tu. 692 00:32:40,060 --> 00:32:45,370 Byte ni bits nane, hivyo hii ina maana kwamba tunaweza kuwakilisha wahusika wangapi. 693 00:32:45,370 --> 00:32:47,320 Jinsi barua nyingi au alama juu ya keyboard 694 00:32:47,320 --> 00:32:49,210 kama tuna byte moja au bits nane. 695 00:32:49,210 --> 00:32:51,546 Fikiria nyuma wiki sifuri. 696 00:32:51,546 --> 00:32:53,420 Kama una bits nane, jinsi wengi maadili ya jumla ya 697 00:32:53,420 --> 00:32:55,503 unaweza kuwakilisha na mifumo ya zeros na ndio? 698 00:32:55,503 --> 00:32:58,170 699 00:32:58,170 --> 00:33:00,260 One-- zaidi kuliko hiyo. 700 00:33:00,260 --> 00:33:03,490 Hivyo jumla 256 kama wewe kuanza kuhesabu kutoka sifuri. 701 00:33:03,490 --> 00:33:07,120 Hivyo kama una nane bits-- hivyo kama sisi alikuwa balbu wetu binary up hapa tena, 702 00:33:07,120 --> 00:33:12,180 tunaweza kugeuka wale balbu mwanga juu ya na mbali katika yoyote ya 256 mifumo ya kipekee. 703 00:33:12,180 --> 00:33:13,640 >> Sasa hii ni kidogo tatizo. 704 00:33:13,640 --> 00:33:16,857 Si sana kwa lugha ya Kiingereza na romance lugha, lakini kwa hakika 705 00:33:16,857 --> 00:33:19,190 wakati wewe kuanzisha, kwa mfano, lugha za Asia, ambayo 706 00:33:19,190 --> 00:33:22,580 na alama mbali zaidi kuliko kama Barua 26 za alfabeti. 707 00:33:22,580 --> 00:33:24,390 Sisi kwa kweli wanaweza kuhitaji zaidi ya Byte moja. 708 00:33:24,390 --> 00:33:28,240 Na nashiriki katika miaka ya hivi karibuni ina jamii 709 00:33:28,240 --> 00:33:31,040 iliyopitishwa viwango vingine kwamba matumizi ya Byte zaidi ya moja kwa malipo. 710 00:33:31,040 --> 00:33:34,210 >> Lakini kwa sasa katika C, default ni tu Byte moja au bits nane. 711 00:33:34,210 --> 00:33:38,195 integer, wakati huo huo, ni nne ka, inayojulikana kama 32 bits. 712 00:33:38,195 --> 00:33:41,320 Ambayo ina maana nini kubwa iwezekanavyo simu tunaweza kuwakilisha na int 713 00:33:41,320 --> 00:33:41,820 inaonekana? 714 00:33:41,820 --> 00:33:44,426 715 00:33:44,426 --> 00:33:45,050 Pamoja na bilioni. 716 00:33:45,050 --> 00:33:46,760 Hivyo ni bilioni nne kutoa au kuchukua. 717 00:33:46,760 --> 00:33:49,840 2 kwa nguvu 32th, kama sisi kudhani hakuna namba hasi 718 00:33:49,840 --> 00:33:52,530 na tu kutumia yote mazuri namba, ni bilioni nne 719 00:33:52,530 --> 00:33:53,730 kutoa au kuchukua uwezekano. 720 00:33:53,730 --> 00:33:57,890 kuelea, wakati huo huo, ni aina tofauti ya data ya aina katika C. Ni bado ya simu, 721 00:33:57,890 --> 00:33:58,990 lakini ni idadi halisi. 722 00:33:58,990 --> 00:34:00,660 Kitu kwa uhakika. 723 00:34:00,660 --> 00:34:03,000 Na zinageuka kuwa C pia hutumia ka nne 724 00:34:03,000 --> 00:34:05,340 kuwakilisha yaliyo maadili uhakika. 725 00:34:05,340 --> 00:34:09,420 >> Kwa bahati mbaya jinsi wengi yaliyo maadili uhakika ni huko katika dunia? 726 00:34:09,420 --> 00:34:11,582 Jinsi wengi halisi idadi ni huko? 727 00:34:11,582 --> 00:34:13,540 Kuna usio idadi, na kwa jambo hilo 728 00:34:13,540 --> 00:34:15,164 kuna idadi ya usio wa integers. 729 00:34:15,164 --> 00:34:18,070 Hivyo sisi ni tayari aina ya kuchimba wenyewe shimo hapa. 730 00:34:18,070 --> 00:34:21,780 Ambapo inaonekana katika computers-- katika mipango angalau yaliyoandikwa katika C juu ya them-- 731 00:34:21,780 --> 00:34:24,110 unaweza tu kuhesabu kama juu kama bilioni nne kutoa au kuchukua, 732 00:34:24,110 --> 00:34:26,260 na yaliyo maadili uhakika unaweza tu inaonekana 733 00:34:26,260 --> 00:34:28,330 kuwa na baadhi ya kiasi kidogo cha usahihi. 734 00:34:28,330 --> 00:34:30,810 Tu tatu wengi baada ya hatua yao decimal. 735 00:34:30,810 --> 00:34:32,822 >> Kwa sababu, bila shaka, kama wewe tu 32 bits, 736 00:34:32,822 --> 00:34:36,030 Sijui jinsi sisi ni kwenda kwenda juu anayewakilisha numbers-- halisi pengine 737 00:34:36,030 --> 00:34:37,409 na aina tofauti ya mifumo ya. 738 00:34:37,409 --> 00:34:40,030 Lakini kuna hakika finite idadi ya mifumo hiyo, 739 00:34:40,030 --> 00:34:41,830 hivyo hapa, pia, hili ni tatizo. 740 00:34:41,830 --> 00:34:43,710 >> Sasa tunaweza kuepuka tatizo kidogo. 741 00:34:43,710 --> 00:34:45,710 Kama huna kutumia kuelea, unaweza kutumia mara mbili 742 00:34:45,710 --> 00:34:50,230 katika C, ambayo inatoa wewe ka nane, ambayo ni chati njia zaidi uwezekano wa zeros 743 00:34:50,230 --> 00:34:50,730 na ndio. 744 00:34:50,730 --> 00:34:55,199 Lakini bado ni finite, ambayo ni kwenda kuwa tatizo kama wewe kuandika programu 745 00:34:55,199 --> 00:34:57,670 kwa graphics au kwa dhana hisabati. 746 00:34:57,670 --> 00:35:00,410 Basi unaweza kweli wanataka kuhesabu kubwa kuliko hiyo. 747 00:35:00,410 --> 00:35:05,640 muda mrefu long-- stupidly named-- ni pia ka nane, au 64 bits, 748 00:35:05,640 --> 00:35:10,260 na hii ni mara mbili kwa muda mrefu kama int, na ni kwa muda mrefu thamani integer. 749 00:35:10,260 --> 00:35:15,655 >> Furaha fact-- kama int ni ka nne, muda gani ni ya muda mrefu katika C kawaida? 750 00:35:15,655 --> 00:35:18,290 751 00:35:18,290 --> 00:35:21,560 Pia ka nne, lakini ya muda mrefu ni ka nane, 752 00:35:21,560 --> 00:35:23,050 na hii ni kwa sababu za kihistoria. 753 00:35:23,050 --> 00:35:26,450 >> Lakini takeaway sasa ni tu data ambayo ina 754 00:35:26,450 --> 00:35:29,625 kuwakilishwa katika computer-- hiyo ni kifaa kimwili na umeme, 755 00:35:29,625 --> 00:35:32,190 ni kwa ujumla kuendesha gari wale zeros na ones-- 756 00:35:32,190 --> 00:35:34,320 kwa kiasi kidogo cha usahihi. 757 00:35:34,320 --> 00:35:35,620 Hivyo tatizo ni nini basi? 758 00:35:35,620 --> 00:35:37,480 >> Naam kuna tatizo ya integer kufurika. 759 00:35:37,480 --> 00:35:39,780 Si tu katika C, lakini katika kompyuta kwa ujumla. 760 00:35:39,780 --> 00:35:42,590 Kwa mfano, kama hii ni byte thamani bit-- 761 00:35:42,590 --> 00:35:45,120 hivyo kama hii ni nane bit-- wote ambayo ni namba moja. 762 00:35:45,120 --> 00:35:47,300 Nini idadi ni hii anayewakilisha kama sisi kudhani 763 00:35:47,300 --> 00:35:50,730 ni maadili yote mazuri katika binary? 764 00:35:50,730 --> 00:35:54,410 >> 255, na si 256, kwa sababu zero ni idadi ya chini kabisa. 765 00:35:54,410 --> 00:35:56,760 Hivyo 255 ni ya juu moja, lakini tatizo 766 00:35:56,760 --> 00:36:00,330 ni kudhani kuwa nilitaka increment variable hii kwamba 767 00:36:00,330 --> 00:36:04,030 ni kwa kutumia bits nane jumla kama nataka increment yake. 768 00:36:04,030 --> 00:36:07,160 >> Naam kwa haraka kama mimi kuongeza moja kwa wote wa watu hao, 769 00:36:07,160 --> 00:36:10,500 unaweza labda kufikiria visually-- tu kama kubeba moja kwa kutumia decimals-- 770 00:36:10,500 --> 00:36:12,300 kitu kinaendelea kati yake upande wa kushoto. 771 00:36:12,300 --> 00:36:15,590 Na hakika, kama mimi kuongeza idadi ya moja kwa hii, kile kinachotokea katika binary 772 00:36:15,590 --> 00:36:17,670 ni kwamba kufurika nyuma hadi kufikia sifuri. 773 00:36:17,670 --> 00:36:21,730 >> Hivyo kama wewe tu use-- si int, lakini byte moja kwa kuhesabu integers 774 00:36:21,730 --> 00:36:27,170 katika mpango, na default-- haraka kama kupata hadi 250, 251, 252, 253, 254, 775 00:36:27,170 --> 00:36:32,710 255-- 0 inakuja baada ya 255, ambayo pengine ni nini 776 00:36:32,710 --> 00:36:34,790 user ni kwenda kutarajia. 777 00:36:34,790 --> 00:36:39,620 >> Sasa wakati huo huo katika hatua floating dunia, wewe pia kuwa na tatizo kama hiyo. 778 00:36:39,620 --> 00:36:42,670 Si sana kwa number-- kubwa ingawa kwamba bado suala hilo. 779 00:36:42,670 --> 00:36:45,360 Lakini pamoja na kiasi cha usahihi kwamba unaweza kuwakilisha. 780 00:36:45,360 --> 00:36:49,490 Basi hebu tuangalie mfano huu hapa pia kuanzia leo chanzo code-- 781 00:36:49,490 --> 00:36:52,070 kuelea-0.c. 782 00:36:52,070 --> 00:36:54,280 >> Na taarifa ni super mpango rahisi ambayo 783 00:36:54,280 --> 00:36:56,580 lazima inaonekana magazeti nje thamani gani? 784 00:36:56,580 --> 00:37:00,777 785 00:37:00,777 --> 00:37:04,110 Je, wager hii ni kwenda magazeti ingawa kuna kidogo ya syntax mpya 786 00:37:04,110 --> 00:37:05,540 hapa? 787 00:37:05,540 --> 00:37:06,700 Hivyo hopefully 0.1. 788 00:37:06,700 --> 00:37:10,000 Hivyo ni sawa na moja ya kumi kwa sababu mimi nina kufanya 1 kugawanywa na 10. 789 00:37:10,000 --> 00:37:12,430 Mimi nina kuhifadhi jibu katika variable kuitwa f. 790 00:37:12,430 --> 00:37:15,850 Variable kwamba ni ya aina kuelea, ambayo ni keyword I just mapendekezo kuwepo. 791 00:37:15,850 --> 00:37:18,910 >> Tumekuwa si hii kuona mbele, lakini hii ni aina ya njia nadhifu katika printf 792 00:37:18,910 --> 00:37:22,110 kutaja tarakimu ngapi wanataka kuona baada ya uhakika decimal. 793 00:37:22,110 --> 00:37:25,020 Hivyo nukuu hii tu ina maana kwamba hapa ni placeholder. 794 00:37:25,020 --> 00:37:27,900 Ni kwa ajili ya hatua yaliyo thamani, na oh, kwa njia, 795 00:37:27,900 --> 00:37:31,389 kuonyesha kuwa na uhakika decimal pamoja na namba moja baada ya uhakika decimal. 796 00:37:31,389 --> 00:37:33,180 Hivyo hiyo ni idadi ya tarakimu muhimu, 797 00:37:33,180 --> 00:37:34,650 hivyo kusema, kwamba unaweza kutaka. 798 00:37:34,650 --> 00:37:40,450 >> Hivyo basi mimi kwenda mbele na kufanya kufanya kuelea-0, ./float-0, 799 00:37:40,450 --> 00:37:46,660 na inaonekana 1 kugawanywa na 10 ni 0.0. 800 00:37:46,660 --> 00:37:47,760 Sasa kwa nini hii? 801 00:37:47,760 --> 00:37:51,380 >> Naam tena, kompyuta ni kuchukua mimi literally, na Nimeandika 1 802 00:37:51,380 --> 00:37:56,680 na mimi imeandikwa 10, na kuchukua nadhani nini ni kudhani data ya aina kwa wale wawili 803 00:37:56,680 --> 00:37:58,440 maadili? 804 00:37:58,440 --> 00:38:00,970 int, ni kitaalam kitu kidogo tofauti. 805 00:38:00,970 --> 00:38:04,150 Ni kawaida kwa muda mrefu, lakini ni hatimaye thamani muhimu. 806 00:38:04,150 --> 00:38:06,030 Si floating kumweka thamani. 807 00:38:06,030 --> 00:38:09,456 >> Ambayo ni kusema kwamba kama hii ni int na hii ni int, 808 00:38:09,456 --> 00:38:11,830 Tatizo ni kwamba kompyuta hana uwezo 809 00:38:11,830 --> 00:38:13,680 hata kuhifadhi kwamba decimal uhakika. 810 00:38:13,680 --> 00:38:16,430 Hivyo wakati wewe kufanya 1 kugawanywa kwa 10 kwa kutumia integers 811 00:38:16,430 --> 00:38:20,950 kwa wote kadiri na denominator, jibu lazima 0.1. 812 00:38:20,950 --> 00:38:24,930 Lakini kwa sababu computer-- wale ni integers-- 813 00:38:24,930 --> 00:38:27,430 hajui nini cha kufanya na 0.1. 814 00:38:27,430 --> 00:38:30,010 >> Hivyo ni nini ni wazi kufanya? 815 00:38:30,010 --> 00:38:33,120 Ni tu kutupa mbali, na nini mimi nina kuona hatimaye 816 00:38:33,120 --> 00:38:38,830 ni 0.0 tu kwa sababu mimi alisisitiza kuwa printf show me moja decimal uhakika. 817 00:38:38,830 --> 00:38:41,740 Lakini tatizo ni kwamba kama wewe kugawanya integer na integer, 818 00:38:41,740 --> 00:38:44,347 utakuwa get-- kwa ufafanuzi ya C-- integer. 819 00:38:44,347 --> 00:38:46,680 Na si kwenda kufanya kitu kizuri na conveniently 820 00:38:46,680 --> 00:38:49,040 kama pande zote ni juu ya karibu moja juu au chini. 821 00:38:49,040 --> 00:38:51,860 Ni kwenda butu kila kitu baada ya decimal. 822 00:38:51,860 --> 00:38:54,030 >> Hivyo tu intuitively, nini pengine fix? 823 00:38:54,030 --> 00:38:55,351 Nini rahisi fix hapa? 824 00:38:55,351 --> 00:38:55,850 Yeah? 825 00:38:55,850 --> 00:39:00,570 826 00:39:00,570 --> 00:39:01,100 Hasa. 827 00:39:01,100 --> 00:39:04,200 Kwa nini si sisi tu kutibu haya kama yaliyo maadili uhakika ufanisi 828 00:39:04,200 --> 00:39:05,860 kumwelekeza katika ikifungwa au DOUBLES. 829 00:39:05,860 --> 00:39:10,500 Na sasa kama mimi kufanya kufanya ikifungwa-0, au kama mimi kukusanya ikifungwa-1, 830 00:39:10,500 --> 00:39:12,570 ambayo ni sawa na nini mara tu mapendekezo. 831 00:39:12,570 --> 00:39:16,400 Na sasa mimi kufanya ikifungwa-0, sasa mimi kupata 0.1 yangu. 832 00:39:16,400 --> 00:39:17,234 >> Sasa hii ni ajabu. 833 00:39:17,234 --> 00:39:19,441 Lakini sasa mimi nina kwenda kufanya kitu kidogo tofauti. 834 00:39:19,441 --> 00:39:22,280 Mimi nina curious kuona nini kweli kinachoendelea chini ya Hood, 835 00:39:22,280 --> 00:39:26,050 na mimi nina kwenda kwa magazeti hii kufanyika kwa maeneo 28 decimal. 836 00:39:26,050 --> 00:39:29,730 Nataka kweli kuona 0.1000-- infinite-- 837 00:39:29,730 --> 00:39:32,710 [Inaudible] zeros 27 baada ya kwamba 0.1. 838 00:39:32,710 --> 00:39:34,740 >> Naam hebu angalia kama kwamba ni kile kweli kupata. 839 00:39:34,740 --> 00:39:39,430 Kufanya ikifungwa-0 faili moja. 840 00:39:39,430 --> 00:39:41,150 ./floats-0. 841 00:39:41,150 --> 00:39:44,380 Hebu zoom katika juu ya jibu makubwa. 842 00:39:44,380 --> 00:39:49,980 Muda wote huu, wewe tumekuwa kufikiri 1 kugawanywa na 10 ni 10%, au 0.1. 843 00:39:49,980 --> 00:39:50,810 Ni si. 844 00:39:50,810 --> 00:39:53,210 Angalau hivyo mbali kama kompyuta ya wasiwasi. 845 00:39:53,210 --> 00:39:57,060 >> Sasa why-- OK, hiyo ni kamili uongo 1 kugawanywa na 10 ni 0.1. 846 00:39:57,060 --> 00:39:59,710 Lakini why-- kwamba ni si takeaway leo. 847 00:39:59,710 --> 00:40:04,010 Sasa kwa nini kompyuta kufikiri, tofauti na sisi sote katika chumba, 848 00:40:04,010 --> 00:40:06,870 kuwa 1 kugawanywa na 10 ni kweli kwamba thamani crazy? 849 00:40:06,870 --> 00:40:10,620 Nini kompyuta kufanya inaonekana? 850 00:40:10,620 --> 00:40:12,490 Nini hiyo? 851 00:40:12,490 --> 00:40:13,785 >> Ni si kufurika, per se. 852 00:40:13,785 --> 00:40:15,910 Kufurika ni kawaida wakati wewe wrap kuzunguka thamani. 853 00:40:15,910 --> 00:40:18,970 Ni suala hili la kutokuwa sahihi katika hatua floating thamani 854 00:40:18,970 --> 00:40:22,220 ambapo wewe tu 32 au labda hata kidogo 64. 855 00:40:22,220 --> 00:40:25,230 Lakini kama kuna usio simu ya numbers-- halisi 856 00:40:25,230 --> 00:40:27,940 idadi na pointi decimal na idadi thereafter-- hakika 857 00:40:27,940 --> 00:40:29,380 huwezi kuwakilisha wao wote. 858 00:40:29,380 --> 00:40:32,870 Hivyo kompyuta amewapa us mechi karibu 859 00:40:32,870 --> 00:40:37,090 kwa thamani inaweza kuwakilisha kutumia kwamba bits wengi thamani mimi kwa kweli unataka, 860 00:40:37,090 --> 00:40:38,690 ambayo ni 0.1. 861 00:40:38,690 --> 00:40:40,685 >> Kwa bahati mbaya, kama wewe kuanza kufanya math, au wewe 862 00:40:40,685 --> 00:40:44,360 kuanza kuwashirikisha aina hii ya yaliyo maadili kumweka katika programs-- muhimu 863 00:40:44,360 --> 00:40:46,770 programu ya fedha, kijeshi software-- chochote 864 00:40:46,770 --> 00:40:49,090 ambapo mtazamo ni pengine ni pretty muhimu. 865 00:40:49,090 --> 00:40:51,520 Na wewe kuanza kuongeza namba kama hii, na kuanza 866 00:40:51,520 --> 00:40:54,050 kuendesha programu kwamba na pembejeo kweli kubwa 867 00:40:54,050 --> 00:40:56,890 au kwa ajili ya kura ya masaa au kura ya siku au kura ya miaka, 868 00:40:56,890 --> 00:41:01,060 haya makosa kidogo kidogo hakika wanaweza kuongeza juu ya muda. 869 00:41:01,060 --> 00:41:04,252 >> Sasa kama kando, kama wameweza milele kuonekana Superman 3 au ofisi nafasi 870 00:41:04,252 --> 00:41:05,960 na unaweza kukumbuka jinsi wale guys aliiba 871 00:41:05,960 --> 00:41:08,668 fedha nyingi kutoka kwa kompyuta zao kwa kutumia yaliyo maadili uhakika 872 00:41:08,668 --> 00:41:11,290 na kuongeza up kidogo mabaki ya, hopefully kwamba movie 873 00:41:11,290 --> 00:41:12,390 sasa hufanya akili zaidi. 874 00:41:12,390 --> 00:41:14,930 Hii ni nini walikuwa inataja katika kwamba movie. 875 00:41:14,930 --> 00:41:16,710 ukweli kwamba wengi makampuni bila kuangalia 876 00:41:16,710 --> 00:41:18,600 baada ya idadi fulani ya maeneo decimal, 877 00:41:18,600 --> 00:41:20,009 lakini hayo ni sehemu ndogo ya senti. 878 00:41:20,009 --> 00:41:22,550 Hivyo kuanza kuongeza yao juu, kuanza kufanya mengi ya fedha 879 00:41:22,550 --> 00:41:23,424 katika akaunti yako ya benki. 880 00:41:23,424 --> 00:41:25,160 Hivyo hiyo ni Ofisi Space alielezea. 881 00:41:25,160 --> 00:41:28,220 >> Sasa kwa bahati mbaya zaidi ya Ofisi Space, kuna 882 00:41:28,220 --> 00:41:31,794 ni baadhi kihalali kumsumbua na madhara makubwa 883 00:41:31,794 --> 00:41:33,710 wa aina hii ya kubuni maamuzi ya msingi, 884 00:41:33,710 --> 00:41:35,990 na kwa kweli moja ya sababu sisi kutumia C katika mwendo 885 00:41:35,990 --> 00:41:39,640 ni ili kweli kuwa nchi hii up uelewa wa jinsi ya kompyuta kazi, 886 00:41:39,640 --> 00:41:42,440 jinsi programu ya kazi, na kufanya si kuchukua kitu chochote kwa nafasi. 887 00:41:42,440 --> 00:41:45,820 >> Na hakika kwa bahati mbaya, hata kwa kuelewa kwamba msingi, 888 00:41:45,820 --> 00:41:47,370 sisi binadamu kufanya makosa. 889 00:41:47,370 --> 00:41:51,310 Na nini Nilidhani ningependa kushiriki ni hii video dakika nane hapa kuchukuliwa 890 00:41:51,310 --> 00:41:56,980 kutoka kisasa Marvels episode, ambayo ni show elimu juu ya jinsi mambo kazi 891 00:41:56,980 --> 00:42:00,370 kwamba rangi ya picha mbili ya wakati matumizi yasiyofaa 892 00:42:00,370 --> 00:42:02,540 na uelewa wa yaliyo maadili uhakika 893 00:42:02,540 --> 00:42:05,610 imesababisha baadhi ya muhimu bahati mbaya matokeo. 894 00:42:05,610 --> 00:42:06,363 Hebu tuangalie. 895 00:42:06,363 --> 00:42:07,029 [VIDEO avspelning] 896 00:42:07,029 --> 00:42:11,290 -Sisi Sasa kurudi na "Engineering Maafa "juu ya kisasa Marvels. 897 00:42:11,290 --> 00:42:12,940 Kompyuta. 898 00:42:12,940 --> 00:42:15,580 Tumekuwa wote kuja kukubali matatizo mara nyingi frustrating kwamba 899 00:42:15,580 --> 00:42:20,960 got na them-- mende, virusi, na programu glitches-- kwa bei ndogo 900 00:42:20,960 --> 00:42:23,100 kulipa kwa ajili ya urahisi. 901 00:42:23,100 --> 00:42:27,770 Lakini katika tech ya juu na mwendo wa kasi kijeshi na mpango nafasi maombi, 902 00:42:27,770 --> 00:42:32,780 ndogo tatizo unaweza kutukuzwa katika janga. 903 00:42:32,780 --> 00:42:38,880 >> Tarehe 4 Juni, 1996, wanasayansi tayari kuzindua unmanned Ariane 5 rocket. 904 00:42:38,880 --> 00:42:41,190 Ni alikuwa amebeba kisayansi satelaiti iliyoundwa 905 00:42:41,190 --> 00:42:44,570 kujua kwa usahihi jinsi Shamba interacts magnetic Dunia 906 00:42:44,570 --> 00:42:47,380 na upepo nishati ya jua. 907 00:42:47,380 --> 00:42:50,580 roketi ilijengwa kwa Space Agency Ulaya, 908 00:42:50,580 --> 00:42:54,400 na lile mbali kutoka kituo yake katika pwani ya Kifaransa. 909 00:42:54,400 --> 00:42:57,520 >> -At Kuhusu 37 sekunde ndani ya ndege, kwanza 910 00:42:57,520 --> 00:42:59,070 niliona kitu ilikuwa kwenda vibaya. 911 00:42:59,070 --> 00:43:02,240 Hiyo nozzles walikuwa swiveling katika njia ya wao kweli lazima si. 912 00:43:02,240 --> 00:43:06,550 Karibu sekunde 40 ndani ya ndege, wazi gari alikuwa katika shida 913 00:43:06,550 --> 00:43:08,820 na kwamba wakati wao alifanya uamuzi wa kuiharibu. 914 00:43:08,820 --> 00:43:12,370 mbalimbali afisa usalama, na guts kubwa, taabu kifungo 915 00:43:12,370 --> 00:43:18,030 na akapiga juu ya roketi kabla inaweza kuwa hatari kwa usalama wa umma. 916 00:43:18,030 --> 00:43:21,010 >> -Hii Mara maiden safari ya Ariane 5, 917 00:43:21,010 --> 00:43:23,920 na uharibifu wake alichukua mahali kwa sababu ya flaw 918 00:43:23,920 --> 00:43:25,932 iliyoingia katika programu roketi. 919 00:43:25,932 --> 00:43:27,640 -The Tatizo juu ya Ariane ni kwamba kulikuwa 920 00:43:27,640 --> 00:43:30,500 ilikuwa ni idadi ambayo inahitajika 64 bits kwa kueleza, 921 00:43:30,500 --> 00:43:33,560 na walitaka kubadilisha kwa 16-bit idadi. 922 00:43:33,560 --> 00:43:36,820 Wao kudhani kwamba idadi kamwe kwenda kuwa kubwa sana. 923 00:43:36,820 --> 00:43:40,940 Kwamba wengi wa wale tarakimu katika 64-bit idadi walikuwa zeros. 924 00:43:40,940 --> 00:43:42,450 Walikuwa na makosa. 925 00:43:42,450 --> 00:43:45,000 >> -The Kutokuwa na uwezo wa moja mpango wa programu kukubali 926 00:43:45,000 --> 00:43:49,460 aina ya idadi yanayotokana na mwingine ulikuwa ndio mzizi wa kushindwa. 927 00:43:49,460 --> 00:43:54,260 Programu ya maendeleo alikuwa kuwa sehemu ya gharama kubwa sana ya teknolojia mpya. 928 00:43:54,260 --> 00:43:57,060 Ariane 4 roketi alikuwa imekuwa na mafanikio sana. 929 00:43:57,060 --> 00:44:01,600 Sana ya programu iliundwa kwa ajili ya ilikuwa pia kutumika katika Ariane 5. 930 00:44:01,600 --> 00:44:04,790 >> Tatizo -The ya msingi ni kwamba Ariane 5. 931 00:44:04,790 --> 00:44:11,200 Mara faster-- kasi kasi, na programu alikuwa si waliendelea kwa ajili hiyo. 932 00:44:11,200 --> 00:44:14,910 >> -The Uharibifu wa roketi ilikuwa kubwa maafa ya kifedha. 933 00:44:14,910 --> 00:44:18,630 Wote kutokana na programu dakika makosa. 934 00:44:18,630 --> 00:44:21,160 Lakini hii haikuwa kwanza wakati matatizo data uongofu 935 00:44:21,160 --> 00:44:24,770 alikuwa kusumbuliwa teknolojia ya kisasa roketi. 936 00:44:24,770 --> 00:44:28,020 >> -Katika 1991 na kuanza Vita ya Ghuba ya kwanza, 937 00:44:28,020 --> 00:44:30,540 Patriot kombora uzoefu aina hiyo 938 00:44:30,540 --> 00:44:32,465 ya tatizo ya simu kubadilika. 939 00:44:32,465 --> 00:44:36,760 Na kama matokeo 28 people-- 28 Soldiers-- American waliuawa, 940 00:44:36,760 --> 00:44:39,010 na watu karibu mia wengine kujeruhiwa. 941 00:44:39,010 --> 00:44:42,830 Wakati Patriot, ambayo ilitakiwa kulinda dhidi ya Scuds zinazoingia, 942 00:44:42,830 --> 00:44:45,780 alishindwa kwa moto kombora. 943 00:44:45,780 --> 00:44:51,610 >> -Wakati Iraq walivamia Kuwait, na Amerika ya ilizindua Desert Storm katika mapema 1991, 944 00:44:51,610 --> 00:44:55,720 Patriot kombora betri walikuwa uliotumika kulinda Saudi Arabia na Israeli 945 00:44:55,720 --> 00:44:59,180 kutoka Iraq Scud mashambulizi kombora. 946 00:44:59,180 --> 00:45:03,080 Patriot ni Marekani kati-mbalimbali uso-kwa-hewa mfumo 947 00:45:03,080 --> 00:45:06,530 viwandani na kampuni Raytheon. 948 00:45:06,530 --> 00:45:09,500 >> -The Ukubwa wa Patriot interceptor itself-- 949 00:45:09,500 --> 00:45:14,705 ni kuhusu takribani 20 miguu kwa muda mrefu, na uzani wa juu £ 2000. 950 00:45:14,705 --> 00:45:19,090 Na hubeba warhead ya juu, Nadhani ni takribani £ 150. 951 00:45:19,090 --> 00:45:23,880 Na warhead yenyewe ni kulipuka ya juu, ambayo 952 00:45:23,880 --> 00:45:26,700 ina vipande karibu naye. 953 00:45:26,700 --> 00:45:31,630 Hivyo casing ya warhead ni iliyoundwa na kutenda kama buckshot. 954 00:45:31,630 --> 00:45:34,040 >> Makombora -The zinafanywa nne kwa chombo, 955 00:45:34,040 --> 00:45:37,170 na ni kusafirishwa kwa trailer nusu. 956 00:45:37,170 --> 00:45:44,880 >> -The Mfumo Patriot kupambana na kombora inakwenda nyuma angalau miaka 20 sasa. 957 00:45:44,880 --> 00:45:48,380 Ni awali ilikuwa iliyoundwa kama hewa ulinzi kombora 958 00:45:48,380 --> 00:45:50,810 kwa risasi chini ya ndege adui. 959 00:45:50,810 --> 00:45:54,410 Katika Vita ya Ghuba kwanza wakati wa vita kwamba alikuja juu, 960 00:45:54,410 --> 00:45:59,650 Army alitaka kuitumia risasi chini Scuds, si ndege. 961 00:45:59,650 --> 00:46:03,580 Iraq Air Force mara si hivyo mengi ya tatizo, 962 00:46:03,580 --> 00:46:06,590 lakini Jeshi alikuwa na wasiwasi kuhusu Scuds. 963 00:46:06,590 --> 00:46:10,120 Na hivyo walijaribu kuboresha Patriot. 964 00:46:10,120 --> 00:46:12,740 >> -Intercepting Adui kombora kusafiri saa Mach 5 965 00:46:12,740 --> 00:46:15,670 alikuwa anaenda kuwa changamoto ya kutosha. 966 00:46:15,670 --> 00:46:18,440 Lakini wakati Patriot alikimbizwa katika huduma, 967 00:46:18,440 --> 00:46:22,580 Army hakuwa na ufahamu wa Muundo wa Iraq kwamba 968 00:46:22,580 --> 00:46:25,880 alifanya Scuds yao karibu haiwezekani yake. 969 00:46:25,880 --> 00:46:30,690 >> -Nini Kilichotokea ni kwamba Scuds walikuwa kuja katika walikuwa imara. 970 00:46:30,690 --> 00:46:32,000 Walikuwa wobbly. 971 00:46:32,000 --> 00:46:37,210 Sababu ya hayo ni Iraqis-- ili kupata 600 kilomita nje 972 00:46:37,210 --> 00:46:41,680 300 wa kilomita mbalimbali missile-- alichukua uzito nje ya warhead mbele, 973 00:46:41,680 --> 00:46:43,340 na alifanya warhead nyepesi. 974 00:46:43,340 --> 00:46:48,490 Hivyo sasa Patriot ya kujaribu kuja katika Scud, na zaidi ya time-- 975 00:46:48,490 --> 00:46:52,880 idadi kubwa ya time-- ingekuwa tu kuruka kwa Scud. 976 00:46:52,880 --> 00:46:57,120 >> -Baada Patriot mfumo wa kampuni barabara Patriot amekosa lengo lake, 977 00:46:57,120 --> 00:47:01,630 wao detonated warhead Patriot ya ili kuepuka majeruhi iwezekanavyo kama ni 978 00:47:01,630 --> 00:47:04,440 aliruhusiwa kuanguka chini. 979 00:47:04,440 --> 00:47:08,700 >> -Kwamba Ilikuwa nini watu wengi aliona kama fireballs kubwa katika anga, 980 00:47:08,700 --> 00:47:14,180 na kutoeleweka kama intercepts ya Scud warheads. 981 00:47:14,180 --> 00:47:18,020 >> -Although Katika usiku anga, Patriots alionekana kuwa mafanikio kuharibu 982 00:47:18,020 --> 00:47:23,280 Scuds, saa Dhahran kuna inaweza kuwa hakuna kosa kuhusu utendaji wake. 983 00:47:23,280 --> 00:47:27,930 Kuna mfumo wa Patriot ya rada waliopotea wimbo wa Scud zinazoingia 984 00:47:27,930 --> 00:47:30,260 na kamwe ilizindua kutokana na programu flaw. 985 00:47:30,260 --> 00:47:34,060 986 00:47:34,060 --> 00:47:38,880 >> Ilikuwa Israel ambao kwanza aligundua kwamba tena mfumo ilikuwa juu, 987 00:47:38,880 --> 00:47:41,130 zaidi wakati tofauti akawa. 988 00:47:41,130 --> 00:47:44,770 Kutokana na saa iliyoingia katika mfumo wa kompyuta wa ya. 989 00:47:44,770 --> 00:47:48,190 >> -About Wiki mbili kabla ya janga katika Dhahran, 990 00:47:48,190 --> 00:47:50,720 Israel kuripotiwa kwa Wizara ya Ulinzi 991 00:47:50,720 --> 00:47:52,410 kwamba mfumo huo kupoteza muda. 992 00:47:52,410 --> 00:47:54,410 Baada ya muda wa saa nane ya mbio, waligundua 993 00:47:54,410 --> 00:47:57,690 kwamba mfumo wa kuwa na noticeably chini sahihi. 994 00:47:57,690 --> 00:48:01,850 Wizara ya Ulinzi alijibu kwa kuwaambia yote ya betri Patriot 995 00:48:01,850 --> 00:48:04,800 kwa si kuondoka mifumo ya juu ya kwa muda mrefu. 996 00:48:04,800 --> 00:48:06,980 Wao kamwe alisema nini muda mrefu alikuwa. 997 00:48:06,980 --> 00:48:09,140 Masaa 8, 10 masaa, masaa elfu. 998 00:48:09,140 --> 00:48:11,300 Hakuna mtu alijua. 999 00:48:11,300 --> 00:48:13,320 >> -The Betri Patriot iliyopo katika kambi ya 1000 00:48:13,320 --> 00:48:18,310 katika Dhahran na kiujanja wake wa ndani saa alikuwa kwa zaidi ya 100 masaa 1001 00:48:18,310 --> 00:48:21,520 juu ya usiku wa Februari 25. 1002 00:48:21,520 --> 00:48:25,792 >> -Ni Msisimko wakati kwa usahihi ya juu ya kumi ya pili. 1003 00:48:25,792 --> 00:48:27,950 Sasa ya kumi ya pili Idadi ya kuvutia 1004 00:48:27,950 --> 00:48:31,850 kwa sababu haiwezi kuwa walionyesha katika binary hasa, ambayo 1005 00:48:31,850 --> 00:48:36,500 ina maana haiwezi kuwa walionyesha hasa katika yoyote digital kompyuta ya kisasa. 1006 00:48:36,500 --> 00:48:41,070 Ni vigumu kuamini, lakini kutumia hii kama mfano. 1007 00:48:41,070 --> 00:48:43,420 >> Hebu kuchukua tatu namba moja. 1008 00:48:43,420 --> 00:48:47,330 Theluthi moja hawezi kuwa walionyesha katika decimal hasa. 1009 00:48:47,330 --> 00:48:52,060 Moja ya tatu ni 0.333 kinachoendelea kwa infinity. 1010 00:48:52,060 --> 00:48:56,420 Hakuna njia ya kufanya hivyo kwa usahihi kabisa katika decimal. 1011 00:48:56,420 --> 00:48:59,530 Hiyo ni hasa aina ya tatizo yaliyotokea katika Patriot. 1012 00:48:59,530 --> 00:49:04,040 tena mfumo mbio, mbaya kosa wakati akawa. 1013 00:49:04,040 --> 00:49:08,840 >> -Baada Masaa 100 ya kazi, kosa katika wakati alikuwa tu juu ya theluthi moja 1014 00:49:08,840 --> 00:49:10,440 ya pili. 1015 00:49:10,440 --> 00:49:14,150 Lakini katika suala la kulenga kombora kusafiri saa Mach 5, 1016 00:49:14,150 --> 00:49:18,560 ni matokeo ya kufuatilia kosa la zaidi ya 600 mita. 1017 00:49:18,560 --> 00:49:21,870 Itakuwa kosa mbaya kwa askari katika Dhahran. 1018 00:49:21,870 --> 00:49:28,455 >> -Nini Kilichotokea ni uzinduzi Scud alikuwa wanaona na onyo satelaiti mapema, 1019 00:49:28,455 --> 00:49:32,710 na walijua Scud alikuwa anakuja katika uongozi wao kwa ujumla. 1020 00:49:32,710 --> 00:49:35,150 Hawakujua ambapo alikuwa anakuja. 1021 00:49:35,150 --> 00:49:38,210 Ilikuwa sasa hadi rada sehemu ya mfumo Patriot 1022 00:49:38,210 --> 00:49:43,150 kutetea Dhahran ya Machapisho na kuweka wimbo wa zinazoingia kombora adui. 1023 00:49:43,150 --> 00:49:44,561 >> -The Rada ilikuwa smart sana. 1024 00:49:44,561 --> 00:49:46,560 Ni ingekuwa kweli kufuatilia nafasi ya Scud 1025 00:49:46,560 --> 00:49:48,930 na kisha kutabiri ambapo pengine itakuwa 1026 00:49:48,930 --> 00:49:51,380 wakati ujao rada alimtuma Pulse nje. 1027 00:49:51,380 --> 00:49:53,040 Aliyeitwa mlango mbalimbali. 1028 00:49:53,040 --> 00:49:57,620 >> -Then Mara moja Patriot anaamua muda wa kutosha ina 1029 00:49:57,620 --> 00:50:02,400 kupita kwenda nyuma na kuangalia ya eneo kwa ajili ya hii kitu wanaona 1030 00:50:02,400 --> 00:50:03,550 unaendelea nyuma. 1031 00:50:03,550 --> 00:50:07,820 Hivyo wakati akarudi makosa mahali, basi anaona hakuna kitu. 1032 00:50:07,820 --> 00:50:10,360 Na anaamua kwamba kulikuwa hakuna kitu. 1033 00:50:10,360 --> 00:50:13,630 Kwamba kulikuwa na kugundua uongo na ni matone kufuatilia. 1034 00:50:13,630 --> 00:50:16,970 >> -The Scud zinazoingia kutoweka kutoka screen rada, 1035 00:50:16,970 --> 00:50:20,200 na sekunde baadaye, slammed ndani ya ngome. 1036 00:50:20,200 --> 00:50:22,570 Scud kuuawa 28. 1037 00:50:22,570 --> 00:50:26,110 Ilikuwa moja mwisho fired wakati wa Vita ya Ghuba ya kwanza. 1038 00:50:26,110 --> 00:50:31,920 Kwa bahati mbaya, programu updated aliwasili alfajiri juu ya siku iliyofuata. 1039 00:50:31,920 --> 00:50:34,870 programu flaw alikuwa imekuwa fasta, kufunga 1040 00:50:34,870 --> 00:50:39,150 sura moja katika wasiwasi historia ya Patriot kombora. 1041 00:50:39,150 --> 00:50:40,030 >> [END video avspelning] 1042 00:50:40,030 --> 00:50:41,488 >> DAVID J. Malan: Hiyo ni kwa CS50. 1043 00:50:41,488 --> 00:50:42,820 Sisi kuona juu ya Jumatano. 1044 00:50:42,820 --> 00:50:46,420 1045 00:50:46,420 --> 00:50:50,370 >> [MUSIC KUCHEZA] 1046 00:50:50,370 --> 00:54:23,446