1 00:00:00,000 --> 00:00:02,200 [Powered by Google Translate] [Aste 3] 2 00:00:02,200 --> 00:00:03,950 [David J. Malan - Harvard Unibertsitatea] 3 00:00:03,950 --> 00:00:07,140 [Hau CS50 da. - CS50.TV] 4 00:00:07,140 --> 00:00:10,720 Dezagun non utzi ditugu azken aldian norabidean gidatu me, 5 00:00:10,720 --> 00:00:13,890 sintaxia baino pixka bat gehiago pentsatzen hasi 6 00:00:13,890 --> 00:00:17,150 eta apur bat gutxiago uste minutiae-guztiei buruzko saiatzen 7 00:00:17,150 --> 00:00:20,630 denbora pixka bat hartzen du, beraz, orain arte puntu dagokionez acclimate 8 00:00:20,630 --> 00:00:22,360 eta parentesi eta kortxeteak kurtsibak, 9 00:00:22,360 --> 00:00:25,630 gauzak apur bat hartzen hasteko kontzeptuala maila handiagoa 10 00:00:25,630 --> 00:00:28,800 beraz, arazoak hasteko orain dugu hurrengo asteetan zehar hainbat konpontzeko 11 00:00:28,800 --> 00:00:32,340 askoz gehiago inplikatzeko maila altuagoa kontzeptuala arazoak 12 00:00:32,340 --> 00:00:36,310 eta apur bat gutxiago sintaktiko en zure oinak bustitzeko 13 00:00:36,310 --> 00:00:40,090 eta eskuak zikin horiek azken asteetan sintaxia batzuk. 14 00:00:40,090 --> 00:00:43,690 >> Beraz, gogora ekarri azken astean array baten ideia hori aurkeztu dugu. 15 00:00:43,690 --> 00:00:49,320 Eta ingelesez array bat zer gisa azaldu daiteke? >> [Inaudible ikaslearen erantzuna] 16 00:00:49,320 --> 00:00:51,710 Sentitzen dugu? 17 00:00:51,710 --> 00:00:54,810 Bilduma bat? >> [Inaudible ikaslearen erantzuna] >> Ados, ona da. 18 00:00:54,810 --> 00:00:57,820 Elementuen bilduma. Beraz, Scratch-en array ikusi genuen. 19 00:00:57,820 --> 00:01:01,880 Gertatu duzun pset erabili 0 Scratch-en zerrendak gauza arrastatu ahal bada 20 00:01:01,880 --> 00:01:05,410 laranja eta bananak, sartu ordenatzen inbentario bat bezala, 21 00:01:05,410 --> 00:01:07,100 mota horretako zer array bat da. 22 00:01:07,100 --> 00:01:10,980 Eta gero teknikoki, benetako ordenagailu baten testuinguruan, 23 00:01:10,980 --> 00:01:14,730 array bat besterik ez da, memoria zatia alboko. 24 00:01:14,730 --> 00:01:18,590 Beste era batera esanda, byte bat baduzu, byte beste gero, orduan byte beste, orduan byte beste, 25 00:01:18,590 --> 00:01:21,330 eta byte horiek marrazteko irudi bat bada, 26 00:01:21,330 --> 00:01:24,510 Atzera itzuli ziren itzuli. Hau da, zer esan nahi du alboko dugu. 27 00:01:24,510 --> 00:01:26,690 >> Beraz, byte multzoko 1, ondoren, 2 eta, ondoren, 3. 28 00:01:26,690 --> 00:01:29,680 Horrek ez du esan nahi hemen, hemen, hemen, hemen. 29 00:01:29,680 --> 00:01:33,800 Zatia 0 edo gehiago bytes Alboko array bat da. 30 00:01:33,800 --> 00:01:36,160 Beraz, zer dira erabilgarri? 31 00:01:36,160 --> 00:01:40,090 Gogorarazten gordetzeko pertsona quiz kalifikazio adibide contrived sort hau izan genuen programa batean 32 00:01:40,090 --> 00:01:42,580 zure quiz batez bestekoa kalkulatzeko, ikastaro batzuk 33 00:01:42,580 --> 00:01:46,780 eta gogoratzen programa hori idatzi ezin izan dugu aldakorreko quiz1 geratuko. 34 00:01:46,780 --> 00:01:49,550 Ondoren deitu quiz2 beste aldagai bat izan dugu. 35 00:01:49,550 --> 00:01:52,030 Baina gero 3 balitz galdetegiek klase honetan, quiz4. 36 00:01:52,030 --> 00:01:55,710 Edo badago astero galdetegi bat izan zen, quiz5 izango litzateke, quiz6, quiz7. 37 00:01:55,710 --> 00:01:58,520 Beraz, aldagai horiek guztiak barruan deklaratu nahi duzun nagusiak 38 00:01:58,520 --> 00:02:00,470 edo zure programa nonbait, 39 00:02:00,470 --> 00:02:03,870 eta ikuspegi arazoa, erraza da, kopiatu eta itsatsi arren, 40 00:02:03,870 --> 00:02:06,120 da, besterik gabe bihurtzen da oso azkar unwieldy. 41 00:02:06,120 --> 00:02:09,360 Jainkoa forbid benetan, 30 galdetegiak edo 50 galdetegiek. 42 00:02:09,360 --> 00:02:12,080 Batxilergoko estilo eguneroko pop quiz bezala bada, 43 00:02:12,080 --> 00:02:15,910 ondoren, ridiculously aldagai ari deklaratu zerrenda luze bat besterik ez duzu, 44 00:02:15,910 --> 00:02:17,780 eta hori guztia oso azkar lortzen kontrola. 45 00:02:17,780 --> 00:02:20,820 Itsusi da, mantentzeko zaila da, eta, beraz, askoz errazagoa da typo egin 46 00:02:20,820 --> 00:02:23,910 lortu izanez gero zenbaki 1 ostalaria nonbait zure programan. 47 00:02:23,910 --> 00:02:26,800 >> Beraz, array baten ideia sartu dugu horren ordez. 48 00:02:26,800 --> 00:02:30,760 Eta gogoratzen jarri du martxan, honen antzeko zerbait apur bat egiten dugu programa honetan. 49 00:02:30,760 --> 00:02:33,950 Gaur egungo Iturria 3 Astelehena direktorioan sartu me 50 00:02:33,950 --> 00:02:37,160 eta ireki array, azken aldiz ikusi genuen. 51 00:02:37,160 --> 00:02:39,940 Eta nahiz eta ez ziren berriak C trikimailuen pare bat hemen, 52 00:02:39,940 --> 00:02:41,920 horien artean, konstante baten ideia, 53 00:02:41,920 --> 00:02:47,140 gogoratzen deklaratu karroza bat baino gehiago funtsean, sintaxi honen bidez: 54 00:02:47,140 --> 00:02:51,750 nuen, eta ondoren aldagaiaren izena, eta gero karratu kortxeteak erabili dugu benetan, lehen aldiz, 55 00:02:51,750 --> 00:02:55,450 eta zer egin duten karratu giltza barruan eraginkortasunez zenbaki bat jarri zen. 56 00:02:55,450 --> 00:02:59,780 Baina zenbaki bat jarri ordez, letra larriz hitza, galdetegiek jarri dut. 57 00:02:59,780 --> 00:03:03,220 Eta zer galdetegiek bezala letra larriz hitz bat jarriz motibazioa 58 00:03:03,220 --> 00:03:08,170 eta, ondoren, linea 17-en trikimailu erabiliz hemen benetan zenbaki bat eman hori? 59 00:03:08,170 --> 00:03:11,240 Zein motibazio bertan? Bai. 60 00:03:11,240 --> 00:03:13,360 >> [Inaudible ikaslearen erantzuna] >> Zehazki. 61 00:03:13,360 --> 00:03:16,630 Nahi dugu hori 2 balioa aldatu nahi izanez gero, besterik ez dugu aldatu, leku 1 62 00:03:16,630 --> 00:03:19,680 kontuan hartu delako, nahiz eta ez dut gogoratzen zer programa hau egin zehatz-mehatz, 63 00:03:19,680 --> 00:03:22,040 baina besterik ez duzu gaingabetuak bada galdetegiek ikusten duzu, galdetegiek. 64 00:03:22,040 --> 00:03:24,720 Galdetegiak, behera hemen gehiago galdetegiak ikusten duzu. 65 00:03:24,720 --> 00:03:28,180 Beraz, ez bada, ez dugu etengabe, zorrotz erabilera definitzeko, 66 00:03:28,180 --> 00:03:33,320 idatzitako genuke 2, ondoren, 2 eta, ondoren, 2 eta, ondoren, 2, eta hori gauza ederra da. Bezain zuzena izango litzateke. 67 00:03:33,320 --> 00:03:36,220 Baina demagun datorren urtean 3 galdetegiek dugu CS50. 68 00:03:36,220 --> 00:03:39,190 Joan behar dut eta eguneratzeko kodea Beraz, konpilatu behar dut, 69 00:03:39,190 --> 00:03:43,820 baina arazoa da zerbait ergelak ez bada, ahaztu I 1 2 aipamen bezala 70 00:03:43,820 --> 00:03:46,750 eta plug ahaztu 3, programa osoa oso ondo apurtu. 71 00:03:46,750 --> 00:03:48,720 Beraz, arazoak eskatzen ari gara. 72 00:03:48,720 --> 00:03:53,170 >> Beraz, konstante baten ideia da datu-pieza batzuk factoring buruz, 73 00:03:53,170 --> 00:03:56,070 ote den kate bat edo char edo mugikor bat edo dena delakoa, 74 00:03:56,070 --> 00:04:00,070 eta geratuko da, beraz, leku 1 gehiago erraz alda ditzakezu etorkizunean. 75 00:04:00,070 --> 00:04:03,660 Eta gainera, Egia, pixka bat errazagoa bada besterik ez delako uste duzu irakurri, 76 00:04:03,660 --> 00:04:07,840 galdetegiek da, edo are gehiago izan dugu berrizendatu NUMBER_OF_QUIZZES bezalako zerbait 77 00:04:07,840 --> 00:04:09,430 edo zerbait gehiago esplizitua. 78 00:04:09,430 --> 00:04:11,830 Kodea apur bat gehiago, zer egiten ari da bistako bihurtzen da, 79 00:04:11,830 --> 00:04:15,780 eta apur bat gutxiago multzoko 2 esan nahi gerta liteke galdetzen duzu. 80 00:04:15,780 --> 00:04:18,920 Etengabeko Beraz, zuen ezer funtsean egin array. 81 00:04:18,920 --> 00:04:22,990 Array karratu giltza horiek modu sartu. 82 00:04:22,990 --> 00:04:26,610 >> Beraz, konturatu linea 23 erabiltzaileak eskatzen dugu, "Zein izan ziren zure quiz partiturak?" 83 00:04:26,610 --> 00:04:31,120 Ondoren, besterik ez dugu begizta horrek, itxuraz, bere kalifikazio erabiltzaile galdetzen. Nola? 84 00:04:31,120 --> 00:04:37,460 0-tik 2 iterates. Eta 2 diot galdetegiek txanoak guztietan dagoelako une honetan 2. 85 00:04:37,460 --> 00:04:42,310 Beraz, 0-tik 2 iterates eta gero bistaratzen out Quiz # zerbait zerbait, 86 00:04:42,310 --> 00:04:45,830 eta, ondoren, GetFloat erabiltzen da erabiltzaileari balio bat lortzeko. 87 00:04:45,830 --> 00:04:49,050 Beraz, sintaxia berri bakarra beste pieza Asteazkena astetik. 88 00:04:49,050 --> 00:04:53,120 Nahi duzun zerbait array horretan kokapen jakin batean gorde nahi baduzu, 89 00:04:53,120 --> 00:04:55,460 erabili berriro karratu parentesi artean. 90 00:04:55,460 --> 00:04:57,030 >> Beraz, dikotomia apur bat dago hemen. 91 00:04:57,030 --> 00:04:59,040 Karratu parentesi artean erabiltzen duzun lehen aldian 92 00:04:59,040 --> 00:05:02,250 array, nola handi izan nahi duzu zehaztu erabili nahi duzun. 93 00:05:02,250 --> 00:05:06,580 Baina testuinguru honetan hurrengo hemen non berriro enplegatzen dugu karratu parentesi artean hauek 94 00:05:06,580 --> 00:05:10,540 array hori esan nahi du non balio batzuk jarri nahi duzun? 95 00:05:10,540 --> 00:05:13,650 Eta hemen bereizketa testuinguru adierazitako daiteke. 96 00:05:13,650 --> 00:05:17,130 Iragarki hemen datu-mota bat dugu, eta, ondoren, aldagai baten izena dugu, 97 00:05:17,130 --> 00:05:20,770 ondoren, gure karratu giltza dugu, barruan puntu eta koma zenbaki batekin. Dela. 98 00:05:20,770 --> 00:05:22,290 Beraz, adierazpen bat da. 99 00:05:22,290 --> 00:05:28,390 Karroza grade2; bezala nahiz egin izan dugu karroza grade1 bezalako zerbait da; 100 00:05:28,390 --> 00:05:31,730 baina berriro ere, oso azkar, modu gehiegi kopia, itsatsi sartu devolves, 101 00:05:31,730 --> 00:05:34,260 beraz, ordez sinplifikatuz besterik ez dugu, esate baterako, 102 00:05:34,260 --> 00:05:38,800 Horrek esan nahi du aurrerantzean kalifikazioa bracket 0 gorde daiteke, 103 00:05:38,800 --> 00:05:41,760 kalifikazioa bracket 1 gorde daiteke beste dugu, 104 00:05:41,760 --> 00:05:46,890 baina zer I goof bada, eta, esate baterako, nire loop doa hain urrun 105 00:05:46,890 --> 00:05:48,740 Adibidez, hau baino txikiagoa edo berdina egiten dut, 106 00:05:48,740 --> 00:05:50,620 abisuaren aurreko bug baten iturri izan zen 107 00:05:50,620 --> 00:05:55,590 den eraginkortasunez esan nahi du batzuk begizta honen hirugarren ustekabeko iterazio 108 00:05:55,590 --> 00:06:00,380 Parentesirik 2 erabiltzen dut. Eraginkorrean, hemen zer gerta liteke? Sentitzen dugu? 109 00:06:00,380 --> 00:06:02,860 [Ikasleak] ordezkatu behar da. >> Va egin behar du? 110 00:06:02,860 --> 00:06:04,520 Zer aldatuko litzateke? 111 00:06:04,520 --> 00:06:10,890 Hau da, hitzez hitz esaten ordezkatzeko balio bueltan GetFloat kokapena 2. 112 00:06:10,890 --> 00:06:13,690 Baina arazoa da nola big istorioa Puntu honetan array da? 113 00:06:13,690 --> 00:06:17,730 [Inaudible ikaslearen erantzuna] >> array da, oraindik ere, tamaina 2 bakarrik 114 00:06:17,730 --> 00:06:22,730 array delako, aldagai edozein bezala izendatu zuten lehen aldiz, erabili aurretik, 115 00:06:22,730 --> 00:06:27,220 eta hemen zehaztu delako konstante 2 kalifikazio jarri naiz dut joan behar dut. 116 00:06:27,220 --> 00:06:29,930 >> Baina gogoan, ordenagailu zientzialari 0 hasita. 117 00:06:29,930 --> 00:06:33,620 Beraz, kokapena array horretan lehen parentesia 0 da. 118 00:06:33,620 --> 00:06:40,210 Hurrengo kokapena 1. Gauza hau da inoiz beraz apur bat urrunegi alde. 119 00:06:40,210 --> 00:06:42,870 Beraz, beste era batera esanda, egia esan nuen array hau - 120 00:06:42,870 --> 00:06:46,790 eta nola Coopera Gurekin hemen ikus me - 121 00:06:46,790 --> 00:06:52,360 array bat daukat, besterik gabe ditudan honela marrazten 122 00:06:52,360 --> 00:06:56,750 eta espazioa 2 elementu esleitu dut, hau marraztu dezake I hau atsegin memoria 123 00:06:56,750 --> 00:06:58,020 non mihise zuri handi hau. 124 00:06:58,020 --> 00:07:00,920 Besterik ez da RAM dut nire ordenagailuan, RAM Kontzertu bat, 2 RAM kontzertuak, edozein izanda ere, 125 00:07:00,920 --> 00:07:05,400 baina 2 kaxak hauek orain banaka mugikor bat, 32 bit. 126 00:07:05,400 --> 00:07:10,860 Beraz, 1 zenbakia jarri dut hemen 1.0 bezala eta, ondoren, beste zenbaki bat jarri dut hemen 3,2 atsegin dute 127 00:07:10,860 --> 00:07:15,280 baina gero parentesirik 2, zerbait jarriz hemen bezala egiten dut. 128 00:07:15,280 --> 00:07:17,820 Eta irudian dioen bezala, ez dago ezer han. 129 00:07:17,820 --> 00:07:20,450 Sort da inoren lurralde atsegin dut ez delako sistema eragilearen eskatuko 130 00:07:20,450 --> 00:07:23,550 Hirugarren galdetegi hau me emateko. 131 00:07:23,550 --> 00:07:26,940 Nuen hirugarren galdetegi hori nahi izanez gero, egin behar izan nuen behar forethought 132 00:07:26,940 --> 00:07:31,700 geratuko da sistema eragilearen galdetu galdetegiek ez 2 133 00:07:31,700 --> 00:07:34,210 baina horren ordez berdinak 3. 134 00:07:34,210 --> 00:07:39,000 >> Beraz, beste era batera esanda, argazki eraginkortasunez dugun esku itxura hau hemen. 135 00:07:39,000 --> 00:07:42,260 Honek berriro inoren lurra da. Ez dugu hobeto saiatu balioak idatziz hemen. 136 00:07:42,260 --> 00:07:45,300 Baina, berriro ere, ordenagailua delako zientzialariek, 0-tik, 137 00:07:45,300 --> 00:07:49,520 kokapena honi buruz hitz array, ustezko kokapena 0 138 00:07:49,520 --> 00:07:53,890 hau da, ustezko kokapena 1 izan behar duela, eta hori ere ez da existitzen 139 00:07:53,890 --> 00:07:57,380 besterik ez dugu eskatu delako sistema eragilearen 2 lekuak, hala nola. 140 00:07:57,380 --> 00:08:00,130 Duten beste hizkuntza batzuetan aldez aurretik programazio esperientzia duten Beraz, 141 00:08:00,130 --> 00:08:04,150 hori ez da beti array edo deitu bektoreak gauzak gertatzen den jakin daiteke. 142 00:08:04,150 --> 00:08:06,930 Izan ere, mantendu dezakezu gehituz eta gehituz eta gauzak gehitzen array 143 00:08:06,930 --> 00:08:10,720 Egia, Scratch gaitasuna izan dugu, eta oraindik eman hemen badirudi 144 00:08:10,720 --> 00:08:15,160 C ere askoz ere esplizituki programazioa. 145 00:08:15,160 --> 00:08:17,980 Bakarrik da eta ordenagailua oraintxe bertan, eta ordenagailua baino ez da egingo 146 00:08:17,980 --> 00:08:19,530 zer egin esango dizu. 147 00:08:19,530 --> 00:08:24,270 Beraz, bada esan besterik ez duzu 2 karroza emateko modu line 22 Hemen, 148 00:08:24,270 --> 00:08:27,640 hori guztia lortzeko ari zaren sistema eragilearen: espazioa 2. 149 00:08:27,640 --> 00:08:34,049 >> Beraz, gero eta gehiago dira, zure programak array dagokionez buggy noizean behin. 150 00:08:34,049 --> 00:08:37,520 Piztia izaera sort Horren bidez, guztion fallible dira, 151 00:08:37,520 --> 00:08:42,490 eta uneren batean oso litekeena da zure array muga gainditzen indizea duzu. 152 00:08:42,490 --> 00:08:45,980 Eta hori besterik ez joan bracket zerbait esaten modu fancy 153 00:08:45,980 --> 00:08:49,970 eta beste zerbait izan zen, zenbaki bat besterik ez too big. Zure array mugetatik haratago joan zara. 154 00:08:49,970 --> 00:08:51,530 Baina goitik da. 155 00:08:51,530 --> 00:08:54,990 Programa honen gainerako benetan ezer ez funtsean, array zerikusia du. 156 00:08:54,990 --> 00:08:58,180 Denak da informatika batez bestekoen simple aritmetikoa batzuei buruzko. 157 00:08:58,180 --> 00:09:03,200 Beraz, hemen izan behar, hau loop hemen lehen aldakorra izeneko batura: 0 hasieratu. 158 00:09:03,200 --> 00:09:09,020 Ondoren, batetik bestera joateko 0-tik 2 dugu berriro, eta gehitu summation aldagaia dugu 159 00:09:09,020 --> 00:09:12,620 Ith kalifikazioa, eta, beraz, parentesia 0 ondoren parentesirik 1. 160 00:09:12,620 --> 00:09:15,130 Eta gero, nahi duzun eskola kalifikazioa egin batez bestekoa kalkulatzeko, 161 00:09:15,130 --> 00:09:19,420 hartu besterik ez dugu batura hori, zatitzea galdetegiek kopuru osoaren 162 00:09:19,420 --> 00:09:22,520 eta, ondoren, neurri ona funtzio bat hemen izeneko txandan deitzen dugu. 163 00:09:22,520 --> 00:09:28,580 >> Orain, bat alde batera utzita, zer linea 34 parenthetical int honekin asko da? 164 00:09:28,580 --> 00:09:31,730 Etorri izan daiteke dagoeneko atalean, ez dute benetan hitz formalki hemen 165 00:09:31,730 --> 00:09:35,210 baina zer int hau parens ziurrenik egiten da? >> [Inaudible ikaslearen erantzuna] 166 00:09:35,210 --> 00:09:38,500 Bai, casting edo typecasting dagokio, 167 00:09:38,500 --> 00:09:41,690 Horrek esan nahi du, 1 datu-mota hartu eta bestera bihurtzeko. 168 00:09:41,690 --> 00:09:45,400 Ezin duzu hau egin datu-mota guztiak, batzuetan, pixka bat arraroa izango delako. 169 00:09:45,400 --> 00:09:49,640 Baina kasu honetan, txanda balioa bueltan mugikor bat da 170 00:09:49,640 --> 00:09:53,880 zeren, azken finean, float dut hartu eta zenbaki bat zatituz 2 bezala, 171 00:09:53,880 --> 00:09:55,840 Mugikor bat itzuli dut. 172 00:09:55,840 --> 00:10:00,760 Baina eskola kalifikazioa jendeak ez benetan nahi izan zen, batez besteko 93,4 ezagutu 173 00:10:00,760 --> 00:10:04,420 inoiz ziren konturatzen delako izango dute, beraz, 95 puntu hori biribiltze ixteko. 174 00:10:04,420 --> 00:10:09,540 >> Beraz, guztiontzat int ordez erabiltzeko biribiltzeko hurbilen int nahi dugu, 175 00:10:09,540 --> 00:10:12,730 kasu honetan, 94 izan ondoren puntu gabe. 176 00:10:12,730 --> 00:10:14,530 Beraz, trikimailu matematiko txiki bat besterik ez da. 177 00:10:14,530 --> 00:10:17,570 Eta itzuli gara galdaketa nozioa inplikazio izan delako, 178 00:10:17,570 --> 00:10:21,640 aurkitu ez baduzu dagoeneko, arazoa ezarri 2. 179 00:10:21,640 --> 00:10:25,210 Array bat orduan, pentsatu ahal izango duzu - egun osoan irribarrea me. 180 00:10:25,210 --> 00:10:27,830 Itxura hau atsegin marraztu irudi bat bada, 181 00:10:27,830 --> 00:10:31,460 baina gakoa da tamaina hori ere zuk aukeratutako 182 00:10:31,460 --> 00:10:34,050 eskatu duzun sistema eragilea. 183 00:10:34,050 --> 00:10:39,460 Edozein galdera ondoren, array on? Bai. 184 00:10:39,460 --> 00:10:47,080 [Inaudible ikasleak galdera] 185 00:10:47,080 --> 00:10:49,310 Ah, galdera ona. 186 00:10:49,310 --> 00:10:53,150 Galdera da, zer gertatzen array 0 null? Testuinguru honetan, ez da existitzen. 187 00:10:53,150 --> 00:10:57,430 Hori bakarrik, kateak, etorri une bat besterik ez gara testuinguruan badago. 188 00:10:57,430 --> 00:11:02,300 Baina array bat, kasu honetan bezala, duzun guztia lortzeko zer sistema eragilea eskatzen duzu. 189 00:11:02,300 --> 00:11:04,050 >> Eta bat alde batera utzita, hau izan unclear kausituko, 190 00:11:04,050 --> 00:11:07,030 Sistema eragilearen esaten dizu mantentzen dut, galdetu sistema eragilea. 191 00:11:07,030 --> 00:11:10,090 Sistema eragile bat, ezagutzen ziurrenik duzun bezala, Mac OS, Windows, Linux da. 192 00:11:10,090 --> 00:11:13,560 Funtzioak GetFloat bezala deitzen ari zaren 193 00:11:13,560 --> 00:11:19,280 edo kalifikazio bezalako aldagaiak deklaratzen, 194 00:11:19,280 --> 00:11:23,200 egunaren amaieran eraginkortasunez ari zaren beste norbaitek emango dizu memoria hori eskatuz 195 00:11:23,200 --> 00:11:25,940 dugun bezala, programatzaileak delako aspirante 196 00:11:25,940 --> 00:11:28,800 ez daki nola benetan fisiko memoria sarbidea. 197 00:11:28,800 --> 00:11:31,100 Baina norbaitek ez: sistema eragilea. 198 00:11:31,100 --> 00:11:36,630 Beraz, gainera gurekin ikonoak eta menuak eder eta karpetak aurkeztea eta atsegin 199 00:11:36,630 --> 00:11:39,050 zure mahaigaina ikusten, Mac edo PC ala ez, 200 00:11:39,050 --> 00:11:42,240 sistema eragile maila baxua eguneroko gauzak ere egin, 201 00:11:42,240 --> 00:11:44,680 gigabyte kudeatzeko stuff oso teknikoa 202 00:11:44,680 --> 00:11:48,780 memoria edo 2 gigabyte duzula, CPU duzula kudeaketa, eta abar. 203 00:11:48,780 --> 00:11:50,170 Beraz, kodea idazten ari zaren, 204 00:11:50,170 --> 00:11:53,900 Benetan zauden Pribatutasun zure sistema eragilearen zentzu horretan. 205 00:11:53,900 --> 00:11:55,720 Minimizatu behar dut. Guztiak eskubidea. 206 00:11:55,720 --> 00:11:59,980 >> Beste array buruzko galderak? 207 00:12:00,330 --> 00:12:02,520 Ez? Ongi da. 208 00:12:02,520 --> 00:12:06,680 Beraz, trantsizio naturalean array pixka bat ezagutzen duten gai bat da, benetan. 209 00:12:06,680 --> 00:12:09,570 Eta inoiz begiratu dugu, beraz, labur-labur, azken une honetan ere. 210 00:12:09,570 --> 00:12:12,500 Asteazkena Adibidez kate bat izan zen. 211 00:12:12,500 --> 00:12:15,060 Katea Adibide honetan pretty simple programa bat izan zen, 212 00:12:15,060 --> 00:12:18,120 eta benetan Nik sinplifikatu da gaur egungo helburuetarako lerro pare bat. 213 00:12:18,120 --> 00:12:22,680 Guztiak ez line 19 erabiltzaileak kate bat lortzeko, deitu s aldagai batean gordetzen. 214 00:12:22,680 --> 00:12:28,670 Ondoren line 22 aurrerantzean itxuraz hori kate 1 lerroko izaera inprimatzeko. 215 00:12:28,670 --> 00:12:30,730 Baina, nola egiten ari da hau? 216 00:12:30,730 --> 00:12:33,350 Aldagai i deklaratzen ari gara, 0-berdintasuna, 217 00:12:33,350 --> 00:12:35,770 eta hau antzinako ohitura bihurtzen ari da orain. 218 00:12:35,770 --> 00:12:39,270 Ez genuen ikusi asteazkena arte, baina infer mota ahal izango duzu, bere izena 219 00:12:39,270 --> 00:12:44,610 strlen besterik ez itzultzen denean zer ematen da? Katearen luzera. 220 00:12:44,610 --> 00:12:47,940 Beraz, bada kate bat pasatzen dut, aurrekontu-unquote DAVID 221 00:12:47,940 --> 00:12:51,810 espero da me itzuli delako DAVID 5 zenbakia. 222 00:12:51,810 --> 00:12:55,600 Beraz, bere bizitzaren helburua da kate bat hartu ala ez, gogor kodetuta duzu 223 00:12:55,600 --> 00:12:58,840 edo kasu honetan aldagai gisa sartuta dagoela, argudio gisa, 224 00:12:58,840 --> 00:13:01,980 eta zifrak zer kate horren luzera da. 225 00:13:01,980 --> 00:13:06,470 >> Beraz, orain notazio batzuk hemen ari gara mailegu quiz aurreko adibide. 226 00:13:06,470 --> 00:13:09,390 Honek ez du ezer karroza batekin, galdetegiek zerikusirik ez dago ezer, 227 00:13:09,390 --> 00:13:13,100 baina bihurtzen da zuri gezurra da dugu dugu aste 1 diozu geroztik 228 00:13:13,100 --> 00:13:16,330 kate bat ez dela benetan existitzen C. 229 00:13:16,330 --> 00:13:20,230 Egunaren amaieran katea A array bat besterik ez da, benetan. 230 00:13:20,230 --> 00:13:25,140 Byte array bat, beraz, byte, byte, byte, byte, zein gogoratzen da 8 bit besterik ez da, 231 00:13:25,140 --> 00:13:28,130 zatia memoria, memoria zatia, memoria zatia, beraz memoria zatia. 232 00:13:28,130 --> 00:13:31,210 Eta bide kate bat da inplementatu 233 00:13:31,210 --> 00:13:33,070 Hemen lehen karaktere gisa jarri da, 234 00:13:33,070 --> 00:13:37,470 gero hemen, eta gero hemen, eta hemen, volver ordenagailuaren memoria Itzuli. 235 00:13:37,470 --> 00:13:42,160 Beraz, nahi duzun ortografia HELLO bezalako hitz bat izanez gero, 1 karaktere H jarri nahi duzun, 236 00:13:42,160 --> 00:13:48,240 ondoren, E, ondoren L ondoren, L, ondoren O - guztira 5 karaktere - nonbait zure ordenagailuaren RAM. 237 00:13:48,240 --> 00:13:52,080 Baina gakoa xehetasun hemen ari dira itzuliko itzuli itzuli itzuli egingo da, 238 00:13:52,080 --> 00:13:54,200 eskubidea, bata bestearen ondoan. 239 00:13:54,200 --> 00:13:58,820 Noiz esango dizut s [i], ingelesez zer da hau me ematen? 240 00:14:01,240 --> 00:14:04,550 Zer esan nahi du s [i] irudikatzeko kasu honetan? Bai. 241 00:14:04,550 --> 00:14:07,800 >> [Ikasleen] katea karaktere Ith. >> Zehazki. Katea karaktere Ith. 242 00:14:07,800 --> 00:14:12,260 Orain, 0 etan hasiko da, nire per i joan loop hemen, 243 00:14:12,260 --> 00:14:14,850 baina ona da hori guztia hasten 0 hasita duelako. 244 00:14:14,850 --> 00:14:19,160 Beraz, s [0] letra H adierazteko HELLO bezalako hitz batean, 245 00:14:19,160 --> 00:14:24,530 s [1] E bezala hitz batean letra ordezkatzen HELLO bezala, eta abar. 246 00:14:24,530 --> 00:14:27,130 Eta zer begizta honen iterazio bakoitzerako egiten badirudi dugu 247 00:14:27,130 --> 00:14:32,780 pertsonaia da aldi baterako Ith gordetzeko, c izeneko aldagai bat besterik ez da char bat, 248 00:14:32,780 --> 00:14:35,010 eta, ondoren, inprimatzeko ari gara c 249 00:14:35,010 --> 00:14:37,620 beraz, honako hau da programa hau duenaren egun amaieran. 250 00:14:37,620 --> 00:14:42,900 Iturburu direktorioa sartu nintzen eta katea1 bada egiten dut, eta aurrera joaten naiz, eta exekutatu katea1 251 00:14:42,900 --> 00:14:51,920 eta, ondoren, hitz bat idazten dut HELLO, Sartu bezala, guztiak ez inprimatu 1 karaktere aldi berean. 252 00:14:51,920 --> 00:14:54,010 >> Beraz, fintasun aukera bat dago hemen. 253 00:14:54,010 --> 00:14:58,150 Mota, lan gehiago egin dut, nahiz eta argiagoa da agian modu honetan, behar baino. 254 00:14:58,150 --> 00:15:03,270 Zein kodea hemen line ziurrenik bota dut kanpoan guztira? Bai. 255 00:15:03,270 --> 00:15:08,290 Line 24. 24 linea, aldagai c deklaratzen dut. 256 00:15:08,290 --> 00:15:14,320 S izaera Ith naiz gordetzeko da, baina, ondoren, c erabiltzen dut hemen. 257 00:15:14,320 --> 00:15:20,160 Beraz, c naiz erabiltzen eta, beraz, ez dut atsegin, besterik gabe bota line 24 urrun sentitzen dut. 258 00:15:20,160 --> 00:15:23,850 [Inaudible ikaslea comment] >> Zehazki. 259 00:15:23,850 --> 00:15:26,240 Beraz, programak diseinatzeko buruz hitz egiten denean, 260 00:15:26,240 --> 00:15:30,740 nabarituko kodea sinplifikazioa arina, hori besterik ez da irakurgarria, 261 00:15:30,740 --> 00:15:34,680 baina konturatzen da s aldagai bat, bere datu-mota, array bat da 262 00:15:34,680 --> 00:15:38,610 s, beraz, [i] besterik ez da berehala, kate horretan izaera Ith itzuli egingo da. 263 00:15:38,610 --> 00:15:40,620 Eta nahi duzun inprimatu nahi izanez gero, isuna. 264 00:15:40,620 --> 00:15:43,680 Besterik ez duzu% c erabiltzen ari zaren ez delako kate bat inprimatzean 265 00:15:43,680 --> 00:15:48,520 pertsonaia bat ari zaren inprimatzeko kate batean, eta hau ere Ith karaktere inprimatzen eragin du. 266 00:15:48,520 --> 00:15:51,390 Eta gogoratzen Ezberdintasun bakarra benetan astetik printf erabiliz 267 00:15:51,390 --> 00:15:54,220 asteetan, berriz, zerbait super simple past genuke 268 00:15:54,220 --> 00:15:58,510 Ondoren,% s biltegian bezala kate bat hemen izen-abizenak, 269 00:15:58,510 --> 00:16:01,190 gara gaur egun urpekaritza kanpaia azpian apur bat sakonago eta esaten, 270 00:16:01,190 --> 00:16:06,090 ez inprimatu katea; inprimatzeko karaktere bertan. 271 00:16:06,090 --> 00:16:10,570 >> Beraz, zerbait pixka bat egin ahal izango dugu han 1 beste delako - ez bug 272 00:16:10,570 --> 00:16:14,090 Programa hau da, eskubidea delako, baina zerbait ergelak egiten ari naiz 273 00:16:14,090 --> 00:16:16,810 labur-labur aipatzen dut asteazkenean. 274 00:16:16,810 --> 00:16:22,680 Baina pentsatzen, nola izan programa honen diseinua hobetu are gehiago? Bai. 275 00:16:22,680 --> 00:16:28,280 [Inaudible ikaslearen erantzuna] >> Oh, ona da. 276 00:16:28,280 --> 00:16:32,120 Beraz, gogoratzen izeneko bigarren aldagai bat n azken aldian sartu garela, 277 00:16:32,120 --> 00:16:34,850 Badirudi kontra geure burua nire helburua delako bigarren ago 278 00:16:34,850 --> 00:16:37,380 izan zen, besterik gabe, eta gola alferrikako gisa aldagai bat bota, 279 00:16:37,380 --> 00:16:40,700 baina gogoratzen asteazkenean egin dugu. 280 00:16:40,700 --> 00:16:46,170 Aldatu dut loop benetan koma bat hemen, eta ondoren n = strlen 281 00:16:46,170 --> 00:16:52,120 eta, ondoren, hemen n 00:16:57,660 Zer da funtsezko irabazia naiz dut nire Hasieratzea aldatzen hau lortzeko 283 00:16:57,660 --> 00:17:01,590 eta nire egoera hau orain? >> [Inaudible ikaslearen erantzuna] >> Zehazki. 284 00:17:01,590 --> 00:17:06,170 Ez dut strlen gogorarazi berriro, eta behin eta berriz gogoratzen delako nola loop lanak. 285 00:17:06,170 --> 00:17:08,790 Nahiz eta zailagoa begira hasten dira, 286 00:17:08,790 --> 00:17:12,480 gogoratzen lehen puntu eta koma aurretik gauza Hasieratzea gertatzen, behin da. 287 00:17:12,480 --> 00:17:14,359 Hala ere, egoera erdi-erdian dago, 288 00:17:14,359 --> 00:17:17,710 eta hau lortzen hautatuta begizta bidez joan den bakoitzean. 289 00:17:17,710 --> 00:17:22,420 >> Beraz, ergelak-mota eskatzen ordenagailua galdera bera behin eta berriro 290 00:17:22,420 --> 00:17:25,920 Zer da HELLO luzera? Zer da HELLO luzera? Zer da HELLO luzera? 291 00:17:25,920 --> 00:17:29,740 dugu gaur ikus ahal izango delako, eta asteazkenean, hau da, zalantzarik gabe, denbora behar du, 292 00:17:29,740 --> 00:17:34,320 eta ez da denbora erabilera oso ona bat irudikatu nahi delako kate baten luzera 293 00:17:34,320 --> 00:17:37,030 benetan ahalegin apur bat hartzen du. 294 00:17:37,030 --> 00:17:39,760 Ez da berehalako, hizkuntza batzuk da. 295 00:17:39,760 --> 00:17:43,920 Beraz, hau aldatuz n, prezioa ordaindu behar dut zer? 296 00:17:43,920 --> 00:17:45,640 Merkataritza-off bat ikusten ari gara hemen. 297 00:17:45,640 --> 00:17:49,460 Denbora aurreztu ahal izango dut, ez madarikatua galdera bera eskatuz behin eta berriro, 298 00:17:49,460 --> 00:17:51,740 baina me kostua zerbait, hau da, zer da? 299 00:17:51,740 --> 00:17:55,050 >> [Ikasleak] memoria kopuru jakin bat galtzen duzu. >> Zehazki. Me kostua memoria pixka bat egingo da. 300 00:17:55,050 --> 00:17:56,670 Beraz, kasu honetan niri zer kostatzen da? 301 00:17:56,670 --> 00:18:01,530 Another 32 bit n int bat besterik ez da delako, hemen hitza int engaiatuko gisa. 302 00:18:01,530 --> 00:18:03,300 Baina hori ados? 303 00:18:03,300 --> 00:18:05,800 Egia, ziurrenik ados uste duzulako, 304 00:18:05,800 --> 00:18:09,030 longer katea da, eta denbora gehiago behar galdu dut 305 00:18:09,030 --> 00:18:11,920 strlen deitzen behin eta berriro eta berriro delako joan 306 00:18:11,920 --> 00:18:13,520 begizta-iterazio bakoitzeko. 307 00:18:13,520 --> 00:18:18,070 Eta egun hauetan, nire Mac 2 RAM kontzertuak, egun hauetan 4 RAM batzuetan kontzertuak. 308 00:18:18,070 --> 00:18:22,420 4 byte horiek jasan dezakete dut benetan Azkartu uste dut. 309 00:18:22,420 --> 00:18:26,590 Baina hau ez da merkataritza-off bat eta gai bat benetan programazioa eta informatika 310 00:18:26,590 --> 00:18:28,320 inoiz ez benetan doan ezer. 311 00:18:28,320 --> 00:18:32,880 Nahi duzun zerbait hemen hobetu nahi izanez gero, ordaindu, bestalde, nolabait behar duzu. 312 00:18:32,880 --> 00:18:35,880 Space versus kasu honetan. 313 00:18:35,880 --> 00:18:40,700 >> Beraz, hori guztia zerbait hau atsegin críptica aldera igotzen 314 00:18:40,700 --> 00:18:44,070 horrek, ziurrenik duzun bezala figured out orain, benetan dio? 315 00:18:44,070 --> 00:18:47,420 [Inaudible ikaslearen erantzuna] >> Bai, eta, beraz, hau da, ziur zure Ovaltine edan, 316 00:18:47,420 --> 00:18:52,490 benetan izeneko algoritmo bat ROT13, ROT 1-3 erabiliz, 317 00:18:52,490 --> 00:18:55,500 besterik gabe esan nahi du horrek biratu letrak 13 plaza guztiak, 318 00:18:55,500 --> 00:18:58,720 Horrek esan nahi du A eta, ondoren,, gehitu 13 da, eta dot, dot, dot joan 319 00:18:58,720 --> 00:19:04,640 13 letra kanpoan modu guztiak, egin gauza bera B eta C eta D, eta abar. 320 00:19:04,640 --> 00:19:10,850 Eta hala bada benetan bihurtu dugu hau hemen 13 leku aldaketa bat erabiliz, 321 00:19:10,850 --> 00:19:14,580 itzuliko gara apur Ralphie izan, izan zen, ziur zure Ovaltine edan. 322 00:19:14,580 --> 00:19:18,160 Baina orain arazo ezarri 2, gutxienez, edizio estandarra, 323 00:19:18,160 --> 00:19:21,680 ez hau zeure burua enciphering mota 324 00:19:21,680 --> 00:19:25,990 eta nolabait hau atsegin dute sarrera hartu eta, edo desenkriptatzeko enkriptatzeko dugu. 325 00:19:25,990 --> 00:19:29,850 >> Beraz, hauek oinarri ordenatu horrek garamatza aukera hori? 326 00:19:29,850 --> 00:19:32,650 Dezagun hirugarren Adibide honetan hemen begirada bat. 327 00:19:32,650 --> 00:19:38,430 Lehenik eta behin, ASCII deitzen zaio. Zer esan nahi du ASCII erreferentzia itzuli? 328 00:19:38,430 --> 00:19:40,460 Informazio Trukakor American Standard Code, 329 00:19:40,460 --> 00:19:43,850 esaten modu benetan luze bat da? Zer da ASCII? 330 00:19:43,850 --> 00:19:47,890 [Inaudible ikaslearen erantzuna] >> Zer da hori? >> [Ikasleak] pertsonaia mapa bat. >> Pertsonaia mapa. 331 00:19:47,890 --> 00:19:51,390 Maps-en besterik ez zenbakiak letrak mundu ditu normalizatua delako 332 00:19:51,390 --> 00:19:55,380 zer egin zenbakiak letrak beraz, guztiok ordenagailuak erabili ahal izango dira, 333 00:19:55,380 --> 00:19:59,340 eta gure programak besterik ez dira bateragarri orduan inprimatzeko gauza pantailan. 334 00:19:59,340 --> 00:20:04,680 Beraz, gogora ekarri 65 gertatzen den A irudikatzeko, 97 gertatzen minuskula bat irudikatzeko. 335 00:20:04,680 --> 00:20:08,510 Eta, beraz, hau simple programa hemen ASCII Izan ere, horren abantaila hartzen ari da 336 00:20:08,510 --> 00:20:12,770 mundua ezagutzen duten kapitala A 65 - eta besterik ez da mapaketaren inprimatzean. 337 00:20:12,770 --> 00:20:16,320 >> Beraz, kode hau sartu dugu murgiltze aurretik, ireki terminal-leiho bat sortu ordez me utzi. 338 00:20:16,320 --> 00:20:21,550 Dezagun aurrera eta ASCII egiteko, eta, ondoren, dezagun aski da hori besterik ez irteera hondatzen. 339 00:20:21,550 --> 00:20:25,960 Eta ez besterik ez da hau: taula oso handia dela esaten dit hainbat kodeak guztiak 340 00:20:25,960 --> 00:20:27,950 hainbat gutun guztiak. 341 00:20:27,950 --> 00:20:32,100 Beraz, super simple programa bat, baina ez dut gogorra kodea irteera 52 lerro horiek: 342 00:20:32,100 --> 00:20:34,860 26 maiuskulaz, minuskulaz 26. 343 00:20:34,860 --> 00:20:37,790 Horren ordez, hau egin nuen programazioaren loops pare bat. 344 00:20:37,790 --> 00:20:39,720 Iragarki hemen zer egin nuen. 345 00:20:39,720 --> 00:20:44,790 Iterated 65 i 65 + 26 26 letrak inprimatu nahi nuen delako 346 00:20:44,790 --> 00:20:49,860 English alfabetoa, i + + iterazio bakoitzerako, eta gaur egun nabarituko hau berriro. 347 00:20:49,860 --> 00:20:52,540 It da, gure laguna typecasting errepikatze 348 00:20:52,540 --> 00:20:54,620 Horren bidez, 1 datu-mota bihurtzeko duzun beste 349 00:20:54,620 --> 00:20:57,480 zer programa zehatz honetan egin nahi dut? 350 00:20:57,480 --> 00:21:02,650 Zenbakiaren zenbatzen hori delako nola hazi nintzen zenbaketa nahi dut, 65, 66, 67, eta abar 351 00:21:02,650 --> 00:21:04,420 baina ez dut nahi besterik ez zenbakiak inprimatzeko. 352 00:21:04,420 --> 00:21:08,030 Zenbakia gutun inprimatu nahi dut. 353 00:21:08,030 --> 00:21:18,640 Zenbakia, B: A inprimatu nahi dut, baina hau egin ahal izango dut, aldagai berarekin zehatza. 354 00:21:18,640 --> 00:21:21,630 Beraz,% c inprimatzen ditut pertsonaia bat biltegian, 355 00:21:21,630 --> 00:21:25,080 Digitu bat edo telefono zenbaki biltegia% d. 356 00:21:25,080 --> 00:21:27,750 Orduan, zer entxufatu 2 leku horiek I? 357 00:21:27,750 --> 00:21:33,960 I i baliokidea pertsonaia plug lehenengo, eta, ondoren, inprimatu i out bera. 358 00:21:33,960 --> 00:21:36,400 >> Beraz, nabarituko honetan ere, besterik gabe lan egiten du. 359 00:21:36,400 --> 00:21:39,320 Just mugikor bat bota dezake I int bat 360 00:21:39,320 --> 00:21:41,750 zenbaki erreal zenbaki oso bat joan, 361 00:21:41,750 --> 00:21:46,100 Hemen int bat char bat, hau da, pixka bat arraro I - 362 00:21:46,100 --> 00:21:48,680 ez da nahiko mundu errealaren gainean mapatzeko baina ordenagailuak 363 00:21:48,680 --> 00:21:51,140 Karaktereen kanpaia azpian zenbaki bat besterik ez da, 364 00:21:51,140 --> 00:21:53,590 beraz, inoiz hain esplizitua ari gara ari hemen ordenagailua, esaten, 365 00:21:53,590 --> 00:21:58,920 printf, inprimatu ere ez, 65 gisa i inprimatu bere baliokidea zenbakizko gisa. 366 00:21:58,920 --> 00:22:02,110 Eta teknikoki dut out ezta behar bihurtzen da. 367 00:22:02,110 --> 00:22:05,020 Duela momentu bat izan dut egiten ari den esplizituki galdaketa 368 00:22:05,020 --> 00:22:08,760 zer datu-mota joan eta nahi dut zehaztuz. 369 00:22:08,760 --> 00:22:11,840 Baina dagoeneko nabarituko dut hau leku-marka% c 370 00:22:11,840 --> 00:22:14,930 eta beste% c biltegian hemen. 371 00:22:14,930 --> 00:22:18,880 Nahiz eta hau ez da int, ordenagailua konturatuko char bat, 372 00:22:18,880 --> 00:22:21,080 kanpaia azpian int bat besterik ez da. 373 00:22:21,080 --> 00:22:25,100 >> Beraz, bada benetan birkonpilatzeko I eta ASCII programa berrabiarazi, 374 00:22:25,100 --> 00:22:31,210 nabarituko besterik ez oraindik funtzionatzen duen ordenagailua konturatuko korrespondentzia hau delako. 375 00:22:31,210 --> 00:22:34,870 Orain, garrantzitsua da esplizitua casting egin karroza munduko ints 376 00:22:34,870 --> 00:22:37,460 ez delako benetan ari zaren kalkulatzen erabakia: 377 00:22:37,460 --> 00:22:40,140 bota du dezimal ondoren guztia. 378 00:22:40,140 --> 00:22:44,990 Hemen ez dago benetan ezer ez urrun bota pertsonaia bat, zenbaki bat besterik ez da delako, 379 00:22:44,990 --> 00:22:48,220 eta kate bat besterik ez da karaktere array bat da. 380 00:22:48,220 --> 00:22:52,530 Beraz enkriptatze batzuk edo deszifratzeko ezartzeko orduan, 381 00:22:52,530 --> 00:22:56,770 nola da benetan itzuli ahal izango dugu, eta zentzugabekeria hau atsegin dute zerbait, 382 00:22:56,770 --> 00:22:58,670 Ziurtatu zure Ovaltine edan nahi? 383 00:22:58,670 --> 00:23:02,700 Zer jakin behar badugu oraintxe dezagun suposizio gisa hartu gakoa, 384 00:23:02,700 --> 00:23:08,010 ari garela gutun horiek guztiak biratzen, 13 zenbakia da? 385 00:23:08,010 --> 00:23:11,800 Beraz, joan gutun B zigorraren Irteeran O, 386 00:23:11,800 --> 00:23:14,710 Ziurtatu zure Ovaltine edan, bada B ez dudalako 387 00:23:14,710 --> 00:23:19,600 eta, ondoren, C, D, E, F, G, H, I, J, K, L, M, N, O joaten naiz, 388 00:23:19,600 --> 00:23:23,760 horregatik, gutun B enkriptatze bihurtzen O 389 00:23:23,760 --> 00:23:26,570 besterik ez dut gehitu delako 13 da. 390 00:23:26,570 --> 00:23:33,460 >> Beraz, desenkriptatu nahi dut, funtsean, I, O hartu eta, ondoren, 13 kentzen da. 391 00:23:33,460 --> 00:23:36,880 Edo, Egia, ez da 26 alfabetoaren hizkiak delako, hau da wonderfully simetrikoa, 392 00:23:36,880 --> 00:23:41,260 ere egin ahal izango dugu, besterik gabe gehitu 13 eta lortu dugu gutun B. 393 00:23:41,260 --> 00:23:44,290 Baina nola Caesar honen antzeko zerbait ezartzeko 394 00:23:44,290 --> 00:23:46,600 edo, oro har, benetan kateak manipulatzeko? 395 00:23:46,600 --> 00:23:51,380 Gutun-B zer zenbaki bada? 396 00:23:51,380 --> 00:23:55,290 Zer da gutun B? Beraz, 66 da, ezta? 397 00:23:55,290 --> 00:23:59,220 Beraz, bada, gutun-A 65, eta letra B 66, 398 00:23:59,220 --> 00:24:03,940 66, beraz, egin behar dut gehitu 13 da, eta horrek ematen dit 79. 399 00:24:03,940 --> 00:24:09,150 Eta gure little-Cheat fitxa, 79 hain zuzen ere, O. aldera mapak gara 400 00:24:09,150 --> 00:24:11,290 >> Baina izkinan kasu bat pixka bat da hemen. 401 00:24:11,290 --> 00:24:15,170 Zer da, esan, gutuna Z? 402 00:24:15,170 --> 00:24:20,180 Egiten dugu 66 + 25 bada, bide guztiak alfabetoaren amaieran, 91 gara. 403 00:24:20,180 --> 00:24:24,520 91 + 13 ematen dit 104, eta zer asmatzen? 404 00:24:24,520 --> 00:24:29,200 104 maiuskulaz letra bat ez berdinak. 405 00:24:29,200 --> 00:24:31,610 Dezagun atzera jo apur bat Cheat fitxa hemen. 406 00:24:31,610 --> 00:24:38,070 Berrabiarazi programa hau aparailua, aldez aurretik jakinarazi 104 bada, atzera joan I terminal-leihoa bada, 407 00:24:38,070 --> 00:24:41,800 104 itxuraz minuskulaz h. 408 00:24:41,800 --> 00:24:46,400 Beraz, gako trikimailu batzuk hemen behar ditugu, ziur noiz hasten Z dugu 409 00:24:46,400 --> 00:24:50,260 eta 13 gehitu dugu, ez dugu nahi gorde aurretik forja handiagoa eta handiagoa zenbakiak. 410 00:24:50,260 --> 00:24:52,600 Zer egin nahi dugu? 411 00:24:52,600 --> 00:24:54,570 Inguruan biltzea nahi duzu. 412 00:24:54,570 --> 00:25:00,250 >> Beraz, izarrekin bihurtzen da, Nik ikusi ziurrenik atala orain edo arazo multzo zehaztapenak bera 413 00:25:00,250 --> 00:25:05,730 konturatu ez dagoela C beste operadore ere ehuneko seinale bat da hau da, 414 00:25:05,730 --> 00:25:11,020 baina erabili dugu hemen, berriz,% leku-marka bat zehaztu, 415 00:25:11,020 --> 00:25:15,420 ezagutzen, batez ere, arazo multzo 2 ere, ez da honen antzeko zerbait: 416 00:25:15,420 --> 00:25:18,990 int x = y% z. 417 00:25:18,990 --> 00:25:22,770 Dezagun aurkeztu just me hau oso forma generiko gisa. 418 00:25:22,770 --> 00:25:25,580 Portzentaia esan nahi du programazio hizkuntza batean zer? >> [Ikasleen] Modulo. 419 00:25:25,580 --> 00:25:28,790 Modulo, gainerakoa esaten fancy modu bat da. 420 00:25:28,790 --> 00:25:31,620 Nahiz eta definizio bertan bereizketa txiki bat da, 421 00:25:31,620 --> 00:25:37,210 horrek esan nahi du zatitzen y z, baina zatiketa horren emaitza ez itzultzeko; 422 00:25:37,210 --> 00:25:39,650 ordez, itzuli gainerakoa. 423 00:25:39,650 --> 00:25:47,390 >> Beraz, bada y benetan 3 eta z da benetan 2, 3 2 banatuta 1 1 gainerako batekin, 424 00:25:47,390 --> 00:25:51,550 beraz, zer ez x benetan berdinak Egoera honetan? 1. 425 00:25:51,550 --> 00:25:54,540 Hau soil bat, behe-mailako ideia hori. 426 00:25:54,540 --> 00:25:56,480 Denbora pixka bat hartzen du your mind inguruan bilduta 427 00:25:56,480 --> 00:25:58,740 seguru asko izan da, nahiz eta pixka bat izan da geroztik hondakinak buruzko zaintzeko 428 00:25:58,740 --> 00:26:01,160 eta benetan zerbait purposeful 429 00:26:01,160 --> 00:26:05,290 baina kasu honetan, simple Izan ere, kopuru handi bat joan ahal izango duzu 3 bezalako 430 00:26:05,290 --> 00:26:08,920 kopuru nahiko txiki bat 2 eta, ondoren, bezala eraginkortasunez inguruan itzulbiratu 431 00:26:08,920 --> 00:26:14,160 Gainerakoa 1 bezala balio txikiago bat erabiliz trikimailu bat eskerga izango da 432 00:26:14,160 --> 00:26:17,690 bai Caesar antzeko zerbait eta beste gauza Vigenere hau erabili ahal izango dugu 433 00:26:17,690 --> 00:26:22,240 arazoa ezarri 2, baina hau da seihilekoan zehar trikimailu errepikakor bat izango da. 434 00:26:22,240 --> 00:26:24,880 Simple, gainerakoak eta, oro har, ideia sinple 435 00:26:24,880 --> 00:26:26,530 itzulbiratu inguruan gaitu ahal izateko. 436 00:26:26,530 --> 00:26:31,140 Eta hasten gara gehiago jolasten array gisa, hasten gara jotzen memoria bera, 437 00:26:31,140 --> 00:26:35,800 hau da, gero eta gehiago indartsu bat trikimailu bihurtuko du. 438 00:26:35,800 --> 00:26:43,420 >> Edozein zalantza ASCII edo array gisa kateak ordezkaritza? Beraz, 439 00:26:43,420 --> 00:26:47,430 Eta hartu dugu sortu 1 Notch gehiago. Bai. 440 00:26:47,430 --> 00:26:52,350 [Inaudible ikasleak galdera] >> Ona galdera. 441 00:26:52,350 --> 00:26:55,370 Zer esan nahi du aldagai baten aurrean izartxoa du esan nahi du? 442 00:26:55,370 --> 00:26:57,720 Utzidazu atzeratzeko hori xehetasun edozein erantzunez, 443 00:26:57,720 --> 00:27:00,100 baina hori erakuslea izenez ezagutzen den gaia aipatzen du. 444 00:27:00,100 --> 00:27:03,440 Erakusleak, memoria egin behar dute, eta benetan ari gara gaur 445 00:27:03,440 --> 00:27:06,330 eztabaida hori lehen urratsa hartu, 446 00:27:06,330 --> 00:27:08,600 baina orain, izar hori ez da existitzen asmoa me 447 00:27:08,600 --> 00:27:15,380 eta kateak kateak deituz char * erabiliz beharrean jarraituko dugu, 448 00:27:15,380 --> 00:27:19,530 ziurrenik duzun ikusi aurretik eta pantailan une bat besterik ez dut jarri teaser gisa. 449 00:27:19,530 --> 00:27:23,010 Beraz, itzuli dugu hori zehatz-mehatz modu asko baino gehiago izango da ziurrenik nahi. 450 00:27:23,010 --> 00:27:25,760 Azkenean, ez da gaur egun. Bai. 451 00:27:25,760 --> 00:27:42,810 >> [Inaudible ikasleak galdera] 452 00:27:42,810 --> 00:27:47,080 Zer testuinguru zeinua emateko pertsonaia bat izan duzu? >> [Ikasleak] Bai. 453 00:27:47,080 --> 00:27:52,130 Beraz, lehenespenez ez duzunean + bat jarri, zenbaki positiboak besterik ez direla. 454 00:27:52,130 --> 00:27:55,390 Beraz, bada besterik ez 1 zenbakia idatzi, positiboa 1. 455 00:27:55,390 --> 00:27:57,710 Benetan nahi duzun balio bat ukatzea zehaztu bada, 456 00:27:57,710 --> 00:28:01,060 literalki -1 zure teklatua. 457 00:28:01,060 --> 00:28:20,440 Baina hau ziurrenik ez da zure galdera. >> [Inaudible ikaslearen erantzuna] 458 00:28:20,440 --> 00:28:22,200 >> Ona galdera. Ongi da. 459 00:28:22,200 --> 00:28:24,970 Hau, bildu dut, bug-mota batzuk sartu zuena 460 00:28:24,970 --> 00:28:27,640 ziren zenbaki oso bat delako pertsonaia bat bihurtzeko, 461 00:28:27,640 --> 00:28:29,780 baina, nolabait, negatiboaren got parte hartzen du, 462 00:28:29,780 --> 00:28:32,380 eta, beraz, pertsonaia atera munged nolabait. 463 00:28:32,380 --> 00:28:36,710 Beraz, oraingoz, utzi pixka bat oversimplify me gaia mota honetako gara itzuli arte. 464 00:28:36,710 --> 00:28:39,570 Oraingoz, gauzak uste Modu honetan, eta hau oversimplification bat da. 465 00:28:39,570 --> 00:28:43,500 Baina zenbaki oso bat munduan, zenbat bit behar duzu zure eskura? 466 00:28:43,500 --> 00:28:45,190 32 bit duzu. 467 00:28:45,190 --> 00:28:49,030 Eta horrela, orain arte, zenbaki osoen beraz dezakezu irudikatu kopuru osoaren hitz egin dugu 468 00:28:49,030 --> 00:28:52,430 gutxi gorabehera 4 milioi guztira 32 bits delako, 469 00:28:52,430 --> 00:28:55,100 Beraz, 2 da 32, eta, beraz, hori da, gutxi gorabehera 4 milioi. 470 00:28:55,100 --> 00:28:58,810 Baina duela aste bat edo 2 ikusi genuen ez duzula benetan zenbaki-barrutia 471 00:28:58,810 --> 00:29:01,240 0-tik gora 4 milioi. 472 00:29:01,240 --> 00:29:06,340 Barruti gutxi gorabehera negatibo 2 milioi positiboa 2 milioi ordez doa. 473 00:29:06,340 --> 00:29:10,990 Baina hau eta ondoren galdera begs, nola 2 negatiboa milioi ideia ordezkatzen duzun 474 00:29:10,990 --> 00:29:13,260 utzi bakarrik negatiboa 1? 475 00:29:13,260 --> 00:29:17,960 Oraingoz, oversimplify eta ezin dugu besterik ez esaten ari dugu ezkerreko bit erabili 476 00:29:17,960 --> 00:29:22,380 32 bit horiek, eta 1 bada zenbaki negatiboa izan da, 477 00:29:22,380 --> 00:29:25,090 eta 0 zenbaki positibo bat da. 478 00:29:25,090 --> 00:29:28,570 Zenbaki negatiboak ordezkaritza duten sinplifikatu arazoa 479 00:29:28,570 --> 00:29:33,700 zinen nahita clever eta karaktere bat zenbaki bat bihurtzen saiatzen ari dela 480 00:29:33,700 --> 00:29:37,190 edo alderantziz, ez dago gauza, hala nola, pertsonaia negatiboa da. 481 00:29:37,190 --> 00:29:42,550 ASCII, 8 bit bakarrik erabiltzen dituen, 8 bit gai horiek munduan, 482 00:29:42,550 --> 00:29:46,810 eta ezkerreko bit ezer negatiboaren zerikusia du. 483 00:29:46,810 --> 00:29:49,670 Eta besterik gabe, argi eta garbi izan behar du, ezkerreko bit diot, 484 00:29:49,670 --> 00:29:54,610 gogoratzen genuen lehenengo astean, gure bit-adibide 485 00:29:54,610 --> 00:30:02,570 gogoratzen marraztu dugun gauza 1001101 bezala, honen antzeko zerbait. 486 00:30:02,570 --> 00:30:07,210 Bit ezkerreko esaten dut, besterik ez du esan nahi literalki I 1 ezkerrera idazten duzun guztiak. 487 00:30:07,210 --> 00:30:11,910 Beraz, karaktere munduan negatiboaren kontzeptua ez da, 488 00:30:11,910 --> 00:30:16,360 beraz, ezkerreko bit hori benetan zerbait ASCII, ezer negatiboaren zerikusirik ez du. 489 00:30:16,360 --> 00:30:19,390 >> Eta testuingurutik kanpo zaila da zehatz-mehatz erantzun - Beraz, soinuak bezala 490 00:30:19,390 --> 00:30:25,840 baina, nolabait, zure kodea ez zen ezkerreko duten bit nahasgarria balio negatiboa ordezkari gisa 491 00:30:25,840 --> 00:30:29,160 izan zen benetan zati galdera pertsonaia. 492 00:30:29,160 --> 00:30:32,250 Eta berriro ere, ordenagailuak benetan egiten baita zerbait apur bat fancier dut oversimplifying 493 00:30:32,250 --> 00:30:37,080 besterik ez bit ezkerreko hori aldatzen 1 eta 0 versus zeinu negatiboa baino. 494 00:30:37,080 --> 00:30:41,270 Ordez, Oraindik Google bitxia bada, erabili zerbait normalean 2 osagarria deitzen zaio, 495 00:30:41,270 --> 00:30:43,830 hau da, pixka bat gehiago una aproximación sofistikatuak 496 00:30:43,830 --> 00:30:45,490 baina ideia da, azken finean, gauza bera da. 497 00:30:45,490 --> 00:30:50,530 >> Beraz, azken finean, Izan ere, zenbaki bat massaging pertsonaia bat izan da 498 00:30:50,530 --> 00:30:53,750 edo alderantziz, baina zure kodea Izan ere, ez zen berri 499 00:30:53,750 --> 00:30:56,510 1 bit horien mundu zenbakizko esangura izan. 500 00:30:56,510 --> 00:30:59,940 Hori ez da kasua pertsonaia mundua. 501 00:30:59,940 --> 00:31:04,270 Baina konpondu duzun bezala, kasu horretan, moot now soinuak. Beste galdera. 502 00:31:06,030 --> 00:31:07,110 Ongi da. 503 00:31:07,110 --> 00:31:11,560 Beraz, beraz, orain arte, idatzitakoa dugu programa guztietan parte hartu dute sarrera agian erabiltzailea 504 00:31:11,560 --> 00:31:14,330 funtzio GetInt, GetString bezala, 505 00:31:14,330 --> 00:31:16,990 edo duzun aurretik irakurtzeko bada, hainbat liburu edo erreferentziak online 506 00:31:16,990 --> 00:31:21,390 duzu zuek scanf bezala, Egia, CS50 liburutegia erabiltzen dugu funtzio erabili izan liteke. 507 00:31:21,390 --> 00:31:25,370 Hala ere, aste bat edo 2, benetan dugu erakutsiko dizu nola CS50 liburutegia da inplementatu 508 00:31:25,370 --> 00:31:27,890 beraz, prestakuntza-gurpil horiek hartu ahal izango dugu off guztira. 509 00:31:27,890 --> 00:31:31,340 >> Baina ez dago beste modu bat da erabiltzaile baten sarrera lortzeko izarrekin bihurtzen da. 510 00:31:31,340 --> 00:31:34,670 Izan ere, geure buruari dira komando-lerroko argumentuak erabiliz 511 00:31:34,670 --> 00:31:36,500 orain aste pare bat. 512 00:31:36,500 --> 00:31:41,150 Exekutatu dugu Clang edo exekutatu dugu denbora bakoitza egiteko, 513 00:31:41,150 --> 00:31:45,050 ez bakarrik idatzi clang ditugu, Sartu, ez dugu idatzi egin, Sartu. 514 00:31:45,050 --> 00:31:49,340 Zer egin gure terminal windows gonbitean hitza ondoren clang normalean idatzi dugu? 515 00:31:51,110 --> 00:31:52,900 [Ikasleak] fitxategi-izena. >> Fitxategi-izena, ezta? 516 00:31:52,900 --> 00:31:57,560 Hello.c edo mario.c edo dena delakoa, dagokion fitxategi-izena da. 517 00:31:57,560 --> 00:32:01,910 Eta, zentzu horretan, benetan zer egiten duzun eragina dituzun Clang portaera 518 00:32:01,910 --> 00:32:05,750 zalantzarik gabe idatzi duten pertsonen Clang izan ez delako ideia txiki zaharra 519 00:32:05,750 --> 00:32:08,890 izeneko mario.c urte geroago, programa bat idazteko. 520 00:32:08,890 --> 00:32:13,150 Beraz, nolabait eragina izan duzu programa hori portaera 521 00:32:13,150 --> 00:32:18,140 eta programa Clang zuela modu bat, hala nola, sarrera idatzi behar dela onartu dezakezu 522 00:32:18,140 --> 00:32:23,480 gonbitan hitz gain erabiltzaileak hits aurretik Sartu. 523 00:32:23,480 --> 00:32:27,860 >> Beraz, izarrekin bihurtzen da denbora pixka bat izan dugu gure programa ia guztiak geratuko 524 00:32:27,860 --> 00:32:32,840 horrela hasi int main (void) - eta, ondoren, aurretik joan behar dugu 525 00:32:32,840 --> 00:32:35,110 eta gure kodea idazten hasi zen. 526 00:32:35,110 --> 00:32:37,910 Eta zorrotz batzuk izan genezake fitxategia goialdean, 527 00:32:37,910 --> 00:32:40,660 baina ia guztiak gure programa, beraz, orain arte honekin hasi 528 00:32:40,660 --> 00:32:44,200 nahiz atalean baliteke ikusi, liburuak, online erreferentzia 529 00:32:44,200 --> 00:32:46,570 hori ez da, hain zuzen ere void izango dute. 530 00:32:46,570 --> 00:32:55,820 Hau hartzeko modu legitimo int argc bat da eta, ondoren, kate argv []. 531 00:32:55,820 --> 00:32:57,500 Beraz, gaur egun, zer da hau ulertuta? 532 00:32:57,500 --> 00:33:01,320 Bihurtzen da argc horrek giza konbentzio bat da - foo deitu ahal izango duzu, 533 00:33:01,320 --> 00:33:03,710 baina besterik ez litzateke askoz gutxiago irakurleak argi eta garbi - 534 00:33:03,710 --> 00:33:09,330 argc izeneko nagusiak adierazten du zer funtzioa argumentu bat da? 535 00:33:09,330 --> 00:33:12,450 Zer esan nahi du argc stand horiek ezagutzen? 536 00:33:12,450 --> 00:33:14,980 >> [Inaudible ikaslearen erantzuna] >> Bai, argumentuak edo argumentua Aldaketa kopurua. 537 00:33:14,980 --> 00:33:16,510 Gisa duten bezain sinplea da. 538 00:33:16,510 --> 00:33:19,160 Zenbat argumentuak ziren programa hau pasa da? 539 00:33:19,160 --> 00:33:20,630 Zer esan nahi du horrek? 540 00:33:20,630 --> 00:33:27,090 Komando-lerroa bada exekutatu dut honen antzeko zerbait - clang mario.c-- 541 00:33:27,090 --> 00:33:35,440 argc Sartu hit I da, balio bat hartu, zertxobait confusingly, 2. 542 00:33:35,440 --> 00:33:40,150 Beraz, izarrekin bihurtzen da argc argumentu Aldaketa da, 543 00:33:40,150 --> 00:33:46,280 baina arrazoi historikoengatik, programa bertan izena Aldaketa horretan sartuta dago. 544 00:33:46,280 --> 00:33:51,950 Beraz argc 2 clang mario.c idatzi nuen. 545 00:33:51,950 --> 00:33:54,290 Zer esan nahi du argv eduki? 546 00:33:54,290 --> 00:33:57,020 Lehenik eta behin, argv kate itxura da, baina ez da nahiko 547 00:33:57,020 --> 00:33:59,310 Asteazkena azken gisa eta gehiago guztiak gaur egun delako, 548 00:33:59,310 --> 00:34:02,890 karratu horiek parentesi artean adierazteko zer? Array bat da. 549 00:34:02,890 --> 00:34:07,110 Array kopurua ez da, eta zentzu intuizioz egin behar 550 00:34:07,110 --> 00:34:10,790 nork idatzi duela Clang urte, zalantzarik izan ez delako ideia 551 00:34:10,790 --> 00:34:16,300 zenbat hitz Gurekin atsegin dute gonbitan idatzi Sartu sakatuz aurretik. 552 00:34:16,300 --> 00:34:22,280 >> Beraz, kasu honetan hemen argumentuak array bat hartzen gisa deklaratu dute funtzioa nagusiak, 553 00:34:22,280 --> 00:34:24,590 0 edo gehiago argumentuak. 554 00:34:24,590 --> 00:34:26,460 Ez dute aldez aurretik jakin zenbat daude, 555 00:34:26,460 --> 00:34:29,690 beraz, ez da karratu parentesi artean horien barruan zenbaki ez nahita. 556 00:34:29,690 --> 00:34:32,750 Baina karratu parentesi artean daude ordenagailua kontatzea, 557 00:34:32,750 --> 00:34:34,639 espero array bat. 558 00:34:34,639 --> 00:34:37,489 Besterik ez da, argv azkarra argumentu bektore idazkera. 559 00:34:37,489 --> 00:34:39,889 Bektorea A array esaten fancy modu bat da, 560 00:34:39,889 --> 00:34:42,980 eta zerrenda bat edo bilduma esaten array fancy modu bat da. 561 00:34:42,980 --> 00:34:47,360 Hori esan nahi du, beraz, gero hau atsegin nagusia idazten 562 00:34:47,360 --> 00:34:51,100 ordez, nola egin dugu egiten iragan bi asteetan bezala, 563 00:34:51,100 --> 00:34:54,699 zure programa komando-lerroko argumentu onartu du 564 00:34:54,699 --> 00:34:58,520 beraz, ez da gehiago ez mario idatzi duzu eta, ondoren, sakatu Sartu, 565 00:34:58,520 --> 00:35:01,610 ondoren, zenbaki bat idatzi zenbat bloke handiko piramidea izan nahi duzu, 566 00:35:01,610 --> 00:35:03,100 eta sakatu Sartu berriro. 567 00:35:03,100 --> 00:35:07,720 Ere ez dugu behar GetString gehiago edo GetInt edo GetFloat gai erabili. 568 00:35:07,720 --> 00:35:12,370 Besterik ez dugu espero erabiltzaileari hitz horiek idatzi gonbitan bera 569 00:35:12,370 --> 00:35:16,850 atsegin dute Clang egileek erabaki benetan gogaikarriak programa bat izango litzateke 570 00:35:16,850 --> 00:35:20,550 Zure kodea konpilatu nahi izanez gero idatzitako lehen clang, sakatu Sartu, 571 00:35:20,550 --> 00:35:24,090 ondoren, esan erabiltzaileari, idatzi izena konpilatu nahi duzun fitxategia, 572 00:35:24,090 --> 00:35:26,920 ondoren, idatzi mario.c dugu, eta sakatu Sartu. 573 00:35:26,920 --> 00:35:29,850 Baina hori da, zehatz-mehatz zer egin dugu gure erabiltzaileek aste pare iraganean egiten. 574 00:35:29,850 --> 00:35:33,550 GetString erabiltzen dugu, eta programa horiek gonbita sarrera arte exekutatzen itxaron dugu. 575 00:35:33,550 --> 00:35:36,710 Ez dituen kasua izan behar. 576 00:35:36,710 --> 00:35:41,160 >> Beraz, hemen adibide honetan, gaur egun kate argv 577 00:35:41,160 --> 00:35:43,390 eta hau ere oversimplification bat da, 578 00:35:43,390 --> 00:35:45,610 prestakuntza gurpilak oso laster etorriko off. 579 00:35:45,610 --> 00:35:50,860 Nagusiak adierazpen alternatibo hau idazteko modu egokia da 580 00:35:50,860 --> 00:35:54,740 bihurtzen da delako zer, kate deituz mantentzen dugu benetan izar bat du, 581 00:35:54,740 --> 00:35:58,440 Asteriskoa, bere definizioa benetako, baina hori itxura korapilatsu, 582 00:35:58,440 --> 00:36:02,600 lehen nahasgarria da, eta, beraz, errazteko ordenatzen sinonimo bat sortzen dugu 583 00:36:02,600 --> 00:36:09,340 CS50 liburutegia mapak char more user-friendly hitza katea *. 584 00:36:09,340 --> 00:36:13,180 >> Beraz, dezagun benetan saiatu ondoren. Dezagun aurrera eta ireki gedit hemen. 585 00:36:13,180 --> 00:36:17,010 Dezagun aurrera eta argv ireki 1. 586 00:36:17,010 --> 00:36:21,620 Programa honek itxuraz bistaratzen argumentuak, baina termino ingeles, 587 00:36:21,620 --> 00:36:26,290 kode hau begira, zer egin zehatzago esanda? 588 00:36:26,290 --> 00:36:35,910 Mota komando a.out foo bar dut, zer bada lortzen nire leiho zuri-beltza eta inprimatutako? 589 00:36:35,910 --> 00:36:41,260 A.out foo bar, Sartu. 590 00:36:43,120 --> 00:36:48,300 Anima zaitez. Bai. >> [Inaudible ikaslearen erantzuna] 591 00:36:48,300 --> 00:36:52,730 Good. Beraz a.out, linea berria, foo, linea berria, taberna, linea berria. 592 00:36:52,730 --> 00:36:54,980 Zergatik da hau? Ahal izango dugu, zalantzarik gabe, une bat besterik ez baieztatzeko. 593 00:36:54,980 --> 00:36:56,940 Kode Fluffy lerro baten antzeko zerbait da. 594 00:36:56,940 --> 00:36:59,560  Bistaratzen linea berri bat besterik ez da, besterik gabe gauzak pantailan prettier egiteko. 595 00:36:59,560 --> 00:37:03,730 Hau loop bat 0-tik errepikatzean on argc da, 596 00:37:03,730 --> 00:37:07,210 eta, hau da, iterazio bakoitzean incrementing + +. 597 00:37:07,210 --> 00:37:12,270 Beraz, hau da gaur egun inprimatu kate bat esaten,% s hau engaiatuko. 598 00:37:12,270 --> 00:37:16,460 Argv [i] pretty askoz ere aurreko adibide ideia bera. 599 00:37:16,460 --> 00:37:19,580 Aldakorra s deitzeko erabiltzen dugu, gaur egun izenekoa, arbitrarioki, argv. 600 00:37:19,580 --> 00:37:24,270 Horrek esan nahi du, inprimatu Ith argumentua zen komando-lerroan idatzitako, 601 00:37:24,270 --> 00:37:28,690 eta, ondoren, gauza hau guztia egin ondoren, neurri ona inprimatu beste lerro berri bat. 602 00:37:28,690 --> 00:37:31,600 >> Beraz, ikus dezagun hau. Ireki me terminal leihoa. 603 00:37:31,600 --> 00:37:37,470 1 argv konpilatu me, eta, gaur egun, argv exekutatu me 1, Sartu. Hmm. Ongi da. 604 00:37:37,470 --> 00:37:40,850 Dezagun exekutatu foo bar. Interesgarria da. Baz. 605 00:37:40,850 --> 00:37:42,640 Eta duzun inoiz bada galdetu zergatik idazten dut, 606 00:37:42,640 --> 00:37:45,010 hau besterik ez da bat ere ergelak informatika konbentzio. 607 00:37:45,010 --> 00:37:48,050 Mundua sarritan hitzak leku hitzezko behar. 608 00:37:48,050 --> 00:37:50,090 Beraz, bada, string generiko batzuk buruz hitz egin nahi baduzu, 609 00:37:50,090 --> 00:37:53,250 ordenagailu zientzialari esan ohi foo ausazko hitz bat behar dute, 610 00:37:53,250 --> 00:37:55,530 ondoren bar esan dute random word dute bigarren behar izanez gero, 611 00:37:55,530 --> 00:37:59,100 ondoren baz diote behar dute hirugarren hitz bat bada, qux esaten dute hitz bat behar dute laugarren 612 00:37:59,100 --> 00:38:01,520 eta, ondoren, qux ondoren dator eztabaida handia erlijio konektatuta 613 00:38:01,520 --> 00:38:04,940 Google irudikatu nahi beste arbitrarioak hitza izan behar dezakezu. 614 00:38:04,940 --> 00:38:07,480 Baina horiek ez dute inolako zentzua, 615 00:38:07,480 --> 00:38:10,100 foo bar arren, duzun Google, duten zentzua ez bada, 616 00:38:10,100 --> 00:38:12,780 etimologia hemen zati da. 617 00:38:12,780 --> 00:38:17,550 >> Beraz, hori guztia ondoren egiten da lerro bakoitzeko kate horiek 1 inprimatzeko. 618 00:38:17,550 --> 00:38:19,900 Beraz, I ordez bada, ordea, apur bat fancier lortu nahi, 619 00:38:19,900 --> 00:38:22,550 demagun ez, ez dut nahi lerro bakoitzeko kate bakoitza inprimatu; 620 00:38:22,550 --> 00:38:26,220 Lerro bakoitzeko kate bakoitzean pertsonaia bakoitzak inprimatzeko nahi nuen. 621 00:38:26,220 --> 00:38:28,550 Nola izan ordez egin dut hori? 622 00:38:28,550 --> 00:38:33,720 Zer aldatu behar dut programa honi buruz egin nahi dut, ez da hitz bakoitzaren inprimatu nahi izanez gero 623 00:38:33,720 --> 00:38:37,290 baina hitza letra bakoitza inprimatu letraz letra nahi dut, 624 00:38:37,290 --> 00:38:40,590 hitza letraz letra eta gero hurrengo letra? 625 00:38:40,590 --> 00:38:43,650 Nola ideia horiek konbinatu dugu, beraz, orain arte? Bai. 626 00:38:43,650 --> 00:38:47,390 [Ikasleak]% c. >> Guztiak eskubidea. Beraz, nonbait behar dugu% c. 627 00:38:47,390 --> 00:38:50,680 Good, ez dudalako nahi osoa kateak inprimatu, karaktere inprimatu nahi dut. Zer gehiago? 628 00:38:50,680 --> 00:38:54,290 >> [Inaudible ikaslearen erantzuna] >> interesgarriak. 629 00:38:54,290 --> 00:38:56,860 Beraz, bigarren dimentsio bat hemen sort behar dugu 630 00:38:56,860 --> 00:39:02,300 zeren argv uste array bat da, baina kateak array bat da. 631 00:39:02,300 --> 00:39:07,170 Baina, bezala, 15 minutu ago, zer kate bat? Karaktere array bat da. 632 00:39:07,170 --> 00:39:12,320 Beraz, benetan, argv karaktere array baten array bat da, 633 00:39:12,320 --> 00:39:14,870 karaktere array array bat. 634 00:39:14,870 --> 00:39:19,170 Beraz, besterik ez kortxetea notazio bihurtzen da erabili ahal izango dugun. Beraz, egin dezagun hau. 635 00:39:19,170 --> 00:39:23,650 19 on line begizta honen goiko aldean, batetik bestera joateko-i arte argc noa, 636 00:39:23,650 --> 00:39:25,760 baina, ondoren, hau egin nahi dut: 637 00:39:25,760 --> 00:39:27,580 for ezin dut erabili i. 638 00:39:27,580 --> 00:39:30,300 Beste aldagai bat behar dut eta nahi dut batetik bestera joateko hitz duelako 639 00:39:30,300 --> 00:39:32,640 baina gero ere hitz letrak baino gehiago 640 00:39:32,640 --> 00:39:37,280 beraz, izan sort dut ardatz bertikala eta ardatz horizontala, kontzeptualki antzeko. 641 00:39:37,280 --> 00:39:43,930 Beraz, int j lortzen 0, orduan j luze j baino gutxiago egin nahi dut, eta hau garbitu dut pixka bat. 642 00:39:43,930 --> 00:39:48,410 Nola batetik bestera joateko kate batean letrak baino gehiago I? Hau egin genuen duela une bat. 643 00:39:48,410 --> 00:39:54,670 Argv-Strlen [i]. Good. 644 00:39:54,670 --> 00:39:57,860 Eta berriro ere eraginkortasunik eza, apur bat ari naiz egiten hemen ez n edo dena delakoa sortuz, 645 00:39:57,860 --> 00:39:59,610 baina itzuli dugu hori. 646 00:39:59,610 --> 00:40:03,270 >> Beraz, gaur egun j + +. Orain koska gehiago nahi izanez gero hemen daukat. 647 00:40:03,270 --> 00:40:06,950 Zer nahi dut iterazio bakoitzean inprimatzeko? 648 00:40:06,950 --> 00:40:09,720 [Inaudible ikaslearen erantzuna] >> Beraz, [i] me ematen du hitza. 649 00:40:09,720 --> 00:40:12,910 [I] [j], sort matrize bat bezala. 650 00:40:12,910 --> 00:40:14,810 Duzun dutenek math-y jatorri, 651 00:40:14,810 --> 00:40:19,340 indexatzeko moduko are sakonagoa gara array-matrizea edo array honetan sartu, 652 00:40:19,340 --> 00:40:21,380 2 dimentsioko egitura honetan. 653 00:40:21,380 --> 00:40:25,070 Beraz, gaur egun zer gertatzen den ikusteko hemen. Ireki nire handiagoa terminal leihoa. 654 00:40:25,070 --> 00:40:28,170 Argv 1 berrabiarazi me. 655 00:40:28,170 --> 00:40:33,090 Eta izorratu dut hemen, too ikasgaia ona da ahaztu ere egin. 656 00:40:33,090 --> 00:40:37,150 Inplizituki C liburutegi funtzioa 'strlen' geratuko mota 'unsigned 657 00:40:37,150 --> 00:40:40,360 Ere ez dut jakin zer esan nahi duen gainerako, baina hau ikusi dut aurretik, 658 00:40:40,360 --> 00:40:42,000 inplizituki geratuko. 659 00:40:42,000 --> 00:40:45,540 Errore hau ikusiko dugu bakoitzean, zer du honek normalean adierazten? 660 00:40:45,540 --> 00:40:48,520 >> [Inaudible ikaslearen erantzuna] >> liburutegi bat ahaztu dut goiko sortu. Baina minutu bat itxaron. 661 00:40:48,520 --> 00:40:51,690 Normalean izorratu dut ahaztu dut CS50 liburutegi delako, baina hori ez dago. 662 00:40:51,690 --> 00:40:54,480 Normalean izorratu dut Nik ahaztuta delako standard I / O. 663 00:40:54,480 --> 00:40:57,960 Eta Egia, ez dut behar hau. Ez ari gara GetString gaur egun erabiltzen. 664 00:40:57,960 --> 00:40:59,900 Beraz, zer naiz falta? 665 00:40:59,900 --> 00:41:04,860 Liburutegia beste orain noizean behin deitzen string.h erabili behar dugu, 666 00:41:04,860 --> 00:41:08,980 eta hau besterik ez da, oraindik gehiago standard I / O. ez diren funtzio duen beste liburutegi 667 00:41:08,980 --> 00:41:11,640 >> Beraz, goazen nire terminal-leiho handi itzuli. 668 00:41:11,640 --> 00:41:16,670 Ongi da. Orain, madarikatua, oker nengoen uste dut. CS50 liburutegia izan zen I erabiliz. 669 00:41:16,670 --> 00:41:18,460 Beraz, hau konpondu ahal izango dugu, 2 modu bai. 670 00:41:18,460 --> 00:41:21,510 Hartu ahal izango ditugu, prestakuntza gurpilak off oraintxe besterik ez Horretarako, 671 00:41:21,510 --> 00:41:26,600 edo let mantentzeko sinplifikazio hori oraintxe mota, itsatsi itzuli honetan, 672 00:41:26,600 --> 00:41:30,180 arazo hori konpontzeko, eta gaur egun itzuli terminal leihoa. 673 00:41:30,180 --> 00:41:33,080 Beraz, argi eta garbi, CS50 liburutegia ez da bakarrik funtzio 674 00:41:33,080 --> 00:41:36,920 keyword katea da, hau da, errore hori zergatik gertatu da. 675 00:41:36,920 --> 00:41:43,010 >> Beraz, hemen goaz. Bai liburutegia gaiak konpondu dut. Sartu. Good. 676 00:41:43,010 --> 00:41:49,250 1 argv, foo bar, Sartu. Bikain. 677 00:41:49,250 --> 00:41:52,830 Beraz, inprimatutako 1 lerro bakoitzeko hitz bakoitzaren hizki bakoitza behar dugu, 678 00:41:52,830 --> 00:41:55,290 horrek ez du programa bat oso interesgarria egin, 679 00:41:55,290 --> 00:41:59,350 baina oharra, gaur egun, ez bakarrik hitz baino gehiago errepikatzean gaitasuna dugu 680 00:41:59,350 --> 00:42:04,090 baina ere hitz banakako letrak, soinuak awfully ezagunak baino gehiago 681 00:42:04,090 --> 00:42:10,330 hau atsegin kate batean scrambling letrak bezalako aplikazio errazena izango balitu. 682 00:42:10,330 --> 00:42:12,410 Dezagun aurrera, eta 5 minutuko gure break hemen. 683 00:42:12,410 --> 00:42:14,410 Eta itzuli gara, eraginkortasuna buruz hitz egiten hasten gara 684 00:42:14,410 --> 00:42:17,670 duten gauza horiek hobeto egin ahal izango dugu. 685 00:42:19,370 --> 00:42:21,900 >> Guztiak eskubidea. Itzuli gara. 686 00:42:21,900 --> 00:42:26,970 Gure TFS bat bananagrams asko du esker, 687 00:42:26,970 --> 00:42:30,000 karakteretan sorta osoa izan dugu gurekin hemen gaur egun 688 00:42:30,000 --> 00:42:32,520 fisikoki incarnated plastikozko pieza txiki horiek, 689 00:42:32,520 --> 00:42:36,910 eta utzi me zuri hau hutsik arbel proposatzen hemen nire ordenagailuan RAM adierazten du 690 00:42:36,910 --> 00:42:39,790 laptop, desktop, edozein izanda ere - eta ez da asko itxura 691 00:42:39,790 --> 00:42:44,090 hasteko badugu byte-tamaina txiki zatitan Tajadura RAM duelako, 692 00:42:44,090 --> 00:42:48,970 dezagun arbitrarioki esan tamaina eta blurry dela adierazten duen zerbait 693 00:42:48,970 --> 00:42:52,430 han, joan gara, eta utzi pixka bat zooma hemen 694 00:42:52,430 --> 00:42:56,120 demagun single byte adierazten du zerbait tamaina. 695 00:42:56,120 --> 00:43:00,400 Beraz, hain zuzen ere, ezin dugu egokitzen bytes, memoria honen barruan edo karaktereak sorta osoa, 696 00:43:00,400 --> 00:43:02,860 erlatiboa tamaina hemen iradoki. 697 00:43:02,860 --> 00:43:06,780 >> Beraz, demagun orain helburua, hau da, kate bat da memoria esleitu. 698 00:43:06,780 --> 00:43:08,680 Nola ez hau benetan lan? 699 00:43:08,680 --> 00:43:11,380 Programak idazten dugu, normalean dugu izan GetString erabiliz, 700 00:43:11,380 --> 00:43:16,300 baina orain, argi eta garbi, ez dago beste kanalaren bidez erabiltzaileak argv sarrera eskuratu ahal izango dugu, hau da 701 00:43:16,300 --> 00:43:18,190 komando lerroko argumentuak bidez. 702 00:43:18,190 --> 00:43:20,580 Baina zer benetan joan kanpaia azpian? 703 00:43:20,580 --> 00:43:24,920 Bihurtzen da deitzen badugu dezagun joan itzuli GetString funtzio - GetString 704 00:43:24,920 --> 00:43:28,190 CS50 liburutegia, erabiltzaileari kate bat eskatuko zaizu, 705 00:43:28,190 --> 00:43:30,780 zenbait testu mota - dezagun deitu HELLO. 706 00:43:30,780 --> 00:43:35,410 Eta iragan bi aste esaten dugu GetString balioa itzulera 707 00:43:35,410 --> 00:43:37,750 Izan ere, kate bat da, hitza HELLO bezala. 708 00:43:37,750 --> 00:43:39,660 >> Baina, zer da benetan egiten GetString? 709 00:43:39,660 --> 00:43:45,230 HELLO, Sartu erabiltzaile-motak, GetString da kalkulatzen, 710 00:43:45,230 --> 00:43:47,930 ados, zenbat karaktere da hau? H-E-L-L-O. 711 00:43:47,930 --> 00:43:52,500 Linux kasu honetan - Beraz, esleitu behar da, sistema eragilea eskatu behar da 712 00:43:52,500 --> 00:43:55,410 gutxienez 5 byte HELLO gordetzeko. 713 00:43:55,410 --> 00:43:59,570 Eta zer hasten ondoren, egin egingo du behin 5 byte horiek sistema eragilearen 714 00:43:59,570 --> 00:44:04,120 HELLO finkatzeko Itzuli atzera. 715 00:44:04,120 --> 00:44:11,070 Eta beraz, zer benetan GetString itzuli datuen zatia duen itxura da. 716 00:44:11,070 --> 00:44:16,850 Baina, hau da, apur bat zehaztugabeak bihurtzen da delako ez dela bezain erraza 717 00:44:16,850 --> 00:44:20,310 HELLO gordetzeko ordenagailuaren memoria 718 00:44:20,310 --> 00:44:24,140 zeren demagun nire programa naiz I C idazteko orduan deiak berriro GetString 719 00:44:24,140 --> 00:44:28,210 eta hurrengo hitza Erabiltzaile mota Bye da, Agur. 720 00:44:28,210 --> 00:44:31,300 Beno, nonbait memoria hitza bye hori egokitzeko behar dut. 721 00:44:31,300 --> 00:44:33,790 Ezin dut clobber HELLO. 722 00:44:33,790 --> 00:44:37,320 Esate baterako, ez dut nahi, nahikoa da ordenagailu hau atsegin gainidatziz 723 00:44:37,320 --> 00:44:41,400 baliteke dudalako oraindik ere hitza erabiltzen HELLO aldagai batean jatorrizko hitza 724 00:44:41,400 --> 00:44:43,070 beste nonbait nire programan. 725 00:44:43,070 --> 00:44:45,900 >> Beraz, B-Y-E amaitzeko beste nonbait memorian. 726 00:44:45,900 --> 00:44:50,460 Baina konbentzioa normalean hurrengo kate esleitu 727 00:44:50,460 --> 00:44:54,940 seguruenik, baina ez beti, azkenean eskuragarri hurrengo memoriaren kokaleku joan. 728 00:44:54,940 --> 00:44:57,370 Eta ez badut memoria edozein eskatu sistema eragilearen 729 00:44:57,370 --> 00:45:01,380 azken GetString izeneko I geroztik, odds hitza bye 730 00:45:01,380 --> 00:45:05,790 eskubidea amaitzeko HELLO memoria hitza ondoren. 731 00:45:05,790 --> 00:45:10,550 Baina puntu honetan, agian ikusi ahal izango duzu non potentzial arazo bat sortzen da. 732 00:45:10,550 --> 00:45:13,310 Memoria hurrengo zatiak, besterik ez free ziren bytes hurrengo delako - 733 00:45:13,310 --> 00:45:18,230 garbitu zuri arbel - ordenagailuaren memoria eskubidea HELLO ondoan izan ziren, 734 00:45:18,230 --> 00:45:23,670 liteke bat-batean orain aldatu galdetu nuen lehen katea bezala sentitzen 735 00:45:23,670 --> 00:45:26,410 Nik funtsean aldatu delako HELLOBYE da 736 00:45:26,410 --> 00:45:31,310 ordez, nolabait, bye Irteeran eta HELLO amaieran demarcing. 737 00:45:31,310 --> 00:45:33,920 >> Beraz, izarrekin bihurtzen da zer den benetan kanpaia azpian, 738 00:45:33,920 --> 00:45:37,570 duten erreferentziak online edo atal edo liburu glimpsed 739 00:45:37,570 --> 00:45:41,780 edo ez, guztiak ondo oraindik ez dagoela da, benetan, nahita demarcation 740 00:45:41,780 --> 00:45:45,890 ordenagailu baten memoria hitzen artean. 741 00:45:45,890 --> 00:45:52,480 Eta, hain zuzen ere, kasu honetan hemen, baino gehiago jarri bye ondoan HELLO 742 00:45:52,480 --> 00:45:58,610 horren ordez, ordenagailuak karaktere berezi bat, null karaktere berezia, eta, beraz, hitz egiten du, 743 00:45:58,610 --> 00:46:03,050 backslash 0 markatzaile bat irudikatzen den. 744 00:46:03,050 --> 00:46:06,700 Beraz, luzea istorioa labur, gogoratzen diren karaktereak ASCII irudikatzen. 745 00:46:06,700 --> 00:46:09,680 Besterik ez da, ASCII zenbakiak eta letrak arteko mapaketa 746 00:46:09,680 --> 00:46:13,870 eta gutun horietako gehienak hasteko gutxi gorabehera 65 hiriburua A, 747 00:46:13,870 --> 00:46:19,780 baina, zalantzarik gabe, out zenbaki oso bat edo bitar 0 zenbakia bihurtzen da, 748 00:46:19,780 --> 00:46:22,690 eta bihurtzen da munduko erabaki luze, aspaldi, "zer ezagutzen duzu?" 749 00:46:22,690 --> 00:46:27,550 "Let erreserba kopurua ez teklatua pertsonaiak edozein ordezkari gisa 0 - 750 00:46:27,550 --> 00:46:30,810 "Ez da letrak, zenbakiak, puntuazio ez. 0 berezia da." 751 00:46:30,810 --> 00:46:35,830 "Izaera berezia null da joan, eta idatzi \ 0 goaz". 752 00:46:35,830 --> 00:46:41,170 Aldea besterik ez dugu idatzi bada 0, 0 pertsonaia bat da. 753 00:46:41,170 --> 00:46:45,700 Gogoratu daudela kodeak ASCII 0, 1, 2, 3 754 00:46:45,700 --> 00:46:50,570 pertsonaia 0 zenbaki 0 ​​desberdina delako. 755 00:46:50,570 --> 00:46:54,270 Eta ikusten begiratzen itzuliz gero aste 1 ASCII buruz hitz egin dugu lehenengo dezakezu, 756 00:46:54,270 --> 00:46:59,130 0 eta 1 eta 2 eta 3 eta 9 zuten beren ASCII kodeak. 757 00:46:59,130 --> 00:47:02,300 Ez dira, coincidentally, bidez 0 9. Oso desberdinak dira. 758 00:47:02,300 --> 00:47:08,770 Beraz, 0, besterik gabe esan nahi du "berezia naiz," eta \ 0 bitartez, literalki, "ez naiz 0 karakterea." 759 00:47:08,770 --> 00:47:11,360 "Balio berezi hau, null naiz". 760 00:47:11,360 --> 00:47:16,930 Beraz, benetan behar dut horietako beste bat ez dut akats bera birritan. 761 00:47:16,930 --> 00:47:21,550 >> Beraz, hitza bye ondoren ari gara, halaber, null karaktere horietako beste bat behar du. 762 00:47:21,550 --> 00:47:27,090 Utzi nire luma grab me hemen eta utzi marraztu azkar me beste \ 0 763 00:47:27,090 --> 00:47:30,480 beraz, eskatu dut ondoren sistema eragilearen 2 kateak 764 00:47:30,480 --> 00:47:33,270 GetString ondoren beste GetString dei bidez, 765 00:47:33,270 --> 00:47:35,640 hau da, zer da benetan memorian. 766 00:47:35,640 --> 00:47:39,900 Beraz, kate bat itzuli dut, benetan ari naiz back hori lortzean, 767 00:47:39,900 --> 00:47:43,450 eta hurrengo kate dut, benetan ari naiz atzera lortzean. 768 00:47:43,450 --> 00:47:47,910 Beraz Galdera hau begs, strlen, lehenik eta behin, zer egin behar da itzultzeko? 769 00:47:47,910 --> 00:47:54,650 Noiz strlen deitzen diot nik katea s eta s HELLO erabiltzaileak idatzitako hitza, 770 00:47:54,650 --> 00:47:57,800 zer egin dugu, jakina, esan HELLO luzera izan zen, duela minutu batzuk? 771 00:47:57,800 --> 00:48:01,290 5 izan da, ezta? H-E-L-L-O. Eta hori da, hain zuzen ere, nola strlen lanak. 772 00:48:01,290 --> 00:48:05,670 Gizaki normal bat kate bat izan zer luzera espero itzultzen da. 773 00:48:05,670 --> 00:48:11,030 Baina, egia esan, nola big kaixo gordetzeko karaktere array da? 774 00:48:11,030 --> 00:48:12,770 Benetan da 6. 775 00:48:12,770 --> 00:48:15,740 Strlen Beraz, ez du aipatu Izan ere, hori duzu. 776 00:48:15,740 --> 00:48:20,300 Kanpaia azpian ordenagailua da hain zuzen ere, 6 byte erabiliz 5 gutun-hitza bat gorde nahi du, 777 00:48:20,300 --> 00:48:22,380 eta hori egia da, ez du axola zenbat denbora du hitza. 778 00:48:22,380 --> 00:48:26,470 Beti NULL karaktere berezi bat izango katearen amaieran 779 00:48:26,470 --> 00:48:28,800 bere luzera guztira demarc. 780 00:48:28,800 --> 00:48:33,430 >> Beraz, gero, orain egiten ari zaren pertsona strlen 20 ezartzeko, duela 30 urte, 781 00:48:33,430 --> 00:48:35,520 nola joaten strlen ezartzeko berari buruz duzu? 782 00:48:35,520 --> 00:48:39,980 Emandako hartuko dugu existitzen dela, emandako printf existitzen dela bezala hartuko dugu, 783 00:48:39,980 --> 00:48:42,850 baina HELLO hitza bada 784 00:48:42,850 --> 00:48:45,220 eta memorian zerbait itxura hau da, 785 00:48:45,220 --> 00:48:48,130 reimplement strlen izan baduzu ziren delako eskatu 786 00:48:48,130 --> 00:48:50,260 edo, Egia, ez zenekien strlen existitu 787 00:48:50,260 --> 00:48:54,280 ko hau roll zeure izan duzu nola izan strlen ezartzea 788 00:48:54,280 --> 00:48:57,760 denean zerbait hori itxura? 789 00:48:57,760 --> 00:49:02,750 Orain ezagutzen dugun kate array bat da, batetik bestera joateko dezakegu banakako karaktere bakoitzaren 790 00:49:02,750 --> 00:49:06,320 antzeko zerbait erabiliz Horretarako hegan saiatu da. 791 00:49:06,320 --> 00:49:12,060 >> Dezagun joan aparatuaren me. Let me fitxategi berri bat, strlen.c sortzeko. 792 00:49:12,060 --> 00:49:19,260 Dezagun aurrera me now eta stdio.h beraz dugula to printf sarbidea ez. 793 00:49:19,260 --> 00:49:25,820 Dezagun int main (void) do me. Oh. Besterik ez dut egin, nire Ondoren, oraingoz. [Chuckles] 794 00:49:25,820 --> 00:49:28,300 Eskerrik asko. 795 00:49:28,300 --> 00:49:31,000 Hau da, zer egiten ari naiz. Guztiak eskubidea. 796 00:49:31,000 --> 00:49:34,820 Beraz, aurretik zen pantailan dut, hori guztia idatzi dut. 797 00:49:34,820 --> 00:49:37,550 Eta orain zer egin behar dut honako hau da: 798 00:49:37,550 --> 00:49:40,360 printf ("Emadazu kate bat:") 799 00:49:40,360 --> 00:49:42,700 Hori besterik ez Fluffy argibideak. 800 00:49:42,700 --> 00:49:45,700 Orain utzi katea s = GetString do me. 801 00:49:45,700 --> 00:49:47,260 Orain aldaketa bat egin behar dut dagoeneko. 802 00:49:47,260 --> 00:49:52,740 CS50 liburutegia erabiltzen dut bat-batean, eta, beraz, utzi aurretik, joan eta idatzi cs50.h. 803 00:49:52,740 --> 00:50:00,720 Eta orain egin dezagun hau: printf ("luzera:% d, strlen [s] - 804 00:50:00,720 --> 00:50:03,540 eta ez dut egin oraindik. Zer gehiago programa hau gehitu behar dut? 805 00:50:03,540 --> 00:50:05,740 >> [Ikasleen] string.h. >> String.h. 806 00:50:05,740 --> 00:50:10,800 Beraz, oraingoz, strlen erabiltzen ari gara, eta, beraz dezagun konpilatzailea daki non dagoela ziurtatu, 807 00:50:10,800 --> 00:50:12,390 hain txikia behatu egiaztatzeko. 808 00:50:12,390 --> 00:50:16,400 Line 8 kate bat naiz, eta linea 9 naiz,% d luzera inprimatzean. 809 00:50:16,400 --> 00:50:19,400 Beraz, dezagun aurrera eta gora hau irekitzeko. 810 00:50:19,400 --> 00:50:23,380 Strlen egin dugu biltzen ados 811 00:50:23,380 --> 00:50:30,120 strlen - utzi gerturatzeko me - Sartu, H-E-L-L-O, Sartu. Luzera 5. 812 00:50:30,120 --> 00:50:32,730 >> Ongi da, eta, beraz, strlen badirudi lan egiteko, baina mundua ezagutzen. 813 00:50:32,730 --> 00:50:37,310 Hargatik, gaur egun ezartzeko strlen honela geure buruari. 814 00:50:37,310 --> 00:50:39,490 Dezagun liburutegi hau hartu me kanpoan. 815 00:50:39,490 --> 00:50:42,590 Dute jada ez nuen ez delako, nahiz eta jakin existitu string.h sarbidea. 816 00:50:42,590 --> 00:50:45,970 Baina hori ados strlen I ezartzea daitekeelako neure burua 817 00:50:45,970 --> 00:50:50,200 eta sarrerako izeneko kate bat hartzen du, 818 00:50:50,200 --> 00:50:53,830 eta, orain, kate honen luzera irudikatu behar dut. 819 00:50:53,830 --> 00:50:55,880 Beraz, nola egin dezakegu hori egin behar dut? 820 00:50:55,880 --> 00:51:00,190 Zer egin behar dut - Ikus dezagun hau nola egin - Zer egin nahi duzu? 821 00:51:00,190 --> 00:51:04,130 >> [Inaudible ikaslearen erantzuna] >> Ados. 822 00:51:04,130 --> 00:51:05,970 Beraz, hau egin ahal izango dugu modu sorta bat. Ikuspegi hori hartzen saiatu me. 823 00:51:05,970 --> 00:51:10,220 Neure burua ematen dit, aldagai int i, beraz, hasten 0 i. 824 00:51:10,220 --> 00:51:19,380 Eta hau esan me: sarrera, berriz, [i] ez dago zer berdina al da? \ 0. 825 00:51:19,380 --> 00:51:23,480 Beraz, izarrekin bihurtzen da, guztiak idatziz literalki programa bat karakteretan kasuan bezala, 826 00:51:23,480 --> 00:51:25,940 single quotes, ez komatxo bikoitzak erabili ahal izango duzu. 827 00:51:25,940 --> 00:51:29,250 Beraz gutun bat idazten dut, hori egin nahi dut, gutun b, egin nahi nuke. 828 00:51:29,250 --> 00:51:33,440 Honek, ordea, kate bat izango litzateke, ez banakako karaktere bat. 829 00:51:33,440 --> 00:51:38,470 >> Beraz, \ 0 literalki nahi dut. Zer begizta honetan egin nahi dut? 830 00:51:38,470 --> 00:51:42,650 Egia esan, beste aldagai bat behar dut, beraz, int luzera 0 lortzen. 831 00:51:42,650 --> 00:51:46,190 Nahiz eta ez zinen ziur genuen zergatik hasi ginen, 832 00:51:46,190 --> 00:51:50,110 orain goaz errepide hau, zer egin nahi dut linea 9? 833 00:51:50,110 --> 00:51:55,820 luzera + + eta gero behera hemen line 10, bueltan luzera. 834 00:51:55,820 --> 00:51:58,370 Beraz, nola da strlen inplementatu? 835 00:51:58,370 --> 00:52:00,550 Benetan inplementatu ziurrenik hau atsegin dute. 836 00:52:00,550 --> 00:52:03,470 Agian pertsona erabili a loop, agian ez loop berriz, nork daki? 837 00:52:03,470 --> 00:52:05,940 Benetan litzaidake dugu kanpaia azpian bilatzeko iturburu-kodea 838 00:52:05,940 --> 00:52:08,520 izeneko fitxategi batzuk string.c ziurrenik. 839 00:52:08,520 --> 00:52:10,480 >> Baina hemen zer egiten ari naizen pentsatzen. 840 00:52:10,480 --> 00:52:13,640 Izeneko aldagai bat i naiz geratuko, berdintasuna 0 ezartzeko. 841 00:52:13,640 --> 00:52:17,520 Ondoren, aldakorra naiz beste izeneko luzera geratuko, berdintasuna 0 ezartzeko. 842 00:52:17,520 --> 00:52:25,440 Ondoren, sarrera pertsonaia Ith null karaktere berezia, \ 0 berdina da, aldiz, ez dut esaten 843 00:52:25,440 --> 00:52:27,070 Kontatzailea luzera. 844 00:52:27,070 --> 00:52:32,550 Baina laster Ith karakterea karaktere berezi hau da, loop, zer gertatzen da? 845 00:52:32,550 --> 00:52:36,540 Labur zirkuituak. Gelditzen da, horrek esan nahi du, berehala gero itzuli luzera. 846 00:52:36,540 --> 00:52:40,740 >> Beraz, nuen nahaspila sortu ez bada, goazen aurrera eta itzuli nire terminal leihoa. 847 00:52:40,740 --> 00:52:43,550 Utzidazu birkonpilatzeko. Eta hondatzeko nuen. 848 00:52:43,550 --> 00:52:46,320 Adierazpen berria liburutegia funtzioa strlen bateraezina. 849 00:52:46,320 --> 00:52:48,650 Beraz, gehiegi nire ona propioa clever hemen nintzen saiatzen ari dela esan nahi du. 850 00:52:48,650 --> 00:52:51,610 Konpilatzailea benetan daki ez dagoela izeneko funtzio bat strlen 851 00:52:51,610 --> 00:52:55,290 nahiz eta ez dugu liburutegian. Hori da, fina. Whatever. 852 00:52:55,290 --> 00:52:58,230 Ondoren kooperatu ari gara. Dezagun berrizendatu luzera hori. 853 00:52:58,230 --> 00:53:04,110 Dezagun erabilera aldatzeko me luzera hemen, eta hau Clang beharra egingo. 854 00:53:04,110 --> 00:53:08,900 Bat alde batera utzita, funtzio hauetako batzuk, beraz, darn direlako komun bezala - 855 00:53:08,900 --> 00:53:12,390 strlen, prinf - benetan egoera bereziak sort. 856 00:53:12,390 --> 00:53:15,310 Eta, beraz, Clang apur bat baino ez haiei buruz zerbait berezia daki. 857 00:53:15,310 --> 00:53:18,760 Hori ez da beti funtzio gehienetan kasuan, eta, beraz, beraz, horregatik got yelled at. 858 00:53:18,760 --> 00:53:21,350 >> Berriro saiatu me. Zorionez, une horretan lan egin du. 859 00:53:21,350 --> 00:53:23,560 Beraz, gaur egun, let me nire strlen programa exekutatu. 860 00:53:23,560 --> 00:53:29,740 Give me kate bat: H-E-L-L-O, Sartu. Eta izorratu dut. 861 00:53:29,740 --> 00:53:34,750 Zergatik? >> [Inaudible ikaslearen erantzuna] >> Zehazki. 862 00:53:34,750 --> 00:53:39,180 Beraz, neure burua daukat hemen oso nice-begira begizta infinitua 863 00:53:39,180 --> 00:53:42,270 naiz, nahiz eta luzera incrementing iterazio bakoitzerako delako, 864 00:53:42,270 --> 00:53:47,860 ez nago argi eta garbi egiten dut? Ez dut incrementing i. Ongi da. Erraza fix. Bai? 865 00:53:47,860 --> 00:53:52,430 Ongi da. N º orain beste akats orokor batzuk exekutatu afoul genuke non parentesi artean behar dut. 866 00:53:52,430 --> 00:53:54,430 Eta, Egia, kode hau itsusi begiratzen hasi, 867 00:53:54,430 --> 00:53:56,460 Stab bat hartu dugu, hau garbitzeko une batean. 868 00:53:56,460 --> 00:53:58,810 Baina orain bai luzera eta incrementing i dut. 869 00:53:58,810 --> 00:54:02,630 Egia, dagoeneko I hobetzeko aukera bat hemen, baina itzuli dugu hori. 870 00:54:02,630 --> 00:54:05,270 >> Beraz, gaur egun dezagun ziurtatu gutxienez Oraindik dugu aurrera egiteko. 871 00:54:05,270 --> 00:54:08,320 Batzuk gertatu zen, eta aldez aurretik aipatu behar ahazturik nuen. 872 00:54:08,320 --> 00:54:12,420 Hau atsegin dute eszenatoki bat ezbeharra izan ez baduzu, nola egiten da hau konpontzen ez duzun 873 00:54:12,420 --> 00:54:15,130 labur-tresna edo ordenagailua berrabiarazi edo leihoa ixteko? 874 00:54:15,130 --> 00:54:16,860 Benetan erraza da. 875 00:54:16,860 --> 00:54:21,680 Control C txiki honetan azenario ikurra C bidaliko da, eta programa gehienak bukatzen da. 876 00:54:21,680 --> 00:54:25,990 Duzu benetan txarra den infinitua loop stuff infinituki hainbat aldiz inprimatzeko bada, 877 00:54:25,990 --> 00:54:29,960 batzuetan Control C hit bat mila aldiz entzun da benetan egin beharko duzu. 878 00:54:29,960 --> 00:54:33,910 Beraz, Orain konturatu naiz ez delako ezer egin, nahiko erraza izan zen inprimatzean. 879 00:54:33,910 --> 00:54:37,970 Eta teknikoki, behin nahikoa, baina pazientziarik lortu dut eta normalean hit dut asko aldiz. 880 00:54:37,970 --> 00:54:43,400 >> Strlen Beraz. Give me kate bat: HELLO. Dago une honetan lanean? 881 00:54:44,580 --> 00:54:47,490 Ongi da. Komuna akats bat. Have birkonpilatu. 882 00:54:47,490 --> 00:54:50,430 Hori izan zen, nahita, bat. Guztiak eskubidea. 883 00:54:50,430 --> 00:54:54,260 Strlen Beraz, H-E-L-L-O, Sartu. Bikain. 884 00:54:54,260 --> 00:54:55,910 Beraz, orain dugu strlen 5. 885 00:54:55,910 --> 00:54:58,100 Beraz, gurpil reimplemented literalki dugu. 886 00:54:58,100 --> 00:55:02,080 Beraz, gaur egun utzi garbitzeari hau ez delako egin me zirrara 887 00:55:02,080 --> 00:55:04,080 nire kodea diseinua. 888 00:55:04,080 --> 00:55:07,200 Zer egin dezakete programa honetan argi eta garbi dugu, hau kentzeko garbitu? 889 00:55:07,200 --> 00:55:11,840 [Inaudible ikaslearen erantzuna] >> Bai. Literalki, i eta luzera tratatzeko berdinean ari gara. 890 00:55:11,840 --> 00:55:16,440 Beraz, zergatik ez dugu smart eta esan luzera bitartean? 891 00:55:16,440 --> 00:55:20,450 Izan ere, dezagun deitu besterik ez hasteko luzera, hasieratu 0 892 00:55:20,450 --> 00:55:23,340 default katea luzera ez duelako irudikatu dugu arte zer da. 893 00:55:23,340 --> 00:55:26,160 >> Orain egiten dugu, eta, gaur egun, hau nahiko dotorea programa bat da. 894 00:55:26,160 --> 00:55:28,660 Aldagai bat. Garbitu dut, estutu sortu. 895 00:55:28,660 --> 00:55:31,980 Beraz, gaur egun, goazen nire terminal leihoa. Dezagun aurrera, eta hau exekutatu. 896 00:55:31,980 --> 00:55:35,670 Egin strlen. Looks good. Exekutatu strlen berriz, Sartu. 897 00:55:35,670 --> 00:55:40,680 Give me kate bat: HELLO, Sartu. Eta 5 lan dirudi. 898 00:55:40,680 --> 00:55:45,580 Gaur egun, argi eta garbi izan behar du, izan ez banu idatzi, esate baterako, HELLO 1 kate 899 00:55:45,580 --> 00:55:48,840 eta, ondoren, beste bye, zalantzarik gabe, ahal izango dugu hitz bat baino gehiago. 900 00:55:48,840 --> 00:55:53,150 Adierazpen nahi actually I idatzi izan ez bada HELLO baina, esate baterako, 901 00:55:53,150 --> 00:55:58,920 HELLO WORLD, aldez aurretik jakinarazi zer ez genuke egoera hori da hemen, eskuinera? 902 00:55:58,920 --> 00:56:00,580 Hori dela 2 kateak iradokitzen litzateke. 903 00:56:00,580 --> 00:56:06,060 Zuriune-barra karaktereak, zalantzarik duzu daiteke, hala badagokio esaldi luzeagoak idatzi benetan dugu 904 00:56:06,060 --> 00:56:08,390 HELLO WORLD bezala, benetan zer genuke memorian 905 00:56:08,390 --> 00:56:12,730 ez dagoela antzeko zerbait apur bat dirudi. 906 00:56:12,730 --> 00:56:18,910 >> Guztiak eskubidea. Gero, ordezkaritza Hemen kateak buruzko edozein galdera? 907 00:56:18,910 --> 00:56:20,450 Ez? Guztiak eskubidea. 908 00:56:20,450 --> 00:56:25,130 Beraz, lehenago esan dut deituz strlen behin eta berriro nahita horrela 909 00:56:25,130 --> 00:56:28,070 Seguruenik ez da onena ideia ari zaren lan asko egiten duelako joan 910 00:56:28,070 --> 00:56:30,280 behin eta berriz eta berriz. 911 00:56:30,280 --> 00:56:36,150 Izan ere, zer kate baten luzera kalkulatzen, itxuraz beharrezko lan mota da? 912 00:56:36,150 --> 00:56:40,720 Hasieran hasiko da eta, ondoren, begiratu, begiratu, begiratu, begiratu, begiratu duzu 913 00:56:40,720 --> 00:56:44,930 azkenik karaktere berezi hori ikusten duzun arte, eta amaitzen da, ah, orain luzera ezagutzen dut. 914 00:56:44,930 --> 00:56:48,040 Beraz, lehenago strlen genuen izeneko berriro, eta behin eta berriro, 915 00:56:48,040 --> 00:56:52,080 arrazoia proposatu I ergelak mota izan zen, berriz, kate hori delako duten itxura. 916 00:56:52,080 --> 00:56:54,880 Duzun aldi bakoitzean batetik bestera joateko ez da aldatu begizta batzuen bidez, 917 00:56:54,880 --> 00:56:56,890 beraz, ez da beharrezkoa izango lan egiten ari zarenean. 918 00:56:56,890 --> 00:57:00,620 Aldi berean, jakin behar duzu, bat alde batera utzita, Clang bezala Konpilatzaileak diren egun hauetan 919 00:57:00,620 --> 00:57:02,530 izan dira urte askotan zehar garatu da, 920 00:57:02,530 --> 00:57:05,690 konpilatzailea idazle, programatzaileak, pretty smart dira. 921 00:57:05,690 --> 00:57:10,170 Eta horrela bihurtzen da Konpilatzaileak Clang eta beste benetan irudikatu, 922 00:57:10,170 --> 00:57:13,650 ados, bai, strlen idatzi zure egoera 923 00:57:13,650 --> 00:57:17,520 teknikoki esan diegu behin eta berriz eta berriz. 924 00:57:17,520 --> 00:57:21,880 Baina Konpilatzaileak smart benetan Erabiltzaile pobreak erabakiak mota horiek optimizatzeko 925 00:57:21,880 --> 00:57:23,870 Zure kodea out gauzak zuzentzeko. 926 00:57:23,870 --> 00:57:27,360 >> Beraz, ez besterik ez konturatzen batzuetan konpilatzailea da smarter gurekin baino 927 00:57:27,360 --> 00:57:29,210 eta mota horretako ezkutatu gure akatsak. 928 00:57:29,210 --> 00:57:31,620 Baina, zalantzarik gabe, orduan eta arazo multzo bezala, 929 00:57:31,620 --> 00:57:35,340 funtsean, horien diseinua okerrak erabakiak buruz ez pentsatzeko 930 00:57:35,340 --> 00:57:38,110 potentzialki dugun modu lan gehiago egiten litzaidake arrazoi sinple 931 00:57:38,110 --> 00:57:41,330 benetan egin behar duguna baino. Baina zenbat lan gehiago? 932 00:57:41,330 --> 00:57:44,960 MUNDUKO HELLO kasuan, dezagun hasteko arazo honen tamaina orokortu. 933 00:57:44,960 --> 00:57:48,100 Zein da arazoa arazoa luzera edo tamaina 934 00:57:48,100 --> 00:57:50,770 hitza idatzi erabiltzaile HELLO da? 935 00:57:50,770 --> 00:57:53,790 Itxuraz da 5, agian 6. Plus edo minus 1. Whatever. 936 00:57:53,790 --> 00:57:55,680 Beraz, hurbil da besterik ez dugu deitu du 5. 937 00:57:55,680 --> 00:58:00,480 >> Beraz, zer da arazoa tamaina hemen HELLO luzera irudikatu nahian? 938 00:58:00,480 --> 00:58:06,790 1, 2, 3, 4, 5, eta, agian, azken karakterea 6 da,, baina dezagun orokortu n bezala. 939 00:58:06,790 --> 00:58:10,300 Beraz, n, aski aldakorra n, ordenagailu zientzialari litzateke normalean erabiltzen 940 00:58:10,300 --> 00:58:13,890 arazo baten tamaina, eta arazoa eskuz deskribatzeko zenbat denboraz HELLO? 941 00:58:13,890 --> 00:58:17,050 Zenbat denbora du strlen hartu? 942 00:58:17,050 --> 00:58:21,010 N urratsak ordena hartzen du, non urrats bakoitzaren pertsonaia bat begirada esan nahi du, 943 00:58:21,010 --> 00:58:23,350 begiratu pertsonaia bat, pertsonaia bat bilatzeko. 944 00:58:23,350 --> 00:58:26,850 Eta eztabaida hau pixka bat izan genuen, eragiketa kopuru zerbait hartzen du. 945 00:58:26,850 --> 00:58:29,910 Klase egun oso lehen pertsona guztien genuen awkwardly Zutik, 946 00:58:29,910 --> 00:58:32,060 eta, ondoren, denek hasi off PCa parekatu ondoren, elkarren artean 947 00:58:32,060 --> 00:58:35,990 benetan zenbatu ahal izateko haien gela zenbat pertsona zeuden. 948 00:58:35,990 --> 00:58:39,860 Eta beste gauza bat ere egin dugu horren bidez ordez nuen bada eskola zaharra modu 949 00:58:39,860 --> 00:58:44,800 besterik ez, 1, 2, 3, 4, 5, 6 hasita, eta abar, 950 00:58:44,800 --> 00:58:49,360 hau ere, arazo hori tamaina tamaina-n izan da. Izan ziren gelan jendea n. 951 00:58:49,360 --> 00:58:52,010 Baina hori bizkortzeko izan dut, ezta? Kalifikazio eskola estiloa hasteko 2s en kontatuta nuen. 952 00:58:52,010 --> 00:58:55,560 2, 4, 6, 8, 10, 12. Eta hori sentitzen, beraz, askoz ere azkarragoa, eta halaxe da. 953 00:58:55,560 --> 00:59:01,720 Literalki bi aldiz azkarrago da, baina berriro ere, gela honetan sartzeko beste 400 pertsona ibili bada 954 00:59:01,720 --> 00:59:08,250 aldi berean, algoritmo horiek beste 400 edo agian 200 neurriak hartuko luke. 955 00:59:08,250 --> 00:59:13,310 >> Baina, aitzitik, benetan smart gara, eta horren ordez dugu guztiak zenbatu zuei, 956 00:59:13,310 --> 00:59:15,280 gogoratzen algoritmoa, nola lan egin. 957 00:59:15,280 --> 00:59:17,110 Koa izan da duzun guztia. Utzidazu Aurreratu hau. 958 00:59:17,110 --> 00:59:20,430 Koa izan duzun guztia, off parekatuta duzu, gero erdia eseri, 959 00:59:20,430 --> 00:59:22,510 duzun erdia eseri, eseri duzun erdia, 960 00:59:22,510 --> 00:59:27,350 eta begizta hau aste 0 iterazio bakoitzerako, arazo erdira murriztu dugu eskua 961 00:59:27,350 --> 00:59:30,040 eta n / 2 joan ziren eta, ondoren, n / 4, eta ondoren n / 8. 962 00:59:30,040 --> 00:59:35,350 Eta horren inplikazioa da, beste 400 pertsona gela, big aurre ez oinez bada, 963 00:59:35,350 --> 00:59:40,120 eramango gaituzte 1 gehiago txanda izango da, ez 400 erronda gehiago, ez 200 gehiago erronda. 964 00:59:40,120 --> 00:59:43,640 Eta beraz, istorioa pixka bat esan dugu atzera honekin zerbait pixka bat egin behar izan zuen. 965 00:59:43,640 --> 00:59:47,750 Lerro honek gorria hemen da lineala, zuzenean, eta n gisa etiketatu 966 00:59:47,750 --> 00:59:50,250 arazo baten tamaina hazten delako, 967 00:59:50,250 --> 00:59:54,690 zure algoritmo edo programa konpontzeko bada ari zaren n urratsak hartzen du, 968 00:59:54,690 --> 00:59:58,620 marraz dezakegu, lerro zuzen bat, non denbora gehiago arazoaren tamaina handiagoa hartzen du. 969 00:59:58,620 --> 01:00:03,280 Eta twosies hurbilketa, 2 kontatuta, 4, 6, 8, oraindik lerro zuzen bat, besterik gabe, apur bat hobea. 970 01:00:03,280 --> 01:00:08,440 Pixka bat denbora gutxiago hartzen du, eta, beraz, lerro horiak marra gorria puntu puntu txikiagoa da, beraz. 971 01:00:08,440 --> 01:00:12,580 >> Baina are hobeto logaritmikoa deitzen dugu Grial santua hau izan zen 972 01:00:12,580 --> 01:00:14,830 non berriro ere pertsonen kopurua bikoiztu egin dugu gelan, 973 01:00:14,830 --> 01:00:18,240 tamaina bikoiztu dugu liburu hori telefono klaseko lehen egunean, 974 01:00:18,240 --> 01:00:22,310 big aurre ez, 1 orria gehiago malko hartzen du, 1 gehiago eserita behera irauten du 975 01:00:22,310 --> 01:00:25,550 bikoitza big arazo bat konpondu ahal izateko. 976 01:00:25,550 --> 01:00:27,460 Eta, beraz, elkarrizketa izaten ari da hasteko 977 01:00:27,460 --> 01:00:30,380 nola ez dugu arazoak konpontzeko benetan modu eraginkorrean 978 01:00:30,380 --> 01:00:32,510 uste dugu arazo hau atsegin sinpleena da, bada? 979 01:00:32,510 --> 01:00:36,210 Demagun 8 ateak ditugu horien atzean dauden zenbaki batzuk, 980 01:00:36,210 --> 01:00:39,720 eta zenbaki horiek bakoitzean, ez da inolaz ere horrela antolatu da, 981 01:00:39,720 --> 01:00:42,830 besterik ez ausazko zenbaki osoen ari dira ate horien atzean, 982 01:00:42,830 --> 01:00:47,290 eta galdera dugu nola joaten zenbakia aurkitzeko buruz duzu - nork daki - 983 01:00:47,290 --> 01:00:50,250 7 ate horien atzean? 984 01:00:50,250 --> 01:00:53,400 Zer egingo zenuke zuk, giza, ni aurkitzea kopurua 7 985 01:00:53,400 --> 01:00:56,810 berriro horietako bakoitzean badira ateak eta ate bat irekitzeko balio bat ikusteko behar duzu? 986 01:00:56,810 --> 01:00:59,650 Zer izango litzateke zure algoritmoa izan, agian? 987 01:00:59,650 --> 01:01:05,310 >> [Inaudible ikaslearen erantzuna] >> Beraz, ezkerretik hasi eta ate bat ireki, ate bat ireki, ate bat irekitzeko. 988 01:01:05,310 --> 01:01:08,570 Eta kasu horretan, txarrena, zenbat denbora eramango gaitu 7 aurkituko da? 989 01:01:08,570 --> 01:01:12,800 Eta berriro ere, dira ez ordenatuta, beraz, ez da bezain erraza da, ondo, 7 atea ireki dut joan. 990 01:01:12,800 --> 01:01:15,240 Eramango gaitu, Gehienez, 8 urrats. 991 01:01:15,240 --> 01:01:19,940 Kasurik okerrenean, 7 ausaz ateak line amaieran, 992 01:01:19,940 --> 01:01:22,090 beraz, n ate guztiak saiatu gara dezake. 993 01:01:22,090 --> 01:01:24,440 Beraz, berriro hemen, algoritmo lineal bat izan dirudi dugu. 994 01:01:24,440 --> 01:01:27,030 Hain zuzen ere, duela urte pare bat besterik ez genuen. 995 01:01:27,030 --> 01:01:29,910 Zure aurrekoek bat izan zen, hain zuzen honekin desafioa 996 01:01:29,910 --> 01:01:32,050 non ez dugu digital bertsio bat izan ordez arbel bat 997 01:01:32,050 --> 01:01:33,780 gainean paper-pieza batzuk. 998 01:01:33,780 --> 01:01:36,940 Eta zer egingo lukeen pentsatu nuen look back hau nola joan zen azkar bat hartu da, 999 01:01:36,940 --> 01:01:40,760 etapa onena eta agian gehien awkward aukera bat 1000 01:01:40,760 --> 01:01:42,530 manifestazio bat izan eskubidea hemen Sanders. 1001 01:01:42,530 --> 01:01:44,000 2 zenbakiak ilara izan genuen. 1002 01:01:44,000 --> 01:01:47,280 Bakarrik ari gara zer gertatzen hemen Sean goiko errenkada horiek oso begiratu. 1003 01:01:47,280 --> 01:01:49,660 Inork ez du inoiz berriro CS50 boluntarioen ezean, 1004 01:01:49,660 --> 01:01:52,010 Sean bedeinkazioa hau mantentzeko kamera izan genuen, 1005 01:01:52,010 --> 01:01:54,670 beraz, ehunka pertsona izan dira hau ikusten orain urte daki. 1006 01:01:54,670 --> 01:01:59,500 Baina Sean egin amazing lan bat edo egin zuen? Benetan gurekin, bereziki zenbaki bat aurkitzeko. 1007 01:01:59,500 --> 01:02:04,570 >> Hargatik algoritmo hau nola konpondu zuen, beraz, elkarrizketa hau eta berrekiteko dugu luze baino lehen 1008 01:02:04,570 --> 01:02:08,300 nola gauza aurkituko dugu modu eraginkorrean. 1009 01:02:08,300 --> 01:02:12,300 [Video Malan] ate horien atzean ezkutatuta kopurua 7 1010 01:02:12,300 --> 01:02:16,710 baina ate horietako batzuk bilduta kanpoan baita beste zenbaki ez-negatiboa, 1011 01:02:16,710 --> 01:02:19,980 eta zure helburua da zenbakiak goiko errenkadan honetan uste array bat besterik ez 1012 01:02:19,980 --> 01:02:22,920 edo, besterik gabe, paper-pieza atzean zenbakiak dituzten sekuentzia bat, 1013 01:02:22,920 --> 01:02:26,960 eta zure helburua da, bakarrik goiko array Hemen, aurkituko me kopurua 7. 1014 01:02:26,960 --> 01:02:30,800 Eta gero ari gara kritika nola egiten duzun. >> Guztiak eskubidea. 1015 01:02:30,800 --> 01:02:33,880 [Malan] Aurkitu 7 zenbakia, mesedez. 1016 01:02:36,210 --> 01:02:38,350 [Barreak] 1017 01:02:41,610 --> 01:02:44,460 [Malan] N º [barreak] 1018 01:02:45,760 --> 01:02:58,080 5, 19, 13, [barreak]. Ez da trikimailu galdera bat. 1019 01:03:00,560 --> 01:03:02,390 1. 1020 01:03:04,560 --> 01:03:06,910 [Barreak] 1021 01:03:06,910 --> 01:03:10,760 Puntu honetan zure puntuazioa ez da oso ona, beraz, baita dezakezu mantendu egingo da. [Barreak] 1022 01:03:12,490 --> 01:03:14,070 3. 1023 01:03:17,340 --> 01:03:23,480 Joan. Egia, ezin dut lagundu, baina harritzekoa zer are ari zaren pentsatzen. [Barreak] 1024 01:03:25,010 --> 01:03:28,870 Goiko errenkadan, bakarrik, eta, beraz, lortu dituzun 3 ezker. Beraz aurkitu me 7. 1025 01:03:28,870 --> 01:03:45,360 [Ikasle murmuring] 1026 01:03:46,270 --> 01:03:49,870 [Malan] 17. 1027 01:03:49,870 --> 01:03:55,460 [Ikasle murmuring] 1028 01:03:56,920 --> 01:04:01,550 [Malan] 7! [Txalo] 1029 01:04:01,550 --> 01:04:06,080 >> Beraz, asteazkenean eta algoritmo sofistikatuak gehiago sartuko dugu murgiltze gauzak aurkitzeko. 1030 01:04:06,080 --> 01:04:10,200 Oraingoz utziko dugu Sean eta asteazkenean ikusiko duzu. 1031 01:04:11,280 --> 01:04:13,000 [CS50.TV]