1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Ġimgħa 6] 2 00:00:02,000 --> 00:00:04,000 [David J. Malan] [Università ta 'Harvard] 3 00:00:04,000 --> 00:00:08,000 [Dan huwa CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Dan huwa CS50, u dan huwa l-bidu tal-Ġimgħa 6, 5 00:00:12,000 --> 00:00:16,000 hekk koppja ta 'għodod ġodda issa huma disponibbli għalik biex jieħdu vantaġġ minn, 6 00:00:16,000 --> 00:00:19,000 l-ewwel waħda minnhom huwa msejjaħ CS50 Style. 7 00:00:19,000 --> 00:00:22,000 Odds huma jekk int simili me jew kwalunkwe mill-fellows tagħlim, 8 00:00:22,000 --> 00:00:26,000 inti stajt probabbilment jidhru programm li stil jistenna ftit xi ħaġa bħal din. 9 00:00:26,000 --> 00:00:30,000 Forsi inti tibda qtugħ xi kantunieri tard bil-lejl, jew tkun taf jittrattaw dan aktar tard, 10 00:00:30,000 --> 00:00:32,000 u mbagħad TF jew CA jidħol fuq matul ħinijiet tal-uffiċċju. 11 00:00:32,000 --> 00:00:34,000 Imbagħad huwa diffiċli għalina biex jinqara. 12 00:00:34,000 --> 00:00:38,000 Ukoll, din il-kodiċi huwa sintattikament korrett, u se tiġbor, u se tmexxi effettivament. 13 00:00:38,000 --> 00:00:40,000 Iżda huwa definittivament mhux 5 għall-istil. 14 00:00:40,000 --> 00:00:45,000 >> Imma issa, jekk immorru fis dan id-direttorju hawn 'il 15 00:00:45,000 --> 00:00:48,000 u tinnota li għandi conditions2.c- 16 00:00:48,000 --> 00:00:55,000 u I run dan il-kmand ġdid, style50, fuq din conditions2.c fajl, Ikteb, 17 00:00:55,000 --> 00:00:57,000 avviż li huwa infurmani li kien stilizzata. 18 00:00:57,000 --> 00:01:00,000 Gedit ndunat li l-fajl ġie mibdul fuq diska, 19 00:01:00,000 --> 00:01:08,000 u jekk I ikklikkja jerġgħu jitgħabbew, il-problemi kollha tiegħek huma issa awtomatizzati. 20 00:01:08,000 --> 00:01:15,000 [Applause] 21 00:01:15,000 --> 00:01:17,000 Dik hija waħda mill-affarijiet għamilna dan il-weekend. 22 00:01:17,000 --> 00:01:20,000 Jirrealizzaw li huwa imperfett minħabba li hemm xi kodiċi 23 00:01:20,000 --> 00:01:23,000 li sempliċement mhux se tkun kapaċi li stylize perfettament, 24 00:01:23,000 --> 00:01:26,000 imma tirrealizza dan huwa issa għodda inti tista 'tieħu vantaġġ ta' 25 00:01:26,000 --> 00:01:33,000 jekk biss biex tiċċara xi wħud mill-ċineg kaboċċi aktar errantly mqiegħda u simili. 26 00:01:33,000 --> 00:01:36,000 >> Iżda aktar konvinċenti issa huwa CS50 Iċċekkja. 27 00:01:36,000 --> 00:01:39,000 Bil CS50 Iċċekkja, inti tista 'attwalment twettaq it-testijiet korrettezza istess 28 00:01:39,000 --> 00:01:42,000 fuq kodiċi tiegħek stess li l-inkarigati mir tagħlim huma kapaċi. 29 00:01:42,000 --> 00:01:44,000 Dan huwa utilità linja tal-kmand li taqa issa fl-appliance 30 00:01:44,000 --> 00:01:46,000 hekk kif inti tagħmel update50 bħala kull 31 00:01:46,000 --> 00:01:49,000 pset 4 ispeċifikazzjonijiet, u inti tużaha essenzjalment bħal dan. 32 00:01:49,000 --> 00:01:51,000 Inti tmexxi l-check50 kmand. 33 00:01:51,000 --> 00:01:56,000 Imbagħad inti tgħaddi fil argument linja tal-kmand, jew aktar ġeneralment magħrufa bħala swiċċ jew tal-bandiera. 34 00:01:56,000 --> 00:01:58,000 Ġeneralment, l-affarijiet li għandhom b'sinkijiet huma msejħa 'swiċċ 35 00:01:58,000 --> 00:02:02,000 għal programm linja tal-kmand, hekk c jispeċifika 36 00:02:02,000 --> 00:02:04,000 il-kontrolli li inti tixtieq li jiddekorri. 37 00:02:04,000 --> 00:02:07,000 >> It-testijiet li inti tixtieq li jiddekorri huma identifikati unikament minn din spag, 38 00:02:07,000 --> 00:02:10,000 2012/pset4/resize. 39 00:02:10,000 --> 00:02:13,000 Fi kliem ieħor, li jinsab biss string arbitrarja iżda uniku 40 00:02:13,000 --> 00:02:18,000 li nużaw biex jidentifika unikament testijiet korrettezza 4 pset s. 41 00:02:18,000 --> 00:02:21,000 U allura inti tispeċifika lista spazju separata tal-fajls li inti tixtieq li upload 42 00:02:21,000 --> 00:02:24,000 li CS50 Iċċekkja għall-analiżi. 43 00:02:24,000 --> 00:02:29,000 Per eżempju, jekk immur fis-soluzzjoni tiegħi hawn għall resize.c- 44 00:02:29,000 --> 00:02:31,000 let me tiftaħ terminal akbar tieqa 45 00:02:31,000 --> 00:02:42,000 u I jimxi 'l quddiem u run ejja ngħidu check50-c 2012/pset4/resize, 46 00:02:42,000 --> 00:02:46,000 u mbagħad I jimxi 'l quddiem u jispeċifika l-ismijiet tal-fajls, 47 00:02:46,000 --> 00:02:49,000 resize.c, u mbagħad hit Ikteb, huwa Kompressi, 48 00:02:49,000 --> 00:02:53,000 hija uploads, hija għandha tivverifika, u I biss naqset mazz sħiħ ta 'testijiet. 49 00:02:53,000 --> 00:02:59,000 Il-waħda bl-aħmar fuq quċċata xellug jgħid li resize.c u BMP jeżistu. 50 00:02:59,000 --> 00:03:01,000 Dan kien it-test. Dan kien il-kwistjoni staqsejna. 51 00:03:01,000 --> 00:03:04,000 U huwa kuntent għaliex it-tweġiba kienet falza. 52 00:03:04,000 --> 00:03:08,000 It-test abjad taħt jgħid mistenni bmp.h teżisti, u li sempliċiment tort tiegħi. 53 00:03:08,000 --> 00:03:11,000 I nesa li upload, so I bżonn biex ittella żewġ fajls, 54 00:03:11,000 --> 00:03:14,000 resize.c u bmp.h. 55 00:03:14,000 --> 00:03:17,000 Imma issa avviż-testijiet kollha l-oħra huma sofor għaliex ikunu għadhom ma run, 56 00:03:17,000 --> 00:03:21,000 u għalhekk il-wiċċ smiley hija vertikali għaliex huwa la kuntenti lanqas imdejjaq, 57 00:03:21,000 --> 00:03:25,000 imma rridu rimedju din il-kwistjoni fl-aħmar qabel dawn il-kontrolli l-oħra se jibqa 'għaddej. 58 00:03:25,000 --> 00:03:27,000 >> Let me jiffissaw dan. 59 00:03:27,000 --> 00:03:30,000 Let me zoom out u terġa 'ssir din, din id-darba ma' bmp.h wkoll 60 00:03:30,000 --> 00:03:34,000 fuq il-linja tal-kmand, Ikteb, u issa jekk kollox imur sew, 61 00:03:34,000 --> 00:03:38,000 li għaddej biex jiċċekkjaw u mbagħad tirritorna riżultat ta 'l-istiva tiegħek nifs 62 00:03:38,000 --> 00:03:42,000 kollha aħdar, li jfisser li qed nagħmel verament tajjeb fuq pset 4 s'issa. 63 00:03:42,000 --> 00:03:44,000 Tista 'tara u jiddeduċu mit-test deskrittiv hawn 64 00:03:44,000 --> 00:03:47,000 eżattament dak li huwa aħna ttestjati. 65 00:03:47,000 --> 00:03:49,000 Aħna ttestjati 1 ma l-fajls jeżistu? 66 00:03:49,000 --> 00:03:51,000 Aħna mbagħad ittestjati ma jikkompilaw resize.c? 67 00:03:51,000 --> 00:03:58,000 Imbagħad aħna ttestjati ma jkunx resize a BMP 1x1-pixel meta n, il-fattur resize, hija l-1. 68 00:03:58,000 --> 00:04:01,000 Issa, jekk għandek l-ebda idea dak li n huwa, inti ser ladarba inti adsa fis pset 4, 69 00:04:01,000 --> 00:04:04,000 iżda li sempliċiment huwa sanità jivverifika sabiex ikun żgur li int mhux resizing 70 00:04:04,000 --> 00:04:08,000 immaġni fil-livelli kollha jekk il-fattur resize huwa 1. 71 00:04:08,000 --> 00:04:14,000 Jekk, għall-kuntrarju, hija resizes pixel 1x1 għal BMP pixel 1x1 2x2 lill korrett 72 00:04:14,000 --> 00:04:19,000 meta n hija 2, imbagħad bl-istess mod, minjiera jifforma xieraq. 73 00:04:19,000 --> 00:04:22,000 >> Fil-qosor, dan huwa maħsub biex, wieħed, jieħu l-qsim-swaba 74 00:04:22,000 --> 00:04:25,000 barra mill-ekwazzjoni dritt qabel ma tissottometti pset tiegħek. 75 00:04:25,000 --> 00:04:28,000 Inti se tkun taf eżattament liema TF tiegħek dalwaqt se tkun taf 76 00:04:28,000 --> 00:04:30,000 meta inti tmur dwar sottomissjoni xi wħud minn dawn is-settijiet problema, 77 00:04:30,000 --> 00:04:34,000 u wkoll il-motivazzjoni pedagoġika huwa verament li tpoġġi 78 00:04:34,000 --> 00:04:37,000 l-opportunità fuq quddiem tal inti hekk li meta inti taf a priori 79 00:04:37,000 --> 00:04:39,000 li hemm bugs fil-kodiċi tiegħek u testijiet li mhumiex jiġu mgħoddija, 80 00:04:39,000 --> 00:04:43,000 inti tista 'tpoġġi fil-ħin effettiv aktar bil-quddiem biex isolvu dawn il-problemi 81 00:04:43,000 --> 00:04:45,000 aktar milli jitilfu punti, jiksbu rispons mill-TF tiegħek, 82 00:04:45,000 --> 00:04:48,000 u mbagħad mur, "Ahh," bħal I għandu jkollhom dehret li out. 83 00:04:48,000 --> 00:04:50,000 Issa mill-inqas hemm għodda biex jgħinek issib li. 84 00:04:50,000 --> 00:04:52,000 Mhuwiex ser tfakkar meta l-bug hija, iżda se jgħidlek 85 00:04:52,000 --> 00:04:54,000 dak li huwa sintomatiku ta 'dan. 86 00:04:54,000 --> 00:04:57,000 >> Issa jirrealizzaw it-testijiet mhumiex neċessarjament eżawrjenti. 87 00:04:57,000 --> 00:04:59,000 Sempliċiment għax ikollok full screen ta 'uċuħ smiley aħdar 88 00:04:59,000 --> 00:05:02,000 ma jfissirx kodiċi tiegħek hija perfetta, iżda dan ma jfissirx 89 00:05:02,000 --> 00:05:06,000 li jkun għadda ċertu testijiet preskritti mil-spec. 90 00:05:06,000 --> 00:05:08,000 Kultant aħna mhux se rilaxx kontrolli. 91 00:05:08,000 --> 00:05:10,000 Per eżempju, whodunit, wieħed mill-aspetti ta 'pset 4, 92 00:05:10,000 --> 00:05:15,000 huwa tip ta 'diżappunt jekk aħna nagħtuk 93 00:05:15,000 --> 00:05:18,000 ir-risposta dwar dak li hi, u hemm numru ta 'modi biex jikxfu 94 00:05:18,000 --> 00:05:21,000 li l-persuna hija fil dak l-istorbju aħmar. 95 00:05:21,000 --> 00:05:24,000 Il spec dejjem se tispeċifika fil-futur għall-pset 5 onward 96 00:05:24,000 --> 00:05:26,000 dak kontrolli jeżistu għalik. 97 00:05:26,000 --> 00:05:28,000 Int ser ikollok avviż hemm dan il-URL abjad fil-qiegħ. 98 00:05:28,000 --> 00:05:30,000 Għal issa, dan huwa biss l-output dijanjostiku. 99 00:05:30,000 --> 00:05:33,000 Jekk inti żżur dan URL, int ser tingħata mazz sħiħ ta 'crazy, messaġġi cryptic 100 00:05:33,000 --> 00:05:36,000 li inti qed jilqgħu biex tfittex permezz ta ', imma hija l-aktar għall-persunal 101 00:05:36,000 --> 00:05:41,000 sabiex inkunu nistgħu djanjosi u debug bugs fil check50 innifsu. 102 00:05:41,000 --> 00:05:46,000 >> Mingħajr dewmien, ejja jimxu fuq fejn aħna jitħalla 'off. 103 00:05:46,000 --> 00:05:48,000 CS50 librerija ħadna għall mogħtija għal xi ġimgħat, 104 00:05:48,000 --> 00:05:52,000 iżda mbagħad ġimgħa li għaddiet, bdejna tqaxxir lura waħda mill-saffi ta 'dan. 105 00:05:52,000 --> 00:05:55,000 Bdejna jitwarrbu sensiela favur dak minflok? 106 00:05:55,000 --> 00:05:57,000 [Studenti] Char. 107 00:05:57,000 --> 00:05:59,000 * Char, li kien * char dan il-ħin, 108 00:05:59,000 --> 00:06:03,000 iżda issa aħna ma jkollhomx biex nippretendu li huwa ta 'sekwenza attwali tip tad-data. 109 00:06:03,000 --> 00:06:06,000 Pjuttost, huwa kien sinonimu ta 'tip għal * char, 110 00:06:06,000 --> 00:06:09,000 u string hija sekwenza ta 'karattri, 111 00:06:09,000 --> 00:06:14,000 hekk għaliex ma jagħmilx sens li jirrappreżentaw kordi bħala * char s? 112 00:06:14,000 --> 00:06:20,000 Xi jfisser * char jirrappreżentaw fil-kuntest ta 'dan il-kunċett ta' sekwenza? 113 00:06:20,000 --> 00:06:23,000 Yeah. >> [Student] L-ewwel karattru. 114 00:06:23,000 --> 00:06:25,000 Tajba, l-ewwel karattru, iżda pjuttost mhux l-ewwel karattru. 115 00:06:25,000 --> 00:06:27,000 Huwa the-[istudenti] Indirizz. 116 00:06:27,000 --> 00:06:29,000 Tajba, l-indirizz ta 'l-ewwel karattru. 117 00:06:29,000 --> 00:06:33,000 Kollha li huwa meħtieġ biex jirrappreżentaw string fil-memorja tal-kompjuter 118 00:06:33,000 --> 00:06:36,000 huwa biss l-indirizz unika ta 'byte ewwel tagħha. 119 00:06:36,000 --> 00:06:38,000 Inti ma għandekx tkun taf kemm żmien huwa 120 00:06:38,000 --> 00:06:42,000 għaliex kif inti tista figura li out dinamiku? 121 00:06:42,000 --> 00:06:44,000 [Student] tul String. 122 00:06:44,000 --> 00:06:48,000 Tista 'sejħa tul string, eċċellenti, imma kif jaħdem tul string? 123 00:06:48,000 --> 00:06:50,000 X'tikkontrolla do? Yeah. 124 00:06:50,000 --> 00:06:52,000 [Student] Żomm għaddejjin sakemm ikollok l-karattru null. 125 00:06:52,000 --> 00:06:54,000 Yeah, eżattament, hija biss ttenni ma 'għall-loop, filwaqt loop, 126 00:06:54,000 --> 00:06:57,000 kwalunkwe minn * sa l-aħħar, u l-aħħar huwa rappreżentat 127 00:06:57,000 --> 00:07:01,000 billi \ 0, il-karattru hekk imsejħa Nul, Nul, 128 00:07:01,000 --> 00:07:05,000 ma tridx tiġi konfuża ma 'null, li huwa pointer, 129 00:07:05,000 --> 00:07:07,000 li se toħroġ fil-konverżazzjoni mill-ġdid illum. 130 00:07:07,000 --> 00:07:11,000 >> Aħna imqaxxar lura saff ta 'GetInt, u mbagħad aħna ħa ħarsa lejn GetString, 131 00:07:11,000 --> 00:07:14,000 u jfakkru li kemm ta 'dawk il-funzjonijiet, jew verament, 132 00:07:14,000 --> 00:07:18,000 GetString, kien bl-użu ta 'funzjoni partikolari 133 00:07:18,000 --> 00:07:21,000 li fil-fatt parse, jiġifieri, taqra jew tanalizza, input l-utent. 134 00:07:21,000 --> 00:07:25,000 U dak li kien dik il-funzjoni l-ġdida? 135 00:07:25,000 --> 00:07:27,000 Scanf jew sscanf. Hija fil-fatt taqa 'fi togħmiet differenti ftit. 136 00:07:27,000 --> 00:07:31,000 Hemm scanf, hemm sscanf, hemm fscanf. 137 00:07:31,000 --> 00:07:35,000 Għal issa, għalkemm, ejja tiffoka fuq l-aktar wieħed faċli illustrati, 138 00:07:35,000 --> 00:07:38,000 u let me jimxi 'l quddiem u tiftaħ fl-appliance 139 00:07:38,000 --> 00:07:41,000 fajl bħal dan, scanf1.c. 140 00:07:41,000 --> 00:07:43,000 Dan huwa programm sempliċi super, 141 00:07:43,000 --> 00:07:46,000 iżda li ma xi ħaġa li aħna stajt qatt sar 142 00:07:46,000 --> 00:07:48,000 mingħajr l-għajnuna tal-librerija CS50. 143 00:07:48,000 --> 00:07:51,000 Dan gets int minn utent. Kif taħdem? 144 00:07:51,000 --> 00:07:53,000 Ukoll, fil-linja 16 hemmhekk, 145 00:07:53,000 --> 00:07:56,000 avviż li aħna tiddikjara x int imsejħa, u f'dan il-punt fl-istorja, 146 00:07:56,000 --> 00:07:58,000 dak li huwa l-valur ta 'x? 147 00:07:58,000 --> 00:08:00,000 [Rispons istudent inaudible] 148 00:08:00,000 --> 00:08:02,000 [David M.] Dritt, li jaf, xi valur żibel potenzjalment, hekk 17, aħna biss tell-utent 149 00:08:02,000 --> 00:08:06,000 tagħti me numru, jekk jogħġbok, u l-pass 18 huwa fejn jiġrilha interessanti. 150 00:08:06,000 --> 00:08:11,000 Scanf jidher li jissellef idea minn printf fis-sens li tuża dawn il-kodiċijiet format fil-kwotazzjonijiet. 151 00:08:11,000 --> 00:08:13,000 D% huwa ta 'kors numru deċimali. 152 00:08:13,000 --> 00:08:21,000 Iżda għaliex jien tgħaddi fl & x minflok ftit x? 153 00:08:21,000 --> 00:08:24,000 L-ewwel hija korretta. Yeah. 154 00:08:24,000 --> 00:08:26,000 [Rispons istudent inaudible] 155 00:08:26,000 --> 00:08:31,000 Eżattament, jekk l-għan ta 'dan il-programm, bħall-GetInt funzjoni hija stess, 156 00:08:31,000 --> 00:08:34,000 huwa biex tikseb int mill-utent I jista 'jgħaddi l-funzjonijiet 157 00:08:34,000 --> 00:08:38,000 il-varjabbli kollha nixtieq, imma jekk jien ma jgħaddihom b'referenza 158 00:08:38,000 --> 00:08:41,000 jew minn l-indirizz jew minn pointer, kollha sinonimu għal skopijiet tal-lum, 159 00:08:41,000 --> 00:08:46,000 allura dik il-funzjoni għandha l-ebda abbiltà li jibdlu l-kontenut ta 'din varjabbli. 160 00:08:46,000 --> 00:08:49,000 Dan se jgħaddi f'kopja bħad-verżjoni Buggy ta swap 161 00:08:49,000 --> 00:08:51,000 li konna tkellimna dwar għal xi ftit drabi issa. 162 00:08:51,000 --> 00:08:54,000 >> Iżda minflok, billi tagħmel & x, jien litteralment jgħaddi fil liema? 163 00:08:54,000 --> 00:08:57,000 [Student] L-indirizz. >> L-indirizz ta 'x. 164 00:08:57,000 --> 00:09:01,000 Huwa simili tpinġija ta 'mappa għall-funzjoni msejħa scanf u qal hawn, 165 00:09:01,000 --> 00:09:04,000 dawn huma direzzjonijiet għal blokki ta 'memorja fil-kompjuter 166 00:09:04,000 --> 00:09:07,000 li inti tista 'tmur taħżen xi numru sħiħ pulzieri 167 00:09:07,000 --> 00:09:10,000 Sabiex sscanf li issa jagħmlu dan 168 00:09:10,000 --> 00:09:13,000 dak l-operatur, liema biċċa ta 'sintassi huwa se jkollhom jużaw 169 00:09:13,000 --> 00:09:19,000 anke jekk aħna ma tistax tara għaliex xi ħadd ieħor kiteb din il-funzjoni? 170 00:09:19,000 --> 00:09:21,000 Fi kliem ieħor - dak li? 171 00:09:21,000 --> 00:09:23,000 [Student] X jinqara. 172 00:09:23,000 --> 00:09:27,000 Hemm għaddej biex tkun xi qari, iżda biss fir-rigward x hawnhekk. 173 00:09:27,000 --> 00:09:30,000 Jekk scanf qed għadda l-indirizz ta 'x, 174 00:09:30,000 --> 00:09:35,000 sintattiku, liema operatur huwa marbut li jeżisti x'imkien 175 00:09:35,000 --> 00:09:38,000 ġewwa ta 'l-implimentazzjoni scanf hekk li scanf 176 00:09:38,000 --> 00:09:42,000 jistgħu attwalment tikteb numru 2 ta 'dak l-indirizz? 177 00:09:42,000 --> 00:09:44,000 Yeah, sabiex il-*. 178 00:09:44,000 --> 00:09:47,000 Ifakkar li l-* huwa dereference operatur tagħna, li essenzjalment ifisser jmorru hemm. 179 00:09:47,000 --> 00:09:50,000 >> Ladarba inti ħadthom ġiet mogħtija l-indirizz, kif inhu l-każ hawnhekk, 180 00:09:50,000 --> 00:09:53,000 scanf huwa probabbilment-jekk irridu verament stenna madwar sors tagħha ta 'code- 181 00:09:53,000 --> 00:09:59,000 qed tagħmel * x jew l-ekwivalenti li fil-fatt tmur f'dak l-indirizz u jqajjem xi valur hemmhekk. 182 00:09:59,000 --> 00:10:02,000 Issa, kif dwar kif scanf gets input mill-tastiera, 183 00:10:02,000 --> 00:10:04,000 aħna ser mewġa idejn tagħna out għal-lum. 184 00:10:04,000 --> 00:10:07,000 Just wieħed jassumi li s-sistema operattiva jippermetti sscanf biex jitkellmu 185 00:10:07,000 --> 00:10:11,000 lill keyboard 'l-utent, imma f'dan il-punt issa fil-linja 19, 186 00:10:11,000 --> 00:10:14,000 meta aħna sempliċiment jistampa x, jidher li jkun il-każ 187 00:10:14,000 --> 00:10:17,000 li scanf poġġa l int fil x. 188 00:10:17,000 --> 00:10:19,000 Li eżattament kif taħdem scanf, u tfakkar ġimgħa li għaddiet 189 00:10:19,000 --> 00:10:25,000 dan huwa eżattament kif GetString u GetInt u l-familja l-oħra tal-funzjonijiet tagħha 190 00:10:25,000 --> 00:10:28,000 finalment xogħlijiet, għalkemm varjazzjoni żgħira bħal sscanf, 191 00:10:28,000 --> 00:10:31,000 li jfisser scan sensiela minflok il-keyboard. 192 00:10:31,000 --> 00:10:33,000 Iżda ejja tagħti ħarsa lejn varjanza ftit ta 'dan. 193 00:10:33,000 --> 00:10:37,000 Fil scanf2, I attwalment invitat up. 194 00:10:37,000 --> 00:10:42,000 Dak li hu ħażin u jien ser jaħbu l-kumment li jispjega kemm- 195 00:10:42,000 --> 00:10:47,000 dak li hu ħażin ma 'dan il-programm, verżjoni 2? 196 00:10:47,000 --> 00:10:55,000 Jkun teknika possibbli f'dan il-ħin. 197 00:10:55,000 --> 00:10:57,000 Huwa jistenna pretty tajba. 198 00:10:57,000 --> 00:11:03,000 Huwa nicely inċiża, imma- 199 00:11:03,000 --> 00:11:07,000 okay, kif madwar ejja prune l-isfel għall-mistoqsijiet iqsar? 200 00:11:07,000 --> 00:11:17,000 Linja 16. X'hemm linja 16 tagħmel bl-Ingliż preċiż iżda teknika? 201 00:11:17,000 --> 00:11:20,000 Getting ftit skomdi. Iva, Michael. 202 00:11:20,000 --> 00:11:25,000 [Istudenti] Huwa tipponta lejn l-ewwel ittra ta 'sekwenza. 203 00:11:25,000 --> 00:11:27,000 >> Okay, qrib. Let me tweak li ftit. 204 00:11:27,000 --> 00:11:33,000 Li tipponta lejn l-ewwel ittra ta 'spag, inti tiddikjara buffer varjabbli imsejjaħ 205 00:11:33,000 --> 00:11:36,000 li se jindika l-indirizz ewwel string, 206 00:11:36,000 --> 00:11:39,000 jew pjuttost, li se punt iktar speċifikament ma 'char. 207 00:11:39,000 --> 00:11:42,000 Avviż mhuwiex attwalment tipponta kullimkien għaliex hemm l-ebda operatur assenjazzjoni. 208 00:11:42,000 --> 00:11:46,000 M'hemm l-ebda sinjal ugwali, hekk kollox aħna qed tagħmel huwa allokat l-buffer imsejħa varjabbli. 209 00:11:46,000 --> 00:11:49,000 Dan jiġri li jkun 32 bits għaliex dan huwa pointer, 210 00:11:49,000 --> 00:11:52,000 u l-kontenut ta buffer preżumibbilment eventwalment 211 00:11:52,000 --> 00:11:57,000 se jkollu l-indirizz ta 'char, iżda għal issa, dak li jkun fihom buffer ma? 212 00:11:57,000 --> 00:11:59,000 Just xi fittizji, li jaf, xi valur żibel, 213 00:11:59,000 --> 00:12:03,000 għaliex aħna ma espliċitament initialized dan, hekk aħna ma għandha tassumi xejn. 214 00:12:03,000 --> 00:12:06,000 Okay, hekk issa linja 17 huwa 'x'jinkludi linja 17 do? 215 00:12:06,000 --> 00:12:08,000 Forsi li se sħun dan up. 216 00:12:08,000 --> 00:12:10,000 Hija prints string, id-dritt? 217 00:12:10,000 --> 00:12:12,000 Hija prints String jekk jogħġbok. 218 00:12:12,000 --> 00:12:15,000 >> Linja 18 huwa tip ta 'familjari issa li aħna biss raw varjazzjoni ta' dan 219 00:12:15,000 --> 00:12:18,000 iżda ma 'kodiċi format differenti, sabiex fil-linja 18, 220 00:12:18,000 --> 00:12:23,000 aħna qed javżak scanf hawnhekk huwa l-indirizz ta 'blokki ta' memorja. 221 00:12:23,000 --> 00:12:27,000 Nixtieq li ring fi string, kif implikat% s, 222 00:12:27,000 --> 00:12:32,000 iżda l-problema hija li aħna ma għamlu ftit affarijiet hawn. 223 00:12:32,000 --> 00:12:35,000 X'hemm waħda mill-problemi? 224 00:12:35,000 --> 00:12:38,000 [Istudenti] Huwa tipprova dereference pointer null. 225 00:12:38,000 --> 00:12:41,000 Tajba, pointers nulla jew biss inkella mhux magħruf. 226 00:12:41,000 --> 00:12:45,000 Int għoti scanf indirizz, iżda inti biss qal mument ilu 227 00:12:45,000 --> 00:12:49,000 li dan l-indirizz huwa xi valur żibel għaliex aħna ma attwalment tassenja din għal xejn, 228 00:12:49,000 --> 00:12:53,000 u hekk int tgħidilhom scanf effettivament imorru tpoġġi string hawn, 229 00:12:53,000 --> 00:12:56,000 imma ma nafux fejn hawn s'issa hija, 230 00:12:56,000 --> 00:12:59,000 hekk aħna ma attwalment allokati memorja għall-buffer. 231 00:12:59,000 --> 00:13:03,000 Barra minn hekk, dak li huma inti wkoll ma anki javżak scanf? 232 00:13:03,000 --> 00:13:06,000 Ejja ngħidu li dan kien ta 'blokki ta' memorja, u ma kienx ta 'valur żibel, 233 00:13:06,000 --> 00:13:09,000 iżda int xorta ma javżak scanf xi ħaġa importanti. 234 00:13:09,000 --> 00:13:12,000 [Student] Fejn fil-fatt huwa, l-ampersand. 235 00:13:12,000 --> 00:13:15,000 Ampersand, hekk f'dan il-każ, huwa okay. 236 00:13:15,000 --> 00:13:18,000 Minħabba buffer hija diġà ddikjarat bħala indikatur 237 00:13:18,000 --> 00:13:22,000 mal-biċċa * ta sintassi, aħna ma bżonn l-użu ampersand 238 00:13:22,000 --> 00:13:25,000 għaliex dan huwa diġà l-indirizz, iżda naħseb smajt hawnhekk. 239 00:13:25,000 --> 00:13:27,000 [Student] Kif big huwa? 240 00:13:27,000 --> 00:13:29,000 Tajba, aħna mhux qed javżak scanf kemm hu kbir dan buffer hija, 241 00:13:29,000 --> 00:13:32,000 li jfisser anki jekk buffer kienu pointer, 242 00:13:32,000 --> 00:13:35,000 aħna qed tgħid scanf, poġġi string hawn, 243 00:13:35,000 --> 00:13:38,000 iżda hawnhekk jista 'jkun 2 bytes, jista' jkun ta '10 bytes, din tista' tkun megabyte. 244 00:13:38,000 --> 00:13:41,000 Scanf m'għandha l-ebda idea, u minħabba li din hija blokki ta 'memorja 245 00:13:41,000 --> 00:13:43,000 preżumibbilment, mhuwiex string s'issa. 246 00:13:43,000 --> 00:13:48,000 Huwa biss string ladarba inti tikteb karattri u 0 \ 'dik blokki ta' memorja. 247 00:13:48,000 --> 00:13:51,000 Issa huwa biss ftit blokki ta 'memorja. 248 00:13:51,000 --> 00:13:55,000 Scanf mhux se tkun taf meta tieqaf bil-miktub għal dak l-indirizz. 249 00:13:55,000 --> 00:13:59,000 >> Jekk inti recall xi eżempji fil-passat fejn I saltwarjament ittajpjat fuq it-tastiera 250 00:13:59,000 --> 00:14:03,000 jippruvaw overflow buffer, u tkellimna fuq il-ġimgħa dwar eżattament dak. 251 00:14:03,000 --> 00:14:07,000 Jekk avversarju b'xi mod jinjetta fil-programm tiegħek kelma ħafna akbar 252 00:14:07,000 --> 00:14:10,000 jew sentenza jew frażi allura inti kienu qed jistennew inti tista 'qbiż 253 00:14:10,000 --> 00:14:13,000 blokki ta 'memorja, li jista' jkollha konsegwenzi ħżiena, 254 00:14:13,000 --> 00:14:15,000 bħal li jieħdu fuq il-programm kollu innifsu. 255 00:14:15,000 --> 00:14:17,000 Għandna bżonn biex jiffissaw dan b'xi. 256 00:14:17,000 --> 00:14:20,000 Let me zoom out u jmorru fil-verżjoni 3 ta 'dan il-programm. 257 00:14:20,000 --> 00:14:22,000 Li ftit aħjar. 258 00:14:22,000 --> 00:14:24,000 F'dan il-verżjoni, avviż-differenza. 259 00:14:24,000 --> 00:14:27,000 F'konformità 16, jien darb'oħra tiddikjara buffer varjabbli imsejħa, 260 00:14:27,000 --> 00:14:29,000 imma dak li hu issa? 261 00:14:29,000 --> 00:14:33,000 Huwa ta 'firxa ta' 16 Chars. 262 00:14:33,000 --> 00:14:36,000 Dan huwa tajjeb għaliex dan ifisser I issa jistgħu tell scanf 263 00:14:36,000 --> 00:14:39,000 hawnhekk hija chunk attwali ta 'memorja. 264 00:14:39,000 --> 00:14:42,000 Tista 'kważi taħseb arrays bħala pointers issa, 265 00:14:42,000 --> 00:14:44,000 anki jekk dawn mhux qed attwalment ekwivalenti. 266 00:14:44,000 --> 00:14:47,000 Huma ser jaġixxi b'mod differenti f'kuntesti differenti. 267 00:14:47,000 --> 00:14:50,000 Iżda huwa ċertament il-każ li buffer hija referenzar 268 00:14:50,000 --> 00:14:53,000 16 Chars kontigwi għaliex dan huwa dak firxa hija 269 00:14:53,000 --> 00:14:55,000 u kienet għal ftit ġimgħat issa. 270 00:14:55,000 --> 00:14:59,000 >> Hawnhekk, I am javżak scanf hawn blokki ta 'memorja. 271 00:14:59,000 --> 00:15:01,000 Din id-darba, huwa attwalment ta 'blokki ta' memorja, 272 00:15:01,000 --> 00:15:07,000 iżda għaliex huwa dan il-programm għadu sfruttat? 273 00:15:07,000 --> 00:15:11,000 X'hemm ħażin għadu? 274 00:15:11,000 --> 00:15:14,000 Stajt qal tagħti me 16 bytes imma- 275 00:15:14,000 --> 00:15:16,000 [Student] X'jiġri jekk dawn it-tip f'aktar minn 16? 276 00:15:16,000 --> 00:15:20,000 Eżattament, jekk dak l-utent tipi fil-17 karattri jew karattri 1700? 277 00:15:20,000 --> 00:15:23,000 Fil-fatt, ejja ara jekk ma nistgħux vjaġġ fuq dan l-iżball issa. 278 00:15:23,000 --> 00:15:25,000 Huwa aħjar iżda mhux perfetta. 279 00:15:25,000 --> 00:15:28,000 Let me imorru quddiem u run jagħmlu scanf3 li jiġbor dan il-programm. 280 00:15:28,000 --> 00:15:34,000 Let me run scanf3, String jekk jogħġbok: bonjour, u aħna jidhru li huma okay. 281 00:15:34,000 --> 00:15:37,000 Let me jippruvaw waħda kemmxejn itwal, bonjour hemm. 282 00:15:37,000 --> 00:15:42,000 Okay, ejja do bonjour hemm kif int illum, Ikteb. 283 00:15:42,000 --> 00:15:54,000 Getting tip ta 'xxurtjati hawn, ejja ngħidu bonjour hemm kif inti. 284 00:15:54,000 --> 00:15:56,000 Kkritikat dan. 285 00:15:56,000 --> 00:16:03,000 Okay, hekk aħna ltqajna xxurtjati. Ejja naraw jekk aħna ma jistgħux jistabbilixxu dan. 286 00:16:03,000 --> 00:16:06,000 Le, mhuwiex ser let me kopja. 287 00:16:06,000 --> 00:16:09,000 Ejja nippruvaw dan mill-ġdid. 288 00:16:09,000 --> 00:16:12,000 Kull dritt, stand mill. 289 00:16:12,000 --> 00:16:20,000 Ser naraw kemm nista nippretendu li tiffoka filwaqt li xorta tagħmel dan. 290 00:16:20,000 --> 00:16:23,000 Kkritikat dan. Li pjuttost xieraq, fil-fatt. 291 00:16:23,000 --> 00:16:26,000 Hemm immorru. 292 00:16:26,000 --> 00:16:30,000 Punt magħmula. 293 00:16:30,000 --> 00:16:34,000 >> Dan, embarrassing għalkemm huwa wkoll huwa, huwa wkoll wieħed mis-sorsi ta 'konfużjoni kbira 294 00:16:34,000 --> 00:16:38,000 meta tikteb programmi li għandhom bugs għaliex jimmanifestaw ruħhom 295 00:16:38,000 --> 00:16:40,000 biss darba fil-waqt kultant. 296 00:16:40,000 --> 00:16:43,000 Il-verità hija li anki jekk il-kodiċi tiegħek huwa kompletament imkisser, 297 00:16:43,000 --> 00:16:46,000 jista 'biss jiġi kompletament imkisser darba fil-waqt 298 00:16:46,000 --> 00:16:49,000 għaliex kultant, essenzjalment dak li jiġri huwa l-talloka sistema operattiva 299 00:16:49,000 --> 00:16:52,000 memorja ftit aktar minn inti fil-fatt bżonn għal kwalunkwe raġuni, 300 00:16:52,000 --> 00:16:57,000 u għalhekk ħadd qed tuża l-memorja dritt wara blokki tiegħek ta '16 karattri, 301 00:16:57,000 --> 00:17:01,000 hekk jekk inti tmur sa 17, 18, 19, tkun xi tkun, mhuwiex tali big deal. 302 00:17:01,000 --> 00:17:04,000 Issa, il-kompjuter, anki jekk ma crash f'dak il-punt, 303 00:17:04,000 --> 00:17:09,000 jista 'eventwalment jużaw numru byte 17 jew 18 jew 19 għal xi ħaġa oħra, 304 00:17:09,000 --> 00:17:14,000 fejn punt tad-data tiegħek li inti tpoġġi hemm, għalkemm eċċessivament twil, 305 00:17:14,000 --> 00:17:18,000 hija se tikseb jinkiteb fuqhom potenzjalment minn xi funzjoni oħra. 306 00:17:18,000 --> 00:17:21,000 Mhuwiex neċessarjament se jibqgħu intatti, 307 00:17:21,000 --> 00:17:23,000 iżda mhux neċessarjament se jikkawża ħsara seq. 308 00:17:23,000 --> 00:17:26,000 Iżda f'dan il-każ, I finalment sakemm karattri biżżejjed 309 00:17:26,000 --> 00:17:29,000 li jien essenzjalment jinqabżu segment tiegħi ta 'memorja, u BAM, 310 00:17:29,000 --> 00:17:33,000 is-sistema operattiva qal, "Jiddispjacini, li l-ebda tort tajba segmentazzjoni,." 311 00:17:33,000 --> 00:17:38,000 >> U ejja ara issa jekk dak li jibqa hawn fil tiegħi direttorju- 312 00:17:38,000 --> 00:17:40,000 avviż li għandi dan il-fajl hawn, qalba. 313 00:17:40,000 --> 00:17:42,000 Avviż li dan jerġa 'jissejjaħ dump qalba. 314 00:17:42,000 --> 00:17:46,000 Huwa essenzjalment fajl li fih l-kontenut tal-memorja programm tiegħek 315 00:17:46,000 --> 00:17:48,000 fil-punt li fih ġġarraf, 316 00:17:48,000 --> 00:17:51,000 u biss tipprova eżempju ftit hawn let me go fil hawn 317 00:17:51,000 --> 00:17:57,000 u run GDB dwar scanf3 u mbagħad jispeċifika tielet argument imsejjaħ qalba, 318 00:17:57,000 --> 00:18:01,000 u avviż hawnhekk li jekk I jelenka l-kodiċi, 319 00:18:01,000 --> 00:18:06,000 aħna ser ikunu jistgħu bħas-soltu mal-GDB biex tibda mixi permezz ta 'dan il-programm, 320 00:18:06,000 --> 00:18:10,000 u nista run u malli I hit-as mal-kmand pass fil GDB- 321 00:18:10,000 --> 00:18:13,000 malli I hit-linja potenzjalment Buggy wara ittajpjar fl string enormi, 322 00:18:13,000 --> 00:18:16,000 I ser tkun kapaċi biex effettivament jidentifikaw hawnhekk. 323 00:18:16,000 --> 00:18:19,000 Aktar dwar dan, għalkemm, fis-sezzjoni f'termini ta 'miżbliet ewlenin 324 00:18:19,000 --> 00:18:22,000 u simili sabiex inti tista 'attwalment poke madwar ġewwa tal-miżbla qalba 325 00:18:22,000 --> 00:18:27,000 u ara fuq liema linja l-programm naqset inti. 326 00:18:27,000 --> 00:18:32,000 Kwalunkwe mistoqsijiet imbagħad fuq pointers u dwar l-indirizzi? 327 00:18:32,000 --> 00:18:36,000 Minħabba llum fuq, aħna qed tmur biex tibda tieħu għall mogħtija li dawn l-affarijiet jeżistu 328 00:18:36,000 --> 00:18:40,000 u nafu eżattament x'inhuma. 329 00:18:40,000 --> 00:18:42,000 Iva. 330 00:18:42,000 --> 00:18:46,000 >> [Student] Kif come inti ma jkollu jpoġġi l ampersand jmiss għall-part- 331 00:18:46,000 --> 00:18:48,000 Good kwistjoni. 332 00:18:48,000 --> 00:18:51,000 Kif come I ma jkollu jpoġġi l ampersand jmiss għall-firxa karattru kif għamilt qabel 333 00:18:51,000 --> 00:18:53,000 mal-maġġoranza ta 'eżempji tagħna? 334 00:18:53,000 --> 00:18:55,000 Ir-risposta qasira hija arrays huma ftit speċjali. 335 00:18:55,000 --> 00:18:59,000 Tista 'kważi think a buffer bħala fatt li l-indirizz, 336 00:18:59,000 --> 00:19:03,000 u huwa biss hekk jiġri li jkun il-każ li l-notazzjoni kwadru bracket 337 00:19:03,000 --> 00:19:06,000 huwa konvenjenza sabiex inkunu tista 'tmur fil parentesi 0, parentesi 1, 338 00:19:06,000 --> 00:19:10,000 parentesi 2, mingħajr ma jkollu jintuża l-notazzjoni *. 339 00:19:10,000 --> 00:19:13,000 Li l-daqsxejn ta 'gidba abjad minħabba arrays u indikaturi 340 00:19:13,000 --> 00:19:17,000 huma, fil-fatt, ftit differenti, iżda jistgħu spiss, imma mhux dejjem jintużaw minflok xulxin. 341 00:19:17,000 --> 00:19:21,000 Fil-qosor, meta funzjoni qiegħda tistenna pointer għal blokki ta 'memorja, 342 00:19:21,000 --> 00:19:24,000 inti tista 'jew tgħaddiha indirizz li kienet irritornata mid malloc, 343 00:19:24,000 --> 00:19:29,000 u aħna ser tara malloc mill-ġdid qabel twil, jew inti tista 'tgħaddi l-isem ta' firxa. 344 00:19:29,000 --> 00:19:32,000 Inti ma għandekx tagħmel ampersand ma 'arrays għaliex diġà huma 345 00:19:32,000 --> 00:19:34,000 essenzjalment simili indirizzi. 346 00:19:34,000 --> 00:19:36,000 Dik hija l-unika eċċezzjoni. 347 00:19:36,000 --> 00:19:39,000 Il-parentesi kwadri jagħmluhom speċjali. 348 00:19:39,000 --> 00:19:41,000 >> Tista tpoġġi ampersand jmiss għall-buffer? 349 00:19:41,000 --> 00:19:43,000 Mhux f'dan il-każ. 350 00:19:43,000 --> 00:19:46,000 Li ma tkunx taħdem minħabba li, għal darb'oħra, ta 'dan il-każ kantuniera 351 00:19:46,000 --> 00:19:49,000 fejn arrays huma pjuttost mhux attwalment indirizzi. 352 00:19:49,000 --> 00:19:54,000 Iżda aħna ser forsi terga 'lura għal li qabel twil mal eżempji oħra. 353 00:19:54,000 --> 00:19:56,000 Ejja jippruvaw isolvu problema hawn. 354 00:19:56,000 --> 00:20:00,000 Għandna struttura data li aħna kont qed tuża għal xi żmien magħrufa bħala firxa. 355 00:20:00,000 --> 00:20:02,000 Kawża fil-punt, dan huwa dak li aħna biss kellhom. 356 00:20:02,000 --> 00:20:04,000 Iżda arrays għandhom xi upsides u negattivi. 357 00:20:04,000 --> 00:20:06,000 Arrays huma għaliex sbieħ? 358 00:20:06,000 --> 00:20:11,000 X'hemm ħaġa waħda li inti tixtieq-sal-punt li tixtieq arrays-dwar arrays? 359 00:20:11,000 --> 00:20:13,000 X'hemm konvenjenti dwarhom? X'hemm konvinċenti? 360 00:20:13,000 --> 00:20:18,000 Għaliex ma aħna jintroduċu lilhom fl-ewwel post? 361 00:20:18,000 --> 00:20:20,000 Yeah. 362 00:20:20,000 --> 00:20:27,000 [Student] Huma jista 'jaħżen ħafna ta' data, u inti ma għandekx tuża l-ħaġa sħiħa. 363 00:20:27,000 --> 00:20:29,000 Tista 'tuża taqsima. 364 00:20:29,000 --> 00:20:32,000 Tajba, ma 'firxa tista' taħżen ħafna ta 'data, 365 00:20:32,000 --> 00:20:35,000 u inti ma neċessarjament ikollhom l-użu kollha ta 'dan, sabiex inti tista overallocate, 366 00:20:35,000 --> 00:20:39,000 li jista 'jkun konvenjenti jekk inti ma taf minn qabel kemm ta' xi ħaġa li jistennew. 367 00:20:39,000 --> 00:20:41,000 >> GetString huwa eżempju perfett. 368 00:20:41,000 --> 00:20:44,000 GetString, miktub minn us, m'għandha l-ebda idea kif ħafna Chars li tistenna, 369 00:20:44,000 --> 00:20:48,000 għalhekk il-fatt li nistgħu jallokaw biċċiet ta 'memorja kontigwi hija tajba. 370 00:20:48,000 --> 00:20:51,000 Arrays wkoll isolvu problema rajna ftit ġimgħat ilu issa 371 00:20:51,000 --> 00:20:54,000 fejn il-kodiċi tiegħek tibda biex tittrasferixxi fis xi ħaġa ferm imfassla ħażin. 372 00:20:54,000 --> 00:20:57,000 Ifakkar li I ħolqot struttura student imsejjaħ David, 373 00:20:57,000 --> 00:21:00,000 u mbagħad li kien effettivament alternattiva, għalkemm, 374 00:21:00,000 --> 00:21:04,000 li jkollhom l-isem varjabbli msejħa u ieħor varjabbli imsejħa, I think, dar, 375 00:21:04,000 --> 00:21:08,000 u ieħor varjabbli msejħa ID għaliex f'dak l-istorja I mbagħad ried jintroduċi xi ħaġa oħra 376 00:21:08,000 --> 00:21:11,000 bħall Rob fil-programm, hekk allura I iddeċieda stenna minuta, 377 00:21:11,000 --> 00:21:13,000 I-ħtieġa li tibdel isem dawn il-varjabbli. 378 00:21:13,000 --> 00:21:16,000 Ejja sejħa mini name1, ID1, house1. 379 00:21:16,000 --> 00:21:20,000 Ejja sejħa Rob name2, house2, ID2. 380 00:21:20,000 --> 00:21:22,000 Iżda mbagħad stenna minuta, dak dwar Tommy? 381 00:21:22,000 --> 00:21:24,000 Imbagħad kellna tliet varjabbli aktar. 382 00:21:24,000 --> 00:21:27,000 Aħna introdotti xi ħadd ieħor, erba 'settijiet ta' varjabbli. 383 00:21:27,000 --> 00:21:30,000 Id-dinja bdiet tikseb messy malajr ħafna, 384 00:21:30,000 --> 00:21:33,000 hekk aħna introdotti structs, u x'hemm konvinċenti dwar Struct? 385 00:21:33,000 --> 00:21:39,000 Xi jfisser Struct C let you do? 386 00:21:39,000 --> 00:21:42,000 Huwa tassew strambi illum. 387 00:21:42,000 --> 00:21:44,000 X'inhu? >> [Rispons istudent inaudible] 388 00:21:44,000 --> 00:21:47,000 Yeah, speċifikament, tippermetti typedef inti toħloq tip ta 'data ġdida, 389 00:21:47,000 --> 00:21:51,000 u Struct, l-keyword Struct, jippermettilek li jirrappreżentaw 390 00:21:51,000 --> 00:21:54,000 biċċiet kunċettwali relatati ta 'data flimkien 391 00:21:54,000 --> 00:21:56,000 u wara jsejħulhom xi ħaġa bħal student. 392 00:21:56,000 --> 00:21:58,000 >> Dan kien tajjeb għax issa nistgħu mudell 393 00:21:58,000 --> 00:22:03,000 tip ħafna aktar ta konċettwalment koerenti l-kunċett ta 'student fi varjabbli 394 00:22:03,000 --> 00:22:07,000 aktar milli arbitrarju li wieħed għal string, wieħed għal ID, u oħrajn. 395 00:22:07,000 --> 00:22:10,000 Arrays huma sbieħ għaliex jippermettu magħna biex jibdew tindif kodiċi tagħna. 396 00:22:10,000 --> 00:22:13,000 Imma dak li hu żvantaġġ issa ta 'firxa? 397 00:22:13,000 --> 00:22:15,000 X'tista inti ma tagħmel? Yeah. 398 00:22:15,000 --> 00:22:17,000 [Student] Inti għandek tkun taf kemm hu kbir huwa. 399 00:22:17,000 --> 00:22:19,000 Inti għandek tkun taf kemm hu kbir huwa, hekk huwa tip ta 'uġigħ. 400 00:22:19,000 --> 00:22:21,000 Dawk tal inti ma esperjenza ta 'programmazzjoni preċedenti tkun taf li fil-lott ta' lingwi, 401 00:22:21,000 --> 00:22:24,000 bħal Java, inti tista 'titlob blokki ta' memorja, speċifikament firxa, 402 00:22:24,000 --> 00:22:28,000 kemm hu kbir inti, b'tul, proprjetà, biex ngħidu hekk, u li verament konvenjenti. 403 00:22:28,000 --> 00:22:32,000 Fl C, inti ma tistax anki sejħa strlen fuq firxa ġeneriku 404 00:22:32,000 --> 00:22:35,000 għaliex strlen, kif il-kelma timplika, huwa biss għall kordi, 405 00:22:35,000 --> 00:22:39,000 u inti tista figura l-tul ta 'sekwenza minħabba din il-konvenzjoni tal-bniedem 406 00:22:39,000 --> 00:22:43,000 li jkun ta '0 \, iżda l-firxa, aktar ġeneriku, huwa biss blokki ta' memorja. 407 00:22:43,000 --> 00:22:46,000 Jekk huwa firxa ta 'ints, hemm mhux se jkun hemm xi karattru speċjali 408 00:22:46,000 --> 00:22:48,000 fl-aħħar għalikom. 409 00:22:48,000 --> 00:22:50,000 Int għandek tiftakar it-tul ta 'firxa. 410 00:22:50,000 --> 00:22:54,000 Tnaqqis ieħor ta 'firxa imrobbija prinċipali tagħha GetString innifsu. 411 00:22:54,000 --> 00:22:59,000 X'hemm ieħor tnaqqis ta 'firxa? 412 00:22:59,000 --> 00:23:01,000 Sinjur, biss int u jien illum. 413 00:23:01,000 --> 00:23:04,000 [Rispons istudent inaudible] >> Huwa dak? 414 00:23:04,000 --> 00:23:06,000 Huwa ddikjarat fuq il-munzell. 415 00:23:06,000 --> 00:23:09,000 Okay, iddikjarat fuq il-munzell. Għaliex ma inti tixtieq li? 416 00:23:09,000 --> 00:23:13,000 [Student] Minħabba jiġrilha użat mill-ġdid. 417 00:23:13,000 --> 00:23:15,000 Hija gets użati mill-ġdid. 418 00:23:15,000 --> 00:23:18,000 Okay, jekk tuża firxa li talloka memorja, 419 00:23:18,000 --> 00:23:21,000 inti ma tistax, per eżempju, jirritornaha għaliex dan huwa fuq il-munzell. 420 00:23:21,000 --> 00:23:23,000 Okay, li l-iżvantaġġ. 421 00:23:23,000 --> 00:23:25,000 U kif madwar ieħor ma 'firxa? 422 00:23:25,000 --> 00:23:28,000 Ladarba inti jallokaw dan, int tip ta 'invitat jekk għandek bżonn iktar spazju 423 00:23:28,000 --> 00:23:30,000 minn dak array jkun. 424 00:23:30,000 --> 00:23:34,000 >> Imbagħad aħna introdotti,, irtirar malloc, li tana l-abbiltà li dinamikament talloka memorja. 425 00:23:34,000 --> 00:23:37,000 Imma x'jiġri jekk aħna ppruvaw dinja differenti għal kollox? 426 00:23:37,000 --> 00:23:40,000 X'jiġri jekk ridna biex issolvi ftit dawk il-problemi 427 00:23:40,000 --> 00:23:45,000 hekk aħna minflok 'tiegħi pinna tkun raqdu hawn' il 428 00:23:45,000 --> 00:23:51,000 dak jekk aħna minflok riedu essenzjalment joħolqu dinja li ma jibqax bħal din? 429 00:23:51,000 --> 00:23:56,000 Dan huwa firxa, u, naturalment, dan it-tip ta 'tiddeterjora ladarba aħna laqat il-tarf ta' l-array, 430 00:23:56,000 --> 00:24:00,000 u jien issa m'għadx għandhom spazju għall-ieħor numru sħiħ jew karattru ieħor. 431 00:24:00,000 --> 00:24:03,000 X'jiġri jekk aħna xorta ta 'preemptively jgħidu tajjeb, għaliex ma we jirrilassaw 432 00:24:03,000 --> 00:24:07,000 dan ir-rekwiżit li dawn il-biċċiet ta 'memorja jkun kontigwu lura lura, 433 00:24:07,000 --> 00:24:10,000 u għaliex ma, meta I bżonn int jew char, 434 00:24:10,000 --> 00:24:12,000 biss jagħtu me spazju għal wieħed minnhom? 435 00:24:12,000 --> 00:24:14,000 U meta I bżonn ieħor, agħti lili ieħor ispazju, 436 00:24:14,000 --> 00:24:16,000 u meta I bżonn ieħor, agħti lili ieħor ispazju. 437 00:24:16,000 --> 00:24:19,000 Il-vantaġġ ta 'liema issa hija li jekk xi ħadd ieħor 438 00:24:19,000 --> 00:24:21,000 jieħu l-memorja hawn fuq, no big deal. 439 00:24:21,000 --> 00:24:25,000 I ser jieħdu din blokki addizzjonali ta 'memorja hawn u allura dan wieħed. 440 00:24:25,000 --> 00:24:28,000 >> Issa, il-qabda biss hawnhekk hija li din kważi jħoss simili jien 441 00:24:28,000 --> 00:24:30,000 mazz sħiħ ta 'varjabbli differenti. 442 00:24:30,000 --> 00:24:33,000 Dan iħoss bħal 5 fatturi varjabbli differenti potenzjalment. 443 00:24:33,000 --> 00:24:36,000 Imma x'jiġri jekk aħna steal idea minn spag 444 00:24:36,000 --> 00:24:41,000 fejn aħna b'xi mod link dawn l-affarijiet flimkien kunċettwali, u jekk dak I ma 'dan? 445 00:24:41,000 --> 00:24:44,000 Dan huwa vleġġa ħafna ħażin mfassla tiegħi. 446 00:24:44,000 --> 00:24:46,000 Iżda jissoponi li kull wieħed minn dawn biċċiet ta 'memorja 447 00:24:46,000 --> 00:24:52,000 indika l-oħra, u dan Guy, li m'għandha l-ebda parentela għal-lemin tiegħu, 448 00:24:52,000 --> 00:24:54,000 m'għandha l-ebda vleġġa bħal din. 449 00:24:54,000 --> 00:24:56,000 Dan huwa fil-fatt dak li sejjaħ lista marbuta. 450 00:24:56,000 --> 00:25:00,000 Din hija struttura tad-data ġdida li tippermetti magħna biex jallokaw blokki ta 'memorja, 451 00:25:00,000 --> 00:25:03,000 imbagħad ieħor, imbagħad ieħor, imbagħad ieħor, kwalunkwe ħin irridu 452 00:25:03,000 --> 00:25:07,000 matul programm, u aħna ftakar li dawn qed kollha b'xi mod relatati 453 00:25:07,000 --> 00:25:11,000 billi litteralment ikkatenar flimkien, u aħna ma li pictorially hawn bi vleġġa. 454 00:25:11,000 --> 00:25:15,000 Iżda fil-kodiċi, x'għandhom ikunu l-mekkaniżmu li permezz tagħha inti tista 'b'xi mod jikkonnettjaw, 455 00:25:15,000 --> 00:25:20,000 kważi simili Scratch, wieħed blokki għall-ieħor fi blokki? 456 00:25:20,000 --> 00:25:22,000 Aħna jistgħu jużaw pointer, id-dritt? 457 00:25:22,000 --> 00:25:25,000 Minħabba li verament il-vleġġa li għaddej mill-kwadru fuq tax-xellug, 458 00:25:25,000 --> 00:25:31,000 dan Guy hawn biex dan wieħed, jista 'jkun fihom ġewwa ta' dan il-kwadru 459 00:25:31,000 --> 00:25:34,000 mhux biss xi ints, mhux biss xi char, imma dak jekk I attwalment allokati 460 00:25:34,000 --> 00:25:37,000 spazju ftit extra biex issa, 461 00:25:37,000 --> 00:25:41,000 kull biċċiet tiegħi ta 'memorja, anke jekk dan se jiswieli, 462 00:25:41,000 --> 00:25:45,000 issa jistenna ftit aktar rettangolari fejn wieħed mill-biċċiet tal-memorja 463 00:25:45,000 --> 00:25:47,000 huwa użat għal numru, bħall-numru 1, 464 00:25:47,000 --> 00:25:50,000 u mbagħad jekk dan Guy ħwienet n-numru 2, 465 00:25:50,000 --> 00:25:52,000 din blokki oħra ta 'memorja huwa użat għall-vleġġa, 466 00:25:52,000 --> 00:25:54,000 jew aktar konkret, pointer. 467 00:25:54,000 --> 00:25:59,000 U suppose I jaħżen in-numru 3 hawn fuq I filwaqt li jużaw dan il-punt f'dak il-Guy, 468 00:25:59,000 --> 00:26:02,000 u issa dan Guy, ejja nassumu I jridux biss 3 biċċiet bħal dawn ta 'memorja. 469 00:26:02,000 --> 00:26:05,000 I ser jiġbed linja permezz ta 'dan, jindikaw null. 470 00:26:05,000 --> 00:26:07,000 M'hemm l-ebda karattru addizzjonali. 471 00:26:07,000 --> 00:26:10,000 >> Tabilħaqq, dan huwa kif aħna tista 'tmur dwar implimentazzjoni 472 00:26:10,000 --> 00:26:12,000 xi ħaġa li sejjaħ lista marbuta. 473 00:26:12,000 --> 00:26:18,000 Lista marbuta hija struttura tad-data ġdida, u huwa sies lejn 474 00:26:18,000 --> 00:26:21,000 Strutturi ħafna fancier data li jibdew sabiex isolvu problemi 475 00:26:21,000 --> 00:26:23,000 skond il-linji ta 'Facebook tat-tip problemi u Google tat-tip problemi 476 00:26:23,000 --> 00:26:26,000 fejn inti jista 'jkollhom settijiet enormi ta' dejta, u ma għadux qatgħat li 477 00:26:26,000 --> 00:26:29,000 li jaħżen kollox contiguously u l-użu xi ħaġa bħal tfittxija lineari 478 00:26:29,000 --> 00:26:31,000 jew saħansitra xi ħaġa bħal tfittxija binarja. 479 00:26:31,000 --> 00:26:33,000 Inti tixtieq drabi anki aħjar running. 480 00:26:33,000 --> 00:26:37,000 Fil-fatt, wieħed mill-Grails Mqaddsa aħna ser nitkellmu dwar aktar tard din il-ġimgħa d-dieħla jew 481 00:26:37,000 --> 00:26:41,000 huwa algoritmu li taħdem il-ħin huwa kostanti. 482 00:26:41,000 --> 00:26:44,000 Fi kliem ieħor, dejjem jieħu l-istess ammont ta 'ħin ebda kwistjoni 483 00:26:44,000 --> 00:26:47,000 kemm hu kbir l-input huwa, u dan ikun jikkostitwixxi tabilħaqq konvinċenti, 484 00:26:47,000 --> 00:26:49,000 aktar minn hekk xi ħaġa logaritmika. 485 00:26:49,000 --> 00:26:51,000 X'inhu dan fuq l-iskrin hawn? 486 00:26:51,000 --> 00:26:55,000 Kull wieħed mill-rettangoli huwa eżattament dak I biss ġibdet bl-idejn. 487 00:26:55,000 --> 00:26:59,000 Imma l-ħaġa-triq kollha fuq ix-xellug hija varjabbli speċjali. 488 00:26:59,000 --> 00:27:02,000 Huwa ser tkun pointer wieħed minħabba li l-gotcha 1 489 00:27:02,000 --> 00:27:04,000 ma 'lista marbuta, kif dawn l-affarijiet huma msejħa, 490 00:27:04,000 --> 00:27:09,000 huwa li inti għandek hang fuq tarf wieħed tal-lista marbuta. 491 00:27:09,000 --> 00:27:13,000 >> Eżatt bħal ma string, inti għandek tkun taf l-indirizz ta 'l-char-ewwel. 492 00:27:13,000 --> 00:27:15,000 Jittrattaw Istess għal listi marbuta. 493 00:27:15,000 --> 00:27:19,000 Inti għandek tkun taf l-indirizz ta 'l-blokki 1 ta' memorja 494 00:27:19,000 --> 00:27:25,000 minħabba li minn hemm, inti tista 'tilħaq kull wieħed ieħor. 495 00:27:25,000 --> 00:27:27,000 Negattivi. 496 00:27:27,000 --> 00:27:30,000 Dak prezz huma aħna jħallsu għal dan versatilità li jkun dinamiku 497 00:27:30,000 --> 00:27:34,000 mdaqqsa struttura tad-data li jekk aħna qatt bżonn memorja aktar,, multa 498 00:27:34,000 --> 00:27:37,000 biss jallokaw 1 blokki aktar u jiġbed pointer minn 499 00:27:37,000 --> 00:27:39,000 l-qadima lill-tail-ġdid tal-lista? 500 00:27:39,000 --> 00:27:41,000 Yeah. 501 00:27:41,000 --> 00:27:43,000 [Istudenti] Huwa jieħu l-ispazju madwar darbtejn daqs. 502 00:27:43,000 --> 00:27:45,000 Huwa jieħu spazju doppju, b'tali mod li definittivament żvantaġġ, u Rajna dan 503 00:27:45,000 --> 00:27:48,000 tradeoff qabel bejn il-ħin u l-ispazju u l-flessibilità 504 00:27:48,000 --> 00:27:51,000 fejn minn issa, għandna bżonn mhux 32 bits għal kull wieħed minn dawn in-numri. 505 00:27:51,000 --> 00:27:57,000 Aħna verament bżonn 64, 32 għan-numru u 32 għall-pointer. 506 00:27:57,000 --> 00:27:59,000 Imma ħej, I għandhom 2 gigabytes ta 'RAM. 507 00:27:59,000 --> 00:28:02,000 Żieda oħra bits 32 hawn u hawn ma jidhirx li kbar ta 'ftehim. 508 00:28:02,000 --> 00:28:05,000 Iżda għal settijiet ta 'dejta kbar, huwa definittivament żżid sa litteralment doppju. 509 00:28:05,000 --> 00:28:09,000 X'hemm ieħor tnaqqis issa, jew dak karatteristika nistgħu jieqfu, 510 00:28:09,000 --> 00:28:12,000 jekk aħna jirrappreżentaw listi ta 'affarijiet ma' lista marbuta u mhux firxa? 511 00:28:12,000 --> 00:28:14,000 [Student] Inti ma tistax travers dan lura. 512 00:28:14,000 --> 00:28:16,000 Inti ma tistax travers dan lura, hekk int tip ta 'invitat jekk int mixi 513 00:28:16,000 --> 00:28:19,000 mix-xellug għal-lemin bl-użu ta loop għal jew loop filwaqt 514 00:28:19,000 --> 00:28:21,000 u allura inti tirrealizza, "Oh, nixtieq li jmorru lura għall-bidu tal-lista." 515 00:28:21,000 --> 00:28:26,000 Inti ma tistax għaliex dawn pointers biss jmorru mix-xellug għal-lemin bħala l-vleġeġ jindikaw. 516 00:28:26,000 --> 00:28:29,000 >> Issa, inti tista 'tiftakar il-bidu tal-lista ma' varjabbli, 517 00:28:29,000 --> 00:28:31,000 iżda li l-kumplessità li wieħed iżomm f'moħħu. 518 00:28:31,000 --> 00:28:35,000 Firxa, ma jimpurtax kemm inti tmur, inti tista 'dejjem tagħmel minus, minus, nieqes, nieqes 519 00:28:35,000 --> 00:28:37,000 u jmorru lura minn fejn ikun ġej iċ inti daħal. 520 00:28:37,000 --> 00:28:40,000 X'hemm ieħor isfel hawn? Yeah. 521 00:28:40,000 --> 00:28:43,000 [Kwistjoni student inaudible] 522 00:28:43,000 --> 00:28:47,000 Inti tista ', sabiex inti ħadthom attwalment biss ipproponiet struttura tad-data msejħa lista doppjament marbut, 523 00:28:47,000 --> 00:28:50,000 u fil-fatt, inti żid ieħor pointer għal kull wieħed minn dawn rettangoli 524 00:28:50,000 --> 00:28:53,000 li tmur-direzzjoni oħra, l-rasu li 525 00:28:53,000 --> 00:28:55,000 huwa issa inti tista 'travers quddiem u lura, 526 00:28:55,000 --> 00:28:59,000 l-tnaqqis ta 'li issa inti qed tuża tliet darbiet kemm memorja kif aħna użati biex 527 00:28:59,000 --> 00:29:04,000 u wkoll żżid il-kumplessità f'termini tal-kodiċi għandek tikteb biex tikseb dan id-dritt. 528 00:29:04,000 --> 00:29:08,000 Iżda dawn huma kollha forsi kompromessi raġonevoli ħafna, jekk il-qlib hija aktar importanti. 529 00:29:08,000 --> 00:29:10,000 Yeah. 530 00:29:10,000 --> 00:29:12,000 [Student] Inti wkoll ma tistax jkollhom lista marbuta 2D. 531 00:29:12,000 --> 00:29:16,000 Tajba, inti ma tistax verament jkollhom lista 2D marbuta. 532 00:29:16,000 --> 00:29:18,000 Inti tista '. Mhuwiex kważi faċli kif firxa. 533 00:29:18,000 --> 00:29:21,000 Bħal firxa, inti parentesi miftuħa, parentesi magħluqa, parentesi miftuħa, magħluqa parentesi, 534 00:29:21,000 --> 00:29:23,000 u ikollok xi struttura 2-dimensjonali. 535 00:29:23,000 --> 00:29:26,000 Inti tista 'timplimenta lista 2-dimensjonali marbuta 536 00:29:26,000 --> 00:29:29,000 jekk inti tagħmel add-kif inti propost-pointer 3 għal kull wieħed minn dawn l-affarijiet, 537 00:29:29,000 --> 00:29:34,000 u jekk taħseb dwar lista oħra li ġejjin fil int stil 3D 538 00:29:34,000 --> 00:29:40,000 mill-iskrin li lkoll, li huwa biss ieħor katina ta 'xi tip. 539 00:29:40,000 --> 00:29:45,000 Nistgħu nagħmlu dan, iżda mhux sempliċi kemm ittajpjar parentesi miftuħa, parentesi kwadri. Yeah. 540 00:29:45,000 --> 00:29:48,000 [Kwistjoni student inaudible] 541 00:29:48,000 --> 00:29:50,000 Tajba, għalhekk din hija kicker reali. 542 00:29:50,000 --> 00:29:54,000 >> Dawn algoritmi li konna pined fuq, bħall-oh, tfittxija binarja, 543 00:29:54,000 --> 00:29:57,000 inti tista 'tfittex firxa ta' numri fuq il-bord 544 00:29:57,000 --> 00:30:01,000 jew ktieb tat-telefon tant aktar malajr jekk inti tuża taqsam u conquer 545 00:30:01,000 --> 00:30:05,000 u algoritmu tfittxija binarja, iżda tfittxija binarja meħtieġa żewġ assunzjonijiet. 546 00:30:05,000 --> 00:30:09,000 Wieħed, li d-data kienet magħżula. 547 00:30:09,000 --> 00:30:11,000 Issa, nistgħu preżumibbilment żżomm din magħżula, 548 00:30:11,000 --> 00:30:14,000 hekk forsi li mhux ta 'tħassib, iżda tfittxija binarja wkoll preżunt 549 00:30:14,000 --> 00:30:18,000 li kellek l-aċċess bl-addoċċ għal-lista ta 'numri, 550 00:30:18,000 --> 00:30:21,000 u l-firxa jippermettilek li jkollhom aċċess bl-addoċċ, u billi l-aċċess bl-addoċċ, 551 00:30:21,000 --> 00:30:24,000 I tfisser jekk inti qed tingħata firxa, kemm ħin ma tieħu inti 552 00:30:24,000 --> 00:30:26,000 biex jiksbu l parentesi 0? 553 00:30:26,000 --> 00:30:29,000 Operazzjoni waħda, inti biss użu [0] u int hemm dritt. 554 00:30:29,000 --> 00:30:33,000 Kemm passi ma jieħdu biex jiksbu l-post 10? 555 00:30:33,000 --> 00:30:36,000 Pass, inti biss tmur [10] u int hemm. 556 00:30:36,000 --> 00:30:40,000 B'kuntrast, kif tista 'tikseb l-eqreb numru sħiħ 10 f'lista marbut? 557 00:30:40,000 --> 00:30:42,000 Int għandek tibda fil-bidu għax int biss ftakar 558 00:30:42,000 --> 00:30:45,000 il-bidu ta 'lista marbuta, bħal string qed mfakkar 559 00:30:45,000 --> 00:30:48,000 mill-indirizz ta 'char ewwel, u tikkonstata li int 10 560 00:30:48,000 --> 00:30:53,000 jew li l-karattru 10 fil string, inti għandek tfittex l-ħaġa kkritikat kollu. 561 00:30:53,000 --> 00:30:55,000 >> Għal darb'oħra, aħna mhux qed jsolvu l-problemi tagħna. 562 00:30:55,000 --> 00:31:00,000 Aħna introdotti oħrajn ġodda, iżda huwa verament jiddependi fuq dak li qed tipprova li disinn għall. 563 00:31:00,000 --> 00:31:04,000 F'termini ta 'implimentazzjoni ta' dan, nistgħu jissellef idea minn dik l-istruttura student. 564 00:31:04,000 --> 00:31:07,000 Is-sintassi hija simili ħafna, ħlief issa, l-idea hija ftit aktar astratti 565 00:31:07,000 --> 00:31:09,000 minn dar u l-isem u l-ID. 566 00:31:09,000 --> 00:31:13,000 Imma jiena nipproponi li jista 'jkollna struttura tad-data fis-C 567 00:31:13,000 --> 00:31:17,000 li huwa msejjaħ node, kif l-aħħar kelma fuq il-pjastra jissuġġerixxi, 568 00:31:17,000 --> 00:31:21,000 ġewwa ta 'node, u node huwa biss kontenitur ġeneriku fix-xjenza tal-kompjuter. 569 00:31:21,000 --> 00:31:25,000 Huwa ġeneralment imfassal bħala ċirku jew kwadra jew rettangolari kif aħna ghamilt. 570 00:31:25,000 --> 00:31:27,000 U f'din l-istruttura tad-data, għandna int, n, 571 00:31:27,000 --> 00:31:29,000 b'tali mod li n-numru Irrid li taħżen. 572 00:31:29,000 --> 00:31:36,000 Imma dak li huwa dan it-tieni linja, Struct node * jmiss? 573 00:31:36,000 --> 00:31:40,000 Għaliex dan korretta, jew liema rwol ma dan play ħaġa, 574 00:31:40,000 --> 00:31:42,000 anki jekk huwa ftit cryptic ewwel daqqa t'għajn? 575 00:31:42,000 --> 00:31:44,000 Yeah. 576 00:31:44,000 --> 00:31:46,000 [Rispons istudent inaudible] 577 00:31:46,000 --> 00:31:50,000 Eżattament, sabiex il-tip ta '* gamgmu li huwa pointer ta' xi tip. 578 00:31:50,000 --> 00:31:53,000 L-isem ta 'dan il-werrej huwa arbitrarju li jmiss, 579 00:31:53,000 --> 00:32:00,000 iżda nistgħu qalu li din ħaġa li rridu, imma dak ma dan il-punt pointer li? 580 00:32:00,000 --> 00:32:03,000 [Student] Ieħor node. >> Eżattament, hija tirreferi għall-ieħor node bħal din. 581 00:32:03,000 --> 00:32:05,000 >> Issa, dan huwa tip ta 'kurżità ta' C. 582 00:32:05,000 --> 00:32:09,000 Ifakkar li C tinqara minn top kompilatur għal isfel, xellug għal-lemin, 583 00:32:09,000 --> 00:32:13,000 li jfisser li jekk 'dan huwa xi ftit differenti minn dak li għamilna mal-istudent. 584 00:32:13,000 --> 00:32:16,000 Meta aħna definit student, aħna fil-fatt ma poġġiex kelma hemmhekk. 585 00:32:16,000 --> 00:32:18,000 Hija biss qal typedef. 586 00:32:18,000 --> 00:32:20,000 Imbagħad kellna int id, spag isem, spag dar, 587 00:32:20,000 --> 00:32:23,000 u mbagħad student fil-qiegħ ta 'l-Struct. 588 00:32:23,000 --> 00:32:26,000 Din id-dikjarazzjoni huwa xi ftit differenti għaliex, 589 00:32:26,000 --> 00:32:28,000 għal darb'oħra, il-kompilatur C hija ftit mutu. 590 00:32:28,000 --> 00:32:30,000 Huwa biss ser jaqra fuq għal isfel, 591 00:32:30,000 --> 00:32:33,000 hekk jekk jilħaq il-linja 2 hawn 592 00:32:33,000 --> 00:32:37,000 fejn jmiss huwa ddikjarat u jara, oh, hawnhekk varjabbli imsejjaħ jmiss. 593 00:32:37,000 --> 00:32:39,000 Huwa pointer għal node Struct. 594 00:32:39,000 --> 00:32:42,000 Il-kompilatur se realizzata dak li huwa node Struct? 595 00:32:42,000 --> 00:32:44,000 Stajt qatt semgħu dan il-ħaġa qabel, 596 00:32:44,000 --> 00:32:47,000 minħabba li l-node kelma ma jista 'inkella jidhru 597 00:32:47,000 --> 00:32:49,000 sakemm il-qiegħ, sabiex ikun hemm din redundancy. 598 00:32:49,000 --> 00:32:53,000 Int għandek tgħid node Struct hawn, li inti tista 'mbagħad tqassar aktar tard 599 00:32:53,000 --> 00:32:56,000 grazzi għall typedef isfel hawn, iżda dan huwa minħabba 600 00:32:56,000 --> 00:33:02,000 aħna referenzar l-istruttura nnifisha ġewwa tal-istruttura. 601 00:33:02,000 --> 00:33:05,000 Dik hija l-gotcha waħda hemm. 602 00:33:05,000 --> 00:33:07,000 >> Xi problemi interessanti ser jinqalgħu. 603 00:33:07,000 --> 00:33:09,000 Imxejna ltqajna lista ta 'numri. Kif nistgħu daħħal fis dan? 604 00:33:09,000 --> 00:33:11,000 Kif nistgħu tfittxija dan? Kif nistgħu tħassar minnha? 605 00:33:11,000 --> 00:33:13,000 Speċjalment issa li għandna biex jimmaniġġjaw kollha ta 'dawn pointers. 606 00:33:13,000 --> 00:33:15,000 Int ħsibt pointers kienu tip ta 'mind-liwi 607 00:33:15,000 --> 00:33:17,000 meta kellek waħda minnhom biss tipprova li jaqra int lilha. 608 00:33:17,000 --> 00:33:20,000 Issa għandna biex jimmanipulaw jiswew lista sħiħa tal. 609 00:33:20,000 --> 00:33:22,000 Għaliex ma nieħdu 5-minuta break tagħna hawn, u allura aħna ser iġibu 610 00:33:22,000 --> 00:33:34,000 xi folks sa fuq il-palk biex jagħmlu eżattament dan. 611 00:33:34,000 --> 00:33:36,000 >> C hu gost ħafna aktar meta huwa aġixxa out. 612 00:33:36,000 --> 00:33:39,000 Min litteralment jixtieq li jkun l-ewwel? 613 00:33:39,000 --> 00:33:41,000 Okay, come fuq up. Inti l-ewwel. 614 00:33:41,000 --> 00:33:44,000 Min jixtieq li jkun 9? Okay, 9. 615 00:33:44,000 --> 00:33:46,000 Kif dwar 9? 17? 616 00:33:46,000 --> 00:33:51,000 A clique ftit hawn. 22 u 26 f'dak ringiela ta 'quddiem. 617 00:33:51,000 --> 00:33:53,000 U allura kif madwar xi ħadd hemmhekk li qed mfakkar fil. 618 00:33:53,000 --> 00:33:57,000 You are 34. Okay, 34, come fuq up. 619 00:33:57,000 --> 00:33:59,000 L-ewwel huwa hemmhekk. Okay, l-erba 'inti guys. 620 00:33:59,000 --> 00:34:01,000 U li ma aħna ngħidu għal 9? 621 00:34:01,000 --> 00:34:04,000 Min hu 9 tagħna? 622 00:34:04,000 --> 00:34:07,000 Min verament jixtieq li jkun 9? Kull dritt, jaqgħu fuq, ikunu 9. 623 00:34:07,000 --> 00:34:10,000 Here we go. 624 00:34:10,000 --> 00:34:13,000 34, aħna ser jissodisfaw inti hemmhekk. 625 00:34:13,000 --> 00:34:17,000 L-ewwel parti hija tagħmel infuskom look bħal dik. 626 00:34:17,000 --> 00:34:21,000 26, 22, 17, tajba. 627 00:34:21,000 --> 00:34:25,000 Jekk inti tista 'toqgħod barra għall-ġenb, għaliex aħna qed tmur biex malloc inti fil-mument. 628 00:34:25,000 --> 00:34:29,000 >> Tajba, tajba. 629 00:34:29,000 --> 00:34:32,000 Okay, eċċellenti, sabiex ejja jistaqsu ftit mistoqsijiet hawn. 630 00:34:32,000 --> 00:34:34,000 U fil-fatt, dak l-isem tiegħek? >> Anita. 631 00:34:34,000 --> 00:34:37,000 Anita, okay, come fuq matul hawn. 632 00:34:37,000 --> 00:34:41,000 Anita se tgħinna tip ta issolvi mistoqsija waħda pjuttost sempliċi fl-ewwel, 633 00:34:41,000 --> 00:34:44,000 li hija kif taħseb li ssib jekk jew le il-valur huwa fil-lista? 634 00:34:44,000 --> 00:34:48,000 Issa, avviż li l-ewwel, irrappreżentata hawn minn Lucas, 635 00:34:48,000 --> 00:34:52,000 huwa xi ftit differenti, u għalhekk il-biċċa tiegħu ta 'karta hija deliberatament ġenb 636 00:34:52,000 --> 00:34:55,000 għaliex mhuwiex daqshekk twil u ma jieħu bħala bits ħafna, 637 00:34:55,000 --> 00:34:58,000 anke jekk teknikament huwa għandu l-istess daqs ta 'karta biss jiddawwar. 638 00:34:58,000 --> 00:35:01,000 Imma hu ftit differenti li hu biss 32 bits għal pointer, 639 00:35:01,000 --> 00:35:05,000 u kollha ta 'dawn guys huma 64 bits, nofs li hija l-għadd, li nofshom huwa pointer. 640 00:35:05,000 --> 00:35:08,000 Iżda l-pointer ma jkunx mpinġi, hekk jekk inti guys tista kemmxejn awkwardly 641 00:35:08,000 --> 00:35:12,000 użu tax-xellug tiegħek għall-punt lejn il-persuna li jmiss lilek. 642 00:35:12,000 --> 00:35:14,000 U int numru 34. X'hemm isem tiegħek? 643 00:35:14,000 --> 00:35:16,000 Ari. 644 00:35:16,000 --> 00:35:19,000 Ari, hekk fil-fatt, żomm il-karta fil-lemin tiegħek, u naħa tax-xellug tmur dritta stabbiliti. 645 00:35:19,000 --> 00:35:21,000 Inti jirrappreżentaw null fuq ix-xellug. 646 00:35:21,000 --> 00:35:24,000 >> Issa stampa bniedem tagħna huwa ferm konsistenti. 647 00:35:24,000 --> 00:35:26,000 Dan huwa attwalment kif pointers jaħdmu. 648 00:35:26,000 --> 00:35:29,000 U jekk inti tista scrunch ftit b'dan il-mod hekk jien mhux fil-mod tiegħek. 649 00:35:29,000 --> 00:35:34,000 Anita hawn, issib lili n-numru 22, 650 00:35:34,000 --> 00:35:40,000 iżda tassumi limitu ta 'mhux bnedmin impriża agrikola tiegħu sal biċċiet tal-karti, 651 00:35:40,000 --> 00:35:43,000 iżda din hija lista, u inti biss għandek Lucas li tibda bil 652 00:35:43,000 --> 00:35:46,000 minħabba li hu litteralment l-pointer ewwel. 653 00:35:46,000 --> 00:35:51,000 Ejja ngħidu inti stess huma pointer, u għalhekk inti wisq għandhom il-ħila għall-punt fuq xi ħaġa. 654 00:35:51,000 --> 00:35:56,000 Għaliex ma tibda bil tipponta lejn eżattament dak Lucas hija li tipponta lejn? 655 00:35:56,000 --> 00:35:58,000 Tajba, u let me jippromulgaw din out hawn fuq. 656 00:35:58,000 --> 00:36:04,000 Biss għall-fini ta 'diskussjoni, let me pull up paġna vojta hawn. 657 00:36:04,000 --> 00:36:06,000 Kif inti jespliċitaw isem tiegħek? >> Anita. 658 00:36:06,000 --> 00:36:08,000 Okay, Anita. 659 00:36:08,000 --> 00:36:18,000 Ejja ngħidu node * Anita = Lucas. 660 00:36:18,000 --> 00:36:22,000 Ukoll, aħna ma għandhom sejħa inti Lucas. Għandna sejħa inti l-ewwel. 661 00:36:22,000 --> 00:36:25,000 Għaliex dan fil-fatt konsistenti mar-realtà hawn? 662 00:36:25,000 --> 00:36:27,000 Wieħed, l-ewwel diġà jeżisti. 663 00:36:27,000 --> 00:36:30,000 L-ewwel ġie allokat preżumibbilment x'imkien up here. 664 00:36:30,000 --> 00:36:35,000 Node * 1, u huwa kien allokat lista b'xi. 665 00:36:35,000 --> 00:36:37,000 I do not know kif dan ġara. Dan ġara beda klassi qabel. 666 00:36:37,000 --> 00:36:40,000 Din il-lista marbuta mill-bnedmin ġiet maħluqa. 667 00:36:40,000 --> 00:36:44,000 U issa f'dan il-punt fl-istorja-din hija kollha għaddej fuq Facebook apparentement iktar tard 668 00:36:44,000 --> 00:36:49,000 f'dan il-punt fl-istorja, Anita kienet initialized li jkun daqs l-ewwel, 669 00:36:49,000 --> 00:36:51,000 li ma jfissirx li l-punti Anita fuq Lucas. 670 00:36:51,000 --> 00:36:53,000 Pjuttost, hija tindika fuq liema huwa jinnota bi 671 00:36:53,000 --> 00:36:57,000 minħabba li l-istess indirizz li l-ġewwa ta 'Lucas s 32 bit - 1, 2, 3 - 672 00:36:57,000 --> 00:37:01,000 huwa issa wkoll ġewwa tal Anita s 32 bit - 1, 2, 3. 673 00:37:01,000 --> 00:37:05,000 >> Issa isibu 22. Kif inti tmur dwar kif isir dan? 674 00:37:05,000 --> 00:37:07,000 X'hemm li Point? >> Għal dak kollu. 675 00:37:07,000 --> 00:37:11,000 Punt li kwalunkwe, sabiex jimxi 'l quddiem u jaġixxu out bħala l-aħjar tista' hawn. 676 00:37:11,000 --> 00:37:15,000 Tajba, tajba, u issa int tipponta lejn 'x'hemm isem tiegħek bi 22? 677 00:37:15,000 --> 00:37:18,000 Ramon. >> Ramon, hekk Ramon qed tirnexxi 22. 678 00:37:18,000 --> 00:37:20,000 Inti issa għamlu verifika. 679 00:37:20,000 --> 00:37:24,000 Ma Ramon == 22, u jekk iva, per eżempju, nistgħu ritorn vera. 680 00:37:24,000 --> 00:37:26,000 Let me-waqt li dawn guys stand hawn kemmxejn awkwardly- 681 00:37:26,000 --> 00:37:32,000 let me tagħmel xi ħaġa malajr bħal bool ssib. 682 00:37:32,000 --> 00:37:37,000 Jien ser jimxi 'l quddiem u ngħid (node ​​* lista, int n). 683 00:37:37,000 --> 00:37:39,000 I ser tkun dritt lura miegħek guys. I biss għandhom jiktbu xi kodiċi. 684 00:37:39,000 --> 00:37:45,000 U issa jien se jimxi 'l quddiem u jagħmlu dan, node * Anita = lista. 685 00:37:45,000 --> 00:37:51,000 U jien ser jimxi 'l quddiem u ngħid filwaqt li (Anita! = NULL). 686 00:37:51,000 --> 00:37:57,000 >> Il-metafora hawn huwa jkollna ftit stirati, iżda filwaqt li (Anita! = NULL), dak li nixtieq do? 687 00:37:57,000 --> 00:38:03,000 I bżonn xi mod ta 'referenzar 688 00:38:03,000 --> 00:38:05,000 l-eqreb numru sħiħ li Anita hija li tipponta lejn. 689 00:38:05,000 --> 00:38:08,000 Fil-passat, meta kellna l-istrutturi, li node huwa, 690 00:38:08,000 --> 00:38:11,000 użajna l-notazzjoni dot, u aħna ngħid xi ħaġa simili 691 00:38:11,000 --> 00:38:15,000 anita.n, iżda l-problema hawn hija li Anita mhix Struct per se. 692 00:38:15,000 --> 00:38:17,000 X'inhu hi? 693 00:38:17,000 --> 00:38:21,000 Hi tal pointer, sabiex verament, jekk irridu li jużaw dan dot notazzjoni- 694 00:38:21,000 --> 00:38:23,000 u dan se tħares deliberatament ftit cryptic- 695 00:38:23,000 --> 00:38:28,000 għandna nagħmlu xi ħaġa simili tmur xellug kwalunkwe Anita hija li tipponta lejn 696 00:38:28,000 --> 00:38:31,000 u mbagħad jiksbu l-qasam imsejħa n. 697 00:38:31,000 --> 00:38:35,000 Anita huwa pointer, imma dak li hu * Anita? 698 00:38:35,000 --> 00:38:38,000 What do issib meta inti tmur għal dak Anita hija li tipponta lejn? 699 00:38:38,000 --> 00:38:42,000 A Struct, node, u node, lura, għandha kamp msejħa n 700 00:38:42,000 --> 00:38:47,000 minħabba li, wieħed jiftakar, f'dawn l-oqsma 2, li jmiss u n- 701 00:38:47,000 --> 00:38:50,000 li rajna mument ilu dritt hawn. 702 00:38:50,000 --> 00:38:53,000 >> Biex attwalment jimitaw dan il-kodiċi, 703 00:38:53,000 --> 00:39:02,000 stajna nagħmlu dan u jgħidu jekk ((* Anita). n == n), il-n li jien infittxu. 704 00:39:02,000 --> 00:39:04,000 Avviż li l-funzjoni kienet għaddiet fl-għadd I jimpurtahom. 705 00:39:04,000 --> 00:39:10,000 Imbagħad I tista 'tmur quddiem u tagħmel xi ħaġa simili ritorn vera. 706 00:39:10,000 --> 00:39:12,000 Inkella, jekk dan mhux il-każ, dak li nixtieq do? 707 00:39:12,000 --> 00:39:19,000 Kif nista jissarraf kodiċi dak Anita għamlu dan intuwittivament bil-mixi permezz tal-lista? 708 00:39:19,000 --> 00:39:26,000 X'għandi nagħmel up hawn biex jissimulaw Anita tieħu dak il-pass lejn ix-xellug, dak il-pass lejn ix-xellug? 709 00:39:26,000 --> 00:39:28,000 [Inaudible student rispons] >> X'hemm li? 710 00:39:28,000 --> 00:39:30,000 [Rispons istudent inaudible] 711 00:39:30,000 --> 00:39:34,000 Tajba, mhux idea ħażina, iżda fil-passat, meta aħna ghamilt dan, aħna ghamilt Anita + + 712 00:39:34,000 --> 00:39:37,000 minħabba li jżid in-numru 1 sa Anita, 713 00:39:37,000 --> 00:39:40,000 li tipikament punt fuq il-persuna li jmiss, bħal Ramon, 714 00:39:40,000 --> 00:39:44,000 jew il-persuna li jmiss lilu, jew dak li jmiss lilu persuna tistabbilixxi l-linja. 715 00:39:44,000 --> 00:39:49,000 Iżda li mhux pjuttost tajba hawn għax dan xi ħaġa look like fil-memorja? 716 00:39:49,000 --> 00:39:54,000 Mhux li. Irridu jiskonnettja dak. 717 00:39:54,000 --> 00:40:00,000 Jidher qisu dan fil-memorja, u anki jekk stajt mfassla 1 u 2 u 3 qrib xulxin, 718 00:40:00,000 --> 00:40:03,000 jekk aħna verament simulata din tista 'inti guys-, waqt li jkunu għadhom tipponta lejn l-istess nies, 719 00:40:03,000 --> 00:40:07,000 jista 'xi wħud minnkom tieħu lura pass każwali, xi wħud minnkom pass każwali quddiem? 720 00:40:07,000 --> 00:40:10,000 >> Dan mess għadu lista marbuta, 721 00:40:10,000 --> 00:40:13,000 imma dawn guys jista 'jkun kullimkien fil-memorja, 722 00:40:13,000 --> 00:40:15,000 hekk Anita + + mhux sejjer jaħdem għaliex? 723 00:40:15,000 --> 00:40:19,000 X'hemm fil-post Anita + +? 724 00:40:19,000 --> 00:40:21,000 Min jaf. 725 00:40:21,000 --> 00:40:24,000 Huwa xi valur ieħor li biss hekk jiġri li jkun tintervjeni 726 00:40:24,000 --> 00:40:28,000 fost kollha ta 'dawn in-nodi b'kumbinazzjoni għaliex aħna ma tkunx qed tużah firxa. 727 00:40:28,000 --> 00:40:30,000 Aħna allokat kull wieħed minn dawn in-nodi individwalment. 728 00:40:30,000 --> 00:40:32,000 Okay, jekk inti guys tista 'tnaddaf infuskom back up. 729 00:40:32,000 --> 00:40:37,000 Let me tipproponi li minflok Anita + +, aħna minflok nagħmlu Anita gets- 730 00:40:37,000 --> 00:40:42,000 ukoll, għaliex ma immorru kwalunkwe Anita hija li tipponta lejn u mbagħad do. jmiss? 731 00:40:42,000 --> 00:40:45,000 Fi kliem ieħor, immorru Ramon, li l-azjenda in-numru 22, 732 00:40:45,000 --> 00:40:51,000 u mbagħad. hija li jmiss bħallikieku Anita ikun ikkupjar pointer tiegħu naħa tax-xellug. 733 00:40:51,000 --> 00:40:54,000 Iżda hi ma tmurx aktar il-bogħod minn Ramon għaliex sibna 22. 734 00:40:54,000 --> 00:40:56,000 Imma dan ikun l-idea. Issa, dan huwa mess god-orribbli. 735 00:40:56,000 --> 00:40:59,000 Onestament, ħadd qatt ser jiftakar dan sintassi, u għalhekk Thankfully, 736 00:40:59,000 --> 00:41:04,000 huwa attwalment ftit deliberat-oh, inti ma attwalment tara dak I kiteb. 737 00:41:04,000 --> 00:41:08,000 Dan ikun aktar konvinċenti jekk inti tista '. Voila! 738 00:41:08,000 --> 00:41:10,000 >> Wara l-kwinti, I kien isolvi l-problema b'dan il-mod. 739 00:41:10,000 --> 00:41:14,000 Anita, li tieħu dak il-pass lejn ix-xellug, 740 00:41:14,000 --> 00:41:18,000 1, nagħmlu mur l-indirizz li Anita hija li tipponta lejn 741 00:41:18,000 --> 00:41:23,000 u fejn hi ser issib mhux biss n, li aħna biss ċċekkjati għall-finijiet paragun, l- 742 00:41:23,000 --> 00:41:25,000 imma se ssib ukoll jmiss - f'dan il-każ, 743 00:41:25,000 --> 00:41:28,000 Naħa tax-xellug Ramon s tipponta lejn il-node li jmiss fil-lista. 744 00:41:28,000 --> 00:41:32,000 Iżda dan huwa l-mess god-orribbli li għalih irreferejt qabel, 745 00:41:32,000 --> 00:41:34,000 iżda jirriżulta C tikri us jissimplifikaw dan. 746 00:41:34,000 --> 00:41:40,000 Minflok tal-kitba (* Anita), nistgħu minflok biss jiktbu Anita-> n, 747 00:41:40,000 --> 00:41:45,000 u huwa l-istess ħaġa eżatt funzjonalment, iżda huwa ħafna aktar intuwittiv, 748 00:41:45,000 --> 00:41:48,000 u huwa ħafna aktar konsistenti ma 'l-istampa li aħna kont qed tfassal 749 00:41:48,000 --> 00:41:50,000 dan iż-żmien bl-użu vleġeġ. 750 00:41:50,000 --> 00:41:57,000 >> Fl-aħħar nett, dak li għandna bżonn tagħmel fl-aħħar ta 'dan il-programm? 751 00:41:57,000 --> 00:42:00,000 Hemm linja waħda tal-kodiċi li jifdal. 752 00:42:00,000 --> 00:42:02,000 Ritorn liema? 753 00:42:02,000 --> 00:42:05,000 Foloz, għaliex jekk irridu jiksbu permezz-sħiħ filwaqt loop 754 00:42:05,000 --> 00:42:10,000 u Anita, fil-fatt, null, dan ifisser hija marret it-triq kollha sa l-aħħar tal-lista 755 00:42:10,000 --> 00:42:12,000 fejn kienet tipponta lejn 'x'hemm isem tiegħek mill-ġdid? 756 00:42:12,000 --> 00:42:15,000 Naħa tax-xellug Ari. >> Ari, li huwa null. 757 00:42:15,000 --> 00:42:18,000 Anita issa hija nulla, u I realizzata int biss permanenti hawn awkwardly fil-limbu 758 00:42:18,000 --> 00:42:21,000 għaliex jien ser off fuq monologue hawn, 759 00:42:21,000 --> 00:42:23,000 iżda aħna ser jinvolvu inti ġdid fi ftit mument. 760 00:42:23,000 --> 00:42:27,000 Anita huwa null f'dak il-punt fl-istorja, hekk il-linja waqt itemm, 761 00:42:27,000 --> 00:42:30,000 u għandna biex jirritorna foloz għaliex jekk qabbdet triq kollha lejn pointer null Ari s 762 00:42:30,000 --> 00:42:34,000 allura ma kien hemm ebda numru li hi mfittxija fil-lista. 763 00:42:34,000 --> 00:42:39,000 Nistgħu tnaddaf dan up wisq, iżda dan huwa implimentazzjoni pjuttost tajba allura 764 00:42:39,000 --> 00:42:43,000 ta 'funzjoni traversal, a isibu funzjoni għal lista marbuta. 765 00:42:43,000 --> 00:42:48,000 Huwa għadu tfittxija lineari, iżda mhux sempliċi kemm + + pointer 766 00:42:48,000 --> 00:42:52,000 jew + + varjabbli i għaliex issa ma nistgħux raden 767 00:42:52,000 --> 00:42:54,000 fejn kull wieħed minn dawn in-nodi huma fil-memorja. 768 00:42:54,000 --> 00:42:57,000 Irridu litteralment isegwu l-traċċa ta 'frak tal-ħobż jew, b'mod iktar speċifiku, 769 00:42:57,000 --> 00:43:00,000 pointers, biex jiksbu minn node għall-ieħor. 770 00:43:00,000 --> 00:43:02,000 >> Issa ejja pprova ieħor. Anita, tridu li jiġu lura hawn? 771 00:43:02,000 --> 00:43:06,000 Għaliex ma we imorru quddiem u jallokaw persuna waħda oħra mill-udjenza? 772 00:43:06,000 --> 00:43:08,000 Malloc-x'hemm isem tiegħek? >> Rebecca. 773 00:43:08,000 --> 00:43:10,000 Rebecca. Rebecca ġie malloced mill-udjenza, 774 00:43:10,000 --> 00:43:13,000 u hija issa ħażna n-numru 55. 775 00:43:13,000 --> 00:43:17,000 U l-għan fil-idejn issa huwa għall Anita li daħħal 776 00:43:17,000 --> 00:43:22,000 Rebecca fil-lista marbuta hawn fil-post xieraq tagħha. 777 00:43:22,000 --> 00:43:24,000 Come fuq matul hawn għal mument. 778 00:43:24,000 --> 00:43:28,000 I għamlu xi ħaġa bħal din. 779 00:43:28,000 --> 00:43:32,000 I għamlu * node. U x'hemm isem tiegħek mill-ġdid? 780 00:43:32,000 --> 00:43:34,000 Rebecca. >> Rebecca, okay. 781 00:43:34,000 --> 00:43:41,000 Rebecca gets malloc (sizeof (node)). 782 00:43:41,000 --> 00:43:44,000 Eżatt bħal għandna allokati affarijiet simili studenti u whatnot fil-passat, 783 00:43:44,000 --> 00:43:46,000 għandna bżonn l-daqs tal-node, hekk issa Rebecca 784 00:43:46,000 --> 00:43:49,000 hija li tipponta lejn dak? 785 00:43:49,000 --> 00:43:52,000 Rebecca għandha żewġ oqsma ġewwa tal tagħha, li waħda minnhom hija 55. 786 00:43:52,000 --> 00:43:55,000 Ejja nagħmlu dak, Rebecca '> = 55. 787 00:43:55,000 --> 00:44:00,000 Iżda mbagħad Rebecca '> jmiss għandu jkun-like dritt issa, minn naħa tagħha hija tip ta' min jaf? 788 00:44:00,000 --> 00:44:03,000 Huwa tipponta lejn xi valur żibel, hekk għaliex ma għal miżura tajba 789 00:44:03,000 --> 00:44:07,000 aħna l-inqas jagħmlu dan b'tali mod li naħa tax-xellug hija issa fil-ġenb tagħha. 790 00:44:07,000 --> 00:44:09,000 Issa Anita, teħodha minn hawn. 791 00:44:09,000 --> 00:44:11,000 Inti għandek Rebecca li ġew allokati. 792 00:44:11,000 --> 00:44:20,000 Jimxi 'l quddiem u ssib fejn għandna jitqiegħdu Rebecca. 793 00:44:20,000 --> 00:44:25,000 Tajba, tajba ħafna. 794 00:44:25,000 --> 00:44:28,000 Okay, tajba, u issa għandna bżonn li inti tipprovdi daqsxejn ta 'direzzjoni, 795 00:44:28,000 --> 00:44:30,000 sabiex inti ħadthom laħaq Ari. 796 00:44:30,000 --> 00:44:33,000 Naħa tax-xellug tiegħu huwa null, iżda Rebecca b'mod ċar jappartjeni għad-dritt, 797 00:44:33,000 --> 00:44:36,000 hekk kif nistgħu jkollhom ibiddlu din il-lista marbuta 798 00:44:36,000 --> 00:44:38,000 sabiex jiddaħħal Rebecca fil-post xieraq? 799 00:44:38,000 --> 00:44:42,000 Jekk inti tista litteralment jimxu idejk xellug tan-nies madwar kif meħtieġ, 800 00:44:42,000 --> 00:44:48,000 aħna ser tiffissa l-problema li mod. 801 00:44:48,000 --> 00:44:52,000 Okay, tajba, u sadanittant, naħa tax-xellug Rebecca huwa issa minn naħa tagħha. 802 00:44:52,000 --> 00:44:54,000 >> Dan kien faċli wisq. 803 00:44:54,000 --> 00:44:57,000 Ejja nippruvaw allokazzjoni-we're kważi isir, 20. 804 00:44:57,000 --> 00:44:59,000 Okay, come fuq up. 805 00:44:59,000 --> 00:45:04,000 20 tkun ġiet allokata, so let me imorru quddiem u ngħid għal darb'oħra hawn 806 00:45:04,000 --> 00:45:07,000 konna biss isir Saad * node. 807 00:45:07,000 --> 00:45:11,000 Għandna malloc (sizeof (node)). 808 00:45:11,000 --> 00:45:16,000 Aħna mbagħad tagħmel l-sintassi eżatt l-istess kif għamilna qabel għal 20, 809 00:45:16,000 --> 00:45:20,000 u jien ser tagħmel li jmiss = NULL, u issa huwa sa Anita 810 00:45:20,000 --> 00:45:23,000 li daħħal inti fil-lista marbuta, jekk inti tista 'tilgħab l-irwol istess eżatt. 811 00:45:23,000 --> 00:45:30,000 Teżegwixxi. 812 00:45:30,000 --> 00:45:32,000 Okay, tajba. 813 00:45:32,000 --> 00:45:38,000 Issa taħseb sew qabel tibda miexja l-idejn xellug madwar. 814 00:45:38,000 --> 00:45:46,000 Inti bil-bosta ltqajna l-irwol aktar strambi illum. 815 00:45:46,000 --> 00:45:59,000 Li idejn għandhom ikunu mċaqilqa ewwel? 816 00:45:59,000 --> 00:46:02,000 Okay, stenna, jien seduta xi s no. 817 00:46:02,000 --> 00:46:07,000 Jekk xi folks se politely tixtieq tgħin issolvi sitwazzjoni skomda hawn. 818 00:46:07,000 --> 00:46:11,000 Naħa tax-xellug Li għandhom jiġu aġġornati 1 forsi? Yeah. 819 00:46:11,000 --> 00:46:13,000 [Student] s Saad. 820 00:46:13,000 --> 00:46:15,000 Okay, l-Saad, għaliex, għalkemm? 821 00:46:15,000 --> 00:46:17,000 [Rispons istudent inaudible] 822 00:46:17,000 --> 00:46:19,000 Tajba, għaliex jekk nimxu 'dak l-isem tiegħek? >> Marshall. 823 00:46:19,000 --> 00:46:22,000 Marshall, jekk nimxu naħa tiegħu l-ewwel sa null, 824 00:46:22,000 --> 00:46:25,000 issa għandna litteralment orfni erba 'persuni f'din il-lista 825 00:46:25,000 --> 00:46:29,000 għaliex kien l-unika ħaġa li tipponta lejn Ramon u kulħadd lejn ix-xellug, 826 00:46:29,000 --> 00:46:31,000 sabiex taġġorna l pointer ewwel kienet ħażina. 827 00:46:31,000 --> 00:46:33,000 Ejja teqred dan. 828 00:46:33,000 --> 00:46:37,000 Tajba, u issa imorru quddiem u jimxu l-naħa tax-xellug xieraq tipponta lejn Ramon. 829 00:46:37,000 --> 00:46:39,000 Dan tħoss żejda ftit. 830 00:46:39,000 --> 00:46:41,000 Issa hemm żewġ persuni li tipponta lejn Ramon, iżda li l-multa 831 00:46:41,000 --> 00:46:43,000 għaliex issa kif inkella nistgħu taġġorna l-lista? 832 00:46:43,000 --> 00:46:48,000 Liema naħa l-oħra trid timxi? 833 00:46:48,000 --> 00:46:53,000 Eċċellenti, issa għandhom aħna mitlufa xi memorja? 834 00:46:53,000 --> 00:46:57,000 Le, hekk tajjeb, ejja ara jekk ma nkunux nistgħu jiksru dan darba aktar. 835 00:46:57,000 --> 00:47:00,000 >> Mallocing aħħar darba, numru 5. 836 00:47:00,000 --> 00:47:04,000 It-triq kollha fil-dahar, jaqgħu fuq l isfel. 837 00:47:04,000 --> 00:47:08,000 Huwa ferm eċċitanti. 838 00:47:08,000 --> 00:47:15,000 [Applause] 839 00:47:15,000 --> 00:47:17,000 X'hemm isem tiegħek? >> Ron. 840 00:47:17,000 --> 00:47:19,000 Ron, okay, inti malloced bħala numru 5. 841 00:47:19,000 --> 00:47:23,000 Imxejna biss esegwiti kodiċi li kważi identiċi għal dawn 842 00:47:23,000 --> 00:47:26,000 biss bi isem differenti. 843 00:47:26,000 --> 00:47:28,000 Eċċellenti. 844 00:47:28,000 --> 00:47:38,000 Issa, Anita, Xorti tajba ddaħħal numru 5 fil-lista issa. 845 00:47:38,000 --> 00:47:43,000 Tajba, u? 846 00:47:43,000 --> 00:47:47,000 Eċċellenti, għalhekk dan huwa verament l-tielet tliet każijiet kollha. 847 00:47:47,000 --> 00:47:49,000 Aħna l-ewwel kellhom xi ħadd fl-aħħar, Rebecca. 848 00:47:49,000 --> 00:47:51,000 Aħna mbagħad kellhom xi ħadd fin-nofs. 849 00:47:51,000 --> 00:47:53,000 Issa għandna xi ħadd fil-bidu, u f'dan l-eżempju, 850 00:47:53,000 --> 00:47:56,000 aħna issa kellhom taġġorna Lucas għall-ewwel darba 851 00:47:56,000 --> 00:48:00,000 minħabba li l-ewwel element fil-lista issa għandha jindikaw lejn node ġdid, 852 00:48:00,000 --> 00:48:03,000 li, imbagħad, hija li tipponta lejn numru node 9. 853 00:48:03,000 --> 00:48:06,000 >> Dan kien dimostrazzjoni immensament skomdi, jien ċert, 854 00:48:06,000 --> 00:48:08,000 hekk rawnd kbir ta 'applause għal dawn guys jekk inti tista'. 855 00:48:08,000 --> 00:48:11,000 Nicely jsir. 856 00:48:11,000 --> 00:48:17,000 Li kollox. Inti tista 'żżomm biċċiet tiegħek ta' karta bħala memorja ftit. 857 00:48:17,000 --> 00:48:22,000 Jirriżulta li tagħmel dan fil-kodiċi 858 00:48:22,000 --> 00:48:26,000 mhux daqshekk sempliċi kemm biss jiċċaqalqu l-idejn madwar 859 00:48:26,000 --> 00:48:28,000 u tipponta pointers fuq affarijiet differenti. 860 00:48:28,000 --> 00:48:31,000 Imma tirrealizza li meta niġu żmien biex jimplimentaw xi ħaġa bħal 861 00:48:31,000 --> 00:48:34,000 lista marbuta jew varjant ta 'dan jekk inti tiffoka fuq verament 862 00:48:34,000 --> 00:48:38,000 dawn fundamentali bażiċi, il-problemi gidma daqs għandi biex insemmu, 863 00:48:38,000 --> 00:48:43,000 huwa dan idejn jew dan idejn, tirrealizza li dak li huwa altrimenti programm pjuttost kumpless 864 00:48:43,000 --> 00:48:47,000 jistgħu, fil-fatt, titnaqqas għal blokki pjuttost sempliċi bini bħal dan. 865 00:48:47,000 --> 00:48:51,000 >> Ejja jieħdu l-affarijiet fid-direzzjoni aktar sofistikati għadhom. 866 00:48:51,000 --> 00:48:53,000 Issa għandna l-idea tal-lista marbuta. 867 00:48:53,000 --> 00:48:57,000 Aħna wkoll ikollhom-grazzi għall-suġġeriment lura hemm 'lista doppjament marbut, 868 00:48:57,000 --> 00:49:01,000 li jistenna kważi l-istess, iżda issa għandna żewġ pointers ġewwa tal-Struct 869 00:49:01,000 --> 00:49:05,000 minflok waħda, u nistgħu probabbilment jagħmlu sejħa lil dawk pointers preċedenti u li jmiss 870 00:49:05,000 --> 00:49:08,000 jew tax-xellug jew, iżda nagħmlu, fil-fatt, jeħtieġ tnejn minnhom. 871 00:49:08,000 --> 00:49:10,000 Il-kodiċi se jkun ftit aktar involuti. 872 00:49:10,000 --> 00:49:12,000 Anita kien ikollha tagħmel xogħol aktar hawn fix-xena. 873 00:49:12,000 --> 00:49:15,000 Iżda nistgħu ċertament jimplimentaw dan it-tip ta 'struttura. 874 00:49:15,000 --> 00:49:19,000 F'termini ta 'running time, għalkemm, x'għandha tkun il-ħin qed taħdem 875 00:49:19,000 --> 00:49:24,000 għall Anita ta 'sejba ta n-numru fil-lista marbuta issa? 876 00:49:24,000 --> 00:49:27,000 O Still kbira ta 'n, għalhekk l-ebda aħjar minn tfittxija lineari. 877 00:49:27,000 --> 00:49:29,000 Aħna ma tistax tagħmel tfittxija binarja, għalkemm, għal darb'oħra. 878 00:49:29,000 --> 00:49:34,000 Għaliex kien li l-każ? Inti ma tistax jaqbżu madwar. 879 00:49:34,000 --> 00:49:36,000 Anki jekk aħna ovvjament tara l-bnedmin fuq il-palk, 880 00:49:36,000 --> 00:49:39,000 u Anita setgħet eyeballed dan u qal, "Hawn hu l-nofs tal-lista," 881 00:49:39,000 --> 00:49:42,000 hi ma jkunux jafu li jekk hi kienu l-programm tal-kompjuter 882 00:49:42,000 --> 00:49:47,000 minħabba li l-unika ħaġa hija kellha lukkett fuq fil-bidu tax-xenarju 883 00:49:47,000 --> 00:49:50,000 kien Lucas, li kien l-pointer ewwel. 884 00:49:50,000 --> 00:49:53,000 Hija bilfors ikollhom isegwu dawk ir-rabtiet, 885 00:49:53,000 --> 00:49:56,000 għadd mod tagħha sakemm hija sabet madwar l-nofs, 886 00:49:56,000 --> 00:49:58,000 u anke dakinhar, hi mhux ser tkun taf meta hi laħqet-nofs 887 00:49:58,000 --> 00:50:01,000 sakemm hi tmur it-triq kollha sa l-aħħar figura kemm hemm, 888 00:50:01,000 --> 00:50:05,000 imbagħad backtracks, u li wisq se jkun diffiċli sakemm inti kienu 889 00:50:05,000 --> 00:50:07,000 lista doppjament marbut ta 'xi tip. 890 00:50:07,000 --> 00:50:10,000 >> Solving xi problemi tal-lum, iżda jintroduċi oħrajn. 891 00:50:10,000 --> 00:50:12,000 Xi ngħidu dwar struttura data differenti għal kollox? 892 00:50:12,000 --> 00:50:15,000 Dan huwa ritratt ta 'l-trejs fil Mather House, 893 00:50:15,000 --> 00:50:19,000 u f'dan il-każ, aħna għandna istruttura tad-data konna wkoll tip ta 'diġà jitkellem dwar. 894 00:50:19,000 --> 00:50:22,000 Aħna tkellimna dwar munzell fil-kuntest tal-memorja, 895 00:50:22,000 --> 00:50:26,000 u li l-tip ta 'deliberatament imsejjaħ minħabba munzell fit-termini tal-memorja 896 00:50:26,000 --> 00:50:31,000 huwa effettivament struttura tad-data li għandha Jittieħed aktar u aktar ub'saffi fuq quċċata ta 'dan. 897 00:50:31,000 --> 00:50:35,000 Imma l-ħaġa interessanti dwar munzell, kif inhu l-każ fir-realtà, 898 00:50:35,000 --> 00:50:38,000 hija li huwa tip speċjali ta 'data istruttura. 899 00:50:38,000 --> 00:50:42,000 Hija struttura tad-data fejn l-ewwel element fil- 900 00:50:42,000 --> 00:50:46,000 huwa l-aħħar element out. 901 00:50:46,000 --> 00:50:50,000 Jekk inti l-trej ewwel li jitqiegħdu fuq il-munzell, 902 00:50:50,000 --> 00:50:53,000 int se tkun sfortunatament l-trej aħħar li għandhom jittieħdu barra l-munzell, 903 00:50:53,000 --> 00:50:55,000 u li mhux neċessarjament ħaġa tajba. 904 00:50:55,000 --> 00:50:58,000 Bil-maqlub, inti tista 'taħseb dwar dan il-mod ieħor madwar, 905 00:50:58,000 --> 00:51:02,000 l-aħħar huwa l-l-ewwel. 906 00:51:02,000 --> 00:51:05,000 >> Issa, ma 'xi xenarji jiġu f'moħħna meta jkollhom munzell 907 00:51:05,000 --> 00:51:08,000 istruttura tad-data fejn għandek dik il-proprjetà 908 00:51:08,000 --> 00:51:13,000 ta 'l-aħħar, l-ewwel, huwa attwalment konvinċenti? 909 00:51:13,000 --> 00:51:16,000 Hija li xi ħaġa tajba? Hija li xi ħaġa ħażina? 910 00:51:16,000 --> 00:51:19,000 Huwa definittivament xi ħaġa ħażina jekk l-trejs ma kinux kollha identiċi 911 00:51:19,000 --> 00:51:21,000 u dawn kienu kollha kuluri differenti speċjali jew whatnot, 912 00:51:21,000 --> 00:51:24,000 u l-kulur li trid huwa it-triq kollha fil-qiegħ. 913 00:51:24,000 --> 00:51:26,000 Of course, inti ma tistax tikseb li mingħajr sforz kbir. 914 00:51:26,000 --> 00:51:28,000 Int għandek tibda mill-quċċata u x-xogħol tiegħek mod isfel. 915 00:51:28,000 --> 00:51:31,000 Bl-istess mod, dak li jekk inti kienu wieħed minn dawn subien fann 916 00:51:31,000 --> 00:51:34,000 li tistenna sa l-lejl tipprova tikseb iPhone u l-linji up 917 00:51:34,000 --> 00:51:36,000 f'post bħal dan? 918 00:51:36,000 --> 00:51:40,000 Ma Ikun sbieħ jekk il-maħżen tat-tuffieħ 919 00:51:40,000 --> 00:51:42,000 kienu struttura tad-data munzell? 920 00:51:42,000 --> 00:51:44,000 Yay? Nay? 921 00:51:44,000 --> 00:51:47,000 Huwa biss tajjeb għall-persuni li juru up fil-minuta possibbli aħħar 922 00:51:47,000 --> 00:51:50,000 u mbagħad nikseb mnittfa off-kju. 923 00:51:50,000 --> 00:51:52,000 U fil-fatt, il-fatt li I kien tant inklinati li jgħidu kju 924 00:51:52,000 --> 00:51:56,000 huwa attwalment konsistenti ma 'dak li aħna kieku ssejjaħ dan it-tip ta' struttura tad-data, 925 00:51:56,000 --> 00:51:59,000 1 fir-realtà meta l-ordni ma jimpurtax, 926 00:51:59,000 --> 00:52:02,000 u trid li l-ewwel wieħed fl biex tkun l-ewwel waħda minn 927 00:52:02,000 --> 00:52:04,000 jekk biss għall-raġunijiet ta 'ġustizzja umana. 928 00:52:04,000 --> 00:52:07,000 Aħna ser ġeneralment sejħa li struttura tad-data kju. 929 00:52:07,000 --> 00:52:11,000 >> Jirriżulta barra minn hekk listi relatati, nistgħu tibda tuża dawn l-ideat bażiċi istess 930 00:52:11,000 --> 00:52:15,000 u tibda ħolqien ta 'tipi ġodda u differenti ta' soluzzjonijiet għall-problemi. 931 00:52:15,000 --> 00:52:19,000 Per eżempju, fil-każ ta 'ċumnija, nistgħu jirrappreżentaw munzell 932 00:52:19,000 --> 00:52:22,000 permezz ta 'struttura tad-data bħal dan, nixtieq nipproponi. 933 00:52:22,000 --> 00:52:26,000 F'dan il-każ, stajt ddikjarat Struct, u stajt qal ġewwa ta 'din l-istruttura 934 00:52:26,000 --> 00:52:30,000 huwa firxa ta 'numri u mbagħad daqs varjabbli imsejħa, 935 00:52:30,000 --> 00:52:33,000 u jiena ser sejħa dan ħaġa munzell. 936 00:52:33,000 --> 00:52:35,000 Issa, għaliex ma dan attwalment jaħdmu? 937 00:52:35,000 --> 00:52:43,000 Fil-każ ta 'ċumnija, I jista' jiġbed dan b'mod effettiv fuq l-iskrin bħala firxa. 938 00:52:43,000 --> 00:52:47,000 Hawnhekk huwa munzell tiegħi. Dawn huma numri tiegħi. 939 00:52:47,000 --> 00:52:50,000 U aħna ser tiġbed minnhom kif dan, dan, dan, dan, dan. 940 00:52:50,000 --> 00:52:53,000 U mbagħad I għandhom xi membru ieħor tad-data hawn, 941 00:52:53,000 --> 00:52:58,000 li tissejjaħ id-daqs, għalhekk dan huwa daqs, u dan huwa numri, 942 00:52:58,000 --> 00:53:02,000 u kollettivament, l-iPad kollu hawn jirrappreżenta struttura munzell wieħed. 943 00:53:02,000 --> 00:53:07,000 Issa, fil-kontumaċja, id-daqs ikun preżumibbilment ltqajna biex jiġu initialized għal 0, 944 00:53:07,000 --> 00:53:11,000 u x'hemm ġewwa tal-firxa ta 'numri inizjalment 945 00:53:11,000 --> 00:53:14,000 meta I ewwel talloka firxa? 946 00:53:14,000 --> 00:53:16,000 Żibel. Min jaf? U din attwalment ma jimpurtax. 947 00:53:16,000 --> 00:53:20,000 Ma jimpurtax jekk dan huwa 1, 2, 3, 4, 5, kompletament bl-addoċċ 948 00:53:20,000 --> 00:53:25,000 billi xortih ħażina maħżuna fl-istruttura tiegħi għaliex sakemm naf li d-daqs tal-munzell 949 00:53:25,000 --> 00:53:29,000 huwa 0, allura naf programmatically, ma nħarsu lejn xi wieħed mill-elementi fil-firxa. 950 00:53:29,000 --> 00:53:31,000 Ma jimpurtax x'hemm hemmhekk. 951 00:53:31,000 --> 00:53:34,000 Ma tħares lejn lilhom, kif ikun il-implikazzjoni ta 'daqs ta' 0. 952 00:53:34,000 --> 00:53:38,000 >> Imma ejja ngħidu issa I jimxi 'l quddiem u daħħal xi ħaġa fil-munzell. 953 00:53:38,000 --> 00:53:42,000 Irrid li daħħal in-numru 5, so I tpoġġi numru 5 hawn, 954 00:53:42,000 --> 00:53:45,000 u mbagħad dak li għandi jħott hawn? 955 00:53:45,000 --> 00:53:48,000 Issa nixtieq attwalment jħott 1 għall-qies, 956 00:53:48,000 --> 00:53:50,000 u issa l-munzell huwa ta 'daqs 1. 957 00:53:50,000 --> 00:53:53,000 X'jiġri jekk I jimxi 'l quddiem u daħħal in-numru, ejja ngħidu, 7 jmiss? 958 00:53:53,000 --> 00:53:57,000 Dan imbagħad gets aġġornata għal 2, u mbagħad aħna ser nagħmlu 9, 959 00:53:57,000 --> 00:54:02,000 u allura dan gets aġġornati sa 3. 960 00:54:02,000 --> 00:54:05,000 Iżda l-karatteristika interessanti issa 'dan munzell hu li 961 00:54:05,000 --> 00:54:09,000 Jien suppost biex jitneħħew liema element jekk irrid li pop 962 00:54:09,000 --> 00:54:12,000 xi ħaġa off tal-munzell, biex ngħidu hekk? 963 00:54:12,000 --> 00:54:14,000 9 tkun l-ewwel ħaġa li tmur. 964 00:54:14,000 --> 00:54:18,000 Kif għandha l-istampa tinbidel jekk irrid pop element off-munzell, 965 00:54:18,000 --> 00:54:20,000 ħafna bħal trej fil Mather? 966 00:54:20,000 --> 00:54:22,000 Yeah. >> [Student] Issettja d-daqs sa 2. 967 00:54:22,000 --> 00:54:27,000 Eżattament, kollha nagħmel huwa stabbilit daqs għal 2, u x'għandi nagħmel mal-firxa? 968 00:54:27,000 --> 00:54:29,000 I ma jkollhom jagħmlu xi ħaġa. 969 00:54:29,000 --> 00:54:32,000 I jistgħu, biss sabiex ikunu anali, poġġi 0 hemmhekk jew -1 jew xi ħaġa li turi 970 00:54:32,000 --> 00:54:34,000 li din mhix valur leġittimu, iżda ma jimpurtax għax 971 00:54:34,000 --> 00:54:37,000 I tista 'tirreġistra barra mill-firxa innifsu kemm hu 972 00:54:37,000 --> 00:54:41,000 hekk li naf biss ħarsa lejn l-ewwel żewġ elementi f'dan firxa. 973 00:54:41,000 --> 00:54:47,000 Issa, jekk immur u żid in-numru 8 għal dan il-array, kif ma l-istampa tinbidel jmiss? 974 00:54:47,000 --> 00:54:50,000 Dan isir 8, u dan isir 3. 975 00:54:50,000 --> 00:54:52,000 Jien qtugħ ta 'kantunieri ftit hawn. 976 00:54:52,000 --> 00:54:56,000 Issa għandna 5, 7, 8, u aħna qed lura għal daqs ta '3. 977 00:54:56,000 --> 00:54:58,000 Dan huwa pjuttost sempliċi biex wieħed jimplimentah, 978 00:54:58,000 --> 00:55:06,000 iżda meta aħna se dispjaċir din id-deċiżjoni tad-disinn? 979 00:55:06,000 --> 00:55:09,000 Meta do affarijiet jibdew imorru ferm, ħażina ħafna? Yeah. 980 00:55:09,000 --> 00:55:11,000 [Rispons istudent inaudible] 981 00:55:11,000 --> 00:55:13,000 Meta inti tixtieq li tmur lura u jiksbu l-ewwel element inti tpoġġi pulzieri 982 00:55:13,000 --> 00:55:18,000 >> Jirriżulta hawnhekk għalkemm munzell huwa firxa taħt il-barnuża, 983 00:55:18,000 --> 00:55:21,000 dawn l-istrutturi tad-data konna beda jitkellem dwar huma wkoll ġeneralment magħrufa bħala 984 00:55:21,000 --> 00:55:25,000 Strutturi astratti data li biha kif dawn qed implimentata 985 00:55:25,000 --> 00:55:27,000 huwa kompletament minbarra l-punt. 986 00:55:27,000 --> 00:55:31,000 Struttura tad-data bħal munzell suppost li żżid l-appoġġ 987 00:55:31,000 --> 00:55:35,000 Operazzjonijiet bħal push, li timbotta trej fuq il-munzell, 988 00:55:35,000 --> 00:55:39,000 u pop, li tneħħi element mill-munzell, u li hu. 989 00:55:39,000 --> 00:55:43,000 Jekk ġejt biex tniżżel kodiċi xi ħadd ieħor li diġà implimentat 990 00:55:43,000 --> 00:55:46,000 dan ħaġa imsejħa 'ċumnija, dik il-persuna kienet miktuba 991 00:55:46,000 --> 00:55:49,000 biss żewġ funzjonijiet għalik, timbotta u pop, li l-uniku skop fil-ħajja 992 00:55:49,000 --> 00:55:51,000 tkun li tagħmel eżattament dan. 993 00:55:51,000 --> 00:55:54,000 Inti jew lilu jew lilha li implimentat dan il-programm 994 00:55:54,000 --> 00:55:58,000 kien ikun totalment il-wieħed li jiddeċiedi kif għandhom jiġu implimentati 995 00:55:58,000 --> 00:56:00,000 l-semantika ta 'imbuttar u popping minn taħt il-barnuża 996 00:56:00,000 --> 00:56:03,000 jew il-funzjonalità ta 'imbuttar u popping. 997 00:56:03,000 --> 00:56:07,000 U jien għamlu deċiżjoni kemmxejn shortsighted hawn 998 00:56:07,000 --> 00:56:10,000 bl-implimentazzjoni munzell tiegħi ma 'din l-istruttura tad-data sempliċi għaliex? 999 00:56:10,000 --> 00:56:12,000 Meta tagħmel dan waqfa istruttura tad-data? 1000 00:56:12,000 --> 00:56:18,000 Fuq liema punt għandi lura żball meta l-utent sejħiet timbotta, per eżempju? 1001 00:56:18,000 --> 00:56:20,000 [Student] Jekk ma jkun hemm l-ebda aktar spazju. 1002 00:56:20,000 --> 00:56:23,000 Eżattament, jekk hemm spazju aktar, jekk stajt maqbuża kapaċità, 1003 00:56:23,000 --> 00:56:27,000 li hija kollha caps minħabba li tissuġġerixxi li huwa xi tip ta 'kostanti globali. 1004 00:56:27,000 --> 00:56:30,000 Well, allura jien biss se jkollhom jgħidu, "Skużani jien ma tistax push valur ieħor 1005 00:56:30,000 --> 00:56:32,000 fuq il-munzell, "ferm simili fl Mather. 1006 00:56:32,000 --> 00:56:36,000 >> F'xi punt, dawn qed tmur biex jolqtu l-parti ta 'fuq ta' dak kabinett ftit. 1007 00:56:36,000 --> 00:56:39,000 M'hemm l-ebda spazju aktar jew kapaċità fis-munzell, f'liema punt hemm xi tip ta 'żball. 1008 00:56:39,000 --> 00:56:42,000 Huma għandhom jitqiegħdu l-element x'imkien ieħor, il-trej x'imkien ieħor, 1009 00:56:42,000 --> 00:56:44,000 jew imkien fil-livelli kollha. 1010 00:56:44,000 --> 00:56:47,000 Issa, bil-kju, nistgħu jimplimentawha ftit differenti. 1011 00:56:47,000 --> 00:56:50,000 A kju huwa xi ftit differenti f'dak taħt il-barnuża, tista 'tiġi implimentata 1012 00:56:50,000 --> 00:56:54,000 bħala firxa, iżda għaliex, f'dan il-każ, am I tipproponi 1013 00:56:54,000 --> 00:56:59,000 li għandhom ukoll element ras li jirrappreżenta l-kap tal-lista, 1014 00:56:59,000 --> 00:57:06,000 quddiem tal-lista, l-ewwel persuna fil-linja fil-maħżen tat-tuffieħ, minbarra l-daqs? 1015 00:57:06,000 --> 00:57:14,000 Għaliex għandi bżonn biċċa ta 'dejta addizzjonali hawn? 1016 00:57:14,000 --> 00:57:16,000 Think lura għal dak numri huwa 1017 00:57:16,000 --> 00:57:18,000 jekk stajt mfassla dan kif ġej. 1018 00:57:18,000 --> 00:57:21,000 Ejja ngħidu li dan huwa issa kju minflok munzell, 1019 00:57:21,000 --> 00:57:24,000 id-differenza tkun 'biss bħall-Apple store-kju huwa ġust. 1020 00:57:24,000 --> 00:57:27,000 L-ewwel persuna fil-linja fil-bidu tal-lista, numru 5 f'dan il-każ, 1021 00:57:27,000 --> 00:57:30,000 hu jew hi se tkun let fil-maħżen ewwel. 1022 00:57:30,000 --> 00:57:32,000 Ejja nagħmlu dan. 1023 00:57:32,000 --> 00:57:35,000 Ejja ngħidu li dan huwa l-istat ta 'kju tiegħi f'dan il-mument fil-ħin, u issa l-maħżen tat-tuffieħ 1024 00:57:35,000 --> 00:57:39,000 jiftaħ u l-ewwel persuna, numru 5, hija mmexxija fil-maħżen. 1025 00:57:39,000 --> 00:57:43,000 Kif nista jibdlu l-istampa issa li jien de-kju l-ewwel persuna 1026 00:57:43,000 --> 00:57:47,000 fuq quddiem tal-linja? 1027 00:57:47,000 --> 00:57:50,000 X'hemm li? >> [Student] Ibdel il-kju. 1028 00:57:50,000 --> 00:57:52,000 Ibdel il-kap, hekk 5 tisparixxi. 1029 00:57:52,000 --> 00:57:56,000 Fir-realtà, huwa bħallikieku 'kif l-aħjar biex tagħmel dan? 1030 00:57:56,000 --> 00:58:00,000 Fir-realtà, huwa daqs li kieku dan Guy tisparixxi. 1031 00:58:00,000 --> 00:58:03,000 X'għandu numru 7 jagħmlu f'każ ta 'maħżen attwali? 1032 00:58:03,000 --> 00:58:05,000 Huma ser tieħu pass kbir 'il quddiem. 1033 00:58:05,000 --> 00:58:08,000 >> Imma dak li aħna niġu biex japprezzaw meta niġu għall-arrays 1034 00:58:08,000 --> 00:58:10,000 u li jiċċaqalqu madwar l-affarijiet? 1035 00:58:10,000 --> 00:58:12,000 Dak it-tip ta 'ħela ta' ħin tiegħek, id-dritt? 1036 00:58:12,000 --> 00:58:16,000 Għaliex inti għandek tkun hekk anali mod li jkollhom l-ewwel persuna 1037 00:58:16,000 --> 00:58:21,000 fil-bidu tal-linja fil fiżikament l-bidu tal-blokki ta 'memorja? 1038 00:58:21,000 --> 00:58:23,000 Dak kompletament bla bżonn. Għaliex? 1039 00:58:23,000 --> 00:58:26,000 Liema jista I biss ftakar minflok? >> [Rispons istudent inaudible] 1040 00:58:26,000 --> 00:58:30,000 Eżattament, I jistgħu biss ftakar dan il-kap membru addizzjonali tad-data 1041 00:58:30,000 --> 00:58:34,000 li issa l-kap tal-lista ma għadhiex 0, li kien mument ilu. 1042 00:58:34,000 --> 00:58:39,000 Issa huwa attwalment in-numru 1. B'dan il-mod, niġi ottimizzazzjoni żgħira. 1043 00:58:39,000 --> 00:58:44,000 Just għaliex stajt de-kju xi ħadd mill-linja fil-bidu tal-linja fil-maħżen tat-tuffieħ 1044 00:58:44,000 --> 00:58:47,000 ma jfissirx li kulħadd irid bidla, li recall huwa operazzjoni lineari. 1045 00:58:47,000 --> 00:58:50,000 I jistgħu minflok jqattgħu ħin kostanti biss 1046 00:58:50,000 --> 00:58:53,000 u jiksbu mbagħad rispons ħafna aktar mgħaġġla. 1047 00:58:53,000 --> 00:58:56,000 Iżda l-prezz jien ħlas huwa dak li jiksbu li l-prestazzjoni addizzjonali 1048 00:58:56,000 --> 00:58:58,000 u ma jkollhom bidla kulħadd? 1049 00:58:58,000 --> 00:59:01,000 Yeah. >> [Rispons istudent inaudible] 1050 00:59:01,000 --> 00:59:04,000 Tista 'żżid aktar nies, ukoll, li l-problema hija ortogonali 1051 00:59:04,000 --> 00:59:07,000 għall-fatt li aħna mhux qed ċaqliq nies madwar. 1052 00:59:07,000 --> 00:59:11,000 Huwa għadu firxa, iva jekk jew le aħna bidla kulħadd jew le- 1053 00:59:11,000 --> 00:59:13,000 oh, I ara dak li jfisser, okay. 1054 00:59:13,000 --> 00:59:16,000 Fil-fatt, jiena naqbel ma 'dak li qed tgħid f'dik huwa kważi daqs li kieku 1055 00:59:16,000 --> 00:59:19,000 aħna qed issa qatt ser tuża l-bidu ta 'dan array aktar 1056 00:59:19,000 --> 00:59:22,000 għaliex jekk jien tneħħi 5, imbagħad I neħħi 7. 1057 00:59:22,000 --> 00:59:24,000 Imma I biss tpoġġi lin-nies lejn il-lemin. 1058 00:59:24,000 --> 00:59:28,000 >> Hija tħoss bħal jien ħela l-ispazju, u eventwalment kju tiegħi disintegrates fis xejn, 1059 00:59:28,000 --> 00:59:31,000 hekk nistgħu biss ikollhom nies trembil, 1060 00:59:31,000 --> 00:59:35,000 u nistgħu naħsbu ta 'dan array verament bħala xi tip ta' struttura ċirkolari, 1061 00:59:35,000 --> 00:59:38,000 imma nużaw dak l-operatur fir C biex tagħmel dan it-tip ta wraparound? 1062 00:59:38,000 --> 00:59:40,000 [Rispons istudent inaudible] >> L-operatur modulo. 1063 00:59:40,000 --> 00:59:43,000 Ikun tedjanti ftit biex jaħsbu permezz kif taħseb li tagħmel il-trembil, 1064 00:59:43,000 --> 00:59:46,000 imma stajna nagħmlu dan, u aħna tista 'tibda tħaddim ta' nies fuq dak użat biex jiġi-quddiem tal-linja, 1065 00:59:46,000 --> 00:59:52,000 iżda aħna biss tiftakar ma 'dan varjabbli ras li l-kap attwali tal-linja fil-fatt hu. 1066 00:59:52,000 --> 00:59:57,000 X'jiġri jekk, minflok, l-għan tagħna finalment, għalkemm, 1067 00:59:57,000 --> 01:00:00,000 kien li wieħed ifittex numri, kif għamilna hawn fuq il-palk mal-Anita, 1068 01:00:00,000 --> 01:00:02,000 iżda aħna verament irridu l-aħjar ta 'dawn Dinjiet? 1069 01:00:02,000 --> 01:00:05,000 Irridu sofistikazzjoni aktar tippermetti firxa minn 1070 01:00:05,000 --> 01:00:09,000 għaliex irridu l-ħila li dinamikament jikber l-istruttura tad-data. 1071 01:00:09,000 --> 01:00:12,000 Iżda aħna ma rridux li jkollhom jirrikorru għal xi ħaġa li aħna enfasizzat 1072 01:00:12,000 --> 01:00:15,000 fl-ewwel lecture kienx algoritmu ottimali, 1073 01:00:15,000 --> 01:00:17,000 dak ta 'tfittxija lineari. 1074 01:00:17,000 --> 01:00:21,000 Jirriżulta li inti tista ', fil-fatt, jinkiseb 1075 01:00:21,000 --> 01:00:24,000 jew għall-inqas qrib ħin kostanti, fejn xi ħadd bħal Anita, 1076 01:00:24,000 --> 01:00:27,000 jekk hi configures istruttura tad-data tagħha ma tkunx lista marbuta, 1077 01:00:27,000 --> 01:00:30,000 m'għandhomx ikunu munzell, m'għandhomx ikunu kju, jistgħu, fil-fatt, 1078 01:00:30,000 --> 01:00:33,000 toħroġ bi struttura tad-data li tippermetti tagħha biex tfittex up affarijiet, 1079 01:00:33,000 --> 01:00:37,000 anki kliem, mhux biss numri, fil dak li aħna ser sejħa ħin kostanti. 1080 01:00:37,000 --> 01:00:40,000 >> U fil-fatt, b'ħarsa 'l quddiem, wieħed mill-psets f'din il-klassi hija kważi dejjem 1081 01:00:40,000 --> 01:00:43,000 implimentazzjoni ta 'spellchecker, fejn 1082 01:00:43,000 --> 01:00:46,000 aħna nagħtuk terġa 'xi kliem Ingliż 150.000 u l-għan huwa li 1083 01:00:46,000 --> 01:00:51,000 tagħbija dawk fil-memorja u malajr tkun kapaċi twieġeb il-mistoqsijiet tal-formola 1084 01:00:51,000 --> 01:00:54,000 huwa din il-kelma spjegati b'mod korrett? 1085 01:00:54,000 --> 01:00:58,000 U verament terda jekk inti kellha jtenni permezz kliem kollha 150.000 tingħata risposta għal din. 1086 01:00:58,000 --> 01:01:02,000 Iżda, fil-fatt, aħna ser tara li nistgħu nagħmlu dan fil-ħin ħafna, malajr ħafna. 1087 01:01:02,000 --> 01:01:06,000 U li għaddej biex jinvolvu xi ħaġa implimentazzjoni imsejħa tabella hash, 1088 01:01:06,000 --> 01:01:09,000 u anki jekk ewwel daqqa t'għajn dan ħaġa tissejjaħ tabella hash se 1089 01:01:09,000 --> 01:01:12,000 ejjew jintlaħqu dawn iż-żminijiet super rispons rapidu, 1090 01:01:12,000 --> 01:01:18,000 jirriżulta li hemm fil-fatt problema. 1091 01:01:18,000 --> 01:01:23,000 Meta niġu żmien biex jimplimentaw dan ħaġa imsejħa għal darb'oħra, jien tagħmel dan mill-ġdid. 1092 01:01:23,000 --> 01:01:25,000 Jien l-unika waħda hawn. 1093 01:01:25,000 --> 01:01:28,000 Meta niġu żmien biex jimplimentaw dan ħaġa tissejjaħ tabella hash, 1094 01:01:28,000 --> 01:01:30,000 aħna qed tmur biex ikollhom biex jagħmlu deċiżjoni. 1095 01:01:30,000 --> 01:01:32,000 Kif big jekk dan ħaġa fil-fatt tkun? 1096 01:01:32,000 --> 01:01:36,000 U meta nibdew in-numri ddaħħal fis din it-tabella hash, 1097 01:01:36,000 --> 01:01:38,000 kif ser nieħdu biex jaħżinhom b'tali mod 1098 01:01:38,000 --> 01:01:42,000 li nistgħu tikseb minnhom lura malajr kemm aħna ltqajna magħhom fil-? 1099 01:01:42,000 --> 01:01:45,000 Iżda aħna ser tara qabel twil li din il-kwistjoni ta ' 1100 01:01:45,000 --> 01:01:48,000 meta birthday kulħadd huwa fil-klassi se jkun pjuttost germane. 1101 01:01:48,000 --> 01:01:51,000 Jirriżulta li f'din il-kamra, konna ltqajna ftit mijiet ta nies, 1102 01:01:51,000 --> 01:01:56,000 sabiex l-odds li tnejn minna għandna l-birthday istess huwa probabbilment pjuttost għoli. 1103 01:01:56,000 --> 01:01:58,000 X'jiġri jekk kien hemm biss 40 minna f'din il-kamra? 1104 01:01:58,000 --> 01:02:02,000 X'inhuma l-odds ta 'żewġ persuni li jkollhom l-birthday istess? 1105 01:02:02,000 --> 01:02:04,000 [Studenti] Aktar minn 50%. 1106 01:02:04,000 --> 01:02:06,000 Yeah, aktar minn 50%. Fil-fatt, I anke miġjuba chart. 1107 01:02:06,000 --> 01:02:08,000 Jirriżulta 'u dan huwa verament ftit Sneak preview- 1108 01:02:08,000 --> 01:02:12,000 jekk hemm biss 58 minna f'din il-kamra, il-probabbiltà ta '2 minna 1109 01:02:12,000 --> 01:02:16,000 wara li l-birthday istess huwa immensament għoli, kważi 100%, 1110 01:02:16,000 --> 01:02:20,000 u li għaddej biex jikkawża mazz sħiħ ta 'iweġġgħu għalina nhar l-Erbgħa. 1111 01:02:20,000 --> 01:02:24,000 >> Ma 'dak imsemmi, ejja jaġġorna hawn. Aħna ser tara inti nhar l-Erbgħa. 1112 01:02:24,000 --> 01:02:28,000 [Applause] 1113 01:02:28,000 --> 01:02:30,000 [CS50.TV]