1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Sehemu ya 4] [Less Starehe] 2 00:00:02,000 --> 00:00:04,000 [Nate Hardison] [Chuo Kikuu cha Harvard] 3 00:00:04,000 --> 00:00:07,000 [Hii ni CS50.] [CS50.TV] 4 00:00:07,000 --> 00:00:10,000 >> Haki zote, kuwakaribisha nyuma kwa sehemu. 5 00:00:10,000 --> 00:00:13,000 Katika sehemu ya wiki hii sisi ni kwenda kufanya mambo kadhaa. 6 00:00:13,000 --> 00:00:17,000 Sisi ni kwenda kwanza Set recap Tatizo 2, 7 00:00:17,000 --> 00:00:20,000 ambayo ni tatizo Kaisari na Vigenère kuweka. 8 00:00:20,000 --> 00:00:23,000 Na kisha sisi ni kwenda kupiga mbizi katika Quiz mapitio 0 9 00:00:23,000 --> 00:00:26,000 na kutumia muda kidogo recapping kile ambacho tumekuwa aliyesema kuhusu 10 00:00:26,000 --> 00:00:30,000 katika kila moja ya mihadhara hivyo mbali, na pia tutaweza kufanya matatizo machache 11 00:00:30,000 --> 00:00:32,000 kutoka Quizzes wa mwaka uliopita. 12 00:00:32,000 --> 00:00:36,000 Kwa njia hiyo guys kuwa njia nzuri ya kujiandaa kwa ajili hiyo. 13 00:00:36,000 --> 00:00:40,000 >> Kuanza, nimekuwa booted juu ya wanandoa wa ufumbuzi mzuri 14 00:00:40,000 --> 00:00:45,000 kwa ajili ya kuweka uliopita tatizo, Tatizo Kuweka 2, katika nafasi hii. 15 00:00:45,000 --> 00:00:48,000 Kama wewe guys wote hit link hii, 16 00:00:48,000 --> 00:00:53,000 na kama wewe bonyeza jina langu na bonyeza marekebisho yangu ya kwanza 17 00:00:53,000 --> 00:00:56,000 utaona caesar.c, ambayo ni hasa kile Mimi nina kuangalia. 18 00:00:56,000 --> 00:01:00,000 Hebu majadiliano kuhusu kweli hii haraka. 19 00:01:00,000 --> 00:01:02,000 Hii ni ufumbuzi sampuli. 20 00:01:02,000 --> 00:01:05,000 Hii ni lazima si suluhisho kamili. 21 00:01:05,000 --> 00:01:08,000 Kuna njia nyingi tofauti ya kuandika hii, 22 00:01:08,000 --> 00:01:10,000 lakini kuna mambo machache ambayo mimi alitaka kuonyesha 23 00:01:10,000 --> 00:01:13,000 kwamba nikaona kama nilikuwa grading, kawaida makosa ambayo nadhani 24 00:01:13,000 --> 00:01:18,000 ufumbuzi hii haina kazi nzuri sana ya kuchukua. 25 00:01:18,000 --> 00:01:22,000 >> kwanza ni kuwa na aina fulani ya maoni header kwa juu. 26 00:01:22,000 --> 00:01:25,000 Juu ya mistari 1 hadi 7, unaweza kuona maelezo, 27 00:01:25,000 --> 00:01:28,000 nini hasa mpango huu ni kufanya. 28 00:01:28,000 --> 00:01:32,000 nzuri kiwango mazoezi wakati wewe kuandika code C 29 00:01:32,000 --> 00:01:35,000 bila kujali kama mpango wako ni zilizomo ndani ya faili moja au 30 00:01:35,000 --> 00:01:38,000 kama ni mgawanyiko juu ya files nyingi ni kuwa na aina fulani ya 31 00:01:38,000 --> 00:01:40,000 orienting maoni kwa juu. 32 00:01:40,000 --> 00:01:43,000 Hii pia ni kwa ajili ya watu kwenda nje na kuandika code katika ulimwengu wa kweli. 33 00:01:43,000 --> 00:01:47,000 Hii ni pale ambapo itabidi kuweka hati miliki ya habari. 34 00:01:47,000 --> 00:01:50,000 Chini ni pamoja na #. 35 00:01:50,000 --> 00:01:55,000 On line 16 kuna hii # define, ambayo tutaweza kurudi katika kidogo tu. 36 00:01:55,000 --> 00:01:59,000 Na kisha mara moja kazi kuanza, kuanza mara moja kuu, 37 00:01:59,000 --> 00:02:03,000 kwa sababu mpango huu imekuwa zote zilizomo katika kazi moja 38 00:02:03,000 --> 00:02:09,000 kitu ya kwanza kabisa kwamba kinachotokea-na hii ni nahau au msemo wenye sana na mfano wa mpango C 39 00:02:09,000 --> 00:02:14,000 kwamba inachukua katika mstari amri hoja-ni kwamba mara hundi 40 00:02:14,000 --> 00:02:18,000 >> kwa kuhesabu hoja, argc. 41 00:02:18,000 --> 00:02:24,000 Haki hapa tunaona kwamba mpango huu ni kutarajia hoja 2 hasa. 42 00:02:24,000 --> 00:02:27,000 Kumbuka kwamba kuna hoja ya kwanza kwamba moja maalum 43 00:02:27,000 --> 00:02:29,000 kwamba daima jina la mpango hiyo kuwa kukimbia, 44 00:02:29,000 --> 00:02:31,000 jina la faili la kutekelezwa. 45 00:02:31,000 --> 00:02:36,000 Na hivyo kile hii haina ni linazuia mtumiaji kutoka mbio mpango 46 00:02:36,000 --> 00:02:42,000 kwa hoja zaidi au wachache. 47 00:02:42,000 --> 00:02:44,000 sababu tunataka kuangalia kwa haki hii kwa sababu ni mbali 48 00:02:44,000 --> 00:02:52,000 hatuwezi kupata hii safu argv haki hapa reliably 49 00:02:52,000 --> 00:02:55,000 mpaka tumekuwa checked kuona jinsi kubwa ni. 50 00:02:55,000 --> 00:02:58,000 >> Moja ya makosa ya kawaida niliyemwona alikuwa watu itakuwa mara kwenda katika 51 00:02:58,000 --> 00:03:01,000 na kunyakua argv [1]. 52 00:03:01,000 --> 00:03:06,000 Wao d kunyakua hoja muhimu nje ya safu na kufanya kwa i kuangalia juu yake, 53 00:03:06,000 --> 00:03:11,000 na kisha wao d kufanya mtihani kwa argc kama vile mtihani ujao, 54 00:03:11,000 --> 00:03:16,000 kama au hoja ya kwanza ilikuwa kweli integer wakati huo huo, 55 00:03:16,000 --> 00:03:20,000 na kwamba haifanyi kazi kwa sababu katika kesi kwamba hakuna hoja zinazotolewa 56 00:03:20,000 --> 00:03:26,000 wewe utakuwa grabbing hoja kuwa si huko au kujaribu kunyakua moja kwamba si huko. 57 00:03:26,000 --> 00:03:29,000 >> nyingine jambo kubwa kwamba wewe lazima taarifa ni kwamba 58 00:03:29,000 --> 00:03:32,000 wewe siku zote wanataka magazeti nje baadhi ya aina ya ujumbe kusaidia kosa 59 00:03:32,000 --> 00:03:34,000 kwa mtumiaji kuelekeza yao. 60 00:03:34,000 --> 00:03:37,000 Mimi nina uhakika wameweza mipango yote ya kukimbia ambapo ghafla ni shambulio, 61 00:03:37,000 --> 00:03:41,000 na wewe kupata hii ridiculous kidogo dialog kwamba pops up na anasema 62 00:03:41,000 --> 00:03:44,000 kitu horribly cryptic na labda inakupa code kosa au kitu kama hicho 63 00:03:44,000 --> 00:03:47,000 kwamba haina mantiki. 64 00:03:47,000 --> 00:03:50,000 Hii ni pale ambapo kweli unataka kutoa kitu manufaa 65 00:03:50,000 --> 00:03:54,000 na walengwa kwa mtumiaji ili wakati wao kukimbia wao kwenda "Oh," uso mitende. 66 00:03:54,000 --> 00:03:58,000 "Mimi kujua hasa nini cha kufanya mimi. Kujua jinsi ya kurekebisha hii." 67 00:03:58,000 --> 00:04:01,000 >> Kama huna magazeti ujumbe, kisha kuishia kweli 68 00:04:01,000 --> 00:04:04,000 kuondoka mtumiaji kwenda kuchunguza chanzo yako code 69 00:04:04,000 --> 00:04:07,000 kufikiri nini potoka. 70 00:04:07,000 --> 00:04:11,000 Pia kuna baadhi ya nyakati utakayoitumia codes makosa mbalimbali. 71 00:04:11,000 --> 00:04:14,000 Hapa sisi tu kutumika moja kwa kusema kulikuwa na kosa, 72 00:04:14,000 --> 00:04:16,000 kulikuwa na hitilafu, kulikuwa na hitilafu. 73 00:04:16,000 --> 00:04:20,000 Bigger mipango, mara nyingi mipango ambayo huitwa na programu nyingine, 74 00:04:20,000 --> 00:04:25,000 atarudi na aina fulani ya namba maalum makosa katika matukio tofauti 75 00:04:25,000 --> 00:04:28,000 kwa programmatically kuwasiliana nini vinginevyo 76 00:04:28,000 --> 00:04:32,000 tu kutumia nzuri Kiingereza ujumbe kwa. 77 00:04:32,000 --> 00:04:35,000 Cool. 78 00:04:35,000 --> 00:04:37,000 Kama sisi kazi chini, unaweza kuona sisi kujiondoa muhimu. 79 00:04:37,000 --> 00:04:40,000 Sisi mtihani kuona kama ufunguo inafaa. 80 00:04:40,000 --> 00:04:42,000 Sisi kupata ujumbe kutoka kwa mtumiaji. 81 00:04:42,000 --> 00:04:46,000 sababu kufanya hivyo katika hii kufanya wakati kitanzi-na hili ni jambo ambalo sisi itafikia 82 00:04:46,000 --> 00:04:50,000 katika kidogo kidogo-lakini zinageuka kuwa kama aina kudhibiti D 83 00:04:50,000 --> 00:04:54,000 wakati kupata GetString kwamba haraka juu ya terminal 84 00:04:54,000 --> 00:04:59,000 kile kwamba kweli hana ni inapeleka tabia maalum 85 00:04:59,000 --> 00:05:01,000 kwa mpango. 86 00:05:01,000 --> 00:05:05,000 Ni wito ELF au mwisho wa tabia ya faili. 87 00:05:05,000 --> 00:05:08,000 Na katika kesi hiyo, ujumbe wetu string itakuwa null, 88 00:05:08,000 --> 00:05:14,000 hivyo hii ilikuwa si kitu sisi checked kwa tatizo katika kuweka yenyewe. 89 00:05:14,000 --> 00:05:17,000 >> Lakini kama sisi kwenda juu, sasa kwamba tumekuwa walianza kuzungumzia kuyatumia 90 00:05:17,000 --> 00:05:21,000 na nguvu juu ya kumbukumbu mgao wa chungu, 91 00:05:21,000 --> 00:05:25,000 kuangalia kwa null wakati wowote una kazi ambayo inaweza 92 00:05:25,000 --> 00:05:30,000 kurudi null kama thamani ni kitu ambacho utasikia wanataka kupata katika tabia ya kufanya. 93 00:05:30,000 --> 00:05:33,000 Hii ni hapa hasa kwa ajili ya vielelezo. 94 00:05:33,000 --> 00:05:36,000 Lakini wakati wa kufanya kuona GetString katika siku zijazo, 95 00:05:36,000 --> 00:05:41,000 hivyo kutokana na tatizo Set 4 juu, utasikia wanataka kuweka hii katika akili. 96 00:05:41,000 --> 00:05:44,000 Tena, hii si suala kwa Matatizo Kuweka 3 aidha tangu tulikuwa na si mifuniko ni bado. 97 00:05:44,000 --> 00:05:53,000 Hatimaye, sisi kupata sehemu hii ambapo sisi kupata kitanzi kuu fiche, 98 00:05:53,000 --> 00:05:57,000 na kuna michache ya mambo kinachoendelea hapa. 99 00:05:57,000 --> 00:06:02,000 Kwanza, sisi iterate zaidi string nzima ujumbe yenyewe. 100 00:06:02,000 --> 00:06:07,000 Hapa tumekuwa naendelea wito strlen katika hali, 101 00:06:07,000 --> 00:06:12,000 ambapo idadi ya wewe alisema si njia kuu ya kwenda. 102 00:06:12,000 --> 00:06:15,000 Ni zinageuka katika kesi hii ni pia si kubwa, 103 00:06:15,000 --> 00:06:20,000 sehemu kwa sababu sisi ni kubadilisha yaliyomo ya ujumbe yenyewe 104 00:06:20,000 --> 00:06:27,000 ndani kwa kitanzi, hivyo kama tuna ujumbe kwamba 10 wahusika muda mrefu, 105 00:06:27,000 --> 00:06:32,000 mara ya kwanza sisi kuanza kwamba kwa kitanzi strlen atarudi nini? 106 00:06:32,000 --> 00:06:35,000 10. 107 00:06:35,000 --> 00:06:40,000 >> Lakini kama sisi kisha kurekebisha ujumbe, kusema sisi kurekebisha tabia yake ya 5, 108 00:06:40,000 --> 00:06:46,000 na sisi kutupa katika tabia \ 0 katika nafasi 5, 109 00:06:46,000 --> 00:06:49,000 juu ya iteration baadae strlen (ujumbe) hatarejea zifanya 110 00:06:49,000 --> 00:06:52,000 mara ya kwanza sisi iterated, 111 00:06:52,000 --> 00:06:56,000 lakini itakuwa badala kurudi 5 kwa sababu sisi akatupa katika kwamba Terminator null, 112 00:06:56,000 --> 00:06:59,000 na urefu wa kamba ya hufafanuliwa 113 00:06:59,000 --> 00:07:03,000 na nafasi ya kuwa \ 0. 114 00:07:03,000 --> 00:07:09,000 Katika kesi hiyo, hii ni njia kuu ya kwenda kwa sababu sisi ni kubadilisha katika mahali. 115 00:07:09,000 --> 00:07:13,000 Lakini utaona kwamba hii ni kweli kushangaza rahisi encrypt 116 00:07:13,000 --> 00:07:16,000 kama unaweza kupata math sahihi. 117 00:07:16,000 --> 00:07:19,000 Vitu tu vinavyohitajika ni kuangalia kama au barua kwamba wewe kuangalia 118 00:07:19,000 --> 00:07:21,000 ni uppercase au lowercase. 119 00:07:21,000 --> 00:07:24,000 >> sababu sisi tu na kuangalia kwa kuwa na hatuna kuangalia kwa 120 00:07:24,000 --> 00:07:27,000 ni alpha kesi ni kwa sababu 121 00:07:27,000 --> 00:07:30,000 kama tabia ni uppercase au kama ni lowercase 122 00:07:30,000 --> 00:07:33,000 basi ni dhahiri tabia za kialfabeti, 123 00:07:33,000 --> 00:07:38,000 kwa sababu hatuna tarakimu kubwa na ndogo. 124 00:07:38,000 --> 00:07:41,000 Kitu nyingine sisi kufanya-na hii ni gumu kidogo- 125 00:07:41,000 --> 00:07:45,000 ni tumekuwa iliyopita kiwango Kaisari cipher formula 126 00:07:45,000 --> 00:07:49,000 kwamba sisi alitoa katika vipimo kuweka tatizo. 127 00:07:49,000 --> 00:07:52,000 Nini tofauti hapa ni kwamba sisi subtracted 128 00:07:52,000 --> 00:07:58,000 katika mji mkuu uppercase kesi, na kisha sisi aliongeza mtaji 129 00:07:58,000 --> 00:08:02,000 nyuma katika mwishoni. 130 00:08:02,000 --> 00:08:05,000 >> Mimi najua wachache una hii kufanyika katika code yako. 131 00:08:05,000 --> 00:08:09,000 Je yoyote ya kufanya hivyo katika maoni yako? 132 00:08:09,000 --> 00:08:13,000 Ulifanya hii. Je, unaweza kueleza nini hii haina, Sahb? 133 00:08:13,000 --> 00:08:18,000 Kwa kutoa nje, kwa sababu wewe ulifanya Mod haki baada ya hayo, 134 00:08:18,000 --> 00:08:21,000 una kuchukua nje, na hivyo njia ya kupata [kukohoa] msimamo. 135 00:08:21,000 --> 00:08:25,000 Na kisha kwa kuongeza kuwa nyuma baadaye kubadilishwa zaidi ya moja kwamba alitaka. 136 00:08:25,000 --> 00:08:27,000 Yeah, kwa uhakika. 137 00:08:27,000 --> 00:08:32,000 Nini Sahb alisema ilikuwa kwamba wakati tunataka kuongeza 138 00:08:32,000 --> 00:08:36,000 ujumbe wetu na ufunguo wetu pamoja 139 00:08:36,000 --> 00:08:42,000 na kisha Mod kwamba, Mod kwamba kwa NUM_LETTERS, 140 00:08:42,000 --> 00:08:50,000 kama hatuwezi kuongeza ujumbe wetu katika mbalimbali sahihi 0-25 kwanza, 141 00:08:50,000 --> 00:08:54,000 basi tunaweza kuishia kupata idadi kweli weird 142 00:08:54,000 --> 00:08:59,000 kwa sababu maadili ya kwamba sisi ni kuangalia wakati sisi kuangalia ujumbe [i], 143 00:08:59,000 --> 00:09:03,000 wakati sisi kuangalia tabia idh ya ujumbe wetu wazi-maandishi, 144 00:09:03,000 --> 00:09:08,000 ni thamani mahali fulani katika hii mbalimbali 65-122 145 00:09:08,000 --> 00:09:13,000 msingi maadili ASCII kwa uppercase kupitia z lowercase. 146 00:09:13,000 --> 00:09:18,000 Na hivyo wakati sisi Mod hivyo kwa 26 au kwa NUM_LETTERS, 147 00:09:18,000 --> 00:09:23,000 tangu kwamba alikuwa yetu # define juu kulia hapa juu, 148 00:09:23,000 --> 00:09:28,000 ambayo inaenda kutupa thamani hiyo ni katika mbalimbali 0-25, 149 00:09:28,000 --> 00:09:30,000 na tunahitaji njia kisha kuongeza kuwa nyuma hadi 150 00:09:30,000 --> 00:09:32,000 na kupata katika mbalimbali sahihi ASCII. 151 00:09:32,000 --> 00:09:36,000 Njia rahisi ya kufanya hivyo ni kuongeza tu kila kitu chini 152 00:09:36,000 --> 00:09:39,000 katika mbalimbali 0-25 kwa kuanzia, 153 00:09:39,000 --> 00:09:43,000 na kisha kuhama kila kitu nyuma hadi mwishoni. 154 00:09:43,000 --> 00:09:46,000 >> Kosa lingine la kawaida kwamba nikaona watu kukimbia katika ni kwamba 155 00:09:46,000 --> 00:09:50,000 kama wewe si kweli kufanya hivyo kuongeza haki mbali 156 00:09:50,000 --> 00:09:53,000 na wewe kuongeza ujumbe muhimu na pamoja na wewe kuongeza yao, kusema, 157 00:09:53,000 --> 00:09:58,000 ndani ya variable Char, tatizo na kwamba 158 00:09:58,000 --> 00:10:01,000 ni tangu ujumbe [i] ni idadi kubwa kiasi ya kuanza kwa- 159 00:10:01,000 --> 00:10:05,000 kumbuka ni angalau 65 ikiwa ni uppercase tabia- 160 00:10:05,000 --> 00:10:09,000 kama una ufunguo kubwa, wanasema, kitu kama 100, 161 00:10:09,000 --> 00:10:13,000 na kuongeza wale 2 pamoja katika Char saini utaenda kupata kufurika. 162 00:10:13,000 --> 00:10:17,000 Wewe ni kwenda kupata thamani hiyo ni kubwa kuliko 127, 163 00:10:17,000 --> 00:10:22,000 ambayo ni ya thamani kubwa kwamba variable Char wanaweza kushikilia. 164 00:10:22,000 --> 00:10:26,000 Tena, kwamba ni kwa nini wewe d wanataka kufanya aina ya kitu kwa kuanzia. 165 00:10:26,000 --> 00:10:29,000 Baadhi ya watu got karibu kesi kwamba kwa kufanya kama mwingine na kupima 166 00:10:29,000 --> 00:10:33,000 kuona kama ingekuwa kufurika kabla ya kufanya hivyo, 167 00:10:33,000 --> 00:10:36,000 lakini njia hii anapata karibu kwamba. 168 00:10:36,000 --> 00:10:40,000 Na kisha katika ufumbuzi hii sisi kuchapishwa string nzima mwishoni sana. 169 00:10:40,000 --> 00:10:45,000 Watu wengine kuchapishwa tabia kwa wakati. Wote ni kutisha. 170 00:10:45,000 --> 00:10:51,000 Katika hatua hii, je, wewe guys una maswali yoyote, maoni yoyote kuhusu hili? 171 00:10:51,000 --> 00:10:56,000 Mambo kama, mambo si kama? 172 00:10:56,000 --> 00:10:58,000 >> Mimi nilikuwa na swali. 173 00:10:58,000 --> 00:11:01,000 Labda mimi missed hiyo wakati maelezo yako, lakini jinsi gani mpango huu 174 00:11:01,000 --> 00:11:07,000 ruka nafasi kwa ajili ya kuunganisha muhimu kwa urefu wa maandishi? 175 00:11:07,000 --> 00:11:10,000 Hii ni Kaisari cipher. >> Oh, sorry, yeah. 176 00:11:10,000 --> 00:11:13,000 Yeah, tutaweza kuona kwamba. 177 00:11:13,000 --> 00:11:16,000 Katika cipher Kaisari tulipata kuzunguka kwamba kwa sababu 178 00:11:16,000 --> 00:11:18,000 sisi tu flipped wahusika. 179 00:11:18,000 --> 00:11:27,000 Sisi tu kuzungushwa yao kama walikuwa uppercase au lowercase. 180 00:11:27,000 --> 00:11:32,000 You guys hisia nzuri kuhusu hili? 181 00:11:32,000 --> 00:11:34,000 Jisikie huru nakala hii nyumbani, kuchukua hiyo, 182 00:11:34,000 --> 00:11:37,000 kulinganisha kwa nini wewe guys aliandika. 183 00:11:37,000 --> 00:11:42,000 Dhahiri kujisikia huru na kutuma maswali kuhusu hilo pia. 184 00:11:42,000 --> 00:11:46,000 Na tena, kutambua kwamba lengo hapa na tatizo lako unaweka 185 00:11:46,000 --> 00:11:50,000 si kupata wewe guys kuandika code kamilifu kwa seti yako tatizo. 186 00:11:50,000 --> 00:11:57,000 Ni uzoefu wa kujifunza. Yeah. 187 00:11:57,000 --> 00:12:01,000 >> Rudi do wakati kitanzi, kama ni sawa null, 188 00:12:01,000 --> 00:12:06,000 hivyo null tu ina maana chochote, wao tu enter? 189 00:12:06,000 --> 00:12:12,000 Null ni maalum pointer thamani, 190 00:12:12,000 --> 00:12:17,000 na sisi kutumia null wakati tunataka kusema 191 00:12:17,000 --> 00:12:23,000 tuna variable pointer kwamba ni akizungumzia chochote. 192 00:12:23,000 --> 00:12:28,000 Na hivyo kwa kawaida maana yake ni kwamba hii variable, hii variable ujumbe 193 00:12:28,000 --> 00:12:35,000 ni tupu, na hapa, kwa sababu sisi ni kutumia CS50 maalum string aina, 194 00:12:35,000 --> 00:12:37,000 kile ni CS50 string aina? 195 00:12:37,000 --> 00:12:42,000 Umeona nini ni wakati Daudi vunjwa nyuma Hood katika hotuba? 196 00:12:42,000 --> 00:12:44,000 Ni funky-ni pointer, haki? 197 00:12:44,000 --> 00:12:48,000 Okay, yeah. >> Ni * Char. 198 00:12:48,000 --> 00:12:52,000 Na hivyo kweli sisi inaweza kuchukua nafasi hii 199 00:12:52,000 --> 00:12:56,000 hapa hapa na ujumbe Char *, 200 00:12:56,000 --> 00:13:04,000 na hivyo kazi GetString, ikiwa haina mafanikio kupata kamba kutoka kwa mtumiaji, 201 00:13:04,000 --> 00:13:08,000 haiwezi Hazrat kamba, na kesi moja ambayo haiwezi Hazrat string 202 00:13:08,000 --> 00:13:11,000 ni kama mtumiaji aina ya mwisho wa faili tabia, D kudhibiti, 203 00:13:11,000 --> 00:13:17,000 ambayo si kitu kwa kawaida wewe kufanya, lakini kama kwamba hutokea 204 00:13:17,000 --> 00:13:20,000 basi kazi hii atarudi thamani null kama njia ya kusema 205 00:13:20,000 --> 00:13:23,000 "Hey, sikuweza kupata kamba." 206 00:13:23,000 --> 00:13:27,000 Nini kingetokea kama hatuwezi kuweka ujumbe = null, 207 00:13:27,000 --> 00:13:30,000 ambayo ni kitu ambacho sisi si kufanya bado? 208 00:13:30,000 --> 00:13:32,000 Mbona ingekuwa kwamba kuwa tatizo hapa? 209 00:13:32,000 --> 00:13:38,000 Kwa sababu najua kwamba sisi aliyesema kidogo katika hotuba kuhusu uvujaji kumbukumbu. 210 00:13:38,000 --> 00:13:42,000 Yeah, hebu kufanya hivyo, na hebu angalia nini kinatokea. 211 00:13:42,000 --> 00:13:44,000 >> Swali Basil ilikuwa kile kinachotokea kama sisi si kweli kuwa 212 00:13:44,000 --> 00:13:48,000 ujumbe huu = null mtihani? 213 00:13:48,000 --> 00:13:51,000 Hebu kitabu juu kwa juu. 214 00:13:51,000 --> 00:13:53,000 You guys unaweza maoni hii nje. 215 00:13:53,000 --> 00:13:55,000 Kweli, mimi itabidi kuokoa ni katika marekebisho. 216 00:13:55,000 --> 00:13:58,000 Hii itakuwa Revision 3. 217 00:13:58,000 --> 00:14:02,000 Nini wewe itabidi kufanya kuendesha mpango huu ni itabidi bonyeza hii icon gia juu hapa, 218 00:14:02,000 --> 00:14:04,000 na itabidi kuongeza hoja hiyo. 219 00:14:04,000 --> 00:14:10,000 Itabidi kutoa hoja muhimu tangu tunataka kupitisha hoja katika mstari amri. 220 00:14:10,000 --> 00:14:13,000 Hapa nina kwenda kuwapa namba 3. Mimi kama 3. 221 00:14:13,000 --> 00:14:19,000 Sasa zooming nyuma nje, mbio mpango. 222 00:14:19,000 --> 00:14:24,000 Ni mbio, kuandaa, kujenga. 223 00:14:24,000 --> 00:14:27,000 Hapa sisi kwenda. Ni kusubiri ilisababisha. 224 00:14:27,000 --> 00:14:33,000 Kama mimi aina katika kitu kama hujambo-wapi kwamba kwenda? 225 00:14:33,000 --> 00:14:38,000 Oh, mpango wangu alichukua muda mrefu sana na kukimbia. Mimi nilikuwa jawing kwa muda mrefu mno. 226 00:14:38,000 --> 00:14:40,000 Hapa unaendelea. 227 00:14:40,000 --> 00:14:43,000 Sasa ninapoandika katika hello. 228 00:14:43,000 --> 00:14:46,000 Tunaona kwamba encrypts ipasavyo. 229 00:14:46,000 --> 00:14:52,000 Sasa kile kinachotokea kama sisi kufanya GetString haraka kurudi null? 230 00:14:52,000 --> 00:14:57,000 Kumbuka, mimi alisema kwamba sisi alifanya hivyo na uendelezaji wa kudhibiti D kwa wakati mmoja. 231 00:14:57,000 --> 00:14:59,000 Mimi itabidi kitabu juu hapa. Tutaweza kukimbia tena. 232 00:14:59,000 --> 00:15:01,000 Ujenzi. Kuna unaendelea. 233 00:15:01,000 --> 00:15:04,000 Sasa wakati mimi hit kudhibiti D 234 00:15:04,000 --> 00:15:12,000 I got line hii kwamba anasema opt/sandbox50/bin/run.sh, Mkato kosa. 235 00:15:12,000 --> 00:15:15,000 Je, guys kuonekana kwamba kabla? 236 00:15:15,000 --> 00:15:17,000 >> [Mwanafunzi] Kwa nini kuna hakuna >> Samahani? 237 00:15:17,000 --> 00:15:20,000 [Mwanafunzi] Kwa nini kuna hakuna dampo msingi katika kesi hii? 238 00:15:20,000 --> 00:15:26,000 dampo msingi ni-swali ni kwa nini kuna hakuna dampo msingi hapa? 239 00:15:26,000 --> 00:15:29,000 Swali ni kwamba kuna inaweza kuwa, lakini dampo msingi ni faili 240 00:15:29,000 --> 00:15:31,000 kwamba anapata kuhifadhiwa kwenye gari ngumu. 241 00:15:31,000 --> 00:15:34,000 Katika kesi hii tumekuwa walemavu madampo ya msingi 242 00:15:34,000 --> 00:15:37,000 kwenye server kukimbia ili sisi hawana watu seg faulting 243 00:15:37,000 --> 00:15:40,000 na kujenga tani ya madampo ya msingi. 244 00:15:40,000 --> 00:15:46,000 Lakini unaweza kupata mmoja. 245 00:15:46,000 --> 00:15:48,000 Core dumps ni aina ya kitu kwamba mara nyingi unaweza Disable, 246 00:15:48,000 --> 00:15:52,000 na wakati mwingine unaweza kufanya. 247 00:15:52,000 --> 00:15:55,000 kosa segmentation, kwa kujibu swali lako, Basil, 248 00:15:55,000 --> 00:16:00,000 ni kusema kwamba sisi walijaribu kupata pointer 249 00:16:00,000 --> 00:16:05,000 kwamba alikuwa si kuweka kwa uhakika na kitu chochote. 250 00:16:05,000 --> 00:16:09,000 Kumbuka Binky katika video wakati Binky anajaribu 251 00:16:09,000 --> 00:16:12,000 kwenda kupata pointer kwamba si akizungumzia chochote? 252 00:16:12,000 --> 00:16:16,000 Katika kesi hiyo mimi nadhani kitaalam pointer ni akizungumzia kitu. 253 00:16:16,000 --> 00:16:20,000 Ni akizungumzia null, ambayo ni ya kitaalam 0, 254 00:16:20,000 --> 00:16:25,000 lakini kwamba ni defined kuwa katika sehemu ambayo si ya kupatikana 255 00:16:25,000 --> 00:16:28,000 na mpango wako, ili kupata kosa segmentation 256 00:16:28,000 --> 00:16:31,000 kwa sababu wewe si kupata kumbukumbu hiyo katika sehemu halali 257 00:16:31,000 --> 00:16:38,000 kama sehemu ya chungu au sehemu ya stack au sehemu data. 258 00:16:38,000 --> 00:16:40,000 Cool. 259 00:16:40,000 --> 00:16:48,000 Maswali yoyote zaidi kuhusu Kaisari? 260 00:16:48,000 --> 00:16:51,000 >> Hebu hoja juu. Hebu tuangalie Revision 2 kweli haraka. 261 00:16:51,000 --> 00:17:00,000 Hiyo Vigenère. 262 00:17:00,000 --> 00:17:04,000 Hapa katika Vigenère 263 00:17:04,000 --> 00:17:06,000 tutaweza kutembea kwa njia moja hii pretty haraka kwa sababu, tena, 264 00:17:06,000 --> 00:17:10,000 Vigenère na Kaisari ni sawa kabisa. 265 00:17:10,000 --> 00:17:12,000 Header maoni ni kabla, 266 00:17:12,000 --> 00:17:17,000 # Define ni kabla ili kuepuka kutumia namba hizi uchawi. 267 00:17:17,000 --> 00:17:21,000 Jambo zuri ni kusema sisi alitaka hoja ya 268 00:17:21,000 --> 00:17:23,000 alfabeti tofauti au kitu kama hicho. 269 00:17:23,000 --> 00:17:26,000 Badala ya kuwa na kwenda manually mabadiliko 26 wote katika code 270 00:17:26,000 --> 00:17:30,000 tungebadili hii hadi 27 au kuacha ni chini 271 00:17:30,000 --> 00:17:34,000 kama tungetumia alphabets tofauti, lugha mbalimbali. 272 00:17:34,000 --> 00:17:38,000 Tena, sisi tumepewa hii hundi ya kuhesabu hoja, 273 00:17:38,000 --> 00:17:42,000 na kwa kweli unaweza karibu kuchukua hii kama template. 274 00:17:42,000 --> 00:17:46,000 Pretty sana kila mpango kuandika wanapaswa kuwa- 275 00:17:46,000 --> 00:17:50,000 kama inachukua mstari amri hoja-baadhi mlolongo wa mistari 276 00:17:50,000 --> 00:17:55,000 kwamba anasoma kama hii katika mwanzo sana. 277 00:17:55,000 --> 00:17:59,000 Hiyo ni moja ya vipimo kwanza sanity unataka kufanya. 278 00:17:59,000 --> 00:18:03,000 >> Hapa nini hatukuwa ilikuwa sisi alifanya kwamba uhakika 279 00:18:03,000 --> 00:18:06,000 Keyword ilikuwa halali, na kwamba alikuwa hundi ya pili ambayo sisi alivyofanya. 280 00:18:06,000 --> 00:18:11,000 Ona tena kwamba sisi waliojitenga hii kutoka argc na 2. 281 00:18:11,000 --> 00:18:14,000 Kumbuka kwamba katika kesi hii jambo moja kwamba sisi na kufanya ni badala 282 00:18:14,000 --> 00:18:18,000 ya kutumia kwa i tulitaka validate string nzima, 283 00:18:18,000 --> 00:18:21,000 na ili kufanya hivyo kwa kweli kuwa na tabia ya kwenda kwa tabia 284 00:18:21,000 --> 00:18:23,000 juu ya kamba. 285 00:18:23,000 --> 00:18:29,000 Hakuna njia nzuri kuwaita kitu juu yake 286 00:18:29,000 --> 00:18:31,000 sababu hata, kwa mfano, i atarudi 0 287 00:18:31,000 --> 00:18:37,000 kama hawezi kuchanganua integer, hivyo kwamba hana hata kazi. 288 00:18:37,000 --> 00:18:42,000 Tena, nice ujumbe kuwaambia user hasa ni nini kilichotokea. 289 00:18:42,000 --> 00:18:45,000 Ndipo hapa, tena, sisi pia kushughulikia kesi ambapo 290 00:18:45,000 --> 00:18:50,000 user aina katika tabia kudhibiti D random. 291 00:18:50,000 --> 00:18:54,000 >> Na kisha Charlotte alikuwa swali mapema kuhusu jinsi sisi kusimamia ruka nafasi 292 00:18:54,000 --> 00:18:57,000 katika kamba yetu hapa. 293 00:18:57,000 --> 00:19:00,000 Hii ilikuwa ni aina ya sawa na kile sisi alivyofanya kwa mpango Myspace 294 00:19:00,000 --> 00:19:04,000 kwamba sisi tulikuwa katika sehemu, na njia hii kazi 295 00:19:04,000 --> 00:19:08,000 ni kwamba sisi kupatikana idadi ya herufi kwamba sisi d kuonekana. 296 00:19:08,000 --> 00:19:13,000 Kama sisi kutembea juu ya kamba ujumbe, kama sisi kutembea juu ya tabia na tabia, 297 00:19:13,000 --> 00:19:16,000 sisi kupatikana index kama sehemu ya yetu kwa kitanzi, na kisha sisi pia kupatikana 298 00:19:16,000 --> 00:19:21,000 idadi ya herufi, hivyo wahusika zisizo maalum, mashirika yasiyo ya tarakimu, mashirika yasiyo ya nyeupe nafasi 299 00:19:21,000 --> 00:19:27,000 kwamba sisi d kuonekana katika variable tofauti. 300 00:19:27,000 --> 00:19:33,000 Na kisha ufumbuzi hii hugeuza ufunguo 301 00:19:33,000 --> 00:19:41,000 kupata halisi muhimu integer, na ni gani kwamba juu ya kuruka, 302 00:19:41,000 --> 00:19:47,000 haki kabla basi huenda encrypt halisi ujumbe tabia. 303 00:19:47,000 --> 00:19:50,000 Kuna baadhi ya ufumbuzi ambao walikuwa kikamilifu kubwa mno 304 00:19:50,000 --> 00:19:58,000 kwamba ingekuwa kurekebisha muhimu juu wakati wa kupima kwa uhalali ufunguo wa. 305 00:19:58,000 --> 00:20:01,000 Mbali na kuhakikisha kwamba tabia na Keyword 306 00:20:01,000 --> 00:20:05,000 ilikuwa tabia kialfabeti pia akageuka kuwa katika integer 307 00:20:05,000 --> 00:20:13,000 katika mbalimbali 0-25 kwa basi ruka kuwa na kufanya kwamba baadaye katika hii kwa kitanzi. 308 00:20:13,000 --> 00:20:18,000 Tena, unaweza kuona hapa hii ni kweli exact code 309 00:20:18,000 --> 00:20:22,000 kwamba sisi kutumika katika Kaisari katika hatua hii. 310 00:20:22,000 --> 00:20:25,000 Unafanya exact kitu, hivyo hila halisi ni kuhesabia 311 00:20:25,000 --> 00:20:30,000 jinsi ya kugeuka Keyword katika integer. 312 00:20:30,000 --> 00:20:35,000 >> Jambo moja kwamba sisi tulikuwa hapa, ambayo ni kidogo mnene 313 00:20:35,000 --> 00:20:39,000 ni sisi amerudia maneno, Nadhani unaweza simu yake, 314 00:20:39,000 --> 00:20:45,000 3 tofauti mara juu ya mistari 58, 59, na 61. 315 00:20:45,000 --> 00:20:52,000 Je, mtu kueleza nini hasa maneno hii haina? 316 00:20:52,000 --> 00:20:55,000 Ni kupata tabia, kama wewe alisema. 317 00:20:55,000 --> 00:20:59,000 Yeah, ni [inaudible] tabia katika Keyword, 318 00:20:59,000 --> 00:21:04,000 na hivyo ni idadi ya herufi kuonekana kwa sababu wewe ni kusonga tu pamoja 319 00:21:04,000 --> 00:21:06,000 Keyword mara moja wewe ve kuona barua, 320 00:21:06,000 --> 00:21:10,000 ili kwenda kwa ufanisi ruka nafasi na mambo kama hayo. 321 00:21:10,000 --> 00:21:12,000 Yeah, kwa uhakika. 322 00:21:12,000 --> 00:21:16,000 Na kisha mara moja wewe ve kuonekana tupu Keyword wewe tu Mod hivyo hoja nyuma kote. 323 00:21:16,000 --> 00:21:18,000 Hasa. Hiyo ni maelezo kamilifu. 324 00:21:18,000 --> 00:21:23,000 Nini Kevin alisema ni kwamba tunataka index katika Keyword. 325 00:21:23,000 --> 00:21:28,000 Tunataka kupata tabia num_letters_seen, kama wewe, 326 00:21:28,000 --> 00:21:32,000 lakini kama num_letters_seen unazidi urefu wa Keyword, 327 00:21:32,000 --> 00:21:37,000 njia ya sisi kupata nyuma katika mbalimbali sahihi ni sisi kutumia operator Mod 328 00:21:37,000 --> 00:21:40,000 kwa ufanisi wrap karibu. 329 00:21:40,000 --> 00:21:43,000 Kwa mfano, kama katika muda mfupi, Keyword yetu ni Bacon, 330 00:21:43,000 --> 00:21:46,000 na ni 5 barua kwa muda mrefu. 331 00:21:46,000 --> 00:21:50,000 Lakini tumeona barua 6 katika maandishi yetu wazi katika hatua hii 332 00:21:50,000 --> 00:21:52,000 na encrypted 6. 333 00:21:52,000 --> 00:21:57,000 Sisi kuishia kupata num_letters_seen, 334 00:21:57,000 --> 00:22:00,000 ambayo ni 6, Mod urefu wa Keyword, 5, 335 00:22:00,000 --> 00:22:04,000 na hivyo tutaweza kupata 1, na hivyo kile tutaweza kufanya ni tutaweza 336 00:22:04,000 --> 00:22:14,000 kupata kwanza tabia ndani ya Keyword yetu katika hatua hiyo. 337 00:22:14,000 --> 00:22:21,000 >> Haki zote, maswali yoyote juu ya Vigenère 338 00:22:21,000 --> 00:22:26,000 kabla hatujaendelea? 339 00:22:26,000 --> 00:22:31,000 You guys hisia nzuri kuhusu hili? 340 00:22:31,000 --> 00:22:35,000 Cool, kubwa. 341 00:22:35,000 --> 00:22:38,000 Mimi nataka kuhakikisha kuwa wewe guys ni kupata nafasi ya kuona code 342 00:22:38,000 --> 00:22:48,000 kwamba sisi kufikiri inaonekana nzuri na kuwa na nafasi ya kujifunza kutoka humo. 343 00:22:48,000 --> 00:22:53,000 Hii ni kwenda kuwa mwisho tutaweza kutumia nafasi kwa wakati kuwa, 344 00:22:53,000 --> 00:22:59,000 na sisi ni kwenda mpito sasa, na mimi nina kwenda kwa cs50.net/lectures 345 00:22:59,000 --> 00:23:06,000 ili tuweze kufanya kidogo ya mapitio chemsha bongo. 346 00:23:06,000 --> 00:23:10,000 njia bora nadhani kuanza kufanya quiz mapitio 347 00:23:10,000 --> 00:23:15,000 ni kuja ukurasa huu Mihadhara, cs50.net/lectures, 348 00:23:15,000 --> 00:23:20,000 na chini ya kila wiki ya vichwa, hivyo kama mimi kuangalia hapa katika mkutano wa Wiki 0, 349 00:23:20,000 --> 00:23:27,000 Mimi naona kwamba tuna orodha ya mada ambazo sisi kufunikwa katika Wiki 0. 350 00:23:27,000 --> 00:23:31,000 >> Kama yoyote ya mada hizi wanaonekana unfamiliar na wewe 351 00:23:31,000 --> 00:23:34,000 wewe utakuwa dhahiri wanataka kwenda nyuma na scour maelezo hotuba na uwezekano 352 00:23:34,000 --> 00:23:39,000 hata skim kupitia mihadhara, kuangalia yao tena kama unataka 353 00:23:39,000 --> 00:23:44,000 kupata kujisikia kwa nini kinaendelea kwa kila mada hizo. 354 00:23:44,000 --> 00:23:49,000 Nasema kuongeza hii ya mwaka mmoja wa rasilimali baridi sisi tumepewa 355 00:23:49,000 --> 00:23:55,000 ni hizi Shorts kwamba tumekuwa umba, na kama ukiangalia Wiki 0, 356 00:23:55,000 --> 00:24:00,000 hatuna yote ya mada mifuniko, lakini sisi tumepewa chache kabisa wao, 357 00:24:00,000 --> 00:24:03,000 baadhi ya wale wa trickier, hivyo kuangalia Shorts haya tena 358 00:24:03,000 --> 00:24:08,000 ni njia nzuri ya kupata wewe juu kwa kasi. 359 00:24:08,000 --> 00:24:15,000 Hasa, mimi naenda kuweka kuziba kwa 3 juu ya chini, tangu mimi hizo. 360 00:24:15,000 --> 00:24:20,000 Lakini kama wewe ni ikikabiliwa na binary, bits, hex, kwamba aina ya mambo, 361 00:24:20,000 --> 00:24:22,000 binary ni sehemu kubwa ya kuanza. 362 00:24:22,000 --> 00:24:25,000 ASCII ni mtu mwingine kwamba ni vizuri kuona pia. 363 00:24:25,000 --> 00:24:31,000 Unaweza hata kuangalia yangu katika kasi 1.5x ikiwa mimi nina kwenda polepole mno kwa ajili yenu. 364 00:24:31,000 --> 00:24:35,000 Tangu mapitio yake, jisikie huru kufanya hivyo. 365 00:24:35,000 --> 00:24:40,000 >> Tu kuanza kweli haraka, sisi ni kwenda kupitia michache ya matatizo haya Jaribio 366 00:24:40,000 --> 00:24:44,000 tu kwa haraka churn kupitia haya. 367 00:24:44,000 --> 00:24:50,000 Kwa mfano, hebu tuangalie tatizo 16 kwamba mimi nimepata kulia hadi hapa kwenye bodi. 368 00:24:50,000 --> 00:24:54,000 Sisi tumepewa hii hesabu zifuatazo katika binary, 369 00:24:54,000 --> 00:24:56,000 na tunataka kuonyesha kazi yoyote. 370 00:24:56,000 --> 00:24:59,000 Sawa, mimi naenda kutoa hii risasi. 371 00:24:59,000 --> 00:25:01,000 You guys inapaswa kufuata pamoja na karatasi, 372 00:25:01,000 --> 00:25:04,000 na tutaweza kufanya hii kweli haraka. 373 00:25:04,000 --> 00:25:06,000 Tunataka kufanya hesabu zifuatazo katika binary. 374 00:25:06,000 --> 00:25:16,000 Mimi nimepata 00,110,010. 375 00:25:16,000 --> 00:25:27,000 Na mimi nina kwenda kuongeza ni 00,110,010. 376 00:25:27,000 --> 00:25:30,000 Kwa math akili maalum kufuatia pamoja nyumbani, 377 00:25:30,000 --> 00:25:35,000 hii ni ufanisi kuzidisha kwa 2. 378 00:25:35,000 --> 00:25:37,000 Hebu kuanza. 379 00:25:37,000 --> 00:25:39,000 Sisi ni kwenda kufuata huo Aidha algorithm kwamba sisi kufanya 380 00:25:39,000 --> 00:25:43,000 wakati sisi kuongeza idadi decimal pamoja. 381 00:25:43,000 --> 00:25:46,000 Kweli tofauti tu hapa ni kwamba sisi kitanzi nyuma kote 382 00:25:46,000 --> 00:25:51,000 mara moja tuna 1 + 1 badala ya mara moja sisi kupata 10. 383 00:25:51,000 --> 00:25:53,000 >> Kama sisi kuanza kutoka kulia, kweli haraka, nini tarakimu ya kwanza? 384 00:25:53,000 --> 00:25:55,000 [Mwanafunzi] 0. >> [Nate H.] 0. 385 00:25:55,000 --> 00:25:58,000 Mkuu, tarakimu ya pili? 386 00:25:58,000 --> 00:26:00,000 [Mwanafunzi] 1. 387 00:26:00,000 --> 00:26:02,000 [Nate H.] Je, ni 1? 1 + 1 ni? 388 00:26:02,000 --> 00:26:04,000 [Mwanafunzi] 10. 389 00:26:04,000 --> 00:26:08,000 [Nate H.] Hasa, ili kile ni tarakimu kwamba mimi kuandika kulia chini ndio 2 aliongeza pamoja? 390 00:26:08,000 --> 00:26:11,000 [Mwanafunzi] 1, 0, 0 au na kisha kubeba 1. 391 00:26:11,000 --> 00:26:15,000 [Nate H.] 0 na kubeba 1, hasa. 392 00:26:15,000 --> 00:26:18,000 Next moja juu, Basil, uko juu. 393 00:26:18,000 --> 00:26:20,000 Nini tatu >> [Basil] 1?. 394 00:26:20,000 --> 00:26:23,000 [Nate H.] 1, kamilifu. Kevin? 395 00:26:23,000 --> 00:26:27,000 [Kevin] 0. >> [Nate H.] 0, Charlotte? 396 00:26:27,000 --> 00:26:30,000 [Charlotte] 0. >> [Nate H.] Yeah, na nini mimi? 397 00:26:30,000 --> 00:26:32,000 [Mwanafunzi] 1. 398 00:26:32,000 --> 00:26:34,000 [Nate H.] Na nini mimi? Na kisha mimi kubeba 1. 399 00:26:34,000 --> 00:26:36,000 Perfect, Sahb? >> [Sahb] Sasa una 1. 400 00:26:36,000 --> 00:26:40,000 [Nate H.] Na kufanya mimi kufanya kitu chochote hapa? 401 00:26:40,000 --> 00:26:43,000 [Sahb] Kisha kwa moja ijayo una 1 kwa sababu wewe ulichukua zaidi ya 1. 402 00:26:43,000 --> 00:26:49,000 [Nate H.] Mkuu, hivyo hapa tunaweza kumaliza it up. 403 00:26:49,000 --> 00:26:51,000 Cool. 404 00:26:51,000 --> 00:26:54,000 [Mwanafunzi] Je 0 + 0 0 =? 405 00:26:54,000 --> 00:26:56,000 0 + 0 = 0. 406 00:26:56,000 --> 00:27:01,000 1 + 1, kama wewe alisema, ni 10, au 1, 0, badala. 407 00:27:01,000 --> 00:27:07,000 10 ni misnomer sababu mimi 10 ina maana idadi 10, 408 00:27:07,000 --> 00:27:12,000 na ni quirk ya jinsi sisi ni anayewakilisha wakati sisi ni kuandika yake. 409 00:27:12,000 --> 00:27:20,000 Sisi kuwakilisha idadi 2 kwa 1, 0, na namba 10 ni tofauti kidogo. 410 00:27:20,000 --> 00:27:23,000 >> Nini aina ya nice kuhusu binary ni kwamba kuna kweli ni kwamba wengi 411 00:27:23,000 --> 00:27:25,000 kesi unahitaji kujifunza. 412 00:27:25,000 --> 00:27:30,000 Kuna 0 + 0 = 0, 0 + 1 = 1, 413 00:27:30,000 --> 00:27:34,000 1 + 1 ni 0, na kisha kubeba 1, 414 00:27:34,000 --> 00:27:37,000 na kisha unaweza kuona hapa katika safu ya tatu kutoka kulia 415 00:27:37,000 --> 00:27:40,000 tulikuwa na hii 1, 1, na 1. 416 00:27:40,000 --> 00:27:43,000 Na 1 + 1 + 1 ni 1, 417 00:27:43,000 --> 00:27:45,000 na wewe kubeba mwingine 1. 418 00:27:45,000 --> 00:27:48,000 Wakati unafanya Aidha binary, pretty rahisi. 419 00:27:48,000 --> 00:27:51,000 Ningependa kufanya zaidi ya wanandoa wa haya sanity kuangalia wenyewe 420 00:27:51,000 --> 00:27:54,000 kabla ya kwenda huko kwa sababu hii ni 421 00:27:54,000 --> 00:28:00,000 pengine kitu kwamba tutaweza kuona kwenye chemsha bongo. 422 00:28:00,000 --> 00:28:03,000 Sasa hebu kufanya hili moja ijayo pia. 423 00:28:03,000 --> 00:28:06,000 Hebu kufanya tatizo 17. 424 00:28:06,000 --> 00:28:12,000 Sisi ni kwenda kubadilisha zifuatazo binary idadi decimal. 425 00:28:12,000 --> 00:28:28,000 Mimi nimepata 10100111001. 426 00:28:28,000 --> 00:28:33,000 Kumbuka katika video binary kwamba sikuwa 427 00:28:33,000 --> 00:28:36,000 Mimi nilitembea michache mifano, na mimi ilionyesha jinsi 428 00:28:36,000 --> 00:28:41,000 kila kitu kazi wakati wewe kufanya hivyo katika decimal. 429 00:28:41,000 --> 00:28:45,000 Wakati wewe ni kufanya kazi katika uwakilishi decimal Nadhani tuko 430 00:28:45,000 --> 00:28:48,000 katika hatua hii katika maisha yetu hivyo ufasaha katika kuwa 431 00:28:48,000 --> 00:28:53,000 ni pretty rahisi na Gloss juu ya mechanics ya jinsi kweli kazi. 432 00:28:53,000 --> 00:28:59,000 >> Lakini kwa kufanya recap haraka, kama mimi kuwa na idadi 137 433 00:28:59,000 --> 00:29:06,000 kweli hii ina maana-na tena, hii ni katika decimal uwakilishi- 434 00:29:06,000 --> 00:29:19,000 idadi 137 katika decimal inamaanisha kwamba nina 1 x 100 + 3 x 10 + 7 x 1. 435 00:29:19,000 --> 00:29:22,000 Hii yote ni kukaa kwenye screen. 436 00:29:22,000 --> 00:29:29,000 Na kisha kama ukiangalia namba hizi haki hapa, 437 00:29:29,000 --> 00:29:34,000 100, 10 na 1, unaweza kuona kwamba wao ni kweli nguvu zote za 10. 438 00:29:34,000 --> 00:29:43,000 Nina 10 ², 10 ¹, na 10 kwa sifuri. 439 00:29:43,000 --> 00:29:48,000 Tuna aina sawa ya kitu katika binary, 440 00:29:48,000 --> 00:29:55,000 isipokuwa kwamba msingi wetu, kama sisi kuiita, ni 2 badala ya 10. 441 00:29:55,000 --> 00:29:58,000 Hizi 10s kwamba mimi aliandika chini hapa chini, 442 00:29:58,000 --> 00:30:02,000 hii ² 10, 10 ¹, 10 hadi sifuri, 10 ni msingi wetu, 443 00:30:02,000 --> 00:30:08,000 na exponent, 0, 1, au 2, 444 00:30:08,000 --> 00:30:14,000 kimetajwa na nafasi ya tarakimu katika idadi hiyo sisi kuandika. 445 00:30:14,000 --> 00:30:21,000 1, kama sisi kuangalia saa hiyo, hii ni katika nafasi 1 2. 446 00:30:21,000 --> 00:30:27,000 3 ni katika nafasi ya 1, na ni katika nafasi ya 7 0. 447 00:30:27,000 --> 00:30:35,000 Hiyo ni jinsi sisi kupata mashujaa chini mbalimbali kwa ajili ya besi wetu. 448 00:30:35,000 --> 00:30:40,000 >> Kufuatia hii yote we'll-kweli, unajua nini? 449 00:30:40,000 --> 00:30:43,000 Tutaweza kufanya-wapi wangu tengua kifungo kwenda? 450 00:30:43,000 --> 00:30:45,000 Kuna unaendelea. 451 00:30:45,000 --> 00:30:47,000 I love this tengua kitu. 452 00:30:47,000 --> 00:30:51,000 Kufuatia hali hii nadhani kwa ajili yangu angalau 453 00:30:51,000 --> 00:30:54,000 Njia rahisi kuanza kuwabadili idadi binary 454 00:30:54,000 --> 00:30:57,000 au idadi hexadesimoli ambapo msingi ni 16 455 00:30:57,000 --> 00:31:02,000 na si 10 au 2 ni kwa kwenda mbele na kuandika 456 00:31:02,000 --> 00:31:09,000 besi na mashujaa kwa wote wa namba katika namba yangu binary kwa juu. 457 00:31:09,000 --> 00:31:14,000 Kama sisi kuanza kutoka kushoto kwenda kulia tena, 458 00:31:14,000 --> 00:31:17,000 ambayo ni aina ya counterintuitive, 459 00:31:17,000 --> 00:31:23,000 Mimi umebadirisha nyuma mweusi hapa, tuna 2 kwa nafasi 0, 460 00:31:23,000 --> 00:31:27,000 na kisha tuna 2 ¹, 2 ², 461 00:31:27,000 --> 00:31:33,000 na kisha 2-3, 2-4, 2-5, 6, 462 00:31:33,000 --> 00:31:39,000 7, 8, 9, na 10. 463 00:31:39,000 --> 00:31:41,000 Hizi namba I ve yameandikwa nje ni mashujaa wote. 464 00:31:41,000 --> 00:31:48,000 Mimi niliandika tu besi hapa katika 3 kwanza tu kwa nafasi. 465 00:31:48,000 --> 00:31:50,000 >> Katika hatua hii mimi nina kwenda mbele na mimi nina kweli kwenda kufuta 466 00:31:50,000 --> 00:31:53,000 mambo ambayo sisi tulikuwa katika decimal, ikiwa hiyo ni sawa. 467 00:31:53,000 --> 00:31:57,000 Ve got kwamba wote. 468 00:31:57,000 --> 00:32:05,000 Wale wa wewe kuangalia online mimi nina uhakika utakuwa na uwezo wa rewind yangu kama Ningependa. 469 00:32:05,000 --> 00:32:07,000 Byte nyuma kalamu. 470 00:32:07,000 --> 00:32:12,000 Sasa, nini tunaweza kufanya-kama wewe guys si kabisa juu kwa kasi juu ya nguvu yako ya 2, 471 00:32:12,000 --> 00:32:15,000 hiyo kabisa cool. 472 00:32:15,000 --> 00:32:18,000 Hutokea. Mimi kuelewa. 473 00:32:18,000 --> 00:32:23,000 Mimi mara moja alikuwa mahojiano ya kazi ambapo Niliambiwa mimi wanapaswa kujua nguvu zote za 2 474 00:32:23,000 --> 00:32:26,000 juu kupitia 2 hadi 30. 475 00:32:26,000 --> 00:32:29,000 Haikuwa kazi mimi got. 476 00:32:29,000 --> 00:32:32,000 Anyway, you guys unaweza kwenda mbele na kufanya hesabu hapa, 477 00:32:32,000 --> 00:32:35,000 lakini kwa binary ni kweli haina mantiki, 478 00:32:35,000 --> 00:32:38,000 na wala haina mantiki kwa decimal au hexadesimoli aidha, 479 00:32:38,000 --> 00:32:43,000 kufanya math nje ambapo una zeros. 480 00:32:43,000 --> 00:32:49,000 Unaweza kuona nina 0 hapa, hapa 0, 0 hapa, hapa 0, 0 hapa, 0 hapa. 481 00:32:49,000 --> 00:32:52,000 Kwa nini wapate kuwa si mantiki ya kufanya math halisi 482 00:32:52,000 --> 00:32:56,000 mahesabu ya uwezo mwafaka wa 2 kwa nafasi hiyo? 483 00:32:56,000 --> 00:32:59,000 Hasa, kama Charlotte alisema, itakuwa ni 0. 484 00:32:59,000 --> 00:33:05,000 Ili kama vile kujiokoa wakati ikiwa kuhesabu mamlaka ya 2 ni si suti yako imara. 485 00:33:05,000 --> 00:33:10,000 Katika kesi hii sisi tu haja kwa mahesabu yake kwa 2-0 ambayo ni-? 486 00:33:10,000 --> 00:33:12,000 [Mwanafunzi] 1. 487 00:33:12,000 --> 00:33:14,000 [Nate H.] 1, 2-3 ambayo ni-? 488 00:33:14,000 --> 00:33:16,000 [Mwanafunzi] 8. >> [Nate H.] 8. 489 00:33:16,000 --> 00:33:18,000 2-4? 490 00:33:18,000 --> 00:33:21,000 [Mwanafunzi] 2. Samahani, 1. 491 00:33:21,000 --> 00:33:26,000 [Nate H.] 2-4 ni 16, kwa usahihi. 492 00:33:26,000 --> 00:33:28,000 2-5, Kevin >> 32?. 493 00:33:28,000 --> 00:33:32,000 [Nate H.] 32, 2-8? 494 00:33:32,000 --> 00:33:38,000 [Mwanafunzi] 32 x 8, 256. 495 00:33:38,000 --> 00:33:41,000 [Nate H.] Perfect. 496 00:33:41,000 --> 00:33:43,000 Na 2-10? 497 00:33:43,000 --> 00:33:45,000 [Mwanafunzi] 1024. 498 00:33:45,000 --> 00:33:49,000 [Nate H.] Yeah, 1024. 499 00:33:49,000 --> 00:33:57,000 >> Mara sisi tumepewa namba hizi tunaweza kuhitimisha yao yote juu. 500 00:33:57,000 --> 00:34:01,000 Na hii ni pale ambapo kwa kweli ni muhimu kufanya mambo kadhaa. 501 00:34:01,000 --> 00:34:07,000 Moja ni kwenda polepole na kuangalia kazi zenu. 502 00:34:07,000 --> 00:34:10,000 Unaweza kuwaambia kwamba kuna 1 mwishoni ya idadi hii, 503 00:34:10,000 --> 00:34:15,000 hivyo mimi lazima dhahiri kupata idadi isiyo ya kawaida kama matokeo yangu, 504 00:34:15,000 --> 00:34:18,000 kwa sababu wale wengine wote ni kwenda kuwa hata idadi 505 00:34:18,000 --> 00:34:21,000 kutokana na kwamba ni idadi binary. 506 00:34:21,000 --> 00:34:24,000 Kitu nyingine ya kufanya ni kama kupata na hatua hii ya mtihani 507 00:34:24,000 --> 00:34:27,000 na wewe ve yameandikwa nje hii mbali 508 00:34:27,000 --> 00:34:30,000 na wewe ni muda umeisha 509 00:34:30,000 --> 00:34:33,000 kuangalia idadi ya pointi kwamba tatizo hili ni ya thamani. 510 00:34:33,000 --> 00:34:40,000 Tatizo hili, kama unaweza kuona-kama mimi flip nyuma mbali yangu kweli haraka- 511 00:34:40,000 --> 00:34:44,000 tatizo hili ni thamani ya pointi 2, hivyo hii ni si aina ya Aidha 512 00:34:44,000 --> 00:34:47,000 unapaswa kwenda kwa kama wewe ni kweli taabu kwa muda. 513 00:34:47,000 --> 00:34:52,000 Lakini tutaweza kubadili nyuma kwa iPad, na tutaweza kwenda kwa njia hiyo kweli haraka. 514 00:34:52,000 --> 00:34:54,000 >> Mimi kama kufanya idadi ndogo ya kwanza 515 00:34:54,000 --> 00:34:56,000 kwa sababu mimi sioni kwamba rahisi. 516 00:34:56,000 --> 00:35:00,000 Mimi kama 32 na 8 kwa sababu wao kwenda pamoja pretty urahisi, na sisi kupata 50. 517 00:35:00,000 --> 00:35:03,000 16 na 1 anapata 17. 518 00:35:03,000 --> 00:35:05,000 Kuna sisi kupata 57, 519 00:35:05,000 --> 00:35:14,000 na basi tunaweza kufanya mapumziko ya hii, ili tuweze kufanya 57, 156. 520 00:35:14,000 --> 00:35:16,000 Kuja juu. 521 00:35:16,000 --> 00:35:19,000 Man, vizuri, hebu angalia. 522 00:35:19,000 --> 00:35:27,000 Tulikuwa na 57, 256, na 1024. 523 00:35:27,000 --> 00:35:31,000 Katika hatua hii, nisingependa tu kwenda kupitia. 524 00:35:31,000 --> 00:35:35,000 Sina kidokezo. Mimi wazi haja ya kusoma juu ya hili. 525 00:35:35,000 --> 00:35:40,000 7, 6, na 4, unaweza kupata 17. 526 00:35:40,000 --> 00:35:42,000 1, 5, 5, 2, 13. 527 00:35:42,000 --> 00:35:45,000 Kisha sisi kupata 3, na kisha sisi kupata 1. 528 00:35:45,000 --> 00:35:52,000 1337. 529 00:35:52,000 --> 00:35:55,000 Pasaka yai, mtu yeyote? 530 00:35:55,000 --> 00:35:59,000 Anybody kutambua idadi hii? 531 00:35:59,000 --> 00:36:02,000 Chris inatambua idadi. Ina maana gani, Chris? 532 00:36:02,000 --> 00:36:04,000 [Chris] Leet. 533 00:36:04,000 --> 00:36:11,000 Leet, hivyo kama wewe kuangalia hii, inaonekana kama leet. 534 00:36:11,000 --> 00:36:15,000 Hacker stuff. Jihadharini na kwamba aina ya mambo ya midterm au chemsha bongo, badala. 535 00:36:15,000 --> 00:36:19,000 Kama unaweza kuona kwamba aina ya mambo na wewe wanashangaa "huh," 536 00:36:19,000 --> 00:36:22,000 kwamba ili kweli maana kitu. 537 00:36:22,000 --> 00:36:24,000 Mimi sijui. Daudi anapenda kuweka in 538 00:36:24,000 --> 00:36:26,000 Ni njia nzuri ya sanity kuangalia ni. 539 00:36:26,000 --> 00:36:30,000 Kama sawa, siwezi kuona nini kinaendelea. 540 00:36:30,000 --> 00:36:34,000 >> Hiyo Wiki 0/Week 1 stuff. 541 00:36:34,000 --> 00:36:39,000 Kama sisi kubadili nyuma kwa mbali wetu sasa, 542 00:36:39,000 --> 00:36:46,000 zoom nje, na michache ya mambo mengine. 543 00:36:46,000 --> 00:36:50,000 Kuna ASCII, ambayo tumekuwa kufanya mengi ya pamoja na seti tatizo. 544 00:36:50,000 --> 00:36:55,000 Dhana hii ya mtaji A. Je, ni kweli kwamba? 545 00:36:55,000 --> 00:36:57,000 Kujua ni integer decimal. 546 00:36:57,000 --> 00:37:00,000 65 ni nini ni mapped katika meza ASCII, 547 00:37:00,000 --> 00:37:03,000 na kwamba kwa hiyo jinsi ya kompyuta anaiandika, 548 00:37:03,000 --> 00:37:06,000 na kwamba ni jinsi gani tumekuwa kupata mbali kwa kweli kuandika 549 00:37:06,000 --> 00:37:09,000 mji mkuu wa tabia na tabia Herufi za chini 550 00:37:09,000 --> 00:37:14,000 katika baadhi ya hawa ufumbuzi na seti tatizo kwamba tumekuwa kufanya. 551 00:37:14,000 --> 00:37:16,000 michache ya mambo mengine. 552 00:37:16,000 --> 00:37:25,000 Sisi tumepewa kauli, misemo bulin hali,, tanzi, vigezo na threads. 553 00:37:25,000 --> 00:37:29,000 >> Wale wote wanaonekana kufanya akili kwa sehemu kubwa? 554 00:37:29,000 --> 00:37:35,000 Baadhi ya hii ni istilahi funky kidogo mara kwa mara. 555 00:37:35,000 --> 00:37:46,000 Mimi kama kufikiri ya kauli kama kwa kitu zaidi sehemu ambayo inaishia semicolon. 556 00:37:46,000 --> 00:37:51,000 Kauli kama vile x = 7, ambayo unaweka variable, 557 00:37:51,000 --> 00:37:54,000 ikatengeneza kuitwa x = 7. 558 00:37:54,000 --> 00:38:01,000 Takribani x ni pia aina ya kuwa wanaweza kuhifadhi namba 7, 559 00:38:01,000 --> 00:38:05,000 hivyo ni int au uwezekano kuelea au mfupi au Char, 560 00:38:05,000 --> 00:38:07,000 kitu kama hicho. 561 00:38:07,000 --> 00:38:12,000 kujieleza bulin ni kutumia hizi mbili ni sawa na 562 00:38:12,000 --> 00:38:17,000 na bang sawa au si sawa, chini ya mkuu zaidi kuliko, 563 00:38:17,000 --> 00:38:22,000 chini ya au sawa na, aina ya mambo ambayo yote. 564 00:38:22,000 --> 00:38:28,000 Masharti basi ni kama mwingine kauli. 565 00:38:28,000 --> 00:38:32,000 Napenda tukumbuke kwamba huwezi kuwa na mwingine bila sambamba ikiwa. 566 00:38:32,000 --> 00:38:37,000 Aidha, huwezi kuwa na mwingine ikiwa bila sambamba ikiwa. 567 00:38:37,000 --> 00:38:40,000 Tanzi, kukumbuka aina 3 ya matanzi tumekuwa hammering katika wewe 568 00:38:40,000 --> 00:38:43,000 kwa michache ya mwisho ya sehemu na seti tatizo. 569 00:38:43,000 --> 00:38:46,000 Kutumia gani wakati wakati wewe ni kupata mtumiaji pembejeo, 570 00:38:46,000 --> 00:38:51,000 kutumia wakati matanzi mpaka hali fulani ni kweli, 571 00:38:51,000 --> 00:38:56,000 na kisha kwa kutumia wale kwa matanzi kama unahitaji 572 00:38:56,000 --> 00:39:01,000 kujua ambayo iteration ya kitanzi wewe ni sasa juu ya ni jinsi mimi kufikiri juu yake. 573 00:39:01,000 --> 00:39:07,000 Au kama wewe ni kufanya kwa ajili ya tabia ya kila katika string nataka kufanya jambo fulani, 574 00:39:07,000 --> 00:39:15,000 kwa kila kipengele katika safu nataka kufanya kitu kwa kipengele hicho. 575 00:39:15,000 --> 00:39:18,000 >> Threads na matukio. 576 00:39:18,000 --> 00:39:21,000 Haya sisi si kufunikwa hivyo waziwazi katika C, 577 00:39:21,000 --> 00:39:23,000 lakini kumbuka hii kutoka Scratch. 578 00:39:23,000 --> 00:39:26,000 Hii ni dhana ya kuwa na scripts tofauti. 579 00:39:26,000 --> 00:39:32,000 Hii pia ni wazo hili la utangazaji tukio hilo. 580 00:39:32,000 --> 00:39:37,000 Baadhi ya watu hawakutumia utangazaji katika miradi yao ya awali, 581 00:39:37,000 --> 00:39:40,000 ambayo ni kinyume kabisa ya baridi, 582 00:39:40,000 --> 00:39:46,000 lakini haya ni 2 njia tofauti za utunzaji suala hili kubwa iitwayo concurrency, 583 00:39:46,000 --> 00:39:49,000 ambayo ni jinsi gani unaweza kupata programu kutekeleza 584 00:39:49,000 --> 00:39:54,000 au inaonekana nitafanya wakati huo huo? 585 00:39:54,000 --> 00:39:59,000 Majukumu mbalimbali mbio wakati kazi nyingine pia mbio. 586 00:39:59,000 --> 00:40:01,000 Hii ni jinsi mfumo wa uendeshaji wako inaonekana kazi. 587 00:40:01,000 --> 00:40:04,000 Hii ni kwa nini hata kama, kwa mfano, 588 00:40:04,000 --> 00:40:10,000 Nimekuwa got browser yangu mbio, naweza pia kurejea kwenye Spotify na kucheza wimbo. 589 00:40:10,000 --> 00:40:14,000 Hiyo ni zaidi ya kitu dhana kuelewa. 590 00:40:14,000 --> 00:40:17,000 Napenda kuangalia threads mfupi 591 00:40:17,000 --> 00:40:21,000 kama Ningependa kujifunza zaidi juu ya hilo. 592 00:40:21,000 --> 00:40:26,000 >> Hebu angalia, naamini kuna yangaliweza 593 00:40:26,000 --> 00:40:31,000 tatizo juu ya hili katika moja ya hizi. 594 00:40:31,000 --> 00:40:35,000 Tena, nadhani threads na matukio ni si kitu ambacho tutakuwa tumemaliza katika C 595 00:40:35,000 --> 00:40:41,000 tu kwa sababu ni vigumu zaidi kuliko kiasi kikubwa katika Scratch. 596 00:40:41,000 --> 00:40:44,000 Unapaswa na wasiwasi kuhusu hilo pale, lakini dhahiri kuelewa dhana, 597 00:40:44,000 --> 00:40:47,000 kuelewa nini kinaendelea. 598 00:40:47,000 --> 00:40:52,000 Kabla hatujaendelea, maswali yoyote juu ya Wiki 0 nyenzo? 599 00:40:52,000 --> 00:40:55,000 Kila mtu hisia nzuri? 600 00:40:55,000 --> 00:41:03,000 Kuelewa vigezo na kile kutofautiana ni? 601 00:41:03,000 --> 00:41:08,000 >> Kuendelea. Wiki 1. 602 00:41:08,000 --> 00:41:12,000 michache ya mambo hapa kwamba walikuwa si hasa kufunikwa 603 00:41:12,000 --> 00:41:21,000 katika mapitio ya jaribio lazima na pia ni zaidi ya dhana mambo ya kufikiri juu. 604 00:41:21,000 --> 00:41:30,000 kwanza ni hii fikra ya nini chanzo code, watunzi na code kitu ni. 605 00:41:30,000 --> 00:41:32,000 Anybody? Basil. 606 00:41:32,000 --> 00:41:37,000 Ni kitu code-I mean chanzo code ni nini kuweka ndani ya Clang, 607 00:41:37,000 --> 00:41:42,000 na kitu code ni nini Clang unaweka nje ili kompyuta yako inaweza kusoma mpango. 608 00:41:42,000 --> 00:41:44,000 Hasa. 609 00:41:44,000 --> 00:41:47,000 Chanzo code ni code C kwamba kweli kuyaandika. 610 00:41:47,000 --> 00:41:50,000 Object code ni nini kupata nje ya Clang. 611 00:41:50,000 --> 00:41:54,000 Ni sekunde 0 na 1s katika muundo ambao binary. 612 00:41:54,000 --> 00:41:59,000 Kinachotokea ni wakati wewe kuwa na rundo la files kitu, 613 00:41:59,000 --> 00:42:04,000 wanasema wewe ni kuandaa mradi au mpango kwamba anatumia files nyingi chanzo code, 614 00:42:04,000 --> 00:42:09,000 ambayo kwa mkataba wanapewa c. faili ugani. 615 00:42:09,000 --> 00:42:13,000 Hiyo ndiyo sababu tuna caesar.c, vigenère.c. 616 00:42:13,000 --> 00:42:18,000 Kama wewe ni kuandika mipango Java kuwapa ugani java.. 617 00:42:18,000 --> 00:42:24,000 Chatu programu ugani PY. Mara nyingi. 618 00:42:24,000 --> 00:42:26,000 >> Mara baada ya kuwa nyingi. Files c, wewe kukusanya yao. 619 00:42:26,000 --> 00:42:29,000 Clang mtemi yote hii Junk binary. 620 00:42:29,000 --> 00:42:33,000 Basi, kwa sababu wewe tu unataka 1 mpango 621 00:42:33,000 --> 00:42:37,000 una kiungo linker yote ya kitu hizi files pamoja 622 00:42:37,000 --> 00:42:40,000 ndani ya 1 faili la kutekelezwa. 623 00:42:40,000 --> 00:42:45,000 Hii pia ni kile kinachotokea wakati kutumia maktaba CS50, kwa mfano. 624 00:42:45,000 --> 00:42:50,000 Maktaba CS50 ni wote kwamba h header faili. 625 00:42:50,000 --> 00:42:53,000 kwamba kusoma, kwamba # includecs50.h. 626 00:42:53,000 --> 00:42:58,000 Na basi ni pia maalum binary maktaba faili 627 00:42:58,000 --> 00:43:02,000 hiyo imekuwa compiled kwamba ni sekunde 0 na 1s, 628 00:43:02,000 --> 00:43:08,000 na kwamba-l bendera, hivyo kama sisi kurudi nyuma kwa Spaces yetu na sisi kuangalia kweli haraka 629 00:43:08,000 --> 00:43:11,000 saa nini kinaendelea hapa wakati sisi kuangalia Clang amri yetu, 630 00:43:11,000 --> 00:43:15,000 kile tulichopata ni hii ni chanzo chetu code faili haki hapa. 631 00:43:15,000 --> 00:43:18,000 Hizi ni rundo la bendera compiler. 632 00:43:18,000 --> 00:43:22,000 Na kisha mwishoni sana, hawa-l bendera kiungo katika 633 00:43:22,000 --> 00:43:30,000 halisi binary files kwa maktaba hizi 2, maktaba na kisha CS50 maktaba math. 634 00:43:30,000 --> 00:43:35,000 >> Kuelewa kila aina ya madhumuni files ' 635 00:43:35,000 --> 00:43:38,000 katika mchakato wa kutungwa ni kitu utasikia wanataka kuwa na uwezo wa 636 00:43:38,000 --> 00:43:43,000 kutoa angalau wa ngazi ya juu jumla ya. 637 00:43:43,000 --> 00:43:46,000 Chanzo code huja in code Object hutoka nje. 638 00:43:46,000 --> 00:43:53,000 Object code files zilizounganishwa pamoja, na wewe kupata nzuri, executable file. 639 00:43:53,000 --> 00:43:55,000 Cool. 640 00:43:55,000 --> 00:43:58,000 Hii pia ni wapi unaweza kupata makosa katika pointi nyingi 641 00:43:58,000 --> 00:44:00,000 katika mchakato wa kutungwa. 642 00:44:00,000 --> 00:44:04,000 Hii ni wapi, kwa mfano, kama wewe kuchukua nje hii bendera kuunganisha, 643 00:44:04,000 --> 00:44:10,000 Bendera CS50, na wewe ni katika omit Spaces au wakati wewe ni mbio code yako, 644 00:44:10,000 --> 00:44:13,000 hii ni wapi utasikia kupata kosa katika awamu ya kuunganisha, 645 00:44:13,000 --> 00:44:18,000 na linker watasema, "Hey, wewe kuitwa GetString kazi 646 00:44:18,000 --> 00:44:20,000 kwamba katika maktaba CS50. " 647 00:44:20,000 --> 00:44:25,000 "Wewe aliniambia ilikuwa katika maktaba CS50, na siwezi kupata code kwa hilo." 648 00:44:25,000 --> 00:44:28,000 Hiyo ambapo una kiungo katika, na kwamba ni tofauti 649 00:44:28,000 --> 00:44:33,000 kutoka makosa compiler sababu compiler ni kuangalia syntax na kwamba aina ya mambo ya ajabu. 650 00:44:33,000 --> 00:44:38,000 Ni vizuri kujua nini kinaendelea wakati. 651 00:44:38,000 --> 00:44:42,000 >> Mambo mengine kujua juu. 652 00:44:42,000 --> 00:44:49,000 Naweza kusema wewe dhahiri wanataka kuangalia mfupi juu typecasting kufanyika kwa Yordani 653 00:44:49,000 --> 00:44:55,000 kuelewa nini ints ni chini ya Hood, 654 00:44:55,000 --> 00:44:58,000 nini chars ni chini ya Hood. 655 00:44:58,000 --> 00:45:02,000 Tunapozungumzia kuhusu ASCII na sisi kweli kuangalia meza ASCII, 656 00:45:02,000 --> 00:45:07,000 kile ambacho kufanya anatupa chini ya kuangalia Hood 657 00:45:07,000 --> 00:45:13,000 jinsi ya kompyuta kweli inawakilisha mji mkuu na 7 tarakimu 658 00:45:13,000 --> 00:45:17,000 na comma na swali alama. 659 00:45:17,000 --> 00:45:20,000 kompyuta pia ana njia maalum kuwakilisha 660 00:45:20,000 --> 00:45:23,000 namba 7 kama integer. 661 00:45:23,000 --> 00:45:27,000 Ina njia maalum kuwakilisha namba 7 kama idadi floating uhakika, 662 00:45:27,000 --> 00:45:29,000 na wale ni tofauti sana. 663 00:45:29,000 --> 00:45:32,000 Typecasting ni jinsi kumweleza kompyuta "Hey, mimi nataka kubadili 664 00:45:32,000 --> 00:45:37,000 kutoka uwakilishi moja kwa uwakilishi mwingine. " 665 00:45:37,000 --> 00:45:40,000 Mbona sisi kuangalia kwamba. 666 00:45:40,000 --> 00:45:44,000 >> Napenda pia kuchukua kuangalia mfupi juu ya maktaba na fupi juu ya compilers. 667 00:45:44,000 --> 00:45:47,000 Wale majadiliano kuhusu mchakato wa utungaji, 668 00:45:47,000 --> 00:45:53,000 kile ni maktaba, na kwenda juu ya baadhi ya maswali haya kwamba unaweza kupata aliuliza. 669 00:45:53,000 --> 00:45:55,000 Maswali juu ya Wiki nyenzo 1? 670 00:45:55,000 --> 00:46:03,000 Je, kuna mada katika hapa kwamba wanaonekana daunting Ningependa cover? 671 00:46:03,000 --> 00:46:07,000 Mimi nina kujaribu pigo kupitia wengi wa mada hizi mapema ili tuweze kupata 672 00:46:07,000 --> 00:46:13,000 kuyatumia na kufanya kidogo ya recursion. 673 00:46:13,000 --> 00:46:15,000 Mawazo? 674 00:46:15,000 --> 00:46:19,000 Chochote ili kufidia? 675 00:46:19,000 --> 00:46:21,000 Wakati kwa baadhi chocolate labda? 676 00:46:21,000 --> 00:46:23,000 You guys ni kazi kwa njia hiyo. 677 00:46:23,000 --> 00:46:26,000 Mimi naenda kuweka sipping juu ya kahawa yangu. 678 00:46:26,000 --> 00:46:31,000 Wiki 2. 679 00:46:31,000 --> 00:46:34,000 Nzuri wito, nzuri wito. 680 00:46:34,000 --> 00:46:38,000 Katika Wiki 2 tuliongea kidogo zaidi juu ya kazi. 681 00:46:38,000 --> 00:46:43,000 >> Katika seti ya kwanza wachache tatizo sisi hawakuwa kweli kuandika kazi yoyote wakati wote 682 00:46:43,000 --> 00:46:45,000 nyingine kuliko ambayo kazi? 683 00:46:45,000 --> 00:46:47,000 [Mwanafunzi] Kuu. >> Kuu, hasa. 684 00:46:47,000 --> 00:46:51,000 Na hivyo tumeona kwamba mavazi tofauti kuu wears. 685 00:46:51,000 --> 00:46:54,000 Kuna moja ambayo inachukua hoja hakuna, 686 00:46:54,000 --> 00:46:58,000 na sisi tu kusema utupu katika kati ya mabano, 687 00:46:58,000 --> 00:47:01,000 na kisha kuna mtu mwingine ambapo sisi kufanya wanataka kuchukua hoja mstari amri, 688 00:47:01,000 --> 00:47:08,000 na kama tuliona, hiyo ambapo una argc int na kamba argv safu 689 00:47:08,000 --> 00:47:13,000 au sasa kwamba tumekuwa wazi kweli string kuwa * Char kwamba ni 690 00:47:13,000 --> 00:47:20,000 sisi ni kwenda kuanza kuandika ni kama Char * argv na kisha mabano. 691 00:47:20,000 --> 00:47:22,000 Katika Tatizo Set 3, you guys alipoona rundo ya utendaji, 692 00:47:22,000 --> 00:47:27,000 na wewe kutekelezwa rundo la kazi, kuteka, kuangalia juu, kinyang'anyiro. 693 00:47:27,000 --> 00:47:31,000 prototypes walikuwa yote yaliyoandikwa pale kwa ajili yenu. 694 00:47:31,000 --> 00:47:33,000 >> Nini nilitaka kuzungumzia hapa na kazi kweli haraka 695 00:47:33,000 --> 00:47:38,000 ni kwamba kuna sehemu 3 kwao wakati wowote wewe kuandika kazi. 696 00:47:38,000 --> 00:47:43,000 Una bayana aina ya kurudi kwa kazi. 697 00:47:43,000 --> 00:47:46,000 Una kubainisha jina kwa ajili ya kazi, na kisha una bayana 698 00:47:46,000 --> 00:47:51,000 orodha hoja au orodha parameter. 699 00:47:51,000 --> 00:47:57,000 Kwa mfano, kama ningekuwa kuandika kazi kwa jumla juu ya rundo la integers 700 00:47:57,000 --> 00:48:03,000 na kisha kurudi kwangu Jumla nini itakuwa marejeo yangu aina 701 00:48:03,000 --> 00:48:06,000 kama alitaka sum integers na kisha kurudi Jumla? 702 00:48:06,000 --> 00:48:12,000 Kisha jina la kazi. 703 00:48:12,000 --> 00:48:27,000 Kama mimi kwenda mbele na kuandika katika kijani, sehemu hii ni aina ya kurudi. 704 00:48:27,000 --> 00:48:34,000 Hii sehemu ni jina. 705 00:48:34,000 --> 00:48:40,000 Na kisha katika kati ya mabano 706 00:48:40,000 --> 00:48:46,000 ni ambapo mimi kutoa hoja, 707 00:48:46,000 --> 00:48:56,000 mara nyingi hufupishwa kama args, wakati mwingine inaitwa zilizounganishwa kwa vigezo. 708 00:48:56,000 --> 00:49:00,000 Na kama una moja, wewe tu kutaja moja. 709 00:49:00,000 --> 00:49:06,000 Kama una nyingi wewe kujitenga kila moja kwa koma. 710 00:49:06,000 --> 00:49:13,000 Na kwa hoja ya kila wewe kuwapa mambo ambayo ni 2-Kevin? 711 00:49:13,000 --> 00:49:18,000 [Kevin] Wewe kutoa aina na kisha jina. 712 00:49:18,000 --> 00:49:21,000 Na kisha jina, na jina ni jina kwamba utaenda kutumia 713 00:49:21,000 --> 00:49:25,000 kwa kutaja hoja kuwa ndani ya kazi jumla, 714 00:49:25,000 --> 00:49:27,000 ndani ya kazi kwamba wewe sasa kuandika. 715 00:49:27,000 --> 00:49:32,000 >> Huna kwa-kwa mfano, ikiwa mimi nina kwenda sum up, 716 00:49:32,000 --> 00:49:41,000 kusema, safu ya integers-we'll kufanya safu int, 717 00:49:41,000 --> 00:49:46,000 na mimi nitakupa mwenyewe braces baadhi curly kuna- 718 00:49:46,000 --> 00:49:51,000 basi wakati mimi kupita safu ya kazi Jumla 719 00:49:51,000 --> 00:49:55,000 Mimi kupita katika nafasi ya kwanza ya orodha hoja. 720 00:49:55,000 --> 00:49:59,000 Lakini safu kwamba mimi kupita katika hana kuwa arr jina. 721 00:49:59,000 --> 00:50:07,000 Arr ni kwenda kuwa jinsi mimi rejea hoja kuwa ndani ya mwili wa kazi. 722 00:50:07,000 --> 00:50:10,000 Kitu nyingine kwamba tunahitaji kuchukua katika akaunti, 723 00:50:10,000 --> 00:50:14,000 na hii ni tofauti kidogo kutoka kazi, lakini nadhani ni hatua muhimu, 724 00:50:14,000 --> 00:50:20,000 ni kwamba katika C wakati mimi nina maandishi kazi kama hii 725 00:50:20,000 --> 00:50:29,000 jinsi gani mimi kujua jinsi wengi mambo ni katika safu hii? 726 00:50:29,000 --> 00:50:31,000 Hii ni kiasi fulani ya swali hila. 727 00:50:31,000 --> 00:50:35,000 Kuongelea hii kidogo kidogo katika sehemu ya mwisho wa wiki. 728 00:50:35,000 --> 00:50:40,000 Nitajuaje idadi ya vipengele ndani ya safu katika C? 729 00:50:40,000 --> 00:50:44,000 Je, kuna njia? 730 00:50:44,000 --> 00:50:49,000 >> Ni zinageuka kuwa hakuna njia ya kujua. 731 00:50:49,000 --> 00:50:52,000 Una kupita katika tofauti. 732 00:50:52,000 --> 00:50:55,000 Kuna hila ambayo unaweza kufanya 733 00:50:55,000 --> 00:51:00,000 kama wewe ni katika kazi moja katika safu ambayo imekuwa alitangaza, 734 00:51:00,000 --> 00:51:04,000 na wewe ni kufanya kazi pamoja na safu stack. 735 00:51:04,000 --> 00:51:06,000 Lakini hiyo kazi tu kama wewe ni katika kazi moja. 736 00:51:06,000 --> 00:51:09,000 Mara baada ya kupita safu ya kazi nyingine au kama umefanya alitangaza safu 737 00:51:09,000 --> 00:51:12,000 na wewe kuweka kwamba safu juu ya chungu, umetumia malloc 738 00:51:12,000 --> 00:51:15,000  na kwamba aina ya mambo, basi wote Bets ni mbali. 739 00:51:15,000 --> 00:51:18,000 Kisha wewe kweli kuwa kupita kote 740 00:51:18,000 --> 00:51:21,000 hoja maalum au mwingine parameter 741 00:51:21,000 --> 00:51:23,000 ninawaambieni jinsi kubwa ni safu. 742 00:51:23,000 --> 00:51:28,000 Katika kesi hiyo, ningependa wanataka kutumia comma-I'm sorry, ni kwenda mbali screen hapa- 743 00:51:28,000 --> 00:51:32,000 na ningependa kupita katika hoja nyingine 744 00:51:32,000 --> 00:51:40,000  na simu yake int len ​​kwa urefu. 745 00:51:40,000 --> 00:51:44,000 >> Jambo moja kwamba wanaweza kuja juu ya jaribio 746 00:51:44,000 --> 00:51:49,000 inakuomba kuandika au kutekeleza kazi fulani kuitwa kitu. 747 00:51:49,000 --> 00:51:54,000 Kama hatuwezi kukupa mfano, ili jambo hili zima hapa, 748 00:51:54,000 --> 00:51:58,000 fujo hii yote inaitwa tamko kazi au mfano kazi, 749 00:51:58,000 --> 00:52:01,000 hii ni moja ya mambo ya kwanza utasikia wanataka msumari chini kama si kupewa 750 00:52:01,000 --> 00:52:03,000 na wewe haki ya mbali juu ya chemsha bongo. 751 00:52:03,000 --> 00:52:06,000 hila nyingine mimi wameweza kujifunza ni kwamba 752 00:52:06,000 --> 00:52:11,000 wanasema sisi kufanya kukupa mfano kwa ajili ya kazi, na sisi kusema, "Hey, nimepata kuandika." 753 00:52:11,000 --> 00:52:16,000 Ndani ya braces curly kwamba una juu ya jaribio 754 00:52:16,000 --> 00:52:20,000 ikiwa utaona kwamba kuna aina kurudi na taarifa kwamba aina ya kurudi 755 00:52:20,000 --> 00:52:25,000 ni kitu kingine zaidi ya batili, ambayo ina maana kwamba kazi haina kurudi kitu chochote, 756 00:52:25,000 --> 00:52:28,000 basi jambo moja dhahiri wanataka kufanya ni kuandika 757 00:52:28,000 --> 00:52:33,000 baadhi ya aina ya kauli kurudi mwishoni sana ya kazi. 758 00:52:33,000 --> 00:52:40,000 Kurudi, na katika kesi hii, tutaweza kuweka tupu kwa sababu tunataka kujaza tupu. 759 00:52:40,000 --> 00:52:44,000 Lakini hii anapata wewe kufikiri katika njia ya haki kuhusu jinsi mimi kwenda kwa mbinu na tatizo hili? 760 00:52:44,000 --> 00:52:49,000 Na ni kuwakumbusha utaenda kuwa na kurudi thamani 761 00:52:49,000 --> 00:52:51,000 kwa mpigaji wa kazi. 762 00:52:51,000 --> 00:52:54,000 >> Yeah. >> [Mwanafunzi] Je style kuomba wakati sisi ni kuandika code juu ya chemsha bongo? 763 00:52:54,000 --> 00:52:58,000 Vile kama indentation na kwamba aina ya stuff? >> [Mwanafunzi] Yeah. 764 00:52:58,000 --> 00:53:00,000 Hapana, si kama mengi. 765 00:53:00,000 --> 00:53:09,000 Nadhani mengi ya-hii ni kitu tutaweza kufafanua juu ya chemsha bongo juu ya siku ya, 766 00:53:09,000 --> 00:53:15,000 lakini kwa kawaida ni pamoja na hofu juu ya # na kwamba aina ya mambo, ni aina ya nje. 767 00:53:15,000 --> 00:53:17,000 [Mwanafunzi] Je, unahitaji kutoa maoni yako code handwritten? 768 00:53:17,000 --> 00:53:19,000 Je, unahitaji kutoa maoni yako code handwritten? 769 00:53:19,000 --> 00:53:24,000 Akizungumza daima ni nzuri kama una wasiwasi kuhusu mikopo ubaguzi 770 00:53:24,000 --> 00:53:29,000 au unataka kuwasiliana dhamira yako kwa grader. 771 00:53:29,000 --> 00:53:33,000 Lakini mimi, tena, utathibitisha juu ya chemsha bongo yenyewe na juu ya siku quiz, 772 00:53:33,000 --> 00:53:39,000 lakini mimi siamini kwamba utahitajika kuandika maoni, hakuna. 773 00:53:39,000 --> 00:53:42,000 Kawaida si, lakini ni dhahiri aina ya kitu ambapo 774 00:53:42,000 --> 00:53:45,000 unaweza kuelezea nia yako, kama "Hey, hii ni pale ambapo mimi nina kwenda kwa hayo." 775 00:53:45,000 --> 00:53:49,000 Na wakati mwingine ambayo inaweza kusaidia kwa mikopo ubaguzi. 776 00:53:49,000 --> 00:53:51,000 Cool. 777 00:53:51,000 --> 00:53:53,000 >> Basil. 778 00:53:53,000 --> 00:53:56,000 [Basil] Nini tofauti kati ya kutangaza, kusema, int lang 779 00:53:56,000 --> 00:54:03,000 katika hoja au vigezo dhidi ya kutangaza variable ndani ya kazi? 780 00:54:03,000 --> 00:54:05,000 Wow, kahawa akashuka windpipe. 781 00:54:05,000 --> 00:54:07,000 [Basil] Kama ambavyo mambo sisi tunataka kuweka katika hoja. 782 00:54:07,000 --> 00:54:09,000 Yeah, hiyo ni swali kubwa. 783 00:54:09,000 --> 00:54:11,000 Jinsi gani unaweza kuchagua nini mambo unataka kuweka katika hoja 784 00:54:11,000 --> 00:54:17,000 dhidi ya mambo unapaswa kufanya ndani ya kazi? 785 00:54:17,000 --> 00:54:24,000 Katika kesi hii sisi ni pamoja na wawili hawa kama hoja 786 00:54:24,000 --> 00:54:29,000 kwa sababu wao ni kitu ambacho yeyote ataenda kutumia kazi Jumla 787 00:54:29,000 --> 00:54:32,000 inahitaji bayana mambo hayo. 788 00:54:32,000 --> 00:54:35,000 >> kazi Jumla, kama kuongelea, hana njia ya kujua 789 00:54:35,000 --> 00:54:40,000 jinsi kubwa ni safu anapata kutoka mpigaji wake au mwenye kutumia kazi jibu. 790 00:54:40,000 --> 00:54:44,000 Ina hakuna njia ya kujua jinsi kubwa safu kwamba ni. 791 00:54:44,000 --> 00:54:48,000 sababu sisi kupita katika urefu haki hii hapa kama hoja 792 00:54:48,000 --> 00:54:51,000 ni kwa sababu hiyo ni kitu ambacho sisi ni kimsingi kuwaambia mpigaji wa kazi, 793 00:54:51,000 --> 00:54:55,000 yeyote ataenda kutumia kazi jumla, "Hey, si tu una kutupa safu 794 00:54:55,000 --> 00:54:59,000 ya ints, wewe pia kutuambia jinsi kubwa safu kwamba ve ametupa ni. " 795 00:54:59,000 --> 00:55:03,000 [Basil] Wale wote wawili kuwa amri line hoja? 796 00:55:03,000 --> 00:55:06,000 Hapana, hawa ni halisi hoja kwamba ungependa kupita kwa kazi. 797 00:55:06,000 --> 00:55:10,000 >> Hebu kufanya ukurasa mpya hapa. 798 00:55:10,000 --> 00:55:13,000 [Basil] Kama jina ingekuwa kupita- 799 00:55:13,000 --> 00:55:24,000 [Nate H.] Kama mimi na int kuu (utupu), 800 00:55:24,000 --> 00:55:27,000 na mimi naenda kuweka katika kurudi 0 yangu hapa chini kwa chini, 801 00:55:27,000 --> 00:55:31,000 na kusema nataka kuita kazi jibu. 802 00:55:31,000 --> 00:55:42,000 Mimi nataka kusema int x = Jumla (); 803 00:55:42,000 --> 00:55:46,000 Kutumia kazi Jumla nina kupita katika safu wote kwamba mimi nataka jumla juu 804 00:55:46,000 --> 00:55:51,000 na urefu wa safu, hivyo hii ni mahali ambapo 805 00:55:51,000 --> 00:55:54,000 kuchukua nilikuwa safu ya ints, 806 00:55:54,000 --> 00:56:12,000 kusema nilikuwa int numbaz [] = 1, 2, 3, 807 00:56:12,000 --> 00:56:16,000 aina ya matumizi ya kwamba hacked up syntax haki pale, 808 00:56:16,000 --> 00:56:21,000 kisha kile atafanya ni katika jumla napenda nataka kupita katika 809 00:56:21,000 --> 00:56:27,000 wote numbaz na namba 3 810 00:56:27,000 --> 00:56:30,000 kuwaambia kazi Jumla "Okay, hapa safu Mimi nataka wewe sum." 811 00:56:30,000 --> 00:56:34,000 "Hapa ni kawaida yake." 812 00:56:34,000 --> 00:56:39,000 Je, hiyo mantiki? Je, hiyo kujibu swali lako? 813 00:56:39,000 --> 00:56:42,000 >> Kwa njia nyingi ni gani sambamba nini tuko kufanya na kuu 814 00:56:42,000 --> 00:56:44,000 wakati tuna hoja mstari amri. 815 00:56:44,000 --> 00:56:47,000 mpango kama Kaisari cipher, kwa mfano, kwamba zinahitajika 816 00:56:47,000 --> 00:56:53,000 amri line hoja bila kuwa na uwezo wa kufanya chochote. 817 00:56:53,000 --> 00:56:57,000 Itakuwa si kujua jinsi ya encrypt kama hakuwa na kuwaambia ni nini muhimu ya kutumia 818 00:56:57,000 --> 00:57:03,000 au kama wewe hakumwambia ni nini string alitaka encrypt. 819 00:57:03,000 --> 00:57:08,000 Uvuvio kwa ajili ya pembejeo, hii ni mahali ambapo sisi tumepewa 2 taratibu mbalimbali 820 00:57:08,000 --> 00:57:14,000 kwa ajili ya kuchukua pembejeo katika kutoka kwa mtumiaji, kwa ajili ya kuchukua habari katika kutoka kwa mtumiaji. 821 00:57:14,000 --> 00:57:19,000 Kwa Matatizo Kuweka 1 tuliona hii GetInt, GetString, GetFloat njia 822 00:57:19,000 --> 00:57:26,000 ya uvuvio kwa ajili ya pembejeo, na kwamba wito kwa kutumia kiwango pembejeo mkondo. 823 00:57:26,000 --> 00:57:28,000 Ni tofauti kidogo. 824 00:57:28,000 --> 00:57:31,000 Ni kitu ambacho unaweza kufanya kwa wakati mmoja kama kinyume na 825 00:57:31,000 --> 00:57:35,000 wakati wewe waomba mpango, wakati wa kuanza mpango mbio. 826 00:57:35,000 --> 00:57:41,000 hoja mstari amri zote ni maalum wakati wa kuanza mbio mpango. 827 00:57:41,000 --> 00:57:47,000 Sisi tumekuwa kuchanganya mbili ya wale. 828 00:57:47,000 --> 00:57:52,000 Wakati sisi kutumia hoja ya kazi, ni kiasi kama hoja mstari amri kwa kuu. 829 00:57:52,000 --> 00:57:56,000 Ni wakati wewe waomba kazi unahitaji liambie 830 00:57:56,000 --> 00:58:05,000 nini hasa inahitaji ili kufanya kazi yake. 831 00:58:05,000 --> 00:58:08,000 Jambo jingine nzuri kuangalia-na mimi itabidi basi ukiangalia hiyo katika muda wako wa vipuri, 832 00:58:08,000 --> 00:58:11,000 na ilikuwa imefunikwa katika jaribio-ilikuwa wazo hili la wigo 833 00:58:11,000 --> 00:58:15,000 na mitaa vigezo dhidi ya vigezo kimataifa. 834 00:58:15,000 --> 00:58:18,000 Je, makini na hilo. 835 00:58:18,000 --> 00:58:23,000 >> Sasa kwamba sisi ni kupata juu ya mambo haya mengine, 836 00:58:23,000 --> 00:58:27,000 katika Wiki 3 tulipoanza kuzungumza kuhusu kutafuta na kuchagua. 837 00:58:27,000 --> 00:58:32,000 Kutafuta na kuchagua, angalau katika CS50, 838 00:58:32,000 --> 00:58:39,000 ni mengi sana kuanzishwa kwa baadhi ya sehemu zaidi ya nadharia ya sayansi ya kompyuta. 839 00:58:39,000 --> 00:58:42,000 tatizo la kutafuta, tatizo la kuchagua 840 00:58:42,000 --> 00:58:46,000 ni kubwa, kisheria matatizo. 841 00:58:46,000 --> 00:58:52,000 Jinsi gani unaweza kupata idadi fulani katika safu ya mabilioni ya integers? 842 00:58:52,000 --> 00:58:55,000 Jinsi gani unaweza kupata jina fulani ndani ya kitabu cha simu 843 00:58:55,000 --> 00:58:59,000 ambayo imehifadhiwa kwenye Laptop yako? 844 00:58:59,000 --> 00:59:04,000 Na hivyo kuanzisha wazo hili la mara asymptotic kukimbia 845 00:59:04,000 --> 00:59:11,000 kwa kweli kupima muda gani, jinsi ngumu tatizo haya ni, 846 00:59:11,000 --> 00:59:14,000 muda gani kuchukua kutatua. 847 00:59:14,000 --> 00:59:20,000 Katika, naamini, quiz 2011 humo, kuna tatizo kwamba nadhani mastahili 848 00:59:20,000 --> 00:59:27,000 kufunika kwa haraka sana, ambayo ni hii moja, tatizo 12. 849 00:59:27,000 --> 00:59:32,000 O hakuna, ni Omega. 850 00:59:32,000 --> 00:59:41,000 >> Hapa tunazungumzia muda wa kasi iwezekanavyo kukimbia 851 00:59:41,000 --> 00:59:46,000 kwa algorithm fulani na kisha slowest iwezekanavyo wakati kukimbia. 852 00:59:46,000 --> 00:59:52,000 Hii Omega na O ni kweli tu njia za mkato. 853 00:59:52,000 --> 00:59:55,000 Wao ni notational shortcuts kwa kusema 854 00:59:55,000 --> 00:59:59,000 jinsi ya kufunga katika kesi bora mapenzi algorithm wetu kukimbia, 855 00:59:59,000 --> 01:00:06,000 na jinsi polepole katika kesi mbaya zaidi kutokea itakuwa algorithm wetu kukimbia? 856 01:00:06,000 --> 01:00:10,000 Hebu kufanya michache ya haya, na haya pia yalipendekezwa 857 01:00:10,000 --> 01:00:13,000 katika muda mfupi juu ya nukuu asymptotic, ambayo mimi sana kupendekeza. 858 01:00:13,000 --> 01:00:17,000 Jackson alifanya kazi nzuri kwa kweli. 859 01:00:17,000 --> 01:00:23,000 Pamoja na tafuta binary, tunazungumzia kuhusu tafuta binary kama kuwa algorithm, 860 01:00:23,000 --> 01:00:28,000 na sisi kwa kawaida kuzungumza juu yake katika suala la O. yake kubwa 861 01:00:28,000 --> 01:00:30,000 Nini ni O kubwa? 862 01:00:30,000 --> 01:00:34,000 Nini ni madogo zaidi iwezekanavyo kukimbia wakati wa tafuta binary? 863 01:00:34,000 --> 01:00:36,000 [Mwanafunzi] N ²? 864 01:00:36,000 --> 01:00:41,000 Close, mimi nadhani sawa na kwamba. 865 01:00:41,000 --> 01:00:43,000 Ni mengi zaidi kuliko hiyo. 866 01:00:43,000 --> 01:00:45,000 [Mwanafunzi] binary? >> Yeah, binary tafuta. 867 01:00:45,000 --> 01:00:47,000 [Mwanafunzi] Ni logi n. 868 01:00:47,000 --> 01:00:49,000 Ingia n, hivyo nini kuingia n maana? 869 01:00:49,000 --> 01:00:51,000 Ni halves hivyo kila iteration. 870 01:00:51,000 --> 01:00:56,000 Hasa, hivyo katika kesi slowest inawezekana, 871 01:00:56,000 --> 01:01:00,000 kusema kama una safu sorted 872 01:01:00,000 --> 01:01:08,000 ya integers milioni na idadi wewe ni kuangalia kwa 873 01:01:08,000 --> 01:01:14,000 aidha ni kipengele sana kwanza katika safu au kipengele sana mwisho katika safu. 874 01:01:14,000 --> 01:01:18,000 Kumbuka, binary tafuta algorithm kazi kwa kuangalia kipengele katikati, 875 01:01:18,000 --> 01:01:21,000 kuona kama kwamba ni mechi kwamba wewe ni kuangalia kwa. 876 01:01:21,000 --> 01:01:23,000 Kama ni, basi kubwa, wewe kupatikana. 877 01:01:23,000 --> 01:01:27,000 >> Katika kesi bora, jinsi ya kufunga haina binary tafuta kukimbia? 878 01:01:27,000 --> 01:01:29,000 [Wanafunzi] 1. 879 01:01:29,000 --> 01:01:32,000 1, ni mara kwa mara wakati, kubwa O ya 1. Yeah. 880 01:01:32,000 --> 01:01:36,000 [Mwanafunzi] nina swali. Wakati kusema logi ya n, maana kwa heshima na msingi 2, sawa? 881 01:01:36,000 --> 01:01:40,000 Ndiyo, hivyo hilo ni jambo nyingine. 882 01:01:40,000 --> 01:01:44,000 Sisi tunasema n logi, na mimi nadhani wakati mimi nilikuwa katika shule ya sekondari 883 01:01:44,000 --> 01:01:48,000 Mimi daima kudhani kuwa logi ilikuwa msingi 10. 884 01:01:48,000 --> 01:01:57,000 Yeah, hivyo ndiyo, ingia msingi 2 kawaida ni nini sisi kutumia. 885 01:01:57,000 --> 01:02:02,000 Tena, kurejea tafuta binary, kama wewe ni kwa ajili ya kutafuta ama 886 01:02:02,000 --> 01:02:05,000 kipengele mwishoni sana au kipengele katika mwanzo sana, 887 01:02:05,000 --> 01:02:08,000 kwa sababu ya kuanza katikati na kisha wewe Discard 888 01:02:08,000 --> 01:02:13,000 namna yoyote nusu haifikii vigezo kwamba wewe ni kuangalia kwa, 889 01:02:13,000 --> 01:02:15,000 na wewe uende kwa nusu ya pili na nusu ujao na nusu ijayo. 890 01:02:15,000 --> 01:02:19,000 Kama mimi nina kwa ajili ya kutafuta kipengele kubwa katika safu milioni integer 891 01:02:19,000 --> 01:02:25,000 Mimi naenda kupunguza nusu yake katika logi zaidi ya mara milioni 1 892 01:02:25,000 --> 01:02:28,000 kabla mimi hatimaye kupima na kuona kwamba kipengele nina kuangalia kwa 893 01:02:28,000 --> 01:02:33,000 ni katika kubwa au katika ripoti juu ya safu, 894 01:02:33,000 --> 01:02:38,000 na kwamba itachukua logi ya n, logi ya mara milioni 1. 895 01:02:38,000 --> 01:02:40,000 >> Bubble aina. 896 01:02:40,000 --> 01:02:43,000 Je guys kukumbuka aina Bubble algorithm? 897 01:02:43,000 --> 01:02:47,000 Kevin, unaweza kunipa recap ya haraka ya kile kilichotokea katika algorithm aina Bubble? 898 01:02:47,000 --> 01:02:50,000 [Kevin] Kimsingi huenda kwa njia ya kila kitu katika orodha. 899 01:02:50,000 --> 01:02:52,000 Inaangalia mbili kwanza. 900 01:02:52,000 --> 01:02:55,000 Kama moja ya kwanza ni kubwa kuliko ya pili ni swaps yao. 901 01:02:55,000 --> 01:02:58,000 Kisha inalinganishwa pili na wa tatu, kitu kimoja swaps, 902 01:02:58,000 --> 01:03:00,000 tatu na nne, kila njia ya chini. 903 01:03:00,000 --> 01:03:03,000 Bigger idadi kufuata hadi mwisho. 904 01:03:03,000 --> 01:03:07,000 Na baada ya matanzi hata hivyo wengi wewe ni kosa. 905 01:03:07,000 --> 01:03:11,000 Hasa, hivyo nini Kevin alisema ni kwamba tutaweza kuangalia idadi kubwa 906 01:03:11,000 --> 01:03:15,000 Bubble hadi mwisho wa safu. 907 01:03:15,000 --> 01:03:19,000 Kwa mfano, je, wewe akili kutembea kwetu kupitia mfano huu kama hii ni safu yetu? 908 01:03:19,000 --> 01:03:21,000 [Kevin] Wewe itabidi kuchukua 2 na 3. 909 01:03:21,000 --> 01:03:23,000 3 ni kubwa kuliko 2, hivyo byta yao. 910 01:03:23,000 --> 01:03:29,000 [Nate H.] sawa, hivyo sisi byta hizi, na hivyo kupata 2, 3, 6, 4, na 9. 911 01:03:29,000 --> 01:03:31,000 [Kevin] Kisha kulinganisha 3 na 6. 912 01:03:31,000 --> 01:03:33,000 3 ni ndogo kuliko 6, hivyo waache, 913 01:03:33,000 --> 01:03:37,000 na 6 na 4, wewe d byta yao kwa sababu 4 ni ndogo kuliko 6. 914 01:03:37,000 --> 01:03:42,000 [Nate H.] sawa, hivyo mimi kupata 2, 3, 4, 6, 9. 915 01:03:42,000 --> 01:03:46,000 [Kevin] Na 9 ni kubwa kuliko 6, hivyo kuondoka. 916 01:03:46,000 --> 01:03:48,000 Na wewe d kwenda nyuma kupitia tena. 917 01:03:48,000 --> 01:03:50,000 >> [Nate H.] Am I kufanyika katika hatua hii >> [Kevin] No? 918 01:03:50,000 --> 01:03:52,000 Na kwa nini mimi si kufanyika katika hatua hii? 919 01:03:52,000 --> 01:03:54,000 Kwa sababu inaonekana ni kama safu yangu ni Iliyopangwa. Mimi nina kuangalia saa yake. 920 01:03:54,000 --> 01:03:57,000 [Kevin] Nenda kwa njia hiyo tena na kuhakikisha kwamba hakuna zaidi swaps 921 01:03:57,000 --> 01:04:00,000 kabla unaweza kikamilifu kuacha. 922 01:04:00,000 --> 01:04:04,000 Hasa, hivyo unahitaji kuendelea kupitia na kuhakikisha kwamba hakuna swaps 923 01:04:04,000 --> 01:04:06,000 kwamba unaweza kufanya katika hatua hii. 924 01:04:06,000 --> 01:04:08,000 Ni kweli tu bahati, kama wewe alisema, kwamba sisi kuishia 925 01:04:08,000 --> 01:04:12,000 tu baada ya kufanya 1 kupita na sisi ni Iliyopangwa. 926 01:04:12,000 --> 01:04:16,000 Lakini kwa kufanya hii katika kesi ya jumla tutaweza kweli kufanya hii tena na tena. 927 01:04:16,000 --> 01:04:20,000 Na kwa kweli, hii ilikuwa mfano wa kesi bora iwezekanavyo, 928 01:04:20,000 --> 01:04:24,000 kama tulivyoona katika tatizo. 929 01:04:24,000 --> 01:04:28,000 Tuliona kwamba kesi bora ilikuwa n. 930 01:04:28,000 --> 01:04:32,000 Tulipitia wakati safu 1. 931 01:04:32,000 --> 01:04:35,000 Je, ni kesi mbaya zaidi kutokea kwa algorithm hii? 932 01:04:35,000 --> 01:04:37,000 [Kevin] N ². 933 01:04:37,000 --> 01:04:41,000 Na nini kuangalia kwamba kama? Nini kuangalia safu kama hiyo bila kuchukua n ² muda? 934 01:04:41,000 --> 01:04:43,000 [Kevin] [inaudible] Iliyopangwa. 935 01:04:43,000 --> 01:04:51,000 Hasa, hivyo kama mimi alikuwa na safu 9, 7, 6, 5, 2, 936 01:04:51,000 --> 01:04:54,000 kwanza 9 ingekuwa Bubble njia yote juu. 937 01:04:54,000 --> 01:04:59,000 Baada iteration 1 tunatarajia kuwa na 7, 6, 5, 2, 9. 938 01:04:59,000 --> 01:05:07,000 Kisha 7 ingekuwa tutuka, 6, 5, 2, 7, 9, na kadhalika na kadhalika. 939 01:05:07,000 --> 01:05:13,000 >> Tunatarajia kwenda kupitia safu nzima n nyakati, 940 01:05:13,000 --> 01:05:16,000 na unaweza kweli kupata kidogo sahihi zaidi kuliko huu 941 01:05:16,000 --> 01:05:23,000 sababu mara tumekuwa wakiongozwa 9 njia yote juu katika nafasi yake ya mwisho iwezekanavyo 942 01:05:23,000 --> 01:05:26,000 Tunajua kwamba sisi kamwe kuwa na kulinganisha dhidi ya kipengele kwamba tena. 943 01:05:26,000 --> 01:05:29,000 Mara sisi kuanza bubbling 7 hadi 944 01:05:29,000 --> 01:05:35,000 Tunajua kwamba sisi inaweza kuacha mara moja 7 ni sawa mbele ya 9 945 01:05:35,000 --> 01:05:37,000 tangu tumekuwa tayari ikilinganishwa 9 kwa hiyo. 946 01:05:37,000 --> 01:05:46,000 Kama wewe kufanya hili katika njia smart siyo kweli, mimi nadhani, kwamba muda kiasi. 947 01:05:46,000 --> 01:05:49,000 Wewe hutaenda kulinganisha inawezekana wote [inaudible] michanganyiko 948 01:05:49,000 --> 01:05:55,000 kila wakati kwenda kwa njia ya kila iteration. 949 01:05:55,000 --> 01:05:59,000 Lakini bado, tunapozungumzia amefungwa hii juu sisi kusema kwamba 950 01:05:59,000 --> 01:06:04,000 wewe ni kuangalia n ² kulinganisha wote njia ya kupitia. 951 01:06:04,000 --> 01:06:12,000 >> Hebu kwenda nyuma, na tangu tuko mapya ya kupata kidogo mfupi juu ya wakati 952 01:06:12,000 --> 01:06:15,000 Naweza kusema unapaswa dhahiri kupitia mapumziko ya meza hii, 953 01:06:15,000 --> 01:06:17,000 kujaza yote nje. 954 01:06:17,000 --> 01:06:20,000 Fikiria mifano. Fikiria mifano halisi. 955 01:06:20,000 --> 01:06:22,000 Hiyo ni kweli Handy na kusaidia kufanya. 956 01:06:22,000 --> 01:06:25,000 Atayateka. 957 01:06:25,000 --> 01:06:28,000 Hii ni aina ya meza hiyo kama kupitia katika sayansi ya kompyuta 958 01:06:28,000 --> 01:06:32,000 unapaswa kweli kuanza kujua haya moyo kwa. 959 01:06:32,000 --> 01:06:34,000 Hizi ni aina ya maswali ya kupata katika mahojiano. 960 01:06:34,000 --> 01:06:36,000 Hizi ni aina ya mambo ambayo ni vizuri kujua, 961 01:06:36,000 --> 01:06:41,000 na fikiria juu ya kesi hizo makali, kweli kuhesabia nje ya jinsi ya kufikiri juu ya 962 01:06:41,000 --> 01:06:45,000 tukijua kwamba kwa Bubble aina safu mbaya zaidi kutokea 963 01:06:45,000 --> 01:06:52,000 kuchambua na kwamba ni moja ambayo ili reverse. 964 01:06:52,000 --> 01:06:58,000 >> Kuyatumia. Hebu kuzungumza kidogo kuhusu kuyatumia. 965 01:06:58,000 --> 01:07:03,000 Katika dakika chache zilizopita sisi hapa 966 01:07:03,000 --> 01:07:11,000 Mimi najua hili ni jambo pamoja na faili I / O kwamba ni badala mpya. 967 01:07:11,000 --> 01:07:19,000 Tunapozungumzia kuhusu sababu kuyatumia tunataka kuzungumza juu ya kuyatumia 968 01:07:19,000 --> 01:07:24,000 ni kwa sababu, moja, wakati sisi ni kazi katika C 969 01:07:24,000 --> 01:07:33,000 sisi ni kweli katika ngazi ya haki ya chini ikilinganishwa na ya kisasa zaidi ya programu lugha. 970 01:07:33,000 --> 01:07:38,000 Sisi ni kweli na uwezo wa kuendesha vigezo katika kumbukumbu, 971 01:07:38,000 --> 01:07:43,000 takwimu nje ambapo ni kweli iko ndani ya RAM yetu. 972 01:07:43,000 --> 01:07:46,000 Mara ve gone juu ya kuchukua madarasa mfumo wa uendeshaji utaona 973 01:07:46,000 --> 01:07:48,000 kwamba hiyo ni, tena, aina ya matumizi. 974 01:07:48,000 --> 01:07:50,000 Hiyo si kweli kesi. 975 01:07:50,000 --> 01:07:52,000 Sisi tumepewa kumbukumbu virtual hiyo mafichoni wale maelezo kutoka kwetu. 976 01:07:52,000 --> 01:07:58,000 >> Lakini kwa sasa unaweza kudhani kwamba wakati una mpango, 977 01:07:58,000 --> 01:08:02,000 kwa mfano, wakati wa kuanza mbio yako Kaisari cipher mpango- 978 01:08:02,000 --> 01:08:06,000 Mimi itabidi kubadili nyuma kwa iPad wangu kweli haraka- 979 01:08:06,000 --> 01:08:12,000 kwamba katika mpango wa mwanzo yako, kama una, kusema, 980 01:08:12,000 --> 01:08:15,000 4 gigabytes ya RAM kwenye Laptop yako, 981 01:08:15,000 --> 01:08:21,000 kupata kuweka kando hii chunk, na tutaweza wito huu RAM. 982 01:08:21,000 --> 01:08:25,000 Na ni kuanza katika mahali tunakwenda kuwaita 0, 983 01:08:25,000 --> 01:08:30,000 na inaishia katika eneo ambalo Tutamwita gigabytes 4. 984 01:08:30,000 --> 01:08:37,000 Mimi kwa kweli hawezi kuandika. Mtu, kwamba ni hacked. 985 01:08:37,000 --> 01:08:40,000 Wakati mpango wako executes 986 01:08:40,000 --> 01:08:44,000 mfumo wa uendeshaji carves up RAM, 987 01:08:44,000 --> 01:08:51,000 na ni bayana makundi mbalimbali kwa ajili ya sehemu mbalimbali za programu yako ya kuishi ndani 988 01:08:51,000 --> 01:08:58,000 Chini hapa eneo hili ni aina ya nchi za mtu yeyote. 989 01:08:58,000 --> 01:09:02,000 Wakati wewe kwenda mbele kidogo hapa 990 01:09:02,000 --> 01:09:05,000 nimepata kweli mahali ambapo 991 01:09:05,000 --> 01:09:09,000 code kwa maisha yako mpango. 992 01:09:09,000 --> 01:09:13,000 Hiyo halisi code binary, faili kwamba executable kweli anapata kubeba katika kumbukumbu 993 01:09:13,000 --> 01:09:17,000 wakati kukimbia mpango, na anaishi katika sehemu code. 994 01:09:17,000 --> 01:09:22,000 Na kama programu yako executes processor inaangalia sehemu hii code 995 01:09:22,000 --> 01:09:24,000 kufikiri nini ni mafundisho ya pili? 996 01:09:24,000 --> 01:09:27,000 Je, ni line ya pili ya code nahitaji nitafanya? 997 01:09:27,000 --> 01:09:31,000 >> Kuna pia sehemu data, na hii ni mahali ambapo constants string wale 998 01:09:31,000 --> 01:09:34,000 kupata kuhifadhiwa kwamba tumekuwa kutumia. 999 01:09:34,000 --> 01:09:42,000 Na kisha mbali zaidi juu kuna hii sehemu iitwayo lundo. 1000 01:09:42,000 --> 01:09:46,000 Sisi kupata kumbukumbu katika huko kwa kutumia malloc, 1001 01:09:46,000 --> 01:09:49,000 na kisha kuelekea sana juu ya mpango wako 1002 01:09:49,000 --> 01:09:52,000 kuna stack, 1003 01:09:52,000 --> 01:09:57,000 na hiyo ambapo sisi tumekuwa kucheza kwa zaidi ya mwanzo. 1004 01:09:57,000 --> 01:09:59,000 Hii si kwa wadogo au kitu chochote. 1005 01:09:59,000 --> 01:10:03,000 mengi ya hii ni sana mashine tegemezi, 1006 01:10:03,000 --> 01:10:10,000 mfumo wa uendeshaji tegemezi, lakini hii ni kiasi gani mambo kupata chunked up. 1007 01:10:10,000 --> 01:10:17,000 Wakati wewe kukimbia na mpango na wewe kutangaza variable kuitwa x- 1008 01:10:17,000 --> 01:10:27,000 Mimi naenda kuteka mwingine sanduku chini chini, na hii itakuwa ni RAM pia. 1009 01:10:27,000 --> 01:10:29,000 Na mimi nina kwenda kuangalia. 1010 01:10:29,000 --> 01:10:34,000 Tutaweza kuchora mistari jagged kuonyesha hii ni tu sehemu ndogo ya RAM 1011 01:10:34,000 --> 01:10:38,000 na si wote ni kama sisi kuteka saa ya juu. 1012 01:10:38,000 --> 01:10:43,000 >> Kama mimi kutangaza variable integer kuitwa x, 1013 01:10:43,000 --> 01:10:49,000 basi nini mimi kweli kupata ni ramani 1014 01:10:49,000 --> 01:10:54,000 kwamba ni kuhifadhiwa katika meza ishara ya mpango wangu 1015 01:10:54,000 --> 01:11:00,000 kuwa unajumuisha x jina kwa eneo hili la kumbukumbu kwamba nimepata inayotolewa 1016 01:11:00,000 --> 01:11:03,000 haki hapa kati ya baa wima. 1017 01:11:03,000 --> 01:11:08,000 Kama mimi na mstari wa kanuni katika mpango wangu kwamba anasema x = 7 1018 01:11:08,000 --> 01:11:15,000 processor anajua "Oh, okay, najua kwamba x maisha katika eneo hili katika kumbukumbu." 1019 01:11:15,000 --> 01:11:25,000 "Mimi nina kwenda mbele na kuandika 7 huko." 1020 01:11:25,000 --> 01:11:28,000 Jinsi gani kujua nini eneo hili ni katika kumbukumbu? 1021 01:11:28,000 --> 01:11:30,000 Naam, kwamba ni yote kufanyika kwa wakati kukusanya. 1022 01:11:30,000 --> 01:11:34,000 compiler inachukua huduma ya kugawa ambapo kila moja ya vigezo ni kwenda 1023 01:11:34,000 --> 01:11:40,000 na kujenga ramani maalum au badala ya kuunganisha dots 1024 01:11:40,000 --> 01:11:43,000 kati ya alama na ambapo ni kwenda, variable ya jina 1025 01:11:43,000 --> 01:11:46,000 na ambapo ni kwenda kuishi katika kumbukumbu. 1026 01:11:46,000 --> 01:11:50,000 Lakini zinageuka kuwa tunaweza kweli kupata hiyo katika mipango yetu pia. 1027 01:11:50,000 --> 01:11:55,000 Hii anapata muhimu wakati tunaanza kuzungumza kuhusu baadhi ya miundo data, 1028 01:11:55,000 --> 01:11:58,000 ambayo ni dhana kwamba sisi ni kwenda kuanzisha baadaye. 1029 01:11:58,000 --> 01:12:09,000 >> Lakini kwa sasa, nini unaweza kujua ni kwamba mimi unaweza kujenga pointer eneo hili, x. 1030 01:12:09,000 --> 01:12:12,000 Kwa mfano, mimi unaweza kujenga variable pointer. 1031 01:12:12,000 --> 01:12:16,000 Tunapozalisha variable pointer sisi kutumia nukuu nyota. 1032 01:12:16,000 --> 01:12:21,000 Katika kesi hiyo, hii anasema mimi nina kwenda kujenga pointer int. 1033 01:12:21,000 --> 01:12:24,000 Ni aina tu kama mtu mwingine yeyote. 1034 01:12:24,000 --> 01:12:27,000 Sisi kuwapa variable kama y, 1035 01:12:27,000 --> 01:12:32,000 na kisha sisi kuweka sawa na anuani, kwa anwani. 1036 01:12:32,000 --> 01:12:38,000 Katika kesi hiyo, tunaweza kuweka y kwa uhakika na x 1037 01:12:38,000 --> 01:12:43,000 kwa kuchukua anuani ya x, ambayo sisi kufanya na ampersand hii, 1038 01:12:43,000 --> 01:12:55,000 na kisha sisi kuweka y kwa uhakika na hilo. 1039 01:12:55,000 --> 01:12:59,000 Nini hii haina ni kimsingi kama tunaangalia RAM wetu 1040 01:12:59,000 --> 01:13:02,000 hii inajenga variable tofauti. 1041 01:13:02,000 --> 01:13:04,000 Ni kwenda kumwita y, 1042 01:13:04,000 --> 01:13:06,000 na wakati huu mstari wa kanuni executes 1043 01:13:06,000 --> 01:13:13,000 ni kweli kwenda kujenga pointer kidogo ambayo sisi kawaida kuteka kama mshale, 1044 01:13:13,000 --> 01:13:15,000 na unaweka y kwa uhakika na x. 1045 01:13:15,000 --> 01:13:17,000 Ndiyo. 1046 01:13:17,000 --> 01:13:19,000 [Mwanafunzi] Kama x ni tayari pointer, ingekuwa wewe tu kufanya 1047 01:13:19,000 --> 01:13:22,000 int * y = x badala ya kuwa ampersand? 1048 01:13:22,000 --> 01:13:24,000 Ndiyo. 1049 01:13:24,000 --> 01:13:27,000 Kama x ni tayari pointer, basi unaweza kuweka kuyatumia 2 sawa kwa kila mmoja, 1050 01:13:27,000 --> 01:13:30,000 katika kesi ambayo y bila uhakika na x, 1051 01:13:30,000 --> 01:13:34,000 lakini ingekuwa kumweka kwa chochote x ni akizungumzia. 1052 01:13:34,000 --> 01:13:37,000 Kwa bahati mbaya, sisi ni nje ya muda. 1053 01:13:37,000 --> 01:13:44,000 >> Nini napenda kusema katika hatua hii, tunaweza kuongea kuhusu offline hii, 1054 01:13:44,000 --> 01:13:49,000 lakini napenda kusema ya kuanza kazi kwenye tatizo hili, # 14. 1055 01:13:49,000 --> 01:13:53,000 Unaweza kuona kuna tayari kidogo kujazwa ndani kwa ajili yenu hapa. 1056 01:13:53,000 --> 01:13:57,000 Unaweza kuona kwamba wakati sisi kutangaza kuyatumia 2, int * x na y *, 1057 01:13:57,000 --> 01:14:01,000 na kumbuka kuwa akizungumzia * ijayo kwa kutofautiana ni jambo ambalo lilifanyika mwaka jana. 1058 01:14:01,000 --> 01:14:05,000 Ni zinageuka kuwa hii ni sawa na kile sisi ni kufanya mwaka huu. 1059 01:14:05,000 --> 01:14:11,000 Haijalishi ambapo unaandika * wakati wewe ni kutangaza pointer. 1060 01:14:11,000 --> 01:14:17,000 Lakini sisi wameandika * ijayo kwa aina 1061 01:14:17,000 --> 01:14:24,000 sababu ambayo inafanya wazi kwamba wewe ni kutangaza variable pointer. 1062 01:14:24,000 --> 01:14:27,000 Unaweza kuona kwamba kutangaza kuyatumia 2 inatupa masanduku 2. 1063 01:14:27,000 --> 01:14:31,000 Hapa wakati sisi kuweka x sawa na malloc 1064 01:14:31,000 --> 01:14:34,000 nini hii ni kusema ni kuweka kando kumbukumbu katika lundo. 1065 01:14:34,000 --> 01:14:41,000 Sanduku Hii kidogo hapa hapa, hii mduara, iko kwenye chungu. 1066 01:14:41,000 --> 01:14:43,000 X ni akizungumzia yake. 1067 01:14:43,000 --> 01:14:46,000 Kumbuka kwamba y bado si akizungumzia chochote. 1068 01:14:46,000 --> 01:14:50,000 Ili kupata kumbukumbu-kuhifadhi namba 42 ndani ya x 1069 01:14:50,000 --> 01:14:55,000 tunataka kutumia nini nukuu? 1070 01:14:55,000 --> 01:14:59,000 [Mwanafunzi] * x = 42. 1071 01:14:59,000 --> 01:15:01,000 Hasa, * x = 42. 1072 01:15:01,000 --> 01:15:06,000 Hiyo ina maana kufuata mshale na kutupa 42 katika huko. 1073 01:15:06,000 --> 01:15:09,000 Hapa ambapo sisi kuweka y na x tuna y akizungumzia x. 1074 01:15:09,000 --> 01:15:13,000 Tena, hii ni kama yale Kevin alisema ambapo sisi kuweka y sawa na x. 1075 01:15:13,000 --> 01:15:15,000 Y si akizungumzia x. 1076 01:15:15,000 --> 01:15:19,000 Badala yake, ni akizungumzia nini x ni akizungumzia pia. 1077 01:15:19,000 --> 01:15:24,000 >> Na kisha hatimaye katika sanduku hii ya mwisho kuna 2 iwezekanavyo mambo ambayo tunaweza kufanya. 1078 01:15:24,000 --> 01:15:28,000 Moja ni tunaweza kusema * x = 13. 1079 01:15:28,000 --> 01:15:33,000 Jambo jingine ni tunaweza kusema-Alex, unajua nini tunaweza kufanya hapa? 1080 01:15:33,000 --> 01:15:37,000 Unaweza kusema * x = 13 au- 1081 01:15:37,000 --> 01:15:41,000 [Mwanafunzi] Unaweza kusema chochote int. 1082 01:15:41,000 --> 01:15:45,000 [Nate H.] Kama hili walikuwa inajulikana kama variable int tunaweza kufanya hivyo. 1083 01:15:45,000 --> 01:15:49,000 Tunaweza pia kusema * y = 13 kwa sababu wao ni wawili akizungumzia nafasi sawa, 1084 01:15:49,000 --> 01:15:51,000 hivyo tunaweza kutumia ama variable ya kufika huko. 1085 01:15:51,000 --> 01:15:56,000 Yeah. >> [Mwanafunzi] gani ni kuangalia kama ikiwa sisi tu kusema x int ni 13? 1086 01:15:56,000 --> 01:16:00,000 Kwamba itakuwa kutangaza variable mpya iitwayo x, ambayo si kazi. 1087 01:16:00,000 --> 01:16:04,000 Tunatarajia kuwa na mgongano kwa sababu sisi alitangaza x kuwa pointer hapa juu. 1088 01:16:04,000 --> 01:16:10,000 [Mwanafunzi] Kama sisi tu alikuwa na kwamba taarifa na yenyewe itakuwa ya namna gani kuangalia kama katika suala la mduara? 1089 01:16:10,000 --> 01:16:14,000 Kama tungekuwa na x = 13 basi tunatarajia kuwa na sanduku, na badala ya kuwa na mshale 1090 01:16:14,000 --> 01:16:16,000 kuja nje ya sanduku tunatarajia kuteka ni kama 13 tu. 1091 01:16:16,000 --> 01:16:19,000 [Mwanafunzi] Katika sanduku. Sawa. 1092 01:16:19,000 --> 01:16:24,000 >> Asante kwa kuangalia, na bahati nzuri juu ya Quiz 0. 1093 01:16:24,000 --> 01:16:28,000 [CS50.TV]