1 00:00:00,000 --> 00:00:11,200 2 00:00:11,200 --> 00:00:12,580 >> DAVID MALAN: Ongi da, ongi etorria itzuli. 3 00:00:12,580 --> 00:00:13,290 Hau CS50 da. 4 00:00:13,290 --> 00:00:15,130 Aste honetan zazpi hasiera da. 5 00:00:15,130 --> 00:00:18,890 Beraz, pixka bat izan da, eta, beraz genuke pentsatu nuen hartuko dugu, non bira zurrunbilo bat 6 00:00:18,890 --> 00:00:20,760 utzi off non eta orain dugu. 7 00:00:20,760 --> 00:00:23,310 >> Gauza hori hemen, beraz, izan liteke eragindako larrimina batzuk lehen. 8 00:00:23,310 --> 00:00:27,680 Baina, zorionez, zaren hasten zer hau adierazten du hemen acclimate - 9 00:00:27,680 --> 00:00:32,670 Izar erakuslea, hau da, ordezkari zer gehiago layman en dagokionez? 10 00:00:32,670 --> 00:00:33,400 Beraz, helbide bat da. 11 00:00:33,400 --> 00:00:35,490 >> Beraz, helbide da memorian zerbait. 12 00:00:35,490 --> 00:00:38,260 Eta hasi berriro zuritu geruzak dugu aste pare bat lehenago, gauzak gustatzen 13 00:00:38,260 --> 00:00:41,800 GetString eta beste hainbat funtzio denbora honetan guztian izan dira itzuli 14 00:00:41,800 --> 00:00:46,010 memorian gauza helbideak, bezalako pertsonaia lehen helbide 15 00:00:46,010 --> 00:00:46,990 sekuentzia batzuk. 16 00:00:46,990 --> 00:00:50,360 >> Beraz, sartu valgrind ere egiten dugu, eta horrek hasteko arazo hau erabili beharko duzu 17 00:00:50,360 --> 00:00:53,380 ezartzeko eta, bereziki, hurrena Arazo ezarri baita. 18 00:00:53,380 --> 00:00:54,980 Eta valgrind du guretzat? 19 00:00:54,980 --> 00:00:57,520 20 00:00:57,520 --> 00:01:01,020 Memoria filtrazioen egiaztatzen da, eta hura Era berean, memoria gehiegikeria begiratzen du. 21 00:01:01,020 --> 00:01:05,890 >> , Ezin da probabilitate batzuk, detektatzen bada Zure kodea da memoria ukitzeko joan 22 00:01:05,890 --> 00:01:07,100 besterik ez da behar ez. 23 00:01:07,100 --> 00:01:10,410 Beraz, ez isuri bat izan behar, baina bada batzuetan mugak haratago joan 24 00:01:10,410 --> 00:01:14,730 array, eta exekutatu benetan Valgrind bultzatu eta portaera duten bitartean 25 00:01:14,730 --> 00:01:17,870 valgrind da zure programa da exekutatzen horren barruan exekutatzen, izango duzu 26 00:01:17,870 --> 00:01:21,460 Halako mezuak - "baliogabea idatzi tamaina 4, "hori, gogoratzen bikote baten 27 00:01:21,460 --> 00:01:25,880 duela esan nahi izan nuen nahi gabe ko int gustatzen urrunegi 28 00:01:25,880 --> 00:01:27,250 array bat mugetatik haratago. 29 00:01:27,250 --> 00:01:30,790 Eta, beraz, tamaina 4 esan nahi hemen tamaina jakin int. 30 00:01:30,790 --> 00:01:35,260 >> Beraz, hartu reassurance Izan ere, hori valgrind irteera da, formatua, 31 00:01:35,260 --> 00:01:36,170 atrocious besterik ez da. 32 00:01:36,170 --> 00:01:40,180 Benetan zaila da nahastea bidez ikusi interesgarria den informazioa. 33 00:01:40,180 --> 00:01:42,910 Beraz, zer egin dugu hemen laburpena besterik ez da gehiago pare batzuk 34 00:01:42,910 --> 00:01:43,850 interesgarri lerroak. 35 00:01:43,850 --> 00:01:46,760 Baina konturatzen 80 valgrind en duen% irteera bat pixka bat izango 36 00:01:46,760 --> 00:01:47,650 distrazio. 37 00:01:47,650 --> 00:01:52,820 >> Just horrelako ereduak bila - baliogabea eskubidea, baliogabea irakurri, 40 byte 38 00:01:52,820 --> 00:01:56,690 eta bloke kopuru batzuk dira, zalantzarik gabe, galduko duten bezala, gako-hitzak. 39 00:01:56,690 --> 00:02:01,920 Eta zer espero ikusiko dituzu batzuk zer funtzioaren aztarna mota 40 00:02:01,920 --> 00:02:03,340 akatsa da benetan sartu 41 00:02:03,340 --> 00:02:07,195 Kasu honetan, hemen, zer lerro batean nire kodea error zen itxuraz? 42 00:02:07,195 --> 00:02:09,729 43 00:02:09,729 --> 00:02:14,130 >> Izeneko fitxategia memory.c, hau da, 26 Esate batera egon ginen jolasten 44 00:02:14,130 --> 00:02:14,890 garai hartan. 45 00:02:14,890 --> 00:02:16,460 Beraz, seguruenik ez malloc batean. 46 00:02:16,460 --> 00:02:18,630 Ziurrenik zen nire kodearen ordez. 47 00:02:18,630 --> 00:02:20,910 Beraz, honetan ikusiko dugu berriro eta berriro luze baino lehen. 48 00:02:20,910 --> 00:02:24,080 >> Scanf Horrela sortu zen batean forma, beraz, orain arte pare. 49 00:02:24,080 --> 00:02:26,410 Sscanf ikusi dugu labur-labur. 50 00:02:26,410 --> 00:02:28,330 Zerbait zenbaki bat izan zen sartu atean sartu duzu zure 51 00:02:28,330 --> 00:02:29,535 egiteko galdetegiaren prestakinak. 52 00:02:29,535 --> 00:02:33,130 Eta scanf da benetan zer CS50 liburutegia izan da azpian erabiliz 53 00:02:33,130 --> 00:02:36,560 ahalik eta denbora luzez kanpaia sarrera lortzeko erabiltzaileari. 54 00:02:36,560 --> 00:02:40,420 >> Esate baterako, mugitu ditut bada CS50 tresnaren hemen, let me ireki bat 55 00:02:40,420 --> 00:02:45,315 Adibidez, gaur egun deitzen scanf-0.c Eta super erraza da. 56 00:02:45,315 --> 00:02:46,590 Besterik ez da kode lerro batzuk. 57 00:02:46,590 --> 00:02:50,880 Baina benetan erakusten du nola getInt izan da denbora honetan guztian lanean. 58 00:02:50,880 --> 00:02:54,710 >> Programa honetan, hemen, 16 lerro batean Oharrean adierazten dugu dut int bat. 59 00:02:54,710 --> 00:02:57,270 Erakusleak ez, beraz, ez da ezer magikoa ez dago, besterik gabe, int bat. 60 00:02:57,270 --> 00:03:00,330 Ondoren, linea 17, galdetuko dut zenbaki bat erabiltzaile, mesedez. 61 00:03:00,330 --> 00:03:02,930 Ondoren, 18 urtearen amaieran, scanf erabili dut hemen. 62 00:03:02,930 --> 00:03:06,910 Eta nik zehaztu, mota printf bezala, dut aurrekontua espero 63 00:03:06,910 --> 00:03:08,110 unquote ehuneko i. 64 00:03:08,110 --> 00:03:10,920 >> Berea izan dut, beraz, noski, int bat adierazten du. 65 00:03:10,920 --> 00:03:14,580 Baina zer nabarituko bigarren scanf argumentua behar da. 66 00:03:14,580 --> 00:03:17,350 Nola litzateke bigarren deskribatzeko duzu koma ondoren argumentua? 67 00:03:17,350 --> 00:03:19,450 Zer da hori? 68 00:03:19,450 --> 00:03:20,670 >> X helbidea da. 69 00:03:20,670 --> 00:03:25,490 Beraz, hau da, erabilgarria delako eskainiz x-en helbide scanf, zer ez 70 00:03:25,490 --> 00:03:29,560 indarra ematen dutela funtzio hori egin? 71 00:03:29,560 --> 00:03:33,010 Ez bakarrik joaten, baina, halaber, zer egin? 72 00:03:33,010 --> 00:03:34,060 >> Egin nahi du aldaketa bat. 73 00:03:34,060 --> 00:03:38,080 Ez duzu joan ahal izango delako, Ordena da memoriaren kokaleku bat, mapa batean bezala. 74 00:03:38,080 --> 00:03:41,900 Eta hainbeste denbora ematen duzu scanf bezala, edo mapa bat, besteak beste, duten funtzio 75 00:03:41,900 --> 00:03:45,840 funtzioa ez joan ahal izango da, eta ez bakarrik balioa begiratu, baina, halaber, ahal 76 00:03:45,840 --> 00:03:49,670 aldatzeko balio du, hau da, erabilgarria bada scanf bizitzaren helburua da 77 00:03:49,670 --> 00:03:53,060 eskaneatu input erabiltzaileari, zehazki teklatuaren bidez. 78 00:03:53,060 --> 00:03:57,830 Eta f adierazten formatuko bezala printf, f adierazten formatuko bat 79 00:03:57,830 --> 00:03:58,930 katea nahi duzun inprimatzeko. 80 00:03:58,930 --> 00:04:04,430 >> Beraz, azken finean, 18 lerro hau, besterik gabe, esaten du, saiatu Erabiltzaile batetik int bat irakurtzeko 81 00:04:04,430 --> 00:04:10,420 teklatua eta gorde x barruan, at edozein dela ere x helbidea gertatzen bizi da. 82 00:04:10,420 --> 00:04:14,860 Eta gero, azkenik, linea 19 besterik ez dio, for int esker, kasu honetan. 83 00:04:14,860 --> 00:04:15,940 >> Beraz, aurrera eta niri hau egiteko. 84 00:04:15,940 --> 00:04:18,570 Beraz, scanf 0. 85 00:04:18,570 --> 00:04:20,130 Dezagun aurrera me eta zoom sartu 86 00:04:20,130 --> 00:04:22,960 Joan naiz eta hau exekutatu dituzten Puntuak barra scanf 0. 87 00:04:22,960 --> 00:04:24,020 Zenbakia, mesedez? 88 00:04:24,020 --> 00:04:24,720 50. 89 00:04:24,720 --> 00:04:25,730 50 Eskerrik asko. 90 00:04:25,730 --> 00:04:27,270 Beraz, oso erraza da. 91 00:04:27,270 --> 00:04:28,160 >> Orain zer egiten ari da, ezta? 92 00:04:28,160 --> 00:04:29,940 Ez da osoa sorta bat egiten ari error egiaztatzea. 93 00:04:29,940 --> 00:04:33,000 Esate baterako, ez badut lankidetzan aritzea, eta ez dut zenbaki bat idatzi, baina 94 00:04:33,000 --> 00:04:37,860 ordez bezala "kaixo", zerbait idazten dut Hori besterik bitxi mota. 95 00:04:37,860 --> 00:04:41,130 Eta, beraz, gauza da CS50 bat liburutegia izan da guretzat batzuk egiten 96 00:04:41,130 --> 00:04:43,440 denbora reprompting dela eta reprompting. 97 00:04:43,440 --> 00:04:49,320 >> Berriro saiatzeko Esaldi abisuaren cs50.c izan zen, eta hori da arrazoia getInt hori da 98 00:04:49,320 --> 00:04:51,670 CS50 liburutegia da benetan, oro har, lerro sorta, Oraindik dugulako 99 00:04:51,670 --> 00:04:53,190 horrelako zerbait ergelak egiaztapena. 100 00:04:53,190 --> 00:04:55,730 Ba, erabiltzaileak ez du ematen digu, hain zuzen ere, int bat? 101 00:04:55,730 --> 00:04:57,910 Ba berak ematen digu zerbait alfabetikoa gutun bezala? 102 00:04:57,910 --> 00:05:01,410 Horrela bada, antzemateko nahi dugu eta hori, horietan, yell. 103 00:05:01,410 --> 00:05:03,915 >> Baina gauzak gehiago interesgarria Adibidez, hurrengo hau ere. 104 00:05:03,915 --> 00:05:09,840 To scanf-1.c dut joan bada, zer da Gauza hori, funtsean, aldatu in 105 00:05:09,840 --> 00:05:11,135 Adibidez, hurrengo hau? 106 00:05:11,135 --> 00:05:13,690 107 00:05:13,690 --> 00:05:16,010 Char * erabiltzen ari naiz, jakina, ordez int. 108 00:05:16,010 --> 00:05:19,210 >> Beraz, hau da, interesgarria, char * delako, gogoratzen, benetan besterik 109 00:05:19,210 --> 00:05:20,190 kate bat bezala, gauza bera. 110 00:05:20,190 --> 00:05:23,840 Beraz, agian atsegin hau da super bat sentitzen da GetString ezartzea erraza da. 111 00:05:23,840 --> 00:05:26,010 Baina zuritu dut atzera geruza CS50 liburutegia, naiz eta, beraz, 112 00:05:26,010 --> 00:05:27,550 char * honetan deituz orain. 113 00:05:27,550 --> 00:05:30,070 Beraz, ikus dezagun non, edonon bada, gaizki joan gara. 114 00:05:30,070 --> 00:05:30,840 >> Line 17 - 115 00:05:30,840 --> 00:05:33,950 Esan nuen, berriro ere, mesedez, eman dit zerbait, Kasu honetan, katea. 116 00:05:33,950 --> 00:05:37,940 Eta, ondoren, hurrengo lerroan, scanf deitu dut, berriro ere, emanez formatuan kode bat, 117 00:05:37,940 --> 00:05:39,310 baina hau denbora ehuneko s. 118 00:05:39,310 --> 00:05:41,900 Eta, ondoren, garai honetan, nago buffer emanez. 119 00:05:41,900 --> 00:05:43,550 >> Orain konturatu, ez dut erabiltzen & ikurrak dira. 120 00:05:43,550 --> 00:05:47,120 Baina zergatik da hori, seguruenik, OK hemen? 121 00:05:47,120 --> 00:05:49,760 Zer buffer delako dagoeneko? 122 00:05:49,760 --> 00:05:50,770 Dagoeneko da erakuslea. 123 00:05:50,770 --> 00:05:51,650 Dagoeneko ez da helbide bat. 124 00:05:51,650 --> 00:05:54,510 >> Eta dezagun hitz hau "nahastea", let me deitu besterik ez da, adibidez, for 125 00:05:54,510 --> 00:05:55,050 sinpletasuna. 126 00:05:55,050 --> 00:05:58,250 Baina deitzen dut bufferrerako delako Oro har, programazioan, zuk bada 127 00:05:58,250 --> 00:06:02,130 memoria zatia, eta horrek kate bat benetan besterik ez da, deitu bufferrean dezakezu. 128 00:06:02,130 --> 00:06:04,460 Leku bat, informazioa gordetzeko da. 129 00:06:04,460 --> 00:06:07,400 >> To YouTube, denean bezala, antzeko gauzak , moteltzeko ari dira nolabait esateko, hori 130 00:06:07,400 --> 00:06:10,270 besterik esan nahi bit da deskargatzea Internet eta horiek gordetzeko batean 131 00:06:10,270 --> 00:06:14,160 tokiko array, memoria zatia, beraz, tokiko dela ikusi ahal izango duzu, geroago gabe 132 00:06:14,160 --> 00:06:16,830 saltatzea edo bertan zintzilik atzera jotzen ari diren bitartean. 133 00:06:16,830 --> 00:06:20,930 >> Beraz, ez da arazo bat dago hemen, nahiz eta, dut scanf delako kontatzea, espero 134 00:06:20,930 --> 00:06:22,320 Erabiltzaile kate. 135 00:06:22,320 --> 00:06:24,410 Hemen helbide da memoria zatia da. 136 00:06:24,410 --> 00:06:26,180 Jarri katea dagoela. 137 00:06:26,180 --> 00:06:31,230 Zergatik lotu ematen , arazoak izan arren gurekin? 138 00:06:31,230 --> 00:06:33,490 >> Zer da hori? 139 00:06:33,490 --> 00:06:35,510 AM sartzeko onartzen dut memoria zati hori? 140 00:06:35,510 --> 00:06:36,250 Badakizu, ez dakit. 141 00:06:36,250 --> 00:06:39,210 Buffer izan da hasieratu delako ezer? 142 00:06:39,210 --> 00:06:39,820 Ez da benetan. 143 00:06:39,820 --> 00:06:43,090 Eta, beraz, zer egin dugu deituz da bat zabor-balioa, eta horrek 144 00:06:43,090 --> 00:06:44,040 ez da hitz formal bat. 145 00:06:44,040 --> 00:06:49,200 Esan nahi du, besterik gabe, ideia ez dago zer bit dugu barruan lau byte horren 146 00:06:49,200 --> 00:06:51,240 Buffer jo dut egotzitako. 147 00:06:51,240 --> 00:06:52,450 >> Ez dut deitu malloc. 148 00:06:52,450 --> 00:06:53,940 Nik, zalantzarik gabe, ez da deitzen GetString. 149 00:06:53,940 --> 00:06:56,380 Beraz, nork daki zer den benetan buffer barruan? 150 00:06:56,380 --> 00:07:00,550 Eta oraindik scanf kontatzea blindly, joaten jarri eta edozein dela ere, erabiltzaileak idatzitako. 151 00:07:00,550 --> 00:07:04,460 >> Beraz, zer da seguru asko sor gure kodea exekutatzeko badugu? 152 00:07:04,460 --> 00:07:05,700 Beharbada segfault. 153 00:07:05,700 --> 00:07:07,970 Agian ez, baina beharbada segfault. 154 00:07:07,970 --> 00:07:10,620 Eta esan dut, agian, ez delako, batzuetan, , egiten duzu, batzuetan, 155 00:07:10,620 --> 00:07:11,380 ez duzu get segfault. 156 00:07:11,380 --> 00:07:14,280 Batzuetan, lortu besterik ez duzu zortea, baina hala ere, da izango 157 00:07:14,280 --> 00:07:15,340 gure programaren akats bat. 158 00:07:15,340 --> 00:07:17,060 >> Hargatik aurrera dit eta hori biltzeko. 159 00:07:17,060 --> 00:07:18,280 Da eskola zaharra bidea egin behar dut. 160 00:07:18,280 --> 00:07:23,825 Clang etenaren 0 scanf-1, beraz, scanf-1.c, Sartu. 161 00:07:23,825 --> 00:07:24,720 Ene, zaharregia eskola. 162 00:07:24,720 --> 00:07:26,550 Ikus dezagun. 163 00:07:26,550 --> 00:07:28,440 Nora jo behar dut? 164 00:07:28,440 --> 00:07:29,700 Oh, char * bufferra. 165 00:07:29,700 --> 00:07:33,595 166 00:07:33,595 --> 00:07:35,130 Oh, eskerrik asko - 167 00:07:35,130 --> 00:07:36,930 Gorde, OK - 168 00:07:36,930 --> 00:07:37,690 Oso zaharrak eskola. 169 00:07:37,690 --> 00:07:38,900 Guztiak eskubidea, nik, berriz, bat izan da. 170 00:07:38,900 --> 00:07:41,720 >> Beraz, ez dut gorde fitxategia ondoren Aldi baterako egiten duten 171 00:07:41,720 --> 00:07:42,700 aldatzeko unea dela. 172 00:07:42,700 --> 00:07:46,090 Eta orain, konpilatu dut eskuz Clang batera. 173 00:07:46,090 --> 00:07:49,500 Eta orain aurrera noa eta exekutatu scanf-1, Sartu. 174 00:07:49,500 --> 00:07:50,290 Katea mesedez. 175 00:07:50,290 --> 00:07:51,600 Urtean idatzi dut "kaixo". 176 00:07:51,600 --> 00:07:54,070 >> Eta orain, hemen, non da, sinceramente, printf ahal izango da, apur bat gogaikarriak. 177 00:07:54,070 --> 00:07:56,020 Ez da benetan joan kasu honetan segfault. 178 00:07:56,020 --> 00:07:59,860 Printf da apur bat berezia duelako beraz, super da gehien erabiltzen duten 179 00:07:59,860 --> 00:08:03,570 funtsean printf egiten ari da alde bat gaitu, eta konturatu, 180 00:08:03,570 --> 00:08:04,830 hori ez da baliozko erakuslea. 181 00:08:04,830 --> 00:08:09,080 Let eraman ninduen neure burua besterik gainean inprimatu Parentesi null kanpo, nahiz 182 00:08:09,080 --> 00:08:13,340 da, baina ez nahitaez, zer espero dugu gure burua. 183 00:08:13,340 --> 00:08:16,940 >> Beraz, ezin dugu benetan erraz bat bultzatu segfault honekin, baina argi eta garbi honetan 184 00:08:16,940 --> 00:08:18,600 ez da portaera nahi nuen. 185 00:08:18,600 --> 00:08:19,800 Beraz, zer irtenbide sinplea da? 186 00:08:19,800 --> 00:08:25,650 Beno, scanf-2n, let me proposatzen ordez, benetan besterik esleitzean 187 00:08:25,650 --> 00:08:30,100 char *, utzi pixka bat azkarragoa izan niri buruz honetan, eta utzi bufferra esleitu me 188 00:08:30,100 --> 00:08:32,940 16 karaktere-sekuentzia bat. 189 00:08:32,940 --> 00:08:34,200 >> Beraz, hori egin ahal izango dut modu pare bat. 190 00:08:34,200 --> 00:08:35,610 Erabat ezin dut erabili malloc. 191 00:08:35,610 --> 00:08:38,980 Baina joan naiz, astean bi denean Beharrezko dut osoa sorta baten 192 00:08:38,980 --> 00:08:39,620 karaktereak. 193 00:08:39,620 --> 00:08:40,860 Hori besterik array bat. 194 00:08:40,860 --> 00:08:44,870 Hargatik birdefinitu ordez me buffer 16 karaktere array bat izango da. 195 00:08:44,870 --> 00:08:47,340 >> Eta orain, buffer pasatzen dut - 196 00:08:47,340 --> 00:08:49,940 Eta hori ez dugu hitz aste bi - 197 00:08:49,940 --> 00:08:53,730 baina array gisa tratatzeko dezakezu da helbide bat ere. 198 00:08:53,730 --> 00:08:56,390 Teknikoki, ikusi dugun bezala, dute Oraindik pixka bat desberdina da. 199 00:08:56,390 --> 00:09:01,290 Scanf, baina ez du axola pasatzen baduzu array bat du izena, izan ere, zer 200 00:09:01,290 --> 00:09:05,030 Clang da guretzat, funtsean, eman egingo tratatzen du array horren izen gisa 201 00:09:05,030 --> 00:09:08,280 16 byte zatia helbidea. 202 00:09:08,280 --> 00:09:09,550 >> Beraz, hau da, hobeto. 203 00:09:09,550 --> 00:09:12,110 Horrek esan nahi du orain, espero dut hori egin honako hau. 204 00:09:12,110 --> 00:09:16,800 Let me zooma une batez eta do egin scanf-2, konpilatu Ados. 205 00:09:16,800 --> 00:09:19,390 Orain lortu ez dit barra scanf-2. 206 00:09:19,390 --> 00:09:22,430 Katea mesedez. "Kaixo". Eta hura zirudien, une honetan lan egiteko. 207 00:09:22,430 --> 00:09:26,020 >> Baina norbaitek proposatzen eszenatoki bat horretan, agian ez da oraindik lan? 208 00:09:26,020 --> 00:09:28,550 Bai? 209 00:09:28,550 --> 00:09:30,640 Zerbait 16 karaktere baino luzeagoa. 210 00:09:30,640 --> 00:09:32,020 Eta egia esan, izan dezakegu pixka bat zehatzago. 211 00:09:32,020 --> 00:09:36,540 Jada, ondoren, 15 karaktere zerbait, benetan kontuan hartu behar dugulako 212 00:09:36,540 --> 00:09:39,920 behar dugun hori backslash zero inplizituki katearen amaieran, 213 00:09:39,920 --> 00:09:42,950 hau da, alde batera scanf bat normalean hartu Gurekin zaintzen. 214 00:09:42,950 --> 00:09:46,210 >> Beraz, zerbait egin zidan - 215 00:09:46,210 --> 00:09:48,040 batzuetan besterik ezin dugu utzi duten bezala. 216 00:09:48,040 --> 00:09:50,630 OK, beraz, gaur egun dugun eragindako gure segmentaziuo hutsegitea. 217 00:09:50,630 --> 00:09:51,000 Zergatik? 218 00:09:51,000 --> 00:09:54,940 Baino gehiago 15 dut ondo idatzi delako pertsonaiak, eta, beraz, benetan dugu 219 00:09:54,940 --> 00:09:58,280 ukitu memoria dut benetan ez dute. 220 00:09:58,280 --> 00:10:00,180 >> Beraz, zer da benetan konponbidea hemen? 221 00:10:00,180 --> 00:10:02,210 Beno, zer egin behar dugu, jada kate bat bada? 222 00:10:02,210 --> 00:10:03,960 Beno, agian egin dugu 32 byte. 223 00:10:03,960 --> 00:10:05,160 Beno, hori ez da nahikoa luzea bada? 224 00:10:05,160 --> 00:10:06,040 Nola 64 byte buruz? 225 00:10:06,040 --> 00:10:07,080 Zer ez da hori nahikoa luzea bada? 226 00:10:07,080 --> 00:10:09,640 Nola 128 edo 200 byte? 227 00:10:09,640 --> 00:10:12,660 Benetan konponbidea hemen dago kasu orokorra, ez badugu ezagutzen 228 00:10:12,660 --> 00:10:14,460 aurrera zer erabiltzailearen idazten da? 229 00:10:14,460 --> 00:10:20,000 230 00:10:20,000 --> 00:10:23,050 >> Besterik atzetik ematen mina handi bat mota da, zintzoa izan behar du, eta horregatik 231 00:10:23,050 --> 00:10:29,050 CS50 liburutegia du pare bat dozena lerro kodea duten kolektiboki ezartzea 232 00:10:29,050 --> 00:10:32,390 Katea GetString modu bat ez ditugun in dute aldez aurretik zein 233 00:10:32,390 --> 00:10:33,430 Erabiltzaileak idatzi du. 234 00:10:33,430 --> 00:10:37,370 Bereziki, begiratu baduzu atzera cs50.c duela bi aste batetik, ikusiko duzu 235 00:10:37,370 --> 00:10:40,480 GetString benetan egiten Ez erabili scanf modu honetan. 236 00:10:40,480 --> 00:10:43,720 Baizik eta, karaktere bat irakurtzen du aldi berean. 237 00:10:43,720 --> 00:10:46,010 >> Bat buruz gauza polita delako karaktere bat irakurtzen ahal da 238 00:10:46,010 --> 00:10:48,490 bermatzeko geure burua beti gutxienez karaktere. 239 00:10:48,490 --> 00:10:51,740 Besterik ezin dut deklaratzeko karaktere bat, eta gero hartu besterik urrats horiek benetan haurra 240 00:10:51,740 --> 00:10:54,380 irakurri karaktere bat batean hasi teklatua denbora. 241 00:10:54,380 --> 00:10:58,240 Eta gero, zer GetString ikusiko duzu ez du denbora behin jotzea da, 242 00:10:58,240 --> 00:11:02,280 esan, 16 memoria byte, erabiltzen malloc, edo haren lehengusu bat, 243 00:11:02,280 --> 00:11:06,810 esleitu memoria gehiago, zaharrak kopiatzen berria, eta ondoren arakatzeko sartu memoria 244 00:11:06,810 --> 00:11:09,900 batera, pertsonaia bat lortzean, garai hartan, eta orduan exekutatzen da horren 245 00:11:09,900 --> 00:11:13,370 memoria zatia, botatzen da, urruti, ase memoria zatia handiagoa da, kopiatzen zaharrak 246 00:11:13,370 --> 00:11:14,750 berriak eta errepikatzen da. 247 00:11:14,750 --> 00:11:18,480 Eta benetan da mina benetan ezartzeko zerbait bezain sinplea 248 00:11:18,480 --> 00:11:19,710 Erabiltzaile bat sarrera lortzeko. 249 00:11:19,710 --> 00:11:21,090 >> Beraz scanf erabili ahal izango dituzu. 250 00:11:21,090 --> 00:11:22,430 Antzeko beste funtzioak erabili ahal izango duzu. 251 00:11:22,430 --> 00:11:25,420 Eta testuliburu asko eta online adibideak, baina guztiak dira 252 00:11:25,420 --> 00:11:27,210 horrela, arazo aurrean. 253 00:11:27,210 --> 00:11:29,550 Eta, azken finean, ohitu bat segfault da nolako gogaikarriak dira. 254 00:11:29,550 --> 00:11:30,680 Ez da erabiltzailea ona. 255 00:11:30,680 --> 00:11:33,560 >> Baina txarrena gero, zer funtsean, jarri zure 256 00:11:33,560 --> 00:11:37,160 arriskua at kodea? 257 00:11:37,160 --> 00:11:39,250 Zenbait eraso mota, potentzialki. 258 00:11:39,250 --> 00:11:41,680 Hitz egin zuen, besteak beste, eraso bat gara - pila gainezka. 259 00:11:41,680 --> 00:11:44,660 Baina, oro har, zu bada onartzen gainezkatzea buffer bat, bezala dugu 260 00:11:44,660 --> 00:11:48,070 aste pare duela, besterik gabe, idazten dituzten gehiago "kaixo" baino pilan, duzu 261 00:11:48,070 --> 00:11:52,330 daitezke, hain zuzen ere, hartu baino gehiago, seguru asko, bat ordenagailua, edo, gutxienez, datuak at lortu 262 00:11:52,330 --> 00:11:53,510 ez du zurea. 263 00:11:53,510 --> 00:11:55,970 >> Beraz, azken batean, hau da, zergatik dugu prestakuntza gurpilak ere. 264 00:11:55,970 --> 00:11:59,090 Baina orain, eraman off hasiko gara, gure programak jada ez da behar bezala, 265 00:11:59,090 --> 00:12:00,610 nahitaez, erabiltzailearen sarrera. 266 00:12:00,610 --> 00:12:03,960 Baina arazoa kasuan ezar sei, Zure sarrera egingo erraldoi bat etorriko 267 00:12:03,960 --> 00:12:07,520 hiztegi 150 fitxategi batzuk bakoitiak mila hitz. 268 00:12:07,520 --> 00:12:10,330 >> Beraz, ez duzu kezkatu erabiltzailearen arbitrarioak sarrera. 269 00:12:10,330 --> 00:12:13,720 Ematen dizugu hipotesi batzuk fitxategi hori buruz. 270 00:12:13,720 --> 00:12:20,340 Erakusleak edo scanf buruzko edozein galdera Erabiltzaile edo, oro har, sarrera? 271 00:12:20,340 --> 00:12:24,450 >> Ondo da, beraz, azkar bat, gero, itxura batean Gai amaierako duela bi aste batetik. 272 00:12:24,450 --> 00:12:28,590 Eta hori egitura baten nozioa izan da. 273 00:12:28,590 --> 00:12:34,180 Ez dagoela - a nozioa egitura, hain zuzen, eta zer? 274 00:12:34,180 --> 00:12:35,430 Zer egitura Gurekin egin nahi duzu? 275 00:12:35,430 --> 00:12:39,280 276 00:12:39,280 --> 00:12:39,860 >> Define - 277 00:12:39,860 --> 00:12:41,710 sentitzen? 278 00:12:41,710 --> 00:12:42,820 Define aldagai mota bat. 279 00:12:42,820 --> 00:12:44,410 Beraz ordenatzeko. 280 00:12:44,410 --> 00:12:46,180 Benetan ari gara bi gai konbinatuz. 281 00:12:46,180 --> 00:12:49,510 Beraz typedef batera, gogora ekarri dugun deklaratzeko geure mota bat, bezalako 282 00:12:49,510 --> 00:12:51,500 sinonimo, * karaktere kate bezala. 283 00:12:51,500 --> 00:12:56,200 Baina typedef eta struct erabiliz, dugu sortu benetan gure datuen egiturak. 284 00:12:56,200 --> 00:12:59,600 >> Esate baterako, joan nintzen atzera gedit sartu Hemen, besterik gabe, une batez, eta aurrera joaten naiz 285 00:12:59,600 --> 00:13:08,230 eta zerbait bezala, let me gorde honen ondorioz, esan dezagun, structs.c 286 00:13:08,230 --> 00:13:10,840 aldi baterako, besterik ez naiz aurrera eta, besteak beste, 287 00:13:10,840 --> 00:13:14,360 standardio.h, int hutsune nagusia. 288 00:13:14,360 --> 00:13:18,960 Eta gero, hemen, eman dezagun nahi dut programa bat gordetzen duten idazteko 289 00:13:18,960 --> 00:13:21,840 hainbat ikasle anitz etxeak, adibidez. 290 00:13:21,840 --> 00:13:24,430 Hain da registrarial bezala Nolabaiteko datu-basea. 291 00:13:24,430 --> 00:13:29,550 >> Hala bada, izena, ikasle batek behar dut zerbait egin liteke * char izena bezala, 292 00:13:29,550 --> 00:13:31,570 eta zerbait egin dut bezala - 293 00:13:31,570 --> 00:13:34,410 benetan, dezagun erabili CS50 liburutegian besterik gabe, une honetan bat egin 294 00:13:34,410 --> 00:13:38,380 pixka bat errazagoa da, beraz, maileguan hartu ahal izango dugu kode lerro dozenaka horiek. 295 00:13:38,380 --> 00:13:39,340 Eta dezagun, besterik gabe, gorde simple. 296 00:13:39,340 --> 00:13:42,610 Gorde katea dugu, eta orain GetString. 297 00:13:42,610 --> 00:13:47,420 >> Beraz, orain aldarrikatzen dut ditudan gordetako izena ikaslearen batzuk, eta etxe baten 298 00:13:47,420 --> 00:13:50,240 ikaslearen batzuk, besterik gabe, aldagai erabiliz genuen bezala, eta aste batean. 299 00:13:50,240 --> 00:13:52,370 Baina demagun orain nahi dut onartzen anitz ikasleak. 300 00:13:52,370 --> 00:13:58,460 Guztiak eskubidea, beraz, nire senak dira egin katea izena2, GetString, katea lortzen 301 00:13:58,460 --> 00:14:01,370 house2 lortzen GetString. 302 00:14:01,370 --> 00:14:05,850 Eta gero, gure hirugarren ikaslea, dezagun NAME3 GetString. 303 00:14:05,850 --> 00:14:09,170 >> Ondo da, beraz, hau da, espero deigarria ergel mota duzun bezala, 304 00:14:09,170 --> 00:14:11,580 Prozesu hau da, benetan, inoiz ez delako Amaierara joan dira, eta besterik ez da joan 305 00:14:11,580 --> 00:14:13,130 nire kodea itxura okerragoa eta okerragoa eta okerragoa. 306 00:14:13,130 --> 00:14:14,810 Baina hau konpondu dugu gehiegi astean bitan. 307 00:14:14,810 --> 00:14:19,450 Zein izan da gure nahiko garbi konponbidea denean aldagai bat baino gehiago izan genuen 308 00:14:19,450 --> 00:14:23,580 berean datu-mota guztiak daudela lotuta, baina ez dugu nahi atrocious nahaspila honetan 309 00:14:23,580 --> 00:14:26,870 aldagai antzera izendatzen? 310 00:14:26,870 --> 00:14:30,060 Zer egin ordez egiten dugu? 311 00:14:30,060 --> 00:14:31,260 >> Beraz, toki gutxi entzun dudala uste dut. 312 00:14:31,260 --> 00:14:32,590 Array bat izan genuen. 313 00:14:32,590 --> 00:14:37,110 Nahi duzun instantzia bat baino gehiago baldin zerbait, zergatik ez hau guztia garbitu dugu 314 00:14:37,110 --> 00:14:39,540 sortu, eta besterik esan, ematen dit array izeneko izenak? 315 00:14:39,540 --> 00:14:41,640 >> Eta orain, goazen gogor kodea 3. 316 00:14:41,640 --> 00:14:44,450 Eta, ondoren, ematen dit beste array izeneko etxeak, eta niri eman dezagun 317 00:14:44,450 --> 00:14:45,800 orain gogor kodea 3. 318 00:14:45,800 --> 00:14:49,220 Eta masiboki Nik garbitu du mezurik besterik ez dut sortu. 319 00:14:49,220 --> 00:14:52,400 Orain, oraindik ez dut gogor kodetuta 3, baina are 3 izan dinamikoki datoz 320 00:14:52,400 --> 00:14:54,350 Erabiltzaileak, edo argv, edo antzekoak. 321 00:14:54,350 --> 00:14:55,720 Beraz, hau da, dagoeneko garbitzailea. 322 00:14:55,720 --> 00:15:00,100 >> Baina zer da hau buruzko gogaikarriak da orain, nahiz eta izen hori nolabait 323 00:15:00,100 --> 00:15:02,280 funtsean, lotuta Ikasle baten etxea - 324 00:15:02,280 --> 00:15:04,720 Ikasle bat dut benetan nahi irudikatzeko - 325 00:15:04,720 --> 00:15:08,080 Gaur egun bi multzo direla paraleloan Zentzu ari dira parte 326 00:15:08,080 --> 00:15:13,930 tamaina bera, eta izen-tarte 0 ustez etxe tarte 0 mapak, 327 00:15:13,930 --> 00:15:16,600 eta izenak parentesi 1 mapak etxe tarte 1. 328 00:15:16,600 --> 00:15:19,280 Bestela esanda, ikasleari bizitza etxea, eta beste ikasleari 329 00:15:19,280 --> 00:15:20,530 duten beste etxe bizitza. 330 00:15:20,530 --> 00:15:23,720 Baina ziur aski hori izan egin, are gehiago garbi. 331 00:15:23,720 --> 00:15:24,990 >> Beno, izan daiteke, hain zuzen ere. 332 00:15:24,990 --> 00:15:28,730 Eta utzi aurrera me eta ireki structs.h, eta ikusiko duzu 333 00:15:28,730 --> 00:15:31,130 ikusteko ideia hori hemen. 334 00:15:31,130 --> 00:15:34,905 Iragarki ditudan typedef erabiltzen da, zure une bat aipatu duela deklaratzen gure 335 00:15:34,905 --> 00:15:35,570 datu-mota egin. 336 00:15:35,570 --> 00:15:39,660 Baina, halaber, naiz beste hitz hori erabiliz izeneko egitura ematen dit berri bat 337 00:15:39,660 --> 00:15:40,790 Datuen egitura. 338 00:15:40,790 --> 00:15:43,980 >> Eta datu-egitura dut erreklamazioa joan bi gauza izan behar du barruan 339 00:15:43,980 --> 00:15:47,060 it - izeneko izen kate bat, eta izeneko etxea katea. 340 00:15:47,060 --> 00:15:49,820 Eta izena joan naiz emateko Datuen egitura hori joan 341 00:15:49,820 --> 00:15:51,005 deitu behar da ikaslea. 342 00:15:51,005 --> 00:15:54,030 Deitu dut, ezin dut ezer nahi, baina hori semantikoki egin 343 00:15:54,030 --> 00:15:55,810 me susma nire gogoan. 344 00:15:55,810 --> 00:15:59,160 >> Beraz, orain, ireki nuen hobe bertsio bat Programaren idazten hasi nintzen 345 00:15:59,160 --> 00:16:00,390 ez, utzi mugitzeko goiko me. 346 00:16:00,390 --> 00:16:03,190 Eta ez da gehiago kode lerro hemen, baina utzi niri fokua eman 347 00:16:03,190 --> 00:16:04,160 batean une. 348 00:16:04,160 --> 00:16:07,790 Deklaratu dut etengabe izenekoa ikasleak eta gogor kodetuta 3 oraingoz. 349 00:16:07,790 --> 00:16:11,110 Baina orain, nabarituko nola garbi nire kodea hasten lortzeko. 350 00:16:11,110 --> 00:16:15,030 >> Linea 22, deklaratzen dut ikasleek array. 351 00:16:15,030 --> 00:16:18,760 Eta nabarituko ikaslea, hau da, itxuraz Gaur egun, datu-mota bat. 352 00:16:18,760 --> 00:16:23,360 Fitxategi honen goialdean, nabarituko delako Barne Nik goiburu-fitxategia 353 00:16:23,360 --> 00:16:24,820 hori bota nuen une bat besterik ez duela. 354 00:16:24,820 --> 00:16:28,820 Eta goiburu fitxategi hori nahiko besterik gabe, izan Ikasle bat definizio hau. 355 00:16:28,820 --> 00:16:32,470 >> Beraz, orain, sortu dut nire Ohiko datuak C motako urte egileek duten 356 00:16:32,470 --> 00:16:33,890 Duela ez zuten aldez aurretik pentsatzea. 357 00:16:33,890 --> 00:16:34,570 Baina ez dago arazorik. 358 00:16:34,570 --> 00:16:35,870 Egin ahal izango dut neure burua. 359 00:16:35,870 --> 00:16:39,050 Beraz izeneko ikasle array bat da, zeinen kide bakoitzak 360 00:16:39,050 --> 00:16:41,100 ikaslea egitura bat da. 361 00:16:41,100 --> 00:16:44,270 Eta horietako hiru nahi dut array. 362 00:16:44,270 --> 00:16:46,030 >> Eta orain, zer gainerako du Programa hau egiteko? 363 00:16:46,030 --> 00:16:47,550 Zerbait apur bat arbitrarioa behar nuen. 364 00:16:47,550 --> 00:16:51,450 Beraz, 24 online-tik aurrera, Batetik bestera joateko 0 eta 3 dut. 365 00:16:51,450 --> 00:16:54,000 Galdetu nuen, gero, erabiltzaileak ikaslearen izena. 366 00:16:54,000 --> 00:16:56,110 Eta, ondoren, lehen bezala erabiltzen dut GetString. 367 00:16:56,110 --> 00:16:59,410 Ondoren, eskatu ikasleari etxea dut, aurretik eta GetString gisa erabiltzen dut. 368 00:16:59,410 --> 00:17:01,780 >> Baina abisua - zertxobait berria sintaxia pieza - 369 00:17:01,780 --> 00:17:07,010 Oraindik ere, i-garren ikaslearen indize dezaket, baina nola lortu berariazko datuak dut 370 00:17:07,010 --> 00:17:08,354 Eremu egitura baten barruan? 371 00:17:08,354 --> 00:17:11,770 Beno, zer da itxuraz berriak sintaxia pieza? 372 00:17:11,770 --> 00:17:13,339 Besterik ez dot operadorea. 373 00:17:13,339 --> 00:17:14,510 >> Ez dugu benetan ikusi aurretik. 374 00:17:14,510 --> 00:17:17,819 Ikusten duzun da pset bost dudan baduzu atean sartu da dagoeneko fitxategiak bit-ekin. 375 00:17:17,819 --> 00:17:22,372 Baina besterik ez dot honen barruan esan nahi du egitura edo hainbat eremu, eman dot 376 00:17:22,372 --> 00:17:24,510 izena, edo ematen dit dot etxea. 377 00:17:24,510 --> 00:17:28,690 Horrek esan nahi du joan barruan egitura duen eta, bereziki, arlo horietan. 378 00:17:28,690 --> 00:17:30,200 >> Zein da programa hau gainerako ez du egin? 379 00:17:30,200 --> 00:17:31,190 Ez da sexy duten guztiak. 380 00:17:31,190 --> 00:17:34,640 Iragarki 0 eta 3 dudala batetik bestera joateko, berriz ere, sortu eta, besterik gabe, I ingeles bat 381 00:17:34,640 --> 00:17:40,500 beraz, eta, beraz bezala, besteak beste, eta esaldi batean dago Etxe bat, besteak beste, izena, puntu batetik pasatzen 382 00:17:40,500 --> 00:17:43,320 i-garren ikaslea eta bere etxea baita. 383 00:17:43,320 --> 00:17:47,560 >> Eta, ondoren, azkenik, orain hasi lortu dugu honi buruz anal, gaur egun dugun Oraindik 384 00:17:47,560 --> 00:17:49,580 zer malloc eta ezagutzen bestelako funtzioak izan dira 385 00:17:49,580 --> 00:17:50,570 denbora hori guztia egiten. 386 00:17:50,570 --> 00:17:54,220 Zergatik izen biak askatu behar dut eta etxea, nahiz eta I 387 00:17:54,220 --> 00:17:56,960 ez zuen deitu malloc? 388 00:17:56,960 --> 00:17:58,020 >> GetString egin. 389 00:17:58,020 --> 00:18:00,930 Eta hori gutxi zikin sekretu bat izan da aste batzuk, baina GetString du 390 00:18:00,930 --> 00:18:03,530 dira guztien gainetik memoria leaking jarri seihilekoa guztiak, beraz, oso urrun. 391 00:18:03,530 --> 00:18:05,990 Eta azkenean valgrand honek agerian uzten digu. 392 00:18:05,990 --> 00:18:10,730 >> Baina ez da big aurre, jakin dut ahal izango dut, besterik gabe askatzeko izena 393 00:18:10,730 --> 00:18:15,750 eta etxea, nahiz eta teknikoki, nahi izan super, super seguru, izan behar dut 394 00:18:15,750 --> 00:18:17,890 Errore batzuk egiten hemen egiaztapena. 395 00:18:17,890 --> 00:18:19,040 Zeintzuk dira zure instincts diozu? 396 00:18:19,040 --> 00:18:22,480 Zer egin behar dut egiaztapena askatu dut zer den lehenago 397 00:18:22,480 --> 00:18:25,470 katea, aka horrek char * bat? 398 00:18:25,470 --> 00:18:33,460 >> Benetan behar dut ikasle egiaztatzen bada tarte i dot izena ez 399 00:18:33,460 --> 00:18:34,840 berdinak null. 400 00:18:34,840 --> 00:18:40,400 Ondoren, OK egingo aurrera eta libre joan erakuslea, eta bera edo beste 401 00:18:40,400 --> 00:18:41,160 bat baita. 402 00:18:41,160 --> 00:18:46,860 Ikasle tarte i dot etxea ez bada to null berdin, hau egingo babesteko 403 00:18:46,860 --> 00:18:52,520 izkinan kasuan aurka eta bertan GetString null antzeko zerbait itzultzen. 404 00:18:52,520 --> 00:18:57,310 Eta une bat duela ikusi dugu, printf borondatea babesten gaituzte, besterik gabe, hemen esaten 405 00:18:57,310 --> 00:18:58,990 nulua da, eta arraro begiratzen du. 406 00:18:58,990 --> 00:19:02,340 Baina, gutxienez, ez da segfault, ikusi dugun bezala. 407 00:19:02,340 --> 00:19:05,990 >> Beno, goazen beste gauza bat egin zidan hemen. structs-0 ergelak zein programa da 408 00:19:05,990 --> 00:19:09,700 idatzi dut, datu horiek guztiak ere, eta, ondoren, nik galdu programa behin amaitu da. 409 00:19:09,700 --> 00:19:10,940 Baina aurrera zidan eta hori egin. 410 00:19:10,940 --> 00:19:12,830 Dezagun terminal egin dit leihoa pixka bat handiagoa da. 411 00:19:12,830 --> 00:19:17,000 Let structs-1 egin dit, eta horrek honen bertsio berri bat da. 412 00:19:17,000 --> 00:19:18,520 >> Pixka bat hasi dut urrutiratzeko. 413 00:19:18,520 --> 00:19:21,620 Eta orain, utzi dot exekutatu me barra structs-1. 414 00:19:21,620 --> 00:19:22,590 Ikaslearen izena - 415 00:19:22,590 --> 00:19:31,500 David Mather, dezagun Rob Kirkland, dezagun Lauren Leverett. 416 00:19:31,500 --> 00:19:33,650 Zer da interesgarria da, orain oharra - 417 00:19:33,650 --> 00:19:35,540 eta Nik bakarrik dakit hau delako Programa idatzi nuen - 418 00:19:35,540 --> 00:19:38,930 fitxategia ez da orain nire egungo direktorioa izeneko students.csv. 419 00:19:38,930 --> 00:19:40,420 Batzuk ikus zezakeen Mundu errealean horiek. 420 00:19:40,420 --> 00:19:42,980 >> Zer CSV fitxategi bat da? 421 00:19:42,980 --> 00:19:44,170 Komaz bereizitako balioak. 422 00:19:44,170 --> 00:19:46,670 Ordena da gizon ahula en bezala Excel fitxategi baten bertsioa. 423 00:19:46,670 --> 00:19:50,580 Errenkada eta zutabe taula bat da hori Excel bezalako programa bat irekitzeko, 424 00:19:50,580 --> 00:19:51,800 edo Mac batean zenbakiak. 425 00:19:51,800 --> 00:19:55,180 >> Eta ireki dut fitxategi hau gedit bada, hemen ere, abisua - eta zenbakiak ez dira. 426 00:19:55,180 --> 00:19:57,360 Hori besterik gedit kontatzea me lerro-zenbakiak. 427 00:19:57,360 --> 00:19:59,740 Honen lehen lerroan nabarituko fitxategia David eta Mather da. 428 00:19:59,740 --> 00:20:01,450 Hurrengo lerroan Rob koma Kirkland da. 429 00:20:01,450 --> 00:20:04,170 Eta hirugarren lerroan Lauren da koma Leverett. 430 00:20:04,170 --> 00:20:05,480 >> Beraz, zer egin dut sortu? 431 00:20:05,480 --> 00:20:09,580 Nik orain, idatzizko C programa bat eraginkortasunez kalkulu orriak sor ditzake 432 00:20:09,580 --> 00:20:11,840 bat ireki daiteke Excel bezalako programa. 433 00:20:11,840 --> 00:20:15,520 Ez dela sinesgarria datu multzo bat, baina duzu, askoz handiagoa Saiakera bada 434 00:20:15,520 --> 00:20:18,440 datuak benetan zuk nahi manipulatzeko eta grafikoak eta egin 435 00:20:18,440 --> 00:20:21,260 bezala, hau da, agian, Modu datuak sortzeko. 436 00:20:21,260 --> 00:20:25,370 Gainera, CSVs dira benetan super komuna besterik simple datuak gordetzeko - 437 00:20:25,370 --> 00:20:28,940 Yahoo Ogasun, adibidez, lortu baduzu stock beren deiturikoaren bidez komatxorik 438 00:20:28,940 --> 00:20:33,180 API, doako zerbitzua ematen dizuna get egungo up-to-the-data stock 439 00:20:33,180 --> 00:20:35,650 enpresen kotizazio dute, ematen diren datuak atzera 440 00:20:35,650 --> 00:20:37,800 super simple CSV formatuan. 441 00:20:37,800 --> 00:20:39,380 >> Beraz, nola egiten dugu? 442 00:20:39,380 --> 00:20:42,530 Beno nabarituko, programa honen gehienak ia berdina da. 443 00:20:42,530 --> 00:20:46,870 Baina konturatu behera hemen, eta ez inprimatu ikasleak dira, on line 35 444 00:20:46,870 --> 00:20:51,040 aurrerantzean, dut gordetzea aldarrikatzen dut diskoan ikasleek, beraz, fitxategi batean gorde. 445 00:20:51,040 --> 00:20:53,630 >> Beraz, nabarituko * fitxategi batean geratuko naiz - 446 00:20:53,630 --> 00:20:57,260 orain, hau C. anormaltasun baten antzeko zerbait da Edozein arrazoi dela eta, fitxategi txanoak guztiak, 447 00:20:57,260 --> 00:21:00,690 eta hori ez da gehien datuak beste mota bezala C. Baina hau da, eraiki- 448 00:21:00,690 --> 00:21:02,320 datu-mota, fitxategia *. 449 00:21:02,320 --> 00:21:05,900 Eta erakuslea naiz geratuko fitxategi batean, nola dela pentsa dezakezu. 450 00:21:05,900 --> 00:21:08,070 >> fopen irekitako fitxategi esan nahi du. 451 00:21:08,070 --> 00:21:09,470 Zer zer fitxategi ireki nahi duzu? 452 00:21:09,470 --> 00:21:12,620 Fitxategi bat ireki nahi dut izango dela inori deitu students.csv. 453 00:21:12,620 --> 00:21:14,480 Ezer I deitu nahi izan dut. 454 00:21:14,480 --> 00:21:15,200 >> Hartu eta, ondoren, etxebizitza bat. 455 00:21:15,200 --> 00:21:18,960 Zer da bigarren argumentua du to fopen ziurrenik esan nahi du? 456 00:21:18,960 --> 00:21:21,480 Eskuin, idatzi w, ezin irakurketarako r izango da. 457 00:21:21,480 --> 00:21:24,120 Ez da bat erantsi baduzu lerro eta nahi ez gehitzeko 458 00:21:24,120 --> 00:21:25,200 gainidatzi gauza osoa. 459 00:21:25,200 --> 00:21:28,005 >> Baina nahi dut fitxategi hau sortzeko behin, beraz, aurrekontua unquote w erabili dut. 460 00:21:28,005 --> 00:21:31,880 Eta hori bakarrik ezagutzen dut habiendo irakurri dokumentazioa, edo gizon orria. 461 00:21:31,880 --> 00:21:35,100 Fitxategia ez bada nulua - beste era batera esanda, ez da ezer oker joan ez bada - 462 00:21:35,100 --> 00:21:37,820 utzi batetik bestera joateko zehar me 0-tik 3 ikasle. 463 00:21:37,820 --> 00:21:40,410 >> Eta orain konturatzen ez da zerbait inoiz, beraz, apur bat ezberdina 464 00:21:40,410 --> 00:21:42,110 41 lerro buruz hemen. 465 00:21:42,110 --> 00:21:42,960 Ez da printf. 466 00:21:42,960 --> 00:21:46,530 Fprintf da fitxategia printf da. 467 00:21:46,530 --> 00:21:47,790 Beraz, fitxategi batean idatzi behar da joan. 468 00:21:47,790 --> 00:21:48,860 Zein fitxategia? 469 00:21:48,860 --> 00:21:53,630 Ko horren erakuslea duzu zehaztu lehenengo argumentu gisa. 470 00:21:53,630 --> 00:21:55,940 >> Ondoren, kate-formatu bat zehaztu dugu. 471 00:21:55,940 --> 00:21:59,660 Orduan, zer kate nahi dugun zehaztu dugu berea duen lehen s plug, eta 472 00:21:59,660 --> 00:22:04,320 ondoren, beste aldagai bat edo bigarren ehuneko s. 473 00:22:04,320 --> 00:22:06,760 Ondoren, fclose fitxategia itxi dugu. 474 00:22:06,760 --> 00:22:09,380 Askatu baino memoria aurretik, nahiz Atzera joan behar dut, eta gehitu 475 00:22:09,380 --> 00:22:10,540 null egiaztatzen batzuk. 476 00:22:10,540 --> 00:22:12,090 >> Eta kito. 477 00:22:12,090 --> 00:22:16,960 fopen, fprintf, fclose ematen dit gaitasuna, testu fitxategiak sortzeko. 478 00:22:16,960 --> 00:22:19,640 Orain, arazo multzo bost ikusiko dituzu, hots, irudiak, erabiltzen ari zara 479 00:22:19,640 --> 00:22:20,990 fitxategi bitarrak ordez. 480 00:22:20,990 --> 00:22:24,200 Baina, funtsean, ideia bera da, nahiz eta funtzioak izango dituzu 481 00:22:24,200 --> 00:22:28,710 ikusten dira apur bat desberdina da. 482 00:22:28,710 --> 00:22:32,580 >> Zurrunbilo tour, beraz, baina izango duzu fitxategi guztiak ere ezagutzen I/O-- 483 00:22:32,580 --> 00:22:34,960 sarrera eta irteera - pset bost. 484 00:22:34,960 --> 00:22:38,607 Eta buruzko edozein galdera Hasierako oinarriak hemen? 485 00:22:38,607 --> 00:22:39,857 Bai? 486 00:22:39,857 --> 00:22:41,880 487 00:22:41,880 --> 00:22:43,710 >> Zer saiatu duzu null balio bat askatzeko bada? 488 00:22:43,710 --> 00:22:48,880 Uste dut, aske ahaztuak izan ez bada behintzat bat little more user-friendly, dezakezu 489 00:22:48,880 --> 00:22:49,890 potentzialki segfault. 490 00:22:49,890 --> 00:22:54,160 It null pasatzen da txarra ez dudalako uste free molesta zuk begiratu, 491 00:22:54,160 --> 00:22:57,330 litzateke potentzialki delako alferrik izan denbora bera egin behar da aldeko 492 00:22:57,330 --> 00:22:59,022 munduko guztiontzat. 493 00:22:59,022 --> 00:23:00,590 Galdera ona da, baina. 494 00:23:00,590 --> 00:23:04,300 >> Guztiak eskubidea, mota honetako lortzen du, beraz, digu gaia interesgarri bat. 495 00:23:04,300 --> 00:23:07,010 Arazo multzo gaia bost auzitegi da. 496 00:23:07,010 --> 00:23:08,420 Gutxienez, hori zati batean arazo multzo. 497 00:23:08,420 --> 00:23:12,030 Kernet, oro har, aipatzen du Informazio dezaketela edo berreskuratzeko 498 00:23:12,030 --> 00:23:14,110 agian ez ezabatu dira nahita. 499 00:23:14,110 --> 00:23:18,680 Eta, beraz, eman nahi nizuke azkar pentsatu nuen zer gustu benetan guzia 500 00:23:18,680 --> 00:23:21,230 azpian denbora honetan Zure ordenagailuaren kanpaia. 501 00:23:21,230 --> 00:23:23,960 >> Adibidez, zuk barruan gertatzen bada, zure ordenagailu eramangarria edo zure mahaigaineko ordenagailu baten 502 00:23:23,960 --> 00:23:28,040 disko gogorra, bai da mekaniko bat gailu benetan biraka - 503 00:23:28,040 --> 00:23:31,650 ez da zirkularra izeneko platters gauzak Itxura nahiko gustuko dudana 504 00:23:31,650 --> 00:23:34,540 besterik ez da izan sortu pantailan hemen, nahiz hau gero eta eskola zaharra da. 505 00:23:34,540 --> 00:23:37,370 Hau da, hiru eta erdi hazbeteko da disko gogorra. 506 00:23:37,370 --> 00:23:40,070 Eta hiru eta erdi hazbeteko aipatzen gauza denean instalatu dituzten 507 00:23:40,070 --> 00:23:40,890 ordenagailu batean. 508 00:23:40,890 --> 00:23:44,890 >> Asko zure ordenagailu eramangarriak mutilak orain dute solido-egoera, gailuak, edo SSDs, 509 00:23:44,890 --> 00:23:46,260 ez duten piezak mugituz. 510 00:23:46,260 --> 00:23:49,170 RAM bezala, gero eta gutxiago bezalako ari dira mekaniko gailu horiek. 511 00:23:49,170 --> 00:23:51,450 Baina ideia oraindik ere bera da, zalantzarik gabe erlazionatzen dira 512 00:23:51,450 --> 00:23:52,790 arazo ezarri bost. 513 00:23:52,790 --> 00:23:57,400 >> Eta uste duzu buruz bada, orain disko gogor bat zirkulu bat adierazten du, eta horrek baloia 514 00:23:57,400 --> 00:23:58,930 Horrela marraztu dut hemen. 515 00:23:58,930 --> 00:24:02,290 Noiz zure ordenagailuko fitxategi bat sortzen duzunean, da ala ez da SSD bat, edo, 516 00:24:02,290 --> 00:24:06,610 Kasu honetan, adineko eskola disko gogorra, Biltzen duten fitxategi anitz bit. 517 00:24:06,610 --> 00:24:10,510 Demagun dela hau, 0 eta 1, 0 s eta 1s sorta oso bat. 518 00:24:10,510 --> 00:24:11,660 Beraz, nire disko gogorra da. 519 00:24:11,660 --> 00:24:13,225 Hau da, antza denez, nahiko handia fitxategi bat. 520 00:24:13,225 --> 00:24:18,080 Eta sortu da erabiliz 0 s eta 1s hartan fisiko platter zatia. 521 00:24:18,080 --> 00:24:19,750 >> Beno, zer fisiko zati hori? 522 00:24:19,750 --> 00:24:25,310 Beno, bihurtzen da bat disko gogorrean, mota hau, gutxienez, ez da 523 00:24:25,310 --> 00:24:27,340 horiek txiki-txiki txiki partikula magnetikoak. 524 00:24:27,340 --> 00:24:32,630 Eta izan dira, funtsean, Iparraldeko eta hego polo horiek, beraz, zuk 525 00:24:32,630 --> 00:24:35,710 buelta horiek partikula magnetiko bat Horrela, esan hori izan dezakezu 526 00:24:35,710 --> 00:24:36,720 1 ordezkari. 527 00:24:36,720 --> 00:24:39,340 Da, eta goitik behera hegoaldean bada iparraldean, esan hori izan dezakezu 528 00:24:39,340 --> 00:24:40,390 0 ordezkari. 529 00:24:40,390 --> 00:24:43,660 >> Beraz fisiko mundu errealean, hori nola zerbait izan liteke duzu 530 00:24:43,660 --> 00:24:45,670 bitarra 0 egoera eta 1. 531 00:24:45,670 --> 00:24:46,720 Beraz, hori da fitxategi bat da. 532 00:24:46,720 --> 00:24:49,300 Ez dago magnetiko sorta oso bat da partikulak dira beren modu honetan edo 533 00:24:49,300 --> 00:24:51,920 Modu honetan, sortzen ereduak 0 s eta 1s du. 534 00:24:51,920 --> 00:24:56,760 >> Baina bihurtzen da fitxategi bat gordetzen duzunean, zenbait informazio gordetzen da bereizita. 535 00:24:56,760 --> 00:25:00,000 Beraz, txiki honetan taula bat da, direktorioa bat da, nolabait esateko. 536 00:25:00,000 --> 00:25:05,810 Eta zutabe-izen hori deitzen dut, eta Zutabe hau kokapena deitu dut. 537 00:25:05,810 --> 00:25:08,850 >> Eta, beraz, suposatzen dut hau nire curriculuma. 538 00:25:08,850 --> 00:25:14,050 Nire resume.doc da gorde kokapena, esan dezagun 123. 539 00:25:14,050 --> 00:25:15,390 Zenbaki hori beti dut joan. 540 00:25:15,390 --> 00:25:18,810 Baina nahikoa da, besterik gabe esan nahi RAM batean, disko gogor bat hartu ahal izango duzu 541 00:25:18,810 --> 00:25:22,350 duten gigako edo 200 gigabyte bat edo terabyte bat, eta ahal duzun 542 00:25:22,350 --> 00:25:23,750 zenbakia byte guztiak. 543 00:25:23,750 --> 00:25:26,480 8 bit zatiak guztiak zenbakia dezakezu. 544 00:25:26,480 --> 00:25:29,030 >> Beraz, hori esaten dugu kokapena 123 da. 545 00:25:29,030 --> 00:25:32,070 Nire eragilearen barruan direktorioa honetan, beraz, sistema gogoratzen nire 546 00:25:32,070 --> 00:25:34,250 curriculuma kokapena 123 da. 547 00:25:34,250 --> 00:25:36,850 Baina interesgarria lortzen denean fitxategi bat ezabatu. 548 00:25:36,850 --> 00:25:37,820 >> Adibidez, beraz - 549 00:25:37,820 --> 00:25:40,790 eta zorionez, munduko gehienak ditu hau kalera harrapatu - Zer gertatzen da 550 00:25:40,790 --> 00:25:45,040 fitxategi bat arrastatzen baduzu, zure Mac OS Trash edo zure Windows Recycle Bin? 551 00:25:45,040 --> 00:25:48,290 552 00:25:48,290 --> 00:25:50,510 Zer egiten duten helburua da? 553 00:25:50,510 --> 00:25:53,860 Jakina da fitxategia kentzeko, baina zer arrastatze ekintza egiten du eta 554 00:25:53,860 --> 00:25:57,550 Zure Trash edo sartu zure jaregiten Recycle Bin ordenagailu batean egin? 555 00:25:57,550 --> 00:25:59,230 >> Deus, benetan. 556 00:25:59,230 --> 00:26:00,320 Besterik karpeta bat bezalakoa da. 557 00:26:00,320 --> 00:26:01,800 Karpeta berezi bat da, ziur izan. 558 00:26:01,800 --> 00:26:04,460 Baina ez da benetan ezabatu fitxategia? 559 00:26:04,460 --> 00:26:06,780 >> Beno, ez da, izan ere, ziurrenik batzuk izan dira, adibidez, ai, madarikatua, ez zenuen 560 00:26:06,780 --> 00:26:07,420 esan nahi egin. 561 00:26:07,420 --> 00:26:09,130 Beraz, egin klik bikoitza duzu Trash edo birziklatu Bin. 562 00:26:09,130 --> 00:26:11,630 Poked dituzun inguruan, eta berreskuratu dituzun besterik arrastatuz, fitxategia 563 00:26:11,630 --> 00:26:12,110 ez daudelarik. 564 00:26:12,110 --> 00:26:14,420 Beraz, argi eta garbi, eta ez da, nahitaez, ezabatzen. 565 00:26:14,420 --> 00:26:15,990 >> Ados, smarter baino zaren. 566 00:26:15,990 --> 00:26:18,860 Ezagutzen duzun, besterik gabe, arrastatu sartu dela Trash edo birziklatu Bin ez du esan nahi 567 00:26:18,860 --> 00:26:19,930 zakarrontzi ari bazara hustea. 568 00:26:19,930 --> 00:26:24,110 Beraz, joan menuan duzu, eta esan duzu Empty Trash Hustu edo birziklatu Bin. 569 00:26:24,110 --> 00:26:25,360 Orduan, zer gertatzen da? 570 00:26:25,360 --> 00:26:29,070 571 00:26:29,070 --> 00:26:32,530 >> Bai, beraz, ezabatu egingo da, are gehiago. 572 00:26:32,530 --> 00:26:37,660 Baina, hori gertatzen da hori. 573 00:26:37,660 --> 00:26:45,350 Ordenagailua ahazten non resume.doc zen. 574 00:26:45,350 --> 00:26:47,400 >> Baina zer gertatzen da, ez da aldatu, itxuraz irudian? 575 00:26:47,400 --> 00:26:51,390 576 00:26:51,390 --> 00:26:55,570 Bit da, eta 0 s 1s erreklamazioa dut alderdi batzuk fisiko baten gunean 577 00:26:55,570 --> 00:26:56,280 hardwarea. 578 00:26:56,280 --> 00:26:57,110 Oraindik ez dute. 579 00:26:57,110 --> 00:26:58,930 Besterik ordenagailuak egiten da ahaztuta zer diren. 580 00:26:58,930 --> 00:27:03,160 >> Beraz, funtsean libratuko fitxategia en eta horrela bit dira berriz erabili ahal izango da. 581 00:27:03,160 --> 00:27:06,940 Baina ez duzu gehiago sortu fitxategiak arte, eta fitxategi gehiago, eta gehiago fitxategiak 582 00:27:06,940 --> 00:27:12,150 probabilistically ere, 0 s eta 1s, partikula magnetiko horiek, get berrerabili 583 00:27:12,150 --> 00:27:16,220 goitik edo eskuineko aldean sortu da, beste fitxategiak, 0 s eta 1s. 584 00:27:16,220 --> 00:27:17,980 >> Beraz, denbora-leiho hau duzu. 585 00:27:17,980 --> 00:27:19,860 Eta ez da aurreikusteko du luzera, benetan. 586 00:27:19,860 --> 00:27:22,240 Araberakoa izango da zure disko tamainaren da unitatean, eta zenbat fitxategiak eta duzu 587 00:27:22,240 --> 00:27:23,490 nola azkar berriak egiten dituzu. 588 00:27:23,490 --> 00:27:27,050 Baina ez dago denbora leihoaren zehar duen fitxategi hori da, oraindik ere, ezin hobeto 589 00:27:27,050 --> 00:27:27,770 berreskuratu. 590 00:27:27,770 --> 00:27:31,050 >> Hala bada, erabili al duzu inoiz McAfee bezalako programak edo Norton suspertzen saiatu 591 00:27:31,050 --> 00:27:35,680 datuak, guztiak egiten ari dira saiatzen ari da berreskuratzeko honek deiturikoak direktorioa 592 00:27:35,680 --> 00:27:37,340 irudikatu non zure koadernoan zen. 593 00:27:37,340 --> 00:27:40,605 Eta, batzuetan, Norton eta esango dute, fitxategia da% 93 berreskuratu. 594 00:27:40,605 --> 00:27:42,020 Beno, zer esan nahi du? 595 00:27:42,020 --> 00:27:45,690 Dagoela esan nahi du, besterik gabe, beste fitxategi batzuk, coincidentally azkenean erabiliz, esan, 596 00:27:45,690 --> 00:27:48,920 Zure fitxategia jatorrizko out bit horiek. 597 00:27:48,920 --> 00:27:51,950 >> Beraz, zer da benetan inplikatuta datuak berreskuratzeko? 598 00:27:51,950 --> 00:27:55,720 Beno, ez baduzu zerbait bezala Norton zure ordenagailuan pre-instalatutako, 599 00:27:55,720 --> 00:27:59,510 onena batzuetan egin dezakezu da begiratu osoa disko gogorrean bila at 600 00:27:59,510 --> 00:28:00,510 bit ereduak. 601 00:28:00,510 --> 00:28:05,350 Eta arazo multzo gai bat bost izango duzu bilatu 602 00:28:05,350 --> 00:28:09,570 disko gogor bat baliokidea, auzitegi bat bat bateko compact flash txartela irudi 603 00:28:09,570 --> 00:28:13,660 kamera digitala, 0 s bila 1s eta normalean hori, handiko 604 00:28:13,660 --> 00:28:16,720 probabilitatea, adierazten JPEG irudi bat hasteko. 605 00:28:16,720 --> 00:28:21,120 >> Eta zuk guys irudi horiek berreskuratu ahal izateko , suposatuz ikusten dut patroi hau bada 606 00:28:21,120 --> 00:28:24,380 on auzitegi irudi bit-ekin handiko probabilitatea, markatzen duten 607 00:28:24,380 --> 00:28:25,650 JPEG baten hasiera. 608 00:28:25,650 --> 00:28:29,520 Eta ikusi nuen bera patroi bada, berriz ere, ziurrenik hasiera markatzen 609 00:28:29,520 --> 00:28:32,440 JPEG beste bat, eta beste bat JPEG, eta JPEG beste. 610 00:28:32,440 --> 00:28:34,970 Eta hau da, normalean, nola datuak berreskuratzeko lan egingo du. 611 00:28:34,970 --> 00:28:37,870 Zer da JPEGs buruzko polita da, nahiz eta fitxategi-formatu bera zertxobait 612 00:28:37,870 --> 00:28:44,400 konplexua da, eta, besteak beste, bakoitzaren hasieran fitxategia da benetan nahiko identifikagarri 613 00:28:44,400 --> 00:28:47,370 eta erraza da, ikusten duzun bezala, dut ez baduzu dagoeneko. 614 00:28:47,370 --> 00:28:50,270 >> Hargatik hartu hurbilago begirada azpian zehazki zer bezala kanpaia 615 00:28:50,270 --> 00:28:53,360 gertatzen da, eta hauek 0 s eta 1s dira, emateko, pixka bat gehiago 616 00:28:53,360 --> 00:28:55,330 zehatz honetan erronka testuingurua. 617 00:28:55,330 --> 00:28:55,510 >> [Bideo-erreprodukzioa] 618 00:28:55,510 --> 00:28:58,700 >> -Non dago zure PC gordetzen gehien bere datuak iraunkorra. 619 00:28:58,700 --> 00:29:03,390 Horretarako, datuak RAM from bidaiatzen software seinale dela esango batera 620 00:29:03,390 --> 00:29:06,110 disko gogorra nola diren datuak gordetzeko. 621 00:29:06,110 --> 00:29:09,410 Disko gogorra zirkuitu itzuli Tentsio sartu seinale horiek 622 00:29:09,410 --> 00:29:10,870 gorabeherak. 623 00:29:10,870 --> 00:29:14,970 Hauek, aldi berean, kontrolatu disko gogorrean en higikorrak, gutxi batzuk 624 00:29:14,970 --> 00:29:17,910 mugitzen utzi piezak moderno ordenagailuan. 625 00:29:17,910 --> 00:29:22,130 >> Seinale batzuek motor bat horrek biraka metal-ekin estalitako platters. 626 00:29:22,130 --> 00:29:25,470 Zure datuak benetan gordetzen platters horien gainean. 627 00:29:25,470 --> 00:29:28,610 Beste seinale mugitu irakurri / idazteko buruak irakurri edo 628 00:29:28,610 --> 00:29:30,710 idatzi platters buruzko datuak. 629 00:29:30,710 --> 00:29:35,450 Makineria honetan, beraz, zehatzak, pertsona batek ile ezin baita artean 630 00:29:35,450 --> 00:29:37,280 buruak eta spinning platters. 631 00:29:37,280 --> 00:29:40,316 Hala ere, abiadura emanaldirik guztietan funtzionatzen du. 632 00:29:40,316 --> 00:29:40,660 >> [END bideo-erreprodukzioa] 633 00:29:40,660 --> 00:29:42,190 >> DAVID MALAN: apur bat handiagotu sakonago orain zer at 634 00:29:42,190 --> 00:29:44,360 platters horiek benetan. 635 00:29:44,360 --> 00:29:44,720 >> [Bideo-erreprodukzioa] 636 00:29:44,720 --> 00:29:47,660 >> -Ikus dezagun zer den begiratu besterik ez dugu at motion motela ikusi. 637 00:29:47,660 --> 00:29:51,710 Noiz elektrizitate pultsu labur bat da irakurtzeko / idazteko burua bidaliko da, flips bada 638 00:29:51,710 --> 00:29:54,650 elektromagnetikoak txiki buruzko segundo baten frakzio bat. 639 00:29:54,650 --> 00:29:58,970 Iman eremuan, eta horrek sortzen aldaketa bat, txiki-txiki txiki polaritate du 640 00:29:58,970 --> 00:30:02,850 metal partikula zati den armarria platter azalera bakoitzeko. 641 00:30:02,850 --> 00:30:05,940 >> Txiki-txiki horien serie A eredua, kobratuko-up on diskoaren arlo 642 00:30:05,940 --> 00:30:08,470 bakar bat bit adierazten du bitarra kopurua datuak 643 00:30:08,470 --> 00:30:10,530 ordenagailuak sistema erabiliko dute. 644 00:30:10,530 --> 00:30:13,775 Orain, korrontea bidaltzeko modu bat bidez irakurtzeko / idazteko burua, inguruko 645 00:30:13,775 --> 00:30:15,970 da, norabide batean polarized. 646 00:30:15,970 --> 00:30:17,950 Korrontea bada bidaliko kontrako norabidean, eta 647 00:30:17,950 --> 00:30:19,930 polarizazio alderantziz. 648 00:30:19,930 --> 00:30:22,370 >> Nola disko gogorrean off datuak lortu duzu? 649 00:30:22,370 --> 00:30:24,090 Just alderantzizko prozesua. 650 00:30:24,090 --> 00:30:26,550 Beraz, diskoan partikula da hori lortzeko, gaur egungo en 651 00:30:26,550 --> 00:30:27,960 irakurri / idazteko burua mugitzen. 652 00:30:27,960 --> 00:30:30,700 Bildu horiek milioika magnetized segmentu eta 653 00:30:30,700 --> 00:30:32,160 baduzu fitxategi bat. 654 00:30:32,160 --> 00:30:36,060 >> Orain, fitxategi bakar bat pieza may izango guztiak disko baten sakabanatuta 655 00:30:36,060 --> 00:30:39,970 platters, mota bezala nahastea zure mahai gainean paper. 656 00:30:39,970 --> 00:30:43,500 Beraz berezi bat aparteko fitxategia gordetzen du pista non dena da. 657 00:30:43,500 --> 00:30:45,985 Ez duzu izan nahi baduzu horrelako zerbait? 658 00:30:45,985 --> 00:30:46,470 >> [END bideo-erreprodukzioa] 659 00:30:46,470 --> 00:30:47,820 >> DAVID MALAN: OK, seguruenik ez. 660 00:30:47,820 --> 00:30:52,070 Beraz, nola asko guys hazi hauekin? 661 00:30:52,070 --> 00:30:53,970 Ados, eta, beraz, gutxiago dira eta gutxiago da eskuak urtero. 662 00:30:53,970 --> 00:30:56,550 Baina pozik, gutxienez Oraindik duzun ezagutzen dut haiekin, hau delako eta gure 663 00:30:56,550 --> 00:31:00,520 book demo, zoritxarrez, oso bat hiltzen motela heriotza hemen ezagutzen du. 664 00:31:00,520 --> 00:31:04,010 >> Baina hau zer da, gutxienez, berriro handiko eskola, erabiltzen backups erabiltzeko. 665 00:31:04,010 --> 00:31:08,110 Eta harrigarria izan zen, duzulako 1.4 megabyte gorde zitekeen an 666 00:31:08,110 --> 00:31:08,930 bereziki, disko hau. 667 00:31:08,930 --> 00:31:12,260 Eta hau dentsitate handiko bertsioa izan zen, gisa HD ditu bidez adierazten 668 00:31:12,260 --> 00:31:14,240 gaur egungo HD bideoak aurretik zentzua. 669 00:31:14,240 --> 00:31:16,400 >> Standard dentsitatea 800 Kilobyte zen. 670 00:31:16,400 --> 00:31:18,640 Eta hori baino lehenago, ez ziren 400 kilobyte diskoak. 671 00:31:18,640 --> 00:31:23,120 Eta hori baino lehenago, ez ziren 5 eta 1/4 hazbeteko diskoak, izan ziren benetan diskete, 672 00:31:23,120 --> 00:31:25,680 eta pixka bat zabalagoa eta taller Gauza horiek hemen baino. 673 00:31:25,680 --> 00:31:29,150 Baina benetan ikus dezakezu deiturikoak disko hauetako alderdi diskete. 674 00:31:29,150 --> 00:31:32,630 >> Eta funtzionalki, benetan ari dira politak egiteko at disko gogorretan antzeko 675 00:31:32,630 --> 00:31:33,570 Gutxienez mota hau. 676 00:31:33,570 --> 00:31:37,270 Berriz ere, ordenagailuak berriago batean SSDs lan pixka bat ezberdinean. 677 00:31:37,270 --> 00:31:41,530 Baina mugitzen dela gutxi metal fitxa bada, benetan ikus dezakezu cookie apur bat, 678 00:31:41,530 --> 00:31:42,560 edo platter. 679 00:31:42,560 --> 00:31:43,830 >> Ez da hau metal bat bezala. 680 00:31:43,830 --> 00:31:46,000 Bat, hau da, benetan merkeago batzuk plastikozko material. 681 00:31:46,000 --> 00:31:46,750 Eta wiggle da mota dezakezu. 682 00:31:46,750 --> 00:31:50,310 Eta trully duzun besterik wiped off batzuk bit edo magnetikoak partikula kopurua 683 00:31:50,310 --> 00:31:51,220 disko honetan. 684 00:31:51,220 --> 00:31:52,710 >> Beraz, zorionez, ez da horren gainean ezer. 685 00:31:52,710 --> 00:31:55,790 Gauza modu batean bada - eta estaltzeko zure begiak eta zure bizilaguna horiek - 686 00:31:55,790 --> 00:31:58,865 dezakezu, besterik gabe, tira mota hau sheath osoan horrelako off. 687 00:31:58,865 --> 00:32:01,900 Baina gutxi udaberri bat da, beraz, Zure begiak dela jakitun. 688 00:32:01,900 --> 00:32:03,620 Beraz, orain benetan diskete bat duzu. 689 00:32:03,620 --> 00:32:07,090 >> Eta zer da hau buruzko nabarmenak hau da, ahalik eta hau da bat 690 00:32:07,090 --> 00:32:10,830 txiki-eskala handiago baten irudikapena disko gogorra, gauza horiek dira, super, 691 00:32:10,830 --> 00:32:11,590 super simple. 692 00:32:11,590 --> 00:32:15,170 Tira duzun hondoan bada ere, orain dela metal gauza da itzali, eta azala 693 00:32:15,170 --> 00:32:20,990 ireki, guztiak ez dago bi pieza da sentitu eta deiturikoak diskete 694 00:32:20,990 --> 00:32:22,930 bat metal pieza barruan ere. 695 00:32:22,930 --> 00:32:25,990 >> Eta han erdi doan nire disko edukia. 696 00:32:25,990 --> 00:32:27,540 Ez dago erdiak bestera doa. 697 00:32:27,540 --> 00:32:31,375 Baina hori guztia ez zela barruan spinning da Zure antaƱo en ordenagailuan. 698 00:32:31,375 --> 00:32:35,220 699 00:32:35,220 --> 00:32:38,310 >> Eta berriro ere, hau ikuspegi egokian jartzen, nola big da zure gehienetan 700 00:32:38,310 --> 00:32:39,560 disko gogorrak egun hauetan? 701 00:32:39,560 --> 00:32:41,960 702 00:32:41,960 --> 00:32:46,230 500 gigabyte, terabyte bat, agian hasi bat ordenagailuan, terabytes 2, 3 703 00:32:46,230 --> 00:32:47,630 terabytes, 4 terabytes, ezta? 704 00:32:47,630 --> 00:32:52,480 Horrek megabyte da, eman edo hartu, ezin nahiz kabitzen tipikoak MP3 bat 705 00:32:52,480 --> 00:32:55,310 gehiago egun hauetan, edo zenbait antzeko musika-fitxategia. 706 00:32:55,310 --> 00:32:59,500 >> Beraz, zuretzat oroigarri txiki bat, gaur egun, eta Horrez gain, testuinguruan zer laguntzeko 707 00:32:59,500 --> 00:33:03,570 daiteke emandako hartzen dugu Orain, arazo girotuta bost. 708 00:33:03,570 --> 00:33:04,820 Beraz, zurea mantendu dira. 709 00:33:04,820 --> 00:33:07,340 710 00:33:07,340 --> 00:33:13,370 Beraz, egin iezadazue trantsizioa non izango den hurrengo pset gastu baita. 711 00:33:13,370 --> 00:33:18,470 Beraz, gaur egun dugun ezarri orrialde honetan - Oh, iragarkiak azkar pare bat. 712 00:33:18,470 --> 00:33:21,730 >> Ostiral honetan, nahi baduzu bada batu CS50 bazkaltzeko, ohiko leku joateko, 713 00:33:21,730 --> 00:33:23,610 cs50.net/rsvp. 714 00:33:23,610 --> 00:33:25,100 Eta azken proiektua - 715 00:33:25,100 --> 00:33:28,520 beraz, ikasketa planaren arabera, argitaratua dugu azken proiektuaren zehaztapen dagoeneko. 716 00:33:28,520 --> 00:33:31,410 Konturatzen, horrek ez du esan nahi ondorioz da, batez ere, laster. 717 00:33:31,410 --> 00:33:33,990 Honez argitaratua, benetan, soilik lortu you guys da pentsatzen. 718 00:33:33,990 --> 00:33:37,620 Eta, hain zuzen, super esanguratsu bat duzun ehunekoa izango aurre egingo 719 00:33:37,620 --> 00:33:40,780 material proiektuak azken dugun ez dute baita ahaztuak klasean, 720 00:33:40,780 --> 00:33:42,730 baina baita hurrengo aste hasieran bezala. 721 00:33:42,730 --> 00:33:45,530 >> Oharra, nahiz eta, zehaztapen hori eskatzen bat hainbat gutxi osagaiak 722 00:33:45,530 --> 00:33:46,190 azken proiektua. 723 00:33:46,190 --> 00:33:49,590 Lehena, aste gutxitan, bat pre-proposamena, mezu elektroniko polit bat aldi baterako 724 00:33:49,590 --> 00:33:52,760 Zure TF esan edo zer zaren pentsatzen Zure proiektua da, 725 00:33:52,760 --> 00:33:53,650 konpromisoa ez. 726 00:33:53,650 --> 00:33:56,710 Zure proposamena izango da konpromisoa, esaten, hemen, hau da, zer 727 00:33:56,710 --> 00:33:57,770 Nire proiektua egin nahi dut. 728 00:33:57,770 --> 00:33:58,250 Zer deritzozu? 729 00:33:58,250 --> 00:33:58,650 Handiegia? 730 00:33:58,650 --> 00:33:59,145 Txikiegia? 731 00:33:59,145 --> 00:34:00,330 Da kudeatu? 732 00:34:00,330 --> 00:34:02,230 Eta zehaztapenak ikusten duzu xehetasun gehiagorako. 733 00:34:02,230 --> 00:34:05,060 >> Aste pare ondoren egoera txostena, eta hori da, era berean, 734 00:34:05,060 --> 00:34:08,260 casual zure TF email nola esan urrun atzean dira zure azken duzun 735 00:34:08,260 --> 00:34:12,360 proiektuaren inplementazioa, eta ondoren CS50 Hackathon zein guztiontzat 736 00:34:12,360 --> 00:34:17,520 da gonbidatu, eta horrek ekitaldi bat izango da, batetik 8:00 ko 7:00 ak arte arratsaldean PM 737 00:34:17,520 --> 00:34:19,150 AM hurrengo goizean. 738 00:34:19,150 --> 00:34:22,560 Pizza, astean dudan bezala, agian, aipatutako zero, wil izango da 9:00 etan zerbitzatua, 739 00:34:22,560 --> 00:34:24,120 1:00 etan janari txinatar AM. 740 00:34:24,120 --> 00:34:27,929 Eta Oraindik bada esna 5:00 etan, eramango dizugu gosaltzeko IHOP. 741 00:34:27,929 --> 00:34:31,310 >> Beraz Hackathon gehiago bat da klase esperientzia gogoangarria. 742 00:34:31,310 --> 00:34:35,290 Ondoren, abian jartzea aurreikusten da, eta ondoren, climactic CS50 azoka. 743 00:34:35,290 --> 00:34:38,070 Gehiago horiek guztiak buruzko xehetasunak asteetan etorri. 744 00:34:38,070 --> 00:34:40,739 >> Baina goazen itzuli zerbait eskola zaharra - 745 00:34:40,739 --> 00:34:41,920 berriro ere, array bat. 746 00:34:41,920 --> 00:34:45,040 Beraz, array bat izan zen, polita, konpontzen delako dugun bezala, arazoak ikusi besterik ez 747 00:34:45,040 --> 00:34:49,290 Une duela ikaslearen egitura kontrol txiki bat lortu dugu 748 00:34:49,290 --> 00:34:52,405 nahi, ikasle bat, bi ikaslea izatea, ikaslea hiru, ikaslea dot dot dot, 749 00:34:52,405 --> 00:34:54,400 ikasle kopurua funtsik. 750 00:34:54,400 --> 00:34:58,850 >> Array Beraz, aste batzuk lehenago, swooped en eta gure arazoak konpondu ez guztiak 751 00:34:58,850 --> 00:35:03,340 aldez aurretik jakitea zenbat gauza mota batzuk nahi genuke. 752 00:35:03,340 --> 00:35:07,390 Eta ikusi dugu structs duten lagun diezaguke gehiago antolatu gure kodea eta mantendu 753 00:35:07,390 --> 00:35:11,660 kontzeptualki antzeko aldagai bat bezala izena eta etxe batean, elkarrekin, beraz, dugu 754 00:35:11,660 --> 00:35:15,570 tratatzen daiteke erakunde, barruan horietatik daude txikiagoa zuzenak. 755 00:35:15,570 --> 00:35:17,810 >> Baina multzo dute desabantaila batzuk. 756 00:35:17,810 --> 00:35:19,780 Zer dira desabantailak batzuk bat aurkitu dugu 757 00:35:19,780 --> 00:35:22,320 multzo batera, beraz, orain arte? 758 00:35:22,320 --> 00:35:23,450 Zer da hori? 759 00:35:23,450 --> 00:35:28,130 Tamaina finkoa - beraz, nahiz eta agian, nahiz eta bat egin ahal izango da memoria esleitu 760 00:35:28,130 --> 00:35:32,310 array, behin badakizu zenbat ikasle duzu, zenbat karaktere duzu 761 00:35:32,310 --> 00:35:35,460 erabiltzaileari, behin egotzitako dituzun array, mota duzun margotutako 762 00:35:35,460 --> 00:35:36,740 izkinan zeure burua. 763 00:35:36,740 --> 00:35:40,600 >> Ezin delako sartu elementu berriak array baten erdian sartu. 764 00:35:40,600 --> 00:35:43,660 Ezin duzu elementu gehiago sartu array baten amaieran. 765 00:35:43,660 --> 00:35:47,750 Benetan, behar bat sortzeko erabili behar duzu berri oso array, nik eztabaidatu dugun bezala, 766 00:35:47,750 --> 00:35:49,320 zaharrak kopiatzen berria sartu. 767 00:35:49,320 --> 00:35:52,610 Eta, berriro ere, eta buruko mina dela Jorratzen GetString zuretzat ere. 768 00:35:52,610 --> 00:35:56,170 >> Baina, berriro ere, ezin duzu ere sartu array erdian sartu zerbait 769 00:35:56,170 --> 00:35:58,200 tasa bada, ez da erabat bete. 770 00:35:58,200 --> 00:36:03,010 Esate baterako, array hau bada hemen tamaina sei baino ez ditu bost gauza da, eta, 771 00:36:03,010 --> 00:36:06,080 Beno, besterik gabe, ezin duzu Tack amaiera aldera zerbait. 772 00:36:06,080 --> 00:36:08,200 Baina, zer nahi duzu zerbait sartu nahi izanez gero, erdian sartu 773 00:36:08,200 --> 00:36:11,280 array, nahiz eta izan zitekeen bost sei bertan gauzak? 774 00:36:11,280 --> 00:36:14,250 >> Beno, zer denek izan genuen egiten dugu gure boluntarioek giza eszenatokian hasi 775 00:36:14,250 --> 00:36:15,110 aste iragan? 776 00:36:15,110 --> 00:36:18,710 Nahi izanez gero, norbaitek jarri dugu hemen, bai pertsona horiek nola mugitu 777 00:36:18,710 --> 00:36:22,540 modu, edo pertsona horiek nola mugitu era, eta hori izan zen, garestia. 778 00:36:22,540 --> 00:36:26,950 Eta pertsona baten barrutik ikusita array azkenean batuketak eta balio 779 00:36:26,950 --> 00:36:31,240 Gurekin denbora, beraz, asko gure karratu n aldiz exekutatzen txertatzeko ordenatu bezala, for 780 00:36:31,240 --> 00:36:32,550 Adibidez, txarrena kasuan. 781 00:36:32,550 --> 00:36:36,520 Beraz, multzo handiak dira, baina behar duzu aldez aurretik jakin nola big nahi duzun. 782 00:36:36,520 --> 00:36:38,030 >> Beraz, OK, hemen irtenbide bat da. 783 00:36:38,030 --> 00:36:43,860 Ez badut, aldez aurretik jakin zenbat ikasle izan naiz, agian, eta behin jakin behar dut 784 00:36:43,860 --> 00:36:47,870 Erabaki dut, hala ere, nago horrekin trabatuta ikasle askok, zergatik ez dut beti 785 00:36:47,870 --> 00:36:51,740 esleitu birritan askoz espazio agian uste dut jo behar dut? 786 00:36:51,740 --> 00:36:54,450 Hori ez da zentzuzko irtenbide bat? 787 00:36:54,450 --> 00:36:58,240 >> Errealistan, ez dut uste Oraindik dugu 50 baino gehiago behar slots joan 788 00:36:58,240 --> 00:37:02,190 ertain-tamaina-klase bat array batean, Hargatik, besterik gabe, biribildu du. 789 00:37:02,190 --> 00:37:07,040 100 slots egin dut nire array, besterik ahal izateko, zalantzarik gabe lortu du 790 00:37:07,040 --> 00:37:10,330 ikasleek espero dut kopurua ertain klaseko batzuk egongo dira. 791 00:37:10,330 --> 00:37:14,320 Beraz, zergatik ez bakarrik biribildu sortu eta esleitu memoria gehiago, normalean, array bat egiteko 792 00:37:14,320 --> 00:37:16,290 zuk uste baino are gehiago, agian behar duzu? 793 00:37:16,290 --> 00:37:20,190 Zer simple pushback hau ideia hori? 794 00:37:20,190 --> 00:37:21,440 >> Ari zaren memoria alferrik galtzen. 795 00:37:21,440 --> 00:37:25,350 Literalki, programa bakoitzean, ondoren, idatzi da, agian, birritan askoz memoria erabiliz 796 00:37:25,350 --> 00:37:26,680 benetan behar duzu. 797 00:37:26,680 --> 00:37:28,990 Eta hori besterik ez du sentitzen bereziki dotorea konponbidea. 798 00:37:28,990 --> 00:37:31,990 Gainera, gutxitzen besterik ez da Arazo bat probabilitatea. 799 00:37:31,990 --> 00:37:35,300 Gertatuko herri-ikastaro bat izan nahi baduzu seihileko bat eta ez duzu 101 800 00:37:35,300 --> 00:37:39,610 ikasle, zure programa da oraindik funtsean berean, gaia aurrez aurre. 801 00:37:39,610 --> 00:37:44,280 >> Beraz, zorionez, ez dago irtenbide bat da iragarki honetan gure inprimakia arazo guztiak 802 00:37:44,280 --> 00:37:46,790 Datu egiturak dira gehiago baino konplexu 803 00:37:46,790 --> 00:37:47,970 ikusi dugu, beraz, oso urrun. 804 00:37:47,970 --> 00:37:50,530 Hori, nire erreklamatzeko, lotutako zerrenda bat da. 805 00:37:50,530 --> 00:37:51,920 Honek zenbakien zerrenda bat da - 806 00:37:51,920 --> 00:37:54,970 9, 17, 22, 26, eta 34 - 807 00:37:54,970 --> 00:38:00,120 izan dira elkarrekin lotuta modu zer geziak jo dut marraztuko. 808 00:38:00,120 --> 00:38:03,580 >> Beste era batera esanda, nahi izanez gero, adierazten dut array bat, egin nezakeen 809 00:38:03,580 --> 00:38:04,910 honen antzeko zerbait. 810 00:38:04,910 --> 00:38:07,310 Eta hau jarri dut goiburu on besterik gabe, une batean. 811 00:38:07,310 --> 00:38:09,970 Egin nezakeen - 812 00:38:09,970 --> 00:38:12,520 kaixo, guztiak eskuinera. 813 00:38:12,520 --> 00:38:14,470 Stand by. 814 00:38:14,470 --> 00:38:17,360 Ordenagailu berri hemen, argi - 815 00:38:17,360 --> 00:38:18,090 eskubidea. 816 00:38:18,090 --> 00:38:21,730 >> Beraz, zenbaki horiek daukat array bada - 817 00:38:21,730 --> 00:38:28,880 9, 17, 22, 26, 24 - 818 00:38:28,880 --> 00:38:30,530 ez eskalatuko derrigorrez. 819 00:38:30,530 --> 00:38:33,730 Guztiak eskubidea, beraz, hemen nire array da - 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 Guztiak eskubidea, beraz, hemen nire array da. 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 >> [Barreak] 826 00:38:48,820 --> 00:38:49,440 >> DAVID MALAN: itxurak. 827 00:38:49,440 --> 00:38:52,330 Gehiegi ahalegina atzera joan da konpondu, eta, beraz, ez dago - 828 00:38:52,330 --> 00:38:54,290 26. 829 00:38:54,290 --> 00:38:57,650 Beraz, array honen dugu 9, 17, 22, 26, eta 34. 830 00:38:57,650 --> 00:39:00,260 Dituzun horiek ikusi ahal lotsa akatsa egin dut, 831 00:39:00,260 --> 00:39:00,830 Hor dago. 832 00:39:00,830 --> 00:39:04,490 >> Beraz, hori da aldarrikatzen dut Oso irtenbide eraginkorra. 833 00:39:04,490 --> 00:39:07,310 Ints askotan jo dut egotzitako Behar dut - Bat, bi, hiru, 834 00:39:07,310 --> 00:39:09,100 lau, bost edo sei - 835 00:39:09,100 --> 00:39:11,660 eta, ondoren, ez dut gordetako zenbakiak array honen barruan. 836 00:39:11,660 --> 00:39:15,220 Baina demagun, eta, ondoren, sartu nahi dut kopurua 8 atsegin balio bat? 837 00:39:15,220 --> 00:39:16,100 Beno, non ez da joan? 838 00:39:16,100 --> 00:39:18,530 Demagun sartu nahi dut 20 bezalako zenbaki bat. 839 00:39:18,530 --> 00:39:19,790 Beno, non ez da joan? 840 00:39:19,790 --> 00:39:23,160 Nonbait erdi-erdian dago, edo kopurua 35 ditu joan 841 00:39:23,160 --> 00:39:24,010 nonbait amaieran. 842 00:39:24,010 --> 00:39:25,320 Baina espazioaren out nago. 843 00:39:25,320 --> 00:39:29,120 >> Eta, beraz, hau funtsezko erronka bat da multzo hori ez dira konponbidea. 844 00:39:29,120 --> 00:39:32,280 Une duela aldarrikatu nuen, GetString Arazo hau konpontzen. 845 00:39:32,280 --> 00:39:37,380 Nahi duzun seigarren zenbaki bat sartu nahi izanez gero, array honetan sartu, zer bat, gutxienez, da 846 00:39:37,380 --> 00:39:40,090 irtenbide erori atzera dezakezu ziur an, GetString besterik ez dugu egin nahi duzu? 847 00:39:40,090 --> 00:39:44,340 848 00:39:44,340 --> 00:39:46,030 Zer da hori? 849 00:39:46,030 --> 00:39:48,190 >> Beno, egin ezazu handiagoa da errazagoa said egin baino. 850 00:39:48,190 --> 00:39:52,810 Ezin dugu nahitaez egin array handiagoa da, baina zer egin dezakegu? 851 00:39:52,810 --> 00:39:56,570 Berri bat array hori handiagoa da, tamaina 6, edo agian, tamaina 10, nahi badugu 852 00:39:56,570 --> 00:40:00,490 aurretik gauzak lortzeko, eta gero, kopiatzeko berriak sartu array zaharrak, eta, ondoren, 853 00:40:00,490 --> 00:40:01,680 askatzeko zaharrak array. 854 00:40:01,680 --> 00:40:05,770 >> Baina zer exekutatzen denbora da Gaur egun, prozesu hori? 855 00:40:05,770 --> 00:40:09,870 Big n O da, kopiatzea duelako da zuk kostua unitate batzuen joan 856 00:40:09,870 --> 00:40:13,480 denbora, eta, beraz, ez da hain aproposa bada behar dugu esleitu array berri bat, hau da, joan 857 00:40:13,480 --> 00:40:15,610 bi aldiz, askoz kontsumitzen memoria aldi baterako. 858 00:40:15,610 --> 00:40:16,660 Kopiatzeko berriak zaharrak - 859 00:40:16,660 --> 00:40:18,800 Esan nahi dut, besterik gabe, buruko mina, baina horrek da, berriz ere, horregatik idatzi zuen 860 00:40:18,800 --> 00:40:19,920 Zuretzat GetString. 861 00:40:19,920 --> 00:40:21,380 >> Beraz, zer egin dezake ordez egiten dugu? 862 00:40:21,380 --> 00:40:25,000 Beno, bada, gure datu-egitura benetan ditu hutsuneak? 863 00:40:25,000 --> 00:40:30,790 Demagun erlaxatu nire izatearen helburua Alboko memoria zatiak, non 9 864 00:40:30,790 --> 00:40:34,500 eskubidea da eta 17, hau da, hurrengo eskubidea ondoan, 22, eta abar. 865 00:40:34,500 --> 00:40:39,570 >> Eta demagun 9 hori baino gehiago izan daitezke hemen RAM, eta 17 daitezke hemen RAM-en, 866 00:40:39,570 --> 00:40:40,990 eta 22 daitezke hemen RAM batean. 867 00:40:40,990 --> 00:40:43,610 Bestela esanda, ez dut behar, horiek are gehiago atzera itzultzeko. 868 00:40:43,610 --> 00:40:47,850 Izan dut nolabait haria orratz zenbakiak horietako bakoitza, edo bakoitzaren bidez 869 00:40:47,850 --> 00:40:51,010 nodo horiek, hala deitzen dugu laukizuzenak Nik dudan bezala marrazten ditu, nahi 870 00:40:51,010 --> 00:40:55,670 gogoratzen nola joan a lortzeko lehen nodoa, hala nola. 871 00:40:55,670 --> 00:40:59,940 >> Beraz, zer da programazio eraikitzeko ikusi dugu berriki nahiko duten I 872 00:40:59,940 --> 00:41:03,030 haria ezartzen daiteke, edo Hemen marrazten da, eta I can 873 00:41:03,030 --> 00:41:05,430 ezartzeko geziak horiek? 874 00:41:05,430 --> 00:41:06,500 Beraz, erakusleak, ezta? 875 00:41:06,500 --> 00:41:09,560 Esleitu dut, besterik ez bada, beti int, baina nodo bat - eta 876 00:41:09,560 --> 00:41:10,810 nodoa, esan nahi dut, edukiontzi. 877 00:41:10,810 --> 00:41:12,900 Eta ikusmen, laukizuzen bat esan nahi dut. 878 00:41:12,900 --> 00:41:16,420 Nodo bat behar du, beraz, itxuraz, bi balioak eduki behar - 879 00:41:16,420 --> 00:41:21,490 int bera, eta orduan, inplizituki arabera Laukizuzenaren erdi beheko aldean, 880 00:41:21,490 --> 00:41:23,010 int bat espazio nahikoa. 881 00:41:23,010 --> 00:41:26,130 >> Beraz, aurretik pentsatzen hemen, nola big nodo hau da, hau 882 00:41:26,130 --> 00:41:27,170 Galdera edukiontzi? 883 00:41:27,170 --> 00:41:29,250 Zenbat for int du byte? 884 00:41:29,250 --> 00:41:31,310 Ustezko 4, ez bada ohiko berdina. 885 00:41:31,310 --> 00:41:33,270 Eta gero, zenbat byte erakuslea da? 886 00:41:33,270 --> 00:41:33,650 4. 887 00:41:33,650 --> 00:41:37,940 Beraz, edukiontzi hori edo nodo hau da, 8 byte-egitura bat izango da. 888 00:41:37,940 --> 00:41:41,760 Oh, eta hori pozik kasualitatea dela sartu besterik ez dugu nozio hau 889 00:41:41,760 --> 00:41:44,400 egitura bat, edo C egitura bat. 890 00:41:44,400 --> 00:41:48,890 >> Beraz, nahi dut urrats bat aldarrikatzen dut hau sofistikatuagoa norabidean 891 00:41:48,890 --> 00:41:52,560 zenbakien zerrendan, bat ezartzeko lotuta zenbakien zerrendan, egin behar dut 892 00:41:52,560 --> 00:41:56,920 pixka bat gehiago aurrean gora pentsamendu eta deklaratzen ez bakarrik int, baina egitura bat 893 00:41:56,920 --> 00:41:58,620 egingo dudala deitu ohi Hemen, nodoak. 894 00:41:58,620 --> 00:42:01,630 Deitu dugu, ezin dugu ezer egin nahi, baina nodoa da gaikako izateko asko joan 895 00:42:01,630 --> 00:42:03,560 gauza orain begira hasten gara. 896 00:42:03,560 --> 00:42:06,480 >> Nodo horren barruan int n da. 897 00:42:06,480 --> 00:42:09,350 Eta gero, sintaxia hau, apur bat Lehen begiratuan bitxi - 898 00:42:09,350 --> 00:42:12,960 egitura nodo * ondoan. 899 00:42:12,960 --> 00:42:16,900 Pictorially Beno, zer da hori? 900 00:42:16,900 --> 00:42:21,000 Duten beheko erdia da Laukizuzenaren ikusi dugun 901 00:42:21,000 --> 00:42:22,730 une bat besterik ez duela. 902 00:42:22,730 --> 00:42:27,600 >> Baina zergatik nago esaten egitura nodo I * gisa soilik nodo * aurka? 903 00:42:27,600 --> 00:42:31,370 Erakuslea hori apuntatzen bada delako nodo beste batean, besterik ez da 904 00:42:31,370 --> 00:42:32,760 Nodo baten helbidea. 905 00:42:32,760 --> 00:42:35,630 Horixe dugu koherentea erakusleak buruz eztabaidatuko da, beraz, oso urrun. 906 00:42:35,630 --> 00:42:39,690 Baina zergatik, erreklamatzeko badut egitura hau da, izeneko nodoa, ez egitura esan behar dut 907 00:42:39,690 --> 00:42:42,660 Hemen barruan nodo? 908 00:42:42,660 --> 00:42:43,190 >> Zehazki. 909 00:42:43,190 --> 00:42:46,490 C. ergelak errealitate bat sort da Typedef da, nolabait esateko, ez du 910 00:42:46,490 --> 00:42:47,220 gertatu oraindik. 911 00:42:47,220 --> 00:42:48,510 C Super literalean. 912 00:42:48,510 --> 00:42:51,050 Zure kodea goian irakurtzen behean, ezkerretik eskuinera. 913 00:42:51,050 --> 00:42:54,930 Eta hits arte koma hori buruzko beheko lerroa, asmatzeko zer ez 914 00:42:54,930 --> 00:42:57,590 datu-mota bat bezala existitzen? 915 00:42:57,590 --> 00:42:59,060 Nodoa, aurrekontua unquote nodoa. 916 00:42:59,060 --> 00:43:03,050 >> Baina gehiago xeheak adierazpena egin zuen lehenengo lerroan I - 917 00:43:03,050 --> 00:43:05,340 typedef struct nodo - 918 00:43:05,340 --> 00:43:08,790 ziren lehenengo delako, aurretik kizkur giltza, hori sort bezala 919 00:43:08,790 --> 00:43:11,800 pre-heziketarako Clang hori, zuk ez dakit zer, ematen dit egitura bat 920 00:43:11,800 --> 00:43:13,570 izeneko egitura nodo. 921 00:43:13,570 --> 00:43:16,270 Egia, ez zait gustatzen gauza deituz egitura nodoa, egitura nodo guztiak 922 00:43:16,270 --> 00:43:17,090 nire kodea zehar. 923 00:43:17,090 --> 00:43:20,660 Baina besterik ez dut erabili eta gero, besterik gabe, barruan, beraz, eraginkortasunez dut 924 00:43:20,660 --> 00:43:25,010 sortu erreferentzia zirkularra moduko bat, ez bat neure erakuslea berez, baina 925 00:43:25,010 --> 00:43:29,400 bestera erakuslea berdin-mota. 926 00:43:29,400 --> 00:43:32,330 >> Beraz bihurtzen da datu-egitura baten gainean horrela, ez da gutxi batzuen 927 00:43:32,330 --> 00:43:34,470 eragiketa hori izan liteke gurekin interesgarriak. 928 00:43:34,470 --> 00:43:37,460 Txertatu nahi dugu, agian honelako zerrenda batean. 929 00:43:37,460 --> 00:43:39,850 Ezabatu nahi dugu, agian hau bezalako zerrenda batetik. 930 00:43:39,850 --> 00:43:43,490 Nahi zerrendan bilaketak egin genezake balioa, edo, oro har, traverse. 931 00:43:43,490 --> 00:43:46,410 Eta besterik traverse bat Fancy bidea da Irteeran esaten ezkerrean, eta guztiak mugitu 932 00:43:46,410 --> 00:43:47,650 eskuinera bidea. 933 00:43:47,650 --> 00:43:52,640 >> Oharra eta, nahiz eta pixka bat gehiago honekin sofistikatua datuak egitura, utzi 934 00:43:52,640 --> 00:43:56,510 batzuen dugun maileguan hartu ahal proposatu zidan du azken bi astetan ideia eta 935 00:43:56,510 --> 00:43:58,410 ezartzeko funtzioa izeneko hau bezalako bilaketa. 936 00:43:58,410 --> 00:44:01,360 Egia itzuliko da edo joan faltsuak, adieraziz, bai edo 937 00:44:01,360 --> 00:44:03,390 no, n zerrendan dagoela. 938 00:44:03,390 --> 00:44:05,960 Bere bigarren argumentua erakuslea da zerrendan bera, beraz, 939 00:44:05,960 --> 00:44:07,920 nodo bat erakuslea. 940 00:44:07,920 --> 00:44:10,350 >> Guztiak, eta, ondoren, egin dut da deklaratzen aldi baterako aldagai bat. 941 00:44:10,350 --> 00:44:12,730 Deitu beharko dugu ptr konbentzio arabera, erakuslea da. 942 00:44:12,730 --> 00:44:15,220 Eta berdin da esleitu dut zerrendaren hasiera-hasieratik. 943 00:44:15,220 --> 00:44:16,680 >> Eta orain, berriz, nabarituko begizta. 944 00:44:16,680 --> 00:44:20,640 Hain luze erakuslea gisa ez da berdina to NULL, egiaztatu dut. 945 00:44:20,640 --> 00:44:24,520 Erakuslea gezi-n berdina da n izan zen pasa den? 946 00:44:24,520 --> 00:44:26,410 Eta minutu bat itxaron - berriak sintaxia pieza. 947 00:44:26,410 --> 00:44:29,324 Zer da gezi Bat-batean? 948 00:44:29,324 --> 00:44:30,574 Bai? 949 00:44:30,574 --> 00:44:34,200 950 00:44:34,200 --> 00:44:34,810 >> Zehazki. 951 00:44:34,810 --> 00:44:38,860 Beraz, minutu batzuk, berriz, duela erabiltzen dugu izan dot idazkera zerbait sartzeko 952 00:44:38,860 --> 00:44:43,080 duen egitura baten barruan, aldagai bada da zuk ez du egitura 953 00:44:43,080 --> 00:44:47,420 bera, baina egitura bat erakuslea, zorionez, sintaxia pieza bat 954 00:44:47,420 --> 00:44:48,620 azkenik intuitiboa zentzurik. 955 00:44:48,620 --> 00:44:52,360 Gezi esan erakuslea jarraitu, gure geziak normalean, esan bezala, 956 00:44:52,360 --> 00:44:56,570 pictorially, eta joan at datuak Eremu barruan. 957 00:44:56,570 --> 00:44:59,700 Beraz, gezi dot gauza bera da, baina erabiltzen duzun, erakuslea duzu. 958 00:44:59,700 --> 00:45:05,270 >> Beraz, besterik gabe, ondoren laburpena da, n eremuan egitura barruan izeneko erakuslea 959 00:45:05,270 --> 00:45:07,760 berdin berdin n, bueltatu da egia. 960 00:45:07,760 --> 00:45:11,970 Bestela, lerro hau hemen - erakuslea berdinen erakuslea hurrengo. 961 00:45:11,970 --> 00:45:17,540 Beraz, zer egiten ari da, abisua da, badut nago gaur egun egitura seinalatuz 962 00:45:17,540 --> 00:45:21,430 9, eta 9 duten ez da zenbakia Bila nabil - demagun bila nabil 963 00:45:21,430 --> 00:45:22,830 n berdin 50 - 964 00:45:22,830 --> 00:45:25,930 Nire aldi baterako erakuslea eguneratu dut ez nodo horretan seinalatzen 965 00:45:25,930 --> 00:45:31,190 jada, baina erakuslea gezian, eta horrek ni jarri sortu hemen. 966 00:45:31,190 --> 00:45:34,270 >> Orain, zurrunbilo handi bat da, konturatu nintzen Sarrera. 967 00:45:34,270 --> 00:45:37,380 Asteazkena, benetan dugu egin gizakiak batzuekin eta gehiago batzuekin 968 00:45:37,380 --> 00:45:38,900 erritmo motelagoa at kodea. 969 00:45:38,900 --> 00:45:42,990 Baina konturatzen, orain ari gara gure datuak hartzeko egitura konplexuagoa da, beraz, gure 970 00:45:42,990 --> 00:45:45,780 algoritmoak eraginkorragoa lor daiteke, eta horrek da ezinbestekoa izango da joan 971 00:45:45,780 --> 00:45:50,500 pset sei, noiz hasi kargatu dugu, berriro ere, 150.000 hitz, baina behar hori egiteko 972 00:45:50,500 --> 00:45:55,650 eraginkortasunez, eta haien, sortu programa hori gure erabiltzaileek ez egiteko exekutatzen 973 00:45:55,650 --> 00:46:00,460 lineala, ez karratu n, baina etengabeko denbora, ezin hobea da. 974 00:46:00,460 --> 00:46:02,300 >> Ikusiko dugu asteazkenean. 975 00:46:02,300 --> 00:46:07,240 >> Hizlaria: CS50 ondoan, David At bere oinarri kasu ahazten. 976 00:46:07,240 --> 00:46:12,770 >> DAVID MALAN: Eta hori nola bidal Testu mezu C. Zer - 977 00:46:12,770 --> 00:46:14,020 >> [HAINBAT testu mezu JAKINARAZTEA SOUNDS] 978 00:46:14,020 --> 00:46:19,734