1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Wiki 4] 2 00:00:03,000 --> 00:00:05,000 [David J. Malan] [Chuo Kikuu cha Harvard] 3 00:00:05,000 --> 00:00:08,000 [Hii ni CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Haki zote, hii ni CS50, na hii ni mwanzo wa wiki 4, 5 00:00:12,000 --> 00:00:16,000 na hii ni moja ya algorithms slowest iwezekanavyo upangaji. 6 00:00:16,000 --> 00:00:19,000 Ambayo moja ilikuwa ni kwamba sisi wanaangalia tu huko? 7 00:00:19,000 --> 00:00:24,000 Hiyo ilikuwa Bubble aina, ili kubwa O (n ^ 2) + Jumla, 8 00:00:24,000 --> 00:00:28,000 na kwa kweli sisi si wale tu katika ulimwengu huu ili wanaonekana kujua 9 00:00:28,000 --> 00:00:30,000 nini Bubble aina ni wakati wake au kukimbia. 10 00:00:30,000 --> 00:00:33,000 Hakika, huyu alikuwa mahojiano na Eric Schmidt ya Google 11 00:00:33,000 --> 00:00:45,000 na seneta wa zamani wa Barack Obama miaka michache tu iliyopita. 12 00:00:45,000 --> 00:00:48,000 >> Sasa, Seneta, uko hapa katika Google, 13 00:00:48,000 --> 00:00:54,000 na mimi kama kufikiri ya urais kama mahojiano ya kazi. 14 00:00:54,000 --> 00:00:58,000 Sasa, ni vigumu kupata kazi kama rais, na mtaenda kupitia rigors sasa. 15 00:00:58,000 --> 00:01:00,000 Ni pia vigumu kupata kazi saa Google. 16 00:01:00,000 --> 00:01:05,000 Tuna maswali, na sisi kuuliza maswali wagombea wetu, 17 00:01:05,000 --> 00:01:10,000 na hii ni moja ya kutoka Larry Schwimmer. 18 00:01:10,000 --> 00:01:14,000 You guys kufikiri mimi nina kidding? Ni haki hapa. 19 00:01:14,000 --> 00:01:18,000 Ni njia gani bora zaidi ya kutatua milioni integers 32-bit? 20 00:01:18,000 --> 00:01:21,000 [Kicheko] 21 00:01:21,000 --> 00:01:24,000 Naam- 22 00:01:24,000 --> 00:01:26,000 Samahani. >> Hapana, hapana, hapana, hapana. 23 00:01:26,000 --> 00:01:34,000 Nadhani aina Bubble itakuwa njia sahihi ya kwenda. 24 00:01:34,000 --> 00:01:39,000 >> Haya, ambaye alimwambia hii? 25 00:01:39,000 --> 00:01:43,000 Wiki iliyopita wanakumbuka sisi alichukua kuvunja kutoka code, angalau kwa siku, 26 00:01:43,000 --> 00:01:46,000 na kuanza kuelekeza nguvu katika mawazo ya baadhi ya ngazi za juu na kutatua tatizo zaidi kwa ujumla 27 00:01:46,000 --> 00:01:49,000 katika muktadha wa kutafuta na kuchagua, 28 00:01:49,000 --> 00:01:53,000 na sisi ilianzisha kitu ambacho hatukuwa kofi jina hili katika wiki ya mwisho, 29 00:01:53,000 --> 00:01:56,000 lakini asymptotic nukuu, O Big, Omega Big, 30 00:01:56,000 --> 00:02:00,000 na wakati mwingine Big Theta nukuu, na hawa walikuwa tu njia 31 00:02:00,000 --> 00:02:02,000 ya kuelezea wakati mbio ya algorithms, 32 00:02:02,000 --> 00:02:05,000 muda kiasi gani inachukua kwa algorithm kukimbia. 33 00:02:05,000 --> 00:02:08,000 >> Na unaweza kukumbuka kuwa wewe kuongelea wakati mbio katika suala la kawaida 34 00:02:08,000 --> 00:02:11,000 wa pembejeo, ambayo sisi ujumla kuwaita n, chochote tatizo inaweza kuwa, 35 00:02:11,000 --> 00:02:13,000 ambapo n ni idadi ya watu katika chumba, 36 00:02:13,000 --> 00:02:17,000 idadi ya kurasa katika kitabu cha simu, na sisi kuanza kuandika mambo ya nje 37 00:02:17,000 --> 00:02:21,000 kama O (n ^ 2) au O (n) au O (n logi n), 38 00:02:21,000 --> 00:02:24,000 na hata wakati math haikuweza kufanya kazi nje hivyo kikamilifu 39 00:02:24,000 --> 00:02:28,000 na ilikuwa n ² - n / 2 au kitu kama hicho 40 00:02:28,000 --> 00:02:31,000 tunataka badala tu kutupa baadhi ya maneno ya chini ili, 41 00:02:31,000 --> 00:02:34,000 na motisha huko ni kwamba sisi kweli unataka 42 00:02:34,000 --> 00:02:37,000 aina ya njia lengo la kutathmini 43 00:02:37,000 --> 00:02:39,000 utendaji wa mipango au utendaji wa algorithms 44 00:02:39,000 --> 00:02:42,000 kwamba, mwisho wa siku hauhusiani, kwa mfano, 45 00:02:42,000 --> 00:02:45,000 kwa kasi ya leo ya kompyuta yako. 46 00:02:45,000 --> 00:02:47,000 >> Kwa mfano, kama wewe kutekeleza Bubble aina ya, 47 00:02:47,000 --> 00:02:50,000 au wewe kutekeleza kuchanganya aina au uteuzi aina ya kompyuta ya leo, 48 00:02:50,000 --> 00:02:53,000 2 GHz kompyuta, na wewe kukimbia, 49 00:02:53,000 --> 00:02:56,000 na inachukua baadhi ya idadi ya sekunde, mwaka ujao kuna GHz 3 50 00:02:56,000 --> 00:02:59,000 au 4 GHz kompyuta, na unaweza kisha kudai kwamba "Wow, algorithm yangu 51 00:02:59,000 --> 00:03:03,000 sasa ni mara mbili kwa haraka, "wakati katika hali halisi hiyo ni wazi si kesi. 52 00:03:03,000 --> 00:03:06,000 Ni tu vifaa imenipatia kasi, lakini yako kompyuta 53 00:03:06,000 --> 00:03:10,000 hana, na hivyo sisi kweli unataka kutupa mbali mambo kama 54 00:03:10,000 --> 00:03:13,000 kigawe cha 2 au 3 vigawe vya linapokuja kuelezea 55 00:03:13,000 --> 00:03:17,000 jinsi ya kufunga au jinsi polepole algorithm ni kweli na mtazamo tu 56 00:03:17,000 --> 00:03:20,000 juu ya n au baadhi ya sababu yake, 57 00:03:20,000 --> 00:03:24,000 baadhi ya nguvu zake kama katika kesi ya aina kutoka wiki iliyopita. 58 00:03:24,000 --> 00:03:27,000 Na kukumbuka kwamba kwa msaada wa aina kuunganisha 59 00:03:27,000 --> 00:03:31,000 tulikuwa na uwezo wa kufanya hivyo bora zaidi kuliko aina Bubble na aina uteuzi 60 00:03:31,000 --> 00:03:33,000 na hata insertion aina. 61 00:03:33,000 --> 00:03:36,000 >> Sisi got chini n logi n, na tena, 62 00:03:36,000 --> 00:03:39,000 kukumbuka kwamba kwa logi n ujumla inahusu kitu ambacho hukua 63 00:03:39,000 --> 00:03:43,000 zaidi polepole basi n, hivyo n logi n hivi sasa ilikuwa nzuri 64 00:03:43,000 --> 00:03:45,000 kwa sababu ilikuwa chini ya ² n. 65 00:03:45,000 --> 00:03:47,000 Lakini kufikia n logi n pamoja na aina kuunganisha 66 00:03:47,000 --> 00:03:51,000 nini ilikuwa kijidudu msingi wa wazo kwamba tulikuwa na kujiinua 67 00:03:51,000 --> 00:03:54,000 kwamba sisi pia leveraged nyuma katika wiki 0? 68 00:03:54,000 --> 00:03:58,000 Jinsi gani sisi kukabiliana na tatizo kuchagua cleverly na aina kuunganisha? 69 00:03:58,000 --> 00:04:04,000 Nini ilikuwa ufahamu muhimu, labda? 70 00:04:04,000 --> 00:04:07,000 Mtu yeyote wakati wote. 71 00:04:07,000 --> 00:04:09,000 Okay, hebu kuchukua hatua nyuma. 72 00:04:09,000 --> 00:04:11,000 Elezea kuchanganya aina katika maneno yako mwenyewe. 73 00:04:11,000 --> 00:04:15,000 Jinsi gani kazi? 74 00:04:15,000 --> 00:04:17,000 Okay, tutaweza mstari nyuma 0 wiki. 75 00:04:17,000 --> 00:04:19,000 Okay, yeah. 76 00:04:19,000 --> 00:04:22,000 [Inaudible-mwanafunzi] 77 00:04:22,000 --> 00:04:26,000 Okay, nzuri, hivyo sisi kugawanywa safu ya idadi katika vipande 2. 78 00:04:26,000 --> 00:04:29,000 Sisi sorted kila vipande hizo, na kisha sisi ilijiunga nao, 79 00:04:29,000 --> 00:04:33,000 na tumeona wazo hili kabla ya kuchukua tatizo hilo ni kubwa hii 80 00:04:33,000 --> 00:04:36,000 na chopping ni juu katika tatizo hilo ni kubwa au hii hii kubwa. 81 00:04:36,000 --> 00:04:38,000 >> Kumbuka kitabu cha simu mfano. 82 00:04:38,000 --> 00:04:42,000 Kumbuka algorithm binafsi kuhesabu kutoka wiki iliyopita, 83 00:04:42,000 --> 00:04:45,000 aina hivyo kuunganisha kilifanyiwa ufupisho na hii pseudocode hapa. 84 00:04:45,000 --> 00:04:48,000 Wakati wewe ni kupewa vipengele n, kwanza ilikuwa sanity kuangalia. 85 00:04:48,000 --> 00:04:51,000 Kama n <2 basi si kufanya chochote wakati wote 86 00:04:51,000 --> 00:04:55,000 kwa sababu kama n <2 kisha n ni wazi 0 au 1, 87 00:04:55,000 --> 00:04:57,000 na hivyo kama ni aidha 0 au 1 kuna kitu kutatua. 88 00:04:57,000 --> 00:04:59,000 Wewe ni kosa. 89 00:04:59,000 --> 00:05:01,000 Orodha yako tayari trivially Iliyopangwa. 90 00:05:01,000 --> 00:05:04,000 Lakini vinginevyo kama nimepata vipengele 2 au zaidi kwenda mbele na kugawanya yao 91 00:05:04,000 --> 00:05:06,000 ndani ya 2 halves, kushoto na kulia. 92 00:05:06,000 --> 00:05:09,000 Aina ya kila halves hizo, na kisha kuunganisha halves Iliyopangwa. 93 00:05:09,000 --> 00:05:13,000 Lakini tatizo hapa ni kwamba katika mtazamo wa kwanza hii anahisi kama tuko punting. 94 00:05:13,000 --> 00:05:17,000 Hii ni ufafanuzi katika mviringo kwamba kama nimekuwa aliuliza wewe kuchambua mambo haya n 95 00:05:17,000 --> 00:05:22,000 na wewe kuniambia "Sawa, faini, tutaweza kuchambua vipengele wale n / 2 na wale n / 2," 96 00:05:22,000 --> 00:05:27,000 basi swali yangu ijayo itakuwa ni "Sawa, ni jinsi gani unaweza kutatua n / vipengele 2?" 97 00:05:27,000 --> 00:05:30,000 >> Lakini kwa sababu ya muundo wa mpango huu, 98 00:05:30,000 --> 00:05:33,000 kwa sababu kuna kesi hii ya msingi, ili kuzungumza, 99 00:05:33,000 --> 00:05:39,000 kesi hii maalum kwamba anasema kama ni n 00:05:42,000 Je, si kujibu kwa jibu huo mviringo. 101 00:05:42,000 --> 00:05:46,000 Utaratibu huu, cyclicity hii hatimaye mwisho. 102 00:05:46,000 --> 00:05:50,000 Kama mimi kuuliza wewe "Panga elementi hizi n," na kusema, "Sawa, wachambue n / 2," 103 00:05:50,000 --> 00:05:53,000 kisha wewe sema, "Sawa, aina hizi n / 4, n / 8, n/16," 104 00:05:53,000 --> 00:05:56,000 hatimaye itabidi kugawanya na idadi kubwa ya kutosha 105 00:05:56,000 --> 00:05:59,000 kwamba itabidi tu 1 kipengele kushoto, ambapo kiwango unaweza kusema, 106 00:05:59,000 --> 00:06:02,000 "Hapa, hapa ni sorted moja ya kipengele." 107 00:06:02,000 --> 00:06:06,000 Ndipo uzuri wa algorithm hii hapa ni kwa hupata kutokana na ukweli 108 00:06:06,000 --> 00:06:09,000 kwamba mara una yote ya orodha hizi kibinafsi Iliyopangwa, 109 00:06:09,000 --> 00:06:12,000 yote ambayo ni ya kawaida ya 1, ambayo inaonekana kuwa haina maana, 110 00:06:12,000 --> 00:06:15,000 mara moja kuanza kuunganisha yao na kuunganisha yao 111 00:06:15,000 --> 00:06:19,000 wewe kujenga hatimaye kama Rob alifanya katika video orodha hatimaye Iliyopangwa. 112 00:06:19,000 --> 00:06:22,000 >> Lakini wazo hili hadi mbali mbali upangaji. 113 00:06:22,000 --> 00:06:26,000 Kuna wazo hili iliyoingia katika mpango huu unaojulikana kama recursion, 114 00:06:26,000 --> 00:06:29,000 wazo ambapo wewe ni mpango, 115 00:06:29,000 --> 00:06:32,000 na kutatua baadhi ya matatizo hatajali 116 00:06:32,000 --> 00:06:36,000 au kuweka katika muktadha wa lugha ya programu wewe ni kazi, 117 00:06:36,000 --> 00:06:39,000 na ili kutatua tatizo, wewe kazi hatajali 118 00:06:39,000 --> 00:06:42,000 tena na tena na tena, lakini ninyi kazi 119 00:06:42,000 --> 00:06:44,000 hawawezi kuwaita mwenyewe mara nyingi kubwa. 120 00:06:44,000 --> 00:06:47,000 Hatimaye una chini nje, ili kuzungumza, 121 00:06:47,000 --> 00:06:49,000 na kuwa na baadhi ngumu-coded msingi hali ya kuwa anasema 122 00:06:49,000 --> 00:06:53,000 katika hatua hii kuacha wito mwenyewe ili mchakato mzima 123 00:06:53,000 --> 00:06:56,000 hatimaye haina ukweli katika kuacha. 124 00:06:56,000 --> 00:06:58,000 Je, hii kweli maana, kwa recurse? 125 00:06:58,000 --> 00:07:01,000 >> Hebu angalia, kama tunaweza kufanya rahisi, trivial mfano na, kusema, 126 00:07:01,000 --> 00:07:03,000 3 watu na mimi hapa juu ya hatua, kama mtu ni starehe. 127 00:07:03,000 --> 00:07:06,000 1, kuja juu juu, 2 na 3. 128 00:07:06,000 --> 00:07:09,000 Kama 3 wanataka kuja hapa. 129 00:07:09,000 --> 00:07:12,000 Kama unataka kusimama haki ya karibu na mimi hapa katika mstari, kudhani kwamba tatizo katika mkono 130 00:07:12,000 --> 00:07:15,000 ni sana trivially kuhesabu idadi ya watu ambao ni hapa. 131 00:07:15,000 --> 00:07:18,000 Lakini kusema ukweli, mimi nimechoka ya mifano yote kuhesabu kura. 132 00:07:18,000 --> 00:07:21,000 Hii ni kwenda kuchukua muda, 1, 2, na dot, dot, dot. 133 00:07:21,000 --> 00:07:23,000 Ni kwenda kuchukua milele. 134 00:07:23,000 --> 00:07:25,000 Nisingependa tu punt tatizo hili kabisa na msaada wa-nini jina lako? 135 00:07:25,000 --> 00:07:27,000 Sara. >> Sara, wote haki. 136 00:07:27,000 --> 00:07:29,000 Kelly. >> Kelly na? 137 00:07:29,000 --> 00:07:31,000 >> Willy >> Willy, Sara, Kelly, na Willy.. 138 00:07:31,000 --> 00:07:34,000 Hivi sasa nimekuwa aliuliza swali na mtu 139 00:07:34,000 --> 00:07:37,000 jinsi watu wengi juu ya hatua hii, na mimi sina wazo. 140 00:07:37,000 --> 00:07:40,000 Hii ni orodha kweli kwa muda mrefu, na hivyo badala mimi naenda kufanya hila hii. 141 00:07:40,000 --> 00:07:43,000 Mimi naenda kuuliza mtu karibu na mimi kufanya zaidi ya kazi, 142 00:07:43,000 --> 00:07:46,000 na mara moja yeye ni kufanyika kufanya zaidi ya kazi 143 00:07:46,000 --> 00:07:49,000 Mimi naenda kufanya kiasi mdogo wa kazi iwezekanavyo na kuongeza tu 1 144 00:07:49,000 --> 00:07:51,000 kwa kila jibu lake, hivyo hapa sisi kwenda. 145 00:07:51,000 --> 00:07:54,000 Nimekuwa aliuliza jinsi watu wengi juu ya hatua. 146 00:07:54,000 --> 00:07:57,000 Jinsi watu wengi ni juu ya hatua ya kushoto ya wewe? 147 00:07:57,000 --> 00:08:00,000 kushoto kwangu? >> Sawa, lakini si kudanganya. 148 00:08:00,000 --> 00:08:04,000 Hiyo ni nzuri, hiyo ni sahihi, lakini kama tunataka kuendelea mantiki hii 149 00:08:04,000 --> 00:08:08,000 hebu kudhani kuwa wewe vile vile wanataka punt tatizo hili kwa upande wa kushoto wa wewe, 150 00:08:08,000 --> 00:08:11,000 hivyo badala ya jibu moja kwa moja kwenda mbele na kupita tu mume. 151 00:08:11,000 --> 00:08:14,000 Oh, jinsi watu wengi ni ya kushoto ya mimi? 152 00:08:14,000 --> 00:08:16,000 Jinsi watu wengi ni wa kushoto? 153 00:08:16,000 --> 00:08:18,000 1. 154 00:08:18,000 --> 00:08:27,000 [Kicheko] 155 00:08:27,000 --> 00:08:30,000 Sawa, hivyo 0, ili kile sasa Willy amefanya 156 00:08:30,000 --> 00:08:33,000 ni ve akarudi jibu lako mwelekeo huu akisema 0. 157 00:08:33,000 --> 00:08:36,000 Sasa, unapaswa kufanya nini >> 1?. 158 00:08:36,000 --> 00:08:39,000 Okay, hivyo wewe ni 1, hivyo kusema, "Sawa, mimi nina kwenda kuongeza 1 159 00:08:39,000 --> 00:08:41,000 kwa chochote kuhesabu Willy ilikuwa, "hivyo 1 + 0. 160 00:08:41,000 --> 00:08:43,000 Wewe ni sasa 1 hivyo jibu lako kwa haki ni sasa- 161 00:08:43,000 --> 00:08:45,000 1. >> Na mgodi itakuwa 2. 162 00:08:45,000 --> 00:08:48,000 Nzuri, hivyo wewe ni kuchukua jibu la awali la 1, 163 00:08:48,000 --> 00:08:51,000 kuongeza kiwango cha chini cha kazi unataka kufanya, ambayo ni 1. 164 00:08:51,000 --> 00:08:55,000 Sasa una 2, na wewe kisha mkono mimi ambayo thamani? 165 00:08:55,000 --> 00:08:57,000 3, I mean, sorry, 2. 166 00:08:57,000 --> 00:08:59,000 Nzuri. 167 00:08:59,000 --> 00:09:02,000 >> Naam, tulikuwa 0 wa kushoto. 168 00:09:02,000 --> 00:09:05,000 Kisha sisi alikuwa 1, na kisha sisi kuongeza 2, 169 00:09:05,000 --> 00:09:07,000 na sasa wewe ni handing alinipa namba 2, 170 00:09:07,000 --> 00:09:10,000 na hivyo mimi kusema, sawa, 1, 3. 171 00:09:10,000 --> 00:09:13,000 Kuna hakika 3 watu wamesimama karibu na mimi juu ya hatua hii, 172 00:09:13,000 --> 00:09:16,000 hivyo tunaweza kuwa wazi jambo hili sana linearly, 173 00:09:16,000 --> 00:09:19,000 sana katika mtindo wazi, lakini nini sisi kwa kweli kufanya? 174 00:09:19,000 --> 00:09:21,000 Sisi alichukua tatizo la ukubwa 3 awali. 175 00:09:21,000 --> 00:09:24,000 Sisi basi wakaiangusha katika tatizo la ukubwa 2, 176 00:09:24,000 --> 00:09:27,000 basi tatizo ya kawaida ya 1, na kisha hatimaye kesi ya msingi 177 00:09:27,000 --> 00:09:29,000 alikuwa kweli, oh, hakuna mtu huko, 178 00:09:29,000 --> 00:09:33,000 ambapo kiwango Willy akarudi ufanisi jibu ngumu-coded michache mara, 179 00:09:33,000 --> 00:09:36,000 na wa pili alikuwa kisha bubbled up, bubbled up, bubbled up, 180 00:09:36,000 --> 00:09:39,000 na kisha kwa kuongeza katika 1 hii moja ya ziada 181 00:09:39,000 --> 00:09:41,000 tumekuwa kutekelezwa hii wazo msingi wa recursion. 182 00:09:41,000 --> 00:09:44,000 >> Sasa, katika kesi hii ni kweli hakuwa kutatua tatizo 183 00:09:44,000 --> 00:09:46,000 yoyote kwa ufanisi zaidi kisha tumeona hivi sasa. 184 00:09:46,000 --> 00:09:48,000 Lakini kufikiri kuhusu algorithms tumefanya juu ya hatua ya hivi sasa. 185 00:09:48,000 --> 00:09:51,000 Tulikuwa na vipande 8 ya karatasi ubaoni, 186 00:09:51,000 --> 00:09:55,000 kwenye video wakati Sean mara kutafuta namba 7, na nini alifanya kweli kufanya? 187 00:09:55,000 --> 00:09:58,000 Naam, hakufanya aina yoyote ya mgawanyiko na kushinda. 188 00:09:58,000 --> 00:10:01,000 Hakufanya aina yoyote ya recursion. 189 00:10:01,000 --> 00:10:03,000 Badala yake yeye tu alifanya hivyo algorithm linear. 190 00:10:03,000 --> 00:10:07,000 Lakini wakati sisi alianzisha wazo la idadi sorted juu ya hatua ya kuishi wiki iliyopita 191 00:10:07,000 --> 00:10:09,000 kisha sisi alikuwa na haya Instinct ya kwenda katikati, 192 00:10:09,000 --> 00:10:13,000 ambapo kiwango tulikuwa orodha ndogo ya kawaida 4 au nyingine orodha ya ukubwa 4, 193 00:10:13,000 --> 00:10:17,000 na kisha sisi alikuwa exact tatizo, hivyo sisi mara kwa mara, mara kwa mara, mara kwa mara. 194 00:10:17,000 --> 00:10:19,000 Kwa maneno mengine, sisi recursed. 195 00:10:19,000 --> 00:10:24,000 Asante sana kwa kujitolea wetu 3 hapa kwa kuonyesha recursion na sisi. 196 00:10:24,000 --> 00:10:28,000 >> Hebu angalia kama hatuwezi kufanya hii sasa kidogo zaidi halisi, 197 00:10:28,000 --> 00:10:30,000 kutatua tatizo hilo tena tunaweza kufanya pretty urahisi, 198 00:10:30,000 --> 00:10:34,000 lakini tutaweza kutumia kama jiwe la kuvukia kwa kutekeleza wazo la msingi. 199 00:10:34,000 --> 00:10:37,000 Kama mimi nataka compute summation ya rundo la idadi, 200 00:10:37,000 --> 00:10:39,000 kwa mfano, kama wewe kupita katika namba 3, 201 00:10:39,000 --> 00:10:42,000 Nataka kukupa thamani ya sigma 3, 202 00:10:42,000 --> 00:10:46,000 hivyo Jumla ya 3 + 2 + 1 + 0. 203 00:10:46,000 --> 00:10:48,000 Nataka kupata nyuma jibu 6, 204 00:10:48,000 --> 00:10:51,000 hivyo tutaweza kutekeleza kazi hii sigma, kazi hii summation 205 00:10:51,000 --> 00:10:54,000 tena kuwa, inachukua katika pembejeo, na kisha anarudi summation 206 00:10:54,000 --> 00:10:57,000 ya idadi hiyo njia yote chini 0. 207 00:10:57,000 --> 00:10:59,000 Tunaweza kufanya hili pretty tu, sawa? 208 00:10:59,000 --> 00:11:01,000 Tunaweza kufanya hili kwa baadhi ya aina ya muundo looping, 209 00:11:01,000 --> 00:11:04,000 hivyo basi mimi kwenda mbele na kupata hii ilianza. 210 00:11:04,000 --> 00:11:07,000 >> Pamoja stdio.h. 211 00:11:07,000 --> 00:11:09,000 Hebu kupata mwenyewe ndani ya kuu ya kufanya kazi na hapa. 212 00:11:09,000 --> 00:11:12,000 Hebu kuokoa hii kama sigma.c. 213 00:11:12,000 --> 00:11:14,000 Kisha mimi nina kwenda katika hapa, na mimi nina kwenda kutangaza n int, 214 00:11:14,000 --> 00:11:18,000 na mimi naenda kufanya yafuatayo wakati mtumiaji hana kushirikiana. 215 00:11:18,000 --> 00:11:22,000 Wakati mtumiaji kwamba hakunipa idadi chanya 216 00:11:22,000 --> 00:11:26,000 napenda kwenda mbele na kuwachochea kwa n GetInt =, 217 00:11:26,000 --> 00:11:28,000 na napenda kuwapa baadhi ya maelekezo kama kwa nini cha kufanya, 218 00:11:28,000 --> 00:11:33,000 hivyo printf ("Chanya integer tafadhali"). 219 00:11:33,000 --> 00:11:39,000 Tu kitu rahisi kama hii ili kwa wakati sisi hit line 14 220 00:11:39,000 --> 00:11:42,000 sisi sasa kuwa na integer chanya ikatengeneza katika n. 221 00:11:42,000 --> 00:11:44,000 >> Sasa hebu kufanya kitu kwa hayo. 222 00:11:44,000 --> 00:11:50,000 Hebu kwenda mbele na compute summation, hivyo int Jumla = sigma (n). 223 00:11:50,000 --> 00:11:54,000 Sigma ni summation, hivyo mimi nina kuandika tu katika njia fancier. 224 00:11:54,000 --> 00:11:56,000 Tutaweza tu kuiita sigma huko. 225 00:11:56,000 --> 00:11:58,000 Hiyo ni jumla, na sasa mimi naenda magazeti nje matokeo, 226 00:11:58,000 --> 00:12:08,000 printf ("Jumla ni% d, \ n", jumla). 227 00:12:08,000 --> 00:12:11,000 Na basi mimi itabidi kurudi 0 ajili ya hatua nzuri. 228 00:12:11,000 --> 00:12:15,000 Tumefanya kila kitu kwamba mpango huu inahitaji isipokuwa sehemu ya kuvutia, 229 00:12:15,000 --> 00:12:18,000 ambayo ni ya kweli kutekeleza kazi sigma. 230 00:12:18,000 --> 00:12:22,000 >> Hebu kwenda chini hapa chini, na napenda kutangaza kazi sigma. 231 00:12:22,000 --> 00:12:26,000 Ni got kuchukua variable kwamba integer ya aina, 232 00:12:26,000 --> 00:12:30,000 na kile data aina mimi nataka kurudi ikatengeneza kutoka sigma? 233 00:12:30,000 --> 00:12:34,000 Int, kwa sababu mimi nataka mechi matarajio yangu juu ya mstari 15. 234 00:12:34,000 --> 00:12:37,000 Katika hapa napenda kwenda mbele na kutekeleza mpango huu wa 235 00:12:37,000 --> 00:12:41,000 katika njia pretty moja kwa moja. 236 00:12:41,000 --> 00:12:45,000 >> Hebu kwenda mbele na kusema int Jumla = 0, 237 00:12:45,000 --> 00:12:47,000 na sasa mimi nina kwenda kuwa kidogo kwa kitanzi hapa 238 00:12:47,000 --> 00:12:50,000 kwamba kinaendelea kusema kitu kama hiki, 239 00:12:50,000 --> 00:13:01,000 kwa ajili ya (i = 0 int; mimi <= idadi; i + +) Jumla + = i. 240 00:13:01,000 --> 00:13:05,000 Na kisha mimi naenda kurudi Jumla. 241 00:13:05,000 --> 00:13:07,000 Ningeweza kutekelezwa hii katika idadi yoyote ya njia. 242 00:13:07,000 --> 00:13:09,000 Ningeweza kutumika kitanzi wakati. 243 00:13:09,000 --> 00:13:11,000 Ningeweza kutumia skipped variable Jumla kama kweli alitaka, 244 00:13:11,000 --> 00:13:15,000 lakini katika muda mfupi, sisi tu kazi kwamba kama mimi si goof anatangaza Jumla ni 0. 245 00:13:15,000 --> 00:13:18,000 Kisha iterates kutoka 0 juu ya juu kupitia namba, 246 00:13:18,000 --> 00:13:23,000 na juu ya kila iteration inaongeza kwamba thamani ya sasa kwa jumla na kisha anarudi Jumla. 247 00:13:23,000 --> 00:13:25,000 >> Sasa, kuna optimization kidogo hapa. 248 00:13:25,000 --> 00:13:29,000 Hii pengine ni hatua kupita, lakini na iwe hivyo. Hiyo faini kwa sasa. 249 00:13:29,000 --> 00:13:32,000 Sisi ni angalau kuwa ya uhakika na kwenda 0 njia yote juu juu. 250 00:13:32,000 --> 00:13:34,000 Si ngumu sana na pretty moja kwa moja, 251 00:13:34,000 --> 00:13:37,000 lakini zinageuka kuwa na kazi ya sigma tuna fursa sawa 252 00:13:37,000 --> 00:13:39,000 kama tulivyofanya hapa jukwaani. 253 00:13:39,000 --> 00:13:42,000 Juu ya hatua sisi tu kuhesabiwa watu wangapi walikuwa karibu na mimi, 254 00:13:42,000 --> 00:13:47,000 lakini badala yake kama sisi alitaka kuhesabu idadi 3 + 2 + 1 255 00:13:47,000 --> 00:13:51,000 juu ya chini 0 tunaweza vile vile punt kwa kazi 256 00:13:51,000 --> 00:13:55,000 kwamba mimi itabidi badala kuelezea kuwa kujirudia. 257 00:13:55,000 --> 00:13:57,000 Hapa hebu kufanya sanity haraka kuangalia na kuhakikisha kuwa sikuweza goof. 258 00:13:57,000 --> 00:14:00,000 >> Najua kuna angalau jambo moja katika mpango huu kwamba sikuwa kufanya makosa. 259 00:14:00,000 --> 00:14:04,000 Wakati mimi enter mimi kwenda kupata aina yoyote ya yelling saa yangu? 260 00:14:04,000 --> 00:14:06,000 Je, Mimi naenda kuwa yelled saa kuhusu? 261 00:14:06,000 --> 00:14:11,000 Yeah, I forgot mfano, hivyo mimi nina kutumia kazi kuitwa sigma kwenye mstari 15, 262 00:14:11,000 --> 00:14:16,000 lakini si alitangaza mpaka mstari 22, hivyo mimi bora proactively kwenda hapa 263 00:14:16,000 --> 00:14:22,000 na kutangaza mfano, na mimi itabidi kusema int sigma (int idadi), na hiyo ni yake. 264 00:14:22,000 --> 00:14:24,000 Ni kutekelezwa chini. 265 00:14:24,000 --> 00:14:27,000 >> Au njia nyingine ningeweza kutatua hili, 266 00:14:27,000 --> 00:14:30,000 Mimi nilikuwa hoja kazi huko, ambayo si mbaya, 267 00:14:30,000 --> 00:14:32,000 lakini angalau wakati mipango yako kuanza kupata muda mrefu, kusema ukweli, 268 00:14:32,000 --> 00:14:35,000 Nadhani kuna baadhi ya thamani katika daima kuwa kuu kwa juu 269 00:14:35,000 --> 00:14:38,000 ili katika msomaji anaweza kufungua faili na kisha mara moja kuona 270 00:14:38,000 --> 00:14:40,000 nini mpango ni kufanya bila ya kuwa na kutafuta njia hiyo 271 00:14:40,000 --> 00:14:42,000 kuangalia kwa kazi ambayo kuu. 272 00:14:42,000 --> 00:14:49,000 Hebu kwenda chini kwa terminal dirisha yangu hapa, kujaribu kufanya sigma kufanya sigma, 273 00:14:49,000 --> 00:14:51,000 na mimi Star up hapa pia. 274 00:14:51,000 --> 00:14:55,000 Kinachojitokeza tamko la GetInt kazi ina maana nimepata wamesahau kufanya nini kingine? 275 00:14:55,000 --> 00:14:57,000 [Inaudible-mwanafunzi] 276 00:14:57,000 --> 00:15:00,000 Nzuri, hivyo inaonekana makosa ya kawaida, hivyo hebu kuweka hii hapa, 277 00:15:00,000 --> 00:15:04,000 cs50.h, na sasa hebu kwenda nyuma terminal dirisha yangu. 278 00:15:04,000 --> 00:15:08,000 >> Mimi itabidi wazi screen, na mimi itabidi kufanya rerun sigma. 279 00:15:08,000 --> 00:15:11,000 Inaonekana compiled. Hebu sasa kukimbia sigma. 280 00:15:11,000 --> 00:15:15,000 Mimi itabidi aina katika namba 3, na mimi kupata 6, hivyo si cheki ukali, 281 00:15:15,000 --> 00:15:18,000 lakini angalau ni inaonekana kufanya kazi katika mtazamo wa kwanza, lakini sasa hebu mpasuko ni mbali, 282 00:15:18,000 --> 00:15:21,000 na hebu kweli kujiinua wazo la recursion, tena, 283 00:15:21,000 --> 00:15:24,000 katika muktadha rahisi sana hivyo kwamba katika muda wiki chache ' 284 00:15:24,000 --> 00:15:27,000 wakati sisi kuanza kuchunguza miundo data fancier kuliko arrays 285 00:15:27,000 --> 00:15:30,000 tuna chombo mwingine katika toolkit na ambayo kwa 286 00:15:30,000 --> 00:15:33,000 kuendesha miundo hiyo data kama tutaweza kuona. 287 00:15:33,000 --> 00:15:36,000 Hii ni njia iterative, mbinu kitanzi-msingi. 288 00:15:36,000 --> 00:15:39,000 >> Hebu badala yake sasa kufanya hili. 289 00:15:39,000 --> 00:15:44,000 Hebu badala yake kusema kuwa summation ya idadi 290 00:15:44,000 --> 00:15:48,000 juu ya chini 0 ni kweli kitu sawa kama 291 00:15:48,000 --> 00:15:53,000 idadi + sigma (idadi - 1). 292 00:15:53,000 --> 00:15:57,000 Kwa maneno mengine, kama tu juu ya hatua ya mimi punted kwa kila mmoja wa watu karibu na mimi, 293 00:15:57,000 --> 00:16:00,000 na wao kwa upande naendelea punting mpaka sisi hatimaye bottomed nje katika Willy, 294 00:16:00,000 --> 00:16:03,000 ambaye alikuwa na kurudi jibu ngumu-coded kama 0. 295 00:16:03,000 --> 00:16:07,000 Hapa sasa tuko vile vile punting kwa sigma 296 00:16:07,000 --> 00:16:10,000 kazi sawa kama awali ilikuwa inaitwa, lakini ufahamu muhimu hapa 297 00:16:10,000 --> 00:16:12,000 ni kwamba sisi siyo wito sigma identically. 298 00:16:12,000 --> 00:16:14,000 Sisi siyo kupita katika n. 299 00:16:14,000 --> 00:16:17,000 Sisi ni wazi kupita katika idadi - 1, 300 00:16:17,000 --> 00:16:20,000 hivyo tatizo kidogo kidogo, kidogo kidogo tatizo. 301 00:16:20,000 --> 00:16:23,000 >> Bahati mbaya, hii si kabisa ufumbuzi bado, na kabla ya sisi kurekebisha 302 00:16:23,000 --> 00:16:26,000 kile kinachoweza kuruka nje kama dhahiri katika baadhi ya wewe 303 00:16:26,000 --> 00:16:28,000 napenda kwenda mbele na rerun kufanya. 304 00:16:28,000 --> 00:16:30,000 Inaonekana kukusanya sawa. 305 00:16:30,000 --> 00:16:32,000 Hebu rerun sigma na 6. 306 00:16:32,000 --> 00:16:37,000 Whoops, basi mimi rerun sigma na 6. 307 00:16:37,000 --> 00:16:42,000 Tumeona hii kabla, angalau wakati ajali mwisho pia. 308 00:16:42,000 --> 00:16:48,000 Kwa nini mimi kupata hii cryptic segmentation kosa? Yeah. 309 00:16:48,000 --> 00:16:50,000 [Inaudible-mwanafunzi] 310 00:16:50,000 --> 00:16:53,000 Hakuna kesi ya msingi, na hasa zaidi, nini pengine kilichotokea? 311 00:16:53,000 --> 00:16:58,000 Hii ni dalili ya nini tabia? 312 00:16:58,000 --> 00:17:00,000 Sema ni kidogo nguvu zaidi. 313 00:17:00,000 --> 00:17:02,000 [Inaudible-mwanafunzi] 314 00:17:02,000 --> 00:17:05,000 Ni kitanzi usio ufanisi, na tatizo na matanzi usio 315 00:17:05,000 --> 00:17:08,000 wakati wao kuhusisha recursion katika kesi hii, kazi linalojiita, 316 00:17:08,000 --> 00:17:10,000 nini kinatokea kila wakati wewe piga kazi? 317 00:17:10,000 --> 00:17:13,000 Naam, tafakari jinsi sisi kuweka nje ya kumbukumbu katika kompyuta. 318 00:17:13,000 --> 00:17:16,000 Sisi alisema kuwa kuna hii chunk ya kumbukumbu aitwaye stack kwamba chini, 319 00:17:16,000 --> 00:17:19,000 na kila wakati wewe piga kazi kidogo zaidi ya kumbukumbu anapata kuweka 320 00:17:19,000 --> 00:17:24,000 juu ya hii stack kinachojulikana zenye kwamba kazi ya vigezo ya ndani au vigezo, 321 00:17:24,000 --> 00:17:27,000 hivyo kama sigma wito wito sigma sigma wito sigma 322 00:17:27,000 --> 00:17:29,000  wito sigma ambapo gani hii mwisho hadithi? 323 00:17:29,000 --> 00:17:31,000 >> Naam, ni hatimaye kuongezeka kiasi jumla ya 324 00:17:31,000 --> 00:17:33,000 ya kumbukumbu kwamba una inapatikana kwa kompyuta yako. 325 00:17:33,000 --> 00:17:37,000 Wewe overrun sehemu kwamba wewe wanatakiwa kukaa ndani, 326 00:17:37,000 --> 00:17:40,000 na wewe kupata hii kosa segmentation, msingi madini, 327 00:17:40,000 --> 00:17:43,000 na nini maana ya msingi zinatupwa ni kwamba mimi sasa wana faili inayoitwa msingi 328 00:17:43,000 --> 00:17:46,000 ambayo ni faili zenye zeros na wale 329 00:17:46,000 --> 00:17:49,000 kwamba kwa kweli katika siku zijazo itakuwa diagnostically muhimu. 330 00:17:49,000 --> 00:17:52,000 Kama siyo dhahiri kwenu ambapo mdudu yako ni 331 00:17:52,000 --> 00:17:54,000 unaweza kweli kufanya kidogo ya uchambuzi wa kisayansi, ili kuzungumza, 332 00:17:54,000 --> 00:17:58,000 kwenye faili hii dampo ya msingi, ambayo, tena, ni tu rundo zima la zeros na wale 333 00:17:58,000 --> 00:18:02,000 kwamba kimsingi inawakilisha hali ya programu yako katika kumbukumbu 334 00:18:02,000 --> 00:18:05,000 sasa ni kugonga kwa njia hii. 335 00:18:05,000 --> 00:18:11,000 >> fix hapa ni kwamba hatuwezi tu upofu kurudi sigma, 336 00:18:11,000 --> 00:18:14,000 idadi + sigma ya tatizo kidogo kidogo. 337 00:18:14,000 --> 00:18:16,000 Tunahitaji kuwa na aina fulani ya kesi ya msingi hapa, 338 00:18:16,000 --> 00:18:19,000 na kile lazima kesi ya msingi pengine kuwa? 339 00:18:19,000 --> 00:18:22,000 [Inaudible-mwanafunzi] 340 00:18:22,000 --> 00:18:25,000 Sawa, hivyo muda mrefu kama idadi ni chanya sisi lazima kweli kurudi huu, 341 00:18:25,000 --> 00:18:29,000 au kuweka njia nyingine, ikiwa ni idadi, kusema, <= kwa 0 342 00:18:29,000 --> 00:18:32,000 unajua nini, mimi itabidi kwenda mbele na kurudi 0, 343 00:18:32,000 --> 00:18:36,000 kiasi kama Willy alivyofanya, na kingine, mimi nina kwenda mbele 344 00:18:36,000 --> 00:18:41,000 na kurudi huu, hivyo si kwamba kiasi mfupi 345 00:18:41,000 --> 00:18:44,000 kuliko toleo iterative kwamba sisi kuchapwa up kwanza kutumia kwa kitanzi, 346 00:18:44,000 --> 00:18:48,000 lakini taarifa kwamba kuna aina hii ya ulimbwende hayo. 347 00:18:48,000 --> 00:18:51,000 Badala ya kurejea baadhi ya idadi na kufanya math hii yote 348 00:18:51,000 --> 00:18:54,000 na kuongeza mambo juu kwa vigezo mitaa 349 00:18:54,000 --> 00:18:57,000 wewe badala kusema "Sawa, kama hii ni super rahisi tatizo, 350 00:18:57,000 --> 00:19:01,000 kama idadi ni <0, basi mimi mara moja kurudi 0. " 351 00:19:01,000 --> 00:19:03,000 >> Sisi siyo kwenda bother kusaidia idadi hasi, 352 00:19:03,000 --> 00:19:05,000 hivyo mimi nina kwenda code ngumu thamani ya 0. 353 00:19:05,000 --> 00:19:08,000 Lakini vinginevyo, kutekeleza wazo hili la summing 354 00:19:08,000 --> 00:19:11,000 yote ya namba hizi pamoja unaweza ufanisi kuchukua bite ndogo 355 00:19:11,000 --> 00:19:14,000 nje ya tatizo, kiasi kama tulivyofanya hapa juu ya hatua, 356 00:19:14,000 --> 00:19:18,000 kisha punt ya mapumziko ya tatizo kwa mtu mwingine, 357 00:19:18,000 --> 00:19:20,000 lakini katika kesi hii mtu mwingine ni wewe mwenyewe. 358 00:19:20,000 --> 00:19:22,000 Ni kazi identically jina. 359 00:19:22,000 --> 00:19:25,000 Kupita tu ni tatizo na ndogo ndogo na ndogo kila wakati, 360 00:19:25,000 --> 00:19:28,000 na hata kama hatuna kabisa rasmi katika mambo code hapa 361 00:19:28,000 --> 00:19:33,000 hii ni nini hasa kinachoendelea katika wiki 0 na kitabu cha simu. 362 00:19:33,000 --> 00:19:36,000 Hii ni nini hasa kinachoendelea katika kipindi cha wiki na Sean 363 00:19:36,000 --> 00:19:39,000 na kwa maandamano yetu ya kutafuta kwa idadi. 364 00:19:39,000 --> 00:19:42,000 Ni kuchukua tatizo na kugawa tena na tena. 365 00:19:42,000 --> 00:19:44,000 >> Kwa maneno mengine, kuna njia ya kutafsiri sasa 366 00:19:44,000 --> 00:19:47,000 hii ulimwengu halisi ya kujenga, hii ngazi ya juu ya kujenga 367 00:19:47,000 --> 00:19:51,000 ya kugawanya na kushinda na kufanya kitu tena na tena 368 00:19:51,000 --> 00:19:56,000 katika kanuni, hivyo hii ni kitu tutaona tena baada ya muda. 369 00:19:56,000 --> 00:20:00,000 Sasa, kama kando, kama wewe ni mpya kwa recursion unapaswa angalau kuelewa sasa 370 00:20:00,000 --> 00:20:02,000 kwa nini hii ni funny. 371 00:20:02,000 --> 00:20:05,000 Mimi nina kwenda kwa google.com, 372 00:20:05,000 --> 00:20:17,000 na mimi nina kwenda kutafuta baadhi ya vidokezo na tricks juu ya recursion, kuingia. 373 00:20:17,000 --> 00:20:21,000 Mwambie mtu karibu na wewe kama walikuwa si kucheka tu sasa. 374 00:20:21,000 --> 00:20:23,000 Ulimaanisha recursion? 375 00:20:23,000 --> 00:20:25,000 Ulimaanisha-ah, kuna sisi kwenda. 376 00:20:25,000 --> 00:20:28,000 Okay, sasa hiyo ni ya mapumziko ya kila mtu. 377 00:20:28,000 --> 00:20:30,000 kidogo Pasaka yai iliyoingia mahali fulani huko katika Google. 378 00:20:30,000 --> 00:20:33,000 Kama kando, moja ya viungo sisi kuweka kwenye tovuti ya kozi 379 00:20:33,000 --> 00:20:36,000 kwa leo ni tu hii gridi ya algorithms mbalimbali kuchagua, 380 00:20:36,000 --> 00:20:39,000 baadhi ya ambayo sisi inaonekana katika wiki ya mwisho, lakini nini ni nzuri kuhusu taswira hii 381 00:20:39,000 --> 00:20:43,000 kama wewe kujaribu wrap akili yako karibu mambo mbalimbali kuhusiana na algorithms 382 00:20:43,000 --> 00:20:46,000 kujua kwamba unaweza kwa urahisi sana sasa kuanza na aina tofauti ya pembejeo. 383 00:20:46,000 --> 00:20:50,000 pembejeo zote kuachwa, pembejeo zaidi sorted, pembejeo random na kadhalika. 384 00:20:50,000 --> 00:20:53,000 Kama wewe kujaribu, tena, kutofautisha mambo haya katika akili yako 385 00:20:53,000 --> 00:20:57,000 kutambua kwamba hii URL kwenye tovuti kozi ya juu ya ukurasa Mihadhara 386 00:20:57,000 --> 00:21:00,000 inaweza kukusaidia sababu kupitia baadhi ya wale. 387 00:21:00,000 --> 00:21:05,000 >> Leo sisi hatimaye kupata kutatua tatizo hili kutoka wakati nyuma, 388 00:21:05,000 --> 00:21:08,000 ambayo ilikuwa kwamba kazi hii byta tu hakuwa na kazi, 389 00:21:08,000 --> 00:21:12,000 na nini ilikuwa tatizo la msingi na byta kazi hii, 390 00:21:12,000 --> 00:21:15,000 Lengo la ambayo ilikuwa, tena, kubadilishana thamani hapa na hapa 391 00:21:15,000 --> 00:21:17,000 vile kwamba hii hutokea? 392 00:21:17,000 --> 00:21:20,000 Hii si kweli kazi. Kwa nini? 393 00:21:20,000 --> 00:21:22,000 Yeah. 394 00:21:22,000 --> 00:21:28,000 [Inaudible-mwanafunzi] 395 00:21:28,000 --> 00:21:31,000 Hasa, maelezo kwa bugginess hii 396 00:21:31,000 --> 00:21:34,000 tu kwa sababu wakati wewe piga kazi katika C 397 00:21:34,000 --> 00:21:38,000 na wale kazi kuchukua hoja, kama na b hapa, 398 00:21:38,000 --> 00:21:42,000 wewe ni kupita katika nakala ya thamani chochote wewe ni kutoa kwa kazi hiyo. 399 00:21:42,000 --> 00:21:46,000 Wewe si kutoa maadili awali wenyewe, 400 00:21:46,000 --> 00:21:49,000 hivyo tuliona hii katika muktadha wa buggyc, 401 00:21:49,000 --> 00:21:52,000 buggy3.c, ambayo inaonekana kitu kidogo kama hii. 402 00:21:52,000 --> 00:21:57,000 >> Kumbuka kwamba tulikuwa x na y initialized kwa 1 na 2, kwa mtiririko huo. 403 00:21:57,000 --> 00:21:59,000 Sisi basi kuchapishwa nini hao. 404 00:21:59,000 --> 00:22:03,000 Mimi kisha alidai kwamba nilikuwa swapping yao kwa wito byta ya x, y. 405 00:22:03,000 --> 00:22:06,000 Lakini tatizo ni kwamba swapping kazi, 406 00:22:06,000 --> 00:22:10,000 lakini tu katika upeo wa kubadilishana kazi yenyewe. 407 00:22:10,000 --> 00:22:13,000 Haraka kama sisi hit mstari 40 wale maadili walibadilishana 408 00:22:13,000 --> 00:22:16,000 walikuwa kutupwa mbali, na hivyo hakuna kitu 409 00:22:16,000 --> 00:22:21,000 katika kazi ya awali kuu ilikuwa kweli iliyopita wakati wote, 410 00:22:21,000 --> 00:22:26,000 hivyo kama unafikiri nyuma basi kama yale hii inaonekana kama katika suala la kumbukumbu yetu 411 00:22:26,000 --> 00:22:29,000 kama hii upande wa mkono wa kushoto wa bodi inawakilisha- 412 00:22:29,000 --> 00:22:33,000 na mimi itabidi kufanya bora wangu kwa kila mtu kuona hii-kama hii upande wa mkono wa kushoto wa bodi 413 00:22:33,000 --> 00:22:37,000 inawakilisha, kusema, RAM yako, na stack anaenda kukua kwenye up njia hii, 414 00:22:37,000 --> 00:22:43,000 na sisi wito kazi kama kuu, na kuu ina vigezo 2 mitaa, x na y, 415 00:22:43,000 --> 00:22:48,000 hebu kuelezea wale kama x hapa, na hebu kueleza haya kama y hapa, 416 00:22:48,000 --> 00:22:55,000 na tulenge katika maadili 1 na 2, hivyo hii hapa ni kuu, 417 00:22:55,000 --> 00:22:58,000 na wakati kuu wito kazi byta mfumo wa uendeshaji 418 00:22:58,000 --> 00:23:02,000 anatoa kazi byta rundo yake mwenyewe ya kumbukumbu juu ya stack, 419 00:23:02,000 --> 00:23:04,000 sura yake mwenyewe katika stack, hivyo kusema. 420 00:23:04,000 --> 00:23:08,000 Ni pia inatenga bits 32 kwa ints haya. 421 00:23:08,000 --> 00:23:11,000 Hufanyika kwa kuwaita na b, lakini hiyo ni kabisa holela. 422 00:23:11,000 --> 00:23:13,000 Inawezekana niliyowaitia chochote anataka, lakini kile kinachotokea wakati kuu 423 00:23:13,000 --> 00:23:19,000 wito byta ni inachukua hii 1, unaweka nakala huko, unaweka nakala huko. 424 00:23:19,000 --> 00:23:23,000 >> Kuna 1 nyingine za mitaa kutofautiana katika byta, ingawa, imeitaja >> TMP?. 425 00:23:23,000 --> 00:23:27,000 TMP, hivyo basi mimi kutoa mwenyewe bits nyingine 32 hapa, 426 00:23:27,000 --> 00:23:29,000 na kwa nini mimi kufanya katika kazi hii? 427 00:23:29,000 --> 00:23:34,000 Mimi alisema TMP int anapata, hivyo ina 1, hivyo sikuwa hii wakati sisi mwisho alicheza na mfano huu. 428 00:23:34,000 --> 00:23:39,000 Kisha b anapata, hivyo b ni 2, hivyo sasa hii inakuwa 2, 429 00:23:39,000 --> 00:23:42,000 na sasa anapata b temp, hivyo temp ni 1, 430 00:23:42,000 --> 00:23:44,000 hivyo sasa b inakuwa hii. 431 00:23:44,000 --> 00:23:46,000 Hiyo ni kubwa. Ni kazi. 432 00:23:46,000 --> 00:23:49,000 Lakini basi kwa haraka kama anarudi kazi 433 00:23:49,000 --> 00:23:52,000 kumbukumbu byta wa ufanisi kutoweka ili iweze kutumika tena 434 00:23:52,000 --> 00:23:58,000 kwa kazi nyingine katika siku zijazo, na ni wazi kabisa kuu unchanged. 435 00:23:58,000 --> 00:24:00,000 Tunahitaji njia ya kimsingi ya kutatua tatizo hili, 436 00:24:00,000 --> 00:24:03,000 na leo hatimaye tutaweza kuwa na njia ya kufanya hili ambapo 437 00:24:03,000 --> 00:24:06,000 tunaweza kuanzisha kitu kinachoitwa pointer. 438 00:24:06,000 --> 00:24:09,000 Ni zinageuka kuwa tunaweza kutatua tatizo hili 439 00:24:09,000 --> 00:24:12,000 si kwa kupita katika nakala za x na y 440 00:24:12,000 --> 00:24:18,000 lakini badala yake kwa kupita katika kile, unafikiri, kwa kazi byta? 441 00:24:18,000 --> 00:24:20,000 Yeah, nini kuhusu anuani? 442 00:24:20,000 --> 00:24:22,000 Sisi si kweli aliyesema kuhusu anwani kwa undani sana, 443 00:24:22,000 --> 00:24:25,000 lakini kama ubao huu inawakilisha kumbukumbu ya kompyuta yangu 444 00:24:25,000 --> 00:24:28,000 tunaweza kuanza shaka hesabu ka katika RAM yangu 445 00:24:28,000 --> 00:24:31,000 na kusema hii ni Byte # 1, hii ni Byte # 2, Byte # 3, 446 00:24:31,000 --> 00:24:35,000 Byte # 4, Byte # ... bilioni 2 kama nina 2 gigabytes ya RAM, 447 00:24:35,000 --> 00:24:38,000 hivyo tunaweza shaka kuja na mpango wa baadhi holela hesabu 448 00:24:38,000 --> 00:24:41,000 kwa ka wote binafsi katika kumbukumbu ya kompyuta yangu. 449 00:24:41,000 --> 00:24:43,000 >> Nini kama badala wakati mimi kuwaita byta 450 00:24:43,000 --> 00:24:47,000 badala ya kupita katika nakala za x na y 451 00:24:47,000 --> 00:24:51,000 nini si mimi badala kupita katika anuani ya x hapa, 452 00:24:51,000 --> 00:24:55,000 anuani ya y hapa, kimsingi anwani ya posta 453 00:24:55,000 --> 00:24:59,000 ya x na y kwa sababu kisha wabadilishane, kama yeye habari 454 00:24:59,000 --> 00:25:01,000 ya anuani katika kumbukumbu ya x na y, 455 00:25:01,000 --> 00:25:04,000 kisha wabadilishane, kama sisi mafunzo yake kidogo, 456 00:25:04,000 --> 00:25:07,000 yeye inaweza uwezekano kuendesha gari kwa anuani ya kwamba, ili kuzungumza, 457 00:25:07,000 --> 00:25:11,000 x, na mabadiliko ya idadi ya huko, basi gari na anuani ya y, 458 00:25:11,000 --> 00:25:16,000 mabadiliko ya idadi ya huko, hata wakati si kweli kupata nakala ya maadili hayo mwenyewe, 459 00:25:16,000 --> 00:25:19,000 hivyo hata kama kuongelea hili kuwa kumbukumbu kuu ya 460 00:25:19,000 --> 00:25:23,000 na kumbukumbu hii byta kama kuwa wa nguvu na sehemu ya hatari ya C 461 00:25:23,000 --> 00:25:28,000 ni kwamba kazi yoyote anaweza kugusa kumbukumbu popote katika kompyuta, 462 00:25:28,000 --> 00:25:32,000 na hii ni nguvu katika kuwa unaweza kufanya mambo sana dhana na programu za kompyuta katika C. 463 00:25:32,000 --> 00:25:36,000 Hii ni hatari kwa sababu unaweza pia screw up kwa urahisi sana. 464 00:25:36,000 --> 00:25:39,000 Kwa kweli, moja ya njia ya kawaida kwa mipango ya siku hizi kutumiwa 465 00:25:39,000 --> 00:25:42,000 bado ni kwa ajili ya programu kutotambua 466 00:25:42,000 --> 00:25:45,000 kwamba yeye au yeye ni kuruhusu data 467 00:25:45,000 --> 00:25:49,000 kwa kuwa imeandikwa katika mahali katika kumbukumbu kuwa mara si nia. 468 00:25:49,000 --> 00:25:51,000 >> Kwa mfano, yeye au yeye anatangaza safu ya kawaida 10 469 00:25:51,000 --> 00:25:56,000 lakini kisha ajali inajaribu kuweka ka 11 ndani ya kwamba safu ya kumbukumbu, 470 00:25:56,000 --> 00:25:59,000 na kuanza kugusa sehemu ya kumbukumbu ya kwamba ni halali tena. 471 00:25:59,000 --> 00:26:02,000 Tu contextual hili, baadhi ya unaweza kujua kwamba 472 00:26:02,000 --> 00:26:06,000 programu mara nyingi prompts kwa idadi Serial au funguo usajili, 473 00:26:06,000 --> 00:26:08,000 Photoshop na Neno na mipango kama hii. 474 00:26:08,000 --> 00:26:12,000 Zipo nyufa, kama baadhi ya wewe kujua, online ambapo unaweza kuendesha programu kidogo, 475 00:26:12,000 --> 00:26:14,000 na voilà, hakuna ombi zaidi kwa idadi Serial. 476 00:26:14,000 --> 00:26:16,000 Je hiyo kazi? 477 00:26:16,000 --> 00:26:21,000 Katika kesi nyingi mambo haya ni tu kutafuta katika kompyuta 478 00:26:21,000 --> 00:26:24,000 Nakala ya makundi katika zeros ya kompyuta halisi na wale 479 00:26:24,000 --> 00:26:28,000 ambapo ni kwamba kazi ambapo idadi Serial ni ombi, 480 00:26:28,000 --> 00:26:31,000 na wewe overwrite kwamba nafasi, au wakati wa mpango ni mbio 481 00:26:31,000 --> 00:26:33,000 unaweza kufikiri ambapo muhimu ni kweli kuhifadhiwa 482 00:26:33,000 --> 00:26:37,000 kutumia kitu kinachoitwa kiweua na unaweza ufa programu kwa njia hiyo. 483 00:26:37,000 --> 00:26:40,000 Hii si kusema kwamba hii ni lengo letu kwa michache ijayo siku, 484 00:26:40,000 --> 00:26:42,000 lakini ina sana ramifications ulimwengu halisi. 485 00:26:42,000 --> 00:26:45,000 Hiyo moja kinachotokea kwa kuhusisha wizi wa programu, 486 00:26:45,000 --> 00:26:47,000 lakini pia kuna maelewano ya mashine nzima. 487 00:26:47,000 --> 00:26:50,000 >> Kwa kweli, wakati tovuti siku hizi ni kunyonywa 488 00:26:50,000 --> 00:26:53,000 na kuathirika na data ni kuvuja na nywila kuibiwa 489 00:26:53,000 --> 00:26:58,000 hii mara nyingi sana inahusiana na usimamizi mbaya wa kumbukumbu ya mtu, 490 00:26:58,000 --> 00:27:01,000 au, katika kesi ya database, kushindwa wanatarajia 491 00:27:01,000 --> 00:27:03,000 adversarial pembejeo, hivyo zaidi juu ya kwamba katika wiki ijayo, 492 00:27:03,000 --> 00:27:07,000 lakini kwa sasa tu sneak preview ya aina ya uharibifu kwamba unaweza kufanya 493 00:27:07,000 --> 00:27:11,000 na si kabisa kuelewa jinsi mambo kazi chini ya Hood. 494 00:27:11,000 --> 00:27:14,000 Hebu kwenda juu kuelewa kwa nini hii ni kuvunjwa 495 00:27:14,000 --> 00:27:17,000 na chombo kwamba litakuwa zaidi na muhimu zaidi 496 00:27:17,000 --> 00:27:19,000 kama mipango yetu kupata ngumu zaidi. 497 00:27:19,000 --> 00:27:21,000 Hivi sasa wakati umeshapata mdudu katika mpango wako 498 00:27:21,000 --> 00:27:23,000 jinsi ya kuwa na wewe zimetimia debugging yake? 499 00:27:23,000 --> 00:27:25,000 Nini mbinu yako imekuwa hivi sasa, kama kufundishwa na TF yako 500 00:27:25,000 --> 00:27:27,000 au tu binafsi kufundishwa? 501 00:27:27,000 --> 00:27:29,000 [Mwanafunzi] Printf. 502 00:27:29,000 --> 00:27:31,000 Printf, hivyo printf ina pengine imekuwa rafiki yako katika kwamba kama unataka kuona 503 00:27:31,000 --> 00:27:33,000 nini kinaendelea ndani ya mpango wako 504 00:27:33,000 --> 00:27:36,000 wewe tu kuweka printf hapa, printf hapa, printf hapa. 505 00:27:36,000 --> 00:27:38,000 Kisha wewe kukimbia, na kupata rundo zima ya mambo ya screen 506 00:27:38,000 --> 00:27:43,000 kwamba unaweza kutumia kisha kuthibitisha kile ni kweli kwenda vibaya katika programu yako. 507 00:27:43,000 --> 00:27:45,000 >> Printf huelekea kuwa kitu chenye nguvu sana, 508 00:27:45,000 --> 00:27:47,000 lakini ni mchakato sana mwongozo. 509 00:27:47,000 --> 00:27:49,000 Una kuweka printf hapa, printf hapa, 510 00:27:49,000 --> 00:27:51,000 na kama wewe kuweka ndani ya kitanzi unaweza kupata mistari 100 511 00:27:51,000 --> 00:27:53,000 ya pato kwamba wewe kisha kuwa na kuchuja. 512 00:27:53,000 --> 00:27:58,000 Ni si sana user-kirafiki au maingiliano utaratibu kwa ajili ya programu debugging, 513 00:27:58,000 --> 00:28:00,000 bali nashiriki kuna njia mbadala. 514 00:28:00,000 --> 00:28:03,000 Kuna programu, kwa mfano, aitwaye GDB, Debugger GNU, 515 00:28:03,000 --> 00:28:06,000 ambayo ni arcane kidogo katika jinsi gani matumizi yake. 516 00:28:06,000 --> 00:28:08,000 Ni ngumu kidogo, lakini kusema ukweli, 517 00:28:08,000 --> 00:28:11,000 hii ni moja ya mambo hayo ambapo kama wewe kuweka katika wiki hii na ijayo 518 00:28:11,000 --> 00:28:14,000 saa za ziada kwa kuelewa kitu kama GDB 519 00:28:14,000 --> 00:28:18,000 itakuwa ila wewe makumi pengine ya masaa katika muda mrefu, 520 00:28:18,000 --> 00:28:21,000 hivyo pamoja na kwamba, nikupe teaser wa jinsi jambo hili kazi. 521 00:28:21,000 --> 00:28:23,000 >> Mimi niko katika terminal dirisha yangu. 522 00:28:23,000 --> 00:28:26,000 Hebu kwenda mbele na kukusanya mpango huu, buggy3. 523 00:28:26,000 --> 00:28:28,000 Ni tayari hadi sasa. 524 00:28:28,000 --> 00:28:31,000 Hebu kukimbia tu kama sisi alifanya nyuma wakati, na kwa kweli, ni kuvunjwa. 525 00:28:31,000 --> 00:28:34,000 Lakini kwa nini hii? Labda mimi Star up kazi byta. 526 00:28:34,000 --> 00:28:37,000 Labda ni na b. Mimi si kabisa kusonga yao kuzunguka usahihi. 527 00:28:37,000 --> 00:28:39,000 Hebu kwenda mbele na kufanya hili. 528 00:28:39,000 --> 00:28:43,000 Badala ya kukimbia tu buggy3 basi mimi badala kukimbia hii GDB mpango, 529 00:28:43,000 --> 00:28:48,000 na mimi naenda kuwaambia kwa kukimbia buggy3, 530 00:28:48,000 --> 00:28:52,000 na mimi naenda kwa pamoja mstari amri hoja,-tui, 531 00:28:52,000 --> 00:28:55,000 na tutaweza kuweka hii katika matatizo ya baadaye katika spec kuwakumbusha. 532 00:28:55,000 --> 00:28:57,000 Na sasa hii interface nyeusi na nyeupe popped up tena kuwa, 533 00:28:57,000 --> 00:28:59,000 ni kidogo mno kwa sababu kwanza kuna haya yote 534 00:28:59,000 --> 00:29:02,000 udhamini habari hapa chini, lakini angalau kuna kitu familiar. 535 00:29:02,000 --> 00:29:04,000 Katika juu ya dirisha ni code yangu halisi, 536 00:29:04,000 --> 00:29:08,000 na kama mimi kitabu juu hapa basi mimi kitabu kwa sana juu ya faili yangu, 537 00:29:08,000 --> 00:29:11,000 na kwa kweli, kuna buggy3.c, na ilani chini ya dirisha hili 538 00:29:11,000 --> 00:29:13,000 Nina haraka GDB. 539 00:29:13,000 --> 00:29:16,000 >> Hii si sawa kama kawaida yangu John Harvard haraka. 540 00:29:16,000 --> 00:29:19,000 Hii ni haraka ambayo inaenda naomba kudhibiti GDB. 541 00:29:19,000 --> 00:29:21,000 GDB ni debugger. 542 00:29:21,000 --> 00:29:24,000 debugger ni programu ambayo inakuwezesha kutembea kwa njia ya 543 00:29:24,000 --> 00:29:27,000 utekelezaji wa mpango wako mstari kwa mstari kwa mstari, 544 00:29:27,000 --> 00:29:30,000 njiani kufanya kitu chochote unataka mpango, 545 00:29:30,000 --> 00:29:33,000 hata wito kazi, au kuangalia, muhimu zaidi, 546 00:29:33,000 --> 00:29:35,000 katika maadili mbalimbali variable ya. 547 00:29:35,000 --> 00:29:37,000 Hebu kwenda mbele na kufanya hili. 548 00:29:37,000 --> 00:29:40,000 Mimi nina kwenda mbele na aina katika kukimbia katika haraka ya GDB, 549 00:29:40,000 --> 00:29:43,000 hivyo ilani chini kushoto ya screen nimekuwa typed kukimbia, 550 00:29:43,000 --> 00:29:45,000 na nimekuwa enter, na ni nini kwamba kufanya? 551 00:29:45,000 --> 00:29:50,000 Ni literally mbio mpango wangu, lakini sikuweza kwa kweli kuona mengi kwenda juu hapa 552 00:29:50,000 --> 00:29:55,000 kwa sababu mimi si kweli aliiambia debugger 553 00:29:55,000 --> 00:29:57,000 pause wakati fulani katika muda. 554 00:29:57,000 --> 00:29:59,000 Kuandika tu kukimbia anaendesha mpango. 555 00:29:59,000 --> 00:30:01,000 Mimi si kweli kuona chochote. Siwezi kuendesha hiyo. 556 00:30:01,000 --> 00:30:03,000 >> Badala yake basi mimi kufanya hili. 557 00:30:03,000 --> 00:30:08,000 Wakati huu wa haraka GDB basi mimi badala aina mapumziko, kuingia. 558 00:30:08,000 --> 00:30:10,000 Hiyo si kile mimi maana ya aina. 559 00:30:10,000 --> 00:30:13,000 Hebu badala aina mapumziko kuu. 560 00:30:13,000 --> 00:30:15,000 Kwa maneno mengine, nataka kuweka kitu kinachoitwa breakpoint, 561 00:30:15,000 --> 00:30:18,000 ambayo ni aptly aitwaye sababu itakuwa kuvunja au pause 562 00:30:18,000 --> 00:30:21,000 utekelezaji wa mpango yako katika mahali fulani. 563 00:30:21,000 --> 00:30:23,000 Kuu ni jina ya kazi yangu. 564 00:30:23,000 --> 00:30:25,000 Ona kwamba GDB ni pretty smart. 565 00:30:25,000 --> 00:30:28,000 Ni figured kwamba kinachotokea kuu kuanza takribani katika mstari 18 566 00:30:28,000 --> 00:30:32,000 ya buggy3.c, na kisha taarifa hapa juu kushoto 567 00:30:32,000 --> 00:30:34,000 b + ni haki ya karibu na mstari 18. 568 00:30:34,000 --> 00:30:38,000 Hiyo mimi nakukumbusha kuwa nimekuwekea breakpoint katika mstari wa 18. 569 00:30:38,000 --> 00:30:42,000 Wakati huu ambapo ninapoandika kukimbia, mimi naenda kuendesha programu yangu 570 00:30:42,000 --> 00:30:45,000 hadi hits kwamba breakpoint, 571 00:30:45,000 --> 00:30:48,000 hivyo mpango mapenzi pause kwa ajili yangu katika mstari wa 18. 572 00:30:48,000 --> 00:30:50,000 Hapa sisi kwenda, kukimbia. 573 00:30:50,000 --> 00:30:53,000 Hakuna inaonekana kuwa kilichotokea, lakini taarifa chini kushoto 574 00:30:53,000 --> 00:30:58,000 kuanza programu, buggy3, breakpoint 1 katika kuu katika buggy3.c line 18. 575 00:30:58,000 --> 00:31:00,000 Naweza kufanya nini sasa? 576 00:31:00,000 --> 00:31:03,000 >> Taarifa mimi unaweza kuanza kuandika mambo kama magazeti, 577 00:31:03,000 --> 00:31:08,000 si printf, magazeti x, na sasa hiyo ni ya ajabu. 578 00:31:08,000 --> 00:31:11,000 $ 1 ni udadisi, kama tutaweza kuona 579 00:31:11,000 --> 00:31:14,000 kila wakati magazeti kitu wewe kupata mwezi $ thamani. 580 00:31:14,000 --> 00:31:18,000 Hiyo ni ili uweze kurejea katika maadili uliopita tu katika kesi, 581 00:31:18,000 --> 00:31:21,000 lakini kwa sasa nini magazeti ananiambia ni kwamba thamani ya x katika hatua hii ya hadithi 582 00:31:21,000 --> 00:31:26,000 inaonekana 134,514,032. 583 00:31:26,000 --> 00:31:29,000 Nini? Wapi kwamba hata kuja kutoka? 584 00:31:29,000 --> 00:31:31,000 [Inaudible-mwanafunzi] 585 00:31:31,000 --> 00:31:34,000 Hakika, huu ni nini Tutamwita thamani ya takataka, na tumekuwa si aliyesema kuhusu hili bado, 586 00:31:34,000 --> 00:31:37,000 lakini sababu ya kwamba wewe initialize vigezo 587 00:31:37,000 --> 00:31:40,000 ni wazi ili wapate kuwa baadhi ya thamani ya kwamba unataka wao kuwa. 588 00:31:40,000 --> 00:31:44,000 Lakini catch ni kukumbuka kuwa unaweza kutangaza vigezo 589 00:31:44,000 --> 00:31:46,000 kama nilivyofanya wakati iliyopita katika mfano wangu sigma 590 00:31:46,000 --> 00:31:48,000 bila ya kweli kuwapa thamani. 591 00:31:48,000 --> 00:31:50,000 Kumbuka nilivyopatenda juu hapa nchini sigma. 592 00:31:50,000 --> 00:31:52,000 Mimi alitangaza n, lakini kile thamani gani mimi kuwapa? 593 00:31:52,000 --> 00:31:56,000 Hakuna, kwa sababu nilijua kwamba katika mistari michache ijayo 594 00:31:56,000 --> 00:31:59,000 GetInt ingekuwa ya utunzaji wa tatizo la kuweka thamani ndani ya n. 595 00:31:59,000 --> 00:32:02,000 >> Lakini katika hatua hii kwa hadithi ya mstari 11 596 00:32:02,000 --> 00:32:05,000 na mstari wa 12 na 13 na line line 14 597 00:32:05,000 --> 00:32:08,000 katika wale mistari kadhaa ni nini thamani ya n? 598 00:32:08,000 --> 00:32:10,000 Katika C wewe tu hawajui. 599 00:32:10,000 --> 00:32:14,000 Ni kwa ujumla baadhi ya thamani ya takataka, baadhi idadi kabisa random 600 00:32:14,000 --> 00:32:17,000 wa kushoto juu ya kimsingi na kazi baadhi ya awali 601 00:32:17,000 --> 00:32:21,000 baada ya kukimbia, hivyo kama mpango wako anaendesha 602 00:32:21,000 --> 00:32:24,000 kukumbuka kuwa kazi anapata kazi, kazi, kazi. 603 00:32:24,000 --> 00:32:27,000 Muafaka haya yote kupata kuweka kwenye kumbukumbu, na kisha wale kurudi kazi, 604 00:32:27,000 --> 00:32:31,000 na kama tu mimi alipendekeza na kifutio kumbukumbu yao ni hatimaye kutumika tena. 605 00:32:31,000 --> 00:32:37,000 Naam, ni tu hivyo hutokea kwamba hii x variable katika mpango huu 606 00:32:37,000 --> 00:32:41,000 inaonekana kuwa zilizomo baadhi thamani takataka kama 134514032 607 00:32:41,000 --> 00:32:44,000 kutoka kwa baadhi kazi ya awali, si moja kwamba mimi aliandika. 608 00:32:44,000 --> 00:32:47,000 Ni inaweza kuwa kitu ambacho huja kwa ufanisi na mfumo wa uendeshaji, 609 00:32:47,000 --> 00:32:49,000 baadhi ya kazi chini ya Hood. 610 00:32:49,000 --> 00:32:52,000 >> Okay, hiyo ni nzuri, lakini hebu sasa mapema ili line ijayo. 611 00:32:52,000 --> 00:32:55,000 Kama mimi aina "ijayo" katika GDB wangu wa haraka na mimi enter, 612 00:32:55,000 --> 00:32:58,000 taarifa kuwa katika kuzungumzia hatua chini ya mstari 19, 613 00:32:58,000 --> 00:33:01,000 lakini Kidokezo kimantiki ni kwamba mstari 18 614 00:33:01,000 --> 00:33:06,000 sasa kumaliza utekelezaji, hivyo kama mimi tena aina "magazeti x" 615 00:33:06,000 --> 00:33:10,000 Mimi lazima sasa angalia 1, na kwa kweli, mimi kufanya. 616 00:33:10,000 --> 00:33:14,000 Tena, stuff $ ni njia ya GDB kuwakumbusha 617 00:33:14,000 --> 00:33:17,000 nini historia ya prints ni kwamba umefanya kosa. 618 00:33:17,000 --> 00:33:21,000 Sasa basi mimi kwenda mbele na magazeti nje y, na kwa hakika, y ni baadhi ya thamani kama mambo vizuri, 619 00:33:21,000 --> 00:33:24,000 lakini hakuna mpango mkubwa kwa sababu katika mstari 19 tuko kuhusu hawawajui ni 620 00:33:24,000 --> 00:33:27,000 thamani 2, hivyo basi mimi andika "ijayo" tena. 621 00:33:27,000 --> 00:33:29,000 Na sasa tuko kwenye mstari printf. 622 00:33:29,000 --> 00:33:31,000 Hebu kufanya x magazeti. 623 00:33:31,000 --> 00:33:34,000 Hebu kufanya magazeti y. Kusema ukweli, mimi nina kupata uchovu kidogo ya uchapishaji huu. 624 00:33:34,000 --> 00:33:38,000 Hebu badala aina "display x" na "kuonyesha y," 625 00:33:38,000 --> 00:33:41,000 na sasa wakati kila ninapoandika amri katika siku zijazo 626 00:33:41,000 --> 00:33:45,000 Nami kukumbushwa nini x na y, nini x na y, nini x na y. 627 00:33:45,000 --> 00:33:48,000 >> Naweza pia, kama kando, aina katika "wenyeji info." 628 00:33:48,000 --> 00:33:50,000 Info ni amri maalum. 629 00:33:50,000 --> 00:33:52,000 Wenyeji maana yake inaonyesha mimi vigezo mitaa. 630 00:33:52,000 --> 00:33:55,000 Tu katika kesi mimi kusahau au huyu ni mwenda wazimu, ngumu kazi 631 00:33:55,000 --> 00:33:57,000 kwamba mimi au mtu mwingine aliandika maelezo wenyeji atakuambia 632 00:33:57,000 --> 00:34:00,000 kile ni vigezo mitaa yote ndani ya kazi hii mitaa 633 00:34:00,000 --> 00:34:03,000 kwamba unaweza huduma ya juu kama unataka poke kote. 634 00:34:03,000 --> 00:34:07,000 Sasa, printf ni kuhusu kutekeleza, hivyo basi mimi kwenda mbele na aina tu "ujao." 635 00:34:07,000 --> 00:34:10,000 Kwa sababu tuko katika mazingira haya sisi siyo kweli kuona ni 636 00:34:10,000 --> 00:34:14,000 nitafanya hapa chini, lakini taarifa ni kupata kidogo mangled hapa. 637 00:34:14,000 --> 00:34:17,000 Lakini taarifa ni kuu screen pale, 638 00:34:17,000 --> 00:34:21,000 hivyo si mpango kamili hapa, lakini hiyo ni sawa kwa sababu siwezi daima poke kuzunguka 639 00:34:21,000 --> 00:34:23,000 kutumia magazeti kama nataka. 640 00:34:23,000 --> 00:34:26,000 >> Hebu aina ya pili, na sasa hapa ni sehemu ya kuvutia. 641 00:34:26,000 --> 00:34:29,000 Katika hatua hii ya hadithi y ni 2, na x ni 1, 642 00:34:29,000 --> 00:34:32,000 kama unahitajika hapa, na tena, 643 00:34:32,000 --> 00:34:35,000 sababu hii ni moja kwa moja kuonyesha sasa ni kwa sababu mimi kutumika amri 644 00:34:35,000 --> 00:34:40,000 kuonyesha x na y kuonyesha, hivyo wakati ninapoandika ijayo 645 00:34:40,000 --> 00:34:43,000 katika nadharia x na y wanapaswa kuwa swapped. 646 00:34:43,000 --> 00:34:45,000 Sasa, sisi tayari kujua kwamba si kwenda kuwa kesi, 647 00:34:45,000 --> 00:34:49,000 lakini tutaweza kuona katika wakati gani tunaweza kupiga mbizi kwa kina takwimu kwa nini hiyo ni kweli. 648 00:34:49,000 --> 00:34:54,000 Next, na kwa bahati mbaya, bado ni y 2 x na bado ni 1, na naweza kuthibitisha kama mengi. 649 00:34:54,000 --> 00:34:56,000 Print x, y magazeti. 650 00:34:56,000 --> 00:34:59,000 Hakika, hakuna swapping ina hasa kilichotokea, hivyo hebu kuanza hii zaidi. 651 00:34:59,000 --> 00:35:01,000 Wazi byta ni kuvunjwa. 652 00:35:01,000 --> 00:35:04,000 Hebu badala aina "kukimbia" tena. 653 00:35:04,000 --> 00:35:07,000 Hebu kusema ndiyo, nataka kuanzisha upya kuanzia mwanzo, kuingia. 654 00:35:07,000 --> 00:35:09,000 >> Sasa mimi nina nyuma hadi mstari 18. 655 00:35:09,000 --> 00:35:11,000 Sasa taarifa x na y ni takataka maadili tena. 656 00:35:11,000 --> 00:35:15,000 Next, pili, pili, pili. 657 00:35:15,000 --> 00:35:17,000 Kama mimi kupata kuchoka naweza pia aina tu n kwa ajili ya pili. 658 00:35:17,000 --> 00:35:21,000 Unaweza abbreviate kwa mlolongo mfupi iwezekanavyo ya wahusika. 659 00:35:21,000 --> 00:35:23,000 Swap sasa kuvunjwa. 660 00:35:23,000 --> 00:35:25,000 Hebu tuzame katika, hivyo badala ya kuandika ijayo, 661 00:35:25,000 --> 00:35:30,000 sasa mimi naenda aina hatua hivyo kwamba mimi nina wanazidi ndani ya kazi hii 662 00:35:30,000 --> 00:35:33,000 ili niweze kutembea kwa njia yake, hivyo mimi hit hatua na kisha kuingia. 663 00:35:33,000 --> 00:35:37,000 Ona kwamba anaruka mwangaza chini ya chini katika mpango wangu mstari 36. 664 00:35:37,000 --> 00:35:39,000 Sasa nini ni vigezo mitaa? 665 00:35:39,000 --> 00:35:41,000 Info wazawa. 666 00:35:41,000 --> 00:35:43,000 Hakuna bado tu kwa sababu tumekuwa si Gotten kwa kuwa mstari, 667 00:35:43,000 --> 00:35:47,000 hivyo hebu kwenda mbele na kusema "ujao." 668 00:35:47,000 --> 00:35:50,000 Sasa sisi tunaonekana kuwa na TMP, magazeti TMP. 669 00:35:50,000 --> 00:35:52,000 Takataka thamani, haki? Nadhani hivyo. 670 00:35:52,000 --> 00:35:55,000 Vipi kuhusu magazeti, magazeti b, 1 na 2? 671 00:35:55,000 --> 00:35:58,000 Katika wakati huu, haraka kama mimi aina ya pili 672 00:35:58,000 --> 00:36:02,000 TMP ni kwenda kuchukua juu ya thamani ya 1, hopefully, 673 00:36:02,000 --> 00:36:05,000 kwa sababu TMP ni kwenda kupewa thamani ya. 674 00:36:05,000 --> 00:36:08,000 >> Sasa hebu gani magazeti, magazeti b, 675 00:36:08,000 --> 00:36:11,000 lakini sasa magazeti TMP, na ni kweli 1. 676 00:36:11,000 --> 00:36:14,000 Hebu kufanya ijayo. Hebu kufanya ijayo. 677 00:36:14,000 --> 00:36:16,000 Nimekuwa kumaliza kazi byta. 678 00:36:16,000 --> 00:36:19,000 Mimi bado ndani yake katika mstari 40, hivyo basi mimi magazeti, 679 00:36:19,000 --> 00:36:22,000 magazeti b, na mimi sijali nini TMP ni. 680 00:36:22,000 --> 00:36:27,000 Inaonekana kama byta ni sahihi linapokuja swapping b na. 681 00:36:27,000 --> 00:36:31,000 Lakini kama mimi sasa aina ya pili, mimi kuruka nyuma ya mstari 25, 682 00:36:31,000 --> 00:36:34,000 na bila shaka, kama mimi aina katika x na y magazeti 683 00:36:34,000 --> 00:36:38,000 wao uko bado unchanged, hivyo tuna si fasta tatizo. 684 00:36:38,000 --> 00:36:41,000 Lakini diagnostically sasa labda na mpango huu GDB 685 00:36:41,000 --> 00:36:44,000 tumekuwa angalau kujipatia hatua moja karibu na uelewa 686 00:36:44,000 --> 00:36:47,000 nini kinaendelea vibaya bila ya kuwa na takataka code yetu kwa kuweka printf hapa, 687 00:36:47,000 --> 00:36:50,000 printf hapa, printf hapa na kisha kukimbia tena na tena 688 00:36:50,000 --> 00:36:52,000 kujaribu kufikiri nini kinaendelea vibaya. 689 00:36:52,000 --> 00:36:55,000 >> Mimi nina kwenda mbele na kuacha nje ya hii kabisa na kuacha. 690 00:36:55,000 --> 00:36:57,000 Ni kwenda basi sema, "Simamisha anyway?" Ndiyo. 691 00:36:57,000 --> 00:37:00,000 Sasa mimi nina nyuma katika haraka yangu ya kawaida, na mimi nina kufanyika kwa kutumia GDB. 692 00:37:00,000 --> 00:37:03,000 Kama kando, huna haja ya kutumia hii-tui bendera. 693 00:37:03,000 --> 00:37:07,000 Kwa kweli, kama wewe ni omit kupata kimsingi nusu chini ya screen. 694 00:37:07,000 --> 00:37:11,000 Kama mimi basi aina ya mapumziko kuu na kisha kukimbia 695 00:37:11,000 --> 00:37:15,000 Mimi bado anaweza kuendesha programu yangu, lakini nini kufanya ni zaidi textually 696 00:37:15,000 --> 00:37:18,000 nionyeshe sasa line moja kwa wakati mmoja. 697 00:37:18,000 --> 00:37:21,000 Tui-, textual user interface, 698 00:37:21,000 --> 00:37:25,000 tu inaonyesha zaidi ya mpango wa saa moja, ambayo pengine ni kidogo conceptually rahisi. 699 00:37:25,000 --> 00:37:27,000 Lakini kwa kweli, mimi wanaweza tu kufanya ijayo, pili, pili, 700 00:37:27,000 --> 00:37:30,000 na mimi naenda kuona mstari mmoja kwa wakati, na kama kweli wanataka kuona nini kinaendelea 701 00:37:30,000 --> 00:37:35,000 Mimi unaweza aina orodha na kuona rundo zima la mistari jirani. 702 00:37:35,000 --> 00:37:39,000 >> Kuna video ambayo tumekuwa aliuliza kwamba wewe kuangalia kwa tatizo seti 3 703 00:37:39,000 --> 00:37:43,000 ambayo inashughulikia Nate baadhi ya intricacies ya GDB, 704 00:37:43,000 --> 00:37:46,000 na hii ni moja ya mambo hayo, uaminifu, ambapo baadhi ya asilimia zisizo trivial ya wewe 705 00:37:46,000 --> 00:37:49,000 kamwe kugusa GDB, na kwamba itakuwa kitu mbaya 706 00:37:49,000 --> 00:37:53,000 kwa sababu literally wewe kuishia kutumia muda zaidi baadaye huu muhula 707 00:37:53,000 --> 00:37:56,000 Chasing chini mende basi ingekuwa kama wewe kuweka katika kwamba nusu saa / saa 708 00:37:56,000 --> 00:38:00,000 wiki hii na kujifunza ijayo kwa kupata starehe na GDB. 709 00:38:00,000 --> 00:38:02,000 Printf alikuwa rafiki yako. 710 00:38:02,000 --> 00:38:05,000 GDB lazima sasa kuwa rafiki yako. 711 00:38:05,000 --> 00:38:08,000 >> Maswali yoyote juu ya GDB? 712 00:38:08,000 --> 00:38:12,000 Na hapa ni orodha ya haraka ya baadhi ya amri nguvu zaidi na muhimu. 713 00:38:12,000 --> 00:38:15,000 Yeah. >> Je, unaweza magazeti kamba? 714 00:38:15,000 --> 00:38:17,000 Je, unaweza magazeti kamba? Kabisa. 715 00:38:17,000 --> 00:38:19,000 Haina tu kuwa integers. 716 00:38:19,000 --> 00:38:22,000 Kama s kutofautiana ni string aina tu katika s magazeti. 717 00:38:22,000 --> 00:38:24,000 Ni kuonyesha nini kwamba variable string ni. 718 00:38:24,000 --> 00:38:26,000 [Inaudible-mwanafunzi] 719 00:38:26,000 --> 00:38:28,000 Nitakupa anuani na kamba yenyewe. 720 00:38:28,000 --> 00:38:32,000 Ni nitakuonyesha zote mbili. 721 00:38:32,000 --> 00:38:34,000 Na jambo moja la mwisho, kwa sababu tu hizi ni nzuri kujua pia. 722 00:38:34,000 --> 00:38:37,000 Backtrace na sura, basi mimi kupiga mbizi katika wakati huu wa mwisho, 723 00:38:37,000 --> 00:38:39,000 sawa exact mpango na GDB. 724 00:38:39,000 --> 00:38:44,000 Hebu kwenda mbele na kukimbia textual user interface version, 725 00:38:44,000 --> 00:38:46,000 kuvunja kuu. 726 00:38:46,000 --> 00:38:49,000 Hebu kwenda mbele na kukimbia tena. Mimi hapa. 727 00:38:49,000 --> 00:38:55,000 Sasa basi mimi kwenda ijayo, pili, pili, pili, pili, hatua, kuingia. 728 00:38:55,000 --> 00:39:00,000 >> Na sasa nadhani nina sasa katika byta makusudi, lakini nina kama "Damn, nini ilikuwa thamani ya x?" 729 00:39:00,000 --> 00:39:02,000 Mimi siwezi kufanya x tena. 730 00:39:02,000 --> 00:39:05,000 Mimi siwezi kufanya y sababu wao siyo katika upeo. 731 00:39:05,000 --> 00:39:07,000 Hawako katika mazingira, lakini hakuna tatizo. 732 00:39:07,000 --> 00:39:09,000 Mimi unaweza aina backtrace. 733 00:39:09,000 --> 00:39:13,000 Hiyo inaonyesha yangu yote ya kazi ya kwamba haijanyonga hadi hatua hii kwa wakati. 734 00:39:13,000 --> 00:39:16,000 Ona kwamba moja juu ya chini, kuu, yanaendana na kuu 735 00:39:16,000 --> 00:39:18,000 kuwa juu ya chini ya picha yetu hapa. 736 00:39:18,000 --> 00:39:22,000 ukweli kwamba byta ni juu ya mistari yake juu na byta kuwa juu yake katika kumbukumbu hapa, 737 00:39:22,000 --> 00:39:26,000 na kama nataka kupata nyuma kuu kwa muda naweza kusema "frame." 738 00:39:26,000 --> 00:39:30,000 Nini namba? Kuu ni sura # 1. 739 00:39:30,000 --> 00:39:32,000 Mimi nina kwenda mbele na kusema "sura 1." 740 00:39:32,000 --> 00:39:36,000 >> Sasa mimi nina nyuma katika kuu, na mimi unaweza magazeti x, na mimi unaweza magazeti y, 741 00:39:36,000 --> 00:39:40,000 lakini siwezi magazeti b au. 742 00:39:40,000 --> 00:39:43,000 Lakini siwezi kusema kama mimi, "Sawa, kusubiri dakika alikuwa wapi byta.?" 743 00:39:43,000 --> 00:39:46,000 Hebu kwenda mbele na kusema "frame 0." 744 00:39:46,000 --> 00:39:48,000 Sasa mimi nina nyuma ambapo mimi nataka kuwa, na kama kando, 745 00:39:48,000 --> 00:39:52,000 kuna amri nyingine pia, kama kama wewe ni kweli kupata kuchoka kuandika ijayo, pili, pili, pili, 746 00:39:52,000 --> 00:39:56,000 unaweza ujumla kusema mambo kama "10 ijayo," na kwamba hatua kupitia mistari 10 ijayo. 747 00:39:56,000 --> 00:39:59,000 Unaweza pia kuandika "kuendelea" wakati kweli kupata kulishwa juu na wanazidi kwa njia hiyo. 748 00:39:59,000 --> 00:40:05,000 Endelea kukimbia programu yako bila usumbufu mpaka hits mwingine breakpoint, 749 00:40:05,000 --> 00:40:07,000 iwe katika kitanzi au chini chini katika mpango wako. 750 00:40:07,000 --> 00:40:11,000 >> Katika kesi hii sisi iliendelea hadi mwisho, na mpango exited kawaida. 751 00:40:11,000 --> 00:40:13,000 Hii ni njia dhana tu, duni mchakato. 752 00:40:13,000 --> 00:40:16,000 Tu programu yako exited kawaida. 753 00:40:16,000 --> 00:40:24,000 Zaidi juu ya kwamba katika video na katika vikao debugging kuja. 754 00:40:24,000 --> 00:40:26,000 Hiyo ilikuwa mengi. 755 00:40:26,000 --> 00:40:35,000 Hebu yetu 5-dakika kuvunja hapa, na tutaweza kurudi pamoja na structs files. 756 00:40:35,000 --> 00:40:38,000 >> Kama una dived katika pset wiki hii tayari 757 00:40:38,000 --> 00:40:41,000 utasikia kujua kwamba sisi kutumia katika code usambazaji, 758 00:40:41,000 --> 00:40:45,000 chanzo kificho kwamba sisi kutoa na wewe kama kianzio, baadhi ya mbinu mpya. 759 00:40:45,000 --> 00:40:50,000 Hasa, sisi ilianzisha hii Keyword mpya iitwayo struct, kwa muundo, 760 00:40:50,000 --> 00:40:53,000 ili tuweze kujenga vigezo customized ya aina. 761 00:40:53,000 --> 00:40:57,000 Sisi pia ilianzisha dhana ya faili pembejeo I / O, faili na pato, 762 00:40:57,000 --> 00:41:00,000 na hii ni ili tuweze kuokoa hali 763 00:41:00,000 --> 00:41:03,000 ya kinyang'anyiro bodi yako na faili kwenye disc 764 00:41:03,000 --> 00:41:06,000 ili wenzake mafundisho na naweza kuelewa 765 00:41:06,000 --> 00:41:09,000 nini kinaendelea ndani ya mpango wako bila ya kuwa na manually kucheza 766 00:41:09,000 --> 00:41:11,000 kadhaa ya michezo ya kinyang'anyiro. 767 00:41:11,000 --> 00:41:13,000 Tunaweza kufanya hili zaidi automatedly. 768 00:41:13,000 --> 00:41:18,000 >> Wazo hili la struct kutatua tatizo uungwana kulazimisha. 769 00:41:18,000 --> 00:41:21,000 Tuseme kwamba tunataka kutekeleza baadhi ya mpango 770 00:41:21,000 --> 00:41:25,000 kwamba kwa namna fulani anaendelea kufuatilia kwa taarifa juu ya wanafunzi, 771 00:41:25,000 --> 00:41:28,000 na wanafunzi wanaweza kuwa, kwa mfano, kitambulisho, jina 772 00:41:28,000 --> 00:41:31,000 na nyumba katika mahali kama Harvard, hivyo hizi ni vipande 3 wa habari 773 00:41:31,000 --> 00:41:34,000 tunataka kuweka karibu, hivyo basi mimi kwenda mbele na kuanza kuandika mpango kidogo hapa, 774 00:41:34,000 --> 00:41:38,000 pamoja stdio.h. 775 00:41:38,000 --> 00:41:42,000 Basi mimi kufanya ni pamoja na cs50.h. 776 00:41:42,000 --> 00:41:44,000 Na kisha kuanza kazi yangu kuu. 777 00:41:44,000 --> 00:41:46,000 Nami bother na hoja yoyote mstari amri, 778 00:41:46,000 --> 00:41:49,000 na hapa mimi nataka kuwa mwanafunzi, hivyo mimi nina kwenda kusema 779 00:41:49,000 --> 00:41:54,000 mwanafunzi ana jina, hivyo mimi nina kwenda kusema "string jina." 780 00:41:54,000 --> 00:41:59,000 Kisha mimi nina kwenda kusema mwanafunzi pia ina ID, hivyo int id, 781 00:41:59,000 --> 00:42:03,000 na mwanafunzi ana nyumba, hivyo nina pia kwenda kusema "kamba ya nyumba." 782 00:42:03,000 --> 00:42:06,000 Basi mimi itabidi ili hawa wadogo zaidi cleanly kama hii. 783 00:42:06,000 --> 00:42:11,000 Okay, sasa nina vigezo 3 na ambayo kwa kuwakilisha mwanafunzi, hivyo "mwanafunzi." 784 00:42:11,000 --> 00:42:15,000 >> Na sasa nataka populate maadili haya, hivyo basi mimi kwenda mbele na kusema kitu kama 785 00:42:15,000 --> 00:42:18,000 "Id = 123." 786 00:42:18,000 --> 00:42:21,000 Jina ni kwenda kupata Daudi. 787 00:42:21,000 --> 00:42:24,000 Hebu sema nyumba ni kwenda kupata Mather, 788 00:42:24,000 --> 00:42:31,000 na kisha mimi naenda kufanya kitu kiholela kama printf ("% s, 789 00:42:31,000 --> 00:42:37,000 ambao ni ID% d, anaishi katika% s. 790 00:42:37,000 --> 00:42:41,000 Na sasa, je, nataka kuziba katika hapa, moja baada ya nyingine? 791 00:42:41,000 --> 00:42:47,000 Jina, id, nyumba; kurudi 0. 792 00:42:47,000 --> 00:42:50,000 Okay, isipokuwa mimi Star up mahali fulani hapa 793 00:42:50,000 --> 00:42:54,000 Nadhani tuna mpango pretty nzuri kwamba maduka ya mwanafunzi mmoja. 794 00:42:54,000 --> 00:42:57,000 Bila shaka, hii si yote ya kuvutia. Nini kama mimi nataka kuwa na wanafunzi 2? 795 00:42:57,000 --> 00:42:59,000 Hiyo ni hakuna mpango mkubwa. Mimi inaweza kusaidia watu 2. 796 00:42:59,000 --> 00:43:03,000 Hebu kwenda mbele na kuonyesha hii na kwenda chini hapa, 797 00:43:03,000 --> 00:43:09,000 na naweza kusema "id = 456" kwa mtu kama Rob ambaye anaishi katika Kirkland. 798 00:43:09,000 --> 00:43:12,000 >> Okay, kusubiri, lakini siwezi kuwaita hawa kitu kimoja, 799 00:43:12,000 --> 00:43:15,000 na inaonekana kama mimi nina kwenda kuwa na nakala hii, 800 00:43:15,000 --> 00:43:19,000 hivyo basi mimi kusema kwamba hizi itakuwa Daudi vigezo, 801 00:43:19,000 --> 00:43:23,000 na napenda kupata nakala baadhi ya hizi kwa Rob. 802 00:43:23,000 --> 00:43:27,000 Tutamwita haya ya Rob lakini hii si kwenda kufanya kazi sasa 803 00:43:27,000 --> 00:43:33,000 kwa sababu mimi-kusubiri, hebu mimi kubadili id1, NAME1 na house1. 804 00:43:33,000 --> 00:43:35,000 Rob itakuwa 2, 2. 805 00:43:35,000 --> 00:43:42,000 Mimi nimepata kubadili hili hapa, hapa, hapa, hapa, hapa, hapa. 806 00:43:42,000 --> 00:43:45,000 Kusubiri, nini kuhusu Tommy? Hebu kufanya hii tena. 807 00:43:45,000 --> 00:43:49,000 Ni wazi kama bado nadhani hii ni njia nzuri ya kufanya hili, siyo, 808 00:43:49,000 --> 00:43:52,000 hivyo nakala / kuweka mbaya. 809 00:43:52,000 --> 00:43:55,000 Lakini sisi kutatuliwa wiki hii iliyopita. 810 00:43:55,000 --> 00:43:59,000 >> Nini ilikuwa ufumbuzi yetu wakati sisi alitaka kuwa na matukio mbalimbali ya aina moja data? 811 00:43:59,000 --> 00:44:01,000 [Wanafunzi] safu. 812 00:44:01,000 --> 00:44:03,000 safu, hivyo basi mimi kujaribu safi hii up. 813 00:44:03,000 --> 00:44:07,000 Hebu kufanya baadhi ya chumba kwa ajili yangu mwenyewe kwa juu, na basi mimi badala kufanya hili hapa. 814 00:44:07,000 --> 00:44:12,000 Tutaweza kuwaita watu hawa, na badala yake nitakacho wanasema "Vitambulisho int," 815 00:44:12,000 --> 00:44:14,000 na mimi naenda kwa msaada wa 3 wa sisi kwa sasa. 816 00:44:14,000 --> 00:44:18,000 Mimi nina kwenda kusema "majina kamba," na mimi itabidi kusaidia 3 wa kwetu, 817 00:44:18,000 --> 00:44:22,000 na kisha nitakacho wanasema "nyumba kamba," na mimi nina kwenda kwa msaada 3 ya kwetu. 818 00:44:22,000 --> 00:44:26,000 Sasa katika hapa badala ya Daudi kupata vigezo yake mwenyewe mitaa 819 00:44:26,000 --> 00:44:28,000 tunaweza kujikwamua wale. 820 00:44:28,000 --> 00:44:30,000 Kwamba anajisikia vizuri kwamba sisi ni kusafisha hii up. 821 00:44:30,000 --> 00:44:35,000 Naweza kusema basi Daudi ni kwenda kuwa [0] na majina [0] 822 00:44:35,000 --> 00:44:38,000 na nyumba [0]. 823 00:44:38,000 --> 00:44:41,000 Na kisha Rob tunaweza vile vile ila kwenye hili. 824 00:44:41,000 --> 00:44:46,000 Hebu kuweka hii hapa chini, hivyo yeye kwenda kiholela kuwa Vitambulisho [1]. 825 00:44:46,000 --> 00:44:50,000 Yeye anaenda kuwa majina [1], 826 00:44:50,000 --> 00:44:53,000 na kisha mwishowe, nyumba [1]. 827 00:44:53,000 --> 00:44:57,000 >> Bado kidogo tedious, na sasa mimi kuwa na takwimu hii nje, 828 00:44:57,000 --> 00:45:03,000 hivyo hebu kusema "majina [0], id [0], nyumba [0], 829 00:45:03,000 --> 00:45:06,000 na hebu pluralize hii. 830 00:45:06,000 --> 00:45:09,000 Vitambulisho, IDS, Vitambulisho. 831 00:45:09,000 --> 00:45:12,000 Na tena, mimi nina kufanya hivyo, hivyo tena, mimi niko tayari kutegemea nakala / kuweka tena, 832 00:45:12,000 --> 00:45:14,000 hivyo ni tabia mbaya kuna ufumbuzi mwingine hapa. 833 00:45:14,000 --> 00:45:18,000 Mimi pengine unaweza safi hii juu zaidi na kitanzi au kitu kama hicho, 834 00:45:18,000 --> 00:45:21,000 hivyo katika muda mfupi, ni kidogo bora lakini bado anahisi kama 835 00:45:21,000 --> 00:45:24,000 Mimi nina kutegemea nakala / kuweka, lakini hata hii, mimi kudai, 836 00:45:24,000 --> 00:45:27,000 si kweli kimsingi ufumbuzi wa haki kwa sababu 837 00:45:27,000 --> 00:45:29,000 nini kama wakati mwingine sisi kuamua unajua nini? 838 00:45:29,000 --> 00:45:32,000 Sisi kwa kweli lazima wamekuwa kuhifadhi anwani ya barua pepe kwa Daudi na Rob 839 00:45:32,000 --> 00:45:34,000 na kila mtu mwingine katika mpango huu. 840 00:45:34,000 --> 00:45:36,000 Tunapaswa pia kuhifadhi namba za simu. 841 00:45:36,000 --> 00:45:39,000 Tunapaswa pia kuhifadhi namba za kuwasiliana na dharura. 842 00:45:39,000 --> 00:45:41,000 Tuna haya yote vipande ya data kwamba tunataka kuhifadhi, 843 00:45:41,000 --> 00:45:43,000 hivyo ni jinsi gani wewe kwenda juu ya kufanya hivyo? 844 00:45:43,000 --> 00:45:46,000 >> Wewe kutangaza mwingine safu ya juu, na kisha wewe mwenyewe kuongeza 845 00:45:46,000 --> 00:45:49,000 anuani ya barua pepe [0], anwani ya barua pepe [1] 846 00:45:49,000 --> 00:45:51,000 kwa Daudi na Rob na kadhalika. 847 00:45:51,000 --> 00:45:56,000 Lakini kuna kweli tu dhana ya msingi ya design hii 848 00:45:56,000 --> 00:45:59,000 kwamba mimi ni kwa kutumia mfumo wa heshima kujua kuwa 849 00:45:59,000 --> 00:46:03,000 [I] katika kila moja ya arrays kadhaa 850 00:46:03,000 --> 00:46:06,000 tu hivyo hutokea kwa kutaja mtu mmoja, 851 00:46:06,000 --> 00:46:10,000 hivyo [0] katika Vitambulisho ni namba 123, 852 00:46:10,000 --> 00:46:13,000 na mimi nina kwenda kudhani kwamba majina [0] 853 00:46:13,000 --> 00:46:16,000 ni jina la mtu huyo na nyumba [0] 854 00:46:16,000 --> 00:46:21,000 ni nyumba ya mtu huyo na hivyo nje kwa wote wa arrays mbalimbali kwamba mimi kujenga. 855 00:46:21,000 --> 00:46:24,000 Lakini ona kwamba hakuna uhusiano wa kimsingi 856 00:46:24,000 --> 00:46:27,000 miongoni mwa wale vipande 3 wa habari, jina id, na nyumba, 857 00:46:27,000 --> 00:46:32,000 hata kama chombo tunajaribu mfano katika mpango huu ni si arrays. 858 00:46:32,000 --> 00:46:35,000 Arrays ni tu njia hii ya programu ya kufanya hili. 859 00:46:35,000 --> 00:46:38,000 Nini sisi kweli unataka kwa mfano katika mpango wetu ni mtu 860 00:46:38,000 --> 00:46:41,000 kama Daudi, mtu kama Rob ndani ambayo 861 00:46:41,000 --> 00:46:46,000 au encapsulating ni jina na ID na nyumba. 862 00:46:46,000 --> 00:46:49,000 >> Je, sisi kwa namna fulani kueleza wazo hili la encapsulation 863 00:46:49,000 --> 00:46:52,000 ambapo mtu ana ID, jina na nyumba 864 00:46:52,000 --> 00:46:55,000 na si mapumziko kwa kweli hack hii ambapo sisi tu 865 00:46:55,000 --> 00:46:58,000 imani kwamba kitu bracket 866 00:46:58,000 --> 00:47:02,000 inahusu chombo huo binadamu katika kila moja ya arrays haya disparate? 867 00:47:02,000 --> 00:47:04,000 Tunaweza kweli kufanya hili. 868 00:47:04,000 --> 00:47:08,000 Hebu kwenda juu kuu kwa sasa, na hebu kuunda yangu data mwenyewe aina 869 00:47:08,000 --> 00:47:10,000 kwa kweli mara ya kwanza. 870 00:47:10,000 --> 00:47:14,000 Sisi kutumika mbinu hii katika kinyang'anyiro, 871 00:47:14,000 --> 00:47:17,000 lakini hapa mimi nina kwenda mbele na kujenga aina data, 872 00:47:17,000 --> 00:47:19,000 na unajua nini, Mimi naenda kuwaita kuwa ni mwanafunzi au mtu, 873 00:47:19,000 --> 00:47:23,000 na mimi naenda kutumia typedef kwa kufafanua aina. 874 00:47:23,000 --> 00:47:25,000 Mimi naenda kusema kwamba hii ni muundo, 875 00:47:25,000 --> 00:47:29,000 na kisha muundo huu ni kwenda kuwa mwanafunzi wa aina, tutaweza kusema, 876 00:47:29,000 --> 00:47:31,000 hata kama ni kidogo dated sasa kwa ajili yangu. 877 00:47:31,000 --> 00:47:33,000 Tutaweza kusema "int id." 878 00:47:33,000 --> 00:47:35,000 Tutaweza kusema "string jina." 879 00:47:35,000 --> 00:47:37,000 Kisha tutaweza kusema "string nyumba," 880 00:47:37,000 --> 00:47:40,000 hivyo sasa na mwisho wa mistari hii michache ya maadili ya 881 00:47:40,000 --> 00:47:45,000 I have just kufundishwa Clang kuwa kuna 882 00:47:45,000 --> 00:47:49,000 data aina badala ints, badala ya masharti, badala ya mara mbili, badala inaelea. 883 00:47:49,000 --> 00:47:54,000 >> Kama wa wakati huu katika muda mstari 11, sasa kuna data mpya ya aina inayoitwa wanafunzi, 884 00:47:54,000 --> 00:47:58,000 na sasa siwezi kutangaza variable mwanafunzi popote nataka, 885 00:47:58,000 --> 00:48:01,000 hivyo basi mimi kitabu chini hapa watu. 886 00:48:01,000 --> 00:48:05,000 Sasa naweza kujikwamua hii, na mimi siwezi kwenda nyuma chini ya Daudi hapa, 887 00:48:05,000 --> 00:48:10,000 na kwa Daudi kweli mimi kusema kwamba Daudi, 888 00:48:10,000 --> 00:48:13,000 tunaweza literally jina variable baada ya mwenyewe, 889 00:48:13,000 --> 00:48:16,000 ni kwenda kuwa mwanafunzi wa aina. 890 00:48:16,000 --> 00:48:18,000 Hii inaweza kuangalia weird kidogo, lakini hii si wote tofauti 891 00:48:18,000 --> 00:48:22,000 kutoka kutangaza kitu kama int au kamba au kamba ya kuelea. 892 00:48:22,000 --> 00:48:24,000 Ni tu hivyo hutokea kuitwa mwanafunzi sasa, 893 00:48:24,000 --> 00:48:28,000 na kama nataka kuweka kitu ndani ya muundo huu 894 00:48:28,000 --> 00:48:31,000 Mimi sasa kutumia kipande mpya ya syntax, lakini ni pretty moja kwa moja, 895 00:48:31,000 --> 00:48:39,000 david.id = 123, david.name = "Daudi" katika mji mkuu wa D, 896 00:48:39,000 --> 00:48:42,000 na david.house = "Mather," 897 00:48:42,000 --> 00:48:46,000 na sasa naweza kujikwamua mambo haya hapa. 898 00:48:46,000 --> 00:48:51,000 ILANI tumekuwa sasa redesigned mpango wetu katika njia ya kweli bora zaidi 899 00:48:51,000 --> 00:48:54,000 kwa kuwa sasa mpango wetu vioo ulimwengu halisi. 900 00:48:54,000 --> 00:48:57,000 >> Kuna dhana halisi ya dunia ya mtu au mwanafunzi. 901 00:48:57,000 --> 00:49:02,000 Hapa tuna sasa version C ya mtu au zaidi hasa mwanafunzi. 902 00:49:02,000 --> 00:49:05,000 Ndani ya mtu kwamba ni tabia hizi husika, 903 00:49:05,000 --> 00:49:10,000 ID, jina na nyumba, hivyo Rob kimsingi inakuwa kitu kimoja hapa chini, 904 00:49:10,000 --> 00:49:14,000 hivyo mwanafunzi kuwaibia, na sasa rob.id = 456, 905 00:49:14,000 --> 00:49:17,000 rob.name = "Rob." 906 00:49:17,000 --> 00:49:20,000 ukweli kwamba variable inaitwa Rob ni ya aina ya maana. 907 00:49:20,000 --> 00:49:22,000 Tungeweza kuitwa ni x au y au z. 908 00:49:22,000 --> 00:49:25,000 Sisi tu jina hilo Rob kuwa semantically thabiti, 909 00:49:25,000 --> 00:49:28,000 lakini kwa kweli ni jina ndani ya lile shamba yenyewe, 910 00:49:28,000 --> 00:49:30,000 hivyo sasa nina hii. 911 00:49:30,000 --> 00:49:33,000 Hii pia haina kujisikia kama kubuni bora katika kwamba nimepata ngumu coded Daudi. 912 00:49:33,000 --> 00:49:35,000 Nimekuwa ngumu coded Rob. 913 00:49:35,000 --> 00:49:39,000 Na mimi bado wana mapumziko kwa nakala baadhi na kuweka kila wakati nataka vigezo mpya. 914 00:49:39,000 --> 00:49:43,000 Aidha, nina inaonekana kutoa kila ya vigezo hivi jina, 915 00:49:43,000 --> 00:49:46,000 hata kama ningependa badala kiasi kuelezea vigezo hizi 916 00:49:46,000 --> 00:49:48,000  zaidi generically kama wanafunzi. 917 00:49:48,000 --> 00:49:52,000 >> Sasa tunaweza kuunganisha mawazo kwamba wamekuwa wakifanya kazi vizuri kwa ajili yetu 918 00:49:52,000 --> 00:49:56,000 na badala yake kusema, "Unajua nini, nipe variable wanafunzi walioitwa, 919 00:49:56,000 --> 00:50:01,000 na hebu kuwa ni ya kawaida 3, "hivyo sasa siwezi refine hii zaidi, 920 00:50:01,000 --> 00:50:04,000 kujikwamua Daudi manually alitangaza, 921 00:50:04,000 --> 00:50:08,000 na mimi unaweza badala kusema kitu kama wanafunzi [0] hapa. 922 00:50:08,000 --> 00:50:11,000 Naweza kusema kisha wanafunzi [0] hapa, 923 00:50:11,000 --> 00:50:14,000 wanafunzi [0] hapa, na kadhalika, na mimi siwezi kwenda karibu 924 00:50:14,000 --> 00:50:16,000 na safi kuwa hadi kwa Rob. 925 00:50:16,000 --> 00:50:19,000 Mimi naweza pia kwenda juu sasa labda kuongeza kitanzi 926 00:50:19,000 --> 00:50:23,000 na kutumia GetString na GetInt kwa kweli kupata maadili haya kutoka kwa mtumiaji. 927 00:50:23,000 --> 00:50:27,000 Ningeweza kwenda mara kwa mara kuhusu kuongeza kwa sababu hii ni kwa ujumla mbaya mazoezi 928 00:50:27,000 --> 00:50:29,000 kwa kificho ngumu baadhi idadi holela kama 3 hapa hapa 929 00:50:29,000 --> 00:50:33,000 na kisha kumbuka tu kwamba unapaswa kuweka wanafunzi wasiozidi 3 ndani yake. 930 00:50:33,000 --> 00:50:36,000 Ni pengine ingekuwa bora kutumia # define ya wakati juu ya faili yangu 931 00:50:36,000 --> 00:50:40,000 na sababu ya kwamba nje, hivyo kweli kweli, basi mimi kwenda mbele na generalize hii. 932 00:50:40,000 --> 00:50:43,000 >> Hebu kufungua mfano kwamba kati ya leo 933 00:50:43,000 --> 00:50:46,000 mifano mapema, structs1. 934 00:50:46,000 --> 00:50:49,000 Hii ni programu kamili zaidi kwamba anatumia # define hapa 935 00:50:49,000 --> 00:50:51,000 na anasema sisi itawabidi wanafunzi 3 na default. 936 00:50:51,000 --> 00:50:54,000 Hapa nina kutangaza thamani ya darasa la wanafunzi, 937 00:50:54,000 --> 00:50:57,000 hivyo darasani ya wanafunzi, na sasa mimi nina kutumia kitanzi 938 00:50:57,000 --> 00:51:00,000 tu kufanya code kidogo zaidi kifahari, populate darasa 939 00:51:00,000 --> 00:51:05,000 na pembejeo mtumiaji, hivyo iterate kutoka i = 0 juu juu kwa wanafunzi, ambayo ni 3. 940 00:51:05,000 --> 00:51:07,000 Na kisha mimi kuchochea mtumiaji katika toleo hili 941 00:51:07,000 --> 00:51:10,000  nini ID mwanafunzi, na mimi kupata kwa GetInt. 942 00:51:10,000 --> 00:51:13,000 Nini jina mwanafunzi, na kisha mimi kupata kwa GetString. 943 00:51:13,000 --> 00:51:15,000 Nini nyumba ya mwanafunzi? Mimi kupata kwa GetString. 944 00:51:15,000 --> 00:51:19,000 Na kisha chini hapa mimi tu aliamua kubadili 945 00:51:19,000 --> 00:51:22,000 jinsi mimi nina kuchapa haya na kwa kweli matumizi ya kitanzi, 946 00:51:22,000 --> 00:51:24,000 na ambaye mimi uchapishaji? 947 00:51:24,000 --> 00:51:27,000 Kulingana na maoni nina uchapishaji mtu yeyote katika Mather, 948 00:51:27,000 --> 00:51:30,000 na hiyo ni yake hivyo Rob na Tommy na kadhalika-kweli Tommy katika Mather. 949 00:51:30,000 --> 00:51:34,000 Tommy na Daudi itakuwa kuchapishwa katika kesi hii, lakini ni jinsi gani hii kazi? 950 00:51:34,000 --> 00:51:40,000 Hatujaona kazi hii kabla, lakini nadhani kuchukua kama yale hii gani. 951 00:51:40,000 --> 00:51:42,000 Inalinganishwa masharti. 952 00:51:42,000 --> 00:51:45,000 >> Ni kidogo yasiyo dhahiri jinsi inalinganishwa masharti kwa sababu ni zamu nje 953 00:51:45,000 --> 00:51:49,000 ikiwa kuirudisha 0 kwamba maana ya masharti ni sawa. 954 00:51:49,000 --> 00:51:53,000 Kama kuirudisha -1 kwamba maana ya mtu kuja alphabetically kabla nyingine, 955 00:51:53,000 --> 00:51:57,000 na kama anarudi kwamba maana ya neno 1 nyingine inakuja alphabetically 956 00:51:57,000 --> 00:52:00,000 kabla ya wengine, na unaweza kuangalia online au katika ukurasa mtu 957 00:52:00,000 --> 00:52:04,000 kuona hasa njia ambayo ni ambayo, lakini yote hii sasa ni kufanya ni kusema ni 958 00:52:04,000 --> 00:52:09,000 ikiwa [i]. nyumba ni sawa na "Mather" 959 00:52:09,000 --> 00:52:13,000 kisha kwenda mbele na magazeti nje hivyo na hivyo ni katika Mather. 960 00:52:13,000 --> 00:52:16,000 Lakini hapa ni kitu sisi hawajaona mbele, na tutaweza kurudi huu. 961 00:52:16,000 --> 00:52:21,000 Mimi si unakumbuka hata kuwa kufanya hivyo yoyote ya mipango yangu. 962 00:52:21,000 --> 00:52:24,000 Bure ni inaonekana akimaanisha kumbukumbu, kumkomboa kumbukumbu, 963 00:52:24,000 --> 00:52:31,000 lakini kile kumbukumbu mimi inaonekana kumkomboa katika kitanzi hii chini ya mpango huu? 964 00:52:31,000 --> 00:52:34,000 Inaonekana kama mimi nina kumkomboa jina la mtu 965 00:52:34,000 --> 00:52:37,000 na nyumba ya mtu, lakini kwa nini ni hivyo? 966 00:52:37,000 --> 00:52:41,000 >> Ni zinageuka wiki hizi zote kwamba tumekuwa kutumia GetString 967 00:52:41,000 --> 00:52:45,000 tumekuwa aina ya amekuwa akianzisha mdudu katika kila moja ya mipango yako. 968 00:52:45,000 --> 00:52:51,000 GetString kwa kubuni kumbukumbu inatenga hivyo kwamba wanaweza kurudi wewe kamba, 969 00:52:51,000 --> 00:52:55,000 kama Daudi, au Rob, na unaweza kisha kufanya chochote unataka 970 00:52:55,000 --> 00:52:59,000 na kwamba kamba katika mpango wako kwa sababu tumekuwa zimehifadhiwa kumbukumbu kwa ajili yenu. 971 00:52:59,000 --> 00:53:02,000 tatizo ni wakati huu wote kila wakati wewe piga GetString 972 00:53:02,000 --> 00:53:05,000 sisi, waandishi wa GetString, wamekuwa wakiuliza mfumo wa uendeshaji 973 00:53:05,000 --> 00:53:07,000 kutupatia kidogo ya RAM kwa kamba hii. 974 00:53:07,000 --> 00:53:09,000 Utupe kidogo ya RAM kwa kamba hii ijayo. 975 00:53:09,000 --> 00:53:11,000 Tupeni zaidi RAM kwa kamba hii ijayo. 976 00:53:11,000 --> 00:53:13,000 Nini wewe, programu, hawajawahi kufanya 977 00:53:13,000 --> 00:53:15,000 anatupa kwamba nyuma kumbukumbu, 978 00:53:15,000 --> 00:53:17,000 hivyo kwa muda wa wiki kadhaa haya yote ya programu ve yameandikwa 979 00:53:17,000 --> 00:53:20,000 wamekuwa na kile kinachoitwa leap kumbukumbu ambapo wanaendelea kutumia 980 00:53:20,000 --> 00:53:24,000 zaidi na zaidi kumbukumbu kila wakati wewe piga GetString, na hiyo ni faini. 981 00:53:24,000 --> 00:53:27,000 Sisi kwa makusudi kufanya hivyo katika wiki ya kwanza kwa sababu si kwamba kuvutia 982 00:53:27,000 --> 00:53:29,000 kwa kuwa na wasiwasi kuhusu ambapo string anakuja kutoka. 983 00:53:29,000 --> 00:53:34,000 Unataka wote ni neno Rob kurudi wakati mtumiaji aina hiyo in 984 00:53:34,000 --> 00:53:38,000 >> Lakini kusonga mbele kwa sasa tuna kuanza kupata kisasa zaidi kuhusu hili. 985 00:53:38,000 --> 00:53:42,000 Wakati wowote sisi kutenga kumbukumbu sisi bora hatimaye mkono ni nyuma. 986 00:53:42,000 --> 00:53:45,000 Vinginevyo katika ulimwengu wa kweli juu ya Mac au PC yako unaweza kuwa mara kwa mara na uzoefu 987 00:53:45,000 --> 00:53:50,000 dalili ambapo kompyuta yako ni ya kusaga kwa mguu hatimaye 988 00:53:50,000 --> 00:53:54,000 au kijinga inazunguka beach mpira ni tu occupying wa kompyuta 989 00:53:54,000 --> 00:53:56,000 mzima makini na huwezi kufanya mambo. 990 00:53:56,000 --> 00:54:00,000 Hiyo inaweza kuelezwa na idadi yoyote ya mende, lakini miongoni mwa wale mende iwezekanavyo 991 00:54:00,000 --> 00:54:03,000 ni mambo kuitwa kumbukumbu uvujaji ambapo mtu ambaye aliandika kwamba kipande cha programu 992 00:54:03,000 --> 00:54:07,000 unatumia hakuwa kumbuka kumbukumbu bure 993 00:54:07,000 --> 00:54:10,000 kwamba yeye au yeye aliuliza mfumo wa uendeshaji kwa, 994 00:54:10,000 --> 00:54:14,000 si kutumia GetString, kwa sababu hilo ni jambo CS50, lakini kwa kutumia kazi sawa 995 00:54:14,000 --> 00:54:16,000 kwamba kuuliza mfumo wa uendeshaji kwa ajili ya kumbukumbu. 996 00:54:16,000 --> 00:54:19,000 Kama wewe au wao screw up na kweli kamwe kurudi kwamba kumbukumbu 997 00:54:19,000 --> 00:54:24,000 dalili ya kwamba unaweza kuwa mpango kupungua na kupungua na kupungua chini 998 00:54:24,000 --> 00:54:26,000 isipokuwa wewe kumbuka kuwaita bure. 999 00:54:26,000 --> 00:54:28,000 >> Tutaweza kurudi lini na kwa nini kuita bure, 1000 00:54:28,000 --> 00:54:32,000 lakini hebu kwenda mbele tu kwa ajili ya hatua nzuri na kujaribu kuendesha programu hii hasa. 1001 00:54:32,000 --> 00:54:35,000 Hii ilikuwa inaitwa structs1, kuingia. 1002 00:54:35,000 --> 00:54:40,000 Hebu kwenda mbele na kukimbia structs1, 123, Daudi Mather, 1003 00:54:40,000 --> 00:54:47,000 456, Rob Kirkland, 789, 1004 00:54:47,000 --> 00:54:50,000 Tommy Mather, na tunaona ya Daudi katika Mather, Tommy katika Mather. 1005 00:54:50,000 --> 00:54:53,000 Hii ni kidogo tu sanity hundi kwamba mpango kazi. 1006 00:54:53,000 --> 00:54:56,000 Sasa, kwa bahati mbaya, mpango huu ni kidogo frustrating katika kuwa 1007 00:54:56,000 --> 00:55:00,000 Sikuweza kazi hiyo yote, mimi typed katika masharti 9 tofauti, enter, 1008 00:55:00,000 --> 00:55:04,000 aliambiwa ambaye alikuwa katika Mather, bado ni wazi nilijua ambaye alikuwa katika Mather tayari kwa sababu mimi niliandika hivyo. 1009 00:55:04,000 --> 00:55:07,000 Ni angalau ingekuwa nzuri kama mpango huu ni zaidi kama database 1010 00:55:07,000 --> 00:55:10,000 na ni kweli anakumbuka kile nilicho typed katika 1011 00:55:10,000 --> 00:55:12,000 hivyo mimi kamwe tena kuwa na pembejeo rekodi hizi mwanafunzi. 1012 00:55:12,000 --> 00:55:15,000 Labda ni kama mfumo registrarial. 1013 00:55:15,000 --> 00:55:21,000 >> Tunaweza kufanya hili kwa kutumia mbinu hii inajulikana kama faili pembejeo I / O, faili na pato, 1014 00:55:21,000 --> 00:55:24,000 sana njia generic ya kusema lolote wakati unataka kusoma au kuandika files files 1015 00:55:24,000 --> 00:55:26,000 unaweza kufanya hivyo kwa kuweka baadhi ya kazi. 1016 00:55:26,000 --> 00:55:29,000 Hebu kwenda mbele na kufungua hili structs2.c mfano, 1017 00:55:29,000 --> 00:55:33,000 ambayo ni karibu sawa, lakini hebu angalia nini sasa anafanya. 1018 00:55:33,000 --> 00:55:36,000 Katika juu ya faili mimi kutangaza darasa la wanafunzi. 1019 00:55:36,000 --> 00:55:38,000 Mimi kisha populate darasa na pembejeo ya mtumiaji, 1020 00:55:38,000 --> 00:55:41,000 hivyo wale mistari ya maadili ni hasa kama kabla. 1021 00:55:41,000 --> 00:55:45,000 Kisha kama mimi kitabu chini hapa mimi magazeti kila mtu ambaye ni katika Mather kiholela kama kabla, 1022 00:55:45,000 --> 00:55:47,000 lakini hii ni ya kuvutia mpya kipengele. 1023 00:55:47,000 --> 00:55:51,000 Hizi mistari ya maadili ni mpya, na wao kuanzisha kitu hapa, 1024 00:55:51,000 --> 00:55:55,000 JALADA, kila kofia, na ina * katika hapa pia. 1025 00:55:55,000 --> 00:55:58,000 Hebu hoja hii zaidi ya hapa, * juu hapa pia. 1026 00:55:58,000 --> 00:56:00,000 >> Kazi hii hatujaona kabla, fopen, 1027 00:56:00,000 --> 00:56:03,000 lakini inamaanisha faili wazi, hivyo hebu skim kupitia haya, 1028 00:56:03,000 --> 00:56:05,000 na hii ni kitu tutaweza kurudi katika psets baadaye, 1029 00:56:05,000 --> 00:56:10,000 lakini mstari huu hapa kimsingi kufungua faili inayoitwa database, 1030 00:56:10,000 --> 00:56:13,000 na hasa kuufungua hivyo kwa njia ambayo inaweza kufanya nini ni vile? 1031 00:56:13,000 --> 00:56:15,000 [Inaudible-mwanafunzi] 1032 00:56:15,000 --> 00:56:19,000 Haki, hivyo "w" tu ina maana ni kuwaambia mfumo wa uendeshaji 1033 00:56:19,000 --> 00:56:21,000 kufungua faili hii kwa njia ambayo naweza kumwandikia ni vile. 1034 00:56:21,000 --> 00:56:23,000 Sitaki kusoma. Mimi sitaki iangalie tu. 1035 00:56:23,000 --> 00:56:26,000 Nataka mabadiliko hayo na kuongeza uwezekano wa mambo hayo, 1036 00:56:26,000 --> 00:56:28,000 na faili ni kwenda kuitwa database. 1037 00:56:28,000 --> 00:56:30,000 Hii inaweza kuitwa kitu. 1038 00:56:30,000 --> 00:56:32,000 Hii inaweza kuwa database.txt. Hii inaweza kuwa. Db. 1039 00:56:32,000 --> 00:56:37,000 Hii inaweza kuwa neno kama foo, lakini mimi kiholela alichagua jina database file. 1040 00:56:37,000 --> 00:56:42,000 Hii ni kidogo sanity hundi kwamba tutaweza kurudi katika kina kubwa zaidi ya muda, 1041 00:56:42,000 --> 00:56:47,000 ikiwa fp, kwa pointer SVG, haina null sawa kwamba maana yote ni sawa. 1042 00:56:47,000 --> 00:56:51,000 >> Long hadithi fupi, kazi kama fopen wakati mwingine kushindwa. 1043 00:56:51,000 --> 00:56:53,000 Labda faili haipo. Labda wewe ni nje ya nafasi ya disc. 1044 00:56:53,000 --> 00:56:55,000 Labda huna ruhusa ya folder kwamba, 1045 00:56:55,000 --> 00:56:58,000 hivyo kama fopen anarudi kitu null mbaya kilichotokea. 1046 00:56:58,000 --> 00:57:02,000 Kinyume chake, kama fopen haina kurudi null wote ni vizuri 1047 00:57:02,000 --> 00:57:04,000 na mimi unaweza kuanza kuandika na faili hii. 1048 00:57:04,000 --> 00:57:06,000 Hapa ni hila mpya. 1049 00:57:06,000 --> 00:57:08,000 Hii ni kitanzi kwa hiyo iterating juu ya kila mmoja wa wanafunzi wangu, 1050 00:57:08,000 --> 00:57:10,000 na hii inaonekana hivyo sawa na kile ambacho tumefanya kabla, 1051 00:57:10,000 --> 00:57:15,000 lakini kazi hii ni binamu wa printf kuitwa fprintf kwa faili printf, 1052 00:57:15,000 --> 00:57:18,000 na taarifa hiyo ni tofauti katika njia tu 2. 1053 00:57:18,000 --> 00:57:20,000 Moja, ni kuanza kwa f badala ya p, 1054 00:57:20,000 --> 00:57:23,000 lakini basi hoja yake ya kwanza ni inaonekana nini? 1055 00:57:23,000 --> 00:57:25,000 [Wanafunzi] File. >> Ni faili. 1056 00:57:25,000 --> 00:57:30,000 Hii kitu inayoitwa fp, ambayo hatimaye tutaweza tease mbali kile pointer faili ni, 1057 00:57:30,000 --> 00:57:35,000 lakini kwa sasa fp tu inawakilisha faili kwamba mimi na kufunguliwa, 1058 00:57:35,000 --> 00:57:41,000 hivyo fprintf hapa ni kusema magazeti ID hii mtumiaji SVG, si kwa screen. 1059 00:57:41,000 --> 00:57:44,000 Andika jina la mtumiaji na faili, si kwa screen, 1060 00:57:44,000 --> 00:57:47,000 nyumba ya SVG, si kwa screen, na kisha chini hapa, ni wazi, 1061 00:57:47,000 --> 00:57:50,000 karibu faili, na kisha chini hapa bure kumbukumbu. 1062 00:57:50,000 --> 00:57:53,000 >> Tofauti pekee kati ya toleo hili 2 na toleo 1 1063 00:57:53,000 --> 00:57:58,000 ni kuanzishwa fopen na hii JALADA na * 1064 00:57:58,000 --> 00:58:01,000 na wazo hili la fprintf, hivyo hebu angalia nini matokeo ya mwisho ni. 1065 00:58:01,000 --> 00:58:03,000 Hebu kwenda katika terminal dirisha yangu. 1066 00:58:03,000 --> 00:58:06,000 Hebu kukimbia structs2, kuingia. 1067 00:58:06,000 --> 00:58:09,000 Inaonekana kama yote ni sawa. Hebu rerun structs2. 1068 00:58:09,000 --> 00:58:15,000 123, Daudi Mather, 456, Rob Kirkland, 1069 00:58:15,000 --> 00:58:19,000 789, Tommy Mather, kuingia. 1070 00:58:19,000 --> 00:58:23,000 Inaonekana kama ni walijivuna sawa, lakini kama mimi sasa kufanya ls 1071 00:58:23,000 --> 00:58:28,000 taarifa gani faili ni katika hapa kati yangu code yote, database, 1072 00:58:28,000 --> 00:58:32,000 hivyo hebu kufungua kwamba, gedit wa database, na kuangalia kwamba. 1073 00:58:32,000 --> 00:58:34,000 Ni si sexiest ya muundo faili. 1074 00:58:34,000 --> 00:58:38,000 Ni kweli ni moja ya kipande cha data line kwa kila mstari kwa mstari, 1075 00:58:38,000 --> 00:58:42,000 lakini wale ambao wanatumia files Excel au CSV, comma separated maadili, 1076 00:58:42,000 --> 00:58:47,000 Mimi naweza shaka kutumika kwa fprintf badala labda kufanya kitu kama hiki 1077 00:58:47,000 --> 00:58:50,000 ili mimi nilikuwa kwa kweli kujenga sawa ya faili Excel 1078 00:58:50,000 --> 00:58:53,000 kwa kutenganisha mambo kwa koma, si tu mpya mistari. 1079 00:58:53,000 --> 00:58:56,000 >> Katika kesi hii kama alikuwa na badala yake kutumika koma badala ya mistari mpya 1080 00:58:56,000 --> 00:59:01,000 Mimi nilikuwa literally kufungua faili hii database katika Excel kama mimi badala alifanya ni kuangalia kama hii. 1081 00:59:01,000 --> 00:59:03,000 Kwa kifupi, sasa kwamba tuna uwezo wa kuandika kwa files 1082 00:59:03,000 --> 00:59:07,000 tunaweza sasa kuanza data kuendelea, kuweka kuzunguka disc 1083 00:59:07,000 --> 00:59:10,000 ili tuweze kuweka habari karibu tena na tena. 1084 00:59:10,000 --> 00:59:14,000 Notice michache ya mambo mengine ambayo ni sasa kidogo zaidi familiar. 1085 00:59:14,000 --> 00:59:16,000 Katika juu ya faili hii C tuna typedef 1086 00:59:16,000 --> 00:59:21,000 kwa sababu sisi alitaka kujenga aina data kwamba inawakilisha neno, 1087 00:59:21,000 --> 00:59:25,000 hivyo aina hii inaitwa neno, na ndani ya muundo huu 1088 00:59:25,000 --> 00:59:27,000 ni kidogo fancier sasa. 1089 00:59:27,000 --> 00:59:30,000 Kwa nini ni neno linaloundwa inaonekana safu? 1090 00:59:30,000 --> 00:59:33,000 Je, ni neno tu intuitively? 1091 00:59:33,000 --> 00:59:35,000 >> Ni safu ya wahusika. 1092 00:59:35,000 --> 00:59:37,000 Ni mlolongo wa wahusika nyuma kwa nyuma kwa nyuma. 1093 00:59:37,000 --> 00:59:41,000 Barua katika kofia wote hutokea kwa kuwa sisi kiholela kusema upeo urefu 1094 00:59:41,000 --> 00:59:44,000 yoyote ya neno katika kamusi ya kwamba sisi ni kutumia kwa ajili ya kinyang'anyiro. 1095 00:59:44,000 --> 00:59:46,000 Kwa nini nina 1? 1096 00:59:46,000 --> 00:59:48,000 tabia null. 1097 00:59:48,000 --> 00:59:51,000 Kumbuka wakati sisi tulikuwa mfano Bananagrams sisi zinahitajika thamani maalum 1098 00:59:51,000 --> 00:59:55,000 mwisho wa neno ili kuweka wimbo 1099 00:59:55,000 --> 00:59:59,000 ambapo maneno ya kweli kumalizika, na kama tatizo kuweka vipimo anasema 1100 00:59:59,000 --> 01:00:03,000 hapa sisi ni kujihusisha na neno aliyopewa thamani bulin, 1101 01:00:03,000 --> 01:00:05,000 bendera, ili kuzungumza, kweli au uongo. 1102 01:00:05,000 --> 01:00:09,000 Je, umefanikiwa neno hili tayari, kwa sababu tunatambua 1103 01:00:09,000 --> 01:00:13,000 kweli tunahitaji njia ya kukumbuka si tu maana ya neno ni katika kinyang'anyiro 1104 01:00:13,000 --> 01:00:15,000 lakini kama au wewe, mwanadamu, wamegundua kuwa 1105 01:00:15,000 --> 01:00:20,000 ili kwamba kama wewe kufanya kupata neno "" huwezi aina tu, kuingia, ingieni,, kuingia 1106 01:00:20,000 --> 01:00:23,000 na kupata pointi 3, pointi 3, pointi 3, pointi 3. 1107 01:00:23,000 --> 01:00:26,000 Tunataka kuwa na uwezo wa Fukuza kwamba neno kwa kuweka bool 1108 01:00:26,000 --> 01:00:29,000 kwa kweli kama wewe ve tayari kuiona, na hivyo ndiyo sababu sisi 1109 01:00:29,000 --> 01:00:31,000 zimegawanywa katika muundo huu. 1110 01:00:31,000 --> 01:00:35,000 >> Sasa, hapa chini katika kinyang'anyiro kuna hii struct nyingine iitwayo kamusi. 1111 01:00:35,000 --> 01:00:39,000 Hayupo hapa ni neno typedef kwa sababu katika kesi hii 1112 01:00:39,000 --> 01:00:43,000 sisi zinahitajika kurejelea wazo la kamusi, 1113 01:00:43,000 --> 01:00:46,000 na kamusi ina rundo zima la maneno, 1114 01:00:46,000 --> 01:00:49,000 kama alisema kwa safu hii, na jinsi wengi wa maneno hayo yapo? 1115 01:00:49,000 --> 01:00:51,000 Naam, chochote hii variable kuitwa ukubwa anasema. 1116 01:00:51,000 --> 01:00:53,000 Lakini sisi tu haja moja kamusi. 1117 01:00:53,000 --> 01:00:55,000 Hatuna haja ya data aina ya kuitwa kamusi. 1118 01:00:55,000 --> 01:00:58,000 Sisi tu haja ya mmoja wao, hivyo ni zamu nje katika C 1119 01:00:58,000 --> 01:01:03,000 kwamba kama huna kusema typedef, wewe tu kusema struct, basi ndani ya braces curly 1120 01:01:03,000 --> 01:01:05,000 kuweka vigezo yako, basi unaweza kuweka jina. 1121 01:01:05,000 --> 01:01:09,000 Hii ni moja kutangaza variable kuitwa kamusi 1122 01:01:09,000 --> 01:01:11,000 kwamba inaonekana kama hii. 1123 01:01:11,000 --> 01:01:16,000 Kwa kulinganisha, mistari haya ni kujenga reusable data muundo kuitwa neno 1124 01:01:16,000 --> 01:01:19,000 kwamba unaweza kujenga nakala nyingi za, kama sisi aliumba 1125 01:01:19,000 --> 01:01:22,000 nyingi nakala za wanafunzi. 1126 01:01:22,000 --> 01:01:24,000 >> Je, hii hatimaye kuruhusu sisi kufanya nini? 1127 01:01:24,000 --> 01:01:30,000 Hebu nirejee nyuma katika, hebu sema, mfano rahisi kutoka mara rahisi, 1128 01:01:30,000 --> 01:01:34,000 na napenda kufungua, hebu sema, compare1.c. 1129 01:01:34,000 --> 01:01:38,000 tatizo hapa chini ya mkono ni kweli peel nyuma 1130 01:01:38,000 --> 01:01:41,000 safu ya kamba na kuanza kuchukua mbali magurudumu mafunzo haya 1131 01:01:41,000 --> 01:01:44,000 kwa sababu ni zinageuka kuwa string wakati huu wote 1132 01:01:44,000 --> 01:01:47,000 ni kama sisi aliahidi katika wiki 1 kweli tu utani, 1133 01:01:47,000 --> 01:01:51,000 kisawe kutoka maktaba CS50 kwa kitu ambacho inaonekana kidogo zaidi cryptic, 1134 01:01:51,000 --> 01:01:53,000 * Char, na tumeona nyota hii kabla. 1135 01:01:53,000 --> 01:01:55,000 Tuliiona katika muktadha wa files. 1136 01:01:55,000 --> 01:01:59,000 >> Hebu sasa kuona nini tumekuwa mafichoni hii undani kwa muda sasa. 1137 01:01:59,000 --> 01:02:02,000 Hapa ni faili inayoitwa compare1.c, 1138 01:02:02,000 --> 01:02:07,000 na inaonekana anauliza mtumiaji kwa masharti 2, s na t, 1139 01:02:07,000 --> 01:02:11,000 na kisha anajaribu kulinganisha masharti hayo kwa usawa katika mstari 26, 1140 01:02:11,000 --> 01:02:14,000 na kama uko sawa inasema, "Wewe typed kitu kimoja," 1141 01:02:14,000 --> 01:02:17,000 na kama si sawa inasema, "Wewe typed mambo tofauti." 1142 01:02:17,000 --> 01:02:19,000 Hebu kwenda mbele na kuendesha mpango huu. 1143 01:02:19,000 --> 01:02:23,000 Hebu kwenda katika chanzo saraka yangu, kufanya compare1. Ni compiled sawa. 1144 01:02:23,000 --> 01:02:25,000 Hebu kukimbia compare1. 1145 01:02:25,000 --> 01:02:27,000 Mimi itabidi zoom katika, kuingia. 1146 01:02:27,000 --> 01:02:29,000 Kusema kitu. HELLO. 1147 01:02:29,000 --> 01:02:32,000 Mimi itabidi kusema kitu tena. HELLO. 1148 01:02:32,000 --> 01:02:34,000 Mimi dhahiri hakuwa aina ya mambo mbalimbali. 1149 01:02:34,000 --> 01:02:37,000 >> Hebu jaribu hii tena. Bye bye. 1150 01:02:37,000 --> 01:02:40,000 Dhahiri si tofauti, hivyo nini kinaendelea hapa? 1151 01:02:40,000 --> 01:02:44,000 Naam, ni nini kweli kuwa ikilinganishwa katika mstari 26? 1152 01:02:44,000 --> 01:02:46,000 [Inaudible-mwanafunzi] 1153 01:02:46,000 --> 01:02:49,000 Ndiyo, hivyo ni zinageuka kuwa kamba, data aina, ni aina ya uongo nyeupe. 1154 01:02:49,000 --> 01:02:53,000 kamba ni * Char, lakini nini ni * Char? 1155 01:02:53,000 --> 01:02:56,000 * Char, kama wanasema, ni pointer, 1156 01:02:56,000 --> 01:03:00,000 na pointer ni ufanisi anuani, 1157 01:03:00,000 --> 01:03:05,000 Jumla mahali katika kumbukumbu, na kama kutokea kwa kuwa typed katika neno kama HELLO, 1158 01:03:05,000 --> 01:03:08,000 kukumbuka kutoka mijadala ya zamani ya masharti 1159 01:03:08,000 --> 01:03:16,000 hii ni kama neno HELLO. 1160 01:03:16,000 --> 01:03:19,000 Kumbuka kwamba neno kama HELLO inaweza kuwakilishwa 1161 01:03:19,000 --> 01:03:22,000 kama safu ya wahusika kama hii 1162 01:03:22,000 --> 01:03:25,000 na kisha na tabia maalum mwishoni iitwayo tabia null, 1163 01:03:25,000 --> 01:03:27,000 kama inaashiria \. 1164 01:03:27,000 --> 01:03:29,000 Je, ni kweli kamba? 1165 01:03:29,000 --> 01:03:32,000 Ona kwamba hii ni nyingi chunks ya kumbukumbu, 1166 01:03:32,000 --> 01:03:36,000 na kwa kweli, mwisho wa ni tu inajulikana mara moja wewe kuangalia njia ya string nzima 1167 01:03:36,000 --> 01:03:38,000 kuangalia kwa tabia maalum null. 1168 01:03:38,000 --> 01:03:41,000 Lakini kama hii ni chunk ya kumbukumbu kutoka kumbukumbu ya kompyuta yangu, 1169 01:03:41,000 --> 01:03:44,000 hebu kiholela kusema kwamba kamba hii tu got bahati, 1170 01:03:44,000 --> 01:03:47,000 na got kuwekwa katika mwanzo sana ya RAM kompyuta yangu. 1171 01:03:47,000 --> 01:03:54,000 Hii ni Byte 0, 1, 2, 3, 4, 5, 6 ... 1172 01:03:54,000 --> 01:04:02,000 >> Wakati mimi kusema kitu kama GetString na mimi kufanya string s = GetString 1173 01:04:02,000 --> 01:04:04,000 nini kweli kuwa alirudi? 1174 01:04:04,000 --> 01:04:08,000 Kwa wiki hizi kadhaa iliyopita, nini kweli kuwa kuhifadhiwa katika s 1175 01:04:08,000 --> 01:04:13,000 si hii kamba per se, lakini katika kesi hii ya nini kuwa kuhifadhiwa ni 1176 01:04:13,000 --> 01:04:18,000 0 idadi sababu kile GetString ya kweli haina 1177 01:04:18,000 --> 01:04:20,000 ni haina kimwili kurudi kamba. 1178 01:04:20,000 --> 01:04:22,000 Hiyo haina kweli hata kufanya akili ya kuelewa. 1179 01:04:22,000 --> 01:04:24,000 Nini hivyo kurudi ni idadi. 1180 01:04:24,000 --> 01:04:28,000 Kwamba idadi ni anuani ya HELLO katika kumbukumbu, 1181 01:04:28,000 --> 01:04:32,000 na kamba ya basi, kama sisi Peel nyuma safu hii, kamba si kweli zipo. 1182 01:04:32,000 --> 01:04:35,000 Ni tu kurahisisha katika maktaba CS50. 1183 01:04:35,000 --> 01:04:38,000 >> Hii kweli ni kitu kinachoitwa Char *. 1184 01:04:38,000 --> 01:04:41,000 Char mantiki kwa sababu nini neno, kama HELLO? 1185 01:04:41,000 --> 01:04:44,000 Naam, ni mfululizo wa chars, mfululizo wa wahusika. 1186 01:04:44,000 --> 01:04:47,000 * Char maana anuani ya tabia, 1187 01:04:47,000 --> 01:04:50,000 hivyo ni nini maana ya kurudi kamba? 1188 01:04:50,000 --> 01:04:53,000 nzuri, rahisi njia ya kurejea kwa kamba 1189 01:04:53,000 --> 01:04:57,000 ni badala ya kujaribu kufikiri ni jinsi gani mimi kurudi ka 5 au 6 tofauti 1190 01:04:57,000 --> 01:05:01,000 napenda kurudi anuani ambayo Byte? 1191 01:05:01,000 --> 01:05:03,000 moja ya kwanza. 1192 01:05:03,000 --> 01:05:06,000 Kwa maneno mengine, nikupe anwani ya tabia katika kumbukumbu. 1193 01:05:06,000 --> 01:05:10,000 Hiyo ni nini * Char inawakilisha, anuani ya tabia moja katika kumbukumbu. 1194 01:05:10,000 --> 01:05:12,000 Wito kwamba s kutofautiana. 1195 01:05:12,000 --> 01:05:15,000 Hifadhi katika s fulani anuani, ambayo mimi kiholela alisema ni 0, 1196 01:05:15,000 --> 01:05:19,000 tu kuweka mambo rahisi, lakini katika hali halisi ni ujumla idadi kubwa. 1197 01:05:19,000 --> 01:05:21,000 >> Subiri dakika. 1198 01:05:21,000 --> 01:05:23,000 Kama wewe ni tu kunipa anuani ya tabia ya kwanza, jinsi gani mimi kujua nini anuani ni 1199 01:05:23,000 --> 01:05:25,000 wa tabia ya pili, tatu, nne na tano? 1200 01:05:25,000 --> 01:05:27,000 [Inaudible-mwanafunzi] 1201 01:05:27,000 --> 01:05:31,000 Wewe tu kujua ambapo mwisho wa kamba ni kwa njia ya hila hii Handy, 1202 01:05:31,000 --> 01:05:35,000 hivyo wakati wewe kutumia kitu kama printf, nini printf literally inachukua kama hoja yake, 1203 01:05:35,000 --> 01:05:39,000 kukumbuka kwamba sisi kutumia placeholder hii% s, na kisha kupita katika 1204 01:05:39,000 --> 01:05:41,000 variable hiyo hifadhi kamba. 1205 01:05:41,000 --> 01:05:47,000 Nini wewe kweli kupita ni anuani ya tabia ya kwanza ya kamba hiyo. 1206 01:05:47,000 --> 01:05:50,000 Printf kisha anatumia kwa kitanzi au kitanzi wakati juu ya kupokea kwamba anuani, 1207 01:05:50,000 --> 01:05:53,000 kwa mfano, 0, hivyo basi mimi kufanya hili sasa, 1208 01:05:53,000 --> 01:06:02,000 printf ("% s \ n," s); 1209 01:06:02,000 --> 01:06:07,000 Wakati mimi kuwaita printf ("% s \ n," s); nini mimi kweli kutoa printf na 1210 01:06:07,000 --> 01:06:13,000 ni anuani ya tabia ya kwanza katika s, ambayo katika kesi hii holela ni H. 1211 01:06:13,000 --> 01:06:16,000 >> Jinsi gani printf kujua nini hasa kuonyesha kwenye screen? 1212 01:06:16,000 --> 01:06:19,000 mtu ambaye kutekelezwa printf kutekelezwa kitanzi wakati au kwa kitanzi 1213 01:06:19,000 --> 01:06:23,000 kwamba anasema hana tabia hii sawa maalum null tabia? 1214 01:06:23,000 --> 01:06:25,000 Kama siyo, magazeti hayo. Vipi kuhusu hili? 1215 01:06:25,000 --> 01:06:28,000 Kama si magazeti hayo, magazeti hayo, magazeti hayo, magazeti hayo. 1216 01:06:28,000 --> 01:06:32,000 Oh, hii ni moja maalum. Acheni uchapishaji na kurudi kwa mtumiaji. 1217 01:06:32,000 --> 01:06:35,000 Na kwamba literally yote ya kinachotokea chini ya Hood, 1218 01:06:35,000 --> 01:06:38,000 na kwamba mengi ya kufungua katika siku ya kwanza ya darasa, 1219 01:06:38,000 --> 01:06:43,000 lakini kwa sasa ni kweli ya kuzuia ujenzi wa kila kitu uelewa 1220 01:06:43,000 --> 01:06:46,000 hiyo imekuwa kinaendelea ndani ya kumbukumbu ya kompyuta yetu, 1221 01:06:46,000 --> 01:06:49,000 na hatimaye tutaweza tease hii mbali na msaada kidogo 1222 01:06:49,000 --> 01:06:51,000 kutoka kwa mmoja wa marafiki zetu katika Stanford. 1223 01:06:51,000 --> 01:06:56,000 >> Profesa Nick Parlante saa Stanford amefanya hii ya ajabu video mlolongo 1224 01:06:56,000 --> 01:06:58,000 kutoka kila aina ya lugha mbalimbali ambayo ilianzisha 1225 01:06:58,000 --> 01:07:00,000 hiki kidogo Claymation tabia Binky. 1226 01:07:00,000 --> 01:07:03,000 sauti uko juu ya kusikia katika hakikisho tu chache pili sneak 1227 01:07:03,000 --> 01:07:05,000 ni ile ya profesa Stanford, na wewe ni kupata 1228 01:07:05,000 --> 01:07:07,000 5 tu au 6 sekunde ya haki hii sasa, 1229 01:07:07,000 --> 01:07:09,000 lakini hii ni note ambayo tutaweza kuhitimisha leo 1230 01:07:09,000 --> 01:07:11,000 na kuanza Jumatano. 1231 01:07:11,000 --> 01:07:15,000 Mimi kukupa Pointer Mziki na Binky, hakikisho. 1232 01:07:15,000 --> 01:07:18,000 [♪ ♪ Music] [Profesa Parlante] Hey, Binky. 1233 01:07:18,000 --> 01:07:21,000 Kuamka. Ni wakati kwa ajili ya kujifurahisha pointer. 1234 01:07:21,000 --> 01:07:24,000 [Binky] Nini hiyo? Jifunze kuhusu kuyatumia? 1235 01:07:24,000 --> 01:07:26,000 Oh, GOODY! 1236 01:07:26,000 --> 01:07:29,000 >> Sisi kuona juu ya Jumatano. 1237 01:07:29,000 --> 01:07:32,000 [CS50.TV]