1 00:00:00,000 --> 00:00:02,970 >> [Music kucheza] 2 00:00:02,970 --> 00:00:14,355 3 00:00:14,355 --> 00:00:15,700 >> DAVID J. Malan: zote haki. 4 00:00:15,700 --> 00:00:18,832 Hii ni CS50 na hii ni mwanzo wa Wiki 2. 5 00:00:18,832 --> 00:00:21,040 Na itabidi kukumbuka kwamba zaidi ya kipindi cha wiki kadhaa, 6 00:00:21,040 --> 00:00:24,490 tumekuwa kuanzisha kompyuta sayansi na, kwa upande wake, Programu. 7 00:00:24,490 --> 00:00:27,640 >> Na tukaanza hadithi kwa njia ya Scratch, lugha ambayo graphical 8 00:00:27,640 --> 00:00:28,990 kutoka MIT Media Lab'S. 9 00:00:28,990 --> 00:00:30,780 Na kisha hivi karibuni zaidi, wiki iliyopita, hatukufanya 10 00:00:30,780 --> 00:00:34,450 kuanzisha higher-- a Lugha ngazi ya chini inayojulikana 11 00:00:34,450 --> 00:00:36,770 kama C, kitu ambacho ni rena textual. 12 00:00:36,770 --> 00:00:39,440 Na kwa kweli, mara ya mwisho sisi kutalii katika muktadha huo 13 00:00:39,440 --> 00:00:40,450 idadi ya dhana. 14 00:00:40,450 --> 00:00:43,010 >> Hii, kukumbuka, alikuwa sana mpango wa kwanza sisi inaonekana katika. 15 00:00:43,010 --> 00:00:45,710 Na mpango huu, kabisa tu, Prints nje, "hello, ulimwengu." 16 00:00:45,710 --> 00:00:47,730 Lakini kuna mambo mengi Wanajidai uchawi kinachoendelea. 17 00:00:47,730 --> 00:00:51,460 Kuna # Pamoja huu na mabano haya angle. 18 00:00:51,460 --> 00:00:52,170 Kuna int. 19 00:00:52,170 --> 00:00:53,020 Kuna (utupu). 20 00:00:53,020 --> 00:00:56,330 Kuna mabano, curly braces, nusu colons, na hivyo zaidi. 21 00:00:56,330 --> 00:00:58,480 >> Na hivyo, kukumbuka kuwa sisi ilianzisha Scratch 22 00:00:58,480 --> 00:01:02,110 ili tuweze, walau, kuona nyuma kwamba syntax, mambo ambayo ni ya kweli si 23 00:01:02,110 --> 00:01:04,590 yote kielimu kuvutia lakini mapema 24 00:01:04,590 --> 00:01:07,700 ni, kabisa, kidogo Tricky wrap akili yako karibu. 25 00:01:07,700 --> 00:01:10,860 Na kwa kweli, moja ya kawaida mambo mapema katika darasa programu, 26 00:01:10,860 --> 00:01:13,443 hasa kwa wale chini starehe, ni kupata imechanganyikiwa kutokana na 27 00:01:13,443 --> 00:01:17,460 na tripped up na kisintaksia fulani makosa, sembuse makosa mantiki. 28 00:01:17,460 --> 00:01:19,800 Na hivyo miongoni mwa malengo yetu leo, kwa kweli, mapenzi 29 00:01:19,800 --> 00:01:23,280 kuwa kwa kuandaa kwa baadhi mbinu utatuzi wa matatizo kwa jinsi 30 00:01:23,280 --> 00:01:26,705 bora kutatua matatizo yao wenyewe katika mfumo wa debugging. 31 00:01:26,705 --> 00:01:29,330 Na itabidi kukumbuka, pia kwamba mazingira ambayo sisi ilianzisha 32 00:01:29,330 --> 00:01:31,780 mara ya mwisho ilikuwa inaitwa CS50 IDE. 33 00:01:31,780 --> 00:01:34,850 Hii ni programu mtandao msingi kwamba inaruhusu wewe mpango katika wingu, 34 00:01:34,850 --> 00:01:38,450 hivyo kusema, wakati kutunza yote ya yako files pamoja, kama sisi tena itakuwa leo. 35 00:01:38,450 --> 00:01:41,480 Na kukumbuka kuwa sisi upya mada hizi hapa, 36 00:01:41,480 --> 00:01:44,480 kati yao kazi, na tanzi, na vigezo, na maneno Boolean, 37 00:01:44,480 --> 00:01:45,110 na masharti. 38 00:01:45,110 --> 00:01:49,190 Na kwa kweli chache zaidi kwamba sisi kutafsiriwa kutoka katika ulimwengu wa Scratch 39 00:01:49,190 --> 00:01:50,800 ulimwengu wa C. 40 00:01:50,800 --> 00:01:53,220 >> Lakini jengo la msingi vitalu, hivyo kusema, 41 00:01:53,220 --> 00:01:55,150 walikuwa kweli bado huo wiki iliyopita. 42 00:01:55,150 --> 00:01:57,900 Kwa kweli, sisi kweli tu alikuwa tofauti puzzle kipande, kama wewe. 43 00:01:57,900 --> 00:02:00,300 Badala ya kuwa zambarau kuokoa kuzuia, sisi badala 44 00:02:00,300 --> 00:02:02,940 alikuwa printf, ambayo ni hii kazi katika C kwamba 45 00:02:02,940 --> 00:02:05,890 utapata magazeti kitu na muundo ni juu ya screen. 46 00:02:05,890 --> 00:02:07,950 Sisi ilianzisha CS50 Maktaba, ambapo 47 00:02:07,950 --> 00:02:11,420 na sasa ovyo get_char yako, na get_int, na get_string, 48 00:02:11,420 --> 00:02:14,610 na wachache kazi nyingine kama vizuri, kupitia ambayo unaweza kupata pembejeo 49 00:02:14,610 --> 00:02:16,260 kutoka mtumiaji keyboard mwenyewe. 50 00:02:16,260 --> 00:02:20,640 Na sisi pia alichukua kuangalia mambo kama bool these-, na char, 51 00:02:20,640 --> 00:02:22,490 na mbili, kuelea, int, long_long kamba. 52 00:02:22,490 --> 00:02:25,170 Na kuna hata aina nyingine data katika C. 53 00:02:25,170 --> 00:02:28,560 >> Kwa maneno mengine, wakati wewe kutangaza kutofautiana kuhifadhi baadhi ya thamani, 54 00:02:28,560 --> 00:02:32,600 au wakati wewe kutekeleza kazi kwamba anarudi baadhi ya thamani, 55 00:02:32,600 --> 00:02:35,290 unaweza bayana nini aina ya thamani kwamba ni. 56 00:02:35,290 --> 00:02:37,310 Je, ni kamba, kama mlolongo wa wahusika? 57 00:02:37,310 --> 00:02:39,490 Je, ni idadi, kama integer? 58 00:02:39,490 --> 00:02:41,390 Je, ni hatua yaliyo thamani, au kama? 59 00:02:41,390 --> 00:02:46,180 Hivyo katika C, tofauti Scratch, sisi kweli alianza kutaja aina gani ya data 60 00:02:46,180 --> 00:02:48,330 tulikuwa kurudi au kutumia. 61 00:02:48,330 --> 00:02:51,910 >> Lakini, bila shaka, sisi pia mbio katika mipaka ya baadhi ya msingi ya kompyuta. 62 00:02:51,910 --> 00:02:54,100 Na hasa, hii lugha C, kukumbuka 63 00:02:54,100 --> 00:02:57,070 kwamba sisi alichukua kuangalia integer kufurika, ukweli 64 00:02:57,070 --> 00:03:00,460 kwamba kama wewe tu na kiasi kidogo cha kumbukumbu 65 00:03:00,460 --> 00:03:04,600 au, hasa, idadi mahususi ya bits, unaweza kuhesabu tu ya juu mno. 66 00:03:04,600 --> 00:03:08,460 Na hivyo sisi inaonekana katika mfano huu hapa ambapo counter katika ndege,, 67 00:03:08,460 --> 00:03:13,510 kwa kweli, kama mbio kwa muda wa kutosha itakuwa kufurika na kusababisha programu 68 00:03:13,510 --> 00:03:15,560 halisi ya kimwili makosa uwezo. 69 00:03:15,560 --> 00:03:18,600 >> Sisi pia inaonekana katika yaliyo hatua kutokuwa sahihi, ukweli 70 00:03:18,600 --> 00:03:22,280 kwamba pamoja na tu idadi finite ya bits, kama ni 32 au 64, 71 00:03:22,280 --> 00:03:27,330 unaweza tu kutaja namba nyingi baada ya uhakika decimal, baada ya ambayo 72 00:03:27,330 --> 00:03:29,110 kuanza kupata imprecise. 73 00:03:29,110 --> 00:03:32,360 Hivyo kwa mfano, moja ya tatu katika dunia hapa, katika dunia yetu binadamu, 74 00:03:32,360 --> 00:03:35,360 tunajua ni tu idadi ya usio ya 3s baada ya uhakika decimal. 75 00:03:35,360 --> 00:03:38,820 Lakini kompyuta Unaweza si lazima kuwakilisha idadi ya usio wa idadi 76 00:03:38,820 --> 00:03:42,590 kama wewe tu kuruhusu baadhi kiasi kidogo cha habari. 77 00:03:42,590 --> 00:03:45,900 >> Hivyo si tu kwamba sisi kuvipa wewe pamoja na nguvu zaidi katika suala 78 00:03:45,900 --> 00:03:49,280 jinsi unavyoweza kueleza mwenyewe katika keyboard katika suala la programu, 79 00:03:49,280 --> 00:03:51,430 sisi pia mdogo nini unaweza kweli kufanya. 80 00:03:51,430 --> 00:03:55,790 Na hakika, mende na makosa Unaweza kutokea kutokana na aina wale wa masuala. 81 00:03:55,790 --> 00:03:59,900 Na hakika, miongoni mwa mada leo ni kwenda kuwa mada kama debugging 82 00:03:59,900 --> 00:04:03,699 na kwa kweli kuangalia chini ya Hood jinsi mambo walikuwa kuletwa wiki iliyopita 83 00:04:03,699 --> 00:04:05,490 ni kweli kutekelezwa ili wewe bora 84 00:04:05,490 --> 00:04:10,530 kuelewa wote uwezo wa na mapungufu ya lugha kama C. 85 00:04:10,530 --> 00:04:14,770 >> Na kwa kweli, tutaweza peel nyuma tabaka ya rahisi ya muundo data, 86 00:04:14,770 --> 00:04:17,756 kitu kinachoitwa safu, ambayo Scratch hutokea kwa kuwaita "orodha." 87 00:04:17,756 --> 00:04:19,589 Ni kidogo tofauti katika mazingira. 88 00:04:19,589 --> 00:04:23,340 Na kisha tutaweza pia kuanzisha moja ya kwanza ya matatizo yetu uwanja maalum 89 00:04:23,340 --> 00:04:26,790 katika CS50, ulimwengu wa cryptography, sanaa ya scrambling 90 00:04:26,790 --> 00:04:29,650 au katika uchujaji wa habari ili kuwa unaweza kutuma ujumbe siri 91 00:04:29,650 --> 00:04:34,520 na kufumbua ujumbe siri kati ya watu wawili, A na B. 92 00:04:34,520 --> 00:04:37,490 >> Hivyo kabla ya sisi mpito kwa ulimwengu huo mpya, 93 00:04:37,490 --> 00:04:42,059 hebu jaribu kuandaa kwa baadhi mbinu na ambayo unaweza kuondokana na 94 00:04:42,059 --> 00:04:43,850 au kupunguza angalau baadhi ya kukatishwa tamaa 95 00:04:43,850 --> 00:04:46,630 kwamba wewe kuwa pengine yaliyojitokeza wiki iliyopita peke yake. 96 00:04:46,630 --> 00:04:50,830 Kwa kweli, kabla ya wewe ni such-- baadhi ya matatizo yako ya kwanza katika C. Na ni tabia mbaya, 97 00:04:50,830 --> 00:04:54,010 kama wewe ni kama mimi, mara ya kwanza wewe kujaribu aina nje mpango, 98 00:04:54,010 --> 00:04:57,330 hata kama wewe kufikiri kimantiki mpango ni pretty rahisi, 99 00:04:57,330 --> 00:05:01,200 unaweza vizuri sana kugonga ukuta, na compiler si kwenda kushirikiana. 100 00:05:01,200 --> 00:05:03,940 Kufanya au Clang si kwenda kwa kweli kufanya amri yako. 101 00:05:03,940 --> 00:05:05,450 >> Na kwa nini inaweza kuwa nini? 102 00:05:05,450 --> 00:05:07,950 Naam, hebu tuangalie, pengine, mpango rahisi. 103 00:05:07,950 --> 00:05:11,190 Mimi nina kwenda mbele na kuokoa hii katika file kwa makusudi aitwaye buggy0.c, 104 00:05:11,190 --> 00:05:13,590 kwa sababu najua ni kwa kuwa na kasoro mapema. 105 00:05:13,590 --> 00:05:17,400 Lakini mimi wanaweza kutambua kwamba kama hii ni mpango wa kwanza au ya pili au ya tatu 106 00:05:17,400 --> 00:05:18,830 kwamba mimi nina kweli kufanya mwenyewe. 107 00:05:18,830 --> 00:05:23,820 Hivyo mimi nina kwenda mbele na aina nje, int kuu (utupu). 108 00:05:23,820 --> 00:05:28,130 Na kisha ndani ya braces yangu curly, familiar sana ( "hello, world-- 109 00:05:28,130 --> 00:05:30,980 backslash, n ") - na nusu koloni. 110 00:05:30,980 --> 00:05:32,360 >> Nimekuwa kuokolewa file. 111 00:05:32,360 --> 00:05:34,850 Sasa mimi nina kwenda chini kwa terminal dirisha yangu 112 00:05:34,850 --> 00:05:40,340 na aina ya kufanya buggy0, kwa sababu, tena, jina la faili leo ni buggy0.c. 113 00:05:40,340 --> 00:05:43,660 Hivyo mimi aina kufanya buggy0, kuingia. 114 00:05:43,660 --> 00:05:48,200 >> Na, loo, gosh, kukumbuka kutoka wakati wa mwisho kwamba ujumbe hakuna kosa ni jambo zuri. 115 00:05:48,200 --> 00:05:49,740 Hivyo hakuna pato ni jambo zuri. 116 00:05:49,740 --> 00:05:52,920 Lakini hapa nina wazi baadhi ya idadi ya makosa. 117 00:05:52,920 --> 00:05:56,470 >> Hivyo mstari wa kwanza wa pato baada ya kuandika kufanya buggy0, kukumbuka, 118 00:05:56,470 --> 00:05:59,540 ni Clang ya haki verbose pato. 119 00:05:59,540 --> 00:06:02,067 Chini ya Hood, CS50 IDE kimeundwa 120 00:06:02,067 --> 00:06:04,150 kutumia rundo zima la chaguzi na compiler hii 121 00:06:04,150 --> 00:06:05,941 ili huna kufikiri juu yao. 122 00:06:05,941 --> 00:06:08,840 Na kwamba wote kwamba mstari wa kwanza maana yake ni kwamba huanza na Clang. 123 00:06:08,840 --> 00:06:11,720 >> Lakini baada ya kuwa, matatizo kuanza kufanya muonekano wao. 124 00:06:11,720 --> 00:06:17,390 Buggy0.c kwenye mstari 3, tabia ya 5, kuna kubwa, nyekundu makosa. 125 00:06:17,390 --> 00:06:18,380 Hiyo ni nini? 126 00:06:18,380 --> 00:06:23,562 Implicitly kutangaza kazi maktaba printf na int aina (const Char *, 127 00:06:23,562 --> 00:06:26,050 ...) [-Werror]. 128 00:06:26,050 --> 00:06:28,379 I mean, ni haraka sana anapata arcane sana. 129 00:06:28,379 --> 00:06:30,170 Na hakika, kwa mara ya kwanza mtazamo, tunataka 130 00:06:30,170 --> 00:06:32,380 wanatarajia kuelewa ukamilifu wa ujumbe huo. 131 00:06:32,380 --> 00:06:34,213 Na hivyo moja ya masomo kwa leo ni kwenda 132 00:06:34,213 --> 00:06:36,919 kuwa na kujaribu taarifa chati, au mambo sawa, 133 00:06:36,919 --> 00:06:38,960 kwa makosa unaweza kuwa yaliyojitokeza katika siku za nyuma. 134 00:06:38,960 --> 00:06:41,335 Basi hebu tease mbali tu maneno hayo ili kuangalia familiar. 135 00:06:41,335 --> 00:06:44,290 kubwa, nyekundu kosa ni wazi ishara ya kitu kuwa makosa. 136 00:06:44,290 --> 00:06:47,940 >> implicitly kutangaza maktaba kazi printf. 137 00:06:47,940 --> 00:06:51,680 Hivyo hata kama Sielewi kabisa nini implicitly kutangaza kazi maktaba 138 00:06:51,680 --> 00:06:54,900 njia, tatizo hakika inahusiana na printf kwa namna fulani. 139 00:06:54,900 --> 00:06:59,130 Na chanzo cha suala kwamba ina nini na kutangaza ni. 140 00:06:59,130 --> 00:07:02,440 >> Kutangaza kazi ni kutaja kwa mara ya kwanza. 141 00:07:02,440 --> 00:07:06,210 Na sisi alitumia msemo wiki iliyopita ya kutangaza mfano kazi ya, 142 00:07:06,210 --> 00:07:11,860 ama mstari mmoja utafutaji juu ya yako file mwenyewe au katika kinachojulikana header file. 143 00:07:11,860 --> 00:07:15,300 Na katika kile file alifanya tunasema wiki iliyopita kuwa printf ni kunukuu, 144 00:07:15,300 --> 00:07:17,080 unquote, alitangaza? 145 00:07:17,080 --> 00:07:20,950 Katika faili nini ni mfano wake? 146 00:07:20,950 --> 00:07:24,640 >> Hivyo kama unakumbuka, jambo la kwanza kabisa mimi typed, karibu kila mpango mwisho time-- 147 00:07:24,640 --> 00:07:30,790 na ajali wakati iliyopita ilianza kuandika myself-- ilikuwa hii here-- moja 148 00:07:30,790 --> 00:07:38,630 hash-- # Pamoja 00:07:41,860 kama mimi sasa ila faili hili, mimi nina kwenda kwenda mbele na wazi screen yangu, 150 00:07:41,860 --> 00:07:44,740 ambayo unaweza kufanya kwa kuandika Wazi, au unaweza kushikilia Control L, 151 00:07:44,740 --> 00:07:47,680 tu wazi terminal dirisha yako tu kuondokana na baadhi clutter. 152 00:07:47,680 --> 00:07:51,370 >> Mimi nina kwenda mbele na re-aina ya kufanya buggy0, kuingia. 153 00:07:51,370 --> 00:07:53,790 Na voila, mimi bado kuona kwamba muda mrefu amri kutoka kwa Clang, 154 00:07:53,790 --> 00:07:55,470 lakini hakuna ujumbe wa makosa wakati huu. 155 00:07:55,470 --> 00:07:58,800 Na hakika, kama mimi kufanya ./buggy0, tu kama mara ya mwisho, 156 00:07:58,800 --> 00:08:01,860 ambapo dot maana hii directory, kufyeka ina maana tu, 157 00:08:01,860 --> 00:08:05,040 hiyo inakuja jina la mpango na kwamba jina la mpango huo ni buggy0, 158 00:08:05,040 --> 00:08:07,340 Kuingia, "hello, ulimwengu." 159 00:08:07,340 --> 00:08:09,440 >> Sasa, jinsi gani una zilizopatikana ufumbuzi huu 160 00:08:09,440 --> 00:08:12,017 bila lazima kutambua maneno kama wengi 161 00:08:12,017 --> 00:08:14,350 kama mimi, hakika, kuwa na jambo hili kwa miaka mingi? 162 00:08:14,350 --> 00:08:18,720 Naam, kutambua per Tatizo la kwanza kuweka, sisi kuanzisha wewe amri 163 00:08:18,720 --> 00:08:21,175 kwamba wafanyakazi CS50 ya mwenyewe aliandika aitwaye help50. 164 00:08:21,175 --> 00:08:24,300 Na hakika, C gani vipimo kwa ajili ya tatizo kuweka na jinsi ya kutumia hii. 165 00:08:24,300 --> 00:08:27,210 >> Lakini help50 kimsingi ni mpango kwamba wafanyakazi CS50 166 00:08:27,210 --> 00:08:30,850 aliandika kwamba utapata kukimbia amri au kukimbia mpango, 167 00:08:30,850 --> 00:08:36,169 na kama huna kuelewa wake pato, kupita pato lake kwa help50, 168 00:08:36,169 --> 00:08:38,890 ambapo kiwango programu kwamba wafanyakazi kozi ya aliandika 169 00:08:38,890 --> 00:08:42,429 itaangalia pato mpango wako mstari kwa mstari, tabia na tabia. 170 00:08:42,429 --> 00:08:46,000 Na kama sisi, wafanyakazi, kutambua ujumbe wa makosa kwamba wewe ni inakabiliwa na, 171 00:08:46,000 --> 00:08:50,580 sisi kujaribu kumfanya wewe na baadhi ya maswali ya kejeli, na baadhi ya ushauri, 172 00:08:50,580 --> 00:08:54,890 kiasi kama TF au CA au mwenyewe bila kufanya katika mtu katika masaa ya ofisi. 173 00:08:54,890 --> 00:08:58,320 >> Ili kuangalia kwa help50 kama huna lazima kutambua tatizo. 174 00:08:58,320 --> 00:09:00,790 Lakini si kutegemea juu yake sana kama mkongojo. 175 00:09:00,790 --> 00:09:03,990 Hakika kujaribu kuelewa wake pato na kisha kujifunza kutoka humo 176 00:09:03,990 --> 00:09:07,571 ili mara moja au mbili kufanya wewe milele kukimbia help50 kwa makosa fulani 177 00:09:07,571 --> 00:09:08,070 ujumbe. 178 00:09:08,070 --> 00:09:10,660 Baada ya hapo, unapaswa kuwa vifaa bora wewe mwenyewe 179 00:09:10,660 --> 00:09:13,180 kufikiri nini ni kweli ni. 180 00:09:13,180 --> 00:09:14,350 >> Hebu kufanya mtu mwingine hapa. 181 00:09:14,350 --> 00:09:20,410 Hebu kwenda mbele, na katika sehemu nyingine file tutaweza kuwaita buggy1.c hii. 182 00:09:20,410 --> 00:09:23,110 Na katika faili hii mimi nina kwenda deliberately-- 183 00:09:23,110 --> 00:09:26,330 lakini kujifanya kuwa mimi si kuelewa nini makosa Nimekuwa alifanya. 184 00:09:26,330 --> 00:09:31,420 >> Mimi nina kwenda mbele na kufanya Haya # Pamoja, tangu nimekuwa 185 00:09:31,420 --> 00:09:33,660 kujifunza somo wangu kutoka wakati iliyopita. 186 00:09:33,660 --> 00:09:36,220 Int kuu (utupu), kama kabla. 187 00:09:36,220 --> 00:09:40,880 Na kisha katika hapa mimi nina kwenda kufanya kamba s - get_string. 188 00:09:40,880 --> 00:09:43,770 Na kukumbuka kutoka mara ya mwisho kwamba njia hii, hey, kompyuta, 189 00:09:43,770 --> 00:09:48,280 nipe kutofautiana, kuiita s, na kufanya aina ya kwamba kutofautiana kamba 190 00:09:48,280 --> 00:09:50,150 hivyo siwezi kuhifadhi maneno moja au zaidi ndani yake. 191 00:09:50,150 --> 00:09:52,191 >> Na kisha juu ya mkono wa kulia upande wa ishara sawa 192 00:09:52,191 --> 00:09:54,980 ni get_string, ambayo ni kazi katika CS50 maktaba 193 00:09:54,980 --> 00:09:55,980 kwamba gani hasa kwamba. 194 00:09:55,980 --> 00:09:59,740 Anapata kazi na kisha mikono yake kutoka kulia kwenda kushoto. 195 00:09:59,740 --> 00:10:02,670 Hivyo ishara hii sawa haina maana "Ni sawa na" kama sisi kufikiri katika math. 196 00:10:02,670 --> 00:10:04,750 Ina maana mgawo kutoka kulia kwenda kushoto. 197 00:10:04,750 --> 00:10:09,640 Hivyo hii ina maana, kuchukua kamba kutoka user na kuhifadhi ndani ya s. 198 00:10:09,640 --> 00:10:10,460 >> Sasa hebu kuitumia. 199 00:10:10,460 --> 00:10:13,820 Hebu kwenda mbele sasa na kama pili line, napenda kwenda mbele na kusema "hello" - 200 00:10:13,820 --> 00:10:19,330 si "dunia," lakini "hello,% s-- ambayo ni placeholder yetu, comma s, 201 00:10:19,330 --> 00:10:22,030 ambayo ni kutofautiana yetu, na kisha nusu koloni. 202 00:10:22,030 --> 00:10:26,070 Hivyo kama sikuwa screw up sana hapa, hii inaonekana kama kanuni sahihi. 203 00:10:26,070 --> 00:10:28,090 >> Na silika yangu sasa ni kukusanya yake. 204 00:10:28,090 --> 00:10:30,400 file inaitwa buggy1.c. 205 00:10:30,400 --> 00:10:33,770 Hivyo nina kwenda kufanya kufanya buggy1, kuingia. 206 00:10:33,770 --> 00:10:36,377 Na darn-ni, kama kuna si hata makosa zaidi kuliko kabla. 207 00:10:36,377 --> 00:10:38,210 I mean, kuna zaidi ujumbe wa makosa ingekuwa 208 00:10:38,210 --> 00:10:40,400 kuonekana ya mistari halisi katika mpango huu. 209 00:10:40,400 --> 00:10:42,730 >> Lakini takeaway hapa ni, hata kama wewe ni kuzidiwa 210 00:10:42,730 --> 00:10:45,040 na mbili au tatu au nne ujumbe wa makosa zaidi, 211 00:10:45,040 --> 00:10:48,340 kuzingatia daima juu sana kwanza ya ujumbe hizo. 212 00:10:48,340 --> 00:10:52,220 Kuangalia juu-wengi moja, scrolling nyuma hadi kama ni lazima. 213 00:10:52,220 --> 00:10:53,930 Hivyo hapa mimi typed kufanya buggy1. 214 00:10:53,930 --> 00:10:55,700 Hapa ni kwamba Clang pato kama ilivyotarajiwa. 215 00:10:55,700 --> 00:10:57,290 >> Na hapa ni kwanza nyekundu makosa. 216 00:10:57,290 --> 00:11:02,370 Matumizi ya Undeclared kitambulisho kamba, je, mimi maana ya kiwango katika? 217 00:11:02,370 --> 00:11:04,260 Hivyo kiwango katika ni kweli kitu kingine. 218 00:11:04,260 --> 00:11:06,240 Ni inahusu mtumiaji keyboard, kimsingi. 219 00:11:06,240 --> 00:11:08,080 >> Lakini si kwamba kile maana. 220 00:11:08,080 --> 00:11:11,770 Mimi maana ya kamba, na mimi maana get_string. 221 00:11:11,770 --> 00:11:16,200 Kwa hiyo kile ni kwamba mimi alisahau kufanya wakati huu? 222 00:11:16,200 --> 00:11:20,230 Kinachokosekana wakati huu? 223 00:11:20,230 --> 00:11:23,600 Nina # Pamoja yangu, hivyo mimi kuwa na upatikanaji wa printf. 224 00:11:23,600 --> 00:11:26,090 >> Lakini je, mimi si kuwa upatikanaji wa bado tu? 225 00:11:26,090 --> 00:11:29,420 Naam, tu kama mara ya mwisho, Mimi haja ya kuwaambia compiler 226 00:11:29,420 --> 00:11:31,691 Clang nini kazi hizi ni. 227 00:11:31,691 --> 00:11:33,940 Get_string haina kuja na C. Na hasa, ni 228 00:11:33,940 --> 00:11:38,160 haina kuja katika header file,. 229 00:11:38,160 --> 00:11:40,770 Ni badala huja katika kitu wafanyakazi aliandika, 230 00:11:40,770 --> 00:11:44,176 ambayo ni file tofauti jina lakini aptly aitwaye. 231 00:11:44,176 --> 00:11:46,990 232 00:11:46,990 --> 00:11:50,861 >> Hivyo tu kwa kuongeza kuwa mstari mmoja ya code-- kukumbuka kutoka wakati wa mwisho 233 00:11:50,861 --> 00:11:53,610 kwamba wakati Clang anaendesha, ni kwenda kuangalia kanuni yangu juu hadi chini, 234 00:11:53,610 --> 00:11:54,193 kushoto na kulia. 235 00:11:54,193 --> 00:11:57,200 Ni kwenda kwa taarifa, loo, unataka. 236 00:11:57,200 --> 00:11:59,900 Hebu kwenda na kupata kwamba, popote ni juu ya server, 237 00:11:59,900 --> 00:12:03,090 nakala na kuweka, kimsingi, katika juu ya faili yako mwenyewe 238 00:12:03,090 --> 00:12:06,820 hivyo kwamba katika hatua hii ya hadithi, line 1, wengine wa mpango 239 00:12:06,820 --> 00:12:11,651 Unaweza, kwa kweli, matumizi yoyote ya kazi humo, miongoni mwao get_string. 240 00:12:11,651 --> 00:12:13,650 Hivyo nina kwenda kupuuza mapumziko ya makosa hayo, 241 00:12:13,650 --> 00:12:17,190 kwa sababu mimi, kwa kweli, mtuhumiwa kuwa tu Wa kwanza kweli mattered. 242 00:12:17,190 --> 00:12:20,780 Na mimi nina kwenda mbele na rerun, baada ya kuokoa faili yangu kufanya buggy1. 243 00:12:20,780 --> 00:12:22,580 Na voila, ilivyokuwa kazi. 244 00:12:22,580 --> 00:12:29,200 Na kama mimi kufanya ./buggy1 na aina katika, kwa mfano, Zamyla, mimi sasa kupata hello, 245 00:12:29,200 --> 00:12:32,000 Zamyla, badala ya hello, dunia. 246 00:12:32,000 --> 00:12:32,550 >> Sawa. 247 00:12:32,550 --> 00:12:35,890 Hivyo takeaways hapa basi ni kwa, moja, jaribu kuokota kama vile wewe unaweza 248 00:12:35,890 --> 00:12:39,140 kutoka ujumbe wa makosa peke yake, kuangalia katika baadhi ya maneno kumtambua. 249 00:12:39,140 --> 00:12:43,070 Kuzuia kwamba, matumizi help50 per tatizo kuweka vipimo. 250 00:12:43,070 --> 00:12:46,500 Lakini inazuia kwamba, pia, daima kuangalia katika makosa juu tu, angalau 251 00:12:46,500 --> 00:12:50,051 awali, kuona nini maelezo ili kweli mavuno. 252 00:12:50,051 --> 00:12:52,300 Lakini zinageuka kuna ya utendaji hata zaidi kujengwa 253 00:12:52,300 --> 00:12:55,030 katika CS50 maktaba ili kusaidia wewe mapema katika muhula 254 00:12:55,030 --> 00:12:57,580 na mapema katika programu kufikiri nini kinaendelea vibaya. 255 00:12:57,580 --> 00:12:59,840 Basi hebu kufanya mfano mwingine hapa. 256 00:12:59,840 --> 00:13:04,350 Mimi nina kwenda kuwaita buggy2 hii, ambayo, tena, ni kwenda kuwa kiujanja nje 257 00:13:04,350 --> 00:13:05,650 wa lango, kwa kubuni. 258 00:13:05,650 --> 00:13:09,980 >> Na mimi nina kwenda mbele na kufanya # pamoja. 259 00:13:09,980 --> 00:13:12,580 Na kisha mimi nina kwenda kufanya int kuu (utupu). 260 00:13:12,580 --> 00:13:14,840 Na kisha mimi nina kwenda kufanya kwa kitanzi. 261 00:13:14,840 --> 00:13:16,690 Kwa (int i _ 0. 262 00:13:16,690 --> 00:13:18,750 i ni chini ya au sawa na 10. 263 00:13:18,750 --> 00:13:24,260 i ++, na kisha katika braces curly, mimi nina kwenda magazeti nje tu ishara hashtag hapa 264 00:13:24,260 --> 00:13:25,920 na line tabia mpya. 265 00:13:25,920 --> 00:13:29,220 >> Hivyo dhamira yangu na hii mpango ni rahisi kabisa 266 00:13:29,220 --> 00:13:33,150 iterate mara 10 na juu ya kila iteration 267 00:13:33,150 --> 00:13:35,260 ya kwamba kitanzi kila wakati njia ya mzunguko, 268 00:13:35,260 --> 00:13:37,660 magazeti nje hashtag, hashtag, hashtag. 269 00:13:37,660 --> 00:13:40,480 Moja kwa kila mstari kwa sababu mimi kuwa mstari mpya huko. 270 00:13:40,480 --> 00:13:42,787 Na kukumbuka kwamba kwa kitanzi, kwa week-- mwisho 271 00:13:42,787 --> 00:13:44,620 na utasikia kupata zaidi ukoo na syntax 272 00:13:44,620 --> 00:13:47,170 kwa kutumia ni pamoja na mazoezi kabla long-- hii inatoa mimi 273 00:13:47,170 --> 00:13:49,740 variable kuitwa i na seti ni kwa 0. 274 00:13:49,740 --> 00:13:52,650 >> Hii nyongeza i juu ya kila iteration na 1. 275 00:13:52,650 --> 00:13:54,940 Hivyo i inakwenda 1 kwa 2 hadi 3. 276 00:13:54,940 --> 00:13:57,690 Na kisha hali hii katika katikati kati ya nusu colons 277 00:13:57,690 --> 00:14:03,010 anapata checked juu ya kila iteration ya kufanya kuhakikisha kwamba sisi bado ni ndani mbalimbali. 278 00:14:03,010 --> 00:14:06,830 Hivyo nataka iterate mara 10, hivyo mimi kuwa intuitively aina ya sana tu 279 00:14:06,830 --> 00:14:09,070 kuweka 10 kama amefungwa yangu juu huko. 280 00:14:09,070 --> 00:14:14,310 >> Na bado, wakati mimi kukimbia hii, baada ya kuandaa ni pamoja na kufanya buggy2-- 281 00:14:14,310 --> 00:14:15,440 na haina kukusanya OK. 282 00:14:15,440 --> 00:14:17,980 Hivyo sina syntax makosa wakati huu. 283 00:14:17,980 --> 00:14:20,940 Hebu kwenda mbele sasa na kukimbia buggy2, kuingia. 284 00:14:20,940 --> 00:14:22,620 Na sasa kitabu juu. 285 00:14:22,620 --> 00:14:24,890 Na napenda kuongeza ukubwa wa dirisha. 286 00:14:24,890 --> 00:14:33,720 >> Mimi wanaonekana kuwa na 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. 287 00:14:33,720 --> 00:14:38,891 Hivyo kuna 11 hashtags, ingawa Mimi wazi kuweka 10 ndani ya kitanzi hii. 288 00:14:38,891 --> 00:14:42,140 Sasa, baadhi yenu wanaweza kuona mara moja nini kosa ni kwa sababu, kwa kweli, hii 289 00:14:42,140 --> 00:14:43,720 si kosa ngumu sana kufanya. 290 00:14:43,720 --> 00:14:46,070 Lakini ni kawaida sana alifanya mapema sana juu. 291 00:14:46,070 --> 00:14:49,820 >> Nini nataka kumweka nje, ingawa, ni, jinsi gani mimi takwimu hii nje? 292 00:14:49,820 --> 00:14:52,300 Naam, zinageuka kuwa CS50 maktaba anakuja 293 00:14:52,300 --> 00:14:55,380 na si tu get_string na get_int na get_float na kazi nyingine. 294 00:14:55,380 --> 00:14:59,980 Pia kuja na kazi maalum aitwaye eprintf, au, kosa printf. 295 00:14:59,980 --> 00:15:03,270 Na ni ipo tu kufanya ni rahisi kidogo kwa ajili yenu 296 00:15:03,270 --> 00:15:06,310 wakati debugging kanuni yako tu magazeti ujumbe wa makosa juu ya screen 297 00:15:06,310 --> 00:15:07,850 na kujua ilikotoka. 298 00:15:07,850 --> 00:15:11,000 >> Hivyo kwa mfano, jambo moja nipate kufanya hapa na kazi hii ni hii 299 00:15:11,000 --> 00:15:20,230 eprintf, na kisha mimi nina kwenda mbele na kusema sasa i ni% i, backslash, n. 300 00:15:20,230 --> 00:15:22,330 Na mimi nina kwenda kuziba katika thamani ya i. 301 00:15:22,330 --> 00:15:25,400 Na juu juu, kwa sababu hii ni katika CS50 maktaba, 302 00:15:25,400 --> 00:15:27,580 Mimi nina kwenda mbele na ni pamoja na 303 00:15:27,580 --> 00:15:29,169 hivyo mimi kuwa na upatikanaji wa kazi hii. 304 00:15:29,169 --> 00:15:31,460 Lakini hebu fikiria nini mstari 9 ni walidhani kuwa kufanya. 305 00:15:31,460 --> 00:15:32,670 Mimi nina kwenda kufuta hii hatimaye. 306 00:15:32,670 --> 00:15:34,670 Hii ina kitu cha kufanya na lengo langu kuu. 307 00:15:34,670 --> 00:15:39,090 Lakini eprintf, kosa printf, ni maana tu kunipatia habari za uchunguzi. 308 00:15:39,090 --> 00:15:42,460 Wakati mimi kukimbia mpango wangu, nataka kuona hii juu ya screen kwa muda 309 00:15:42,460 --> 00:15:44,550 kama vile tu kuelewa Ni nini kinaendelea. 310 00:15:44,550 --> 00:15:47,330 >> Na kwa kweli, juu ya kila iteration hapa wa mstari 9 311 00:15:47,330 --> 00:15:49,260 Nataka kuona, ni nini thamani ya i? 312 00:15:49,260 --> 00:15:50,290 ni thamani ya i nini? 313 00:15:50,290 --> 00:15:51,280 ni thamani ya i nini? 314 00:15:51,280 --> 00:15:55,650 Na, pengine, mimi lazima tu kuona kwamba ujumbe, pia, mara 10. 315 00:15:55,650 --> 00:15:57,780 >> Hivyo basi mimi kwenda mbele na recompile mpango wangu, 316 00:15:57,780 --> 00:15:59,905 kama mimi kufanya wakati wowote Mimi kufanya mabadiliko. ./buggy2. 317 00:15:59,905 --> 00:16:02,680 318 00:16:02,680 --> 00:16:03,640 Na now-- OK. 319 00:16:03,640 --> 00:16:04,820 Kuna mengi zaidi kinachoendelea. 320 00:16:04,820 --> 00:16:07,610 Hivyo basi mimi kitabu juu katika hata kubwa dirisha. 321 00:16:07,610 --> 00:16:10,190 >> Na utaona kwamba kila mmoja hashtags bado ni uchapishaji. 322 00:16:10,190 --> 00:16:15,270 Lakini katika kati ya kila mmoja wao ni sasa hii pato uchunguzi mpangilio kama ifuatavyo. 323 00:16:15,270 --> 00:16:17,960 jina la mpango wangu hapa ni buggy2. 324 00:16:17,960 --> 00:16:20,432 jina la faili ni buggy2.c. 325 00:16:20,432 --> 00:16:24,080 idadi line ambayo hii ilichapwa ni mstari 9. 326 00:16:24,080 --> 00:16:27,500 Na kisha na haki ya kuwa ni ujumbe wa makosa kwamba mimi nina kutarajia. 327 00:16:27,500 --> 00:16:30,701 >> Na nini ni nzuri kuhusu hili ni kwamba sasa sina kwa lazima kuhesabu 328 00:16:30,701 --> 00:16:32,200 katika kichwa changu nini mpango wangu ni kufanya. 329 00:16:32,200 --> 00:16:34,240 Naona ya kuwa juu ya kwanza iteration i ni 0, 330 00:16:34,240 --> 00:16:39,420 kisha 1, kisha 2, kisha 3, kisha 4, kisha 5, kisha 6, basi 7, basi 8, kisha 9, kisha 331 00:16:39,420 --> 00:16:40,980 10. 332 00:16:40,980 --> 00:16:42,050 Hivyo kusubiri dakika. 333 00:16:42,050 --> 00:16:43,740 Nini kinaendelea hapa? 334 00:16:43,740 --> 00:16:48,190 Mimi bado wanaonekana kuwa kuhesabu kama ilivyokusudiwa hadi 10. 335 00:16:48,190 --> 00:16:50,550 >> Lakini wapi mimi kuanza? 336 00:16:50,550 --> 00:16:53,240 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 10. 337 00:16:53,240 --> 00:16:58,040 Hivyo 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10-- kidole 11 338 00:16:58,040 --> 00:16:59,990 ni dalili ya tatizo. 339 00:16:59,990 --> 00:17:02,850 Mimi wanaonekana kuwa kuhesabiwa kimakosa katika kitanzi yangu. 340 00:17:02,850 --> 00:17:06,599 Badala ya kwenda iterations 10, Mimi kuanzia saa 0, 341 00:17:06,599 --> 00:17:09,550 Mimi nina kuishia katika na kwa njia ya 10. 342 00:17:09,550 --> 00:17:12,030 Lakini kwa sababu, kama kompyuta, Mimi nina kuanza kuhesabu saa 0, 343 00:17:12,030 --> 00:17:15,250 Mimi lazima kuhesabu hadi kwa, lakini si kwa njia, 10. 344 00:17:15,250 --> 00:17:18,510 >> Na hivyo fix, mimi hatimaye barabara hapa, ni moja ya mambo mawili. 345 00:17:18,510 --> 00:17:22,430 Mimi naweza sana tu kusema kuhesabu hadi chini ya 10. 346 00:17:22,430 --> 00:17:27,260 Hivyo 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ambayo ni kweli, sahihi, 347 00:17:27,260 --> 00:17:28,900 ingawa ni sauti vibaya kidogo. 348 00:17:28,900 --> 00:17:35,070 Au mimi naweza kufanya chini ya au sawa 9, muda mrefu kama mimi kuanza saa 0. 349 00:17:35,070 --> 00:17:40,056 Au kama wewe kweli si kama kwamba, wewe unaweza kuhesabu hadi kwa njia ya 10 lakini kuanza saa 1. 350 00:17:40,056 --> 00:17:41,680 Lakini tena, hii tu siyo suala la kawaida. 351 00:17:41,680 --> 00:17:43,977 Katika programming-- japo si sana katika Scratch-- 352 00:17:43,977 --> 00:17:45,810 lakini katika programu katika C na lugha nyingine, 353 00:17:45,810 --> 00:17:47,670 kama JavaScript na Python na wengine, ni 354 00:17:47,670 --> 00:17:49,880 tu kawaida sana kwa mjadala wetu wa binary 355 00:17:49,880 --> 00:17:53,450 kuanza tu kuhesabu katika idadi ya chini unaweza, ambayo ni 0. 356 00:17:53,450 --> 00:17:53,950 Sawa. 357 00:17:53,950 --> 00:17:55,160 Hivyo hiyo ni eprintf. 358 00:17:55,160 --> 00:17:58,600 Na tena, sasa nimekuwa figured nje yangu tatizo, na mimi nina kwenda nyuma 0 359 00:17:58,600 --> 00:18:01,470 kupitia chini ya 10, mimi nina kwenda kwenda katika na kufuta eprintf. 360 00:18:01,470 --> 00:18:04,580 >> Ni lazima kuwa kuna wakati mimi meli kanuni yangu au kuwasilisha kanuni yangu 361 00:18:04,580 --> 00:18:05,800 au kuonyesha kuwa na mtu mwingine. 362 00:18:05,800 --> 00:18:07,980 Ni kweli tu maana kutumiwa kwa muda. 363 00:18:07,980 --> 00:18:11,650 Lakini sasa nimekuwa fasta hii tatizo fulani pia. 364 00:18:11,650 --> 00:18:16,780 >> Naam, hebu kufanya mfano mmoja zaidi hapa kwamba mimi nina kwenda kwa mjeledi up kama ifuatavyo. 365 00:18:16,780 --> 00:18:22,850 Mimi nina kwenda mbele na # pamoja. $ 50 366 00:18:22,850 --> 00:18:25,580 Na mimi nina kwenda mbele na # pamoja. 367 00:18:25,580 --> 00:18:29,030 >> Na mimi nina kwenda kuokoa faili hii kama buggy3.c. 368 00:18:29,030 --> 00:18:31,740 Na mimi nina kwenda mbele na kutangaza int kuu (utupu). 369 00:18:31,740 --> 00:18:34,186 Na kisha ndani ya huko Mimi nina kwenda kufanya int i _ - 370 00:18:34,186 --> 00:18:36,435 Nataka kutekeleza mpango na get_negative_int. 371 00:18:36,435 --> 00:18:39,146 372 00:18:39,146 --> 00:18:40,770 Hii si kazi ambayo ipo bado. 373 00:18:40,770 --> 00:18:42,870 Hivyo sisi ni kwenda kutekeleza ni katika muda tu. 374 00:18:42,870 --> 00:18:45,541 Lakini tunakwenda kuona kwa nini ni Buggy katika kupita kwanza. 375 00:18:45,541 --> 00:18:47,290 Na mara moja nimepata wamezipata int kutoka kwa mtumiaji, 376 00:18:47,290 --> 00:18:53,365 Mimi tu kwenda magazeti% i ni hasi integer, backslash, n, comma, i. 377 00:18:53,365 --> 00:18:55,240 Kwa maneno mengine, yote mimi wanataka mpango huu kufanya 378 00:18:55,240 --> 00:18:58,000 ni kupata int hasi kutoka user na kisha magazeti nje 379 00:18:58,000 --> 00:18:59,980 kwamba vile na vile ni int hasi. 380 00:18:59,980 --> 00:19:02,080 >> Sasa mimi haja ya kutekeleza kazi hii. 381 00:19:02,080 --> 00:19:05,740 Hivyo baadaye katika faili yangu, mimi nina kwenda mbele na kutangaza kazi kuitwa 382 00:19:05,740 --> 00:19:10,670 get_negative_int (utupu) - na tutaweza kuja nyuma kwa nini kuwa mstari wa maana tena 383 00:19:10,670 --> 00:19:18,790 katika moment-- int n; do-- kufanya following-- printf n ni :. 384 00:19:18,790 --> 00:19:26,210 Na kisha mimi nina kwenda kufanya n - get_int, na kufanya hivyo wakati n ni mkubwa kuliko 0. 385 00:19:26,210 --> 00:19:28,310 Na kisha kurudi n ;. 386 00:19:28,310 --> 00:19:31,730 >> Hivyo kuna mengi kinachoendelea katika hii lakini hakuna ambayo hatukuwa 387 00:19:31,730 --> 00:19:33,710 tuangalie wiki iliyopita, angalau kwa ufupi. 388 00:19:33,710 --> 00:19:36,980 Hivyo kwenye mstari 10 hapa nimekuwa alitangaza kazi kuitwa get_negative_int, 389 00:19:36,980 --> 00:19:39,620 na nimekuwa kuweka (utupu), katika mabano, sababu ikiwa ni hii 390 00:19:39,620 --> 00:19:40,950 haina kuchukua pembejeo. 391 00:19:40,950 --> 00:19:42,910 Mimi si kupita kitu chochote kwa kazi hii. 392 00:19:42,910 --> 00:19:44,690 Mimi nina kupata tu kitu nyuma kutoka humo. 393 00:19:44,690 --> 00:19:47,270 >> Na nini nina matumaini ya kupata nyuma ni integer. 394 00:19:47,270 --> 00:19:50,040 Hakuna aina data katika C aitwaye negative_int. 395 00:19:50,040 --> 00:19:52,880 Ni int tu, hivyo ni kwenda kuwa juu yetu ili kuhakikisha 396 00:19:52,880 --> 00:19:55,340 kwamba thamani hiyo ni kweli akarudi ni si tu int 397 00:19:55,340 --> 00:19:56,380 lakini pia ni hasi. 398 00:19:56,380 --> 00:20:02,150 >> On line 12 Mimi kutangaza variable kuitwa n na kuifanya ya aina int. 399 00:20:02,150 --> 00:20:07,500 Na kisha katika mstari 13 kwa njia ya 18 mimi nina kufanya kitu wakati kitu ni kweli. 400 00:20:07,500 --> 00:20:11,040 Mimi nina kwenda mbele na uchapishaji n ni, matumbo, na kisha nafasi, 401 00:20:11,040 --> 00:20:12,800 kama haraka kwa mtumiaji. 402 00:20:12,800 --> 00:20:16,410 >> Mimi kisha wito get_int na kuhifadhi wake kinachojulikana kurudi thamani 403 00:20:16,410 --> 00:20:18,130 katika kwamba kutofautiana n. 404 00:20:18,130 --> 00:20:22,600 Lakini mimi nina kwenda kuendelea kufanya hii wakati n ni mkubwa kuliko 0. 405 00:20:22,600 --> 00:20:27,960 Kwa maneno mengine, kama mtumiaji anitiaye int na idadi hiyo ni mkubwa kuliko 0, 406 00:20:27,960 --> 00:20:31,180 ergo, chanya, mimi nina kwenda kwa tu kuweka reprompting user, 407 00:20:31,180 --> 00:20:37,160 kuweka reprompting, na kuwalazimisha kushirikiana na kunipa int hasi. 408 00:20:37,160 --> 00:20:41,640 >> Na mara moja n ni kweli negative-- kudhani user hatimaye aina -50, 409 00:20:41,640 --> 00:20:46,710 basi hii kitanzi wakati ni kweli tena kwa sababu -50 si mkuu zaidi kuliko 0. 410 00:20:46,710 --> 00:20:51,140 Hivyo sisi kuvunja nje ya kuwa kitanzi kifikra na kurudi n. 411 00:20:51,140 --> 00:20:53,520 >> Lakini kuna mtu mwingine Jambo nina kufanya. 412 00:20:53,520 --> 00:20:56,190 Na siwezi tu kufanya hivyo na kuiga na pasting 413 00:20:56,190 --> 00:20:58,540 moja mstari wa kanuni katika juu ya faili. 414 00:20:58,540 --> 00:21:01,630 Mimi haja ya kufundisha Clang, au ahadi ya Clang, 415 00:21:01,630 --> 00:21:04,630 wazi kwamba mimi, kwa kweli, kwenda na kutekeleza 416 00:21:04,630 --> 00:21:06,020 kazi hii get_negative_int. 417 00:21:06,020 --> 00:21:07,674 Inaweza tu kuwa chini katika faili. 418 00:21:07,674 --> 00:21:09,840 Tena, kukumbuka kwamba Clang anayesoma mambo juu hadi chini, 419 00:21:09,840 --> 00:21:12,330 kushoto na kulia, hivyo hawawezi piga kazi kama Clang 420 00:21:12,330 --> 00:21:15,330 hajui ni kwenda kuwepo. 421 00:21:15,330 --> 00:21:18,430 >> Sasa, kwa bahati mbaya, mpango huu, kama baadhi yenu wanaweza kuwa niliona, 422 00:21:18,430 --> 00:21:19,590 tayari buggy. 423 00:21:19,590 --> 00:21:21,400 Hebu kwenda mbele na kufanya buggy3. 424 00:21:21,400 --> 00:21:26,904 Ni inaandaa, hivyo tatizo langu sasa si syntax makosa, kama makosa textual, 425 00:21:26,904 --> 00:21:29,570 ni kweli kwenda kuwa mantiki makosa kwamba mimi wameweza kwa makusudi 426 00:21:29,570 --> 00:21:32,450 alifanya kama fursa ya hatua kupitia nini kinaendelea. 427 00:21:32,450 --> 00:21:35,540 >> Mimi nina kwenda mbele sasa na kukimbia buggy3. 428 00:21:35,540 --> 00:21:37,490 Na mimi nina kwenda mbele na kushirikiana. 429 00:21:37,490 --> 00:21:39,494 Mimi nina kwenda kuwapa namba 1. 430 00:21:39,494 --> 00:21:41,410 Haikuwa kama hayo, hivyo ni kusababisha mimi tena. 431 00:21:41,410 --> 00:21:42,147 >> Jinsi kuhusu 2? 432 00:21:42,147 --> 00:21:43,021 3? 433 00:21:43,021 --> 00:21:43,520 50? 434 00:21:43,520 --> 00:21:44,740 Hakuna hata wale wanafanya kazi. 435 00:21:44,740 --> 00:21:46,890 Jinsi kuhusu -50? 436 00:21:46,890 --> 00:21:48,560 Na mpango inaonekana kazi. 437 00:21:48,560 --> 00:21:49,970 >> Napenda kujaribu mara moja zaidi. 438 00:21:49,970 --> 00:21:53,400 Hebu jaribu -1, inaonekana kazi. 439 00:21:53,400 --> 00:21:56,380 Hebu jaribu -2, inaonekana kazi. 440 00:21:56,380 --> 00:21:59,640 Hebu jaribu 0. 441 00:21:59,640 --> 00:22:01,684 Huh, hiyo ni sahihi. 442 00:22:01,684 --> 00:22:03,350 Sasa, sisi ni kuwa kidogo pedantic hapa. 443 00:22:03,350 --> 00:22:07,090 Lakini ni, kwa kweli, kesi hiyo 0 ni wala chanya wala hasi. 444 00:22:07,090 --> 00:22:11,150 Na hivyo ukweli kwamba mpango wangu ni akisema kwamba 0 ni integer hasi, 445 00:22:11,150 --> 00:22:12,820 si kwamba utaalamu sahihi. 446 00:22:12,820 --> 00:22:15,180 >> Sasa, kwa nini ni kufanya hii? 447 00:22:15,180 --> 00:22:16,270 Naam, inaweza kuwa dhahiri. 448 00:22:16,270 --> 00:22:18,110 Na kwa kweli, mpango huo ni maana ya kuwa haki rahisi 449 00:22:18,110 --> 00:22:19,670 hivyo tuna kitu ya kuchunguza. 450 00:22:19,670 --> 00:22:25,870 >> Lakini hebu kuanzisha debugging tatu mbinu hapa aitwaye debug50. 451 00:22:25,870 --> 00:22:27,750 Hivyo hii ni mpango kwamba tumekuwa tu kuundwa 452 00:22:27,750 --> 00:22:30,770 mwaka kuitwa hii debug50 ambayo itawawezesha 453 00:22:30,770 --> 00:22:34,130 kwa kutumia kile kinachoitwa kujengwa katika HatiJava graphical katika CS50 IDE. 454 00:22:34,130 --> 00:22:38,400 Na HatiJava ni tu mpango kwamba ujumla inakuwezesha kuendesha programu yako 455 00:22:38,400 --> 00:22:44,050 lakini hatua kwa hatua kwa hatua, line kwa mstari kwa mstari, kusitisha, poking 456 00:22:44,050 --> 00:22:47,626 karibu, kuangalia vigezo ili haina mpango tu pigo nyuma yenu 457 00:22:47,626 --> 00:22:49,750 na haraka magazeti kitu au si magazeti kitu. 458 00:22:49,750 --> 00:22:53,250 Ni inakupa nafasi, katika binadamu kasi, kuingiliana na hayo. 459 00:22:53,250 --> 00:22:55,470 >> Na kwa kufanya hivyo, wewe tu kufanya yafuatayo. 460 00:22:55,470 --> 00:22:58,479 Baada ya kuandaa kanuni yako, ambayo mimi tayari alifanya, buggy3, 461 00:22:58,479 --> 00:23:00,020 wewe kwenda mbele na kukimbia debug50 ./buggy. 462 00:23:00,020 --> 00:23:03,460 463 00:23:03,460 --> 00:23:06,760 Sana kama help50 ina kukimbia help50 na kisha amri, 464 00:23:06,760 --> 00:23:10,120 debug50 ina kukimbia debug50 na kisha jina la amri. 465 00:23:10,120 --> 00:23:14,440 >> Sasa kuangalia nini kinatokea kwenye screen yangu, juu ya upande wa kulia hasa. 466 00:23:14,440 --> 00:23:19,400 Wakati mimi kugonga kukimbia, wote wa ghafla hii mkono wa kulia jopo 467 00:23:19,400 --> 00:23:20,419 kufungua juu ya screen. 468 00:23:20,419 --> 00:23:22,210 Na kuna mengi yanayoendelea juu ya katika mtazamo wa kwanza. 469 00:23:22,210 --> 00:23:25,110 Lakini kuna pia si kiasi na wasiwasi juu bado. 470 00:23:25,110 --> 00:23:28,570 >> Hii ni kuonyesha mimi kila kitu kwamba kinaendelea ndani ya mpango wangu 471 00:23:28,570 --> 00:23:31,130 sasa hivi na kupitia hizi vifungo juu juu ni kisha 472 00:23:31,130 --> 00:23:35,910 kuniruhusu hatua kupitia kanuni yangu hatimaye hatua kwa hatua kwa hatua. 473 00:23:35,910 --> 00:23:37,140 Lakini si tu bado. 474 00:23:37,140 --> 00:23:38,060 Taarifa ya nini kinatokea. 475 00:23:38,060 --> 00:23:40,600 Wakati terminal yangu dirisha Mimi nina kuwa ilisababisha kwa n. 476 00:23:40,600 --> 00:23:44,560 Na mimi nina kwenda mbele na kushirikiana wakati huu na aina katika -1. 477 00:23:44,560 --> 00:23:48,770 Na japo kidogo isiyoeleweka kirahisi, -1 ni integer hasi, kama ilivyotarajiwa. 478 00:23:48,770 --> 00:23:52,020 >> Na kisha mtoto exited na hadhi 0 GDBserver exiting. 479 00:23:52,020 --> 00:23:55,180 GDB, GNU Debugger, ni jina ya programu ya msingi 480 00:23:55,180 --> 00:23:56,620 kwamba zana HatiJava hii. 481 00:23:56,620 --> 00:24:00,500 Lakini yote hii kwa kweli ina maana, HatiJava akaenda kwa sababu mpango wangu kujiondoa 482 00:24:00,500 --> 00:24:01,710 na yote vizuri. 483 00:24:01,710 --> 00:24:06,020 Kama mimi nataka kweli Debug mpango wangu, Mimi na preemptively kuwaambia debug50, 484 00:24:06,020 --> 00:24:08,920 ambapo mimi nataka kuanza wanazidi kupitia kanuni yangu? 485 00:24:08,920 --> 00:24:11,750 >> Na pengine njia rahisi kufanya hivyo ni kama ifuatavyo. 486 00:24:11,750 --> 00:24:15,300 Kama mimi hover juu gutter ya mhariri wangu hapa, 487 00:24:15,300 --> 00:24:19,090 hivyo kweli tu katika sidebar hapa, upande wa kushoto wa idadi line, 488 00:24:19,090 --> 00:24:21,870 taarifa kwamba kama mimi bonyeza tu mara moja, mimi kuweka nyekundu kidogo dot. 489 00:24:21,870 --> 00:24:24,460 Na kwamba kidogo nyekundu dot, kama ishara stop, maana yake, hey, 490 00:24:24,460 --> 00:24:29,430 debug50, pause utekelezaji wa kanuni yangu haki pale nilipokuwa kuendesha mpango huu. 491 00:24:29,430 --> 00:24:30,260 >> Basi hebu kufanya hivyo. 492 00:24:30,260 --> 00:24:37,340 Hebu kwenda mbele na kuendesha programu yangu tena kwa debug50 ./buggy3, kuingia. 493 00:24:37,340 --> 00:24:40,110 Na sasa, angalia, jambo tofauti kilichotokea. 494 00:24:40,110 --> 00:24:42,440 Mimi si kuwa ilisababisha bado katika terminal dirisha yangu 495 00:24:42,440 --> 00:24:45,430 kwa lolote, kwa sababu mimi si wamezipata huko bado katika mpango wangu. 496 00:24:45,430 --> 00:24:47,950 Taarifa kwamba katika mstari wa 8 ambayo sasa ni yalionyesha, 497 00:24:47,950 --> 00:24:51,720 na kuna mshale kidogo katika msemo wa kushoto, wewe ni paused hapa. 498 00:24:51,720 --> 00:24:55,030 Hii mstari wa kanuni, line 8, bado kunyongwa. 499 00:24:55,030 --> 00:24:58,940 >> Na nini curious, kama mimi kuangalia zaidi ya hapa juu ya upande wa kulia, 500 00:24:58,940 --> 00:25:03,530 taarifa kwamba i ni mitaa kutofautiana, serikali za mitaa katika akili 501 00:25:03,530 --> 00:25:05,450 kwamba ni ndani ya kazi ya sasa. 502 00:25:05,450 --> 00:25:08,920 Na thamani yake, inaonekana by default, na aina ya conveniently, ni 0. 503 00:25:08,920 --> 00:25:10,260 Lakini sikuweza aina 0. 504 00:25:10,260 --> 00:25:13,410 Hiyo tu hutokea kwa kuwa wake thamani default kwa sasa. 505 00:25:13,410 --> 00:25:15,490 >> Hivyo basi mimi kwenda mbele na kufanya hili sasa. 506 00:25:15,490 --> 00:25:18,680 Hebu kwenda mbele na juu ya juu kulia hapa, mimi nina 507 00:25:18,680 --> 00:25:20,970 kwenda mbele na click icon hii ya kwanza ambayo 508 00:25:20,970 --> 00:25:25,360 ina maana hatua juu ambayo ina maana wala ruka lakini hatua ya juu hii mstari wa kanuni, 509 00:25:25,360 --> 00:25:27,770 utekelezaji yake njiani. 510 00:25:27,770 --> 00:25:30,710 >> Na sasa, taarifa, yangu haraka imebadilika tu. 511 00:25:30,710 --> 00:25:31,380 Kwanini hivyo? 512 00:25:31,380 --> 00:25:33,639 Nimekuwa aliiambia debug50, kukimbia hii mstari wa kanuni. 513 00:25:33,639 --> 00:25:34,930 Je hii mstari wa kanuni nini? 514 00:25:34,930 --> 00:25:35,960 Papo me kwa int. 515 00:25:35,960 --> 00:25:36,460 SAWA. 516 00:25:36,460 --> 00:25:37,400 Napenda kushirikiana. 517 00:25:37,400 --> 00:25:41,340 Hebu kwenda mbele sasa na aina -1, kuingia. 518 00:25:41,340 --> 00:25:42,920 Na sasa taarifa nini kimebadilika. 519 00:25:42,920 --> 00:25:46,060 Upande wa kulia, kutofautiana yangu mitaa i 520 00:25:46,060 --> 00:25:48,200 unahitajika kama kuwa -1 sasa. 521 00:25:48,200 --> 00:25:49,810 Na bado ni ya aina int. 522 00:25:49,810 --> 00:25:53,102 >> Na taarifa, pia, yangu kinachojulikana kuwaita stack, wapi mimi pause? 523 00:25:53,102 --> 00:25:54,810 Tutaweza majadiliano zaidi kuhusu hii katika siku zijazo. 524 00:25:54,810 --> 00:25:58,620 Lakini wito stack tu inahusu nini kazi ni sasa katika mwendo. 525 00:25:58,620 --> 00:26:00,040 Hivi sasa ni tu kuu. 526 00:26:00,040 --> 00:26:03,590 Na hivi sasa tu ndani kutofautiana ni i na thamani ya 1. 527 00:26:03,590 --> 00:26:09,840 >> Na wakati mimi hatimaye hatua ya juu ya mstari huu hapa, pamoja na icon hiyo kulia juu, 528 00:26:09,840 --> 00:26:11,410 -1 Ni integer hasi. 529 00:26:11,410 --> 00:26:13,580 Sasa ni kusitisha juu ya kwamba brace curly. 530 00:26:13,580 --> 00:26:14,740 Hebu basi ni kufanya kitu wake. 531 00:26:14,740 --> 00:26:17,300 Mimi hatua juu ya kwamba mstari, na voilĂ . 532 00:26:17,300 --> 00:26:20,240 >> Hivyo si wote kwamba sana mwangaza bado, 533 00:26:20,240 --> 00:26:23,550 lakini hakuwa napenda kutulia na kufikiria njia kifikra 534 00:26:23,550 --> 00:26:24,870 nini mpango huu ni kufanya. 535 00:26:24,870 --> 00:26:26,890 Lakini haikuwa hivyo potofu. 536 00:26:26,890 --> 00:26:28,510 Hebu kufanya hivyo tena kama ifuatavyo. 537 00:26:28,510 --> 00:26:31,340 >> Mimi nina kwenda kuondoka kwamba breakpoint kwenye mstari 8 na dot nyekundu. 538 00:26:31,340 --> 00:26:32,830 Mimi nina kwenda rerun debug50. 539 00:26:32,830 --> 00:26:34,400 Ni moja kwa moja paused hapa. 540 00:26:34,400 --> 00:26:37,660 Lakini wakati huu, badala ya wanazidi juu ya mstari huu, 541 00:26:37,660 --> 00:26:42,290 napenda kwa kweli kwenda ndani ya get_negative_int na kufikiri, 542 00:26:42,290 --> 00:26:45,530 kwa nini ni kukubali 0 kama jibu halali? 543 00:26:45,530 --> 00:26:47,990 >> Hivyo badala ya kubonyeza Step Over. 544 00:26:47,990 --> 00:26:50,630 Mimi nina kwenda mbele na click Hatua Into. 545 00:26:50,630 --> 00:26:54,030 Na taarifa kwamba mstari wa 8 hiyo ni sasa yalionyesha sasa ghafla 546 00:26:54,030 --> 00:26:56,900 inakuwa line 17. 547 00:26:56,900 --> 00:26:59,947 >> Sasa, si kwamba HatiJava ina skipped mistari 14 na 15 na 16. 548 00:26:59,947 --> 00:27:01,780 Ni tu kuna kitu na kuonyesha huko. 549 00:27:01,780 --> 00:27:04,050 Wale ni kutangaza tu vigezo, na kisha kuna neno Do 550 00:27:04,050 --> 00:27:05,390 na kisha wazi curly brace. 551 00:27:05,390 --> 00:27:09,227 tu kazi line hiyo ni Juicy kweli ni hii moja hapa, 17. 552 00:27:09,227 --> 00:27:11,060 Na hapo ndipo tumekuwa paused moja kwa moja. 553 00:27:11,060 --> 00:27:13,870 >> Hivyo printf ( "n.is:") ;, hivyo kwamba halijatokea bado. 554 00:27:13,870 --> 00:27:18,250 Basi hebu kwenda mbele na bonyeza Vuka. 555 00:27:18,250 --> 00:27:20,326 Sasa haraka yangu, kwa kweli, iliyopita na ( "n ni:"). 556 00:27:20,326 --> 00:27:22,450 Sasa get_int, mimi si kwenda kujisumbua wanazidi katika, 557 00:27:22,450 --> 00:27:24,750 kwa sababu kazi hiyo ilikuwa yaliyotolewa na CS50 katika maktaba. 558 00:27:24,750 --> 00:27:25,750 Ni labda sahihi. 559 00:27:25,750 --> 00:27:28,440 >> Hivyo mimi nina kwenda mbele na aina ya kushirikiana kwa kutoa ni 560 00:27:28,440 --> 00:27:30,590 int, lakini si int hasi. 561 00:27:30,590 --> 00:27:32,870 Hivyo basi mimi kwenda mbele na kugonga 0. 562 00:27:32,870 --> 00:27:39,460 Na sasa nini kinatokea hapa wakati mimi kupata chini ya kujipanga 21? 563 00:27:39,460 --> 00:27:40,890 Nimekuwa si iterated tena. 564 00:27:40,890 --> 00:27:43,320 Sina wanaonekana kuwa kukwama katika kitanzi kwamba. 565 00:27:43,320 --> 00:27:45,990 Kwa maneno mengine, hii njano bar hawakuridhika kwenda kuzunguka, 566 00:27:45,990 --> 00:27:47,130 na kuzunguka, na kuzunguka. 567 00:27:47,130 --> 00:27:48,340 >> Sasa, kwa nini ni kwamba? 568 00:27:48,340 --> 00:27:49,920 Naam, n, ni nini n sasa hivi? 569 00:27:49,920 --> 00:27:53,280 Naweza kuangalia ndani vigezo katika HatiJava. 570 00:27:53,280 --> 00:27:53,816 n ni 0. 571 00:27:53,816 --> 00:27:55,190 Yote ya haki, nini ilikuwa hali yangu? 572 00:27:55,190 --> 00:27:58,700 >> 20-- line 20 ni, vizuri, 0 ni mkubwa kuliko 0. 573 00:27:58,700 --> 00:27:59,500 Hiyo siyo kweli. 574 00:27:59,500 --> 00:28:01,020 0 si mkuu zaidi kuliko 0. 575 00:28:01,020 --> 00:28:02,820 Na hivyo mimi kuvunja nje ya hili. 576 00:28:02,820 --> 00:28:06,370 >> Na hivyo ndiyo sababu kwenye mstari 21, kama mimi kwa kweli kuendelea, 577 00:28:06,370 --> 00:28:10,370 Mimi nina kwenda na kurudi 0, hata ingawa ni lazima kuwa kukataliwa 0 578 00:28:10,370 --> 00:28:12,484 kama si kweli kuwa hasi. 579 00:28:12,484 --> 00:28:14,650 Hivyo sasa, mimi si kweli hata huduma kuhusu HatiJava. 580 00:28:14,650 --> 00:28:16,900 Got it, mimi hawana haja ya kujua nini zaidi kinachoendelea. 581 00:28:16,900 --> 00:28:19,233 >> Hivyo mimi nina kwenda mbele na bonyeza tu kifungo Play, 582 00:28:19,233 --> 00:28:20,240 na basi kumaliza hii up. 583 00:28:20,240 --> 00:28:23,440 Sasa, nimekuwa waligundua kuwa wangu mdudu ni inaonekana kwenye mstari 20. 584 00:28:23,440 --> 00:28:25,160 Hiyo ni hitilafu yangu mantiki. 585 00:28:25,160 --> 00:28:28,100 >> Na hivyo kile mimi nataka kufanya kubadili hali hii? 586 00:28:28,100 --> 00:28:32,500 Kama tatizo ni kwamba mimi si kuambukizwa 0, ni tu mantiki kosa. 587 00:28:32,500 --> 00:28:35,910 Na naweza kusema wakati n ni kubwa zaidi kuliko au sawa na 0, 588 00:28:35,910 --> 00:28:38,330 kuweka kusababisha mtumiaji tena na tena. 589 00:28:38,330 --> 00:28:41,050 >> Hivyo, tena, rahisi makosa, labda hata dhahiri wakati wewe akaniona 590 00:28:41,050 --> 00:28:42,410 kuandika ni dakika chache tu zilizopita. 591 00:28:42,410 --> 00:28:44,570 Lakini takeaway hapa ni kwamba pamoja na Debug 50, 592 00:28:44,570 --> 00:28:46,850 na kwa debugging programu kwa ujumla zaidi, 593 00:28:46,850 --> 00:28:51,370 una hii mpya nguvu kupatikana kwa kutembea kwa njia ya kanuni yako mwenyewe, kuangalia 594 00:28:51,370 --> 00:28:55,590 kupitia kwamba mkono jopo haki gani vigezo yako maadili ni. 595 00:28:55,590 --> 00:28:57,700 Hivyo kufanya si lazima una kutumia kitu 596 00:28:57,700 --> 00:29:00,630 kama wewe eprintf na magazeti maadili hayo. 597 00:29:00,630 --> 00:29:04,430 Unaweza kweli kuwaona kuibua kwenye screen. 598 00:29:04,430 --> 00:29:08,920 >> Sasa, zaidi ya hayo, ni thamani kubainisha kuwa kuna mbinu nyingine hiyo ni 599 00:29:08,920 --> 00:29:09,890 kweli super kawaida. 600 00:29:09,890 --> 00:29:13,120 Na unaweza kushangaa kwa nini hii kidogo guy hapa imekuwa ameketi juu ya hatua. 601 00:29:13,120 --> 00:29:16,490 Hivyo kuna mbinu hii, kwa ujumla inayojulikana kama bata mpira debugging, 602 00:29:16,490 --> 00:29:18,786 ambayo kwa kweli ni tu ushahidi wa ukweli 603 00:29:18,786 --> 00:29:20,660 kwamba mara nyingi wakati programmers ni kuandika code, 604 00:29:20,660 --> 00:29:22,650 wao siyo lazima kushirikiana na watu wengine, 605 00:29:22,650 --> 00:29:24,030 au kufanya kazi katika mazingira ya pamoja. 606 00:29:24,030 --> 00:29:25,050 >> Wao ni aina ya nyumbani. 607 00:29:25,050 --> 00:29:25,910 Labda ni usiku sana. 608 00:29:25,910 --> 00:29:28,190 Wao ni kujaribu takwimu nje baadhi mdudu katika kanuni zao. 609 00:29:28,190 --> 00:29:29,330 Na wao ni tu si kuona hilo. 610 00:29:29,330 --> 00:29:30,329 >> Na hakuna roommate. 611 00:29:30,329 --> 00:29:31,250 Hakuna TF. 612 00:29:31,250 --> 00:29:32,680 Hakuna CA kote. 613 00:29:32,680 --> 00:29:36,440 Wote wana juu ya rafu zao ni hii kidogo mpira ducky. 614 00:29:36,440 --> 00:29:39,030 >> Na hivyo debugging bata mpira ni tu mwaliko huu 615 00:29:39,030 --> 00:29:42,780 kufikiria kitu kama silly kama hii kama kiumbe halisi, 616 00:29:42,780 --> 00:29:46,940 na kwa kweli kutembea kwa njia ya kanuni yako kwa maneno ya hii kitu visivyo na uhai. 617 00:29:46,940 --> 00:29:49,230 Hivyo, kwa mfano, kama huu ni mfano wangu here-- 618 00:29:49,230 --> 00:29:52,470 na kukumbuka kuwa mapema Tatizo ni hili, 619 00:29:52,470 --> 00:29:58,140 kama mimi kufuta mstari huu wa kwanza wa kanuni, na mimi kwenda mbele na kufanya buggy 0 tena, 620 00:29:58,140 --> 00:30:01,220 kukumbuka kuwa nilikuwa hizi ujumbe wa makosa hapa. 621 00:30:01,220 --> 00:30:05,997 Hivyo wazo hapa, ujinga ingawa mimi kujisikia wakati akifanya kwa umma, 622 00:30:05,997 --> 00:30:06,580 ni kosa hilo. 623 00:30:06,580 --> 00:30:10,910 >> OK, hivyo tatizo langu ni kwamba mimi wameweza implicitly alitangaza maktaba kazi. 624 00:30:10,910 --> 00:30:12,610 Na kwamba kazi maktaba ni printf. 625 00:30:12,610 --> 00:30:15,290 Declare-- OK, kutangaza Inanikumbusha prototypes. 626 00:30:15,290 --> 00:30:18,930 >> Hiyo ina maana mimi haja kwa kweli kuwaambia compiler mapema kile 627 00:30:18,930 --> 00:30:19,980 kazi inaonekana kama. 628 00:30:19,980 --> 00:30:20,930 Subiri kidogo. 629 00:30:20,930 --> 00:30:23,580 Sikuwa na kiwango io.h. 630 00:30:23,580 --> 00:30:24,530 Asante sana. 631 00:30:24,530 --> 00:30:27,330 >> Hivyo tu mchakato huu of-- wewe huna haja ya kweli kuwa bata. 632 00:30:27,330 --> 00:30:29,819 Lakini hii wazo la kutembea mwenyewe kwa njia ya kanuni yako mwenyewe 633 00:30:29,819 --> 00:30:31,610 hivyo kwamba hata kusikia mwenyewe, ili 634 00:30:31,610 --> 00:30:35,620 kutambua omissions katika yako mwenyewe hotuba, kwa ujumla ni wazo. 635 00:30:35,620 --> 00:30:38,910 >> Na, pengine zaidi kifikra, si hivyo sana na kwamba moja lakini zaidi kushiriki 636 00:30:38,910 --> 00:30:44,220 mfano sisi tu alifanya katika 3.C buggy, unaweza kutembea mwenyewe kwa njia hiyo 637 00:30:44,220 --> 00:30:45,310 kama ifuatavyo. 638 00:30:45,310 --> 00:30:49,190 Basi wote haki, mpira ducky, DDB, kama wewe. 639 00:30:49,190 --> 00:30:52,350 Hapa tuna katika kazi yangu kuu, Mimi nina wito kupata int hasi. 640 00:30:52,350 --> 00:30:54,660 >> Na napata thamani ya kurudi. 641 00:30:54,660 --> 00:31:00,410 Mimi nina hifadhi hiyo upande wa kushoto kwenye mstari 8 katika variable kuitwa i. 642 00:31:00,410 --> 00:31:02,380 OK, lakini kusubiri, jinsi gani kwamba kupata kwamba thamani? 643 00:31:02,380 --> 00:31:04,130 Napenda kuangalia kazi katika mstari 12. 644 00:31:04,130 --> 00:31:05,760 >> Katika mstari 12, tuna kupata int hasi. 645 00:31:05,760 --> 00:31:08,190 Haina kuchukua pembejeo yoyote, haina kurudi int, OK. 646 00:31:08,190 --> 00:31:10,929 Mimi kutangaza kwenye mstari 14 variable n. 647 00:31:10,929 --> 00:31:12,220 Ni kwenda kuhifadhi integer. 648 00:31:12,220 --> 00:31:13,760 Hiyo ni nini nataka. 649 00:31:13,760 --> 00:31:18,480 >> Hivyo kufanya yafuatayo wakati n is-- basi me kuondoa nini fix mimi tayari alifanya. 650 00:31:18,480 --> 00:31:22,710 Hivyo wakati n ni mkubwa kuliko 0, magazeti nje n ni, OK. 651 00:31:22,710 --> 00:31:25,170 Na kisha kuwaita kupata int kuhifadhiwa katika n. 652 00:31:25,170 --> 00:31:30,160 Na kisha kuangalia kama n ni 0, n ni not-- huko ni. 653 00:31:30,160 --> 00:31:31,910 Hivyo, tena, huna haja bata halisi. 654 00:31:31,910 --> 00:31:35,650 Lakini tu kutembea mwenyewe kwa njia ya kanuni yako kama zoezi akili 655 00:31:35,650 --> 00:31:37,720 mara nyingi kukusaidia kutambua nini kinaendelea, 656 00:31:37,720 --> 00:31:41,170 kinyume na kufanya tu kitu kama hii, staring katika screen, 657 00:31:41,170 --> 00:31:43,720 na si kuzungumza mwenyewe kwa njia ya yake, ambayo kwa uaminifu si 658 00:31:43,720 --> 00:31:46,270 karibu kama mbinu madhubuti. 659 00:31:46,270 --> 00:31:48,620 Hivyo kuna una hiyo, idadi ya mbinu mbalimbali 660 00:31:48,620 --> 00:31:52,102 kwa kweli debugging kanuni yako na kutafuta kosa, ambayo yote 661 00:31:52,102 --> 00:31:54,810 lazima zana katika toolkit yako hivyo kwamba wewe si mwishoni mwa usiku, 662 00:31:54,810 --> 00:31:57,660 hasa, uko katika dining kumbi, au katika masaa ya ofisi, 663 00:31:57,660 --> 00:32:00,368 banging kichwa yako dhidi ukuta, kujaribu kutatua baadhi ya tatizo. 664 00:32:00,368 --> 00:32:02,020 Kutambua kwamba kuna programu zana. 665 00:32:02,020 --> 00:32:03,720 Kuna bata mpira zana. 666 00:32:03,720 --> 00:32:09,630 Na kuna wafanyakazi wote wa kusaidia kusubiri kuwakopesha mkono. 667 00:32:09,630 --> 00:32:13,120 >> Hivyo sasa, neno juu ya tatizo seti, na juu ya nini sisi ni matumaini wewe 668 00:32:13,120 --> 00:32:15,620 kupata kutoka kwao, na jinsi sisi kwenda juu ya kufanya tathmini. 669 00:32:15,620 --> 00:32:17,680 Kwa muhtasari kozi ya, CS50 ya tatizo seti 670 00:32:17,680 --> 00:32:22,320 ni tathmini juu ya shoka nne za msingi, hivyo kwa speak-- upeo, usahihi, kubuni, 671 00:32:22,320 --> 00:32:23,060 na style. 672 00:32:23,060 --> 00:32:25,910 Na upeo tu inahusu kiasi gani ya kipande na wewe kunyofolewa? 673 00:32:25,910 --> 00:32:28,080 Kiasi gani cha tatizo je, alijaribu? 674 00:32:28,080 --> 00:32:30,110 Nini ngazi ya juhudi kuwa wewe umejitokeza? 675 00:32:30,110 --> 00:32:35,750 >> Usahihi ni, anafanya kazi mpango kama ni walidhani per CS50 vipimo 676 00:32:35,750 --> 00:32:38,640 wakati kutoa pembejeo fulani au baadhi ya matokeo kurudi tena? 677 00:32:38,640 --> 00:32:41,130 Kubuni ni subjective wengi wao. 678 00:32:41,130 --> 00:32:43,360 Na ni moja ambayo kuchukua muda mrefu zaidi kujifunza 679 00:32:43,360 --> 00:32:47,220 na mrefu kufundisha, katika hivyo mbali kama majipu chini, 680 00:32:47,220 --> 00:32:49,530 jinsi vizuri imeandikwa ni kanuni yako? 681 00:32:49,530 --> 00:32:52,920 >> Ni jambo moja na magazeti tu sahihi matokeo au kurudi maadili ya haki. 682 00:32:52,920 --> 00:32:55,400 Lakini unafanya hivyo kama ufanisi kama iwezekanavyo? 683 00:32:55,400 --> 00:32:58,210 Unafanya hayo mgawanyiko na kushinda, au binary 684 00:32:58,210 --> 00:33:01,500 search kama tutaweza hivi karibuni kuona kwamba tulifanya wiki mbili zilizopita na kitabu cha simu? 685 00:33:01,500 --> 00:33:04,670 Je, kuna njia bora ya kutatua tatizo kuliko sasa kuwa hapa? 686 00:33:04,670 --> 00:33:06,380 Hiyo ni fursa kwa ajili ya kubuni bora. 687 00:33:06,380 --> 00:33:08,530 >> Na kisha style-- jinsi pretty ni kanuni yako? 688 00:33:08,530 --> 00:33:12,370 Utagundua kuwa mimi nina pretty hasa kuhusu indenting kanuni yangu, 689 00:33:12,370 --> 00:33:15,300 na kuhakikisha vigezo yangu ni sababu jina lake. n, 690 00:33:15,300 --> 00:33:19,660 wakati mfupi, ni jina nzuri kwa ajili ya idadi, i kwa kuhesabu integer, 691 00:33:19,660 --> 00:33:20,727 s kwa kamba. 692 00:33:20,727 --> 00:33:22,560 Na tunaweza kuwa na tena kutofautiana majina style. 693 00:33:22,560 --> 00:33:25,500 Sinema ni jinsi nzuri haina kanuni yako kuangalia? 694 00:33:25,500 --> 00:33:26,600 Na jinsi someka ni nini? 695 00:33:26,600 --> 00:33:29,650 >> Na baada ya muda, nini TAS yako na TFS kufanya katika mwendo 696 00:33:29,650 --> 00:33:31,870 ni kutoa kwa kuwa aina ya maoni ya ubora 697 00:33:31,870 --> 00:33:34,330 ili kupata bora katika mambo hayo mbalimbali. 698 00:33:34,330 --> 00:33:37,510 Na katika suala la jinsi sisi kutathmini kila mmoja shoka haya, 699 00:33:37,510 --> 00:33:40,080 ni kawaida kwa wachache sana ndoo ili wewe, kwa ujumla, 700 00:33:40,080 --> 00:33:41,680 kupata hisia ya jinsi vizuri unafanya. 701 00:33:41,680 --> 00:33:45,680 Na, kwa hakika, kama wewe kupokea alama juu ya yoyote ya wale axes-- usahihi, kubuni 702 00:33:45,680 --> 00:33:49,659 na style especially-- idadi hiyo kwa ujumla kuwa kati ya 1 na 5. 703 00:33:49,659 --> 00:33:52,450 Na, literally, kama wewe ni kupata 3 wa mwanzo wa muhula, 704 00:33:52,450 --> 00:33:53,977 hili ni jambo zuri sana. 705 00:33:53,977 --> 00:33:55,810 Ina maana bado kuna chumba kwa ajili ya kuboresha, 706 00:33:55,810 --> 00:33:58,490 ambayo ungependa matumaini kwa katika kuchukua darasa kwa mara ya kwanza. 707 00:33:58,490 --> 00:34:01,820 Kuna hopefully baadhi kidogo ya dari ambayo wewe ni anayetaka kufikia. 708 00:34:01,820 --> 00:34:03,970 Na hivyo kupata 3 ya juu vipande mwanzo, 709 00:34:03,970 --> 00:34:06,550 kama si baadhi 2 na 4 ya, ni kweli, ni jambo jema. 710 00:34:06,550 --> 00:34:08,880 Ni vizuri ndani mbalimbali, vizuri ndani ya matarajio. 711 00:34:08,880 --> 00:34:11,421 >> Na kama akili yako ni racing, kusubiri dakika, watatu kati ya watano. 712 00:34:11,421 --> 00:34:12,620 Hiyo ni kweli 6 kati ya 10. 713 00:34:12,620 --> 00:34:13,560 Hiyo ni 60%. 714 00:34:13,560 --> 00:34:14,830 Mungu wangu, hiyo ni F. 715 00:34:14,830 --> 00:34:15,870 >> Sio. 716 00:34:15,870 --> 00:34:17,600 Siyo, kwa kweli, kwamba. 717 00:34:17,600 --> 00:34:22,710 Badala yake, ni nafasi ya kuboresha juu ya mwendo wa muhula. 718 00:34:22,710 --> 00:34:25,580 Na kama wewe ni kupata baadhi fakiri, hizi ni fursa 719 00:34:25,580 --> 00:34:29,199 kuchukua faida ya masaa ya ofisi, hakika sehemu na rasilimali nyingine. 720 00:34:29,199 --> 00:34:32,840 >> Best ni fursa, kwa kweli, ya kujivunia tu jinsi mbali wameweza 721 00:34:32,840 --> 00:34:34,520 kuja juu ya mwendo wa muhula. 722 00:34:34,520 --> 00:34:38,199 Hivyo kutambua, kama hakuna kingine, tatu ni nzuri. 723 00:34:38,199 --> 00:34:40,179 Na inaruhusu chumba kwa ajili ya ukuaji baada ya muda. 724 00:34:40,179 --> 00:34:43,090 >> Kama jinsi shoka wale ni mizigo, realistically uko 725 00:34:43,090 --> 00:34:46,745 kwenda kutumia zaidi ya muda wako kupata mambo ya kazi, achilia mbali kwa usahihi. 726 00:34:46,745 --> 00:34:49,120 Na hivyo usahihi inaelekea kuwa mizigo zaidi, kama na 727 00:34:49,120 --> 00:34:51,360 sababu hii multiplicative ya tatu. 728 00:34:51,360 --> 00:34:54,659 Kubuni ni muhimu pia, lakini kitu ambacho si lazima 729 00:34:54,659 --> 00:34:58,220 kutumia yote ya masaa wale kwenye kujaribu kupata mambo tu ya kufanya kazi. 730 00:34:58,220 --> 00:35:00,019 >> Na hivyo ni mizigo kidogo lightly zaidi. 731 00:35:00,019 --> 00:35:01,560 Na kisha style ni mizigo mdogo. 732 00:35:01,560 --> 00:35:03,710 Hata kama ni hakuna chini muhimu kimsingi, 733 00:35:03,710 --> 00:35:05,990 ni tu, pengine, rahisi Jambo la kufanya haki, 734 00:35:05,990 --> 00:35:08,440 mimicking mifano sisi kufanya katika hotuba na sehemu, 735 00:35:08,440 --> 00:35:11,080 na mambo nicely indented, na maoni, 736 00:35:11,080 --> 00:35:14,320 na kadhalika ni miongoni mwa njia rahisi mambo ya kufanya na kupata haki. 737 00:35:14,320 --> 00:35:16,960 Hivyo kama vile, kutambua kwamba wale ni pointi 738 00:35:16,960 --> 00:35:19,000 kwamba ni rahisi kufahamu. 739 00:35:19,000 --> 00:35:22,360 >> Na sasa neno juu Haya uaminifu kitaaluma. 740 00:35:22,360 --> 00:35:25,150 Hivyo kwa kila kozi ya mtaala, utaona 741 00:35:25,150 --> 00:35:27,630 kwamba bila shaka ina kabisa kidogo ya lugha kuzunguka hili. 742 00:35:27,630 --> 00:35:31,380 Na bila shaka inachukua suala la uaminifu kitaaluma umakini kabisa. 743 00:35:31,380 --> 00:35:33,450 >> Tuna tofauti, kwa bora au mbaya, 744 00:35:33,450 --> 00:35:36,570 ya kuwa alimtuma kila mwaka zaidi wanafunzi kwa hatua za kinidhamu 745 00:35:36,570 --> 00:35:39,670 kuliko wengi nyingine yoyote Bila shaka, kwamba mimi kufahamu. 746 00:35:39,670 --> 00:35:42,580 Hii si lazima dalili ya ukweli 747 00:35:42,580 --> 00:35:46,340 kwamba CS wanafunzi, au wanafunzi CS50, ni yoyote chini waaminifu kuliko wanafunzi wako. 748 00:35:46,340 --> 00:35:49,090 Lakini ukweli kwamba katika hii dunia, umeme, sisi tu 749 00:35:49,090 --> 00:35:50,990 na teknolojia ina maana ya kuchunguza hii. 750 00:35:50,990 --> 00:35:53,360 >> Ni muhimu kwetu kwa ajili ya haki katika matabaka 751 00:35:53,360 --> 00:35:58,550 kwamba sisi kufanya kugundua hii, na kuongeza Suala tunapoona mambo. 752 00:35:58,550 --> 00:36:01,980 Na tu kuchora picha, na kwa kweli kusaidia kitu kama kuzama huu katika, 753 00:36:01,980 --> 00:36:04,600 hizi ni hesabu za wanafunzi katika kipindi cha miaka 10 754 00:36:04,600 --> 00:36:07,610 kwamba waliohusika katika baadhi masuala hayo ya uaminifu kitaaluma, 755 00:36:07,610 --> 00:36:10,990 pamoja na baadhi ya 32 ya wanafunzi kutoka kuanguka mwaka 2015, ambayo 756 00:36:10,990 --> 00:36:13,760 ni kusema kwamba hatuna kuchukua jambo kwa umakini sana. 757 00:36:13,760 --> 00:36:18,380 Na, hatimaye, namba hizi kutunga, hivi karibuni zaidi, kuhusu 3%, 4% au hivyo 758 00:36:18,380 --> 00:36:19,120 ya darasa. 759 00:36:19,120 --> 00:36:25,220 >> Hivyo kwa ajili ya wengi super ya wanafunzi inaonekana kwamba mistari ni wazi. 760 00:36:25,220 --> 00:36:27,940 Lakini je, kuweka hii katika akili, hasa mwishoni mwa mwezi 761 00:36:27,940 --> 00:36:32,080 usiku wakati zinakabiliwa na baadhi ufumbuzi wa tatizo kuweka, 762 00:36:32,080 --> 00:36:34,830 kwamba kuna utaratibu kwa ajili ya kupata mwenyewe bora 763 00:36:34,830 --> 00:36:37,870 msaada kuliko unavyoweza kufikiri, hata katika saa ile. 764 00:36:37,870 --> 00:36:40,514 Kutambua kwamba wakati sisi kupokea maoni mwanafunzi, sisi kuvuka 765 00:36:40,514 --> 00:36:43,430 kulinganisha kila kuwasilisha mwaka huu dhidi ya kila kuwasilisha mwaka jana, 766 00:36:43,430 --> 00:36:47,590 dhidi ya kila utii kutoka 2007, na tangu, kuangalia, kama vile, 767 00:36:47,590 --> 00:36:49,931 misimbo online, majadiliano ya vikao, maeneo ya kazi. 768 00:36:49,931 --> 00:36:51,806 Na sisi kutaja hii, kweli, yote kwa ajili 769 00:36:51,806 --> 00:36:56,040 ya kutoa taarifa kamili, kwamba kama mtu mwingine anaweza kupata hiyo online, 770 00:36:56,040 --> 00:36:57,880 hakika, sisi pia tunaweza shaka. 771 00:36:57,880 --> 00:37:00,100 Lakini, kwa kweli, roho bila shaka majipu chini 772 00:37:00,100 --> 00:37:01,650 kwa kifungu hiki katika mtaala. 773 00:37:01,650 --> 00:37:03,670 Ni kweli ni tu, kuwa na busara. 774 00:37:03,670 --> 00:37:06,680 >> Na kama tulikuwa na kufafanua juu ya kwamba na tu lugha kidogo zaidi, 775 00:37:06,680 --> 00:37:09,770 kutambua kwamba kiini cha zote kazi kwamba kuwasilisha kwa kozi hii 776 00:37:09,770 --> 00:37:10,954 lazima yako mwenyewe. 777 00:37:10,954 --> 00:37:13,870 Lakini ndani ya kwamba, kuna shaka fursa, na kutia moyo, 778 00:37:13,870 --> 00:37:17,300 na ufundishaji thamani katika kugeuka kwa others-- mwenyewe, TFS, CAS, 779 00:37:17,300 --> 00:37:20,760 TAS, na wengine darasani, kwa msaada, basi marafiki peke yake 780 00:37:20,760 --> 00:37:23,547 na roommates ambao wamesoma CS na programu kabla. 781 00:37:23,547 --> 00:37:25,130 Na hivyo kuna posho kwa ajili hiyo. 782 00:37:25,130 --> 00:37:28,180 Na kanuni ya jumla ya thumb ni Haya wakati kuomba msaada, 783 00:37:28,180 --> 00:37:31,470 wenu aonyeshe kanuni yako kwa wengine, lakini unaweza kuona yao. 784 00:37:31,470 --> 00:37:34,880 Hivyo hata kama uko katika masaa ya ofisi, au katika D ukumbi, au mahali pengine 785 00:37:34,880 --> 00:37:37,450 kufanya kazi katika baadhi ya kuweka kipande, kufanya kazi pamoja na rafiki, ambayo 786 00:37:37,450 --> 00:37:40,160 ni kabisa faini, saa mwisho wa siku kazi yako 787 00:37:40,160 --> 00:37:43,034 lazima hatimaye ni ya kila wenu kwa mtiririko huo, na si 788 00:37:43,034 --> 00:37:45,700 kuwa baadhi ya jitihada za pamoja, isipokuwa kwa mradi wa mwisho ambapo 789 00:37:45,700 --> 00:37:47,410 ni kuruhusiwa na moyo. 790 00:37:47,410 --> 00:37:49,830 >> Kutambua kwamba kama wewe ni zinakabiliwa na kitu 791 00:37:49,830 --> 00:37:52,520 na rafiki yako hutokea tu kuwa bora katika hii basi, 792 00:37:52,520 --> 00:37:55,130 au bora katika kwamba tatizo kuliko wewe, au mbele kidogo mbele kuliko wewe, 793 00:37:55,130 --> 00:37:57,330 ni kabisa busara kurejea kwa rafiki yako na kusema, hey, 794 00:37:57,330 --> 00:38:00,480 je, wewe akili kuangalia kanuni yangu hapa, kusaidia mimi doa nini suala yangu ni nani? 795 00:38:00,480 --> 00:38:03,760 Na, pengine, katika maslahi ya thamani ya ufundishaji 796 00:38:03,760 --> 00:38:07,040 kwamba rafiki hana tu kusema, oh, kufanya hivyo, lakini badala yake, 797 00:38:07,040 --> 00:38:09,917 ni nini kukosa juu ya mstari 6, au kitu kama hicho? 798 00:38:09,917 --> 00:38:12,000 Lakini ufumbuzi ni si kwa rafiki karibu na wewe 799 00:38:12,000 --> 00:38:15,617 kusema, oh, vizuri, hapa, ngoja nikuondoe hii juu, na kuonyesha ufumbuzi yangu na wewe. 800 00:38:15,617 --> 00:38:16,450 Hivyo kwamba ni line. 801 00:38:16,450 --> 00:38:18,670 You kuonyesha kanuni yako kwa wengine, lakini msitende 802 00:38:18,670 --> 00:38:22,350 kuona yao, chini ya wengine vikwazo katika mtaala kozi. 803 00:38:22,350 --> 00:38:24,760 >> Hivyo kukumbuka hii kinachojulikana majuto kifungu 804 00:38:24,760 --> 00:38:27,560 katika mtaala wa kozi kama vizuri, kwamba kama wewe kufanya baadhi kitendo ambacho 805 00:38:27,560 --> 00:38:30,476 si ya kuridhisha, lakini kuleta kwa tahadhari ya vichwa kozi ya 806 00:38:30,476 --> 00:38:34,240 ndani ya masaa 72, bila shaka inaweza kutoza vikwazo ndani kwamba 807 00:38:34,240 --> 00:38:37,380 ni pamoja na adimu au kushindwa daraja kwa ajili ya kazi kuwasilishwa. 808 00:38:37,380 --> 00:38:41,410 Lakini bila shaka si rejea jambo kwa hatua zaidi za kinidhamu, 809 00:38:41,410 --> 00:38:43,010 isipokuwa katika kesi ya vitendo vya mara kwa mara. 810 00:38:43,010 --> 00:38:46,632 Kwa maneno mengine, kama wewe kufanya kufanya baadhi kijinga, hasa mwishoni mwa usiku, uamuzi 811 00:38:46,632 --> 00:38:49,340 kwamba asubuhi au siku mbili baadaye, wewe kuamka na kutambua, 812 00:38:49,340 --> 00:38:50,870 nini mimi kufikiri? 813 00:38:50,870 --> 00:38:53,890 Wewe kufanya katika CS50 na outlet kwa ajili ya fixing kwamba tatizo 814 00:38:53,890 --> 00:38:57,170 na kumiliki juu yake, ili tuweze kukutana na wewe halfway na kukabiliana 815 00:38:57,170 --> 00:39:01,500 nayo katika jambo kuwa ni wa elimu na thamani kwako, 816 00:39:01,500 --> 00:39:04,200 lakini bado kutoa adhabu kwa namna fulani. 817 00:39:04,200 --> 00:39:08,590 Na sasa, kwa kuchukua makali mbali, hii. 818 00:39:08,590 --> 00:39:10,570 >> [VIDEO avspelning] 819 00:39:10,570 --> 00:39:13,540 >> [Music kucheza] 820 00:39:13,540 --> 00:39:58,090 821 00:39:58,090 --> 00:39:58,866 >> [MWISHO avspelning] 822 00:39:58,866 --> 00:40:00,490 DAVID J. Malan: zote haki, sisi ni nyuma. 823 00:40:00,490 --> 00:40:03,680 Na sasa tunaangalia moja ya kwanza ya ulimwengu wa kweli yetu nyanja 824 00:40:03,680 --> 00:40:08,720 katika CS50, sanaa ya cryptography, sanaa ya kutuma na kupokea 825 00:40:08,720 --> 00:40:11,840 ujumbe siri, encrypted ujumbe kama wewe, 826 00:40:11,840 --> 00:40:17,060 tu ambayo inaweza kusomeka kama una baadhi kiungo muhimu kwamba mtumaji ana 827 00:40:17,060 --> 00:40:18,030 vilevile. 828 00:40:18,030 --> 00:40:22,120 Hivyo kuwahamasisha huu tutaweza kuchukua a kuangalia jambo hili hapa, 829 00:40:22,120 --> 00:40:26,750 ambayo ni mfano wa siri avkodare pete kwamba 830 00:40:26,750 --> 00:40:34,042 inaweza kutumika ili kufikiri nini ujumbe wa siri kweli ni. 831 00:40:34,042 --> 00:40:35,750 Kwa kweli, nyuma katika siku katika shule ya daraja, 832 00:40:35,750 --> 00:40:38,787 kama wewe milele alimtuma ujumbe siri kwa baadhi rafiki au baadhi kuponda darasani, 833 00:40:38,787 --> 00:40:40,620 unaweza kuwa na mawazo walikuwa kuwa wajanja 834 00:40:40,620 --> 00:40:46,530 na juu ya karatasi yako kubadilika, kama, A na B, na B na C, na C na D, 835 00:40:46,530 --> 00:40:47,590 na kadhalika. 836 00:40:47,590 --> 00:40:50,300 Lakini wewe walikuwa kweli encrypting taarifa yako, hata 837 00:40:50,300 --> 00:40:53,300 kama ilikuwa na maana kidogo, haikuwa kuwa ngumu kwa mwalimu kutambua, 838 00:40:53,300 --> 00:40:55,675 vizuri, kama wewe tu mabadiliko B kwa A na C na B, 839 00:40:55,675 --> 00:40:57,550 wewe kweli kufikiri nini ujumbe ulikuwa, 840 00:40:57,550 --> 00:40:59,700 lakini walikuwa katika uchujaji wa habari. 841 00:40:59,700 --> 00:41:03,420 >> You walikuwa tu kufanya hivyo tu, kiasi kama Ralphie hapa 842 00:41:03,420 --> 00:41:07,934 katika movie maarufu ambayo ina pretty much ad nauseum kila majira ya baridi. 843 00:41:07,934 --> 00:41:08,600 [VIDEO avspelning] 844 00:41:08,600 --> 00:41:11,180 -Kuwa Ijulikane kwa watu wote Ralph Parker ni hili 845 00:41:11,180 --> 00:41:14,070 aliteuliwa kuwa mjumbe wa Little Yatima Annie Secret Circle 846 00:41:14,070 --> 00:41:17,700 na ni haki ya heshima zote na faida zinazotokea lazimishwa. 847 00:41:17,700 --> 00:41:24,340 >> -Signed, Little Yatima Annie, kukabiliana na saini Pierre Andre, katika wino. 848 00:41:24,340 --> 00:41:27,160 Heshima na faida, tayari katika umri wa miaka tisa. 849 00:41:27,160 --> 00:41:30,490 850 00:41:30,490 --> 00:41:31,825 >> [Kupiga kelele] 851 00:41:31,825 --> 00:41:33,750 852 00:41:33,750 --> 00:41:34,250 -Come Juu. 853 00:41:34,250 --> 00:41:35,210 Hebu kupata tarehe na hayo. 854 00:41:35,210 --> 00:41:39,530 Sina haja jazz kwamba wote kuhusu smugglers na maharamia. 855 00:41:39,530 --> 00:41:41,660 >> -Sikiliza Kesho usiku kwa kuhitimisha adventure 856 00:41:41,660 --> 00:41:43,880 ya nyeusi meli na maharamia. 857 00:41:43,880 --> 00:41:46,650 Sasa, ni wakati kwa ajili Annie ya ujumbe wa siri 858 00:41:46,650 --> 00:41:49,840 kwa ajili yenu wanachama wa Secret Circle. 859 00:41:49,840 --> 00:41:53,570 Kumbuka, watoto, wanachama tu ya Annie ya siri Circle 860 00:41:53,570 --> 00:41:56,140 unaweza Decode Annie ya ujumbe wa siri. 861 00:41:56,140 --> 00:42:00,340 >> Kumbuka, Annie ni kutegemea wewe. 862 00:42:00,340 --> 00:42:02,880 Kuweka pini yako kwa B2. 863 00:42:02,880 --> 00:42:05,230 Hapa ni ujumbe. 864 00:42:05,230 --> 00:42:06,090 12, 11-- 865 00:42:06,090 --> 00:42:10,250 >> -I Am katika, mkutano wangu wa kwanza wa siri. 866 00:42:10,250 --> 00:42:13,890 >> -14, 11, 18, 16. 867 00:42:13,890 --> 00:42:15,780 >> -Pierre Alikuwa katika kubwa sauti usiku wa leo. 868 00:42:15,780 --> 00:42:19,000 Mimi nilikuwa naona kuwa usiku wa leo ujumbe ulikuwa kweli ni muhimu. 869 00:42:19,000 --> 00:42:22,694 >> -3, 25, hiyo ni ujumbe kutoka Annie mwenyewe. 870 00:42:22,694 --> 00:42:23,860 Kumbuka, usimwambie mtu yeyote. 871 00:42:23,860 --> 00:42:28,760 872 00:42:28,760 --> 00:42:32,930 >> sekunde -90 baadaye, mimi niko katika tu chumba katika nyumba ambapo kijana wa tisa 873 00:42:32,930 --> 00:42:37,040 wanaweza kukaa katika faragha na Decode. 874 00:42:37,040 --> 00:42:39,730 Aha, B! 875 00:42:39,730 --> 00:42:42,360 Nilikwenda ijayo, E. 876 00:42:42,360 --> 00:42:44,520 >> neno la kwanza ni kuwa. 877 00:42:44,520 --> 00:42:49,032 S, alikuwa anakuja rahisi sasa, U, 25-- 878 00:42:49,032 --> 00:42:51,733 >> -Oh, Kuja juu, Ralphie, I gotta go! 879 00:42:51,733 --> 00:42:53,688 >> -I'll Kuwa haki ya chini, Ma! 880 00:42:53,688 --> 00:42:54,188 Gee whiz! 881 00:42:54,188 --> 00:42:58,116 882 00:42:58,116 --> 00:43:04,060 >> -T, O, kuwa na uhakika to-- kuwa na uhakika wa nini? 883 00:43:04,060 --> 00:43:05,970 Nini ilikuwa Little Yatima Annie anajaribu kusema nini? 884 00:43:05,970 --> 00:43:07,264 Kuwa na uhakika wa nini? 885 00:43:07,264 --> 00:43:09,634 >> -Ralphie, Andy ina got Kwenda, je tafadhali kuja nje? 886 00:43:09,634 --> 00:43:10,480 >> -All Haki, Ma! 887 00:43:10,480 --> 00:43:12,880 Nitakuwa haki nje! 888 00:43:12,880 --> 00:43:14,550 >> -I Nilikuwa kupata karibu sasa. 889 00:43:14,550 --> 00:43:16,620 mvutano ilikuwa ya kutisha. 890 00:43:16,620 --> 00:43:17,720 Ilikuwa ni nini? 891 00:43:17,720 --> 00:43:20,170 hatima ya sayari inaweza hutegemea katika mizani. 892 00:43:20,170 --> 00:43:20,670 >> -Ralphie! 893 00:43:20,670 --> 00:43:23,170 gotta Andy kwenda! 894 00:43:23,170 --> 00:43:26,890 >> -I'll Kuwa haki ya nje, kwa kelele kubwa! 895 00:43:26,890 --> 00:43:32,680 >> -Almost Huko, vidole yangu akaruka, mawazo yangu Ilikuwa chuma mtego, kila pore vibrated. 896 00:43:32,680 --> 00:43:37,198 Ilikuwa ni karibu wazi, ndiyo, ndiyo, ndiyo. 897 00:43:37,198 --> 00:43:43,091 >> -Kuwa Na uhakika na kunywa Ovaltine yako. 898 00:43:43,091 --> 00:43:43,590 Ovaltine? 899 00:43:43,590 --> 00:43:48,160 900 00:43:48,160 --> 00:43:49,430 kibiashara crummy? 901 00:43:49,430 --> 00:43:53,046 902 00:43:53,046 --> 00:43:54,227 Mwana wa bitch. 903 00:43:54,227 --> 00:43:54,810 [MWISHO avspelning] 904 00:43:54,810 --> 00:43:57,390 DAVID J. Malan: OK, hivyo kwamba ilikuwa ni njia ya muda mrefu sana 905 00:43:57,390 --> 00:44:00,660 ya kuanzisha cryptography, na pia Ovaltine. 906 00:44:00,660 --> 00:44:04,470 Kwa kweli, kutokana tangazo hili umri hapa, ni kwa nini Ovaltine nzuri? 907 00:44:04,470 --> 00:44:09,470 Ni uchimbaji kujilimbikizia ya muafaka shayiri malt, maziwa safi creamy ya ng'ombe, 908 00:44:09,470 --> 00:44:14,360 na hasa tayari kakao, pamoja na phosphatides asili na vitamini. 909 00:44:14,360 --> 00:44:18,240 Ni zaidi ngome na nyongeza ya vitamini B na D, yum. 910 00:44:18,240 --> 00:44:21,600 Na bado unaweza kupata hiyo, inaonekana, juu ya Amazon, kama tulivyofanya hapa. 911 00:44:21,600 --> 00:44:24,810 >> Lakini motisha hapa ilikuwa ni kuanzisha cryptography, hasa 912 00:44:24,810 --> 00:44:28,340 aina ya cryptography inayojulikana kama ufunguo wa siri cryptography. 913 00:44:28,340 --> 00:44:34,284 Na kama jina linavyosema, zima usalama wa siri mfumo muhimu crypto, 914 00:44:34,284 --> 00:44:36,200 kama wewe, mbinu kwa scrambling tu 915 00:44:36,200 --> 00:44:40,960 habari kati ya watu wawili, ni kwamba tu mtumaji na mpokeaji tu 916 00:44:40,960 --> 00:44:46,980 kujua siri key-- baadhi ya thamani, baadhi siri maneno, baadhi ya idadi ya siri, kwamba 917 00:44:46,980 --> 00:44:50,660 inaruhusu yao wote wawili encrypt na decrypt habari. 918 00:44:50,660 --> 00:44:53,470 Na cryptography, kwa kweli, ni tu hii kutoka wiki 0. 919 00:44:53,470 --> 00:44:56,715 >> Ni tatizo ambapo kuna pembejeo, kama ujumbe halisi katika Kiingereza 920 00:44:56,715 --> 00:44:59,340 au lugha yoyote kwamba wewe unataka kutuma kwa mtu katika darasa, 921 00:44:59,340 --> 00:45:00,580 au katika mtandao. 922 00:45:00,580 --> 00:45:03,840 Kuna baadhi ya pato, ambayo ni kwenda kuwa ujumbe scrambled kwamba 923 00:45:03,840 --> 00:45:05,250 wanataka mpokeaji kupokea. 924 00:45:05,250 --> 00:45:07,405 Na hata kama mtu katika katikati inapata hiyo pia, 925 00:45:07,405 --> 00:45:09,780 wewe hawataki yao kwa lazima kuwa na uwezo wa decrypt yake, 926 00:45:09,780 --> 00:45:12,840 kwa sababu ndani ya hii nyeusi sanduku, au algorithm, 927 00:45:12,840 --> 00:45:17,650 ni baadhi utaratibu, baadhi ya hatua kwa hatua maelekezo, kwa ajili ya kuchukua kwamba pembejeo 928 00:45:17,650 --> 00:45:20,710 na kuwabadili ndani pato, katika hopefully njia salama. 929 00:45:20,710 --> 00:45:23,640 >> Na, kwa kweli, kuna baadhi ya msamiati katika dunia hii kama ifuatavyo. 930 00:45:23,640 --> 00:45:26,100 Nakala wazi ni neno a kompyuta mwanasayansi ingekuwa 931 00:45:26,100 --> 00:45:28,449 kutumia kuelezea pembejeo ujumbe, kama Kiingereza 932 00:45:28,449 --> 00:45:31,240 au lugha kwa kweli chochote unataka kutuma kwa baadhi ya binadamu wengine. 933 00:45:31,240 --> 00:45:35,450 Na kisha nakala ya siri ni kinyang'anyiro kwa enciphered, au encrypted, 934 00:45:35,450 --> 00:45:36,520 version yake. 935 00:45:36,520 --> 00:45:38,750 >> Lakini kuna mtu mwingine ingredient hapa. 936 00:45:38,750 --> 00:45:43,200 Kuna moja pembejeo nyingine kwa ufunguo wa siri cryptography. 937 00:45:43,200 --> 00:45:45,200 Na kwamba ni muhimu yenyewe, ambayo ni, kwa ujumla, 938 00:45:45,200 --> 00:45:48,930 kama tutaweza kuona, posta, au barua, au neno, chochote 939 00:45:48,930 --> 00:45:51,980 algorithm ni kweli anatarajia. 940 00:45:51,980 --> 00:45:53,870 >> Na jinsi gani unaweza decrypt habari? 941 00:45:53,870 --> 00:45:55,110 Jinsi gani unaweza unscramble yake? 942 00:45:55,110 --> 00:45:57,950 Naam, wewe tu kubadili mazao na pembejeo za. 943 00:45:57,950 --> 00:46:00,900 >> Kwa maneno mengine, mara moja mtu inapata ujumbe wako encrypted, 944 00:46:00,900 --> 00:46:03,740 yeye au yeye tu ana kujua ufunguo huo. 945 00:46:03,740 --> 00:46:05,700 Wamepokea nakala ya siri. 946 00:46:05,700 --> 00:46:09,530 Na kwa plugging hizo mbili pembejeo katika mfumo crypto, 947 00:46:09,530 --> 00:46:14,260 algorithm, hii sanduku nyeusi, nje waje maandishi wazi awali. 948 00:46:14,260 --> 00:46:17,830 Na hivyo ndiyo kiwango cha juu sana mtazamo wa kile cryptography ni kweli 949 00:46:17,830 --> 00:46:18,590 yote juu. 950 00:46:18,590 --> 00:46:20,030 >> Basi hebu kupata huko. 951 00:46:20,030 --> 00:46:22,700 Hebu sasa kuangalia chini kofia ya kitu 952 00:46:22,700 --> 00:46:26,000 tumekuwa kuchukua kwa nafasi kwa wiki iliyopita, na katika kikao hiki 953 00:46:26,000 --> 00:46:27,629 here-- kamba. 954 00:46:27,629 --> 00:46:30,295 kamba mwisho wa siku ni tu mlolongo wa wahusika. 955 00:46:30,295 --> 00:46:33,610 >> Ni inaweza kuwa hujambo dunia, au hodi Zamyla, au chochote. 956 00:46:33,610 --> 00:46:37,050 Lakini hiyo ina maana gani kwa kuwa mlolongo wa wahusika? 957 00:46:37,050 --> 00:46:41,520 Kwa kweli, maktaba CS50 inatoa sisi aina data kuitwa kamba. 958 00:46:41,520 --> 00:46:45,140 >> Lakini kuna kweli hakuna kitu kama kamba katika C. 959 00:46:45,140 --> 00:46:49,450 Ni kweli ni tu mlolongo wa tabia, tabia, tabia, 960 00:46:49,450 --> 00:46:52,180 tabia, nyuma, nyuma, kwa nyuma, na nyuma, kuunga ndani ya 961 00:46:52,180 --> 00:46:54,650 ya kumbukumbu ya kompyuta yako, au RAM. 962 00:46:54,650 --> 00:46:58,940 Na tutaangalia zaidi katika kwamba katika baadaye tunapoangalia kumbukumbu yenyewe, 963 00:46:58,940 --> 00:47:02,030 na matumizi, na vitisho kuwa ni kushiriki. 964 00:47:02,030 --> 00:47:04,100 >> Lakini hebu fikiria kamba Zamyla. 965 00:47:04,100 --> 00:47:07,480 Hivyo tu jina la binadamu hapa, Zamyla, 966 00:47:07,480 --> 00:47:12,030 kwamba ni mlolongo wa wahusika, Z-A-M-Y-L-A. 967 00:47:12,030 --> 00:47:16,020 Na sasa hebu tuseme kwamba jina Zamyla ya ni kuwa kuhifadhiwa ndani ya kompyuta 968 00:47:16,020 --> 00:47:16,880 mpango. 969 00:47:16,880 --> 00:47:20,830 >> Naam, anasimama kwa sababu kwamba tunapaswa kuwa na uwezo wa kuangalia wahusika hao 970 00:47:20,830 --> 00:47:21,590 mmoja mmoja. 971 00:47:21,590 --> 00:47:24,710 Hivyo mimi nina kwenda tu kuteka kidogo sanduku kuzunguka jina Zamyla ya hapa. 972 00:47:24,710 --> 00:47:31,580 Na ni kesi katika C kwamba wakati wewe na kamba, kama Zamyla-- na labda 973 00:47:31,580 --> 00:47:34,940 kwamba kamba umefika nyuma kutoka kazi kama kupata kamba, 974 00:47:34,940 --> 00:47:38,540 unaweza kweli kuendesha ni tabia na tabia. 975 00:47:38,540 --> 00:47:42,070 >> Sasa, hii ni germane kwa mazungumzo katika mkono, kwa sababu 976 00:47:42,070 --> 00:47:46,420 katika cryptography kama unataka mabadiliko kwa B, na B na C, na C na D, 977 00:47:46,420 --> 00:47:49,650 na kadhalika, unahitaji kuwa na uwezo kuangalia wahusika binafsi 978 00:47:49,650 --> 00:47:50,190 katika kamba. 979 00:47:50,190 --> 00:47:52,695 Unahitaji kuwa na uwezo wa kubadilisha Z kwa kitu kingine, A 980 00:47:52,695 --> 00:47:55,280 na kitu kingine, M kwa kitu kingine, na kadhalika. 981 00:47:55,280 --> 00:47:58,000 Na hivyo tunahitaji njia, programmatically, hivyo 982 00:47:58,000 --> 00:48:03,020 kusema, katika C kuweza kubadilisha na kuangalia barua ya mtu binafsi. 983 00:48:03,020 --> 00:48:05,690 Na tunaweza kufanya hivyo kama ifuatavyo. 984 00:48:05,690 --> 00:48:08,340 >> Hebu kwenda kichwa nyuma katika CS50 IDE. 985 00:48:08,340 --> 00:48:11,130 Na napenda kwenda mbele na kuunda faili mpya 986 00:48:11,130 --> 00:48:16,134 kwamba Mimi nitakuita wakati huu string0, kama mfano wetu wa kwanza kama, dot c. 987 00:48:16,134 --> 00:48:18,300 Na mimi nina kwenda mbele na mjeledi up kama ifuatavyo. 988 00:48:18,300 --> 00:48:22,870 >> Hivyo ni pamoja na CS50.h, na kisha ni pamoja na kiwango io.h, 989 00:48:22,870 --> 00:48:25,990 ambayo mimi nina karibu kila mara kwenda kuwa na kutumia katika mipango yangu, angalau 990 00:48:25,990 --> 00:48:26,780 awali. 991 00:48:26,780 --> 00:48:32,180 int utupu kuu, na kisha katika hapa mimi nina kwenda kufanya masharti anapata kupata kamba. 992 00:48:32,180 --> 00:48:35,260 Na kisha mimi nina kwenda kwenda mbele na kufanya hili. 993 00:48:35,260 --> 00:48:37,460 Nataka kwenda mbele na, kama kuangalia sanity, 994 00:48:37,460 --> 00:48:43,607 tu kusema, hello, asilimia s, nusu koloni, hufanya kamba 0. 995 00:48:43,607 --> 00:48:44,690 Uh oh, nini mimi kufanya hapa? 996 00:48:44,690 --> 00:48:45,930 Oh, sikuweza kuziba katika. 997 00:48:45,930 --> 00:48:48,120 Hivyo somo la kujifunza, kwamba Haikuwa kukusudia. 998 00:48:48,120 --> 00:48:52,480 >> Hivyo kosa, asilimia zaidi wongofu kuliko hoja data. 999 00:48:52,480 --> 00:48:54,940 Na hii ni wapi, katika line 7-- OK, hivyo nina, 1000 00:48:54,940 --> 00:48:56,690 quote unquote, hiyo ni kamba yangu kwa printf. 1001 00:48:56,690 --> 00:48:58,151 Mimi nimepata asilimia ishara. 1002 00:48:58,151 --> 00:48:59,650 Lakini mimi kukosa hoja ya pili. 1003 00:48:59,650 --> 00:49:03,190 >> Mimi kukosa comma s, ambayo Sikuwa na katika mifano uliopita. 1004 00:49:03,190 --> 00:49:06,650 Hivyo fursa nzuri ya kurekebisha moja zaidi makosa, ajali. 1005 00:49:06,650 --> 00:49:09,950 Na sasa napenda kukimbia string0, aina katika Zamyla. 1006 00:49:09,950 --> 00:49:10,970 OK, hello Zamyla. 1007 00:49:10,970 --> 00:49:14,144 >> Hivyo tumekuwa kukimbia aina hii ya mpango chache nyakati tofauti sasa. 1008 00:49:14,144 --> 00:49:16,310 Lakini hebu kufanya kitu a tofauti kidogo wakati huu. 1009 00:49:16,310 --> 00:49:19,450 Badala ya kuchapa tu Zamyla ya jina zima nje na printf, 1010 00:49:19,450 --> 00:49:21,350 hebu kufanya hivyo tabia na tabia. 1011 00:49:21,350 --> 00:49:22,700 >> Mimi nina kwenda kutumia kwa kitanzi. 1012 00:49:22,700 --> 00:49:26,160 Na mimi nina kwenda kutoa mwenyewe kuhesabu kutofautiana, aitwaye i. 1013 00:49:26,160 --> 00:49:33,530 Na mimi nina kwenda kuweka iterating, hivyo muda mrefu kama i ni chini ya urefu wa s. 1014 00:49:33,530 --> 00:49:35,930 >> Ni zamu nje, hatukuwa kufanya hivyo mara ya mwisho, 1015 00:49:35,930 --> 00:49:39,100 kwamba c kuja na kazi kuitwa Stirling. 1016 00:49:39,100 --> 00:49:42,690 Nyuma katika siku, na kwa ujumla bado wakati kutekeleza majukumu, 1017 00:49:42,690 --> 00:49:45,405 binadamu mara nyingi kuchagua sana majina succinct aina hiyo ya sauti 1018 00:49:45,405 --> 00:49:48,280 kama unataka nini, hata kama ni kukosa vowels chache au barua. 1019 00:49:48,280 --> 00:49:50,660 Hivyo Stirling ni jina la kazi ambayo 1020 00:49:50,660 --> 00:49:53,880 inachukua hoja kati ya mabano kwamba wanapaswa kuwa kamba. 1021 00:49:53,880 --> 00:49:56,910 Na ni tu anarudi integer, urefu wa kamba hiyo. 1022 00:49:56,910 --> 00:50:00,580 >> Hivyo hii kwa kitanzi kwenye mstari 7 ni kwenda kuanza kuhesabu katika i sawa 0. 1023 00:50:00,580 --> 00:50:02,530 Ni kwenda increment i juu ya kila iteration 1024 00:50:02,530 --> 00:50:04,350 kwa 1, kama tumekuwa kufanya mara chache. 1025 00:50:04,350 --> 00:50:06,780 Lakini ni kwenda tu kufanya up hii mpaka hatua 1026 00:50:06,780 --> 00:50:09,660 wakati i ni urefu ya kamba yenyewe. 1027 00:50:09,660 --> 00:50:14,520 >> Hivyo hii ni njia ya, hatimaye, iterating juu ya wahusika 1028 00:50:14,520 --> 00:50:17,430 katika kamba kama ipo ifuatavyo. 1029 00:50:17,430 --> 00:50:20,670 Mimi nina kwenda magazeti nje si zima kamba, lakini asilimia c, 1030 00:50:20,670 --> 00:50:22,860 tabia moja ikifuatiwa na mstari mpya. 1031 00:50:22,860 --> 00:50:24,880 Na kisha mimi nina kwenda kwenda mbele, na mimi haja 1032 00:50:24,880 --> 00:50:29,080 kusema nataka magazeti ith tabia ya s. 1033 00:50:29,080 --> 00:50:33,450 >> Hivyo kama i ni kutofautiana kwamba inaonyesha ripoti ya kamba, ambapo 1034 00:50:33,450 --> 00:50:37,230 wewe ni katika hilo, mimi haja ya kuwa na uwezo wa kusema, nipe tabia idh ya s. 1035 00:50:37,230 --> 00:50:40,390 Na c ina njia ya kufanya huu kwa mabano mraba. 1036 00:50:40,390 --> 00:50:43,679 Wewe tu kusema jina la kamba, ambayo katika kesi hii ni s. 1037 00:50:43,679 --> 00:50:46,970 Basi kutumia mabano mraba, ambayo ni kawaida tu juu Return yako au kuingia 1038 00:50:46,970 --> 00:50:48,110 muhimu kwenye keyboard. 1039 00:50:48,110 --> 00:50:52,410 Na kisha kuweka ripoti ya tabia ya kuwa wewe unataka magazeti. 1040 00:50:52,410 --> 00:50:55,960 Hivyo index ni kwenda kuwa number-- 0, au 1, au 2, au 3, au dot, 1041 00:50:55,960 --> 00:50:57,590 dot, dot, baadhi namba nyingine. 1042 00:50:57,590 --> 00:51:00,920 >> Na sisi kuhakikisha kwamba ni kwenda kuwa idadi ya haki, kwa sababu mimi 1043 00:51:00,920 --> 00:51:02,360 kuanza kuhesabu saa 0. 1044 00:51:02,360 --> 00:51:07,020 Na by default, tabia ya kwanza katika kamba ni kwa mkataba 0. 1045 00:51:07,020 --> 00:51:09,230 Na tabia ya pili ni bracket 1. 1046 00:51:09,230 --> 00:51:11,120 Na tabia ya tatu ni bracket 2. 1047 00:51:11,120 --> 00:51:13,630 Na wewe hawataki kwenda pia mbali, lakini sisi si kwa sababu tuko 1048 00:51:13,630 --> 00:51:17,780 kwenda tu increment i mpaka sawa na urefu wa kamba. 1049 00:51:17,780 --> 00:51:20,210 Na ambapo kiwango, hii kwa kitanzi kuacha. 1050 00:51:20,210 --> 00:51:25,550 >> Hivyo basi mimi kwenda mbele na kuokoa hii mpango, na kukimbia kufanya kamba 0. 1051 00:51:25,550 --> 00:51:28,400 Lakini mimi Star up. 1052 00:51:28,400 --> 00:51:35,390 Implicitly kutangaza kazi maktaba Stirling na aina hiyo na such-- sasa, 1053 00:51:35,390 --> 00:51:36,430 hii inaonekana familiar. 1054 00:51:36,430 --> 00:51:37,440 Lakini si printf. 1055 00:51:37,440 --> 00:51:38,540 Na si kupata kamba. 1056 00:51:38,540 --> 00:51:40,480 >> Sikuwa screw up katika njia hiyo hiyo wakati huu. 1057 00:51:40,480 --> 00:51:45,100 Lakini taarifa chini hapa kidogo chini zaidi, ni pamoja na header string.h, 1058 00:51:45,100 --> 00:51:47,210 waziwazi kutoa tamko kwa Stirling. 1059 00:51:47,210 --> 00:51:48,820 Kwa hiyo, kuna kweli fununu huko. 1060 00:51:48,820 --> 00:51:51,670 >> Na hakika ni zamu nje kuna faili nyingine header 1061 00:51:51,670 --> 00:51:53,970 kwamba tumekuwa si kutumika darasani bado, lakini ni 1062 00:51:53,970 --> 00:51:56,480 miongoni mwa wale inapatikana na wewe, iitwayo string.h. 1063 00:51:56,480 --> 00:52:00,930 Na kwa kuwa faili, string.h ni Stirling alitangaza. 1064 00:52:00,930 --> 00:52:05,220 Hivyo basi mimi kwenda mbele na kuokoa hii, kufanya kamba 1065 00:52:05,220 --> 00:52:08,040 0-- nzuri, ujumbe hakuna kosa wakati huu. 1066 00:52:08,040 --> 00:52:12,290 >> ./string0 Zamyla, na Mimi nina kuhusu hit Enter, 1067 00:52:12,290 --> 00:52:16,710 ambapo kiwango GetString ni kwenda kurudi kamba, kuiweka katika s. 1068 00:52:16,710 --> 00:52:21,890 Basi hiyo kwa kitanzi ni kwenda iterate zaidi ya wahusika S ya moja kwa wakati mmoja, 1069 00:52:21,890 --> 00:52:28,420 na magazeti yao moja kwa kila mstari, kwa sababu Mimi nilikuwa na kwamba backslash n mwishoni. 1070 00:52:28,420 --> 00:52:34,530 Ili niweze saza kwamba backslash n, na kisha tu magazeti Zamyla zote 1071 00:52:34,530 --> 00:52:37,460 katika mstari huo huo, ufanisi reimplementing 1072 00:52:37,460 --> 00:52:38,999 printf, ambayo si wote kwamba ni muhimu. 1073 00:52:38,999 --> 00:52:40,540 Lakini katika kesi hii, nimekuwa si amefanya hivyo. 1074 00:52:40,540 --> 00:52:43,610 Nimekuwa kwa kweli kuchapishwa moja tabia wakati huo, moja kwa kila mstari, 1075 00:52:43,610 --> 00:52:45,400 ili tuweze kweli kuona athari. 1076 00:52:45,400 --> 00:52:46,900 >> Lakini ni lazima kutambua jambo moja hapa. 1077 00:52:46,900 --> 00:52:48,930 Na tutaweza kuja nyuma huu katika wiki zijazo. 1078 00:52:48,930 --> 00:52:52,650 Ni zinageuka kuwa hii code ni uwezekano wa buggy. 1079 00:52:52,650 --> 00:52:56,560 >> Ni zinageuka kuwa string get na baadhi ya majukumu mengine katika maisha 1080 00:52:56,560 --> 00:53:00,280 si lazima kila mara kurudi nini wewe kutarajia. 1081 00:53:00,280 --> 00:53:03,010 Tunajua kutokana na tabaka la mwisho muda katika hili kwamba kupata 1082 00:53:03,010 --> 00:53:04,960 kamba zinatakiwa kurudi kamba. 1083 00:53:04,960 --> 00:53:09,900 Lakini nini kama user aina nje kama neno kwa muda mrefu, au aya, au insha 1084 00:53:09,900 --> 00:53:13,010 kwamba kuna tu haitoshi kumbukumbu katika kompyuta na kifafa yake. 1085 00:53:13,010 --> 00:53:15,410 >> Kama, nini kama kitu fulani kitaenda vibaya chini ya Hood? 1086 00:53:15,410 --> 00:53:18,400 Ni inaweza kutokea mara nyingi, lakini inaweza kutokea mara moja 1087 00:53:18,400 --> 00:53:21,520 kwa wakati, kwa nadra sana. 1088 00:53:21,520 --> 00:53:25,460 Na hivyo zinageuka kuwa string get na kazi kama hiyo si lazima 1089 00:53:25,460 --> 00:53:26,380 daima kurudi masharti. 1090 00:53:26,380 --> 00:53:30,680 Wapate kurejea baadhi ya thamani makosa, baadhi ya thamani sentinel hivyo kusema, 1091 00:53:30,680 --> 00:53:32,612 kwamba inaonyesha kwamba kitu amekwenda vibaya. 1092 00:53:32,612 --> 00:53:35,320 Na ungependa tu kujua hii kutoka baada ya kujifunza darasani sasa, 1093 00:53:35,320 --> 00:53:37,700 au baada ya kusoma baadhi ya nyaraka zaidi. 1094 00:53:37,700 --> 00:53:43,120 Ni zinageuka kuwa string get anaweza kurudi thamani aitwaye null. 1095 00:53:43,120 --> 00:53:46,220 Null ni thamani maalum kwamba tutaweza kurudi katika wiki zijazo. 1096 00:53:46,220 --> 00:53:50,420 Lakini kwa sasa, tu kujua kwamba kama nataka kuwa kweli sahihi katika kusonga mbele 1097 00:53:50,420 --> 00:53:52,650 kutumia kupata kamba, I lazima sio tu simu yake, 1098 00:53:52,650 --> 00:53:56,870 na upofu kutumia kurudi thamani yake, kuamini kwamba ni kamba. 1099 00:53:56,870 --> 00:53:59,420 >> Mimi lazima kwanza kusema, hey, kusubiri dakika, tu 1100 00:53:59,420 --> 00:54:03,380 kuendelea kama s haina sawa null, ambapo null, tena, 1101 00:54:03,380 --> 00:54:04,660 ni baadhi tu ya thamani maalum. 1102 00:54:04,660 --> 00:54:07,770 Na ni tu thamani maalum haja ya kuwa na wasiwasi kuhusu kwa kupata kamba. 1103 00:54:07,770 --> 00:54:10,900 Kupata kamba ni kwenda aidha kurudi kamba au null. 1104 00:54:10,900 --> 00:54:17,219 >> Na hii hatua Moderators sawa na ishara unaweza kujua kutoka labda math darasani 1105 00:54:17,219 --> 00:54:20,510 kwamba unaweza kuteka ishara sawa na line kwa njia hiyo zinaonyesha si sawa. 1106 00:54:20,510 --> 00:54:23,135 Hiyo si kwa ujumla tabia unaweza aina kwenye keyboard yako. 1107 00:54:23,135 --> 00:54:26,480 Na hivyo katika lugha nyingi programu, wakati unataka kusema si sawa, 1108 00:54:26,480 --> 00:54:29,160 matumizi mshangao uhakika, inayojulikana kama bang. 1109 00:54:29,160 --> 00:54:33,180 Hivyo unaweza kusema bang sawa, ambayo maana yake si sawa, kifikra. 1110 00:54:33,180 --> 00:54:38,060 Ni kama tu kuna si mkuu kuliko, au sawa na, au chini ya 1111 00:54:38,060 --> 00:54:41,270 au sawa na muhimu kwenye keyboard yako kwamba gani wote katika alama moja. 1112 00:54:41,270 --> 00:54:44,020 Hivyo ndiyo sababu, katika mifano ya zamani, ulifanya bracket wazi, na kisha 1113 00:54:44,020 --> 00:54:48,670 ishara sawa, ili kufanya kubwa zaidi kuliko au, kusema, chini ya. 1114 00:54:48,670 --> 00:54:49,910 >> Basi nini takeaway hapa? 1115 00:54:49,910 --> 00:54:53,880 Hili ni njia sasa ya kuanzisha syntax hii, kipengele hiki, 1116 00:54:53,880 --> 00:54:57,390 iterating juu ya mtu binafsi wahusika katika kamba. 1117 00:54:57,390 --> 00:55:00,260 Na kama wale mraba mabano itawawezesha kupata saa yao, 1118 00:55:00,260 --> 00:55:03,790 kufikiria mabano wale mraba kama aina ya hinting katika hii ya msingi 1119 00:55:03,790 --> 00:55:06,040 kubuni, ambapo kila tabia ndani ya kamba 1120 00:55:06,040 --> 00:55:10,180 ni aina ya boxed katika mahali fulani chini kofia katika kumbukumbu ya kompyuta yako. 1121 00:55:10,180 --> 00:55:12,340 >> Lakini hebu kufanya lahaja ya hii. 1122 00:55:12,340 --> 00:55:14,880 Ni zinageuka kuwa hii mpango ni sahihi. 1123 00:55:14,880 --> 00:55:18,810 Hivyo kwa shoka CS50 kwa ajili ya kutathmini kanuni, hii ni sahihi sasa. 1124 00:55:18,810 --> 00:55:22,959 Hasa sasa kwamba mimi nina kuangalia kwa null, mpango huu kamwe ajali. 1125 00:55:22,959 --> 00:55:24,500 Na mimi tu kujua kwamba kutokana na uzoefu. 1126 00:55:24,500 --> 00:55:28,040 Lakini kuna kitu kingine kwamba tunaweza kweli kwenda vibaya hapa. 1127 00:55:28,040 --> 00:55:31,860 Lakini si sana vizuri iliyoundwa, kwa sababu hebu kwenda nyuma ya msingi. 1128 00:55:31,860 --> 00:55:34,450 >> Kwanza, principles-- je kwa kitanzi nini? 1129 00:55:34,450 --> 00:55:36,290 A kwa kitanzi anafanya mambo matatu. 1130 00:55:36,290 --> 00:55:39,340 Ni initializes baadhi thamani, kama kuuliza kwa. 1131 00:55:39,340 --> 00:55:41,770 Ni hundi hali hiyo. 1132 00:55:41,770 --> 00:55:45,380 Na kisha baada ya kila iteration, baada ya kila mzunguko, 1133 00:55:45,380 --> 00:55:49,330 ni nyongeza baadhi thamani, au maadili, hapa. 1134 00:55:49,330 --> 00:55:50,600 >> Hivyo hiyo ina maana gani? 1135 00:55:50,600 --> 00:55:52,940 Sisi initialize i kwa 0. 1136 00:55:52,940 --> 00:55:58,610 Sisi kuangalia na kuhakikisha i ni chini ya urefu wa s, ambayo ni Z-A-M-Y-L-A, 1137 00:55:58,610 --> 00:55:59,900 hivyo ambayo ni chini ya 6. 1138 00:55:59,900 --> 00:56:02,590 Na, kwa hakika, 0 kama chini ya 6. 1139 00:56:02,590 --> 00:56:05,580 >> Sisi magazeti nje Z kutoka jina Zamyla ya. 1140 00:56:05,580 --> 00:56:08,080 Kisha sisi increment i 0 na 1. 1141 00:56:08,080 --> 00:56:11,290 Sisi kisha kuangalia, ni 1 chini kuliko urefu wa s? 1142 00:56:11,290 --> 00:56:13,270 urefu wa s ni 6. 1143 00:56:13,270 --> 00:56:13,950 Kweli ni hiyo. 1144 00:56:13,950 --> 00:56:16,880 >> Hivyo sisi magazeti katika jina Zamyla ya, ZA. 1145 00:56:16,880 --> 00:56:20,090 Sisi increment i kutoka 0, 1, 2. 1146 00:56:20,090 --> 00:56:23,720 Sisi kisha kuangalia, ni 2 chini ya urefu wa jina Zamyla ya. 1147 00:56:23,720 --> 00:56:25,380 6- hivyo 2 ni chini ya 6. 1148 00:56:25,380 --> 00:56:30,460 Ndiyo, hebu magazeti nje sasa M katika jina Zamyla ya, tabia ya tatu. 1149 00:56:30,460 --> 00:56:34,110 >> muhimu hapa ni kwamba kwenye kila iteration ya hadithi, mimi nina kuangalia, 1150 00:56:34,110 --> 00:56:37,810 ni i chini ya urefu wa Zamyla? 1151 00:56:37,810 --> 00:56:40,350 Lakini samaki ni kwamba Stirling si mali. 1152 00:56:40,350 --> 00:56:43,100 Wale wa wewe ambao iliyowekwa kabla katika Java au lugha nyingine 1153 00:56:43,100 --> 00:56:46,310 wapate kujua urefu wa kamba ni mali, baadhi tu kusoma thamani tu. 1154 00:56:46,310 --> 00:56:50,220 >> Katika C katika kesi hii, kama hii ni kazi ambayo ni literally 1155 00:56:50,220 --> 00:56:53,520 kuhesabu idadi ya wahusika katika Zamyla kila wakati 1156 00:56:53,520 --> 00:56:54,740 tunatoa wito kwamba kazi. 1157 00:56:54,740 --> 00:56:58,500 Kila wakati wewe kuuliza kompyuta kwa kutumia Stirling, ni kuchukua kuangalia Zamyla, 1158 00:56:58,500 --> 00:57:01,960 na kusema Z-A-M-Y-L-A, 6. 1159 00:57:01,960 --> 00:57:02,962 Na kuirudisha 6. 1160 00:57:02,962 --> 00:57:04,920 wakati ujao wewe kuwaita ndani kwamba kwa kitanzi, 1161 00:57:04,920 --> 00:57:08,610 ni kwenda kuangalia Zamyla tena, kusema Z-A-M-Y-L-A, 6. 1162 00:57:08,610 --> 00:57:10,320 Na ni kwenda na kurudi 6. 1163 00:57:10,320 --> 00:57:12,980 Basi nini kijinga kuhusu mpango huu? 1164 00:57:12,980 --> 00:57:17,700 >> Kwa nini ni kanuni yangu si 5 nje ya 5 kwa ajili ya kubuni sasa hivi, hivyo kusema? 1165 00:57:17,700 --> 00:57:20,600 Naam, mimi nina kuuliza swali usiokuwa. 1166 00:57:20,600 --> 00:57:23,030 Mimi nina kufanya kazi zaidi kuliko mimi haja ya. 1167 00:57:23,030 --> 00:57:25,370 >> Hivyo hata ingawa jibu ni sahihi, I am 1168 00:57:25,370 --> 00:57:29,560 kuuliza kompyuta, ni nini urefu wa Zamyla tena, 1169 00:57:29,560 --> 00:57:31,380 na tena, na tena, na tena? 1170 00:57:31,380 --> 00:57:33,980 Na jibu kwamba ni kamwe kwenda na mabadiliko. 1171 00:57:33,980 --> 00:57:35,900 Ni daima kwenda kuwa 6. 1172 00:57:35,900 --> 00:57:39,730 >> Hivyo suluhisho bora zaidi kuliko haya itakuwa hii toleo la pili. 1173 00:57:39,730 --> 00:57:43,390 Hebu kwenda mbele na kuiweka katika tofauti faili inayoitwa string1.c, 1174 00:57:43,390 --> 00:57:44,990 tu kushika ni tofauti. 1175 00:57:44,990 --> 00:57:47,260 Na zinageuka katika kwa kitanzi, unaweza kweli 1176 00:57:47,260 --> 00:57:50,210 kutangaza vigezo mbalimbali kwa mara moja. 1177 00:57:50,210 --> 00:57:53,460 >> Hivyo nina kwenda kuweka i na kuweka kwa 0. 1178 00:57:53,460 --> 00:57:56,190 Lakini mimi nina pia kwenda kuongeza comma, na kusema, 1179 00:57:56,190 --> 00:58:01,050 nipe variable kuitwa n, ambaye thamani sawa na urefu wa kamba s. 1180 00:58:01,050 --> 00:58:09,410 Na sasa, tafadhali kufanya hali yangu hivyo muda mrefu kama i ni chini ya n. 1181 00:58:09,410 --> 00:58:14,140 >> Hivyo kwa njia hii, mantiki ni kufanana mwisho wa siku. 1182 00:58:14,140 --> 00:58:18,280 Lakini Mimi kukumbuka thamani 6, katika kesi hii. 1183 00:58:18,280 --> 00:58:19,780 urefu wa jina Zamyla ni nini? 1184 00:58:19,780 --> 00:58:20,860 Na mimi nina kuweka katika n. 1185 00:58:20,860 --> 00:58:23,050 >> Na mimi nina bado kuangalia hali kila wakati. 1186 00:58:23,050 --> 00:58:24,300 Ni 0 chini ya 6? 1187 00:58:24,300 --> 00:58:25,600 Ni 1 chini ya 6? 1188 00:58:25,600 --> 00:58:28,600 Ni 2 chini ya 6, na kadhalika? 1189 00:58:28,600 --> 00:58:31,914 >> Lakini Mimi si kuuliza kompyuta tena, na tena, nini 1190 00:58:31,914 --> 00:58:33,080 urefu wa jina Zamyla ya? 1191 00:58:33,080 --> 00:58:34,320 Nini urefu wa jina Zamyla ya? 1192 00:58:34,320 --> 00:58:35,986 Nini urefu wa jina hili Zamyla ya? 1193 00:58:35,986 --> 00:58:40,440 Mimi nina literally kukumbuka kwamba kwanza na tu kujibu katika hili kutofautiana n pili. 1194 00:58:40,440 --> 00:58:45,280 Hivyo hii sasa itakuwa si tu sahihi, lakini pia vizuri iliyoundwa. 1195 00:58:45,280 --> 00:58:46,670 >> Sasa, nini kuhusu style? 1196 00:58:46,670 --> 00:58:48,866 Nimekuwa aitwaye vigezo yangu pretty vizuri, napenda kusema. 1197 00:58:48,866 --> 00:58:50,240 Wao ni super succinct hivi sasa. 1198 00:58:50,240 --> 00:58:52,090 Na kwamba ni kabisa faini. 1199 00:58:52,090 --> 00:58:55,120 >> Kama una moja kamba katika mpango, 1200 00:58:55,120 --> 00:58:56,860 unaweza pia kuiita s kwa kamba. 1201 00:58:56,860 --> 00:58:59,370 Kama wewe tu kuwa na kutofautiana moja kwa kuhesabu katika mpango, 1202 00:58:59,370 --> 00:59:00,710 unaweza pia simu yake i. 1203 00:59:00,710 --> 00:59:03,500 Kama una urefu, n ni super kawaida vilevile. 1204 00:59:03,500 --> 00:59:05,800 Lakini kama sijazungumza yoyote ya kanuni yangu. 1205 00:59:05,800 --> 00:59:09,200 >> Nimekuwa si taarifa reader-- kama hiyo ni TF yangu, au TA, 1206 00:59:09,200 --> 00:59:12,460 au tu colleague-- nini walidhani kuwa kinachoendelea katika mpango huu. 1207 00:59:12,460 --> 00:59:15,760 Na hivyo kupata style nzuri, nini napenda wanataka kufanya 1208 00:59:15,760 --> 00:59:24,580 ni hii kitu kama kuuliza mtumiaji kwa ajili ya pembejeo. 1209 00:59:24,580 --> 00:59:26,670 Na mimi naweza kuandika upya huu idadi yoyote ya njia. 1210 00:59:26,670 --> 00:59:35,630 >> Kuhakikisha s-- kuhakikisha get kamba akarudi kamba. 1211 00:59:35,630 --> 00:59:40,280 Na kisha katika here-- na hii ni labda muhimu zaidi comment-- iterate 1212 00:59:40,280 --> 00:59:44,450 juu ya wahusika katika s moja kwa wakati. 1213 00:59:44,450 --> 00:59:47,060 Na mimi naweza kutumia yoyote uchaguzi wa lugha ya Kiingereza 1214 00:59:47,060 --> 00:59:49,650 hapa kuelezea kila ya chunks hizi za kificho. 1215 00:59:49,650 --> 00:59:52,740 >> Taarifa kwamba mimi si kuweka kutoa maoni juu ya kila mstari wa kanuni, 1216 00:59:52,740 --> 00:59:55,690 kweli tu juu ya kuvutia ndio, wale ambao 1217 00:59:55,690 --> 00:59:59,460 kuwa na baadhi ya maana ili nipate wanataka kufanya super wazi kwa mtu 1218 00:59:59,460 --> 01:00:00,460 kusoma kanuni yangu. 1219 01:00:00,460 --> 01:00:02,920 Na mbona wito kupata kamba kuuliza user kwa ajili ya pembejeo? 1220 01:00:02,920 --> 01:00:05,450 Hata kuwa mtu ni si lazima kwamba maelezo yote. 1221 01:00:05,450 --> 01:00:09,340 Lakini inasaidia kuwaambia hadithi, kwa sababu mstari wa pili katika hadithi ni, kuhakikisha 1222 01:00:09,340 --> 01:00:10,740 kupata kamba akarudi kamba. 1223 01:00:10,740 --> 01:00:14,260 >> Na mstari wa tatu katika hadithi ni, iterate juu ya wahusika katika s moja 1224 01:00:14,260 --> 01:00:15,380 kwa wakati. 1225 01:00:15,380 --> 01:00:17,920 Na sasa tu kwa ajili ya hatua nzuri, Mimi nina kwenda mbele na kuongeza 1226 01:00:17,920 --> 01:00:24,560 moja zaidi maoni kwamba tu anasema magazeti i-th tabia katika s. 1227 01:00:24,560 --> 01:00:26,520 Sasa, ni nini nimefanya mwisho wa siku? 1228 01:00:26,520 --> 01:00:29,190 >> Nimeongeza baadhi English maneno kwa namna ya maoni. 1229 01:00:29,190 --> 01:00:32,700 ishara kufyeka kufyeka ina maana, hey, kompyuta hii ni kwa binadamu, 1230 01:00:32,700 --> 01:00:33,820 si kwa ajili yenu, kompyuta. 1231 01:00:33,820 --> 01:00:35,119 Hivyo wao ni kupuuzwa kifikra. 1232 01:00:35,119 --> 01:00:35,910 Wao uko pale tu. 1233 01:00:35,910 --> 01:00:39,830 >> Na, kwa hakika, CS50 IDE inaonyesha yao kama Gray, kama kuwa muhimu, lakini si muhimu 1234 01:00:39,830 --> 01:00:41,000 kwa mpango. 1235 01:00:41,000 --> 01:00:42,570 Taarifa ya nini sasa unaweza kufanya. 1236 01:00:42,570 --> 01:00:44,950 Kama unajua C programu au la, 1237 01:00:44,950 --> 01:00:47,722 unaweza tu kusimama nyuma katika jambo hili mpango, na skim comments. 1238 01:00:47,722 --> 01:00:50,180 Kuuliza mtumiaji kwa ajili ya pembejeo, kuhakikisha kupata kamba akarudi kamba, 1239 01:00:50,180 --> 01:00:53,009 iterate juu ya wahusika katika s moja kwa wakati mmoja, magazeti tabia 1240 01:00:53,009 --> 01:00:55,550 i-th tabia katika s-- huna hata kuwa na kuangalia kanuni 1241 01:00:55,550 --> 01:00:57,270 kuelewa nini mpango huu gani. 1242 01:00:57,270 --> 01:01:00,280 Na, bado bora, kama wewe mwenyewe kuangalia katika mpango huu katika wiki moja au mbili, 1243 01:01:00,280 --> 01:01:02,280 au mwezi, au mwaka, wewe pia hawana 1244 01:01:02,280 --> 01:01:04,420 kodolea code, kujaribu kukumbuka, 1245 01:01:04,420 --> 01:01:06,630 kilichokuwa mimi kujaribu kufanya na kanuni hii? 1246 01:01:06,630 --> 01:01:07,770 >> Umefanya aliiambia mwenyewe. 1247 01:01:07,770 --> 01:01:11,660 Umefanya alieleza kwa ajili yako mwenyewe, au baadhi ya mwenzake, au TA, au TF. 1248 01:01:11,660 --> 01:01:14,860 Na hivyo hii sasa kuwa sahihi, na kubuni nzuri, 1249 01:01:14,860 --> 01:01:18,210 na hatimaye nzuri style vilevile. 1250 01:01:18,210 --> 01:01:19,990 Hivyo kufanya kuendelea kuwa katika akili. 1251 01:01:19,990 --> 01:01:22,200 >> Hivyo kuna mtu mwingine kitu mimi nina kwenda kufanya hapa 1252 01:01:22,200 --> 01:01:28,240 kwamba sasa unaweza yatangaza hasa nini kinachoendelea chini ya Hood. 1253 01:01:28,240 --> 01:01:30,390 Hivyo kuna kipengele hiki katika C, na lugha nyingine, 1254 01:01:30,390 --> 01:01:33,010 aitwaye typecasting kuwa ama inamuunga 1255 01:01:33,010 --> 01:01:37,250 au waziwazi utapata kubadilisha kutoka aina moja hadi nyingine data. 1256 01:01:37,250 --> 01:01:39,800 Tumekuwa kushughulika hivyo mbali leo na masharti. 1257 01:01:39,800 --> 01:01:41,250 >> Na masharti ni wahusika. 1258 01:01:41,250 --> 01:01:44,910 Lakini kukumbuka kutoka wiki 0, ni nini wahusika? 1259 01:01:44,910 --> 01:01:49,334 Wahusika ni tu uchukuaji juu ya idadi numbers-- decimal, 1260 01:01:49,334 --> 01:01:52,500 na idadi decimal ni kweli tu uchukuaji juu ya idadi binary, 1261 01:01:52,500 --> 01:01:53,720 kama sisi kuelezwa yake. 1262 01:01:53,720 --> 01:01:55,540 >> Hivyo wahusika ni namba. 1263 01:01:55,540 --> 01:01:58,410 Na idadi ni wahusika, tu kulingana na mazingira. 1264 01:01:58,410 --> 01:02:01,250 Na zinageuka kuwa ndani ya ya programu ya kompyuta, 1265 01:02:01,250 --> 01:02:06,830 unaweza bayana jinsi unataka kuangalia katika bits ndani ya mpango huo? 1266 01:02:06,830 --> 01:02:10,400 >> Kumbuka kutoka wiki 0 kwamba tulikuwa Ascii, ambayo ni tu kanuni hii 1267 01:02:10,400 --> 01:02:11,620 barua ramani ya namba. 1268 01:02:11,620 --> 01:02:13,660 Na tulisema, mji mkuu wa A ni 65. 1269 01:02:13,660 --> 01:02:15,860 Capital B ni 66, na kadhalika. 1270 01:02:15,860 --> 01:02:20,500 >> Na taarifa, sisi kimsingi kuwa chars juu ya safu ya juu hapa, kama C kuita yao, 1271 01:02:20,500 --> 01:02:23,400 wahusika, na kisha ints juu ya mstari wa pili. 1272 01:02:23,400 --> 01:02:28,180 Na zinageuka unaweza kubadilisha seamlessly kati ya mbili, kawaida. 1273 01:02:28,180 --> 01:02:30,042 Na kama tunataka kufanya hii kwa makusudi, sisi 1274 01:02:30,042 --> 01:02:31,750 kutaka kukabiliana na kitu kama hiki. 1275 01:02:31,750 --> 01:02:33,590 >> Sisi kutaka kubadilisha kesi ya juu ya kupunguza 1276 01:02:33,590 --> 01:02:35,330 kesi, au kesi ya chini kwa kesi ya juu. 1277 01:02:35,330 --> 01:02:38,000 Na zinageuka kuna ya kweli mfano hapa 1278 01:02:38,000 --> 01:02:39,900 tunaweza kukubaliana na katika muda tu. 1279 01:02:39,900 --> 01:02:44,120 Lakini hebu tuangalie kwanza katika mfano wa kufanya hivyo waziwazi. 1280 01:02:44,120 --> 01:02:46,340 >> Mimi nina kwenda nyuma katika CS50 IDE. 1281 01:02:46,340 --> 01:02:50,640 Mimi nina kwenda kujenga faili inayoitwa Ascii 0.c. 1282 01:02:50,640 --> 01:02:55,960 Na mimi nina kwenda mbele na kuongeza yangu kiwango io.h saa ya juu, int kuu utupu 1283 01:02:55,960 --> 01:02:57,370 utafutaji juu ya kazi yangu. 1284 01:02:57,370 --> 01:03:02,700 Na kisha mimi nina kwenda tu kufanya following-- kwa kitanzi kutoka i sawa, 1285 01:03:02,700 --> 01:03:04,610 hebu sema, 65. 1286 01:03:04,610 --> 01:03:10,460 >> Na kisha i ni kwenda kuwa chini ya 65, plus barua 26 katika alfabeti. 1287 01:03:10,460 --> 01:03:12,640 Hivyo mimi itabidi basi kompyuta kufanya math kwa ajili yangu huko. 1288 01:03:12,640 --> 01:03:15,100 Na kisha ndani ya kitanzi hii, je, Mimi kwenda magazeti? 1289 01:03:15,100 --> 01:03:19,230 >> % C ni% i backslash n. 1290 01:03:19,230 --> 01:03:21,290 Na sasa nataka kuziba katika maadili mbili. 1291 01:03:21,290 --> 01:03:24,530 Nimekuwa muda kuweka swali alama huko kukaribisha swali. 1292 01:03:24,530 --> 01:03:29,940 >> Nataka iterate kutoka 65 na kuendelea kwa barua 26 za alfabeti, 1293 01:03:29,940 --> 01:03:35,190 uchapishaji nje juu ya kila iteration kwamba tabia ya muhimu sawa. 1294 01:03:35,190 --> 01:03:38,299 Kwa maneno mengine, nataka iterate juu ya 26 idadi ya uchapishaji 1295 01:03:38,299 --> 01:03:41,590 nini tabia Ascii ni, barua, na nini idadi inayolingana is-- 1296 01:03:41,590 --> 01:03:44,650 kweli tu recreating chati kutoka slide hiyo. 1297 01:03:44,650 --> 01:03:47,010 Hivyo kile lazima alama swali hivi ni nini? 1298 01:03:47,010 --> 01:03:51,760 >> Naam, zinageuka kuwa wa pili moja lazima tu kuwa kutofautiana i. 1299 01:03:51,760 --> 01:03:53,860 Nataka kuona kwamba kama idadi. 1300 01:03:53,860 --> 01:03:58,920 Na hoja katikati hapa, siwezi kuwaambia kompyuta 1301 01:03:58,920 --> 01:04:03,470 kutibu kwamba integer i kama tabia, hivyo kama 1302 01:04:03,470 --> 01:04:05,880 mbadala ni hapa kwa asilimia C. 1303 01:04:05,880 --> 01:04:07,990 >> Kwa maneno mengine, kama mimi, programu binadamu, kujua 1304 01:04:07,990 --> 01:04:09,865 hizi ni hesabu tu mwisho wa siku. 1305 01:04:09,865 --> 01:04:12,500 Nami najua kuwa 65 lazima ramani kwa baadhi ya tabia. 1306 01:04:12,500 --> 01:04:15,310 Na kutupwa hii wazi, na mabano, 1307 01:04:15,310 --> 01:04:18,840 jina la aina data unataka kubadilisha na, na kufungwa mabano, 1308 01:04:18,840 --> 01:04:21,200 unaweza kuwaambia kompyuta, hey, kompyuta, 1309 01:04:21,200 --> 01:04:24,130 kubadilisha integer huu kwa char. 1310 01:04:24,130 --> 01:04:26,250 >> Hivyo wakati mimi kukimbia hii mpango baada ya kuandaa, 1311 01:04:26,250 --> 01:04:29,740 hebu angalia nini mimi get-- kufanya Ascii 0. 1312 01:04:29,740 --> 01:04:33,020 Darn yake, nini mimi kufanya makosa hapa? 1313 01:04:33,020 --> 01:04:35,884 Matumizi ya Undeclared kitambulisho, yote ya haki, si kukusudia, 1314 01:04:35,884 --> 01:04:37,800 lakini hebu angalia kama hatuwezi sababu kwa njia hii. 1315 01:04:37,800 --> 01:04:41,220 >> Hivyo line five-- hivyo sikuweza kupata mbali sana kabla screwing up. 1316 01:04:41,220 --> 01:04:42,140 Hiyo ni sawa. 1317 01:04:42,140 --> 01:04:46,560 Hivyo line 5 kwa i sawa na 65-- naona. 1318 01:04:46,560 --> 01:04:50,130 Basi kumbuka kwamba katika C, tofauti na baadhi Lugha kama una programu kabla 1319 01:04:50,130 --> 01:04:52,190 uzoefu, una kuwaambia kompyuta, 1320 01:04:52,190 --> 01:04:55,040 tofauti Scratch, nini aina ya kutofautiana ni. 1321 01:04:55,040 --> 01:04:56,860 >> Na mimi alisahau maneno muhimu hapa. 1322 01:04:56,860 --> 01:04:59,200 Katika mstari tano, nimeanza kutumia i. 1323 01:04:59,200 --> 01:05:01,560 Lakini sikumwambia C nini data aina ni. 1324 01:05:01,560 --> 01:05:04,570 Hivyo mimi nina kwenda katika hapa na kusema, ah, kufanya hivyo integer. 1325 01:05:04,570 --> 01:05:07,050 >> Sasa mimi nina kwenda mbele na recompile. 1326 01:05:07,050 --> 01:05:08,080 Hiyo fasta hiyo. 1327 01:05:08,080 --> 01:05:12,660 ./ascii0 Weka, hiyo ni aina ya baridi. 1328 01:05:12,660 --> 01:05:15,360 Si tu ni super haraka kuuliza kompyuta swali hili, 1329 01:05:15,360 --> 01:05:18,885 badala ya kuangalia ni juu ya slide, ni kuchapishwa moja kwa kila mstari, A ni 65, 1330 01:05:18,885 --> 01:05:24,860 B ni 66, njia yote down-- tangu mimi alifanya hivyo 26 times-- kwa barua z, 1331 01:05:24,860 --> 01:05:25,630 ambayo ni 90. 1332 01:05:25,630 --> 01:05:27,790 Na, kwa kweli, kidogo zaidi akili ingekuwa 1333 01:05:27,790 --> 01:05:31,030 wamekuwa ajili yangu si ya kutegemea kwenye kompyuta kuongeza 26. 1334 01:05:31,030 --> 01:05:34,060 Mimi naweza kuwa tu kufanyika 90 kama vile, hivyo kwa muda mrefu 1335 01:05:34,060 --> 01:05:37,390 kama mimi si kufanya makosa huo mara mbili. 1336 01:05:37,390 --> 01:05:41,880 Nataka kwenda juu kupitia z, si tu juu kupitia y. 1337 01:05:41,880 --> 01:05:44,000 >> Hivyo hiyo ni kutupwa wazi. 1338 01:05:44,000 --> 01:05:47,860 Ni zinageuka kuwa hii si hata muhimu. 1339 01:05:47,860 --> 01:05:52,480 Hebu kwenda mbele na rerun hii compiler, na rerun Ascii 0. 1340 01:05:52,480 --> 01:05:54,940 Ni zinageuka kuwa C ni pretty smart. 1341 01:05:54,940 --> 01:05:57,150 >> Na printf, hasa, ni pretty smart. 1342 01:05:57,150 --> 01:06:01,260 Kama wewe tu kupita i mara mbili kwa placeholders zote mbili, printf 1343 01:06:01,260 --> 01:06:04,510 kutambua, oh, vizuri Najua aliyonipa integer-- idadi fulani, 1344 01:06:04,510 --> 01:06:06,380 kama 65, au 90, au chochote. 1345 01:06:06,380 --> 01:06:10,170 Lakini naona kwamba unataka mimi muundo idadi hiyo kama tabia. 1346 01:06:10,170 --> 01:06:16,460 Na hivyo printf unaweza implicitly kutupwa the int kwa char kwa ajili yenu pia. 1347 01:06:16,460 --> 01:06:19,360 Hivyo si kwamba tatizo wakati wote. 1348 01:06:19,360 --> 01:06:23,100 >> Lakini taarifa, kwa sababu ya yanayolinagana hii tunaweza kweli kufanya hivyo pia. 1349 01:06:23,100 --> 01:06:26,520 Hebu kwenda mbele na kufanya moja mengine toleo la Haya Ascii 1.c 1350 01:06:26,520 --> 01:06:31,800 Na badala ya iterating juu integers, unaweza kweli pigo akili yako 1351 01:06:31,800 --> 01:06:33,610 na iterating juu ya wahusika. 1352 01:06:33,610 --> 01:06:37,660 Kama char c anapata mji mkuu wa A, I wanataka kwenda mbele na kufanya hili, 1353 01:06:37,660 --> 01:06:41,740 hivyo muda mrefu kama C ni chini ya au sawa kwa mtaji Z. Na juu ya kila iteration 1354 01:06:41,740 --> 01:06:45,690 Nataka increment C, naweza sasa katika printf line yangu hapa 1355 01:06:45,690 --> 01:06:51,320 kusema, asilimia C ni asilimia i tena, comma C. 1356 01:06:51,320 --> 01:06:57,200 >> Na sasa, siwezi kwenda upande mwingine, akitoa tabia waziwazi 1357 01:06:57,200 --> 01:06:58,500 kwa integer. 1358 01:06:58,500 --> 01:07:00,560 Hivyo, tena, kwa nini unaweza kufanya hili? 1359 01:07:00,560 --> 01:07:03,830 Ni weird kidogo ya kutatua ya kuhesabu katika suala la wahusika. 1360 01:07:03,830 --> 01:07:07,430 >> Lakini kama wewe kuelewa nini kinachoendelea chini ya Hood, 1361 01:07:07,430 --> 01:07:08,430 kuna kweli hakuna uchawi. 1362 01:07:08,430 --> 01:07:13,060 Wewe ni kusema tu, hey, kompyuta kutoa me kutofautiana kuitwa C ya aina char. 1363 01:07:13,060 --> 01:07:16,520 Initialize kwa mtaji A. And taarifa quotes moja suala hilo. 1364 01:07:16,520 --> 01:07:19,580 >> Kwa wahusika katika C, kukumbuka kutoka wiki iliyopita, wewe kutumia quotes moja. 1365 01:07:19,580 --> 01:07:23,720 Kwa masharti, kwa maneno, maneno, matumizi quotes mbili. 1366 01:07:23,720 --> 01:07:27,210 OK, kompyuta, kuendelea kufanya hili, hivyo muda mrefu kama tabia ni chini ya 1367 01:07:27,210 --> 01:07:28,050 au sawa na z. 1368 01:07:28,050 --> 01:07:32,640 Na ninajua kwa Ascii meza yangu kwamba wote ya kanuni hizi Ascii ni contiguous. 1369 01:07:32,640 --> 01:07:33,400 >> Hakuna mapungufu. 1370 01:07:33,400 --> 01:07:36,737 Hivyo ni tu kupitia Z, kutengwa kwa namba moja kila mmoja. 1371 01:07:36,737 --> 01:07:38,820 Na kisha naweza increment char, kama mimi kweli unataka. 1372 01:07:38,820 --> 01:07:40,390 Mwisho wa siku, ni tu idadi. 1373 01:07:40,390 --> 01:07:41,030 Mimi najua hili. 1374 01:07:41,030 --> 01:07:43,670 Hivyo siwezi tu presume kuongeza 1 na hiyo. 1375 01:07:43,670 --> 01:07:46,940 >> Na kisha wakati huu, mimi magazeti c, na kisha muhimu sawa. 1376 01:07:46,940 --> 01:07:50,170 Na mimi hawana hata haja ya kutupwa wazi. 1377 01:07:50,170 --> 01:07:52,680 Siwezi basi printf na kompyuta takwimu mambo ya nje, 1378 01:07:52,680 --> 01:07:57,300 ili sasa kama mimi kukimbia kufanya Ascii1./ascii1, 1379 01:07:57,300 --> 01:08:01,520 Mimi kupata exact kitu kama vile. 1380 01:08:01,520 --> 01:08:04,530 >> Haina maana mpango, though-- hakuna mtu ni kwenda kweli kuandika programu 1381 01:08:04,530 --> 01:08:07,549 ili kufikiri, nini ilikuwa idadi hiyo elekezi A, au B, au Z? 1382 01:08:07,549 --> 01:08:10,340 Wewe ni kwenda tu kwa Google ni, au kuangalia ni juu online, au kuangalia ni juu 1383 01:08:10,340 --> 01:08:11,650 juu ya slide, au kama. 1384 01:08:11,650 --> 01:08:13,520 Hivyo ambapo gani hii kweli kupata manufaa? 1385 01:08:13,520 --> 01:08:15,960 >> Naam, akizungumza ya kwamba slide, taarifa kuna 1386 01:08:15,960 --> 01:08:20,890 mfano halisi hapa kati ya herufi kubwa na ndogo ambayo haikuwa ajali. 1387 01:08:20,890 --> 01:08:23,760 Taarifa kwamba mtaji A ni 65. 1388 01:08:23,760 --> 01:08:25,830 Lowercase a ni 97. 1389 01:08:25,830 --> 01:08:29,649 Na jinsi mbali mbali ni chini kesi? 1390 01:08:29,649 --> 01:08:32,649 >> Hivyo 65 ni hatua ngapi mbali na 97? 1391 01:08:32,649 --> 01:08:36,210 Hivyo 97 bala 65 ni 32. 1392 01:08:36,210 --> 01:08:37,910 Hivyo mji mkuu a ni 65. 1393 01:08:37,910 --> 01:08:39,939 Ikiwa kuongeza 32 na kwamba, kupata Herufi za chini. 1394 01:08:39,939 --> 01:08:43,729 Na, equivalently, kama wewe Ondoa 32, kupata nyuma ya mji mkuu A-- sawa na B 1395 01:08:43,729 --> 01:08:46,380 kwa b kidogo, big C kwa c kidogo. 1396 01:08:46,380 --> 01:08:50,670 >> Wote wa mapengo haya ni 32 mbali. 1397 01:08:50,670 --> 01:08:54,450 Sasa, hii inaweza kuonekana kuruhusu sisi kufanya kitu kama Microsoft Word, 1398 01:08:54,450 --> 01:08:57,729 au Google Docs kipengele, ambapo Unaweza kuchagua kila kitu na kisha kusema, 1399 01:08:57,729 --> 01:09:00,520 mabadiliko yote na Herufi za chini, au mabadiliko yote ya kesi ya juu, 1400 01:09:00,520 --> 01:09:03,840 au kubadilisha tu neno la kwanza ya hukumu ya kesi ya juu. 1401 01:09:03,840 --> 01:09:07,390 Tunaweza kweli kufanya kitu kama kwamba sisi wenyewe. 1402 01:09:07,390 --> 01:09:12,645 >> Hebu kwenda mbele na kuokoa faili hapa aitwaye capitalize 0.c. 1403 01:09:12,645 --> 01:09:15,770 Na hebu kwenda mbele na mjeledi juu ya mpango kwamba gani hasa kwamba kama ifuatavyo. 1404 01:09:15,770 --> 01:09:18,460 Hivyo ni pamoja na maktaba CS50. 1405 01:09:18,460 --> 01:09:21,430 Na ni pamoja na kiwango I / O. 1406 01:09:21,430 --> 01:09:22,787 >> Na najua hii ni kuja hivi karibuni. 1407 01:09:22,787 --> 01:09:24,870 Hivyo nina kwenda kuiweka katika huko tayari, string.h, 1408 01:09:24,870 --> 01:09:26,960 hivyo mimi kuwa na upatikanaji wa mambo kama Stirling, 1409 01:09:26,960 --> 01:09:29,620 na kisha int utupu kuu, kama kawaida. 1410 01:09:29,620 --> 01:09:33,420 Na kisha mimi nina kwenda mbele na kufanya masharti anapata kupata kamba, 1411 01:09:33,420 --> 01:09:35,032 tu kupata kamba kutoka kwa mtumiaji. 1412 01:09:35,032 --> 01:09:36,740 Na kisha mimi nina kwenda kufanya sanity yangu hundi. 1413 01:09:36,740 --> 01:09:40,510 Kama kamba haina sawa null, kisha ni salama kuendelea. 1414 01:09:40,510 --> 01:09:42,000 Na nini nataka kufanya? 1415 01:09:42,000 --> 01:09:48,700 Mimi nina kwenda iterate kutoka i sawa 0, na n hadi urefu wa kamba s. 1416 01:09:48,700 --> 01:09:51,899 >> Na mimi nina kwenda kufanya hili kwa muda mrefu kama i ni chini ya n, na i plus plus. 1417 01:09:51,899 --> 01:09:55,060 Hadi sasa, mimi nina kweli tu kukopa mawazo kutoka kabla. 1418 01:09:55,060 --> 01:09:57,010 Na sasa mimi nina kwenda kuanzisha tawi. 1419 01:09:57,010 --> 01:09:59,635 >> Hivyo kufikiri nyuma kwa Scratch, ambapo tulikuwa na forks wale walio katika barabara, 1420 01:09:59,635 --> 01:10:05,110 na wiki iliyopita katika C. Mimi nina kwenda kusema hii, kama i-th tabia katika s 1421 01:10:05,110 --> 01:10:09,250 ni kubwa zaidi kuliko au sawa na kesi ya chini, 1422 01:10:09,250 --> 01:10:13,340 and-- katika Scratch wewe ungekuwa literally kusema na, lakini katika C wewe kusema Ampersand, 1423 01:10:13,340 --> 01:10:19,830 ampersand-- na tabia i-th katika s ni chini ya au sawa na kesi z chini, 1424 01:10:19,830 --> 01:10:21,780 hebu kufanya kitu kuvutia. 1425 01:10:21,780 --> 01:10:27,020 Hebu kweli magazeti nje tabia na hakuna newline 1426 01:10:27,020 --> 01:10:31,760 kwamba ni tabia katika kamba, i-th tabia katika kamba. 1427 01:10:31,760 --> 01:10:37,420 >> Lakini hebu kwenda mbele na Ondoa 32 kutoka humo. 1428 01:10:37,420 --> 01:10:42,120 Mwingine kama tabia katika kamba kwamba sisi ni kuangalia 1429 01:10:42,120 --> 01:10:45,950 siyo kati ya a kidogo na kidogo z, kwenda mbele 1430 01:10:45,950 --> 01:10:48,610 na tu kuchapishwa nje bila kubadilika. 1431 01:10:48,610 --> 01:10:50,840 Hivyo tumekuwa kuletwa nukuu hii mabano 1432 01:10:50,840 --> 01:10:53,560 kwa masharti yetu ya kupata saa i-th tabia katika kamba. 1433 01:10:53,560 --> 01:10:57,520 >> Nimekuwa aliongeza baadhi mantiki masharti, kama Mwanzo katika wiki moja wiki iliyopita, ambapo 1434 01:10:57,520 --> 01:10:59,880 Mimi tu kutumia msingi yangu uelewa wa nini 1435 01:10:59,880 --> 01:11:01,130 kinachoendelea chini ya Hood. 1436 01:11:01,130 --> 01:11:04,190 Ni i-th tabia ya s kubwa kuliko au sawa na? 1437 01:11:04,190 --> 01:11:08,290 Kama, ni 97, au 98, au 99, na kadhalika? 1438 01:11:08,290 --> 01:11:11,940 >> Lakini ni pia chini ya au sawa kwa thamani ya z lowercase? 1439 01:11:11,940 --> 01:11:16,210 Na kama hivyo, je, mstari huu ina maana gani? 1440 01:11:16,210 --> 01:11:20,250 14, hii ni aina ya kijidudu ya wazo zima, 1441 01:11:20,250 --> 01:11:23,840 herufi na tu subtracting 32 kutoka hayo, 1442 01:11:23,840 --> 01:11:29,370 katika kesi hii, kwa sababu najua, per kwamba chati, jinsi namba yangu ni kuwakilishwa. 1443 01:11:29,370 --> 01:11:33,925 Basi hebu kwenda mbele na kukimbia hii, baada ya kuandaa capitalize 0.c, 1444 01:11:33,925 --> 01:11:36,210 na kukimbia capitalize 0. 1445 01:11:36,210 --> 01:11:40,300 >> Hebu aina katika kitu kama Zamyla katika lowercase wote kuingia. 1446 01:11:40,300 --> 01:11:42,780 Na sasa tuna Zamyla katika uppercase wote. 1447 01:11:42,780 --> 01:11:45,050 Hebu aina katika Rob katika lowercase wote. 1448 01:11:45,050 --> 01:11:46,674 Hebu jaribu Jason katika lowercase wote. 1449 01:11:46,674 --> 01:11:48,590 Na sisi kuendelea kupata kulazimishwa mtaji. 1450 01:11:48,590 --> 01:11:50,960 Kuna mdudu madogo kwamba mimi aina ya Hawakutarajia. 1451 01:11:50,960 --> 01:11:54,050 Taarifa haraka yangu mpya ni kuishia juu ya mstari huo kama majina yao, 1452 01:11:54,050 --> 01:11:55,520 ambayo anahisi messy kidogo. 1453 01:11:55,520 --> 01:11:59,170 >> Hivyo mimi nina kwenda hapa, na kweli mwisho wa mpango huu 1454 01:11:59,170 --> 01:12:02,110 magazeti nje tabia newline. 1455 01:12:02,110 --> 01:12:03,160 Ni hayo tu. 1456 01:12:03,160 --> 01:12:06,120 Pamoja printf, huna haja ya kupita katika vigezo au format kificho. 1457 01:12:06,120 --> 01:12:08,460 Unaweza literally tu magazeti kitu kama newline. 1458 01:12:08,460 --> 01:12:13,529 >> Basi hebu kwenda mbele na kufanya capitalize 0 tena, rerun yake, Zamyla. 1459 01:12:13,529 --> 01:12:14,820 Na sasa ni kidogo prettier. 1460 01:12:14,820 --> 01:12:17,274 Sasa, haraka yangu ni juu ya line yake mwenyewe mpya. 1461 01:12:17,274 --> 01:12:18,440 Basi hiyo ni yote faini na nzuri. 1462 01:12:18,440 --> 01:12:19,910 Hivyo hiyo ni mfano mzuri. 1463 01:12:19,910 --> 01:12:22,700 Lakini mimi si hata lazima haja ya kificho ngumu 32. 1464 01:12:22,700 --> 01:12:23,350 Unajua nini? 1465 01:12:23,350 --> 01:12:26,350 Mimi naweza say-- mimi si milele kumbuka nini tofauti ni. 1466 01:12:26,350 --> 01:12:29,330 >> Lakini najua kwamba kama mimi na chini kesi barua, 1467 01:12:29,330 --> 01:12:34,430 Mimi kimsingi wanataka Ondoa mbali chochote umbali ni kati ya kidogo 1468 01:12:34,430 --> 01:12:39,160 a na big A, kwa sababu kama mimi kudhani kuwa wote wa barua nyingine ni sawa, 1469 01:12:39,160 --> 01:12:41,045 kwamba lazima kupata kazi kufanyika. 1470 01:12:41,045 --> 01:12:42,670 Lakini badala ya kufanya hivyo, unajua nini? 1471 01:12:42,670 --> 01:12:44,240 Kuna njia nyingine bado. 1472 01:12:44,240 --> 01:12:48,090 >> Kama hiyo capitalize 1.c-- kama ningekuwa kuweka kwamba katika faili tofauti. 1473 01:12:48,090 --> 01:12:51,030 hebu kufanya capitalize 2.c kama ifuatavyo. 1474 01:12:51,030 --> 01:12:53,060 Mimi nina kwenda kwa kweli safi hii up hapa. 1475 01:12:53,060 --> 01:12:57,420 Na badala ya hata ya kuwa na kujua au huduma kuhusu kiwango cha wale 1476 01:12:57,420 --> 01:13:01,090 maelezo ya utekelezaji, mimi nina badala tu kwenda magazeti tabia, 1477 01:13:01,090 --> 01:13:04,610 quote unquote, asilimia C, na kisha piga kazi nyingine kwamba 1478 01:13:04,610 --> 01:13:09,950 upo kwamba inachukua hoja, ambayo ni tabia, kama hii. 1479 01:13:09,950 --> 01:13:12,630 >> Ni zinageuka katika C, kuna kazi nyingine wito 1480 01:13:12,630 --> 01:13:15,550 kwa juu, ambayo kama jina lake unaonyesha inachukua tabia 1481 01:13:15,550 --> 01:13:19,350 na hufanya hivyo kwa kesi yake ya juu sawa, na kisha anarudi 1482 01:13:19,350 --> 01:13:21,410 ili printf unaweza kuziba katika huko. 1483 01:13:21,410 --> 01:13:25,484 Na hivyo kufanya hili, ingawa, mimi haja ya kuanzisha faili nyingine moja. 1484 01:13:25,484 --> 01:13:28,400 Ni zamu huko nje ni faili mwingine kuwa wewe tu kujua kutoka darasani, 1485 01:13:28,400 --> 01:13:33,020 au vitabu vya kiada, au online kumbukumbu, aitwaye C type.h. 1486 01:13:33,020 --> 01:13:38,570 >> Hivyo kama mimi kuongeza kwamba hadi kati header yangu files, na sasa re-kukusanya mpango huu, 1487 01:13:38,570 --> 01:13:43,040 capitalize2, ./capitalize2 kuingia. 1488 01:13:43,040 --> 01:13:46,690 Hebu aina katika Zamyla katika yote lowercase, bado kazi hiyo. 1489 01:13:46,690 --> 01:13:48,040 Lakini unajua nini? 1490 01:13:48,040 --> 01:13:55,590 Ni zinageuka kuwa kwa juu ina baadhi ya utendaji mengine. 1491 01:13:55,590 --> 01:13:58,410 >> Na napenda kuanzisha hii amri hapa, aina ya awkwardly 1492 01:13:58,410 --> 01:14:00,250 jina lake, lakini mtu kwa mwongozo. 1493 01:14:00,250 --> 01:14:03,960 Ni zinageuka kuwa zaidi ya kompyuta Linux, kama sisi ni kutumia here-- Linux uendeshaji 1494 01:14:03,960 --> 01:14:06,270 system-- kuwa na amri alimwita mtu, ambayo anasema, 1495 01:14:06,270 --> 01:14:08,530 hey, kompyuta, nipe mwongozo kompyuta. 1496 01:14:08,530 --> 01:14:10,680 Je, unataka kuangalia juu katika mwongozo kwamba? 1497 01:14:10,680 --> 01:14:13,840 >> Nataka kuangalia up kazi ameitwa juu, kuingia. 1498 01:14:13,840 --> 01:14:16,070 Na ni kidogo cryptic kusoma wakati mwingine. 1499 01:14:16,070 --> 01:14:18,780 Lakini taarifa tuko katika Linux programu ya mwongozo. 1500 01:14:18,780 --> 01:14:19,530 Na ni wote wa maandishi. 1501 01:14:19,530 --> 01:14:21,905 Na taarifa kwamba kuna jina la kazi hapa. 1502 01:14:21,905 --> 01:14:25,030 Ni zinageuka ina binamu aitwaye kupunguza, ambayo haina kinyume. 1503 01:14:25,030 --> 01:14:29,710 Na taarifa chini ya Synopsis, kwa kutumia hii kazi mtu ukurasa, hivyo kusema, 1504 01:14:29,710 --> 01:14:32,220 ananiambia kwamba mimi haja ya ni pamoja c type.h. 1505 01:14:32,220 --> 01:14:33,630 Na nilijua kuwa kutokana na mazoezi. 1506 01:14:33,630 --> 01:14:36,210 >> Hapa, ni kuonyesha me wawili prototypes kwa ajili ya kazi, 1507 01:14:36,210 --> 01:14:39,070 ili kama mimi milele wanataka kutumia hii Mimi najua kile wao kuchukua kama pembejeo, 1508 01:14:39,070 --> 01:14:40,652 na wanayo kurudi kama pato. 1509 01:14:40,652 --> 01:14:42,360 Na kisha kama mimi kusoma maelezo, naona 1510 01:14:42,360 --> 01:14:44,820 kwa undani zaidi nini kazi gani. 1511 01:14:44,820 --> 01:14:48,100 Lakini muhimu zaidi, kama Mimi kuangalia chini ya thamani ya kurudi, 1512 01:14:48,100 --> 01:14:51,710 inasema thamani akarudi ni ile ya barua waongofu, 1513 01:14:51,710 --> 01:14:57,880 au C, pembejeo awali, kama kubadilika haikuwezekana. 1514 01:14:57,880 --> 01:15:01,992 >> Kwa maneno mengine, kwa juu watajaribu kubadili barua kwa kesi ya juu. 1515 01:15:01,992 --> 01:15:03,450 Na kama hivyo, ni kwenda kulirudisha. 1516 01:15:03,450 --> 01:15:07,010 Lakini kama hawawezi kwa baadhi reason-- labda ni kesi tayari juu, 1517 01:15:07,010 --> 01:15:09,550 labda ni mshangao uhakika au baadhi punctuation-- mengine 1518 01:15:09,550 --> 01:15:12,200 ni tu kwenda kwa kurudi C awali, 1519 01:15:12,200 --> 01:15:17,340 ambayo ina maana siwezi kufanya kanuni yangu bora iliyoundwa kama ifuatavyo. 1520 01:15:17,340 --> 01:15:20,580 >> Sina haja zote za mistari haya darn ya kanuni. 1521 01:15:20,580 --> 01:15:22,610 Yote ya mistari nimekuwa tu yalionyesha Unaweza 1522 01:15:22,610 --> 01:15:28,700 kuwa kuanguka ndani ya rahisi moja tu Mpya, ambayo ni hii asilimia printf 1523 01:15:28,700 --> 01:15:33,510 c kwa juu S mabano i. 1524 01:15:33,510 --> 01:15:36,090 Na hii itakuwa mfano wa kubuni bora. 1525 01:15:36,090 --> 01:15:40,040 >> Kwa nini kutekeleza katika mistari 7 au 8 ya kificho, chochote ilikuwa mimi tu 1526 01:15:40,040 --> 01:15:44,960 kuchapa, wakati unaweza badala kuzimia yote ya kwamba mantiki na kufanya maamuzi 1527 01:15:44,960 --> 01:15:49,620 katika upinzani moja, 13 sasa, kwamba hutegemea maktaba function-- 1528 01:15:49,620 --> 01:15:53,430 kazi ambayo inakuja na C, lakini hiyo gani hasa nini unataka kufanya. 1529 01:15:53,430 --> 01:15:55,295 Na, kusema ukweli, hata kama hakuwa na kuja na C, 1530 01:15:55,295 --> 01:15:58,880 unaweza kutekeleza ni wewe mwenyewe, kama tumeona, na kupata int hasi 1531 01:15:58,880 --> 01:16:01,700 na kupata chanya int wiki iliyopita pia. 1532 01:16:01,700 --> 01:16:03,470 >> Kanuni hii sasa ni zaidi someka. 1533 01:16:03,470 --> 01:16:06,670 Na kwa kweli, kama sisi kitabu juu, kuangalia ni kiasi gani zaidi kompakt 1534 01:16:06,670 --> 01:16:08,360 hili toleo la mpango wangu ni. 1535 01:16:08,360 --> 01:16:11,230 Ni kidogo juu nzito sasa, na haya yote ni pamoja na. 1536 01:16:11,230 --> 01:16:14,380 Lakini hiyo ni sawa, kwa sababu sasa mimi nina amesimama juu ya mabega ya programmers 1537 01:16:14,380 --> 01:16:15,300 kabla yangu. 1538 01:16:15,300 --> 01:16:18,440 Na anaye ni nani kutekelezwa kwa juu kweli 1539 01:16:18,440 --> 01:16:21,470 alifanya mimi neema, kiasi kama yeyote kutekelezwa Stirling kweli 1540 01:16:21,470 --> 01:16:24,790 alifanya yangu neema baadhi ya wakati uliopita. 1541 01:16:24,790 --> 01:16:26,970 Na hivyo sasa tuna kubuni mpango bora 1542 01:16:26,970 --> 01:16:31,680 kwamba zana halisi mantiki hiyo hiyo. 1543 01:16:31,680 --> 01:16:35,580 >> Akizungumza ya Stirling, basi mimi kwenda mbele na kufanya hili. 1544 01:16:35,580 --> 01:16:38,320 Hebu kwenda mbele na kuokoa faili hii kama stirling.c. 1545 01:16:38,320 --> 01:16:43,255 Na zinageuka, tunaweza peel nyuma wengine safu moja pretty tu sasa. 1546 01:16:43,255 --> 01:16:45,630 Mimi nina kwenda mbele na mjeledi up mpango mwingine katika kuu 1547 01:16:45,630 --> 01:16:49,759 hapa kwamba tu re-zana urefu wa kamba kama ifuatavyo. 1548 01:16:49,759 --> 01:16:52,300 Hivyo hapa ni mstari wa kanuni kwamba anapata mimi kamba kutoka kwa mtumiaji. 1549 01:16:52,300 --> 01:16:53,910 Sisi kuendelea kutumia hii tena na tena. 1550 01:16:53,910 --> 01:16:58,900 Napenda kutoa mwenyewe kutofautiana kuitwa n ya aina int kwamba maduka idadi. 1551 01:16:58,900 --> 01:17:02,490 >> Na napenda kwenda mbele na kufanya mantiki zifuatazo. 1552 01:17:02,490 --> 01:17:15,610 Wakati tabia n-th katika s anafanya si sawa backslash 0, kwenda mbele 1553 01:17:15,610 --> 01:17:17,930 na increment n. 1554 01:17:17,930 --> 01:17:23,506 Na kisha magazeti nje printf asilimia i n. 1555 01:17:23,506 --> 01:17:29,200 Mimi kudai kwamba mpango huu hapa, bila wito urefu wa kamba, 1556 01:17:29,200 --> 01:17:31,150 takwimu za nje urefu wa kamba. 1557 01:17:31,150 --> 01:17:34,600 >> Na uchawi ni kabisa zimegawanywa katika mstari wa 8 1558 01:17:34,600 --> 01:17:39,830 hapa na kile kinachoonekana kama syntax mpya, hii backslash 0 katika quotes moja. 1559 01:17:39,830 --> 01:17:41,360 Lakini kwa nini ni kwamba? 1560 01:17:41,360 --> 01:17:44,100 Hebu fikiria nini imekuwa kinachoendelea muda wote huu. 1561 01:17:44,100 --> 01:17:47,990 >> Na kama kando kabla ya mimi kusahau, kutambua pia kwamba, katika Mbali na kurasa mtu 1562 01:17:47,990 --> 01:17:50,920 kwamba kuja na kawaida Linux mfumo kama CS50 IDE, 1563 01:17:50,920 --> 01:17:53,770 kutambua kwamba sisi, wafanyakazi bila shaka, wana pia 1564 01:17:53,770 --> 01:17:56,030 alifanya tovuti version ya wazo moja hii inaitwa 1565 01:17:56,030 --> 01:17:59,940 reference.cs50.net, ambayo ina wote wa wale kurasa huo mtu, 1566 01:17:59,940 --> 01:18:02,020 yote ya kwamba huo nyaraka, kama vile 1567 01:18:02,020 --> 01:18:05,730 sanduku kidogo utafutaji juu ambayo inaruhusu wewe kubadili yote ya haki 1568 01:18:05,730 --> 01:18:09,025 lugha arcane katika chini ya starehe mode, ambapo sisi, wafanyakazi wa kufundisha, 1569 01:18:09,025 --> 01:18:12,150 zimeweza kupitia na kujaribu kurahisisha baadhi ya lugha kwa kuweka mambo 1570 01:18:12,150 --> 01:18:14,830 ililenga mawazo, na si baadhi ya technicalities. 1571 01:18:14,830 --> 01:18:20,070 Hivyo kukumbuka, reference.cs50.net kama rasilimali nyingine kama vile. 1572 01:18:20,070 --> 01:18:23,800 >> Lakini kwa nini urefu wa kamba kazi katika njia ya mimi mapendekezo wakati iliyopita? 1573 01:18:23,800 --> 01:18:25,160 Hapa ni jina Zamyla tena. 1574 01:18:25,160 --> 01:18:27,690 Na hapa ni jina Zamyla ya Boxed katika, kama mimi kuendelea kufanya, 1575 01:18:27,690 --> 01:18:31,360 rangi picha ya ni kuwa, kweli, tu mlolongo wa wahusika. 1576 01:18:31,360 --> 01:18:34,260 Lakini Zamyla haipo katika kutengwa katika mpango. 1577 01:18:34,260 --> 01:18:37,420 >> Wakati kuandika na kuendesha programu, unatumia Mac au PC yako 1578 01:18:37,420 --> 01:18:40,010 kama kumbukumbu, au RAM hivyo kusema. 1579 01:18:40,010 --> 01:18:42,620 Na unaweza kufikiria kompyuta yako kama kuwa na 1580 01:18:42,620 --> 01:18:44,730 kura ya gigabytes ya kumbukumbu siku hizi. 1581 01:18:44,730 --> 01:18:47,700 Na GIG ina maana mabilioni, hivyo mabilioni ya ka. 1582 01:18:47,700 --> 01:18:48,910 >> Lakini hebu rewind kwa wakati. 1583 01:18:48,910 --> 01:18:51,530 Na kudhani kwamba sisi ni kutumia kompyuta kweli umri kwamba 1584 01:18:51,530 --> 01:18:55,150 tu ina 32 ka ya kumbukumbu. 1585 01:18:55,150 --> 01:18:59,310 Mimi naweza, kwenye kompyuta screen yangu, tu kuteka hii nje kama ifuatavyo. 1586 01:18:59,310 --> 01:19:05,240 >> Mimi naweza tu kusema kwamba yangu kompyuta ina wote wa kumbukumbu hii. 1587 01:19:05,240 --> 01:19:08,830 Na hii ni kama fimbo ya kumbukumbu, ikiwa unakumbuka picha wetu kutoka wakati wa mwisho. 1588 01:19:08,830 --> 01:19:11,670 Na kama mimi tu kugawanya huu katika nyakati za kutosha, 1589 01:19:11,670 --> 01:19:15,040 Mimi kudai kwamba nina 32 ka ya kumbukumbu juu ya screen. 1590 01:19:15,040 --> 01:19:18,239 >> Sasa, katika hali halisi, naweza tu kuteka hadi sasa juu ya screen hii hapa. 1591 01:19:18,239 --> 01:19:20,280 Hivyo mimi nina kwenda mbele, na tu kwa mkataba, 1592 01:19:20,280 --> 01:19:24,050 kuteka kumbukumbu ya kompyuta yangu kama gridi ya taifa, si kama mojawapo ya moja kwa moja line. 1593 01:19:24,050 --> 01:19:28,190 Hasa, mimi kudai kwamba sasa gridi ya taifa hili, hii 8 na 4 gridi ya taifa, 1594 01:19:28,190 --> 01:19:31,800 tu inawakilisha ka zote 32 ya kumbukumbu iliyopo katika Mac yangu, 1595 01:19:31,800 --> 01:19:33,030 au inapatikana katika PC yangu. 1596 01:19:33,030 --> 01:19:34,780 Na wao ni wrapping mistari kwenye miwili, tu 1597 01:19:34,780 --> 01:19:38,030 kwa sababu inafaa zaidi juu ya screen. 1598 01:19:38,030 --> 01:19:40,800 Lakini hii ni Byte kwanza. 1599 01:19:40,800 --> 01:19:41,990 Hii ni Byte pili. 1600 01:19:41,990 --> 01:19:43,300 Hii ni Byte tatu. 1601 01:19:43,300 --> 01:19:45,310 >> Na hii ni Byte 32. 1602 01:19:45,310 --> 01:19:52,910 Au, kama tunafikiri kama kompyuta mwanasayansi, hii ni Byte 0, 1, 2, 3, 31. 1603 01:19:52,910 --> 01:19:55,950 Hivyo kuwa 0-31, kama wewe kuanza kuhesabu saa 0. 1604 01:19:55,950 --> 01:19:59,830 >> Hivyo kama sisi kutumia mpango kwamba wito kupata kamba, 1605 01:19:59,830 --> 01:20:05,280 na sisi kupata kamba kutoka binadamu kama sikuwa aitwaye Zamyla, Z-A-M-Y-L-A, 1606 01:20:05,280 --> 01:20:09,430 jinsi katika dunia gani kompyuta kuweka wimbo wa ambayo Byte, 1607 01:20:09,430 --> 01:20:12,230 ambayo chunk ya kumbukumbu, ni mali ya ambayo kamba? 1608 01:20:12,230 --> 01:20:16,270 Kwa maneno mengine, kama sisi kuendelea na kuandika jina jingine ndani ya kompyuta, 1609 01:20:16,270 --> 01:20:19,890 kama Andi hii, wito kupata kamba mara ya pili, 1610 01:20:19,890 --> 01:20:23,030 -N-D-I ina kuishia katika kumbukumbu ya kompyuta pia. 1611 01:20:23,030 --> 01:20:23,850 Lakini jinsi gani? 1612 01:20:23,850 --> 01:20:29,700 >> Naam, zinageuka kuwa chini kofia, nini C gani wakati kuhifadhi masharti 1613 01:20:29,700 --> 01:20:35,080 kwamba aina ya binadamu katika, au kwamba kuja kutoka chanzo kingine, ni 1614 01:20:35,080 --> 01:20:39,190 delineates mwisho wa watu hao kwa maalum character-- backslash 1615 01:20:39,190 --> 01:20:44,750 0, ambayo ni njia tu ya pekee ya kusema bits 80 mfululizo. 1616 01:20:44,750 --> 01:20:47,950 >> Hivyo A-- hii ni idadi 97 kukumbuka. 1617 01:20:47,950 --> 01:20:51,770 Kwa hiyo baadhi ya muundo wa 8 bits inawakilisha idadi decimal 97. 1618 01:20:51,770 --> 01:20:58,070 backslash hii 0 ni literally idadi 0, kwa jina lingine nul, N-U-L, tofauti na awali, 1619 01:20:58,070 --> 01:20:59,630 N-U-L-L, ambayo kuongelea. 1620 01:20:59,630 --> 01:21:05,700 Lakini kwa sasa, tu kujua kwamba hii backslash 0 ni bits 80 tu mfululizo. 1621 01:21:05,700 --> 01:21:09,810 >> Na ni tu mstari huu katika mchanga kwamba anasema kitu chochote kwa upande wa kushoto 1622 01:21:09,810 --> 01:21:12,610 ni mali ya kamba moja, au aina moja data. 1623 01:21:12,610 --> 01:21:15,480 Na kitu chochote na haki ni mali ya kitu kingine. 1624 01:21:15,480 --> 01:21:17,440 Andi jina, wakati huo huo, ambayo tu kuibua 1625 01:21:17,440 --> 01:21:21,310 hutokea kwa wrap juu ya mstari wa wengine, lakini hiyo ni undani aesthetic, 1626 01:21:21,310 --> 01:21:23,990 vile vile ni nul kukoma. 1627 01:21:23,990 --> 01:21:29,290 >> Ni kamba ya wahusika A-N-D-I, pamoja na ya tano siri tabia, 1628 01:21:29,290 --> 01:21:33,560 zote 0 bits, kwamba tu demarcates mwisho wa jina Andi pia. 1629 01:21:33,560 --> 01:21:37,120 Na kama sisi kuwaita kupata kamba mara ya tatu katika kompyuta kupata kamba kama 1630 01:21:37,120 --> 01:21:44,210 Maria, M-A-R-I-A, vile vile ni Maria jina nul terminated na backslash 0. 1631 01:21:44,210 --> 01:21:47,170 >> Hii ni tofauti kimsingi kutoka jinsi ya kompyuta ingekuwa kawaida 1632 01:21:47,170 --> 01:21:51,850 kuhifadhi integer, au kuelea, au nyingine aina ya data bado, kwa sababu wanakumbuka, 1633 01:21:51,850 --> 01:21:57,420 integer ni kawaida 32 bits, au 4 ka, au labda hata 64 bits, 1634 01:21:57,420 --> 01:21:59,100 au ka nane. 1635 01:21:59,100 --> 01:22:02,620 Lakini primitives wengi katika kompyuta katika lugha ya programu 1636 01:22:02,620 --> 01:22:05,550 na idadi maalum ya ka chini hood-- 1637 01:22:05,550 --> 01:22:08,100 labda 1, labda 2, labda 4, labda 8. 1638 01:22:08,100 --> 01:22:13,250 >> Lakini masharti, kwa kubuni, na nguvu idadi ya wahusika. 1639 01:22:13,250 --> 01:22:16,980 Huwezi kujua mapema, mpaka aina ya binadamu katika Z-A-M-Y-L-A, 1640 01:22:16,980 --> 01:22:21,400 au M-A-R-I-A, au-N-D-I. Huwezi kujua mara ngapi user itawagonga 1641 01:22:21,400 --> 01:22:22,070 keyboard. 1642 01:22:22,070 --> 01:22:26,490 Kwa hiyo, hawajui jinsi wahusika nyingi mapema 1643 01:22:26,490 --> 01:22:27,540 wewe ni kwenda haja. 1644 01:22:27,540 --> 01:22:31,840 >> Na hivyo C tu aina ya majani kama siri chini ya kofia breadcrumb 1645 01:22:31,840 --> 01:22:32,960 mwisho wa kamba. 1646 01:22:32,960 --> 01:22:39,280 Baada ya kuhifadhi Z-A-M-Y-L-A katika kumbukumbu, pia tu unaweka sawa 1647 01:22:39,280 --> 01:22:40,210 ya kipindi hicho. 1648 01:22:40,210 --> 01:22:45,060 Mwishoni mwa sentensi, unaweka 80 bits, hivyo kama 1649 01:22:45,060 --> 01:22:49,120 kukumbuka ambapo Zamyla huanza na kuishia. 1650 01:22:49,120 --> 01:22:51,490 >> Basi nini uhusiano, basi, kwa mpango huu? 1651 01:22:51,490 --> 01:22:55,190 Mpango huu hapa, Stirling, ni tu utaratibu 1652 01:22:55,190 --> 01:22:57,970 kwa ajili ya kupata kamba kutoka kwa mtumiaji, line 6. 1653 01:22:57,970 --> 01:23:01,160 Mstari 7, mimi kutangaza kutofautiana kuitwa n na kuliweka sawa na 0. 1654 01:23:01,160 --> 01:23:08,680 >> Na kisha katika mstari wa 8, mimi tu aliuliza swali, wakati tabia n-th gani 1655 01:23:08,680 --> 01:23:12,120 si sawa zote 0 bits-- kwa maneno mengine, haina 1656 01:23:12,120 --> 01:23:14,500 sawa maalum huu tabia, backslash 0, ambayo 1657 01:23:14,500 --> 01:23:18,470 mara tu kwamba maalum nul character-- kwenda mbele na tu increment n. 1658 01:23:18,470 --> 01:23:21,460 >> Na kuendelea kufanya hivyo, na kuweka kufanya hivyo, na kuendelea kufanya hivyo. 1659 01:23:21,460 --> 01:23:23,430 Na hivyo hata kama katika siku za nyuma tumekuwa kutumika i, 1660 01:23:23,430 --> 01:23:25,181 ni kikamilifu faini semantically kutumia n, 1661 01:23:25,181 --> 01:23:27,430 kama wewe ni kujaribu tu kuhesabu wakati huu kwa makusudi, 1662 01:23:27,430 --> 01:23:28,720 na nataka tu kuiita n. 1663 01:23:28,720 --> 01:23:34,720 Hivyo hii anaendelea tu kuuliza swali, ni tabia n-th wa s sekunde 0 wote? 1664 01:23:34,720 --> 01:23:38,470 Kama siyo, kuangalia kwa kuangalia ijayo, kuangalia kwa ijayo, kuangalia kwa ijayo, 1665 01:23:38,470 --> 01:23:39,460 kuangalia kwa ijayo. 1666 01:23:39,460 --> 01:23:45,540 >> Lakini kwa haraka kama unaweza kuona backslash 0, mstari huu loop-- 9 hadi 11-- ataacha. 1667 01:23:45,540 --> 01:23:49,640 Kuvunja nje ya kitanzi wakati, kuacha ndani ya kwamba n kutofautiana 1668 01:23:49,640 --> 01:23:54,530 kuhesabu jumla ya yote ya wahusika katika kamba wewe aliona, 1669 01:23:54,530 --> 01:23:55,660 hivyo uchapishaji ni nje. 1670 01:23:55,660 --> 01:23:56,760 Basi hebu jaribu hii. 1671 01:23:56,760 --> 01:23:59,500 >> Hebu kwenda mbele na, bila kutumia Stirling kazi, 1672 01:23:59,500 --> 01:24:04,240 lakini tu kwa kutumia homegrown yangu mwenyewe version hapa aitwaye Stirling, basi mimi kwenda mbele 1673 01:24:04,240 --> 01:24:07,700 na kukimbia Stirling, aina katika kitu kama Zamyla, ambayo mimi kujua mapema 1674 01:24:07,700 --> 01:24:08,670 ni wahusika sita. 1675 01:24:08,670 --> 01:24:10,080 Hebu kuona kama ni kazi. 1676 01:24:10,080 --> 01:24:10,920 Hakika, ni sita. 1677 01:24:10,920 --> 01:24:15,257 Hebu jaribu na Rob, herufi tatu, herufi tatu pia, na kadhalika. 1678 01:24:15,257 --> 01:24:17,340 Basi hiyo ni yote ambayo inaenda chini ya Hood. 1679 01:24:17,340 --> 01:24:19,548 Na taarifa uhusiano, kisha, kwa wiki ya kwanza 1680 01:24:19,548 --> 01:24:22,370 ya darasa, ambapo kuongelea kitu kama uchukuaji, 1681 01:24:22,370 --> 01:24:26,960 ambayo ni tu hii layering wa mawazo, au utata, juu ya kanuni za msingi. 1682 01:24:26,960 --> 01:24:30,710 Hapa, sisi ni aina ya kuangalia chini ya kofia ya Stirling, 1683 01:24:30,710 --> 01:24:33,510 hivyo kusema, kufikiri, jinsi gani ni kutekelezwa? 1684 01:24:33,510 --> 01:24:35,232 >> Na tunaweza tena kutekeleza wenyewe. 1685 01:24:35,232 --> 01:24:37,440 Lakini sisi ni kamwe tena kwenda tena kutekeleza Stirling. 1686 01:24:37,440 --> 01:24:39,780 Sisi ni kwenda tu kutumia Stirling ili 1687 01:24:39,780 --> 01:24:42,100 kwa kweli kupata baadhi ya masharti urefu. 1688 01:24:42,100 --> 01:24:44,200 >> Lakini hakuna uchawi chini ya Hood. 1689 01:24:44,200 --> 01:24:46,716 Kama unajua kwamba chini kofia, kamba 1690 01:24:46,716 --> 01:24:48,090 ni tu mlolongo wa wahusika. 1691 01:24:48,090 --> 01:24:51,090 Na kwamba mlolongo wa wahusika wote wanaweza kuwa numerically kushughulikiwa 1692 01:24:51,090 --> 01:24:53,330 na mabano 0, bracket 1, bracket 2, na wewe 1693 01:24:53,330 --> 01:24:57,420 tunajua kwamba mwisho wa kamba ni tabia maalum, unaweza kufikiri 1694 01:24:57,420 --> 01:25:01,710 jinsi ya kufanya kitu chochote zaidi katika mpango, kwa sababu wote majipu chini 1695 01:25:01,710 --> 01:25:03,400 ni kusoma na kuandika kumbukumbu. 1696 01:25:03,400 --> 01:25:06,130 Yaani, kubadilisha na kuangalia katika kumbukumbu, au kuhamia mambo 1697 01:25:06,130 --> 01:25:10,940 kuzunguka katika kumbukumbu, uchapishaji mambo juu ya screen, na kadhalika. 1698 01:25:10,940 --> 01:25:14,800 >> Basi hebu sasa yanatumia newfound hii uelewa wa nini masharti kweli 1699 01:25:14,800 --> 01:25:17,910 ni chini ya Hood, na peel nyuma safu moja nyingine 1700 01:25:17,910 --> 01:25:20,080 kwamba hadi sasa tumekuwa wamekuwa wakipuuza kabisa. 1701 01:25:20,080 --> 01:25:22,650 Hasa, wakati wowote tumekuwa kutekelezwa mpango, 1702 01:25:22,650 --> 01:25:25,930 tulikuwa na hii mstari wa kanuni karibu juu ya kutangaza kuu. 1703 01:25:25,930 --> 01:25:27,810 Na tumekuwa maalum int kuu utupu. 1704 01:25:27,810 --> 01:25:31,240 >> Na kwamba utupu ndani ya mabano ina wamekuwa wakisema muda wote huu kwamba kuu 1705 01:25:31,240 --> 01:25:33,440 yenyewe haina kuchukua hoja yoyote. 1706 01:25:33,440 --> 01:25:36,210 pembejeo yoyote ambayo kuu ni kwenda kupata kutoka kwa mtumiaji 1707 01:25:36,210 --> 01:25:39,020 ina kuja kutoka baadhi ya wengine utaratibu, kama kupata int, 1708 01:25:39,020 --> 01:25:42,040 au kupata kuelea, au kupata kamba, au baadhi ya kazi nyingine. 1709 01:25:42,040 --> 01:25:44,710 Lakini zinageuka kuwa wakati wewe kuandika mpango, 1710 01:25:44,710 --> 01:25:47,690 unaweza kweli bayana kwamba mpango huu ataona 1711 01:25:47,690 --> 01:25:51,730 kuchukua pembejeo kutoka kwa binadamu katika mstari amri yenyewe. 1712 01:25:51,730 --> 01:25:56,310 >> Kwa maneno mengine, hata kama sisi hivi sasa kuwa wamekuwa kukimbia tu ./hello hodi 1713 01:25:56,310 --> 01:26:00,312 au mipango kama hiyo, yote ya programu nyingine ambayo tumekuwa kutumia, 1714 01:26:00,312 --> 01:26:02,770 kwamba sisi wenyewe hakuwa na kuandika, na wamekuwa kuchukua, inaonekana, 1715 01:26:02,770 --> 01:26:05,210 amri line arguments-- mambo kama kufanya. 1716 01:26:05,210 --> 01:26:07,450 Unaweza kusema kitu kama kufanya, na kisha neno la pili. 1717 01:26:07,450 --> 01:26:10,950 Au Clang, wewe kusema Clang, na kisha Neno la pili, jina la faili. 1718 01:26:10,950 --> 01:26:14,410 >> Au hata RM au CP, kama waweza tumeona au kutumika tayari 1719 01:26:14,410 --> 01:26:15,880 kuondoa au nakala files. 1720 01:26:15,880 --> 01:26:18,920 Wale wote kuchukua kinachojulikana amri line arguments-- 1721 01:26:18,920 --> 01:26:21,130 maneno ya ziada katika haraka wastaafu. 1722 01:26:21,130 --> 01:26:23,260 Lakini hadi sasa, sisi wenyewe si alikuwa 1723 01:26:23,260 --> 01:26:27,080 hii anasa ya kuchukua pembejeo kutoka user wakati yeye au yeye kweli anaendesha 1724 01:26:27,080 --> 01:26:29,120 programu yenyewe katika mstari amri. 1725 01:26:29,120 --> 01:26:33,710 >> Lakini tunaweza kufanya hivyo kwa re-kutangaza kuu kusonga mbele, ingawa sikuwa na 1726 01:26:33,710 --> 01:26:36,750 utupu katika mabano, lakini hizi hoja mbili 1727 01:26:36,750 --> 01:26:40,600 instead-- kwanza integer, na kitu cha pili 1728 01:26:40,600 --> 01:26:44,170 mpya, jambo ambalo sisi ni kwenda kuwaita safu, kitu sawa katika roho 1729 01:26:44,170 --> 01:26:49,220 kwa yale tuliona katika Scratch kama orodha, lakini safu ya masharti, kama tutaweza hivi karibuni kuona. 1730 01:26:49,220 --> 01:26:51,790 Lakini hebu angalia hii kwa njia ya mfano, kabla ya sisi 1731 01:26:51,790 --> 01:26:53,690 kutofautisha hiyo ina maana hasa nini. 1732 01:26:53,690 --> 01:26:56,520 >> Hivyo kama mimi kwenda katika CS50 IDE hapa, nimekuwa wamekwenda mbele 1733 01:26:56,520 --> 01:27:01,840 na alitangaza katika faili inayoitwa argv0.c template zifuatazo. 1734 01:27:01,840 --> 01:27:04,120 Na taarifa Kitu pekee hiyo ni tofauti hivyo mbali 1735 01:27:04,120 --> 01:27:08,570 ni kwamba nimekuwa iliyopita utupu int argc kamba argv wazi bracket, karibu 1736 01:27:08,570 --> 01:27:09,070 bracket. 1737 01:27:09,070 --> 01:27:11,730 Na taarifa kwa sasa, kuna kitu ndani ya mabano hayo. 1738 01:27:11,730 --> 01:27:12,620 >> Kuna idadi hakuna. 1739 01:27:12,620 --> 01:27:15,070 Na hakuna i, au n, au barua nyingine yoyote. 1740 01:27:15,070 --> 01:27:17,010 Mimi nina kutumia tu mabano mraba kwa sasa, 1741 01:27:17,010 --> 01:27:19,510 kwa sababu tutaweza kuja nyuma katika muda tu. 1742 01:27:19,510 --> 01:27:21,330 >> Na sasa nini mimi kwenda kufanya ni hii. 1743 01:27:21,330 --> 01:27:26,680 Kama argc sawa sawa na 2-- na kukumbuka kuwa sawa sawa 1744 01:27:26,680 --> 01:27:30,040 ni usawa operator kulinganisha kushoto na kulia kwa usawa. 1745 01:27:30,040 --> 01:27:31,790 Siyo zoezi operator, ambayo ni 1746 01:27:31,790 --> 01:27:36,510 single sawa ishara, ambayo ina maana nakala kutoka kulia kwenda kushoto baadhi ya thamani. 1747 01:27:36,510 --> 01:27:42,840 >> Kama argc sawa sawa na 2, nataka kusema, printf, hello, percents, mstari wa mwezi, 1748 01:27:42,840 --> 01:27:47,340 na kisha kuziba in-- na hapa ni mpya trick-- argv mabano 1, kwa sababu za 1749 01:27:47,340 --> 01:27:48,840 kwamba tutaweza kurudi kwa mara moja. 1750 01:27:48,840 --> 01:27:52,110 Mwingine kama argc haina sawa 2, unajua nini? 1751 01:27:52,110 --> 01:27:57,400 Hebu tu kwenda mbele na, kama kawaida, magazeti nje hujambo dunia na hakuna badala. 1752 01:27:57,400 --> 01:28:02,710 >> Hivyo inaweza kuonekana kwamba kama argc, ambayo anasimama kwa kuhesabu hoja, sawa na 2, 1753 01:28:02,710 --> 01:28:04,740 Mimi nina kwenda magazeti nje hodi kitu au nyingine. 1754 01:28:04,740 --> 01:28:07,560 Vinginevyo, by default, mimi nina kwenda magazeti hujambo dunia. 1755 01:28:07,560 --> 01:28:08,770 Hivyo hii ina maana gani? 1756 01:28:08,770 --> 01:28:15,550 >> Naam, napenda kwenda mbele na kuokoa faili hii, na kisha kufanya kufanya argv0, 1757 01:28:15,550 --> 01:28:18,940 na kisha ./argv0, kuingia. 1758 01:28:18,940 --> 01:28:20,300 Na inasema hujambo dunia. 1759 01:28:20,300 --> 01:28:21,260 Sasa, kwa nini ni kwamba? 1760 01:28:21,260 --> 01:28:24,730 >> Naam, ni zamu nje wakati wowote kuendesha programu katika mstari amri, 1761 01:28:24,730 --> 01:28:29,570 wewe ni kujaza katika kile tutaweza ujumla kuwaita hoja vector. 1762 01:28:29,570 --> 01:28:33,100 Kwa maneno mengine, moja kwa moja kompyuta, mfumo wa uendeshaji, 1763 01:28:33,100 --> 01:28:38,340 ni kwenda mkono kwa mpango wako yenyewe orodha ya maneno yote 1764 01:28:38,340 --> 01:28:40,850 kwamba binadamu typed katika haraka, katika kesi wewe 1765 01:28:40,850 --> 01:28:43,790 programu wanataka kufanya kitu na habari kwamba. 1766 01:28:43,790 --> 01:28:48,540 Na katika kesi hii, neno tu Nimekuwa typed katika haraka ni ./argv0. 1767 01:28:48,540 --> 01:28:55,420 >> Na hivyo idadi ya hoja kwamba ni unaletwa mpango wangu ni moja tu. 1768 01:28:55,420 --> 01:28:58,880 Kwa maneno mengine, mabishano kuhesabu, inayojulikana kama argc 1769 01:28:58,880 --> 01:29:00,970 hapa kama integer, ni moja tu. 1770 01:29:00,970 --> 01:29:03,000 Moja, bila shaka, haina sawa mbili. 1771 01:29:03,000 --> 01:29:05,980 Na hivyo hii ni nini Prints, hello dunia. 1772 01:29:05,980 --> 01:29:08,170 >> Lakini napenda kuchukua mahali fulani hii. 1773 01:29:08,170 --> 01:29:09,930 Ngoja niseme, argv0. 1774 01:29:09,930 --> 01:29:12,740 Na basi vipi kuhusu Maria? 1775 01:29:12,740 --> 01:29:14,990 Na kisha hit kuingia. 1776 01:29:14,990 --> 01:29:18,020 >> Na taarifa ya nini magically kinatokea hapa. 1777 01:29:18,020 --> 01:29:22,640 Sasa, badala ya hujambo dunia, nina iliyopita tabia ya mpango huu 1778 01:29:22,640 --> 01:29:26,310 kwa kuchukua pembejeo si kutoka get kamba au baadhi ya kazi nyingine, 1779 01:29:26,310 --> 01:29:30,570 lakini kutokana na, inaonekana, amri yangu yenyewe, nini Mimi awali typed katika. 1780 01:29:30,570 --> 01:29:35,720 Na siwezi kucheza mchezo huu tena na kubadilisha kwa Stelios, kwa mfano. 1781 01:29:35,720 --> 01:29:38,400 >> Na sasa naona jina la mtu mwingine bado. 1782 01:29:38,400 --> 01:29:40,540 Na hapa, mimi anaweza kusema Andi. 1783 01:29:40,540 --> 01:29:42,137 Na mimi anaweza kusema Zamyla. 1784 01:29:42,137 --> 01:29:45,220 Na tunaweza kucheza mchezo huu mchana kutwa, tu kuziba katika maadili tofauti, 1785 01:29:45,220 --> 01:29:49,550 muda mrefu kama mimi kutoa hasa maneno mawili katika haraka, 1786 01:29:49,550 --> 01:29:52,260 kiasi kwamba argc, hoja yangu kuhesabu, ni 2. 1787 01:29:52,260 --> 01:29:57,240 >> Je, Mimi naona kwamba jina imeingia kwenye printf, kwa hali hii hapa? 1788 01:29:57,240 --> 01:30:00,550 Hivyo sisi tunaonekana kuwa na sasa uwezo expressive 1789 01:30:00,550 --> 01:30:04,410 ya kuchukua pembejeo kutoka utaratibu mwingine, kutoka kinachojulikana mstari amri, 1790 01:30:04,410 --> 01:30:07,000 badala ya kuwa na kusubiri mpaka user anaendesha mpango, 1791 01:30:07,000 --> 01:30:10,220 na kisha kuchochea kwake kutumia kitu kama kupata kamba. 1792 01:30:10,220 --> 01:30:11,230 >> Hivyo ni nini hii? 1793 01:30:11,230 --> 01:30:15,010 Argc, tena, ni tu integer, idadi ya words-- arguments-- 1794 01:30:15,010 --> 01:30:18,540 kwamba mtumiaji zinazotolewa katika haraka, katika terminal dirisha, 1795 01:30:18,540 --> 01:30:20,110 ikiwa ni pamoja na jina wa programu hiyo. 1796 01:30:20,110 --> 01:30:23,340 Hivyo ./argv0 yetu ni, kwa ufanisi, jina programu hiyo, 1797 01:30:23,340 --> 01:30:24,520 au jinsi mimi kuendesha programu. 1798 01:30:24,520 --> 01:30:25,810 >> Kwamba makosa kama neno. 1799 01:30:25,810 --> 01:30:27,080 Hivyo argc itakuwa 1. 1800 01:30:27,080 --> 01:30:29,750 Lakini wakati mimi kuandika Stelios, au Andi, au Zamyla, au Maria, 1801 01:30:29,750 --> 01:30:31,660 hiyo ina maana kuhesabu hoja ni mbili. 1802 01:30:31,660 --> 01:30:33,910 Na hivyo sasa kuna maneno mawili kupita katika. 1803 01:30:33,910 --> 01:30:36,070 >> Na taarifa, tunaweza kuendelea mantiki hii. 1804 01:30:36,070 --> 01:30:39,050 Kama mimi kweli kusema kitu kama Zamyla Chan, 1805 01:30:39,050 --> 01:30:42,200 jina kamili, na hivyo kupita hoja tatu kwa jumla, 1806 01:30:42,200 --> 01:30:47,410 sasa inasema default tena, kwa sababu, bila shaka, 3 haina sawa 2. 1807 01:30:47,410 --> 01:30:54,080 >> Na hivyo kwa njia hii, kufanya nina upatikanaji kupitia argv hoja hii mpya 1808 01:30:54,080 --> 01:30:56,080 kwamba tunaweza kitaalam kuwaita chochote tunataka. 1809 01:30:56,080 --> 01:30:58,940 Lakini kwa mkataba huo, ni argv na argc, kwa mtiririko huo. 1810 01:30:58,940 --> 01:31:04,470 Argv, hoja vector, ni aina ya kisawe kwa ajili ya programu 1811 01:31:04,470 --> 01:31:07,140 kipengele katika C inaitwa safu. 1812 01:31:07,140 --> 01:31:14,410 >> safu ni orodha ya maadili sawa nyuma, na nyuma, na nyuma, kwa nyuma. 1813 01:31:14,410 --> 01:31:17,810 Kwa maneno mengine, ikiwa ni moja ya haki hapa katika RAM, moja ijayo ni haki ya karibu na hayo, 1814 01:31:17,810 --> 01:31:18,800 na haki karibu na hiyo. 1815 01:31:18,800 --> 01:31:20,101 Wao siyo kila mahali. 1816 01:31:20,101 --> 01:31:23,100 Na kwamba hali za mwisho, ambapo mambo ni kila mahali katika kumbukumbu, 1817 01:31:23,100 --> 01:31:25,082 kweli anaweza hulka ya nguvu. 1818 01:31:25,082 --> 01:31:28,040 Lakini tutaweza kuja nyuma na kwamba wakati sisi majadiliano juu ya miundo fancier data. 1819 01:31:28,040 --> 01:31:32,260 Kwa sasa, safu ni tu chunk ya kumbukumbu contiguous, 1820 01:31:32,260 --> 01:31:36,520 kila mmoja ambaye mambo ni nyuma, na nyuma, na nyuma, na nyuma, 1821 01:31:36,520 --> 01:31:38,050 na kwa ujumla aina moja. 1822 01:31:38,050 --> 01:31:42,630 >> Hivyo kama unadhani kuhusu, kutoka wakati iliyopita, ni nini kamba? 1823 01:31:42,630 --> 01:31:50,460 Naam, kamba, kama Zamyla, Z-A-M-Y-L-A, ni, kitaalam, 1824 01:31:50,460 --> 01:31:51,400 tu safu. 1825 01:31:51,400 --> 01:31:53,700 Ni safu ya wahusika. 1826 01:31:53,700 --> 01:31:59,250 >> Na hivyo kama sisi kweli kuteka hii, kama mimi alifanya mapema, kama chunk ya kumbukumbu, 1827 01:31:59,250 --> 01:32:04,510 zinageuka kuwa kila moja ya haya wahusika unachukua Byte. 1828 01:32:04,510 --> 01:32:07,630 Na kisha kuna kuwa maalum sentinel tabia, backslash 0, 1829 01:32:07,630 --> 01:32:12,360 au zote nane 0 bits, kwamba demarcates mwisho wa kamba hiyo. 1830 01:32:12,360 --> 01:32:15,090 Hivyo kamba, ni zamu nje, kunukuu unquote kamba, 1831 01:32:15,090 --> 01:32:20,580 ni safu ya chara-- Char kuwa data halisi ya aina. 1832 01:32:20,580 --> 01:32:24,560 >> Na sasa argv, meanwhile-- hebu kwenda nyuma ya mpango huo. 1833 01:32:24,560 --> 01:32:29,582 Argv, ingawa tunaona neno kamba hapa, si kamba yenyewe. 1834 01:32:29,582 --> 01:32:33,640 Argv, hoja vector, ni safu ya masharti. 1835 01:32:33,640 --> 01:32:37,620 >> Hivyo tu kama unaweza kuwa na safu ya wahusika, unaweza kuwa na kiwango cha juu, 1836 01:32:37,620 --> 01:32:46,279 safu ya strings-- hivyo, kwa mfano, wakati mimi niliandika wakati iliyopita ./argv0 1837 01:32:46,279 --> 01:33:00,150 argv0, nafasi Z-A-M-Y-L-A, I alidai kuwa argv alikuwa masharti mawili katika ./argv0 it--, 1838 01:33:00,150 --> 01:33:03,185 na Z-A-M-Y-L-A. katika maneno mengine, argc ilikuwa 2. 1839 01:33:03,185 --> 01:33:03,980 Kwanini hivyo? 1840 01:33:03,980 --> 01:33:08,370 >> Naam, kwa ufanisi, nini kinaendelea juu ya ni kwamba kila ya masharti hayo 1841 01:33:08,370 --> 01:33:13,990 Ni, bila shaka, safu ya wahusika kama kabla, kila mmoja ambaye wahusika 1842 01:33:13,990 --> 01:33:15,670 unachukua byte moja. 1843 01:33:15,670 --> 01:33:19,720 Na usiwachanganye 0 halisi kwa jina mpango wa pamoja 0, 1844 01:33:19,720 --> 01:33:22,040 ambayo ina maana bits zote 80. 1845 01:33:22,040 --> 01:33:27,140 Na Zamyla, wakati huo huo, bado ni pia safu ya wahusika. 1846 01:33:27,140 --> 01:33:31,450 >> Hivyo mwisho wa siku, ni kweli Inaonekana kama hii chini ya Hood. 1847 01:33:31,450 --> 01:33:38,800 Lakini argv, kwa asili ya jinsi kuu matendo, inaruhusu mimi wrap yote haya 1848 01:33:38,800 --> 01:33:44,810 up katika, kama wewe, safu kubwa kwamba, kama sisi zaidi kidogo ya kurahisisha 1849 01:33:44,810 --> 01:33:48,180 nini picha inaonekana kama na hawana kabisa kuteka ni kuweza kuinua pale, 1850 01:33:48,180 --> 01:33:56,720 safu hii ni tu ya kawaida 2, kwanza kipengele cha ambayo ina kamba, 1851 01:33:56,720 --> 01:33:59,230 kipengele pili ya ambayo ina kamba. 1852 01:33:59,230 --> 01:34:01,687 Na, kwa upande wake, kama wewe aina ya kuvuta juu ya kila 1853 01:34:01,687 --> 01:34:03,770 ya masharti hayo, nini angalia chini ya kofia 1854 01:34:03,770 --> 01:34:07,190 ni kwamba kila kamba ni safu ya wahusika. 1855 01:34:07,190 --> 01:34:11,680 >> Sasa, tu kama na masharti, tulikuwa na uwezo wa kupata 1856 01:34:11,680 --> 01:34:15,260 kwa tabia i-th katika kamba kutumia kwamba mraba bracket nukuu. 1857 01:34:15,260 --> 01:34:17,320 Vile vile, kwa arrays kwa ujumla, tunaweza 1858 01:34:17,320 --> 01:34:22,700 kutumia mraba bracket nukuu kupata katika idadi yoyote ya masharti katika safu? 1859 01:34:22,700 --> 01:34:25,100 Kwa mfano, napenda kwenda mbele na kufanya hili. 1860 01:34:25,100 --> 01:34:32,420 >> Hebu kwenda mbele na kujenga argv1.c, ambayo ni tofauti kidogo wakati huu. 1861 01:34:32,420 --> 01:34:35,635 Badala ya kuangalia kwa argc2, Mimi nina kwenda badala kufanya hivyo. 1862 01:34:35,635 --> 01:34:41,270 Kwa int mimi kupata 0, mimi ni chini kuliko argc, mimi pamoja na plus, 1863 01:34:41,270 --> 01:34:47,920 na kisha magazeti nje ndani ya hii, asilimia s, mstari wa mwezi, na kisha 1864 01:34:47,920 --> 01:34:50,740 argv mabano i. 1865 01:34:50,740 --> 01:34:55,220 >> Hivyo kwa maneno mengine, mimi si kushughulika na wahusika binafsi kwa sasa. 1866 01:34:55,220 --> 01:35:00,190 Argv, kama alisema kwa hawa mraba tupu inakabiliwa na na haki ya jina argv, 1867 01:35:00,190 --> 01:35:03,320 ina maana argv ni safu ya masharti. 1868 01:35:03,320 --> 01:35:04,870 Na argc ni tu int. 1869 01:35:04,870 --> 01:35:08,800 >> mstari huu hapa, 6, ni akisema kuweka i sawa na 0. 1870 01:35:08,800 --> 01:35:11,980 Hesabu njia yote hadi, lakini si pamoja, argc. 1871 01:35:11,980 --> 01:35:14,010 Na kisha juu ya kila iteration, magazeti nje kamba. 1872 01:35:14,010 --> 01:35:14,800 Nini kamba? 1873 01:35:14,800 --> 01:35:17,270 >> kamba i-th katika argv. 1874 01:35:17,270 --> 01:35:19,530 Hivyo ambapo kabla nilikuwa kutumia mabano mraba 1875 01:35:19,530 --> 01:35:22,180 nukuu kupata saa ith tabia katika kamba, sasa 1876 01:35:22,180 --> 01:35:27,240 Mimi nina kutumia mraba bracket nukuu kupata saa kamba ith katika safu. 1877 01:35:27,240 --> 01:35:30,310 Hivyo ni aina ya safu moja hapo juu, conceptually. 1878 01:35:30,310 --> 01:35:35,390 >> Na hivyo nini nadhifu kuhusu hili mpango sasa, kama mimi kukusanya argv1, 1879 01:35:35,390 --> 01:35:42,067 na kisha kufanya ./argv1, na basi aina katika kitu kama foo bar bazi, 1880 01:35:42,067 --> 01:35:45,400 ambayo ni maneno matatu default kwamba kompyuta mwanasayansi fika kwa wakati wowote 1881 01:35:45,400 --> 01:35:51,010 yeye au yeye mahitaji ya baadhi ya maneno placeholder, na hit Enter, kila moja ya maneno hayo, 1882 01:35:51,010 --> 01:35:54,980 ikiwa ni pamoja na jina wa programu hiyo, ambayo ni katika argv katika eneo la kwanza, 1883 01:35:54,980 --> 01:35:58,320 kuishia kuwa kuchapishwa moja kwa wakati. 1884 01:35:58,320 --> 01:36:05,290 Na kama mimi kubadili hali hii, na mimi kusema kitu kama argv1 Zamyla Chan, 1885 01:36:05,290 --> 01:36:08,800 sisi kupata yote matatu ya wale maneno, ambayo ni argv0, 1886 01:36:08,800 --> 01:36:14,400 argv1, argv2, kwa sababu katika hii kesi argc, kuhesabu, ni 3. 1887 01:36:14,400 --> 01:36:20,020 >> Lakini nini nadhifu ni kama wewe kuelewa kwamba argv ni safu ya masharti, 1888 01:36:20,020 --> 01:36:24,910 na wewe kuelewa kwamba kamba ni safu ya wahusika, 1889 01:36:24,910 --> 01:36:29,470 tunaweza kweli aina ya kutumia hii mraba bracket nukuu mara nyingi 1890 01:36:29,470 --> 01:36:33,320 kuchagua kamba, na kisha kuchagua tabia ndani ya kamba, 1891 01:36:33,320 --> 01:36:35,730 mbizi katika undani kama ifuatavyo. 1892 01:36:35,730 --> 01:36:40,100 Katika mfano huu, napenda kwenda mbele na wito argv2.c hii. 1893 01:36:40,100 --> 01:36:43,920 1894 01:36:43,920 --> 01:36:50,180 Na katika mfano huu, basi mimi kwenda mbele na kufanya following-- kwa int i kupata 0, 1895 01:36:50,180 --> 01:36:53,286 i ni chini ya argc, i plus plus, tu kama ilivyokuwa kabla. 1896 01:36:53,286 --> 01:36:55,910 Hivyo katika words-- nyingine na sasa hii ni kupata ngumu kutosha. 1897 01:36:55,910 --> 01:36:59,940 Kisha mimi nina kwenda kusema iterate juu ya masharti katika argv, 1898 01:36:59,940 --> 01:37:01,294 kama maoni kwa mwenyewe. 1899 01:37:01,294 --> 01:37:03,960 Na kisha mimi nina kwenda kuwa Furushi kwa kitanzi, ambayo pengine 1900 01:37:03,960 --> 01:37:06,290 wamefanya, au kuchukuliwa kufanya, katika Scratch, ambapo 1901 01:37:06,290 --> 01:37:08,600 Mimi nina kwenda kusema int mimi nina si kwenda kutumia i tena, 1902 01:37:08,600 --> 01:37:12,590 kwa sababu mimi sitaki kwa kivuli, au aina ya overwrite i zilizopo. 1903 01:37:12,590 --> 01:37:15,780 >> Mimi nina kwenda, badala yake, wanasema j, kwa sababu hiyo ni go yangu kwa kutofautiana baada i, 1904 01:37:15,780 --> 01:37:18,590 wakati mimi nina kujaribu tu kuhesabu idadi rahisi. 1905 01:37:18,590 --> 01:37:28,850 Kwa j anapata 0-- na pia, n, ni kwenda kupata urefu wakali wa argv mabano i, 1906 01:37:28,850 --> 01:37:36,030 hivyo muda mrefu kama j ni chini ya m, j plus plus, kufanya yafuatayo. 1907 01:37:36,030 --> 01:37:37,500 Na hapa ni ya kuvutia sehemu. 1908 01:37:37,500 --> 01:37:46,330 >> Magazeti nje tabia na mstari wa mwezi, plugging katika argv mabano i, bracket j. 1909 01:37:46,330 --> 01:37:47,940 OK, hivyo basi mimi kuongeza baadhi ya comments hapa. 1910 01:37:47,940 --> 01:37:54,820 Iterate juu ya wahusika katika kamba ya sasa, 1911 01:37:54,820 --> 01:38:02,290 magazeti j-th tabia katika i-th kamba. 1912 01:38:02,290 --> 01:38:04,630 Hivyo sasa, hebu fikiria nini maoni haya yana maana. 1913 01:38:04,630 --> 01:38:06,750 >> Iterate juu ya masharti katika argv-- wangapi 1914 01:38:06,750 --> 01:38:09,300 masharti ni katika argv, ambayo ni safu? 1915 01:38:09,300 --> 01:38:13,420 Argc wengi, hivyo mimi nina iterating kutoka i sawa 0 hadi argc. 1916 01:38:13,420 --> 01:38:20,020 Wakati huo huo, jinsi wahusika wengi ni katika kamba i-th katika argv? 1917 01:38:20,020 --> 01:38:22,880 >> Naam, kupata jibu kwamba, I just kuwaita urefu wa kamba 1918 01:38:22,880 --> 01:38:26,810 juu ya sasa kamba huduma mimi kuhusu, ambayo ni argv mabano i. 1919 01:38:26,810 --> 01:38:30,090 Na mimi nina kwenda kwa muda kuhifadhi kwamba thamani katika n, tu kwa madhumuni ya Caching, 1920 01:38:30,090 --> 01:38:31,590 kukumbuka ni kwa ufanisi. 1921 01:38:31,590 --> 01:38:36,330 Na kisha mimi nina kwenda initialize j 0, kuendelea kwa muda mrefu kama j ni chini ya n, 1922 01:38:36,330 --> 01:38:38,430 na juu ya kila iteration j increment. 1923 01:38:38,430 --> 01:38:41,030 >> Na kisha katika hapa, per maoni yangu kwenye mstari 12, 1924 01:38:41,030 --> 01:38:43,390 magazeti nje tabia, ikifuatiwa na mstari mpya, 1925 01:38:43,390 --> 01:38:48,140 hasa argv mabano i anitiaye i-th kamba 1926 01:38:48,140 --> 01:38:51,690 katika argv-- hivyo neno la kwanza, Neno la pili, neno la tatu, chochote. 1927 01:38:51,690 --> 01:38:57,370 Na kisha dives j kwa undani, na anapata me tabia j-th ya neno hilo. 1928 01:38:57,370 --> 01:39:02,200 Na hivyo, katika athari, unaweza kutibu argv kama multi-dimensional, 1929 01:39:02,200 --> 01:39:06,050 kama pande mbili, safu, ambapo kila aina neno la inaonekana 1930 01:39:06,050 --> 01:39:08,580 kama hii katika akili yako jicho, na kila tabia 1931 01:39:08,580 --> 01:39:10,930 ni aina ya linajumuisha katika safu, kama ambayo husaidia. 1932 01:39:10,930 --> 01:39:13,260 >> Katika hali halisi, wakati sisi tease hii mbali katika wiki baadaye, 1933 01:39:13,260 --> 01:39:15,580 itakuja kuwa ni kidogo kisasa zaidi kuliko hiyo. 1934 01:39:15,580 --> 01:39:17,800 Lakini unaweza kweli kufikiria kwamba, kwa sasa, 1935 01:39:17,800 --> 01:39:22,110 kama tu hii ya pande mbili safu, ambapo ngazi moja ya hiyo 1936 01:39:22,110 --> 01:39:23,260 ni yote ya masharti. 1937 01:39:23,260 --> 01:39:26,760 Na kisha kama wewe kupiga mbizi katika undani, wewe unaweza kupata katika wahusika binafsi 1938 01:39:26,760 --> 01:39:29,600 zilizomo ndani kwa kutumia nukuu hii hapa. 1939 01:39:29,600 --> 01:39:31,620 >> Kwa hiyo kile ni athari wavu? 1940 01:39:31,620 --> 01:39:34,970 Hebu kwenda mbele na kufanya argv2-- darn yake. 1941 01:39:34,970 --> 01:39:36,210 Mimi alifanya kosa hapa. 1942 01:39:36,210 --> 01:39:40,160 implicitly kutangaza maktaba kazi Stirling. 1943 01:39:40,160 --> 01:39:42,190 Hivyo muda wote huu, ni labda sahihi 1944 01:39:42,190 --> 01:39:45,130 kwamba sisi ni aina ya kumaliza hasa ambapo sisi kuanza. 1945 01:39:45,130 --> 01:39:48,160 >> Mimi Star up, implicitly kutangaza maktaba kazi Stirling. 1946 01:39:48,160 --> 01:39:48,987 OK, kusubiri dakika. 1947 01:39:48,987 --> 01:39:51,070 Nakumbuka kwamba, hasa tangu ni haki hapa. 1948 01:39:51,070 --> 01:39:54,490 Mimi haja ya ni pamoja na string.h katika hili toleo la mpango. 1949 01:39:54,490 --> 01:40:00,050 >> Hebu kwenda mbele na ni pamoja na string.h, ila, kwenda mbele 1950 01:40:00,050 --> 01:40:04,460 na recompile argv2. 1951 01:40:04,460 --> 01:40:08,390 Na sasa, hapa sisi kwenda, kufanya argv2, kuingia. 1952 01:40:08,390 --> 01:40:10,590 Na kama ni kidogo cryptic katika mtazamo wa kwanza, 1953 01:40:10,590 --> 01:40:15,690 taarifa kwamba, kwa kweli, ni nini ni kuchapishwa ni nukta argv2. 1954 01:40:15,690 --> 01:40:19,970 >> Lakini kama mimi aina baadhi ya maneno baada haraka, kama argv2 Zamyla Chan, 1955 01:40:19,970 --> 01:40:22,560 Kuingia, pia kidogo cryptic katika mtazamo wa kwanza. 1956 01:40:22,560 --> 01:40:30,540 Lakini kama sisi kitabu nyuma hadi, ./argv2 Z-A-M-Y-L-C-H-A-N. 1957 01:40:30,540 --> 01:40:32,190 Hivyo tumekuwa iterated juu ya kila neno. 1958 01:40:32,190 --> 01:40:37,770 Na, kwa upande wake, tumekuwa iterated juu ya kila tabia ndani ya neno. 1959 01:40:37,770 --> 01:40:40,040 >> Sasa, baada ya yote haya, kutambua kwamba kuna 1960 01:40:40,040 --> 01:40:43,120 wengine undani moja tumekuwa aina ya kupuuza wakati huu mzima. 1961 01:40:43,120 --> 01:40:46,180 Sisi tu teased mbali kile pembejeo kuu inaweza kuwa? 1962 01:40:46,180 --> 01:40:47,780 Je kuhusu pato kuu ya? 1963 01:40:47,780 --> 01:40:50,540 >> Wote wa wakati huu, tumekuwa tu kuiga na pasting 1964 01:40:50,540 --> 01:40:53,870 neno int mbele ya kuu, ingawa unaweza kuona online, 1965 01:40:53,870 --> 01:40:58,340 wakati mwingine kimakosa katika matoleo ya zamani ya C na compilers, kwa kuwa wanasema batili, 1966 01:40:58,340 --> 01:40:59,410 au chochote wakati wote. 1967 01:40:59,410 --> 01:41:01,580 Lakini, kwa kweli, kwa ajili ya toleo ya C kwamba sisi ni kutumia, 1968 01:41:01,580 --> 01:41:06,180 C 11, au 2011, kutambua kwamba ni lazima kuwa int. 1969 01:41:06,180 --> 01:41:09,300 Na ni lazima aidha kuwa utupu au argc na argv hapa. 1970 01:41:09,300 --> 01:41:10,790 >> Lakini kwa nini int kuu? 1971 01:41:10,790 --> 01:41:12,480 Je, ni kwa kweli kurudi? 1972 01:41:12,480 --> 01:41:16,280 Naam, ni zamu nje wote wa wakati huu, wakati wowote umefanya imeandikwa mpango kuu 1973 01:41:16,280 --> 01:41:18,440 daima ni kurudisha kitu. 1974 01:41:18,440 --> 01:41:19,960 Lakini imekuwa ni kufanya hivyo kwa siri. 1975 01:41:19,960 --> 01:41:23,350 >> Kwamba kitu fulani ni int, kama mstari 5 unaonyesha. 1976 01:41:23,350 --> 01:41:24,225 Lakini nini int? 1977 01:41:24,225 --> 01:41:26,100 Naam, kuna hii mkataba katika programu, 1978 01:41:26,100 --> 01:41:29,790 ambapo kama kitu ina wamekwenda vibaya na wote ni vizuri, 1979 01:41:29,790 --> 01:41:34,250 mipango na kazi kwa ujumla return-- kiasi fulani counterintuitively-- 1980 01:41:34,250 --> 01:41:35,230 0. 1981 01:41:35,230 --> 01:41:38,070 0 ujumla kunaashiria yote ni sawa. 1982 01:41:38,070 --> 01:41:40,610 Hivyo hata kama wewe kufikiria kama uongo katika hali nyingi, 1983 01:41:40,610 --> 01:41:42,930 ni kweli kwa ujumla maana yake ni jambo jema 1984 01:41:42,930 --> 01:41:49,560 >> Wakati huo huo, kama mpango anarudi 1, au hasi 1, au 5, au hasi 42, 1985 01:41:49,560 --> 01:41:52,941 au yoyote yasiyo ya 0 thamani, kuwa kwa ujumla kunaashiria 1986 01:41:52,941 --> 01:41:54,190 kwamba kitu amekwenda vibaya. 1987 01:41:54,190 --> 01:41:56,700 Kwa kweli, juu ya Mac yako mwenyewe au PC, unaweza kuwa kweli kuonekana 1988 01:41:56,700 --> 01:42:01,050 ujumbe wa makosa, ambapo ni anasema kitu au nyingine, kosa 1989 01:42:01,050 --> 01:42:04,940 kificho hasi 42, au makosa kanuni 23, au kitu kama hicho. 1990 01:42:04,940 --> 01:42:08,980 idadi hiyo ni kwa ujumla tu ladha kwa programu, au kampuni 1991 01:42:08,980 --> 01:42:11,174 kwamba alifanya programu, nini potoka na kwa nini, 1992 01:42:11,174 --> 01:42:13,590 ili waweze kuangalia njia nyaraka zao au kanuni, 1993 01:42:13,590 --> 01:42:15,465 na kufikiri nini makosa kwa kweli ina maana. 1994 01:42:15,465 --> 01:42:18,400 Ni kwa ujumla si muhimu kwetu watumiaji wa mwisho. 1995 01:42:18,400 --> 01:42:20,550 >> Lakini wakati anarudi kuu 0, yote ni sawa. 1996 01:42:20,550 --> 01:42:23,770 Na kama huna bayana nini kuu lazima kurudi, 1997 01:42:23,770 --> 01:42:26,950 itakuwa tu moja kwa moja kurudi 0 kwa ajili yenu. 1998 01:42:26,950 --> 01:42:30,870 Lakini kurudisha kitu kingine ni kweli muhimu. 1999 01:42:30,870 --> 01:42:34,660 >> Katika mpango huu wa mwisho, napenda kwenda mbele na kuwaita exit.c hii, 2000 01:42:34,660 --> 01:42:38,630 na kuanzisha mwisho wa leo mada, hujulikana kama kodi makosa. 2001 01:42:38,630 --> 01:42:42,930 Hebu kwenda mbele na ni pamoja na yetu files ukoo juu juu, kufanya int kuu. 2002 01:42:42,930 --> 01:42:49,500 Na wakati huu, hebu kufanya int argc, kamba argv, na kwa mabano yangu 2003 01:42:49,500 --> 01:42:50,836 kuashiria kwamba ni katika safu. 2004 01:42:50,836 --> 01:42:52,460 Na kisha napenda tu kufanya sanity hundi. 2005 01:42:52,460 --> 01:42:56,640 Wakati huu, ikiwa argc haina sawa 2, basi unajua nini? 2006 01:42:56,640 --> 01:42:57,520 Sahau. 2007 01:42:57,520 --> 01:43:03,170 Mimi naenda kusema kwamba, hey, user, wewe ni kukosa amri line hoja 2008 01:43:03,170 --> 01:43:04,210 backslash n. 2009 01:43:04,210 --> 01:43:05,230 >> Na kisha hiyo ni yake. 2010 01:43:05,230 --> 01:43:06,130 Nataka exit. 2011 01:43:06,130 --> 01:43:11,030 Mimi naenda preemptively, na mapema kweli, kurudi 2012 01:43:11,030 --> 01:43:12,810 kitu kingine zaidi ya namba 1. 2013 01:43:12,810 --> 01:43:15,360 go kwa thamani kwa kwanza makosa ambayo yanaweza kutokea ni 1. 2014 01:43:15,360 --> 01:43:17,860 Kama una baadhi ya mengine potofu Hali ambayo inaweza kutokea, 2015 01:43:17,860 --> 01:43:21,390 unaweza kusema kurudi 2 au kurudi 3, au labda hata hasi 1 au hasi 2. 2016 01:43:21,390 --> 01:43:23,750 >> Hizi ni codes exit tu kwamba ni, kwa ujumla, 2017 01:43:23,750 --> 01:43:27,770 muhimu tu kwa programu, au kampuni hiyo kusafirisha programu. 2018 01:43:27,770 --> 01:43:30,500 Lakini ukweli kwamba ni si 0 ni nini muhimu. 2019 01:43:30,500 --> 01:43:34,310 Hivyo kama katika mpango huu, nataka kuhakikisha kwamba mpango huu tu 2020 01:43:34,310 --> 01:43:38,190 kazi kama mtumiaji hutoa me na kuhesabu hoja ya wawili, 2021 01:43:38,190 --> 01:43:42,880 jina la mpango, na baadhi nyingine neno, siwezi kutekeleza kama vile ifuatavyo, 2022 01:43:42,880 --> 01:43:46,110 kelele katika user kwa printf akisema, kukosa amri line hoja, 2023 01:43:46,110 --> 01:43:46,970 kurudi 1. 2024 01:43:46,970 --> 01:43:49,940 Hiyo mapenzi tu mara moja kuacha mpango. 2025 01:43:49,940 --> 01:43:55,840 >> Tu kama argc sawa na 2 itakuwa sisi kupata chini hapa, ambapo kiwango mimi nina kwenda kusema, 2026 01:43:55,840 --> 01:44:00,410 hodi asilimia s, backslash n, argv1. 2027 01:44:00,410 --> 01:44:03,827 Kwa maneno mengine, mimi nina si kwenda baada ya argv 0, 2028 01:44:03,827 --> 01:44:05,410 ambayo ni tu jina la mpango. 2029 01:44:05,410 --> 01:44:09,450 Nataka magazeti nje hello, comma, Neno la pili kwamba binadamu typed. 2030 01:44:09,450 --> 01:44:12,580 Na katika kesi hii juu ya line 13, wote ni vizuri. 2031 01:44:12,580 --> 01:44:15,920 >> Najua kwamba argc ni 2 kifikra na mpango huo. 2032 01:44:15,920 --> 01:44:17,770 Mimi nina kwenda mbele na kurudi 0. 2033 01:44:17,770 --> 01:44:21,230 Kama kando, kukumbuka kwamba hii ni kweli katika Scratch kama vile. 2034 01:44:21,230 --> 01:44:24,760 >> Kimantiki, mimi naweza kufanya hili na kurejelea mistari haya 2035 01:44:24,760 --> 01:44:27,020 wa kanuni katika hii kifungu kingine hapa. 2036 01:44:27,020 --> 01:44:29,420 Lakini hiyo ni aina ya usiokuwa na indenting kanuni yangu. 2037 01:44:29,420 --> 01:44:31,800 Na nataka kufanya super wazi kwamba hakuna jambo gani, 2038 01:44:31,800 --> 01:44:34,670 by default, hello kitu itakuwa kupata kuchapishwa, 2039 01:44:34,670 --> 01:44:36,050 hivyo muda mrefu kama user inashirikiana. 2040 01:44:36,050 --> 01:44:39,360 >> Hivyo ni kawaida sana kutumia hali, tu kama, 2041 01:44:39,360 --> 01:44:41,870 kukamata baadhi potofu hali, na kisha exit. 2042 01:44:41,870 --> 01:44:45,690 Na kisha, kwa muda mrefu yote ni vizuri, si kuwa na kingine chochote, 2043 01:44:45,690 --> 01:44:48,060 lakini tu na kificho nje kwamba kama, kwa sababu ni 2044 01:44:48,060 --> 01:44:51,060 sawa katika hili kesi fulani, mantiki. 2045 01:44:51,060 --> 01:44:54,480 Hivyo mimi nina kurudi 0, tu waziwazi yanamaanisha yote ni sawa. 2046 01:44:54,480 --> 01:44:58,480 >> Kama mimi rukwa kurudi 0, ingekuwa kuwa moja kwa moja kudhani kwa ajili yangu. 2047 01:44:58,480 --> 01:45:00,890 Lakini sasa mimi nina kurudi moja katika angalau kesi hiyo, 2048 01:45:00,890 --> 01:45:04,940 Mimi nina kwenda, kwa hatua nzuri na uwazi, kurudi 0 katika kesi hii. 2049 01:45:04,940 --> 01:45:09,690 Hivyo sasa napenda kwenda mbele na kufanya exit, ambayo ni segue kamili kuondoka tu. 2050 01:45:09,690 --> 01:45:14,401 >> Lakini kufanya exit, na napenda kwenda mbele na kufanya ./exit, kuingia. 2051 01:45:14,401 --> 01:45:16,900 Na mpango yelled saa yangu, kukosa amri line hoja. 2052 01:45:16,900 --> 01:45:18,120 OK, napenda kushirikiana. 2053 01:45:18,120 --> 01:45:23,810 >> Basi mimi badala kufanya ./exit, David, kuingia. 2054 01:45:23,810 --> 01:45:25,190 Na sasa inasema, hujambo Daudi. 2055 01:45:25,190 --> 01:45:27,300 Na wewe si kawaida kuona hili. 2056 01:45:27,300 --> 01:45:30,650 >> Lakini zinageuka kuwa kuna namna ya pekee katika Linux kwa kweli kuona 2057 01:45:30,650 --> 01:45:34,470 na kile exit kificho mpango exited. 2058 01:45:34,470 --> 01:45:37,184 Wakati mwingine katika graphical dunia kama Mac OS au Windows, 2059 01:45:37,184 --> 01:45:40,100 wewe tu kuona namba hizi wakati ujumbe wa makosa pops up kwenye screen 2060 01:45:40,100 --> 01:45:41,940 na programu inaonyesha idadi hiyo. 2061 01:45:41,940 --> 01:45:44,773 Lakini kama tunataka kuona nini makosa ujumbe ni, tunaweza kufanya hivyo here-- 2062 01:45:44,773 --> 01:45:48,100 hivyo ./exit, Ingieni, magazeti kukosa amri line hoja. 2063 01:45:48,100 --> 01:45:54,590 >> Kama mimi sasa kufanya echo $ ?, ambayo ni ridiculously cryptic kuangalia. 2064 01:45:54,590 --> 01:45:56,590 Lakini $? 2065 01:45:56,590 --> 01:45:59,220 ni dua kichawi kwamba anasema, hey, kompyuta, 2066 01:45:59,220 --> 01:46:01,900 kuniambia nini uliopita mpango wa exit kificho ilikuwa. 2067 01:46:01,900 --> 01:46:03,410 Na mimi hit Enter. 2068 01:46:03,410 --> 01:46:07,520 Mimi naona 1, kwa sababu kwamba ni nini mimi aliiambia kazi yangu kuu kurudi. 2069 01:46:07,520 --> 01:46:12,310 >> Wakati huo huo, kama mimi kufanya ./exit David, na hit Enter, naona, hujambo Daudi. 2070 01:46:12,310 --> 01:46:16,800 Na kama mimi sasa kufanya $ echo ?, Mimi naona hodi 0. 2071 01:46:16,800 --> 01:46:19,080 Na hivyo hii mapenzi kweli kuwa taarifa muhimu 2072 01:46:19,080 --> 01:46:23,420 katika mazingira ya HatiJava, si hivyo kiasi kwamba, binadamu, ingekuwa huduma. 2073 01:46:23,420 --> 01:46:26,060 Lakini HatiJava na wengine mipango tutaweza kutumia muhula huu 2074 01:46:26,060 --> 01:46:29,420 mara nyingi kuangalia idadi hiyo, hata kama ni aina ya siri mbali 2075 01:46:29,420 --> 01:46:32,780 isipokuwa wewe kuangalia kwa ajili yake, kwa kuamua iwapo au mpango wa 2076 01:46:32,780 --> 01:46:37,050 utekelezaji ilikuwa sahihi au sio sahihi. 2077 01:46:37,050 --> 01:46:40,450 >> Na hivyo kwamba inatuleta huu, mwishoni mwa siku. 2078 01:46:40,450 --> 01:46:43,917 Sisi kuanza leo kwa kuangalia debugging, na kwa upande katika kozi 2079 01:46:43,917 --> 01:46:46,750 yenyewe, na kisha zaidi ya kuvutia, kitaalam chini ya kofia 2080 01:46:46,750 --> 01:46:49,490 nini masharti ni, ambayo mwisho wiki sisi tu alichukua kwa nafasi, 2081 01:46:49,490 --> 01:46:51,900 na kwa hakika alichukua yao kwa nafasi katika Scratch. 2082 01:46:51,900 --> 01:46:56,040 >> Sisi basi inaonekana katika jinsi tunaweza kupata wahusika binafsi katika kamba, 2083 01:46:56,040 --> 01:47:00,310 na kisha tena alichukua kiwango cha juu kuangalia mambo, kuangalia jinsi well-- 2084 01:47:00,310 --> 01:47:04,226 kama tunataka kupata saa ya mtu binafsi vipengele katika orodha kama muundo, 2085 01:47:04,226 --> 01:47:05,850 hatuwezi kufanya hivyo kwa masharti mbalimbali? 2086 01:47:05,850 --> 01:47:08,050 Na tunaweza na hoja mstari amri. 2087 01:47:08,050 --> 01:47:12,800 Lakini picha hii hapa ya masanduku tu ni demonstrative ya wazo hili kwa ujumla 2088 01:47:12,800 --> 01:47:14,451 wa safu, au orodha, au vector. 2089 01:47:14,451 --> 01:47:16,450 Na kulingana na mazingira, maneno yote haya 2090 01:47:16,450 --> 01:47:17,880 kumaanisha mambo tofauti kidogo. 2091 01:47:17,880 --> 01:47:20,060 Hivyo katika C, sisi ni kwenda tu kuzungumzia safu. 2092 01:47:20,060 --> 01:47:23,840 Na safu ni chunk ya kumbukumbu, kila mmoja ambaye ni 2093 01:47:23,840 --> 01:47:27,720 mambo ni contiguous, nyuma, kwa nyuma, kwa nyuma, kwa nyuma. 2094 01:47:27,720 --> 01:47:31,970 >> Na mambo hayo ni, kwa ujumla, ya aina moja data, tabia, 2095 01:47:31,970 --> 01:47:35,966 tabia, tabia, tabia, au kamba, kamba, kamba, uzi, au int, 2096 01:47:35,966 --> 01:47:38,600 int, int, chochote ni sisi ni kujaribu kuhifadhi. 2097 01:47:38,600 --> 01:47:42,540 Lakini mwisho wa siku, hii ni nini inaonekana kama conceptually. 2098 01:47:42,540 --> 01:47:44,530 Wewe ni kuchukua yako kumbukumbu ya kompyuta au RAM. 2099 01:47:44,530 --> 01:47:48,590 Na wewe ni kuchora nje katika masanduku identically ukubwa, ambayo yote 2100 01:47:48,590 --> 01:47:50,920 ni nyuma, kwa nyuma, kwa nyuma, kuunga kwa njia hii. 2101 01:47:50,920 --> 01:47:53,200 >> Na nini ni nzuri kuhusu wazo hili, na ukweli 2102 01:47:53,200 --> 01:47:58,580 tuweze kueleza maadili kwa njia hii na ya kwanza ya miundo yetu data 2103 01:47:58,580 --> 01:48:02,520 darasani, ina maana tunaweza kuanza kutatua matatizo na kanuni 2104 01:48:02,520 --> 01:48:04,079 waliokuja hivyo intuitively katika wiki 0. 2105 01:48:04,079 --> 01:48:05,870 Itabidi kukumbuka simu kitabu mfano, ambapo 2106 01:48:05,870 --> 01:48:09,110 tulikuwa kugawanya na kushinda, au binary search algorithm, 2107 01:48:09,110 --> 01:48:13,220 kuchuja nzima rundo la majina na namba. 2108 01:48:13,220 --> 01:48:18,220 Lakini sisi kudhani, kukumbuka, kwamba kitabu cha simu ilikuwa tayari yamepangwa, 2109 01:48:18,220 --> 01:48:21,630 kwamba mtu mwingine alikuwa tayari figured out-- kupewa orodha ya majina 2110 01:48:21,630 --> 01:48:24,430 na numbers-- jinsi ya alphabetize yao. 2111 01:48:24,430 --> 01:48:26,950 Na sasa kwamba katika C sisi, pia, kuwa na uwezo 2112 01:48:26,950 --> 01:48:30,290 kwa kuweka mambo ya nje, si kimwili katika kitabu cha simu 2113 01:48:30,290 --> 01:48:34,220 lakini karibu katika kompyuta kumbukumbu, sisi kuwa na uwezo wiki ijayo 2114 01:48:34,220 --> 01:48:38,470 kuanzisha tena Haya kwanza wa miundo yetu data katika array-- 2115 01:48:38,470 --> 01:48:43,530 lakini muhimu zaidi, halisi ya kompyuta sayansi algorithms kutekelezwa 2116 01:48:43,530 --> 01:48:47,720 katika kanuni, na ambayo tunaweza kuhifadhi data katika miundo kama hii, 2117 01:48:47,720 --> 01:48:50,730 na kisha kuanza kuendesha, na kwa kweli kutatua matatizo na hayo, 2118 01:48:50,730 --> 01:48:53,570 na kujenga juu ya kwamba, hatimaye, mipango katika C, 2119 01:48:53,570 --> 01:48:56,730 katika Python, katika JavaScript, querying database na SQL? 2120 01:48:56,730 --> 01:48:59,980 >> Na tutaweza kuona kwamba yote haya mawazo tofauti interlock. 2121 01:48:59,980 --> 01:49:04,100 Lakini kwa sasa, kukumbuka kuwa uwanja kwamba sisi ilianzisha leo 2122 01:49:04,100 --> 01:49:06,920 Ilikuwa jambo hili hapa, na ulimwengu wa cryptography. 2123 01:49:06,920 --> 01:49:11,200 Na miongoni mwa matatizo ujao wewe mwenyewe kutatua ni sanaa ya cryptography, 2124 01:49:11,200 --> 01:49:13,630 scrambling na de-scrambling habari, na ciphering 2125 01:49:13,630 --> 01:49:15,930 na deciphering maandishi, na kuchukua hatimaye 2126 01:49:15,930 --> 01:49:18,970 kwamba sasa kujua nini ni chini ya kofia 2127 01:49:18,970 --> 01:49:21,860 hivyo kwamba wakati unaweza kuona au kupokea ujumbe kama hii, wewe 2128 01:49:21,860 --> 01:49:24,060 wewe mwenyewe unaweza decipher yake. 2129 01:49:24,060 --> 01:49:26,740 hii yote, na muda zaidi ijayo. 2130 01:49:26,740 --> 01:49:29,890 2131 01:49:29,890 --> 01:49:30,790 >> [VIDEO avspelning] 2132 01:49:30,790 --> 01:49:32,970 >> -Mover Amefika. 2133 01:49:32,970 --> 01:49:35,146 Mimi nina kwenda ziara wake profesa wa chuo. 2134 01:49:35,146 --> 01:49:37,611 Yep. 2135 01:49:37,611 --> 01:49:40,080 Hi. 2136 01:49:40,080 --> 01:49:40,660 Ni wewe. 2137 01:49:40,660 --> 01:49:44,125 2138 01:49:44,125 --> 01:49:45,110 Ngoja! 2139 01:49:45,110 --> 01:49:45,610 David. 2140 01:49:45,610 --> 01:49:53,936 2141 01:49:53,936 --> 01:49:56,060 Mimi tu kujaribu kufikiri nini kilichotokea na wewe. 2142 01:49:56,060 --> 01:49:58,130 Tafadhali, kitu chochote inaweza kusaidia. 2143 01:49:58,130 --> 01:50:05,020 2144 01:50:05,020 --> 01:50:08,354 Ungekuwa chuo wake roommate, walikuwa si wewe? 2145 01:50:08,354 --> 01:50:10,770 Ungekuwa huko pamoja naye wakati yeye kumaliza mradi CS50? 2146 01:50:10,770 --> 01:50:13,770 2147 01:50:13,770 --> 01:50:15,765 >> [Music kucheza] 2148 01:50:15,765 --> 01:50:32,110 2149 01:50:32,110 --> 01:50:33,150 >> -Kwamba Ilikuwa CS50. 2150 01:50:33,150 --> 01:50:42,690 2151 01:50:42,690 --> 01:50:44,770 >> Mimi upendo mahali hapa. 2152 01:50:44,770 --> 01:50:45,854 >> -Eat Up. 2153 01:50:45,854 --> 01:50:47,020 Tunakwenda nje ya biashara. 2154 01:50:47,020 --> 01:50:52,120 2155 01:50:52,120 --> 01:50:53,970 >> [MWISHO avspelning]