1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] DAVID J. Malan: Dobre. 2 00:00:08,160 --> 00:00:11,170 To je CS50, a to je koniec týždňa dva. 3 00:00:11,170 --> 00:00:14,650 Ak očakávate, že hlad po tejto dobe zajtra, viem, že s tým budeme 4 00:00:14,650 --> 00:00:18,920 zvolať ako malé skupiny zajtra, vo štvrtok, 13:15. 5 00:00:18,920 --> 00:00:21,460 Tam je to URL tu, ak chcete RSVP. 6 00:00:21,460 --> 00:00:25,270 Priestor je obmedzený, preto prosím ospravedlňte, ak bol formulár vyplnený až v čase, keď 7 00:00:25,270 --> 00:00:26,680 vyplniť to. 8 00:00:26,680 --> 00:00:29,400 Ďalšie URL hoci to by mohlo byť zaujímavé je to. 9 00:00:29,400 --> 00:00:32,409 >> Takže len asi mesiac času, kurz sa bude k dispozícii 10 00:00:32,409 --> 00:00:36,090 všetky všeobecnejšie cez EDX, cez ktoré ľudia na internete budú 11 00:00:36,090 --> 00:00:39,580 možnosť sledovať spolu, angažovať sa v priebehu pomerne aktívne, v skutočnosti. 12 00:00:39,580 --> 00:00:43,070 Budú používať CS50 Appliance a CS50 diskutovať a väčšinu 13 00:00:43,070 --> 00:00:45,840 rôzne softvérové ​​nástroje, ktoré sme už používali tento semester. 14 00:00:45,840 --> 00:00:49,030 A jednou z iniciatív by sme chceli, aby sa na ako experiment v tomto roku 15 00:00:49,030 --> 00:00:53,120 je vidieť, koľko obsahu môžeme preložiť do iných hovorený a 16 00:00:53,120 --> 00:00:54,110 písané jazyky. 17 00:00:54,110 --> 00:00:58,000 Takže ak by ste mohli mať záujem o účasť v tomto projekte, podľa ktorého 18 00:00:58,000 --> 00:01:02,090 budeme poskytovať anglické prepisy a titulky pre kurz je 19 00:01:02,090 --> 00:01:05,190 prednášky a šortky a semináre a profily a podobne - 20 00:01:05,190 --> 00:01:08,700 ak hovoríte plynulo alebo písať plynule nejaký iný jazyk, by sa 21 00:01:08,700 --> 00:01:12,240 radi vtiahnuť vás do tohto projektu, kedy budete mať na jednom alebo viacerých 22 00:01:12,240 --> 00:01:15,340 Videá, ich prevedenie do jazyka poznáte celkom dobre. 23 00:01:15,340 --> 00:01:19,050 Ak chcete dať vám pocit rozhranie, tam je to web-based užívateľské rozhranie 24 00:01:19,050 --> 00:01:22,330 že budeme používať, že vytvorí v podstate užívateľské rozhranie, ako je tento. 25 00:01:22,330 --> 00:01:24,520 Toto bolo mi učil niektoré Halloween pred. 26 00:01:24,520 --> 00:01:27,710 A na pravej strane tam v čiernom vedľa týchto časových pečiatok, 27 00:01:27,710 --> 00:01:31,300 uvidíte rôzne veci, ktoré vyšli z mojich úst, že deň. 28 00:01:31,300 --> 00:01:34,660 A potom pod ním, budete môcť previesť do nejakého iného jazyka. 29 00:01:34,660 --> 00:01:37,840 Presne to, čo je mapovanie medzi, v tomto prípade, anglický 30 00:01:37,840 --> 00:01:38,660 a, povedzme, španielsky. 31 00:01:38,660 --> 00:01:40,480 Takže je to vlastne veľmi užívateľsky príjemný nástroj. 32 00:01:40,480 --> 00:01:43,690 Môžete pretáčať dopredu veľmi rýchlo pomocou klávesových skratiek. 33 00:01:43,690 --> 00:01:46,710 Takže ak by ste chceli zúčastniť tohto experimentu a mať vaše slová 34 00:01:46,710 --> 00:01:50,730 vidieť a čítať potenciálne tisíce ľudí tam, prosím, čo majú pocit, 35 00:01:50,730 --> 00:01:51,960 možnosť zúčastniť. 36 00:01:51,960 --> 00:01:56,940 >> Teraz jedno slovo o mačiatko od pondelka, inak sme poslali príliš 37 00:01:56,940 --> 00:01:58,120 strašidelné správy. 38 00:01:58,120 --> 00:02:02,130 Si uvedomiť, že pracovný čas navrhnúť a ako sekcia naznačujú, 39 00:02:02,130 --> 00:02:05,110 Konštrukcia predmetu je veľmi veľa sa študenti spolupracujú a 40 00:02:05,110 --> 00:02:09,250 hovorí k práci problémových súborov a problémy spoločne. 41 00:02:09,250 --> 00:02:13,630 A naozaj linka práve prichádza do, opäť, práca, ktorú nakoniec 42 00:02:13,630 --> 00:02:16,420 by mal predložiť by mal byť váš vlastný. 43 00:02:16,420 --> 00:02:19,080 A tak je to, úplne úprimne - v úradných hodinách, je to úplne normálne - 44 00:02:19,080 --> 00:02:21,560 je to úplne očakávať, dokonca - na chatovanie s niektorými 45 00:02:21,560 --> 00:02:22,370 priatelia vedľa vás. 46 00:02:22,370 --> 00:02:25,240 Ak on alebo ona sa stretáva s nejakým témou, a ty si ako, oh, hlboko 47 00:02:25,240 --> 00:02:27,750 mi, aby som vám pohľad niektorých riadok kódu, ktorý som napísal. 48 00:02:27,750 --> 00:02:28,290 To je v poriadku. 49 00:02:28,290 --> 00:02:28,700 To sa stáva. 50 00:02:28,700 --> 00:02:31,580 A to je veľmi priaznivé, myslím, s procesom učenia. 51 00:02:31,580 --> 00:02:35,270 Ak line, opäť dostane prešiel je, keď hlava je trochu naklonil nad 52 00:02:35,270 --> 00:02:38,800 tu príliš veľa sekúnd alebo minút pre ktoré naozaj majú len 53 00:02:38,800 --> 00:02:41,250 bol odblokovanie príležitosť pre svojho priateľa. 54 00:02:41,250 --> 00:02:43,870 A iste, keď sa veci vymieňajú prostredníctvom e-mailu a Dropbox a 55 00:02:43,870 --> 00:02:45,350 ako, aj tu je rad. 56 00:02:45,350 --> 00:02:48,940 Takže v každom prípade, cítiť pohodlne a cítiť povzbudení k chatovať s priateľmi 57 00:02:48,940 --> 00:02:51,270 a spolužiaci o psets a ďalšie. 58 00:02:51,270 --> 00:02:54,680 A len uvedomiť, že to, čo si nakoniec že by mali byť naozaj 59 00:02:54,680 --> 00:02:57,780 produkt vašej tvorby a nie niekto iný. 60 00:02:57,780 --> 00:03:01,010 >> Takže v rovnakom štýle plyšové stvorenia, môžete 61 00:03:01,010 --> 00:03:02,820 viete o tom chlapovi tu. 62 00:03:02,820 --> 00:03:06,180 Tak toto je desivo gýčovité film z rokov. 63 00:03:06,180 --> 00:03:08,680 Každý, kto sem videl Spaceballs? 64 00:03:08,680 --> 00:03:09,120 Dobrá. 65 00:03:09,120 --> 00:03:10,220 Tak dobré číslo tu. 66 00:03:10,220 --> 00:03:13,840 Tak toto je naša úžasne akademický spôsob zavádzania dnes nakoniec 67 00:03:13,840 --> 00:03:15,130 pojem kryptografie. 68 00:03:15,130 --> 00:03:19,010 A tak jeden z problémov domény špecifické pre PSet 2, ktorá príde 69 00:03:19,010 --> 00:03:22,770 z neskorej zajtra večer, je ponoriť sa do sveta kryptografie, ktorá 70 00:03:22,770 --> 00:03:26,380 je umenie šifrovanie alebo kódovanie informácií. 71 00:03:26,380 --> 00:03:30,160 A to nakoniec týka svete bezpečnosti. 72 00:03:30,160 --> 00:03:34,440 >> Teraz zabezpečenia pre väčšinu nás prichádza v podobe pomerne svetských mechanizmov. 73 00:03:34,440 --> 00:03:36,920 Každý z nás má používateľské mená a heslá. 74 00:03:36,920 --> 00:03:41,350 A každý z nás má veľmi zlé používateľské mená a heslá, s najväčšou pravdepodobnosťou. 75 00:03:41,350 --> 00:03:45,250 Ak je heslo rovnaké na niekoľkých webových stránkach, že to asi nie je 76 00:03:45,250 --> 00:03:47,920 najlepší nápad, ako budeme diskutovať na semester konci. 77 00:03:47,920 --> 00:03:51,680 Ak heslo je napísané na lepiacej poznámku - nie je vtip - na vašom 78 00:03:51,680 --> 00:03:55,130 monitor, to tiež nemusí byť nutne najlepší dizajn, ale celkom obyčajný 79 00:03:55,130 --> 00:03:56,140 jav. 80 00:03:56,140 --> 00:04:00,420 A ak si nie ste s použitím kryptografie na šifrovanie hesiel, ktoré sú 81 00:04:00,420 --> 00:04:01,610 obzvlášť zraniteľné. 82 00:04:01,610 --> 00:04:04,670 Takže ak si myslíte, že ste bol výborný múdra majúci skrytú Word 83 00:04:04,670 --> 00:04:07,740 dokumentu niekde na pevnom disku, ktorý má všetky vaše heslá, ale 84 00:04:07,740 --> 00:04:10,550 je to v priečinku, ktorá nikto to bude vyzerať v, že tiež nie je moc 85 00:04:10,550 --> 00:04:11,540 bezpečný mechanizmus. 86 00:04:11,540 --> 00:04:15,100 A tak to, čo Pset 2 sa predstaví, je to umenie kryptografie a 87 00:04:15,100 --> 00:04:18,300 zakódovanie informácie, takže veci ako heslá sú 88 00:04:18,300 --> 00:04:19,500 všetky bezpečnejšie. 89 00:04:19,500 --> 00:04:24,500 Tak, aby motivoval tento veľmi reálne problém s veľmi non-real-world 90 00:04:24,500 --> 00:04:28,740 scenár, dovoľte mi, aby som vám predstavil jednu z našich obľúbených klipov sem z toho 91 00:04:28,740 --> 00:04:29,895 film, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [PREHRÁVANIE] 93 00:04:30,565 --> 00:04:32,995 -Prilba, môžete zloduch, čo sa deje? 94 00:04:32,995 --> 00:04:34,730 Čo robíte s mojou dcérou? 95 00:04:34,730 --> 00:04:38,960 -Dovoľte, aby som vám predstavil brilantný mladý plastického chirurga, Dr Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin, najväčší nosa muž v celej 97 00:04:43,290 --> 00:04:45,526 vesmír a Beverly Hills. 98 00:04:45,526 --> 00:04:46,450 -Vaše Výsosti. 99 00:04:46,450 --> 00:04:47,380 -Nose práce? 100 00:04:47,380 --> 00:04:48,035 Nerozumiem. 101 00:04:48,035 --> 00:04:49,480 Už mala na nose. 102 00:04:49,480 --> 00:04:51,490 Bolo to sladké 16 prítomná. 103 00:04:51,490 --> 00:04:53,090 -Nie, to nie je to, čo si myslíte. 104 00:04:53,090 --> 00:04:55,150 Je to oveľa, oveľa horšie. 105 00:04:55,150 --> 00:04:59,860 Ak mi nedáš kombinácii s tienením ovzdušia, bude Dr Schlotkin 106 00:04:59,860 --> 00:05:04,135 dať svoju dcéru späť svoj starý nos. 107 00:05:04,135 --> 00:05:05,385 -Nie! 108 00:05:08,202 --> 00:05:10,186 Kde si to vzal? 109 00:05:10,186 --> 00:05:11,178 -Dobre. 110 00:05:11,178 --> 00:05:11,674 Poviem. 111 00:05:11,674 --> 00:05:12,666 Poviem. 112 00:05:12,666 --> 00:05:14,154 -Nie, ocko, no. 113 00:05:14,154 --> 00:05:15,150 Nesmiete. 114 00:05:15,150 --> 00:05:16,460 -Ty si pravdu, má drahá. 115 00:05:16,460 --> 00:05:18,450 Bude sa mi cnieť si nový nos. 116 00:05:18,450 --> 00:05:21,550 Ale ja vám nepoviem im kombinácie bez ohľadu na to, čo. 117 00:05:21,550 --> 00:05:23,100 -Veľmi dobre. 118 00:05:23,100 --> 00:05:25,510 Dr Schlotkin, urobiť si najhoršie. 119 00:05:25,510 --> 00:05:26,760 -Rado sa stalo. 120 00:05:30,560 --> 00:05:31,180 -Nie! 121 00:05:31,180 --> 00:05:33,450 Počkať, počkať. 122 00:05:33,450 --> 00:05:34,770 Poviem. 123 00:05:34,770 --> 00:05:36,400 Poviem. 124 00:05:36,400 --> 00:05:38,630 -Vedel som, že to bude fungovať. 125 00:05:38,630 --> 00:05:42,040 Dobre, daj mi to. 126 00:05:42,040 --> 00:05:46,890 -Kombinácia je jedna. 127 00:05:46,890 --> 00:05:47,290 -One. 128 00:05:47,290 --> 00:05:48,183 -One. 129 00:05:48,183 --> 00:05:48,950 -Two. 130 00:05:48,950 --> 00:05:49,370 -Two. 131 00:05:49,370 --> 00:05:50,450 -Two. 132 00:05:50,450 --> 00:05:50,715 -Tri 133 00:05:50,715 --> 00:05:51,380 -Tri. 134 00:05:51,380 --> 00:05:52,390 -Tri. 135 00:05:52,390 --> 00:05:53,200 -Four. 136 00:05:53,200 --> 00:05:53,720 -Four. 137 00:05:53,720 --> 00:05:55,830 -Four. 138 00:05:55,830 --> 00:05:56,580 -Five 139 00:05:56,580 --> 00:05:57,120 -Five. 140 00:05:57,120 --> 00:05:58,560 -Five. 141 00:05:58,560 --> 00:06:03,770 -Takže kombinácia je jeden, dva, tri, štyri, päť. 142 00:06:03,770 --> 00:06:06,745 To je nejblbější kombinácia, akú som kedy v živote počul. 143 00:06:06,745 --> 00:06:09,290 To je ten druh vecí, idiot bude mať na jeho batožine. 144 00:06:09,290 --> 00:06:11,540 -Ďakujem vám, Vaša Výsosť. 145 00:06:11,540 --> 00:06:12,940 -Čo si urobil? 146 00:06:12,940 --> 00:06:14,230 -Vypol som múru. 147 00:06:14,230 --> 00:06:14,630 -Nie, to nie. 148 00:06:14,630 --> 00:06:15,430 Vypnete celý film. 149 00:06:15,430 --> 00:06:16,722 -Musel som stlačil zlé tlačidlo. 150 00:06:16,722 --> 00:06:18,078 -No, dal ju späť. 151 00:06:18,078 --> 00:06:18,805 Dajte film späť. 152 00:06:18,805 --> 00:06:19,080 -Áno, pane. 153 00:06:19,080 --> 00:06:19,270 Áno, pane. 154 00:06:19,270 --> 00:06:19,830 -Poďme, Erna. 155 00:06:19,830 --> 00:06:20,270 Poď, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Samozrejme, že viem, že budem ešte musieť účtovať vám za to. 157 00:06:27,400 --> 00:06:28,325 -No, fungovalo to? 158 00:06:28,325 --> 00:06:29,550 Kde je brána? 159 00:06:29,550 --> 00:06:29,910 -To fungovalo, pane. 160 00:06:29,910 --> 00:06:30,770 Máme kombináciu. 161 00:06:30,770 --> 00:06:31,390 -Veľká. 162 00:06:31,390 --> 00:06:35,630 Teraz môžeme vziať aj tú poslednú závan čerstvého vzduchu z planéty Druidia. 163 00:06:35,630 --> 00:06:36,550 Čo je to kombinácia? 164 00:06:36,550 --> 00:06:38,805 -Jedna, dve, tri, štyri, päť. 165 00:06:38,805 --> 00:06:40,610 -Jedna, dve, tri, štyri, päť? 166 00:06:40,610 --> 00:06:41,070 -Áno. 167 00:06:41,070 --> 00:06:41,760 -To je úžasné. 168 00:06:41,760 --> 00:06:45,200 Mám rovnakú kombináciu na mojom batožine. 169 00:06:45,200 --> 00:06:47,800 Pripravte Spaceball 1 k okamžitému odletu. 170 00:06:47,800 --> 00:06:48,536 -Áno, pane. 171 00:06:48,536 --> 00:06:52,350 -A zmeniť kombináciu na mojej batožiny. 172 00:06:52,350 --> 00:06:53,250 -Au! 173 00:06:53,250 --> 00:06:55,020 [END videoprehrávanie] 174 00:06:55,020 --> 00:06:57,470 >> DAVID J. Malan: úžasné film, ktorý by mal teraz všetci vidia. 175 00:07:00,600 --> 00:07:06,540 Takže súvislosti je, že s nezabezpečenými údaje pochádza príležitosť 176 00:07:06,540 --> 00:07:07,790 zašifrovať a škriabať ho. 177 00:07:07,790 --> 00:07:11,060 A tak to, napríklad, je príklad šifrované správe. 178 00:07:11,060 --> 00:07:12,980 To vlastne hovorí, že niečo v angličtine. 179 00:07:12,980 --> 00:07:14,750 Ale to zjavne nie je úplne zrejmé. 180 00:07:14,750 --> 00:07:17,360 A my prídeme kruh dnes šprýmař oddelene, čo to tajné 181 00:07:17,360 --> 00:07:18,380 správa je tu. 182 00:07:18,380 --> 00:07:22,370 Ale v reálnom svete počítačov, veci sa ani nepozrel, ako by mohli 183 00:07:22,370 --> 00:07:23,440 byť anglických fráz. 184 00:07:23,440 --> 00:07:27,500 Napríklad, to je to, čo môžete nájsť na štandardného Linux alebo Mac alebo 185 00:07:27,500 --> 00:07:32,080 Unix počítač v súbore, ktorý bol kedysi nazývaný súbor s heslami. 186 00:07:32,080 --> 00:07:34,170 V súčasnej dobe, je to už sa sťahoval do iných miest. 187 00:07:34,170 --> 00:07:38,660 Ale keď sa pozriete na správnom mieste v systéme, uvidíte nielen svoj 188 00:07:38,660 --> 00:07:41,430 meno alebo iných ľudí na systéme, ale uvidíte, 189 00:07:41,430 --> 00:07:43,410 šifrovaná verzia svoje heslo. 190 00:07:43,410 --> 00:07:47,800 Naozaj, slovo krypta sa navrhuje, aby nasledujúce veci sú šifrované. 191 00:07:47,800 --> 00:07:52,030 A táto séria zdanlivo náhodných písmen a znakov a čísel a 192 00:07:52,030 --> 00:07:56,370 atď možno dešifrovať iba všeobecne poznať nejaké tajomstvo - 193 00:07:56,370 --> 00:07:58,600 Tajné slovo, tajné číslo. 194 00:07:58,600 --> 00:08:02,760 A tak skutočne, umenie kryptografia v konečnom dôsledku sa scvrkáva veriť niektorých 195 00:08:02,760 --> 00:08:05,700 triedenie a vedel niečo, čo niekto iný nemá. 196 00:08:05,700 --> 00:08:10,010 Budeme skúmať to v trochu podrobnejšie dnes v PSet prísť. 197 00:08:10,010 --> 00:08:11,860 >> A teraz slovo na Pass / Fail. 198 00:08:11,860 --> 00:08:15,250 Tak predovšetkým, ako niektorí z vás sa ponorila do PSet 1, spotrebič, a 199 00:08:15,250 --> 00:08:18,390 úplne nový svet pre seba, si uvedomil, že frustrácia a 200 00:08:18,390 --> 00:08:21,340 zmätenosť a len technické problémy sa dajú očakávať. 201 00:08:21,340 --> 00:08:24,410 Najmä s prvým Pset, kde je to proste tak moc nového, len na to, 202 00:08:24,410 --> 00:08:28,830 oboznámení s ls a cd a všetkých týchto tajomných príkazov v novom prostredí. 203 00:08:28,830 --> 00:08:32,679 A to je oddelený od skutočného materiálu a programovanie sám. 204 00:08:32,679 --> 00:08:35,960 Takže si uvedomiť, tiež to, že tam sú určite úradné hodiny, ktoré existujú ako 205 00:08:35,960 --> 00:08:36,770 nosná konštrukcia. 206 00:08:36,770 --> 00:08:38,620 Sekcia začať tento rok v nedeľu. 207 00:08:38,620 --> 00:08:41,990 Ale čo je najdôležitejšie, ak máte pocit, proste, že to nie je 208 00:08:41,990 --> 00:08:44,420 svet pre teba, si uvedomiť, že je to naozaj len nejakú dobu trvať. 209 00:08:44,420 --> 00:08:47,520 A bol to nie pre túto príležitosť pred rokmi pre mňa vezme triedu 210 00:08:47,520 --> 00:08:50,840 vyhovel / nevyhovel, úprimne, nikdy by som si dokonca nastaviť nohu v triede. 211 00:08:50,840 --> 00:08:53,520 A môžete zmeniť až do, povedzme, piaty pondelok v kurze. 212 00:08:53,520 --> 00:08:57,110 Takže ak ste na okraji teraz si uvedomiť, že skôr než hlavu do inej 213 00:08:57,110 --> 00:09:01,000 Vody úplne, to určite zvážte len zmenou na prijatie / odmietnutie. 214 00:09:01,000 --> 00:09:03,750 Opäť platí, že to nie je naozaj to kultúra tu na Harvarde branie vecí 215 00:09:03,750 --> 00:09:08,080 vyhovel / nevyhovel, pretože každý chce naozaj dosiahnuť lepšie výsledky, alebo. 216 00:09:08,080 --> 00:09:11,470 Ale úprimne povedané, je to skvelý spôsob, ako sa snaží niečo, že možno nie 217 00:09:11,470 --> 00:09:13,110 byť oboznámení s vami. 218 00:09:13,110 --> 00:09:17,090 A ty skončíš robiť vo väčšine prípadov celkom dobre, možno 219 00:09:17,090 --> 00:09:18,040 veľa k prekvapeniu. 220 00:09:18,040 --> 00:09:20,850 A v Konkrétnejšie, čo si myslím, vyhovel / nevyhovel všeobecne robí, 221 00:09:20,850 --> 00:09:23,350 najmä ak ste si mohli skúsenosti s PSet 0, ak ste dal 222 00:09:23,350 --> 00:09:27,200 v 10 hodín, 15 hodín, 25 hodín do niektorých PSet - a ty si len búchanie 223 00:09:27,200 --> 00:09:28,180 vaša hlava proti múru, 224 00:09:28,180 --> 00:09:29,850 a je to stále výborný neskoro v noci, 225 00:09:29,850 --> 00:09:31,880 ale vy ste vzali PSet ako 90% z cesty, 226 00:09:31,880 --> 00:09:33,780 viete, že jednoducho nemôže prísť na jednu vec - 227 00:09:33,780 --> 00:09:36,830 vyhovel / nevyhovel naozaj berie zmiernilo triedy ako je táto, kde si môžete radiť 228 00:09:36,830 --> 00:09:39,150 z šťastne hovorí jo, ja viem, že to nie je dokonalé. 229 00:09:39,150 --> 00:09:40,470 Ale ja pracoval som prdel na to. 230 00:09:40,470 --> 00:09:42,410 Som celkom spokojný s tým, kde to skončilo. 231 00:09:42,410 --> 00:09:44,780 A že bude spĺňať očakávania vyhovuje / nevyhovuje. 232 00:09:44,780 --> 00:09:46,850 Takže sa majte na pamäti, že. 233 00:09:46,850 --> 00:09:47,140 >> Dobrá. 234 00:09:47,140 --> 00:09:50,980 Takže tí z vás, ktorí sa usilovne snažia využiť Harvardskú univerzitu Wi-Fi vedieť 235 00:09:50,980 --> 00:09:54,780 že je CS50 SSID, Wi-Fi pripojenie sa vznáša, že ste 236 00:09:54,780 --> 00:09:56,520 môže mať väčšie šťastie pre. 237 00:09:56,520 --> 00:09:59,430 Je to trochu paradoxné, že heslo pre toto - ak by ste chceli vyskúšať 238 00:09:59,430 --> 00:10:03,080 pripojenie k to pre lepšiu rýchlosť a dajte nám vedieť, pokiaľ to nie je lepšie - 239 00:10:03,080 --> 00:10:09,240 je jeden, dva, tri, štyri, päť, celú cestu až na osem, pretože osem je 240 00:10:09,240 --> 00:10:10,270 bezpečnejšie ako päť. 241 00:10:10,270 --> 00:10:15,520 Takže ak potrebujete Wi-Fi hesla, pripojiť sa k CS50 bezdrôtovo tu. 242 00:10:15,520 --> 00:10:16,950 Jedna, dva, tri, štyri, päť, šesť, sedem, osem. 243 00:10:16,950 --> 00:10:20,440 A príspevok na CS50 Diskutovať ak máte stále prerušované problémy s pripojením, 244 00:10:20,440 --> 00:10:24,880 a necháme právomoci, ktoré budú poznať pre tento priestor. 245 00:10:24,880 --> 00:10:25,180 >> Dobrá. 246 00:10:25,180 --> 00:10:30,350 Tak rýchly teaser, najmä pre tých z vás, ktorí sú ventilátor chlapcov a dievčat 247 00:10:30,350 --> 00:10:31,900 všetkých vecí Apple. 248 00:10:31,900 --> 00:10:37,566 To, čo som vyhrabal z niekoľko rokov späť bola tento súbor tu, ilock.c, len 249 00:10:37,566 --> 00:10:40,930 druh urobiť konkrétnejšie a zložitejšie niektoré z viac základných C 250 00:10:40,930 --> 00:10:42,350 programy sme písali. 251 00:10:42,350 --> 00:10:44,360 Tak som otvoril tento súbor, ilock.c. 252 00:10:44,360 --> 00:10:46,830 Je k dispozícii na prednášky stránke pre dnešok. 253 00:10:46,830 --> 00:10:49,470 Na ľavej strane, uvidíte dlhý zoznam funkcií. 254 00:10:49,470 --> 00:10:51,860 Takže ten chlapík, ktorý napísal tento spísal mnoho funkcií, 255 00:10:51,860 --> 00:10:53,290 viac ako len hlavná. 256 00:10:53,290 --> 00:10:55,490 Použil veľa knižníc tu. 257 00:10:55,490 --> 00:11:00,450 A ak začneme rolovanie, čo to vlastne je, je veľmi 258 00:11:00,450 --> 00:11:04,670 najprv, ja verím, bezva pre pôvodný iPhone. 259 00:11:04,670 --> 00:11:08,000 Ak by ste chceli, aby útek z väzenia pôvodnej iPhone, čo znamená, že untether 260 00:11:08,000 --> 00:11:11,800 to z AT & T a skutočne nainštalovať špeciálny softvér na neho a robiť veci, 261 00:11:11,800 --> 00:11:13,510 že Apple nechcel, aby ľudia mohli - 262 00:11:13,510 --> 00:11:17,020 dobre, niekto vzal čas, aby zistili, ako presne by mohol zneužiť 263 00:11:17,020 --> 00:11:20,880 softvér chyby, omyly, chyby, v softvéru Apple. 264 00:11:20,880 --> 00:11:22,650 A tak sa narodil ilock.c. 265 00:11:22,650 --> 00:11:26,670 Že ak zostavujú ho na počítači ho a nainštaloval na iPhone tejto 266 00:11:26,670 --> 00:11:29,810 bol pripojený k počítaču prostredníctvom, povedzme, USB kábel, by to vám 267 00:11:29,810 --> 00:11:33,360 administratívne alebo root oprávnenia na vašom iPhone a nechať si urobiť celkom veľa 268 00:11:33,360 --> 00:11:34,170 čo chcete. 269 00:11:34,170 --> 00:11:36,740 >> A tak tam bolo to fascinujúce hra na mačku a myš medzi Apple a 270 00:11:36,740 --> 00:11:39,920 zvyšok sveta, najmä ako oni, rovnako ako mnoho firiem, v snahe zaistiť 271 00:11:39,920 --> 00:11:43,220 ich veci dole tak, aby si môžete robiť len s tým, čo majú v úmysle. 272 00:11:43,220 --> 00:11:46,620 Ale vďaka ľuďom, ako je tento a ich chápanie low-level 273 00:11:46,620 --> 00:11:50,580 detaily a, v tomto prípade, C programovanie a veľa známych konštruktov 274 00:11:50,580 --> 00:11:54,630 že sme začali hrať s, ste schopní skutočne využívajú 275 00:11:54,630 --> 00:11:59,050 hardvér v spôsobe vidíte fit a nie nutne nejaký právnickej osoby. 276 00:11:59,050 --> 00:12:01,360 Tak napríklad, nemám tušenie, čo to robí. 277 00:12:01,360 --> 00:12:03,220 Ale getVersion znie celkom jednoduché. 278 00:12:03,220 --> 00:12:05,480 A vyzerá to, že je to funkcia, ktorá táto osoba napísala. 279 00:12:05,480 --> 00:12:09,240 Vezmite nejaký integer ako argument, nič nevracia, ale 280 00:12:09,240 --> 00:12:13,080 Zdá sa, slučky s pre slučky tu a ak stave, ak podmienka, 281 00:12:13,080 --> 00:12:15,620 zlomiť, a nejako súvisí s číslom verzie. 282 00:12:15,620 --> 00:12:16,700 Ak by sme posunúť dole - 283 00:12:16,700 --> 00:12:19,570 aj keď veľa z týchto kľúčových slov sa bude nové, a tam je 284 00:12:19,570 --> 00:12:22,590 veľa funkcií v tú sme nikdy nevideli a možno už nikdy vidieť cez 285 00:12:22,590 --> 00:12:23,830 priebeh semestra - 286 00:12:23,830 --> 00:12:27,150 na konci dňa, to sa riadi rovnakými pravidlami a logiku, že sme boli 287 00:12:27,150 --> 00:12:28,760 hrať s tak ďaleko. 288 00:12:28,760 --> 00:12:34,220 Tak toto je príliš starý na to bezva váš iPhone 3s alebo 4s alebo 5s čoskoro, v týchto dňoch, 289 00:12:34,220 --> 00:12:37,320 ale viem, že je to všetko moc pochádza z tohto sveta, že máme 290 00:12:37,320 --> 00:12:38,430 skočil do. 291 00:12:38,430 --> 00:12:41,900 >> Takže poďme sa pozrieť na trochu jednoduchý príklad. 292 00:12:41,900 --> 00:12:46,100 Tento, len preto, aby si ohriať nejakú syntaxou a tiež niektoré ďalšie údaje 293 00:12:46,100 --> 00:12:49,240 typ, ktorý sme hovorili o ale naozaj vidieť v C. Tak toto je 294 00:12:49,240 --> 00:12:51,680 súbor s názvom positive1.c. 295 00:12:51,680 --> 00:12:55,120 A za pripomienky v hornej, to len vyžaduje, aby používateľ zaistiť 296 00:12:55,120 --> 00:12:55,960 kladné číslo. 297 00:12:55,960 --> 00:12:59,530 Takže je to príklad do-while, čo je pekné pre užívateľa-interactive 298 00:12:59,530 --> 00:13:01,980 programy, kde potrebujete oznámiť užívateľovi, aby niečo urobiť. 299 00:13:01,980 --> 00:13:05,190 A v prípade, že nebudete spolupracovať, ste kričať na ne, alebo odmietnuť ich vstup. 300 00:13:05,190 --> 00:13:11,610 Názorný príklad, budem robiť linky 19 až 24 tak dlho, kým má používateľ 301 00:13:11,610 --> 00:13:14,310 mi nedal kladné číslo. 302 00:13:14,310 --> 00:13:20,400 Teraz tento detail tu na riadku 18, prečo prehlasujem n nad to celé 303 00:13:20,400 --> 00:13:24,490 opakovanie konštrukcia oproti hneď vedľa riadku 22, kde som 304 00:13:24,490 --> 00:13:26,880 vlastne jedno, dostať n? 305 00:13:26,880 --> 00:13:27,330 Jo? 306 00:13:27,330 --> 00:13:27,780 [Nepočuteľné] 307 00:13:27,780 --> 00:13:29,040 >> DAVID J. Malan: Jo, tak to otázka rozsahu. 308 00:13:29,040 --> 00:13:30,850 A v laického hľadiska, čo sa rozsahu týka? 309 00:13:34,690 --> 00:13:36,610 Jo? 310 00:13:36,610 --> 00:13:37,860 [Nepočuteľné] 311 00:13:40,040 --> 00:13:41,105 DAVID J. Malan: Môžeš hovoriť trochu hlasnejšie? 312 00:13:41,105 --> 00:13:43,450 SPEAKER 1: Kde máte prístup k danej premennej. 313 00:13:43,450 --> 00:13:45,170 DAVID J. Malan: Perfect. 314 00:13:45,170 --> 00:13:47,360 Kde môžete získať prístup k danej premennej. 315 00:13:47,360 --> 00:13:50,400 A všeobecne, pravidlo bolo doteraz, že rozsah pôsobnosti niektorých 316 00:13:50,400 --> 00:13:55,860 premenná je definovaná v najnovších zložených zátvoriek, ktoré ste videli. 317 00:13:55,860 --> 00:14:02,010 A tak v tomto prípade, keď som urobil chybu deklarovať n on-line 22, 318 00:14:02,010 --> 00:14:03,010 že linka bude fungovať. 319 00:14:03,010 --> 00:14:10,990 Ja by som si int, a ja by som dal to do tej premennej n v súlade 22. 320 00:14:10,990 --> 00:14:16,900 Ale ktorý riadok kódu by teraz netuším, čo hovorím? 321 00:14:16,900 --> 00:14:22,650 Tak 25, a ukázalo sa, 24, a tiež, pretože v tomto prípade, nespadá 322 00:14:22,650 --> 00:14:23,610 z zložených zátvoriek. 323 00:14:23,610 --> 00:14:27,280 Takže len trochu na obtiaž, ale veľmi ľahko vyriešiť tým, že jednoducho vyhlásením 324 00:14:27,280 --> 00:14:30,140 premenná mimo funkciu samotnej. 325 00:14:30,140 --> 00:14:32,600 >> Teraz uvidíme, ešte dnes, môžete ísť ešte o krok ďalej. 326 00:14:32,600 --> 00:14:34,860 A môžete dokonca dostať trochu lenivý - 327 00:14:34,860 --> 00:14:37,320 a to nie je možné odporučiť, všeobecne - 328 00:14:37,320 --> 00:14:42,260 ale mohli ste dokonca leniví a dať premennú globálne, aby som tak povedal, nie 329 00:14:42,260 --> 00:14:46,670 vnútri funkcie, nie sú vo vnútri slučky, ale v samotnom súbore, mimo 330 00:14:46,670 --> 00:14:49,600 všetkých funkcií, ktoré ste napísal, ako som to urobil tu na linke 15. 331 00:14:49,600 --> 00:14:51,160 Ale to je všeobecne odsudzovaný. 332 00:14:51,160 --> 00:14:55,680 Ale uvedomiť to je riešenie niekedy iné problémy, ako budem 333 00:14:55,680 --> 00:14:56,620 nakoniec vidieť. 334 00:14:56,620 --> 00:14:58,130 Takže teraz, necháme to takto. 335 00:14:58,130 --> 00:15:01,030 Ale uvidíme, či môžeme prepísať to len začať vyjadrovať sami 336 00:15:01,030 --> 00:15:01,990 trochu inak. 337 00:15:01,990 --> 00:15:05,330 >> Takže tento program, len aby bolo jasno, je positive1. 338 00:15:05,330 --> 00:15:11,810 Nechaj ma ísť napred tu a vo svojom terminálovom okne, aby positive1, Enter. 339 00:15:11,810 --> 00:15:12,740 Zostavuje, v poriadku. 340 00:15:12,740 --> 00:15:14,910 Chystám sa spustiť positive1, stlačte klávesu Enter. 341 00:15:14,910 --> 00:15:16,820 Žiadam, aby ste mi celé kladné číslo. 342 00:15:16,820 --> 00:15:18,260 Poviem -1. 343 00:15:18,260 --> 00:15:18,910 To nefungovalo. 344 00:15:18,910 --> 00:15:22,150 0, 99, to vyzerá, že funguje. 345 00:15:22,150 --> 00:15:23,570 Možno nie najprísnejšie test. 346 00:15:23,570 --> 00:15:26,480 Ale aspoň je to pekné sanity kontrola, či sme na správnej ceste. 347 00:15:26,480 --> 00:15:29,240 Takže teraz ma nechaj ísť dopredu a otvorte verzii dvaja z tohto. 348 00:15:29,240 --> 00:15:32,500 A čo je odlišné už? 349 00:15:32,500 --> 00:15:35,140 To sa robí to isté. 350 00:15:35,140 --> 00:15:40,660 Ale čo skáče tak, ako je zreteľne iný tentoraz? 351 00:15:40,660 --> 00:15:42,560 Jo, tak to bool zelene. 352 00:15:42,560 --> 00:15:45,980 Gedit je zdôraznené v zelenom tohto kľúčového slova známe ako bool, 353 00:15:45,980 --> 00:15:47,000 ktorá je dátový typ. 354 00:15:47,000 --> 00:15:51,080 To nie je to, postavený v roku pre všetky verzie C. Musíte zahrnúť 355 00:15:51,080 --> 00:15:52,010 konkrétne knižnice. 356 00:15:52,010 --> 00:15:54,770 V našom prípade, som zahrnul CS50 knižnicu tak, že sme 357 00:15:54,770 --> 00:15:56,460 majú prístup k bool. 358 00:15:56,460 --> 00:15:59,810 Ale v riadku 18, sa zdá, že majú logickú hodnotu tu nazýva vďačný. 359 00:15:59,810 --> 00:16:01,040 Takže som mohla zavolať to niečo. 360 00:16:01,040 --> 00:16:04,500 Ale ja to nazval vďačný len trochu sprostredkovať nejaký sémantický význam. 361 00:16:04,500 --> 00:16:07,930 Tak spočiatku na linke 18, nie som zrejme vďačný, pretože 362 00:16:07,930 --> 00:16:12,150 Logická hodnota vďačný je inicializovaný na hodnotu false v riadku 18. 363 00:16:12,150 --> 00:16:16,890 A potom sa zdá, to, čo som tu urobil v riadkoch 21 až 23 je, že som práve 364 00:16:16,890 --> 00:16:18,610 druh prepísaný môj logiku. 365 00:16:18,610 --> 00:16:21,020 Takže nie funkčne odlišné. 366 00:16:21,020 --> 00:16:26,940 Ale v riadku 22, už som či int užívateľ predpokladu je väčšia ako 367 00:16:26,940 --> 00:16:31,120 0, potom som jednoducho zmeniť hodnotu vďačný true. 368 00:16:31,120 --> 00:16:32,290 A prečo som to urobil? 369 00:16:32,290 --> 00:16:35,600 Vzhľadom k tomu, v súlade 25, zdá sa, že budem kontrolovať stav. 370 00:16:35,600 --> 00:16:39,380 Do tejto slučky, zatiaľ čo vďačná je false. 371 00:16:39,380 --> 00:16:43,610 >> Takže navrhujem to ako alternatíva k variante jedna, pretože je to aspoň 372 00:16:43,610 --> 00:16:45,130 trochu viac intuitívne, snáď. 373 00:16:45,130 --> 00:16:46,900 Je to trochu viac uzemnený v angličtine. 374 00:16:46,900 --> 00:16:51,710 Takže urobte nasledovné, keď nie ste vďační, alebo keď vďačný je false. 375 00:16:51,710 --> 00:16:55,890 A tentoraz, taky som zrejme nezaujíma spomenúť, čo užívateľ napísal 376 00:16:55,890 --> 00:16:57,730 v oznámení, pretože tam žiadna premenná n 377 00:16:57,730 --> 00:16:58,650 Takže vlastne, I - 378 00:16:58,650 --> 00:17:00,080 malá biela lož tam. 379 00:17:00,080 --> 00:17:02,770 Funkčne, program je trochu iný, akonáhle sa dostaneme na dno 380 00:17:02,770 --> 00:17:04,819 to preto, že nie som si spomenul, čo n je. 381 00:17:04,819 --> 00:17:09,579 Ale ja som chcel ukázať aj tu, že aj keď sme videli GetInt a 382 00:17:09,579 --> 00:17:13,920 GetString sa používa na pravej strane znamienko rovná sa tak ďaleko, aby 383 00:17:13,920 --> 00:17:17,160 spomenuli sme si hodnotu, technicky, to nie je nevyhnutne nutné. 384 00:17:17,160 --> 00:17:20,950 Ak z nejakého dôvodu jednoducho nezaujíma uložiť hodnotu, chcete len 385 00:17:20,950 --> 00:17:25,710 kontrolovať hodnotu, zistíte, že môžeme jednoducho napísať toto ako GetInt otvorený 386 00:17:25,710 --> 00:17:27,000 parenie, úzkym párenie. 387 00:17:27,000 --> 00:17:30,460 Táto funkcia bude vracať hodnotu, ako sme hovorili. 388 00:17:30,460 --> 00:17:32,010 Bude to vám späť int. 389 00:17:32,010 --> 00:17:36,450 A tak ak ste psychicky myslíte že sa to stáva, keď píšem v 99, GetInt 390 00:17:36,450 --> 00:17:38,160 vráti číslo 99. 391 00:17:38,160 --> 00:17:41,330 A tak koncepčne, je to ako by môj kód bol v skutočnosti to. 392 00:17:41,330 --> 00:17:45,880 Takže ak 99 je naozaj väčší ako 0, potom vďačný stáva pravdou. 393 00:17:45,880 --> 00:17:50,420 Potom linka 25 si uvedomuje, ooh, už sme to urobili, lebo som teraz vďačná. 394 00:17:50,420 --> 00:17:54,590 A v súlade 26, sme jednoducho povedať, vďaka za kladné celé číslo, bez ohľadu na to 395 00:17:54,590 --> 00:17:55,710 stalo sa. 396 00:17:55,710 --> 00:17:58,900 >> Teraz sa poďme urobiť mierny syntaktickú cukor tu, aby som tak povedal. 397 00:17:58,900 --> 00:18:02,990 Poďme sa pozrieť, či sa nám podarí vyčistiť tento riadok 25 s touto treťou a poslednou rozptylu 398 00:18:02,990 --> 00:18:04,640 v positive3. 399 00:18:04,640 --> 00:18:08,250 Takže všimnete jediný rozdiel je, čo riadok kódu? 400 00:18:11,930 --> 00:18:13,260 Jo, tak 25. 401 00:18:13,260 --> 00:18:15,520 A sme naozaj videli túto trik len zatiaľ. 402 00:18:15,520 --> 00:18:19,510 Ale my sme vidieť výkričník v pondelok, čo označuje, čo? 403 00:18:19,510 --> 00:18:20,970 Takže nie, alebo negácie. 404 00:18:20,970 --> 00:18:23,460 Tak sa boolovská a otočiť jeho hodnotu. 405 00:18:23,460 --> 00:18:24,390 Pravda sa stáva false. 406 00:18:24,390 --> 00:18:25,500 False stáva pravdou. 407 00:18:25,500 --> 00:18:28,910 Takže to, navrhujem, je ešte trochu viac intuitívne spôsob, ako 408 00:18:28,910 --> 00:18:32,200 písanie kódu, pretože som stále inicializovať vďačný false. 409 00:18:32,200 --> 00:18:33,530 Stále to nasledujúce. 410 00:18:33,530 --> 00:18:35,700 Nastavil som vďačný na hodnotu true, keď príde čas. 411 00:18:35,700 --> 00:18:40,690 Ale teraz môžete naozaj len preložiť tento kód slovne zľava doprava, 412 00:18:40,690 --> 00:18:42,550 kým nie vďačná. 413 00:18:42,550 --> 00:18:46,170 Vzhľadom k tomu, bang, alebo výkričník, označuje pojem nie je, takže zatiaľ čo 414 00:18:46,170 --> 00:18:47,010 nie je vďačný. 415 00:18:47,010 --> 00:18:49,740 >> Takže znova, sme nezaviedli žiadne nové koncepty na sebe. 416 00:18:49,740 --> 00:18:53,230 Hovorili sme o tom Booleans staré, keď sme hrali s Scratch. 417 00:18:53,230 --> 00:18:55,690 Ale uvedomujem si môžeme len začať písať náš kód v 418 00:18:55,690 --> 00:18:56,550 mnohými rôznymi spôsobmi. 419 00:18:56,550 --> 00:19:00,010 Takže najmä v pset1, ak ste trochu snaží prísť na spôsob, ako 420 00:19:00,010 --> 00:19:03,400 napísať nejaký program, kurzy máte šťastie, pretože tam to bude nejaký 421 00:19:03,400 --> 00:19:05,780 počet riešení, ktoré sa môže stať pri. 422 00:19:05,780 --> 00:19:09,850 Napríklad, to je len tri aj pre najjednoduchšie programov. 423 00:19:09,850 --> 00:19:10,180 Dobrá. 424 00:19:10,180 --> 00:19:13,860 A teraz spomínam v pondelok, sme odišli na túto nôtu s návratových hodnôt. 425 00:19:13,860 --> 00:19:18,280 Takže vôbec prvýkrát, sme napísali program, ktorý nie je len mať hlavné, 426 00:19:18,280 --> 00:19:22,240 má tiež svoju vlastnú funkciu, ktorá som napísal tu. 427 00:19:22,240 --> 00:19:26,640 Takže v súlade 31 až 34, som realizovala kocky funkciu. 428 00:19:26,640 --> 00:19:27,800 Nie je to zložité. 429 00:19:27,800 --> 00:19:29,830 Je to len a časy a časy a, v tomto prípade. 430 00:19:29,830 --> 00:19:34,920 Ale čo je dôležité, na tom je, že som pri vstupe vo forme a 431 00:19:34,920 --> 00:19:38,910 Vraciam sa výstup v podobe časov a časov. 432 00:19:38,910 --> 00:19:43,940 >> Takže teraz mám možnosť, rovnako ako som sa printf sám, volať 433 00:19:43,940 --> 00:19:47,120 táto funkcia volaním kocky funkcie. 434 00:19:47,120 --> 00:19:49,470 A kocky funkcie má nejaký vstup. 435 00:19:49,470 --> 00:19:52,030 A kocky funkcia vráti nejaký výstup. 436 00:19:52,030 --> 00:19:56,660 A tak na rozdiel od, printf len niečo urobil. 437 00:19:56,660 --> 00:19:59,490 To sa nič nevracia že záležalo - aj keď, ako 438 00:19:59,490 --> 00:20:00,820 stranou, to vráti hodnotu. 439 00:20:00,820 --> 00:20:02,650 Môžete len všeobecne ignorovať. 440 00:20:02,650 --> 00:20:04,000 Printf len niečo urobil. 441 00:20:04,000 --> 00:20:06,220 To malo vedľajší účinok tlače na obrazovke. 442 00:20:06,220 --> 00:20:09,480 Naopak tu, máme kocky funkciu, ktorá 443 00:20:09,480 --> 00:20:11,400 skutočne vráti niečo. 444 00:20:11,400 --> 00:20:12,960 >> Tak to je všeobecne - 445 00:20:12,960 --> 00:20:15,260 pre tých, ktorí poznajú toto, je to pomerne jednoduché nápad. 446 00:20:15,260 --> 00:20:18,460 Ale pre tých menej oboznámení s touto myšlienkou odovzdávanie na vstupoch a získanie 447 00:20:18,460 --> 00:20:21,700 späť výstupy, skúsme len niečo super jednoduchý. 448 00:20:21,700 --> 00:20:25,180 Je niekto pohodlný prichádza na pódium krátko? 449 00:20:25,180 --> 00:20:27,460 Tie majú byť pohodlné s kamerou vy, rovnako. 450 00:20:27,460 --> 00:20:27,640 Jo. 451 00:20:27,640 --> 00:20:28,610 Dobre, Ako sa voláte? 452 00:20:28,610 --> 00:20:29,020 KEN: Ken. 453 00:20:29,020 --> 00:20:29,420 DAVID J. Malan: Ken. 454 00:20:29,420 --> 00:20:29,810 Dobre, Ken. 455 00:20:29,810 --> 00:20:31,060 Poď hore. 456 00:20:31,060 --> 00:20:34,660 Takže Ken bude funkcia druhov tu. 457 00:20:34,660 --> 00:20:35,760 A poďme ďalej a urobiť to. 458 00:20:35,760 --> 00:20:38,790 Poďme si trochu fantázie. 459 00:20:38,790 --> 00:20:39,770 Rád Vás vidím. 460 00:20:39,770 --> 00:20:41,010 Vitajte na stredu záujmu. 461 00:20:41,010 --> 00:20:41,980 Dobrá. 462 00:20:41,980 --> 00:20:45,590 Ideme na toto tlačidlo tady. 463 00:20:45,590 --> 00:20:46,420 Dobrá. 464 00:20:46,420 --> 00:20:49,490 Tak tu máte moderný tabuľu. 465 00:20:49,490 --> 00:20:53,050 A to, čo som ich hlavné funkcie, napríklad. 466 00:20:53,050 --> 00:20:55,990 A nemám iPad v ruke. 467 00:20:55,990 --> 00:20:59,000 Nemám naozaj spomenúť, ako sa - no, vlastne, nemožno povedať, že. 468 00:20:59,000 --> 00:21:02,200 Ja naozaj nemám dobrý rukopis. 469 00:21:02,200 --> 00:21:05,260 A tak teda, chcem tlačiť niečo na obrazovke pre mňa. 470 00:21:05,260 --> 00:21:07,470 >> Takže ja som bol hlavný program. 471 00:21:07,470 --> 00:21:15,060 A ja budem mať vás povedať, napíšte v mojom kuracím nuly a 472 00:21:15,060 --> 00:21:16,600 potom odovzdá vám vstup. 473 00:21:16,600 --> 00:21:20,000 Tak ako hlúpe hoci toto cvičenie je, pojem funkcií a volanie 474 00:21:20,000 --> 00:21:22,260 funkcie a vracia funkciu naozaj scvrkáva na to. 475 00:21:22,260 --> 00:21:23,120 Ja som hlavné. 476 00:21:23,120 --> 00:21:26,270 Práve som napísal printf ("niečo") na obrazovke. 477 00:21:26,270 --> 00:21:27,470 Bežím tento program. 478 00:21:27,470 --> 00:21:30,900 A akonáhle printf volaná, trvá jeden argument - alebo jeden parameter, 479 00:21:30,900 --> 00:21:31,660 niekedy - 480 00:21:31,660 --> 00:21:32,780 medzi úvodzovkami. 481 00:21:32,780 --> 00:21:33,960 Tu je to, že argument. 482 00:21:33,960 --> 00:21:35,740 Ja odovzdaním do Ken. 483 00:21:35,740 --> 00:21:39,390 Teraz je to čierna skrinka písomnej určitý počet rokov, pred ktoré zrejme 484 00:21:39,390 --> 00:21:41,070 vie, ako tlačiť veci na obrazovke. 485 00:21:41,070 --> 00:21:42,320 >> Takže, vykonať. 486 00:21:48,842 --> 00:21:49,900 To nie je zlé. 487 00:21:49,900 --> 00:21:50,890 Takže, veľmi dobrá. 488 00:21:50,890 --> 00:21:52,900 Takže teraz Ken sa vykonáva spustením. 489 00:21:52,900 --> 00:21:55,810 Vie potrebné Podaj mi niečo späť? 490 00:21:55,810 --> 00:21:57,240 Takže nie, že sme videli doteraz. 491 00:21:57,240 --> 00:21:59,230 Opäť platí, že printf sa skutočne vráti číslo. 492 00:21:59,230 --> 00:22:01,640 Ale budeme ignorovať, že pre túto chvíľu, pretože sme nikdy používal to. 493 00:22:01,640 --> 00:22:03,400 Tak to je to pre Kena. 494 00:22:03,400 --> 00:22:06,650 A tak teraz hlavné vráti na vykonanie - 495 00:22:06,650 --> 00:22:09,630 Hlavným preberá ovládanie programu znova, pretože tento riadok kódu, 496 00:22:09,630 --> 00:22:11,010 printf, sa vykonáva spustením. 497 00:22:11,010 --> 00:22:13,890 A ideme o našej ceste vykonávajúceho akékoľvek iné linky sú tam. 498 00:22:13,890 --> 00:22:14,130 >> Dobrá. 499 00:22:14,130 --> 00:22:17,080 Takže teraz skúsme trochu iný príklad. 500 00:22:17,080 --> 00:22:22,430 A tentoraz tu, poďme sa najprv vyčistiť obrazovku tu. 501 00:22:22,430 --> 00:22:24,670 A tentoraz, budeme robiť Cubing funkciu. 502 00:22:24,670 --> 00:22:27,350 Ale tentoraz som očakávať, že výstupné hodnoty. 503 00:22:27,350 --> 00:22:28,630 Tak poďme do toho a urobiť to. 504 00:22:28,630 --> 00:22:35,680 Takže teraz mám riadok kódu, ktorý hovorí, že x = kocka (x). 505 00:22:35,680 --> 00:22:36,930 Takže vlastne rokov 's - 506 00:22:41,450 --> 00:22:43,940 riadok kódu, odvolanie, vyzerá to. 507 00:22:43,940 --> 00:22:45,960 x = kocka (x). 508 00:22:45,960 --> 00:22:48,100 Tak ako sa to bude fungovať? 509 00:22:48,100 --> 00:22:50,820 Tak poďme ďalej a dá vám bielu obrazovku znova. 510 00:22:50,820 --> 00:22:55,000 A ja sa chystám napísať hneď dole na hodnotu x, ktorá v tejto chvíli v 511 00:22:55,000 --> 00:23:01,080 čas sa stane byť, povedzme, 2, aby to jednoduché. 512 00:23:01,080 --> 00:23:04,890 Tak som napísal na kus papiera hodnota 2, 513 00:23:04,890 --> 00:23:06,100 čo je moja hodnota x. 514 00:23:06,100 --> 00:23:08,250 Podal som ju Ken. 515 00:23:08,250 --> 00:23:09,200 KEN: A ja som len napísať odpoveď? 516 00:23:09,200 --> 00:23:12,660 DAVID J. Malan: Jo, poďme stačí napísať odpoveď. 517 00:23:12,660 --> 00:23:13,030 Dobre. 518 00:23:13,030 --> 00:23:16,280 A teraz sa musí vrátiť mi niečo. 519 00:23:16,280 --> 00:23:17,560 Takže - 520 00:23:17,560 --> 00:23:18,170 perfektné. 521 00:23:18,170 --> 00:23:18,840 Pekný SEGUE. 522 00:23:18,840 --> 00:23:21,970 >> Takže teraz podá mi hodnotu 8, v tomto prípade. 523 00:23:21,970 --> 00:23:23,220 A čo s tým mám robiť? 524 00:23:23,220 --> 00:23:26,130 No, vlastne, uvidíme. 525 00:23:26,130 --> 00:23:26,640 Získať toto právo. 526 00:23:26,640 --> 00:23:27,880 Čo mám robiť s tým? 527 00:23:27,880 --> 00:23:31,900 Teraz budem brať túto hodnotu a skutočne uložiť v tých 528 00:23:31,900 --> 00:23:33,400 Rovnaké bitov v pamäti. 529 00:23:33,400 --> 00:23:35,030 Ale upozornenie, som tak trochu zápasí tu. 530 00:23:35,030 --> 00:23:38,280 Som trochu zmätený, pretože kam som vlastne písať hodnotu x? 531 00:23:38,280 --> 00:23:41,840 Vzhľadom k tomu, čo som práve urobil, je fyzicky ručne Ken kus papiera 532 00:23:41,840 --> 00:23:44,400 , Ktorá mala hodnotu 2, ktorý bol x. 533 00:23:44,400 --> 00:23:46,300 A skutočne, to je presne to, čo sa stane. 534 00:23:46,300 --> 00:23:50,100 Tak to dopadá, že pri volaní funkcie, a odovzdáte v argumente 535 00:23:50,100 --> 00:23:54,130 Páči "Hello World", alebo predáte argument ako 2, všeobecne, že ste 536 00:23:54,130 --> 00:23:56,720 odovzdaním kópie tohto argumentu. 537 00:23:56,720 --> 00:24:01,020 A tak rovnako ako som napísal číslo 2 tu a podal ju Ken, že musí byť 538 00:24:01,020 --> 00:24:04,760 znamená, že som ešte kópiu hodnoty 2 niekde. 539 00:24:04,760 --> 00:24:08,140 Pretože naozaj, teraz, že som sa dostal späť hodnotu 8, musím sa vrátiť do 540 00:24:08,140 --> 00:24:12,010 RAM a skutočne zapísať 8, kde som kedysi mal číslo 2. 541 00:24:12,010 --> 00:24:15,720 >> Takže vizuálne zapamätať si túto predstavu odovzdaním doslova 542 00:24:15,720 --> 00:24:16,730 kópie hodnoty. 543 00:24:16,730 --> 00:24:19,570 Ken robí svoju vec, podá mi niečo - v tomto prípade, 544 00:24:19,570 --> 00:24:20,820 hodnota ako 8. 545 00:24:20,820 --> 00:24:22,660 A potom som musel urobiť niečo s touto hodnotou, ak som 546 00:24:22,660 --> 00:24:24,880 Chcem, aby to okolo. 547 00:24:24,880 --> 00:24:29,470 Takže toto všetko bude až príliš dobre, než dlhý. 548 00:24:29,470 --> 00:24:33,082 Mockrát vám ďakujem za túto demo tu, Kena. 549 00:24:33,082 --> 00:24:34,820 Dobrá. 550 00:24:34,820 --> 00:24:36,720 Veľmi dobre. 551 00:24:36,720 --> 00:24:40,610 Tak uvidíme, ako to nakoniec sa vzťahuje na niektoré z funkcií 552 00:24:40,610 --> 00:24:42,270 volanie, že sme boli tu. 553 00:24:42,270 --> 00:24:47,610 Tak nechaj ma ísť napred a priviesť nás späť k Cubing napríklad tu. 554 00:24:47,610 --> 00:24:53,080 A zistíte, že ak chceme, aby skutočne začať užívať toto ďalej, budeme 555 00:24:53,080 --> 00:24:57,050 musieť dbať na to, že sa počet x, ktorá je momentálne prešiel v 556 00:24:57,050 --> 00:25:01,390 tu sa líši od toho, čo je skutočne odovzdaný do funkcie. 557 00:25:01,390 --> 00:25:03,940 Takže znovu, to prešiel kópia sa stane docela 558 00:25:03,940 --> 00:25:05,620 Germaine za chvíľu. 559 00:25:05,620 --> 00:25:09,320 >> Takže poďme sa pozrieť na niečo, čo nie je úplne správne pracovať ešte. 560 00:25:09,320 --> 00:25:11,790 Chystám sa ísť dopredu a otvorte tretiny buggy príklad, ktorý 561 00:25:11,790 --> 00:25:13,560 je postihnutý prírodou. 562 00:25:13,560 --> 00:25:18,070 A volá sa buggy3, a to implementuje vymieňať funkciu. 563 00:25:18,070 --> 00:25:23,500 Takže tu máme hlavnú funkciu, ktorá x a y ľubovoľne inicializovaný 564 00:25:23,500 --> 00:25:24,720 1 a 2, resp. 565 00:25:24,720 --> 00:25:27,590 Mohli by sme použiť GetInt, ale my jednoducho potrebujeme jednoduché cvičenie. 566 00:25:27,590 --> 00:25:29,680 Takže je to pevne ako 1 a 2. 567 00:25:29,680 --> 00:25:35,330 V riadkoch 21 a 22, my zrejme vytlačiť X a Y, jedno na riadok. 568 00:25:35,330 --> 00:25:39,620 Potom, na riadku 23, tvrdím ja vymieňať tieto hodnoty, bodka, bodka, bodka. 569 00:25:39,620 --> 00:25:43,030 Som zrejme volať funkcie v súlade s názvom 24 odkladacou 570 00:25:43,030 --> 00:25:44,000 ktorý berie dva argumenty. 571 00:25:44,000 --> 00:25:46,430 Je to úplne legitímne pre funkcie, aby sa dva argumenty. 572 00:25:46,430 --> 00:25:48,220 Videli sme printf to už. 573 00:25:48,220 --> 00:25:50,370 Takže výmena zrejme trvá x a y. 574 00:25:50,370 --> 00:25:53,010 A ako už názov napovedá, dúfam, že to bude 575 00:25:53,010 --> 00:25:54,320 zameniť tieto dve hodnoty. 576 00:25:54,320 --> 00:25:57,560 Tak som tvrdiť, on-line 25, vymenil. 577 00:25:57,560 --> 00:26:01,570 A ja dotlač x a y za predpokladu, že 578 00:26:01,570 --> 00:26:02,830 že som skutočne prehodenie. 579 00:26:02,830 --> 00:26:04,370 Ale keď som vlastne tento program spustiť - 580 00:26:04,370 --> 00:26:06,060 dovoľte mi, aby som otvoriť okno terminálu. 581 00:26:06,060 --> 00:26:07,750 Dovoľte mi, aby som buggy3. 582 00:26:07,750 --> 00:26:09,970 Ako názov napovedá, toto nie je skončí dobre. 583 00:26:09,970 --> 00:26:14,690 Pretože keď som sa Enter Všimnite si, že x je 1. 584 00:26:14,690 --> 00:26:15,720 y je 2. 585 00:26:15,720 --> 00:26:19,160 A ešte na konci programu, sú stále ešte v skutočnosti, rovnaký. 586 00:26:19,160 --> 00:26:22,760 >> Takže na základe preukázania práve s Kenom, čo sa vlastne deje? 587 00:26:22,760 --> 00:26:24,660 No, poďme sa ponoriť do tohto swapu funkcie. 588 00:26:24,660 --> 00:26:25,800 Je to super krátky. 589 00:26:25,800 --> 00:26:28,020 Je to len pár riadkov kódu dlho. 590 00:26:28,020 --> 00:26:32,810 Ale čo je to zásadný problém založený na jednoduchom príbehu povedal, 591 00:26:32,810 --> 00:26:34,270 tu s Kenom? 592 00:26:34,270 --> 00:26:36,115 Prečo je výmena chybné? 593 00:26:36,115 --> 00:26:37,365 [Nepočuteľné] 594 00:26:39,840 --> 00:26:40,460 Presne tak. 595 00:26:40,460 --> 00:26:43,610 Takže sme ukladanie na kópiu, nie je premenná sám. 596 00:26:43,610 --> 00:26:46,810 Inými slovami, swap zrejme prijíma dva argumenty, int. 597 00:26:46,810 --> 00:26:49,370 A to je ľubovoľne nazýva a b 598 00:26:49,370 --> 00:26:54,430 A tu, som prešiel v x a y, ktoré sú príslušne 1 a 2. 599 00:26:54,430 --> 00:26:56,580 Ale ja nie som doslova prechádzať v x. 600 00:26:56,580 --> 00:26:58,410 Nie som doslova prechádzať v y. 601 00:26:58,410 --> 00:27:01,230 Ja som okolo kópiu X a kópie y. 602 00:27:01,230 --> 00:27:05,180 Je to ako skoro, ako by si skopírovať a vložiť do prehodiť hodnoty, aby 603 00:27:05,180 --> 00:27:07,440 chcete, aby sa skutočne manipulovať. 604 00:27:07,440 --> 00:27:11,970 Takže ak je to ten prípad, kedy som sa, program, kto vykonávajúci 605 00:27:11,970 --> 00:27:14,140 potrubia 35, potom 36 - 606 00:27:14,140 --> 00:27:17,740 keď som si na riadku 37, v tomto bode v príbehu, čo je hodnota? 607 00:27:20,740 --> 00:27:24,850 V tomto bode príbehu, linka 37, aká je hodnota v tomto bode? 608 00:27:24,850 --> 00:27:25,980 Tak to by malo byť len 1. 609 00:27:25,980 --> 00:27:26,170 Je to tak? 610 00:27:26,170 --> 00:27:29,100 Vzhľadom k tomu, x bola odovzdaná ako prvý argument. 611 00:27:29,100 --> 00:27:33,150 A táto funkcia jednoducho svojvoľne volá svoju prvú argument,. 612 00:27:33,150 --> 00:27:35,130 Podobne je y, druhý argument. 613 00:27:35,130 --> 00:27:37,930 A je to len svojvoľne volá druhý argument b 614 00:27:37,930 --> 00:27:40,510 >> Teraz je táto dichotómia je vlastne celkom jednoduché vysvetlenie. 615 00:27:40,510 --> 00:27:40,880 Premýšľajte o tom. 616 00:27:40,880 --> 00:27:42,980 Nikto z nás sa stretol osobu, ktorá napísal printf. 617 00:27:42,980 --> 00:27:49,880 Takže určite, on alebo ona nemá tušenie, čo naše premenné o 30 rokov neskôr sa chystáte 618 00:27:49,880 --> 00:27:50,710 byť nazývaný. 619 00:27:50,710 --> 00:27:55,110 Takže tam musí byť rozdiel medzi tým, čo hovoríte premenné v 620 00:27:55,110 --> 00:27:59,960 Funkcia píšete a čo hovoríte premenné vo funkciách ktorá vás 621 00:27:59,960 --> 00:28:01,770 volanie alebo použitie. 622 00:28:01,770 --> 00:28:05,120 Takže inými slovami, napísal som svoje premenné ako x a y. 623 00:28:05,120 --> 00:28:08,060 Ale ak niekto iný písal odkladacie funkciu, on alebo ona rozhodne 624 00:28:08,060 --> 00:28:10,480 nebude vedieť, čo moje premenné sa bude nazývaný. 625 00:28:10,480 --> 00:28:13,850 So uvedomiť, že to je dôvod, prečo ste túto dualitu mien. 626 00:28:13,850 --> 00:28:16,800 Technicky, mohol by som to náhodou. 627 00:28:16,800 --> 00:28:19,750 Ale oni by ešte byť predávané ako kópia. 628 00:28:19,750 --> 00:28:22,940 Bolo by to čisto náhoda, esteticky, ak ten človek, ktorý napísal 629 00:28:22,940 --> 00:28:25,590 Odkladacia použil rovnaké názvy. 630 00:28:25,590 --> 00:28:25,930 >> Dobrá. 631 00:28:25,930 --> 00:28:29,010 Takže v tomto bode príbehu, linka 37, je 1. 632 00:28:29,010 --> 00:28:30,410 b je 2. 633 00:28:30,410 --> 00:28:32,040 A teraz mám postupovať, aby swap. 634 00:28:32,040 --> 00:28:34,730 No v prvom rade mi dovoľte, aby som vlastne robiť to oveľa jednoduchšie. 635 00:28:34,730 --> 00:28:36,500 Ja neviem, čo tie tri riadky kódu robia. 636 00:28:36,500 --> 00:28:37,370 Dovoľte mi, aby som to. 637 00:28:37,370 --> 00:28:38,850 b dostane. 638 00:28:38,850 --> 00:28:40,170 dostane b 639 00:28:40,170 --> 00:28:41,450 Hotovo. 640 00:28:41,450 --> 00:28:43,540 Prečo je tento zlomený, logicky? 641 00:28:46,980 --> 00:28:48,590 Je to druh intuitívne vec, nie? 642 00:28:48,590 --> 00:28:50,640 Tak sa stáva b 643 00:28:50,640 --> 00:28:52,450 A b stáva. 644 00:28:52,450 --> 00:28:55,410 Ale problém je, že akonáhle linka 37 vykonáva, čo je 645 00:28:55,410 --> 00:28:58,170 hodnota a B? 646 00:28:58,170 --> 00:28:59,070 Rovnaký, 1. 647 00:28:59,070 --> 00:29:03,460 Pretože ste clobbered, aby som tak povedal, ste zmenili b rovnať. 648 00:29:03,460 --> 00:29:06,000 Takže akonáhle linka 37 je vykonaný, je to skvelé. 649 00:29:06,000 --> 00:29:09,940 Teraz máte dve kópie čísla 1 vnútorné tejto funkcie. 650 00:29:09,940 --> 00:29:14,720 Takže keď hovoríte, v súlade 38, dostane b, dobre, že ste trochu v háji. 651 00:29:14,720 --> 00:29:17,370 Vzhľadom k tomu, ste len priradenie 1-1. 652 00:29:17,370 --> 00:29:20,400 Ste trochu stratila hodnotu, ktorú záležalo. 653 00:29:20,400 --> 00:29:22,910 >> Takže v pôvodnej verzii tohto, zistíte, čo som urobil. 654 00:29:22,910 --> 00:29:26,620 Som miesto toho mala tretina riadok kódu, ktorý vyzeral ako toto. 655 00:29:26,620 --> 00:29:29,910 Prehlasujem, dočasnú premennú - tmp je veľmi bežné meno 656 00:29:29,910 --> 00:29:31,240 dočasné premenné. 657 00:29:31,240 --> 00:29:34,280 Je to int, pretože sa musí zhodovať, čo chcem urobiť kópiu. 658 00:29:34,280 --> 00:29:39,720 Aj uložiť kópiu vnútri tmp. Takže akonáhle linka 37 je vykonaný, 659 00:29:39,720 --> 00:29:41,390 hodnota je - 660 00:29:41,390 --> 00:29:42,970 rýchle sanity check - 661 00:29:42,970 --> 00:29:43,460 1. 662 00:29:43,460 --> 00:29:45,780 Hodnota b je 2. 663 00:29:45,780 --> 00:29:48,470 A hodnota tmp je tiež 1. 664 00:29:48,470 --> 00:29:51,470 Takže teraz som spustiť linku 38. 665 00:29:51,470 --> 00:29:57,180 Takže akonáhle linka 38 vykoná, má na hodnotu b 666 00:29:57,180 --> 00:29:58,510 A b je 2. 667 00:29:58,510 --> 00:30:00,500 Takže je teraz 2. 668 00:30:00,500 --> 00:30:03,110 Takže v tomto bode príbehu, je 2, b je 2, 669 00:30:03,110 --> 00:30:05,130 a tmp je 1. 670 00:30:05,130 --> 00:30:09,330 Takže teraz logicky, môžeme len PLOP TMP je hodnota v b. 671 00:30:09,330 --> 00:30:10,690 A sme hotoví. 672 00:30:10,690 --> 00:30:12,170 >> Takže sme vyriešili tento problém. 673 00:30:12,170 --> 00:30:16,040 Bohužiaľ, keď som spustiť tento program v tejto podobe, to robí nie vlastne zameniť 674 00:30:16,040 --> 00:30:17,700 všetky hodnoty. 675 00:30:17,700 --> 00:30:18,950 Ale aby bolo jasno, prečo? 676 00:30:23,420 --> 00:30:26,310 Opravil som logický problém z pred chvíľou. 677 00:30:26,310 --> 00:30:31,150 Ale znova, keď spustenie programu, x a y sa nemení do konca 678 00:30:31,150 --> 00:30:33,834 tento program poprava. 679 00:30:33,834 --> 00:30:34,760 [Nepočuteľné] 680 00:30:34,760 --> 00:30:36,030 DAVID J. Malan: Tak sme sa vrátili nič. 681 00:30:36,030 --> 00:30:36,960 Tak to je pravda. 682 00:30:36,960 --> 00:30:39,880 Ale ukazuje sa, že je tu trochu problém, pretože tu tak ďaleko, 683 00:30:39,880 --> 00:30:42,460 Jediná vec, sme boli schopní sa vrátiť, je jedna vec. 684 00:30:42,460 --> 00:30:46,540 A to je obmedzenie C. Môžete vrátiť iba skutočne jednu hodnotu, 685 00:30:46,540 --> 00:30:48,970 v tom prípade, ja som trochu trčať 686 00:30:48,970 --> 00:30:51,805 pretože som sa mohol vrátiť novú hodnotu x alebo by som mohol vrátiť 687 00:30:51,805 --> 00:30:53,160 nová hodnota y. 688 00:30:53,160 --> 00:30:54,330 Ale ja chcem obaja staré. 689 00:30:54,330 --> 00:30:58,010 Takže návratu nie je jednoduché riešenie tu. 690 00:30:58,010 --> 00:30:59,770 Ale problém zásadne je dôvod, prečo? 691 00:30:59,770 --> 00:31:03,270 Čo sme vlastne vymenili? 692 00:31:03,270 --> 00:31:04,010 a b 693 00:31:04,010 --> 00:31:07,670 Ale aj b sú kópie x a y, čo znamená, že to urobil všetko 694 00:31:07,670 --> 00:31:10,080 práce - práve sme strávili ako tri minúty hovorí o swapu 695 00:31:10,080 --> 00:31:11,680 funkcie a všetci traja z týchto premenných. 696 00:31:11,680 --> 00:31:15,090 A to je skvelé, úplne správny v izolácii. 697 00:31:15,090 --> 00:31:20,230 Ale A a B je rozsah len je v týchto líniách tu. 698 00:31:20,230 --> 00:31:24,130 Tak ako pre sláčiky, ak ste deklarovať integer aj vo vnútri pre 699 00:31:24,130 --> 00:31:27,400 loop - podobne, ak ste deklarovať a b vnútri funkcie, ktorá 700 00:31:27,400 --> 00:31:30,550 ste napísali, sú platné iba vo vnútri tejto funkcie. 701 00:31:30,550 --> 00:31:35,020 Čo znamená, že akonáhle swap je vykonané vykonávanie a ideme z linky 24 do 702 00:31:35,020 --> 00:31:38,380 linka 25, x a y sa nemení vôbec. 703 00:31:38,380 --> 00:31:42,580 Práve ste zbytočne veľa času vymieňať kópie premenných. 704 00:31:42,580 --> 00:31:46,490 >> Tak to dopadá, že riešenie je to vlastne non-zrejmé. 705 00:31:46,490 --> 00:31:49,210 To nie je úplne dostačujúce pre návrat hodnoty, pretože môžeme 706 00:31:49,210 --> 00:31:50,320 vrátiť iba jednu hodnotu. 707 00:31:50,320 --> 00:31:53,370 A ja naozaj chcem vymeniť oba X a Y súčasne. 708 00:31:53,370 --> 00:31:55,020 Takže ideme vrátiť k tomu. 709 00:31:55,020 --> 00:31:58,770 Ale teraz si uvedomiť, že problém zásadne vychádza zo skutočnosti, 710 00:31:58,770 --> 00:32:00,660 že a a b sú kópie. 711 00:32:00,660 --> 00:32:03,450 A sú v ich vlastnom rozsahu. 712 00:32:03,450 --> 00:32:04,980 No, poďme sa pokúsiť vyriešiť nejakým spôsobom. 713 00:32:04,980 --> 00:32:09,200 Dovoľte mi, aby som skutočne prejdite sem a otvoriť, povedzme, štvrtú variantu 714 00:32:09,200 --> 00:32:11,170 z toho, buggy4. 715 00:32:11,170 --> 00:32:13,230 A čo toto? 716 00:32:13,230 --> 00:32:16,690 To je podobný, ale jednoduchšie problém pozrieť sa na predtým, než sme sa stab na 717 00:32:16,690 --> 00:32:17,530 riešenie. 718 00:32:17,530 --> 00:32:19,440 Tento program sa nazýva prírastok. 719 00:32:19,440 --> 00:32:24,320 A to zrejme inicializuje celé číslo x na 1 v riadku 18. 720 00:32:24,320 --> 00:32:25,950 Aj potom tvrdí, x je 1. 721 00:32:25,950 --> 00:32:28,020 Potom som tvrdenie zvyšovanie, bodka, bodka, bodka. 722 00:32:28,020 --> 00:32:29,460 Potom som zavolať prírastok. 723 00:32:29,460 --> 00:32:33,480 Ale potom v riadkoch 22 a 23, tvrdím, že to bola zvýšená. 724 00:32:33,480 --> 00:32:37,780 Tvrdím x je teraz nech je to čokoľvek, 2 pravdepodobne. 725 00:32:37,780 --> 00:32:39,770 >> Ale tento program je buggy. 726 00:32:39,770 --> 00:32:41,020 V čom je problém? 727 00:32:43,450 --> 00:32:44,418 Jo? 728 00:32:44,418 --> 00:32:45,668 [Nepočuteľné] 729 00:32:49,260 --> 00:32:49,850 DAVID J. Malan: Presne tak. 730 00:32:49,850 --> 00:32:52,430 Takže x bol vyhlásený zrejme na riadku 18. 731 00:32:52,430 --> 00:32:54,410 To je vnútri zložených zátvoriek hlavné je. 732 00:32:54,410 --> 00:32:58,470 Takže jednoduchá odpoveď tu je to, že dobre, x existuje tu. 733 00:32:58,470 --> 00:33:01,510 To neexistuje v súlade 32. 734 00:33:01,510 --> 00:33:03,710 Takže tento program vlastne nie je ani skompilovať. 735 00:33:03,710 --> 00:33:07,910 Kompilátor, keď som sa kompilácie tento kód, bude na mňa kričať 736 00:33:07,910 --> 00:33:13,190 o nejakej nelegálnej identifikátora alebo niečo v tom zmysle. 737 00:33:13,190 --> 00:33:13,870 V skutočnosti, skúsme to. 738 00:33:13,870 --> 00:33:15,235 To je, aby buggy4. 739 00:33:17,780 --> 00:33:18,190 Tu to je. 740 00:33:18,190 --> 00:33:22,030 Použitie nelegálnej Identifikátor x v súlade 32. 741 00:33:22,030 --> 00:33:25,700 A skutočne, buďme konkrétnejší tu dnes tak, že je to užitočné v 742 00:33:25,700 --> 00:33:27,140 úradné hodiny a doma. 743 00:33:27,140 --> 00:33:29,000 Všimnite si, že je to trochu záhadne písomná. 744 00:33:29,000 --> 00:33:31,560 Ale skutočnosť, že zvonenie je na nás kričali, riekol: 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, je v skutočnosti užitočné. 746 00:33:36,970 --> 00:33:41,970 To znamená, že chyba je na riadku 32 v znakovú pozíciu päť. 747 00:33:41,970 --> 00:33:44,670 Takže jedna, dva, tri, štyri, päť. 748 00:33:44,670 --> 00:33:46,640 To je, v skutočnosti, kde je problém. 749 00:33:46,640 --> 00:33:49,710 A tiež mať na pamäti pri úradných hodinách aj doma, budem mať šťastie tu. 750 00:33:49,710 --> 00:33:50,740 Mám jednu chybu. 751 00:33:50,740 --> 00:33:52,660 Bude to pomerne ľahko opraviť. 752 00:33:52,660 --> 00:33:56,220 Ale ak sa dostanete celú obrazovku plnú ohromujúcich chybových správ, opäť, 753 00:33:56,220 --> 00:33:59,240 Uvedomujem si, že najspodnejšej jeden by mohol byť len symptomatická 754 00:33:59,240 --> 00:34:00,320 Vrchný ty. 755 00:34:00,320 --> 00:34:03,560 Takže vždy naháňať svoje chyby z top-down. 756 00:34:03,560 --> 00:34:06,720 Vzhľadom k tomu, že by mohlo byť len daisy-chain efekt, ktorý naznačuje, vás 757 00:34:06,720 --> 00:34:09,030 majú omnoho viac problémov, ako ste vlastne robiť. 758 00:34:09,030 --> 00:34:14,989 >> Tak ako by sme mohli opraviť, ak je mojím cieľom zvýšiť x? 759 00:34:14,989 --> 00:34:15,370 Čo je to? 760 00:34:15,370 --> 00:34:15,620 Dobre. 761 00:34:15,620 --> 00:34:16,679 Takže môžeme x globálne. 762 00:34:16,679 --> 00:34:18,860 Poďme sa na zástupcu, ktorého som varoval o tom skôr. 763 00:34:18,860 --> 00:34:20,550 Ale sakra, my len potrebujeme rýchlu opravu. 764 00:34:20,550 --> 00:34:23,949 Takže povedzme, že int x tu. 765 00:34:23,949 --> 00:34:25,600 To robí x globálne. 766 00:34:25,600 --> 00:34:28,460 Takže teraz hlavné má prístup k nemu. 767 00:34:28,460 --> 00:34:31,780 A prírastok k nemu má prístup. 768 00:34:31,780 --> 00:34:33,860 A tak nechaj ma ísť napred a skompilovať to teraz. 769 00:34:33,860 --> 00:34:36,330 Urobte buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Zdá sa, že zostavenie teraz. 771 00:34:37,440 --> 00:34:40,949 Spustite buggy4, a zdá sa, že skutočne funguje. 772 00:34:40,949 --> 00:34:42,780 Teraz sa jedná o jeden z týchto vecí - 773 00:34:42,780 --> 00:34:45,870 robiť, čo hovorím, nie ako ja, ako som práve urobil tu. 774 00:34:45,870 --> 00:34:49,239 Pretože všeobecne, naše programy sa dostaneme oveľa zaujímavejšie a 775 00:34:49,239 --> 00:34:50,440 oveľa dlhšie, než toto. 776 00:34:50,440 --> 00:34:53,199 A ak vaše riešenie životných problémov je len ah, dať všetky 777 00:34:53,199 --> 00:34:57,550 premenné v hornej časti súboru, veľmi rýchlo to programy sa 778 00:34:57,550 --> 00:34:59,700 desivo ťažké riadiť. 779 00:34:59,700 --> 00:35:02,050 To je ťažšie vymyslieť nové názvy premenných. 780 00:35:02,050 --> 00:35:05,240 To je ťažšie pochopiť, čo je premenná robí čo. 781 00:35:05,240 --> 00:35:08,250 >> A tak všeobecne, to nie je dobré riešenie. 782 00:35:08,250 --> 00:35:09,780 Takže ideme na to lepšie. 783 00:35:09,780 --> 00:35:11,920 Nechceme používať globálnu premennú tu. 784 00:35:11,920 --> 00:35:14,050 Ja chcem zvýšiť x. 785 00:35:14,050 --> 00:35:16,050 Tak som mohol, samozrejme - 786 00:35:16,050 --> 00:35:18,450 na konci dňa, je to trochu hlúpe príbehu, pretože sme jednoducho urobiť to. 787 00:35:18,450 --> 00:35:22,050 Ale keď som o tom nevedel tohto subjektu, alebo som nesmel 788 00:35:22,050 --> 00:35:27,700 zmeniť v hlavnom samo o sebe, ako by inak by som implementovať Ken tu, to 789 00:35:27,700 --> 00:35:31,450 čas, aby kocka, ale môžete zvyšovať? 790 00:35:31,450 --> 00:35:32,700 Ako môžem zmeniť túto vec tu? 791 00:35:32,700 --> 00:35:33,025 Jo. 792 00:35:33,025 --> 00:35:34,275 [Nepočuteľné] 793 00:35:37,430 --> 00:35:38,000 DAVID J. Malan: Dobre, dobre. 794 00:35:38,000 --> 00:35:40,490 Tak prečo by som odovzdať x? 795 00:35:40,490 --> 00:35:44,390 A potom sa skôr ako vrátiť, prečo jednoducho nemôžem robiť return x + 1? 796 00:35:44,390 --> 00:35:46,370 Teraz, pár ďalších vecí, musieť zmeniť tu. 797 00:35:46,370 --> 00:35:47,530 Som na správnej ceste. 798 00:35:47,530 --> 00:35:48,910 Čo ešte musím trik? 799 00:35:48,910 --> 00:35:49,470 Niekto iný. 800 00:35:49,470 --> 00:35:49,882 Jo? 801 00:35:49,882 --> 00:35:51,530 [Nepočuteľné] 802 00:35:51,530 --> 00:35:53,520 DAVID J. Malan: Musím zmeniť návratový typ prírastku 803 00:35:53,520 --> 00:35:54,590 pretože to nie je neplatné. 804 00:35:54,590 --> 00:35:56,650 Void znamená nič sa vracané. 805 00:35:56,650 --> 00:35:57,600 Ale jasne, teraz je to. 806 00:35:57,600 --> 00:36:01,280 Takže to musí zmeniť na int byť v súlade s tým, čo 807 00:36:01,280 --> 00:36:02,580 Ja som vlastne vracia. 808 00:36:02,580 --> 00:36:04,580 >> Teraz niečo iné je stále buggy tu. 809 00:36:04,580 --> 00:36:04,982 Jo? 810 00:36:04,982 --> 00:36:06,590 [Nepočuteľné] 811 00:36:06,590 --> 00:36:07,630 DAVID J. Malan: Tak som potrebné zvýšiť x? 812 00:36:07,630 --> 00:36:10,336 [Nepočuteľné] 813 00:36:10,336 --> 00:36:11,880 DAVID J. Malan: Ah, tak musím prejsť x. 814 00:36:11,880 --> 00:36:13,300 Tak som potrebné urobiť tu. 815 00:36:17,590 --> 00:36:19,690 Takže prototypu, musím to zmeniť tu. 816 00:36:19,690 --> 00:36:21,290 Tak to sa musí stať int. 817 00:36:21,290 --> 00:36:22,820 To sa musí stať - 818 00:36:22,820 --> 00:36:23,670 hmm. 819 00:36:23,670 --> 00:36:24,710 Vlastne som chybu tu. 820 00:36:24,710 --> 00:36:25,780 Poďme opraviť tento prvý. 821 00:36:25,780 --> 00:36:27,990 Čo by to vlastne byť? 822 00:36:27,990 --> 00:36:29,330 Tak to musí byť niečo, čo int. 823 00:36:29,330 --> 00:36:30,340 Mohlo by to byť x. 824 00:36:30,340 --> 00:36:33,120 Ale úprimne povedané, ak začnete volať všetky svoje premenné x, to dostane 825 00:36:33,120 --> 00:36:35,250 menej a menej jasné, ktorý je ktorý. 826 00:36:35,250 --> 00:36:38,210 Takže povedzme, ľubovoľne vybrať iný konvencie pre moje 827 00:36:38,210 --> 00:36:40,220 pomocné funkcie, funkcie píšem. 828 00:36:40,220 --> 00:36:41,100 Nazveme to. 829 00:36:41,100 --> 00:36:44,500 Alebo by sme mohli nazvať - ​​nazvime to even_number byť ešte jasnejšie. 830 00:36:44,500 --> 00:36:47,610 Tak som sa musel vrátiť, čo je číslo plus 1. 831 00:36:47,610 --> 00:36:49,720 A teraz musím zmeniť jednu vec sem a jeden 832 00:36:49,720 --> 00:36:50,700 Ďalšia vec, ktorú tu. 833 00:36:50,700 --> 00:36:54,150 Čo mám zmeniť na riadku 21 ako prvý? 834 00:36:54,150 --> 00:36:55,390 Musím priradiť k x. 835 00:36:55,390 --> 00:36:57,480 Tak som si len volať zmien rastu x. 836 00:36:57,480 --> 00:37:01,000 Musím si pamätať odpoveď zmenou hodnoty x na 837 00:37:01,000 --> 00:37:02,020 na ľavej strane. 838 00:37:02,020 --> 00:37:04,930 A aj keď x je teraz na ľavej a pravej, že je úplne v poriadku, pretože 839 00:37:04,930 --> 00:37:08,370 pravá strana sa vykoná, prvý potom dostane zvalil do ľavého 840 00:37:08,370 --> 00:37:10,240 ručné vec, x je v tomto prípade. 841 00:37:10,240 --> 00:37:11,900 A potom konečne, je to ľahké opraviť teraz. 842 00:37:11,900 --> 00:37:15,080 To by malo len odpovedať, čo je dole. 843 00:37:15,080 --> 00:37:17,120 Int číslo. 844 00:37:17,120 --> 00:37:17,320 >> Dobrá. 845 00:37:17,320 --> 00:37:20,290 Takže celá partia zmien pre naozaj hlúpe funkcií. 846 00:37:20,290 --> 00:37:24,250 Ale zástupcu z vecí, ktoré budeme stále chcú robiť. 847 00:37:24,250 --> 00:37:25,490 Tak, aby buggy4. 848 00:37:25,490 --> 00:37:26,485 Ja som podelal niekde. 849 00:37:26,485 --> 00:37:27,520 Ach môj bože. 850 00:37:27,520 --> 00:37:29,660 Päť chýb v, rád, šesť-line program. 851 00:37:29,660 --> 00:37:36,500 Takže to, čo sa deje na linke 18, znak 5? 852 00:37:36,500 --> 00:37:36,970 Dobrá. 853 00:37:36,970 --> 00:37:39,330 Tak som si určil, že tento int. 854 00:37:39,330 --> 00:37:39,630 Dobrá. 855 00:37:39,630 --> 00:37:41,790 Tak uvidíme, veľa ďalších chýb. 856 00:37:41,790 --> 00:37:42,230 Ach môj bože. 857 00:37:42,230 --> 00:37:43,880 19, 18, 21. 858 00:37:43,880 --> 00:37:46,020 Ale znova, nech to jednoducho vyčistiť obrazovku - 859 00:37:46,020 --> 00:37:48,660 Control L tu - a re-run zvonenie. 860 00:37:48,660 --> 00:37:51,340 Takže päť problémov je vlastne len, že jeden. 861 00:37:51,340 --> 00:37:53,500 Tak teraz poďme bežať buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Uff. 863 00:37:54,150 --> 00:37:57,434 x bol zvýšený správne. 864 00:37:57,434 --> 00:37:58,420 >> Dobrá. 865 00:37:58,420 --> 00:38:01,700 Akékoľvek otázky na to, ako zvýšiť počty? 866 00:38:01,700 --> 00:38:02,896 Jo? 867 00:38:02,896 --> 00:38:06,864 SPEAKER 2: Prečo je to, že môžete len zmeniť x na číslo v premennej 868 00:38:06,864 --> 00:38:08,860 meno a budete vedieť, čo máte na mysli? 869 00:38:08,860 --> 00:38:09,600 DAVID J. Malan: Dobrá otázka. 870 00:38:09,600 --> 00:38:13,130 Ako to, že som si len zmeniť x na číslo a program bude vedieť, 871 00:38:13,130 --> 00:38:13,990 okamžite? 872 00:38:13,990 --> 00:38:16,120 Takže znova, myslím, že na to, ako túto abstrakciu. 873 00:38:16,120 --> 00:38:20,110 Takže keď som hlavnej a Ken je inkrementálny, úprimne povedané, je mi to jedno 874 00:38:20,110 --> 00:38:21,540 čo Ken volá jeho iPad. 875 00:38:21,540 --> 00:38:25,350 Nezaujíma ma, čo hovorí niečo, čo má čo do činenia s jeho vykonávaním 876 00:38:25,350 --> 00:38:26,550 tejto funkcie. 877 00:38:26,550 --> 00:38:32,130 Tak toto je implementačný detail, že som, hlavné, nie 878 00:38:32,130 --> 00:38:33,010 musieť starať o 879 00:38:33,010 --> 00:38:37,440 A tak jednoducho mení dôsledne ju vnútri funkcie, číslo tu 880 00:38:37,440 --> 00:38:41,340 a číslo tu, je všetko to trvá tak dlho, ako som prekompilovať. 881 00:38:41,340 --> 00:38:43,820 Je to niečo ako keď si myslíte, že o tom - mnohí z nás, tých z vás, vodiča 882 00:38:43,820 --> 00:38:46,590 licencie, ktorí si poháňané, alebo ak ste dokonca riadený v aute - 883 00:38:46,590 --> 00:38:50,710 väčšina z nás nemá potuchy, ako auto funguje pod kapotou. 884 00:38:50,710 --> 00:38:54,710 A doslova, keď otvoríte kapotu, väčšina z nás - vrátane mňa - 885 00:38:54,710 --> 00:38:56,580 sa nebude naozaj vedieť, čo sa pozeráme na. 886 00:38:56,580 --> 00:38:58,850 Niečo ako sa môžete cítiť s vecami, ako je toto teraz. 887 00:38:58,850 --> 00:39:01,380 Ale my naozaj nemáme starať, ako auto funguje. 888 00:39:01,380 --> 00:39:05,000 Nemáme sa starať, čo všetko z tyčí a piestov a káblov vo vnútri 889 00:39:05,000 --> 00:39:07,700 auto vlastne robia. 890 00:39:07,700 --> 00:39:11,360 >> Takže niečo ako to, čo hovoríte piest nezáleží 891 00:39:11,360 --> 00:39:11,920 tu v tomto prípade. 892 00:39:11,920 --> 00:39:12,490 Rovnaký nápad. 893 00:39:12,490 --> 00:39:12,670 Jo? 894 00:39:12,670 --> 00:39:13,920 [Nepočuteľné] 895 00:39:25,250 --> 00:39:29,530 DAVID J. Malan: Ak by bolo viac použití variabilného chvíľu xa pred, 896 00:39:29,530 --> 00:39:32,220 vy, programátor, by museli zmeniť je všade. 897 00:39:32,220 --> 00:39:35,230 Alebo by ste mohli doslova robiť Súbor, Ponuka, a potom Nájsť / Nahradiť, 898 00:39:35,230 --> 00:39:36,270 niečo také. 899 00:39:36,270 --> 00:39:40,110 Ale budete musieť urobiť týchto zmien sami. 900 00:39:40,110 --> 00:39:41,200 Musíte byť v súlade. 901 00:39:41,200 --> 00:39:42,450 [Nepočuteľné] 902 00:39:47,200 --> 00:39:48,960 DAVID J. Malan: najmä, aby ako tu? 903 00:39:48,960 --> 00:39:52,660 Ak to bolo int iné číslo? 904 00:39:52,660 --> 00:39:52,940 Jo. 905 00:39:52,940 --> 00:39:56,430 Takže, aby záležitosti, keď voláte funkciu. 906 00:39:56,430 --> 00:40:00,350 Takže ak by som sa volať prírastok tu niečo niečo čiarka, 907 00:40:00,350 --> 00:40:01,400 je tu priame mapovanie. 908 00:40:01,400 --> 00:40:04,490 Prvá premenná, ako sa to volá, je vyrobený kópiu prvý 909 00:40:04,490 --> 00:40:05,480 Argument tu. 910 00:40:05,480 --> 00:40:07,280 Je nám ľúto, nemalo by to byť zátvorka. 911 00:40:07,280 --> 00:40:09,300 Druhý argument sa zoradia s druhým. 912 00:40:09,300 --> 00:40:11,220 >> Takže poradí, áno, záleží. 913 00:40:11,220 --> 00:40:11,490 Dobrá. 914 00:40:11,490 --> 00:40:13,360 Prepáč, že som vzal dlhú cestu, aby sa tam dostať. 915 00:40:13,360 --> 00:40:14,610 Ďalšie otázky? 916 00:40:16,460 --> 00:40:16,850 Dobrá. 917 00:40:16,850 --> 00:40:20,300 Tak uvidíme, či nemôžeme namaľovať obraz o tom, čo sa skutočne deje 918 00:40:20,300 --> 00:40:22,160 tu pod pokrievku, aby som tak povedal. 919 00:40:22,160 --> 00:40:26,310 Tak to je obdĺžnik, ktorý by mohol predstavovať pamäte počítača. 920 00:40:26,310 --> 00:40:31,240 Takže aj keď máte tušenie, ako pamäť funguje a ako RAM funguje, aspoň 921 00:40:31,240 --> 00:40:33,590 Predpokladáme, že máte kytice z nej v týchto dňoch. 922 00:40:33,590 --> 00:40:34,740 Máš megabajtov nej. 923 00:40:34,740 --> 00:40:35,760 Máš gigabajtov nej. 924 00:40:35,760 --> 00:40:40,690 A my vieme, z týždňa nuly, že byte je práve to, čo? 925 00:40:40,690 --> 00:40:41,280 8 bitov. 926 00:40:41,280 --> 00:40:42,730 Správne, takže 8 nuly a jednotky. 927 00:40:42,730 --> 00:40:46,300 Takže ak váš počítač má koncert RAM, dve giga RAM v týchto dňoch, budete mať 928 00:40:46,300 --> 00:40:54,450 miliarda 2000000000 bajtov pamäte, alebo približne 8 miliárd 16000000000 929 00:40:54,450 --> 00:40:56,560 bitov, vo vnútri vášho počítača. 930 00:40:56,560 --> 00:40:59,710 Teraz na rozdiel od malého Woolly napríklad Willy, to nie je magnetické častice 931 00:40:59,710 --> 00:41:00,560 zvyčajne už. 932 00:41:00,560 --> 00:41:04,470 Stále viac, v laptopoch aspoň to SSD disky, SSD, že 933 00:41:04,470 --> 00:41:05,560 Práve ste žiadne pohyblivé časti. 934 00:41:05,560 --> 00:41:06,710 Je to všetko elektronické. 935 00:41:06,710 --> 00:41:08,070 Je to všetko na základe elektrina. 936 00:41:08,070 --> 00:41:12,360 Takže myslíte, že, aj keď, v tomto obdĺžniku ako práve predstavuje jeden alebo dva 937 00:41:12,360 --> 00:41:13,930 GB pamäte, ktoré máte. 938 00:41:13,930 --> 00:41:15,500 >> Takže je to kus pamäte. 939 00:41:15,500 --> 00:41:20,460 Teraz svet výpočtovej techniky má druh rozdelených off kusy 940 00:41:20,460 --> 00:41:22,570 Pamäť robiť rôzne veci. 941 00:41:22,570 --> 00:41:25,930 Tak napríklad, ak je to váš počítač RAM - ako navrhuje 942 00:41:25,930 --> 00:41:30,400 obdĺžnik tam - Ukazuje sa, že podľa konvencie, v hornej časti pamäte RAM, takže 943 00:41:30,400 --> 00:41:33,170 hovoriť, je všeobecne to, čo sa nazýva textový segment. 944 00:41:33,170 --> 00:41:35,910 Tí sú nuly a tie, ktoré ste zostavili. 945 00:41:35,910 --> 00:41:39,040 Takže keď sme sa pozrel pod pokrievku, čo a.out je, že všetky 946 00:41:39,040 --> 00:41:40,360 Nuly a jednotky - 947 00:41:40,360 --> 00:41:44,000 pri spustení programu, sú tieto nuly a jedničky načítať z pevného 948 00:41:44,000 --> 00:41:46,290 disk na niečo, čo nazýva RAM. 949 00:41:46,290 --> 00:41:48,950 A v pamäti RAM, to dali na vrchole. 950 00:41:48,950 --> 00:41:50,330 Teraz zatiaľ máte iné veci. 951 00:41:50,330 --> 00:41:53,060 Inicializovaná dáta, neinicializovaný dát. 952 00:41:53,060 --> 00:41:56,440 Tieto dva riadky pamäti odkazujú na globálne premenné, ktoré 953 00:41:56,440 --> 00:41:57,530 nemusíte sa často používajú. 954 00:41:57,530 --> 00:42:00,630 Ale niekedy, keď to urobíte, skončí tam rovnako. 955 00:42:00,630 --> 00:42:01,620 Potom je tu niektoré ďalšie veci. 956 00:42:01,620 --> 00:42:04,130 Premenné prostredie, ktoré nebude tráviť toľko času na. 957 00:42:04,130 --> 00:42:06,120 Ale potom dve dôležité veci, ktoré sa vrátia po celé toto 958 00:42:06,120 --> 00:42:08,130 semester, zásobník a halda. 959 00:42:08,130 --> 00:42:12,280 >> Takže väčšina z pamäti počítača je vyhradený pri spustení programu pre 960 00:42:12,280 --> 00:42:14,880 niečo ako balíček, a niečo, čo nazýva haldy. 961 00:42:14,880 --> 00:42:16,940 A nebudeme hovoriť o haldy dnes, ale my 962 00:42:16,940 --> 00:42:18,180 hovorí o zásobníka. 963 00:42:18,180 --> 00:42:22,910 A stack je chcel vykúzliť vizuál ako jedálne 964 00:42:22,910 --> 00:42:26,120 jedlo podnosy v Mather dome alebo tam, kde sa stalo, že v krajine, kde 965 00:42:26,120 --> 00:42:27,810 jedáleň pracovníci čistiť každý deň. 966 00:42:27,810 --> 00:42:30,180 Oni vyskladať až od podlahy nahor. 967 00:42:30,180 --> 00:42:33,800 A podobne v pamäti, že je to myšlienka na niečo na 968 00:42:33,800 --> 00:42:36,740 stack, uvedenie niečo na stacku, uvedenie niečo na zásobníku. 969 00:42:36,740 --> 00:42:38,000 A čo máme na mysli toto? 970 00:42:38,000 --> 00:42:41,430 Dobre, poďme priblížiť len na dolnej polovici obrázku, počítač je 971 00:42:41,430 --> 00:42:43,990 RAM, navrhnúť nasledujúce. 972 00:42:43,990 --> 00:42:48,300 Ukazuje sa, že pri spustení programu, ako je a.out alebo ahoj, čo 973 00:42:48,300 --> 00:42:49,920 program, je to, že ste napísali, 974 00:42:49,920 --> 00:42:53,030 znovu, sú tieto nuly a jedničky načítať z pevného disku - čo je 975 00:42:53,030 --> 00:42:56,190 dlhodobé skladovanie, zostane tam aj keď zatiahnite - 976 00:42:56,190 --> 00:42:57,220 načítaný do pamäte RAM. 977 00:42:57,220 --> 00:42:59,020 RAM je rýchlejší ako pevné disky. 978 00:42:59,020 --> 00:43:00,700 Je to menšia než pevné disky. 979 00:43:00,700 --> 00:43:03,490 Ale to je miesto, kde žijú programy, zatiaľ čo vy používate je. 980 00:43:03,490 --> 00:43:06,380 >> Takže ste dvakrát kliknite na program, na Mac alebo PC - je to načítaný z 981 00:43:06,380 --> 00:43:07,750 pevný disk do pamäte RAM. 982 00:43:07,750 --> 00:43:11,760 Akonáhle je načítaný do pamäte RAM, sa nuly a jedničky ísť na ceste hore, 983 00:43:11,760 --> 00:43:13,130 tzv texte segmente. 984 00:43:13,130 --> 00:43:17,040 Ale potom, akonáhle váš program v skutočnosti spustí, hlavné 985 00:43:17,040 --> 00:43:18,140 funkcia sa nazýva. 986 00:43:18,140 --> 00:43:21,070 A hlavné, ako sme videli, často lokálne premenné. 987 00:43:21,070 --> 00:43:24,560 A to má ints a reťazce a pripaľuje a podobne. 988 00:43:24,560 --> 00:43:28,300 Takže ak váš program, ktorý ste napísali, alebo program, ktorý ste 989 00:43:28,300 --> 00:43:33,680 poklepanie používa niektoré premenné vo vnútri hlavnej, oni skončí na 990 00:43:33,680 --> 00:43:37,020 Spodná časť vášho stacku pamäti, aby som tak povedal. 991 00:43:37,020 --> 00:43:39,160 Teraz konkrétnejšie, čo to vlastne znamená? 992 00:43:39,160 --> 00:43:44,080 To jednoducho znamená, že ak sme sa chystali číslovať veci - 993 00:43:44,080 --> 00:43:49,380 Ak by sme chceli, aby počet bajtov pamäte RAM v počítači, zistíte, že 994 00:43:49,380 --> 00:43:51,650 to by mohlo byť byte číslo nula. 995 00:43:51,650 --> 00:43:56,130 To by mohlo byť byte číslo jedna, dva, tri, štyri, päť, šesť, všetky 996 00:43:56,130 --> 00:43:57,290 spôsob, ako sa rád - 997 00:43:57,290 --> 00:44:01,520 2000000000 by sa celú cestu tam hore. 998 00:44:01,520 --> 00:44:05,960 Takže inými slovami, keď hovoríme o pamäti RAM alebo pamäte, pokiaľ ide o bytoch, je 999 00:44:05,960 --> 00:44:09,680 len znamená, že niekto sa rozhodol, čo číslovať každý 1000 00:44:09,680 --> 00:44:11,110 tie kúsky pamäti. 1001 00:44:11,110 --> 00:44:16,950 >> Takže keď budete potrebovať 32 bitov na int, alebo budete potrebovať 8 bitov pre Char, kde 1002 00:44:16,950 --> 00:44:18,320 sa, že skončí v pamäti? 1003 00:44:18,320 --> 00:44:20,650 No koncepčne, len skončí na dne tejto 1004 00:44:20,650 --> 00:44:21,780 čomu sa hovorí zásobníka. 1005 00:44:21,780 --> 00:44:25,670 Ale čo je zaujímavé, teraz je, keď hlavné volá funkcie. 1006 00:44:25,670 --> 00:44:28,830 Predpokladajme, že funkciu nazvanú foo, len ľubovoľný názov. 1007 00:44:28,830 --> 00:44:32,480 Čo sa stane, je hlavné je v dolnej časti tohto zásobníka pamäte. 1008 00:44:32,480 --> 00:44:35,630 Foo teraz je kladený na vrchole hlavnej pamäte. 1009 00:44:35,630 --> 00:44:40,020 Takže nejaké lokálne premenné, ktoré foo má skončiť druh koncepčne vyššie 1010 00:44:40,020 --> 00:44:40,770 tie hlavné. 1011 00:44:40,770 --> 00:44:46,920 Ak foo volá inú funkciu nazvanú bar, tieto premenné skončí tu. 1012 00:44:46,920 --> 00:44:49,790 Ak bar volá niečo iné, tu, tu, tu. 1013 00:44:49,790 --> 00:44:53,900 Takže to, čo je na tom zaujímavé spustenie programu je to, že ako volať funkcie, 1014 00:44:53,900 --> 00:44:57,720 a keďže tieto funkcie volať funkcie, a ako tieto funkcie volať funkcie, 1015 00:44:57,720 --> 00:45:00,980 si vybudovať tento balík funkcií v pamäti. 1016 00:45:00,980 --> 00:45:06,740 A len raz za funkcie vráti sa môžete začať sa, že pamäť vrátiť. 1017 00:45:06,740 --> 00:45:11,190 Takže jedným z najjednoduchších spôsobov, ako beží z pamäte v počítačovom programe je 1018 00:45:11,190 --> 00:45:14,170 písať funkcie, ktoré sa nikdy nevráti. 1019 00:45:14,170 --> 00:45:16,650 >> Tak napríklad, poďme preukázať až s 1020 00:45:16,650 --> 00:45:18,460 zámerne buggy program. 1021 00:45:18,460 --> 00:45:24,690 Nechaj ma ísť napred a nenechám # include , int main (void). 1022 00:45:24,690 --> 00:45:31,270 A ja budem robiť, keď (2> 1), ktorý pravdepodobne nebude nikdy 1023 00:45:31,270 --> 00:45:33,370 zmeniť na nás. 1024 00:45:33,370 --> 00:45:37,720 A nechaj ma ísť napred teraz a robiť printf. 1025 00:45:37,720 --> 00:45:39,950 Vlastne, že to bude menej vizuálne zaujímavé. 1026 00:45:39,950 --> 00:45:40,460 Poďme to. 1027 00:45:40,460 --> 00:45:44,840 Pre int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Poďme urobiť túto chybu, i + +. 1029 00:45:49,740 --> 00:45:51,150 A nech to nie je printf tu. 1030 00:45:51,150 --> 00:45:52,550 Poďme praktizovať to, čo som kázal. 1031 00:45:52,550 --> 00:45:54,090 Poďme mať metódu tu. 1032 00:45:54,090 --> 00:46:00,860 Void chorus, a povieme int i 1033 00:46:00,860 --> 00:46:02,295 A potom som chcel povedať, printf - 1034 00:46:04,871 --> 00:46:06,790 oh, poďme urobiť to zaujímavejšie. 1035 00:46:06,790 --> 00:46:08,350 Poďme vlastne nevytlačí vôbec nič. 1036 00:46:08,350 --> 00:46:10,530 Jednoducho to. 1037 00:46:10,530 --> 00:46:11,780 Chorus (i). 1038 00:46:16,630 --> 00:46:17,000 >> Dobrá. 1039 00:46:17,000 --> 00:46:20,040 Tak to je buggy pretože prečo? 1040 00:46:20,040 --> 00:46:22,850 Ja som to vymyslela, ako som ísť, pretože program nie je v skutočnosti nič 1041 00:46:22,850 --> 00:46:23,420 záujmu. 1042 00:46:23,420 --> 00:46:24,670 Ale to nie je cieľom. 1043 00:46:24,670 --> 00:46:30,440 Cieľom je napísať program, ktorého hlavnou funkciou je čo robí, očividne? 1044 00:46:30,440 --> 00:46:31,370 Zavolajte sám. 1045 00:46:31,370 --> 00:46:32,600 A skutočne, nepotrebujeme slučku. 1046 00:46:32,600 --> 00:46:36,070 Poďme ešte zjednodušiť tým, len tak, aby sme nestratili zo zreteľa fakt 1047 00:46:36,070 --> 00:46:37,310 zásadná chyba. 1048 00:46:37,310 --> 00:46:39,200 Hlavné vyzýva zbor spievať nejakú chór. 1049 00:46:39,200 --> 00:46:41,760 Potom som urobil niečo hlúpe, a ja som mal refrén volanie refrén, pretože som predpokladal, 1050 00:46:41,760 --> 00:46:43,550 niekto iný bude implementovať možná. 1051 00:46:43,550 --> 00:46:45,960 A teraz to nebude zostavovať ešte. 1052 00:46:45,960 --> 00:46:48,340 Musím urobiť, čo? 1053 00:46:48,340 --> 00:46:49,700 Potrebujem prototyp, nezabudnite. 1054 00:46:49,700 --> 00:46:55,520 Tak som potrebné mať tu void chór (int i);. 1055 00:46:55,520 --> 00:46:57,470 >> Takže teraz, keď pôjdem tu - 1056 00:46:57,470 --> 00:46:59,030 vlastne, poďme použite väčšie okno. 1057 00:46:59,030 --> 00:47:01,670 Poďme ďalej a urobiť zbor. 1058 00:47:01,670 --> 00:47:06,000 Poďme ďalej a urobiť zbor. 1059 00:47:06,000 --> 00:47:08,302 Použitie nezisteného vydražiteľa i 1060 00:47:08,302 --> 00:47:09,860 Oh, to bolo hlúpe. 1061 00:47:09,860 --> 00:47:11,020 Nepotrebujeme argument. 1062 00:47:11,020 --> 00:47:13,680 Jednoducho to. 1063 00:47:13,680 --> 00:47:14,550 Kiež sme začali týmto spôsobom. 1064 00:47:14,550 --> 00:47:16,160 Bolo by to oveľa jednoduchšie program písať. 1065 00:47:16,160 --> 00:47:20,100 Takže tam. 1066 00:47:20,100 --> 00:47:23,870 Teraz poďme ku mne terminálovom okne, re-run Clang. 1067 00:47:23,870 --> 00:47:26,900 A je to tu. 1068 00:47:26,900 --> 00:47:28,020 To bol naozaj rýchly. 1069 00:47:28,020 --> 00:47:30,690 Čo sa vlastne práve stalo, keď? 1070 00:47:30,690 --> 00:47:33,430 No, teraz budem pridávať tlačovú linku, takže môžeme vidieť. 1071 00:47:33,430 --> 00:47:41,330 Takže mi dovoľte povedať printf, povedzme, že som tu. 1072 00:47:41,330 --> 00:47:43,470 Dobre, žiadne premenné, necháme to takto. 1073 00:47:43,470 --> 00:47:44,860 Dovoľte mi, aby som znova spustite make. 1074 00:47:44,860 --> 00:47:47,940 Dovoľte mi, aby som znovu-run chorus. 1075 00:47:47,940 --> 00:47:51,235 A poď. 1076 00:47:53,880 --> 00:47:55,130 Len tak ďalej. 1077 00:47:57,630 --> 00:47:59,750 Ako stranou, prečo sa nezrútil? 1078 00:47:59,750 --> 00:48:02,050 Segmentation fault stalo super rýchly predtým. 1079 00:48:02,050 --> 00:48:04,250 [Nepočuteľné] 1080 00:48:04,250 --> 00:48:04,830 DAVID J. Malan: Presne tak. 1081 00:48:04,830 --> 00:48:06,350 Tak to trvá dobu tlače. 1082 00:48:06,350 --> 00:48:08,370 Je to len má viac práce na počítači v rámci. 1083 00:48:08,370 --> 00:48:09,550 A je to tu. 1084 00:48:09,550 --> 00:48:10,620 Segmentation fault. 1085 00:48:10,620 --> 00:48:12,140 >> Tak zistíte, ako rýchlo programy beží. 1086 00:48:12,140 --> 00:48:14,110 Ak si nie ste tlače nič, super rýchly. 1087 00:48:14,110 --> 00:48:18,100 Ale my stále túto Segmentation fault, pretože to, čo sa deje? 1088 00:48:18,100 --> 00:48:21,310 No, ak si myslíte, že o tom, ako je váš počítač pamäť stanovený, tento 1089 00:48:21,310 --> 00:48:22,890 Stáva sa hlavným. 1090 00:48:22,890 --> 00:48:23,800 Ale tu - 1091 00:48:23,800 --> 00:48:28,670 povedzme, nazývajú tento refrén, a hovorme tejto chór. 1092 00:48:28,670 --> 00:48:33,420 A teraz keď to urobím svoje estetiku právo, je to len povedať chór, 1093 00:48:33,420 --> 00:48:38,060 chorus, chorus, chorus, chorus, chorus, chorus, do najmenších podrobností. 1094 00:48:38,060 --> 00:48:39,920 A nakoniec, čo sa bude diať? 1095 00:48:39,920 --> 00:48:46,690 Ak veľký obrázok doslova je to, čo sa práve deje koncepčne? 1096 00:48:46,690 --> 00:48:48,320 V zásobníku prekročení haldy. 1097 00:48:48,320 --> 00:48:52,400 Alebo ešte horšie, stačí prekročení všetko, vrátane textového segmentu, ktorý je 1098 00:48:52,400 --> 00:48:54,530 Nuly a tie, ktoré predstavujú svoj program. 1099 00:48:54,530 --> 00:48:56,690 Stručne povedané, je to proste super, super zlý. 1100 00:48:56,690 --> 00:48:56,860 Je to tak? 1101 00:48:56,860 --> 00:48:58,620 Váš program sa vymkla kontrole. 1102 00:48:58,620 --> 00:49:02,840 Používate spôsobom viac pamäte, ako ste zamýšľali všetko kvôli hlúpe 1103 00:49:02,840 --> 00:49:03,920 chyba, v tomto prípade. 1104 00:49:03,920 --> 00:49:08,160 Alebo v tomto prípade, veľmi zámerne vykonáva funkcie volať seba. 1105 00:49:08,160 --> 00:49:09,210 Teraz to nie je tak zlé. 1106 00:49:09,210 --> 00:49:12,540 Funkcia volania sa vlastne má veľkú silu 1107 00:49:12,540 --> 00:49:13,700 keď ju použijete správne. 1108 00:49:13,700 --> 00:49:15,650 Osobne som nepoužil správne tu. 1109 00:49:15,650 --> 00:49:16,940 >> Takže to nie je tak zlé. 1110 00:49:16,940 --> 00:49:20,620 Ale fakt, že som vlastne nikdy prestať volať sám je základným 1111 00:49:20,620 --> 00:49:23,050 slabosť tu tohto programu. 1112 00:49:23,050 --> 00:49:25,090 Tak kam ideme s tým všetkým? 1113 00:49:25,090 --> 00:49:26,230 No, čo sa skutočne deje? 1114 00:49:26,230 --> 00:49:30,010 Keď zavolám prírastok funkcie, ako by sme robili v tých príkladoch, 1115 00:49:30,010 --> 00:49:33,290 Mám hodnotu ako 1, že som sa prejsť dovnútra 1116 00:49:33,290 --> 00:49:35,820 Aj odovzdať kópiu číslo jedna. 1117 00:49:35,820 --> 00:49:37,080 Tak sa stane nasledujúce. 1118 00:49:37,080 --> 00:49:40,390 Tak poďme do prírastku príklade. 1119 00:49:40,390 --> 00:49:44,230 A tento chlapík tamto. 1120 00:49:44,230 --> 00:49:46,800 Tak tu je to, čo sa vlastne deje. 1121 00:49:46,800 --> 00:49:50,770 Keď som volal prírastok, a ja odovzdať x, obrazovo, čo je 1122 00:49:50,770 --> 00:49:53,660 tu deje, je to - 1123 00:49:53,660 --> 00:50:00,240 či budem mať hodnotu 1 uloženú tu, a ja som vlastne volajú prírastok, ktorý 1124 00:50:00,240 --> 00:50:02,680 sa teraz nazýva refrén - 1125 00:50:02,680 --> 00:50:04,010 jo, to je hádzanie ma tu. 1126 00:50:04,010 --> 00:50:06,750 Takže povedzme tento prírastok. 1127 00:50:06,750 --> 00:50:09,420 A my nevieme, čo to ďalšie funkcie to bude. 1128 00:50:09,420 --> 00:50:14,270 Takže čo sa vlastne deje, je tu niekde v hlavnej, mám kus 1129 00:50:14,270 --> 00:50:16,670 pamäť, ktorá je uloženie čísla 1. 1130 00:50:16,670 --> 00:50:19,730 Keď hovorím, prírastok, ja som s použitím iného kus pamäte, ale teraz som 1131 00:50:19,730 --> 00:50:20,840 majú kópiu 1. 1132 00:50:20,840 --> 00:50:25,480 Keď som zvýšte túto hodnotu, to sa stáva 2 - hrozne napísaný na 1133 00:50:25,480 --> 00:50:26,420 Obrazovka tu. 1134 00:50:26,420 --> 00:50:30,550 Ale potom, čo sa stane, akonáhle prírastku vráti? 1135 00:50:30,550 --> 00:50:34,610 Táto pamäť len dostane odovzdaný späť do operačného systému, čo znamená, že všetky 1136 00:50:34,610 --> 00:50:37,470 ste urobil, je nič užitočného. 1137 00:50:37,470 --> 00:50:43,460 Ten, ktorý bol pôvodne obsiahnutý v main je stále v skutočnosti neexistujú. 1138 00:50:43,460 --> 00:50:44,650 >> Tak kam pôjdeme s tým? 1139 00:50:44,650 --> 00:50:49,400 No, ukázalo sa, že v pamäti máte tento chrbtom k sebe postupnosť 1140 00:50:49,400 --> 00:50:50,940 bytov, ktoré si môžete dať veci dovnútra 1141 00:50:50,940 --> 00:50:53,760 A ukázalo sa, že sme už videli niečo, čo zahŕňa uvedenie 1142 00:50:53,760 --> 00:50:55,100 veci späť k sebe, aby sa chrbtom k sebe. 1143 00:50:55,100 --> 00:51:00,170 Čo je reťazec, založený na týždeň a teraz sa týždeň dva? 1144 00:51:00,170 --> 00:51:01,840 Takže je to len zbierka postáv. 1145 00:51:01,840 --> 00:51:05,290 Tak to dopadá, rovnako ako si môžete dať čísla v pamäti, podobne môžete 1146 00:51:05,290 --> 00:51:06,900 dal znakov v pamäti. 1147 00:51:06,900 --> 00:51:09,810 A akonáhle začneme putting znaky v pamäti späť k sebe dozadu, aby 1148 00:51:09,810 --> 00:51:12,800 späť, sa ukazuje, že s najjednoduchšie veci, ako je pre sláčiky alebo 1149 00:51:12,800 --> 00:51:14,510 kým slučka, môžeme určiť iteráciou - 1150 00:51:14,510 --> 00:51:17,130 zľava doprava cez znakov v reťazci - 1151 00:51:17,130 --> 00:51:20,720 a začať masírovať ich do rôznych postáv úplne. 1152 00:51:20,720 --> 00:51:25,550 By sa mohlo stať B. B by sa mohol stať C. Takže nakoniec môžeme vziať 1153 00:51:25,550 --> 00:51:28,830 Anglické vety, ktoré skutočne zmysel a previesť každý z tých, 1154 00:51:28,830 --> 00:51:32,440 listy jeden po čase prechádzal našej pamäti počítača vľavo 1155 00:51:32,440 --> 00:51:34,300 právo skutočne šifrovanie. 1156 00:51:34,300 --> 00:51:36,590 >> Takže poďme sa náš päťminútovú prestávku tu, a až sa vrátime, stretneme sa 1157 00:51:36,590 --> 00:51:39,060 kto tento proces zakódovania informácií. 1158 00:51:41,640 --> 00:51:43,180 >> Dobrá. 1159 00:51:43,180 --> 00:51:48,440 Takže ako sme sa vrhnúť na nejaký krypto a tieto veci tzv pole, dovoľte mi, aby som 1160 00:51:48,440 --> 00:51:51,610 pauza pre prípadné otázky, pretože mám pocit, že som naozaj trochu zmätené niektorých 1161 00:51:51,610 --> 00:51:52,230 tieto témy. 1162 00:51:52,230 --> 00:51:53,940 Takže poďme opraviť hneď, či môžeme. 1163 00:51:53,940 --> 00:51:56,480 Tak sme sa rozprávali o návratových hodnôt. 1164 00:51:56,480 --> 00:51:58,630 Hovorili sme o argumenty. 1165 00:51:58,630 --> 00:52:02,330 A hovorili sme o tomto pojme, ktorý sa vrátime v nasledujúcich týždňoch 1166 00:52:02,330 --> 00:52:07,140 príde, nahliadnutie pamäte ako celú partiou týchto naukladaných 1167 00:52:07,140 --> 00:52:08,540 podnosy, aby som tak povedal. 1168 00:52:08,540 --> 00:52:13,460 Od dolnej hore, tak, že každý zásobník, ktorý sa dal na stack predstavuje 1169 00:52:13,460 --> 00:52:15,160 funkcia, ktorá je v súčasnej dobe nazýva. 1170 00:52:17,970 --> 00:52:20,300 Nejaké otázky? 1171 00:52:20,300 --> 00:52:22,890 Tak čo - skúsim pokladám otázku. 1172 00:52:22,890 --> 00:52:25,520 Stále kazí, ale teraz to - you've všetci videli chlapcovu tvár. 1173 00:52:25,520 --> 00:52:27,020 Takže sa vrátime k tomu. 1174 00:52:27,020 --> 00:52:29,700 >> Dovoľte mi teda položiť otázku tu. 1175 00:52:29,700 --> 00:52:34,810 Dovoľte mi, aby som zjednodušiť to späť k tomu, čo bolo predtým, než niektoré z našich predchádzajúcich Q & A. 1176 00:52:34,810 --> 00:52:41,730 A skutočnosť, že prírastok má otvorenú zátvorku, int číslo, uzavretá 1177 00:52:41,730 --> 00:52:42,260 zátvorky. 1178 00:52:42,260 --> 00:52:46,370 Čo int číslo predstavuje? 1179 00:52:46,370 --> 00:52:47,250 [Nepočuteľné] 1180 00:52:47,250 --> 00:52:47,870 DAVID J. Malan: argument. 1181 00:52:47,870 --> 00:52:50,732 Dobre, ale čo je to argument? 1182 00:52:50,732 --> 00:52:51,620 [Nepočuteľné] 1183 00:52:51,620 --> 00:52:52,500 DAVID J. Malan: Je nám ľúto, čo to je? 1184 00:52:52,500 --> 00:52:53,150 SPEAKER 3: Niečo vám prejsť dovnútra 1185 00:52:53,150 --> 00:52:53,570 DAVID J. Malan: Dobre. 1186 00:52:53,570 --> 00:52:54,780 Takže niečo, že odovzdáte palcov 1187 00:52:54,780 --> 00:52:56,560 A všeobecnejšie, je to len vstup. 1188 00:52:56,560 --> 00:52:59,860 Ak píšete funkciu a túto funkciu je zmysel života, je to 1189 00:52:59,860 --> 00:53:03,290 niečo trochu iného každom použití, potom jediný spôsob, ako 1190 00:53:03,290 --> 00:53:07,710 Aby sa tak stalo skutočne sa zdá byť to, aby sa vstupom tak, aby sa 1191 00:53:07,710 --> 00:53:10,180 môže robiť niečo iné s tým vstupom zakaždým. 1192 00:53:10,180 --> 00:53:13,590 >> Takže budete musieť zadať dve veci, keď funkcia má vstupy. 1193 00:53:13,590 --> 00:53:17,240 Musíte zadať meno, ktoré chcete, aby sa týmto vstupom, čisto pre 1194 00:53:17,240 --> 00:53:20,790 vlastné pohodlie, takže môžete odkazovať sa na to vo funkcii, ktorá vám 1195 00:53:20,790 --> 00:53:23,610 yourself písanie, ako som tu v súlade 32. 1196 00:53:23,610 --> 00:53:27,840 Ale tiež je potrebné zadať jej typ, pretože C je programovací jazyk 1197 00:53:27,840 --> 00:53:28,840 že len vyžaduje 1198 00:53:28,840 --> 00:53:31,810 že ak chcete premennú, budete musieť povedať počítači, čo 1199 00:53:31,810 --> 00:53:32,790 Dátový typ je, 1200 00:53:32,790 --> 00:53:35,540 z veľkej časti tak, že to vie, koľko bitov sa 1201 00:53:35,540 --> 00:53:37,230 prideliť pre uvedené premenné. 1202 00:53:37,230 --> 00:53:38,600 Vzhľadom k tomu, že by mohlo byť šesť - 1203 00:53:38,600 --> 00:53:39,990 Ospravedlňujeme sa, nebude to šesť. 1204 00:53:39,990 --> 00:53:41,050 To môže byť 16. 1205 00:53:41,050 --> 00:53:41,630 To môže byť 8. 1206 00:53:41,630 --> 00:53:44,410 To môže byť 32, dokonca 64. 1207 00:53:44,410 --> 00:53:45,820 Ale počítač potrebuje vedieť. 1208 00:53:45,820 --> 00:53:49,110 Teraz int na ľavej strane predstavuje to, čo naopak? 1209 00:53:52,825 --> 00:53:53,780 [Nepočuteľné] 1210 00:53:53,780 --> 00:53:54,570 DAVID J. Malan: Čo je to? 1211 00:53:54,570 --> 00:53:55,390 [Nepočuteľné] 1212 00:53:55,390 --> 00:53:57,920 DAVID J. Malan: Typ funkcie, a konkrétnejšie, 1213 00:53:57,920 --> 00:53:59,755 typ jeho výstupu. 1214 00:53:59,755 --> 00:54:00,220 Právo. 1215 00:54:00,220 --> 00:54:04,220 Takže vzhľadom k tomu, vec v zátvorke predstavuje jeho vklad, ak existuje, je 1216 00:54:04,220 --> 00:54:06,640 vec vľavo predstavuje jeho výstupu. 1217 00:54:06,640 --> 00:54:10,560 A v tomto prípade, prírastok zrejme vráti int. 1218 00:54:10,560 --> 00:54:14,590 A tak int je návratový typ tejto funkcie. 1219 00:54:14,590 --> 00:54:16,090 >> Čo to znamená vrátiť? 1220 00:54:16,090 --> 00:54:19,810 Doslova, môžete použiť kľúčové slovo návrat. 1221 00:54:19,810 --> 00:54:24,640 A potom, keď to, čo sa vracia do pravej kľúčového slova je 1222 00:54:24,640 --> 00:54:28,340 integer, potom je to skutočne v súlade s tým, čo sme sľúbili. 1223 00:54:28,340 --> 00:54:31,110 Dalo by sa to urobiť niečo také - 1224 00:54:31,110 --> 00:54:32,280 ahoj, svet - 1225 00:54:32,280 --> 00:54:33,500 pretože to je reťazec. 1226 00:54:33,500 --> 00:54:35,440 Je zrejmé, že je to celé číslo. 1227 00:54:35,440 --> 00:54:40,450 Takže v skratke, záťaž je naozaj na nás, programátor, ako špecifické 1228 00:54:40,450 --> 00:54:44,730 k tomu, čo sa vraciame a potom vlastne ísť o vrátení. 1229 00:54:44,730 --> 00:54:49,030 A potom, aby sa tad jasnejšie kontext - 1230 00:54:49,030 --> 00:54:50,080 tu je znovu. 1231 00:54:50,080 --> 00:54:51,060 Kontext - 1232 00:54:51,060 --> 00:54:52,830 Veľkým prekvapením prichádza len chvíľu. 1233 00:54:52,830 --> 00:54:57,720 Kontext tu teraz je, že váš počítač je pamäť, opäť, 1234 00:54:57,720 --> 00:54:59,070 gigabyte, dva gigabajty, čokoľvek. 1235 00:54:59,070 --> 00:54:59,630 Možno je to viac. 1236 00:54:59,630 --> 00:55:00,540 Možno je to menej. 1237 00:55:00,540 --> 00:55:03,750 Ale počítač považuje to, že majú rôzne oddiely. 1238 00:55:03,750 --> 00:55:04,860 Niečo je tam dole. 1239 00:55:04,860 --> 00:55:06,020 Niečo iného ide tam. 1240 00:55:06,020 --> 00:55:07,540 Rôzne veci ide v stredu. 1241 00:55:07,540 --> 00:55:09,300 A dnes, práve sme začať rozprávať tento príbeh. 1242 00:55:09,300 --> 00:55:11,130 >> Ale vrátime sa na tento v priebehu času. 1243 00:55:11,130 --> 00:55:15,000 Pre túto chvíľu, len kúsok pamäte naozaj záleží, je text segmentu 1244 00:55:15,000 --> 00:55:17,160 preto, že práve predstavuje nuly a tie, 1245 00:55:17,160 --> 00:55:18,460 že zvonenie sa na výstup. 1246 00:55:18,460 --> 00:55:21,570 Takže pri spustení príkazu na klávesnici, ako a.out, alebo double 1247 00:55:21,570 --> 00:55:25,350 kliknite na ikonu v systéme Mac OS alebo Windows, je váš program načítať z pevného 1248 00:55:25,350 --> 00:55:26,930 ísť do pamäte RAM. 1249 00:55:26,930 --> 00:55:30,850 A to zvalil na vrchole RAM počítača, aby som tak povedal. 1250 00:55:30,850 --> 00:55:35,470 Teraz medzitým, ako váš program spustí a hlavné je volaná v 1251 00:55:35,470 --> 00:55:39,240 program, ktorý písal alebo program Microsoft alebo Apple písal, niektorý z jeho 1252 00:55:39,240 --> 00:55:42,930 lokálne premenné skončí tam dole na dne pamäti vášho počítača. 1253 00:55:42,930 --> 00:55:46,490 Ale ak hlavné volá inú funkciu, ktorá sama o sebe má premenné alebo 1254 00:55:46,490 --> 00:55:48,340 Tvrdenia, ktoré skončili nad ním. 1255 00:55:48,340 --> 00:55:50,670 A ak táto funkcia volá niečo, oni skončia nad ním, 1256 00:55:50,670 --> 00:55:51,840 nad ním, nad ním. 1257 00:55:51,840 --> 00:55:56,100 A iba raz funkcií sa vykonáva spustením robí balík zásobníkov, tak 1258 00:55:56,100 --> 00:55:58,320 hovoriť, začnú sa dostať nižšie a nižšie. 1259 00:55:58,320 --> 00:56:03,370 A to je to, čo potom, v kocke, vysvetľuje, prečo, keď budete volať kocka - 1260 00:56:03,370 --> 00:56:04,660 alebo volajte prírastok - 1261 00:56:04,660 --> 00:56:06,490 vy okolo v kópii hodnoty. 1262 00:56:06,490 --> 00:56:09,840 A čo to znamená, obrazovo je to, že ste doslova písať 1263 00:56:09,840 --> 00:56:14,540 číslo 1 v inej časti pamäte, meniace sa, že 1-2, v prípade, že 1264 00:56:14,540 --> 00:56:15,360 prírastok - 1265 00:56:15,360 --> 00:56:17,450 alebo na 8, v prípade, že kocky - 1266 00:56:17,450 --> 00:56:21,450 a potom hádzať, že pamäť sa preč akonáhle prírastkom alebo kocky 1267 00:56:21,450 --> 00:56:23,410 funkcia vracia. 1268 00:56:23,410 --> 00:56:24,267 >> Otázka. 1269 00:56:24,267 --> 00:56:25,517 [Nepočuteľné] 1270 00:56:28,090 --> 00:56:29,970 DAVID J. Malan: Kde - globálne premenné sú uložené v to, čo je 1271 00:56:29,970 --> 00:56:32,960 v súčasnej dobe volal inicializované dáta alebo neinicializovaný dát. 1272 00:56:32,960 --> 00:56:35,900 Rozdiel je, ak máte globálne premenné, a priradiť ju 1273 00:56:35,900 --> 00:56:39,530 okamžite hodnota sa rovná registrovať, to skončí na vrchole. 1274 00:56:39,530 --> 00:56:43,390 A ak si len povedať, int x bodkočiarku bez hodnoty, skončí mierne 1275 00:56:43,390 --> 00:56:46,670 nižšia RAM jednoducho podľa konvencie. 1276 00:56:46,670 --> 00:56:49,308 Ďalšie otázky. 1277 00:56:49,308 --> 00:56:49,750 Dobrá. 1278 00:56:49,750 --> 00:56:53,040 >> Takže tento obrázok vráti, ako sme si silnejší s tým, čo môžeme urobiť 1279 00:56:53,040 --> 00:56:53,830 s počítačom. 1280 00:56:53,830 --> 00:56:58,790 Ale teraz, poďme sa stručne úvod do kryptografie, špecifický druh 1281 00:56:58,790 --> 00:57:01,910 kryptografia, ktorá sa nerieši všetky problémy sveta, ale to riešiť 1282 00:57:01,910 --> 00:57:02,480 niektoré z nich. 1283 00:57:02,480 --> 00:57:06,090 V tomto prípade tu máme niečo, čo nazýva tajný kľúč kryptografie. 1284 00:57:06,090 --> 00:57:10,430 A tajný kľúč kryptografia, ako už názov napovedá, pochádza jeho bezpečnosť 1285 00:57:10,430 --> 00:57:11,330 z tajomstiev. 1286 00:57:11,330 --> 00:57:14,720 Tak napríklad, ak ste späť na základnej škole a ste okolo 1287 00:57:14,720 --> 00:57:18,040 malé tajomstvo milostný list pre chlapca alebo dievča sa tlakom na - ak 1288 00:57:18,040 --> 00:57:20,820 chcel odovzdať, že cez publikum, pravdepodobne by sa písať 1289 00:57:20,820 --> 00:57:24,120 taká poznámka v angličtine alebo aký je váš rodný jazyk, je, skôr si 1290 00:57:24,120 --> 00:57:25,800 môže zašifrovať. 1291 00:57:25,800 --> 00:57:27,820 Alebo môžete len poslať textovú správu v týchto dňoch. 1292 00:57:27,820 --> 00:57:30,310 Ale možno v skutočnosti odovzdať im odkaz v celej triede. 1293 00:57:30,310 --> 00:57:33,820 A k tomu to bezpečne, tak aby vaši priatelia a učiteľ 1294 00:57:33,820 --> 00:57:36,820 Neviem, čo píšete, môžete prísť s pomerne jednoduchou 1295 00:57:36,820 --> 00:57:37,800 algoritmus - 1296 00:57:37,800 --> 00:57:39,290 mladý, že ste mohol byť - 1297 00:57:39,290 --> 00:57:40,780 len vyškriabať slová. 1298 00:57:40,780 --> 00:57:44,390 Takže namiesto písania, môžete si napísať B. Miesto B, môžete si napísať 1299 00:57:44,390 --> 00:57:46,670 C. Miesto C, môžete napísať D, a tak ďalej. 1300 00:57:46,670 --> 00:57:50,020 Alebo by ste mohli prísť s sofistikovanejšie preklad listov 1301 00:57:50,020 --> 00:57:51,300 na rôznych písmen. 1302 00:57:51,300 --> 00:57:55,440 Ale úlovok je chlapec alebo dievča, ktoré posielate na vedomie potrebuje 1303 00:57:55,440 --> 00:57:56,850 niečo vedieť. 1304 00:57:56,850 --> 00:57:59,620 Čo je to, čo, samozrejme? 1305 00:57:59,620 --> 00:58:01,400 Rovnako ako to, čo vaše tajomstvo. 1306 00:58:01,400 --> 00:58:04,620 Rovnako ako to, čo je, že mapovanie medzi AS a BS a CS a DS? 1307 00:58:04,620 --> 00:58:08,780 Je to jednoduchým pridaním, aby som tak povedal, na každú z listov ísť od 1308 00:58:08,780 --> 00:58:09,730 A do B, B a C? 1309 00:58:09,730 --> 00:58:11,350 Je to zložitejšie, ako to? 1310 00:58:11,350 --> 00:58:16,450 Takže vy a vaša rozdrviť potrebujete mať túto tajnú informáciu. 1311 00:58:16,450 --> 00:58:18,170 Ale je tu trochu catch-22 tu. 1312 00:58:18,170 --> 00:58:20,760 Ak je to vôbec prvýkrát, posielate milostný list prostredníctvom 1313 00:58:20,760 --> 00:58:25,590 triedy, ako je ten chlapec, alebo dievča bude vedieť, čo je tajomstvo ešte je? 1314 00:58:25,590 --> 00:58:28,450 Takže tajný šifrovací kľúč nevyrieši všetky problémy sveta. 1315 00:58:28,450 --> 00:58:30,490 A je to vlastne vzťah, ktorý sa vrátime do k 1316 00:58:30,490 --> 00:58:31,370 semester Koniec. 1317 00:58:31,370 --> 00:58:35,970 >> Podobne, žiadny z nás asi niekedy poslal - 1318 00:58:35,970 --> 00:58:39,453 podobne, sa väčšina z nás nevie niekto, že pracuje, napríklad na 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 A napriek tomu, mnohí z nás pravdepodobne kúpil veci na Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 A my sme sa učili predpokladať, že tieto e-commerce 1322 00:58:45,670 --> 00:58:47,060 transakcie sú bezpečné. 1323 00:58:47,060 --> 00:58:47,210 Je to tak? 1324 00:58:47,210 --> 00:58:49,310 Adresa URL pravdepodobne hovorí https. 1325 00:58:49,310 --> 00:58:51,590 Tam je možná hlúpa ikona visiaceho zámku niekde. 1326 00:58:51,590 --> 00:58:54,680 Tam je nejaká kryptografie zabezpečenie informácií o kreditnej karte 1327 00:58:54,680 --> 00:58:56,980 medzi vami a Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 A napriek tomu, ak kryptografie znamená vedieť, nejaké tajomstvo, a napriek tomu nemám 1329 00:59:00,410 --> 00:59:03,330 Poznáte niekoho na Amazon, a ja som rozhodne nie sú usporiadané akékoľvek 1330 00:59:03,330 --> 00:59:07,350 Tajomstvo s niekým na Amazon, ako sa môj počítač, alebo môj prehliadač robiť toto? 1331 00:59:07,350 --> 00:59:10,100 No, ukázalo sa, že je to iné typy kryptografie celkom, ktoré rieši 1332 00:59:10,100 --> 00:59:10,740 tento problém. 1333 00:59:10,740 --> 00:59:13,610 Ale pre dnešok, budeme sústrediť na jednoduchý, kde si môžete dohodnúť vo 1334 00:59:13,610 --> 00:59:18,480 vopred vedieť nejaké tajomstvo, rovnako ako plus 1 alebo nejaké mapovanie medzi AS a BS. 1335 00:59:18,480 --> 00:59:20,710 >> A proces kryptografie všeobecne zahŕňa to. 1336 00:59:20,710 --> 00:59:23,550 Máte nejaký obyčajný text, je znázornené tu vľavo. 1337 00:59:23,550 --> 00:59:26,260 Môžete ho spustiť cez nejaký druh algoritmu alebo postupu 1338 00:59:26,260 --> 00:59:27,670 pre šifrovanie ho. 1339 00:59:27,670 --> 00:59:31,390 Možno, že to len sa stane B, B sa stáva C. A potom skončiť s 1340 00:59:31,390 --> 00:59:32,260 šifrovaný text. 1341 00:59:32,260 --> 00:59:36,450 Medzitým, akonáhle váš rozdrviť dostane tajnú poznámku, on alebo ona má potom 1342 00:59:36,450 --> 00:59:39,950 dešifrovať to tým, že všeobecne zmeny tohto algoritmu tak, aby si 1343 00:59:39,950 --> 00:59:41,640 späť na obyčajný text. 1344 00:59:41,640 --> 00:59:43,860 Teraz tam sú fyzické inkarnácie tohto. 1345 00:59:43,860 --> 00:59:46,720 Napríklad, to je malé tajomstvo dekodér krúžok. 1346 00:59:46,720 --> 00:59:50,060 A to je krúžok v tom zmysle, že sú dva vytočí tu. 1347 00:59:50,060 --> 00:59:53,630 Na vonkajšej okraji tejto veci, je tu písmená A až Z, 1348 00:59:53,630 --> 00:59:55,110 aj keď to v náhodnom poradí. 1349 00:59:55,110 --> 00:59:58,410 A na vnútornej strane, je to vlastne niektoré čísla, je taká, že s týmto 1350 00:59:58,410 --> 01:00:02,940 krúžok, môžete trochu zase zvonka, ale nie vo vnútri, aby line up 1351 01:00:02,940 --> 01:00:04,110 čísla s písmenami. 1352 01:00:04,110 --> 01:00:08,290 A v klipe, ktorý sa chystáte vidieť - z ktorých niektoré môžu byť vidieť 24/7 1353 01:00:08,290 --> 01:00:11,120 okolo Vianoc z filmu s názvom Vianočný príbeh. 1354 01:00:11,120 --> 01:00:16,050 Uvidíte, že malý Ralphie bol tak dychtivý zistiť, čo malý sirota 1355 01:00:16,050 --> 01:00:19,810 Annie je tajný odkaz bol k nemu, ktoré boli oznámené, myslím, že vo 1356 01:00:19,810 --> 01:00:22,810 tvorí numerických správ na sériovom krabici. 1357 01:00:22,810 --> 01:00:26,760 A vy ste musel zbierať všetky tie malé karty, ktoré boli dodané 1358 01:00:26,760 --> 01:00:27,480 v obilí poľa. 1359 01:00:27,480 --> 01:00:28,320 Vy ste mali na e-mail im palce 1360 01:00:28,320 --> 01:00:31,060 Vy ste mali dostať späť tajný dekodéru prsteň, takže si môžete konečne prísť 1361 01:00:31,060 --> 01:00:34,190 čo je mapovanie medzi písmenami a číslicami, 1362 01:00:34,190 --> 01:00:35,420 alebo písmená a písmená. 1363 01:00:35,420 --> 01:00:39,790 Tak som vám tento krátky klip z A Christmas Story motivovať PSet 2 a 1364 01:00:39,790 --> 01:00:42,340 naša diskusia, vo chvíli, polí. 1365 01:00:42,340 --> 01:00:43,773 Takže tu máme Ralphie. 1366 01:00:43,773 --> 01:00:44,126 >> [PREHRÁVANIE] 1367 01:00:44,126 --> 01:00:47,470 -Či už je to všetkým známe a rôzne, že Ralph Parker je vymenovaný 1368 01:00:47,470 --> 01:00:50,690 člen Little Orphan Annie kruhu tajné a je oprávnený ku všetkým 1369 01:00:50,690 --> 01:00:53,500 so cťou a výhody vyskytujúce nej. 1370 01:00:53,500 --> 01:00:56,040 -Signed, Little Orphan Annie. 1371 01:00:56,040 --> 01:00:58,730 Podpísal, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 V atramentu! 1373 01:01:00,150 --> 01:01:02,910 Vyznamenania a výhody, ktoré už vo veku deviatich. 1374 01:01:09,970 --> 01:01:10,730 Poď, dáme sa do toho. 1375 01:01:10,730 --> 01:01:15,000 Nepotrebujem All That Jazz o pašerákov a pirátov. 1376 01:01:15,000 --> 01:01:17,624 -Počúvajte zajtra večer na záverečnej dobrodružstvo Black 1377 01:01:17,624 --> 01:01:19,710 Pirate Ship. 1378 01:01:19,710 --> 01:01:23,380 Teraz je čas na tajné správy Annie pre vás členovia 1379 01:01:23,380 --> 01:01:25,670 Tajného kruhu. 1380 01:01:25,670 --> 01:01:30,260 Pamätajte si, deti, môžu len členovia tajnej kruhu Annie dekódovať 1381 01:01:30,260 --> 01:01:31,660 Annie je tajný odkaz. 1382 01:01:31,660 --> 01:01:36,230 Nezabudnite, Annie je v závislosti na vás. 1383 01:01:36,230 --> 01:01:38,720 Nastavte svoje špendlíky B2. 1384 01:01:38,720 --> 01:01:41,040 Tu je správa. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Ja som vo svojom prvom tajnej schôdzke. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre bol vo veľkej hlasovej večer. 1389 01:01:51,700 --> 01:01:54,890 Mohol by som povedať, že dnešná správa je naozaj dôležité. 1390 01:01:54,890 --> 01:01:56,750 -3, 25. 1391 01:01:56,750 --> 01:01:58,590 To je správa z Annie sama. 1392 01:01:58,590 --> 01:01:59,840 Pamätajte si, že nikomu to nehovorte. 1393 01:02:04,570 --> 01:02:08,750 -90 Sekúnd neskôr, som v jedinej miestnosti v dome, kde deväťročný chlapec 1394 01:02:08,750 --> 01:02:12,980 mohol sedieť v súkromí a dekódované. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. som išiel na ďalšie. 1396 01:02:17,130 --> 01:02:20,330 E. Prvé slovo je byť. 1397 01:02:20,330 --> 01:02:22,670 S. Prichádzalo to teraz ľahšie. 1398 01:02:22,670 --> 01:02:24,590 U. 1399 01:02:24,590 --> 01:02:26,510 -Oh, no tak, Ralphie. 1400 01:02:26,510 --> 01:02:28,430 Musím ísť. 1401 01:02:28,430 --> 01:02:30,350 -Budem hneď dole, ma. 1402 01:02:30,350 --> 01:02:33,720 -Gee výtvarník. 1403 01:02:33,720 --> 01:02:38,270 -T, O. Uistite sa, že. 1404 01:02:38,270 --> 01:02:40,000 Uistite sa, že to, čo? 1405 01:02:40,000 --> 01:02:42,105 Čo bolo Little Orphan Annie snaží povedať? 1406 01:02:42,105 --> 01:02:43,095 Uistite sa, že to, čo? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy má ísť. 1409 01:02:44,580 --> 01:02:45,570 Mohol by si prosím prísť? 1410 01:02:45,570 --> 01:02:46,560 -Dobre, ma. 1411 01:02:46,560 --> 01:02:48,540 Hneď som von. 1412 01:02:48,540 --> 01:02:50,580 -Bola som bližšie. 1413 01:02:50,580 --> 01:02:52,550 Napätie bolo hrozné. 1414 01:02:52,550 --> 01:02:53,355 Čo to bolo? 1415 01:02:53,355 --> 01:02:56,315 Osud planéty môže visieť na vlásku. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy má ísť. 1418 01:02:59,165 --> 01:03:02,310 -Budem mať pravdu von, preboha. 1419 01:03:02,310 --> 01:03:04,000 -Gee, skoro tam. 1420 01:03:04,000 --> 01:03:05,180 Moje prsty letel. 1421 01:03:05,180 --> 01:03:07,150 Moja myseľ bola oceľová pasca. 1422 01:03:07,150 --> 01:03:08,790 Každý pórov vibrovaním. 1423 01:03:08,790 --> 01:03:10,040 To bolo skoro jasno. 1424 01:03:10,040 --> 01:03:13,400 Áno, áno, áno, áno. 1425 01:03:13,400 --> 01:03:18,960 -Uistite sa, že piť svoju Ovaltine. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 Podradný komerčné? 1428 01:03:28,200 --> 01:03:29,640 Skurvysyna. 1429 01:03:29,640 --> 01:03:33,340 [END videoprehrávanie] 1430 01:03:33,340 --> 01:03:36,040 >> DAVID J. Malan: Tak tu to máme kryptografiu. 1431 01:03:36,040 --> 01:03:39,670 Tak ako v počítači môžeme ísť o zavádzanie alebo 1432 01:03:39,670 --> 01:03:40,950 predstavujúce veci, ako je tento? 1433 01:03:40,950 --> 01:03:44,430 No, my potrebujeme spôsob, ako vyjadriť seba trochu pružnejšie než 1434 01:03:44,430 --> 01:03:46,420 naše premenné, doteraz dovolené. 1435 01:03:46,420 --> 01:03:47,370 Sme mali ints. 1436 01:03:47,370 --> 01:03:48,380 Sme mali znakov. 1437 01:03:48,380 --> 01:03:50,790 Sme mali plaváky a dvojlôžkových a niekoľko ďalších. 1438 01:03:50,790 --> 01:03:55,050 Ale to sú jednotlivé kusy pamäte, ktoré nie sú naozaj nám umožňujú 1439 01:03:55,050 --> 01:03:58,010 vyjadriť veci, ako slov a viet a fráz. 1440 01:03:58,010 --> 01:04:00,200 Naozaj, sme len také veci reťazca. 1441 01:04:00,200 --> 01:04:03,650 Sľúbili sme, že je to naozaj len zjednodušenie v CS50 1442 01:04:03,650 --> 01:04:07,020 knižnica, ktorá sme v úmysle odtrhnite. 1443 01:04:07,020 --> 01:04:08,970 >> A tak poďme začať robiť, že tu. 1444 01:04:08,970 --> 01:04:11,130 Nechaj ma ísť ďalej a otvoriť súbor - 1445 01:04:11,130 --> 01:04:13,770 Všetky tieto súbory sú k dispozícii ako obvykle on-line - 1446 01:04:13,770 --> 01:04:19,120 volal array.c vyriešiť problém nesúvisí s reťazcami, ale že maľuje 1447 01:04:19,120 --> 01:04:23,040 obrázok tu o tom, ako by sme mohli použiť niečo ako pole. 1448 01:04:23,040 --> 01:04:25,530 Pole je dátový typ. 1449 01:04:25,530 --> 01:04:31,320 Je to typ premennej, druhov, ktorý má viac menších dátových typov 1450 01:04:31,320 --> 01:04:34,150 vnútri neho chrbtom k sebe k sebe dozadu. 1451 01:04:34,150 --> 01:04:37,700 Tak napríklad, ak chceme napísať malý program, ktorý vám dáva 1452 01:04:37,700 --> 01:04:42,110 kvíz priemer na kurz ako 50, ktorá má dva kvízy, mohli by ste veľmi ľahko 1453 01:04:42,110 --> 01:04:45,170 napísať tento program - na základe aj na niektoré z minulého týždňa materiálu - 1454 01:04:45,170 --> 01:04:47,770 pomocou GetInt a pár premenných. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, a je to celkom jednoduché. 1456 01:04:51,920 --> 01:04:55,930 Možno je to 10, 20 riadkov kódu, max, realizovať program, ktorý sa spýta 1457 01:04:55,930 --> 01:05:01,170 užívateľ na dva kvízy skóre a potom vypočíta ich priemer pridaním 1458 01:05:01,170 --> 01:05:03,850 spoločne, delenie dvoma, a potom tlač výsledkov. 1459 01:05:03,850 --> 01:05:06,380 By sme pravdepodobne mohli urobiť celkom ľahko teraz po 1460 01:05:06,380 --> 01:05:07,510 niektoré počet minút. 1461 01:05:07,510 --> 01:05:11,005 >> Ale problém je, že predpokladám, že 50 mala tri kvízy alebo štyri. 1462 01:05:11,005 --> 01:05:13,510 Predpokladajme, že ste chceli použiť rovnaký program pre triedu, ktorá mala 1463 01:05:13,510 --> 01:05:14,850 týždenný kvízy. 1464 01:05:14,850 --> 01:05:16,610 Premýšľajte o triedy, ktorá sa raz týždenne kvízy. 1465 01:05:16,610 --> 01:05:20,610 Ak je ako 16 alebo týždňov, v semestri, teraz máte 16 premenných - 1466 01:05:20,610 --> 01:05:24,270 int quiz1, int quiz2, int quiz3, int quiz4. 1467 01:05:24,270 --> 01:05:27,560 Akonáhle začnete vidieť túto redundanciu, tento kopírovanie a vkladanie 1468 01:05:27,560 --> 01:05:31,390 kódu, mal by začať robiť si prajete tam bol lepší spôsob. 1469 01:05:31,390 --> 01:05:33,930 A našťastie, pretože pole, tam je. 1470 01:05:33,930 --> 01:05:34,980 Takže ideme na to. 1471 01:05:34,980 --> 01:05:38,430 Po prvé, dovoľte mi predstaviť veľmi jednoduchú vec, že ​​sme sa nepoužíva tak ďaleko, 1472 01:05:38,430 --> 01:05:40,140 ale uvidíte to občas v kóde. 1473 01:05:40,140 --> 01:05:42,360 To je to, čo sa všeobecne nazýva konštanta. 1474 01:05:42,360 --> 01:05:45,790 Takže je to konštanta v tom zmysle, že táto hodnota nikdy sa mení. 1475 01:05:45,790 --> 01:05:49,210 Ľudská konvencie pri vytváraní konštanta je použiť všetky kapitál 1476 01:05:49,210 --> 01:05:51,940 listy, len preto, že to naozaj stojí v kóde. 1477 01:05:51,940 --> 01:05:55,960 A špeciálne kľúčové slovo, ktoré používate v C je # define. 1478 01:05:55,960 --> 01:06:00,250 Takže keď poviete # define, potom medzeru, potom slovo, ktoré chcete použiť pre 1479 01:06:00,250 --> 01:06:03,260 na konštantnej meno, a potom je hodnota konštanty. 1480 01:06:03,260 --> 01:06:06,180 Takže upozornenie, toto je odlišné od priradenia niečo premenné. 1481 01:06:06,180 --> 01:06:07,020 Nie je znamienko rovnosti. 1482 01:06:07,020 --> 01:06:08,240 Nie je bodkočiarka. 1483 01:06:08,240 --> 01:06:11,410 To je to, čo je všeobecne známe ako preprocesoru smernice, ale na 1484 01:06:11,410 --> 01:06:12,210 že iný čas. 1485 01:06:12,210 --> 01:06:18,540 >> Pre túto chvíľu, to vytvára nemenný nazýva hodnota kvízy, ktorých skutočná 1486 01:06:18,540 --> 01:06:19,940 číselná hodnota je 2. 1487 01:06:19,940 --> 01:06:24,020 Takže kdekoľvek vidíte kvízy, kvízy, kvízy v tomto súbore, ktorý je 1488 01:06:24,020 --> 01:06:25,410 len číslo 2. 1489 01:06:25,410 --> 01:06:28,100 Teraz, keď sa pozriem na hlavnú teraz, poďme sa pozrieť, ako to funguje. 1490 01:06:28,100 --> 01:06:29,500 Spočiatku to vyzerá trochu záhadný. 1491 01:06:29,500 --> 01:06:31,340 Ale je to všetko veci z prvej týždeň. 1492 01:06:31,340 --> 01:06:32,710 Požiadajte užívateľa, pre stupne. 1493 01:06:32,710 --> 01:06:33,630 Ako to urobíme? 1494 01:06:33,630 --> 01:06:35,470 No, v riadku 22 - 1495 01:06:35,470 --> 01:06:37,210 to je naozaj šťavnaté časť - 1496 01:06:37,210 --> 01:06:40,960 Prehlasujem, float, ale nie len jeden float. 1497 01:06:40,960 --> 01:06:44,620 Som prehlasuje, skôr pole pohyblivou rádovou čiarkou. 1498 01:06:44,620 --> 01:06:49,100 To je premenná bude nazývaný stupňa, ako vyplýva tu. 1499 01:06:49,100 --> 01:06:53,080 Ale jediný kus novej syntax potom sú tieto hranaté zátvorky, skutočnosť, 1500 01:06:53,080 --> 01:06:59,350 že som povedal, float stupňa a potom otvorte konzolu a potom číslo. 1501 01:06:59,350 --> 01:07:02,460 Všimnite si, či je to konštanta, je to rovnako ako sme to urobili. 1502 01:07:02,460 --> 01:07:06,890 To znamená, hey počítač, dať mi dva plaváky, a poďme spoločne volať 1503 01:07:06,890 --> 01:07:08,220 je stupňa. 1504 01:07:08,220 --> 01:07:11,920 Toto je v kontraste k oveľa nudnejšie procesu, ako je tento. 1505 01:07:11,920 --> 01:07:15,850 Float grade1, float grade2, a tak ďalej. 1506 01:07:15,850 --> 01:07:20,010 Takže poľa nám umožňuje realizovať túto myšlienku, ale oveľa menej ledabolo, v 1507 01:07:20,010 --> 01:07:24,630 takým spôsobom, že môžeme napísať jeden riadok kódu namiesto, povedzme, 16 pre 16 1508 01:07:24,630 --> 01:07:25,740 týždeň semestra. 1509 01:07:25,740 --> 01:07:29,950 Tak som nechcel, aby tvrdo kód 2, pretože ak si myslíte, že o tom teraz 1510 01:07:29,950 --> 01:07:34,160 logicky - Predpokladám, že budúci rok CS50 zmeny 3 kvízy miesto. 1511 01:07:34,160 --> 01:07:35,510 A ja som mal číslo 2 tu. 1512 01:07:35,510 --> 01:07:36,600 Mal som číslo 2 tu. 1513 01:07:36,600 --> 01:07:37,580 Mal som číslo 2 tu. 1514 01:07:37,580 --> 01:07:38,560 Mal som číslo 2 tu. 1515 01:07:38,560 --> 01:07:43,180 To sa stáva veľmi únavné a veľmi ľahko pokaziť a náhodne zmeniť 1516 01:07:43,180 --> 01:07:47,690 jedna hodnota na hodnotu 3 a chýbať inú hodnotu 2. 1517 01:07:47,690 --> 01:07:52,460 Takže budem miesto abstraktné toto preč a použiť táto konštanta, že jej 1518 01:07:52,460 --> 01:07:54,120 názov napovedá, nikdy nemení. 1519 01:07:54,120 --> 01:07:57,710 A teraz, bez ohľadu na to, či máme rôzne kvízy ešte tento rok alebo budúci rok, som 1520 01:07:57,710 --> 01:08:01,210 musieť zmeniť na jednom mieste, tu hore. 1521 01:08:01,210 --> 01:08:02,720 >> Takže to je všetko, konštanta je. 1522 01:08:02,720 --> 01:08:08,680 Medzitým, nová pojmovým znakom je to, že z poľa. 1523 01:08:08,680 --> 01:08:14,660 Takže hranaté zátvorky mi toľko plaváky a umožňuje mi kolektívne 1524 01:08:14,660 --> 01:08:16,630 nazývajú stupňa tu. 1525 01:08:16,630 --> 01:08:17,990 Takže teraz sa pozrieme, čo budem robiť. 1526 01:08:17,990 --> 01:08:20,359 Tu v súlade 24 je začiatok slučky for. 1527 01:08:20,359 --> 01:08:22,260 To je naozaj nič vymysleného. 1528 01:08:22,260 --> 01:08:25,060 Je to len pomocou kvízov miesto hard-kódované číslo. 1529 01:08:25,060 --> 01:08:27,790 Ale nič intelektuálne inak, tam z minulého týždňa. 1530 01:08:27,790 --> 01:08:29,040 To je len printf. 1531 01:08:29,040 --> 01:08:35,490 Takže printf ("kvíz číslo% d% d"), pretože chcem vytlačiť dať mi kvíz 1532 01:08:35,490 --> 01:08:38,050 číslo jedna z dvoch a potom dva z dvoch. 1533 01:08:38,050 --> 01:08:39,850 Takže je to čisto estetická vec. 1534 01:08:39,850 --> 01:08:42,500 Ale zaujímavá časť je teraz v súlade 27. 1535 01:08:42,500 --> 01:08:48,310 Aby bolo možné vyplniť v jednom z dvoch zástupných symbolov s plávajúcou čiarkou 1536 01:08:48,310 --> 01:08:51,029 hodnota, môžete opäť použiť hranaté zátvorky. 1537 01:08:51,029 --> 01:08:55,620 V tomto prípade, ja som s použitím aj preto, že to pre sláčiky začala s i rovná 1538 01:08:55,620 --> 01:08:57,560 akú hodnotu, zrejme? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Tak na prvý iterácii tohto slučky, je to, ako ja 1541 01:09:01,350 --> 01:09:02,689 napísal v kóde. 1542 01:09:02,689 --> 01:09:05,580 Ale na druhej iterácii tohto slučky, je to, ako ja 1543 01:09:05,580 --> 01:09:07,750 napísal v mojom kóde. 1544 01:09:07,750 --> 01:09:10,750 Ale fakt, že som pomocou premennej je perfektný, pretože, ako už názov 1545 01:09:10,750 --> 01:09:14,300 navrhuje, je to rôzne jej hodnotu na každej iterácii. 1546 01:09:14,300 --> 01:09:17,370 Takže som vyplnenie tohto poľa jeden bod v čase. 1547 01:09:17,370 --> 01:09:18,910 Čo to pole vyzerá? 1548 01:09:18,910 --> 01:09:21,430 No, dôvod, prečo som kreslil to super jednoduchý obdĺžnik na obrazovke tu 1549 01:09:21,430 --> 01:09:23,350 predtým bol z tohto dôvodu. 1550 01:09:23,350 --> 01:09:27,279 Pole je len kus pamäte nasleduje ďalší kus pamäte, 1551 01:09:27,279 --> 01:09:30,109 nasleduje ďalší kus pamäte, a tak ďalej. 1552 01:09:30,109 --> 01:09:35,260 Takže ak má pole je veľkosti 2, v tomto prípade tu, by som mala robiť podľa 1553 01:09:35,260 --> 01:09:37,590 písanie v mojich kvízov skóre, ako je tu. 1554 01:09:37,590 --> 01:09:39,430 Mám 100 na tento jeden. 1555 01:09:39,430 --> 01:09:42,020 A potom som dostal 99 na tento jeden. 1556 01:09:42,020 --> 01:09:46,040 Potom je táto pamäť môže vôbec použiť, pretože som sa len opýtal 1557 01:09:46,040 --> 01:09:48,689 počítač pre pole o veľkosti 2. 1558 01:09:48,689 --> 01:09:50,180 Tieto štvorce sú tam stále. 1559 01:09:50,180 --> 01:09:50,340 Je to tak? 1560 01:09:50,340 --> 01:09:52,500 Stále máte dva gigabajty RAM, aj keď ste len 1561 01:09:52,500 --> 01:09:53,979 žiada pre dva plaváky. 1562 01:09:53,979 --> 01:09:58,710 Takže myšlienka polí je, že počítač jednoducho vezme kus pamäte 1563 01:09:58,710 --> 01:10:03,230 a potom rozdeľuje menšie kusy chrbtom k sebe k sebe dozadu. 1564 01:10:03,230 --> 01:10:04,740 A tak to je všetko, pole je. 1565 01:10:04,740 --> 01:10:09,080 Je to súvislá kus pamäte, vnútri ktoré si môžete dať veci. 1566 01:10:09,080 --> 01:10:12,400 >> Teraz sa to stane a potom robiť len nejaké nudné aritmetiku. 1567 01:10:12,400 --> 01:10:16,170 Keby som prejdite tu, to je miesto, kde som sa potom určiť iteráciou cez pole. 1568 01:10:16,170 --> 01:10:19,410 Som prišiel s súčtu všetkých hodnôt v poli. 1569 01:10:19,410 --> 01:10:22,390 A potom som použiť koleso funkcie tu skutočne robiť 1570 01:10:22,390 --> 01:10:23,940 Celkovo delené kvízy. 1571 01:10:23,940 --> 01:10:27,450 Ale dovoľte mi, aby som mávať ruku na to ako akýsi dosť aritmetiky pre teraz. 1572 01:10:27,450 --> 01:10:30,010 Ale všetko, čo robí pre mňa nakoniec je výpočet priemeru. 1573 01:10:30,010 --> 01:10:33,640 Takže prvý kvíz a druhý kvíz, delené 2, a potom tlač 1574 01:10:33,640 --> 01:10:34,700 to sa ako int. 1575 01:10:34,700 --> 01:10:39,030 >> Ale poďme teraz prechod na iný príklad s názvom string1, 1576 01:10:39,030 --> 01:10:42,370 ktorý maľuje podobný obraz, ale pomocou reťazca. 1577 01:10:42,370 --> 01:10:45,550 Nechaj ma ísť napred a zjednodušiť tým, len na chvíľu. 1578 01:10:45,550 --> 01:10:48,340 A odpusť odsadenie pre teraz. 1579 01:10:48,340 --> 01:10:52,280 Oznámenie v súlade 19 tohto príkladu, mám reťazec od užívateľa. 1580 01:10:52,280 --> 01:10:55,780 Všimnime si ale to, čo som robil ďalší v radoch 22 vpred. 1581 01:10:55,780 --> 01:11:00,260 Ja som vlastne iterácie od i do - a to je nový trik - 1582 01:11:00,260 --> 01:11:02,730 strlen, dĺžka reťazca. 1583 01:11:02,730 --> 01:11:07,010 To je funkcia, ktorá prichádza s C, že ak odovzdať reťazec, to vám povie 1584 01:11:07,010 --> 01:11:08,950 si, koľko znakov je v tomto reťazci. 1585 01:11:08,950 --> 01:11:09,440 To je všetko. 1586 01:11:09,440 --> 01:11:12,520 Skutočnosť, že je to strlen miesto reťazca dĺžky je len preto, že je to 1587 01:11:12,520 --> 01:11:13,040 stručnejší. 1588 01:11:13,040 --> 01:11:17,100 Pred 30 rokmi, sa páčila písať veci ako stručne, ako je to možné. 1589 01:11:17,100 --> 01:11:19,080 Takže sme stále tento dohovor tu. 1590 01:11:19,080 --> 01:11:21,730 i + + znamená len zvyšovať aj v každej iterácii. 1591 01:11:21,730 --> 01:11:24,310 A teraz si toho všimnúť, čo je naozaj zaujímavé. 1592 01:11:24,310 --> 01:11:28,730 Takže v riadku 24, hovorím počítač, dajte mi charakter, osem 1593 01:11:28,730 --> 01:11:30,770 bity, a nazývať to c 1594 01:11:30,770 --> 01:11:35,370 Ale čo je to na pravej strane hovorí? 1595 01:11:35,370 --> 01:11:38,150 V angličtine, čo to predstavuje? 1596 01:11:38,150 --> 01:11:40,070 [Nepočuteľné] 1597 01:11:40,070 --> 01:11:40,490 DAVID J. Malan: Presne tak. 1598 01:11:40,490 --> 01:11:42,390 Daj mi prvý znak v poli. 1599 01:11:42,390 --> 01:11:45,400 Alebo všeobecnejšie, daj mi i-ty znak v poli. 1600 01:11:45,400 --> 01:11:48,230 A uvedomiť si, že je to dôležité dnes, ako počítačoví vedci, sme vlastne 1601 01:11:48,230 --> 01:11:49,330 počítať od 0. 1602 01:11:49,330 --> 01:11:51,290 Nemusíte uváženia teraz začať robiť to. 1603 01:11:51,290 --> 01:11:54,580 Teraz sa majú správať v súlade s počítačom očakávania a 1604 01:11:54,580 --> 01:11:58,010 počítať od nuly, pretože [0] bude prvý 1605 01:11:58,010 --> 01:11:59,670 znak v reťazci. 1606 01:11:59,670 --> 01:12:01,320 [1] bude druhý. 1607 01:12:01,320 --> 01:12:03,610 [2] bude tretí, a tak ďalej. 1608 01:12:03,610 --> 01:12:08,840 Takže tohto programu, keď som skompilovať - ​​to je, opäť, string1. 1609 01:12:08,840 --> 01:12:11,040 >> Tak, aby string1. 1610 01:12:11,040 --> 01:12:16,730 A teraz som bežať string1 vo svojom terminálovom okne. 1611 01:12:16,730 --> 01:12:19,180 Je to čakanie na vstup, tak budem písať, povedzme, Dávidovi. 1612 01:12:19,180 --> 01:12:20,080 Enter. 1613 01:12:20,080 --> 01:12:23,350 A teraz sa vytlačí DAVID všetko na rôznych tratiach, pretože 1614 01:12:23,350 --> 01:12:24,430 upozornenie, čo robím. 1615 01:12:24,430 --> 01:12:27,510 Ja tlače jeden znak v čase. 1616 01:12:27,510 --> 01:12:29,100 Teraz nebudeme zachádzať do podrobností dnes na túto tému. 1617 01:12:29,100 --> 01:12:31,610 Ale ja som odstránil pred chvíľou tejto kontroly tu. 1618 01:12:31,610 --> 01:12:36,310 Ukazuje sa, že v prípade, že používateľ je nechová, sporné, alebo len 1619 01:12:36,310 --> 01:12:41,780 zmätený, môžete skutočne nedávajú reťazec obšírnejšie. 1620 01:12:41,780 --> 01:12:43,640 Ak stlačíte zlé tlačidlo na klávesnici, môžete dať 1621 01:12:43,640 --> 01:12:44,390 no reťazec vôbec. 1622 01:12:44,390 --> 01:12:47,790 Alebo ak ste škodlivý, môžete skúsiť vložiť do spoločnosti GIGABYTE, to stojí 1623 01:12:47,790 --> 01:12:49,380 esej vyplniť tento reťazec. 1624 01:12:49,380 --> 01:12:52,060 A ak je počítač spustený z pamäte, sa ukazuje, že ideme 1625 01:12:52,060 --> 01:12:54,310 získať späť túto špeciálnu hodnotu s názvom null. 1626 01:12:54,310 --> 01:12:57,550 Takže teraz, len viem, že tam je to špeciálna hodnota zvaná null že 1627 01:12:57,550 --> 01:13:01,000 nám umožní skontrolovať, kedy sme z pamäte, okrem iného. 1628 01:13:01,000 --> 01:13:07,330 >> Ale keď otvorím sa teraz řetězec2, všimnete jeden rozdiel tu. 1629 01:13:07,330 --> 01:13:09,760 Všimnite si, jeden rozdiel tu s string2. 1630 01:13:09,760 --> 01:13:13,260 S string2, to pre sláčiky je trochu iný. 1631 01:13:13,260 --> 01:13:16,350 Dovoľte mi, aby som odstrániť nuly, takže môžeme hovoriť o tých niekedy inokedy. 1632 01:13:16,350 --> 01:13:18,460 Ale to, čo je o pre sláčiky tentoraz? 1633 01:13:21,580 --> 01:13:23,160 A môžem sa vrátiť k predchádzajúcemu príkladu. 1634 01:13:23,160 --> 01:13:24,800 Tak to je verzia dva. 1635 01:13:24,800 --> 01:13:27,020 Toto je verzia jedna. 1636 01:13:27,020 --> 01:13:31,935 Jedna, dva, jedna, dve. 1637 01:13:35,030 --> 01:13:38,240 Takže strlen hovor je kde? 1638 01:13:38,240 --> 01:13:40,420 Je to v prvej časti slučky for. 1639 01:13:40,420 --> 01:13:43,060 Akékoľvek myšlienky, prečo to robím? 1640 01:13:43,060 --> 01:13:43,690 Jo. 1641 01:13:43,690 --> 01:13:46,010 [Nepočuteľné] 1642 01:13:46,010 --> 01:13:47,630 DAVID J. Malan: Takže nemáme volanie funkcie zakaždým. 1643 01:13:47,630 --> 01:13:48,040 Presne tak. 1644 01:13:48,040 --> 01:13:50,350 Spomeňte si na slučiek, ktoré sú super jednoduchý, akonáhle trochu 1645 01:13:50,350 --> 01:13:52,180 chápať, že toto je inicializácia 1646 01:13:52,180 --> 01:13:53,330 stav, a aktualizácie. 1647 01:13:53,330 --> 01:13:55,430 Problém je v tom, že táto podmienka sa deje na každom 1648 01:13:55,430 --> 01:13:56,600 iterácia slučky. 1649 01:13:56,600 --> 01:13:59,930 A tak v tomto príklade tu, čo je zlé o tom 1650 01:13:59,930 --> 01:14:03,500 že toto je moja podmienka? 1651 01:14:03,500 --> 01:14:05,920 Voláte strlen znovu a znovu a znovu. 1652 01:14:05,920 --> 01:14:08,990 Ale potom, čo som napísal v roku DAVID, dĺžka tohto reťazca je päť. 1653 01:14:08,990 --> 01:14:11,560 A že to nebude meniť na každej iterácii slučky, pretože 1654 01:14:11,560 --> 01:14:15,560 reťazec je stále D - V-I-D. Tak to je náznak, čo sa deje, aby sa stal 1655 01:14:15,560 --> 01:14:19,650 stále dôležitejšie nápad známy ako konštrukčný rozhodnutie, kde - jednoducho nemajú 1656 01:14:19,650 --> 01:14:21,640 aby počítač robiť zbytočnú prácu. 1657 01:14:21,640 --> 01:14:25,630 >> Teraz rovnako ako plížiť náhľad PSet 2, PSet 2 v štandardnej edícii, je 1658 01:14:25,630 --> 01:14:28,850 bude výzvou, aby ste skutočne realizovať určitý počet šifier, niektoré 1659 01:14:28,850 --> 01:14:32,650 počet šifrovacích algoritmov, takže si môžete aj šifrovať a dešifrovať 1660 01:14:32,650 --> 01:14:35,530 tajné správy, podobne ako na jednej Ralphie tam dekódovať. 1661 01:14:35,530 --> 01:14:38,720 V hackerské vydanie PSet 2, budeme ísť trochu ďalej. 1662 01:14:38,720 --> 01:14:42,010 Budeme vám odovzdá súbor od skutočného počítačového systému, ktorý obsahuje 1663 01:14:42,010 --> 01:14:45,690 celá partia užívateľských mien a skutočných zašifrovaných hesiel, a výzva 1664 01:14:45,690 --> 01:14:49,110 pre hacker vydanie bude bezva týchto hesiel a obrázok 1665 01:14:49,110 --> 01:14:53,060 čo kryptografie alebo čo tajomstvo bolo použité skutočne 1666 01:14:53,060 --> 01:14:55,080 generovanie týchto hesiel. 1667 01:14:55,080 --> 01:14:58,360 A ak budeme to urobiť pomocou novej funkcie tu o C, ktorá dám 1668 01:14:58,360 --> 01:15:02,200 stačí demo, známy ako argumenty príkazového riadku. 1669 01:15:02,200 --> 01:15:05,930 >> Tak to dopadá, ako si niektorí z vás možno videli v oddiele alebo v učebniciach, 1670 01:15:05,930 --> 01:15:09,850 Hlavným nemusí vždy byť neplatné v zátvorkách. 1671 01:15:09,850 --> 01:15:14,060 Ukazuje sa, že hlavnou môže tiež byť písaný ako to, s dvoma argumentmi, 1672 01:15:14,060 --> 01:15:19,690 argc a ArGV, kde argc je počet slov, ktoré zadáte po 1673 01:15:19,690 --> 01:15:21,940 v programe názov na príkazovom riadku. 1674 01:15:21,940 --> 01:15:24,550 A ArGV je skutočná slová. 1675 01:15:24,550 --> 01:15:29,470 A ako hranaté zátvorky tam naznačujú, ArGV je zrejme poľa. 1676 01:15:29,470 --> 01:15:33,720 Je to bude reťazec za reťazec po reťazec v pamäti. 1677 01:15:33,720 --> 01:15:36,170 Takže to, čo budeme môcť robiť, počnúc PSet 2, je 1678 01:15:36,170 --> 01:15:37,310 niečo také. 1679 01:15:37,310 --> 01:15:42,450 Ak urobím argv1, ktorý je príkladom vrátime do pondelka, a spustite 1680 01:15:42,450 --> 01:15:45,180 to, zistíte, že to nevyzerá na nič zatiaľ. 1681 01:15:45,180 --> 01:15:47,050 Je to len vytlačí jeho vlastné meno. 1682 01:15:47,050 --> 01:15:53,220 Ale keď poviem zbohom triedy, všimnite si, že tento program zrejme opakuje 1683 01:15:53,220 --> 01:15:57,030 nad každým zo slov, ktoré boli zadané na príkazovom riadku. 1684 01:15:57,030 --> 01:16:02,050 A prostriedky, ktoré získame prístup k slov, ktoré užívateľ 1685 01:16:02,050 --> 01:16:06,780 zadali na príkazovom riadku je zmena hlavné, počnúc tento víkend, od int 1686 01:16:06,780 --> 01:16:10,710 main (void) int main (argc, ArGV). 1687 01:16:10,710 --> 01:16:13,700 A tak sa zrodí argumenty príkazového riadku. 1688 01:16:13,700 --> 01:16:17,210 A akonáhle sa dostanete naozaj sofistikovaný na to, budete môcť písať 1689 01:16:17,210 --> 01:16:21,370 Naozaj Tripp programy, ako je tento, ktorá sem ide nad rámec 1690 01:16:21,370 --> 01:16:25,520 niektoré funkcie, že sme urobili tak ďaleko, ale všetko celkom silný. 1691 01:16:25,520 --> 01:16:27,330 >> Takže necháme to s tým na obrazovke. 1692 01:16:27,330 --> 01:16:29,160 A uvidíme sa v pondelok.