1 00:00:07,420 --> 00:00:08,160 [Powered by Google Translate] DAVID J. Malan: Dobře. 2 00:00:08,160 --> 00:00:11,170 To je CS50, a to je konec týdne dva. 3 00:00:11,170 --> 00:00:14,650 Pokud očekáváte, že hlad po této době zítra, vím, že s tím budeme 4 00:00:14,650 --> 00:00:18,920 svolat jako malé skupiny zítra, ve čtvrtek, 13:15. 5 00:00:18,920 --> 00:00:21,460 Tam je to URL zde, pokud chcete RSVP. 6 00:00:21,460 --> 00:00:25,270 Prostor je omezený, proto prosím omluvte, pokud byl formulář vyplněn až v době, kdy 7 00:00:25,270 --> 00:00:26,680 vyplnit to. 8 00:00:26,680 --> 00:00:29,400 Další URL ačkoli to by mohlo být zajímavé je to. 9 00:00:29,400 --> 00:00:32,409 >> Takže jen asi měsíc času, kurz se bude k dispozici 10 00:00:32,409 --> 00:00:36,090 všechny obecněji přes EDX, přes které lidé na internetu budou 11 00:00:36,090 --> 00:00:39,580 možnost sledovat spolu, angažovat se v průběhu poměrně aktivně, ve skutečnosti. 12 00:00:39,580 --> 00:00:43,070 Budou používat CS50 Appliance a CS50 diskutovat a většina z 13 00:00:43,070 --> 00:00:45,840 různé softwarové nástroje, které jsme již používali tento semestr. 14 00:00:45,840 --> 00:00:49,030 A jednou z iniciativ bychom chtěli, aby se na jako experiment v letošním roce 15 00:00:49,030 --> 00:00:53,120 je vidět, kolik obsahu můžeme přeložit do jiných mluvený a 16 00:00:53,120 --> 00:00:54,110 psané jazyky. 17 00:00:54,110 --> 00:00:58,000 Takže pokud byste mohli mít zájem o účast v tomto projektu, podle něhož 18 00:00:58,000 --> 00:01:02,090 budeme poskytovat anglické přepisy a titulky pro kurz je 19 00:01:02,090 --> 00:01:05,190 přednášky a šortky a semináře a profily a podobně - 20 00:01:05,190 --> 00:01:08,700 pokud mluvíte plynule nebo psát plynně nějaký jiný jazyk, by se 21 00:01:08,700 --> 00:01:12,240 rádi vtáhnout vás do tohoto projektu, kdy budete mít na jednom nebo více z 22 00:01:12,240 --> 00:01:15,340 Videa, jejich převedení do jazyka znáte docela dobře. 23 00:01:15,340 --> 00:01:19,050 Chcete-li dát vám pocit rozhraní, tam je to web-based uživatelské rozhraní 24 00:01:19,050 --> 00:01:22,330 že budeme používat, že vytvoří v podstatě uživatelské rozhraní, jako je tento. 25 00:01:22,330 --> 00:01:24,520 Toto bylo mi učil některé Halloween před. 26 00:01:24,520 --> 00:01:27,710 A na pravé straně tam v černém vedle těchto časových razítek, 27 00:01:27,710 --> 00:01:31,300 uvidíte různé věci, které vyšly z mých úst, že den. 28 00:01:31,300 --> 00:01:34,660 A pak pod ním, budete moci převést do nějakého jiného jazyka. 29 00:01:34,660 --> 00:01:37,840 Přesně to, co je mapování mezi, v tomto případě, anglický 30 00:01:37,840 --> 00:01:38,660 a, řekněme, španělsky. 31 00:01:38,660 --> 00:01:40,480 Takže je to vlastně velmi uživatelsky příjemný nástroj. 32 00:01:40,480 --> 00:01:43,690 Můžete přetáčet dopředu velmi rychle pomocí klávesových zkratek. 33 00:01:43,690 --> 00:01:46,710 Takže pokud byste chtěli zúčastnit tohoto experimentu a mít vaše slova 34 00:01:46,710 --> 00:01:50,730 vidět a číst potenciálně tisíce lidí tam, prosím, co mají pocit, 35 00:01:50,730 --> 00:01:51,960 možnost účastnit. 36 00:01:51,960 --> 00:01:56,940 >> Nyní jedno slovo o kotě od pondělí, jinak jsme poslali příliš 37 00:01:56,940 --> 00:01:58,120 strašidelné zprávy. 38 00:01:58,120 --> 00:02:02,130 Si uvědomit, že pracovní doba navrhnout a jako sekce naznačují, 39 00:02:02,130 --> 00:02:05,110 Konstrukce předmětu je velmi mnoho se studenti spolupracují a 40 00:02:05,110 --> 00:02:09,250 mluví k práci problémových souborů a problémy společně. 41 00:02:09,250 --> 00:02:13,630 A opravdu linka právě přichází do, opět, práce, kterou nakonec 42 00:02:13,630 --> 00:02:16,420 by měl předložit by měl být váš vlastní. 43 00:02:16,420 --> 00:02:19,080 A tak je to, zcela upřímně - v úředních hodinách, je to úplně normální - 44 00:02:19,080 --> 00:02:21,560 je to úplně očekávat, dokonce - k chatování s některými 45 00:02:21,560 --> 00:02:22,370 přátelé vedle vás. 46 00:02:22,370 --> 00:02:25,240 Jestliže on nebo ona se potýká s nějakým tématem, a ty jsi jako, oh, hluboko 47 00:02:25,240 --> 00:02:27,750 mi, abych vám pohled některých řádek kódu, který jsem napsal. 48 00:02:27,750 --> 00:02:28,290 To je v pořádku. 49 00:02:28,290 --> 00:02:28,700 To se stává. 50 00:02:28,700 --> 00:02:31,580 A to je velmi příznivé, myslím, s procesem učení. 51 00:02:31,580 --> 00:02:35,270 Pokud line, opět dostane přešel je, když hlava je trochu naklonil nad 52 00:02:35,270 --> 00:02:38,800 zde příliš mnoho sekund nebo minut pro které opravdu mají jen 53 00:02:38,800 --> 00:02:41,250 byl odblokování příležitost pro svého přítele. 54 00:02:41,250 --> 00:02:43,870 A jistě, když se věci vyměňují prostřednictvím e-mailu a Dropbox a 55 00:02:43,870 --> 00:02:45,350 jako, i zde je řada. 56 00:02:45,350 --> 00:02:48,940 Takže v každém případě, cítit pohodlně a cítit povzbuzeni k chatovat s přáteli 57 00:02:48,940 --> 00:02:51,270 a spolužáci o psets a další. 58 00:02:51,270 --> 00:02:54,680 A jen uvědomit, že to, co si nakonec že by měly být opravdu 59 00:02:54,680 --> 00:02:57,780 produkt vaší tvorby a ne někdo jiný. 60 00:02:57,780 --> 00:03:01,010 >> Takže ve stejném stylu plyšové stvoření, můžete 61 00:03:01,010 --> 00:03:02,820 víte o tom chlapovi tady. 62 00:03:02,820 --> 00:03:06,180 Tak tohle je děsivě kýčovité film z let. 63 00:03:06,180 --> 00:03:08,680 Každý, kdo sem viděl Spaceballs? 64 00:03:08,680 --> 00:03:09,120 Dobrá. 65 00:03:09,120 --> 00:03:10,220 Tak dobré číslo zde. 66 00:03:10,220 --> 00:03:13,840 Tak toto je naše úžasně akademický způsob zavádění dnes nakonec 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émů domény specifické pro PSet 2, která přijde 69 00:03:19,010 --> 00:03:22,770 z pozdní zítra večer, je ponořit se do světa kryptografie, která 70 00:03:22,770 --> 00:03:26,380 je umění šifrování nebo kódování informací. 71 00:03:26,380 --> 00:03:30,160 A to nakonec týká světě bezpečnosti. 72 00:03:30,160 --> 00:03:34,440 >> Nyní zabezpečení pro většinu nás přichází v podobě poměrně světských mechanismů. 73 00:03:34,440 --> 00:03:36,920 Každý z nás má uživatelská jména a hesla. 74 00:03:36,920 --> 00:03:41,350 A každý z nás má velmi špatné uživatelská jména a hesla, s největší pravděpodobností. 75 00:03:41,350 --> 00:03:45,250 Pokud je heslo stejné na několika webových stránkách, že to asi není 76 00:03:45,250 --> 00:03:47,920 nejlepší nápad, jak budeme diskutovat na semestr konci. 77 00:03:47,920 --> 00:03:51,680 Pokud heslo je napsané na lepicí poznámku - není vtip - na vašem 78 00:03:51,680 --> 00:03:55,130 monitor, to taky nemusí být nutně nejlepší design, ale docela obyčejný 79 00:03:55,130 --> 00:03:56,140 jev. 80 00:03:56,140 --> 00:04:00,420 A pokud si nejste s použitím kryptografie k šifrování hesel, které jsou 81 00:04:00,420 --> 00:04:01,610 obzvláště zranitelné. 82 00:04:01,610 --> 00:04:04,670 Takže pokud si myslíte, že jste byl výborný chytrá mající skrytou Word 83 00:04:04,670 --> 00:04:07,740 dokumentu někde na pevném disku, který má všechna vaše hesla, ale 84 00:04:07,740 --> 00:04:10,550 je to ve složce, která nikdo to bude vypadat v, že také není moc 85 00:04:10,550 --> 00:04:11,540 bezpečný mechanismus. 86 00:04:11,540 --> 00:04:15,100 A tak to, co Pset 2 se představí, je to umění kryptografie a 87 00:04:15,100 --> 00:04:18,300 zakódování informace, takže věci jako hesla jsou 88 00:04:18,300 --> 00:04:19,500 všechny bezpečnější. 89 00:04:19,500 --> 00:04:24,500 Tak, aby motivoval tento velmi reálné problém s velmi non-real-world 90 00:04:24,500 --> 00:04:28,740 scénář, dovolte mi, abych vám představil jednu z našich oblíbených klipů sem z toho 91 00:04:28,740 --> 00:04:29,895 film, Spaceballs. 92 00:04:29,895 --> 00:04:30,565 >> [PŘEHRÁVÁNÍ] 93 00:04:30,565 --> 00:04:32,995 -Přilba, můžete zloduch, co se děje? 94 00:04:32,995 --> 00:04:34,730 Co děláte s mou dcerou? 95 00:04:34,730 --> 00:04:38,960 -Dovolte, abych vám představil brilantní mladý plastického chirurga, Dr. Philip 96 00:04:38,960 --> 00:04:43,290 Schlotkin, největší nosu muž v celé 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 Nerozumím. 101 00:04:48,035 --> 00:04:49,480 Už měla na nose. 102 00:04:49,480 --> 00:04:51,490 Bylo to sladké 16 přítomna. 103 00:04:51,490 --> 00:04:53,090 -Ne, to není to, co si myslíte. 104 00:04:53,090 --> 00:04:55,150 Je to mnohem, mnohem horší. 105 00:04:55,150 --> 00:04:59,860 Pokud mi nedáš kombinaci se stíněním vzduchu, bude Dr. Schlotkin 106 00:04:59,860 --> 00:05:04,135 dát svou dceru zpět svůj starý nos. 107 00:05:04,135 --> 00:05:05,385 -Ne! 108 00:05:08,202 --> 00:05:10,186 Kde jsi to vzal? 109 00:05:10,186 --> 00:05:11,178 -Dobře. 110 00:05:11,178 --> 00:05:11,674 Řeknu. 111 00:05:11,674 --> 00:05:12,666 Řeknu. 112 00:05:12,666 --> 00:05:14,154 -Ne, tati, no. 113 00:05:14,154 --> 00:05:15,150 Nesmíte. 114 00:05:15,150 --> 00:05:16,460 -Ty jsi pravdu, má drahá. 115 00:05:16,460 --> 00:05:18,450 Bude se mi stýskat si nový nos. 116 00:05:18,450 --> 00:05:21,550 Ale já vám neřeknu jim kombinace bez ohledu na to, co. 117 00:05:21,550 --> 00:05:23,100 -Velmi dobře. 118 00:05:23,100 --> 00:05:25,510 Dr. Schlotkin, udělat si nejhorší. 119 00:05:25,510 --> 00:05:26,760 -Rádo se stalo. 120 00:05:30,560 --> 00:05:31,180 -Ne! 121 00:05:31,180 --> 00:05:33,450 Počkat, počkat. 122 00:05:33,450 --> 00:05:34,770 Řeknu. 123 00:05:34,770 --> 00:05:36,400 Řeknu. 124 00:05:36,400 --> 00:05:38,630 -Věděl jsem, že to bude fungovat. 125 00:05:38,630 --> 00:05:42,040 Dobře, dej mi to. 126 00:05:42,040 --> 00:05:46,890 -Kombinace 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 -Tři 133 00:05:50,715 --> 00:05:51,380 -Tři. 134 00:05:51,380 --> 00:05:52,390 -Tři. 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 kombinace je jeden, dva, tři, čtyři, pět. 142 00:06:03,770 --> 00:06:06,745 To je nejblbější kombinace, jakou jsem kdy v životě slyšel. 143 00:06:06,745 --> 00:06:09,290 To je ten druh věcí, idiot bude mít na jeho zavazadlech. 144 00:06:09,290 --> 00:06:11,540 -Děkuji vám, Vaše Výsosti. 145 00:06:11,540 --> 00:06:12,940 -Co jsi udělal? 146 00:06:12,940 --> 00:06:14,230 -Vypnul jsem zdi. 147 00:06:14,230 --> 00:06:14,630 -Ne, to ne. 148 00:06:14,630 --> 00:06:15,430 Vypnete celý film. 149 00:06:15,430 --> 00:06:16,722 -Musel jsem stiskl špatné tlačítko. 150 00:06:16,722 --> 00:06:18,078 -No, dal ji zpět. 151 00:06:18,078 --> 00:06:18,805 Dejte film zpět. 152 00:06:18,805 --> 00:06:19,080 -Ano, pane. 153 00:06:19,080 --> 00:06:19,270 Ano, pane. 154 00:06:19,270 --> 00:06:19,830 -Pojďme, Erna. 155 00:06:19,830 --> 00:06:20,270 Pojď, Gretchen. 156 00:06:20,270 --> 00:06:22,850 Samozřejmě, že vím, že budu ještě muset účtovat 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 kombinaci. 161 00:06:30,770 --> 00:06:31,390 -Velká. 162 00:06:31,390 --> 00:06:35,630 Nyní můžeme vzít i tu poslední závan čerstvého vzduchu z planety Druidia. 163 00:06:35,630 --> 00:06:36,550 Co je to kombinace? 164 00:06:36,550 --> 00:06:38,805 -Jedna, dvě, tři, čtyři, pět. 165 00:06:38,805 --> 00:06:40,610 -Jedna, dvě, tři, čtyři, pět? 166 00:06:40,610 --> 00:06:41,070 -Ano. 167 00:06:41,070 --> 00:06:41,760 -To je úžasné. 168 00:06:41,760 --> 00:06:45,200 Mám stejnou kombinaci na mém zavazadle. 169 00:06:45,200 --> 00:06:47,800 Připravte Spaceball 1 k okamžitému odletu. 170 00:06:47,800 --> 00:06:48,536 -Ano, pane. 171 00:06:48,536 --> 00:06:52,350 -A změnit kombinaci na mé zavazadla. 172 00:06:52,350 --> 00:06:53,250 -Au! 173 00:06:53,250 --> 00:06:55,020 [END VIDEOPŘEHRÁVÁNÍ] 174 00:06:55,020 --> 00:06:57,470 >> DAVID J. Malan: úžasné film, který by měl nyní všichni vidí. 175 00:07:00,600 --> 00:07:06,540 Takže souvislosti je, že s nezajištěnými údaje pochází příležitost 176 00:07:06,540 --> 00:07:07,790 zašifrovat a škrábat ho. 177 00:07:07,790 --> 00:07:11,060 A tak to, například, je příklad šifrované zprávě. 178 00:07:11,060 --> 00:07:12,980 To vlastně říká, že něco v angličtině. 179 00:07:12,980 --> 00:07:14,750 Ale to zjevně není zcela zřejmé. 180 00:07:14,750 --> 00:07:17,360 A my přijdeme kruh dnes šprýmaři odděleně, co to tajné 181 00:07:17,360 --> 00:07:18,380 zpráva je zde. 182 00:07:18,380 --> 00:07:22,370 Ale v reálném světě počítačů, věci se ani nepodíval, jako by mohli 183 00:07:22,370 --> 00:07:23,440 být anglických frází. 184 00:07:23,440 --> 00:07:27,500 Například, to je to, co můžete najít na standardního Linux nebo Mac nebo 185 00:07:27,500 --> 00:07:32,080 Unix počítač v souboru, který byl kdysi nazýván soubor s hesly. 186 00:07:32,080 --> 00:07:34,170 V současné době, je to už se stěhoval do jiných míst. 187 00:07:34,170 --> 00:07:38,660 Ale když se podíváte na správném místě v systému, uvidíte nejen svůj 188 00:07:38,660 --> 00:07:41,430 jméno nebo jiných lidí na systému, ale uvidíte, 189 00:07:41,430 --> 00:07:43,410 šifrovaná verze své heslo. 190 00:07:43,410 --> 00:07:47,800 Opravdu, slovo krypta se navrhuje, aby následující věci jsou šifrována. 191 00:07:47,800 --> 00:07:52,030 A tato série zdánlivě náhodných písmen a znaků a čísel a 192 00:07:52,030 --> 00:07:56,370 atd. lze dešifrovat pouze obecně znát nějaké tajemství - 193 00:07:56,370 --> 00:07:58,600 Tajné slovo, tajné číslo. 194 00:07:58,600 --> 00:08:02,760 A tak skutečně, umění kryptografie v konečném důsledku se scvrkává věřit některých 195 00:08:02,760 --> 00:08:05,700 třídění a věděl něco, co někdo jiný nemá. 196 00:08:05,700 --> 00:08:10,010 Budeme zkoumat to v trochu podrobněji dnes v PSet přijít. 197 00:08:10,010 --> 00:08:11,860 >> A nyní slovo na Pass / Fail. 198 00:08:11,860 --> 00:08:15,250 Tak především, jak někteří z vás se ponořila do PSet 1, spotřebič, a 199 00:08:15,250 --> 00:08:18,390 zcela nový svět pro sebe, si uvědomil, že frustrace a 200 00:08:18,390 --> 00:08:21,340 zmatenost a jen technické problémy se dají očekávat. 201 00:08:21,340 --> 00:08:24,410 Zejména s prvním Pset, kde je to prostě tak moc nového, jen na to, 202 00:08:24,410 --> 00:08:28,830 obeznámeni s ls a cd a všechny tyto tajemné příkazy v novém prostředí. 203 00:08:28,830 --> 00:08:32,679 A to je oddělený od skutečného materiálu a programování sám. 204 00:08:32,679 --> 00:08:35,960 Takže si uvědomit, také to, že tam jsou určitě úřední hodiny, které existují jako 205 00:08:35,960 --> 00:08:36,770 nosná konstrukce. 206 00:08:36,770 --> 00:08:38,620 Sekce začít letos v neděli. 207 00:08:38,620 --> 00:08:41,990 Ale co je nejdůležitější, pokud máte pocit, prostě, že to není 208 00:08:41,990 --> 00:08:44,420 svět pro tebe, si uvědomit, že je to opravdu jen nějakou dobu trvat. 209 00:08:44,420 --> 00:08:47,520 A byl to ne pro tuto příležitost před lety pro mne vezme třídu 210 00:08:47,520 --> 00:08:50,840 vyhověl / nevyhověl, upřímně, nikdy bych si dokonce nastavit nohu ve třídě. 211 00:08:50,840 --> 00:08:53,520 A můžete změnit až do, řekněme, pátý pondělí v kurzu. 212 00:08:53,520 --> 00:08:57,110 Takže pokud jste na okraji teď si uvědomit, že spíše než hlavu do jiné 213 00:08:57,110 --> 00:09:01,000 Vody úplně, to určitě zvažte jen změnou k přijetí / zamítnutí. 214 00:09:01,000 --> 00:09:03,750 Opět platí, že to není opravdu to kultura zde na Harvardu braní věcí 215 00:09:03,750 --> 00:09:08,080 vyhověl / nevyhověl, protože každý chce opravdu dosáhnout lepších výsledků, nebo. 216 00:09:08,080 --> 00:09:11,470 Ale upřímně řečeno, je to skvělý způsob, jak se snaží něco, že možná ne 217 00:09:11,470 --> 00:09:13,110 být obeznámeni s vámi. 218 00:09:13,110 --> 00:09:17,090 A ty skončíš dělat ve většině případů docela dobře, možná 219 00:09:17,090 --> 00:09:18,040 hodně k překvapení. 220 00:09:18,040 --> 00:09:20,850 A v Konkrétněji, co si myslím, vyhověl / nevyhověl obecně dělá, 221 00:09:20,850 --> 00:09:23,350 zejména pokud jste si mohli zkušenosti s PSet 0, pokud jste dal 222 00:09:23,350 --> 00:09:27,200 v 10 hodin, 15 hodin, 25 hodin do některých PSet - a ty jsi jenom bouchání 223 00:09:27,200 --> 00:09:28,180 vaše hlava proti zdi, 224 00:09:28,180 --> 00:09:29,850 a je to stále výborný pozdě v noci, 225 00:09:29,850 --> 00:09:31,880 ale vy jste vzali PSet jako 90% z cesty, 226 00:09:31,880 --> 00:09:33,780 víte, že prostě nemůže přijít na jednu věc - 227 00:09:33,780 --> 00:09:36,830 vyhověl / nevyhověl opravdu bere zmírnilo třídy jako je tato, kde si můžete řadit 228 00:09:36,830 --> 00:09:39,150 ze dne šťastně říká jo, já vím, že to není dokonalé. 229 00:09:39,150 --> 00:09:40,470 Ale já pracoval jsem prdel na to. 230 00:09:40,470 --> 00:09:42,410 Jsem docela spokojený s tím, kde to skončilo. 231 00:09:42,410 --> 00:09:44,780 A že bude splňovat očekávání vyhovuje / nevyhovuje. 232 00:09:44,780 --> 00:09:46,850 Takže se mějte 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 ti z vás, kteří se usilovně snaží využít Harvardskou univerzitu Wi-Fi vědět 235 00:09:50,980 --> 00:09:54,780 že je CS50 SSID, Wi-Fi připojení se vznáší, že jste 236 00:09:54,780 --> 00:09:56,520 může mít větší štěstí pro. 237 00:09:56,520 --> 00:09:59,430 Je to trochu paradoxní, že heslo pro toto - pokud byste chtěli vyzkoušet 238 00:09:59,430 --> 00:10:03,080 připojení k to pro lepší rychlosti a dejte nám vědět, pokud to není lepší - 239 00:10:03,080 --> 00:10:09,240 je jeden, dva, tři, čtyři, pět, celou cestu až na osm, protože osm je 240 00:10:09,240 --> 00:10:10,270 bezpečnější než pět. 241 00:10:10,270 --> 00:10:15,520 Takže pokud potřebujete Wi-Fi hesla, připojit se k CS50 bezdrátově zde. 242 00:10:15,520 --> 00:10:16,950 Jedna, dva, tři, čtyři, pět, šest, sedm, osm. 243 00:10:16,950 --> 00:10:20,440 A příspěvek na CS50 Diskutovat pokud máte stále přerušované problémy s připojením, 244 00:10:20,440 --> 00:10:24,880 a necháme pravomoci, které budou znát pro tento prostor. 245 00:10:24,880 --> 00:10:25,180 >> Dobrá. 246 00:10:25,180 --> 00:10:30,350 Tak rychlý teaser, zejména pro ty z vás, kteří jsou ventilátor chlapců a dívek 247 00:10:30,350 --> 00:10:31,900 všech věcí Apple. 248 00:10:31,900 --> 00:10:37,566 To, co jsem vyhrabal z několik let zpět byla tento soubor zde, ilock.c, jen 249 00:10:37,566 --> 00:10:40,930 druh učinit konkrétnější a složitější některé z více základních C 250 00:10:40,930 --> 00:10:42,350 programy jsme psali. 251 00:10:42,350 --> 00:10:44,360 Tak jsem otevřel tento soubor, ilock.c. 252 00:10:44,360 --> 00:10:46,830 Je k dispozici na přednášky stránce pro dnešek. 253 00:10:46,830 --> 00:10:49,470 Na levé straně, uvidíte dlouhý seznam funkcí. 254 00:10:49,470 --> 00:10:51,860 Takže ten chlapík, který napsal tento sepsal mnoho funkcí, 255 00:10:51,860 --> 00:10:53,290 víc než jen hlavní. 256 00:10:53,290 --> 00:10:55,490 Použil spoustu knihoven zde. 257 00:10:55,490 --> 00:11:00,450 A pokud začneme rolování, co to vlastně je, je velmi 258 00:11:00,450 --> 00:11:04,670 nejprve, já věřím, bezva pro původní iPhone. 259 00:11:04,670 --> 00:11:08,000 Pokud byste chtěli, aby útěk z vězení původní iPhone, což znamená, že untether 260 00:11:08,000 --> 00:11:11,800 to z AT & T a skutečně nainstalovat speciální software na něj a dělat věci, 261 00:11:11,800 --> 00:11:13,510 že Apple nechtěl, aby lidé mohli - 262 00:11:13,510 --> 00:11:17,020 dobře, někdo vzal čas, aby zjistili, jak přesně by mohl zneužít 263 00:11:17,020 --> 00:11:20,880 software chyby, omyly, chyby, v softwaru Apple. 264 00:11:20,880 --> 00:11:22,650 A tak se narodil ilock.c. 265 00:11:22,650 --> 00:11:26,670 Že pokud sestavují jej na počítači jej a nainstaloval na iPhone této 266 00:11:26,670 --> 00:11:29,810 byl připojen k počítači prostřednictvím, řekněme, USB kabel, by to vám 267 00:11:29,810 --> 00:11:33,360 správní nebo root oprávnění na vašem iPhone a nechat si udělat docela hodně 268 00:11:33,360 --> 00:11:34,170 co chcete. 269 00:11:34,170 --> 00:11:36,740 >> A tak tam bylo to fascinující hra na kočku a myš mezi Apple a 270 00:11:36,740 --> 00:11:39,920 zbytek světa, zejména jako oni, stejně jako mnoho firem, ve snaze zajistit 271 00:11:39,920 --> 00:11:43,220 jejich věci dolů tak, aby si můžete dělat jen s tím, co mají v úmyslu. 272 00:11:43,220 --> 00:11:46,620 Ale díky lidem, jako je tento a jejich chápání low-level 273 00:11:46,620 --> 00:11:50,580 detaily a, v tomto případě, C programování a spoustu známých konstruktů 274 00:11:50,580 --> 00:11:54,630 že jsme začali hrát s, jste schopni skutečně využívají 275 00:11:54,630 --> 00:11:59,050 hardware ve způsobu vidíte fit a ne nutně nějaký právnické osoby. 276 00:11:59,050 --> 00:12:01,360 Tak například, nemám tušení, co to dělá. 277 00:12:01,360 --> 00:12:03,220 Ale getVersion zní docela jednoduché. 278 00:12:03,220 --> 00:12:05,480 A vypadá to, že je to funkce, která tato osoba napsala. 279 00:12:05,480 --> 00:12:09,240 Vezměte nějaký integer jako argument, nic nevrací, ale 280 00:12:09,240 --> 00:12:13,080 Zdá se, smyčky s pro smyčky zde a pokud stavu, pokud podmínka, 281 00:12:13,080 --> 00:12:15,620 zlomit, a nějak souvisí s číslem verze. 282 00:12:15,620 --> 00:12:16,700 Pokud bychom posunout dolů - 283 00:12:16,700 --> 00:12:19,570 i když mnoho z těchto klíčových slov se bude nové, a tam je 284 00:12:19,570 --> 00:12:22,590 spoustu funkcí v tu jsme nikdy neviděli a možná už nikdy vidět přes 285 00:12:22,590 --> 00:12:23,830 průběh semestru - 286 00:12:23,830 --> 00:12:27,150 na konci dne, to se řídí stejnými pravidly a logiku, že jsme byli 287 00:12:27,150 --> 00:12:28,760 hrát s tak daleko. 288 00:12:28,760 --> 00:12:34,220 Tak tohle je příliš starý na to bezva váš iPhone 3s nebo 4s nebo 5s brzy, v těchto dnech, 289 00:12:34,220 --> 00:12:37,320 ale vím, že je to všechno moc pochází z tohoto světa, ž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 pojďme se podívat na trochu jednoduchý příklad. 292 00:12:41,900 --> 00:12:46,100 Tenhle, jen proto, aby si ohřát nějakou syntaxí a také některé další údaje 293 00:12:46,100 --> 00:12:49,240 typ, který jsme mluvili o ale opravdu vidět v C. Tak tohle je 294 00:12:49,240 --> 00:12:51,680 soubor s názvem positive1.c. 295 00:12:51,680 --> 00:12:55,120 A za připomínky v horní, to jen požaduje, aby uživatel zajistit 296 00:12:55,120 --> 00:12:55,960 kladné číslo. 297 00:12:55,960 --> 00:12:59,530 Takže je to příklad do-while, což je hezké pro uživatele-interactive 298 00:12:59,530 --> 00:13:01,980 programy, kde potřebujete sdělit uživateli, aby něco udělat. 299 00:13:01,980 --> 00:13:05,190 A v případě, že nebudete spolupracovat, jste křičet na ně, nebo odmítnout jejich vstup. 300 00:13:05,190 --> 00:13:11,610 Názorný příklad, budu dělat linky 19 až 24 tak dlouho, dokud má uživatel 301 00:13:11,610 --> 00:13:14,310 mi nedal kladné číslo. 302 00:13:14,310 --> 00:13:20,400 Nyní tento detail zde na řádku 18, proč prohlašuji n nad to celé 303 00:13:20,400 --> 00:13:24,490 opakování konstrukce oproti hned vedle řádku 22, kde jsem 304 00:13:24,490 --> 00:13:26,880 vlastně jedno, dostat n? 305 00:13:26,880 --> 00:13:27,330 Jo? 306 00:13:27,330 --> 00:13:27,780 [Neslyšitelné] 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 hlediska, co se rozsahu vztahuje? 309 00:13:34,690 --> 00:13:36,610 Jo? 310 00:13:36,610 --> 00:13:37,860 [Neslyšitelné] 311 00:13:40,040 --> 00:13:41,105 DAVID J. Malan: Můžeš mluvit trochu hlasitěji? 312 00:13:41,105 --> 00:13:43,450 SPEAKER 1: Kde máte přístup k dané proměnné. 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ískat přístup k dané proměnné. 315 00:13:47,360 --> 00:13:50,400 A obecně, pravidlo bylo dosud, že rozsah působnosti některých 316 00:13:50,400 --> 00:13:55,860 proměnná je definována v nejnovějších složených závorek, které jste viděli. 317 00:13:55,860 --> 00:14:02,010 A tak v tomto případě, když jsem udělal chybu deklarovat n on-line 22, 318 00:14:02,010 --> 00:14:03,010 že linka bude fungovat. 319 00:14:03,010 --> 00:14:10,990 Já bych si int, a já bych dal to do té proměnné n v souladu 22. 320 00:14:10,990 --> 00:14:16,900 Ale který řádek kódu by teď netuším, co mluvím? 321 00:14:16,900 --> 00:14:22,650 Tak 25, a ukázalo se, 24, a také, protože v tomto případě, nespadá 322 00:14:22,650 --> 00:14:23,610 z složených závorek. 323 00:14:23,610 --> 00:14:27,280 Takže jen trochu na obtíž, ale velmi snadno vyřešit tím, že prostě prohlášením 324 00:14:27,280 --> 00:14:30,140 proměnná mimo funkci samotné. 325 00:14:30,140 --> 00:14:32,600 >> Teď uvidíme, ještě dnes, můžete jít ještě o krok dále. 326 00:14:32,600 --> 00:14:34,860 A můžete dokonce dostat trochu líný - 327 00:14:34,860 --> 00:14:37,320 a to není možno doporučit, obecně - 328 00:14:37,320 --> 00:14:42,260 ale mohli jste dokonce líní a dát proměnnou globálně, abych tak řekl, ne 329 00:14:42,260 --> 00:14:46,670 uvnitř funkce, nejsou uvnitř smyčky, ale v samotném souboru, mimo 330 00:14:46,670 --> 00:14:49,600 všech funkcí, které jste napsal, jak jsem to udělal tady na lince 15. 331 00:14:49,600 --> 00:14:51,160 Ale to je obecně odsuzován. 332 00:14:51,160 --> 00:14:55,680 Ale uvědomit to je řešení někdy jiné problémy, jak budem 333 00:14:55,680 --> 00:14:56,620 nakonec vidět. 334 00:14:56,620 --> 00:14:58,130 Takže teď, necháme to takhle. 335 00:14:58,130 --> 00:15:01,030 Ale uvidíme, jestli můžeme přepsat to jen začít vyjadřovat sami 336 00:15:01,030 --> 00:15:01,990 trochu jinak. 337 00:15:01,990 --> 00:15:05,330 >> Takže tento program, jen aby bylo jasno, je positive1. 338 00:15:05,330 --> 00:15:11,810 Nech mě jít napřed tady a ve svém terminálovém okně, aby positive1, Enter. 339 00:15:11,810 --> 00:15:12,740 Sestavuje, v pořádku. 340 00:15:12,740 --> 00:15:14,910 Chystám se spustit positive1, stiskněte klávesu Enter. 341 00:15:14,910 --> 00:15:16,820 Žádám, abyste mi celé kladné číslo. 342 00:15:16,820 --> 00:15:18,260 Řeknu -1. 343 00:15:18,260 --> 00:15:18,910 To nefungovalo. 344 00:15:18,910 --> 00:15:22,150 0, 99, to vypadá, že funguje. 345 00:15:22,150 --> 00:15:23,570 Možná ne nejpřísnější test. 346 00:15:23,570 --> 00:15:26,480 Ale aspoň je to pěkné sanity kontrola, zda jsme na správné cestě. 347 00:15:26,480 --> 00:15:29,240 Takže teď mě nech jít dopředu a otevřete verzi dva z tohoto. 348 00:15:29,240 --> 00:15:32,500 A co je odlišné už? 349 00:15:32,500 --> 00:15:35,140 To se provádí totéž. 350 00:15:35,140 --> 00:15:40,660 Ale co skáče tak, jak je zřetelně jiný tentokrát? 351 00:15:40,660 --> 00:15:42,560 Jo, tak to bool zeleně. 352 00:15:42,560 --> 00:15:45,980 Gedit je zdůrazněno v zeleném tohoto klíčového slova známé jako bool, 353 00:15:45,980 --> 00:15:47,000 která je datový typ. 354 00:15:47,000 --> 00:15:51,080 To není to, postavený v roce pro všechny verze C. Musíte zahrnout 355 00:15:51,080 --> 00:15:52,010 konkrétní knihovny. 356 00:15:52,010 --> 00:15:54,770 V našem případě, jsem zahrnul CS50 knihovnu tak, že jsme 357 00:15:54,770 --> 00:15:56,460 mají přístup k bool. 358 00:15:56,460 --> 00:15:59,810 Ale v řádku 18, se zdá, že mají logickou hodnotu zde nazývá vděčný. 359 00:15:59,810 --> 00:16:01,040 Takže jsem mohla zavolat to něco. 360 00:16:01,040 --> 00:16:04,500 Ale já to nazval vděčný jen trochu zprostředkovat nějaký sémantický význam. 361 00:16:04,500 --> 00:16:07,930 Tak zpočátku na lince 18, nejsem zřejmě vděčný, protože 362 00:16:07,930 --> 00:16:12,150 Logická hodnota vděčný je inicializován na hodnotu false v řádku 18. 363 00:16:12,150 --> 00:16:16,890 A pak se zdá, to, co jsem tady udělal v řádcích 21 až 23 je, že jsem právě 364 00:16:16,890 --> 00:16:18,610 druh přepsán můj logiku. 365 00:16:18,610 --> 00:16:21,020 Takže ne funkčně odlišné. 366 00:16:21,020 --> 00:16:26,940 Ale v řádku 22, již jsem zda int uživatel předpokladu je větší než 367 00:16:26,940 --> 00:16:31,120 0, pak jsem jednoduše změnit hodnotu vděčný true. 368 00:16:31,120 --> 00:16:32,290 A proč jsem to udělal? 369 00:16:32,290 --> 00:16:35,600 Vzhledem k tomu, v souladu 25, zdá se, že budu kontrolovat stav. 370 00:16:35,600 --> 00:16:39,380 Do této smyčky, zatímco vděčná je false. 371 00:16:39,380 --> 00:16:43,610 >> Takže navrhuji to jako alternativa k variantě jedna, protože je to alespoň 372 00:16:43,610 --> 00:16:45,130 trochu více intuitivní, snad. 373 00:16:45,130 --> 00:16:46,900 Je to trochu více uzemněný v angličtině. 374 00:16:46,900 --> 00:16:51,710 Takže proveďte následující, když nejste vděční, nebo když vděčný je false. 375 00:16:51,710 --> 00:16:55,890 A tentokrát, taky jsem zřejmě nezajímá vzpomenout, co uživatel napsal 376 00:16:55,890 --> 00:16:57,730 v oznámení, protože tam žádná proměnná n. 377 00:16:57,730 --> 00:16:58,650 Takže vlastně, I - 378 00:16:58,650 --> 00:17:00,080 malá bílá lež tam. 379 00:17:00,080 --> 00:17:02,770 Funkčně, program je trochu jiný, jakmile se dostaneme na dno 380 00:17:02,770 --> 00:17:04,819 to proto, že nejsem si vzpomněl, co n je. 381 00:17:04,819 --> 00:17:09,579 Ale já jsem chtěl ukázat i zde, že i když jsme viděli GetInt a 382 00:17:09,579 --> 00:17:13,920 GetString se používá na pravé straně znaménko rovná se tak daleko, aby 383 00:17:13,920 --> 00:17:17,160 vzpomněli jsme si hodnotu, technicky, to není nezbytně nutné. 384 00:17:17,160 --> 00:17:20,950 Pokud z nějakého důvodu prostě nezajímá uložit hodnotu, chcete jen 385 00:17:20,950 --> 00:17:25,710 kontrolovat hodnotu, zjistíte, že můžeme jednoduše napsat toto jako GetInt otevřený 386 00:17:25,710 --> 00:17:27,000 paren, úzkým paren. 387 00:17:27,000 --> 00:17:30,460 Tato funkce bude vracet hodnotu, jak jsme říkali. 388 00:17:30,460 --> 00:17:32,010 Bude to vám zpět int. 389 00:17:32,010 --> 00:17:36,450 A tak pokud jste psychicky myslíte že se to stává, když píšu v 99, GetInt 390 00:17:36,450 --> 00:17:38,160 vrátí číslo 99. 391 00:17:38,160 --> 00:17:41,330 A tak koncepčně, je to jako by můj kód byl ve skutečnosti to. 392 00:17:41,330 --> 00:17:45,880 Takže pokud 99 je opravdu větší než 0, pak vděčný stává pravdou. 393 00:17:45,880 --> 00:17:50,420 Pak linka 25 si uvědomuje, ooh, už jsme to udělali, protože jsem teď vděčná. 394 00:17:50,420 --> 00:17:54,590 A v souladu 26, jsme prostě říci, díky za kladné celé číslo, bez ohledu na to 395 00:17:54,590 --> 00:17:55,710 stalo se. 396 00:17:55,710 --> 00:17:58,900 >> Nyní se pojďme udělat mírný syntaktický cukr zde, abych tak řekl. 397 00:17:58,900 --> 00:18:02,990 Pojďme se podívat, jestli se nám podaří vyčistit tento řádek 25 s touto třetí a poslední 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ý rozdíl je, co řádek kódu? 400 00:18:11,930 --> 00:18:13,260 Jo, tak 25. 401 00:18:13,260 --> 00:18:15,520 A jsme opravdu viděli tuto trik jen zatím. 402 00:18:15,520 --> 00:18:19,510 Ale my jsme vidět vykřičník v pondělí, což označuje co? 403 00:18:19,510 --> 00:18:20,970 Takže ne, nebo negace. 404 00:18:20,970 --> 00:18:23,460 Tak se booleovskou hodnotu a otočit jeho hodnotu. 405 00:18:23,460 --> 00:18:24,390 Pravda se stává false. 406 00:18:24,390 --> 00:18:25,500 False stává pravdou. 407 00:18:25,500 --> 00:18:28,910 Takže to, navrhuji, je ještě trochu více intuitivní způsob, jak 408 00:18:28,910 --> 00:18:32,200 psaní kódu, protože jsem stále inicializovat vděčný false. 409 00:18:32,200 --> 00:18:33,530 Pořád to následující. 410 00:18:33,530 --> 00:18:35,700 Nastavil jsem vděčný na hodnotu true, když přijde čas. 411 00:18:35,700 --> 00:18:40,690 Ale teď můžete opravdu jen přeložit tento kód slovně zleva doprava, 412 00:18:40,690 --> 00:18:42,550 zatímco ne vděčná. 413 00:18:42,550 --> 00:18:46,170 Vzhledem k tomu, bang, nebo vykřičník, označuje pojem není, takže zatímco 414 00:18:46,170 --> 00:18:47,010 není vděčný. 415 00:18:47,010 --> 00:18:49,740 >> Takže znovu, jsme nezavedly žádné nové koncepty na sobě. 416 00:18:49,740 --> 00:18:53,230 Mluvili jsme o tom Booleans zpátky, když jsme hráli s Scratch. 417 00:18:53,230 --> 00:18:55,690 Ale uvědomuji si můžeme jen začít psát náš kód v 418 00:18:55,690 --> 00:18:56,550 mnoha různými způsoby. 419 00:18:56,550 --> 00:19:00,010 Takže zejména v pset1, pokud jste trochu snaží přijít na způsob, jak 420 00:19:00,010 --> 00:19:03,400 napsat nějaký program, kurzy máte štěstí, protože tam to bude nějaký 421 00:19:03,400 --> 00:19:05,780 počet řešení, které se může stát při. 422 00:19:05,780 --> 00:19:09,850 Například, to je jen tři i pro nejjednodušší programů. 423 00:19:09,850 --> 00:19:10,180 Dobrá. 424 00:19:10,180 --> 00:19:13,860 A teď vzpomínám v pondělí, jsme odjeli na tuto notu s návratových hodnot. 425 00:19:13,860 --> 00:19:18,280 Takže vůbec poprvé, jsme napsali program, který není jen mít hlavní, 426 00:19:18,280 --> 00:19:22,240 má také svou vlastní funkci, která jsem napsal tady. 427 00:19:22,240 --> 00:19:26,640 Takže v souladu 31 až 34, jsem realizovala krychle funkci. 428 00:19:26,640 --> 00:19:27,800 Není to složité. 429 00:19:27,800 --> 00:19:29,830 Je to jen a časy a časy a, v tomto případě. 430 00:19:29,830 --> 00:19:34,920 Ale co je důležité, na tom je, že jsem při vstupu ve formě a 431 00:19:34,920 --> 00:19:38,910 Vracím se výstup v podobě časů a časů. 432 00:19:38,910 --> 00:19:43,940 >> Takže teď mám možnost, stejně jako jsem se printf sám, volat 433 00:19:43,940 --> 00:19:47,120 tato funkce voláním krychle funkce. 434 00:19:47,120 --> 00:19:49,470 A krychle funkce má nějaký vstup. 435 00:19:49,470 --> 00:19:52,030 A krychle funkce vrátí nějaký výstup. 436 00:19:52,030 --> 00:19:56,660 A tak na rozdíl od, printf jen něco udělal. 437 00:19:56,660 --> 00:19:59,490 To se nic nevrací že záleželo - i když, jak 438 00:19:59,490 --> 00:20:00,820 stranou, to vrátí hodnotu. 439 00:20:00,820 --> 00:20:02,650 Můžete jen obecně ignorovat. 440 00:20:02,650 --> 00:20:04,000 Printf jen něco udělal. 441 00:20:04,000 --> 00:20:06,220 To mělo vedlejší účinek tisku na obrazovce. 442 00:20:06,220 --> 00:20:09,480 Naopak zde, máme krychle funkci, která 443 00:20:09,480 --> 00:20:11,400 skutečně vrátí něco. 444 00:20:11,400 --> 00:20:12,960 >> Tak to je obecně - 445 00:20:12,960 --> 00:20:15,260 pro ty, kteří znají toto, je to poměrně jednoduché nápad. 446 00:20:15,260 --> 00:20:18,460 Ale pro ty méně obeznámeni s touto myšlenkou předávání na vstupech a získání 447 00:20:18,460 --> 00:20:21,700 zpět výstupy, zkusme jen něco super jednoduchý. 448 00:20:21,700 --> 00:20:25,180 Je někdo pohodlný přichází na pódium krátce? 449 00:20:25,180 --> 00:20:27,460 Ty mají být pohodlné s kamerou vy, stejně. 450 00:20:27,460 --> 00:20:27,640 Jo. 451 00:20:27,640 --> 00:20:28,610 Dobře, Jak se jmenujete? 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 Dobře, Ken. 455 00:20:29,810 --> 00:20:31,060 Pojď nahoru. 456 00:20:31,060 --> 00:20:34,660 Takže Ken bude funkce druhů zde. 457 00:20:34,660 --> 00:20:35,760 A pojďme dál a udělat to. 458 00:20:35,760 --> 00:20:38,790 Pojďme si trochu fantazie. 459 00:20:38,790 --> 00:20:39,770 Rád Vás vidím. 460 00:20:39,770 --> 00:20:41,010 Vítejte na středu zájmu. 461 00:20:41,010 --> 00:20:41,980 Dobrá. 462 00:20:41,980 --> 00:20:45,590 Jdeme na toto tlačítko tady. 463 00:20:45,590 --> 00:20:46,420 Dobrá. 464 00:20:46,420 --> 00:20:49,490 Tak tady máte moderní tabuli. 465 00:20:49,490 --> 00:20:53,050 A to, co jsem je hlavní funkce, například. 466 00:20:53,050 --> 00:20:55,990 A nemám iPad v ruce. 467 00:20:55,990 --> 00:20:59,000 Nemám opravdu vzpomenout, jak se - no, vlastně, nelze říci, že. 468 00:20:59,000 --> 00:21:02,200 Já opravdu nemám dobrý rukopis. 469 00:21:02,200 --> 00:21:05,260 A tak tedy, chci tisknout něco na obrazovce pro mě. 470 00:21:05,260 --> 00:21:07,470 >> Takže já jsem byl hlavní program. 471 00:21:07,470 --> 00:21:15,060 A já budu mít vás říci, napište v mém kuřecím nuly a 472 00:21:15,060 --> 00:21:16,600 pak předá vám vstup. 473 00:21:16,600 --> 00:21:20,000 Tak jako hloupé ačkoli toto cvičení je, pojem funkcí a volání 474 00:21:20,000 --> 00:21:22,260 funkce a vrací funkci opravdu scvrkává na to. 475 00:21:22,260 --> 00:21:23,120 Já jsem hlavní. 476 00:21:23,120 --> 00:21:26,270 Právě jsem napsal printf ("něco") na obrazovce. 477 00:21:26,270 --> 00:21:27,470 Běžím tento program. 478 00:21:27,470 --> 00:21:30,900 A jakmile printf volána, trvá jeden argument - nebo jeden parametr, 479 00:21:30,900 --> 00:21:31,660 někdy - 480 00:21:31,660 --> 00:21:32,780 mezi uvozovkami. 481 00:21:32,780 --> 00:21:33,960 Zde je to, že argument. 482 00:21:33,960 --> 00:21:35,740 Já předáním do Ken. 483 00:21:35,740 --> 00:21:39,390 Teď je to černá skříňka písemné určitý počet let, před které zřejmě 484 00:21:39,390 --> 00:21:41,070 ví, jak tisknout věci na obrazovce. 485 00:21:41,070 --> 00:21:42,320 >> Takže, provést. 486 00:21:48,842 --> 00:21:49,900 To není špatné. 487 00:21:49,900 --> 00:21:50,890 Takže, velmi dobrá. 488 00:21:50,890 --> 00:21:52,900 Takže teď Ken se provádí spuštěním. 489 00:21:52,900 --> 00:21:55,810 Ví třeba Podej mi něco zpět? 490 00:21:55,810 --> 00:21:57,240 Takže ne, že jsme viděli doposud. 491 00:21:57,240 --> 00:21:59,230 Opět platí, že printf se skutečně vrátí číslo. 492 00:21:59,230 --> 00:22:01,640 Ale budeme ignorovat, že pro tuto chvíli, protože jsme nikdy používal to. 493 00:22:01,640 --> 00:22:03,400 Tak to je to pro Kena. 494 00:22:03,400 --> 00:22:06,650 A tak teď hlavní vrátí k provedení - 495 00:22:06,650 --> 00:22:09,630 Hlavním přebírá ovládání programu znovu, protože tento řádek kódu, 496 00:22:09,630 --> 00:22:11,010 printf, se provádí spuštěním. 497 00:22:11,010 --> 00:22:13,890 A jdeme o naší cestě vykonávajícího jakékoli jiné linky jsou tam. 498 00:22:13,890 --> 00:22:14,130 >> Dobrá. 499 00:22:14,130 --> 00:22:17,080 Takže teď zkusme trochu jiný příklad. 500 00:22:17,080 --> 00:22:22,430 A tentokrát zde, pojďme se nejprve vyčistit obrazovku zde. 501 00:22:22,430 --> 00:22:24,670 A tentokrát, budeme dělat Cubing funkci. 502 00:22:24,670 --> 00:22:27,350 Ale tentokrát jsem očekávat, že výstupní hodnoty. 503 00:22:27,350 --> 00:22:28,630 Tak pojďme do toho a udělat to. 504 00:22:28,630 --> 00:22:35,680 Takže teď mám řádek kódu, který říká, že x = kostka (x). 505 00:22:35,680 --> 00:22:36,930 Takže vlastně let's - 506 00:22:41,450 --> 00:22:43,940 řádek kódu, odvolání, vypadá to. 507 00:22:43,940 --> 00:22:45,960 x = kostka (x). 508 00:22:45,960 --> 00:22:48,100 Tak jak se to bude fungovat? 509 00:22:48,100 --> 00:22:50,820 Tak pojďme dál a dá vám bílou obrazovku znovu. 510 00:22:50,820 --> 00:22:55,000 A já se chystám napsat hned dolů na hodnotu x, která v tuto chvíli v 511 00:22:55,000 --> 00:23:01,080 čas se stane být, řekněme, 2, aby to jednoduché. 512 00:23:01,080 --> 00:23:04,890 Tak jsem napsal na kus papíru hodnota 2, 513 00:23:04,890 --> 00:23:06,100 což je moje hodnota x. 514 00:23:06,100 --> 00:23:08,250 Podal jsem ji Ken. 515 00:23:08,250 --> 00:23:09,200 KEN: A já jsem jen napsat odpověď? 516 00:23:09,200 --> 00:23:12,660 DAVID J. Malan: Jo, pojďme stačí napsat odpověď. 517 00:23:12,660 --> 00:23:13,030 Dobře. 518 00:23:13,030 --> 00:23:16,280 A teď se musí vrátit mi něco. 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 Pěkný SEGUE. 522 00:23:18,840 --> 00:23:21,970 >> Takže teď podá mi hodnotu 8, v tomto případě. 523 00:23:21,970 --> 00:23:23,220 A co s tím mám dělat? 524 00:23:23,220 --> 00:23:26,130 No, vlastně, uvidíme. 525 00:23:26,130 --> 00:23:26,640 Získat toto právo. 526 00:23:26,640 --> 00:23:27,880 Co mám dělat s tím? 527 00:23:27,880 --> 00:23:31,900 Teď budu brát tuto hodnotu a skutečně uložit v těch 528 00:23:31,900 --> 00:23:33,400 Stejné bitů v paměti. 529 00:23:33,400 --> 00:23:35,030 Ale upozornění, jsem tak trochu zápasí zde. 530 00:23:35,030 --> 00:23:38,280 Jsem trochu zmatený, protože kam jsem vlastně psát hodnotu x? 531 00:23:38,280 --> 00:23:41,840 Vzhledem k tomu, co jsem právě udělal, je fyzicky ručně Ken kus papíru 532 00:23:41,840 --> 00:23:44,400 , která měla hodnotu 2, který byl x. 533 00:23:44,400 --> 00:23:46,300 A skutečně, to je přesně to, co se stane. 534 00:23:46,300 --> 00:23:50,100 Tak to dopadá, že při volání funkce, a předáte v argumentu 535 00:23:50,100 --> 00:23:54,130 Líbí "Hello World", nebo předáte argument jako 2, obecně, že jste 536 00:23:54,130 --> 00:23:56,720 předáním kopie tohoto argumentu. 537 00:23:56,720 --> 00:24:01,020 A tak stejně jako jsem napsal číslo 2 zde a podal ji Ken, že musí být 538 00:24:01,020 --> 00:24:04,760 znamená, že jsem ještě kopii hodnoty 2 někde. 539 00:24:04,760 --> 00:24:08,140 Protože opravdu, teď, že jsem se dostal zpět hodnotu 8, musím se vrátit do 540 00:24:08,140 --> 00:24:12,010 RAM a skutečně zapsat 8, kde jsem kdysi měl číslo 2. 541 00:24:12,010 --> 00:24:15,720 >> Takže vizuálně zapamatovat si tuto představu předáním doslova 542 00:24:15,720 --> 00:24:16,730 kopie hodnoty. 543 00:24:16,730 --> 00:24:19,570 Ken dělá svou věc, podá mi něco - v tomto případě, 544 00:24:19,570 --> 00:24:20,820 hodnota jako 8. 545 00:24:20,820 --> 00:24:22,660 A pak jsem musel udělat něco s touto hodnotou, pokud jsem 546 00:24:22,660 --> 00:24:24,880 Chci, aby to kolem. 547 00:24:24,880 --> 00:24:29,470 Takže tohle všechno bude až příliš dobře, než dlouhý. 548 00:24:29,470 --> 00:24:33,082 Mockrát vám děkuji za tuto demo zde, Kena. 549 00:24:33,082 --> 00:24:34,820 Dobrá. 550 00:24:34,820 --> 00:24:36,720 Velmi dobře. 551 00:24:36,720 --> 00:24:40,610 Tak uvidíme, jak to nakonec se vztahuje k některé z funkcí 552 00:24:40,610 --> 00:24:42,270 volání, že jsme byli tady. 553 00:24:42,270 --> 00:24:47,610 Tak nech mě jít napřed a přivést nás zpět k Cubing například zde. 554 00:24:47,610 --> 00:24:53,080 A zjistíte, že pokud chceme, aby skutečně začít užívat toto dále, budeme 555 00:24:53,080 --> 00:24:57,050 muset dbát na to, že se počet x, která je momentálně prošel v 556 00:24:57,050 --> 00:25:01,390 zde se liší od toho, co je skutečně předán do funkce. 557 00:25:01,390 --> 00:25:03,940 Takže znovu, to prošel kopie se stane docela 558 00:25:03,940 --> 00:25:05,620 Germaine za chvíli. 559 00:25:05,620 --> 00:25:09,320 >> Takže pojďme se podívat na něco, co není úplně správně pracovat ještě. 560 00:25:09,320 --> 00:25:11,790 Chystám se jít dopředu a otevřete třetiny buggy příklad, který 561 00:25:11,790 --> 00:25:13,560 je stižen přírodou. 562 00:25:13,560 --> 00:25:18,070 A jmenuje se buggy3, a to implementuje vyměňovat funkci. 563 00:25:18,070 --> 00:25:23,500 Takže tu máme hlavní funkci, která x a y libovolně inicializován 564 00:25:23,500 --> 00:25:24,720 1 a 2, resp. 565 00:25:24,720 --> 00:25:27,590 Mohli bychom použít GetInt, ale my prostě potřebujeme jednoduché cvičení. 566 00:25:27,590 --> 00:25:29,680 Takže je to pevně jako 1 a 2. 567 00:25:29,680 --> 00:25:35,330 V řádcích 21 a 22, my zřejmě vytisknout X a Y, jedno na řádek. 568 00:25:35,330 --> 00:25:39,620 Pak, na řádku 23, tvrdím já vyměňovat tyto hodnoty, tečka, tečka, tečka. 569 00:25:39,620 --> 00:25:43,030 Jsem zřejmě volat funkce v souladu s názvem 24 odkládací 570 00:25:43,030 --> 00:25:44,000 který bere dva argumenty. 571 00:25:44,000 --> 00:25:46,430 Je to naprosto legitimní pro funkce, aby se dva argumenty. 572 00:25:46,430 --> 00:25:48,220 Viděli jsme printf to už. 573 00:25:48,220 --> 00:25:50,370 Takže výměna zřejmě trvá x a y. 574 00:25:50,370 --> 00:25:53,010 A jak již název napovídá, doufám, že to bude 575 00:25:53,010 --> 00:25:54,320 zaměnit tyto dvě hodnoty. 576 00:25:54,320 --> 00:25:57,560 Tak jsem tvrdit, on-line 25, vyměnil. 577 00:25:57,560 --> 00:26:01,570 A já dotisk x a y za předpokladu, že 578 00:26:01,570 --> 00:26:02,830 že jsem skutečně prohozeny. 579 00:26:02,830 --> 00:26:04,370 Ale když jsem vlastně tento program spustit - 580 00:26:04,370 --> 00:26:06,060 dovolte mi, abych otevřít okno terminálu. 581 00:26:06,060 --> 00:26:07,750 Dovolte mi, abych buggy3. 582 00:26:07,750 --> 00:26:09,970 Jak název napovídá, toto není skončí dobře. 583 00:26:09,970 --> 00:26:14,690 Protože když jsem se Enter Všimněte 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 ještě na konci programu, jsou stále ještě ve skutečnosti, stejný. 586 00:26:19,160 --> 00:26:22,760 >> Takže na základě prokázání právě s Kenem, co se vlastně děje? 587 00:26:22,760 --> 00:26:24,660 No, pojďme se ponořit do tohoto swapu funkce. 588 00:26:24,660 --> 00:26:25,800 Je to super krátký. 589 00:26:25,800 --> 00:26:28,020 Je to jen pár řádků kódu dlouho. 590 00:26:28,020 --> 00:26:32,810 Ale co je to zásadní problém založen na jednoduchém příběhu řekl, 591 00:26:32,810 --> 00:26:34,270 tady s Kenem? 592 00:26:34,270 --> 00:26:36,115 Proč je výměna vadné? 593 00:26:36,115 --> 00:26:37,365 [Neslyšitelné] 594 00:26:39,840 --> 00:26:40,460 Přesně tak. 595 00:26:40,460 --> 00:26:43,610 Takže jsme ukládání na kopii, není proměnná sám. 596 00:26:43,610 --> 00:26:46,810 Jinými slovy, swap zřejmě přijímá dva argumenty, int. 597 00:26:46,810 --> 00:26:49,370 A to je libovolně nazývá a b. 598 00:26:49,370 --> 00:26:54,430 A tady, jsem prošel v x a y, které jsou příslušně 1 a 2. 599 00:26:54,430 --> 00:26:56,580 Ale já nejsem doslova procházet v x. 600 00:26:56,580 --> 00:26:58,410 Nejsem doslova procházet v y. 601 00:26:58,410 --> 00:27:01,230 Já jsem kolem kopii X a kopie y. 602 00:27:01,230 --> 00:27:05,180 Je to jako skoro, jako by si zkopírovat a vložit do prohodit hodnoty, aby 603 00:27:05,180 --> 00:27:07,440 chcete, aby se skutečně manipulovat. 604 00:27:07,440 --> 00:27:11,970 Takže pokud je to ten případ, kdy jsem se, program, kdo vykonávající 605 00:27:11,970 --> 00:27:14,140 potrubí 35, pak 36 - 606 00:27:14,140 --> 00:27:17,740 když jsem si na řádku 37, v tomto bodě v příběhu, co je hodnota? 607 00:27:20,740 --> 00:27:24,850 V tomto bodě příběhu, linka 37, jaká je hodnota v tomto bodě? 608 00:27:24,850 --> 00:27:25,980 Tak to by mělo být jen 1. 609 00:27:25,980 --> 00:27:26,170 Je to tak? 610 00:27:26,170 --> 00:27:29,100 Vzhledem k tomu, x byla předána jako první argument. 611 00:27:29,100 --> 00:27:33,150 A tato funkce prostě svévolně volá svou první argument,. 612 00:27:33,150 --> 00:27:35,130 Podobně je y, druhý argument. 613 00:27:35,130 --> 00:27:37,930 A je to jen svévolně volá druhý argument b. 614 00:27:37,930 --> 00:27:40,510 >> Nyní je tato dichotomie je vlastně docela jednoduché vysvětlení. 615 00:27:40,510 --> 00:27:40,880 Přemýšlejte o tom. 616 00:27:40,880 --> 00:27:42,980 Nikdo z nás se setkal osobu, která napsal printf. 617 00:27:42,980 --> 00:27:49,880 Takže jistě, on nebo ona nemá tušení, co naše proměnné o 30 let později se chystáte 618 00:27:49,880 --> 00:27:50,710 být nazýván. 619 00:27:50,710 --> 00:27:55,110 Takže tam musí být rozdíl mezi tím, co říkáte proměnné v 620 00:27:55,110 --> 00:27:59,960 Funkce píšete a co říkáte proměnné ve funkcích která vás 621 00:27:59,960 --> 00:28:01,770 volání nebo použití. 622 00:28:01,770 --> 00:28:05,120 Takže jinými slovy, napsal jsem své proměnné jako x a y. 623 00:28:05,120 --> 00:28:08,060 Ale pokud někdo jiný psal odkládací funkci, on nebo ona rozhodně 624 00:28:08,060 --> 00:28:10,480 nebude vědět, co moje proměnné se bude nazýván. 625 00:28:10,480 --> 00:28:13,850 Takže si uvědomit, že to je důvod, proč jste tuto dualitu jmen. 626 00:28:13,850 --> 00:28:16,800 Technicky, mohl bych to náhodou. 627 00:28:16,800 --> 00:28:19,750 Ale oni by ještě být předávány jako kopie. 628 00:28:19,750 --> 00:28:22,940 Bylo by to čistě náhoda, esteticky, pokud ten člověk, který napsal 629 00:28:22,940 --> 00:28:25,590 Odkládací použil stejné 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 bodě příběhu, 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 teď mám postupovat, aby swap. 634 00:28:32,040 --> 00:28:34,730 No v první řadě mi dovolte, abych vlastně dělat to mnohem jednodušeji. 635 00:28:34,730 --> 00:28:36,500 Já nevím, co ty tři řádky kódu dělají. 636 00:28:36,500 --> 00:28:37,370 Dovolte mi, abych 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 Proč je tento zlomený, logicky? 641 00:28:46,980 --> 00:28:48,590 Je to druh intuitivní věc, ne? 642 00:28:48,590 --> 00:28:50,640 Tak se stává b. 643 00:28:50,640 --> 00:28:52,450 A b stává. 644 00:28:52,450 --> 00:28:55,410 Ale problém je, že jakmile linka 37 provádí, co je 645 00:28:55,410 --> 00:28:58,170 hodnota a B? 646 00:28:58,170 --> 00:28:59,070 Stejný, 1. 647 00:28:59,070 --> 00:29:03,460 Protože jste clobbered, abych tak řekl, jste změnili b rovnat. 648 00:29:03,460 --> 00:29:06,000 Takže jakmile linka 37 je proveden, je to skvělé. 649 00:29:06,000 --> 00:29:09,940 Nyní máte dvě kopie čísla 1 vnitřní této funkce. 650 00:29:09,940 --> 00:29:14,720 Takže když říkáte, v souladu 38, dostane b, dobře, že jste trochu v háji. 651 00:29:14,720 --> 00:29:17,370 Vzhledem k tomu, jste jen přiřazení 1-1. 652 00:29:17,370 --> 00:29:20,400 Jste trochu ztratila hodnotu, kterou záleželo. 653 00:29:20,400 --> 00:29:22,910 >> Takže v původní verzi tohoto, zjistíte, co jsem udělal. 654 00:29:22,910 --> 00:29:26,620 Jsem místo toho měla třetina řádek kódu, který vypadal jako toto. 655 00:29:26,620 --> 00:29:29,910 Prohlašuji, dočasnou proměnnou - tmp je velmi běžné jméno 656 00:29:29,910 --> 00:29:31,240 dočasné proměnné. 657 00:29:31,240 --> 00:29:34,280 Je to int, protože se musí shodovat, co chci udělat kopii. 658 00:29:34,280 --> 00:29:39,720 I uložit kopii uvnitř tmp. Takže jakmile linka 37 je proveden, 659 00:29:39,720 --> 00:29:41,390 hodnota je - 660 00:29:41,390 --> 00:29:42,970 rychlé 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 také 1. 664 00:29:48,470 --> 00:29:51,470 Takže teď jsem spustit linku 38. 665 00:29:51,470 --> 00:29:57,180 Takže jakmile linka 38 provede, 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 nyní 2. 668 00:30:00,500 --> 00:30:03,110 Takže v tomto bodě příběhu, 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 teď logicky, můžeme jen plop TMP je hodnota v b.. 671 00:30:09,330 --> 00:30:10,690 A jsme hotovi. 672 00:30:10,690 --> 00:30:12,170 >> Takže jsme vyřešili tento problém. 673 00:30:12,170 --> 00:30:16,040 Bohužel, když jsem spustit tento program v této podobě, to dělá ne vlastně zaměnit 674 00:30:16,040 --> 00:30:17,700 všechny hodnoty. 675 00:30:17,700 --> 00:30:18,950 Ale aby bylo jasno, proč? 676 00:30:23,420 --> 00:30:26,310 Opravil jsem logický problém z před chvílí. 677 00:30:26,310 --> 00:30:31,150 Ale znovu, když spuštění programu, x a y se nemění do konce 678 00:30:31,150 --> 00:30:33,834 tento program poprava. 679 00:30:33,834 --> 00:30:34,760 [Neslyšitelné] 680 00:30:34,760 --> 00:30:36,030 DAVID J. Malan: Tak jsme se vrátili nic. 681 00:30:36,030 --> 00:30:36,960 Tak to je pravda. 682 00:30:36,960 --> 00:30:39,880 Ale ukazuje se, že je tu trochu problém, protože tady tak daleko, 683 00:30:39,880 --> 00:30:42,460 Jediná věc, jsme byli schopni se vrátit, je jedna věc. 684 00:30:42,460 --> 00:30:46,540 A to je omezení C. Můžete vrátit pouze skutečně jednu hodnotu, 685 00:30:46,540 --> 00:30:48,970 v tom případě, já jsem trochu trčet 686 00:30:48,970 --> 00:30:51,805 protože jsem se mohl vrátit novou hodnotu x nebo bych mohl vrátit 687 00:30:51,805 --> 00:30:53,160 nová hodnota y. 688 00:30:53,160 --> 00:30:54,330 Ale já chci oba zpátky. 689 00:30:54,330 --> 00:30:58,010 Takže návratu není jednoduché řešení zde. 690 00:30:58,010 --> 00:30:59,770 Ale problém zásadně je důvod, proč? 691 00:30:59,770 --> 00:31:03,270 Co jsme vlastně vyměnili? 692 00:31:03,270 --> 00:31:04,010 a b. 693 00:31:04,010 --> 00:31:07,670 Ale i b jsou kopie x a y, což znamená, že to udělal všechno 694 00:31:07,670 --> 00:31:10,080 práce - právě jsme strávili jako tři minuty mluví o swapu 695 00:31:10,080 --> 00:31:11,680 funkce a všichni tři z těchto proměnných. 696 00:31:11,680 --> 00:31:15,090 A to je skvělé, naprosto správný v izolaci. 697 00:31:15,090 --> 00:31:20,230 Ale A a B je rozsah pouze je v těchto liniích zde. 698 00:31:20,230 --> 00:31:24,130 Tak jako pro smyčce, pokud jste deklarovat integer i uvnitř pro 699 00:31:24,130 --> 00:31:27,400 loop - podobně, pokud jste deklarovat a b uvnitř funkce, která 700 00:31:27,400 --> 00:31:30,550 jste napsali, jsou platné pouze uvnitř této funkce. 701 00:31:30,550 --> 00:31:35,020 Což znamená, že jakmile swap je provedeno provádění a jdeme z linky 24 do 702 00:31:35,020 --> 00:31:38,380 linka 25, x a y se nemění vůbec. 703 00:31:38,380 --> 00:31:42,580 Právě jste zbytečně spoustu času vyměňovat kopie proměnných. 704 00:31:42,580 --> 00:31:46,490 >> Tak to dopadá, že řešení je to vlastně non-zřejmé. 705 00:31:46,490 --> 00:31:49,210 To není zcela dostačující pro návrat hodnoty, protože můžeme 706 00:31:49,210 --> 00:31:50,320 vrátit pouze jednu hodnotu. 707 00:31:50,320 --> 00:31:53,370 A já opravdu chci vyměnit oba X a Y současně. 708 00:31:53,370 --> 00:31:55,020 Takže jdeme vrátit k tomu. 709 00:31:55,020 --> 00:31:58,770 Ale teď si uvědomit, že problém zásadně vychází ze skutečnosti, 710 00:31:58,770 --> 00:32:00,660 že a a b jsou kopie. 711 00:32:00,660 --> 00:32:03,450 A jsou v jejich vlastním rozsahu. 712 00:32:03,450 --> 00:32:04,980 No, pojďme se pokusit vyřešit nějakým způsobem. 713 00:32:04,980 --> 00:32:09,200 Dovolte mi, abych skutečně přejděte sem a otevřít, řekněme, čtvrtou variantu 714 00:32:09,200 --> 00:32:11,170 z toho, buggy4. 715 00:32:11,170 --> 00:32:13,230 A co tohle? 716 00:32:13,230 --> 00:32:16,690 To je podobný, ale jednodušší problém podívat se na předtím, než jsme se stab na 717 00:32:16,690 --> 00:32:17,530 řešení. 718 00:32:17,530 --> 00:32:19,440 Tento program se nazývá přírůstek. 719 00:32:19,440 --> 00:32:24,320 A to zřejmě inicializuje celé číslo x na 1 v řádku 18. 720 00:32:24,320 --> 00:32:25,950 I pak tvrdí, x je 1. 721 00:32:25,950 --> 00:32:28,020 Pak jsem tvrzení zvyšování, tečka, tečka, tečka. 722 00:32:28,020 --> 00:32:29,460 Pak jsem zavolat přírůstek. 723 00:32:29,460 --> 00:32:33,480 Ale pak v řádcích 22 a 23, tvrdím, že to byla zvýšena. 724 00:32:33,480 --> 00:32:37,780 Tvrdím x je nyní ať je to cokoliv, 2 pravděpodobně. 725 00:32:37,780 --> 00:32:39,770 >> Ale tento program je buggy. 726 00:32:39,770 --> 00:32:41,020 V čem je problém? 727 00:32:43,450 --> 00:32:44,418 Jo? 728 00:32:44,418 --> 00:32:45,668 [Neslyšitelné] 729 00:32:49,260 --> 00:32:49,850 DAVID J. Malan: Přesně tak. 730 00:32:49,850 --> 00:32:52,430 Takže x byl vyhlášen zřejmě na řádku 18. 731 00:32:52,430 --> 00:32:54,410 To je uvnitř složených závorek hlavní je. 732 00:32:54,410 --> 00:32:58,470 Takže jednoduchá odpověď zde je to, že dobře, x existuje zde. 733 00:32:58,470 --> 00:33:01,510 To neexistuje v souladu 32. 734 00:33:01,510 --> 00:33:03,710 Takže tento program vlastně není ani zkompilovat. 735 00:33:03,710 --> 00:33:07,910 Kompilátor, když jsem se kompilace tento kód, bude na mě křičet 736 00:33:07,910 --> 00:33:13,190 o nějaké nehlášené identifikátoru nebo něco v tom smyslu. 737 00:33:13,190 --> 00:33:13,870 Ve skutečnosti, zkusme to. 738 00:33:13,870 --> 00:33:15,235 To je, aby buggy4. 739 00:33:17,780 --> 00:33:18,190 Tady to je. 740 00:33:18,190 --> 00:33:22,030 Použití nehlášené Identifikátor x v souladu 32. 741 00:33:22,030 --> 00:33:25,700 A skutečně, buďme konkrétnější zde dnes tak, že je to užitečné v 742 00:33:25,700 --> 00:33:27,140 úřední hodiny a doma. 743 00:33:27,140 --> 00:33:29,000 Všimněte si, že je to trochu záhadně písemná. 744 00:33:29,000 --> 00:33:31,560 Ale skutečnost, že zvonění je na nás řvali, řka: 745 00:33:31,560 --> 00:33:36,970 buggy4.c: 32:5, je ve skutečnosti užitečné. 746 00:33:36,970 --> 00:33:41,970 To znamená, že chyba je na řádku 32 v znakovou pozici pět. 747 00:33:41,970 --> 00:33:44,670 Takže jedna, dva, tři, čtyři, pět. 748 00:33:44,670 --> 00:33:46,640 To je, ve skutečnosti, kde je problém. 749 00:33:46,640 --> 00:33:49,710 A také mít na paměti při úředních hodinách i doma, budu mít štěstí tady. 750 00:33:49,710 --> 00:33:50,740 Mám jednu chybu. 751 00:33:50,740 --> 00:33:52,660 Bude to poměrně snadno opravit. 752 00:33:52,660 --> 00:33:56,220 Ale pokud se dostanete celou obrazovku plnou ohromujících chybových zpráv, opět, 753 00:33:56,220 --> 00:33:59,240 Uvědomuji si, že nejspodnější jeden by mohl být jen 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 honit své chyby z top-down. 756 00:34:03,560 --> 00:34:06,720 Vzhledem k tomu, že by mohlo být jen daisy-chain efekt, který naznačuje, vás 757 00:34:06,720 --> 00:34:09,030 mají mnohem více problémů, než jste vlastně dělat. 758 00:34:09,030 --> 00:34:14,989 >> Tak jak bychom mohli opravit, pokud je mým cílem zvýšit x? 759 00:34:14,989 --> 00:34:15,370 Co je to? 760 00:34:15,370 --> 00:34:15,620 Dobře. 761 00:34:15,620 --> 00:34:16,679 Takže můžeme x globální. 762 00:34:16,679 --> 00:34:18,860 Pojďme se na zástupce, kterého jsem varoval o tom dříve. 763 00:34:18,860 --> 00:34:20,550 Ale sakra, my jen potřebujeme rychlou opravu. 764 00:34:20,550 --> 00:34:23,949 Takže řekněme, že int x tady. 765 00:34:23,949 --> 00:34:25,600 To dělá x globální. 766 00:34:25,600 --> 00:34:28,460 Takže teď hlavní má přístup k němu. 767 00:34:28,460 --> 00:34:31,780 A přírůstek k němu má přístup. 768 00:34:31,780 --> 00:34:33,860 A tak nech mě jít napřed a zkompilovat to teď. 769 00:34:33,860 --> 00:34:36,330 Udělejte buggy4, Enter. 770 00:34:36,330 --> 00:34:37,440 Zdá se, že sestavení teď. 771 00:34:37,440 --> 00:34:40,949 Spusťme buggy4, a zdá se, že skutečně funguje. 772 00:34:40,949 --> 00:34:42,780 Nyní se jedná o jeden z těchto věcí - 773 00:34:42,780 --> 00:34:45,870 dělat, co říkám, ne jako já, jak jsem právě udělal tady. 774 00:34:45,870 --> 00:34:49,239 Protože obecně, naše programy se dostaneme mnohem zajímavější a 775 00:34:49,239 --> 00:34:50,440 mnohem déle, než tohle. 776 00:34:50,440 --> 00:34:53,199 A pokud vaše řešení životních problémů je jen ah, dát všechny 777 00:34:53,199 --> 00:34:57,550 proměnné v horní části souboru, velmi rychle to programy se 778 00:34:57,550 --> 00:34:59,700 děsivě obtížné řídit. 779 00:34:59,700 --> 00:35:02,050 To je těžší vymyslet nové názvy proměnných. 780 00:35:02,050 --> 00:35:05,240 To je těžší pochopit, co je proměnná dělá co. 781 00:35:05,240 --> 00:35:08,250 >> A tak obecně, to není dobré řešení. 782 00:35:08,250 --> 00:35:09,780 Takže jdeme na to lepší. 783 00:35:09,780 --> 00:35:11,920 Nechceme používat globální proměnnou zde. 784 00:35:11,920 --> 00:35:14,050 Já chci zvýšit x. 785 00:35:14,050 --> 00:35:16,050 Tak jsem mohl samozřejmě - 786 00:35:16,050 --> 00:35:18,450 na konci dne, je to trochu hloupé příběhu, protože jsme prostě udělat to. 787 00:35:18,450 --> 00:35:22,050 Ale když jsem o tom nevěděl tohoto subjektu, nebo jsem nesměl 788 00:35:22,050 --> 00:35:27,700 změnit v hlavním samo o sobě, jak by jinak bych implementovat Ken tady, to 789 00:35:27,700 --> 00:35:31,450 čas, aby kostka, ale můžete zvyšovat? 790 00:35:31,450 --> 00:35:32,700 Jak mohu změnit tuto věc tady? 791 00:35:32,700 --> 00:35:33,025 Jo. 792 00:35:33,025 --> 00:35:34,275 [Neslyšitelné] 793 00:35:37,430 --> 00:35:38,000 DAVID J. Malan: Dobře, dobře. 794 00:35:38,000 --> 00:35:40,490 Tak proč bych předat x? 795 00:35:40,490 --> 00:35:44,390 A pak se spíše než vrátit, proč prostě nemůžu dělat return x + 1? 796 00:35:44,390 --> 00:35:46,370 Nyní, pár dalších věcí, muset změnit zde. 797 00:35:46,370 --> 00:35:47,530 Jsem na správné cestě. 798 00:35:47,530 --> 00:35:48,910 Co ještě musím trik? 799 00:35:48,910 --> 00:35:49,470 Někdo jiný. 800 00:35:49,470 --> 00:35:49,882 Jo? 801 00:35:49,882 --> 00:35:51,530 [Neslyšitelné] 802 00:35:51,530 --> 00:35:53,520 DAVID J. Malan: Musím změnit návratový typ přírůstku 803 00:35:53,520 --> 00:35:54,590 protože to není neplatné. 804 00:35:54,590 --> 00:35:56,650 Void znamená nic se vracené. 805 00:35:56,650 --> 00:35:57,600 Ale jasně, teď je to. 806 00:35:57,600 --> 00:36:01,280 Takže to musí změnit na int být v souladu s tím, co 807 00:36:01,280 --> 00:36:02,580 Já jsem vlastně vrací. 808 00:36:02,580 --> 00:36:04,580 >> Nyní něco jiného je stále buggy tady. 809 00:36:04,580 --> 00:36:04,982 Jo? 810 00:36:04,982 --> 00:36:06,590 [Neslyšitelné] 811 00:36:06,590 --> 00:36:07,630 DAVID J. Malan: Tak jsem třeba zvýšit x? 812 00:36:07,630 --> 00:36:10,336 [Neslyšitelné] 813 00:36:10,336 --> 00:36:11,880 DAVID J. Malan: Ah, tak musím projít x. 814 00:36:11,880 --> 00:36:13,300 Tak jsem třeba udělat tady. 815 00:36:17,590 --> 00:36:19,690 Takže prototypu, musím to změnit tady. 816 00:36:19,690 --> 00:36:21,290 Tak to se musí stát int. 817 00:36:21,290 --> 00:36:22,820 To se musí stát - 818 00:36:22,820 --> 00:36:23,670 hmm. 819 00:36:23,670 --> 00:36:24,710 Vlastně jsem chybu tady. 820 00:36:24,710 --> 00:36:25,780 Pojďme opravit tenhle první. 821 00:36:25,780 --> 00:36:27,990 Co by to vlastně být? 822 00:36:27,990 --> 00:36:29,330 Tak to musí být něco, co int. 823 00:36:29,330 --> 00:36:30,340 Mohlo by to být x. 824 00:36:30,340 --> 00:36:33,120 Ale upřímně řečeno, pokud začnete volat všechny své proměnné x, to dostane 825 00:36:33,120 --> 00:36:35,250 méně a méně jasné, který je který. 826 00:36:35,250 --> 00:36:38,210 Takže řekněme, libovolně vybrat jiný konvence pro mé 827 00:36:38,210 --> 00:36:40,220 pomocné funkce, funkce píšu. 828 00:36:40,220 --> 00:36:41,100 Nazveme to. 829 00:36:41,100 --> 00:36:44,500 Nebo bychom mohli nazvat - nazvěme to even_number být ještě jasněji. 830 00:36:44,500 --> 00:36:47,610 Tak jsem se musel vrátit, co je číslo plus 1. 831 00:36:47,610 --> 00:36:49,720 A teď musím změnit jednu věc sem a jeden 832 00:36:49,720 --> 00:36:50,700 Další věc, kterou tady. 833 00:36:50,700 --> 00:36:54,150 Co mám změnit na řádku 21 jako první? 834 00:36:54,150 --> 00:36:55,390 Musím přiřadit k x. 835 00:36:55,390 --> 00:36:57,480 Tak jsem si jen volat změn růstu x. 836 00:36:57,480 --> 00:37:01,000 Musím si pamatovat odpověď změnou hodnoty x na 837 00:37:01,000 --> 00:37:02,020 na levé straně. 838 00:37:02,020 --> 00:37:04,930 A i když x je nyní na levé a pravé, že je naprosto v pořádku, protože 839 00:37:04,930 --> 00:37:08,370 pravá strana se provede, první pak dostane svalil do levého 840 00:37:08,370 --> 00:37:10,240 ruční věc, x je v tomto případě. 841 00:37:10,240 --> 00:37:11,900 A pak konečně, je to snadné opravit teď. 842 00:37:11,900 --> 00:37:15,080 To by mělo jen odpovídat, co 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á parta změn pro opravdu hloupé funkcí. 846 00:37:20,290 --> 00:37:24,250 Ale zástupce z věcí, které budeme stále chtějí dělat. 847 00:37:24,250 --> 00:37:25,490 Tak, aby buggy4. 848 00:37:25,490 --> 00:37:26,485 Já jsem podělal někde. 849 00:37:26,485 --> 00:37:27,520 Ach můj bože. 850 00:37:27,520 --> 00:37:29,660 Pět chyb v, rád, šest-line program. 851 00:37:29,660 --> 00:37:36,500 Takže to, co se děje na lince 18, znak 5? 852 00:37:36,500 --> 00:37:36,970 Dobrá. 853 00:37:36,970 --> 00:37:39,330 Tak jsem 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, spoustu dalších chyb. 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 znovu, ať to prostě vyčistit obrazovku - 859 00:37:46,020 --> 00:37:48,660 Control L zde - a re-run zvonění. 860 00:37:48,660 --> 00:37:51,340 Takže pět problémů je vlastně jen, že jeden. 861 00:37:51,340 --> 00:37:53,500 Tak teď pojďme běžet buggy4, Enter. 862 00:37:53,500 --> 00:37:54,150 Uff. 863 00:37:54,150 --> 00:37:57,434 x byl zvýšen správně. 864 00:37:57,434 --> 00:37:58,420 >> Dobrá. 865 00:37:58,420 --> 00:38:01,700 Jakékoliv dotazy na to, jak zvýšit počty? 866 00:38:01,700 --> 00:38:02,896 Jo? 867 00:38:02,896 --> 00:38:06,864 SPEAKER 2: Proč je to, že můžete jen změnit x na číslo v proměnné 868 00:38:06,864 --> 00:38:08,860 jméno a budete vědět, co 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 Jak to, že jsem si jen změnit x na číslo a program bude vědět, 871 00:38:13,130 --> 00:38:13,990 okamžitě? 872 00:38:13,990 --> 00:38:16,120 Takže znovu, myslím, že na to, jak tuto abstrakci. 873 00:38:16,120 --> 00:38:20,110 Takže když jsem hlavní a Ken je inkrementální, upřímně řečeno, je mi to jedno 874 00:38:20,110 --> 00:38:21,540 co Ken volá jeho iPad. 875 00:38:21,540 --> 00:38:25,350 Nezajímá mě, co říká něco, co má co do činění s jeho prováděním 876 00:38:25,350 --> 00:38:26,550 této funkce. 877 00:38:26,550 --> 00:38:32,130 Tak tohle je implementační detail, že jsem, hlavní, ne 878 00:38:32,130 --> 00:38:33,010 muset starat o. 879 00:38:33,010 --> 00:38:37,440 A tak prostě mění důsledně ji uvnitř funkce, číslo zde 880 00:38:37,440 --> 00:38:41,340 a číslo zde, je vše to trvá tak dlouho, jak jsem překompilovat. 881 00:38:41,340 --> 00:38:43,820 Je to něco jako když si myslíte, že o tom - mnozí z nás, ty z vás, řidiče 882 00:38:43,820 --> 00:38:46,590 licence, kteří si poháněné, nebo pokud jste dokonce řízený v autě - 883 00:38:46,590 --> 00:38:50,710 většina z nás nemá ponětí, jak auto funguje pod kapotou. 884 00:38:50,710 --> 00:38:54,710 A doslova, když otevřete kapotu, většina z nás - včetně mě - 885 00:38:54,710 --> 00:38:56,580 se nebude opravdu vědět, co se díváme na. 886 00:38:56,580 --> 00:38:58,850 Něco jako se můžete cítit s věcmi, jako je tohle teď. 887 00:38:58,850 --> 00:39:01,380 Ale my opravdu nemáme starat, jak auto funguje. 888 00:39:01,380 --> 00:39:05,000 Nemáme se starat, co všechno z tyčí a pístů a kabelů uvnitř 889 00:39:05,000 --> 00:39:07,700 auto vlastně dělají. 890 00:39:07,700 --> 00:39:11,360 >> Takže něco jako to, co říkáte pístu nezáleží 891 00:39:11,360 --> 00:39:11,920 zde v tomto případě. 892 00:39:11,920 --> 00:39:12,490 Stejný nápad. 893 00:39:12,490 --> 00:39:12,670 Jo? 894 00:39:12,670 --> 00:39:13,920 [Neslyšitelné] 895 00:39:25,250 --> 00:39:29,530 DAVID J. Malan: Pokud by bylo více použití variabilního chvíli xa před, 896 00:39:29,530 --> 00:39:32,220 vy, programátor, by musely změnit je všude. 897 00:39:32,220 --> 00:39:35,230 Nebo byste mohli doslova dělat Soubor, Nabídka, a pak Najít / Nahradit, 898 00:39:35,230 --> 00:39:36,270 něco takového, že. 899 00:39:36,270 --> 00:39:40,110 Ale budete muset udělat těchto změn sami. 900 00:39:40,110 --> 00:39:41,200 Musíte být v souladu. 901 00:39:41,200 --> 00:39:42,450 [Neslyšitelné] 902 00:39:47,200 --> 00:39:48,960 DAVID J. Malan: zejména, aby jako tady? 903 00:39:48,960 --> 00:39:52,660 Pokud to bylo int jiné čí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, když voláte funkci. 906 00:39:56,430 --> 00:40:00,350 Takže pokud bych se volat přírůstek zde něco něco čárka, 907 00:40:00,350 --> 00:40:01,400 je tu přímé mapování. 908 00:40:01,400 --> 00:40:04,490 První proměnná, jak se to jmenuje, je vyroben kopii první 909 00:40:04,490 --> 00:40:05,480 Argument tady. 910 00:40:05,480 --> 00:40:07,280 Je nám líto, nemělo by to být závorka. 911 00:40:07,280 --> 00:40:09,300 Druhý argument se seřadí s druhým. 912 00:40:09,300 --> 00:40:11,220 >> Takže pořadí, ano, záleží. 913 00:40:11,220 --> 00:40:11,490 Dobrá. 914 00:40:11,490 --> 00:40:13,360 Promiň, že jsem vzal dlouhou cestu, aby se tam dostat. 915 00:40:13,360 --> 00:40:14,610 Další otázky? 916 00:40:16,460 --> 00:40:16,850 Dobrá. 917 00:40:16,850 --> 00:40:20,300 Tak uvidíme, jestli nemůžeme namalovat obraz o tom, co se skutečně děje 918 00:40:20,300 --> 00:40:22,160 zde pod pokličku, abych tak řekl. 919 00:40:22,160 --> 00:40:26,310 Tak to je obdélník, který by mohl představovat paměti počítače. 920 00:40:26,310 --> 00:40:31,240 Takže i když máte tušení, jak paměť funguje a jak RAM funguje, alespoň 921 00:40:31,240 --> 00:40:33,590 Předpokládáme, že máte kytice z ní v těchto dnech. 922 00:40:33,590 --> 00:40:34,740 Máš megabajtů ní. 923 00:40:34,740 --> 00:40:35,760 Máš gigabajtů ní. 924 00:40:35,760 --> 00:40:40,690 A my víme, z týdne nuly, že byte je právě to, co? 925 00:40:40,690 --> 00:40:41,280 8 bitů. 926 00:40:41,280 --> 00:40:42,730 Správně, takže 8 nuly a jedničky. 927 00:40:42,730 --> 00:40:46,300 Takže pokud váš počítač má koncert RAM, dvě giga RAM v těchto dnech, budete mít 928 00:40:46,300 --> 00:40:54,450 miliarda 2000000000 bajtů paměti, nebo zhruba 8 miliard 16000000000 929 00:40:54,450 --> 00:40:56,560 bitů, uvnitř vašeho počítače. 930 00:40:56,560 --> 00:40:59,710 Nyní na rozdíl od malého Woolly například Willy, to není magnetické částice 931 00:40:59,710 --> 00:41:00,560 obvykle už. 932 00:41:00,560 --> 00:41:04,470 Stále více, v laptopech alespoň to SSD disky, SSD, že 933 00:41:04,470 --> 00:41:05,560 Právě jste žádné pohyblivé části. 934 00:41:05,560 --> 00:41:06,710 Je to všechno elektronické. 935 00:41:06,710 --> 00:41:08,070 Je to všechno na základě elektřina. 936 00:41:08,070 --> 00:41:12,360 Takže myslíte, že, i když, v tomto obdélníku jako právě představuje jeden nebo dva 937 00:41:12,360 --> 00:41:13,930 GB paměti, které máte. 938 00:41:13,930 --> 00:41:15,500 >> Takže je to kus paměti. 939 00:41:15,500 --> 00:41:20,460 Nyní svět výpočetní techniky má druh rozdělených off kusy 940 00:41:20,460 --> 00:41:22,570 Paměť dělat různé věci. 941 00:41:22,570 --> 00:41:25,930 Tak například, pokud je to váš počítač RAM - jak navrhuje 942 00:41:25,930 --> 00:41:30,400 obdélník tam - Ukazuje se, že podle konvence, v horní části paměti RAM, takže 943 00:41:30,400 --> 00:41:33,170 mluvit, je obecně to, co se nazývá textový segment. 944 00:41:33,170 --> 00:41:35,910 Ti jsou nuly a ty, které jste sestavili. 945 00:41:35,910 --> 00:41:39,040 Takže když jsme se podíval pod pokličku, co a.out je, že všechny 946 00:41:39,040 --> 00:41:40,360 Nuly a jedničky - 947 00:41:40,360 --> 00:41:44,000 při spuštění programu, jsou tyto nuly a jedničky načíst z pevného 948 00:41:44,000 --> 00:41:46,290 disk na něco, co nazývá RAM. 949 00:41:46,290 --> 00:41:48,950 A v paměti RAM, to dali na vrcholu. 950 00:41:48,950 --> 00:41:50,330 Nyní zatím máte jiné věci. 951 00:41:50,330 --> 00:41:53,060 Inicializovaná data, neinicializované dat. 952 00:41:53,060 --> 00:41:56,440 Tyto dva řádky paměti odkazují na globální proměnné, které 953 00:41:56,440 --> 00:41:57,530 nemusíte se často používají. 954 00:41:57,530 --> 00:42:00,630 Ale někdy, když to uděláte, skončí tam stejně. 955 00:42:00,630 --> 00:42:01,620 Pak je tu některé další věci. 956 00:42:01,620 --> 00:42:04,130 Proměnné prostředí, které nebude trávit tolik času na. 957 00:42:04,130 --> 00:42:06,120 Ale pak dvě důležité věci, které se vrátí po celé toto 958 00:42:06,120 --> 00:42:08,130 semestr, zásobník a halda. 959 00:42:08,130 --> 00:42:12,280 >> Takže většina z paměti počítače je vyhrazen při spuštění programu pro 960 00:42:12,280 --> 00:42:14,880 něco jako balíček, a něco, co nazývá haldy. 961 00:42:14,880 --> 00:42:16,940 A nebudeme mluvit o haldy dnes, ale my 962 00:42:16,940 --> 00:42:18,180 mluví o zásobníku. 963 00:42:18,180 --> 00:42:22,910 A stack je chtěl vykouzlit vizuál jako jídelny 964 00:42:22,910 --> 00:42:26,120 jídlo podnosy v Mather domě nebo tam, kde se stalo, že v zemi, kde 965 00:42:26,120 --> 00:42:27,810 jídelna pracovníci čistit každý den. 966 00:42:27,810 --> 00:42:30,180 Oni vyskládat až od podlahy nahoru. 967 00:42:30,180 --> 00:42:33,800 A podobně v paměti, že je to myšlenka na něco na 968 00:42:33,800 --> 00:42:36,740 stack, uvedení něco na stacku, uvedení něco na zásobníku. 969 00:42:36,740 --> 00:42:38,000 A co máme na mysli toto? 970 00:42:38,000 --> 00:42:41,430 Dobře, pojďme přiblížit jen na dolní polovině obrázku, počítač je 971 00:42:41,430 --> 00:42:43,990 RAM, navrhnout následující. 972 00:42:43,990 --> 00:42:48,300 Ukazuje se, že při spuštění programu, jako je a.out nebo ahoj, co 973 00:42:48,300 --> 00:42:49,920 program, je to, že jste napsali, 974 00:42:49,920 --> 00:42:53,030 znovu, jsou tyto nuly a jedničky načíst z pevného disku - což je 975 00:42:53,030 --> 00:42:56,190 dlouhodobé skladování, zůstane tam i když zatáhněte - 976 00:42:56,190 --> 00:42:57,220 načten do paměti RAM. 977 00:42:57,220 --> 00:42:59,020 RAM je rychlejší než pevné disky. 978 00:42:59,020 --> 00:43:00,700 Je to menší než pevné disky. 979 00:43:00,700 --> 00:43:03,490 Ale to je místo, kde žijí programy, zatímco vy používáte je. 980 00:43:03,490 --> 00:43:06,380 >> Takže jste dvakrát klikněte na program, na Mac nebo PC - je to načten z 981 00:43:06,380 --> 00:43:07,750 pevný disk do paměti RAM. 982 00:43:07,750 --> 00:43:11,760 Jakmile je načten do paměti RAM, se nuly a jedničky jít na cestě nahoru, 983 00:43:11,760 --> 00:43:13,130 tzv. textu segmentu. 984 00:43:13,130 --> 00:43:17,040 Ale pak, jakmile váš program ve skutečnosti spustí, hlavní 985 00:43:17,040 --> 00:43:18,140 funkce se nazývá. 986 00:43:18,140 --> 00:43:21,070 A hlavní, jak jsme viděli, často lokální proměnné. 987 00:43:21,070 --> 00:43:24,560 A to má ints a řetězce a připaluje a podobně. 988 00:43:24,560 --> 00:43:28,300 Takže pokud váš program, který jste napsali, nebo program, který jste 989 00:43:28,300 --> 00:43:33,680 poklepání používá některé proměnné uvnitř hlavní, oni skončí na 990 00:43:33,680 --> 00:43:37,020 Spodní část vašeho stacku paměti, abych tak řekl. 991 00:43:37,020 --> 00:43:39,160 Nyní konkrétněji, co to vlastně znamená? 992 00:43:39,160 --> 00:43:44,080 To prostě znamená, že pokud jsme se chystali číslovat věci - 993 00:43:44,080 --> 00:43:49,380 Pokud bychom chtěli, aby počet bajtů paměti RAM v počítači, zjistíte, že 994 00:43:49,380 --> 00:43:51,650 to by mohlo být byte číslo nula. 995 00:43:51,650 --> 00:43:56,130 To by mohlo být byte číslo jedna, dva, tři, čtyři, pět, šest, všechny 996 00:43:56,130 --> 00:43:57,290 způsob, jak se rád - 997 00:43:57,290 --> 00:44:01,520 2000000000 by se celou cestu tam nahoře. 998 00:44:01,520 --> 00:44:05,960 Takže jinými slovy, když mluvíme o paměti RAM nebo paměti, pokud jde o bytech, je 999 00:44:05,960 --> 00:44:09,680 jen znamená, že někdo se rozhodl, co očíslovat každý 1000 00:44:09,680 --> 00:44:11,110 ty kousky paměti. 1001 00:44:11,110 --> 00:44:16,950 >> Takže když budete potřebovat 32 bitů k int, nebo budete potřebovat 8 bitů pro Char, kde 1002 00:44:16,950 --> 00:44:18,320 se, že skončí v paměti? 1003 00:44:18,320 --> 00:44:20,650 No koncepčně, jen skončí na dně této 1004 00:44:20,650 --> 00:44:21,780 čemu se říká zásobníku. 1005 00:44:21,780 --> 00:44:25,670 Ale co je zajímavé, teď je, když hlavní volá funkce. 1006 00:44:25,670 --> 00:44:28,830 Předpokládejme, že funkci nazvanou foo, jen libovolný název. 1007 00:44:28,830 --> 00:44:32,480 Co se stane, je hlavní je v dolní části tohoto zásobníku paměti. 1008 00:44:32,480 --> 00:44:35,630 Foo nyní je kladen na vrcholu hlavní paměti. 1009 00:44:35,630 --> 00:44:40,020 Takže nějaké lokální proměnné, které foo má skončit druh koncepčně výše 1010 00:44:40,020 --> 00:44:40,770 ty hlavní. 1011 00:44:40,770 --> 00:44:46,920 Pokud foo volá jinou funkci nazvanou bar, tyto proměnné skončí tady. 1012 00:44:46,920 --> 00:44:49,790 Pokud bar volá něco jiného, ​​zde, zde, zde. 1013 00:44:49,790 --> 00:44:53,900 Takže to, co je na tom zajímavé spuštění programu je to, že jak volat funkce, 1014 00:44:53,900 --> 00:44:57,720 a jelikož tyto funkce volat funkce, a jak tyto funkce volat funkce, 1015 00:44:57,720 --> 00:45:00,980 si vybudovat tento balík funkcí v paměti. 1016 00:45:00,980 --> 00:45:06,740 A jen jednou za funkce vrátí se můžete začít se, že paměť vrátit. 1017 00:45:06,740 --> 00:45:11,190 Takže jedním z nejjednodušších způsobů, jak běží z paměti v počítačovém programu je 1018 00:45:11,190 --> 00:45:14,170 psát funkce, které se nikdy nevrátí. 1019 00:45:14,170 --> 00:45:16,650 >> Tak například, pojďme prokázat až s 1020 00:45:16,650 --> 00:45:18,460 záměrně buggy program. 1021 00:45:18,460 --> 00:45:24,690 Nech mě jít napřed a nenechám # include , int main (void). 1022 00:45:24,690 --> 00:45:31,270 A já budu dělat, když (2> 1), který pravděpodobně nebude nikdy 1023 00:45:31,270 --> 00:45:33,370 změnit na nás. 1024 00:45:33,370 --> 00:45:37,720 A nech mě jít napřed teď a dělat printf. 1025 00:45:37,720 --> 00:45:39,950 Vlastně, že to bude méně vizuálně zajímavé. 1026 00:45:39,950 --> 00:45:40,460 Pojďme to. 1027 00:45:40,460 --> 00:45:44,840 Pro int (i = 0; i> 0). 1028 00:45:44,840 --> 00:45:49,740 Pojďme udělat tuto chybu, i + +. 1029 00:45:49,740 --> 00:45:51,150 A ať to není printf zde. 1030 00:45:51,150 --> 00:45:52,550 Pojďme praktikovat to, co jsem kázal. 1031 00:45:52,550 --> 00:45:54,090 Pojďme mít metodu zde. 1032 00:45:54,090 --> 00:46:00,860 Void chorus, a řekneme int i. 1033 00:46:00,860 --> 00:46:02,295 A pak jsem chtěl říct, printf - 1034 00:46:04,871 --> 00:46:06,790 oh, pojďme udělat to zajímavější. 1035 00:46:06,790 --> 00:46:08,350 Pojďme vlastně nevytiskne vůbec nic. 1036 00:46:08,350 --> 00:46:10,530 Prostě 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 protože proč? 1040 00:46:20,040 --> 00:46:22,850 Já jsem to vymyslela, jak jsem jít, protože program není ve skutečnosti nic 1041 00:46:22,850 --> 00:46:23,420 zájmu. 1042 00:46:23,420 --> 00:46:24,670 Ale to není cílem. 1043 00:46:24,670 --> 00:46:30,440 Cílem je napsat program, jehož hlavní funkcí je co dělá, očividně? 1044 00:46:30,440 --> 00:46:31,370 Zavolejte sám. 1045 00:46:31,370 --> 00:46:32,600 A skutečně, nepotřebujeme smyčku. 1046 00:46:32,600 --> 00:46:36,070 Pojďme ještě zjednodušit tím, jen tak, abychom neztratili ze zřetele fakt 1047 00:46:36,070 --> 00:46:37,310 zásadní chyba. 1048 00:46:37,310 --> 00:46:39,200 Hlavní vyzývá sbor zpívat nějakou chór. 1049 00:46:39,200 --> 00:46:41,760 Pak jsem udělal něco hloupého, a já jsem měl refrén volání refrén, protože jsem předpokládal, 1050 00:46:41,760 --> 00:46:43,550 někdo jiný bude implementovat možná. 1051 00:46:43,550 --> 00:46:45,960 A teď to nebude sestavovat ještě. 1052 00:46:45,960 --> 00:46:48,340 Musím udělat, co? 1053 00:46:48,340 --> 00:46:49,700 Potřebuju prototyp, nezapomeňte. 1054 00:46:49,700 --> 00:46:55,520 Tak jsem třeba mít tady void chór (int i);. 1055 00:46:55,520 --> 00:46:57,470 >> Takže teď, když půjdu tady - 1056 00:46:57,470 --> 00:46:59,030 vlastně, pojďme použijte větší okno. 1057 00:46:59,030 --> 00:47:01,670 Pojďme dál a udělat sbor. 1058 00:47:01,670 --> 00:47:06,000 Pojďme dál a udělat sbor. 1059 00:47:06,000 --> 00:47:08,302 Použití nezjištěného vydražitele i. 1060 00:47:08,302 --> 00:47:09,860 Oh, to bylo hloupé. 1061 00:47:09,860 --> 00:47:11,020 Nepotřebujeme argument. 1062 00:47:11,020 --> 00:47:13,680 Prostě to. 1063 00:47:13,680 --> 00:47:14,550 Kéž jsme začali tímto způsobem. 1064 00:47:14,550 --> 00:47:16,160 Bylo by to mnohem jednodušší program psát. 1065 00:47:16,160 --> 00:47:20,100 Takže tam. 1066 00:47:20,100 --> 00:47:23,870 Teď pojďme ke mně terminálovém okně, re-run Clang. 1067 00:47:23,870 --> 00:47:26,900 A je to tady. 1068 00:47:26,900 --> 00:47:28,020 To byl opravdu rychlý. 1069 00:47:28,020 --> 00:47:30,690 Co se vlastně právě stalo, když? 1070 00:47:30,690 --> 00:47:33,430 No, teď budu přidávat tiskovou linku, takže můžeme vidět. 1071 00:47:33,430 --> 00:47:41,330 Takže mi dovolte říci printf, řekněme, že jsem tady. 1072 00:47:41,330 --> 00:47:43,470 Dobře, žádné proměnné, necháme to takhle. 1073 00:47:43,470 --> 00:47:44,860 Dovolte mi, abych znovu spusťte make. 1074 00:47:44,860 --> 00:47:47,940 Dovolte mi, abych znovu-run chorus. 1075 00:47:47,940 --> 00:47:51,235 A pojď. 1076 00:47:53,880 --> 00:47:55,130 Jen tak dál. 1077 00:47:57,630 --> 00:47:59,750 Jak stranou, proč se nezhroutil? 1078 00:47:59,750 --> 00:48:02,050 Segmentation fault stalo super rychlý předtím. 1079 00:48:02,050 --> 00:48:04,250 [Neslyšitelné] 1080 00:48:04,250 --> 00:48:04,830 DAVID J. Malan: Přesně tak. 1081 00:48:04,830 --> 00:48:06,350 Tak to trvá dobu tisku. 1082 00:48:06,350 --> 00:48:08,370 Je to jen má více práce na počítači v rámci. 1083 00:48:08,370 --> 00:48:09,550 A je to tady. 1084 00:48:09,550 --> 00:48:10,620 Segmentation fault. 1085 00:48:10,620 --> 00:48:12,140 >> Tak zjistíte, jak rychle programy běží. 1086 00:48:12,140 --> 00:48:14,110 Pokud si nejste tisku nic, super rychlý. 1087 00:48:14,110 --> 00:48:18,100 Ale my pořád tuto segmentation fault, protože to, co se děje? 1088 00:48:18,100 --> 00:48:21,310 No, pokud si myslíte, že o tom, jak je váš počítač paměť stanoven, tento 1089 00:48:21,310 --> 00:48:22,890 Stává se hlavním. 1090 00:48:22,890 --> 00:48:23,800 Ale tady - 1091 00:48:23,800 --> 00:48:28,670 řekněme, nazývají tento refrén, a říkejme této chór. 1092 00:48:28,670 --> 00:48:33,420 A teď když to udělám své estetiku právo, je to jen říct chór, 1093 00:48:33,420 --> 00:48:38,060 chorus, chorus, chorus, chorus, chorus, chorus, ad nauseum. 1094 00:48:38,060 --> 00:48:39,920 A nakonec, co se bude dít? 1095 00:48:39,920 --> 00:48:46,690 Pokud velký obrázek doslova je to, co se právě děje koncepčně? 1096 00:48:46,690 --> 00:48:48,320 Stoh přejíždí haldy. 1097 00:48:48,320 --> 00:48:52,400 Nebo ještě hůř, stačí překročení všechno, včetně textového segmentu, který je 1098 00:48:52,400 --> 00:48:54,530 Nuly a ty, které představují svůj program. 1099 00:48:54,530 --> 00:48:56,690 Stručně řečeno, je to prostě super, super špatný. 1100 00:48:56,690 --> 00:48:56,860 Je to tak? 1101 00:48:56,860 --> 00:48:58,620 Váš program se vymkla kontrole. 1102 00:48:58,620 --> 00:49:02,840 Používáte způsobem více paměti, než jste zamýšleli vše kvůli hloupé 1103 00:49:02,840 --> 00:49:03,920 chyba, v tomto případě. 1104 00:49:03,920 --> 00:49:08,160 Nebo v tomto případě, velmi záměrně provádí funkce volat sebe. 1105 00:49:08,160 --> 00:49:09,210 Teď to není tak špatné. 1106 00:49:09,210 --> 00:49:12,540 Funkce volání se vlastně má velkou sílu 1107 00:49:12,540 --> 00:49:13,700 když ji použijete správně. 1108 00:49:13,700 --> 00:49:15,650 Osobně jsem nepoužil správně zde. 1109 00:49:15,650 --> 00:49:16,940 >> Takže to není tak špatné. 1110 00:49:16,940 --> 00:49:20,620 Ale fakt, že jsem vlastně nikdy přestat volat sám je základním 1111 00:49:20,620 --> 00:49:23,050 slabost tady tohoto programu. 1112 00:49:23,050 --> 00:49:25,090 Tak kam jdeme s tím vším? 1113 00:49:25,090 --> 00:49:26,230 No, co se skutečně děje? 1114 00:49:26,230 --> 00:49:30,010 Když zavolám přírůstek funkce, jako bychom dělali v těch příkladech, 1115 00:49:30,010 --> 00:49:33,290 Mám hodnotu jako 1, že jsem se projít dovnitř 1116 00:49:33,290 --> 00:49:35,820 I předat kopii číslo jedna. 1117 00:49:35,820 --> 00:49:37,080 Tak se stane následující. 1118 00:49:37,080 --> 00:49:40,390 Tak pojďme do přírůstku příkladu. 1119 00:49:40,390 --> 00:49:44,230 A tenhle chlápek támhle. 1120 00:49:44,230 --> 00:49:46,800 Tak tady je to, co se vlastně děje. 1121 00:49:46,800 --> 00:49:50,770 Když jsem volal přírůstek, a já předat x, obrazově, co je 1122 00:49:50,770 --> 00:49:53,660 tu děje, je to - 1123 00:49:53,660 --> 00:50:00,240 jestli budu mít hodnotu 1 uloženou tady, a já jsem vlastně volají přírůstek, který 1124 00:50:00,240 --> 00:50:02,680 se nyní nazývá refrén - 1125 00:50:02,680 --> 00:50:04,010 jo, to je házení mě tady. 1126 00:50:04,010 --> 00:50:06,750 Takže řekněme tento přírůstek. 1127 00:50:06,750 --> 00:50:09,420 A my nevíme, co to další funkce to bude. 1128 00:50:09,420 --> 00:50:14,270 Takže co se vlastně děje, je tady někde v hlavní, mám kus 1129 00:50:14,270 --> 00:50:16,670 paměť, která je uložení čísla 1. 1130 00:50:16,670 --> 00:50:19,730 Když říkám, přírůstek, já jsem s použitím jiného kus paměti, ale teď jsem 1131 00:50:19,730 --> 00:50:20,840 mají kopii 1. 1132 00:50:20,840 --> 00:50:25,480 Když jsem zvyšte tuto hodnotu, to se stává 2 - hrozně napsané na 1133 00:50:25,480 --> 00:50:26,420 Obrazovka zde. 1134 00:50:26,420 --> 00:50:30,550 Ale pak, co se stane, jakmile přírůstu vrátí? 1135 00:50:30,550 --> 00:50:34,610 Tato paměť jen dostane předán zpět do operačního systému, což znamená, že všechny 1136 00:50:34,610 --> 00:50:37,470 jste udělal, je nic užitečného. 1137 00:50:37,470 --> 00:50:43,460 Ten, který byl původně obsažen v main je stále ve skuteč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 se, že v paměti máte tento zády k sobě posloupnost 1140 00:50:49,400 --> 00:50:50,940 bytů, které si můžete dát věci dovnitř 1141 00:50:50,940 --> 00:50:53,760 A ukázalo se, že jsme už viděli něco, co zahrnuje uvedení 1142 00:50:53,760 --> 00:50:55,100 věci zpět k sobě, aby se zády k sobě. 1143 00:50:55,100 --> 00:51:00,170 Co je řetězec, založený na týden a nyní se týden dva? 1144 00:51:00,170 --> 00:51:01,840 Takže je to jen sbírka postav. 1145 00:51:01,840 --> 00:51:05,290 Tak to dopadá, stejně jako si můžete dát čísla v paměti, podobně můžete 1146 00:51:05,290 --> 00:51:06,900 dal znaků v paměti. 1147 00:51:06,900 --> 00:51:09,810 A jakmile začneme putting znaky v paměti zpět k sobě dozadu, aby 1148 00:51:09,810 --> 00:51:12,800 zpět, se ukazuje, že s nejjednodušší věci, jako je pro smyčce nebo 1149 00:51:12,800 --> 00:51:14,510 zatímco smyčka, můžeme iterovat - 1150 00:51:14,510 --> 00:51:17,130 zleva doprava přes znaků v řetězci - 1151 00:51:17,130 --> 00:51:20,720 a začít masírovat je do různých postav úplně. 1152 00:51:20,720 --> 00:51:25,550 By se mohlo stát B. B by se mohl stát C. Takže nakonec můžeme vzít 1153 00:51:25,550 --> 00:51:28,830 Anglické věty, které skutečně smysl a převést každý z těch, 1154 00:51:28,830 --> 00:51:32,440 dopisy jeden po čase procházel naší paměti počítače vlevo 1155 00:51:32,440 --> 00:51:34,300 právo skutečně šifrování. 1156 00:51:34,300 --> 00:51:36,590 >> Takže pojďme se náš pětiminutovou přestávku tady, a až se vrátíme, sejdeme se 1157 00:51:36,590 --> 00:51:39,060 kdo tento proces zakódování informací. 1158 00:51:41,640 --> 00:51:43,180 >> Dobrá. 1159 00:51:43,180 --> 00:51:48,440 Takže než jsme se vrhnout na nějaký krypto a tyto věci tzv. pole, dovolte mi, abych 1160 00:51:48,440 --> 00:51:51,610 pauza pro případné dotazy, protože mám pocit, že jsem opravdu trochu zmatené některých 1161 00:51:51,610 --> 00:51:52,230 tato témata. 1162 00:51:52,230 --> 00:51:53,940 Takže pojďme opravit hned, jestli můžeme. 1163 00:51:53,940 --> 00:51:56,480 Tak jsme si povídali o návratových hodnot. 1164 00:51:56,480 --> 00:51:58,630 Mluvili jsme o argumenty. 1165 00:51:58,630 --> 00:52:02,330 A mluvili jsme o tomto pojmu, který se vrátíme v následujících týdnech 1166 00:52:02,330 --> 00:52:07,140 přijde, nahlížení paměti jako celou partou těchto naskládaných 1167 00:52:07,140 --> 00:52:08,540 podnosy, abych tak řekl. 1168 00:52:08,540 --> 00:52:13,460 Od dolní nahoru, tak, že každý zásobník, který se dal na stack představuje 1169 00:52:13,460 --> 00:52:15,160 funkce, která je v současné době nazývá. 1170 00:52:17,970 --> 00:52:20,300 Nějaké otázky? 1171 00:52:20,300 --> 00:52:22,890 Tak co - zkusím pokládám otázku. 1172 00:52:22,890 --> 00:52:25,520 Pořád kazí, ale teď to - you've všichni viděli chlapcovu tvář. 1173 00:52:25,520 --> 00:52:27,020 Takže se vrátíme k tomu. 1174 00:52:27,020 --> 00:52:29,700 >> Dovolte mi tedy položit otázku zde. 1175 00:52:29,700 --> 00:52:34,810 Dovolte mi, abych zjednodušit to zpět k tomu, co bylo předtím, než některé z našich dřívějších Q & A. 1176 00:52:34,810 --> 00:52:41,730 A to, že přírůstek má otevřené závorky, int číslo, uzavřený 1177 00:52:41,730 --> 00:52:42,260 závorky. 1178 00:52:42,260 --> 00:52:46,370 Co int číslo představuje? 1179 00:52:46,370 --> 00:52:47,250 [Neslyšitelné] 1180 00:52:47,250 --> 00:52:47,870 DAVID J. Malan: argument. 1181 00:52:47,870 --> 00:52:50,732 Dobře, ale co je to argument? 1182 00:52:50,732 --> 00:52:51,620 [Neslyšitelné] 1183 00:52:51,620 --> 00:52:52,500 DAVID J. Malan: Je nám líto, co to je? 1184 00:52:52,500 --> 00:52:53,150 SPEAKER 3: Něco vám projít dovnitř 1185 00:52:53,150 --> 00:52:53,570 DAVID J. Malan: Dobře. 1186 00:52:53,570 --> 00:52:54,780 Takže něco, že předáte palců 1187 00:52:54,780 --> 00:52:56,560 A obecněji, je to jen vstup. 1188 00:52:56,560 --> 00:52:59,860 Pokud píšete funkci a tuto funkci je smysl života, je to 1189 00:52:59,860 --> 00:53:03,290 něco trochu jiného každém použití, pak jediný způsob, jak 1190 00:53:03,290 --> 00:53:07,710 Aby se tak stalo skutečně se zdá být, aby jí vstup tak, že se 1191 00:53:07,710 --> 00:53:10,180 může dělat něco jiného s tím vstupem pokaždé. 1192 00:53:10,180 --> 00:53:13,590 >> Takže budete muset zadat dvě věci, když funkce má vstupy. 1193 00:53:13,590 --> 00:53:17,240 Musíte zadat jméno, které chcete, aby se tímto vstupem, čistě pro 1194 00:53:17,240 --> 00:53:20,790 vlastní pohodlí, takže můžete odkazovat se na to ve funkci, která vám 1195 00:53:20,790 --> 00:53:23,610 yourself psaní, jak jsem zde v souladu 32. 1196 00:53:23,610 --> 00:53:27,840 Ale také je třeba zadat její typ, protože C je programovací jazyk 1197 00:53:27,840 --> 00:53:28,840 že jen vyžaduje 1198 00:53:28,840 --> 00:53:31,810 že pokud chcete proměnnou, budete muset říct počítači, co 1199 00:53:31,810 --> 00:53:32,790 Datový typ je, 1200 00:53:32,790 --> 00:53:35,540 z velké části tak, že to ví, kolik bitů se 1201 00:53:35,540 --> 00:53:37,230 přidělit pro uvedené proměnné. 1202 00:53:37,230 --> 00:53:38,600 Vzhledem k tomu, že by mohlo být šest - 1203 00:53:38,600 --> 00:53:39,990 Omlouváme se, nebude to šest. 1204 00:53:39,990 --> 00:53:41,050 To může být 16. 1205 00:53:41,050 --> 00:53:41,630 To může být 8. 1206 00:53:41,630 --> 00:53:44,410 To může být 32, dokonce 64. 1207 00:53:44,410 --> 00:53:45,820 Ale počítač potřebuje vědět. 1208 00:53:45,820 --> 00:53:49,110 Nyní int na levé straně představuje to, co naopak? 1209 00:53:52,825 --> 00:53:53,780 [Neslyšitelné] 1210 00:53:53,780 --> 00:53:54,570 DAVID J. Malan: Co je to? 1211 00:53:54,570 --> 00:53:55,390 [Neslyšitelné] 1212 00:53:55,390 --> 00:53:57,920 DAVID J. Malan: Typ funkce, a konkrétněji, 1213 00:53:57,920 --> 00:53:59,755 typ jeho výstupu. 1214 00:53:59,755 --> 00:54:00,220 Přesně tak. 1215 00:54:00,220 --> 00:54:04,220 Takže vzhledem k tomu, věc v závorce představuje jeho vklad, pokud existuje, 1216 00:54:04,220 --> 00:54:06,640 věc vlevo představuje jeho výstupu. 1217 00:54:06,640 --> 00:54:10,560 A v tomto případě, přírůstek zřejmě vrátí int. 1218 00:54:10,560 --> 00:54:14,590 A tak int je návratový typ této funkce. 1219 00:54:14,590 --> 00:54:16,090 >> Co to znamená vrátit? 1220 00:54:16,090 --> 00:54:19,810 Doslova, můžete použít klíčové slovo návrat. 1221 00:54:19,810 --> 00:54:24,640 A pak, když to, co se vrací do pravé klíčového slova je 1222 00:54:24,640 --> 00:54:28,340 integer, pak je to skutečně v souladu s tím, co jsme slíbili. 1223 00:54:28,340 --> 00:54:31,110 Dalo by se to udělat něco takového - 1224 00:54:31,110 --> 00:54:32,280 ahoj, svět - 1225 00:54:32,280 --> 00:54:33,500 protože to je řetězec. 1226 00:54:33,500 --> 00:54:35,440 Je zřejmé, že je to celé číslo. 1227 00:54:35,440 --> 00:54:40,450 Takže ve zkratce, zátěž je opravdu na nás, programátor, jako specifické 1228 00:54:40,450 --> 00:54:44,730 k tomu, co se vracíme a pak vlastně jít o vracení. 1229 00:54:44,730 --> 00:54:49,030 A pak, aby se tad jasnější kontext - 1230 00:54:49,030 --> 00:54:50,080 tady je znovu. 1231 00:54:50,080 --> 00:54:51,060 Kontext - 1232 00:54:51,060 --> 00:54:52,830 Velkým překvapením přichází jen chvíli. 1233 00:54:52,830 --> 00:54:57,720 Kontext zde nyní je, že váš počítač je paměť, opět, 1234 00:54:57,720 --> 00:54:59,070 gigabyte, dva gigabajty, cokoliv. 1235 00:54:59,070 --> 00:54:59,630 Možná je to víc. 1236 00:54:59,630 --> 00:55:00,540 Možná je to méně. 1237 00:55:00,540 --> 00:55:03,750 Ale počítač považuje to, že mají různé oddíly. 1238 00:55:03,750 --> 00:55:04,860 Něco je tam dole. 1239 00:55:04,860 --> 00:55:06,020 Něco jiného jde tam. 1240 00:55:06,020 --> 00:55:07,540 Různé věci jde ve středu. 1241 00:55:07,540 --> 00:55:09,300 A dnes, právě jsme začít vyprávět tento příběh. 1242 00:55:09,300 --> 00:55:11,130 >> Ale vrátíme se na tento v průběhu času. 1243 00:55:11,130 --> 00:55:15,000 Pro tuto chvíli, jen kousek paměti opravdu záleží, je text segmentu 1244 00:55:15,000 --> 00:55:17,160 proto, že právě představuje nuly a ty, 1245 00:55:17,160 --> 00:55:18,460 že zvonění se na výstup. 1246 00:55:18,460 --> 00:55:21,570 Takže při spuštění příkazu na klávesnici, jako a.out, nebo double 1247 00:55:21,570 --> 00:55:25,350 klepněte na ikonu v systému Mac OS nebo Windows, je váš program načíst z pevného 1248 00:55:25,350 --> 00:55:26,930 jet do paměti RAM. 1249 00:55:26,930 --> 00:55:30,850 A to svalil na vrcholu RAM počítače, abych tak řekl. 1250 00:55:30,850 --> 00:55:35,470 Nyní mezitím, jak váš program spustí a hlavní je volána v 1251 00:55:35,470 --> 00:55:39,240 program, který psal nebo program Microsoft nebo Apple psal, některý z jeho 1252 00:55:39,240 --> 00:55:42,930 lokální proměnné skončí tam dole na dně paměti vašeho počítače. 1253 00:55:42,930 --> 00:55:46,490 Ale pokud hlavní volá jinou funkci, která sama o sobě má proměnné nebo 1254 00:55:46,490 --> 00:55:48,340 Argumenty, které skončily nad ním. 1255 00:55:48,340 --> 00:55:50,670 A pokud tato funkce volá něco, oni skončí 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 pouze jednou funkcí se provádí spuštěním dělá balík zásobníků, tak 1258 00:55:56,100 --> 00:55:58,320 mluvit, začnou se dostat nižší a nižší. 1259 00:55:58,320 --> 00:56:03,370 A to je to, co pak, v kostce, vysvětluje, proč, když budete volat kostka - 1260 00:56:03,370 --> 00:56:04,660 nebo volejte přírůstek - 1261 00:56:04,660 --> 00:56:06,490 vy kolem v kopii hodnoty. 1262 00:56:06,490 --> 00:56:09,840 A co to znamená, obrazově je to, že jste doslova psát 1263 00:56:09,840 --> 00:56:14,540 číslo 1 v jiné části paměti, měnící se, že 1-2, v případě, že 1264 00:56:14,540 --> 00:56:15,360 přírůstek - 1265 00:56:15,360 --> 00:56:17,450 nebo na 8, v případě, že kostky - 1266 00:56:17,450 --> 00:56:21,450 a pak házet, že paměť se pryč jakmile přírůstkem nebo kostky 1267 00:56:21,450 --> 00:56:23,410 funkce vrací. 1268 00:56:23,410 --> 00:56:24,267 >> Otázka. 1269 00:56:24,267 --> 00:56:25,517 [Neslyšitelné] 1270 00:56:28,090 --> 00:56:29,970 DAVID J. Malan: Kde - globální proměnné jsou uloženy v to, co je 1271 00:56:29,970 --> 00:56:32,960 v současné době volal inicializované data nebo neinicializované dat. 1272 00:56:32,960 --> 00:56:35,900 Rozdíl je, pokud máte globální proměnné, a přiřadit ji 1273 00:56:35,900 --> 00:56:39,530 okamžitě hodnota se rovná registrovat, to skončí na vrcholu. 1274 00:56:39,530 --> 00:56:43,390 A jestli si jen říct, int x středník bez hodnoty, skončí mírně 1275 00:56:43,390 --> 00:56:46,670 nižší RAM jednoduše podle konvence. 1276 00:56:46,670 --> 00:56:49,308 Další dotazy. 1277 00:56:49,308 --> 00:56:49,750 Dobrá. 1278 00:56:49,750 --> 00:56:53,040 >> Takže tento obrázek vrátí, jak jsme si silnější s tím, co můžeme udělat 1279 00:56:53,040 --> 00:56:53,830 s počítačem. 1280 00:56:53,830 --> 00:56:58,790 Ale teď, pojďme se stručně úvod do kryptografie, specifický druh 1281 00:56:58,790 --> 00:57:01,910 kryptografie, která se neřeší všechny problémy světa, ale to řešit 1282 00:57:01,910 --> 00:57:02,480 some z nich se. 1283 00:57:02,480 --> 00:57:06,090 V tomto případě zde máme něco, co nazývá tajný klíč kryptografie. 1284 00:57:06,090 --> 00:57:10,430 A tajný klíč kryptografie, jak již název napovídá, pochází jeho bezpečnost 1285 00:57:10,430 --> 00:57:11,330 z tajemství. 1286 00:57:11,330 --> 00:57:14,720 Tak například, pokud jste zpátky na základní škole a jste kolem 1287 00:57:14,720 --> 00:57:18,040 malé tajemství milostný dopis pro chlapce nebo děvče se tlakem na - pokud 1288 00:57:18,040 --> 00:57:20,820 chtěl předat, že přes publikum, pravděpodobně by se psát 1289 00:57:20,820 --> 00:57:24,120 taková poznámka v angličtině nebo jaký je váš rodný jazyk, je, spíše si 1290 00:57:24,120 --> 00:57:25,800 může zašifrovat. 1291 00:57:25,800 --> 00:57:27,820 Nebo můžete jen poslat textovou zprávu v těchto dnech. 1292 00:57:27,820 --> 00:57:30,310 Ale možná ve skutečnosti předat jim vzkaz v celé třídě. 1293 00:57:30,310 --> 00:57:33,820 A k tomu to bezpečně, tak aby vaši přátelé a učitel 1294 00:57:33,820 --> 00:57:36,820 Nevím, co píšete, můžete přijít s poměrně jednoduchou 1295 00:57:36,820 --> 00:57:37,800 algoritmus - 1296 00:57:37,800 --> 00:57:39,290 mladý, že jste mohl být - 1297 00:57:39,290 --> 00:57:40,780 jen vyškrábat slova. 1298 00:57:40,780 --> 00:57:44,390 Takže místo psaní, můžete si napsat B. Místo B, můžete si napsat 1299 00:57:44,390 --> 00:57:46,670 C. Místo C, můžete napsat D, a tak dále. 1300 00:57:46,670 --> 00:57:50,020 Nebo byste mohli přijít s sofistikovanější překlad dopisů 1301 00:57:50,020 --> 00:57:51,300 na různých písmen. 1302 00:57:51,300 --> 00:57:55,440 Ale úlovek je chlapec nebo dívka, které posíláte na vědomí potřebuje 1303 00:57:55,440 --> 00:57:56,850 něco vědět. 1304 00:57:56,850 --> 00:57:59,620 Což je to, co, samozřejmě? 1305 00:57:59,620 --> 00:58:01,400 Stejně jako to, co vaše tajemství. 1306 00:58:01,400 --> 00:58:04,620 Stejně jako to, co je, že mapování mezi AS a BS a CS a DS? 1307 00:58:04,620 --> 00:58:08,780 Je to pouhým přidáním, abych tak řekl, na každou z dopisů jít 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 složitější, než to? 1310 00:58:11,350 --> 00:58:16,450 Takže vy a vaše rozdrtit potřebujete mít tuto tajnou informaci. 1311 00:58:16,450 --> 00:58:18,170 Ale je tu trochu catch-22 zde. 1312 00:58:18,170 --> 00:58:20,760 Pokud je to vůbec poprvé posíláte milostný dopis prostřednictvím 1313 00:58:20,760 --> 00:58:25,590 třídy, jak je ten kluk, nebo holka bude vědět, co je tajemství ještě je? 1314 00:58:25,590 --> 00:58:28,450 Takže tajný šifrovací klíč nevyřeší všechny problémy světa. 1315 00:58:28,450 --> 00:58:30,490 A je to vlastně vztah, který se vrátíme do k 1316 00:58:30,490 --> 00:58:31,370 semestr Konec. 1317 00:58:31,370 --> 00:58:35,970 >> Podobně, žádný z nás asi někdy poslal - 1318 00:58:35,970 --> 00:58:39,453 podobně, se většina z nás neví někdo, že pracuje, například na 1319 00:58:39,453 --> 00:58:40,300 Amazon.com. 1320 00:58:40,300 --> 00:58:43,130 A přesto, mnozí z nás pravděpodobně koupil věci na Amazon.com. 1321 00:58:43,130 --> 00:58:45,670 A my jsme se učili předpokládat, že tyto e-commerce 1322 00:58:45,670 --> 00:58:47,060 transakce jsou bezpečné. 1323 00:58:47,060 --> 00:58:47,210 Je to tak? 1324 00:58:47,210 --> 00:58:49,310 URL pravděpodobně říká https. 1325 00:58:49,310 --> 00:58:51,590 Tam je možná hloupá ikona visacího zámku někde. 1326 00:58:51,590 --> 00:58:54,680 Tam je nějaká kryptografie zabezpečení informací o kreditní kartě 1327 00:58:54,680 --> 00:58:56,980 mezi vámi a Amazon.com. 1328 00:58:56,980 --> 00:59:00,410 A přesto, pokud kryptografie znamená vědět, nějaké tajemství, a přesto nemám 1329 00:59:00,410 --> 00:59:03,330 Znáte někoho na Amazon, a já jsem rozhodně nejsou uspořádány jakékoliv 1330 00:59:03,330 --> 00:59:07,350 Tajemství s někým na Amazon, jak se můj počítač, nebo můj prohlížeč dělat tohle? 1331 00:59:07,350 --> 00:59:10,100 No, ukázalo se, že je to jiné typy kryptografie celkem, které řeší 1332 00:59:10,100 --> 00:59:10,740 tohoto problému. 1333 00:59:10,740 --> 00:59:13,610 Ale pro dnešek, budeme soustředit na jednoduchý, kde si můžete sjednat ve 1334 00:59:13,610 --> 00:59:18,480 předem vědět nějaké tajemství, stejně jako plus 1 nebo nějaké mapování mezi AS a BS. 1335 00:59:18,480 --> 00:59:20,710 >> A proces kryptografie obecně zahrnuje to. 1336 00:59:20,710 --> 00:59:23,550 Máte nějaký prostý text, je znázorněno zde vlevo. 1337 00:59:23,550 --> 00:59:26,260 Můžete jej spustit přes nějaký druh algoritmu nebo postupu 1338 00:59:26,260 --> 00:59:27,670 pro šifrování ho. 1339 00:59:27,670 --> 00:59:31,390 Možná, že to jen se stane B, B se stává C. A pak skončit s 1340 00:59:31,390 --> 00:59:32,260 šifrovaný text. 1341 00:59:32,260 --> 00:59:36,450 Mezitím, jakmile váš rozdrtit obdrží tajnou poznámku, on nebo ona má pak 1342 00:59:36,450 --> 00:59:39,950 dešifrovat to tím, že obecně změny tohoto algoritmu tak, aby si 1343 00:59:39,950 --> 00:59:41,640 zpět na prostý text. 1344 00:59:41,640 --> 00:59:43,860 Teď tam jsou fyzické inkarnace tohoto. 1345 00:59:43,860 --> 00:59:46,720 Například, to je malé tajemství dekodér kroužek. 1346 00:59:46,720 --> 00:59:50,060 A to je kroužek v tom smyslu, že jsou dva vytočí zde. 1347 00:59:50,060 --> 00:59:53,630 Na vnější okraji této věci, je tu písmena A až Z, 1348 00:59:53,630 --> 00:59:55,110 i když to v náhodném pořadí. 1349 00:59:55,110 --> 00:59:58,410 A na vnitřní straně, je to vlastně některá čísla, je taková, že s tímto 1350 00:59:58,410 --> 01:00:02,940 kroužek, můžete druh zase mimo, ale ne uvnitř, aby se seřadit 1351 01:00:02,940 --> 01:00:04,110 čísla s písmeny. 1352 01:00:04,110 --> 01:00:08,290 A v klipu, který se chystáte vidět - z nichž některé mohou být vidět 24/7 1353 01:00:08,290 --> 01:00:11,120 kolem Vánoc z filmu s názvem Vánoční příběh. 1354 01:00:11,120 --> 01:00:16,050 Uvidíte, že malý Ralphie byl tak dychtivý zjistit, co malý sirotek 1355 01:00:16,050 --> 01:00:19,810 Annie je tajný vzkaz byl k němu, které byly sděleny, myslím, že ve 1356 01:00:19,810 --> 01:00:22,810 tvoří numerických zpráv na sériovém krabici. 1357 01:00:22,810 --> 01:00:26,760 A vy jste musel shromažďovat všechny ty malé karty, které byly dodány 1358 01:00:26,760 --> 01:00:27,480 v obilí pole. 1359 01:00:27,480 --> 01:00:28,320 Vy jste měli na e-mail jim palce 1360 01:00:28,320 --> 01:00:31,060 Vy jste měli dostat zpět tajný dekodéru prsten, takže si můžete konečně přijít 1361 01:00:31,060 --> 01:00:34,190 co je mapování mezi písmeny a číslicemi, 1362 01:00:34,190 --> 01:00:35,420 nebo písmena a písmena. 1363 01:00:35,420 --> 01:00:39,790 Tak jsem vám tento krátký klip z A Christmas Story motivovat PSet 2 a 1364 01:00:39,790 --> 01:00:42,340 naše diskuse, ve 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 >> [PŘEHRÁVÁNÍ] 1367 01:00:44,126 --> 01:00:47,470 -Ať už je to všem známé a různé, že Ralph Parker je jmenován 1368 01:00:47,470 --> 01:00:50,690 člen Little Orphan Annie kruhu tajné a je oprávněn ke všem 1369 01:00:50,690 --> 01:00:53,500 se ctí a výhody vyskytující ní. 1370 01:00:53,500 --> 01:00:56,040 -Signed, Little Orphan Annie. 1371 01:00:56,040 --> 01:00:58,730 Spolupodepsal, Pierre Andre! 1372 01:00:58,730 --> 01:01:00,150 V inkoustu! 1373 01:01:00,150 --> 01:01:02,910 Vyznamenání a výhody, které již ve věku devíti. 1374 01:01:09,970 --> 01:01:10,730 Pojď, dáme se do toho. 1375 01:01:10,730 --> 01:01:15,000 Nepotřebuju All That Jazz o pašeráky a piráty. 1376 01:01:15,000 --> 01:01:17,624 -Poslouchejte zítra večer na závěrečné dobrodružství Black 1377 01:01:17,624 --> 01:01:19,710 Pirate Ship. 1378 01:01:19,710 --> 01:01:23,380 Nyní je čas na tajné zprávy Annie pro vás členové 1379 01:01:23,380 --> 01:01:25,670 Tajného kruhu. 1380 01:01:25,670 --> 01:01:30,260 Pamatujte si, děti, mohou pouze členové tajné kruhu Annie dekódovat 1381 01:01:30,260 --> 01:01:31,660 Annie je tajný vzkaz. 1382 01:01:31,660 --> 01:01:36,230 Nezapomeňte, Annie je v závislosti na vás. 1383 01:01:36,230 --> 01:01:38,720 Nastavte své špendlíky B2. 1384 01:01:38,720 --> 01:01:41,040 Zde je zpráva. 1385 01:01:41,040 --> 01:01:42,470 12, 11 - 1386 01:01:42,470 --> 01:01:46,000 -Já jsem ve svém prvním tajné schůzce. 1387 01:01:46,000 --> 01:01:49,440 -14, 11, 18, 16 - 1388 01:01:49,440 --> 01:01:51,700 -Pierre byl ve velké hlasové večer. 1389 01:01:51,700 --> 01:01:54,890 Mohl bych říct, že dnešní zpráva je opravdu 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 zpráva z Annie sama. 1392 01:01:58,590 --> 01:01:59,840 Pamatujte si, že nikomu to neříkejte. 1393 01:02:04,570 --> 01:02:08,750 -90 Vteřin později, jsem v jediné místnosti v domě, kde devítiletý chlapec 1394 01:02:08,750 --> 01:02:12,980 mohl sedět v soukromí a dekódovány. 1395 01:02:12,980 --> 01:02:17,130 Aha, B. jsem šel na další. 1396 01:02:17,130 --> 01:02:20,330 E. První slovo je být. 1397 01:02:20,330 --> 01:02:22,670 S. Přicházelo to teď snazší. 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 jít. 1401 01:02:28,430 --> 01:02:30,350 -Budu hned 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. Ujistěte se, že. 1404 01:02:38,270 --> 01:02:40,000 Ujistěte se, že to, co? 1405 01:02:40,000 --> 01:02:42,105 Co bylo Little Orphan Annie snaží říct? 1406 01:02:42,105 --> 01:02:43,095 Ujistěte se, že to, co? 1407 01:02:43,095 --> 01:02:43,590 -Ralphie! 1408 01:02:43,590 --> 01:02:44,580 Randy má jít. 1409 01:02:44,580 --> 01:02:45,570 Mohl bys prosím přijít? 1410 01:02:45,570 --> 01:02:46,560 -Dobře, ma. 1411 01:02:46,560 --> 01:02:48,540 Hned jsem ven. 1412 01:02:48,540 --> 01:02:50,580 -Byla jsem blíž. 1413 01:02:50,580 --> 01:02:52,550 Napětí bylo hrozné. 1414 01:02:52,550 --> 01:02:53,355 Co to bylo? 1415 01:02:53,355 --> 01:02:56,315 Osud planety může viset na vlásku. 1416 01:02:56,315 --> 01:02:56,790 -Ralphie! 1417 01:02:56,790 --> 01:02:59,165 Randy má jít. 1418 01:02:59,165 --> 01:03:02,310 -Budu mít pravdu ven, proboha. 1419 01:03:02,310 --> 01:03:04,000 -Gee, skoro tam. 1420 01:03:04,000 --> 01:03:05,180 Mé prsty letěl. 1421 01:03:05,180 --> 01:03:07,150 Moje mysl byla ocelová past. 1422 01:03:07,150 --> 01:03:08,790 Každý pórů vibroval. 1423 01:03:08,790 --> 01:03:10,040 To bylo skoro jasno. 1424 01:03:10,040 --> 01:03:13,400 Ano, ano, ano, ano. 1425 01:03:13,400 --> 01:03:18,960 -Ujistěte se, že pít svou Ovaltine. 1426 01:03:18,960 --> 01:03:20,210 Ovaltine? 1427 01:03:24,010 --> 01:03:25,260 Podřadný komerční? 1428 01:03:28,200 --> 01:03:29,640 Zkurvysyn. 1429 01:03:29,640 --> 01:03:33,340 [END VIDEOPŘEHRÁVÁNÍ] 1430 01:03:33,340 --> 01:03:36,040 >> DAVID J. Malan: Tak tady to máme kryptografii. 1431 01:03:36,040 --> 01:03:39,670 Tak jak v počítači můžeme jít o zavádění nebo 1432 01:03:39,670 --> 01:03:40,950 představující věci, jako je tento? 1433 01:03:40,950 --> 01:03:44,430 No, my potřebujeme způsob, jak vyjádřit sebe trochu pružněji než 1434 01:03:44,430 --> 01:03:46,420 naše proměnné, doposud dovoleno. 1435 01:03:46,420 --> 01:03:47,370 Jsme měli ints. 1436 01:03:47,370 --> 01:03:48,380 Jsme měli znaků. 1437 01:03:48,380 --> 01:03:50,790 Jsme měli plováky a dvoulůžkových a několik dalších. 1438 01:03:50,790 --> 01:03:55,050 Ale to jsou jednotlivé kusy paměti, které nejsou opravdu nám umožňují 1439 01:03:55,050 --> 01:03:58,010 vyjádřit věci, jako slov a vět a frází. 1440 01:03:58,010 --> 01:04:00,200 Opravdu, jsme volal takové věci, řetězce. 1441 01:04:00,200 --> 01:04:03,650 Slíbili jsme, že je to opravdu jen zjednodušení v CS50 1442 01:04:03,650 --> 01:04:07,020 knihovna, která jsme v úmyslu odtrhněte. 1443 01:04:07,020 --> 01:04:08,970 >> A tak pojďme začít dělat, že tady. 1444 01:04:08,970 --> 01:04:11,130 Nech mě jít dál a otevřít soubor - 1445 01:04:11,130 --> 01:04:13,770 Všechny tyto soubory jsou k dispozici jako obvykle on-line - 1446 01:04:13,770 --> 01:04:19,120 called array.c vyřešit problém nesouvisí s řetězci, ale že maluje 1447 01:04:19,120 --> 01:04:23,040 obrázek zde o tom, jak bychom mohli použít něco jako pole. 1448 01:04:23,040 --> 01:04:25,530 Pole je datový typ. 1449 01:04:25,530 --> 01:04:31,320 Je to typ proměnné, druhů, který má více menších datových typů 1450 01:04:31,320 --> 01:04:34,150 uvnitř něj zády k sobě, aby se zády k sobě. 1451 01:04:34,150 --> 01:04:37,700 Tak například, pokud chceme napsat malý program, který vám dává 1452 01:04:37,700 --> 01:04:42,110 kvíz průměr na kurz jako 50, která má dva kvízy, mohli byste velmi snadno 1453 01:04:42,110 --> 01:04:45,170 napsat tento program - na základě i na některé z minulého týdne materiálu - 1454 01:04:45,170 --> 01:04:47,770 pomocí GetInt a pár proměnných. 1455 01:04:47,770 --> 01:04:51,920 Int quiz1, int quiz2, a je to docela jednoduché. 1456 01:04:51,920 --> 01:04:55,930 Možná je to 10, 20 řádků kódu, max., realizovat program, který se zeptá 1457 01:04:55,930 --> 01:05:01,170 uživatel pro dva kvízy skóre a poté vypočítá jejich průměr přidáním 1458 01:05:01,170 --> 01:05:03,850 společně, dělení dvěma, a pak tisk výsledků. 1459 01:05:03,850 --> 01:05:06,380 Bychom pravděpodobně mohli udělat docela snadno nyní po 1460 01:05:06,380 --> 01:05:07,510 některé počet minut. 1461 01:05:07,510 --> 01:05:11,005 >> Ale problém je, že předpokládám, že 50 měla tři kvízy nebo čtyři. 1462 01:05:11,005 --> 01:05:13,510 Předpokládejme, že jste chtěli použít stejný program pro třídu, která měla 1463 01:05:13,510 --> 01:05:14,850 týdenní kvízy. 1464 01:05:14,850 --> 01:05:16,610 Přemýšlejte o třídy, která se jednou týdně kvízy. 1465 01:05:16,610 --> 01:05:20,610 Pokud je jako 16 nebo týdnů, v semestru, nyní máte 16 proměnný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 Jakmile začnete vidět tuto redundanci, tento kopírování a vkládání 1468 01:05:27,560 --> 01:05:31,390 kódu, měl by začít dělat si přejete tam byl lepší způsob. 1469 01:05:31,390 --> 01:05:33,930 A naštěstí, protože pole, tam je. 1470 01:05:33,930 --> 01:05:34,980 Takže jdeme na to. 1471 01:05:34,980 --> 01:05:38,430 Za prvé, dovolte mi představit velmi jednoduchou věc, že ​​jsme se nepoužívá tak daleko, 1472 01:05:38,430 --> 01:05:40,140 ale uvidíte to občas v kódu. 1473 01:05:40,140 --> 01:05:42,360 To je to, co se obecně nazývá konstanta. 1474 01:05:42,360 --> 01:05:45,790 Takže je to konstanta v tom smyslu, že tato hodnota nikdy se mění. 1475 01:05:45,790 --> 01:05:49,210 Lidská konvence při vytváření konstanta je použít všechny kapitál 1476 01:05:49,210 --> 01:05:51,940 dopisy, jen proto, že to opravdu stojí v kódu. 1477 01:05:51,940 --> 01:05:55,960 A speciální klíčové slovo, které používáte v C je # define. 1478 01:05:55,960 --> 01:06:00,250 Takže když řeknete # define, pak mezeru, pak slovo, které chcete použít pro 1479 01:06:00,250 --> 01:06:03,260 na konstantní jméno, a potom je hodnota konstanty. 1480 01:06:03,260 --> 01:06:06,180 Takže upozornění, toto je odlišné od přiřazení něco proměnné. 1481 01:06:06,180 --> 01:06:07,020 Není rovnítko. 1482 01:06:07,020 --> 01:06:08,240 Není středník. 1483 01:06:08,240 --> 01:06:11,410 To je to, co je všeobecně známo jako preprocesoru směrnice, ale na 1484 01:06:11,410 --> 01:06:12,210 že jiný čas. 1485 01:06:12,210 --> 01:06:18,540 >> Pro tuto chvíli, to vytváří neměnný nazývá hodnota kvízy, jejichž skuteč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 kdekoli vidíte kvízy, kvízy, kvízy v tomto souboru, který je 1488 01:06:24,020 --> 01:06:25,410 jen číslo 2. 1489 01:06:25,410 --> 01:06:28,100 Teď, když se podívám na hlavní teď, pojďme se podívat, jak to funguje. 1490 01:06:28,100 --> 01:06:29,500 Zpočátku to vypadá trochu záhadný. 1491 01:06:29,500 --> 01:06:31,340 Ale je to všechno věci z první týden. 1492 01:06:31,340 --> 01:06:32,710 Požádejte uživatele, pro stupně. 1493 01:06:32,710 --> 01:06:33,630 Jak to uděláme? 1494 01:06:33,630 --> 01:06:35,470 No, v řádku 22 - 1495 01:06:35,470 --> 01:06:37,210 to je opravdu šťavnaté část - 1496 01:06:37,210 --> 01:06:40,960 Prohlašuji, float, ale ne jen jeden float. 1497 01:06:40,960 --> 01:06:44,620 Jsem prohlašuje, spíše pole pohyblivé řádové čárce. 1498 01:06:44,620 --> 01:06:49,100 To je proměnná bude nazýván stupně, jak vyplývá zde. 1499 01:06:49,100 --> 01:06:53,080 Ale jediný kus nové syntaxi pak jsou tyto hranaté závorky, skutečnost, 1500 01:06:53,080 --> 01:06:59,350 že jsem řekl, float stupně a pak otevřete konzolu a pak číslo. 1501 01:06:59,350 --> 01:07:02,460 Všimněte si, jestli je to konstanta, je to stejně jako jsme to udělali. 1502 01:07:02,460 --> 01:07:06,890 To znamená, hey počítač, dát mi dva plováky, a pojďme společně volat 1503 01:07:06,890 --> 01:07:08,220 je stupně. 1504 01:07:08,220 --> 01:07:11,920 Toto je v kontrastu k mnohem nudnější procesu, jako je tento. 1505 01:07:11,920 --> 01:07:15,850 Float grade1, float grade2, a tak dále. 1506 01:07:15,850 --> 01:07:20,010 Takže pole nám umožňuje realizovat tuto myšlenku, ale mnohem méně ledabyle, v 1507 01:07:20,010 --> 01:07:24,630 takovým způsobem, že můžeme napsat jeden řádek kódu namísto, řekněme, 16 pro 16 1508 01:07:24,630 --> 01:07:25,740 týden semestru. 1509 01:07:25,740 --> 01:07:29,950 Tak jsem nechtěl, aby tvrdě kód 2, protože pokud si myslíte, že o tom teď 1510 01:07:29,950 --> 01:07:34,160 logicky - Předpokládám, že příští rok CS50 změny 3 kvízy místo. 1511 01:07:34,160 --> 01:07:35,510 A já jsem měl číslo 2 zde. 1512 01:07:35,510 --> 01:07:36,600 Měl jsem číslo 2 zde. 1513 01:07:36,600 --> 01:07:37,580 Měl jsem číslo 2 zde. 1514 01:07:37,580 --> 01:07:38,560 Měl jsem číslo 2 zde. 1515 01:07:38,560 --> 01:07:43,180 To se stává velmi únavné a velmi snadno pokazit a náhodně změnit 1516 01:07:43,180 --> 01:07:47,690 jedna hodnota na hodnotu 3 a chybět jinou hodnotu 2. 1517 01:07:47,690 --> 01:07:52,460 Takže budu místo abstraktní toto pryč a použít tato konstanta, že její 1518 01:07:52,460 --> 01:07:54,120 název napovídá, nikdy nemění. 1519 01:07:54,120 --> 01:07:57,710 A teď, bez ohledu na to, zda máme různé kvízy ještě letos nebo napřesrok, jsem 1520 01:07:57,710 --> 01:08:01,210 muset změnit na jednom místě, tady nahoře. 1521 01:08:01,210 --> 01:08:02,720 >> Takže to je vše, konstanta je. 1522 01:08:02,720 --> 01:08:08,680 Mezitím, nová pojmovým znakem je to, že z pole. 1523 01:08:08,680 --> 01:08:14,660 Takže hranaté závorky mi tolik plováky a umožňuje mi kolektivně 1524 01:08:14,660 --> 01:08:16,630 nazývají stupně zde. 1525 01:08:16,630 --> 01:08:17,990 Takže teď se podíváme, co budu dělat. 1526 01:08:17,990 --> 01:08:20,359 Tady v souladu 24 je začátek smyčky for. 1527 01:08:20,359 --> 01:08:22,260 To je opravdu nic vymyšleného. 1528 01:08:22,260 --> 01:08:25,060 Je to jen pomocí kvízů místo hard-kódované číslo. 1529 01:08:25,060 --> 01:08:27,790 Ale nic intelektuálně jinak, tam z minulého týdne. 1530 01:08:27,790 --> 01:08:29,040 To je jen printf. 1531 01:08:29,040 --> 01:08:35,490 Takže printf ("kvíz číslo% d% d"), protože chci vytisknout dát mi kvíz 1532 01:08:35,490 --> 01:08:38,050 číslo jedna ze dvou a pak dva ze dvou. 1533 01:08:38,050 --> 01:08:39,850 Takže je to čistě estetická věc. 1534 01:08:39,850 --> 01:08:42,500 Ale zajímavá část je nyní v souladu 27. 1535 01:08:42,500 --> 01:08:48,310 Aby bylo možné vyplnit v jednom ze dvou zástupných symbolů s plovoucí čárkou 1536 01:08:48,310 --> 01:08:51,029 hodnota, můžete opět použít hranaté závorky. 1537 01:08:51,029 --> 01:08:55,620 V tomto případě, já jsem s použitím i proto, že to pro smyčce začala s i rovná 1538 01:08:55,620 --> 01:08:57,560 jakou hodnotu, zřejmě? 1539 01:08:57,560 --> 01:08:58,279 0. 1540 01:08:58,279 --> 01:09:01,350 >> Tak na první iteraci tohoto smyčky, je to, jako já 1541 01:09:01,350 --> 01:09:02,689 napsal v kódu. 1542 01:09:02,689 --> 01:09:05,580 Ale na druhé iteraci tohoto smyčky, je to, jako já 1543 01:09:05,580 --> 01:09:07,750 napsal v mém kódu. 1544 01:09:07,750 --> 01:09:10,750 Ale fakt, že jsem pomocí proměnné je perfektní, protože, jak už název 1545 01:09:10,750 --> 01:09:14,300 navrhuje, je to různé její hodnotu na každé iteraci. 1546 01:09:14,300 --> 01:09:17,370 Takže jsem vyplnění tohoto pole jeden bod v čase. 1547 01:09:17,370 --> 01:09:18,910 Co to pole vypadá? 1548 01:09:18,910 --> 01:09:21,430 No, důvod, proč jsem kreslil to super jednoduchý obdélník na obrazovce zde 1549 01:09:21,430 --> 01:09:23,350 dříve byl z tohoto důvodu. 1550 01:09:23,350 --> 01:09:27,279 Pole je jen kus paměti následuje další kus paměti, 1551 01:09:27,279 --> 01:09:30,109 následuje další kus paměti, a tak dále. 1552 01:09:30,109 --> 01:09:35,260 Takže pokud má pole je velikosti 2, v tomto případě tady, bych měla dělat podle 1553 01:09:35,260 --> 01:09:37,590 psaní v mých kvizů skóre, jako je tady. 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 pak jsem dostal 99 na tento jeden. 1556 01:09:42,020 --> 01:09:46,040 Pak je tato paměť může vůbec použít, protože jsem se jen zeptal 1557 01:09:46,040 --> 01:09:48,689 počítač pro pole o velikosti 2. 1558 01:09:48,689 --> 01:09:50,180 Tyto čtverce jsou 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, i když jste jen 1561 01:09:52,500 --> 01:09:53,979 žádá pro dva plováky. 1562 01:09:53,979 --> 01:09:58,710 Takže myšlenka polí je, že počítač prostě vezme kus paměti 1563 01:09:58,710 --> 01:10:03,230 a pak rozděluje menší kusy zády k sobě, aby se zády k sobě. 1564 01:10:03,230 --> 01:10:04,740 A tak to je vše, pole je. 1565 01:10:04,740 --> 01:10:09,080 Je to souvislá kus paměti, uvnitř které si můžete dát věci. 1566 01:10:09,080 --> 01:10:12,400 >> Nyní se to stane a pak dělat jen nějaké nudné aritmetiku. 1567 01:10:12,400 --> 01:10:16,170 Kdybych přejděte tady, to je místo, kde jsem se pak iterovat přes pole. 1568 01:10:16,170 --> 01:10:19,410 I přicházejí s součtu všech hodnot v poli. 1569 01:10:19,410 --> 01:10:22,390 A pak jsem použít kolo funkce zde skutečně udělat 1570 01:10:22,390 --> 01:10:23,940 Celkově děleno kvízy. 1571 01:10:23,940 --> 01:10:27,450 Ale dovolte mi, abych mávat ruku na to jako jakýsi dost aritmetiky pro teď. 1572 01:10:27,450 --> 01:10:30,010 Ale všechno, co dělá pro mě nakonec je výpočet průměru. 1573 01:10:30,010 --> 01:10:33,640 Takže první kvíz a druhý kvíz, děleno 2, a pak tisk 1574 01:10:33,640 --> 01:10:34,700 to se jako int. 1575 01:10:34,700 --> 01:10:39,030 >> Ale pojďme teď přechod na jiný příklad s názvem string1, 1576 01:10:39,030 --> 01:10:42,370 který maluje podobný obraz, ale pomocí řetězce. 1577 01:10:42,370 --> 01:10:45,550 Nech mě jít napřed a zjednodušit tím, jen na chvíli. 1578 01:10:45,550 --> 01:10:48,340 A odpusť odsazení pro teď. 1579 01:10:48,340 --> 01:10:52,280 Oznámení v souladu 19 tohoto příkladu, mám řetězec od uživatele. 1580 01:10:52,280 --> 01:10:55,780 Povšimněme si ale to, co jsem dělal další v řadách 22 vpřed. 1581 01:10:55,780 --> 01:11:00,260 Já jsem vlastně iterace od i do - a to je nový trik - 1582 01:11:00,260 --> 01:11:02,730 strlen, délka řetězce. 1583 01:11:02,730 --> 01:11:07,010 To je funkce, která přichází s C, že pokud předat řetězec, to vám řekne 1584 01:11:07,010 --> 01:11:08,950 si, kolik znaků je v tomto řetězci. 1585 01:11:08,950 --> 01:11:09,440 To je vše. 1586 01:11:09,440 --> 01:11:12,520 Skutečnost, že je to strlen místo řetězce délky je jen proto, že je to 1587 01:11:12,520 --> 01:11:13,040 stručnější. 1588 01:11:13,040 --> 01:11:17,100 Před 30 lety, se líbila psát věci jako stručně, jak je to možné. 1589 01:11:17,100 --> 01:11:19,080 Takže jsme stále tuto úmluvu zde. 1590 01:11:19,080 --> 01:11:21,730 i + + znamená jen zvyšovat i v každé iteraci. 1591 01:11:21,730 --> 01:11:24,310 A teď si toho všimnout, což je opravdu zajímavé. 1592 01:11:24,310 --> 01:11:28,730 Takže v řádce 24, říkám počítač, dejte mi charakter, osm 1593 01:11:28,730 --> 01:11:30,770 bity, a nazývat to c. 1594 01:11:30,770 --> 01:11:35,370 Ale co je to na pravé straně říká? 1595 01:11:35,370 --> 01:11:38,150 V angličtině, co to představuje? 1596 01:11:38,150 --> 01:11:40,070 [Neslyšitelné] 1597 01:11:40,070 --> 01:11:40,490 DAVID J. Malan: Přesně tak. 1598 01:11:40,490 --> 01:11:42,390 Dej mi první znak v poli. 1599 01:11:42,390 --> 01:11:45,400 Nebo obecněji, dej mi i-tý znak v poli. 1600 01:11:45,400 --> 01:11:48,230 A uvědomit si, že je to důležité dnes, jako počítačoví vědci, jsme vlastně 1601 01:11:48,230 --> 01:11:49,330 počítat od 0. 1602 01:11:49,330 --> 01:11:51,290 Nemusíte uvážení teď začít dělat to. 1603 01:11:51,290 --> 01:11:54,580 Nyní se mají chovat v souladu s počítačem očekávání a 1604 01:11:54,580 --> 01:11:58,010 počítá od nuly, protože [0] bude první 1605 01:11:58,010 --> 01:11:59,670 znak v řetězci. 1606 01:11:59,670 --> 01:12:01,320 [1] bude druhý. 1607 01:12:01,320 --> 01:12:03,610 [2] bude třetí a tak dále. 1608 01:12:03,610 --> 01:12:08,840 Takže tohoto programu, když jsem zkompilovat - to je, opět, string1. 1609 01:12:08,840 --> 01:12:11,040 >> Tak, aby string1. 1610 01:12:11,040 --> 01:12:16,730 A teď jsem běžet string1 ve svém terminálovém okně. 1611 01:12:16,730 --> 01:12:19,180 Je to čekání na vstup, tak budu psát, řekněme, Davidovi. 1612 01:12:19,180 --> 01:12:20,080 Enter. 1613 01:12:20,080 --> 01:12:23,350 A teď se vytiskne DAVID vše na různých tratích, protože 1614 01:12:23,350 --> 01:12:24,430 upozornění, co dělám. 1615 01:12:24,430 --> 01:12:27,510 Já tisku jeden znak v čase. 1616 01:12:27,510 --> 01:12:29,100 Nyní nebudeme zacházet do podrobností dnes na toto téma. 1617 01:12:29,100 --> 01:12:31,610 Ale já jsem odstranil před chvílí této kontroly zde. 1618 01:12:31,610 --> 01:12:36,310 Ukazuje se, že v případě, že uživatel je nechová, sporné, nebo jen 1619 01:12:36,310 --> 01:12:41,780 zmatený, můžete skutečně nedávají řetězec obšírněji. 1620 01:12:41,780 --> 01:12:43,640 Pokud stisknete špatné tlačítko na klávesnici, můžete dát 1621 01:12:43,640 --> 01:12:44,390 no řetězec vůbec. 1622 01:12:44,390 --> 01:12:47,790 Nebo pokud jste škodlivý, můžete zkusit vložit na gigabyte to stojí 1623 01:12:47,790 --> 01:12:49,380 esej vyplnit tento řetězec. 1624 01:12:49,380 --> 01:12:52,060 A pokud je počítač spuštěn z paměti, se ukazuje, že jedeme 1625 01:12:52,060 --> 01:12:54,310 získat zpět tuto speciální hodnotu s názvem null. 1626 01:12:54,310 --> 01:12:57,550 Takže teď, jen vím, že tam je to speciální hodnota zvaná null že 1627 01:12:57,550 --> 01:13:01,000 nám umožní zkontrolovat, kdy jsme z paměti, mimo jiné. 1628 01:13:01,000 --> 01:13:07,330 >> Ale když otevřu se nyní řetězec2, všimnete jeden rozdíl zde. 1629 01:13:07,330 --> 01:13:09,760 Všimněte si, jeden rozdíl tu s string2. 1630 01:13:09,760 --> 01:13:13,260 S string2, to pro smyčce je trochu jiný. 1631 01:13:13,260 --> 01:13:16,350 Dovolte mi, abych odstranit nuly, takže můžeme hovořit o těch někdy jindy. 1632 01:13:16,350 --> 01:13:18,460 Ale to, co je o pro smyčce tentokrát? 1633 01:13:21,580 --> 01:13:23,160 A můžu se vrátit k předchozímu příkladu. 1634 01:13:23,160 --> 01:13:24,800 Tak to je verze dva. 1635 01:13:24,800 --> 01:13:27,020 Toto je verze jedna. 1636 01:13:27,020 --> 01:13:31,935 Jedna, dva, jedna, dvě. 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 první části smyčky for. 1639 01:13:40,420 --> 01:13:43,060 Jakékoli myšlenky, proč to dělám? 1640 01:13:43,060 --> 01:13:43,690 Jo. 1641 01:13:43,690 --> 01:13:46,010 [Neslyšitelné] 1642 01:13:46,010 --> 01:13:47,630 DAVID J. Malan: Takže nevolejte funkce pokaždé. 1643 01:13:47,630 --> 01:13:48,040 Přesně tak. 1644 01:13:48,040 --> 01:13:50,350 Vzpomeňte si na smyček, které jsou super jednoduchý, jakmile trochu 1645 01:13:50,350 --> 01:13:52,180 chápat, že toto je inicializace, 1646 01:13:52,180 --> 01:13:53,330 stav, a aktualizace. 1647 01:13:53,330 --> 01:13:55,430 Problém je v tom, že tato podmínka se děje na každém 1648 01:13:55,430 --> 01:13:56,600 iterace smyčky. 1649 01:13:56,600 --> 01:13:59,930 A tak v tomto příkladu zde, co je špatné o tom 1650 01:13:59,930 --> 01:14:03,500 že tohle je moje podmínka? 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 poté, co jsem napsal v roce DAVID, délka tohoto řetězce je pět. 1653 01:14:08,990 --> 01:14:11,560 A že to nebude měnit na každé iteraci smyčky, protože 1654 01:14:11,560 --> 01:14:15,560 řetězec je stále D--V-I-D. Tak to je náznak, co se děje, aby se stal 1655 01:14:15,560 --> 01:14:19,650 stále důležitější nápad známý jako konstrukční rozhodnutí, kde - prostě nemají 1656 01:14:19,650 --> 01:14:21,640 aby počítač dělat zbytečnou práci. 1657 01:14:21,640 --> 01:14:25,630 >> Nyní stejně jako plížit náhled PSet 2, PSet 2 ve standardní edici, je 1658 01:14:25,630 --> 01:14:28,850 bude výzvou, abyste skutečně provádět určitý počet šifer, některé 1659 01:14:28,850 --> 01:14:32,650 počet šifrovacích algoritmů, takže si můžete i šifrovat a dešifrovat 1660 01:14:32,650 --> 01:14:35,530 tajné zprávy, podobně jako na jedné Ralphie tam dekódovat. 1661 01:14:35,530 --> 01:14:38,720 V hackerské vydání PSet 2, budeme jít trochu dál. 1662 01:14:38,720 --> 01:14:42,010 Budeme vám předá soubor od skutečného počítačového systému, který obsahuje 1663 01:14:42,010 --> 01:14:45,690 celá parta uživatelských jmen a skutečných zašifrovaných hesel, a výzva 1664 01:14:45,690 --> 01:14:49,110 pro hacker vydání bude bezva těchto hesel a obrázek 1665 01:14:49,110 --> 01:14:53,060 co kryptografie nebo co tajemství bylo použito skutečně 1666 01:14:53,060 --> 01:14:55,080 generování těchto hesel. 1667 01:14:55,080 --> 01:14:58,360 A budeme-li to provést pomocí nové funkce zde o C, která dám 1668 01:14:58,360 --> 01:15:02,200 stačí demo, známý jako argumenty příkazového řádku. 1669 01:15:02,200 --> 01:15:05,930 >> Tak to dopadá, jak si někteří z vás možná viděli v oddílu nebo v učebnicích, 1670 01:15:05,930 --> 01:15:09,850 Hlavním nemusí vždy být neplatné v závorkách. 1671 01:15:09,850 --> 01:15:14,060 Ukazuje se, že hlavní může také být psán jako to, se dvěma argumenty, 1672 01:15:14,060 --> 01:15:19,690 argc a argv, kde argc je počet slov, která zadáte po 1673 01:15:19,690 --> 01:15:21,940 v programu název na příkazovém řádku. 1674 01:15:21,940 --> 01:15:24,550 A argv je skutečná slova. 1675 01:15:24,550 --> 01:15:29,470 A jak hranaté závorky tam naznačují, argv je zřejmě pole. 1676 01:15:29,470 --> 01:15:33,720 Je to bude řetězec za řetězec po řetězec v paměti. 1677 01:15:33,720 --> 01:15:36,170 Takže to, co budeme moci dělat, počínaje PSet 2, je 1678 01:15:36,170 --> 01:15:37,310 něco takového. 1679 01:15:37,310 --> 01:15:42,450 Pokud udělám argv1, který je příkladem vrátíme do pondělí, a spusťte 1680 01:15:42,450 --> 01:15:45,180 to, zjistíte, že to nevypadá na nic zatím. 1681 01:15:45,180 --> 01:15:47,050 Je to jen vytiskne jeho vlastní jméno. 1682 01:15:47,050 --> 01:15:53,220 Ale když řeknu sbohem třídy, všimněte si, že tento program zřejmě opakuje 1683 01:15:53,220 --> 01:15:57,030 nad každým ze slov, které byly zadány na příkazovém řádku. 1684 01:15:57,030 --> 01:16:02,050 A prostředky, které získáme přístup k slov, které uživatel 1685 01:16:02,050 --> 01:16:06,780 zadali na příkazovém řádku je změna hlavní, počínaje 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 se zrodí argumenty příkazového řádku. 1688 01:16:13,700 --> 01:16:17,210 A jakmile se dostanete opravdu sofistikovaný na to, budete moci psát 1689 01:16:17,210 --> 01:16:21,370 Opravdu trippy programy, jako je tento, která sem jde nad rámec 1690 01:16:21,370 --> 01:16:25,520 některé funkce, že jsme udělali tak daleko, ale všechno docela silný. 1691 01:16:25,520 --> 01:16:27,330 >> Takže necháme to s tím na obrazovce. 1692 01:16:27,330 --> 01:16:29,160 A uvidíme se v pondělí.