1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [Ġimgħa 4] 2 00:00:03,000 --> 00:00:05,000 [David J. Malan] [Università ta 'Harvard] 3 00:00:05,000 --> 00:00:08,000 [Dan huwa CS50.] [CS50.TV] 4 00:00:08,000 --> 00:00:12,000 >> Kull dritt, dan huwa CS50, u dan huwa l-bidu tal-ġimgħa 4, 5 00:00:12,000 --> 00:00:16,000 u dan huwa wieħed mill-algoritmi issortjar iżgħar rata possibbli. 6 00:00:16,000 --> 00:00:19,000 Liema wieħed ma kien li aħna biss jaraw hemmhekk? 7 00:00:19,000 --> 00:00:24,000 Dan kien it-tip bużżieqa, sabiex big O (n ^ 2) + somma, 8 00:00:24,000 --> 00:00:28,000 u fil-fatt aħna l-uniċi f'din id-dinja li jidhru li jafu 9 00:00:28,000 --> 00:00:30,000 liema tip bużżieqa huwa jew running time tiegħu. 10 00:00:30,000 --> 00:00:33,000 Tabilħaqq, dan kien intervista ma Eric Schmidt tal-Google 11 00:00:33,000 --> 00:00:45,000 u eks senatur Barack Obama biss ftit snin ilu. 12 00:00:45,000 --> 00:00:48,000 >> Issa, Senatur, int hawn fuq Google, 13 00:00:48,000 --> 00:00:54,000 u Inħobb naħseb tal-presidenza bħala intervista tax-xogħol. 14 00:00:54,000 --> 00:00:58,000 Issa, huwa diffiċli li jsibu xogħol bħala president, u int ser permezz tal-ħruxija issa. 15 00:00:58,000 --> 00:01:00,000 Huwa wkoll diffiċli li jsibu xogħol fil-Google. 16 00:01:00,000 --> 00:01:05,000 Aħna mistoqsijiet, u aħna jistaqsu mistoqsijiet lill-kandidati tagħna, 17 00:01:05,000 --> 00:01:10,000 u dan huwa wieħed mill Larry Schwimmer. 18 00:01:10,000 --> 00:01:14,000 You guys think jien kidding? Huwa dritt hawn. 19 00:01:14,000 --> 00:01:18,000 X'inhi l-aktar mod effiċjenti biex issolvi xi miljun 32-bit interi? 20 00:01:18,000 --> 00:01:21,000 [Daħk] 21 00:01:21,000 --> 00:01:24,000 Well- 22 00:01:24,000 --> 00:01:26,000 Jien sorry. >> No, no, no, no. 23 00:01:26,000 --> 00:01:34,000 Naħseb li l-tip bużżieqa tkun l-mod żbaljat biex imorru. 24 00:01:34,000 --> 00:01:39,000 >> Come on, li qallu dan? 25 00:01:39,000 --> 00:01:43,000 Last week lura aħna ħa pawża mill-kodiċi, għall-inqas għal ġurnata, 26 00:01:43,000 --> 00:01:46,000 u beda jiffoka fuq xi ideat ta 'livell ogħla u soluzzjoni ta' problemi b'mod aktar ġenerali 27 00:01:46,000 --> 00:01:49,000 fil-kuntest ta 'tiftix u għażla, 28 00:01:49,000 --> 00:01:53,000 u aħna introdotti xi ħaġa li aħna ma SLAP dan l-isem fuq il-ġimgħa li għaddiet, 29 00:01:53,000 --> 00:01:56,000 iżda notazzjoni asintotiku, il-Big O, il-Omega Big, 30 00:01:56,000 --> 00:02:00,000 u xi kultant l-notazzjoni Theta Big, u dawn kienu sempliċiment modi 31 00:02:00,000 --> 00:02:02,000 jiġu deskritti l-running time ta 'algoritmi, 32 00:02:02,000 --> 00:02:05,000 kemm ħin li jieħu għall algoritmu jiddekorri. 33 00:02:05,000 --> 00:02:08,000 >> U inti tista 'recall li inti tkellem dwar il-ħin qed taħdem f'termini tad-daqs 34 00:02:08,000 --> 00:02:11,000 ta 'l-input, li aħna ġeneralment sejħa n, ikun x'ikun il-problema jista' jkun, 35 00:02:11,000 --> 00:02:13,000 fejn n huwa n-numru ta 'nies fil-kamra, 36 00:02:13,000 --> 00:02:17,000 in-numru ta 'paġni fil-ktieb tat-telefon, u bdejna biex jikteb affarijiet out 37 00:02:17,000 --> 00:02:21,000 bħall O (n ^ 2) jew O (n) jew O (n log n), 38 00:02:21,000 --> 00:02:24,000 u anke meta l-matematika ma pjuttost xogħol barra hekk perfettament 39 00:02:24,000 --> 00:02:28,000 u kien n ² - n / 2 jew xi ħaġa bħal dik 40 00:02:28,000 --> 00:02:31,000 aħna minflok sempliċiment tarmi l bogħod xi wħud mit-termini ordni aktar baxxi, 41 00:02:31,000 --> 00:02:34,000 u l-motivazzjoni hemm li aħna verament jixtiequ 42 00:02:34,000 --> 00:02:37,000 tip ta 'triq għan li jevalwa 43 00:02:37,000 --> 00:02:39,000 il-prestazzjoni tal-programmi jew il-prestazzjoni ta 'algoritmi 44 00:02:39,000 --> 00:02:42,000 li fl-aħħar tal-ġurnata m'għandha x'taqsam xejn ma ', pereżempju, 45 00:02:42,000 --> 00:02:45,000 bil-veloċità ta 'kompjuter tiegħek illum. 46 00:02:45,000 --> 00:02:47,000 >> Per eżempju, jekk inti jimplimentaw sort bużżieqa, 47 00:02:47,000 --> 00:02:50,000 jew inti jimplimentaw jingħaqdu tip jew l-għażla it-tip fuq il-kompjuter tal-lum, 48 00:02:50,000 --> 00:02:53,000 kompjuter GHz 2, u inti run, 49 00:02:53,000 --> 00:02:56,000 u li tieħu xi numru ta 'sekondi, sena d-dieħla hemm GHz 3 50 00:02:56,000 --> 00:02:59,000 jew kompjuter frekwenzi 4 GHz, u inti tista 'imbagħad isostni li "Ara naqra, algoritmu tiegħi 51 00:02:59,000 --> 00:03:03,000 issa huwa darbtejn malajr, "meta fir-realtà dan huwa ovvjament mhux il-każ. 52 00:03:03,000 --> 00:03:06,000 Huwa biss il-hardware gotten aktar malajr, imma kompjuter tiegħek 53 00:03:06,000 --> 00:03:10,000 ma, u hekk aħna verament irridu li armih affarijiet simili 54 00:03:10,000 --> 00:03:13,000 multipli ta '2 jew multipli ta' 3 meta niġu biex tiddeskrivi 55 00:03:13,000 --> 00:03:17,000 kif fast jew bil-mod kif algoriżmu huwa u verament biss jiffoka 56 00:03:17,000 --> 00:03:20,000 fuq n jew xi fattur tiegħu, 57 00:03:20,000 --> 00:03:24,000 xi setgħa tiegħu bħal fil-każ tal-tipi mill-aħħar ġimgħa. 58 00:03:24,000 --> 00:03:27,000 U tfakkar li bl-għajnuna ta 'tip jingħaqdu 59 00:03:27,000 --> 00:03:31,000 konna kapaċi li jagħmlu dan ħafna aħjar minn tip bużżieqa u sort l-għażla 60 00:03:31,000 --> 00:03:33,000 u sort inserzjoni anke. 61 00:03:33,000 --> 00:03:36,000 >> Sirna sa n log n, u għal darb'oħra, 62 00:03:36,000 --> 00:03:39,000 ifakkar li log n ġeneralment tirreferi għal xi ħaġa li tikber 63 00:03:39,000 --> 00:03:43,000 aktar bil-mod imbagħad n, sabiex n log n s'issa kienet tajba 64 00:03:43,000 --> 00:03:45,000 għaliex kien inqas minn ² n. 65 00:03:45,000 --> 00:03:47,000 Iżda biex jiksbu n log n ma sort jingħaqdu 66 00:03:47,000 --> 00:03:51,000 dak li kien il-raħs bażiku ta 'idea li kellna biex jinfluwenzaw 67 00:03:51,000 --> 00:03:54,000 li aħna wkoll influwenzati lura fil-ġimgħa 0? 68 00:03:54,000 --> 00:03:58,000 Kif aħna ma tindirizza l-problema issortjar cleverly bil sort jingħaqdu? 69 00:03:58,000 --> 00:04:04,000 Liema kienet l-għarfien ewlieni, forsi? 70 00:04:04,000 --> 00:04:07,000 Kulħadd fil-livelli kollha. 71 00:04:07,000 --> 00:04:09,000 Okay, ejja jieħu pass lura. 72 00:04:09,000 --> 00:04:11,000 Iddeskrivi jingħaqdu sort fi kliem tiegħek. 73 00:04:11,000 --> 00:04:15,000 Kif ma taħdem? 74 00:04:15,000 --> 00:04:17,000 Okay, aħna ser ringiela lura għal 0 ġimgħa. 75 00:04:17,000 --> 00:04:19,000 Okay, yeah. 76 00:04:19,000 --> 00:04:22,000 [Inaudible-istudent] 77 00:04:22,000 --> 00:04:26,000 Okay, tajba, hekk aħna maqsuma l-firxa ta 'numri fil 2 biċċiet. 78 00:04:26,000 --> 00:04:29,000 Aħna magħżula kull waħda minn dawk il-biċċiet, u allura aħna magħquda magħhom, 79 00:04:29,000 --> 00:04:33,000 u Rajna din l-idea qabel ta 'teħid problema li l-din big 80 00:04:33,000 --> 00:04:36,000 u tqattiegħ it up fis-problema li l-din kbar jew dan kbar. 81 00:04:36,000 --> 00:04:38,000 >> Recall-eżempju ktieb tat-telefon. 82 00:04:38,000 --> 00:04:42,000 Recall-algoritmu awto-għadd minn ġimgħat ilu, 83 00:04:42,000 --> 00:04:45,000 sort hekk jingħaqdu ġie sintetizzat minn din pseudocode hawn. 84 00:04:45,000 --> 00:04:48,000 Meta inti qed tingħata l-elementi n, l-ewwel kien sanità check. 85 00:04:48,000 --> 00:04:51,000 Jekk n <2 allura ma tagħmel xejn fil-livelli kollha 86 00:04:51,000 --> 00:04:55,000 għaliex jekk n <2 allura n hija ovvjament 0 jew 1, 87 00:04:55,000 --> 00:04:57,000 u hekk jekk huwa jew 0 jew 1 hemm xejn biex issolvi. 88 00:04:57,000 --> 00:04:59,000 Inti qed isir. 89 00:04:59,000 --> 00:05:01,000 Lista tiegħek huwa diġà trivially magħżula. 90 00:05:01,000 --> 00:05:04,000 Imma inkella jekk inti stajt ltqajna 2 jew aktar elementi jimxi 'l quddiem u jaqsmuhom 91 00:05:04,000 --> 00:05:06,000 fis-2 nofsijiet, tax-xellug u tal-lemin. 92 00:05:06,000 --> 00:05:09,000 Sort kull wieħed minn dawk nofsijiet, u mbagħad jingħaqdu l nofsijiet magħżula. 93 00:05:09,000 --> 00:05:13,000 Iżda l-problema hawn hija li ewwel daqqa t'għajn dan iħoss simili aħna qed punting. 94 00:05:13,000 --> 00:05:17,000 Din hija definizzjoni ċirkulari li jekk stajt talab li inti sort dawn l-elementi n 95 00:05:17,000 --> 00:05:22,000 u int javżak me "Kull dritt, multa, aħna ser sort dawk l-elementi n / 2 u dawk n / 2," 96 00:05:22,000 --> 00:05:27,000 imbagħad mistoqsija li jmiss tiegħi se tkun "Multa, kif taħseb sort l-n / 2 elementi?" 97 00:05:27,000 --> 00:05:30,000 >> Iżda minħabba l-istruttura ta 'dan il-programm, 98 00:05:30,000 --> 00:05:33,000 minħabba li hemm din il-bażi, biex ngħidu hekk, 99 00:05:33,000 --> 00:05:39,000 F'dan il-każ speċjali li tgħid jekk n huwa 00:05:42,000 Ma jirrispondu mal din ir-risposta ċirkolari istess. 101 00:05:42,000 --> 00:05:46,000 Dan il-proċess, dan ċikli eventwalment se jispiċċaw. 102 00:05:46,000 --> 00:05:50,000 Jekk Nitlobkom "Sort dawn l-elementi n," u inti tgħidli, "Fine, sort dawn n / 2," 103 00:05:50,000 --> 00:05:53,000 imbagħad inti tgħidli, "Fine, sort dawn n / 4, n / 8, n/16," 104 00:05:53,000 --> 00:05:56,000 eventwalment inti ser jaqsam minn numru kbir biżżejjed 105 00:05:56,000 --> 00:05:59,000 li inti ser ikollok xellug element biss 1, f'liema punt inti tista 'tgħid, 106 00:05:59,000 --> 00:06:02,000 "Hawnhekk, hawn huwa element wieħed magħżula." 107 00:06:02,000 --> 00:06:06,000 Imbagħad il-brilliance ta 'dan algoritmu sa hawnhekk huwa li ġejjin mill-fatt 108 00:06:06,000 --> 00:06:09,000 li ladarba inti għandek kollha ta 'dawn il-listi individwalment magħżula, 109 00:06:09,000 --> 00:06:12,000 li kollha huma ta 'daqs 1, li jidher li jkun inutli, 110 00:06:12,000 --> 00:06:15,000 ladarba tibda qed jingħaqdu magħhom u l-amalgamazzjoni tagħhom 111 00:06:15,000 --> 00:06:19,000 inti jibnu finalment kif Rob għamlet fil-video lista finalment magħżula. 112 00:06:19,000 --> 00:06:22,000 >> Iżda din l-idea testendi lil hinn issortjar. 113 00:06:22,000 --> 00:06:26,000 Hemm din l-idea inkorporat f'dan il-programm magħruf bħala recursion, 114 00:06:26,000 --> 00:06:29,000 l-idea li biha inti programm, 115 00:06:29,000 --> 00:06:32,000 u biex isolvu xi problema inti sejħa lilek innifsek, 116 00:06:32,000 --> 00:06:36,000 jew imqegħda fil-kuntest tal-ipprogrammar ta 'lingwi inti funzjoni, 117 00:06:36,000 --> 00:06:39,000 u sabiex issolvi problema, inti l-funzjoni sejħa lilek innifsek 118 00:06:39,000 --> 00:06:42,000 ġdid u għal darb'oħra u għal darb'oħra, imma int l-funzjoni 119 00:06:42,000 --> 00:06:44,000 ma jistgħux jikkontestaw lilek innifsek drabi infinitament ħafna. 120 00:06:44,000 --> 00:06:47,000 Eventwalment inti għandek qiegħ barra, biex ngħidu hekk, 121 00:06:47,000 --> 00:06:49,000 u għandek xi kundizzjoni bażi hard-kodifikati li tgħid 122 00:06:49,000 --> 00:06:53,000 f'dan il-punt niefqu milli nsejħulha ruħek sabiex il-proċess kollu 123 00:06:53,000 --> 00:06:56,000 finalment ma fil-fatt jieqfu. 124 00:06:56,000 --> 00:06:58,000 Xi jfisser dan verament tfisser, għall recurse? 125 00:06:58,000 --> 00:07:01,000 >> Ejja naraw jekk nistgħu nagħmlu sempliċi, eżempju wieħed trivjali ma ', ngħidu aħna, 126 00:07:01,000 --> 00:07:03,000 3 persuni me up hawn fuq il-palk, jekk xi ħadd ikun komdu. 127 00:07:03,000 --> 00:07:06,000 1, come fuq up, 2 u 3. 128 00:07:06,000 --> 00:07:09,000 Jekk inti tixtieq li toħroġ 3 up here. 129 00:07:09,000 --> 00:07:12,000 Jekk inti tixtieq li toqgħod dritt li jmiss lili hawn fil-linja, ejja ngħidu li l-problema in kwistjoni 130 00:07:12,000 --> 00:07:15,000 huwa ferm trivially jgħodd in-numru ta 'nies li huma hawnhekk. 131 00:07:15,000 --> 00:07:18,000 Iżda franchement, jien għajjien ta 'dawn eżempji għadd. 132 00:07:18,000 --> 00:07:21,000 Dan ser jieħu xi żmien, 1, 2, u dot, dot, dot. 133 00:07:21,000 --> 00:07:23,000 Huwa ser jieħu dejjem. 134 00:07:23,000 --> 00:07:25,000 I d pjuttost biss Punt din il-problema għal kollox bl-għajnuna ta 'liema l-isem tiegħek? 135 00:07:25,000 --> 00:07:27,000 Sara. >> Sara, id-dritt. 136 00:07:27,000 --> 00:07:29,000 Kelly. >> Kelly u? 137 00:07:29,000 --> 00:07:31,000 >> Willy. >> Willy, Sara, Kelly, u Willy. 138 00:07:31,000 --> 00:07:34,000 Dritt issa I ġew staqsa l-mistoqsija minn xi ħadd 139 00:07:34,000 --> 00:07:37,000 kif ħafna nies huma fuq dan l-istadju, u għandi l-ebda idea. 140 00:07:37,000 --> 00:07:40,000 Din hija lista verament twila, u għalhekk minflok jien ser jagħmlu dan trick. 141 00:07:40,000 --> 00:07:43,000 Jien ser titlob lill-persuna li jmiss lili biex jagħmlu ħafna mix-xogħol, 142 00:07:43,000 --> 00:07:46,000 u ladarba hi qed isir tagħmel ħafna mix-xogħol 143 00:07:46,000 --> 00:07:49,000 Jien ser jagħmlu l-inqas ammont ta 'xogħol possibbli u biss żid 1 144 00:07:49,000 --> 00:07:51,000 għal dak kollu tweġiba tagħha huwa, so here we go. 145 00:07:51,000 --> 00:07:54,000 Stajt ġew mitluba kif ħafna nies huma fuq il-palk. 146 00:07:54,000 --> 00:07:57,000 Kif ħafna nies huma fuq il-palk lejn ix-xellug tal inti? 147 00:07:57,000 --> 00:08:00,000 Ix-xellug ta 'lili? >> Okay, iżda ma iqarrqu. 148 00:08:00,000 --> 00:08:04,000 Li tajjeb, li l-korretta, imma jekk irridu li tkompli din il-loġika 149 00:08:04,000 --> 00:08:08,000 ejja nassumu li inti simili trid Punt din il-problema fuq ix-xellug tal inti, 150 00:08:08,000 --> 00:08:11,000 hekk minflok tweġiba direttament jimxi 'l quddiem u biss jgħaddu l-Buck. 151 00:08:11,000 --> 00:08:14,000 Oh, kif ħafna nies huma fuq ix-xellug ta 'lili? 152 00:08:14,000 --> 00:08:16,000 Kif ħafna nies huma fuq ix-xellug? 153 00:08:16,000 --> 00:08:18,000 1. 154 00:08:18,000 --> 00:08:27,000 [Daħk] 155 00:08:27,000 --> 00:08:30,000 Okay, hekk 0, iva, liema issa Willy għamlet 156 00:08:30,000 --> 00:08:33,000 huwa inti ħadthom lura tweġiba tiegħek f'din id-direzzjoni qal 0. 157 00:08:33,000 --> 00:08:36,000 Issa, x'għandek tagħmel? >> 1. 158 00:08:36,000 --> 00:08:39,000 Okay, hekk int l-1, sabiex inti tgħid, "Kull dritt, jien ser żid 1 159 00:08:39,000 --> 00:08:41,000 għal dak kollu għadd Willy kien, "sabiex 1 + 0. 160 00:08:41,000 --> 00:08:43,000 Inti issa 1 sabiex it-tweġiba tiegħek għall-dritt huwa issa ' 161 00:08:43,000 --> 00:08:45,000 1. >> U minjiera tkun 2. 162 00:08:45,000 --> 00:08:48,000 Tajjeb, hekk int tieħu l-risposta preċedenti tal-1, 163 00:08:48,000 --> 00:08:51,000 żżid l-ammont minimu ta 'xogħol li inti trid tagħmel, li huwa 1. 164 00:08:51,000 --> 00:08:55,000 Inti issa għandhom 2, u inti mbagħad idejn lili li valur? 165 00:08:55,000 --> 00:08:57,000 3, I mean, sorry, 2. 166 00:08:57,000 --> 00:08:59,000 Tajba. 167 00:08:59,000 --> 00:09:02,000 >> Well, kellna 0 ix-xellug. 168 00:09:02,000 --> 00:09:05,000 Imbagħad kellna 1, u allura aħna żid 2, 169 00:09:05,000 --> 00:09:07,000 u issa int għoti me-numru 2, 170 00:09:07,000 --> 00:09:10,000 u hekk jien tgħid, okay, 1, 3. 171 00:09:10,000 --> 00:09:13,000 Hemm tabilħaqq 3 min-nies bil-wieqfa li jmiss lili fuq dan l-istadju, 172 00:09:13,000 --> 00:09:16,000 hekk aħna seta ovvjament għamlu dan ħafna linearment, 173 00:09:16,000 --> 00:09:19,000 ħafna fil-moda ovvju, imma dak ma aħna verament do? 174 00:09:19,000 --> 00:09:21,000 Aħna ħa problema ta 'daqs 3 inizjalment. 175 00:09:21,000 --> 00:09:24,000 Aħna mbagħad kissru l-isfel fis-problema ta 'daqs 2, 176 00:09:24,000 --> 00:09:27,000 imbagħad problema ta 'daqs 1, u mbagħad finalment l-każ bażi 177 00:09:27,000 --> 00:09:29,000 Kien verament, oh, hemm ebda waħda hemm, 178 00:09:29,000 --> 00:09:33,000 f'liema punt Willy lura effettiv risposta hard-kodifikati koppja ta 'drabi, 179 00:09:33,000 --> 00:09:36,000 u t-tieni waħda kienet imbagħad effervexxentement up, effervexxentement up, effervexxentement up, 180 00:09:36,000 --> 00:09:39,000 u mbagħad billi żżid f'dan 1 1 addizzjonali 181 00:09:39,000 --> 00:09:41,000 konna implimentati din l-idea bażika ta 'recursion. 182 00:09:41,000 --> 00:09:44,000 >> Issa, f'dan il-każ hija ma verament issolvi problema 183 00:09:44,000 --> 00:09:46,000 kwalunkwe aktar effettiv allura Rajna s'issa. 184 00:09:46,000 --> 00:09:48,000 Imma naħseb dwar l-algoritmi li aħna ghamilt fuq il-palk s'issa. 185 00:09:48,000 --> 00:09:51,000 Kellna 8 biċċiet tal-karti fuq il-chalkboard, 186 00:09:51,000 --> 00:09:55,000 fuq video meta Sean kienet qed tfittex għall-numru 7, u dak li ma hu verament do? 187 00:09:55,000 --> 00:09:58,000 Ukoll, huwa ma jagħmel ebda tip ta 'qasma u conquer. 188 00:09:58,000 --> 00:10:01,000 Hu ma tagħmel xi tip ta 'recursion. 189 00:10:01,000 --> 00:10:03,000 Pjuttost hu biss ma dan algoritmu lineari. 190 00:10:03,000 --> 00:10:07,000 Imma meta aħna introduċiet l-idea ta 'numri magħżula fuq il-palk jgħixu ġimgħa li għaddiet 191 00:10:07,000 --> 00:10:09,000 allura kellna din istint ta 'ser-nofs, 192 00:10:09,000 --> 00:10:13,000 f'liema punt kellna lista iżgħar ta 'daqs 4 jew lista oħra ta' daqs 4, 193 00:10:13,000 --> 00:10:17,000 u allura kellna l-istess problema eżatt, hekk aħna ripetut, ripetuta, ripetuta. 194 00:10:17,000 --> 00:10:19,000 Fi kliem ieħor, aħna recursed. 195 00:10:19,000 --> 00:10:24,000 Grazzi ħafna għal 3 voluntiera tagħna hawn biex juru recursion magħna. 196 00:10:24,000 --> 00:10:28,000 >> Ejja naraw jekk aħna ma tistax tagħmel dan issa konkret ftit aktar, 197 00:10:28,000 --> 00:10:30,000 isolvi problema li għal darb'oħra stajna nagħmlu pjuttost faċilment, 198 00:10:30,000 --> 00:10:34,000 iżda aħna ser jużawha bħala pass lejn implimentazzjoni ta 'dan l-idea bażika. 199 00:10:34,000 --> 00:10:37,000 Jekk irrid biex tiġi kkalkulata l-għadd totali tal-mazz ta 'numri, 200 00:10:37,000 --> 00:10:39,000 per eżempju, jekk inti tgħaddi fin-numru 3, 201 00:10:39,000 --> 00:10:42,000 Irrid li jtik l-valur tal sigma 3, 202 00:10:42,000 --> 00:10:46,000 hekk is-somma ta 3 + 2 + 1 + 0. 203 00:10:46,000 --> 00:10:48,000 Irrid li terġa 'lura l-risposta 6, 204 00:10:48,000 --> 00:10:51,000 hekk aħna ser timplimenta din il-funzjoni sigma, din il-funzjoni kalkolu totali 205 00:10:51,000 --> 00:10:54,000 li, għal darb'oħra, jieħu fil-input, u mbagħad jirritorna l-għadd totali 206 00:10:54,000 --> 00:10:57,000 ta 'dak in-numru it-triq kollha sa 0. 207 00:10:57,000 --> 00:10:59,000 Nistgħu nagħmlu dan pretty sempliċi, id-dritt? 208 00:10:59,000 --> 00:11:01,000 Stajna nagħmlu dan ma 'xi tip ta' struttura looping, 209 00:11:01,000 --> 00:11:04,000 so let me imorru quddiem u tikseb dan beda. 210 00:11:04,000 --> 00:11:07,000 >> Inkludi stdio.h. 211 00:11:07,000 --> 00:11:09,000 Let me nikseb myself fis ewlenija biex jaħdmu ma 'hawn. 212 00:11:09,000 --> 00:11:12,000 Ejja tiffranka dan bħala sigma.c. 213 00:11:12,000 --> 00:11:14,000 Imbagħad jien se jmorru fil hawn, u jien ser tiddikjara n int, 214 00:11:14,000 --> 00:11:18,000 u jien ser tagħmel dan li ġej waqt li l-utent ma jikkooperax. 215 00:11:18,000 --> 00:11:22,000 Filwaqt li l-utent ma jkunx tani numru pożittiv 216 00:11:22,000 --> 00:11:26,000 let me imorru quddiem u twassalhom għal n = GetInt, 217 00:11:26,000 --> 00:11:28,000 u let me tagħtihom xi struzzjonijiet dwar x'għandek tagħmel, 218 00:11:28,000 --> 00:11:33,000 hekk printf ("numru sħiħ pożittiv jekk jogħġbok"). 219 00:11:33,000 --> 00:11:39,000 Just xi ħaġa relattivament sempliċi bħal dan hekk li mill-ħin aħna hit-linja 14 220 00:11:39,000 --> 00:11:42,000 issa għandna numru sħiħ pożittiv preżumibbilment n. 221 00:11:42,000 --> 00:11:44,000 >> Issa ejja nagħmlu xi ħaġa magħha. 222 00:11:44,000 --> 00:11:50,000 Let me imorru quddiem u kkalkulata l-kalkolu totali, hekk int somma = sigma (n). 223 00:11:50,000 --> 00:11:54,000 Sigma huwa biss kalkolu totali, hekk jien biss bil-miktub fil-mod fancier. 224 00:11:54,000 --> 00:11:56,000 Aħna ser biss sejħa hija sigma hemmhekk. 225 00:11:56,000 --> 00:11:58,000 Dik hija s-somma, u issa jien ser jistampa r-riżultat, 226 00:11:58,000 --> 00:12:08,000 printf ("Is-somma hija% d \ n", somma). 227 00:12:08,000 --> 00:12:11,000 U allura jien ser jirritorna 0 għal miżura tajba. 228 00:12:11,000 --> 00:12:15,000 Aħna ghamilt dak kollu li dan il-programm tirrikjedi ħlief il-parti interessanti, 229 00:12:15,000 --> 00:12:18,000 li huwa li fil-fatt jimplimentaw il-funzjoni sigma. 230 00:12:18,000 --> 00:12:22,000 >> Let me jinżlu hawn sal-qiegħ, u let me tiddikjara funzjoni sigma. 231 00:12:22,000 --> 00:12:26,000 Huwa ltqajna biex jieħdu varjabbli li ta 'numru sħiħ tip, 232 00:12:26,000 --> 00:12:30,000 u liema tip ta 'data ma nixtieq li jirritornaw preżumibbilment minn sigma? 233 00:12:30,000 --> 00:12:34,000 Int, minħabba I tixtieq li jilħqu l-aspettattivi tiegħi fuq il-linja 15. 234 00:12:34,000 --> 00:12:37,000 Fil hawn let me go l quddiem u jimplimentaw din 235 00:12:37,000 --> 00:12:41,000 b'mod pjuttost sempliċi. 236 00:12:41,000 --> 00:12:45,000 >> Ejja imorru quddiem u jgħidu somma int = 0, 237 00:12:45,000 --> 00:12:47,000 u issa jien se jmorru jkollhom ftit loop hawn 238 00:12:47,000 --> 00:12:50,000 li għaddej biex ngħid xi ħaġa bħal din, 239 00:12:50,000 --> 00:13:01,000 għal (i int = 0; I <= in-numru; i + +) somma + = i. 240 00:13:01,000 --> 00:13:05,000 U mbagħad jien ser jirritorna somma. 241 00:13:05,000 --> 00:13:07,000 I jistgħu jkunu implimentaw din fi kwalunkwe numru ta 'modi. 242 00:13:07,000 --> 00:13:09,000 I setgħet tuża loop waqt. 243 00:13:09,000 --> 00:13:11,000 I setgħet tinqabeż jużaw il-varjabbli somma jekk jien verament riedu, 244 00:13:11,000 --> 00:13:15,000 iżda fil-qosor, aħna biss għandhom funzjoni li jekk jien ma goof tiddikjara somma hija 0. 245 00:13:15,000 --> 00:13:18,000 Imbagħad ttenni minn 0 fil sa permezz-numru, 246 00:13:18,000 --> 00:13:23,000 u fuq kull iterazzjoni hija żżid li l-valur attwali biex somma u mbagħad jirritornaha somma. 247 00:13:23,000 --> 00:13:25,000 >> Issa, hemm ottimizzazzjoni żgħir hawn. 248 00:13:25,000 --> 00:13:29,000 Din hija probabbilment pass moħlija, iżda dan ikun hekk. Dik il-multa għal issa. 249 00:13:29,000 --> 00:13:32,000 Aħna l-inqas tkun bir-reqqa u jmorru 0 it-triq kollha fuq up. 250 00:13:32,000 --> 00:13:34,000 Mhux iebsa ħafna u pjuttost sempliċi, 251 00:13:34,000 --> 00:13:37,000 iżda jirriżulta li l-funzjoni sigma għandna l-istess opportunità 252 00:13:37,000 --> 00:13:39,000 kif għamilna hawn fuq il-palk. 253 00:13:39,000 --> 00:13:42,000 Fuq il-palk aħna biss magħduda kif ħafna nies kienu jmiss lili, 254 00:13:42,000 --> 00:13:47,000 iżda minflok jekk ridna li jgħodd in-numru 3 + 2 + 1 255 00:13:47,000 --> 00:13:51,000 fuq l isfel għal 0 nistgħu simili Punt għal funzjoni 256 00:13:51,000 --> 00:13:55,000 li jien ser minflok tiddeskrivi bħala rikursivi. 257 00:13:55,000 --> 00:13:57,000 Hawn ejja do a sanità malajr jivverifika u kun żgur I ma goof. 258 00:13:57,000 --> 00:14:00,000 >> Naf li hemm mill-inqas ħaġa waħda f'dan il-programm li jien ma do wrong. 259 00:14:00,000 --> 00:14:04,000 Meta I hit jidħol jien se tikseb kull tip ta 'yelling fil lili? 260 00:14:04,000 --> 00:14:06,000 What am I se jkunu għajjat ​​fil dwar? 261 00:14:06,000 --> 00:14:11,000 Yeah, I nesa l-prototip, hekk jien jużaw funzjoni msejħa sigma fuq il-linja 15, 262 00:14:11,000 --> 00:14:16,000 iżda mhux dikjarat sat linja 22, so I aħjar b'mod proattiv go up here 263 00:14:16,000 --> 00:14:22,000 u tiddikjara prototip, u jien ser ngħid int sigma (int numru), u li hu. 264 00:14:22,000 --> 00:14:24,000 Huwa implimentati fil-qiegħ. 265 00:14:24,000 --> 00:14:27,000 >> Jew mod ieħor I tista 'ssolvi din il- 266 00:14:27,000 --> 00:14:30,000 I jistgħu jimxu l-funzjoni up hemm, li mhix ħażina, 267 00:14:30,000 --> 00:14:32,000 iżda mill-inqas meta programmi tiegħek tibda tikseb twil, franchement, 268 00:14:32,000 --> 00:14:35,000 Naħseb li hemm xi valur fil dejjem wara prinċipali fil-quċċata 269 00:14:35,000 --> 00:14:38,000 b'tali mod li inti fil-qarrej jista 'tiftaħ il-fajl u mbagħad minnufih tara 270 00:14:38,000 --> 00:14:40,000 dak il-programm qed tagħmel mingħajr ma jkollhom tfittxija permezz ta 'dan 271 00:14:40,000 --> 00:14:42,000 tfittex għal dik il-funzjoni prinċipali. 272 00:14:42,000 --> 00:14:49,000 Ejja jinżlu għal tieqa terminal tiegħi hawnhekk, jippruvaw jagħmlu sigma jagħmlu sigma, 273 00:14:49,000 --> 00:14:51,000 u I invitat up hawnhekk ukoll. 274 00:14:51,000 --> 00:14:55,000 Dikjarazzjoni impliċita ta GetInt funzjoni ifisser li stajt insejt biex jagħmlu x'iktar? 275 00:14:55,000 --> 00:14:57,000 [Inaudible-istudent] 276 00:14:57,000 --> 00:15:00,000 Tajba, hekk apparentement żball komuni, hekk ejja tpoġġi dan up hawn, 277 00:15:00,000 --> 00:15:04,000 cs50.h, u issa ejja mur lura għall-tieqa terminal tiegħi. 278 00:15:04,000 --> 00:15:08,000 >> I ser ċar l-iskrin, u jien ser terġa 'ssir jagħmlu sigma. 279 00:15:08,000 --> 00:15:11,000 Jidher li ikkumpilata. Let me issa run sigma. 280 00:15:11,000 --> 00:15:15,000 I ser tip fil-numru 3, u jien ma nikseb 6, u għalhekk mhux kontroll rigoruża, 281 00:15:15,000 --> 00:15:18,000 iżda mill-inqas jidher li tkun qed taħdem ewwel daqqa t'għajn, iżda issa ejja RIP l barra, 282 00:15:18,000 --> 00:15:21,000 u ejja fatt jwieżen l-idea ta 'recursion, għal darb'oħra, 283 00:15:21,000 --> 00:15:24,000 f'kuntest sempliċi ħafna sabiex fil-ħin ftit ġimgħat " 284 00:15:24,000 --> 00:15:27,000 meta aħna tibda tesplora l-istrutturi tad-data fancier minn matriċi 285 00:15:27,000 --> 00:15:30,000 għandna ieħor għodda fil-toolkit li biex 286 00:15:30,000 --> 00:15:33,000 jimmanipulaw dawk l-istrutturi tad-data kif Ser naraw. 287 00:15:33,000 --> 00:15:36,000 Dan huwa l-approċċ iterattiv, l-approċċ loop-based. 288 00:15:36,000 --> 00:15:39,000 >> Let me minflok issa jagħmlu dan. 289 00:15:39,000 --> 00:15:44,000 Let me minflok jgħidu li l-kalkolu totali ta 'numru 290 00:15:44,000 --> 00:15:48,000 fuq l isfel għal 0 huwa verament l-istess ħaġa bħat 291 00:15:48,000 --> 00:15:53,000 Numru + sigma (numru - 1). 292 00:15:53,000 --> 00:15:57,000 Fi kliem ieħor, l-istess bħal fuq l-istadju I punted lil kull wieħed mill-persuni li jmiss lili, 293 00:15:57,000 --> 00:16:00,000 u huma mbagħad miżmuma punting sakemm aħna finalment qiegħ barra fil Willy, 294 00:16:00,000 --> 00:16:03,000 li kellhom jirritornaw risposta hard-kodifikati like 0. 295 00:16:03,000 --> 00:16:07,000 Hawnhekk Issa aħna qed simili punting li sigma 296 00:16:07,000 --> 00:16:10,000 l-istess funzjoni kif kien oriġinarjament imsejjaħ, iżda l-għarfien ċavetta hawn 297 00:16:10,000 --> 00:16:12,000 hija li aħna mhux qed titlob sigma identiku. 298 00:16:12,000 --> 00:16:14,000 Aħna ma tgħaddi fis n. 299 00:16:14,000 --> 00:16:17,000 Aħna ċar li tgħaddi fin-numru - 1, 300 00:16:17,000 --> 00:16:20,000 hekk problema kemmxejn iżgħar, il-problema kemmxejn iżgħar. 301 00:16:20,000 --> 00:16:23,000 >> Sfortunatament, dan mhux pjuttost soluzzjoni għadhom, u qabel we tiffissa 302 00:16:23,000 --> 00:16:26,000 dak li jista 'jaqbeż kif ovvji f'xi minnkom 303 00:16:26,000 --> 00:16:28,000 let me imorru quddiem u terġa 'ssir jagħmlu. 304 00:16:28,000 --> 00:16:30,000 Jidher li jikkompilaw okay. 305 00:16:30,000 --> 00:16:32,000 Let me terġa 'ssir sigma mal 6. 306 00:16:32,000 --> 00:16:37,000 Whoops, let me terġa 'ssir sigma mal 6. 307 00:16:37,000 --> 00:16:42,000 Imxejna rajt dan qabel, għalkemm iż-żmien aċċidentalment aħħar ukoll. 308 00:16:42,000 --> 00:16:48,000 Għaliex ma I nikseb dan tort segmentazzjoni cryptic? Yeah. 309 00:16:48,000 --> 00:16:50,000 [Inaudible-istudent] 310 00:16:50,000 --> 00:16:53,000 M'hemm l-ebda każ ta 'bażi, u b'mod aktar speċifiku, dak li probabbilment ġara? 311 00:16:53,000 --> 00:16:58,000 Dan huwa sintomu ta 'liema komportament? 312 00:16:58,000 --> 00:17:00,000 Jgħidu li ftit louder. 313 00:17:00,000 --> 00:17:02,000 [Inaudible-istudent] 314 00:17:02,000 --> 00:17:05,000 Huwa ta 'loop infinita b'mod effettiv, u l-problema ma' linji infinita 315 00:17:05,000 --> 00:17:08,000 meta dawn jinvolvu recursion f'dan il-każ, funzjoni li ssejjaħ lilha nnifisha, 316 00:17:08,000 --> 00:17:10,000 dak li jiġri kull darba li inti sejħa funzjoni? 317 00:17:10,000 --> 00:17:13,000 Ukoll, think lura għal kif aħna stabbiliti l-memorja fil-kompjuter. 318 00:17:13,000 --> 00:17:16,000 Aħna qal li hemm dan blokki ta 'memorja imsejjaħ il-munzell li l-fil-qiegħ, 319 00:17:16,000 --> 00:17:19,000 u kull darba li inti sejħa funzjoni ta 'memorja ftit aktar gets mqiegħda 320 00:17:19,000 --> 00:17:24,000 fuq din il-munzell hekk imsejħa fih varjabbli lokali li funzjoni jew l-parametri, 321 00:17:24,000 --> 00:17:27,000 hekk jekk sigma sejħiet sejħiet sigma sigma jitlob sigma 322 00:17:27,000 --> 00:17:29,000  jitlob sigma fejn ma dan il-għan l-istorja? 323 00:17:29,000 --> 00:17:31,000 >> Ukoll, huwa eventwalment żejda l-ammont totali 324 00:17:31,000 --> 00:17:33,000 ta 'memorja li inti għandek disponibbli għall-kompjuter tiegħek. 325 00:17:33,000 --> 00:17:37,000 Inti qbiż-segment li int suppost li toqgħod fi, 326 00:17:37,000 --> 00:17:40,000 u ikollok dan tort segmentazzjoni, qalba iddampjati, 327 00:17:40,000 --> 00:17:43,000 u liema qalba dumped ifisser huwa li jien issa jkollhom fajl imsejjaħ qalba 328 00:17:43,000 --> 00:17:46,000 li huwa fajl li jkun fih żero u dawk 329 00:17:46,000 --> 00:17:49,000 li attwalment fil-futur se tkun diagnostically utli. 330 00:17:49,000 --> 00:17:52,000 Jekk mhuwiex ovvju li inti fejn bug tiegħek 331 00:17:52,000 --> 00:17:54,000 inti tista 'attwalment tagħmel daqsxejn ta' analiżi forensika, biex ngħidu hekk, 332 00:17:54,000 --> 00:17:58,000 dwar dan il-fajl dump qalba, li, għal darb'oħra, huwa biss mazz sħiħ ta 'żero u dawk 333 00:17:58,000 --> 00:18:02,000 li essenzjalment jirrappreżenta l-istat tal-programm tiegħek fil-memorja 334 00:18:02,000 --> 00:18:05,000 il-mument li ġġarraf b'dan il-mod. 335 00:18:05,000 --> 00:18:11,000 >> Il-jiffissaw hawnhekk hija li ma nistgħux biss bl-addoċċ jirritorna sigma, 336 00:18:11,000 --> 00:18:14,000 in-numru + sigma ta 'problema kemmxejn iżgħar. 337 00:18:14,000 --> 00:18:16,000 Għandna bżonn li jkollhom xi tip ta 'każ bażi hawnhekk, 338 00:18:16,000 --> 00:18:19,000 u dak li għandu l-każ bażiku probabbilment tkun? 339 00:18:19,000 --> 00:18:22,000 [Inaudible-istudent] 340 00:18:22,000 --> 00:18:25,000 Okay, sakemm in-numru huwa pożittiv għandna attwalment jirritorna din, 341 00:18:25,000 --> 00:18:29,000 jew fi kliem ieħor, huwa n-numru jekk, ngħidu aħna, <= għal 0 342 00:18:29,000 --> 00:18:32,000 inti taf liema, jien ser imorru quddiem u lura 0, 343 00:18:32,000 --> 00:18:36,000 ferm simili Willy ma, u inkella, jien ser jimxi 'l quddiem 344 00:18:36,000 --> 00:18:41,000 u rritorna din, dan mhuwiex li ħafna iqsar 345 00:18:41,000 --> 00:18:44,000 mill-verżjoni iterattiv li aħna bit-tarjola up ewwel użu ta 'għall-loop, 346 00:18:44,000 --> 00:18:48,000 imma avviż li hemm din it-tip ta 'eleganti lilha. 347 00:18:48,000 --> 00:18:51,000 Minflok jirritornaw xi numru u jwettqu dan kollu matematika 348 00:18:51,000 --> 00:18:54,000 u żżid affarijiet up ma 'varjabbli lokali 349 00:18:54,000 --> 00:18:57,000 int minflok qal "Okay, jekk din hija problema faċli super, 350 00:18:57,000 --> 00:19:01,000 bħall-numru huwa <0, let me immedjatament jirritorna 0. " 351 00:19:01,000 --> 00:19:03,000 >> Aħna mhux se jolqot numri ta 'sostenn negattivi, 352 00:19:03,000 --> 00:19:05,000 hekk jien ser code hard-valur ta '0. 353 00:19:05,000 --> 00:19:08,000 Iżda mod ieħor, biex jimplimentaw din l-idea ta 'ġabra fil-qosor 354 00:19:08,000 --> 00:19:11,000 kollha ta 'dawn in-numri flimkien inti tista' effettivament tieħu gidma żgħir 355 00:19:11,000 --> 00:19:14,000 barra mill-problema, ħafna bħal għamilna hawn fuq il-palk, 356 00:19:14,000 --> 00:19:18,000 allura Punt il-bqija tal-problema lill-persuna li jmiss, 357 00:19:18,000 --> 00:19:20,000 imma f'dan il-każ il-persuna li jmiss huwa lilek innifsek. 358 00:19:20,000 --> 00:19:22,000 Huwa ta 'funzjoni identika jismu. 359 00:19:22,000 --> 00:19:25,000 Just tgħaddiha problema iżgħar u iżgħar kull darba, 360 00:19:25,000 --> 00:19:28,000 u anke jekk aħna għandna affarijiet mhux pjuttost formalizzati fil-kodiċi hawn 361 00:19:28,000 --> 00:19:33,000 dan huwa eżattament dak li kien għaddej fl-f'ġimgħa 0 mal-ktieb tat-telefon. 362 00:19:33,000 --> 00:19:36,000 Dan huwa eżattament dak li kien għaddej fil-ġimgħat li għaddew ma 'Sean 363 00:19:36,000 --> 00:19:39,000 u ma 'dimostrazzjonijiet tagħna ta' tiftix għal numri. 364 00:19:39,000 --> 00:19:42,000 Huwa jieħu problema u jiġi diviż mill-ġdid u għal darb'oħra. 365 00:19:42,000 --> 00:19:44,000 >> Fi kliem ieħor, hemm mod issa 'traduzzjoni 366 00:19:44,000 --> 00:19:47,000 din tibni dinja reali, dan tibni livell ogħla 367 00:19:47,000 --> 00:19:51,000 ta jaqsam u jirbħu u tagħmel xi ħaġa għal darb'oħra u għal darb'oħra 368 00:19:51,000 --> 00:19:56,000 fil-kodiċi, għalhekk din hija xi ħaġa aħna se tara mill-ġdid matul iż-żmien. 369 00:19:56,000 --> 00:20:00,000 Issa, bħala twarrib, jekk int ġodda għall recursion inti għandek inqas jifhmu issa 370 00:20:00,000 --> 00:20:02,000 għaliex dan huwa umoristiċi. 371 00:20:02,000 --> 00:20:05,000 Jien ser tmur google.com, 372 00:20:05,000 --> 00:20:17,000 u jien ser tfittex xi tips u tricks fuq recursion, jidħol. 373 00:20:17,000 --> 00:20:21,000 Għid il-persuna li jmiss lilek jekk dawn ma kinux laughing biss issa. 374 00:20:21,000 --> 00:20:23,000 Ridt tfisser recursion? 375 00:20:23,000 --> 00:20:25,000 Ridt tfisser 'ah, hemm we go. 376 00:20:25,000 --> 00:20:28,000 Okay, issa li l-bqija ta 'kulħadd. 377 00:20:28,000 --> 00:20:30,000 A bajd tal-Għid ftit inkorporat x'imkien hemmhekk fil-Google. 378 00:20:30,000 --> 00:20:33,000 Bħala twarrib, wieħed mill-links li nitfgħu fuq il-websajt tal-kors tal- 379 00:20:33,000 --> 00:20:36,000 għal-lum huwa biss dan grilja ta 'algoritmi issortjar varji, 380 00:20:36,000 --> 00:20:39,000 wħud minnhom ħarisna lejn il-ġimgħa li għaddiet, imma x'hemm sbieħ dwar dan viżwalizzazzjoni 381 00:20:39,000 --> 00:20:43,000 kif inti tipprova wrap moħħok madwar affarijiet varji relatati ma 'algoritmi 382 00:20:43,000 --> 00:20:46,000 taf li inti tista 'faċilment issa tibda ma' tipi differenti ta 'inputs. 383 00:20:46,000 --> 00:20:50,000 L-inputs kollha maqluba, l-inputs l-aktar magħżula, l-inputs każwali u ibqa 'sejjer hekk. 384 00:20:50,000 --> 00:20:53,000 Kif inti tipprova, għal darb'oħra, jiddistingwu dawn l-affarijiet fil-moħħ tiegħek 385 00:20:53,000 --> 00:20:57,000 jirrealizzaw li dan il-URL fuq il-websajt il-kors dwar il-paġna Lectures 386 00:20:57,000 --> 00:21:00,000 jistgħu jgħinuk raġuni permezz xi wħud minn dawk. 387 00:21:00,000 --> 00:21:05,000 >> Illum aħna finalment nikseb biex issolvi din il-problema minn ftit lura, 388 00:21:05,000 --> 00:21:08,000 li kien li din il-funzjoni tpartit biss ma 'xogħol, 389 00:21:08,000 --> 00:21:12,000 u dak li kien il-problema fundamentali ma 'dan tpartit funzjoni, 390 00:21:12,000 --> 00:21:15,000 l-għan tagħha kien, għal darb'oħra, biex jiskambjaw valur hawn u hawn 391 00:21:15,000 --> 00:21:17,000 b'tali mod li dan jiġri? 392 00:21:17,000 --> 00:21:20,000 Dan ma attwalment jaħdmu. Għaliex? 393 00:21:20,000 --> 00:21:22,000 Yeah. 394 00:21:22,000 --> 00:21:28,000 [Inaudible-istudent] 395 00:21:28,000 --> 00:21:31,000 Eżattament, l-ispjegazzjoni għal din bugginess 396 00:21:31,000 --> 00:21:34,000 sempliċement għaliex kien meta inti sejħa funzjonijiet C 397 00:21:34,000 --> 00:21:38,000 u dawk il-funzjonijiet jieħdu l-argumenti, bħal aub hawn, 398 00:21:38,000 --> 00:21:42,000 inti tgħaddi kopji ta 'kwalunkwe valur int jipprovdu għal dik il-funzjoni. 399 00:21:42,000 --> 00:21:46,000 Inti ma jipprovdix il-valuri oriġinali infushom, 400 00:21:46,000 --> 00:21:49,000 hekk aħna raw dan fil-kuntest ta 'buggyc, 401 00:21:49,000 --> 00:21:52,000 buggy3.c, li ħares ftit xi ħaġa bħal din. 402 00:21:52,000 --> 00:21:57,000 >> Ifakkar li kellna x uy initialized għal 1 u 2, rispettivament. 403 00:21:57,000 --> 00:21:59,000 Aħna mbagħad stampat dak li kienu. 404 00:21:59,000 --> 00:22:03,000 I imbagħad sostna li kien I iskambji lilhom billi ċċempel tpartit ta 'x, y. 405 00:22:03,000 --> 00:22:06,000 Iżda l-problema kienet li l-iskambji maħduma, 406 00:22:06,000 --> 00:22:10,000 iżda biss fl-ambitu tal-iswap jaħdem innifsu. 407 00:22:10,000 --> 00:22:13,000 Hekk kif aħna hit-linja 40 dawk il-valuri biddlu 408 00:22:13,000 --> 00:22:16,000 kienu tintrema, u għalhekk xejn 409 00:22:16,000 --> 00:22:21,000 fil-funzjoni oriġinali ewlenija kienet attwalment nbidel f'xejn, 410 00:22:21,000 --> 00:22:26,000 hekk jekk taħseb lura mbagħad dwar din xi Dehra f'termini ta 'memorja tagħna 411 00:22:26,000 --> 00:22:29,000 jekk din in-naħa tax-xellug tal-bord tirrappreżenta ' 412 00:22:29,000 --> 00:22:33,000 u jien ser nagħmlu l-almu tiegħi għal kulħadd biex tara din il-jekk din in-naħa tax-xellug tal-bord 413 00:22:33,000 --> 00:22:37,000 jirrappreżenta, jiġifieri, RAM tiegħek, u l-munzell se jikbru fuq il b'dan il-mod, 414 00:22:37,000 --> 00:22:43,000 u aħna sejħa funzjoni simili ewlenija, u prinċipali għandu 2 varjabbli lokali, xuy, 415 00:22:43,000 --> 00:22:48,000 ejja jiddeskrivu dawk kif x hawnhekk, u ejja jiddeskrivu dawn bħala y hawn, 416 00:22:48,000 --> 00:22:55,000 u ejja tpoġġi fil-valuri 1 u 2, għalhekk dan hawnhekk hija prinċipali, 417 00:22:55,000 --> 00:22:58,000 u meta jitlob il-funzjoni prinċipali tpartit-sistema operattiva 418 00:22:58,000 --> 00:23:02,000 tagħti l-funzjoni tpartit radda tagħha stess ta 'memorja fuq il-munzell, 419 00:23:02,000 --> 00:23:04,000 qafas tagħha stess fuq il-munzell, biex ngħidu hekk. 420 00:23:04,000 --> 00:23:08,000 Hija wkoll jalloka 32 bits għal dawn ints. 421 00:23:08,000 --> 00:23:11,000 Dan jiġri li jsejħu lilhom aub, iżda li l-totalment arbitrarju. 422 00:23:11,000 --> 00:23:13,000 Dan seta 'talab minnhom tkun xi tkun trid, imma x'jiġri meta prinċipali 423 00:23:13,000 --> 00:23:19,000 jistieden tpartit huwa jieħu din 1, ipoġġi kopja hemmhekk, tpoġġi kopja hemmhekk. 424 00:23:19,000 --> 00:23:23,000 >> Hemm 1 varjabbli lokali oħra fl tpartit, għalkemm, imsejħa liema? TMP. >> 425 00:23:23,000 --> 00:23:27,000 TMP, so let me jagħtu myself ieħor bits 32 hawn, 426 00:23:27,000 --> 00:23:29,000 u dak li ma nagħmel f'dan il-funzjoni? 427 00:23:29,000 --> 00:23:34,000 I said TMP int gets, hekk tkun 1, so I ma 'dan meta aħna l-aħħar lagħbu dan l-eżempju. 428 00:23:34,000 --> 00:23:39,000 Imbagħad gets b, hekk b huwa 2, hekk issa dan isir 2, 429 00:23:39,000 --> 00:23:42,000 u issa b gets temperatura, għalhekk temperatura hija ta '1, 430 00:23:42,000 --> 00:23:44,000 hekk issa b isir dan. 431 00:23:44,000 --> 00:23:46,000 Li l-kbir. Hija ħadmet. 432 00:23:46,000 --> 00:23:49,000 Iżda mbagħad hekk kif il-prospetti funzjoni 433 00:23:49,000 --> 00:23:52,000 memorja swap b'mod effettiv tisparixxi sabiex ikun jista 'jiġi użat mill-ġdid 434 00:23:52,000 --> 00:23:58,000 minn xi funzjoni oħra fil-futur, u prinċipali hija ovvjament kompletament mingħajr tibdil. 435 00:23:58,000 --> 00:24:00,000 Għandna bżonn mod ta 'fundamentalment isolvi din il-problema, 436 00:24:00,000 --> 00:24:03,000 u llum aħna ser finalment ikollhom mod ta 'kif isir dan biha 437 00:24:03,000 --> 00:24:06,000 nistgħu jintroduċu xi ħaġa imsejħa pointer. 438 00:24:06,000 --> 00:24:09,000 Jirriżulta li nistgħu issolvi din il-problema 439 00:24:09,000 --> 00:24:12,000 mhux billi tgħaddi kopji ta 'xuy 440 00:24:12,000 --> 00:24:18,000 iżda minflok billi tgħaddi fil dak, taħseb, li l-funzjoni tpartit? 441 00:24:18,000 --> 00:24:20,000 Yeah, dak dwar l-indirizz? 442 00:24:20,000 --> 00:24:22,000 Aħna ma verament tkellem dwar l-indirizzi fid-dettall ħafna, 443 00:24:22,000 --> 00:24:25,000 imma jekk dan blackboard jirrappreżenta memorja tal-kompjuter tiegħi 444 00:24:25,000 --> 00:24:28,000 nistgħu ċertament tibda numerazzjoni-bytes fir RAM tiegħi 445 00:24:28,000 --> 00:24:31,000 u jgħidu dan huwa byte # 1, dan huwa byte # 2, byte # 3, 446 00:24:31,000 --> 00:24:35,000 byte # 4, byte # ... 2 biljun jekk Għandi 2 gigabytes ta 'RAM, 447 00:24:35,000 --> 00:24:38,000 hekk nistgħu ċertament toħroġ ma 'xi skema ta' numerazzjoni arbitrarja 448 00:24:38,000 --> 00:24:41,000 għall-bytes kollha individwali fil-memorja tal-kompjuter tiegħi. 449 00:24:41,000 --> 00:24:43,000 >> X'jiġri jekk minflok meta I call swap 450 00:24:43,000 --> 00:24:47,000 pjuttost milli jgħaddu kopji ta 'xuy 451 00:24:47,000 --> 00:24:51,000 għaliex ma I minflok jgħaddu fl-indirizz ta 'x hawnhekk, 452 00:24:51,000 --> 00:24:55,000 l-indirizz ta 'y hawn, essenzjalment l-indirizz postali 453 00:24:55,000 --> 00:24:59,000 ta 'xuy għaliex imbagħad tpartit, jekk hu infurmat 454 00:24:59,000 --> 00:25:01,000 ta 'l-indirizz fil-memorja ta' xuy, 455 00:25:01,000 --> 00:25:04,000 imbagħad tpartit, jekk aħna mħarrġa lilu ftit, 456 00:25:04,000 --> 00:25:07,000 huwa jista 'potenzjalment issuq għal dak l-indirizz, biex ngħidu hekk, 457 00:25:07,000 --> 00:25:11,000 x, u jibdlu l-għadd hemmhekk, imbagħad issuq fl-indirizz ta 'y, 458 00:25:11,000 --> 00:25:16,000 jibdlu l-għadd hemmhekk, anki waqt li ma attwalment jkollna kopji ta 'dawk il-valuri stess, 459 00:25:16,000 --> 00:25:19,000 hekk anke jekk aħna tkellimna dwar dan bħala memorja prinċipali tal- 460 00:25:19,000 --> 00:25:23,000 u l-memorja din tpartit bħala s-qawwija u l-parti perikoluża 'C 461 00:25:23,000 --> 00:25:28,000 hija li xi funzjoni jistax imiss memorja kullimkien fil-kompjuter, 462 00:25:28,000 --> 00:25:32,000 u dan hija qawwija li inti tista 'tagħmel affarijiet ferm fancy ma' programmi tal-kompjuter fil C. 463 00:25:32,000 --> 00:25:36,000 Dan huwa perikoluż minħabba li inti tista 'wkoll screw up faċilment. 464 00:25:36,000 --> 00:25:39,000 Fil-fatt, wieħed mill-modi l-aktar komuni għall-programmi f'dawn il-jiem li jiġu sfruttati 465 00:25:39,000 --> 00:25:42,000 xorta huwa għal programmer ma jirrealizzaw 466 00:25:42,000 --> 00:25:45,000 li hu jew hi qed jippermettu ta 'data 467 00:25:45,000 --> 00:25:49,000 li tkun miktuba f'post fil-memorja li ma kienx intenzjonat. 468 00:25:49,000 --> 00:25:51,000 >> Per eżempju, hu jew hi jiddikjara firxa ta 'daqs 10 469 00:25:51,000 --> 00:25:56,000 iżda mbagħad aċċidentalment tipprova tqiegħed 11 bytes f'dik firxa ta 'memorja, 470 00:25:56,000 --> 00:25:59,000 u tibda jmissu partijiet ta 'memorja li ma jkunux aktar validi. 471 00:25:59,000 --> 00:26:02,000 Just biex kuntestwali dan, xi wħud minnkom tista 'taf li 472 00:26:02,000 --> 00:26:06,000 software spiss iqajjem inti għal numri tas-serje jew ċwievet reġistrazzjoni, 473 00:26:06,000 --> 00:26:08,000 Photoshop u Word u programmi bħal din. 474 00:26:08,000 --> 00:26:12,000 Jeżistu xquq, peress li xi wħud minnkom jafu, online fejn int tista 'tmexxi programm ftit, 475 00:26:12,000 --> 00:26:14,000 u voila, l-ebda talba aktar għal numru serjali. 476 00:26:14,000 --> 00:26:16,000 Kif huwa li taħdem? 477 00:26:16,000 --> 00:26:21,000 F'ħafna każijiet dawn l-affarijiet huma sempliċement konstatazzjoni fil-kompjuters 478 00:26:21,000 --> 00:26:24,000 test segmenti fil żerijiet attwali tal-kompjuter u dawk 479 00:26:24,000 --> 00:26:28,000 fejn huwa dik il-funzjoni fejn in-numru tas-serje hija mitluba, 480 00:26:28,000 --> 00:26:31,000 u inti jissostitwixxu l-ispazju, jew waqt li l-programm qed taħdem 481 00:26:31,000 --> 00:26:33,000 inti tista 'ċifra barra fejn il-muftieħ huwa attwalment maħżuna 482 00:26:33,000 --> 00:26:37,000 użu xi ħaġa imsejħa debugger, u inti tista 'qasma li softwer il-mod. 483 00:26:37,000 --> 00:26:40,000 Dan ma jfissirx li dan huwa l-għan tagħna għall-koppja li jmiss ta 'jiem, 484 00:26:40,000 --> 00:26:42,000 iżda għandha ħafna tad-dinja reali ramifikazzjonijiet. 485 00:26:42,000 --> 00:26:45,000 Li wieħed jiġri li jinvolvu serq ta 'software, 486 00:26:45,000 --> 00:26:47,000 imma hemm ukoll kompromess ta 'magni sħaħ. 487 00:26:47,000 --> 00:26:50,000 >> Fil-fatt, meta websajts dawn il-jiem huma sfruttati 488 00:26:50,000 --> 00:26:53,000 u kompromessi u data nixxew u passwords huma misruqa 489 00:26:53,000 --> 00:26:58,000 dan ħafna drabi relatat ma 'ġestjoni ħażina tal-memorja wieħed, 490 00:26:58,000 --> 00:27:01,000 jew, fil-każ ta 'databases, in-nuqqas li jiġu antiċipati 491 00:27:01,000 --> 00:27:03,000 input tal-kontradittorju, b'mod aktar fuq li fil-ġimgħat li ġejjin, 492 00:27:03,000 --> 00:27:07,000 iżda għal issa biss Sneak preview tal-tip ta 'ħsara li inti tista' tagħmel 493 00:27:07,000 --> 00:27:11,000 billi ma pjuttost jifhmu kif jaħdmu l-affarijiet minn taħt il-barnuża. 494 00:27:11,000 --> 00:27:14,000 Ejja tmur dwar fehim għaliex dan huwa miksur 495 00:27:14,000 --> 00:27:17,000 ma 'għodda li se jsiru aktar u aktar utli 496 00:27:17,000 --> 00:27:19,000 bħala programmi tagħna jiksbu aktar kumplessi. 497 00:27:19,000 --> 00:27:21,000 S'issa meta inti kellna bug fil-programm tiegħek 498 00:27:21,000 --> 00:27:23,000 kif inti marret dwar debugging dan? 499 00:27:23,000 --> 00:27:25,000 Liema kienu tekniki tiegħek kienu s'issa, kemm jekk mgħallma minn TF tiegħek 500 00:27:25,000 --> 00:27:27,000 jew biss awto-mgħallma? 501 00:27:27,000 --> 00:27:29,000 [Student] printf. 502 00:27:29,000 --> 00:27:31,000 Printf, hekk printf x'aktarx ilha ħabib tiegħek li jekk inti tixtieq li tara 503 00:27:31,000 --> 00:27:33,000 x'inhu għaddej ġewwa tal-programm tiegħek 504 00:27:33,000 --> 00:27:36,000 inti biss jitqiegħed printf hawn, printf hawn, printf hawn. 505 00:27:36,000 --> 00:27:38,000 Imbagħad inti run, u inti tikseb mazz sħiħ ta 'għalf fuq l-iskrin 506 00:27:38,000 --> 00:27:43,000 li tista 'tuża biex imbagħad jiġi dedott dak li huwa attwalment tmur ħażina fil-programm tiegħek. 507 00:27:43,000 --> 00:27:45,000 >> Printf tendenza li tkun ħaġa qawwija ħafna, 508 00:27:45,000 --> 00:27:47,000 iżda huwa proċess ferm manwali. 509 00:27:47,000 --> 00:27:49,000 Int għandek tpoġġi printf hawn, a printf hawn, 510 00:27:49,000 --> 00:27:51,000 u jekk inti tpoġġi ġewwa ta 'linja inti tista' tikseb 100 linji 511 00:27:51,000 --> 00:27:53,000 tal-produzzjoni li inti mbagħad ikollhom biex jiġu ffiltrati permezz. 512 00:27:53,000 --> 00:27:58,000 Mhuwiex mekkaniżmu ħafna faċli għall-utent jew interattivi għall-programmi debugging, 513 00:27:58,000 --> 00:28:00,000 iżda Thankfully teżisti alternattivi. 514 00:28:00,000 --> 00:28:03,000 Hemm programm, per eżempju, imsejħa GDB, il Debugger GNU, 515 00:28:03,000 --> 00:28:06,000 li huwa arcane ftit fil-mod kif tużah. 516 00:28:06,000 --> 00:28:08,000 Huwa kumpless ftit, iżda franchement, 517 00:28:08,000 --> 00:28:11,000 din hija waħda minn dawk l-affarijiet fejn jekk inti tpoġġi fil din il-ġimgħa u li jmiss 518 00:28:11,000 --> 00:28:14,000 il siegħa żejda li wieħed jifhem xi ħaġa bħal GDB 519 00:28:14,000 --> 00:28:18,000 se tiffranka probabbilment għexieren ta 'sigħat fit-tul, 520 00:28:18,000 --> 00:28:21,000 hekk ma 'dan, let me jagħtuk teaser ta' kif dan il-ħaġa xogħlijiet. 521 00:28:21,000 --> 00:28:23,000 >> Jien fil tieqa terminal tiegħi. 522 00:28:23,000 --> 00:28:26,000 Let me imorru quddiem u jiġbru dan il-programm, buggy3. 523 00:28:26,000 --> 00:28:28,000 Huwa diġà aġġornata. 524 00:28:28,000 --> 00:28:31,000 Let me run eżatt bħal għamilna lura waqt, u fil-fatt, huwa imkisser. 525 00:28:31,000 --> 00:28:34,000 Iżda għaliex hija din? Maybe I invitat l-funzjoni tpartit. 526 00:28:34,000 --> 00:28:37,000 Forsi huwa au b. Jien ma pjuttost jiċċaqalqu minnhom madwar korrett. 527 00:28:37,000 --> 00:28:39,000 Let me imorru quddiem u jagħmlu dan. 528 00:28:39,000 --> 00:28:43,000 Pjuttost milli sempliċiment run buggy3 let me minflok run din GDB programm, 529 00:28:43,000 --> 00:28:48,000 u jien ser jgħidlek li jimxu buggy3, 530 00:28:48,000 --> 00:28:52,000 u jien ser jinkludi argument linja tal-kmand, TUI-, 531 00:28:52,000 --> 00:28:55,000 u aħna ser tpoġġi dan fil-problemi futuri fil spec biex tfakkar. 532 00:28:55,000 --> 00:28:57,000 U issa din l-interfaċċa iswed u abjad popped up li, għal darb'oħra, 533 00:28:57,000 --> 00:28:59,000 huwa ftit kbira fl-ewwel għaliex hemm dan kollu 534 00:28:59,000 --> 00:29:02,000 informazzjoni garanzija stabbiliti hawn, iżda mill-inqas hemm xi ħaġa familjari. 535 00:29:02,000 --> 00:29:04,000 Fil-quċċata tat-tieqa hija kodiċi attwali tiegħi, 536 00:29:04,000 --> 00:29:08,000 u jekk I iscroll up hawn let me iscroll għall-quċċata tal-fajl tiegħi, 537 00:29:08,000 --> 00:29:11,000 u fil-fatt, hemm buggy3.c, u avviż fil-qiegħ ta 'dan tieqa 538 00:29:11,000 --> 00:29:13,000 Għandi dan pront GDB. 539 00:29:13,000 --> 00:29:16,000 >> Din mhix l-istess bħal fil-pront Harvard tiegħi normali John. 540 00:29:16,000 --> 00:29:19,000 Dan huwa fil-pront li għaddej biex ippermettuli biex jikkontrollaw GDB. 541 00:29:19,000 --> 00:29:21,000 GDB huwa debugger. 542 00:29:21,000 --> 00:29:24,000 A debugger huwa programm li ihallik timxi permezz 543 00:29:24,000 --> 00:29:27,000 eżekuzzjoni tal-linja program tiegħek billi linja b'linja, 544 00:29:27,000 --> 00:29:30,000 tul it-triq tagħmel xejn inti tixtieq li l-programm, 545 00:29:30,000 --> 00:29:33,000 anke ssejjaħ funzjonijiet, jew tfittex, aktar importanti, 546 00:29:33,000 --> 00:29:35,000 fil-valuri varjabbli varji ta. 547 00:29:35,000 --> 00:29:37,000 Ejja imorru quddiem u jagħmlu dan. 548 00:29:37,000 --> 00:29:40,000 Jien ser jimxi 'l quddiem u t-tip fil-medda t fil-pront GDB s, 549 00:29:40,000 --> 00:29:43,000 hekk avviż fil-qiegħ tax-xellug tal-iskrin stajt ittajpjat run, 550 00:29:43,000 --> 00:29:45,000 u stajt hit jidħol, u dak li ma din tagħmel? 551 00:29:45,000 --> 00:29:50,000 Hija litteralment dam programm tiegħi, imma jien ma attwalment tara ħafna jmorru fuq hawn 552 00:29:50,000 --> 00:29:55,000 minħabba I ma attwalment qal lill-debugger 553 00:29:55,000 --> 00:29:57,000 biex nieqaf f'mument partikolari fil-ħin. 554 00:29:57,000 --> 00:29:59,000 Just ttajpjati run tiġġestixxi l-programm. 555 00:29:59,000 --> 00:30:01,000 I ma attwalment tara xejn. I ma tista 'timmanipola dan. 556 00:30:01,000 --> 00:30:03,000 >> Minflok let me tagħmel dan. 557 00:30:03,000 --> 00:30:08,000 F'dan pront GDB let me minflok tip break, jidħol. 558 00:30:08,000 --> 00:30:10,000 Li mhux dak I fisser it-tip. 559 00:30:10,000 --> 00:30:13,000 Ejja minflok tip break prinċipali. 560 00:30:13,000 --> 00:30:15,000 Fi kliem ieħor, nixtieq li jistabbilixxu xi ħaġa imsejħa breakpoint, 561 00:30:15,000 --> 00:30:18,000 li huwa adattat issemmiet għaliex se waqfa jew pawża 562 00:30:18,000 --> 00:30:21,000 eżekuzzjoni tal-programm tiegħek f'dak il-post partikolari. 563 00:30:21,000 --> 00:30:23,000 Main huwa l-isem tal-funzjoni tiegħi. 564 00:30:23,000 --> 00:30:25,000 Avviż li GDB hija pjuttost intelliġenti. 565 00:30:25,000 --> 00:30:28,000 Hija dehret li jiġri prinċipali biex tibda ftit jew wisq fl linja 18 566 00:30:28,000 --> 00:30:32,000 ta buggy3.c, u mbagħad avviż hawn fuq quċċata xellug 567 00:30:32,000 --> 00:30:34,000 b + huwa dritt li jmiss għal-linja 18. 568 00:30:34,000 --> 00:30:38,000 Li fakkruha me I waqqfu breakpoint fil-linja 18. 569 00:30:38,000 --> 00:30:42,000 Din id-darba meta I tip run, jien ser jimxu programm tiegħi 570 00:30:42,000 --> 00:30:45,000 up sakemm hits li breakpoint, 571 00:30:45,000 --> 00:30:48,000 għalhekk il-programm se nieqaf għalija fil-linja 18. 572 00:30:48,000 --> 00:30:50,000 Here we go, run. 573 00:30:50,000 --> 00:30:53,000 Xejn jidher li ġara, iżda l-avviż fil-qiegħ xellug 574 00:30:53,000 --> 00:30:58,000 Programm bidu, buggy3, breakpoint 1 fil prinċipali fil-linja buggy3.c 18. 575 00:30:58,000 --> 00:31:00,000 X'nista 'nagħmel issa? 576 00:31:00,000 --> 00:31:03,000 >> Avviż I tista 'tibda ittajpjar affarijiet simili stampati, 577 00:31:03,000 --> 00:31:08,000 ma printf, x jistampa, u issa thats stramba. 578 00:31:08,000 --> 00:31:11,000 Il-$ 1 huwa biss kurżità, kif Ser naraw 579 00:31:11,000 --> 00:31:14,000 kull darba li inti print xi ħaġa ikollok ġdid $ valur. 580 00:31:14,000 --> 00:31:18,000 Dak sabiex inti tista 'tirreferi lura għall-valuri ta' qabel biss fil-każ, 581 00:31:18,000 --> 00:31:21,000 iżda għal issa dak istampar hija me javżak huwa li l-valur ta 'x f'dan il-punt fl-istorja 582 00:31:21,000 --> 00:31:26,000 hija apparentement 134514032. 583 00:31:26,000 --> 00:31:29,000 What? Fejn ma li anke jiġu minn? 584 00:31:29,000 --> 00:31:31,000 [Inaudible-istudent] 585 00:31:31,000 --> 00:31:34,000 Tabilħaqq, dan huwa dak li aħna ser sejħa valur żibel, u konna ma tkellem dwar dan għadha, 586 00:31:34,000 --> 00:31:37,000 iżda r-raġuni li inti initialize-varjabbli 587 00:31:37,000 --> 00:31:40,000 huwa ovvjament sabiex ikollhom xi valur li inti tixtieq li jkollok. 588 00:31:40,000 --> 00:31:44,000 Iżda l-qabda tfakkar li inti tista 'tiddikjara varjabbli 589 00:31:44,000 --> 00:31:46,000 bħal I ma mument ilu fl-eżempju sigma tiegħi 590 00:31:46,000 --> 00:31:48,000 mingħajr ma attwalment jagħtihom valur. 591 00:31:48,000 --> 00:31:50,000 Recall dak li għamilt hawn fuq fil sigma. 592 00:31:50,000 --> 00:31:52,000 I ddikjarat n, iżda liema valur ma nagħti dan? 593 00:31:52,000 --> 00:31:56,000 Xejn, għaliex kont naf li fil-linji li ġejjin 594 00:31:56,000 --> 00:31:59,000 GetInt se tieħu ħsieb il-problema ta 'tqegħid ta' valur ġewwa ta 'n. 595 00:31:59,000 --> 00:32:02,000 >> Iżda f'dan il-punt fl-istorja tal-linja 11 596 00:32:02,000 --> 00:32:05,000 u l-linja 12 u linja 13 u l-linja 14 597 00:32:05,000 --> 00:32:08,000 matul dawk il-linji diversi x'inhu l-valur ta 'n? 598 00:32:08,000 --> 00:32:10,000 Fil Ċ inti biss ma nafx. 599 00:32:10,000 --> 00:32:14,000 Huwa ġeneralment xi valur żibel, xi numru kompletament bl-addoċċ 600 00:32:14,000 --> 00:32:17,000 li ħalla fuq essenzjalment minn xi funzjoni ta 'qabel 601 00:32:17,000 --> 00:32:21,000 li tkun għamlet, sabiex il-programm tiegħek runs 602 00:32:21,000 --> 00:32:24,000 ifakkar li l-funzjoni gets, funzjoni funzjoni, il-funzjoni. 603 00:32:24,000 --> 00:32:27,000 Kollha dawn il-frejms nikseb jitqiegħdu fuq il-memorja, u mbagħad dawk ritorn funzjonijiet, 604 00:32:27,000 --> 00:32:31,000 u biss bħal I suġġerit bl-Eraser memorja tagħhom huwa eventwalment jerġa 'jintuża. 605 00:32:31,000 --> 00:32:37,000 Ukoll, huwa biss hekk jiġri li dan x-varjabbli f'dan il-programm 606 00:32:37,000 --> 00:32:41,000 jidher li hemm xi valur żibel bħal 134514032 607 00:32:41,000 --> 00:32:44,000 minn xi funzjoni ta 'qabel, mhux wieħed li I kiteb. 608 00:32:44,000 --> 00:32:47,000 Jista 'jkun xi ħaġa li taqa' b'mod effettiv mal-sistema operattiva, 609 00:32:47,000 --> 00:32:49,000 xi funzjoni taħt il-barnuża. 610 00:32:49,000 --> 00:32:52,000 >> Okay, li l-multa, imma ejja issa javvanzaw għal-linja li jmiss. 611 00:32:52,000 --> 00:32:55,000 Jekk I tip "li jmiss" fil-pront GDB tiegħi u I hit jidħol, 612 00:32:55,000 --> 00:32:58,000 tinnota li l-enfasi jiċċaqlaq isfel għal-linja 19, 613 00:32:58,000 --> 00:33:01,000 iżda l-implikazzjoni loġika hija dik il-linja 18 614 00:33:01,000 --> 00:33:06,000 issa lest eżekuzzjoni, hekk jekk I darb'oħra tip "print x" 615 00:33:06,000 --> 00:33:10,000 I issa għandhom jaraw 1, u fil-fatt, I do. 616 00:33:10,000 --> 00:33:14,000 Għal darb'oħra, l-għalf $ huwa mod ta 'GDB nfarkkarkom 617 00:33:14,000 --> 00:33:17,000 dak li l-istorja ta 'prints huma li inti ghamilt. 618 00:33:17,000 --> 00:33:21,000 Issa let me aqbad u jistampa y, u fil-fatt, y hija xi valur crazy kif ukoll, 619 00:33:21,000 --> 00:33:24,000 iżda l-ebda big deal għaliex linja 19 aħna qed dwar li tassenja din 620 00:33:24,000 --> 00:33:27,000 il-valur 2, so let me tip "li jmiss" darb'oħra. 621 00:33:27,000 --> 00:33:29,000 U issa aħna qed fuq il-linja printf. 622 00:33:29,000 --> 00:33:31,000 Let me do x istampar. 623 00:33:31,000 --> 00:33:34,000 Let me do y print. Franchement, jien jkollna ftit għajjien ta 'stampar dan. 624 00:33:34,000 --> 00:33:38,000 Let me minflok tip "x display" u "wirja y," 625 00:33:38,000 --> 00:33:41,000 u issa kull darba I tip ta 'kmand fil-futur 626 00:33:41,000 --> 00:33:45,000 I se jiġu mfakkra ta 'x'hemm xuy, x'hemm xuy, x'hemm xuy. 627 00:33:45,000 --> 00:33:48,000 >> I tista 'wkoll, bħala twarrib, tip "lokal info." 628 00:33:48,000 --> 00:33:50,000 Info huwa kmand speċjali. 629 00:33:50,000 --> 00:33:52,000 Lokal jfisser li turi lili l-varjazzjonijiet lokali. 630 00:33:52,000 --> 00:33:55,000 Biss fil-każ ninsa jew din hija crazy, funzjoni kkumplikata 631 00:33:55,000 --> 00:33:57,000 li jien jew xi ħadd ieħor kiteb lokal info se jgħidlek 632 00:33:57,000 --> 00:34:00,000 liema huma l-varjazzjonijiet lokali tal ġewwa din il-funzjoni lokali 633 00:34:00,000 --> 00:34:03,000 li inti tista 'kura dwar jekk inti tixtieq li poke madwar. 634 00:34:03,000 --> 00:34:07,000 Issa, printf ikun wasal biex tesegwixxi, so let me imorru quddiem u biss tip "li jmiss." 635 00:34:07,000 --> 00:34:10,000 Għaliex aħna qed f'dan l-ambjent aħna mhux qed fil-fatt dan iqisuh 636 00:34:10,000 --> 00:34:14,000 tesegwixxi stabbiliti hawn, iżda avviż huwa jkollna ftit mangled hawn. 637 00:34:14,000 --> 00:34:17,000 Iżda l-avviż huwa prevalenti l-iskrin hemm, 638 00:34:17,000 --> 00:34:21,000 hekk huwa mhux programm perfetta hawn, iżda li okay minħabba I jistgħu dejjem poke madwar 639 00:34:21,000 --> 00:34:23,000 użu print jekk irrid. 640 00:34:23,000 --> 00:34:26,000 >> Let me tip li jmiss darb'oħra, u issa hawnhekk l-parti interessanti. 641 00:34:26,000 --> 00:34:29,000 Fuq dan il-punt fl-istorja y huwa 2, u x hija l-1, 642 00:34:29,000 --> 00:34:32,000 kif issuġġerit hawnhekk, u għal darb'oħra, 643 00:34:32,000 --> 00:34:35,000 ir-raġuni dan huwa awtomatikament wiri issa huwa minħabba I użat il-kmand 644 00:34:35,000 --> 00:34:40,000 wiri u l-wiri x y, sabiex il-mument I tip li jmiss 645 00:34:40,000 --> 00:34:43,000 fit-teorija xuy għandhom isiru skambjati. 646 00:34:43,000 --> 00:34:45,000 Issa, aħna diġà jafu li mhux se jkun il-każ, 647 00:34:45,000 --> 00:34:49,000 iżda Ser naraw fil-mument kif nistgħu adsa aktar profonda biex insemmu għaliex dan huwa veru. 648 00:34:49,000 --> 00:34:54,000 Sussegwentement, u sfortunatament, y għadu 2 u x għadu 1, u nista 'nikkonferma kemm. 649 00:34:54,000 --> 00:34:56,000 Stampa x, y print. 650 00:34:56,000 --> 00:34:59,000 Tabilħaqq, l-ebda iskambji fil-fatt ġara, hekk ejja nibdew dan fuq. 651 00:34:59,000 --> 00:35:01,000 Ovvjament tpartit hija maqsuma. 652 00:35:01,000 --> 00:35:04,000 Ejja minflok tip "run" darb'oħra. 653 00:35:04,000 --> 00:35:07,000 Let me say yes, nixtieq li terġa 'tibda mill-bidu, jidħol. 654 00:35:07,000 --> 00:35:09,000 >> Issa jien back-up fil-linja 18. 655 00:35:09,000 --> 00:35:11,000 Issa avviż xuy huma valuri taż-żibel mill-ġdid. 656 00:35:11,000 --> 00:35:15,000 Sussegwentement, wara dan, li jmiss, li jmiss. 657 00:35:15,000 --> 00:35:17,000 Jekk niġi bored I tista 'wkoll biss tip n li jmiss. 658 00:35:17,000 --> 00:35:21,000 Tista 'jqassar dan il-sekwenza iqsar possibbli ta' karattri. 659 00:35:21,000 --> 00:35:23,000 Swap issa hija maqsuma. 660 00:35:23,000 --> 00:35:25,000 Ejja adsa fi, hekk minflok ta 'tajping li jmiss, 661 00:35:25,000 --> 00:35:30,000 Issa jien se tip pass hekk li jien titjib ġewwa ta 'din il-funzjoni 662 00:35:30,000 --> 00:35:33,000 sabiex I tista 'timxi permezz ta' dan, so I hit pass u mbagħad tidħol. 663 00:35:33,000 --> 00:35:37,000 Avviż li l jumps tenfasizza l isfel aktar baxx fil-programm tiegħi għal-linja 36. 664 00:35:37,000 --> 00:35:39,000 Issa liema huma l-fatturi varjabbli lokali? 665 00:35:39,000 --> 00:35:41,000 Info lokal. 666 00:35:41,000 --> 00:35:43,000 Xejn għadha biss għaliex aħna stajt ma gotten għal dik il-linja, 667 00:35:43,000 --> 00:35:47,000 hekk ejja imorru quddiem u jgħidu "li jmiss." 668 00:35:47,000 --> 00:35:50,000 Issa għandna jidhru li jkollhom TMP TMP istampar,. 669 00:35:50,000 --> 00:35:52,000 Valur Żibel, id-dritt? I think so. 670 00:35:52,000 --> 00:35:55,000 Kif dwar tipprintja b istampar,, 1 u 2? 671 00:35:55,000 --> 00:35:58,000 Fil-mument, malli I tip li jmiss darb'oħra 672 00:35:58,000 --> 00:36:02,000 TMP huwa ser jieħu fuq valur ta '1, wieħed jittama, 673 00:36:02,000 --> 00:36:05,000 minħabba TMP se jiġu assenjati l-valur ta '. 674 00:36:05,000 --> 00:36:08,000 >> Issa ejja do tistampa b istampar,, 675 00:36:08,000 --> 00:36:11,000 iżda issa jistampaw TMP, u huwa tabilħaqq 1. 676 00:36:11,000 --> 00:36:14,000 Let me jagħmlu li jmiss. Let me jagħmlu li jmiss. 677 00:36:14,000 --> 00:36:16,000 Stajt lest il-funzjoni tpartit. 678 00:36:16,000 --> 00:36:19,000 Jien xorta ġewwa ta 'dan fil-linja 40, so let me jistampaw, 679 00:36:19,000 --> 00:36:22,000 istampar b, u jien ma 'kura huwa TMP dak. 680 00:36:22,000 --> 00:36:27,000 Jidher qisu swap hija korretta meta niġu għall-iskambji aub. 681 00:36:27,000 --> 00:36:31,000 Imma jekk jien issa tip li jmiss, I Mur lura għall-linja 25, 682 00:36:31,000 --> 00:36:34,000 u ta 'kors, jekk I tip fil x u tistampa y 683 00:36:34,000 --> 00:36:38,000 dawn qed għadhom ma nbidlux, hekk aħna mhux fiss il-problema. 684 00:36:38,000 --> 00:36:41,000 Imma diagnostically issa forsi ma dan il-programm GDB 685 00:36:41,000 --> 00:36:44,000 konna inqas gotten pass eqreb lejn fehim 686 00:36:44,000 --> 00:36:47,000 x'inhu għaddej ħażin mingħajr ma jkollhom mifrex kodiċi tagħna billi jpoġġi printf hawn, 687 00:36:47,000 --> 00:36:50,000 printf hawn, printf hawn u mbagħad-tmexxija mill-ġdid u għal darb'oħra 688 00:36:50,000 --> 00:36:52,000 jippruvaw ċifra barra dak li għaddej ħażin. 689 00:36:52,000 --> 00:36:55,000 >> Jien ser jimxi 'l quddiem u nieqaf minn dan għal kollox nieqaf. 690 00:36:55,000 --> 00:36:57,000 Huwa ser mbagħad jgħidu, "Nieqaf xorta?" Iva. 691 00:36:57,000 --> 00:37:00,000 Issa jien lura fil-pront normali tiegħi, u jien jsir użu GDB. 692 00:37:00,000 --> 00:37:03,000 Bħala twarrib, inti m'għandekx bżonn li jużaw dan TUI-bandiera. 693 00:37:03,000 --> 00:37:07,000 Fil-fatt, jekk inti tonqos li tikseb essenzjalment l-nofs ta 'isfel tal-iskrin. 694 00:37:07,000 --> 00:37:11,000 Jekk I imbagħad tip waqfa prinċipali u mbagħad run 695 00:37:11,000 --> 00:37:15,000 I xorta jistgħu run program tiegħi, imma dak li se tagħmel huwa aktar testwalment 696 00:37:15,000 --> 00:37:18,000 biss juru lili il-linja waħda kurrenti fi żmien. 697 00:37:18,000 --> 00:37:21,000 Il TUI-, user interface testwali, 698 00:37:21,000 --> 00:37:25,000 biss turi inti aktar tal-programm fil-darba, li hija probabbilment daqsxejn kunċettwali aktar faċli. 699 00:37:25,000 --> 00:37:27,000 Imma fil-fatt, I tista 'biss tagħmel li jmiss, li jmiss, li jmiss, 700 00:37:27,000 --> 00:37:30,000 u jien ser tara linja waħda fi żmien, u jekk I really trid tara x'inhu għaddej 701 00:37:30,000 --> 00:37:35,000 I tista tip lista u tara mazz sħiħ ta 'linji ġirien. 702 00:37:35,000 --> 00:37:39,000 >> Hemm video li konna mitluba li inti watch għall-problema settijiet 3 703 00:37:39,000 --> 00:37:43,000 fejn Nate tkopri wħud mill-intricacies ta 'GDB, 704 00:37:43,000 --> 00:37:46,000 u din hija waħda minn dawk l-affarijiet, onestament, fejn xi persentaġġ mhux trivjali tal inti 705 00:37:46,000 --> 00:37:49,000 qatt se touch GDB, u li se tkun ħaġa ħażina 706 00:37:49,000 --> 00:37:53,000 għaliex litteralment inti ser jispiċċaw infiq aktar ħin aktar tard din is-semestru 707 00:37:53,000 --> 00:37:56,000 tmur fl bugs allura inti jekk inti tpoġġi f'dak nofs siegħa / siegħa 708 00:37:56,000 --> 00:38:00,000 din il-ġimgħa u t-tagħlim li jmiss biex tikseb komda mal GDB. 709 00:38:00,000 --> 00:38:02,000 Printf kien ħabib tiegħek. 710 00:38:02,000 --> 00:38:05,000 GDB għandu issa jkun ħabib tiegħek. 711 00:38:05,000 --> 00:38:08,000 >> Kwalunkwe mistoqsijiet dwar GDB? 712 00:38:08,000 --> 00:38:12,000 U hawn lista ta 'malajr ta' xi wħud mill-kmandi aktar qawwija u utli. 713 00:38:12,000 --> 00:38:15,000 Yeah. >> Tista print string? 714 00:38:15,000 --> 00:38:17,000 Tista 'tipprintja string? Assolutament. 715 00:38:17,000 --> 00:38:19,000 Ma għandhom biss ikunu interi. 716 00:38:19,000 --> 00:38:22,000 Jekk i varjabbli huwa string biss tip i print. 717 00:38:22,000 --> 00:38:24,000 Hija ser nuruk dak li varjabbli sekwenza huwa. 718 00:38:24,000 --> 00:38:26,000 [Inaudible-istudent] 719 00:38:26,000 --> 00:38:28,000 Huwa se jagħtik l-indirizz u l-sekwenza nnifisha. 720 00:38:28,000 --> 00:38:32,000 Hija ser nuruk tnejn. 721 00:38:32,000 --> 00:38:34,000 U wieħed aħħar ħaġa, sempliċement minħabba li dawn huma tajba li tkun taf wisq. 722 00:38:34,000 --> 00:38:37,000 Backtrace u l-qafas, let me adsa fis dan iż-żmien l-aħħar wieħed, 723 00:38:37,000 --> 00:38:39,000 Programm eżatt l-istess ma 'GDB. 724 00:38:39,000 --> 00:38:44,000 Let me imorru quddiem u tmexxi l-verżjoni testwali user interface, 725 00:38:44,000 --> 00:38:46,000 break prinċipali. 726 00:38:46,000 --> 00:38:49,000 Let me imorru quddiem u run mill-ġdid. Hawnhekk I am. 727 00:38:49,000 --> 00:38:55,000 Issa let me go jmiss, li jmiss, li jmiss, li jmiss, li jmiss, pass, jidħol. 728 00:38:55,000 --> 00:39:00,000 >> U issa jissoponi Jien issa fil tpartit deliberatament, imma jien simili "indanna, dak li kien il-valur ta 'x?" 729 00:39:00,000 --> 00:39:02,000 I ma tistax tagħmel x aktar. 730 00:39:02,000 --> 00:39:05,000 I ma tistax tagħmel y għaliex dawn mhux qed fl-iskop. 731 00:39:05,000 --> 00:39:07,000 Huma qed mhux fil-kuntest, iżda l-ebda problema. 732 00:39:07,000 --> 00:39:09,000 I tista tip backtrace. 733 00:39:09,000 --> 00:39:13,000 Li turi lili kollha tal-funzjonijiet li jkunu eżegwiti sa dan il-punt fil-ħin. 734 00:39:13,000 --> 00:39:16,000 Avviż li l-wieħed fuq il-qiegħ, prinċipali, linji up ma 'prinċipali 735 00:39:16,000 --> 00:39:18,000 qegħdin fuq il-qiegħ tal-istampa tagħna hawn. 736 00:39:18,000 --> 00:39:22,000 Il-fatt li swap hija ogħla huwa linji bi tpartit tkun il-fuq fil-memorja hawn, 737 00:39:22,000 --> 00:39:26,000 u jekk I rridu nġibu lura għall prinċipali temporanjament nista 'ngħid "qafas". 738 00:39:26,000 --> 00:39:30,000 X'inhu n-numru? Prinċipali huwa frame # 1. 739 00:39:30,000 --> 00:39:32,000 Jien ser jimxi 'l quddiem u jgħidu "qafas 1." 740 00:39:32,000 --> 00:39:36,000 >> Issa jien lura fl prinċipali, u I jistgħu jistampaw x, u I jistgħu jistampaw y, 741 00:39:36,000 --> 00:39:40,000 imma ma nistax jistampaw b jew. 742 00:39:40,000 --> 00:39:43,000 Imma nista 'jekk I say, "Okay, stenna minuta. Fejn kien il-iswap?" 743 00:39:43,000 --> 00:39:46,000 Let me imorru quddiem u jgħidu "0 frame." 744 00:39:46,000 --> 00:39:48,000 Issa jien lura fejn nixtieq li jkun, u bħala twarrib, 745 00:39:48,000 --> 00:39:52,000 hemm jikkmanda oħra wkoll, bħall jekk int verament jkollna bored ittajpjar jmiss, li jmiss, li jmiss, li jmiss, 746 00:39:52,000 --> 00:39:56,000 inti tista 'ġeneralment jgħidu affarijiet simili "10 li jmiss," u li se pass permezz-10 linji. 747 00:39:56,000 --> 00:39:59,000 Tista 'wkoll tikteb "tkompli" meta inti verament tikseb mitmugħa bl titjib permezz tiegħu. 748 00:39:59,000 --> 00:40:05,000 Kompli se jimxu program tiegħek mingħajr interruzzjoni sakemm hits ieħor breakpoint, 749 00:40:05,000 --> 00:40:07,000 kemm jekk loop jew aktar 'l isfel fil-programm tiegħek. 750 00:40:07,000 --> 00:40:11,000 >> F'dan il-każ aħna kompliet l-aħħar, u l-programm ħareġ normalment. 751 00:40:11,000 --> 00:40:13,000 Dan huwa mod fancy, proċess inferjuri. 752 00:40:13,000 --> 00:40:16,000 Just programm tiegħek ħareġ normalment. 753 00:40:16,000 --> 00:40:24,000 Aktar dwar dan fil-video u debugging sessjonijiet li ġejjin. 754 00:40:24,000 --> 00:40:26,000 Dan kien ħafna. 755 00:40:26,000 --> 00:40:35,000 Ejja tieħu 5-minuta break tagħna hawn, u aħna ser terġa 'lura mal structs u fajls. 756 00:40:35,000 --> 00:40:38,000 >> Jekk għandek dived fis pset din il-ġimgħa diġà 757 00:40:38,000 --> 00:40:41,000 inti ser tkun taf li aħna nużaw fil-kodiċi ta 'distribuzzjoni, 758 00:40:41,000 --> 00:40:45,000 s-sors kodiċi li nipprovdu lilek bħala punt tat-tluq, xi tekniki ġodda. 759 00:40:45,000 --> 00:40:50,000 B'mod partikolari, aħna introdotti dan il-keyword ġdida msejħa Struct, għall-istruttura, 760 00:40:50,000 --> 00:40:53,000 sabiex inkunu nistgħu joħolqu varjabbli apposta ta 'tipi. 761 00:40:53,000 --> 00:40:57,000 Aħna wkoll introduċa l-kunċett ta 'input fajl fajl I / O, u l-produzzjoni, 762 00:40:57,000 --> 00:41:00,000 u dan huwa sabiex inkunu nistgħu jiffrankaw l-istat 763 00:41:00,000 --> 00:41:03,000 tal-bord ġirja tiegħek għal fajl fuq diska 764 00:41:03,000 --> 00:41:06,000 sabiex il-fellows tagħlim u I jistgħu jifhmu 765 00:41:06,000 --> 00:41:09,000 x'inhu għaddej ġewwa tal-programm tiegħek mingħajr ma jkollhom manwalment jilagħbu 766 00:41:09,000 --> 00:41:11,000 għexieren ta 'logħob ta' ġirja. 767 00:41:11,000 --> 00:41:13,000 Nistgħu nagħmlu dan aktar automatedly. 768 00:41:13,000 --> 00:41:18,000 >> Din l-idea ta 'Struct jsolvi problema pjuttost konvinċenti. 769 00:41:18,000 --> 00:41:21,000 Ejja ngħidu li aħna rridu li jimplimentaw xi programm 770 00:41:21,000 --> 00:41:25,000 li b'xi żżomm kont ta 'informazzjoni dwar l-istudenti, 771 00:41:25,000 --> 00:41:28,000 u l-istudenti jista 'jkollhom, per eżempju, ID, isem 772 00:41:28,000 --> 00:41:31,000 u dar f'post bħal Harvard, għalhekk dawn huma 3 biċċiet ta 'informazzjoni 773 00:41:31,000 --> 00:41:34,000 irridu li żżomm madwar, so let me imorru quddiem u tibda tikteb programm ftit hawn, 774 00:41:34,000 --> 00:41:38,000 jinkludu stdio.h. 775 00:41:38,000 --> 00:41:42,000 Let me do jinkludu cs50.h. 776 00:41:42,000 --> 00:41:44,000 U mbagħad tibda l-funzjoni prinċipali tiegħi. 777 00:41:44,000 --> 00:41:46,000 I mhux se jolqot bl-ebda argument linja tal-kmand, 778 00:41:46,000 --> 00:41:49,000 u hawn nixtieq li jkollhom student, hekk jien ser ngħid 779 00:41:49,000 --> 00:41:54,000 student ikollu l-isem, hekk jien se ngħid "isem sekwenza." 780 00:41:54,000 --> 00:41:59,000 Imbagħad jien se ngħid student għandu wkoll ID, id hekk int, 781 00:41:59,000 --> 00:42:03,000 u student ikollu dar, hekk jien ukoll se ngħid "house sekwenza." 782 00:42:03,000 --> 00:42:06,000 Imbagħad I ser tordna dawn ftit aktar nadif bħal dan. 783 00:42:06,000 --> 00:42:11,000 Okay, issa għandi 3 varjabbli li biex jirrappreżentaw student, hekk "student". 784 00:42:11,000 --> 00:42:15,000 >> U issa nixtieq li timla dawn il-valuri, so let me jimxi 'l quddiem u ngħid xi ħaġa simili 785 00:42:15,000 --> 00:42:18,000 "Id = 123." 786 00:42:18,000 --> 00:42:21,000 Isem se tikseb David. 787 00:42:21,000 --> 00:42:24,000 Ejja ngħidu dar hija se tikseb Mather, 788 00:42:24,000 --> 00:42:31,000 u mbagħad jien se jagħmlu xi ħaġa simili arbitrarjament printf ("% s, 789 00:42:31,000 --> 00:42:37,000 li huwa ID% d, jgħix fi s%. 790 00:42:37,000 --> 00:42:41,000 U issa, dak li nixtieq li plagg fil hawn, waħda wara l-oħra? 791 00:42:41,000 --> 00:42:47,000 Isem, id-dar; ritorn 0. 792 00:42:47,000 --> 00:42:50,000 Okay, sakemm I invitat up x'imkien here 793 00:42:50,000 --> 00:42:54,000 Naħseb għandna programm pjuttost tajba li taħżen wieħed student. 794 00:42:54,000 --> 00:42:57,000 Naturalment, dan mhux kollha li interessanti. X'jiġri jekk jien tixtieq li jkollha 2 istudenti? 795 00:42:57,000 --> 00:42:59,000 Li l-ebda big deal. I jistgħu jappoġġjaw 2 persuni. 796 00:42:59,000 --> 00:43:03,000 Let me imorru quddiem u jenfasizzaw dan u jinżlu hawn, 797 00:43:03,000 --> 00:43:09,000 u nista 'ngħid "id = 456" għal xi ħadd bħal Rob li jgħix fil Kirkland. 798 00:43:09,000 --> 00:43:12,000 >> Okay, stenna, iżda I ma jistgħux jikkontestaw dawn l-istess ħaġa, 799 00:43:12,000 --> 00:43:15,000 u jidher qisu jien ser ikollhom kopja dan, 800 00:43:15,000 --> 00:43:19,000 so let me ngħid li dawn se jkunu varjabbli David, 801 00:43:19,000 --> 00:43:23,000 u let me nikseb xi kopji ta 'dawn għall Rob. 802 00:43:23,000 --> 00:43:27,000 Aħna ser sejħa dawn Rob iżda dan mhuwiex sejjer jaħdem issa 803 00:43:27,000 --> 00:43:33,000 minħabba I-stenna, ejja bidla lili biex ID1, name1 u house1. 804 00:43:33,000 --> 00:43:35,000 Rob se jkun 2, 2. 805 00:43:35,000 --> 00:43:42,000 Stajt ltqajna biex tbiddel dan hawn, hawn, hawn, hawn, hawn, hawn. 806 00:43:42,000 --> 00:43:45,000 Stenna, dak dwar Tommy? Ejja nagħmlu dan mill-ġdid. 807 00:43:45,000 --> 00:43:49,000 Ovvjament jekk inti xorta taħseb li dan huwa mod tajjeb ta 'kif isir dan, mhuwiex, 808 00:43:49,000 --> 00:43:52,000 hekk kopja / paste ħażina. 809 00:43:52,000 --> 00:43:55,000 Iżda aħna solvuta din ġimgħa ilu. 810 00:43:55,000 --> 00:43:59,000 >> Liema kienet soluzzjoni tagħna meta ridna li jkollhom każi multipli tat-tip tad-data istess? 811 00:43:59,000 --> 00:44:01,000 [Studenti] Firxa. 812 00:44:01,000 --> 00:44:03,000 Firxa, so let me jippruvaw biex tnaddaf dan up. 813 00:44:03,000 --> 00:44:07,000 Let me jagħmlu xi spazju għall myself fil-quċċata, u let me minflok tagħmel dan hawn. 814 00:44:07,000 --> 00:44:12,000 Aħna ser sejħa dawn in-nies, u minflok jien se ngħid "ids int," 815 00:44:12,000 --> 00:44:14,000 u jien ser tappoġġja 3 ta 'magħna għal issa. 816 00:44:14,000 --> 00:44:18,000 Jien se ngħid "ismijiet spag," u jien ser tappoġġa 3 ta 'magħna, 817 00:44:18,000 --> 00:44:22,000 u mbagħad jien se ngħid "djar spag," u jien ser tappoġġja 3 minna. 818 00:44:22,000 --> 00:44:26,000 Issa fil hawn minflok David jkollna varjazzjonijiet lokali tiegħu stess 819 00:44:26,000 --> 00:44:28,000 nistgħu jeħles dawk. 820 00:44:28,000 --> 00:44:30,000 Dan iħoss tajba li aħna qed tindif dan up. 821 00:44:30,000 --> 00:44:35,000 I jistgħu mbagħad ngħid David se tkun [0] u ismijiet [0] 822 00:44:35,000 --> 00:44:38,000 u djar [0]. 823 00:44:38,000 --> 00:44:41,000 U allura Rob nistgħu istess mod jiffrankaw fuq dan. 824 00:44:41,000 --> 00:44:46,000 Ejja tpoġġi din stabbiliti hawn, hekk hu għaddej biex arbitrarjament tkun ids [1]. 825 00:44:46,000 --> 00:44:50,000 Hu għaddej biex tkun l-ismijiet [1], 826 00:44:50,000 --> 00:44:53,000 u mbagħad fl-aħħar, djar [1]. 827 00:44:53,000 --> 00:44:57,000 >> Still ftit tedious, u issa għandi din il-figura, 828 00:44:57,000 --> 00:45:03,000 hekk ejja ngħidu "ismijiet [0], id [0], djar [0], 829 00:45:03,000 --> 00:45:06,000 u ejja pluralize dan. 830 00:45:06,000 --> 00:45:09,000 IDs, ids, ids. 831 00:45:09,000 --> 00:45:12,000 U għal darb'oħra, jien tagħmel dan, sabiex għal darb'oħra, jien diġà jirrikorru għal kopja / paste mill-ġdid, 832 00:45:12,000 --> 00:45:14,000 hekk odds huma hemm soluzzjoni oħra hawn. 833 00:45:14,000 --> 00:45:18,000 I tista 'probabbilment tnaddaf dan up ulterjuri ma' linja jew xi ħaġa bħal dik, 834 00:45:18,000 --> 00:45:21,000 hekk fil-qosor, huwa ftit aħjar iżda xorta jħoss simili 835 00:45:21,000 --> 00:45:24,000 Jien jirrikorru kopja / paste, imma anki dan, I jsostnu, 836 00:45:24,000 --> 00:45:27,000 mhuwiex verament fundamentalment is-soluzzjoni dritt minħabba 837 00:45:27,000 --> 00:45:29,000 dak li jekk f'xi aħna tiddeċiedi inti taf liema? 838 00:45:29,000 --> 00:45:32,000 Aħna verament kellha ħażna indirizzi email għall David u Rob 839 00:45:32,000 --> 00:45:34,000 u kulħadd f'dan il-programm. 840 00:45:34,000 --> 00:45:36,000 Għandna wkoll taħżen numri tat-telefon. 841 00:45:36,000 --> 00:45:39,000 Għandna wkoll taħżen numri ta 'kuntatt ta' emerġenza. 842 00:45:39,000 --> 00:45:41,000 Aħna kollha dawn il-biċċiet ta 'data li rridu li jaħżen, 843 00:45:41,000 --> 00:45:43,000 hekk kif taħseb li tmur dwar kif isir dan? 844 00:45:43,000 --> 00:45:46,000 >> You jiddikjaraw ieħor array fil-quċċata, u allura inti manwalment żid 845 00:45:46,000 --> 00:45:49,000 l-indirizz email [0], indirizz elettroniku [1] 846 00:45:49,000 --> 00:45:51,000 għall David u Rob u oħrajn. 847 00:45:51,000 --> 00:45:56,000 Imma hemm verament biss suppożizzjoni sottostanti dan id-disinn 848 00:45:56,000 --> 00:45:59,000 li jiena jużaw is-sistema unur li tkun taf li 849 00:45:59,000 --> 00:46:03,000 [I] f'kull arrays diversi 850 00:46:03,000 --> 00:46:06,000 biss hekk jiġri li jirreferu għall-istess persuna, 851 00:46:06,000 --> 00:46:10,000 hekk [0] fil ids huwa numru 123, 852 00:46:10,000 --> 00:46:13,000 u jien ser jassumi li l-ismijiet [0] 853 00:46:13,000 --> 00:46:16,000 huwa l-isem l-istess persuna u djar [0] 854 00:46:16,000 --> 00:46:21,000 huwa d-dar l-istess persuna u ibqa 'sejjer hekk għall kollha tal-matriċi varji li I joħolqu. 855 00:46:21,000 --> 00:46:24,000 Iżda avviż li hemm l-ebda rabta fundamentali 856 00:46:24,000 --> 00:46:27,000 fost dawk il-biċċiet 3 ta 'informazzjoni, id-isem u d-dar, 857 00:46:27,000 --> 00:46:32,000 anke jekk l-entità aħna qed jippruvaw mudell f'dan il-programm ma jkunx matriċi. 858 00:46:32,000 --> 00:46:35,000 Arrays huma biss b'dan il-mod programmatiku biex dan isir. 859 00:46:35,000 --> 00:46:38,000 Dak li aħna verament irridu li mudell fil-programm tagħna huwa persuna 860 00:46:38,000 --> 00:46:41,000 bħal David, persuna bħal Rob minn ġewwa illi 861 00:46:41,000 --> 00:46:46,000 jew siġillar huwa isem u l-ID u dar. 862 00:46:46,000 --> 00:46:49,000 >> Nistgħu b'xi mod tesprimi din l-idea ta 'inkapsulament 863 00:46:49,000 --> 00:46:52,000 li bih persuna jkollha ID, isem u dar 864 00:46:52,000 --> 00:46:55,000 u mhux jirrikorru għal verament dan Hack biha aħna biss 865 00:46:55,000 --> 00:46:58,000 fiduċja li xi ħaġa kategorija 866 00:46:58,000 --> 00:47:02,000 jirreferi għall-entità tal-bniedem istess f'kull wieħed minn dawn arrays differenti? 867 00:47:02,000 --> 00:47:04,000 Nistgħu fil-fatt jagħmlu dan. 868 00:47:04,000 --> 00:47:08,000 Let me go fuq ewlenija għal issa, u let me toħloq stess tad-data tiegħi tip 869 00:47:08,000 --> 00:47:10,000 għall verament l-ewwel darba. 870 00:47:10,000 --> 00:47:14,000 Aħna użati din it-teknika fl-ġirja, 871 00:47:14,000 --> 00:47:17,000 iżda hawnhekk jien ser jimxi 'l quddiem u joħolqu tip ta' data, 872 00:47:17,000 --> 00:47:19,000 u inti taf liema, jien ser sejħa hija student jew persuna, 873 00:47:19,000 --> 00:47:23,000 u jien ser tuża typedef għal jiddefinixxu tip. 874 00:47:23,000 --> 00:47:25,000 Jien se ngħid li dan huwa l-istruttura, 875 00:47:25,000 --> 00:47:29,000 u allura din l-istruttura se tkun ta 'student tip, aħna ser ngħidu, 876 00:47:29,000 --> 00:47:31,000 anki jekk huwa ftit datata issa għalija. 877 00:47:31,000 --> 00:47:33,000 Aħna ser jgħidu "int id." 878 00:47:33,000 --> 00:47:35,000 Aħna ser jgħidu "isem sekwenza." 879 00:47:35,000 --> 00:47:37,000 Imbagħad aħna ser ngħidu "house string," 880 00:47:37,000 --> 00:47:40,000 hekk issa sa l-aħħar ta 'dawn il-linji ftit tal-kodiċi 881 00:47:40,000 --> 00:47:45,000 I għadek mgħallma clang li jeżisti 882 00:47:45,000 --> 00:47:49,000 tip ta 'data minbarra ints, minbarra kordi, minbarra jirdoppja, minbarra flowts. 883 00:47:49,000 --> 00:47:54,000 >> Bħala ta 'dan il-mument fil-linja ħin 11, issa hemm tip ta' data ġdida msejħa l-istudenti, 884 00:47:54,000 --> 00:47:58,000 u issa nista 'niddikjara varjabbli student kullimkien nixtieq, 885 00:47:58,000 --> 00:48:01,000 so let me iscroll hawn biex in-nies. 886 00:48:01,000 --> 00:48:05,000 Issa nista 'teħles minn dan, u I tista' tmur lura għal David hawn, 887 00:48:05,000 --> 00:48:10,000 u għal David I jistgħu attwalment ngħid li David, 888 00:48:10,000 --> 00:48:13,000 nistgħu litteralment isem il-varjabbli wara myself, 889 00:48:13,000 --> 00:48:16,000 se tkun ta 'student tip. 890 00:48:16,000 --> 00:48:18,000 Dan jista 'tfittex ftit stramb, imma dan mhux kollha li differenti 891 00:48:18,000 --> 00:48:22,000 milli jiddikjaraw xi ħaġa bħala int jew string jew float. 892 00:48:22,000 --> 00:48:24,000 Huwa biss hekk jiġri li għandu jissejjaħ student issa, 893 00:48:24,000 --> 00:48:28,000 u jekk irrid biex xi ħaġa ġewwa ta 'din l-istruttura 894 00:48:28,000 --> 00:48:31,000 I issa għandhom jużaw biċċa ġdida ta 'sintassi, imma hija pjuttost sempliċi, 895 00:48:31,000 --> 00:48:39,000 david.id = 123, david.name = "David" fil-kapital D, 896 00:48:39,000 --> 00:48:42,000 u david.house = "Mather," 897 00:48:42,000 --> 00:48:46,000 u issa nista 'teħles minn dan il-għalf hawn. 898 00:48:46,000 --> 00:48:51,000 Avviż konna issa ġġeddu programm tagħna verament mod ferm aħjar 899 00:48:51,000 --> 00:48:54,000 f'dak il-programm tagħna issa jirrifletti d-dinja reali. 900 00:48:54,000 --> 00:48:57,000 >> Hemm kunċett tad-dinja reali ta 'persuna jew student. 901 00:48:57,000 --> 00:49:02,000 Hawnhekk għandna issa verżjoni C ta 'persuna jew aktar speċifikament student. 902 00:49:02,000 --> 00:49:05,000 Ġewwa ta 'dik il-persuna huma dawn il-karatteristiċi relevanti, 903 00:49:05,000 --> 00:49:10,000 ID, l-isem u d-dar, u għalhekk Rob essenzjalment isir l-istess ħaġa stabbiliti hawn, 904 00:49:10,000 --> 00:49:14,000 hekk istudenti Rob, u issa rob.id = 456, 905 00:49:14,000 --> 00:49:17,000 rob.name = "Rob." 906 00:49:17,000 --> 00:49:20,000 Il-fatt li l-varjabbli hija msejħa Rob huwa tip ta 'sens. 907 00:49:20,000 --> 00:49:22,000 Nistgħu qalu li din x jew y jew z. 908 00:49:22,000 --> 00:49:25,000 Aħna biss imsemmija hija Rob jkun semantikament konsistenti, 909 00:49:25,000 --> 00:49:28,000 imma verament l-isem huwa ġewwa ta 'dak il-qasam innifsu, 910 00:49:28,000 --> 00:49:30,000 hekk issa għandi dan. 911 00:49:30,000 --> 00:49:33,000 Dan ukoll ma jħossu bħal l-aħjar disinn f'dak stajt iebes kodifikati David. 912 00:49:33,000 --> 00:49:35,000 Stajt iebes kodifikati Rob. 913 00:49:35,000 --> 00:49:39,000 U jien xorta jkollhom jirrikorru għal xi kopja u paste kull darba nixtieq varjabbli ġodda. 914 00:49:39,000 --> 00:49:43,000 Barra minn hekk, I għandhom apparentement jagħti lil kull wieħed dawn il-varjabbli l-isem, 915 00:49:43,000 --> 00:49:46,000 anki jekk I d ​​ħafna pjuttost jiddeskrivu dawn il-varjabbli 916 00:49:46,000 --> 00:49:48,000  aktar studenti ġeneriku kif. 917 00:49:48,000 --> 00:49:52,000 >> Issa nistgħu jingħaqdu l-ideat li kienu qegħdin jaħdmu tajjeb għalina 918 00:49:52,000 --> 00:49:56,000 u minflok jgħidu, "Inti taf liema, jagħtu me istudenti imsejħa varjabbli, 919 00:49:56,000 --> 00:50:01,000 u ejja li hija tkun ta 'daqs 3, "hekk issa I jistgħu jirfinaw din ulterjuri, 920 00:50:01,000 --> 00:50:04,000 jeħles mill-David manwalment iddikjarat, 921 00:50:04,000 --> 00:50:08,000 u nista 'ngħid xi ħaġa simili minflok istudenti [0] hawn. 922 00:50:08,000 --> 00:50:11,000 I jistgħu mbagħad ngħid istudenti [0] hawn, 923 00:50:11,000 --> 00:50:14,000 istudenti [0] hawn, u oħrajn, u I tista 'tmur madwar 924 00:50:14,000 --> 00:50:16,000 u nadif li għall Rob. 925 00:50:16,000 --> 00:50:19,000 I tista 'wkoll tmur dwar issa forsi żżid linja 926 00:50:19,000 --> 00:50:23,000 u l-użu GetString u GetInt biex fil-fatt tikseb dawn il-valuri mill-utent. 927 00:50:23,000 --> 00:50:27,000 I tista 'tmur dwar żżid kostanti għaliex dan huwa ġeneralment prattika ħażina 928 00:50:27,000 --> 00:50:29,000 għall-kodiċi hard xi numru arbitrarju bħal 3 dritt hawn 929 00:50:29,000 --> 00:50:33,000 u mbagħad biss ftakar li inti għandek tpoġġi mhux aktar minn 3 istudenti fiha. 930 00:50:33,000 --> 00:50:36,000 Dan probabbilment ikun aħjar li tuża # tiddefinixxi fil-quċċata tal-fajl tiegħi 931 00:50:36,000 --> 00:50:40,000 u l-fattur li minn, hekk fil-fatt, let me imorru quddiem u jiġġeneralizza din. 932 00:50:40,000 --> 00:50:43,000 >> Let me jiftħu eżempju li l-fost lum 933 00:50:43,000 --> 00:50:46,000 eżempji bil-quddiem, structs1. 934 00:50:46,000 --> 00:50:49,000 Dan huwa programm aktar kompluta li juża # tiddefinixxi up here 935 00:50:49,000 --> 00:50:51,000 u jgħid aħna qed tmur biex ikollhom 3 istudenti fil-kontumaċja. 936 00:50:51,000 --> 00:50:54,000 Hawnhekk jien tiddikjara jiswew klassi ta 'studenti, 937 00:50:54,000 --> 00:50:57,000 hekk klassi ta 'studenti, u issa jien jużaw ħolqa 938 00:50:57,000 --> 00:51:00,000 biss biex jagħmlu l-kodiċi ftit aktar eleganti, timla l-klassi 939 00:51:00,000 --> 00:51:05,000 b'input-utent, hekk jtenni mill i = 0 sa l-istudenti, li huwa 3. 940 00:51:05,000 --> 00:51:07,000 U mbagħad I pront lill-utent f'dan il-verżjoni 941 00:51:07,000 --> 00:51:10,000  x'hemm ID-istudent, u I ġġibu bil GetInt. 942 00:51:10,000 --> 00:51:13,000 X'hemm isem l-istudent, u mbagħad I ġġibu bil GetString. 943 00:51:13,000 --> 00:51:15,000 X'hemm dar l-istudent? I ġġibu bil GetString. 944 00:51:15,000 --> 00:51:19,000 U mbagħad fil-qiegħ hawnhekk I biss iddeċieda li jibdel 945 00:51:19,000 --> 00:51:22,000 kif jien istampar dawn jitwettqu u li attwalment jużaw linja, 946 00:51:22,000 --> 00:51:24,000 u li jien istampar? 947 00:51:24,000 --> 00:51:27,000 Skond il-kumment jien istampar xi ħadd fil Mather, 948 00:51:27,000 --> 00:51:30,000 u li hu hekk Rob u Tommy u oħrajn-fatt tal Tommy fil Mather. 949 00:51:30,000 --> 00:51:34,000 Tommy u David tkun stampata f'dan il-każ, imma kif qed taħdem din? 950 00:51:34,000 --> 00:51:40,000 Aħna ma bbenefikawx din il-funzjoni qabel, iżda tieħu raden dwar dak li dan ma. 951 00:51:40,000 --> 00:51:42,000 Tqabbel kordi. 952 00:51:42,000 --> 00:51:45,000 >> Huwa ftit mhux ovvju kif jikkompara kordi għaliex jirriżulta 953 00:51:45,000 --> 00:51:49,000 jekk dan jirritorna 0 li tfisser il-kordi huma ugwali. 954 00:51:49,000 --> 00:51:53,000 Jekk dan jirritorna a -1 li jfisser wieħed jidħol alfabetikament qabel l-oħra, 955 00:51:53,000 --> 00:51:57,000 u jekk dan jirritorna 1 li tfisser il-kelma oħra tkun ġejja alfabetikament 956 00:51:57,000 --> 00:52:00,000 qabel l-ieħor, u inti tista 'tfittex online jew fil-paġna bniedem 957 00:52:00,000 --> 00:52:04,000 li jaraw eżattament liema mod huwa li, iżda dan kollu issa qed tagħmel huwa huwa qal 958 00:52:04,000 --> 00:52:09,000 jekk l-[i]. dar hija ugwali għal "Mather" 959 00:52:09,000 --> 00:52:13,000 imbagħad imorru quddiem u jistampa hekk u hekk huwa fil Mather. 960 00:52:13,000 --> 00:52:16,000 Iżda hawn xi ħaġa li aħna ma bbenefikawx qabel, u aħna ser terga 'lura għal dan. 961 00:52:16,000 --> 00:52:21,000 I do not recall qatt li jiġri dan fi kwalunkwe ta 'programmi tiegħi. 962 00:52:21,000 --> 00:52:24,000 Free jidher li qed jirreferi għall-memorja, ħelsien memorja, 963 00:52:24,000 --> 00:52:31,000 imma dak memorja jien apparentement ħelsien f'dan loop fil-qiegħ ta 'dan il-programm? 964 00:52:31,000 --> 00:52:34,000 Jidher qisu jien ħelsien isem ta 'persuna 965 00:52:34,000 --> 00:52:37,000 u d-dar ta 'persuna, iżda għaliex huwa li? 966 00:52:37,000 --> 00:52:41,000 >> Jirriżulta kollha dawn il-ġimgħat li inti kont qed tuża GetString 967 00:52:41,000 --> 00:52:45,000 konna tip ta 'qegħdin jintroduċu bug fis-kull wieħed mill-programmi tiegħek. 968 00:52:45,000 --> 00:52:51,000 GetString mill-memorja jalloka disinn sabiex ikun jista 'ritorn lejn inti string, 969 00:52:51,000 --> 00:52:55,000 bħal David, jew Rob, u inti tista 'mbagħad tagħmel xi trid 970 00:52:55,000 --> 00:52:59,000 ma 'dak string fil-programm tiegħek għax konna riżervati l-memorja għalik. 971 00:52:59,000 --> 00:53:02,000 Il-problema hija dan kollu ħin kull darba li inti sejħa GetString 972 00:53:02,000 --> 00:53:05,000 aħna, l-awturi ta GetString, ġew tistaqsi s-sistema operattiva 973 00:53:05,000 --> 00:53:07,000 biex tagħtina ftit ta 'RAM għal dan sekwenza. 974 00:53:07,000 --> 00:53:09,000 Agħtina daqsxejn ta 'RAM għal dan sekwenza li jmiss. 975 00:53:09,000 --> 00:53:11,000 Agħtina RAM ftit aktar għal din is-sekwenza li jmiss. 976 00:53:11,000 --> 00:53:13,000 Dak li inti, il-programmer, qatt ma kienu jagħmlu 977 00:53:13,000 --> 00:53:15,000 qed tagħti lilna li back-memorja, 978 00:53:15,000 --> 00:53:17,000 hekk għal dawn il-ġimgħat diversi kollha tal-programmi li inti stajt bil-miktub 979 00:53:17,000 --> 00:53:20,000 kellhom dak li sejjaħ qabża memorja fejn iżommu jużaw 980 00:53:20,000 --> 00:53:24,000 memorja aktar u aktar kull darba li inti sejħa GetString, u li l-multa. 981 00:53:24,000 --> 00:53:27,000 We deliberatament jagħmlu dan fl-ewwel ġimgħat għaliex mhuwiex dak interessanti 982 00:53:27,000 --> 00:53:29,000 li jkollhom għalfejn tinkwieta dwar fejn il-sekwenza ikun ġej minn. 983 00:53:29,000 --> 00:53:34,000 Kulma trid hija l-kelma Rob li jiġu lura meta l-utent tipi huwa pulzieri 984 00:53:34,000 --> 00:53:38,000 >> Iżda miexja 'l quddiem issa għandna biex jibda jkollna aktar sofistikati dwar dan. 985 00:53:38,000 --> 00:53:42,000 Kull darba li aħna jallokaw memorja aħna aħjar eventwalment jagħtih lura. 986 00:53:42,000 --> 00:53:45,000 Mod ieħor fl-dinja reali fuq Mac tiegħek jew PC inti jista 'jkollhom xi kultant esperjenza 987 00:53:45,000 --> 00:53:50,000 Sintomi fejn il-kompjuter tiegħek huwa tħin biex jieqaf eventwalment 988 00:53:50,000 --> 00:53:54,000 jew l-ballun stupid bajja għażil huwa biss jokkupa l-infurmatika 989 00:53:54,000 --> 00:53:56,000 attenzjoni sħiħa u inti ma tistax tagħmel affarijiet. 990 00:53:56,000 --> 00:54:00,000 Dan jista 'jiġi spjegat minn kull numru ta' bugs, imma fost dawk bugs possibbli 991 00:54:00,000 --> 00:54:03,000 huma affarijiet msejħa tnixxijiet memorja fejn xi ħadd li kiteb li l-biċċa ta 'softwer 992 00:54:03,000 --> 00:54:07,000 inti qed tuża ma ftakar biex memorja ħielsa 993 00:54:07,000 --> 00:54:10,000 li hu jew hi talbet lill-sistema operattiva għal, 994 00:54:10,000 --> 00:54:14,000 ma jużawx GetString, għaliex li l-ħaġa CS50, iżda bl-użu funzjonijiet simili 995 00:54:14,000 --> 00:54:16,000 li titlob lill-sistema operattiva għall-memorja. 996 00:54:16,000 --> 00:54:19,000 Jekk inti jew li screw up u qatt fil-fatt ritorn li l-memorja 997 00:54:19,000 --> 00:54:24,000 sintomu ta 'li jista' jkun li programm inaqqas u jrażżan u tnaqqas ir-ritmu 998 00:54:24,000 --> 00:54:26,000 sakemm inti tiftakar li sejħa ħielsa. 999 00:54:26,000 --> 00:54:28,000 >> Aħna ser terga 'lura għal meta u għaliex inti kieku ssejjaħ ħielsa, 1000 00:54:28,000 --> 00:54:32,000 imma ejja imorru quddiem biss għal miżura tajba u tipprova taħdem dan il-programm partikolari. 1001 00:54:32,000 --> 00:54:35,000 Dan kien jissejjaħ structs1, jidħol. 1002 00:54:35,000 --> 00:54:40,000 Let me imorru quddiem u run structs1, 123, David Mather, 1003 00:54:40,000 --> 00:54:47,000 456, Rob Kirkland, 789, 1004 00:54:47,000 --> 00:54:50,000 Tommy Mather, u naraw David fil Mather, tal Tommy fil Mather. 1005 00:54:50,000 --> 00:54:53,000 Dan huwa biss verifika sanità ftit li l-programm qed taħdem. 1006 00:54:53,000 --> 00:54:56,000 Issa, sfortunatament, dan il-programm huwa xi ftit frustranti f'dik 1007 00:54:56,000 --> 00:55:00,000 I ma dak kollu li jaħdmu, I ittajpjat fil 9 kordi differenti, hit jidħol, 1008 00:55:00,000 --> 00:55:04,000 kien qal li kien fil Mather, għadhom ovvjament kont naf li kien Mather diġà minħabba I ittajpjat. 1009 00:55:04,000 --> 00:55:07,000 Ikun inqas sbieħ jekk dan il-programm huwa aktar simili database 1010 00:55:07,000 --> 00:55:10,000 u huwa attwalment jiftakar dak I ittajpjat fil- 1011 00:55:10,000 --> 00:55:12,000 so I qatt jerġa 'jkollhom kontribut dawn ir-reġistri istudent. 1012 00:55:12,000 --> 00:55:15,000 Forsi huwa bħal sistema registrarial. 1013 00:55:15,000 --> 00:55:21,000 >> Nistgħu nagħmlu dan bl-użu din it-teknika magħrufa bħala input fajl fajl I / O, u l-produzzjoni, 1014 00:55:21,000 --> 00:55:24,000 mod ħafna ġeneriku ta 'tgħid kwalunkwe ħin li inti tixtieq li jaqra fajls jew ikteb fajls 1015 00:55:24,000 --> 00:55:26,000 inti tista 'tagħmel dan ma' sett ta 'funzjonijiet. 1016 00:55:26,000 --> 00:55:29,000 Let me imorru quddiem u tiftaħ din structs2.c eżempju, 1017 00:55:29,000 --> 00:55:33,000 li huwa kważi identiku, imma ejja ara dak li issa ma. 1018 00:55:33,000 --> 00:55:36,000 Fil-quċċata tal-fajl Niddikjara klassi ta 'studenti. 1019 00:55:36,000 --> 00:55:38,000 I imbagħad timla l-klassi b'input l-utent, 1020 00:55:38,000 --> 00:55:41,000 hekk dawk il-linji ta 'kodiċi huma eżattament bħal qabel. 1021 00:55:41,000 --> 00:55:45,000 Imbagħad jekk I iscroll stabbiliti hawn I jistampaw kull min huwa fil Mather arbitrarjament bħal qabel, 1022 00:55:45,000 --> 00:55:47,000 iżda din hija karatteristika ġdida interessanti. 1023 00:55:47,000 --> 00:55:51,000 Dawn il-linji ta 'kodiċi huma ġodda, u dawn jintroduċu xi ħaġa hawn, 1024 00:55:51,000 --> 00:55:55,000 FAJL, l-għotjien, u li għandha * fil hawnhekk ukoll. 1025 00:55:55,000 --> 00:55:58,000 Let me jimxu dan hawn fuq, a * aktar minn hawnhekk ukoll. 1026 00:55:58,000 --> 00:56:00,000 >> Din il-funzjoni ma rajniex qabel, fopen, 1027 00:56:00,000 --> 00:56:03,000 iżda dan ifisser fajl miftuħ, so ejja skim permezz ta 'dawn, 1028 00:56:03,000 --> 00:56:05,000 u din hija xi ħaġa aħna ser terga 'lura fl psets futuri, 1029 00:56:05,000 --> 00:56:10,000 iżda din il-linja hawnhekk essenzjalment jiftaħ fajl imsejjaħ database, 1030 00:56:10,000 --> 00:56:13,000 u dan b'mod speċifiku tiftħu b'tali mod li tista 'tagħmel dak li dan? 1031 00:56:13,000 --> 00:56:15,000 [Inaudible-istudent] 1032 00:56:15,000 --> 00:56:19,000 Dritt, hekk "w" ifisser biss huwa javżak-sistema operattiva 1033 00:56:19,000 --> 00:56:21,000 tiftaħ dan il-fajl b'tali mod li nista 'tikteb lilha. 1034 00:56:21,000 --> 00:56:23,000 Ma rridx biex taqraha. Ma rridx li biss ħarsa lejn dan. 1035 00:56:23,000 --> 00:56:26,000 Irrid li jibdlu u żid Jittieħed potenzjalment miegħu, 1036 00:56:26,000 --> 00:56:28,000 u l-fajl se jiġu msejħa database. 1037 00:56:28,000 --> 00:56:30,000 Dan jista 'jissejjaħ xejn. 1038 00:56:30,000 --> 00:56:32,000 Dan jista 'jkun database.txt. Dan jista 'jkun. Db. 1039 00:56:32,000 --> 00:56:37,000 Dan jista 'jkun kelma bħal foo, iżda I għażlet arbitrarjament li l-isem tad-database fajl. 1040 00:56:37,000 --> 00:56:42,000 Dan huwa kontroll sanità ftit li aħna ser terga 'lura għal f'dettall kbir matul iż-żmien, 1041 00:56:42,000 --> 00:56:47,000 jekk fp, għal pointer fajl, ma NULL ugwali li tfisser kollox huwa tajjeb. 1042 00:56:47,000 --> 00:56:51,000 >> Long storja qasira, funzjonijiet simili fopen kultant jonqsu. 1043 00:56:51,000 --> 00:56:53,000 Forsi l-fajl ma teżistix. Forsi int minn spazju diska. 1044 00:56:53,000 --> 00:56:55,000 Forsi inti ma għandekx permess biex dak folder, 1045 00:56:55,000 --> 00:56:58,000 hekk jekk fopen jirritorna xi ħaġa null ħażina ġara. 1046 00:56:58,000 --> 00:57:02,000 Bil-maqlub, jekk fopen ma ritorn null kollox huwa tajjeb 1047 00:57:02,000 --> 00:57:04,000 u I tista 'tibda bil-miktub lill dan il-fajl. 1048 00:57:04,000 --> 00:57:06,000 Hawn trick ġdid. 1049 00:57:06,000 --> 00:57:08,000 Din hija linja għal li l-iterazzjoni fuq kull wieħed mill-istudenti tiegħi, 1050 00:57:08,000 --> 00:57:10,000 u dan jistenna hekk simili għal dak li aħna ghamilt qabel, 1051 00:57:10,000 --> 00:57:15,000 iżda din il-funzjoni huwa kuġin ta printf sejjaħ fprintf għall-fajl printf, 1052 00:57:15,000 --> 00:57:18,000 u avviż huwa differenti biss 2 modi. 1053 00:57:18,000 --> 00:57:20,000 Wieħed, li jibda bil f minflok p, 1054 00:57:20,000 --> 00:57:23,000 iżda mbagħad ewwel argument tagħha hija apparentement liema? 1055 00:57:23,000 --> 00:57:25,000 [Studenti] File. >> Huwa fajl. 1056 00:57:25,000 --> 00:57:30,000 Din ħaġa imsejħa FP, li aħna ser eventwalment tease apparti dak pointer fajl huwa, 1057 00:57:30,000 --> 00:57:35,000 iżda għal issa fp sempliċement tirrappreżenta l-fajl li jien miftuħa, 1058 00:57:35,000 --> 00:57:41,000 hekk fprintf hawn huwa qal tipprintja ID dan l-utent għall-fajl, li ma l-iskrin. 1059 00:57:41,000 --> 00:57:44,000 Stampa isem l-utent għall-fajl, li ma l-iskrin, 1060 00:57:44,000 --> 00:57:47,000 l-dar għall-fajl, li ma l-iskrin, u mbagħad stabbiliti hawn, ovvjament, 1061 00:57:47,000 --> 00:57:50,000 jagħlaq il-fajl, u mbagħad stabbiliti hawn b'xejn l-memorja. 1062 00:57:50,000 --> 00:57:53,000 >> L-unika differenza bejn din il-verżjoni 2 u verżjoni 1 1063 00:57:53,000 --> 00:57:58,000 hija l-introduzzjoni ta 'fopen u dan FAJL ma * 1064 00:57:58,000 --> 00:58:01,000 u dan il-kunċett ta 'fprintf, so ejja ara dak ir-riżultat aħħari huwa. 1065 00:58:01,000 --> 00:58:03,000 Let me go fis tieqa terminal tiegħi. 1066 00:58:03,000 --> 00:58:06,000 Let me run structs2, jidħol. 1067 00:58:06,000 --> 00:58:09,000 Id-Dehra kollox huwa tajjeb. Ejja terġa 'ssir structs2. 1068 00:58:09,000 --> 00:58:15,000 123, David Mather, 456, Rob Kirkland, 1069 00:58:15,000 --> 00:58:19,000 789, Tommy Mather, jidħol. 1070 00:58:19,000 --> 00:58:23,000 Qisu ruħu l-istess, imma jekk jien issa do ls 1071 00:58:23,000 --> 00:58:28,000 Avviż dak fajl huwa hawnhekk fost l-kodiċi tiegħi, id-database, 1072 00:58:28,000 --> 00:58:32,000 hekk ejja miftuħa li, gedit ta 'database, u ħarsa lejn dak. 1073 00:58:32,000 --> 00:58:34,000 Mhuwiex l-sexiest ta 'formats tal-fajls. 1074 00:58:34,000 --> 00:58:38,000 Huwa verament huwa biċċa waħda ta 'linja data għal kull ringiela għal kull linja, 1075 00:58:38,000 --> 00:58:42,000 imma dawk fostkom li jużaw fajls Excel jew CSV, comma separati valuri, 1076 00:58:42,000 --> 00:58:47,000 I jista 'ċertament użaw fprintf biex minflok forsi jagħmlu xi ħaġa bħal din 1077 00:58:47,000 --> 00:58:50,000 hekk li I jistgħu attwalment joħolqu l-ekwivalenti ta 'fajl Excel 1078 00:58:50,000 --> 00:58:53,000 billi tissepara l-affarijiet ma virgoli, mhux biss linji ġodda. 1079 00:58:53,000 --> 00:58:56,000 >> F'dan il-każ jekk kelli minflok tintuża virgoli minflok linji ġodda 1080 00:58:56,000 --> 00:59:01,000 I jistgħu litteralment tiftaħ dan il-fajl database fl-Excel jekk I minflok għamilha teżamina bħal dan. 1081 00:59:01,000 --> 00:59:03,000 Fil-qosor, issa li għandna l-poter li tikteb fajls 1082 00:59:03,000 --> 00:59:07,000 aħna issa tista 'tibda data persistenti, iż-żamma madwar fuq diska 1083 00:59:07,000 --> 00:59:10,000 sabiex inkunu nistgħu nżommu l-informazzjoni madwar darb'oħra u għal darb'oħra. 1084 00:59:10,000 --> 00:59:14,000 Avviż ftit affarijiet oħra li huma issa ftit aktar familjari. 1085 00:59:14,000 --> 00:59:16,000 Fil-quċċata ta 'dan il-fajl C għandna typedef 1086 00:59:16,000 --> 00:59:21,000 għaliex ridna li jinħoloq tip ta 'data li jirrappreżenta kelma, 1087 00:59:21,000 --> 00:59:25,000 għalhekk dan it-tip huwa msejjaħ kelma, u ġewwa ta 'din l-istruttura 1088 00:59:25,000 --> 00:59:27,000 huwa ftit fancier issa. 1089 00:59:27,000 --> 00:59:30,000 Għaliex hija kelma magħmula minn apparentement firxa? 1090 00:59:30,000 --> 00:59:33,000 X'inhu kelma biss intuwittivament? 1091 00:59:33,000 --> 00:59:35,000 >> Huwa ta 'firxa ta' karattri. 1092 00:59:35,000 --> 00:59:37,000 Huwa sekwenza ta 'karattri lura lura lura. 1093 00:59:37,000 --> 00:59:41,000 ITTRI kollha caps jiġri li jkun we arbitrarjament ngħidu l-ikbar tul 1094 00:59:41,000 --> 00:59:44,000 ta 'xi kelma fid-dizzjunarju li aħna qed jużaw għall-ġirja. 1095 00:59:44,000 --> 00:59:46,000 Għaliex għandi 1? 1096 00:59:46,000 --> 00:59:48,000 Il null karattru. 1097 00:59:48,000 --> 00:59:51,000 Recall meta għamilna l-eżempju Bananagrams għandna bżonn valur speċjali 1098 00:59:51,000 --> 00:59:55,000 fl-aħħar tal-kelma sabiex iżżomm kont 1099 00:59:55,000 --> 00:59:59,000 ta 'fejn il-kliem fil-fatt spiċċat, u bħala l-ispeċifikazzjoni sett problema jgħid 1100 00:59:59,000 --> 01:00:03,000 hawn aħna qed jassoċjaw mal-kelma mogħtija valur Boolean, 1101 01:00:03,000 --> 01:00:05,000 bandiera, biex ngħidu hekk, vera jew falza. 1102 01:00:05,000 --> 01:00:09,000 Sibtha din il-kelma diġà, għaliex aħna realizzata 1103 01:00:09,000 --> 01:00:13,000 aħna verament jeħtieġu mod ta 'ftakar mhux biss dak kelma hija fil ġirja 1104 01:00:13,000 --> 01:00:15,000 iżda jekk jew le inti, il-bniedem, sabuha 1105 01:00:15,000 --> 01:00:20,000 b'tali mod li jekk inti ssib il-kelma "il-" inti tista 'mhux biss tip-, jidħlu, fil, jidħlu, il-jidħol 1106 01:00:20,000 --> 01:00:23,000 u jiksbu 3 punti, 3 punti, 3 punti, 3 punti. 1107 01:00:23,000 --> 01:00:26,000 Aħna rridu li tkun tista 'blacklist din il-kelma billi tistabbilixxi bool 1108 01:00:26,000 --> 01:00:29,000 li minnu jekk inti stajt diġà sabet li, u għalhekk huwa għalhekk li għandna 1109 01:00:29,000 --> 01:00:31,000 inkapsulati li f'din l-istruttura. 1110 01:00:31,000 --> 01:00:35,000 >> Issa, stabbiliti hawn fil ġirja hemm dan Struct oħra msejħa dizzjunarju. 1111 01:00:35,000 --> 01:00:39,000 Assenti hawnhekk hija l-kelma typedef għaliex f'dan il-każ 1112 01:00:39,000 --> 01:00:43,000 aħna meħtieġa biex jirrappreżentaw l-idea ta 'dizzjunarju, 1113 01:00:43,000 --> 01:00:46,000 u dizzjunarju fih mazz sħiħ ta 'kliem, 1114 01:00:46,000 --> 01:00:49,000 kif implikat minn din array, u kemm ta 'dawk il-kliem huma hemmhekk? 1115 01:00:49,000 --> 01:00:51,000 Ukoll, tkun xi tkun dan id-daqs varjabbli imsejħa jgħid. 1116 01:00:51,000 --> 01:00:53,000 Iżda aħna biss bżonn waħda dizzjunarju. 1117 01:00:53,000 --> 01:00:55,000 Aħna ma bżonn ta 'tip ta' data msejħa dizzjunarju. 1118 01:00:55,000 --> 01:00:58,000 Aħna biss bżonn waħda minnhom, u għalhekk jirriżulta fi C 1119 01:00:58,000 --> 01:01:03,000 li jekk inti ma jgħidux typedef, inti biss jgħidu Struct, allura ġewwa l-ċineg kaboċċi 1120 01:01:03,000 --> 01:01:05,000 inti tpoġġi varjabbli tiegħek, allura inti tpoġġi l-isem. 1121 01:01:05,000 --> 01:01:09,000 Dan huwa ddikjarat 1 dizzjunarju varjabbli imsejjaħ 1122 01:01:09,000 --> 01:01:11,000 li tidher bħal dan. 1123 01:01:11,000 --> 01:01:16,000 B'kuntrast, dawn il-linji qed joħolqu struttura tad-data li jistgħu jerġgħu jintużaw imsejjaħ kelma 1124 01:01:16,000 --> 01:01:19,000 inti tista 'toħloq kopji multipli ta', bħad ħloqna 1125 01:01:19,000 --> 01:01:22,000 kopji multipli ta 'studenti. 1126 01:01:22,000 --> 01:01:24,000 >> Xi jfisser dan finalment inessu li jagħmlu? 1127 01:01:24,000 --> 01:01:30,000 Let me go lura fil, ejja ngħidu, eżempju sempliċi minn żminijiet aktar sempliċi, 1128 01:01:30,000 --> 01:01:34,000 u let me jiftħu, ejja ngħidu, compare1.c. 1129 01:01:34,000 --> 01:01:38,000 Il-problema hawnhekk fil-idejn huwa li attwalment qoxra lura 1130 01:01:38,000 --> 01:01:41,000 is-saff ta 'spag u tibda tieħu off dawn ir-roti ta' taħriġ 1131 01:01:41,000 --> 01:01:44,000 għaliex jirriżulta li string dan il-ħin 1132 01:01:44,000 --> 01:01:47,000 huwa kif aħna imwiegħed fil-ġimgħa 1 verament ftit laqam, 1133 01:01:47,000 --> 01:01:51,000 sinonimu mill-bibljoteka CS50 għal xi ħaġa li jistenna ftit aktar cryptic, 1134 01:01:51,000 --> 01:01:53,000 * char, u Rajna dan il stilla qabel. 1135 01:01:53,000 --> 01:01:55,000 Aħna raw dan fil-kuntest ta 'fajls. 1136 01:01:55,000 --> 01:01:59,000 >> Ejja issa tara għaliex aħna kont qed jistaħbew dan id-dettall għal xi żmien issa. 1137 01:01:59,000 --> 01:02:02,000 Hawnhekk huwa fajl imsejjaħ compare1.c, 1138 01:02:02,000 --> 01:02:07,000 u apparentement jitlob lill-utent għal 2 kordi, su t, 1139 01:02:07,000 --> 01:02:11,000 u mbagħad tipprova tqabbel dawk kordi għall-ugwaljanza fil-linja 26, 1140 01:02:11,000 --> 01:02:14,000 u jekk dawn qed ugwali jgħid, "Inti ttajpjati l-istess ħaġa," 1141 01:02:14,000 --> 01:02:17,000 u jekk dawn mhux qed ugwali jgħid, "Inti ittajpjat affarijiet differenti." 1142 01:02:17,000 --> 01:02:19,000 Let me imorru quddiem u jitmexxa dan il-programm. 1143 01:02:19,000 --> 01:02:23,000 Let me go fis direttorju sors tiegħi, tagħmel compare1. Hija miġbura okay. 1144 01:02:23,000 --> 01:02:25,000 Let me run compare1. 1145 01:02:25,000 --> 01:02:27,000 I ser zoom, jidħol. 1146 01:02:27,000 --> 01:02:29,000 Ngħid xi ħaġa. HELLO. 1147 01:02:29,000 --> 01:02:32,000 I ser ngħid xi ħaġa mill-ġdid. HELLO. 1148 01:02:32,000 --> 01:02:34,000 I definitely ma tip affarijiet differenti. 1149 01:02:34,000 --> 01:02:37,000 >> Let me tipprova dan mill-ġdid. BYE BYE. 1150 01:02:37,000 --> 01:02:40,000 Żgur li le differenti, hekk x'inhu għaddej hawn? 1151 01:02:40,000 --> 01:02:44,000 Ukoll, dak li hu verament jiġu pparagunati fil-linja 26? 1152 01:02:44,000 --> 01:02:46,000 [Inaudible-istudent] 1153 01:02:46,000 --> 01:02:49,000 Iva, hekk jirriżulta li string, data tat-tip, huwa tip ta 'gidba abjad. 1154 01:02:49,000 --> 01:02:53,000 A sensiela hija * char, imma dak huwa * char? 1155 01:02:53,000 --> 01:02:56,000 A * char, kif jgħidu, hija pointer, 1156 01:02:56,000 --> 01:03:00,000 u werrej huwa effettivament l-indirizz, 1157 01:03:00,000 --> 01:03:05,000 post somma fil-memorja, u jekk jiġri li għandek ittajpjat fil-kelma bħall HELLO, 1158 01:03:05,000 --> 01:03:08,000 jitlob lura mingħandhom il diskussjonijiet tal-passat ta 'spag 1159 01:03:08,000 --> 01:03:16,000 dan huwa bħall-kelma HELLO. 1160 01:03:16,000 --> 01:03:19,000 Ftakar li kelma bħal HELLO jistax jiġi rappreżentat 1161 01:03:19,000 --> 01:03:22,000 bħala firxa ta 'karattri bħal dan 1162 01:03:22,000 --> 01:03:25,000 u mbagħad ma 'karattru speċjali fit-tmiem imsejjaħ il-karattru null, 1163 01:03:25,000 --> 01:03:27,000 bħala l-ifisser, \. 1164 01:03:27,000 --> 01:03:29,000 X'inhu attwalment string? 1165 01:03:29,000 --> 01:03:32,000 Avviż li dan huwa biċċiet multipli ta 'memorja, 1166 01:03:32,000 --> 01:03:36,000 u fil-fatt, l-aħħar ta 'dan huwa magħruf biss ladarba inti tfittex permezz-sekwenza sħiħa 1167 01:03:36,000 --> 01:03:38,000 tfittex għall-karattru null speċjali. 1168 01:03:38,000 --> 01:03:41,000 Imma jekk dan huwa blokki ta 'memorja mill-memorja tal-kompjuter tiegħi, 1169 01:03:41,000 --> 01:03:44,000 ejja arbitrarju ngħid li dan string biss ltqajna xxurtjati, 1170 01:03:44,000 --> 01:03:47,000 u li ltqajna mqiegħda fil-bidu nett ta 'RAM kompjuter tiegħi. 1171 01:03:47,000 --> 01:03:54,000 Dan huwa byte 0, 1, 2, 3, 4, 5, 6 ... 1172 01:03:54,000 --> 01:04:02,000 >> Meta ngħid xi ħaġa simili GetString u nagħmel string s = GetString 1173 01:04:02,000 --> 01:04:04,000 dak li verament ikunu ritornati? 1174 01:04:04,000 --> 01:04:08,000 Għal dawn il-ġimgħat aħħar diversi, dak li verament qed maħżuna s 1175 01:04:08,000 --> 01:04:13,000 mhux din is-sekwenza per se, imma f'dan il-każ dak li qed jinħażen huwa 1176 01:04:13,000 --> 01:04:18,000 n-numru 0 għaliex dak GetString attwalment ma 1177 01:04:18,000 --> 01:04:20,000 huwa ma fiżikament ritorn string. 1178 01:04:20,000 --> 01:04:22,000 Dan lanqas ma verament jagħmel sens kunċettwali. 1179 01:04:22,000 --> 01:04:24,000 Dak li dan ritorn huwa numru. 1180 01:04:24,000 --> 01:04:28,000 Dak in-numru huwa l-indirizz ta 'HELLO fil-memorja, 1181 01:04:28,000 --> 01:04:32,000 u spag i mbagħad, jekk irridu qoxra lura dan is-saff, spag ma verament jeżistu. 1182 01:04:32,000 --> 01:04:35,000 Huwa biss simplifikazzjoni fil-librerija CS50. 1183 01:04:35,000 --> 01:04:38,000 >> Dan verament hija xi ħaġa imsejħa * char. 1184 01:04:38,000 --> 01:04:41,000 Char jagħmel sens għaliex x'hemm ftit kliem, bħal HELLO? 1185 01:04:41,000 --> 01:04:44,000 Ukoll, huwa sensiela ta 'Chars, serje ta' karattri. 1186 01:04:44,000 --> 01:04:47,000 * Char tfisser l-indirizz ta 'karattru, 1187 01:04:47,000 --> 01:04:50,000 hekk dak ma jfisser li jirritornaw string? 1188 01:04:50,000 --> 01:04:53,000 A sbieħ, mod sempliċi ta 'ritorn string 1189 01:04:53,000 --> 01:04:57,000 huwa pjuttost milli jippruvaw biex insemmu kif I-ritorn għal 5 jew 6 bytes differenti 1190 01:04:57,000 --> 01:05:01,000 let me lura fl-indirizz li byte? 1191 01:05:01,000 --> 01:05:03,000 L-ewwel waħda. 1192 01:05:03,000 --> 01:05:06,000 Fi kliem ieħor, let me jagħtuk l-indirizz ta 'karattru fil-memorja. 1193 01:05:06,000 --> 01:05:10,000 Dak hu * char tirrappreżenta, l-indirizz ta 'wieħed karattru wieħed fil-memorja. 1194 01:05:10,000 --> 01:05:12,000 Sejħa li s varjabbli. 1195 01:05:12,000 --> 01:05:15,000 Aħżen fil-i li jindirizzaw b'mod partikolari, li jiena arbitrarju qal huwa 0, 1196 01:05:15,000 --> 01:05:19,000 biss li żżomm affarijiet sempliċi, iżda fir-realtà huwa ġeneralment ta 'numru akbar. 1197 01:05:19,000 --> 01:05:21,000 >> Stenna minuta. 1198 01:05:21,000 --> 01:05:23,000 Jekk int biss tagħti me l-indirizz ta 'l-ewwel karattru, kif inkun naf x'inhi l-indirizz huwa 1199 01:05:23,000 --> 01:05:25,000 tal-karattru tieni, it-tielet, ir-raba 'u l-ħames? 1200 01:05:25,000 --> 01:05:27,000 [Inaudible-istudent] 1201 01:05:27,000 --> 01:05:31,000 Inti biss taf fejn it-tmiem tas-sekwenza huwa permezz ta 'dan trick handy, 1202 01:05:31,000 --> 01:05:35,000 hekk meta tuża xi ħaġa simili printf, liema printf litteralment tieħu bħala argument tagħha, 1203 01:05:35,000 --> 01:05:39,000 ifakkar li nużaw placeholder din% s, u allura inti jgħaddu 1204 01:05:39,000 --> 01:05:41,000 il-varjabbli li l-ħażna string. 1205 01:05:41,000 --> 01:05:47,000 Dak li int verament tgħaddi huwa l-indirizz ta 'l-ewwel karattru ta' dak sekwenza. 1206 01:05:47,000 --> 01:05:50,000 Printf mbagħad juża għal loop jew loop waqt malli jirċievi dik l-indirizz, 1207 01:05:50,000 --> 01:05:53,000 per eżempju, 0, so let me tagħmel dan issa, 1208 01:05:53,000 --> 01:06:02,000 printf ("% s \ n", i); 1209 01:06:02,000 --> 01:06:07,000 Meta I call printf ("% s \ n", i); dak li jien verament jipprovdu printf ma 1210 01:06:07,000 --> 01:06:13,000 huwa l-indirizz ta 'l-ewwel karattru fl-i, li f'dan il-każ arbitrarja huwa H. 1211 01:06:13,000 --> 01:06:16,000 >> Kif ma printf jafu eżattament dak li juri fuq l-iskrin? 1212 01:06:16,000 --> 01:06:19,000 Il-persuna li implimentat printf implimentata loop waqt jew għall loop 1213 01:06:19,000 --> 01:06:23,000 li tgħid ma dan il-karattru daqs il-karattru null speċjali? 1214 01:06:23,000 --> 01:06:25,000 Jekk le, jistampaw. Kif dwar dan wieħed? 1215 01:06:25,000 --> 01:06:28,000 Jekk le jistampaw, jistampaw, jistampaw, jistampaw. 1216 01:06:28,000 --> 01:06:32,000 Oh, dan huwa wieħed speċjali. Waqqaf istampar u r-ritorn għall-utent. 1217 01:06:32,000 --> 01:06:35,000 U li litteralment dak kollu li kien jiġri taħt il-barnuża, 1218 01:06:35,000 --> 01:06:38,000 u li l-lott sabiex jiddiġerixxu fl-ewwel jum ta 'klassi, 1219 01:06:38,000 --> 01:06:43,000 iżda għal issa huwa verament il-blokk bini ta 'kollox fehim 1220 01:06:43,000 --> 01:06:46,000 li kien għaddej fuq ġewwa ta 'memorja tal-kompjuter tagħna, 1221 01:06:46,000 --> 01:06:49,000 u eventwalment aħna ser tease dan apparti bi ftit għajnuna 1222 01:06:49,000 --> 01:06:51,000 minn wieħed mill-ħbieb tagħna fil Stanford. 1223 01:06:51,000 --> 01:06:56,000 >> Professur Nick Parlante fil Stanford għamel din is-sekwenza vidjo isbaħ 1224 01:06:56,000 --> 01:06:58,000 minn kull xorta ta 'lingwi differenti li ddaħħlu 1225 01:06:58,000 --> 01:07:00,000 dan Binky ftit karattru Claymation. 1226 01:07:00,000 --> 01:07:03,000 Il-vuċi int ser tisma fi ftit Sneak preview ftit 2 1227 01:07:03,000 --> 01:07:05,000 huwa dak ta 'professur Stanford, u int jkollna 1228 01:07:05,000 --> 01:07:07,000 biss 5 jew 6 sekondi ta 'dan id-dritt issa, 1229 01:07:07,000 --> 01:07:09,000 iżda dan huwa n-nota li aħna ser tikkonkludi llum 1230 01:07:09,000 --> 01:07:11,000 u jibdew nhar l-Erbgħa. 1231 01:07:11,000 --> 01:07:15,000 I jagħtuk Pjaċir Pointer mal Binky, il-preview. 1232 01:07:15,000 --> 01:07:18,000 [♪ ♪ Music] [Professur Parlante] Ħej, Binky. 1233 01:07:18,000 --> 01:07:21,000 Wake up. Wasal iż-żmien għall-gost pointer. 1234 01:07:21,000 --> 01:07:24,000 [Binky] X'hemm li? Tgħallem dwar pointers? 1235 01:07:24,000 --> 01:07:26,000 Oh, goody! 1236 01:07:26,000 --> 01:07:29,000 >> Aħna se tara int nhar l-Erbgħa. 1237 01:07:29,000 --> 01:07:32,000 [CS50.TV]