1 00:00:00,000 --> 00:00:02,670 [Powered by Google Translate] Artikulua Arazoa Ezarri 2: Hacker edizioa 2 00:00:02,670 --> 00:00:04,910 Rob Bowden, Harvard Unibertsitatea 3 00:00:04,910 --> 00:00:07,410 Hau CS50 da. CS50.TV 4 00:00:07,410 --> 00:00:15,770 Beraz, Rob naiz. Kirkland senior bat naiz. Hau nire, urteko hirugarren CS50 TFing da. 5 00:00:15,770 --> 00:00:22,220 Lehen aldiz tradizionala-antzerkia-style atala aldatzen ari garela da, 6 00:00:22,220 --> 00:00:25,610 , non berrikuspena besterik ez dugu mota hitzaldia gertatu zen, eta, ondoren, guys galderak, 7 00:00:25,610 --> 00:00:32,250 Gaur egun, askoz ere gehiago arazo-oinarritutako izanik, non Espazioak erabiltzen dugu, eta - 8 00:00:32,250 --> 00:00:37,410 Oh, eta, beraz, ideia bidali I lotura duten joan da eta, ondoren, nire Space izango dituzu. 9 00:00:37,410 --> 00:00:42,410 Does Edozeinek ez dute ordenagailu eramangarri bat? Ongi da. 10 00:00:42,410 --> 00:00:47,050 Beraz, erabiltzen ari den honetan ari dugu, eta behar egiteko arazoak goaz atalean bizi 11 00:00:47,050 --> 00:00:50,740 eta eztabaidatzen eta kalkulatzen zer gertatzen 12 00:00:50,740 --> 00:00:56,390 eta tira I baliteke zure kodea, eta zure ideiak eztabaidatzeko ditzake. 13 00:00:56,390 --> 00:01:02,140 Beraz, edonork du zailtasun izan? 14 00:01:02,140 --> 00:01:07,000 Aldean dezakezu chat, ez dakit horren arrazoia dugu egingo. 15 00:01:07,000 --> 00:01:12,270 Orain, aurreko supersection bezala, klase hartan balitz, zer esan buruz badakizu. 16 00:01:12,270 --> 00:01:19,200 P multzo guztietan ez da atal hauetan izango da. 17 00:01:19,200 --> 00:01:22,550 P-set 2 Beraz, zehaztapenak, P-set 1 ikusi duzu dagoeneko uste dut. 18 00:01:22,550 --> 00:01:27,400 Baina, P-set 2 dugu, gaur egun baino gehiago egingo dugu. 19 00:01:27,400 --> 00:01:29,460 Eta galdera atal bat ikusiko duzu. 20 00:01:29,460 --> 00:01:37,530 Beraz, hau da P-multzo guztietan; galdera atal bat izango da. 21 00:01:37,530 --> 00:01:41,340 Orain arte esan dugu, "Demagun hau lantzeko aukera." 22 00:01:41,340 --> 00:01:44,940 Ez dizu eskatuko programa hau aurkeztu behar dute. 23 00:01:44,940 --> 00:01:48,480 Ideia horiek lagunduko duzu arazoa multzoa hasi mota ustezko. 24 00:01:48,480 --> 00:01:53,220 Hacker edizioan guess I, horietako asko dira ustezko berria izan nahiko luke, gauza interesgarri ikasteko. 25 00:01:53,220 --> 00:01:58,590 Agian ez dira zuzenean arazoa multzoa aplikagarri. 26 00:01:58,590 --> 00:02:01,810 Eta une honetan ez gabiltza aurkeztu duzu, baina teorian, 27 00:02:01,810 --> 00:02:07,480 arazoa geroago multzo, aurkeztu dezakezu, eta, horrela, bi aukera hauek dituzu atal 28 00:02:07,480 --> 00:02:10,380 edo ikusi atalean erantzunak lortzeko, edo, besterik gabe, ahal izango dituzu zeure 29 00:02:10,380 --> 00:02:16,350 ez baduzu, nire presentzia gozatzeko sentitzen. 30 00:02:16,350 --> 00:02:21,010 Beraz, hau da, lehen bat dela uste dut. 31 00:02:21,010 --> 00:02:29,280 Oh. Era berean, galdera-atal hauen pean ere dizugu eskatu film labur buruzko galderak. 32 00:02:29,280 --> 00:02:33,440 Beraz, I guess, teorian, zu ustezko horiek ikusi ahal izateko atal etorri aurretik, 33 00:02:33,440 --> 00:02:38,550 baina fina da, ez baduzu, hala ere joan dugu haien gainean. 34 00:02:38,550 --> 00:02:42,590 Beraz, ezin dugu hasteko: "Nola, berriz, begizta bat du do-bitartean begizta bat datoz? 35 00:02:42,590 --> 00:02:46,210 Bigarrenak, berriz, bereziki erabilgarria da? " 36 00:02:46,210 --> 00:02:49,390 Beraz, edonork izan edozein? 37 00:02:49,390 --> 00:02:52,730 [Student] do bitartean-loop beti izango da gutxienez behin exekutatu. 38 00:02:52,730 --> 00:03:02,950 Bai. Beraz, desberdintasuna da. A bitartean loop - I'll do it hemen loop, berriz, baldintza dugu 39 00:03:02,950 --> 00:03:19,760 hemen, berriz, do-, berriz, ez duzu egoera bat lortu arte hemen. 40 00:03:19,760 --> 00:03:24,130 Eta, beraz, zure programa da, exekutatzean lortzen, eta bitartean loop 41 00:03:24,130 --> 00:03:26,380 egiaztatzen berehala baldintza egia bada. 42 00:03:26,380 --> 00:03:30,710 Baldintza hori ez da Egia bada, aski izango da saltatzeko baino gehiago begizta oso-osorik. 43 00:03:30,710 --> 00:03:34,390 Do-bitartean loop, programa exekutatzean gisa, "egin." Egingo du 44 00:03:34,390 --> 00:03:37,920 Ezer ez da puntu honetan gertatzen da, besterik gabe jarraitzen du exekutatzean. 45 00:03:37,920 --> 00:03:42,690 Orduan ", berriz," hits baldintza egia bada, begizta izango da atzera, eta berriro egin 46 00:03:42,690 --> 00:03:46,730 eta behin eta berriz baldintza arte ez da egia, eta, ondoren, soilik erortzen bidez. 47 00:03:46,730 --> 00:03:50,600 Beraz, aldea, hori oso Irteeran eskubidea salta dezakezu. 48 00:03:50,600 --> 00:03:56,770 Nahitaez exekutatzen behin eta, ondoren, aldiz gehiago exekutatu baldintza egia da, oraindik ere bada. 49 00:03:56,770 --> 00:04:03,720 Beraz, berriz, loop bakarrik egin ondoren, edo, berriz, loop - Agian ez dugu egin beharko, 50 00:04:03,720 --> 00:04:07,900 bezala iritsi bezain laster, geroztik, baldintza faltsua bada, besterik ez dugu saltatzeko eskubidea baino gehiago. 51 00:04:07,900 --> 00:04:11,770 Do-bitartean, berriz, loop, exekutatu egingo dugu behin, nahitaez. 52 00:04:11,770 --> 00:04:14,560 Ondoren, lortu dugun baldintza da, egia edo gezurra bada egiaztatu dugu. 53 00:04:14,560 --> 00:04:19,790 Egia da, bada, ez dugu berriro, bestela, besterik ez dugu jarraitzea. 54 00:04:19,790 --> 00:04:24,680 Beraz, azken hori bereziki erabilgarria? 55 00:04:24,680 --> 00:04:31,190 Beraz, esan daiteke, 4 urte osoa, 3 urte, edozein. 56 00:04:31,190 --> 00:04:38,780 egin dudan programazioa, erabiltzen dut hau, atsegin 10 aldiz pean. 57 00:04:38,780 --> 00:04:43,140 Eta, ziurrenik, horietako 5 CS50 dira-, berriz, loops ari gara sartuz. 58 00:04:43,140 --> 00:04:47,510 Beraz, ez loops-erabiltzen duzu? 59 00:04:47,510 --> 00:04:49,510 Denean - bai? 60 00:04:49,510 --> 00:04:53,180 [Student] erabiltzaile sarrera, edo zerbait egiaztatu nahi duzun iritsi saiatzen ari zaren 61 00:04:53,180 --> 00:04:59,700 Bai. Horretarako, berriz, loops, erabiltzaileak sarrera handi bat da. 62 00:04:59,700 --> 00:05:03,160 Horregatik, lehenengo bikoteak arazo multzo, erabiltzaileak eskatu, nahi duzun 63 00:05:03,160 --> 00:05:08,520 "Eman dit kate," ezin jarraitu kate hori lortu arte. 64 00:05:08,520 --> 00:05:12,980 Eta, beraz, nahitaez, duzu, katea eskatu behar gutxienez behin. 65 00:05:12,980 --> 00:05:16,950 Baina gero, erantzuten du zerbait txarra izanez gero, eta ondoren behar loop atzera eta galdetu berriro. 66 00:05:16,950 --> 00:05:20,810 Baina beste erabiltzailearen sarrera baino, oso arraroa da aurkitzen dut kasu bat 67 00:05:20,810 --> 00:05:27,170 non nahi loop dut "gutxienez behin", baina ziurrenik gehiago. 68 00:05:27,170 --> 00:05:33,370 Galdera edo -? Erabiltzen du edonork do bitartean-begizta bat beste inon? 69 00:05:33,370 --> 00:05:36,780 Ongi da. Hurrengo Beraz, "Zer esan nahi du undeclared identifikatzailea 70 00:05:36,780 --> 00:05:43,310 normalean adierazten clang by outputted bada? " 71 00:05:43,310 --> 00:05:47,380 Beraz, zer nolako kode iritsi idazten dut 'undeclared identifikatzailea?' 72 00:05:47,380 --> 00:05:49,550 [Student] x = 2? 73 00:05:49,550 --> 00:05:52,650 Beraz, saiatu egin behar dugu hemen, x = 2. 74 00:05:52,650 --> 00:06:04,830 Hau abiarazi dugu - oh, ez nuen egin klik. Hortaz, hona hemen jaso dugu eskubidea. 75 00:06:04,830 --> 00:06:07,100 : "Identifikatzailea undeclared x Erabili". 76 00:06:07,100 --> 00:06:11,610 Beraz, undeclared identifikatzailea, aldagai bat da. 77 00:06:11,610 --> 00:06:13,910 Identifikatzaile bat aldakorra maiz deitu izango da. 78 00:06:13,910 --> 00:06:17,300 Beraz, agian ez daki benetan aldagai bat da, ez daki zer den. 79 00:06:17,300 --> 00:06:19,380 Beraz, identifikatzaile bat da. 80 00:06:19,380 --> 00:06:26,060 Beraz, zergatik da undeclared? Bai. 81 00:06:26,060 --> 00:06:32,190 Beraz, argi eta garbi izan behar du terminologia, aldagai baten aitorpena 82 00:06:32,190 --> 00:06:37,360 "int x," edo "kate y," edozein dela ere esan duzu. 83 00:06:37,360 --> 00:06:41,910 Aldagaia hasieratzeko, edo aldagaia esleipena, 84 00:06:41,910 --> 00:06:44,510 duzunean esan "x = 2." 85 00:06:44,510 --> 00:06:52,950 Beraz, honako hauek egin ahal izango dugu, urrats desberdinetan, int x, x = 2, eta arte stuff sorta bat izan dezakegu hemen 86 00:06:52,950 --> 00:07:00,350 baina lerro hau gertatzen den arte, x dago oraindik uninitialized, baina izendatu du. 87 00:07:00,350 --> 00:07:06,760 Eta horrela, jakina, ezin dugu egin lerro 1, eta, gaur egun, eta ari gara geratuko hasieratzean. 88 00:07:06,760 --> 00:07:10,730 Zalantzak dituzu? 89 00:07:10,730 --> 00:07:18,390 Eta, azkenik, "Caesar Cipher Zergatik ez da oso segurua?" 90 00:07:18,390 --> 00:07:23,830 Beraz, lehenik eta behin, ez du edonork nahi Caesar Cipher zer esan nahi da? 91 00:07:23,830 --> 00:07:28,100 [Student] Caesar Cipher mapa duzun besterik ez da, letra bakoitzak mugitzeko, 92 00:07:28,100 --> 00:07:34,420 letrak kopuru jakin bat joan, eta eraman baino gehiago, eta ez da oso segurua delako 93 00:07:34,420 --> 00:07:42,260 ez da bakarrik 26 aukera, eta horietako bakoitzean 1 saiatu besterik ez duzu lortu arte. 94 00:07:42,260 --> 00:07:45,470 Oh. Beraz, errepikatu egin behar dut? 95 00:07:45,470 --> 00:07:51,600 Caesar Cipher, it's - Esan nahi dut, daiteke duzu arazoak aurre - 96 00:07:51,600 --> 00:07:56,110 edo arazo-multzo hori ez da hacker edizioan edizio estandarra uste dut. 97 00:07:56,110 --> 00:08:01,550 Beraz, arazoa multzoa estandarra edizioan, mezu bat lortuko duzu, hala nola, "Kaixo mundua" 98 00:08:01,550 --> 00:08:08,410 Horrez gain, 6 bezalako zenbaki bat, eta mezu hori hartuko duzu, eta pertsonaia bakoitzak banakako, 99 00:08:08,410 --> 00:08:11,310 biratu alfabetoaren 6 posizio. 100 00:08:11,310 --> 00:08:16,560 Beraz, 'h' kaixo h-i-j-k-l-m-n bihurtuko litzateke. 101 00:08:16,560 --> 00:08:19,600 Beraz, lehenengo letra n izango litzateke. Gauza bera egiten dugu, e. 102 00:08:19,600 --> 00:08:23,530 Dugu bada, nahi, z edo zerbait, eta gero itzuli itzulbiratu dugu inguruan 'A' 103 00:08:23,530 --> 00:08:29,280 Baina pertsonaia bakoitzak lortzen cycled alfabetoaren 6 karaktere geroago, eta ez da oso segurua 104 00:08:29,280 --> 00:08:35,440 zenbat modu bakarra gutun bat biltzeko ezin duzu bakarrik 26 aukera daude. 105 00:08:35,440 --> 00:08:42,919 Beraz, besterik gabe, saiatu guztiak, horietako 26, eta, ustez, long message nahikoa 106 00:08:42,919 --> 00:08:46,860 horiek ahalik eta 26 gauza 1 bakarrik irakurgarri izango da, 107 00:08:46,860 --> 00:08:50,300 eta irakurgarri bat da jatorrizko mezua izango da. 108 00:08:50,300 --> 00:08:56,240 Beraz, ez da ezer guztiak at enkriptatzeko modu oso ona. 109 00:08:56,240 --> 00:08:59,070 Film labur horiek zerikusirik, "Zer funtzio bat da?" 110 00:08:59,070 --> 00:09:03,370 Beraz, zer funtzio bat da? Bai. 111 00:09:03,370 --> 00:09:11,640 [Student] kode joan bidez, eta, ondoren, edozein izanda ere balio itzulera deitu ahal duzu aparteko pieza bat bezalakoa da. 112 00:09:11,640 --> 00:09:18,160 Bai. Beraz, erantzun dut ere hurrengo erantzunez edo errepikatu ere, besterik gabe, hurrengo erantzunez. 113 00:09:18,160 --> 00:09:22,410 Funtzioak erabili ditzakezu ordez kodea kopiatu eta itsasteko baino gehiago eta gehiagoko berriro. 114 00:09:22,410 --> 00:09:27,200 Just kodea duten fuction batean jarri, eta, ondoren, besterik gabe, ezin duzu funtzioa deitu 115 00:09:27,200 --> 00:09:29,870 lekuan izan zara kopiatu eta itsasten. 116 00:09:29,870 --> 00:09:33,350 Beraz, funtzio erabilgarria. 117 00:09:33,350 --> 00:09:35,860 Beraz, orain benetako arazo egin dugu. 118 00:09:35,860 --> 00:09:46,490 Lehena. Lehenengo ideia Beraz, pasatzen duzu kate bat, eta edozein 119 00:09:46,490 --> 00:09:52,060 edo minuskulaz guztiak ez esan? Horrek ez du esan minuskulaz guztiak. 120 00:09:52,060 --> 00:09:57,730 Beraz, mezua ezer izan daiteke, eta - oh ez. Egiten du. 121 00:09:57,730 --> 00:10:01,610 "Sinpletasuna, demagun erabiltzaileak sarrera minuskulak eta zuriuneak bakarrik ahal izango duzu." 122 00:10:01,610 --> 00:10:08,180 Beraz, letrak minuskulaz mezu bat gainditu dugu eta, ondoren, Ordezko 123 00:10:08,180 --> 00:10:15,450 kapitala eta minuskulaz arteko kate kapitala eta minuskulaz, txandaka aldatzen dugu. 124 00:10:15,450 --> 00:10:22,920 Beraz, eman aurretik dizugu bigarren arazoa ere murgiltzea, 125 00:10:22,920 --> 00:10:32,420 zer egin behar dugun lehenengo gauza da? 126 00:10:32,420 --> 00:10:36,900 Oh, zer egin klik egin besterik ez dut? Oh, hemen mezu elektroniko bat besterik ez dut, bertan klik eginez. 127 00:10:36,900 --> 00:10:42,870 Beraz, lehenengo gauza egin behar dugu, am bilatzen dut oker bat? 128 00:10:42,870 --> 00:10:49,320 , Hau da hau? 129 00:10:49,320 --> 00:10:51,320 Ez, horiek oraindik ez dago, baina. 130 00:10:51,320 --> 00:10:55,160 Ados, oraindik hemen. 131 00:10:55,160 --> 00:11:03,160 Orain, ezin dugu bere gain hartzen? Bai. Hemen ezin dugu bere gain hartzen dela soilik minuskulaz eta espazioak. 132 00:11:03,160 --> 00:11:07,770 Beraz, orain Izan ere, letrak edozein izan nahi dugu izan daiteke aurre egin behar dugu. 133 00:11:07,770 --> 00:11:11,910 Eta horrela, lehenengo gauza egin nahi dugu, besterik ez da mezua. 134 00:11:11,910 --> 00:11:19,790 Kate bat lortu behar dugu, kate s = GetString, ados. 135 00:11:19,790 --> 00:11:24,890 Orain arazo hau, hura egiteko moduak pare bat dira. 136 00:11:24,890 --> 00:11:29,840 Baina hemen bitekin operadoreak erabil nahi dugu. 137 00:11:29,840 --> 00:11:35,280 Ba bai ziren ez supersection hartan, 138 00:11:35,280 --> 00:11:37,480 edo horrelako zerbait, eta ez dakit zer bitekin operadoreak dira? 139 00:11:37,480 --> 00:11:41,710 Edo nola ASCII dute inolaz ere? 140 00:11:41,710 --> 00:11:45,650 [Student] ez zen dut supersection da, baina ezagutzen dut zer bitekin operadoreak dira. 141 00:11:45,650 --> 00:11:49,560 Ongi da. Orduan ez daukat horien oinarriak baino gehiago joan dira, baina azalduko dut 142 00:11:49,560 --> 00:11:51,830 Hemen zer erabili nahi dugu. 143 00:11:51,830 --> 00:11:59,680 Beraz, 'A': Binary hiriburua A ordezkaritza, kopurua 65 izango da. 144 00:11:59,680 --> 00:12:07,560 Begiratu besterik ez naiz - 41 01000001 izango da. 145 00:12:07,560 --> 00:12:14,170 Beraz, 65 hamartarrean izan behar du, beraz, pertsonaia hiriburua A. ordezkaritza bitarra da 146 00:12:14,170 --> 00:12:19,440 Orain, pertsonaia ordezkaritza bitarra minuskula 'a' 147 00:12:19,440 --> 00:12:33,350 gauza bera izan da, eta ia-ia. Dela - 6, bai. Eskubidea da. 148 00:12:33,350 --> 00:12:37,670 Beraz, bitar hiriburua, bitar minuskulaz '.' 149 00:12:37,670 --> 00:12:43,940 Beraz, A eta 'a' bit hau bakarra da. Arteko aldea nabarituko 150 00:12:43,940 --> 00:12:49,440 Eta hau gertatzen da 32 bit bit kopurua 32 ordezkari izan. 151 00:12:49,440 --> 00:12:53,910 Eta zentzua A 65 geroztik, 'a' 97. 152 00:12:53,910 --> 00:12:56,610 Bien arteko aldea 32. 153 00:12:56,610 --> 00:13:03,770 Beraz, gaur egun A 'a' bihur dezakegu A hartuz badakigu 154 00:13:03,770 --> 00:13:09,710 eta bitekin ORing, - duten itxura bat 1. 155 00:13:09,710 --> 00:13:20,900 Bitekin EDO, 00100000 da, eta hori eman egingo '.' 156 00:13:20,900 --> 00:13:26,850 Eta 'a' gaitezke A bitekin ANDing 157 00:13:26,850 --> 00:13:33,700 11, leku horretan, 11111 0. 158 00:13:33,700 --> 00:13:43,840 , Beraz, hau izango da, ondoren ematen diguten zehazki zer 'a' izan zen, baina bertan behera utzi banakako bit hau, 159 00:13:43,840 --> 00:13:50,070 beraz, 01000001 izan dugu, ez dakit zenbatuko diot. 160 00:13:50,070 --> 00:13:56,750 Baina teknika hau bitekin ORing kapitalaren minuskula 161 00:13:56,750 --> 00:14:02,080 eta bitekin minuskulaz kapital ANDing ez da A. esklusiboa 162 00:14:02,080 --> 00:14:06,510 Letrak guztiak, vs k K, Z vs z, 163 00:14:06,510 --> 00:14:10,080 horien guztien besterik ez dira single bit desberdinak. 164 00:14:10,080 --> 00:14:16,290 Eta, beraz, hau erabili ahal izango duzu, edozein letra minuskulaz from maiuskulaz edozein eta alderantziz aldatzeko. 165 00:14:16,290 --> 00:14:26,670 Ongi da. Beraz, horretatik lortzeko modu erraz bat, beraz, ordez beharrik 166 00:14:26,670 --> 00:14:32,170 idatzi edozein izanda ere 1011111 - Zenbaki hau adierazten modu erraza da, eta hau ez da bat 167 00:14:32,170 --> 00:14:39,710 joan dela ditut supersection en, baina Tilde (~) bitekin operadorea bat da. 168 00:14:39,710 --> 00:14:42,520 Zer ~ ez da bit ordezkaritza itxura da. 169 00:14:42,520 --> 00:14:45,630 Dezagun edozein zenbaki. 170 00:14:45,630 --> 00:14:53,130 Zenbaki bitar batzuk besterik ez da, eta zer ~ ez da flips besterik ez bit-guztiak. 171 00:14:53,130 --> 00:15:00,630 Beraz, 1, 0 da, hau da, 0, 1, 010100. 172 00:15:00,630 --> 00:15:08,320 Beraz, ~ guztiak ez. Kentzeko - Beraz, 32 zenbakia izango da - 173 00:15:08,320 --> 00:15:23,320 beraz, 32 zenbakia 00100000 joan, eta, beraz, hau ~ izango da 174 00:15:23,320 --> 00:15:29,980 zenbaki hau hemen ANDed I 'a'. 175 00:15:29,980 --> 00:15:35,600 Denek ikusi hori? Nahiko ohikoa da, hau da, irudikatu nahi duzun bezala 176 00:15:35,600 --> 00:15:40,740 dugun ikusteko agian, ikusi nahi dugu gauzak geroago - 177 00:15:40,740 --> 00:15:44,710 edo nahi dugun guztia, bit multzo bakoitza 1 izan ezik 178 00:15:44,710 --> 00:15:47,910 bit dugu ez dutela nahi ezarri ~ egin ohi duzu. 179 00:15:47,910 --> 00:15:53,090 Beraz, ez dugu nahi, ez dugu 32 ~ 32 bit multzo beraz. 180 00:15:53,090 --> 00:15:57,790 Ongi da. Beraz, horiek guztiak erabili ahal izango dugu hemen. 181 00:15:57,790 --> 00:16:03,000 Ondo da, beraz, fina egiten ari ez bada, poliki-poliki egingo dugu, oinez baino gehiago elkarrekin, 182 00:16:03,000 --> 00:16:11,870 edo horren gainean ibiltzea, eta, beraz, honen bidez. Ibili honen bidez. 183 00:16:11,870 --> 00:16:20,790 Beraz, gure katea dugu, eta kate horretan pertsonaia besteen gainetik loop nahi dugu, eta ez da zerbait. 184 00:16:20,790 --> 00:16:26,710 Beraz, nola egin dugun kate bat baino gehiago loop? Zer erabili behar dugu? 185 00:16:26,710 --> 00:16:30,980 Ez dut hemen egin behar. Bai. 186 00:16:30,980 --> 00:16:42,940 Beraz, nire iterator daukat, eta esan zuen, baina nola egiten da zenbat karaktere katea ezagutzen dut? 187 00:16:42,940 --> 00:16:47,030 (S), Strlen gero i + +. 188 00:16:47,030 --> 00:16:49,860 Beraz, zer egin dut hemen ez da gauzak egiteko modurik onena. 189 00:16:49,860 --> 00:16:51,860 Does Edozeinek daki zergatik? 190 00:16:51,860 --> 00:16:55,290 Ari zaren hizkuntza katea aldi bakoitzean bakarra delako egiaztapena. 191 00:16:55,290 --> 00:17:06,859 Ari gara strlen eraman nahi, beraz, esan nuen hemen, int luzera = strlen (s), 192 00:17:06,859 --> 00:17:11,900 eta, ondoren, 00:17:20,410 Ere egin izan dut int i = 0, length = strlen (s). 194 00:17:20,410 --> 00:17:25,010 Eta, beraz, hau da, pixka bat hobe, orain geroztik esparrua mugatuta dut 195 00:17:25,010 --> 00:17:29,150 luzera aldakorreko hau loop '', ordez geratuko aurretik 196 00:17:29,150 --> 00:17:34,990 eta beti existitzen, eta kasu horretan, ez duzu harrapatzen zergatik hori txarra da, 197 00:17:34,990 --> 00:17:39,410 edo zergatik jatorrizko txarra zen, it's - etan hasiko da, begizta. 198 00:17:39,410 --> 00:17:43,380 Egoera egiaztatu nuen. 00:17:46,790 S luzera Beraz, dezagun batera "hello" denbora osoan lan. 200 00:17:46,790 --> 00:17:49,670 Beraz, s luzera, h-e-l-l-o. Length 5 da. 201 00:17:49,670 --> 00:17:57,580 Beraz, i = 0, luzera 5, beraz, ez da i <5, loop jarraitzen du, beraz. 202 00:17:57,580 --> 00:18:02,750 Ondoren, berriro ere joaten gara. Egoera egiaztatu dugu. 00:18:08,390 Beraz, dezagun kaixo luzera egiaztatu. H-e-l-l-o. Hau 5 da, ez da i <5, beraz, berriro jarraituko dugu. 204 00:18:08,390 --> 00:18:13,330 Beraz, ari gara kalkulatzeko kaixo ari gara kontatuta, begizta-iterazio bakoitzeko, 205 00:18:13,330 --> 00:18:17,380 nahiz eta pentsatu ez da inoiz aldatu behar da beti 5 izango. 206 00:18:17,380 --> 00:18:22,530 Beraz, gogoratu besterik ez dugu 5 aurrean sortu, eta, gaur egun, dena da hobea. 207 00:18:22,530 --> 00:18:24,990 Beraz, kate osoa zehar errepikatzean. 208 00:18:24,990 --> 00:18:31,470 Zer katea pertsonaia bakoitzak egin nahi dugu? 209 00:18:31,470 --> 00:18:38,510 [Student hitz egitea, ulertezinak] 210 00:18:38,510 --> 00:18:47,000 Bai. Beraz, pertsonaia ez-alfabetiko bada, ondoren, nahi dugu gainean saltatzeko. 211 00:18:47,000 --> 00:18:52,300 Besterik ez dugu letra alfabetiko buruzko zaintzeko delako; ezin dugu zenbaki bat kapitalizatu. 212 00:18:52,300 --> 00:19:10,850 Beraz, nola egin dezaket hori? Gure egoera Beraz, nahi dugu, eta, beraz, zerbait bada egiaztatu da alfabetikoki. 213 00:19:10,850 --> 00:19:14,060 Beraz, nola egiten da hau egiaztatu dugu? 214 00:19:14,060 --> 00:19:18,720 [Student] bakarrik erabili ditzakezu funtzioa alpha da. 215 00:19:18,720 --> 00:19:23,160 Hau da, horiek bai, edo edozein bezala, char.h edo zerbait? 216 00:19:23,160 --> 00:19:32,710 Dezagun ez erabiltzea alfa funtzioa da, eta esplizitua erabili s [i] dugu, 217 00:19:32,710 --> 00:19:40,460 s izaera zortzigarren da, gogoratu duen katea karaktere array bat da, 218 00:19:40,460 --> 00:19:43,180 s zortzigarren izaera, beraz. 219 00:19:43,180 --> 00:19:49,280 Orain, maiuskulaz bada, badakigu gama jakin bat izango du. 220 00:19:49,280 --> 00:19:54,370 Eta zer da sorta hori? 221 00:19:54,370 --> 00:20:07,860 Bai. Beraz, bada s [i] ≥ 65, eta s [i] ≤ 90, zer egin behar ordez egin behar dut? 222 00:20:07,860 --> 00:20:18,470 Bai. Beraz, erabat behar duzu inoiz ez, nahiz eta ezer inoiz balioak ASCII ezagutu behar. 223 00:20:18,470 --> 00:20:25,640 Inoiz ez uste zenbakiak 65, 90, 97 eta 102, edo dena delakoa da. 224 00:20:25,640 --> 00:20:32,470 Ez duzu behar - 112 -? Guztietan horiek ezagutu ez duzu behar. Hori gertatzen da ere. 225 00:20:32,470 --> 00:20:41,940 Bakarrik erabili single-karaktere, single quote konstanteak. Beraz, 'A', eta 90 baino gutxiago 'Z.' 226 00:20:41,940 --> 00:20:47,930 Eta hori nabarmen hobea da, ez nuke jakingo off Z nire buru gainean 90. 227 00:20:47,930 --> 00:20:52,690 Jakin off dut nire burua top 'Z' da hiriburua Z. 228 00:20:52,690 --> 00:21:02,100 Beraz, baldin eta kapital-sorta A kapital-Z, edo guk minuskulaz egiaztatu 229 00:21:02,100 --> 00:21:17,010 Edo barrutia bada ≥ 'a' eta ≤ z. 230 00:21:17,010 --> 00:21:19,010 Beraz, gure egoera. 231 00:21:19,010 --> 00:21:22,520 Gauza horiek non jarri behar estiloa aldatu egiten da. 232 00:21:22,520 --> 00:21:29,520 Egin dut hau atsegin dute. 233 00:21:29,520 --> 00:21:31,520 Orain, zer egin nahi dugu? 234 00:21:31,520 --> 00:21:39,530 Gutun hau pertsonaia bat da, alfabetikoki karaktere bat ezagutzen dugu. 235 00:21:39,530 --> 00:21:46,270 Beraz, hau ala ez izan maiuskulaz edo minuskulaz gutun bat arteko Ordezko behar dugu. 236 00:21:46,270 --> 00:21:48,820 Nola mantendu dugu pista bat izan nahi dugu? 237 00:21:48,820 --> 00:21:55,520 [Student ahotsak, ulertezina] 238 00:21:55,520 --> 00:21:59,150 Beraz, bai, baina let me egiaztatu. 239 00:21:59,150 --> 00:22:04,910 Modulua 0-2 izan zen esan, bota iradokizun bat izan zen, eta horrekin ados dut. 240 00:22:04,910 --> 00:22:11,780 Oharra izan ezik, horrela da kasu honetan? Bai. 241 00:22:11,780 --> 00:22:18,270 Beste behin, baina ezin dugu modulua 2 i, edo 2 mod i, geroztik 242 00:22:18,270 --> 00:22:22,950 nabarituko E hiriburua da, eta 'a' minuskulaz? Baina espazio bat banantzen da? 243 00:22:22,950 --> 00:22:27,150 Beraz, bera mod 2 ari dira joan, baina hainbat kasu Oraindik dute. 244 00:22:27,150 --> 00:22:29,150 [Student galdera, ulertezina] 245 00:22:29,150 --> 00:22:34,690 Bai. Beraz, ari gara Aldaketa bat mantendu egingo da. 246 00:22:34,690 --> 00:22:38,730 Hori ere egin izan dugu hemen nahi badugu; little unwieldy bat lortu dezake 247 00:22:38,730 --> 00:22:41,300 loop deklarazioak; jarri dut hemen. 248 00:22:41,300 --> 00:22:48,840 Beraz, int count = 0 hasten da. 249 00:22:48,840 --> 00:22:54,070 Eta, beraz, orain, zenbat alfabetikoan karaktere izan dugu zenbatu dut joan. 250 00:22:54,070 --> 00:22:59,550 Beraz, ezinbestean ari gara + + geroztik alfabetikoan beste pertsonaia bat aurkitu genuen zenbatzeko. 251 00:22:59,550 --> 00:23:09,130 Baina, eta, beraz, gaur egun bada Aldaketa mod 2 ari zaren esaten. 252 00:23:09,130 --> 00:23:12,590 Beraz, zer Aldaketa mod 2 bada? Oh. == 0 egin dut oraingoz. 253 00:23:12,590 --> 00:23:21,740 Dugu ere joan dela. Beraz Aldaketa mod 2 == 0 bada, orduan zer? 254 00:23:21,740 --> 00:23:27,830 [Ikasleak erantzun, ulertezina] 255 00:23:27,830 --> 00:23:32,750 Beraz, azkenean, letra maiuskulaz nahi dugu. 256 00:23:32,750 --> 00:23:37,520 2 kasu daude; maiuskulaz eta minuskulaz 2 kasuetan. 257 00:23:37,520 --> 00:23:40,990 Beraz, letra xehez baduzu maiuskulaz egin behar dugu. 258 00:23:40,990 --> 00:23:43,710 Da maiuskulaz bada, ez dugu ezer egin behar. 259 00:23:43,710 --> 00:23:50,760 Baina, ez dago modu bat - shouldn't dute iraulita 260 00:23:50,760 --> 00:23:54,800 ez dugu, nahiz eta behar ote den ikusteko maiuskulaz edo minuskulaz? 261 00:23:54,800 --> 00:24:02,240 Zer egin dezaket beti beti dugun amaituko sortu maiuskulaz ziurtatu egiten dugu? 262 00:24:02,240 --> 00:24:07,830 Beraz, nabarituko minuskulaz 'a' zer egin dugu; zer zehatza gauza bera egin dugu A maiuskulaz? 263 00:24:07,830 --> 00:24:11,900 Does MAIUSKULAZ aldaketa bat, edo balio-aldaketa ez? 264 00:24:11,900 --> 00:24:23,100 Bai. Horrela, edozein maiuskulaz bitekin ~ 32 ANDed berean maiuskulaz pertsonaia izango da 265 00:24:23,100 --> 00:24:29,220 edozein maiuskulaz pertsonaia delako 32 bit ez da ezarri. 266 00:24:29,220 --> 00:24:40,920 Beraz, bada s [i], minuskulaz edo maiuskulaz bihurtu nahi dugu pertsonaia ekarri nahi dugu. 267 00:24:40,920 --> 00:24:46,890 Beraz, bada minuskulaz izan zen, eta gaur egun da maiuskulaz, maiuskulaz izanez gero, oraindik da maiuskulaz, eta hori da. 268 00:24:46,890 --> 00:24:54,290 Hau esan dut en supersection: 32 erabili dezakezu nahi baduzu, baina egiten 'a', nahiago ohi dut - A, 269 00:24:54,290 --> 00:25:01,150 ordez, besterik gabe, 32 arrunta,, beste bit edozein delako izan daiteke. 270 00:25:01,150 --> 00:25:03,610 32 bit ondoren, horietako edozein izan daiteke, edo ez genuke nahikoa 271 00:25:03,610 --> 00:25:05,840 zenbakiak pertsonaiak irudikatzeko. 272 00:25:05,840 --> 00:25:09,110 Beraz, bada, 32 bit, 64 bit, 128 bit izan zitekeen. 273 00:25:09,110 --> 00:25:13,990 Bit horietako edozein bit maiuskulak eta minuskulak bereizten izan daiteke. 274 00:25:13,990 --> 00:25:18,350 Ez behar dut zertan, 32 bit ezagutu. 275 00:25:18,350 --> 00:25:27,130 Hau 'a' erabili ahal izango I - A bit bien arteko desberdina 276 00:25:27,130 --> 00:25:33,000 zenbaki magikoa dela 32 oinarritzen beharrik gabe. 277 00:25:33,000 --> 00:25:38,770 Eta, beraz, gaur egun, bestela zenbatu zen bakoitiak, eta, beraz, zer egin nahi dut? 278 00:25:38,770 --> 00:25:43,920 [Student erantzun, ulertezina] 279 00:25:43,920 --> 00:25:45,920 [Student] Zer da hori? 280 00:25:45,920 --> 00:25:49,850 1 bigarren egingo dut. 281 00:25:49,850 --> 00:25:55,690 Beraz, nahi badut ziurtatu pertsonaia da orain minuskulaz egin nahi dut, 282 00:25:55,690 --> 00:26:04,140 eta, beraz, edo ezin dut 32, eta 32 esanahia 'a' - A. 283 00:26:04,140 --> 00:26:06,510 Baina oharra, aurreko bezala arrazoiketa, gero 284 00:26:06,510 --> 00:26:11,670 gutun zen dagoeneko minuskulaz eta, ondoren, 32, hain zuzen mantentzen ditu minuskula ORing. 285 00:26:11,670 --> 00:26:16,220 Ez du jatorrizko karaktere aldatu. 286 00:26:16,220 --> 00:26:19,910 Baina, orain ez dut esaten "da minuskulaz bada, besterik ez da ahaztu saihesteko, 287 00:26:19,910 --> 00:26:23,650 maiuskulaz izanez gero, gero aldatu. " 288 00:26:23,650 --> 00:26:26,900 Askoz ere erosoagoa hau egin nahi da. 289 00:26:26,900 --> 00:26:33,190 [Student] nahi maiuskulaz kenduz, minuskulaz lana ez balitz 32 estrategia hori? 290 00:26:33,190 --> 00:26:35,330 Zen bada, bezala, 34 edo zerbait? 291 00:26:35,330 --> 00:26:41,840 Beraz, 2 arteko aldea dela jakin behar duzu? >> 1 bit. 292 00:26:41,840 --> 00:26:49,840 1 bit baino gehiago izan daiteke, betiere, jarrera hori azpian bit guztiak berdinak dira. 293 00:26:49,840 --> 00:26:58,500 Beraz, gutxienez 26 karaktere behar dugu, edo, ez dira 26 karaktere. 294 00:26:58,500 --> 00:27:04,590 Beraz, gutxienez 26 zenbakiak behar dugu desberdintasuna adierazteko 295 00:27:04,590 --> 00:27:07,650 A eta 'a' gutxienez 26 izan ditu, arteko aldea 296 00:27:07,650 --> 00:27:10,760 edo, bestela, ez genuke dute irudikatzen hiriburua zenbaki guztiak. 297 00:27:10,760 --> 00:27:18,630 Horrek esan nahi du A, 1 hasten badugu, bit horiek guztiak erabili egingo 298 00:27:18,630 --> 00:27:23,900 horiek lehen 5 bit, dena irudikatzeko Z. 299 00:27:23,900 --> 00:27:32,170 Horregatik, hurrengo apur bat, edo bit hau da, hurrengo apur bat aukeratu duten A eta artean bereizteko da 'a.' 300 00:27:32,170 --> 00:27:40,930 Hori da, gainera, zergatik, ASCII taulan, 5 sinboloak daude letrak minuskulaz maiuskulaz banantzen. 301 00:27:40,930 --> 00:27:49,050 Duten sinboloak, aparteko 5 dituen 32 bien arteko aldea dira geroztik. 302 00:27:49,050 --> 00:27:51,840 [Student] Beraz, egin izan dugu, ASCII da, era horretan diseinatuta baitago. 303 00:27:51,840 --> 00:27:57,280 Bai. Baina ASCII aldea izan ere bi bit horiek. 304 00:27:57,280 --> 00:28:12,040 Like A ziren 10000001 bada, eta 'a' 11100001 -, ahaztu dut, edozein izanda ere. 305 00:28:12,040 --> 00:28:18,100 Baina hori izanez gero, ondoren, oraindik ezin dugu erabili 'a' - A. 306 00:28:18,100 --> 00:28:22,650 Oraintxe da A eta 'a' oraindik 2 bit horien arteko aldea. 307 00:28:22,650 --> 00:28:32,240 Idatzi 48 uste dut. Da 32 + 64? Uste dut? 308 00:28:32,240 --> 00:28:40,160 Pertsonaia bakoitza,, Z eta z, K eta k, oraindik 2 bit izango litzateke 309 00:28:40,160 --> 00:28:45,160 oraindik 2 bit horiek izan ezik, ezarritako bit zehatza berean nahi dute. 310 00:28:45,160 --> 00:28:48,870 Beraz, betiere hori beti egia, edozein ari gara ASCII edo beste sistema batzuk erabiliz gero, 311 00:28:48,870 --> 00:28:53,050 luzea izan ere, soilik desberdinak dira, eta pertsonaia bakoitzari bit kopurua multzo bat bezala, 312 00:28:53,050 --> 00:28:55,050 Orduan, ongi funtzionatzen duen. 313 00:28:55,050 --> 00:29:06,110 Besterik ez da, 32 sortu zen lehen bat delako, seguru asko erabili izan dugu. >> Cool. 314 00:29:06,110 --> 00:29:14,520 Ohi dut, nahiago bada, ez duzu ikusten, bloke baino ez da lerro bakar bat, 315 00:29:14,520 --> 00:29:24,280 kizkur giltza kendu dezakezu, beraz, hau egiteko asmoak ohi dut. 316 00:29:24,280 --> 00:29:34,010 Gainera, gauzak nola egin dezakegun s [i] + = 1 bezala ezagutzen duzu? 317 00:29:34,010 --> 00:29:41,090 Ere egin dezakezu s [i] bitekin ETA = 32. 318 00:29:41,090 --> 00:29:46,400 Eta bitekin OR = 32. 319 00:29:46,400 --> 00:29:51,490 Era berean, zenbatu mod 2 == 0. 320 00:29:51,490 --> 00:30:00,900 Beraz, gogoratu ez dut idazteko ez-zero balioa edozein, egia da, eta 0 faltsua. 321 00:30:00,900 --> 00:30:07,880 Beraz, "bada Aldaketa mod 2 == 0" esatea bezala da "ez zenbatu mod 2 arazorik badago." 322 00:30:07,880 --> 00:30:11,580 Besterik ez seguruenik izango litzateke trukatuta lerro eta hau esan du, "count bada mod 2 323 00:30:11,580 --> 00:30:15,350 ez OR 1, bestela ez ETA 1, "beraz, ez dut behar" ez. " 324 00:30:15,350 --> 00:30:18,650 Baina hori bezain ondo funtzionatzen. 325 00:30:18,650 --> 00:30:25,660 Eta zer gehiago egin nahi dut? 326 00:30:25,660 --> 00:30:29,060 Konbinatu izan duzu, hirutarra adibidez, zuk nahi izanez gero, baina gero litzaidake besterik ez gauzak Messier 327 00:30:29,060 --> 00:30:33,770 eta seguruenik zailagoa irakurri, eta, beraz, ezin izango dugu. 328 00:30:33,770 --> 00:30:37,330 Edonork beste edozein iradokizun? 329 00:30:37,330 --> 00:30:41,580 Da arazo guztiak eskatu? Oh yeah. 330 00:30:41,580 --> 00:30:51,070 Beraz, lerro huts horiek kentzeko, f,% s inprimatu dugu bat izateaz kateak, 331 00:30:51,070 --> 00:30:56,620 F inprimatu egingo dugu, s. 332 00:30:56,620 --> 00:30:59,330 Orain dezagun exekutatu da. Ba ezer txarrik egin behar dut? 333 00:30:59,330 --> 00:31:03,200 Hori \ "; n bat egin nahi dut. 334 00:31:03,200 --> 00:31:07,840 Ongi da. Orain abiarazi dugu. Yell at me ziurrenik izango da. 335 00:31:07,840 --> 00:31:11,250 Strlen string.h da. 336 00:31:11,250 --> 00:31:14,290 Buruz gauza atsegina Clang Beraz kontatzen du, zer da, 337 00:31:14,290 --> 00:31:19,140 ordez GCC besterik ez dio, "Hey, zerbait ahaztu duzu, ez dakit zer izan zen." 338 00:31:19,140 --> 00:31:29,220 Baina hau esan du, "string.h besteak beste, esan nahi duzu." 339 00:31:29,220 --> 00:31:32,130 Beraz, ez nuen ezer galdetuko, beraz, ez da ezer esaten. 340 00:31:32,130 --> 00:31:42,540 Baina euren Adibidez egin dugu ", 4 gehigarri Eskerrik asko". 341 00:31:42,540 --> 00:31:47,880 Hori itxura eskuineko. Hooray. 342 00:31:47,880 --> 00:31:52,370 Beraz, zure nagusira itzuli, inoiz ez dut ia egin du. 343 00:31:52,370 --> 00:31:57,110 Aukerakoa da. Eta nagusia aukerakoa da funtzio bakarra da. 344 00:31:57,110 --> 00:32:07,140 Itzuli ez baduzu ezer nagusia, bere gain hartu zuen, ondorioz, 0-ra itzuliko. 345 00:32:07,140 --> 00:32:13,070 Zalantzak dituzu? 346 00:32:13,070 --> 00:32:20,980 Ongi da. Beraz, gaur egun, bigarren arazoa. 347 00:32:20,980 --> 00:32:24,810 "2 aste-en hitzaldia bigarren aldaketa, 2 aldagai 'balioak Gogoratu pasatuz 348 00:32:24,810 --> 00:32:30,780 funtzio bat (nahiz eta deitu swap) 2 aldagai horiek ez dira zehazki lan egiteko, ez behintzat gabe 'erakusleak. " 349 00:32:30,780 --> 00:32:37,020 Eta alde batetara utzi erakusleak horiek iritsi arte. 350 00:32:37,020 --> 00:32:40,070 2 aldagai swap nahi dugu, ez dugu funtzio bat erabiliz egin. 351 00:32:40,070 --> 00:32:43,410 Oraindik ari gara egin nagusian dioen bezala. 352 00:32:43,410 --> 00:32:48,360 Baina 2 aldagai horiek erabili ahal izateko, ez dugu nahi aldi baterako aldagai bat erabili. 353 00:32:48,360 --> 00:32:50,770 2 modu daude hau egiteko. 354 00:32:50,770 --> 00:32:56,310 Egin ahal izango duzu, zure bitar operadore tradizionalak erabiliz. 355 00:32:56,310 --> 00:33:00,180 Beraz, ez du edonork egiten modu azkar eta zikin bat ezagutzen? 356 00:33:00,180 --> 00:33:07,650 Hartu Litekeena da pentsamendu minutu bat benetan. Dut 357 00:33:07,650 --> 00:33:12,130 Arazoa ezartzeko dut eskatu dute. Beraz, 2 aldagai I, A, eta hori besterik ez da zenbaki oso bat 358 00:33:12,130 --> 00:33:17,800 eman ninduten, eta batura aldagai B, beste I, naiz eman osokoa da. 359 00:33:17,800 --> 00:33:22,700 Beraz, bada, 2 aldagai horiek, gaur egun horietako swap nahi dut. 360 00:33:22,700 --> 00:33:31,550 Tradizionala, zure bitar operadore erregularra erabiliz, esan nahi dut, + bezala, -, ÷. 361 00:33:31,550 --> 00:33:36,630 Ez bitekin operadore den bitar jarduteko. 362 00:33:36,630 --> 00:33:39,600 , +, ÷, eta horiek - Beraz erabiliz. 363 00:33:39,600 --> 00:33:52,980 Gauza bezala swap izan dugu a = a + b, eta b = a - b, a = a - b. 364 00:33:52,980 --> 00:34:04,260 Beraz, behatu egiaztatu, eta gero ikusiko dugu zergatik duten lanak. 365 00:34:04,260 --> 00:34:13,320 Demagun = 7, b = 3, eta gero + b 10 izango da. 366 00:34:13,320 --> 00:34:18,820 Beraz, gaur egun ari gara = 10 bat ezartzea, eta ondoren, b = a ari gara egiten - b. 367 00:34:18,820 --> 00:34:30,250 Beraz, egiten ari garen b = a - b, hau da, 7 izango da, eta b = a - b berriz, 368 00:34:30,250 --> 00:34:38,650 edo a = a - b. 7 hau da, 3 - Zein da 10 izango da. 369 00:34:38,650 --> 00:34:44,850 Beraz, gaur egun, behar bezala, 'a' 7 izan zen, b 3, eta, gaur egun, b 7 da, eta 'a' 3. 370 00:34:44,850 --> 00:34:48,679 Beraz, mota horretako zentzua; 'a', 2 zenbakiak konbinazioa da. 371 00:34:48,679 --> 00:34:53,000 Puntu honetan, 'a' konbinazioa da, eta, ondoren, jatorrizko b ari gara kenduz, 372 00:34:53,000 --> 00:34:56,860 eta, ondoren, ari gara kenduz zer izan zen jatorrizko 'a.' 373 00:34:56,860 --> 00:35:01,150 Baina horrek ez du zenbaki guztietan lan egiteko. 374 00:35:01,150 --> 00:35:08,880 Hori ikusteko, dezagun, sistema bat, beraz, 32 bit gisa osoko zenbakien normalean uste dugu. 375 00:35:08,880 --> 00:35:13,050 Dezagun zerbait soilik 4 bit bezala lan egiten. 376 00:35:13,050 --> 00:35:15,450 Zorionez adibide on batekin sortu naiz oraintxe bertan. 377 00:35:15,450 --> 00:35:18,680 Beraz, badakit, erraza izango da. 378 00:35:18,680 --> 00:35:26,720 Demagun gure 2 zenbakiak dira, 1111, eta 1111; bitarra dugu, beraz, oraintxe bertan. 379 00:35:26,720 --> 00:35:34,630 Hamarren esan nahi duzun pentsatu ahal izateko, era horretan, = 15 eta b = 15. 380 00:35:34,630 --> 00:35:37,630 Eta, beraz, espero dugu trukatu ditugu ondoren, ez dute ere zenbakiek berdinak izan, 381 00:35:37,630 --> 00:35:41,140 baina egin nuen modu honetan. 382 00:35:41,140 --> 00:35:47,100 Dezagun dituzten zenbakiak ez dira berdinak. Egin dezagun 1111 eta 0001. 383 00:35:47,100 --> 00:35:51,860 Beraz, = 15 eta b = 1. 384 00:35:51,860 --> 00:35:57,670 Trukatu ditugu ondoren, 'a' 1 eta b 15 izatea espero dugu. 385 00:35:57,670 --> 00:36:01,780 Beraz, gure lehen urratsa da, a = a + b. 386 00:36:01,780 --> 00:36:08,770 Gure zenbakiak soilik 4 bit zabal dira, eta, beraz, 'a, hau da, 1111, + b, hau da, 0001, 387 00:36:08,770 --> 00:36:16,780 amaitzeko 10000 izateaz, baina 4 bit besterik ez dugu. 388 00:36:16,780 --> 00:36:22,540 Beraz, a = 0. 389 00:36:22,540 --> 00:36:34,080 B - benetan, hau da, oraindik ere lan egiten du bikain, eta gaur egun, b = a ezarri nahi dugu. 390 00:36:34,080 --> 00:36:39,630 = a - b - Ikus dezagun honetan lan egiten badu, ezin hobeto. 391 00:36:39,630 --> 00:36:53,720 Orduan b = 0 - 1, eta horrek oraindik ere 15, eta, ondoren, a = a - b, eta horrek 1 izango litzateke. 392 00:36:53,720 --> 00:36:56,210 Agian, horrek egiten du lan. 393 00:36:56,210 --> 00:36:59,020 Ez dago arrazoirik ez du lan erregularra erabiliz bezala sentitzen dut. 394 00:36:59,020 --> 00:37:06,400 Ongi da, eta, beraz, ez dela binary erregularra eragiketak lan hipotesi lan, 395 00:37:06,400 --> 00:37:15,040 eta itxura izango dut Google dela egia bada egingo dut. 396 00:37:15,040 --> 00:37:23,490 Beraz, zer egin nahi dugu, bitekin operadoreak erabiliz, eta hemen arrastoren XOR. 397 00:37:23,490 --> 00:37:28,780 Beraz, XOR (^) sartuz ikusi ez baduzu oraindik. 398 00:37:28,780 --> 00:37:34,610 Da, berriro ere, bitekin operadorea pixka bat jarduten du, beraz, apur bat, eta it's 399 00:37:34,610 --> 00:37:39,910 Bitak 0 eta 1 bada, orduan hau 1 izango da. 400 00:37:39,910 --> 00:37:45,230 Bit 1 eta 0 bada, 1 izango da, 0 eta 0 bit izan 0 izango duzu, 401 00:37:45,230 --> 00:37:47,640 eta 1 eta 1 bit baduzu 0 izango da. 402 00:37:47,640 --> 00:37:56,180 Horrela da OR. Bit-bai dira egia bada, 1 da, baina OR ez bezala, ezin da bit bai benetakoak direla. 403 00:37:56,180 --> 00:37:59,320 OR hau litzateke 1, XOR honetan 0 izango litzateke. 404 00:37:59,320 --> 00:38:02,250 Beraz XOR hemen erabiltzeko nahi dugu. 405 00:38:02,250 --> 00:38:09,960 Pentsatu minutu bat; Google noa. 406 00:38:09,960 --> 00:38:16,230 Beno, ezin duzu irakurri. Gaur egun naiz XOR swap algoritmoa orrian. 407 00:38:16,230 --> 00:38:21,340 Zorionez zergatik I can't azalduko 408 00:38:21,340 --> 00:38:34,190 Hau da, zehazki algoritmoa besterik ez genuen. 409 00:38:34,190 --> 00:38:37,330 Ez dut ikusi zergatik izan behar dut bildu adibide txarra, 410 00:38:37,330 --> 00:38:44,940 baina kasu honetan, 'a' gertatu 0 bihurtzeko, 5 bit iritsi ondoren, eta, beraz, orain 'a' 0 411 00:38:44,940 --> 00:38:48,730 dela deritzo, "zenbaki oso gainezkatze bat." 412 00:38:48,730 --> 00:38:54,370 Wikipedia arabera, "XOR swap ez bezala, aldakuntza hori eskatzen erabiltzen duen metodo batzuk 413 00:38:54,370 --> 00:38:59,780 x + y zenbaki oso gainezkatze bat sor ez dela bermatzeko ". 414 00:38:59,780 --> 00:39:08,350 Beraz, hau da, arazorik izan; hau zenbaki oso gainezkatze bat izan zen, baina zerbait gaizki egin nuen. 415 00:39:08,350 --> 00:39:10,520 Ez nago ziur. Beste bat etorri saiatu naiz. 416 00:39:10,520 --> 00:39:13,640 [Student] Beno, ez da zenbaki oso gainezkatze bat dago zenbaki bat jartzen saiatzen ari zaren 417 00:39:13,640 --> 00:39:16,640 esleitu duzu bit zenbatekoa baino handiagoa da? 418 00:39:16,640 --> 00:39:23,730 Bai. 4 bit daukagu. That's - 4 bit izan genuen, saiatu ondoren, 1 gehitzeko, eta, beraz, 5 bit amaituko dugu. 419 00:39:23,730 --> 00:39:26,690 Baina bosgarren bit lortzen moztu, bai. 420 00:39:26,690 --> 00:39:28,970 Benetan gerta daiteke - 421 00:39:28,970 --> 00:39:33,010 [Student] ez duela bota errore bat, edo hori ez zela errore bat bota? 422 00:39:33,010 --> 00:39:40,720 N º Beraz, ez dago error. Muntaia maila, apur bat berezia 423 00:39:40,720 --> 00:39:47,020 nonbait ezarri esan gainezkatzea bat izan zen, baina C mota horretako ez duten aurre egiteko. 424 00:39:47,020 --> 00:39:55,160 Benetan ez duzu aurre berezia muntaketa C. argibideak ezean 425 00:39:55,160 --> 00:39:58,110 Dezagun XOR swap pentsatzen. 426 00:39:58,110 --> 00:40:02,220 Eta Wikipedia article ere izan liteke izan dela esaten uste dut 427 00:40:02,220 --> 00:40:07,310 Beraz, ekarri ere modular aritmetika, beraz, I izan zen uste dut, teoria, aritmetika modularra egiten 428 00:40:07,310 --> 00:40:11,160 1 15 berriro - 0 esan dut. 429 00:40:11,160 --> 00:40:15,410 Beraz, agian benetan - 1 = 15 - prozesadore erregularra du 0. 430 00:40:15,410 --> 00:40:20,430 0 bukatzen dugu sortu zenetik, 1 kentzen dugu, eta, beraz, ondoren, wraps besterik ez da inguruan 1111. 431 00:40:20,430 --> 00:40:28,930 Beraz, algoritmoa benetan lan hori, a + b, a - b, b - a; fina izan daiteke. 432 00:40:28,930 --> 00:40:34,030 Baina ez da prozesadore batzuk ez dela, eta beraz, ez litzateke ondo egongo litzateke horiek jakin batzuk. 433 00:40:34,030 --> 00:40:39,880 XOR swap-prozesadore edozein lan egiteko. Ongi da. 434 00:40:39,880 --> 00:40:42,280 Ideia da gauza bera izango da, nahiz eta ustezko. 435 00:40:42,280 --> 00:40:50,120 Non XOR erabiltzen ari gara, nolabait, bai informazio aldagai 1 sartu 436 00:40:50,120 --> 00:40:54,120 eta, ondoren, tira banakako aldagai informazio berriro. 437 00:40:54,120 --> 00:41:04,330 Beraz, ez da inor izan ideia / erantzuna? 438 00:41:04,330 --> 00:41:14,540 [Ikasleentzako erantzuna, ulertezina] 439 00:41:14,540 --> 00:41:22,220 Beraz, lan egin behar du, eta, gainera, XOR commutative da. 440 00:41:22,220 --> 00:41:27,620 Kontuan hartu gabe 2 eta ordena zenbaki horiek gertatuko hemen, 441 00:41:27,620 --> 00:41:30,100 emaitza hori bera izango da. 442 00:41:30,100 --> 00:41:35,800 Beraz ^ b da b ^ a. 443 00:41:35,800 --> 00:41:51,860 Hau idatzi gisa ere ikus dezakezu ^ = b, b ^ = a, a ^ = b berriro. 444 00:41:51,860 --> 00:42:00,200 Beraz, hau da, eskuinera, eta, zergatik obra hau, bit, uste ikusteko. 445 00:42:00,200 --> 00:42:10,400 Smallish zenbaki bat erabiliz, demagun 11001, eta 01100. 446 00:42:10,400 --> 00:42:12,790 Beraz, hau 'a' da, hau da, b. 447 00:42:12,790 --> 00:42:15,540 Beraz ^ = b. 448 00:42:15,540 --> 00:42:22,380 Ezartzen 'a' = 2 gauza horiek XOR gara. 449 00:42:22,380 --> 00:42:32,920 1 Beraz ^ 0 1 1 ^ 1 0 0 ^ 1 1 eta 0 ^ 0 da 0; 1 ^ 0 da 1. 450 00:42:32,920 --> 00:42:37,380 Beraz ',' zenbaki hamartar begiratzen baduzu, izan da joan 451 00:42:37,380 --> 00:42:41,160 ez duzu jatorrizko 'a' eta berriaren arteko harremana askoz ere ikusteko ',' 452 00:42:41,160 --> 00:42:45,600 baina bit da, 'a' da gaur egun informazio-sare bat bezala 453 00:42:45,600 --> 00:42:49,970 bai jatorrizko 'a' eta jatorrizko b. 454 00:42:49,970 --> 00:42:57,930 Beraz, bada b ^, ikusiko dugu sortu dugun amaituko dugu jatorrizko '.' Hartuko dugu 455 00:42:57,930 --> 00:43:08,910 Eta hartzen badugu jatorrizko 'a' ^ berria ',' amaitzeko dugu jatorrizko b ikusiko dugu. 456 00:43:08,910 --> 00:43:18,380 Beraz, (a ^ b) ^ b = jatorrizko '.' 457 00:43:18,380 --> 00:43:27,910 Eta (a ^ b) ^ a = b original. 458 00:43:27,910 --> 00:43:37,010 Ez dago ezer XOR bera ikusteko beste modu bat da beti, 0. 459 00:43:37,010 --> 00:43:45,020 ^ 1101, 1101 Beraz, bit guztiak ez dira berdinak izango. 460 00:43:45,020 --> 00:43:47,920 Beraz, ez da inoiz kasu bat, non 1 0 bat da, eta beste 1 izango da. 461 00:43:47,920 --> 00:43:51,080 Beraz, hau da 0000. 462 00:43:51,080 --> 00:43:57,240 Bera. (A ^ b) ^ b da atsegin ^ (b ^ b). 463 00:43:57,240 --> 00:44:03,680 (B ^ b) 0 izango da; ^ 0 besterik ez da ',' bit guztiak 0 geroztik. 464 00:44:03,680 --> 00:44:08,050 Beraz, diren bakarrak izango da non 'a' jatorriz 1 - izan dira. 465 00:44:08,050 --> 00:44:12,070 Eta ideia bera hemen; nahiko ziur da commutative naiz. 466 00:44:12,070 --> 00:44:17,590 Bai. Esan nuen, horren aurretik commutative zen. 467 00:44:17,590 --> 00:44:24,680 ^ ',' Eta elkartze da, eta, beraz, gaur egun (b ^ a) ^ a. 468 00:44:24,680 --> 00:44:28,970 Eta ez b ^ (^ a) ahal izango dugu. 469 00:44:28,970 --> 00:44:31,540 Eta, beraz, berriro ere, jatorrizko b lortuko dugu. 470 00:44:31,540 --> 00:44:37,120 Beraz, 'a', 'a' eta b konbinazio elkarrekin. 471 00:44:37,120 --> 00:44:49,660 Gure konbinazio berriak erabiliz 'a' esan b = konbinazio 'a' ^ b original, jatorrizko lortuko dugu 'a.' 472 00:44:49,660 --> 00:45:05,170 Eta = konbinazio bat 'a' ^ berri b, hain zuzen, jatorrizko - edo gaur egun zer zen 'a' edo b. 473 00:45:05,170 --> 00:45:13,620 Kasu honetan behera hemen. = B, b zaharra da. 474 00:45:13,620 --> 00:45:16,550 Beraz, gaur egun dena truka ordena. 475 00:45:16,550 --> 00:45:22,960 Bit, bada benetan begiratu, b = a ^ b, horiek 2 XOR joan 476 00:45:22,960 --> 00:45:33,920 eta erantzuna hau izan da, eta, ondoren, a = a ^ b 2 horiek XORing eta erantzuna da hau. 477 00:45:33,920 --> 00:45:41,090 Zalantzak dituzu? Ongi da. Beraz, azkena zertxobait nabarmen zailagoa da. 478 00:45:41,090 --> 00:45:43,180 [Student] buruzko galdera bat du uste dut. >> Oh, barkatu. 479 00:45:43,180 --> 00:45:49,380 [Student] Zer da benetan azkarrago? XOR hau erabiltzen bada, edo beste aldagai bat deklaratzeko bada? 480 00:45:49,380 --> 00:45:55,190 Beraz, zer da, benetan azkarrago, beste aldagai bat deklaratzen edo XOR erabiliz swap? 481 00:45:55,190 --> 00:45:59,600 Erantzuna ez da, aukera guztiak, behin-behineko aldagai bat. 482 00:45:59,600 --> 00:46:05,780 Eta hori da, behin delako konpilatu behera - beraz muntaia mailan, 483 00:46:05,780 --> 00:46:12,320 ez dago, tokiko aldagai edo aldagai edozein aldi baterako edo stuff honen edozein gauza, hala nola. 484 00:46:12,320 --> 00:46:16,060 Besterik ez ari dira, ez da memoria, eta badira erregistroak. 485 00:46:16,060 --> 00:46:20,920 Erregistroen non gauzak ez dira modu aktiboan gertatzen ari dira. 486 00:46:20,920 --> 00:46:24,750 Ez duzu 2 memoria gauzak gehitu; 2 erregistro gauzak gehitu. 487 00:46:24,750 --> 00:46:28,160 Eta gauzak ekarri erregistro sartu memoria ondoren gehitu 488 00:46:28,160 --> 00:46:33,180 eta gero jarri dezakezu atzera memorian, baina ekintza guztien erregistroak gertatzen da. 489 00:46:33,180 --> 00:46:38,750 Beraz, aldi baterako ikuspegi aldakorra erabiltzen ari zara, normalean, zer gertatzen da 490 00:46:38,750 --> 00:46:42,810 2 zenbakiak honako hauek dira dagoeneko erregistro. 491 00:46:42,810 --> 00:46:46,570 Eta, ondoren, puntu horretan, trukatu egin dugu ondoren horiek, 492 00:46:46,570 --> 00:46:51,540 bakarrik izango da beste erregistro erabiliz. 493 00:46:51,540 --> 00:46:56,510 Anywhere izan b erabiliz, aski izango da erabili erregistro dagoeneko gordetzeko 'a.' 494 00:46:56,510 --> 00:47:02,180 Beraz, ez du benetan egiten swap ezer egin behar. Bai? 495 00:47:02,180 --> 00:47:05,690 [Student] Baina ere memoria gehiago hartzen du, ezta? 496 00:47:05,690 --> 00:47:10,280 Bakarrik hartuko du memoria gehiago behar da aldagai hori aldi baterako gorde nahi izanez gero. 497 00:47:10,280 --> 00:47:14,830 Atsegin dut aurrerago erabiltzen baduzu aldi baterako aldagaia berriro nonbait, 498 00:47:14,830 --> 00:47:18,920 ondoren edo aldi baterako aldagaia zerbait esleitzeko duzu. 499 00:47:18,920 --> 00:47:24,630 Beraz, denbora ',' aldi baterako b edozein unetan bada, balio desberdin edo zerbait, 500 00:47:24,630 --> 00:47:30,680 gero desberdin kokapenak memoria egingo da, baina egia da 501 00:47:30,680 --> 00:47:34,800 tokian tokiko aldagai asko daude bakarrik erregistroak existitzen. 502 00:47:34,800 --> 00:47:44,370 Kasu horretan, inoiz memorian jarri, eta, beraz, inoiz ez zaren memoria galdu. 503 00:47:44,370 --> 00:47:58,620 Ongi da. Azken galdera da pixka bat gehiago. 504 00:47:58,620 --> 00:48:04,850 Beraz, hemen, CS50 tresna honetan, hiztegi bat da. 505 00:48:04,850 --> 00:48:12,390 Eta horren arrazoia dagoelako [? B66] spell checker non idazten duzu 506 00:48:12,390 --> 00:48:15,780 hash taulak edo saiatzen edo datu-egitura batzuk erabiliz. 507 00:48:15,780 --> 00:48:22,660 Idatziz spell checker ari zara, eta erabiltzen ari da hiztegi hau horretarako ari zaren. 508 00:48:22,660 --> 00:48:28,280 Baina arazo hau, besterik gabe, ari gara hitz bakar bat dago hiztegian bilatuko du. 509 00:48:28,280 --> 00:48:31,250 Beraz, hiztegi osoa gordetzeko datuak egitura batzuetan ordez 510 00:48:31,250 --> 00:48:35,180 eta gero, dokumentu osoa baino gehiago bilatzen da ezer gaizki idatzitako bada ikusteko, 511 00:48:35,180 --> 00:48:38,490 1 word aurkitu nahi dugu. Beraz, ezin dugu hiztegi osoa eskaneatu baino gehiago 512 00:48:38,490 --> 00:48:44,300 osoan hiztegian hitza inoiz ez dugu aurkituko bada, orduan ez zen hor. 513 00:48:44,300 --> 00:48:52,150 Hiztegi osoa baino gehiago eskaneatu bada, eta hitza ez, gero onak, aurkitu dugu. 514 00:48:52,150 --> 00:48:56,580 Hemen dio, nahi dugun C fitxategi-manipulazio funtzioa begira hasteko, 515 00:48:56,580 --> 00:48:59,930 hiztegia irakurri nahi dugu aurrera, 516 00:48:59,930 --> 00:49:07,680 baina aholkua emango dut hemen, zein funtzio uste behar duzu. 517 00:49:07,680 --> 00:49:11,510 Espazioak on idatzi dut. 518 00:49:11,510 --> 00:49:20,490 Beraz, nagusiak direnak f ireki eta gero, ezinbestean, f itxita begiratu nahi duzu, 519 00:49:20,490 --> 00:49:26,540 zure programaren amaieran, eta f f eskaneatu. 520 00:49:26,540 --> 00:49:31,060 F irakurri ere erabil dezakezu, baina seguruenik ez duzu nahi 521 00:49:31,060 --> 00:49:34,200 hori delako ez duzu amaituko dela beharrik. 522 00:49:34,200 --> 00:49:41,880 F eskaneaketa f da zer erabiltzen da hiztegi baino gehiago eskaneatu ari zaren. 523 00:49:41,880 --> 00:49:46,370 Eta, beraz, ez duzu behar konponbidea kodea, besterik ez saiatu eta nahi sasi-kodea zure bidea 524 00:49:46,370 --> 00:50:05,200 irtenbide bat, eta, ondoren, eztabaidatu dugu. 525 00:50:05,200 --> 00:50:14,110 Eta, izatez, dagoeneko eman dut geroztik hauek, terminal edo zure tresnaren shell sartu joan bada, 526 00:50:14,110 --> 00:50:18,250 I normalean - nuke ikusi ez baduzu oraindik, I ez jakin klasean egin bada, 527 00:50:18,250 --> 00:50:23,490 baina gizona, eta, beraz, man orriak, pretty pretty askoz edozein funtzio begira erabilgarria. 528 00:50:23,490 --> 00:50:27,330 Horretarako, I can bezala, gizon f, f eskaneatu. 529 00:50:27,330 --> 00:50:32,300 Hau da, eskaneatu f funtzio familia buruzko informazio gehiago. 530 00:50:32,300 --> 00:50:37,070 Man f, ireki ere egin izan dut, eta ni neu ere emango dugu horren xehetasunak. 531 00:50:37,070 --> 00:50:40,750 Beraz, bada zer funtzioa, erabiltzen ari zaren edo kode irakurtzen ari zaren badakizu 532 00:50:40,750 --> 00:50:43,000 eta funtzio batzuk ikusiko duzu, eta, hala nola Oraindik duzu, "Zer esan nahi du hori egin?" 533 00:50:43,000 --> 00:50:45,280 Just gizon funtzioa izenarekin. 534 00:50:45,280 --> 00:50:47,340 Badira pare bat adibide bitxi bat, non esan liteke 535 00:50:47,340 --> 00:50:51,620 nahi. man 2 funtzio-izena, edo man 3 funtzio-izen hori, 536 00:50:51,620 --> 00:50:58,230 baina besterik ez duzu gizon bada funtzio izena ez da lehen aldiz lan egiteko. 537 00:50:58,230 --> 00:51:03,010 [Student] Beraz, eskuliburuko orrialdea naiz irakurtzen irekita, baina oraindik nola eta programa erabili dut nahastu. 538 00:51:03,010 --> 00:51:06,170 Ongi da. Man orriak asko A lagungarria baino gutxiago dira. 539 00:51:06,170 --> 00:51:08,470 Lagungarria Oraindik dute dagoeneko badakizu zer egiten 540 00:51:08,470 --> 00:51:12,670 eta, ondoren, besterik ez duzu, argumentuak edo zerbait ordena gogoratzeko. 541 00:51:12,670 --> 00:51:17,640 Edo ematen dizute orokor bat, baina horietako batzuk oso jasanezinak dira. 542 00:51:17,640 --> 00:51:22,220 F f eskaneatu bezala, gainera. Funtzio horiek guztiak buruzko informazioa ematen du, 543 00:51:22,220 --> 00:51:28,120 eta lerro 1 behera hemen gertatzen da, hots, "F eskaneaketa f katea edo korrontea irakurtzen du." 544 00:51:28,120 --> 00:51:32,360 Baina f ireki. Beraz, nola f irekita erabili dugu? 545 00:51:32,360 --> 00:51:38,470 Fitxategia egin behar den programa bat ideia I / O dela 546 00:51:38,470 --> 00:51:45,070 lehenik gauza egin nahi duzun fitxategia ireki, eta, ezinbestean, 547 00:51:45,070 --> 00:51:51,220 gauza fitxategi hori irakurri eta stuff egin haiekin. 548 00:51:51,220 --> 00:51:55,350 F irekita dago zer erabiltzen dugu fitxategia irekitzeko. 549 00:51:55,350 --> 00:52:04,190 Gauza hartu behar dugu, zer fitxategia ireki, beraz, nahi dugu, ematen digu - 550 00:52:04,190 --> 00:52:11,970 Hemen "/ user / share / dict / hitzak.", dio 551 00:52:11,970 --> 00:52:16,740 Fitxategia ireki nahi dugu, eta ireki nahi dugu 552 00:52:16,740 --> 00:52:21,440 irakurri edo ireki nahi dugu idazteko ireki nahi ala ez dugu esplizituki zehaztu behar dugu. 553 00:52:21,440 --> 00:52:26,490 Konbinazioak eta stuff pare bat da, baina hori irakurtzeko ireki nahi dugu. 554 00:52:26,490 --> 00:52:29,380 Fitxategia irakurri nahi dugu. 555 00:52:29,380 --> 00:52:34,290 Beraz, zer da bueltan hau? File star (*) itzultzen da, 556 00:52:34,290 --> 00:52:37,260 eta besterik ez dut erakutsi aldagaia f dena, eta, beraz, *, 557 00:52:37,260 --> 00:52:40,840 berriz, erakusle bat da, baina ez dugu nahi erakusleak aurre egiteko. 558 00:52:40,840 --> 00:52:46,470 F dela pentsa dezakezu, f aldagaia fitxategia adierazteko erabiltzen ari zaren. 559 00:52:46,470 --> 00:52:49,850 Beraz, bada fitxategia irakurri nahi baduzu, irakurri f duzu. 560 00:52:49,850 --> 00:52:54,820 Nahi duzun fitxategia itxi egiten bada, f itxi duzu. 561 00:52:54,820 --> 00:53:00,350 Beraz, programaren amaieran ezinbestean nahi dugu fitxategia itxi, zer egin behar dugu? 562 00:53:00,350 --> 00:53:06,750 F itxi nahi dugu. 563 00:53:06,750 --> 00:53:12,600 Beraz, gaur egun ari gara azken fitxategi funtzioa erabili nahi eskaneatzea f, f eskaneatu f da. 564 00:53:12,600 --> 00:53:20,930 Eta zer esan du arakatzen fitxategia eredu bat dator bila. 565 00:53:20,930 --> 00:53:39,100 Man orri hemen begira, int f eskaneatu f ikusiko dugu, ez ikusi egin oraingoz balioa itzultzeko. 566 00:53:39,100 --> 00:53:45,230 Lehen argumentua file * korrontea, eta, beraz, lehen argumentua pasatzea nahi dugu f da, beraz. 567 00:53:45,230 --> 00:53:47,900 F baino gehiago ari gara bila. 568 00:53:47,900 --> 00:53:53,680 Bigarren argumentua formatu katea da. 569 00:53:53,680 --> 00:53:58,310 Emango dizut formatu katea oraintxe. 570 00:53:58,310 --> 00:54:05,180 , Esan 127s \ n, hori alferrikako asko gertatuko dela uste dut. 571 00:54:05,180 --> 00:54:12,490 Formatu katea hori da ideia, eskaneatu f inprimatu f kontrakoa uste dezakezu gisa. 572 00:54:12,490 --> 00:54:17,160 Beraz, inprimatu f, inprimatu f formatu parametroaren mota hau ere erabiltzen dugu, 573 00:54:17,160 --> 00:54:25,000 baina inprimatu f zer egiten ari garen dezagun begiratu baliokidea. 574 00:54:25,000 --> 00:54:32,550 Beraz, f inprimatu, eta benetan ere ez da f inprimatu f, non lehen argumentua f izango da. 575 00:54:32,550 --> 00:54:40,980 F inprimatu duzunean, esan zerbait genezake, "inprimatu 127s \ n" eta, ondoren, pasatzen badugu kate batzuk, 576 00:54:40,980 --> 00:54:44,050 katea hau eta gero, linea berri bat inprimatu. 577 00:54:44,050 --> 00:54:49,690 Zer 127 bitartez, nahiko ziur naiz, baina inoiz ez dut neure burua mugatzen da, 578 00:54:49,690 --> 00:54:52,470 Ez luke ere behar '127 'esan inprimatu f 579 00:54:52,470 --> 00:54:57,090 baina zer esan nahi duen lehen 127 karaktereak inprimatzeko. 580 00:54:57,090 --> 00:54:59,350 Beraz, nahiko ziur kasu naiz. Google horretarako dezakezu. 581 00:54:59,350 --> 00:55:03,000 Baina ia positiboa dela esan nahi du, hurrengo batean nago. 582 00:55:03,000 --> 00:55:08,880 Beraz, hau da, lehen 127 karaktereak, ondoren lerro berri bat inprimatzeko. 583 00:55:08,880 --> 00:55:14,680 F eskaneaketa f ordez, aldagai batean begiratu eta inprimatzeko, 584 00:55:14,680 --> 00:55:22,620 kate batzuk begiratu, eta aldagai sartu eredua gordetzeko. 585 00:55:22,620 --> 00:55:26,360 Dezagun benetan erabili eskaneatzea f beste adibide bat. 586 00:55:26,360 --> 00:55:31,670 Hargatik esaten int batzuk izan ditugu, x = 4, 587 00:55:31,670 --> 00:55:41,110 eta egindako kate bat sortu nahi dugu, katea sortu nahi 588 00:55:41,110 --> 00:55:44,250 bezala, hau askoz beranduago etorriko da, 589 00:55:44,250 --> 00:55:49,020 zerbait besterik ez 4.jpg bezala. 590 00:55:49,020 --> 00:55:51,870 Programa bat non batura counter izango duzu, beraz, hau izan daiteke, 591 00:55:51,870 --> 00:55:56,420 Laburbilduz kontraerasoan i, eta irudi-sorta bat gorde nahi duzun. 592 00:55:56,420 --> 00:56:02,430 Beraz i.jpg, non zure begizta-iterazio bat da i gorde nahi duzun. 593 00:56:02,430 --> 00:56:05,500 Beraz, nola ez JPEG hori kate hau egin dugu? 594 00:56:05,500 --> 00:56:11,720 Nahi duzun da 4.jpg inprimatu nahi baduzu, bakarrik esan izan dugu inprimatu f,% d.jpg 595 00:56:11,720 --> 00:56:14,410 eta, ondoren, JPEG hori inprima litzateke. 596 00:56:14,410 --> 00:56:20,050 Baina nahi dugu katea 4.jpg gorde nahi izanez gero, eskaneatzea f erabiltzen dugu. 597 00:56:20,050 --> 00:56:30,860 Katea s Beraz, benetan dugu can't pertsonaia, char s, goazen 100. 598 00:56:30,860 --> 00:56:35,400 Beraz, deklaratu, 100 karaktere array bat besterik ez dut, 599 00:56:35,400 --> 00:56:39,830 eta hori da, ezinbestean ari gara gordetzeko JPEG horretan sartu joan 600 00:56:39,830 --> 00:56:47,920 Beraz eskaneatu f erabili dugu, eta formatua,% d.jpg nola esango genuke 601 00:56:47,920 --> 00:56:54,980 4.jpg inprimatu ahal izateko, honen formatua% d.jpg izango da. 602 00:56:54,980 --> 00:57:04,020 Beraz, formatu% d.jpg ordeztu% d nahi dugu x da, 603 00:57:04,020 --> 00:57:06,590 eta, orain, kate hori gorde behar dugu nonbait. 604 00:57:06,590 --> 00:57:12,500 Eta non kate hau gordetzea goaz array s da. 605 00:57:12,500 --> 00:57:21,640 Beraz, kodea, s-lerro honen ondoren, inprimatu f, aldagaiak s% s bada, 606 00:57:21,640 --> 00:57:26,280 4.jpg inprimatu. 607 00:57:26,280 --> 00:57:38,930 Beraz, f eskaneatu f eskaneatu f berdina da, gaur egun fitxategi hau baino gehiago begiratzen ez 608 00:57:38,930 --> 00:57:43,600 zer s gorde. 609 00:57:43,600 --> 00:57:46,160 Hori da azken argumentua izango da. 610 00:57:46,160 --> 00:57:54,170 "Scan f funtzioak bilaketen familia bai formatua arabera behean saiatu gisa gorde nahi dugu. 611 00:57:54,170 --> 00:58:02,450 Edozein kokapena puntu gordeta izanez gero itzultzeko dakizukeela - " 612 00:58:02,450 --> 00:58:12,910 Ez, ona izango dugu agian. Uste bigarren bat me. 613 00:58:12,910 --> 00:58:26,350 Beraz, eskaneatu f ez du zer heck ez duten funtzioa? 614 00:58:26,350 --> 00:58:31,650 Beraz, eskaneatu f ez da zenbaki oso bat hartu eta dot jpg egin du. 615 00:58:31,650 --> 00:58:43,490 [Mumbles] da. 616 00:58:43,490 --> 00:58:49,360 Gorde katea int C. aldagai int 617 00:58:49,360 --> 00:58:55,940 Zer da aldagai hau da, edo zer funtzio deitzen zaio? 618 00:58:55,940 --> 00:59:04,950 Bai. That's - bai. Beraz, zer nahi duzun nintzen definitzeko aurretik inprimatu f izan zen, 619 00:59:04,950 --> 00:59:09,820 zein zentzu askoz gehiago, zergatik inprimatu f bezala askoz ere gehiago izan zen esan dut egiten. 620 00:59:09,820 --> 00:59:14,700 Scan f oraindik mota inprimatu f bezala, baina s inprimatu f da eskaneatu pasa 621 00:59:14,700 --> 00:59:17,510 eta ordezkatu aldagai eta gaur egun kate batean gorde. 622 00:59:17,510 --> 00:59:19,620 Inprimatzeko beharrean, kate bat gordetzen du. 623 00:59:19,620 --> 00:59:25,070 Beraz, alde batetara utzi erabat. Formatu - adierazlea uste jarrai dezakezu inprimatu f bezala. 624 00:59:25,070 --> 00:59:34,510 Beraz, gaur egun, nahi dugu 4.jpg gauza egin nahi izanez gero, s inprimatu f ez genuke, honen x. 625 00:59:34,510 --> 00:59:38,520 Beraz, zer eskaneatu f egiten ari da zer izan zen zure galdera izango da? 626 00:59:38,520 --> 00:59:40,820 [Student] besterik ez dut hemen egiten saiatzen ari gara nahastu. 627 00:59:40,820 --> 00:59:43,450 JPEG hori. 1 gehiago denbora azaltzeko Ezin duzu? 628 00:59:43,450 --> 00:59:52,710 Honetan, beraz, f eskaneatu f gaur egun relevent gutxiago da; zorionez, ate atzera izango da modu bat. 629 00:59:52,710 --> 01:00:02,240 Baina, zer izan zen hasiera batean erakusteko asmorik izan da, hau da, benetan zuzenean [horietan garrantzitsua? F5] 630 01:00:02,240 --> 01:00:08,520 S inprimatu f erabiltzen ari zara, non, esan 100 irudiak ditugu, 631 01:00:08,520 --> 01:00:13,630 eta irakurri nahi duzun irudia. 1.jpg, 2.jpg, 3.jpg. 632 01:00:13,630 --> 01:00:21,520 Beraz, ordena Horretarako, f open behar duzu, eta ondoren ireki nahi duzun katea pasatzen duzu. 633 01:00:21,520 --> 01:00:30,020 Beraz 1.jpg ireki nahi genuke; Kate dela 1.jpg 634 01:00:30,020 --> 01:00:37,660 s egiten dugu d.jpg inprimatu% f-dugu ez int i = 0. 635 01:00:37,660 --> 01:00:46,580 i <40, i + +. 636 01:00:46,580 --> 01:00:51,130 Beraz, s inprimatu f% i d.jpg. 637 01:00:51,130 --> 01:00:56,320 Beraz, lerro honen ostean, gaur egun aldagai edo array s da 1.jpg joan. 638 01:00:56,320 --> 01:01:10,610 Edo, 0.jpg, 1.jpg, 2.jpg. Eta, beraz, ireki, ezin dugu aldi berean, irudi bakoitza irakurtzeko. 639 01:01:10,610 --> 01:01:19,550 Beraz, f ez inprimatu s. F zer da gaur egun egiten inprimatu s ikusten duzu? 640 01:01:19,550 --> 01:01:25,720 [Student] Ados, beraz, hartu - kate bat sortzen da, something.jpg, eta gero gordetzen. 641 01:01:25,720 --> 01:01:30,360 Bai. Sortzen du beste formatu katea da, eskaneatu, f eta inprimatu f bezala, 642 01:01:30,360 --> 01:01:37,530 non aldagai guztiak txertatzen bigarren argumentua, s i aurka izan daiteke. 643 01:01:37,530 --> 01:01:42,280 Beharbada, esan nahi dut, kasu. Baina edozein izanda ere, argumentuak ordena da. 644 01:01:42,280 --> 01:01:45,440 Aldagai guztiak sartu formatu katea sartu da 645 01:01:45,440 --> 01:01:52,250 eta, ondoren, gure buffer batean gorde; buffer bat da, non katea gordetzeko ari gara deitzen diogu. 646 01:01:52,250 --> 01:02:00,750 Beraz, s barruan ari gara kate-formatu behar bezala gordetzeko,% d izan ordez 4. 647 01:02:00,750 --> 01:02:08,080 [Student] Beraz, hau genuen, besterik ez reassigned egingo aldakorreko f da? 648 01:02:08,080 --> 01:02:18,110 Bai. Beraz, jatorrizko f itxi behar dugu hau egin aurretik. 649 01:02:18,110 --> 01:02:22,810 Baina - eta gero, gainera, ez ziren bada f ireki hemen, eta gero esan beharko genuke 650 01:02:22,810 --> 01:02:29,280 Bai. Baina ehun desberdinak fitxategiak irekitzeko litzateke. 651 01:02:29,280 --> 01:02:37,360 [Student] Baina ez genuke egin ahal izango duzu edo sartzeko ados. 652 01:02:37,360 --> 01:02:44,230 Ongi da. Beraz, eskaneatu f, f eskaneatu f, ideia bera antzeko zerbait da, 653 01:02:44,230 --> 01:02:53,610 baina horren ordez, kate batean gorde ordez, orain egiten ari zaren bezala 654 01:02:53,610 --> 01:03:02,420 Sting eta eredua katea aurka parekatzen joan eta emaitzak gordetzeko aldagai sartu. 655 01:03:02,420 --> 01:03:11,290 4.jpg antzeko zerbait baino gehiago analizatu, eta zenbaki oso gordetzeko batura int x 4 eskaneatzea f erabili ahal izango duzu. 656 01:03:11,290 --> 01:03:13,430 Horixe eskaneatzea f erabili ahal izango dugu. 657 01:03:13,430 --> 01:03:16,300 F eskaneaketa f Horretarako komando-lerroan. 658 01:03:16,300 --> 01:03:19,200 Benetan naiz nahiko ziur hau da, zer CS50 liburutegi du. 659 01:03:19,200 --> 01:03:29,050 Beraz, esan duzunean, "lortu int," eskaneatu f-ing baino gehiago eskaneatu f erabiltzailearen sarrera lortuko duzu. 660 01:03:29,050 --> 01:03:34,670 F eskaneaketa f da gauza bera egin du, baina fitxategi bat erabiliz eskaneatu. 661 01:03:34,670 --> 01:03:41,090 Hortaz, hona hemen, fitxategi hau baino gehiago ari gara bila. 662 01:03:41,090 --> 01:03:45,460 Eredua dator saiatzen ari gara kate batzuk 127 karaktere luze da 663 01:03:45,460 --> 01:03:48,100 ondoren lerro berri bat 664 01:03:48,100 --> 01:03:54,770 Beraz, nahiz eta besterik ez izan esan nahiko ziur nago "dator s" hiztegian geroztik 665 01:03:54,770 --> 01:03:57,770 izan gertatuko dugu, luzea da hori bermatzen hitza ez gaude, 666 01:03:57,770 --> 01:04:03,310 eta f eskaneatu f ere, uste dut, egingo lerro berria gelditzeko ez du axola zer. 667 01:04:03,310 --> 01:04:06,970 Baina partidan lerro berria sartu dugu, eta - 668 01:04:06,970 --> 01:04:13,960 [Student] ez badugu linea berri, ez litzateke hitz baten zatiak aurkitu? 669 01:04:13,960 --> 01:04:22,900 - Bakoitzean hiztegian begiratzeko - 670 01:04:22,900 --> 01:04:26,200 Beraz, hiztegian, hauek dira gure hitz guztiak. 671 01:04:26,200 --> 01:04:30,500 Bakoitzak lerro berri bat da. 672 01:04:30,500 --> 01:04:32,510 Eskaneatu f da hitz hau jasotzeko. 673 01:04:32,510 --> 01:04:38,750 Linea berri ez badugu, ondoren, posible da hurrengo eskaneatzea f den linea berri irakurri. 674 01:04:38,750 --> 01:04:44,180 Baina linea berri barne Ondoren ahaztu lerro berria. 675 01:04:44,180 --> 01:04:49,440 Baina inoiz ez dugu hitz baten zati bat, beti ari gara geroztik sortu linea berri bat irakurtzen, ez du axola zer. 676 01:04:49,440 --> 01:04:54,530 [Student] Baina, zer da hitza "cissa," cissa atsegin baduzu bilaketa. 677 01:04:54,530 --> 01:04:57,380 Izango dela, eta esan Partidu bat da? 678 01:04:57,380 --> 01:05:05,110 Beraz, hemen dugu - irakurtzeko izango da, hau da, benetan ona puntu bat. 679 01:05:05,110 --> 01:05:10,660 Inoiz ez gara egungo erabiliz - komando-lerroko argumentu lehen hitza bilatzen ari gara. 680 01:05:10,660 --> 01:05:16,460 Beraz, katea, hitza = argv 1. 681 01:05:16,460 --> 01:05:20,020 Beraz, katea bilatzen ari gara argv 1. 682 01:05:20,020 --> 01:05:23,290 Ez gara gure eskaneatzea f hitz bat bilatzen. 683 01:05:23,290 --> 01:05:28,030 Zer eskaneatu f egiten ari ginen hitz bakoitza hiztegian, 684 01:05:28,030 --> 01:05:34,320 eta, ondoren, behin strcmp erabili alderatu dugu hitz egin behar dugu. 685 01:05:34,320 --> 01:05:39,210 Gure hitza alderatu gara eta zer irakurri besterik ez dugu sartu 686 01:05:39,210 --> 01:05:45,110 Beraz, ezinbestean, amaitzeko eskaneatu fs sorta bat egiten dugu 687 01:05:45,110 --> 01:05:52,130 besterik ez da, beraz, arte gertatzen eskaneatzea f itzultzeko 688 01:05:52,130 --> 01:05:54,800 itzuliko da, betiere, bat datorren bezala, hitz berri bat, 689 01:05:54,800 --> 01:06:01,360 eta beste zerbait itzuliko da ahalik eta azkarren, huts egin du hitza dator. 690 01:06:01,360 --> 01:06:08,440 Hiztegi osoa baino gehiago irakurtzen ari gara, line gordetzeko line hitz bakoitzaren aldagaia s. 691 01:06:08,440 --> 01:06:17,240 Ondoren, hitza ari gara alderatuz s, eta konparazioa == 0 bada, 692 01:06:17,240 --> 01:06:21,650 strcmp gertatzen 0 ekartzea Partidu bat egin zen. 693 01:06:21,650 --> 01:06:31,510 Beraz, 0 bada, eta gero f inprimatu ahal izango dugu, bat datoz, 694 01:06:31,510 --> 01:06:35,370 edo hitza hiztegian da, edo dena delakoa f inprimatu nahi duzun. 695 01:06:35,370 --> 01:06:41,450 Eta gero, ez dugu nahi f ixteko behin eta berriro. 696 01:06:41,450 --> 01:06:50,410 Mota egin nahi dugun gauza da, eta ez dugu hiztegian hitz bila. 697 01:06:50,410 --> 01:06:56,660 Beraz, hori egin ahal izan genuen, bere eredua, cissa bila nahi badugu, esan nahi duzu aurretik. 698 01:06:56,660 --> 01:07:00,260 nahi izan dugu, eredu hori bilatzeko, bada, kasua litzateke huts egin 699 01:07:00,260 --> 01:07:08,010 hori ez da benetan hitz bat, baina hiztegian hitz bat gertatzen da bertan izan delako. 700 01:07:08,010 --> 01:07:13,560 Beraz, hitz hau bat izango litzateke, baina hitza azpimultzo hau ez da hitz bat bera. 701 01:07:13,560 --> 01:07:17,250 Baina hori ez da nola erabiltzen ari gara; hitz bakoitzean irakurtzen ari gara 702 01:07:17,250 --> 01:07:19,740 eta, ondoren, hitz horren dugun hitza alderatuz. 703 01:07:19,740 --> 01:07:25,780 Beraz, beti ari gara full hitzak alderatuz. 704 01:07:25,780 --> 01:07:29,620 Bidaliko dut bukatu irtenbide geroago. 705 01:07:29,620 --> 01:07:32,050 Ia eskuineko erantzun mota da, nire ustez. 706 01:07:32,050 --> 01:07:34,720 [Student comment, ulertezina] 707 01:07:34,720 --> 01:07:40,870 Oh, ez kentzeko I aurretik? Char s, 127 esan uste dut ahaztu dut zer handiena da. 708 01:07:40,870 --> 01:07:44,100 128 besterik ez dugu egin, beraz, gaur egun, nahikoa luzea da s. 709 01:07:44,100 --> 01:07:46,570 Ezer inprimatu beharrik ez dugu. 710 01:07:46,570 --> 01:07:56,440 Ari gara, halaber, gure fitxategia itxi nahi izan nahi du, eta hori erantzunik egokiena egin behar. 711 01:07:56,440 --> 01:07:59,440 CS50.TV