1 00:00:00,000 --> 00:00:11,200 2 00:00:11,200 --> 00:00:12,580 >> DAVID Malan: Kull dritt, merħba lura. 3 00:00:12,580 --> 00:00:13,290 Dan huwa CS50. 4 00:00:13,290 --> 00:00:15,130 Dan huwa l-bidu ta 'seba' ġimgħa. 5 00:00:15,130 --> 00:00:18,890 Allura huwa kien filwaqt li, hekk ħsibt aħna'd tieħu tour whirlwind ta 'fejn aħna 6 00:00:18,890 --> 00:00:20,760 jitħalla 'off u fejn aħna qed tmur issa. 7 00:00:20,760 --> 00:00:23,310 >> Allura dan il-ħaġa hawn jista 'jkollhom ikkawża xi Angst fl-ewwel. 8 00:00:23,310 --> 00:00:27,680 Iżda nisperaw, int jibdew aklimatizza għal dak li din tindika hawn - 9 00:00:27,680 --> 00:00:32,670 star jirrappreżentaw pointer, li hija biss dak, f'termini iktar laymans? 10 00:00:32,670 --> 00:00:33,400 Hekk huwa l-indirizz. 11 00:00:33,400 --> 00:00:35,490 >> Allura huwa l-indirizz ta ' xi ħaġa fil-memorja. 12 00:00:35,490 --> 00:00:38,260 U bdejna biex Qaxxar is-saffi ftit ġimgħat ilu, l-affarijiet simili 13 00:00:38,260 --> 00:00:41,800 GetString u oħrajn funzjonijiet dan il-ħin ikunu ġew jirritornaw 14 00:00:41,800 --> 00:00:46,010 indirizzi ta 'affarijiet fil-memorja, bħall- indirizz ta 'l-ewwel karattru 15 00:00:46,010 --> 00:00:46,990 xi sekwenza. 16 00:00:46,990 --> 00:00:50,360 >> Allura aħna introdotti wkoll valgrind, li inti ser tibda tuża għal din il-problema 17 00:00:50,360 --> 00:00:53,380 stabbiliti, b'mod partikolari għall-jmiss problema stabbiliti kif ukoll. 18 00:00:53,380 --> 00:00:54,980 U valgrind ma dak għalina? 19 00:00:54,980 --> 00:00:57,520 20 00:00:57,520 --> 00:01:01,020 Huwa jagħmel verifiki għat-tnixxija memorja, u wkoll kontrolli għall-abbuż ta 'memorja. 21 00:01:01,020 --> 00:01:05,890 >> Hija tista ', b'xi probabbilità, l-iskoperta jekk kodiċi tiegħek se tmiss memorja 22 00:01:05,890 --> 00:01:07,100 li hija sempliċement mhux suppost. 23 00:01:07,100 --> 00:01:10,410 Allura mhux neċessarjament tnixxija, imma jekk inti jmorru lil hinn mill-konfini ta 'xi 24 00:01:10,410 --> 00:01:14,730 array, u inti tmexxi effettivament valgrind u jinduċi li l-imġieba waqt 25 00:01:14,730 --> 00:01:17,870 valgrind tkun qed taħdem fil-programm tiegħek huwa tmexxija ġewwa ta 'dan, int ser tingħata 26 00:01:17,870 --> 00:01:21,460 messaġġi bħal dan - "invalidi ikteb tal daqs 4, "li, tfakkar koppja ta ' 27 00:01:21,460 --> 00:01:25,880 ġimgħat ilu kien ifisser li kelli aċċidentalment bħal fuq int wieħed wisq 28 00:01:25,880 --> 00:01:27,250 lil hinn mill-konfini ta 'firxa. 29 00:01:27,250 --> 00:01:30,790 U hekk daqs 4 ifisser hawn id-daqs ta 'dak int partikolari. 30 00:01:30,790 --> 00:01:35,260 >> Sabiex jieħdu riassigurazzjoni fil-fatt li output valgrind, il-format ta 'dan, 31 00:01:35,260 --> 00:01:36,170 huwa biss atroċi. 32 00:01:36,170 --> 00:01:40,180 Huwa verament diffiċli li tara permezz tal-mess għall-informazzjoni interessanti. 33 00:01:40,180 --> 00:01:42,910 Allura dak li aħna ghamilt hawn huwa biss silta xi wħud mill-koppja ta 'aktar 34 00:01:42,910 --> 00:01:43,850 linji interessanti. 35 00:01:43,850 --> 00:01:46,760 Imma tirrealizza li 80% tal-tal valgrind output se tkun daqsxejn ta ' 36 00:01:46,760 --> 00:01:47,650 distrazzjoni. 37 00:01:47,650 --> 00:01:52,820 >> Just tfittex għal xejriet bħal dawn - invalidu dritt, invalidu jinqraw, 40 bytes 38 00:01:52,820 --> 00:01:56,690 u xi numru ta 'blokki huma definittivament mitlufa, keywords bħal dik. 39 00:01:56,690 --> 00:02:01,920 U dak li inti ser nisperaw tara xi tip ta 'traċċa ta' liema funzjoni tal- 40 00:02:01,920 --> 00:02:03,340 żball huwa attwalment pulzieri 41 00:02:03,340 --> 00:02:07,195 F'dan il-każ hawnhekk, b'liema linja ta ' kodiċi tiegħi kien l-iżball apparentement? 42 00:02:07,195 --> 00:02:09,729 43 00:02:09,729 --> 00:02:14,130 >> 26 fil-fajl imsejjaħ memory.c, li kienet l-eżempju aħna kienu jilagħbu ma 44 00:02:14,130 --> 00:02:14,890 fil-ħin. 45 00:02:14,890 --> 00:02:16,460 Allura huwa probabbilment mhux fil malloc. 46 00:02:16,460 --> 00:02:18,630 Kien probabbilment fil-kodiċi tiegħi minflok. 47 00:02:18,630 --> 00:02:20,910 Allura aħna ser tara dan mill-ġdid u għal darb'oħra qabel twil. 48 00:02:20,910 --> 00:02:24,080 >> Allura scanf, dan ħareġ fil- Koppja ta 'forom s'issa. 49 00:02:24,080 --> 00:02:26,410 Rajna sscanf qosor. 50 00:02:26,410 --> 00:02:28,330 Din kienet xi ħaġa numru ta ' inti dived fis fis tiegħek 51 00:02:28,330 --> 00:02:29,535 tħejjijiet għall-kwizz. 52 00:02:29,535 --> 00:02:33,130 U scanf huwa attwalment dak li l-CS50 librerija kien jużaw taħtha l- 53 00:02:33,130 --> 00:02:36,560 hood għal żmien pjuttost twil sabiex biex tikseb input mill-utent. 54 00:02:36,560 --> 00:02:40,420 >> Per eżempju, jekk I jimxu lejn CS50 appliance hawn, let me tiftaħ 55 00:02:40,420 --> 00:02:45,315 eżempju illum li sejjaħ scanf-0.c U huwa sempliċi super. 56 00:02:45,315 --> 00:02:46,590 Huwa biss ftit linji ta 'kodiċi. 57 00:02:46,590 --> 00:02:50,880 Iżda huwa verament juri kif getInt ilha taħdem kollha ta 'dan iż-żmien. 58 00:02:50,880 --> 00:02:54,710 >> F'dan il-programm hawn, f'konformità 16 , Avviż li jien tiddikjara int. 59 00:02:54,710 --> 00:02:57,270 Sabiex l-ebda pointers, xejn maġika hemm, biss int. 60 00:02:57,270 --> 00:03:00,330 Imbagħad fil-linja 17, I-pront il- utent għal numru, jekk jogħġbok. 61 00:03:00,330 --> 00:03:02,930 Imbagħad fl-aħħar 18, I-użu scanf hawn. 62 00:03:02,930 --> 00:03:06,910 And I speċifikat, tip simili printf, li jien jistennew quote 63 00:03:06,910 --> 00:03:08,110 unquote mija i. 64 00:03:08,110 --> 00:03:10,920 >> Allura fil-mija i, naturalment, tindika l-int. 65 00:03:10,920 --> 00:03:14,580 Imma avviż dak it-tieni argument li scanf huwa. 66 00:03:14,580 --> 00:03:17,350 Kif tiddeskrivi t-tieni argument wara l-virgola? 67 00:03:17,350 --> 00:03:19,450 X'inhu dan? 68 00:03:19,450 --> 00:03:20,670 >> Hu l-indirizz ta 'x. 69 00:03:20,670 --> 00:03:25,490 Allura dan huwa utli għaliex billi tipprovdi scanf bl-indirizz ta 'x, dak ma 70 00:03:25,490 --> 00:03:29,560 li jagħtu s-setgħa dik il-funzjoni li tagħmel? 71 00:03:29,560 --> 00:03:33,010 Mhux biss jmorru hemm, iżda wkoll jagħmel xiex? 72 00:03:33,010 --> 00:03:34,060 >> Agħmel bdil għalih. 73 00:03:34,060 --> 00:03:38,080 Għaliex inti tista 'tmur hemm, huwa tip ta' bħal mappa għal post fil-memorja. 74 00:03:38,080 --> 00:03:41,900 U sakemm inti tipprovdi scanf, jew xi funzjoni mappa bħal din, dik 75 00:03:41,900 --> 00:03:45,840 funzjoni tista 'tmur hemm, u mhux biss tħares lejn il-valur, iżda tista 'wkoll 76 00:03:45,840 --> 00:03:49,670 bidla li valur, li huwa utli jekk l-iskop fil-ħajja ta 'scanf huwa li 77 00:03:49,670 --> 00:03:53,060 skennjati input mill-utent, speċifikament mill-keyboard. 78 00:03:53,060 --> 00:03:57,830 U l-f tindika ifformattjat, bħad printf, il-f jiddenota ifformattjat 79 00:03:57,830 --> 00:03:58,930 string li inti tixtieq li jistampaw. 80 00:03:58,930 --> 00:04:04,430 >> Għalhekk fil-qosor, din il-linja 18 sempliċiment jgħid, jippruvaw jaqra int mill-utent tal- 81 00:04:04,430 --> 00:04:10,420 keyboard u jaħżnu ġewwa ta 'x, fi tkun xi tkun l-indirizz x jiġri li jgħixu. 82 00:04:10,420 --> 00:04:14,860 U mbagħad fl-aħħar, linja 19 biss jgħid, grazzi għall-int, f'dan il-każ. 83 00:04:14,860 --> 00:04:15,940 >> So let me imorru quddiem u jagħmlu dan. 84 00:04:15,940 --> 00:04:18,570 Sabiex tagħmel scanf 0. 85 00:04:18,570 --> 00:04:20,130 Let me imorru quddiem u zoom pulzieri 86 00:04:20,130 --> 00:04:22,960 I ser tmur u run dan ma tikek slash scanf 0. 87 00:04:22,960 --> 00:04:24,020 Numru, jekk jogħġbok? 88 00:04:24,020 --> 00:04:24,720 50. 89 00:04:24,720 --> 00:04:25,730 Grazzi għall-50. 90 00:04:25,730 --> 00:04:27,270 Allura huwa pjuttost sempliċi. 91 00:04:27,270 --> 00:04:28,160 >> Issa dak li ma tagħmel? 92 00:04:28,160 --> 00:04:29,940 Huwa ma tagħmel mazz sħiħ ta 'verifika żball. 93 00:04:29,940 --> 00:04:33,000 Per eżempju, jekk jien ma tikkoperax, u jien ma tip fil-numru, iżda 94 00:04:33,000 --> 00:04:37,860 minflok I jiktbu xi ħaġa bħal "hello," li jinsab biss it-tip ta 'stramba. 95 00:04:37,860 --> 00:04:41,130 U għalhekk waħda mill-affarijiet l-CS50 librerija kienet tagħmel għalina għal xi 96 00:04:41,130 --> 00:04:43,440 ħin huwa li reprompting u reprompting. 97 00:04:43,440 --> 00:04:49,320 >> Il retry frażi irtirar kien cs50.c, u dak l-raġuni li getInt fl 98 00:04:49,320 --> 00:04:51,670 il-librerija CS50 huwa attwalment sħiħa mazz ta 'konzijiet, għaliex aħna qed 99 00:04:51,670 --> 00:04:53,190 verifika għall-għalf stupid bħal dan. 100 00:04:53,190 --> 00:04:55,730 Did-utent ma jagħtux us, fil-fatt, int? 101 00:04:55,730 --> 00:04:57,910 Did hu jew hi tagħtina xi ħaġa Qisha ittra alfabetika? 102 00:04:57,910 --> 00:05:01,410 Jekk iva, irridu jikxfu li u Yell fil minnhom. 103 00:05:01,410 --> 00:05:03,915 >> Imma l-affarijiet nikseb aktar interessanti f'dan l-eżempju li jmiss. 104 00:05:03,915 --> 00:05:09,840 Jekk immur għall scanf-1.c, liema huwa l-waħda ħaġa li hija fundamentalment mibdula 105 00:05:09,840 --> 00:05:11,135 dan l-eżempju li jmiss? 106 00:05:11,135 --> 00:05:13,690 107 00:05:13,690 --> 00:05:16,010 Qed nuża char *, naturalment, minflok int. 108 00:05:16,010 --> 00:05:19,210 >> Allura dan huwa interessanti, għaliex char *, recall, huwa verament ftit l- 109 00:05:19,210 --> 00:05:20,190 istess ħaġa bħat string. 110 00:05:20,190 --> 00:05:23,840 Allura jħoss simili forsi dan huwa super implimentazzjoni sempliċi ta 'GetString. 111 00:05:23,840 --> 00:05:26,010 Imma stajt imqaxxar lura s-saff tal-librerija CS50, hekk jien 112 00:05:26,010 --> 00:05:27,550 ssejjaħ dan char * issa. 113 00:05:27,550 --> 00:05:30,070 Mela ejja ara fejn, jekk kullimkien, immorru ħażin. 114 00:05:30,070 --> 00:05:30,840 >> Line 17 - 115 00:05:30,840 --> 00:05:33,950 I darb'oħra ngħid, jekk jogħġbok agħti me xi ħaġa, f'dan il-każ, string. 116 00:05:33,950 --> 00:05:37,940 U mbagħad fil-linja li jmiss, I-sejħa scanf, għal darb'oħra, jtuha kodiċi format, 117 00:05:37,940 --> 00:05:39,310 iżda din id-darba fil-mija s. 118 00:05:39,310 --> 00:05:41,900 U allura din id-darba, jien tagħtiha buffer. 119 00:05:41,900 --> 00:05:43,550 >> Issa avviż, jien ma jużaw l-ampersand. 120 00:05:43,550 --> 00:05:47,120 Iżda għaliex huwa li probabbilment OK hawn? 121 00:05:47,120 --> 00:05:49,760 Għaliex dak li hu buffer diġà? 122 00:05:49,760 --> 00:05:50,770 Huwa diġà pointer. 123 00:05:50,770 --> 00:05:51,650 Huwa diġà l-indirizz. 124 00:05:51,650 --> 00:05:54,510 >> U ejja din il-kelma "jikkonfondi," let me biss sejħa hija s, per eżempju, għall- 125 00:05:54,510 --> 00:05:55,050 sempliċità. 126 00:05:55,050 --> 00:05:58,250 Imma stajt imsejħa buffer għaliex ġenerali, fl-ipprogrammar, jekk għandek 127 00:05:58,250 --> 00:06:02,130 blokki ta 'memorja, li string verament biss huwa, inti tista 'sejħa hija ta' buffer. 128 00:06:02,130 --> 00:06:04,460 Huwa post biex jaħżnu informazzjoni. 129 00:06:04,460 --> 00:06:07,400 >> Simili għal affarijiet bħal YouTube, meta dawn qed lqugħ, biex ngħidu hekk, li 130 00:06:07,400 --> 00:06:10,270 ifisser biss huwa tniżżil bits minn l-internet u jinħażnu f'dessikatur 131 00:06:10,270 --> 00:06:14,160 array lokali, blokki lokali ta 'memorja hekk inti tista 'tara dan aktar tard mingħajr 132 00:06:14,160 --> 00:06:16,830 huwa taqbeż jew li jiddendlu fuq inti waqt li jilagħbu lura. 133 00:06:16,830 --> 00:06:20,930 >> Allura hemm problema hawn għalkemm, għaliex jien javżak scanf, jistennew 134 00:06:20,930 --> 00:06:22,320 string mill-utent. 135 00:06:22,320 --> 00:06:24,410 Hawn-indirizz ta ' blokki ta 'memorja. 136 00:06:24,410 --> 00:06:26,180 Poġġi li string hemmhekk. 137 00:06:26,180 --> 00:06:31,230 Għaliex huwa li marbuta tagħti us inkwiet, għalkemm? 138 00:06:31,230 --> 00:06:33,490 >> X'hemm li? 139 00:06:33,490 --> 00:06:35,510 Am I permess għall-aċċess dik il-parti tal-memorja? 140 00:06:35,510 --> 00:06:36,250 You know, I do not know. 141 00:06:36,250 --> 00:06:39,210 Minħabba jkun buffer ġew initialized għal xejn? 142 00:06:39,210 --> 00:06:39,820 Mhux tassew. 143 00:06:39,820 --> 00:06:43,090 U dan huwa dak li konna qed jappellaw valur żibel, li 144 00:06:43,090 --> 00:06:44,040 mhijiex kelma formali. 145 00:06:44,040 --> 00:06:49,200 Dan ifisser biss aħna għandna ebda idea dak bits huma ġewwa mill-erba 'bytes li 146 00:06:49,200 --> 00:06:51,240 Għandi allokati kif buffer. 147 00:06:51,240 --> 00:06:52,450 >> I ma imsejħa malloc. 148 00:06:52,450 --> 00:06:53,940 Stajt definittivament mhux imsejħa GetString. 149 00:06:53,940 --> 00:06:56,380 Allura li jaf dak li huwa effettivament ġewwa ta 'buffer? 150 00:06:56,380 --> 00:07:00,550 And yet javżak scanf addoċċ, jmorru hemm u tpoġġi ikun x'ikun l-utent ittajpjat. 151 00:07:00,550 --> 00:07:04,460 >> Allura dak li huwa probabbli li jikkawża fil-kodiċi tagħna jekk aħna run? 152 00:07:04,460 --> 00:07:05,700 Probabbilment segfault. 153 00:07:05,700 --> 00:07:07,970 Forsi le, imma probabbilment segfault. 154 00:07:07,970 --> 00:07:10,620 U jien ngħid forsi mhux għaliex kultant inti tagħmel, xi kultant 155 00:07:10,620 --> 00:07:11,380 inti ma tieħux segfault. 156 00:07:11,380 --> 00:07:14,280 Kultant inti biss tikseb xxurtjati, iżda huwa madankollu se tkun 157 00:07:14,280 --> 00:07:15,340 bug fil-programm tagħna. 158 00:07:15,340 --> 00:07:17,060 >> So let me go quddiem u jiġbor dan. 159 00:07:17,060 --> 00:07:18,280 Jien ser tagħmel dan il-mod qodma iskola. 160 00:07:18,280 --> 00:07:23,825 Allura sing clang 0, scanf-1, scanf-1.C, Ikteb. 161 00:07:23,825 --> 00:07:24,720 Oops, skola wisq antik. 162 00:07:24,720 --> 00:07:26,550 Ejja ara. 163 00:07:26,550 --> 00:07:28,440 Fejn ma mmur? 164 00:07:28,440 --> 00:07:29,700 Oh, char * buffer. 165 00:07:29,700 --> 00:07:33,595 166 00:07:33,595 --> 00:07:35,130 Oh, grazie - 167 00:07:35,130 --> 00:07:36,930 Ħlief, OK - 168 00:07:36,930 --> 00:07:37,690 iskola antika ħafna. 169 00:07:37,690 --> 00:07:38,900 Kull dritt, huwa kien filwaqt li. 170 00:07:38,900 --> 00:07:41,720 >> So I stajt biss salvati l-fajl wara jagħmlu dik temporanja 171 00:07:41,720 --> 00:07:42,700 bidla mument ilu. 172 00:07:42,700 --> 00:07:46,090 U issa I jikkompilaw dan manwalment bl clang. 173 00:07:46,090 --> 00:07:49,500 U issa jien se jimxi 'l quddiem u run scanf-1, Ikteb. 174 00:07:49,500 --> 00:07:50,290 String jekk jogħġbok. 175 00:07:50,290 --> 00:07:51,600 I ser tip "bonjour." 176 00:07:51,600 --> 00:07:54,070 >> U issa, hawn fejn, franchement, printf tista hija ftit annoying. 177 00:07:54,070 --> 00:07:56,020 Mhuwiex fil-fatt se segfault f'dan il-każ. 178 00:07:56,020 --> 00:07:59,860 Printf hija ftit speċjali minħabba huwa tant super komunement użati li 179 00:07:59,860 --> 00:08:03,570 essenzjalment printf qed tagħmel us a favor u t-twettiq, 180 00:08:03,570 --> 00:08:04,830 li mhux pointer valida. 181 00:08:04,830 --> 00:08:09,080 Let me teħodha fuq ruħi biss print out fil-parentesi null, anke 182 00:08:09,080 --> 00:08:13,340 għalkemm mhuwiex neċessarjament dak aħna lilna nfusna mistennija. 183 00:08:13,340 --> 00:08:16,940 >> Allura ma nistgħux verament faċilment jinduċi segfault ma 'dan, iżda b'mod ċar dan 184 00:08:16,940 --> 00:08:18,600 mhuwiex l-imġieba ridt. 185 00:08:18,600 --> 00:08:19,800 Allura x'inhu l-soluzzjoni sempliċi? 186 00:08:19,800 --> 00:08:25,650 Ukoll, fil-scanf-2, let me jipproponi li minflok attwalment biss allokazzjoni ta ' 187 00:08:25,650 --> 00:08:30,100 char *, let me jkun ftit aktar intelliġenti dwar dan, u let me jallokaw buffer 188 00:08:30,100 --> 00:08:32,940 bħala sekwenza ta '16 Chars. 189 00:08:32,940 --> 00:08:34,200 >> So I tista 'tagħmel dan fi ftit ta' modi. 190 00:08:34,200 --> 00:08:35,610 I jistgħu assolutament użu malloc. 191 00:08:35,610 --> 00:08:38,980 Imma I tista 'tmur lura għal żewġ ġimgħa meta I biss meħtieġ mazz sħiħ ta ' 192 00:08:38,980 --> 00:08:39,620 karattri. 193 00:08:39,620 --> 00:08:40,860 Li jinsab biss firxa. 194 00:08:40,860 --> 00:08:44,870 So let me minflok tirridefinixxi buffer li tkun firxa ta '16 karattri. 195 00:08:44,870 --> 00:08:47,340 >> U issa, meta I jgħaddu buffer fil - 196 00:08:47,340 --> 00:08:49,940 u din hija xi ħaġa aħna ma jitkellmu dwar f'żewġ ġimgħa - 197 00:08:49,940 --> 00:08:53,730 imma int tista 'tittratta firxa kif għalkemm huwa ta 'indirizz. 198 00:08:53,730 --> 00:08:56,390 Teknikament, kif aħna stajt tidher, dawn qed ftit differenti. 199 00:08:56,390 --> 00:09:01,290 Iżda scanf mhux se mind jekk inti tgħaddiha l-isem ta 'firxa, għaliex dak 200 00:09:01,290 --> 00:09:05,030 Clang se tagħmel għalina huwa essenzjalment jikkura l-isem ta 'dak array bħala l- 201 00:09:05,030 --> 00:09:08,280 indirizz tal-blokki ta '16 bytes. 202 00:09:08,280 --> 00:09:09,550 >> Allura dan huwa aħjar. 203 00:09:09,550 --> 00:09:12,110 Dan ifisser li issa nista nisperaw tagħmel dan li ġej. 204 00:09:12,110 --> 00:09:16,800 Let me zoom out għal mument u ma jagħmlu scanf-2, miġbura OK. 205 00:09:16,800 --> 00:09:19,390 Issa let me do ltqajna slash scanf-2. 206 00:09:19,390 --> 00:09:22,430 String jekk jogħġbok. "Hello." U deher li jaħdmu f'dan il-ħin. 207 00:09:22,430 --> 00:09:26,020 >> Iżda jista 'xi ħadd tipproponi xenarju li fiha ma jkunx jista 'għadhom jaħdmu? 208 00:09:26,020 --> 00:09:28,550 Yeah? 209 00:09:28,550 --> 00:09:30,640 Xi ħaġa itwal minn 16 karattru. 210 00:09:30,640 --> 00:09:32,020 U fil-fatt, nistgħu nkunu ftit aktar preċiża. 211 00:09:32,020 --> 00:09:36,540 Xi ħaġa itwal imbagħad 15 karattri, għaliex verament għandna bżonn li wieħed iżomm f'moħħu 212 00:09:36,540 --> 00:09:39,920 li għandna bżonn li backslash żero impliċitament fl-aħħar tas-sekwenza, 213 00:09:39,920 --> 00:09:42,950 li hija twarrib scanf se tipikament jieħdu ħsieb ta għalina. 214 00:09:42,950 --> 00:09:46,210 >> So let me tagħmel xi ħaġa simili - 215 00:09:46,210 --> 00:09:48,040 kultant nistgħu biss leave bħal dik. 216 00:09:48,040 --> 00:09:50,630 OK, hekk aħna issa stajt indotta tort segmentazzjoni tagħna. 217 00:09:50,630 --> 00:09:51,000 Għaliex? 218 00:09:51,000 --> 00:09:54,940 Minħabba I ittajpjat għal aktar minn 15 karattri, u hekk aħna ħadthom attwalment 219 00:09:54,940 --> 00:09:58,280 memorja mimsus li I attwalment m'għandux ikollhom. 220 00:09:58,280 --> 00:10:00,180 >> Allura x'hemm verament-soluzzjoni hawn? 221 00:10:00,180 --> 00:10:02,210 Ukoll, dak li jekk għandna bżonn string itwal? 222 00:10:02,210 --> 00:10:03,960 Well, aħna forsi jagħmilha 32 bytes. 223 00:10:03,960 --> 00:10:05,160 Ukoll, dak li jekk dan mhux twil biżżejjed? 224 00:10:05,160 --> 00:10:06,040 Kif madwar 64 bytes? 225 00:10:06,040 --> 00:10:07,080 X'jiġri jekk dan mhux twil biżżejjed? 226 00:10:07,080 --> 00:10:09,640 Kif madwar 128 jew 200 bytes? 227 00:10:09,640 --> 00:10:12,660 Dak li hu verament-soluzzjoni hawn fil- każ ġenerali, jekk ma nafux fl 228 00:10:12,660 --> 00:10:14,460 tavvanza dak l-utent għaddej biex tip? 229 00:10:14,460 --> 00:10:20,000 230 00:10:20,000 --> 00:10:23,050 >> Huwa biss tip ta 'uġigħ kbir fl-ħmar, li tkun onest, u huwa għalhekk li l- 231 00:10:23,050 --> 00:10:29,050 CS50 librerija għandha linji ftit għexieren ta ' kodiċi li jimplimentaw kollettivament 232 00:10:29,050 --> 00:10:32,390 GetString string b'mod li aħna ma għandek tkun taf minn qabel liema l- 233 00:10:32,390 --> 00:10:33,430 utent se tip. 234 00:10:33,430 --> 00:10:37,370 B'mod partikolari, jekk inti tħares lura lejn cs50.c minn ġimgħatejn ilu, tkun taf tara 235 00:10:37,370 --> 00:10:40,480 li GetString attwalment ma jużawx scanf b'dan il-mod. 236 00:10:40,480 --> 00:10:43,720 Pjuttost, jgħid karattru wieħed fi żmien. 237 00:10:43,720 --> 00:10:46,010 >> Minħabba li l-unika ħaġa sbieħ dwar qari karattru wieħed huwa nistgħu 238 00:10:46,010 --> 00:10:48,490 jiggarantixxu nfusna li dejjem jkollhom char inqas wieħed. 239 00:10:48,490 --> 00:10:51,740 I tista 'biss tiddikjara char, u mbagħad ħu dawn il-passi verament tarbija biss 240 00:10:51,740 --> 00:10:54,380 taqra karattru wieħed fi fi ħin mill-keyboard. 241 00:10:54,380 --> 00:10:58,240 U allura, dak li inti ser tara GetString ma huwa kull darba li runs out ta ', 242 00:10:58,240 --> 00:11:02,280 jiġifieri, 16 bytes tal-memorja, hija tuża malloc, jew ku tiegħu, li 243 00:11:02,280 --> 00:11:06,810 jallokaw aktar memorja, ikkupjar l-qodma memorja fil-ġdida, u mbagħad crawling 244 00:11:06,810 --> 00:11:09,900 flimkien, jkollna karattru wieħed fi żmien, u meta runs out ta 'dak 245 00:11:09,900 --> 00:11:13,370 blokki ta 'memorja, throws bogħod, grabs blokki akbar ta 'memorja, kopji qodma 246 00:11:13,370 --> 00:11:14,750 fis ġodda, u jirrepeti. 247 00:11:14,750 --> 00:11:18,480 U huwa verament uġigħ li attwalment timplimenta xi ħaġa sempliċi kemm 248 00:11:18,480 --> 00:11:19,710 jkollna input minn utent. 249 00:11:19,710 --> 00:11:21,090 >> Allura inti tista 'tuża scanf. 250 00:11:21,090 --> 00:11:22,430 Tista 'tuża funzjonijiet oħra simili. 251 00:11:22,430 --> 00:11:25,420 U ħafna ta 'kotba u online eżempji jagħmlu, iżda dawn qed kollha 252 00:11:25,420 --> 00:11:27,210 vulnerabbli għal problemi bħal dan. 253 00:11:27,210 --> 00:11:29,550 U finalment, jkollna a segfault huwa tip ta 'annoying. 254 00:11:29,550 --> 00:11:30,680 Mhuwiex tajjeb għall-utent. 255 00:11:30,680 --> 00:11:33,560 >> Iżda fl-agħar każ, dak ma huwa fundamentalment tpoġġi tiegħek 256 00:11:33,560 --> 00:11:37,160 kodiċi f'riskju ta '? 257 00:11:37,160 --> 00:11:39,250 Xi tip ta 'attakk, potenzjalment. 258 00:11:39,250 --> 00:11:41,680 Tkellimna dwar wieħed attakk - overflowing-munzell. 259 00:11:41,680 --> 00:11:44,660 Iżda b'mod ġenerali, jekk int permess biex overflow buffer, bħal għamilna a 260 00:11:44,660 --> 00:11:48,070 Koppja ta 'ġimgħat ilu, biss bil-miktub aktar minn "bonjour" fuq il-munzell, inti 261 00:11:48,070 --> 00:11:52,330 tista 'tabilħaqq tieħu f'idejha, ​​potenzjalment, a kompjuter, jew għall-inqas tikseb lejn id-data li 262 00:11:52,330 --> 00:11:53,510 ma jappartjenix lilek. 263 00:11:53,510 --> 00:11:55,970 >> Għalhekk fil-qosor, dan huwa għaliex għandna dawk ir-roti ta 'taħriġ. 264 00:11:55,970 --> 00:11:59,090 Imma issa, aħna jibdew teħodhom off, bħala programmi tagħna m'għadx għandhom bżonn, 265 00:11:59,090 --> 00:12:00,610 neċessarjament, input mill-utent. 266 00:12:00,610 --> 00:12:03,960 Iżda fil-każ ta 'problema stabbiliti sitt, input tiegħek se jiġu minn enormi 267 00:12:03,960 --> 00:12:07,520 fajl dizzjunarju b'150 xi fard elf kelma. 268 00:12:07,520 --> 00:12:10,330 >> Allura inti mhux ser ikollhom għalfejn tinkwieta dwar input arbitrarja l-utent. 269 00:12:10,330 --> 00:12:13,720 Aħna ser jagħtuk xi suppożizzjonijiet dwar dan il-fajl. 270 00:12:13,720 --> 00:12:20,340 Kwalunkwe mistoqsijiet dwar pointers jew scanf jew input utent b'mod ġenerali? 271 00:12:20,340 --> 00:12:24,450 >> Kull dritt, hekk ħarsa imbagħad lejn wieħed batuta suġġett minn ġimgħatejn ilu. 272 00:12:24,450 --> 00:12:28,590 U li kien dan il-kunċett ta 'Struct. 273 00:12:28,590 --> 00:12:34,180 Mhux li - din l-idea ta ' Struct, li kien dak? 274 00:12:34,180 --> 00:12:35,430 What did Struct do għalina? 275 00:12:35,430 --> 00:12:39,280 276 00:12:39,280 --> 00:12:39,860 >> Iddefinixxi - 277 00:12:39,860 --> 00:12:41,710 sorry? 278 00:12:41,710 --> 00:12:42,820 Tiddefinixxi tip varjabbli. 279 00:12:42,820 --> 00:12:44,410 Allura sort ta '. 280 00:12:44,410 --> 00:12:46,180 Aħna fil-fatt tgħaqqad żewġ suġġetti. 281 00:12:46,180 --> 00:12:49,510 Allura ma typedef, ifakkar li nistgħu tiddikjara tip ta 'tagħna stess, bħal 282 00:12:49,510 --> 00:12:51,500 sinonimu, bħal string għal char *. 283 00:12:51,500 --> 00:12:56,200 Iżda bl-użu typedef u Struct, nistgħu joħolqu verament strutturi ta 'dejta tagħna stess. 284 00:12:56,200 --> 00:12:59,600 >> Per eżempju, jekk immur lura fis gedit hawn għal ftit mument, u I jimxi 'l quddiem 285 00:12:59,600 --> 00:13:08,230 u tagħmel xi ħaġa simili, let me jiffrankaw dan bħala, ejja ngħidu, structs.c 286 00:13:08,230 --> 00:13:10,840 temporanjament, jien biss ser jimxi 'l quddiem u jinkludu 287 00:13:10,840 --> 00:13:14,360 standardio.h, null prinċipali int. 288 00:13:14,360 --> 00:13:18,960 U mbagħad fil hawn, ejja ngħidu li nixtieq li jikteb programm li taħżen 289 00:13:18,960 --> 00:13:21,840 studenti multipli mill multipli djar, per eżempju. 290 00:13:21,840 --> 00:13:24,430 Allura huwa simili registrarial database ta 'xi tip. 291 00:13:24,430 --> 00:13:29,550 >> Hekk jekk I bżonn l-isem istudent waħda, I tista 'tagħmel xi ħaġa bħall-isem * char, 292 00:13:29,550 --> 00:13:31,570 u jien ser tagħmel xi ħaġa simili - 293 00:13:31,570 --> 00:13:34,410 attwalment, ejja jużaw il-librerija CS50 għal ftit mument biex jagħmlu dan 294 00:13:34,410 --> 00:13:38,380 ftit aktar sempliċi, sabiex inkunu nistgħu tissellef dawk għexieren ta 'linji ta' kodiċi. 295 00:13:38,380 --> 00:13:39,340 U ejja biss jżommha sempliċi. 296 00:13:39,340 --> 00:13:42,610 Aħna ser jżommha string, u issa GetString. 297 00:13:42,610 --> 00:13:47,420 >> So I pretensjoni issa li stajt maħżuna l-isem ta 'xi student, u l-dar ta' 298 00:13:47,420 --> 00:13:50,240 xi student, sempliċement jużaw fatturi varjabbli bħal għamilna u fil-ġimgħa. 299 00:13:50,240 --> 00:13:52,370 Imma suppose I issa jridu jappoġġjaw istudenti multipli. 300 00:13:52,370 --> 00:13:58,460 Kull dritt, hekk instincts tiegħi huma jagħmlu string Isem2, gets GetString, spag 301 00:13:58,460 --> 00:14:01,370 house2 gets GetString. 302 00:14:01,370 --> 00:14:05,850 U allura tielet student tagħna, ejja do name3 GetString. 303 00:14:05,850 --> 00:14:09,170 >> Kull dritt, għalhekk dan huwa wieħed jittama impressjonanti inti bħala tip ta 'stupid, 304 00:14:09,170 --> 00:14:11,580 minħabba dan il-proċess huwa verament qatt ser jispiċċaw, u huwa biss se 305 00:14:11,580 --> 00:14:13,130 jagħmlu kodiċi tiegħi ħarsa agħar u agħar u agħar. 306 00:14:13,130 --> 00:14:14,810 Iżda aħna solvuta din wisq ġimgħatejn. 307 00:14:14,810 --> 00:14:19,450 Liema kienet soluzzjoni relattivament nadif tagħna meta kellna varjabbli multipli tal- 308 00:14:19,450 --> 00:14:23,580 istess tip ta 'data li huma kollha relatati, iżda aħna ma tridx dan mess atroċi 309 00:14:23,580 --> 00:14:26,870 ta 'varjabbli bl-istess mod jismu? 310 00:14:26,870 --> 00:14:30,060 Dak li ma nagħmlu minflok? 311 00:14:30,060 --> 00:14:31,260 >> So I think I smajt ftit postijiet. 312 00:14:31,260 --> 00:14:32,590 Kellna firxa. 313 00:14:32,590 --> 00:14:37,110 Jekk inti tixtieq każi multipli ta ' xi ħaġa, għaliex ma aħna nadif dan kollu 314 00:14:37,110 --> 00:14:39,540 up u biss jgħidu, agħti lili array ismijiet imsejħa? 315 00:14:39,540 --> 00:14:41,640 >> U għal issa, ejja kodiċi 3 tal iebsa. 316 00:14:41,640 --> 00:14:44,450 U mbagħad tagħti me firxa ieħor imsejħa djar, u let me għal 317 00:14:44,450 --> 00:14:45,800 Kodiċi issa hard 3. 318 00:14:45,800 --> 00:14:49,220 U stajt massiv mnaddfa l- mess li I biss maħluqa. 319 00:14:49,220 --> 00:14:52,400 Issa, stajt għadu diffiċli kodifikati 3, iżda anke 3 tista dinamikament jiġu mill- 320 00:14:52,400 --> 00:14:54,350 utent, jew ARGV, jew simili. 321 00:14:54,350 --> 00:14:55,720 Allura dan huwa diġà aktar nodfa. 322 00:14:55,720 --> 00:15:00,100 >> Imma x'hemm annoying dwar dan hija li issa, anki jekk l-isem huwa b'xi mod 323 00:15:00,100 --> 00:15:02,280 fundamentalment marbuta mal- house ta 'student - 324 00:15:02,280 --> 00:15:04,720 huwa student li I really rridu li jirrappreżentaw - 325 00:15:04,720 --> 00:15:08,080 I issa għandhom żewġ arrays li huma paralleli fis-sens li dawn qed l- 326 00:15:08,080 --> 00:15:13,930 istess daqs, u l-ismijiet bracket 0 preżumibbilment mapep għall bracket djar 0, 327 00:15:13,930 --> 00:15:16,600 u ismijiet parentesi 1 mapep għal djar bracket 1. 328 00:15:16,600 --> 00:15:19,280 Fi kliem ieħor, li student jgħix fil dik id-dar, u li student ieħor 329 00:15:19,280 --> 00:15:20,530 jgħix fil dik id-dar oħra. 330 00:15:20,530 --> 00:15:23,720 Iżda żgur dan jista 'jkun isir aktar nadif. 331 00:15:23,720 --> 00:15:24,990 >> Ukoll, tista ', fil-fatt. 332 00:15:24,990 --> 00:15:28,730 U let me imorru quddiem u tiftaħ up structs.h, u tkun taf 333 00:15:28,730 --> 00:15:31,130 tara din l-idea hawnhekk. 334 00:15:31,130 --> 00:15:34,905 Avviż li stajt użati typedef, kif inti allużjoni għall mument ilu li jiddikjara tagħna 335 00:15:34,905 --> 00:15:35,570 tip ta 'data stess. 336 00:15:35,570 --> 00:15:39,660 Imma jien wkoll jużaw dan il-keyword ieħor imsejħa Struct li tagħti me a ġdid 337 00:15:39,660 --> 00:15:40,790 struttura tad-data. 338 00:15:40,790 --> 00:15:43,980 >> U din l-istruttura tad-data nitlob va li jkollha żewġ affarijiet ġewwa ta ' 339 00:15:43,980 --> 00:15:47,060 dan - string imsejjaħ isem, u string imsejħa dar. 340 00:15:47,060 --> 00:15:49,820 U l-isem jien ser jagħti lill din l-istruttura tad-data li qed jiġri 341 00:15:49,820 --> 00:15:51,005 li għandu jissejjaħ student. 342 00:15:51,005 --> 00:15:54,030 I jistgħu sejħa hija xejn nixtieq, iżda dan jagħmlu semantikament 343 00:15:54,030 --> 00:15:55,810 sens li lili fil-fehma tiegħi. 344 00:15:55,810 --> 00:15:59,160 >> Allura issa, jekk I jiftħu verżjoni aħjar tal-programm bdejt miktub 345 00:15:59,160 --> 00:16:00,390 hemm, let me iscroll għall-quċċata. 346 00:16:00,390 --> 00:16:03,190 U hemm ftit aktar linji ta 'kodiċi hawn, iżda let me tiffoka għal 347 00:16:03,190 --> 00:16:04,160 il-mument fuq waħda. 348 00:16:04,160 --> 00:16:07,790 Stajt ddikjarat l-istudenti imsejħa kostanti u diffiċli kodifikati 3 għal issa. 349 00:16:07,790 --> 00:16:11,110 Imma issa, avviż kif nadif kodiċi tiegħi jibda biex tikseb. 350 00:16:11,110 --> 00:16:15,030 >> F'konformità 22, niddikjara firxa ta 'studenti. 351 00:16:15,030 --> 00:16:18,760 U tinnota li student hija apparentement issa 'tip data. 352 00:16:18,760 --> 00:16:23,360 Minħabba fil-quċċata ta 'dan il-fajl, avviż Stajt inklużi dan il-fajl header 353 00:16:23,360 --> 00:16:24,820 li I jinġibed up ftit mument ilu. 354 00:16:24,820 --> 00:16:28,820 U dan il-fajl header sempliċement kellha din id-definizzjoni ta 'student. 355 00:16:28,820 --> 00:16:32,470 >> Allura issa, stajt ħolqot data tad-dwana tiegħi stess tip li l-awturi ta 'snin C 356 00:16:32,470 --> 00:16:33,890 ilu ma think ta 'qabel. 357 00:16:33,890 --> 00:16:34,570 Imma l-ebda problema. 358 00:16:34,570 --> 00:16:35,870 I jistgħu jagħmlu myself. 359 00:16:35,870 --> 00:16:39,050 Allura dan huwa firxa imsejħa istudenti, kull membri li 360 00:16:39,050 --> 00:16:41,100 hija struttura student. 361 00:16:41,100 --> 00:16:44,270 U nixtieq tlieta minn dawk fil-firxa. 362 00:16:44,270 --> 00:16:46,030 >> U issa, dak ma l-bqija ta 'dan il-programm do? 363 00:16:46,030 --> 00:16:47,550 I meħtieġa xi ħaġa ftit arbitrarju. 364 00:16:47,550 --> 00:16:51,450 Allura minn online 24 onward, I jtenni 0-3. 365 00:16:51,450 --> 00:16:54,000 I imbagħad titlob lill-utent għall- isem l-istudent. 366 00:16:54,000 --> 00:16:56,110 U mbagħad I użu GetString bħal qabel. 367 00:16:56,110 --> 00:16:59,410 Imbagħad I jistaqsu għall-dar l-istudent, u I-użu GetString bħal qabel. 368 00:16:59,410 --> 00:17:01,780 >> Iżda avviż - ftit ġdida biċċa sintassi - 369 00:17:01,780 --> 00:17:07,010 I xorta tista indiċi għall-istudent i-th, imma kif nista 'nikseb fuq l-informazzjoni speċifika 370 00:17:07,010 --> 00:17:08,354 ġewwa qasam tal-Struct? 371 00:17:08,354 --> 00:17:11,770 Well, x'hemm apparentement l- biċċa ġdida ta 'sintassi? 372 00:17:11,770 --> 00:17:13,339 Huwa biss l-operatur dot. 373 00:17:13,339 --> 00:17:14,510 >> Imxejna ma verament rajt dan qabel. 374 00:17:14,510 --> 00:17:17,819 Inti stajt tidher fil pset ħames jekk inti stajt dived diġà ma 'fajls Bitmap. 375 00:17:17,819 --> 00:17:22,372 Iżda l-dot ifisser biss ġewwa ta 'dan Struct jew oqsma multipli, jagħtu dot 376 00:17:22,372 --> 00:17:24,510 isem, jew jagħtu me dot house. 377 00:17:24,510 --> 00:17:28,690 Dan ifisser mur ġewwa tal-Struct u tikseb dawk l-oqsma partikolari. 378 00:17:28,690 --> 00:17:30,200 >> X'tagħmel l-bqija ta 'dan il-programm do? 379 00:17:30,200 --> 00:17:31,190 Huwa mhux kollha li sexy. 380 00:17:31,190 --> 00:17:34,640 Avviż li I jtenni 0-3 darb'oħra, u I sempliċiment toħloq Ingliż 381 00:17:34,640 --> 00:17:40,500 frażi bħal hekk u hekk tkun tali u tali dar, li jgħaddi fl-isem dot minn 382 00:17:40,500 --> 00:17:43,320 l-istudent i-th u tagħhom dar kif ukoll. 383 00:17:43,320 --> 00:17:47,560 >> U mbagħad fl-aħħar, issa aħna ser tibda tikseb anali dwar dan, issa li aħna qed 384 00:17:47,560 --> 00:17:49,580 familjari ma 'dak malloc u funzjonijiet oħra ġew 385 00:17:49,580 --> 00:17:50,570 tagħmel dan il-ħin. 386 00:17:50,570 --> 00:17:54,220 Għaliex għandi ħielsa kemm isem u d-dar, anki jekk I 387 00:17:54,220 --> 00:17:56,960 ma sejħa malloc? 388 00:17:56,960 --> 00:17:58,020 >> GetString għamlet. 389 00:17:58,020 --> 00:18:00,930 U li kien l-sigrieti ftit maħmuġa għal diversi ġimgħat, iżda għandha GetString 390 00:18:00,930 --> 00:18:03,530 ġie jnixxu memorja kollha fuq il- jpoġġi kull semestru s'issa. 391 00:18:03,530 --> 00:18:05,990 U valgrand se finalment jiżvelaw dan lilna. 392 00:18:05,990 --> 00:18:10,730 >> Imma din mhix big deal, għaliex naf li nista 'sempliċement ħielsa l-isem 393 00:18:10,730 --> 00:18:15,750 u l-dar, għalkemm teknikament, li tkun super, sikur super, I għandu jkun 394 00:18:15,750 --> 00:18:17,890 tagħmel xi żball iċċekkjar hawn. 395 00:18:17,890 --> 00:18:19,040 Liema huma instincts tiegħek tghidlek? 396 00:18:19,040 --> 00:18:22,480 X'għandi nkun kontroll għall- qabel I ħielsa x'inhi 397 00:18:22,480 --> 00:18:25,470 spag, aka li char *? 398 00:18:25,470 --> 00:18:33,460 >> I għandhom verament jiġi verifikat jekk l-istudenti i bracket dot isem ma 399 00:18:33,460 --> 00:18:34,840 null ugwali. 400 00:18:34,840 --> 00:18:40,400 Imbagħad ser tkun OK biex jimxi 'l quddiem u ħielsa li pointer, u bl-istess jew l-oħra 401 00:18:40,400 --> 00:18:41,160 waħda ukoll. 402 00:18:41,160 --> 00:18:46,860 Jekk istudenti bracket i dot house mhix daqs null, dan issa se tipproteġi 403 00:18:46,860 --> 00:18:52,520 kontra l-każ kantuniera li fih GetString prospetti xi ħaġa bħal null. 404 00:18:52,520 --> 00:18:57,310 U rajna mument ilu, printf se tħarisna up here bi ftit qal 405 00:18:57,310 --> 00:18:58,990 null, li se tfittex stramb. 406 00:18:58,990 --> 00:19:02,340 Iżda mill-inqas mhux se segfault, kif rajna. 407 00:19:02,340 --> 00:19:05,990 >> Well, let me jagħmlu ħaġa waħda oħra hawn. structs-0 huwa tip ta 'programm stupid 408 00:19:05,990 --> 00:19:09,700 minħabba I jidħol dan kollu data, u mbagħad huwa tilef ladarba l-programm jintemm. 409 00:19:09,700 --> 00:19:10,940 Iżda let me imorru quddiem u tagħmel dan. 410 00:19:10,940 --> 00:19:12,830 Let me jagħmlu l-terminal tieqa daqsxejn akbar. 411 00:19:12,830 --> 00:19:17,000 Let me jagħmlu structs-1, li huwa verżjoni ġdida ta 'dan. 412 00:19:17,000 --> 00:19:18,520 >> I ser zoom ftit. 413 00:19:18,520 --> 00:19:21,620 U issa let me run dot slash structs-1. 414 00:19:21,620 --> 00:19:22,590 Isem istudent - 415 00:19:22,590 --> 00:19:31,500 David Mather, ejja tagħmel Rob Kirkland, ejja do Lauren Leverett. 416 00:19:31,500 --> 00:19:33,650 X'hemm interessanti issa huwa avviż - 417 00:19:33,650 --> 00:19:35,540 u I biss jafu dan għaliex I kiteb il-programm - 418 00:19:35,540 --> 00:19:38,930 hemm fajl issa 'kurrenti tiegħi direttorju imsejjaħ students.csv. 419 00:19:38,930 --> 00:19:40,420 Xi wħud minnkom tista raw dawn fid-dinja reali. 420 00:19:40,420 --> 00:19:42,980 >> X'hemm fajl CSV? 421 00:19:42,980 --> 00:19:44,170 Valuri separata bil-virgoli. 422 00:19:44,170 --> 00:19:46,670 Huwa tip ta 'prodotti simili raġel foqra verżjoni ta 'fajl Excel. 423 00:19:46,670 --> 00:19:50,580 Huwa tabella ta 'ringieli u kolonni li inti tista 'tiftaħ fi programm bħal Excel, 424 00:19:50,580 --> 00:19:51,800 jew numri fuq Mac. 425 00:19:51,800 --> 00:19:55,180 >> U jekk I miftuħa dan il-fajl hawn fuq gedit, avviż - u n-numri ma jkunux hemm. 426 00:19:55,180 --> 00:19:57,360 Li jinsab biss gedit javżak me linja numri. 427 00:19:57,360 --> 00:19:59,740 Avviż fuq l-ewwel linja ta 'dan fajl huwa David u Mather. 428 00:19:59,740 --> 00:20:01,450 Il-linja li jmiss huwa Rob virgola Kirkland. 429 00:20:01,450 --> 00:20:04,170 U t-tielet linja hija Lauren comma Leverett. 430 00:20:04,170 --> 00:20:05,480 >> Allura dak li I maħluqa? 431 00:20:05,480 --> 00:20:09,580 Stajt issa miktuba programm C li effettivament jistgħu jiġġeneraw spreadsheets 432 00:20:09,580 --> 00:20:11,840 li jistgħu jinfetħu programm bħal Excel. 433 00:20:11,840 --> 00:20:15,520 Mhux kollha li konvinċenti sett ta 'data, iżda jekk għandek biċċiet ħafna akbar ta ' 434 00:20:15,520 --> 00:20:18,440 data li inti fil-fatt tixtieq li jimmanipulaw u jagħmlu graffs ta 'u l- 435 00:20:18,440 --> 00:20:21,260 simili, dan huwa forsi wieħed mod biex jinħolqu dik id-data. 436 00:20:21,260 --> 00:20:25,370 Barra minn hekk, CSVs huma attwalment super komuni biss għall-ħażna tad-data sempliċi - 437 00:20:25,370 --> 00:20:28,940 Yahoo Finanzi, per eżempju, jekk ikollok stock kwotazzjonijiet permezz tal-hekk imsejħa tagħhom 438 00:20:28,940 --> 00:20:33,180 API, is-servizz b'xejn li ihallik nikseb stock up-to-the-data attwali 439 00:20:33,180 --> 00:20:35,650 kwotazzjonijiet għall-kumpaniji, huma jagħtu data lura fil- 440 00:20:35,650 --> 00:20:37,800 super format CSV sempliċi. 441 00:20:37,800 --> 00:20:39,380 >> Allura kif ma nagħmlu dan? 442 00:20:39,380 --> 00:20:42,530 Ukoll avviż, aktar ta 'dan tal-programm kważi l-istess. 443 00:20:42,530 --> 00:20:46,870 Iżda avviż stabbiliti hawn, minflok print l-istudenti li, mil-linja 35 444 00:20:46,870 --> 00:20:51,040 onward, I jsostnu li jien iffrankar l- istudenti li disk, hekk iffrankar fajl. 445 00:20:51,040 --> 00:20:53,630 >> So avviż jien tiddikjara FILE * - 446 00:20:53,630 --> 00:20:57,260 issa, dan huwa tip ta 'anomalija fis C. Għal kwalunkwe raġuni, FILE huwa caps kollha, 447 00:20:57,260 --> 00:21:00,690 li mhux simili ħafna tipi ta 'data oħra fil C. Iżda din hija mibnija fil- 448 00:21:00,690 --> 00:21:02,320 tip ta 'data, FILE *. 449 00:21:02,320 --> 00:21:05,900 U jien tiddikjara pointer għall-fajl, huwa kif inti tista 'taħseb li. 450 00:21:05,900 --> 00:21:08,070 >> fopen ifisser fajl miftuħ. 451 00:21:08,070 --> 00:21:09,470 What file tridu miftuħ? 452 00:21:09,470 --> 00:21:12,620 Irrid li tiftaħ fajl li jiena ser arbitrarju sejħa students.csv. 453 00:21:12,620 --> 00:21:14,480 I tista 'sejħa li xejn irrid. 454 00:21:14,480 --> 00:21:15,200 >> U mbagħad tieħu raden. 455 00:21:15,200 --> 00:21:18,960 X'tagħmel l-tieni argument li fopen probabilment tfisser? 456 00:21:18,960 --> 00:21:21,480 Dritt, w għall jiktbu, tista jkun r għall read. 457 00:21:21,480 --> 00:21:24,120 Hemm għall tehmeż jekk inti trid iżżid ringieli u mhux 458 00:21:24,120 --> 00:21:25,200 jissostitwixxu l-ħaġa sħiħa. 459 00:21:25,200 --> 00:21:28,005 >> Imma I biss jixtiequ joħolqu dan il-fajl darba, so I ser tuża unquote w kwotazzjoni. 460 00:21:28,005 --> 00:21:31,880 U naf li biss meta tkun tinqara id-dokumentazzjoni, jew il-paġna bniedem. 461 00:21:31,880 --> 00:21:35,100 Jekk fajl ma jkunx null - fi kliem ieħor, jekk xejn marret ħażin hemmhekk - 462 00:21:35,100 --> 00:21:37,820 let me jtenni fuq il- istudenti 0-3. 463 00:21:37,820 --> 00:21:40,410 >> U issa avviż li hemm xi ħaġa dejjem hekk ftit differenti 464 00:21:40,410 --> 00:21:42,110 dwar il-linja 41 hawn. 465 00:21:42,110 --> 00:21:42,960 Mhuwiex printf. 466 00:21:42,960 --> 00:21:46,530 Huwa fprintf għal fajl printf. 467 00:21:46,530 --> 00:21:47,790 Allura li għaddej biex jikteb għall-fajl. 468 00:21:47,790 --> 00:21:48,860 Liema fajl? 469 00:21:48,860 --> 00:21:53,630 Il-wieħed li inti tispeċifika pointer bħala l-ewwel argument. 470 00:21:53,630 --> 00:21:55,940 >> Imbagħad aħna tispeċifika string format. 471 00:21:55,940 --> 00:21:59,660 Imbagħad aħna tispeċifika liema string rridu plug fl għall-ewwel i fil-mija, u 472 00:21:59,660 --> 00:22:04,320 imbagħad varjabbli ieħor jew it-tieni fil-mija s. 473 00:22:04,320 --> 00:22:06,760 Imbagħad aħna qrib il-fajl ma fclose. 474 00:22:06,760 --> 00:22:09,380 Minn I tilliberalizza l-memorja bħal qabel, għalkemm I għandhom imorru lura u żid 475 00:22:09,380 --> 00:22:10,540 xi kontrolli għal null. 476 00:22:10,540 --> 00:22:12,090 >> U li hu. 477 00:22:12,090 --> 00:22:16,960 fopen, fprintf, fclose me tagħti l- kapaċità li joħolqu fajls test. 478 00:22:16,960 --> 00:22:19,640 Issa, tkun taf tara fil-problema sett ħames, li tkun tinvolvi xbihat, inti ser tkun qed tuża 479 00:22:19,640 --> 00:22:20,990 fajls binarji minflok. 480 00:22:20,990 --> 00:22:24,200 Iżda fundamentalment, l-idea hija l-istess, anki jekk il-funzjonijiet inti ser 481 00:22:24,200 --> 00:22:28,710 tara huma ftit differenti. 482 00:22:28,710 --> 00:22:32,580 >> Allura tour whirlwind, iżda inti se tikseb wisq familjari mal-fajl I/O-- 483 00:22:32,580 --> 00:22:34,960 input u output - ma pset ħamsa. 484 00:22:34,960 --> 00:22:38,607 U xi mistoqsijiet dwar l- baŜi inizjali hawn? 485 00:22:38,607 --> 00:22:39,857 Yeah? 486 00:22:39,857 --> 00:22:41,880 487 00:22:41,880 --> 00:22:43,710 >> X'jiġri jekk inti tipprova teħles valur null? 488 00:22:43,710 --> 00:22:48,880 Nemmen, sakemm ħielsa gotten ftit aktar faċli għall-utent, inti tista ' 489 00:22:48,880 --> 00:22:49,890 potenzjalment segfault. 490 00:22:49,890 --> 00:22:54,160 Jgħaddiha null huwa ħażin minħabba I ma jemmnu ħielsa bothers li jiċċekkja għalik, 491 00:22:54,160 --> 00:22:57,330 għaliex dan jista 'potenzjalement jkun skart ta 'żmien biex tagħmel lilha nnifisha għal 492 00:22:57,330 --> 00:22:59,022 kulħadd fid-dinja. 493 00:22:59,022 --> 00:23:00,590 Mistoqsija tajba, għalkemm. 494 00:23:00,590 --> 00:23:04,300 >> Kull dritt, sabiex dan it-tip ta gets ahna suġġett interessanti. 495 00:23:04,300 --> 00:23:07,010 It-tema tal-problema sett ħamsa forensika. 496 00:23:07,010 --> 00:23:08,420 Mill-inqas dan huwa porzjon tal-problema sett. 497 00:23:08,420 --> 00:23:12,030 Forensika ġeneralment jirreferi għall- irkupru ta 'informazzjoni li jistgħu jew 498 00:23:12,030 --> 00:23:14,110 jista 'ma ġew imħassra deliberatament. 499 00:23:14,110 --> 00:23:18,680 U hekk ħsibt I d jagħtik a quick togħma ta 'dak li hu verament għaddejjin kollha 500 00:23:18,680 --> 00:23:21,230 din id-darba taħt il- hood tal-kompjuter tiegħek. 501 00:23:21,230 --> 00:23:23,960 >> Per eżempju, jekk għandek ġewwa tal tiegħek laptop jew kompjuter desktop tiegħek 502 00:23:23,960 --> 00:23:28,040 hard drive, huwa jew mekkaniku apparat li attwalment spins - 503 00:23:28,040 --> 00:23:31,650 hemm affarijiet ċirkolari imsejħa platters li tfittex pjuttost simili dak I 504 00:23:31,650 --> 00:23:34,540 biss kellhom up fuq l-iskrin hawn, għalkemm dan huwa dejjem iskola antika. 505 00:23:34,540 --> 00:23:37,370 Dan huwa ta 'tliet u nofs pulzier hard drive. 506 00:23:37,370 --> 00:23:40,070 U pulzieri tlieta u nofs jirreferi ta ' ma 'l-ħaġa meta inti jinstallaw dan 507 00:23:40,070 --> 00:23:40,890 fil-kompjuter. 508 00:23:40,890 --> 00:23:44,890 >> Ħafna minnkom guys fil laptops tiegħek issa jkollhom drives stat solidu, jew SSDs, 509 00:23:44,890 --> 00:23:46,260 li ebda partijiet li jiċċaqalqu. 510 00:23:46,260 --> 00:23:49,170 Huma qed aktar bħal RAM u anqas simili dawn il-mezzi mekkaniċi. 511 00:23:49,170 --> 00:23:51,450 Iżda l-ideat għadhom l-istess, ċertament kif jirrelataw 512 00:23:51,450 --> 00:23:52,790 għall-problema stabbiliti ħamsa. 513 00:23:52,790 --> 00:23:57,400 >> U jekk taħseb dwar issa hard drive jirrappreżenta tkun ċirku, li 514 00:23:57,400 --> 00:23:58,930 I ser tiġbed bħal dan hawn. 515 00:23:58,930 --> 00:24:02,290 Meta inti toħloq fajl fuq il-kompjuter tiegħek, jekk huwa ta 'SSD, jew 516 00:24:02,290 --> 00:24:06,610 F'dan il-każ, l-anzjani iskola hard drive, dan il-fajl jinkludi bits multipli. 517 00:24:06,610 --> 00:24:10,510 Ejja ngħidu li dan huwa 0 u 1, mazz sħiħ ta 0s u 1s. 518 00:24:10,510 --> 00:24:11,660 Allura dan huwa hard drive kollu tiegħi. 519 00:24:11,660 --> 00:24:13,225 Din hija apparentement fajl pretty big. 520 00:24:13,225 --> 00:24:18,080 U qed tuża l-0s u 1s f'dak porzjon tal-platter fiżika. 521 00:24:18,080 --> 00:24:19,750 >> Ukoll, dak li huwa dak il-porzjon fiżika? 522 00:24:19,750 --> 00:24:25,310 Ukoll, jirriżulta li fuq hard drive, inqas ta 'dan it-tip, hemm 523 00:24:25,310 --> 00:24:27,340 dawn il-partiċelli manjetiċi ċkejkna ftit. 524 00:24:27,340 --> 00:24:32,630 U huma essenzjalment ikollhom tramuntana u poli nofsinhar għalihom, b'tali mod li jekk inti 525 00:24:32,630 --> 00:24:35,710 dawran wieħed minn dawk partiċelli manjetiċi B'dan il-mod, inti jista 'jgħid li huwa 526 00:24:35,710 --> 00:24:36,720 jirrappreżentaw 1. 527 00:24:36,720 --> 00:24:39,340 U jekk huwa rasu 'l isfel fin-nofsinhar sa tramuntana, inti jista 'jgħid li huwa 528 00:24:39,340 --> 00:24:40,390 jirrappreżentaw 0. 529 00:24:40,390 --> 00:24:43,660 >> Allura fid-dinja fiżika reali, li l- kif inti tista 'tirrappreżenta xi ħaġa 530 00:24:43,660 --> 00:24:45,670 istat binarja tal-0 u 1. 531 00:24:45,670 --> 00:24:46,720 Allura li kollox fajl huwa. 532 00:24:46,720 --> 00:24:49,300 Hemm mazz sħiħ ta 'manjetiċi partiċelli li huma b'dan il-mod jew tagħhom 533 00:24:49,300 --> 00:24:51,920 b'dan il-mod, il-ħolqien mudelli ta 0s u 1s. 534 00:24:51,920 --> 00:24:56,760 >> Iżda jirriżulta meta inti tiffranka fajl, xi informazzjoni jiġi ffrankat separatament. 535 00:24:56,760 --> 00:25:00,000 Allura dan huwa tabella ftit, direttorju, biex ngħidu hekk. 536 00:25:00,000 --> 00:25:05,810 U jien ser sejħa dan l-isem kolonna, u I ser sejħa dan il-post kolonna. 537 00:25:05,810 --> 00:25:08,850 >> U jien se ngħid, ejja ngħidu dan huwa jerġa tiegħi. 538 00:25:08,850 --> 00:25:14,050 Resume.doc tiegħi huwa maħżun post, ejja ngħidu 123. 539 00:25:14,050 --> 00:25:15,390 I dejjem tmur għall dak in-numru. 540 00:25:15,390 --> 00:25:18,810 Iżda huwa biżżejjed li jingħad li eżatt bħal fl RAM, inti tista 'tieħu hard drive 541 00:25:18,810 --> 00:25:22,350 Li l-gigabyte jew 200 gigabytes jew terabyte, u inti tista ' 542 00:25:22,350 --> 00:25:23,750 Numru kollha tal-bytes. 543 00:25:23,750 --> 00:25:26,480 Tista jinnumera biċċiet kollha ta '8 bits. 544 00:25:26,480 --> 00:25:29,030 >> Allura aħna ser jgħidu li dan hija 123 post. 545 00:25:29,030 --> 00:25:32,070 Allura dan ġewwa direttorju ta operattiva tiegħi sistema jiftakar li tiegħi 546 00:25:32,070 --> 00:25:34,250 jerġa hija fil-post 123. 547 00:25:34,250 --> 00:25:36,850 Iżda jiġrilha interessanti meta inti tħassar fajl. 548 00:25:36,850 --> 00:25:37,820 >> Allura per eżempju - 549 00:25:37,820 --> 00:25:40,790 u Thankfully, ħafna mill-dinja għandha maqbuda fuq dan - dak li jiġri meta 550 00:25:40,790 --> 00:25:45,040 inti drag fajl lill Mac OS Trash tiegħek jew tiegħek Windows Recycle Bin? 551 00:25:45,040 --> 00:25:48,290 552 00:25:48,290 --> 00:25:50,510 X'hemm l-iskop li jagħmlu dan? 553 00:25:50,510 --> 00:25:53,860 Huwa ovvjament biex jeħles mill-fajl, imma dak ma l-att ta 'jittrattienu u 554 00:25:53,860 --> 00:25:57,550 twaqqa fis Trash tiegħek jew tiegħek Recycle Bin do fuq kompjuter? 555 00:25:57,550 --> 00:25:59,230 >> Assolutament xejn, verament. 556 00:25:59,230 --> 00:26:00,320 Huwa biss bħal folder. 557 00:26:00,320 --> 00:26:01,800 Huwa folder speċjali, li jkun żgur. 558 00:26:01,800 --> 00:26:04,460 Iżda din hija attwalment iħassar il-fajl? 559 00:26:04,460 --> 00:26:06,780 >> Well, no, għaliex xi wħud minnkom probabbilment kienu simili, oh kkritikat, inti ma 560 00:26:06,780 --> 00:26:07,420 jfissirx li tagħmel dan. 561 00:26:07,420 --> 00:26:09,130 Allura inti ikklikkja darbtejn l- Trash jew Recycle Bin. 562 00:26:09,130 --> 00:26:11,630 You ħadthom poked madwar u inti stajt rkuprati l-fajl biss billi jittrattienu 563 00:26:11,630 --> 00:26:12,110 minn hemmhekk. 564 00:26:12,110 --> 00:26:14,420 Allura ċar, mhuwiex neċessarjament it-tħassir. 565 00:26:14,420 --> 00:26:15,990 >> OK, int intelliġenti minn dik. 566 00:26:15,990 --> 00:26:18,860 Inti taf li sempliċiment jittrattienu hija fil- Trash jew Recycle Bin ma jfissirx 567 00:26:18,860 --> 00:26:19,930 int jitbattal il-Trash. 568 00:26:19,930 --> 00:26:24,110 Allura inti tmur sa l-menu, u inti tgħidli Trash vojta jew vojta Recycle Bin. 569 00:26:24,110 --> 00:26:25,360 Imbagħad x'jiġri? 570 00:26:25,360 --> 00:26:29,070 571 00:26:29,070 --> 00:26:32,530 >> Yeah, għalhekk jitħassar aktar hekk. 572 00:26:32,530 --> 00:26:37,660 Imma dak kollu li jiġri huwa dan. 573 00:26:37,660 --> 00:26:45,350 Il-kompjuter jinsa fejn resume.doc kien. 574 00:26:45,350 --> 00:26:47,400 >> Imma dak ma nbidlitx apparentement fl-istampa? 575 00:26:47,400 --> 00:26:51,390 576 00:26:51,390 --> 00:26:55,570 Il-bits, il-0s u 1s li I jsostnu li huma fuq is-sit ta 'xi aspett fiżiku tal 577 00:26:55,570 --> 00:26:56,280 l-hardware. 578 00:26:56,280 --> 00:26:57,110 Huma qed għadhom hemm. 579 00:26:57,110 --> 00:26:58,930 Huwa biss il-kompjuter għandu minsija dak li huma. 580 00:26:58,930 --> 00:27:03,160 >> Allura huwa essenzjalment meħlusa tal-fajl bits sabiex ikunu jistgħu jerġgħu jintużaw. 581 00:27:03,160 --> 00:27:06,940 Iżda mhux sa inti toħloq fajls aktar, u fajls aktar, u aktar fajls se 582 00:27:06,940 --> 00:27:12,150 probabilistically, dawk 0s u 1s, dawk partiċelli manjetiċi, nikseb jerġgħu jintużaw, 583 00:27:12,150 --> 00:27:16,220 naħa rasu jew dritt up, għal fajls oħra, 0s u 1s. 584 00:27:16,220 --> 00:27:17,980 >> Allura inti għandek il-tieqa ta 'żmien. 585 00:27:17,980 --> 00:27:19,860 U m'humiex ta prevedibbli tul, verament. 586 00:27:19,860 --> 00:27:22,240 Hija tiddependi fuq id-daqs tal-hard tiegħek drive u fajls kemm għandek u 587 00:27:22,240 --> 00:27:23,490 kif malajr inti tagħmel oħrajn ġodda. 588 00:27:23,490 --> 00:27:27,050 Iżda hemm dan iż-żmien matul li dan il-fajl għadu perfettament 589 00:27:27,050 --> 00:27:27,770 jistgħux jitħallsu lura. 590 00:27:27,770 --> 00:27:31,050 >> Mela jekk inti qatt tuża programmi bħal McAfee jew Norton biex jippruvaw jirkupraw 591 00:27:31,050 --> 00:27:35,680 data, kollha li qed isir qed tipprova jirkupraw dan id-direttorju hekk imsejħa biex 592 00:27:35,680 --> 00:27:37,340 insemmu fejn fajl tiegħek kienet. 593 00:27:37,340 --> 00:27:40,605 U xi kultant Norton u se ngħid, fajl huwa 93% jitħallsu lura. 594 00:27:40,605 --> 00:27:42,020 Well, dak ma jfisser? 595 00:27:42,020 --> 00:27:45,690 Dan ifisser biss li xi fajl ieħor inzerta spiċċaw użu, ngħidu aħna, 596 00:27:45,690 --> 00:27:48,920 dawk bits barra tal-fajl oriġinali tiegħek. 597 00:27:48,920 --> 00:27:51,950 >> Allura dak li huwa attwalment involut fl-irkupru tad-data? 598 00:27:51,950 --> 00:27:55,720 Ukoll, jekk inti ma għandekx xi ħaġa bħal Norton installat minn qabel fuq il-kompjuter tiegħek, 599 00:27:55,720 --> 00:27:59,510 l-aħjar inti xi kultant tista 'tagħmel hu li tħares fil-hard drive kollu tfittex 600 00:27:59,510 --> 00:28:00,510 mudelli ta 'bits. 601 00:28:00,510 --> 00:28:05,350 U waħda mit-temi ta 'problema sett ħamsa li inti se tfittex il- 602 00:28:05,350 --> 00:28:09,570 ekwivalenti ta 'hard drive, a forensika immaġni ta 'karta flash kompatti minn 603 00:28:09,570 --> 00:28:13,660 kamera diġitali, it-tiftix għall-0s u 1s li tipikament, ma għolja 604 00:28:13,660 --> 00:28:16,720 probabbiltà, jirrappreżentaw il- bidu ta 'immaġni JPEG. 605 00:28:16,720 --> 00:28:21,120 >> U inti guys jistgħu jirkupraw dawk l-immaġini minn jekk wieħed jassumi, jekk nara dan il-mudell ta ' 606 00:28:21,120 --> 00:28:24,380 bits fuq l-immaġni forensika, bil probabbiltà għolja, li l-marki 607 00:28:24,380 --> 00:28:25,650 il-bidu ta 'JPEG. 608 00:28:25,650 --> 00:28:29,520 U jekk nara l-istess mudell mill-ġdid, li probabbilment jimmarka l-bidu ta ' 609 00:28:29,520 --> 00:28:32,440 ieħor JPEG, u ieħor JPEG, JPEG u ieħor. 610 00:28:32,440 --> 00:28:34,970 U dan huwa tipikament kif data ta 'rkupru se taħdem. 611 00:28:34,970 --> 00:28:37,870 X'hemm sbieħ dwar JPEGs huwa anke jekk il-format tal-fajl nnifisha hija kemmxejn 612 00:28:37,870 --> 00:28:44,400 kumplessi, il-bidu ta 'kull tali fajl huwa attwalment pjuttost identifikabbli 613 00:28:44,400 --> 00:28:47,370 u sempliċi, kif se tara, Jekk inti stajt ma diġà. 614 00:28:47,370 --> 00:28:50,270 >> Mela ejja tagħti ħarsa aktar mill-qrib taħt il-barnuża dwar eżattament dak li kien 615 00:28:50,270 --> 00:28:53,360 għaddejjin, u liema dawn 0s u 1s huma, li jtik daqsxejn aktar ta ' 616 00:28:53,360 --> 00:28:55,330 kuntest għal din l-isfida partikolari. 617 00:28:55,330 --> 00:28:55,510 >> [Daqq video] 618 00:28:55,510 --> 00:28:58,700 >> Fejn PC tiegħek-ħwienet l-aktar ta 'data permanenti tagħha. 619 00:28:58,700 --> 00:29:03,390 Biex tagħmel dan, l-informazzjoni jivvjaġġa minn RAM flimkien ma 'sinjali ta' softwer li jgħidulek 620 00:29:03,390 --> 00:29:06,110 l-hard drive kif jaħżnu dik id-data. 621 00:29:06,110 --> 00:29:09,410 Iċ-ċirkwiti hard drive tittraduċi dawk is-sinjali fi vultaġġ 622 00:29:09,410 --> 00:29:10,870 varjazzjonijiet. 623 00:29:10,870 --> 00:29:14,970 Dawn, imbagħad, jikkontrollaw il-drive hard partijiet li jiċċaqalqu, xi wħud mill-ftit 624 00:29:14,970 --> 00:29:17,910 partijiet li jiċċaqalqu jitħalla fil- moderni tal-kompjuter. 625 00:29:17,910 --> 00:29:22,130 >> Uħud mill-sinjali tal-kontroll bil-mutur li spins platters metall miksija. 626 00:29:22,130 --> 00:29:25,470 Id-data tiegħek huwa attwalment maħżuna fuq dawn platters. 627 00:29:25,470 --> 00:29:28,610 Sinjali oħra li jiċċaqalqu l-taqra / tikteb irjus biex taqra jew 628 00:29:28,610 --> 00:29:30,710 jikteb data dwar il-platters. 629 00:29:30,710 --> 00:29:35,450 Dan makkinarju tant preċiżi li bniedem xagħar ma setgħux lanqas tgħaddi bejn il- 630 00:29:35,450 --> 00:29:37,280 irjus u platti għażil. 631 00:29:37,280 --> 00:29:40,316 Madankollu, hija taħdem kollha b'veloċità terrific. 632 00:29:40,316 --> 00:29:40,660 >> [Daqq video END] 633 00:29:40,660 --> 00:29:42,190 >> DAVID Malan: Zoom fi ftit aktar profonda issa fil x'hemm 634 00:29:42,190 --> 00:29:44,360 attwalment fuq dawk platters. 635 00:29:44,360 --> 00:29:44,720 >> [Daqq video] 636 00:29:44,720 --> 00:29:47,660 >> -Ejja nħarsu lejn dak li aħna biss raw fil-mozzjoni bil-mod. 637 00:29:47,660 --> 00:29:51,710 Meta polz qasira ta 'l-elettriku huwa mibgħuta lill-taqra / tikteb ras, jekk Flips 638 00:29:51,710 --> 00:29:54,650 fuq elettromanjetika ċkejkna għal frazzjoni ta 'sekonda. 639 00:29:54,650 --> 00:29:58,970 Il-kalamita joħloq qasam, li bidliet l-polarità ta 'ċkejkna, ċkejkna 640 00:29:58,970 --> 00:30:02,850 porzjon tal-partikoli tal-metall li coat kull wiċċ platter. 641 00:30:02,850 --> 00:30:05,940 >> Serje mudell ta 'dawn ċkejkna, oqsma ċċarġjati up fuq il-disk 642 00:30:05,940 --> 00:30:08,470 jirrappreżenta ftit uniku ta ' data fin-numru binarju 643 00:30:08,470 --> 00:30:10,530 sistema użata mill-kompjuters. 644 00:30:10,530 --> 00:30:13,775 Issa, jekk il-kurrent tintbagħat mod wieħed permezz tal-taqra / tikteb ras, iż-żona 645 00:30:13,775 --> 00:30:15,970 ikun polarizzat f'direzzjoni waħda. 646 00:30:15,970 --> 00:30:17,950 Jekk l-kurrent tintbagħat fil- direzzjoni opposta, il- 647 00:30:17,950 --> 00:30:19,930 polarizzazzjoni hija maqluba. 648 00:30:19,930 --> 00:30:22,370 >> Kif inti tikseb off data l-hard disk? 649 00:30:22,370 --> 00:30:24,090 Just jitwaqqaf il-proċess. 650 00:30:24,090 --> 00:30:26,550 Allura huwa l-partiċelli fuq il-disk li jiksbu l-kurrent fil- 651 00:30:26,550 --> 00:30:27,960 taqra / tikteb ras li jiċċaqalqu. 652 00:30:27,960 --> 00:30:30,700 Poġġi flimkien miljuni ta 'dawn segmenti magnetized, u 653 00:30:30,700 --> 00:30:32,160 inti stajt ltqajna fajl. 654 00:30:32,160 --> 00:30:36,060 >> Issa, il-biċċiet ta 'fajl waħdieni jistgħu jiġu imxerrda fuq l-drive 655 00:30:36,060 --> 00:30:39,970 platters, tip ta bħall-mess ta 'dokumenti dwar iskrivanija tiegħek. 656 00:30:39,970 --> 00:30:43,500 Allura fajl extra speċjali iżomm rekord ta 'fejn kollox huwa. 657 00:30:43,500 --> 00:30:45,985 Ma inti tixtieq kellhom xi ħaġa bħal dik? 658 00:30:45,985 --> 00:30:46,470 >> [Daqq video END] 659 00:30:46,470 --> 00:30:47,820 >> DAVID Malan: OK, probabbilment le. 660 00:30:47,820 --> 00:30:52,070 Allura kif ħafna minnkom guys kiber ma 'dawn? 661 00:30:52,070 --> 00:30:53,970 OK, dan huwa inqas u inqas idejn kull sena. 662 00:30:53,970 --> 00:30:56,550 Imma jien kuntenta int inqas familjari magħhom, minħabba dan u tagħna stess 663 00:30:56,550 --> 00:31:00,520 demo ktieb, sfortunatament, qegħdin imutu ħafna bil-mod mewt hawn 'familjarità. 664 00:31:00,520 --> 00:31:04,010 >> Imma dan huwa dak I, għall-inqas, lura fl- iskola għolja, l-użu użati għall-backups. 665 00:31:04,010 --> 00:31:08,110 U kien aqwa, għaliex inti jista 'jaħżen 1.4 megabytes fuq 666 00:31:08,110 --> 00:31:08,930 dan disk partikolari. 667 00:31:08,930 --> 00:31:12,260 U dan kien il-verżjoni densità għolja, kif indikat mill-HD, li għandha 668 00:31:12,260 --> 00:31:14,240 jiġifieri qabel videos HD lum. 669 00:31:14,240 --> 00:31:16,400 >> Densità Standard kienet ta '800 kilobytes. 670 00:31:16,400 --> 00:31:18,640 U qabel li, kien hemm Diski 400-kilobyte. 671 00:31:18,640 --> 00:31:23,120 U qabel li, kien hemm 5 u 1/4 pulzier diski, li kienu tassew floppy, 672 00:31:23,120 --> 00:31:25,680 u ftit usa 'u taller minn dawn l-affarijiet hawn. 673 00:31:25,680 --> 00:31:29,150 Iżda int tista 'attwalment ara l-hekk imsejħa Aspett floppy disks ta 'dawn. 674 00:31:29,150 --> 00:31:32,630 >> U funzjonalment, dawn qed attwalment pretty simili għal hard drives ta 'mill- 675 00:31:32,630 --> 00:31:33,570 inqas dan it-tip. 676 00:31:33,570 --> 00:31:37,270 Għal darb'oħra, SSDs fil-kompjuters ġodda jaħdmu ftit differenti. 677 00:31:37,270 --> 00:31:41,530 Imma jekk inti tmur li tab metall ftit, inti tista 'attwalment tara cookie ftit, 678 00:31:41,530 --> 00:31:42,560 jew platter. 679 00:31:42,560 --> 00:31:43,830 >> Mhuwiex metall bħal dan wieħed. 680 00:31:43,830 --> 00:31:46,000 Dan wieħed fil-fatt xi irħas materjal tal-plastik. 681 00:31:46,000 --> 00:31:46,750 U inti tista 'tip ta' wiggle. 682 00:31:46,750 --> 00:31:50,310 U inti stajt biss trully mimsuħ off xi numru ta 'bits jew partiċelli manjetiċi 683 00:31:50,310 --> 00:31:51,220 minn dan disk. 684 00:31:51,220 --> 00:31:52,710 >> Allura Thankfully, hemm xejn fuqha. 685 00:31:52,710 --> 00:31:55,790 Jekk dik ħaġa fil-mod - u jkopru għajnejn tiegħek u dawk tal-proxxmu tiegħek - 686 00:31:55,790 --> 00:31:58,865 inti tista 'biss tip ta' tiġbed dan off għant kollu bħal dik. 687 00:31:58,865 --> 00:32:01,900 Iżda hemm rebbiegħa ftit, sabiex ikunu konxji ta 'dak mal-għajnejn tiegħek. 688 00:32:01,900 --> 00:32:03,620 Allura issa għandek verament floppy disk. 689 00:32:03,620 --> 00:32:07,090 >> U x'hemm notevoli dwar din hija li fil kemm dan huwa 690 00:32:07,090 --> 00:32:10,830 rappreżentazzjoni fuq skala żgħira ta 'akbar hard drive, dawn l-affarijiet huma super, 691 00:32:10,830 --> 00:32:11,590 sempliċi super. 692 00:32:11,590 --> 00:32:15,170 Jekk inti oqros il-qiegħ ta 'dan, issa li li ħaġa metall huwa off, u l-qoxra 693 00:32:15,170 --> 00:32:20,990 minnhom miftuħa, kollha hemm hi ta 'żewġ biċċiet ta' feltru u l-hekk imsejħa disk floppy 694 00:32:20,990 --> 00:32:22,930 ma 'biċċa ta' metall fuq ġewwa. 695 00:32:22,930 --> 00:32:25,990 >> U hemm tmur nofs kontenut disk tiegħi. 696 00:32:25,990 --> 00:32:27,540 Hemm tmur ieħor nofs minnhom. 697 00:32:27,540 --> 00:32:31,375 Imma dak li kollu li kien għażil ġewwa tal-kompjuter tiegħek fl-imgħoddi. 698 00:32:31,375 --> 00:32:35,220 699 00:32:35,220 --> 00:32:38,310 >> U għal darb'oħra, dan iseħħ fil-perspettiva, kemm hu kbir huwa l-aktar ta 'tiegħek 700 00:32:38,310 --> 00:32:39,560 hard drives dawn il-jiem? 701 00:32:39,560 --> 00:32:41,960 702 00:32:41,960 --> 00:32:46,230 500 gigabytes, terabyte, forsi fl kompjuter desktop, 2 terabytes, 3 703 00:32:46,230 --> 00:32:47,630 terabytes, 4 ta'Terabytes, id-dritt? 704 00:32:47,630 --> 00:32:52,480 Dan huwa megabyte wieħed, jagħtu jew jieħu, li ma jistgħux anki jitwaħħal MP3 tipiku 705 00:32:52,480 --> 00:32:55,310 jibqgħalu dawn il-jiem, jew xi mużika fajl simili. 706 00:32:55,310 --> 00:32:59,500 >> Allura tifkira ftit għalik illum, u wkoll biex jgħin contextualize dak 707 00:32:59,500 --> 00:33:03,570 aħna ser tkun qed tieħu għall mogħtija issa problema stabbiliti ħamsa. 708 00:33:03,570 --> 00:33:04,820 Għalhekk dawn huma tiegħek li żżomm. 709 00:33:04,820 --> 00:33:07,340 710 00:33:07,340 --> 00:33:13,370 So let me tranżizzjoni fejn se jkun l-infiq l pset jmiss ukoll. 711 00:33:13,370 --> 00:33:18,470 Allura aħna ħadthom issa stabbilit din il-paġna għall - oh, koppja ta 'avviżi malajr. 712 00:33:18,470 --> 00:33:21,730 >> Dan Ġimgħa, jekk inti tixtieq jissieħbu CS50 għall-ikel, mur l-post tas-soltu, 713 00:33:21,730 --> 00:33:23,610 cs50.net/rsvp. 714 00:33:23,610 --> 00:33:25,100 U proġett finali - 715 00:33:25,100 --> 00:33:28,520 hekk kull-sillabu, konna stazzjonati l- ispeċifikazzjoni tal-proġett finali diġà. 716 00:33:28,520 --> 00:33:31,410 Jirrealizzaw li dan ma jfissirx huwa dovut partikolarment dalwaqt. 717 00:33:31,410 --> 00:33:33,990 Huwa stazzjonati, verament, biss li tikseb inti guys taħseb dwar dan. 718 00:33:33,990 --> 00:33:37,620 U tabilħaqq, super sinifikanti persentaġġ ta 'inti tkun indirizzar 719 00:33:37,620 --> 00:33:40,780 proġetti finali dwar materjal li aħna lanqas biss gotten fil-klassi, 720 00:33:40,780 --> 00:33:42,730 iżda se kmieni kemm ġimgħa d-dieħla. 721 00:33:42,730 --> 00:33:45,530 >> Avviż, madankollu, li l-spec jitlob xi komponenti differenti ftit tal- 722 00:33:45,530 --> 00:33:46,190 proġett finali. 723 00:33:46,190 --> 00:33:49,590 L-ewwel, fi ftit ġimgħat, huwa pre-proposta, email pretty każwali biex 724 00:33:49,590 --> 00:33:52,760 TF tiegħek li tgħid lilu jew dak li int taħseb dwar għall-proġett tiegħek, ma 725 00:33:52,760 --> 00:33:53,650 ebda impenn. 726 00:33:53,650 --> 00:33:56,710 Proposta se jkun partikolari tiegħek impenn, qal, hawnhekk, dan huwa dak 727 00:33:56,710 --> 00:33:57,770 I tixtieq tagħmel għall-proġett tiegħi. 728 00:33:57,770 --> 00:33:58,250 What do you think? 729 00:33:58,250 --> 00:33:58,650 Kbira wisq? 730 00:33:58,650 --> 00:33:59,145 Żgħir wisq? 731 00:33:59,145 --> 00:34:00,330 Huwa maniġġabbli? 732 00:34:00,330 --> 00:34:02,230 U tara l-spec għal aktar dettalji. 733 00:34:02,230 --> 00:34:05,060 >> Koppja ta 'ġimgħat wara li l-istatus rapport, li huwa simili 734 00:34:05,060 --> 00:34:08,260 email każwali biex TF tiegħek li tgħid kemm ferm lura inti fil finali tiegħek 735 00:34:08,260 --> 00:34:12,360 implimentazzjoni proġett, segwit minn l-Hackathon CS50 li għalihom kulħadd 736 00:34:12,360 --> 00:34:17,520 huwa mistieden, li se jkun avveniment minn 20:00 fuq waħda filgħaxija till 07:00 737 00:34:17,520 --> 00:34:19,150 AM l-għada filgħodu. 738 00:34:19,150 --> 00:34:22,560 Pizza, kif I jista 'jkollhom imsemmija fil-ġimgħa żero, wil jkun innotifikat fil 09:00, 739 00:34:22,560 --> 00:34:24,120 Ikel Ċiniż fil 01:00. 740 00:34:24,120 --> 00:34:27,929 U jekk int xorta imqajjem fi 5:00 AM, aħna ser tieħdok għall IHOP għall-kolazzjon. 741 00:34:27,929 --> 00:34:31,310 >> Allura l-Hackathon hija waħda mill-aktar esperjenzi memorabbli fil-klassi. 742 00:34:31,310 --> 00:34:35,290 Imbagħad l-implimentazzjoni huwa dovut, u allura l-climactic CS50 Fair. 743 00:34:35,290 --> 00:34:38,070 Aktar dettalji dwar dawn kollha fil-ġimgħat li ġejjin. 744 00:34:38,070 --> 00:34:40,739 >> Imma ejja mmorru lura għal xi ħaġa iskola antika - 745 00:34:40,739 --> 00:34:41,920 għal darb'oħra, firxa. 746 00:34:41,920 --> 00:34:45,040 Allura firxa kien sbieħ, minħabba li jsolvi problemi bħal rajna biss 747 00:34:45,040 --> 00:34:49,290 mument ilu bi strutturi student jkollna ftit mill-kontroll jekk aħna 748 00:34:49,290 --> 00:34:52,405 jridu li jkollhom student wieħed, student tnejn, student tlieta, student dot dot dot, 749 00:34:52,405 --> 00:34:54,400 xi numru arbitrarju ta 'studenti. 750 00:34:54,400 --> 00:34:58,850 >> Allura arrays, ftit ġimgħat ilu, swooped fl u solvuti l-problemi tagħna ta 'mhux 751 00:34:58,850 --> 00:35:03,340 jafu bil-quddiem affarijiet kemm ta 'xi tip aħna tista' tixtieq. 752 00:35:03,340 --> 00:35:07,390 U Rajna li structs tista 'tgħinna aktar torganizza kodiċi tagħna u jżommu 753 00:35:07,390 --> 00:35:11,660 varjabbli kunċettwalment simili, bħal isem u dar, flimkien, sabiex inkunu 754 00:35:11,660 --> 00:35:15,570 jistgħu jittrattawhom bħala entità waħda, ġewwa li minnhom hemm biċċiet iżgħar. 755 00:35:15,570 --> 00:35:17,810 >> Iżda arrays jkollhom xi żvantaġġi. 756 00:35:17,810 --> 00:35:19,780 Liema huma wħud mill-iżvantaġġi konna jiltaqgħu magħhom 757 00:35:19,780 --> 00:35:22,320 ma arrays s'issa? 758 00:35:22,320 --> 00:35:23,450 X'hemm li? 759 00:35:23,450 --> 00:35:28,130 Daqs fiss - hekk anke jekk inti tista ' tkun tista 'talloka memorja għal 760 00:35:28,130 --> 00:35:32,310 array, ladarba inti taf kif ħafna studenti ikollok, kemm karattri għandek 761 00:35:32,310 --> 00:35:35,460 mill-utent, ladarba inti stajt allokati il-firxa, inti stajt tip ta 'miżbugħa 762 00:35:35,460 --> 00:35:36,740 lilek innifsek fis-kantuniera. 763 00:35:36,740 --> 00:35:40,600 >> Għaliex inti ma tista 'daħħal elementi ġodda fis-nofs ta 'firxa. 764 00:35:40,600 --> 00:35:43,660 Inti ma tistax daħħal elementi aktar fl-aħħar ta 'firxa. 765 00:35:43,660 --> 00:35:47,750 Really, inti jkollhom jirrikorru għal ħolqien ta ' firxa sħiħa ġdida, kif konna diskussi, 766 00:35:47,750 --> 00:35:49,320 ikkupjar l-qodma fil-ġdida. 767 00:35:49,320 --> 00:35:52,610 U għal darb'oħra, dan huwa l-uġigħ ta 'ras li GetString jittratta għalik. 768 00:35:52,610 --> 00:35:56,170 >> Iżda għal darb'oħra, inti ma tistax anki daħħal xi ħaġa fis-nofs tal-firxa 769 00:35:56,170 --> 00:35:58,200 jekk ir-rata ma tkunx ġiet mimlija kompletament. 770 00:35:58,200 --> 00:36:03,010 Per eżempju, jekk dan array hawn ta 'daqs sitta biss għandha ħames affarijiet fiha, 771 00:36:03,010 --> 00:36:06,080 ukoll, inti tista 'biss tindi xi ħaġa fuq l-aħħar. 772 00:36:06,080 --> 00:36:08,200 Imma x'jiġri jekk inti tixtieq li daħħal xi ħaġa fis-nofs ta 'l- 773 00:36:08,200 --> 00:36:11,280 array, anki jekk jista 'jkollhom ħamsa mis-sitt affarijiet fih? 774 00:36:11,280 --> 00:36:14,250 >> Ukoll, dak li ma nagħmlu meta kellna kollha ta 'voluntiera umani tagħna onstage fil 775 00:36:14,250 --> 00:36:15,110 ġimgħat passat? 776 00:36:15,110 --> 00:36:18,710 Jekk ridna li tpoġġi xi ħadd hawnhekk, jew dawn in-nies kif jimxu dan 777 00:36:18,710 --> 00:36:22,540 mod, jew dawn in-nies kif jimxu dan mod, u li saret għalja. 778 00:36:22,540 --> 00:36:26,950 Ċ-ċaqliq tan-nies ġewwa ta ' array spiċċaw żżid up u jiswew 779 00:36:26,950 --> 00:36:31,240 us ħin, għalhekk ħafna kwadrat n tagħna running żminijiet bħal sort inserzjoni, per 780 00:36:31,240 --> 00:36:32,550 Pereżempju, fl-agħar każ. 781 00:36:32,550 --> 00:36:36,520 Allura arrays huma kbar, iżda inti għandek taf minn qabel kemm hu kbir inti tixtieq. 782 00:36:36,520 --> 00:36:38,030 >> Allura OK, hawnhekk soluzzjoni. 783 00:36:38,030 --> 00:36:43,860 Jekk jien ma jaf minn qabel kemm studenti I jista 'jkollhom, u naf ladarba 784 00:36:43,860 --> 00:36:47,870 I jiddeċiedu, għalkemm, jien mwaħħla ma 'dik ħafna studenti, għaliex ma I biss dejjem 785 00:36:47,870 --> 00:36:51,740 jallokaw darbtejn ħafna spazju kif I tista 'taħseb I bżonn? 786 00:36:51,740 --> 00:36:54,450 Hija li mhux soluzzjoni raġonevoli? 787 00:36:54,450 --> 00:36:58,240 >> Realistikament, ma naħsibx li aħna qed ser jeħtieġu aktar minn 50 slots 788 00:36:58,240 --> 00:37:02,190 fil-firxa għall-klassi ta 'daqs medju, hekk ejja biss madwar up. 789 00:37:02,190 --> 00:37:07,040 I ser tagħmel 100 slots fl array tiegħi, biss sabiex inkunu nistgħu definittivament jiksbu l- 790 00:37:07,040 --> 00:37:10,330 numru ta 'studenti I tistenna li jkun f'xi klassi ta 'daqs medju. 791 00:37:10,330 --> 00:37:14,320 Allura għaliex mhux biss jarrotondaw u jallokaw memorja aktar, tipikament, għal firxa 792 00:37:14,320 --> 00:37:16,290 milli taħseb inti tista 'anki bżonn? 793 00:37:16,290 --> 00:37:20,190 X'hemm dan pushback sempliċi għal dik l-idea? 794 00:37:20,190 --> 00:37:21,440 >> Int biss wasting memorja. 795 00:37:21,440 --> 00:37:25,350 Litteralment kull programm tikteb mbagħad huwa forsi tuża memorja doppju ta 'kemm 796 00:37:25,350 --> 00:37:26,680 inti fil-fatt bżonn. 797 00:37:26,680 --> 00:37:28,990 U li biss ma jħossu bħal partikolarment soluzzjoni eleganti. 798 00:37:28,990 --> 00:37:31,990 Barra minn hekk, hija biss inaqqas l- probabbiltà ta 'problema. 799 00:37:31,990 --> 00:37:35,300 Jekk jiġri li jkollhom kors popolari semestru wieħed u inti għandek 101 800 00:37:35,300 --> 00:37:39,610 istudenti, program tiegħek għadu fundamentalment jiffaċċjaw l-istess kwistjoni. 801 00:37:39,610 --> 00:37:44,280 >> Allura Thankfully, hemm soluzzjoni għal dan ad problemi kollha tagħna fil-forma 802 00:37:44,280 --> 00:37:46,790 ta 'strutturi ta' dejta li huma aktar kumplessi minn dawk 803 00:37:46,790 --> 00:37:47,970 Rajna s'issa. 804 00:37:47,970 --> 00:37:50,530 Dan, nitlob, hija lista linked. 805 00:37:50,530 --> 00:37:51,920 Din hija lista ta 'numri - 806 00:37:51,920 --> 00:37:54,970 9, 17, 22, 26, u 34 - 807 00:37:54,970 --> 00:38:00,120 li ġew marbuta flimkien permezz ta 'dak li stajt mfassla bħala vleġeġ. 808 00:38:00,120 --> 00:38:03,580 >> Fi kliem ieħor, jekk jien ridt li jirrappreżentaw firxa, I tista 'tagħmel 809 00:38:03,580 --> 00:38:04,910 xi ħaġa bħal din. 810 00:38:04,910 --> 00:38:07,310 U jien ser tpoġġi dan fuq il-overhead fi ftit mument. 811 00:38:07,310 --> 00:38:09,970 I tista 'tagħmel - 812 00:38:09,970 --> 00:38:12,520 hello, id-dritt. 813 00:38:12,520 --> 00:38:14,470 Stand mill. 814 00:38:14,470 --> 00:38:17,360 Kompjuter ġdid hawn, ċari - 815 00:38:17,360 --> 00:38:18,090 id-dritt. 816 00:38:18,090 --> 00:38:21,730 >> Mela jekk ikolli dawn in-numri fil-firxa - 817 00:38:21,730 --> 00:38:28,880 9, 17, 22, 26, 24 - 818 00:38:28,880 --> 00:38:30,530 mhux neċessarjament l-iskala. 819 00:38:30,530 --> 00:38:33,730 Kull dritt, hekk hawn huwa firxa tiegħi - 820 00:38:33,730 --> 00:38:34,980 oh my god. 821 00:38:34,980 --> 00:38:38,700 822 00:38:38,700 --> 00:38:40,395 Kull dritt, hekk hawn huwa firxa tiegħi. 823 00:38:40,395 --> 00:38:44,110 824 00:38:44,110 --> 00:38:45,050 Oh my god. 825 00:38:45,050 --> 00:38:48,820 >> [Daħk] 826 00:38:48,820 --> 00:38:49,440 >> DAVID Malan: nippretendu. 827 00:38:49,440 --> 00:38:52,330 Huwa wisq sforz biex tmur lura u tiffissa li, hekk hemm - 828 00:38:52,330 --> 00:38:54,290 26. 829 00:38:54,290 --> 00:38:57,650 Allura aħna għandna dan firxa ta ' 9, 17, 22, 26, u 34. 830 00:38:57,650 --> 00:39:00,260 Għal dawk tal inti tista 'tara l- żball imbarazzanti I biss magħmula, 831 00:39:00,260 --> 00:39:00,830 hemm hu. 832 00:39:00,830 --> 00:39:04,490 >> So I jsostnu li din hija soluzzjoni effiċjenti ħafna. 833 00:39:04,490 --> 00:39:07,310 Stajt allokati kif ħafna ints kif I bżonn - wieħed, tnejn, tlieta, 834 00:39:07,310 --> 00:39:09,100 erba ', ħames, sitt jew - 835 00:39:09,100 --> 00:39:11,660 u stajt mbagħad maħżun-numri ġewwa ta 'dan array. 836 00:39:11,660 --> 00:39:15,220 Iżda suppose, allura, nixtieq li daħħal valur bħall-numru 8? 837 00:39:15,220 --> 00:39:16,100 Ukoll, fejn ma tmur? 838 00:39:16,100 --> 00:39:18,530 Jissoponi Irrid li daħħal numru simili 20. 839 00:39:18,530 --> 00:39:19,790 Ukoll, fejn ma tmur? 840 00:39:19,790 --> 00:39:23,160 X'imkien hemm fin-nofs, jew in-numru 35 irid imur 841 00:39:23,160 --> 00:39:24,010 x'imkien fl-aħħar. 842 00:39:24,010 --> 00:39:25,320 Imma jien kollha barra ta 'spazju. 843 00:39:25,320 --> 00:39:29,120 >> U għalhekk din hija sfida fundamentali ta 'arrays li ma huma s-soluzzjoni. 844 00:39:29,120 --> 00:39:32,280 I qal mument ilu, GetString issolvi din il-problema. 845 00:39:32,280 --> 00:39:37,380 Jekk inti tixtieq li daħħal is-sitt numru fis dan array, dak li huwa mill-inqas wieħed 846 00:39:37,380 --> 00:39:40,090 soluzzjoni tista 'taqa' lura fuq għall-żgur, bħad nagħmlu ma GetString? 847 00:39:40,090 --> 00:39:44,340 848 00:39:44,340 --> 00:39:46,030 X'hemm li? 849 00:39:46,030 --> 00:39:48,190 >> Ukoll, jagħmilha akbar huwa aktar faċli minn qal jsir. 850 00:39:48,190 --> 00:39:52,810 Aħna ma tistax neċessarjament jagħmlu l-firxa akbar, imma x'nistgħu nagħmlu? 851 00:39:52,810 --> 00:39:56,570 Agħmel firxa ġdida li l-akbar, ta 'daqs 6, jew forsi daqs 10, jekk irridu 852 00:39:56,570 --> 00:40:00,490 biex tikseb l quddiem ta 'affarijiet, u mbagħad kopja il-firxa qodma fil-ġdida, u mbagħad 853 00:40:00,490 --> 00:40:01,680 ħielsa l array qodma. 854 00:40:01,680 --> 00:40:05,770 >> Imma x'inhu l-running time issa ta 'dak il-proċess? 855 00:40:05,770 --> 00:40:09,870 Huwa big O ta 'n, minħabba li l-ikkupjar va ispiża inti xi unitajiet ta ' 856 00:40:09,870 --> 00:40:13,480 żmien, sabiex mhux hekk ideali jekk irridu jallokaw firxa ġdida, li se 857 00:40:13,480 --> 00:40:15,610 li jikkunsmaw darbtejn daqs memorja temporanjament. 858 00:40:15,610 --> 00:40:16,660 Kopja qodma ġodda - 859 00:40:16,660 --> 00:40:18,800 I mean, huwa biss ras, li huwa, għal darb'oħra, għaliex aħna kiteb 860 00:40:18,800 --> 00:40:19,920 GetString għalik. 861 00:40:19,920 --> 00:40:21,380 >> Allura dak li jista 'nagħmlu minflok? 862 00:40:21,380 --> 00:40:25,000 Ukoll, dak li jekk l-istruttura tad-data tagħna attwalment għandha lakuni fil dan? 863 00:40:25,000 --> 00:40:30,790 Ejja ngħidu li I jirrilassaw għan tiegħi ta 'wara biċċiet kontigwi ta 'memorja, fejn 9 864 00:40:30,790 --> 00:40:34,500 huwa dritt li jmiss għall-17, li huwa dritt li jmiss għall-22, u l-bqija. 865 00:40:34,500 --> 00:40:39,570 >> U jissoponi li 9 tistax tkun hawn RAM, u 17 jistgħu jiġu minn hawn fil-RAM, 866 00:40:39,570 --> 00:40:40,990 u 22 jistgħu jiġu minn hawn fil-RAM. 867 00:40:40,990 --> 00:40:43,610 Fi kliem ieħor, I m'għandhomx bżonn minnhom anki lura lura aktar. 868 00:40:43,610 --> 00:40:47,850 I biss għandhom b'xi mod ħajt labra permezz kull wieħed minn dawn in-numri, jew kull 869 00:40:47,850 --> 00:40:51,010 ta 'dawn in-nodi, kif aħna ser sejħa- rettangoli kif stajt mfassla minnhom, lil 870 00:40:51,010 --> 00:40:55,670 tiftakar kif tikseb l-aħħar bħal node mill-ewwel. 871 00:40:55,670 --> 00:40:59,940 >> Allura x'inhi l-ipprogrammar jinbena Rajna pjuttost reċentement li jien 872 00:40:59,940 --> 00:41:03,030 tista 'timplimenta dak il-ħajt, jew mfassla hawn, li nista ' 873 00:41:03,030 --> 00:41:05,430 jimplimentaw dawk vleġeġ? 874 00:41:05,430 --> 00:41:06,500 Pointers Allura, id-dritt? 875 00:41:06,500 --> 00:41:09,560 Jekk I jallokaw mhux biss int, imma node - u billi 876 00:41:09,560 --> 00:41:10,810 node, I jfissirx biss kontenitur. 877 00:41:10,810 --> 00:41:12,900 U viżwalment, I tfisser rettangolu. 878 00:41:12,900 --> 00:41:16,420 Allura node apparentement teħtieġ li fihom żewġ valuri - 879 00:41:16,420 --> 00:41:21,490 l-int innifsu, u mbagħad, kif implikat l-nofs ta 'isfel tar-rettangolu, 880 00:41:21,490 --> 00:41:23,010 biżżejjed spazju għal int. 881 00:41:23,010 --> 00:41:26,130 >> Hekk biss jaħsbu quddiem hawnhekk, kemm hu kbir huwa dan node, dan 882 00:41:26,130 --> 00:41:27,170 kontenitur relattiv? 883 00:41:27,170 --> 00:41:29,250 Kemm bytes għall-int? 884 00:41:29,250 --> 00:41:31,310 Preżumibbilment 4, jekk huwa l-istess bħas-soltu. 885 00:41:31,310 --> 00:41:33,270 U allura kemm bytes għall-pointer? 886 00:41:33,270 --> 00:41:33,650 4. 887 00:41:33,650 --> 00:41:37,940 Allura dan il-kontenitur, jew dan node, huwa ser tkun struttura 8-byte. 888 00:41:37,940 --> 00:41:41,760 Oh, u li l-koinċidenza kuntenti li aħna biss introduċiet dan il-kunċett ta ' 889 00:41:41,760 --> 00:41:44,400 a Struct, jew struttura C. 890 00:41:44,400 --> 00:41:48,890 >> So I jsostnu li nixtieq li tieħu pass lejn dan aktar sofistikati 891 00:41:48,890 --> 00:41:52,560 implimentazzjoni ta 'lista ta' numri, a lista marbuta ta 'numri, I bżonn tagħmel 892 00:41:52,560 --> 00:41:56,920 ftit aktar ħsieb bil-quddiem u jiddikjara mhux biss int, imma Struct 893 00:41:56,920 --> 00:41:58,620 li jien ser sejħa, konvenzjonalment hawn, node. 894 00:41:58,620 --> 00:42:01,630 Nistgħu sejħa hija xejn irridu, imma node se jkunu tematiċi fil-lott 895 00:42:01,630 --> 00:42:03,560 mill-affarijiet aħna tibda tħares lejn issa. 896 00:42:03,560 --> 00:42:06,480 >> Ġewwa ta 'dik node huwa n int. 897 00:42:06,480 --> 00:42:09,350 U allura dan sintassi, ftit stramb ewwel daqqa t'għajn - 898 00:42:09,350 --> 00:42:12,960 Struct node * jmiss. 899 00:42:12,960 --> 00:42:16,900 Ukoll pictorially, dak huwa li? 900 00:42:16,900 --> 00:42:21,000 Dan huwa l-nofs ta 'isfel ta' -rettangolu li rajna 901 00:42:21,000 --> 00:42:22,730 ftit mument ilu. 902 00:42:22,730 --> 00:42:27,600 >> Imma għaliex jien qal Struct node * għall-kuntrarju biss node *? 903 00:42:27,600 --> 00:42:31,370 Għaliex jekk dak pointer hija li tipponta fil node ieħor, huwa biss il- 904 00:42:31,370 --> 00:42:32,760 indirizz ta 'node. 905 00:42:32,760 --> 00:42:35,630 C'est konsistenti ma 'dak li aħna ħadthom diskuss dwar pointers s'issa. 906 00:42:35,630 --> 00:42:39,690 Iżda għaliex, jekk nitlob din l-istruttura hija imsejħa node, għandi ngħid Struct 907 00:42:39,690 --> 00:42:42,660 node ġewwa hawn? 908 00:42:42,660 --> 00:42:43,190 >> Eżattament. 909 00:42:43,190 --> 00:42:46,490 Huwa tip ta 'realtà stupid ta' C. Il typedef, biex ngħidu hekk, ma jkunx 910 00:42:46,490 --> 00:42:47,220 seħħx. 911 00:42:47,220 --> 00:42:48,510 C huwa super litterali. 912 00:42:48,510 --> 00:42:51,050 Jgħid kodiċi top tiegħek biex qiegħ, xellug għal-lemin. 913 00:42:51,050 --> 00:42:54,930 U sakemm hits li semicolon fuq il- bottom line, raden dak li ma 914 00:42:54,930 --> 00:42:57,590 jeżistu bħala tip ta 'data? 915 00:42:57,590 --> 00:42:59,060 Node, node unquote kwotazzjoni. 916 00:42:59,060 --> 00:43:03,050 >> Iżda minħabba l-aktar verbose Dikjarazzjoni I ma fuq l-ewwel linja - 917 00:43:03,050 --> 00:43:05,340 typedef node Struct - 918 00:43:05,340 --> 00:43:08,790 minħabba li daħal l-ewwel, qabel il- braces kaboċċi, li tip simili 919 00:43:08,790 --> 00:43:11,800 pre-edukazzjoni clang li, inti taf liema, tagħti me a Struct 920 00:43:11,800 --> 00:43:13,570 imsejħa node Struct. 921 00:43:13,570 --> 00:43:16,270 Franchement, I ma simili li ssejjaħ affarijiet Struct node, node Struct kollha 922 00:43:16,270 --> 00:43:17,090 matul kodiċi tiegħi. 923 00:43:17,090 --> 00:43:20,660 Imma jien ser jużawha biss darba, biss ġewwa, I hekk li jista 'effettivament 924 00:43:20,660 --> 00:43:25,010 toħloq tip ta 'referenza ċirkolari, mhux a pointer li myself per se, iżda 925 00:43:25,010 --> 00:43:29,400 pointer għall-ieħor ta ' tip identiċi. 926 00:43:29,400 --> 00:43:32,330 >> Għalhekk jirriżulta li fuq struttura tad-data bħal dan, hemm ftit 927 00:43:32,330 --> 00:43:34,470 operazzjonijiet li jistgħu jkunu ta 'interess lilna. 928 00:43:34,470 --> 00:43:37,460 Aħna tista 'tixtieq li daħħal fi lista bħal din. 929 00:43:37,460 --> 00:43:39,850 Aħna tista 'tixtieq li jitħassar minn lista bħal din. 930 00:43:39,850 --> 00:43:43,490 Aħna tista 'tixtieq li tfittex l-lista ta' valur, jew b'mod iktar ġenerali, travers. 931 00:43:43,490 --> 00:43:46,410 U travers huwa biss mod fancy ta ' qal bidu fil-xellug u jimxu kollha 932 00:43:46,410 --> 00:43:47,650 il-mod lejn il-lemin. 933 00:43:47,650 --> 00:43:52,640 >> U avviż, anke ma 'dan ftit aktar struttura tad-data sofistikati, let 934 00:43:52,640 --> 00:43:56,510 me tipproponi li nistgħu tissellef xi wħud l-ideat tal-aħħar ġimgħatejn u 935 00:43:56,510 --> 00:43:58,410 timplimenta funzjoni msejħa tfittxija bħal dan. 936 00:43:58,410 --> 00:44:01,360 Huwa ser jirritorna vera jew falza, li jindika, iva jew 937 00:44:01,360 --> 00:44:03,390 ebda, n huwa fil-lista. 938 00:44:03,390 --> 00:44:05,960 Tieni argument tagħha huwa pointer mal-lista nnifisha, sabiex a 939 00:44:05,960 --> 00:44:07,920 pointer għal node. 940 00:44:07,920 --> 00:44:10,350 >> All jien ser imbagħad tagħmel huwa jiddikjara varjabbli temporanja. 941 00:44:10,350 --> 00:44:12,730 Aħna ser sejħa hija ptr b'konvenzjoni, għall pointer. 942 00:44:12,730 --> 00:44:15,220 U jien tassenja ugwali għall- bidu tal-lista. 943 00:44:15,220 --> 00:44:16,680 >> U issa avviż-loop waqt. 944 00:44:16,680 --> 00:44:20,640 Sakemm pointer mhux ugwali li null, jien ser jiċċekkja. 945 00:44:20,640 --> 00:44:24,520 Huwa pointer n vleġġa ugwali għal n li kienet għaddiet? 946 00:44:24,520 --> 00:44:26,410 U stenna minuta - ġdida biċċa sintassi. 947 00:44:26,410 --> 00:44:29,324 X'inhu vleġġa kollha f'daqqa? 948 00:44:29,324 --> 00:44:30,574 Yeah? 949 00:44:30,574 --> 00:44:34,200 950 00:44:34,200 --> 00:44:34,810 >> Eżattament. 951 00:44:34,810 --> 00:44:38,860 Allura billi ftit minuti ilu, użajna l-dot notazzjoni għall-aċċess xi ħaġa 952 00:44:38,860 --> 00:44:43,080 ġewwa ta 'l-Struct, jekk il-varjabbli int mhux l-Struct 953 00:44:43,080 --> 00:44:47,420 innifsu, iżda pointer għal Struct, Thankfully, biċċa sintassi li 954 00:44:47,420 --> 00:44:48,620 finalment jagħmel sens intuwittivi. 955 00:44:48,620 --> 00:44:52,360 Il-vleġġa jfisser li jsegwu l-pointer, bħal vleġeġ tagħna tipikament ifisser 956 00:44:52,360 --> 00:44:56,570 pictorially, u jmorru fuq data kulħadd kemm ġewwa. 957 00:44:56,570 --> 00:44:59,700 Allura vleġġa huwa l-istess ħaġa bħat dot, iżda tużah meta jkollok pointer. 958 00:44:59,700 --> 00:45:05,270 >> Hekk biss biex terġa allura, jekk l-qasam n ġewwa tal-Struct imsejħa pointer 959 00:45:05,270 --> 00:45:07,760 ugwali ugwali n, ritorn vera. 960 00:45:07,760 --> 00:45:11,970 Inkella, din il-linja hawn - pointer ugwali pointer li jmiss. 961 00:45:11,970 --> 00:45:17,540 Allura dak li dan qed tagħmel, avviż, huwa jekk I am bħalissa tipponta lejn il-Struct 962 00:45:17,540 --> 00:45:21,430 fihom 9, u 9 mhuwiex in-numru I infittex - suppose I infittex 963 00:45:21,430 --> 00:45:22,830 għal n ugwali 50 - 964 00:45:22,830 --> 00:45:25,930 Jien ser taġġorna pointer temporanju tiegħi li jurux f'dan node 965 00:45:25,930 --> 00:45:31,190 aktar, iżda pointer vleġġa li jmiss, li se timplimenta me up here. 966 00:45:31,190 --> 00:45:34,270 >> Issa, I realizzati huwa whirlwind introduzzjoni. 967 00:45:34,270 --> 00:45:37,380 Nhar l-Erbgħa, aħna ser fil-fatt jagħmlu dan ma 'xi bnedmin u bi ftit aktar 968 00:45:37,380 --> 00:45:38,900 kodiċi b'pass kajman. 969 00:45:38,900 --> 00:45:42,990 Iżda realizzata, aħna qed issa qed data tagħna strutturi aktar kumplessi sabiex tagħna 970 00:45:42,990 --> 00:45:45,780 algoritmi tista 'tikseb aktar effiċjenti, li se tkun meħtieġa għall- 971 00:45:45,780 --> 00:45:50,500 pset sitt, meta aħna tagħbija, għal darb'oħra, dawk 150.000 kliem, iżda jeħtieġ li tagħmel hekk 972 00:45:50,500 --> 00:45:55,650 effiċjenti, u idealment, joħolqu programm li tmur għall-utenti tagħna ma 973 00:45:55,650 --> 00:46:00,460 lineari, mhux f'N kwadrat, iżda ħin kostanti, fil-ideal. 974 00:46:00,460 --> 00:46:02,300 >> Aħna ser tara inti nhar l-Erbgħa. 975 00:46:02,300 --> 00:46:07,240 >> SPEAKER: Fil-CS50 jmiss, David jinsa każ bażi tiegħu. 976 00:46:07,240 --> 00:46:12,770 >> DAVID Malan: U li kif inti tibgħat messaġġi bil C. X'inhu l - 977 00:46:12,770 --> 00:46:14,020 >> [MESSAĠĠ TEST VARJI NOTIFIKA Ħsejjes] 978 00:46:14,020 --> 00:46:19,734