1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1: Dobře. 3 00:00:13,650 --> 00:00:14,390 Vítej zpátky. 4 00:00:14,390 --> 00:00:19,260 To je týden Dva CS50, a máme Dosud byly pomocí funkce, ale 5 00:00:19,260 --> 00:00:20,830 z velké části za samozřejmost. 6 00:00:20,830 --> 00:00:23,430 Použili jsme printf, která má vedlejší efekt tisku 7 00:00:23,430 --> 00:00:24,110 věci na obrazovce. 8 00:00:24,110 --> 00:00:25,790 Použili jsme get-int, float dostat. 9 00:00:25,790 --> 00:00:29,230 >> Ale co když opravdu chcete vytvořit vlastní funkce, jak se někteří 10 00:00:29,230 --> 00:00:31,740 Možná jste již začala udělat pro Problem Set One, i když 11 00:00:31,740 --> 00:00:33,140 není nezbytně nutné? 12 00:00:33,140 --> 00:00:37,150 Dobře, pojďme dál, a znovu, že Problém se ptal na uživatele 13 00:00:37,150 --> 00:00:40,660 jejich jméno a tisk něco na obrazovce, ale zkuste vytknout některé 14 00:00:40,660 --> 00:00:44,000 o shodnosti, které jsme vidět v našem kódu tak daleko. 15 00:00:44,000 --> 00:00:45,120 Takže mám na mysli následující. 16 00:00:45,120 --> 00:00:47,315 >> Chystám se jít dopředu a vytvořit nový program, stačí zavolat 17 00:00:47,315 --> 00:00:49,320 to hello.c jako obvykle. 18 00:00:49,320 --> 00:00:53,730 Chystám se jít dopředu a dát sám zahrnují standardní io.h v horní části. 19 00:00:53,730 --> 00:00:57,040 Chystám se také oddat preventivně CS50 knihovny tak, aby 20 00:00:57,040 --> 00:00:59,080 Nechápu křičel na překladač. 21 00:00:59,080 --> 00:01:02,400 A teď budu pokračovat a prohlašují, int, hlavní, za neplatné. 22 00:01:02,400 --> 00:01:09,020 >> A pak tady je to místo, kde chci začít zadávat funkčnost 23 00:01:09,020 --> 00:01:12,090 některé další funkce, které já sám jsem budu psát, ale to není 24 00:01:12,090 --> 00:01:13,820 v současné době neexistuje. 25 00:01:13,820 --> 00:01:19,210 Předpokládejme například, že jsem chtěl napsat funkci, která mi umožňuje 26 00:01:19,210 --> 00:01:23,830 vytisknout ahoj, čárku a pak nějaké uživatelské jméno. 27 00:01:23,830 --> 00:01:29,010 Namísto toho, aby to printf Dobrý den,% s, nebylo by hezké, kdyby 28 00:01:29,010 --> 00:01:33,380 tam bylo jen volaná funkce není printf, ale print jmeno? 29 00:01:33,380 --> 00:01:36,600 >> Takže jinými slovy, chci být schopen napsat program, který dělá jen málo 30 00:01:36,600 --> 00:01:37,710 něco takového. 31 00:01:37,710 --> 00:01:42,070 Za prvé, já jsem chtěl říct printf váš jméno, čímž vyzývající uživatele k 32 00:01:42,070 --> 00:01:46,150 dej mi jeho nebo její jméno, a pak jsem bude používat známé řetězec s na 33 00:01:46,150 --> 00:01:47,290 deklarovat řetězec. 34 00:01:47,290 --> 00:01:50,420 Dej mi proměnnou typu řetězec, říkají to a obchod v tom, že 35 00:01:50,420 --> 00:01:52,120 Výsledkem volání se řetězec. 36 00:01:52,120 --> 00:01:56,060 Ale teď v posledních týdnech, musel bych poněkud nudně udělal Dobrý den,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> A jinými slovy, jsme viděli tento Příkladem banda časů, a to je 39 00:02:02,570 --> 00:02:05,280 triviální příklad, protože tam je jen jeden řádek kódu, takže to opravdu není 40 00:02:05,280 --> 00:02:06,860 velký problém udržet psát znovu. 41 00:02:06,860 --> 00:02:09,990 Ale předpokládám, že tento řádek kódu skutečně staly přítěží, a 42 00:02:09,990 --> 00:02:12,900 není to jeden řádek kódu, ale je to 10 řádky kódu před pár týdny od teď, 43 00:02:12,900 --> 00:02:15,190 a vy jste jen unaveni kopírování a vkládání nebo 44 00:02:15,190 --> 00:02:17,180 přepisování stejný kód. 45 00:02:17,180 --> 00:02:22,100 Nebylo by hezké místo provádění printf ahoj,% s, a tak dále, 46 00:02:22,100 --> 00:02:26,500 Nebylo by hezké, kdyby tam byli jen volána funkce print jmeno, že 47 00:02:26,500 --> 00:02:27,560 má argument - 48 00:02:27,560 --> 00:02:29,120 jinými slovy, že má vstup - 49 00:02:29,120 --> 00:02:30,620 a pak středník. 50 00:02:30,620 --> 00:02:33,240 Takže funkce, nebylo by to by hezké, kdyby to existovalo? 51 00:02:33,240 --> 00:02:36,690 Pak bych nemusel obávat co printf je, co% s a všechny 52 00:02:36,690 --> 00:02:39,400 Tyto komplikace, které jsou není všechno tak zajímavé. 53 00:02:39,400 --> 00:02:40,570 Jsou užitečné. 54 00:02:40,570 --> 00:02:44,700 >> Takže print jmeno, bohužel, nebyl vymyslel nějaký 40 + lety. 55 00:02:44,700 --> 00:02:45,980 Nikdo si to napsat. 56 00:02:45,980 --> 00:02:48,300 Ale to je krása mít programovací jazyk, stejně jako v 57 00:02:48,300 --> 00:02:52,930 Scratch můžete definovat vlastní bloky tak, v C a téměř jakýkoli jazyk, můžete 58 00:02:52,930 --> 00:02:57,260 definovat vlastní funkce, může můžete definovat své vlastní funkce. 59 00:02:57,260 --> 00:03:01,710 Takže i když se dostaneme do hlavní automaticky zdarma, můžeme prohlásit, 60 00:03:01,710 --> 00:03:02,730 naše vlastní funkce. 61 00:03:02,730 --> 00:03:05,670 >> Takže budu dělat nějaké místo tady nahoru nahoru a budu deklarovat my 62 00:03:05,670 --> 00:03:08,210 vlastní funkce, která bude vypadat trochu divný, ale na první přijedeme 63 00:03:08,210 --> 00:03:09,400 zpět k tomu zanedlouho. 64 00:03:09,400 --> 00:03:12,310 Chystám se říct neplatné, a tím ukazuje tato funkce 65 00:03:12,310 --> 00:03:16,040 něco, má vedlejší účinky, ale nevrátí mi něco v 66 00:03:16,040 --> 00:03:18,810 stejným způsobem, jako se int nebo dostat řetězec sama. 67 00:03:18,810 --> 00:03:22,450 A budu k této funkci název tiskového jména a budu 68 00:03:22,450 --> 00:03:26,470 určit, že tento člověk bude trvat řetězec, a já budu volat, že 69 00:03:26,470 --> 00:03:27,600 Název řetězce. 70 00:03:27,600 --> 00:03:32,100 Mohl bych říkat, co chci, ale já chci, aby moje kód být self-dokumentovat. 71 00:03:32,100 --> 00:03:34,770 Jinými slovy, je-li někdo z vás měl tento soubor otevřít a číst, mohli byste 72 00:03:34,770 --> 00:03:39,020 druh odvozovat z názvu, který Vstup jakou roli to má hrát. 73 00:03:39,020 --> 00:03:42,270 >> A teď dále, že jdu otevřít složená závorka a uzavřené složená závorka, 74 00:03:42,270 --> 00:03:47,140 a tak zjistíte Dodržel jsem stejný vzor na tratích čtyři až sedm jako 75 00:03:47,140 --> 00:03:51,622 Sledoval jsem na dobrý týden navíc nyní mezi, řekněme, vedení a devět 76 00:03:51,622 --> 00:03:53,400 14, který skládat hlavní. 77 00:03:53,400 --> 00:03:56,160 Jinými slovy, tisknout název je další funkce. 78 00:03:56,160 --> 00:03:58,990 Nyní, kompilátor nebude znát volat tuto věc automaticky 79 00:03:58,990 --> 00:04:02,670 protože jsem doslova vymyslel, ale to bude vědět ještě zavolat hlavní 80 00:04:02,670 --> 00:04:08,710 automaticky, a pak samozřejmě v linka 13, Volám svou vlastní funkci. 81 00:04:08,710 --> 00:04:12,805 A proto, že jsem prohlásil, že funkce se na řadový čtyřválec před hlavními, 82 00:04:12,805 --> 00:04:16,579 to bude učit kompilátor co cituji, konec citátu, "print jmeno" 83 00:04:16,579 --> 00:04:18,140 znamená a co by měla dělat. 84 00:04:18,140 --> 00:04:22,700 Takže jsem trochu dávat to nový zvyk zablokovat v rámci, řekněme, Scratch. 85 00:04:22,700 --> 00:04:27,240 >> Tak tady, mohu dát, že velmi časté nebo opakující se vzor kódu držím 86 00:04:27,240 --> 00:04:32,300 psaní ve třídě, printf % S ahoj,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 Co chci, aby tady? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Tak jsem chtěl dát jméno v této souvislosti. 91 00:04:41,420 --> 00:04:43,440 Takže si všimnout trochu dichotomie zde. 92 00:04:43,440 --> 00:04:47,680 Protože jsem prohlásil svou vlastní funkci a já jsem poněkud svévolně nazývá 93 00:04:47,680 --> 00:04:50,880 vytiskne jméno, a protože jsem je uvedeno v závorkách, že se 94 00:04:50,880 --> 00:04:55,035 funkce má jeden argument, typ což je řetězec - tak to je slovo, 95 00:04:55,035 --> 00:05:00,010 nebo slovní spojení, nebo něco takového - a Volám tento argument název, který 96 00:05:00,010 --> 00:05:04,770 znamená pouze proměnná, které je v prostor, abych tak řekl, je název. 97 00:05:04,770 --> 00:05:07,780 >> S existuje pouze mezi tím, co dva Složené závorky, samozřejmě? 98 00:05:07,780 --> 00:05:12,990 No opravdu, stejně jako linky 10 přes 14, takže stejně jako v pondělí nelze použít 99 00:05:12,990 --> 00:05:17,650 S, ale to, co můžu udělat, je projít S do tisku názvu. 100 00:05:17,650 --> 00:05:21,030 Vytisknout jméno jen tak se stane, že ji dám alias, synonymum, přezdívka, 101 00:05:21,030 --> 00:05:24,400 volat to jméno, a teď použití v tomto řádku. 102 00:05:24,400 --> 00:05:26,840 Takže teď mi dovolte zachránit to, oddálit. 103 00:05:26,840 --> 00:05:31,250 >> Nech mě jít dál a dělat ahoj. 104 00:05:31,250 --> 00:05:32,400 Vypadá to dobře. 105 00:05:32,400 --> 00:05:36,110 Copak vyplivnout žádné chyby. . / Ahoj Enter. 106 00:05:36,110 --> 00:05:37,020 Jak se jmenuju? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 A ahoj David. 109 00:05:39,270 --> 00:05:41,820 Takže není tak vzrušující, ale jen, že teď. 110 00:05:41,820 --> 00:05:44,310 Nyní máte tu samou látku jako jsme to udělali v nuly 111 00:05:44,310 --> 00:05:45,420 aby naše vlastní funkce. 112 00:05:45,420 --> 00:05:46,770 >> Ale je tu trochu Gotcha. 113 00:05:46,770 --> 00:05:50,620 Dejme tomu, že jsem si opravdu myslel, to až do konce a já vlastně bez 114 00:05:50,620 --> 00:05:54,250 opravdu přemýšlet o tom psal že funkce tady. 115 00:05:54,250 --> 00:05:55,420 Pocit naprosto rozumné. 116 00:05:55,420 --> 00:05:58,440 V Scratch není pojem z místa ve svých skriptech. 117 00:05:58,440 --> 00:06:00,670 Dalo by se dal jeden sem, jeden sem, jeden tady, a to by mohlo začít 118 00:06:00,670 --> 00:06:03,310 vypadat trochu chaotický, pokud nemáte položte ji úhledně, ale to není 119 00:06:03,310 --> 00:06:05,910 na tom, kde fyzicky skripty se na obrazovce. 120 00:06:05,910 --> 00:06:09,660 Bohužel v C - a to je na rozdíl od jazyky jako Java a Python 121 00:06:09,660 --> 00:06:13,600 a další, které by vás mohly seznámit s - bohužel v C, aby se 122 00:06:13,600 --> 00:06:15,830 nezáleží, protože hodinky to, co je teď stane. 123 00:06:15,830 --> 00:06:19,010 >> Výchozí funkce, která se děje k provedení je, samozřejmě, hlavní. 124 00:06:19,010 --> 00:06:22,290 Hlavní bude volat jméno v tisku linka osm, ale bohužel, 125 00:06:22,290 --> 00:06:26,660 kompilátor nebude ani vědět, že tiskový jméno existuje, dokud se dostane do řádku 11, 126 00:06:26,660 --> 00:06:28,520 což je bohužel bude příliš pozdě. 127 00:06:28,520 --> 00:06:30,660 Takže pojďme udělat ahoj. 128 00:06:30,660 --> 00:06:32,950 A teď sakra, dvě chyby generovány. 129 00:06:32,950 --> 00:06:36,050 Takže teď mi dovolte přejděte do velmi Za prvé, jak jsme měli vždycky, a 130 00:06:36,050 --> 00:06:39,560 Všimněte si, že je to na mě řval, "Implicitní deklarace funkce 131 00:06:39,560 --> 00:06:40,540 tisknout jméno. " 132 00:06:40,540 --> 00:06:43,860 >> Takže jsme viděli, tato zpráva dříve, implicitní prohlášení funkce. 133 00:06:43,860 --> 00:06:48,080 Když jsme viděli, že takové chyby? 134 00:06:48,080 --> 00:06:49,180 Když jsem nezahrnoval knihovny. 135 00:06:49,180 --> 00:06:53,470 Pokud jsem zapomněl cs50.h a já bych si zařval na pro získání řetězce, nebo si int. 136 00:06:53,470 --> 00:06:56,880 Ale v tomto případě, je tato funkce tisku jméno není v knihovně, ne? 137 00:06:56,880 --> 00:07:00,230 Je to doslova v tomto souboru, takže co je opravdu problém? 138 00:07:00,230 --> 00:07:04,660 >> No bohužel v C, to se ti tak neuvěřitelně doslova, že pokud 139 00:07:04,660 --> 00:07:08,640 chcete funkci nazvanou tisku na jméno existují, buď muset implementovat 140 00:07:08,640 --> 00:07:11,940 které fungují na velmi horní část kód tak, že je k dispozici pro snížení 141 00:07:11,940 --> 00:07:15,070 funkce, ale upřímně řečeno, to se stane nedbalý velmi rychle. 142 00:07:15,070 --> 00:07:18,160 Osobně jsem rád uvedení první hlavní protože pak je naprosto jasné, co to 143 00:07:18,160 --> 00:07:19,890 program se na první pohled. 144 00:07:19,890 --> 00:07:23,290 A navíc se můžete dostat do podivné rohu případy, kdy, pokud x chce volat 145 00:07:23,290 --> 00:07:27,530 y, ale y nazvat x, stačí fyzicky nemůže skutečně dát jeden 146 00:07:27,530 --> 00:07:28,540 nad sebou. 147 00:07:28,540 --> 00:07:31,230 >> Ale ukazuje se v C, můžeme vyřešit velmi jednoduše. 148 00:07:31,230 --> 00:07:34,010 Chystám se dát trochu prostoru tady, a já jsem prostě jít 149 00:07:34,010 --> 00:07:38,170 preventivně, i když poněkud redundantně, bude učit 150 00:07:38,170 --> 00:07:42,320 kompilátor, že existuje funkce říká tiskový jméno, to trvá řetězec, 151 00:07:42,320 --> 00:07:46,330 a já jdu volat to jméno středník. 152 00:07:46,330 --> 00:07:50,220 >> Tak to nyní v souladu čtyři, které jsme ještě neviděli, je prohlášení 153 00:07:50,220 --> 00:07:53,940 ze jména funkce tisku, ale je to jen slib, že tato funkce bude 154 00:07:53,940 --> 00:07:56,620 nakonec být definovány, případně být prováděna. 155 00:07:56,620 --> 00:08:00,180 To teď můžu odejít sám, protože Nyní se jedná o definice, 156 00:08:00,180 --> 00:08:04,090 implementace, něco jako poslední míli provádění této 157 00:08:04,090 --> 00:08:05,130 některé funkce. 158 00:08:05,130 --> 00:08:08,450 Takže upřímně řečeno, je to hloupost, je to nepříjemné, ale toto je cesta C, a to 159 00:08:08,450 --> 00:08:12,050 protože vás doslovně a jako by počítač upřímně, 160 00:08:12,050 --> 00:08:16,020 jen dělá přesně to, co si říct, že se dělat, a tak, že uspořádání je důležité. 161 00:08:16,020 --> 00:08:18,940 >> Takže mějte na paměti, že a znovu začít Všimněte si opakování vzorů. 162 00:08:18,940 --> 00:08:21,850 Kurzy jsou, že ano, pokud nemáte již začínají setkat zprávy 163 00:08:21,850 --> 00:08:24,700 jako je tato, na první pohled se zdá zcela záhadné, ale když začnete 164 00:08:24,700 --> 00:08:29,000 podívat se na těchto klíčových slov, jako "Implicitní prohlášení," zmínka o 165 00:08:29,000 --> 00:08:32,380 Funkce v tomto případě - a upřímně řečeno, je někdy dokonce dostat trochu zelený 166 00:08:32,380 --> 00:08:35,010 mrkev symbol, který vám řekne, kde problém asi je - 167 00:08:35,010 --> 00:08:40,980 můžete začít pracovat si cestu přes Zatím neviditelné chybové zprávy. 168 00:08:40,980 --> 00:08:45,860 Jakékoliv dotazy týkající se psaní Vlastní funkce tímto způsobem? 169 00:08:45,860 --> 00:08:47,540 >> Pojďme udělat něco, co je trochu více přesvědčivé. 170 00:08:47,540 --> 00:08:51,760 Spíše než jen dělat něco, co má vedlejší efekt tisku, nech mě jít 171 00:08:51,760 --> 00:08:55,340 dopředu a uložit nový soubor, a budeme nazývají positive.c, i když je to 172 00:08:55,340 --> 00:08:57,600 Bude to trochu jinak oproti minule. 173 00:08:57,600 --> 00:09:01,910 A tentokrát chci znovu zavést Poslední dobou je positive.C příklad, který 174 00:09:01,910 --> 00:09:04,430 síla je uživatel, aby mi kladné celé číslo. 175 00:09:04,430 --> 00:09:07,280 Ale musel jsem použít dostat int minule. 176 00:09:07,280 --> 00:09:10,780 Nebylo by hezké, kdyby tam byl funkce je volána získat kladný int 177 00:09:10,780 --> 00:09:13,610 že jsem mohl jen zadat tuto kus funkčnosti? 178 00:09:13,610 --> 00:09:16,480 Takže rozdíl je potkáme realizovat získat pozitivní int, ale na rozdíl od 179 00:09:16,480 --> 00:09:20,330 print jmeno který měl vedlejší účinek - nevrátil se pro mě něco jako 180 00:09:20,330 --> 00:09:21,710 číslo nebo řetězec - 181 00:09:21,710 --> 00:09:25,510 se pozitivní int je, samozřejmě, bude vrátit se, doufejme, že pozitivní int. 182 00:09:25,510 --> 00:09:26,170 >> Tak pojďme na to. 183 00:09:26,170 --> 00:09:30,840 Zahrnout cs50.h zahrnují standardní io.h. 184 00:09:30,840 --> 00:09:33,520 Int main neplatné. 185 00:09:33,520 --> 00:09:42,160 A teď tady, budu pokračovat a řekněme int, říkají n, se rovná 186 00:09:42,160 --> 00:09:44,270 získat kladný int. 187 00:09:44,270 --> 00:09:49,080 A stejně jako se int již existuje protože zaměstnanci to napsal, já jdu 188 00:09:49,080 --> 00:09:53,950 převzít na chvíli, že dostanete kladný int existuje, a teď jdu 189 00:09:53,950 --> 00:09:57,730 jít dál a říct printf, díky za% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Takže teď, když jsem zkompilovat tento program, co se bude dít v mém terminálu 192 00:10:07,770 --> 00:10:09,075 okno v dolní části obrazovky? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Chystám se pravděpodobně dostanete, že stejná chyba jako předtím. 195 00:10:13,900 --> 00:10:14,570 Takže pojďme zkusit. 196 00:10:14,570 --> 00:10:16,450 Udělat pozitivní. 197 00:10:16,450 --> 00:10:19,900 A opět, implicitní prohlášení funkce, získat pozitivní int. 198 00:10:19,900 --> 00:10:21,970 Takže můžeme to vyřešit v několik způsobů. 199 00:10:21,970 --> 00:10:27,310 Budu držet to jednoduchý a jen dát své prohlášení sem a dostat 200 00:10:27,310 --> 00:10:28,120 pozitivní int. 201 00:10:28,120 --> 00:10:29,720 Musím tzv. podpis. 202 00:10:29,720 --> 00:10:32,410 Podpis jen odkazuje k estetice 203 00:10:32,410 --> 00:10:34,090 první řádek programu. 204 00:10:34,090 --> 00:10:37,420 Takže to, co by měli dostat pozitivní int návrat? 205 00:10:37,420 --> 00:10:37,970 >> Tak int. 206 00:10:37,970 --> 00:10:41,540 Myslím ideálním případě by se vrátit něco jako pozitivní int, ale 207 00:10:41,540 --> 00:10:42,160 neexistuje. 208 00:10:42,160 --> 00:10:45,280 Jsme neviděli, že mezi našimi daty typy, takže máme co do činění s 209 00:10:45,280 --> 00:10:47,170 Skutečnost, že máme velmi málo datové typy pro práci s. 210 00:10:47,170 --> 00:10:50,360 Ale můžeme vrátit int a jen věřím, že to bude pozitivní. 211 00:10:50,360 --> 00:10:52,690 Bude to nazvat získat kladný int. 212 00:10:52,690 --> 00:10:55,122 >> A teď, jak o jeho argumenty? 213 00:10:55,122 --> 00:10:56,440 Trvá žádný vstup? 214 00:10:56,440 --> 00:10:58,280 Znamená to potřeba žádný vstup? 215 00:10:58,280 --> 00:11:00,900 Takže to nemusí vědět předem cokoliv. 216 00:11:00,900 --> 00:11:03,220 Získejte řetězec neobsahuje, dostat int není. 217 00:11:03,220 --> 00:11:06,430 Printf dělá - je třeba mít některé Vstup prošel do něj - a tisknout název 218 00:11:06,430 --> 00:11:09,020 potřeboval nějaký vstup, ale dostat int pozitivní není. 219 00:11:09,020 --> 00:11:11,530 Takže budu explicitně říci kompilátoru neplatné. 220 00:11:11,530 --> 00:11:13,470 Void je absence cokoliv jiného. 221 00:11:13,470 --> 00:11:17,990 Tak void znamená, se nic uvnitř z těch závorek, středník. 222 00:11:17,990 --> 00:11:20,840 >> A teď na dně mého souboru - a znovu, jsem jen trochu anální 223 00:11:20,840 --> 00:11:23,640 zde uvedení hlavní v horní části, který je dobrá praxe, protože tímto způsobem, 224 00:11:23,640 --> 00:11:26,220 kdykoli vy nebo někdo jiný otevře soubor, na 225 00:11:26,220 --> 00:11:27,400 Funkce je tady. 226 00:11:27,400 --> 00:11:29,660 Můžete se potápět v jednom z náměstí. 227 00:11:29,660 --> 00:11:34,190 Takže teď budu duplikovat to, získat kladný int neplatné, ale nejsem 228 00:11:34,190 --> 00:11:35,430 dopadne na středník teď. 229 00:11:35,430 --> 00:11:38,280 Jdu otevřít složené závorky, a teď musím půjčit 230 00:11:38,280 --> 00:11:39,700 některé nápady od pondělí. 231 00:11:39,700 --> 00:11:44,450 >> Tak, jak si vzpomínáte, jsme udělali něco jako proveďte následující při 232 00:11:44,450 --> 00:11:45,830 něco, co je pravda. 233 00:11:45,830 --> 00:11:46,630 A co jsem udělal? 234 00:11:46,630 --> 00:11:51,540 Udělal jsem něco jako dát mi kladné celé číslo, 235 00:11:51,540 --> 00:11:52,430 trochu výzva. 236 00:11:52,430 --> 00:11:53,540 Mohl bych použít všechna slova, co chci. 237 00:11:53,540 --> 00:11:54,960 A pak jsem použil co? 238 00:11:54,960 --> 00:11:59,530 Int n se rovná dostat int, žádné argumenty do ní. 239 00:11:59,530 --> 00:12:00,550 >> A všimněte si rozdílu. 240 00:12:00,550 --> 00:12:04,680 Když voláte funkci, při použití funkce, vy ne dát do prázdna. 241 00:12:04,680 --> 00:12:08,570 Můžete dělat jen to, že při deklarování funkce, výuka kompilátor, co 242 00:12:08,570 --> 00:12:09,780 by měl očekávat. 243 00:12:09,780 --> 00:12:11,650 Takže nemusíte dát zrušit tam sami. 244 00:12:11,650 --> 00:12:12,940 >> A teď, co se můj stav? 245 00:12:12,940 --> 00:12:19,670 Tak, n se nerovná pozitivní, ale to je jen pseudo-kód. 246 00:12:19,670 --> 00:12:22,530 Tak jak to mám vyjádřit čistěji? 247 00:12:22,530 --> 00:12:24,090 Tak menší než nebo rovna nule. 248 00:12:24,090 --> 00:12:26,250 Takže znovu, zjistíte, co můžete udělat menší než nebo rovno. 249 00:12:26,250 --> 00:12:28,100 I když je to dva samostatné symboly, můžete tak učinit na 250 00:12:28,100 --> 00:12:29,350 klávesnice jako takové. 251 00:12:29,350 --> 00:12:33,950 >> Ale je tu ještě problém, že Posral jsem to minule taky. 252 00:12:33,950 --> 00:12:36,950 Musím prohlásit - 253 00:12:36,950 --> 00:12:37,460 přesně. 254 00:12:37,460 --> 00:12:39,640 Musím prohlásit n mimo ze smyčky. 255 00:12:39,640 --> 00:12:44,180 Takže musím dát n sem, a já ne chci znovu prohlásit ho zde 256 00:12:44,180 --> 00:12:46,480 abych si novou proměnnou. 257 00:12:46,480 --> 00:12:48,860 Jen chci přiřadit hodnotu zde. 258 00:12:48,860 --> 00:12:54,320 >> A teď jsem úplně hotoví. 259 00:12:54,320 --> 00:12:57,290 Dovolte mi, abych se před sebe a předstírat, že jsem udělal. 260 00:12:57,290 --> 00:13:01,220 Udělat pozitivní, a teď je tu nová chyba. 261 00:13:01,220 --> 00:13:04,550 Control dosáhne konce non-void funkce. 262 00:13:04,550 --> 00:13:07,760 Takže nové chybová zpráva, ale pokud jste typ z šprýmaři odděleně každý slovy, 263 00:13:07,760 --> 00:13:09,620 pravděpodobně naznačuje, co se děje. 264 00:13:09,620 --> 00:13:11,240 >> Ovládejte. 265 00:13:11,240 --> 00:13:14,250 Řízení spočívá pouze v řádu operací v programu. 266 00:13:14,250 --> 00:13:16,510 Počítač je pod kontrolou a se něco pokazilo. 267 00:13:16,510 --> 00:13:18,510 Tak se dostane na konec non-void funkce. 268 00:13:18,510 --> 00:13:21,760 Jaké funkce je zřejmě na mysli? 269 00:13:21,760 --> 00:13:24,790 Jaká je funkce non-void? 270 00:13:24,790 --> 00:13:27,400 Tak se pozitivní int, a trochu matoucí, že dobře, 271 00:13:27,400 --> 00:13:29,010 je to druh prázdnoty. 272 00:13:29,010 --> 00:13:33,070 To má specifikaci neplatnost jeho argumenty, ale jeho výstup bude 273 00:13:33,070 --> 00:13:34,540 být typu n. 274 00:13:34,540 --> 00:13:37,260 Takže slovo na levé straně je tzv. návratový typ. 275 00:13:37,260 --> 00:13:40,320 Slovo na vnitřní straně je zde nulové nebo více argumentů 276 00:13:40,320 --> 00:13:41,970 že funkce má. 277 00:13:41,970 --> 00:13:44,060 >> Takže to, co musím udělat? 278 00:13:44,060 --> 00:13:47,650 Na tomto místě v mém kódu, řádek 21, kde bliká prompt nyní je, že jsem 279 00:13:47,650 --> 00:13:51,430 mít kladný int uvnitř proměnné s názvem n. 280 00:13:51,430 --> 00:13:55,200 Jak mohu dát ho zpátky do Main? 281 00:13:55,200 --> 00:13:55,960 Doslova. 282 00:13:55,960 --> 00:13:59,320 Návrat n středník. 283 00:13:59,320 --> 00:14:04,090 >> Tedy stejně jako u Colton vrátil kus papír s odpovědí na mě při pádu 284 00:14:04,090 --> 00:14:07,020 ten kus papíru, v malé černé krabice na stole, k tomu, že v 285 00:14:07,020 --> 00:14:10,100 kód, můžete doslova jen napsat, vrátí n, a je to, jako by byly Colton 286 00:14:10,100 --> 00:14:12,140 podal mi něco fyzického zpět. 287 00:14:12,140 --> 00:14:15,870 V tomto případě, co se děje, je dostat kladný int se chystá předat zpět 288 00:14:15,870 --> 00:14:19,220 co je pravděpodobně pozitivní číslo pro koho? 289 00:14:19,220 --> 00:14:21,380 Kde se tato hodnota skončí? 290 00:14:21,380 --> 00:14:29,080 , Která končí v této proměnné, n, a pak budeme pokračovat s linií devět. 291 00:14:29,080 --> 00:14:31,920 >> Takže jinými slovy, aby z operací, tento program spustí 292 00:14:31,920 --> 00:14:34,430 provádění a kompilátor zjistí, oh, chceš knihovnu? 293 00:14:34,430 --> 00:14:36,310 Nech mě jít chytit, co je uvnitř, že. 294 00:14:36,310 --> 00:14:37,750 Oh, chceš standardní IO knihovny? 295 00:14:37,750 --> 00:14:39,660 Nech mě jít chytit, co je uvnitř, že. 296 00:14:39,660 --> 00:14:44,510 Co kompilátor řekl sám když to udeří linky čtyři? 297 00:14:44,510 --> 00:14:47,980 Oh, jsi slíbil realizovat Funkce se nazývá pozitivní, ale 298 00:14:47,980 --> 00:14:50,820 dostaneme zpátky na později, něco, co v tomto směru. 299 00:14:50,820 --> 00:14:53,450 >> Int main void jen znamená, že tady je vnitřnosti mého programu. 300 00:14:53,450 --> 00:14:54,990 Linka je jen sedm složená závorka. 301 00:14:54,990 --> 00:14:59,540 Linka osm říká na levé straně, dát mi 32 bitů na celé číslo, říkají n. 302 00:14:59,540 --> 00:15:02,160 Na pravé straně je to říkat si pozitivní int. 303 00:15:02,160 --> 00:15:07,120 Nyní se pojďme pozastavit ten příběh, protože nyní Nechci dál můj kurzor dolů. 304 00:15:07,120 --> 00:15:11,720 Můj Kurzor se nyní chodí sem, protože nyní získat kladný int spustí. 305 00:15:11,720 --> 00:15:13,100 Int n je deklarována. 306 00:15:13,100 --> 00:15:14,040 Proveďte následující. 307 00:15:14,040 --> 00:15:16,090 Printf mi dává kladné celé číslo. 308 00:15:16,090 --> 00:15:19,740 >> Získejte int od uživatele, uložte ho na n, a možná to znovu a znovu. 309 00:15:19,740 --> 00:15:23,010 Tento cyklus znamená, že tento kód může spustit nahoru a dolů takhle zase 310 00:15:23,010 --> 00:15:25,810 a znovu, ale když uživatel konečně spolupracuje a dává mi pozitivní 311 00:15:25,810 --> 00:15:31,750 int, jsem narazila řádek 21, na kterém místě číslo se předá zpět, a který z nich 312 00:15:31,750 --> 00:15:34,280 měl bych zdůraznit teď? 313 00:15:34,280 --> 00:15:35,070 Nine. 314 00:15:35,070 --> 00:15:39,010 Control, abych tak řekl, vrátí na linku devět. 315 00:15:39,010 --> 00:15:40,650 To je linie, která je nyní na starosti. 316 00:15:40,650 --> 00:15:43,250 >> Takže to, co se děje po tentokrát pod kapotou, ale 317 00:15:43,250 --> 00:15:46,480 když jsme použili funkce jako printf nebo dokonce dostat řetězec, který někdo jiný 318 00:15:46,480 --> 00:15:50,600 napsal vám, kontrola byla předáním off někoho jiného řádek kódu 319 00:15:50,600 --> 00:15:51,290 o řádek po řádku. 320 00:15:51,290 --> 00:15:53,770 Je to prostě jsme nemohli vidět, a my by opravdu popsat to v tomto 321 00:15:53,770 --> 00:15:57,620 programu, protože je to v některých jiných Soubor na pevném disku 322 00:15:57,620 --> 00:16:00,000 unbeknownst nám. 323 00:16:00,000 --> 00:16:02,100 Takže pojďme se vlastně sestavit a spustit hned. 324 00:16:02,100 --> 00:16:03,890 >> Udělat pozitivní. 325 00:16:03,890 --> 00:16:05,260 Kompilace, to je pokrok. 326 00:16:05,260 --> 00:16:06,650 . / Pozitivní. 327 00:16:06,650 --> 00:16:08,020 Dej mi kladné celé číslo. 328 00:16:08,020 --> 00:16:08,800 Pojďme být obtížné. 329 00:16:08,800 --> 00:16:10,430 Negativní 1. 330 00:16:10,430 --> 00:16:11,360 Zero. 331 00:16:11,360 --> 00:16:13,370 Dejme tomu 50. 332 00:16:13,370 --> 00:16:18,100 Díky za padesát, a tak kontrola nyní se vrátil. 333 00:16:18,100 --> 00:16:21,750 Jakékoliv dotazy, pak o tom myslíte? 334 00:16:21,750 --> 00:16:23,180 Jo? 335 00:16:23,180 --> 00:16:25,630 >> [Neslyšitelný]. 336 00:16:25,630 --> 00:16:26,130 >> Řekni to znovu. 337 00:16:26,130 --> 00:16:27,860 Oh, dobrá otázka. 338 00:16:27,860 --> 00:16:31,100 Takže si můžete všimnout paralelu zde Jsem typ řezu na roh. 339 00:16:31,100 --> 00:16:35,420 V souladu 12, říkám, si pozitivní int vrací int, ale ten stejný 340 00:16:35,420 --> 00:16:39,660 logika, to teď dá rozum, že v linka šest, říkám, že hlavní vrátí 341 00:16:39,660 --> 00:16:44,040 int, ale to, co jsme ještě měl některý z našich programů? 342 00:16:44,040 --> 00:16:46,470 Nikdy jsme neměli zmínku o toto klíčové slovo return. 343 00:16:46,470 --> 00:16:49,970 >> Tak se ukázalo, že v C, a to nejméně verze toho, že jsme pomocí 344 00:16:49,970 --> 00:16:55,750 z roku 1999, technicky, je to se děje automaticky. 345 00:16:55,750 --> 00:16:59,300 Kdykoliv budete provádět program a vy implementovat funkci nazvanou main, 346 00:16:59,300 --> 00:17:04,230 že funkce vrátí nulové Výchozí pokud nechcete říkat jinak, 347 00:17:04,230 --> 00:17:05,849 a nula je jen konvence. 348 00:17:05,849 --> 00:17:09,430 Svět se vrací nulu tím což znamená, že je vše v pořádku, 349 00:17:09,430 --> 00:17:13,040 účinně opouštět nám čtyři miliardy možné věci, které by mohly jít 350 00:17:13,040 --> 00:17:17,530 špatně, takže když jsme se vrátit jednu, která může znamenat kód, který znamená, že tento 351 00:17:17,530 --> 00:17:18,310 co se stalo. 352 00:17:18,310 --> 00:17:20,589 Mohli bychom se vrátit dvě, což znamená, ta druhá věc se stala chyba. 353 00:17:20,589 --> 00:17:23,440 Mohli bychom se vrátit čtyři miliardy, což znamená, že tato věc se stala chyba. 354 00:17:23,440 --> 00:17:27,170 >> A jestli si teď přemýšlet o své vlastní PC nebo Mac, můžete připomenout, že 355 00:17:27,170 --> 00:17:29,610 někdy dostanete záhadné chybové zprávy od softwaru, který jste 356 00:17:29,610 --> 00:17:32,650 použití, a někdy má člověk Srozumitelný popis, ale je tu 357 00:17:32,650 --> 00:17:35,265 často kód nebo číslo na obrazovce? 358 00:17:35,265 --> 00:17:37,800 Pokud to nepřijde na mysl, jen dávat pozor na to. 359 00:17:37,800 --> 00:17:40,790 To je to, co to typicky kódy na mysli. 360 00:17:40,790 --> 00:17:44,200 Jsou zahrnuty v aplikaci Microsoft Word a další programy, takže pokud soubor 361 00:17:44,200 --> 00:17:48,850 bug report s firmou, můžete řekněte jim, oh, mám číslo chyby 45. 362 00:17:48,850 --> 00:17:51,750 A někteří programátor zpět ve společnosti může vypadat, že v jeho nebo její 363 00:17:51,750 --> 00:17:54,940 kód a říct, oh, to proto, že jsem udělal tato chyba a to je důvod, proč uživatel 364 00:17:54,940 --> 00:17:56,240 dostala tuto zprávu. 365 00:17:56,240 --> 00:17:59,490 >> Ale upřímně řečeno, je to jen trochu rušivě a trochu nudné 366 00:17:59,490 --> 00:18:02,130 k závěru, že alespoň na našich Prvních několik programů, a tak jsme 367 00:18:02,130 --> 00:18:02,970 se vynechá to. 368 00:18:02,970 --> 00:18:07,450 Ale celou tu dobu každý jeden z vašich Hlavní funkce tajně měl toto 369 00:18:07,450 --> 00:18:11,600 linka automaticky přidány pro vás kompilátor, jen tím, že konvence 370 00:18:11,600 --> 00:18:13,172 ušetří nějaký čas. 371 00:18:13,172 --> 00:18:14,620 >> [Neslyšitelný]. 372 00:18:14,620 --> 00:18:16,250 >> Nemusíte zahrnout do hlavní. 373 00:18:16,250 --> 00:18:16,700 To je v pořádku. 374 00:18:16,700 --> 00:18:20,260 Je potřeba zahrnout, pokud jste byli provádění funkcí, jako je tento. 375 00:18:20,260 --> 00:18:22,850 Jinak se funkce bytu se nebude fungovat. 376 00:18:22,850 --> 00:18:24,480 Ale hlavní, že to není nutné. 377 00:18:24,480 --> 00:18:28,450 Za týden nebo dva, začneme dostat do tohoto zvyku, jakmile chceme začít 378 00:18:28,450 --> 00:18:29,690 znamenat chyby. 379 00:18:29,690 --> 00:18:32,550 Opravdu dobrá otázka. 380 00:18:32,550 --> 00:18:36,880 >> Tak rychle slovní přestávka zmínit, že tento pátek, nebudeme mít oběd 381 00:18:36,880 --> 00:18:39,980 samo o sobě, ale my budeme mít večeři s některých studentů a zaměstnanců. 382 00:18:39,980 --> 00:18:42,940 Pokud byste se k nám připojit, pocit může jít do cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 18:00 tento pátek. 384 00:18:45,030 --> 00:18:47,990 Vesmír je jako vždy omezená, ale budeme pokračovat v tom to na téměř 385 00:18:47,990 --> 00:18:51,420 jednou týdně, pokud prostor Vypršel tento týden. 386 00:18:51,420 --> 00:18:56,160 >> Takže cliffhanger, že jsme skončili na Pondělí bylo, že řetězce mohou ve skutečnosti 387 00:18:56,160 --> 00:19:00,520 být indexovány, což právě znamená, že ty může dostat na první znak, 388 00:19:00,520 --> 00:19:03,770 druhý znak, třetí znak a tak dále, protože můžete 389 00:19:03,770 --> 00:19:07,860 efektivně myslet na řetězce, např. Dobrý den, jako v tomto případě pět 390 00:19:07,860 --> 00:19:09,670 Písmena uvnitř krabic. 391 00:19:09,670 --> 00:19:13,370 A můžete získat v každém z těchto Krabice s tím, co jsme udělali syntaxe 392 00:19:13,370 --> 00:19:15,230 představí v pondělí? 393 00:19:15,230 --> 00:19:16,760 Tyto hranaté závorky na vaší klávesnici. 394 00:19:16,760 --> 00:19:18,980 To jen chtěl jít do místa nulové. 395 00:19:18,980 --> 00:19:22,840 >> Začneme počítat od nuly, takže držák nula znamená h, držák jeden 396 00:19:22,840 --> 00:19:25,170 E znamená, a tak dále. 397 00:19:25,170 --> 00:19:28,490 A tak po celou dobu, kdy jsme byli pomocí řetězce a zadáním příkazu "ahoj" 398 00:19:28,490 --> 00:19:31,250 a "svět" a další věci na na obrazovce, to bylo uloženo 399 00:19:31,250 --> 00:19:32,820 v krabicích, jako je tento. 400 00:19:32,820 --> 00:19:33,370 A hádejte. 401 00:19:33,370 --> 00:19:37,470 Co každý box představuje fyzicky vnitřek vašeho počítače? 402 00:19:37,470 --> 00:19:38,250 >> [Neslyšitelný]. 403 00:19:38,250 --> 00:19:39,150 >> Je nám líto? 404 00:19:39,150 --> 00:19:39,580 >> Postavy. 405 00:19:39,580 --> 00:19:44,760 >> Tak charakter, rozhodně v případě, řetězců a postava je jen 406 00:19:44,760 --> 00:19:46,800 osm bitů nebo jeden byte. 407 00:19:46,800 --> 00:19:49,550 Takže jste pravděpodobně alespoň nejasně obeznámeni s tím, že vaše 408 00:19:49,550 --> 00:19:50,500 počítač má paměť. 409 00:19:50,500 --> 00:19:52,110 To má dva typy paměti alespoň. 410 00:19:52,110 --> 00:19:54,810 Jedním z nich je pevný disk, kde ušetříte věci trvale, a to 411 00:19:54,810 --> 00:19:57,400 typicky velký, takže můžete mít filmy a hudbu a tak dále. 412 00:19:57,400 --> 00:20:04,010 >> Pak máte další typ paměti tzv. RAM, R-A-M, Random Access 413 00:20:04,010 --> 00:20:07,510 Paměť, a to je typ paměti, , který se používá, když je počítač 414 00:20:07,510 --> 00:20:11,520 běží, ale pokud už ztrácím sílu nebo váš vybití baterie, cokoliv, co je uloženo 415 00:20:11,520 --> 00:20:15,300 v paměti RAM zmizí, pokud už ztrácím sílu dohromady, protože to není 416 00:20:15,300 --> 00:20:16,060 vytrvalý. 417 00:20:16,060 --> 00:20:19,120 Ty mají obvykle v těchto dnech, koncert z toho dva koncerty, možná víc. 418 00:20:19,120 --> 00:20:23,490 A vzhůru RAM je, že je to mnohem mnohem, mnohem rychlejší než pevné disky 419 00:20:23,490 --> 00:20:27,390 nebo dokonce solid state disky v těchto dnech, ale je to obvykle dražší, takže 420 00:20:27,390 --> 00:20:28,480 máte méně. 421 00:20:28,480 --> 00:20:32,400 >> Takže dnešní rozhovor skutečně odkazuje RAM, který typ paměti, která 422 00:20:32,400 --> 00:20:35,270 existuje jen když tam je moc dodávané do počítače. 423 00:20:35,270 --> 00:20:40,530 Takže když napíšete H-E-L-L-O, Enter klávesnice, H se děje v jednom 424 00:20:40,530 --> 00:20:44,550 byte RAM, E se děje v další byte paměti RAM, jako je 425 00:20:44,550 --> 00:20:45,800 zbytek slova. 426 00:20:45,800 --> 00:20:49,010 Takže vzpomenout, co jsme byli schopni udělat, minule to bylo. 427 00:20:49,010 --> 00:20:53,940 Nech mě jít dopředu a otevřít soubor že jsme nazvali string.c a vyvolat 428 00:20:53,940 --> 00:20:56,860 že vypadal trochu něco takového. 429 00:20:56,860 --> 00:20:59,860 Dovolte mi, abych skutečně vrátit zpět a změnit to přesně to, co vypadá, 430 00:20:59,860 --> 00:21:02,654 délka řetězce s. 431 00:21:02,654 --> 00:21:04,560 >> Takže se na programu zde. 432 00:21:04,560 --> 00:21:08,530 Jsme patří CS50 knihovnu tak že můžeme použít získat řetězec. 433 00:21:08,530 --> 00:21:11,400 Použili jsme standardní io.h takže můžeme použít printf. 434 00:21:11,400 --> 00:21:13,580 Proč jsme je string.h? 435 00:21:13,580 --> 00:21:16,980 To byl nový v pondělí. 436 00:21:16,980 --> 00:21:18,230 Takže jsme chtěli délku řetězce. 437 00:21:18,230 --> 00:21:19,090 Str. leng. 438 00:21:19,090 --> 00:21:21,470 Lidé se rozhodli před lety, buďme stručné. 439 00:21:21,470 --> 00:21:24,290 Místo toho, volat to "délka řetězce," nazvěme ji "str Leng" a nechte 440 00:21:24,290 --> 00:21:28,540 Svět je číslo, které se, a tak to je to, co dostaneme přístup k s string.h. 441 00:21:28,540 --> 00:21:29,390 >> To je dobře známá. 442 00:21:29,390 --> 00:21:30,320 To je dobře známá. 443 00:21:30,320 --> 00:21:31,450 To je dobře známá. 444 00:21:31,450 --> 00:21:32,370 Jedná se o málo nových. 445 00:21:32,370 --> 00:21:35,420 V souladu 22 - a vrátíme se na to, ale nyní víme - 446 00:21:35,420 --> 00:21:37,880 a vy byste jen vědět to z nutnosti přečtěte si dokumentaci, nebo pokud 447 00:21:37,880 --> 00:21:39,010 jste věděl, že C již - 448 00:21:39,010 --> 00:21:41,510 dostat řetězec může někdy pokazit. 449 00:21:41,510 --> 00:21:45,130 V případě, že uživatel je skutečně nepřátelský nebo nespolupracující a on nebo ona jen 450 00:21:45,130 --> 00:21:49,450 nemá nic psat na klávesnici nebo typy tolik na klávesnici, která 451 00:21:49,450 --> 00:21:53,760 to přemůže paměti počítače, teoreticky dostat řetězec by se mohl vrátit 452 00:21:53,760 --> 00:21:56,270 něco jiného, ​​než řetězec znaků. 453 00:21:56,270 --> 00:22:01,930 To by se mohl vrátit speciální hodnotu s názvem NULL ve všech čepice, N-U-L-L, a to je 454 00:22:01,930 --> 00:22:03,390 jen tzv. sentinel hodnotu. 455 00:22:03,390 --> 00:22:08,010 Je to zvláštní hodnotu, která označuje, něco špatného se stalo v tomto případě. 456 00:22:08,010 --> 00:22:10,520 To je absence řetězce. 457 00:22:10,520 --> 00:22:16,190 >> Takže null jsem kontrolu jednoduše tak, dlouhý příběh krátký, str. leng a 458 00:22:16,190 --> 00:22:20,230 další funkce, které přicházejí s C, je-li očekávají řetězec, ale předáte je 459 00:22:20,230 --> 00:22:23,630 absence řetězce, předáte je NULL, počítač nebo program 460 00:22:23,630 --> 00:22:25,000 se prostě zhroutí úplně. 461 00:22:25,000 --> 00:22:25,610 To bude viset. 462 00:22:25,610 --> 00:22:27,250 To se bude hodit do nějaké chybové hlášení. 463 00:22:27,250 --> 00:22:28,690 Špatné věci se bude dít. 464 00:22:28,690 --> 00:22:31,130 Takže i když je to stále není dobře definované - 465 00:22:31,130 --> 00:22:33,730 to bude dávat větší smysl v týdnu nebo dvě - v řadě 22, je to jen 466 00:22:33,730 --> 00:22:38,790 Příkladem vlastní obranné kontrolu chyb jen v případě, že jednou z 467 00:22:38,790 --> 00:22:42,040 milionů se něco pokazí, na Alespoň můj program nebude padat. 468 00:22:42,040 --> 00:22:45,960 >> Takže pokud to není rovná něco špatného, Mám to pro smyčce, a to bylo 469 00:22:45,960 --> 00:22:47,710 kde jsme měli ten druhý nový kus syntaxe. 470 00:22:47,710 --> 00:22:51,580 Mám pro smyčky iterace od nula, až do délky s. 471 00:22:51,580 --> 00:22:56,140 A pak tady, byl jsem vytištění s držák i, ale proč já používám% c všechny 472 00:22:56,140 --> 00:23:00,770 Najednou místo% s ještě i když s je řetězec? 473 00:23:00,770 --> 00:23:02,110 Je to postava, ne? 474 00:23:02,110 --> 00:23:06,560 S je řetězec, ale s něčím držák, Držák s i, kde i je nulová 475 00:23:06,560 --> 00:23:10,380 nebo jeden nebo dva, to je individuální znak v řetězci, a proto pro 476 00:23:10,380 --> 00:23:14,970 že printf musí být informován, že je to opravdu postava očekávat. 477 00:23:14,970 --> 00:23:18,096 >> A pak si vzpomenout, co to udělal Program vlastně dělat? 478 00:23:18,096 --> 00:23:19,848 >> Vytištěno to ve sloupcích. 479 00:23:19,848 --> 00:23:21,120 >> Jo, přesně tak. 480 00:23:21,120 --> 00:23:24,990 Je to prostě vytištěno slovo, které jsem psát, sloupec, jeden znak na řádku. 481 00:23:24,990 --> 00:23:26,190 Tak uvidíme znovu. 482 00:23:26,190 --> 00:23:27,810 Tak, aby řetězec. 483 00:23:27,810 --> 00:23:30,200 Zpracovala OK. . / String. 484 00:23:30,200 --> 00:23:35,560 Dovolte mi, abych zadejte H-E-L-L-O, Enter, a opravdu jsem si to, na každém řádku jeden. 485 00:23:35,560 --> 00:23:37,280 >> Takže mi dovolte ještě jeden optimalizaci zde. 486 00:23:37,280 --> 00:23:40,240 Pokud si myslíte o tom, zejména pokud jste naprogramováno, je tu 487 00:23:40,240 --> 00:23:43,340 pravděpodobně neúčinnost v souladu 24. 488 00:23:43,340 --> 00:23:46,160 Jinými slovy, není to nutně Nejlepší design. 489 00:23:46,160 --> 00:23:50,200 Jednoduchá, alespoň jednou vás Pamatuješ si, co str Leng je, ale je to 490 00:23:50,200 --> 00:23:52,640 dělat něco hloupého potenciálně. 491 00:23:52,640 --> 00:23:54,863 Co by to mohlo být? 492 00:23:54,863 --> 00:23:56,280 >> [Neslyšitelný]. 493 00:23:56,280 --> 00:23:56,800 >> Přesně tak. 494 00:23:56,800 --> 00:24:00,340 Je kontrola délky s pokaždé, i když 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O je vždycky se pět znaků. 496 00:24:02,980 --> 00:24:05,490 Pokaždé, když se prostřednictvím této smyčky, pět nemění. 497 00:24:05,490 --> 00:24:08,750 Mohl bych být i zvyšování, ale to, co je délka s na každém 498 00:24:08,750 --> 00:24:09,690 opakování této smyčky? 499 00:24:09,690 --> 00:24:15,810 Je to pět, to je pět, to je pět, a přesto jsem však ptám 500 00:24:15,810 --> 00:24:18,320 otázku znovu a znovu a znovu. 501 00:24:18,320 --> 00:24:20,750 Teď upřímně řečeno, počítač je tak zatraceně rychle, nikdo nevšimne 502 00:24:20,750 --> 00:24:23,780 Rozdíl je v tomto případě, ale tyto druhy špatných rozhodnutí o návrhu může 503 00:24:23,780 --> 00:24:28,330 začnou sčítat, pokud kompilátor sám Nesnaží se opravit to pro vás, který 504 00:24:28,330 --> 00:24:30,630 obvykle to by neměl být v alespoň v přístroji. 505 00:24:30,630 --> 00:24:31,540 >> Tak jdu na to. 506 00:24:31,540 --> 00:24:34,580 Chystám se přidat čárku moje první proměnná, i. 507 00:24:34,580 --> 00:24:37,310 Chystám se dát sám jiný variabilní, volat to n, jen tím, že 508 00:24:37,310 --> 00:24:41,330 konvence pro čísla, a pak jsem bude přiřadit n hodnotu řetězce 509 00:24:41,330 --> 00:24:42,530 délka s. 510 00:24:42,530 --> 00:24:46,060 A pak jsem se změní můj stav se co? 511 00:24:46,060 --> 00:24:51,960 Jdu změnit svůj stav se, když jsem je menší než n.. 512 00:24:51,960 --> 00:24:55,700 >> Takže teď, kolikrát jsem kontrolu délky s? 513 00:24:55,700 --> 00:25:00,110 Jednou, ale to je v pořádku kontrolovat i proti n znovu a znovu, protože teď ty 514 00:25:00,110 --> 00:25:03,170 hodnoty se skutečně mění. 515 00:25:03,170 --> 00:25:06,020 Nyní se, jen vím, že kdykoliv volání funkce, je to trochu 516 00:25:06,020 --> 00:25:09,930 nad hlavou, není dost odradit opravdu od někdy pomocí funkcí, ale 517 00:25:09,930 --> 00:25:12,750 jistě, když je řádek kódu líbí - a linky budou mít 518 00:25:12,750 --> 00:25:15,490 zajímavější zanedlouho - tam, kde je tu příležitost přemýšlet, jestli jsem 519 00:25:15,490 --> 00:25:18,320 zadejte tento kód, kolik krát to bude provádět? 520 00:25:18,320 --> 00:25:20,950 Začnete vidět v průběhu času Výkon vašich programů může 521 00:25:20,950 --> 00:25:21,660 opravdu změnit. 522 00:25:21,660 --> 00:25:24,110 >> Ve skutečnosti, jeden z problému sady máme udělal v minulých letech zahrnuje 523 00:25:24,110 --> 00:25:27,600 provádění, jak si může stáhnout z týden nula, kontrola pravopisu, ale 524 00:25:27,600 --> 00:25:31,380 Kontrola pravopisu, který je navržen pro podporu slovník 150.000 a 525 00:25:31,380 --> 00:25:32,860 Slova, která jsme vám kluci. 526 00:25:32,860 --> 00:25:37,100 Budete muset psát kód, který načte tato slova do paměti RAM, takže do 527 00:25:37,100 --> 00:25:40,700 krabice, jako jsme viděli na obrazovce na okamžik lety, a pak stejně rychle jako vy 528 00:25:40,700 --> 00:25:43,740 můžete, musíte být schopni odpovědět otázka formy, je toto slovo 529 00:25:43,740 --> 00:25:44,280 chybně? 530 00:25:44,280 --> 00:25:45,420 Toto slovo je chybně? 531 00:25:45,420 --> 00:25:46,770 Toto slovo je chybně? 532 00:25:46,770 --> 00:25:49,525 >> A něco takového, co máme udělal v minulých letech se obrátil ji do, 533 00:25:49,525 --> 00:25:53,500 když na opt-in dobrovolném základě, soutěž druhů, přičemž 534 00:25:53,500 --> 00:25:59,470 studenti, kteří používají méně RAM a méně času, méně cykly procesoru, skončí 535 00:25:59,470 --> 00:26:02,640 vyvěrá na vrchol málo leader board nebo pořadí, které klademe na 536 00:26:02,640 --> 00:26:04,770 Kurz je úvodní stránka, jak máme probíhala v letech minulých. 537 00:26:04,770 --> 00:26:08,100 Takže znovu, zcela volitelný, ale mluví k návrhu příležitosti 538 00:26:08,100 --> 00:26:11,250 které jsou před námi, jakmile začneme budova na vrcholu některé z nich 539 00:26:11,250 --> 00:26:14,010 základní stavební kameny. 540 00:26:14,010 --> 00:26:16,780 >> Takže mi dovolte vrátit se k tomuto schématu pro jen na chvíli a odhalit málo 541 00:26:16,780 --> 00:26:17,610 něco víc. 542 00:26:17,610 --> 00:26:21,400 To je skutečně řetězec, a udělali jsme Výhodou několika knihoven, 543 00:26:21,400 --> 00:26:25,150 standardní io.h která má - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, mimo jiné. 546 00:26:27,860 --> 00:26:31,540 cs50.h, která se int a získat řetězec a tak dále, string.h, který 547 00:26:31,540 --> 00:26:32,570 měl str Leng. 548 00:26:32,570 --> 00:26:34,800 Ale ukazuje se, že je ještě jiný. 549 00:26:34,800 --> 00:26:38,540 Upřímně řečeno, je tu spousta a spousta záhlaví Soubory, které deklarují funkce 550 00:26:38,540 --> 00:26:43,320 pro knihovny, ale to je ctype.h ve skutečnosti bude poněkud 551 00:26:43,320 --> 00:26:46,900 výhodné, protože jdu jít dál a realizovat jeden 552 00:26:46,900 --> 00:26:48,120 jiný program zde. 553 00:26:48,120 --> 00:26:52,420 >> Nech mě jít dopředu a otevřít něco Napsal jsem předem s názvem 554 00:26:52,420 --> 00:26:55,750 capitalize.c, a pojďme se Podívejte se, jak to funguje. 555 00:26:55,750 --> 00:27:00,340 Všimněte si, že jsem pomocí, v této verzi z toho tři známé soubory. 556 00:27:00,340 --> 00:27:04,110 Všimněte si, že v řadě 18, jsem získání řádek textu. 557 00:27:04,110 --> 00:27:07,660 Všimněte si řádku 21, jsem tvrdil, že Následující kód bude 558 00:27:07,660 --> 00:27:12,170 vydělávat s, co uživatel napsal v roce, a jak to dělám, že? 559 00:27:12,170 --> 00:27:13,300 No, já si beru - 560 00:27:13,300 --> 00:27:14,750 poučení z minula - 561 00:27:14,750 --> 00:27:18,370 Já jsem prohlásil i a n a iterace nad znaky v řetězci. 562 00:27:18,370 --> 00:27:22,720 A co je to za blok kód v souladu 24 až 27. 563 00:27:22,720 --> 00:27:24,550 dělá Laicky řečeno? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Malé písmeno zpět. 566 00:27:29,730 --> 00:27:30,430 >> Přesně tak. 567 00:27:30,430 --> 00:27:35,920 Je-li držák s i -, takže v případě, že i-tý charakter s, což je specifický 568 00:27:35,920 --> 00:27:40,220 char v řetězci, je větší než nebo rovnající se malá písmena a - 569 00:27:40,220 --> 00:27:42,670 připomenout, že dvojitý ampersand znamenají a - 570 00:27:42,670 --> 00:27:46,810 a stejný charakter, s držák i, je menší než nebo rovnající se malá písmena Z, 571 00:27:46,810 --> 00:27:50,600 to znamená, že to, nebo b nebo c nebo dot, dot, dot, nebo Z, což znamená, že 572 00:27:50,600 --> 00:27:51,340 to je malá. 573 00:27:51,340 --> 00:27:52,900 Co chci dělat v tomto případě? 574 00:27:52,900 --> 00:27:55,010 No, můžu to udělat poněkud záhadně, ale 575 00:27:55,010 --> 00:27:56,160 pojďme škádlit to od sebe. 576 00:27:56,160 --> 00:28:00,210 >> Jdu zavolat printf, vytiskne% c protože chci dotisk tohoto 577 00:28:00,210 --> 00:28:01,580 znak na obrazovce. 578 00:28:01,580 --> 00:28:06,650 Já pak bude trvat s. držák já, i-tý znak s, a proč 579 00:28:06,650 --> 00:28:12,330 dělám tento malý trik tady, malá minus kapitálu je? 580 00:28:12,330 --> 00:28:16,352 Co to bude dát já obecně? 581 00:28:16,352 --> 00:28:18,600 >> [Neslyšitelný]. 582 00:28:18,600 --> 00:28:19,390 >> Přesně tak. 583 00:28:19,390 --> 00:28:20,860 Nemám moc nepamatuju - 584 00:28:20,860 --> 00:28:24,390 to bylo 65 na kapitálové A. opravdu nemám Pamatuješ si, co malá je, 585 00:28:24,390 --> 00:28:25,540 ale to nevadí. 586 00:28:25,540 --> 00:28:26,580 Počítač ví. 587 00:28:26,580 --> 00:28:30,380 Takže tím, že říká, malá znaménko mínus kapitálu, je to divné, že 588 00:28:30,380 --> 00:28:33,530 odečte jeden char od druhého, ale jaké jsou znaky pod pokličku? 589 00:28:33,530 --> 00:28:34,520 Jsou to jen čísla. 590 00:28:34,520 --> 00:28:36,980 Takže bez ohledu na tato čísla, nechte počítač si to pamatovat 591 00:28:36,980 --> 00:28:38,240 spíše než já člověk. 592 00:28:38,240 --> 00:28:41,710 >> Tak malá minus kapitál je bude mi rozdíl. 593 00:28:41,710 --> 00:28:45,370 To se stává, že je 32, a že by se případ malým b a kapitálu B 594 00:28:45,370 --> 00:28:45,930 a tak dále. 595 00:28:45,930 --> 00:28:47,710 To zůstává konzistentní, naštěstí. 596 00:28:47,710 --> 00:28:51,930 Takže jsem v podstatě řekl, se malé písmeno, odečíst z té 597 00:28:51,930 --> 00:28:55,340 standardní rozdíl, a že držák účinně Změny S i od 598 00:28:55,340 --> 00:28:59,400 malá písmena, samozřejmě, velká, aniž bych opravdu mají myslet 599 00:28:59,400 --> 00:29:03,040 o nebo si pamatovat, co byli ti, Čísla s nimiž jsme hovořili o tom, kdy osm 600 00:29:03,040 --> 00:29:04,800 dobrovolníků přišla na pódium? 601 00:29:04,800 --> 00:29:08,800 Nyní mezitím, v jinak, pokud to není malé písmeno jak je stanoveno 602 00:29:08,800 --> 00:29:10,400 linkou 24, stačí ji vytisknout. 603 00:29:10,400 --> 00:29:12,590 Já jen chci, abyste se nedotkli znaky, které byly 604 00:29:12,590 --> 00:29:14,410 vlastně původně malá písmena. 605 00:29:14,410 --> 00:29:15,150 >> Takže pojďme se podívat. 606 00:29:15,150 --> 00:29:17,400 Udělat využít. 607 00:29:17,400 --> 00:29:18,470 Zpracovala, OK. 608 00:29:18,470 --> 00:29:19,730 . / Vydělat. 609 00:29:19,730 --> 00:29:23,530 A dovolte mi psát v H-E-L-L-O malými písmeny, Enter. 610 00:29:23,530 --> 00:29:26,370 A zjistíte, že je převeden na velká. 611 00:29:26,370 --> 00:29:27,940 Nech mě to udělat znovu jiný slovo. 612 00:29:27,940 --> 00:29:32,720 Jak se o D-A-V-I-D s prvním D vydělával jako jméno je obvykle? 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Všimněte si, že je stále platná. 615 00:29:34,870 --> 00:29:40,250 To jen, že první výstup D beze změny přes které else. 616 00:29:40,250 --> 00:29:42,170 >> Takže mějte na paměti, pak pár věcí zde. 617 00:29:42,170 --> 00:29:45,060 Za prvé, pokud jste někdy chtěli zkontrolovat dva podmínky najednou, můžete jim a 618 00:29:45,060 --> 00:29:46,500 spolu, jak jsme předpovídali. 619 00:29:46,500 --> 00:29:49,900 Můžete porovnat znaky tímto způsobem a účinně léčit znaky jako 620 00:29:49,900 --> 00:29:53,050 čísla, ale upřímně řečeno, je to tak zatraceně mystický Nikdy nebudu pamatovat 621 00:29:53,050 --> 00:29:56,510 jak přijít s tím od začátku bez uvažování přes to na docela 622 00:29:56,510 --> 00:29:57,140 trochu času. 623 00:29:57,140 --> 00:30:00,590 >> Nebylo by hezké, kdyby někdo tam napsal funkci nazvanou je 624 00:30:00,590 --> 00:30:05,390 snížení, které by mohly odpovídat za mě true nebo false, tento znak je malá? 625 00:30:05,390 --> 00:30:09,350 No naštěstí, kdo napsal ctype.h udělal přesně to. 626 00:30:09,350 --> 00:30:15,540 Nech mě jít sem a přidat ctype pro c typy, a teď nech mě jít sem dolů a 627 00:30:15,540 --> 00:30:18,820 přepsat tento řádek takto. 628 00:30:18,820 --> 00:30:27,510 >> Takže pokud se to nazývá, je nižší, tvrdím, je držák i, pak jdu smazat 629 00:30:27,510 --> 00:30:29,400 tyto dva řádky dohromady. 630 00:30:29,400 --> 00:30:32,570 Takže teď někdo jiný, doufám, napsal s názvem funkce je nižší, a to 631 00:30:32,570 --> 00:30:36,250 ukázalo se, že to udělali, a oni deklarovali že uvnitř ctype.h. 632 00:30:36,250 --> 00:30:39,480 A teď jdu nechat linku 27 sám, jdu nechat linku 31 633 00:30:39,480 --> 00:30:41,890 sám, ale všimněte si, jak moc jsem zpřísnila svůj kód. 634 00:30:41,890 --> 00:30:42,690 Nyní je čistší. 635 00:30:42,690 --> 00:30:47,250 Je to méně obtížné prohlédnout protože se funkce, je navíc 636 00:30:47,250 --> 00:30:50,080 tak nádherně jmenoval to jen dělá to, co říká. 637 00:30:50,080 --> 00:30:51,520 >> Takže teď jdu zachránit to. 638 00:30:51,520 --> 00:30:52,930 Chystám se oddálit. 639 00:30:52,930 --> 00:30:56,650 A stejně jako v Scratch byste mohli mít Booleovské operace, logické hodnoty true nebo 640 00:30:56,650 --> 00:31:01,530 false, to je přesně to, co je nižší skutečně vrátí. 641 00:31:01,530 --> 00:31:02,960 Dovolte mi, abych překompilovat. 642 00:31:02,960 --> 00:31:04,500 Dovolte mi, abych re-run. 643 00:31:04,500 --> 00:31:07,350 A teď zkusme to znovu, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 To je docela dobrý. 645 00:31:07,970 --> 00:31:10,150 A zkuste to znovu, ujistěte se, že jsem se nezničí něco vymyslet. 646 00:31:10,150 --> 00:31:11,670 To je aktivováno stejně. 647 00:31:11,670 --> 00:31:14,190 >> Ale to není dost dobrý, protože Další věc, která mě nikdy 648 00:31:14,190 --> 00:31:19,090 vzpomenete, pokud pracuji přes to opravdu opatrně na, řekněme, papír 649 00:31:19,090 --> 00:31:19,920 to zatraceně řádek. 650 00:31:19,920 --> 00:31:23,450 Nebylo by hezké, kdyby tam byly volána funkce na horní? 651 00:31:23,450 --> 00:31:26,930 Tak to dopadá, že je v ctype.h stejně. 652 00:31:26,930 --> 00:31:30,150 Chystám se jít dopředu a zadejte - 653 00:31:30,150 --> 00:31:31,340 dovolte mi, abych tento řádek zpět. 654 00:31:31,340 --> 00:31:36,430 Místo toho tady, nech mě jít napřed a říkají, nahrazovat% C 655 00:31:36,430 --> 00:31:42,110 Výsledkem volání této funkce Horní na i-tém charakteru s. 656 00:31:42,110 --> 00:31:45,430 A teď všimnete, že to stále trochu vyvážit. 657 00:31:45,430 --> 00:31:48,870 Musím sledovat, kolik závorky jsem otevřít a zavřít. 658 00:31:48,870 --> 00:31:50,050 >> Takže teď je to ještě čistší. 659 00:31:50,050 --> 00:31:53,460 Nyní je tento program stále lepší a lépe navržené pravděpodobně proto, že je 660 00:31:53,460 --> 00:31:56,450 mnohem, mnohem čitelnější, ale Není to pojďme napravit. 661 00:31:56,450 --> 00:31:57,600 Udělat využít. 662 00:31:57,600 --> 00:31:58,930 . / Vydělat. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Pojďme spustit znovu, D--V-I-D. OK, takže jsme stále v 664 00:32:03,220 --> 00:32:04,250 docela dobré kondici. 665 00:32:04,250 --> 00:32:06,030 >> Ale teď k horní. 666 00:32:06,030 --> 00:32:09,720 Navrhuji, že je tu ještě jedna zjemnění můžeme dělat, že by bylo 667 00:32:09,720 --> 00:32:12,820 opravdu pěkné, mohlo by to opravdu dotáhnout do tohoto kódu, a opravdu nám pět 668 00:32:12,820 --> 00:32:15,150 z pěti pro návrh, například. 669 00:32:15,150 --> 00:32:16,510 Co by bylo hezké, jak se zbavit? 670 00:32:16,510 --> 00:32:20,770 No, podívejte se, jak zatraceně dlouhé tento blok Kód je jen něco jednoduchého. 671 00:32:20,770 --> 00:32:23,850 >> Nyní, jak stranou, protože můžete mít vidět v super části minulý 672 00:32:23,850 --> 00:32:27,570 víkend, nemusíte nezbytně potřebuje, Složené závorky, když stačí mít jeden 673 00:32:27,570 --> 00:32:32,180 řádek kódu, i když jsme navrhli držet je tak, že je mnohem 674 00:32:32,180 --> 00:32:36,190 jasnější, jako v Scratch je ve tvaru písmene U bloky, co je uvnitř pobočky. 675 00:32:36,190 --> 00:32:40,170 Ale nebylo by to bylo hezké, kdyby na horní, když vzhledem k jeho vstup, otočil se do 676 00:32:40,170 --> 00:32:44,730 velká písmena, pokud tomu tak není, a to, co by bylo úžasné v opačném případě, pokud 677 00:32:44,730 --> 00:32:47,210 je to už velká? 678 00:32:47,210 --> 00:32:49,620 Stačí projít přes a nechat to být. 679 00:32:49,620 --> 00:32:50,660 >> Takže možná, že to dělá. 680 00:32:50,660 --> 00:32:52,990 Mohl bych to zkusit, a jen doufám, , že nemá, ale dovolte mi, abych 681 00:32:52,990 --> 00:32:54,450 představit jednu věc. 682 00:32:54,450 --> 00:32:57,440 Namísto použití tohoto zabudovaný terminál Okno se zde připomenout, že 683 00:32:57,440 --> 00:33:01,130 Toto náměstí černá ikona vám větší okno terminálu, že mohu plný 684 00:33:01,130 --> 00:33:02,260 obrazovky, pokud chci? 685 00:33:02,260 --> 00:33:05,820 Tak to dopadá, že jsou nějak podivně jmenoval, ale je tu nazývají věci 686 00:33:05,820 --> 00:33:10,970 manuálových stránek, manuálové stránky, muž v krátkosti, a já k nim přistupovat podle 687 00:33:10,970 --> 00:33:14,515 psaní muž - 688 00:33:14,515 --> 00:33:15,570 co chci psát na stroji? 689 00:33:15,570 --> 00:33:17,830 Člověk do horní. 690 00:33:17,830 --> 00:33:21,090 >> A teď zjistíte, jestliže existuje funkce uvnitř počítače, v 691 00:33:21,090 --> 00:33:23,970 V tomto případě je přístroj, který je právě operační systém Linux, bude to 692 00:33:23,970 --> 00:33:27,920 aby mi poněkud záhadný soubor výstup, ale zjistíte, že v průběhu času 693 00:33:27,920 --> 00:33:31,720 vždy je formátován do značné míry stejné, takže začnete to zvyknout. 694 00:33:31,720 --> 00:33:35,130 Všimněte si, v horní části na horní a zřejmě je stejný dokumentace 695 00:33:35,130 --> 00:33:35,680 na snížit. 696 00:33:35,680 --> 00:33:38,740 Ten, kdo psal, že to bylo nějaké řezání rohy a dát to všechno na jedné stránce. 697 00:33:38,740 --> 00:33:40,720 Účelem těchto věcí "v život je převést 698 00:33:40,720 --> 00:33:42,780 Dopis horní nebo malá písmena. 699 00:33:42,780 --> 00:33:46,290 >> Všimněte si, že v Synopsis manuálové stránky Učí mě, co mám soubor 700 00:33:46,290 --> 00:33:48,130 zahrnout používat tuto věc. 701 00:33:48,130 --> 00:33:51,320 To mi dává podpisy na nich funkce, a to jak z nich, a to i 702 00:33:51,320 --> 00:33:53,510 když jsme teď jen péče o jednom. 703 00:33:53,510 --> 00:33:54,730 Zde je nyní popis. 704 00:33:54,730 --> 00:33:58,800 Chcete-li horní převádí dopis c velká, pokud je to možné. 705 00:33:58,800 --> 00:34:02,280 >> Stále není to poučné, ale dovolte mi, abych nyní podívat pod návratovou hodnotu, věc, 706 00:34:02,280 --> 00:34:03,520 který je předán zpět. 707 00:34:03,520 --> 00:34:08,600 Takže vrácená hodnota je, že převedeny písmeno nebo c, pokud 708 00:34:08,600 --> 00:34:09,870 konverze nebylo možné. 709 00:34:09,870 --> 00:34:11,202 Co je to c? 710 00:34:11,202 --> 00:34:12,560 >> Původní charakter. 711 00:34:12,560 --> 00:34:15,370 >> Původní charakter a víme, že by opět stoupá do 712 00:34:15,370 --> 00:34:19,179 synopse, a ten, kdo to napsal Funkce se rozhodli, že vstupní 713 00:34:19,179 --> 00:34:22,909 se na horní a spodní, je jen libovolně se měl jmenovat c. 714 00:34:22,909 --> 00:34:24,909 Mohli by říkali, že většina něco chtějí, ale stále to 715 00:34:24,909 --> 00:34:26,270 jednoduché c. 716 00:34:26,270 --> 00:34:27,880 Tak jsem konzultovala manuálovou stránku. 717 00:34:27,880 --> 00:34:31,870 Tato věta ujišťuje mě, že pokud to není malé písmeno, je to 718 00:34:31,870 --> 00:34:34,969 bude dej mi C, což je perfektní, což znamená, že můžete zbavit 719 00:34:34,969 --> 00:34:36,199 můj jiný stav. 720 00:34:36,199 --> 00:34:39,679 >> Tak nech mě jít zpátky do gedit, a Nyní mi dovolte to. 721 00:34:39,679 --> 00:34:41,960 Jdu kopírovat mé printf prohlášení. 722 00:34:41,960 --> 00:34:45,969 Chystám se jít dopředu a doprava uvnitř smyčky pro tisk, které se, a získat 723 00:34:45,969 --> 00:34:48,760 zbavit se tohoto celku, pokud by konstrukce. 724 00:34:48,760 --> 00:34:51,860 Nebyl to špatný nápad, a bylo to velmi Kolik správné av souladu s 725 00:34:51,860 --> 00:34:54,100 všechno, co jsme kázali, ale prostě není nutné. 726 00:34:54,100 --> 00:34:57,070 Jakmile si uvědomíte, některé knihovny funkce existuje, že někdo jiný 727 00:34:57,070 --> 00:35:01,340 psal, nebo možná jste napsal jinde souboru, můžete jej použít, a opravdu 728 00:35:01,340 --> 00:35:02,690 začít zpřísnit kód. 729 00:35:02,690 --> 00:35:06,080 >> A když říkám věci jako dobrém stylu, skutečnost, že se tato osoba nazývá 730 00:35:06,080 --> 00:35:11,490 pracovat na horní, nebo dříve, je nižší je nádherně užitečná, protože 731 00:35:11,490 --> 00:35:12,900 jsou velmi popisné. 732 00:35:12,900 --> 00:35:16,120 Ty by nechtěl volat funkce x a y a z, které mají 733 00:35:16,120 --> 00:35:19,620 mnohem, mnohem menší význam. 734 00:35:19,620 --> 00:35:25,160 Jakékoliv dotazy týkající se této série vylepšení? 735 00:35:25,160 --> 00:35:28,010 >> Takže stačí tedy jeden z takeaways je dokonce jako svůj vlastní problém 736 00:35:28,010 --> 00:35:30,960 set - možná problém nastavit jednu, ale Určitě P nastavit dva a kupředu, dokonce 737 00:35:30,960 --> 00:35:34,380 když jsou správně nemusí nutně znamenat, že jsou perfektní jen 738 00:35:34,380 --> 00:35:36,155 ještě, nebo velmi dobře navržené. 739 00:35:36,155 --> 00:35:38,420 To je další osy začít přemýšlet o tom. 740 00:35:38,420 --> 00:35:41,730 Takže to byl řetězec uvnitř vašeho paměť počítače, ale pokud máte 741 00:35:41,730 --> 00:35:46,180 celá parta postav jako H-E-L-L-O v paměti RAM, a předpokládejme, 742 00:35:46,180 --> 00:35:51,330 které jste v programu volat získat řetězec několikrát taková, že 743 00:35:51,330 --> 00:35:54,200 zavolejte si řetězec jednou, pak zavolejte si řetězec znovu. 744 00:35:54,200 --> 00:35:55,880 No, co se děje na se stalo v průběhu času? 745 00:35:55,880 --> 00:35:59,170 >> Jinými slovy, pokud máte linku kód, i když z kontextu, jako je 746 00:35:59,170 --> 00:36:02,120 string s dostane - 747 00:36:02,120 --> 00:36:02,960 pojďme na to. 748 00:36:02,960 --> 00:36:05,270 String name rovná se řetězec. 749 00:36:05,270 --> 00:36:08,590 Takže předpokládám, že řádek kódu je určena požádat uživatele o jeho nebo její jméno. 750 00:36:08,590 --> 00:36:14,580 Tato další řádek kódu je chtěl zeptat, uživatel pro jeho nebo její školy, a 751 00:36:14,580 --> 00:36:15,920 Tato další řádek, a tak dále. 752 00:36:15,920 --> 00:36:18,150 Předpokládejme, že jsme pořád ptají uživatele pro další a 753 00:36:18,150 --> 00:36:19,750 další a další řetězec. 754 00:36:19,750 --> 00:36:22,390 Chystají se zůstat v paměti ve stejnou dobu. 755 00:36:22,390 --> 00:36:24,280 Jedním z nich je nebude hadry druhé. 756 00:36:24,280 --> 00:36:26,420 Škola je nepřepíše jiný. 757 00:36:26,420 --> 00:36:28,520 Ale kam se všichni skončí v paměti? 758 00:36:28,520 --> 00:36:32,030 >> No, pokud začneme kreslit na obrazovku, které můžeme použít tuto věc 759 00:36:32,030 --> 00:36:35,800 zde jako tabuli, je-li tato černá obdélník představuje můj počítač je 760 00:36:35,800 --> 00:36:39,800 paměť, budu libovolně začít rozdělit ji na malé čtverečky, 761 00:36:39,800 --> 00:36:42,120 z nichž každá reprezentuje jeden bajt paměti. 762 00:36:42,120 --> 00:36:46,560 Upřímně řečeno, pokud máte gigabajty paměti RAM v těchto dnech, máte miliardu bajtů 763 00:36:46,560 --> 00:36:49,540 paměti ve vašem počítači, takže miliarda těchto čtverců. 764 00:36:49,540 --> 00:36:52,110 Takže stačí říct, to ve skutečnosti není v měřítku. 765 00:36:52,110 --> 00:36:58,250 >> Ale my jsme mohli držet čerpání všech těchto zjevně nejsou v měřítku čtverce, a to 766 00:36:58,250 --> 00:37:01,260 souhrnně představuje mé paměti počítače. 767 00:37:01,260 --> 00:37:03,136 Teď budeme prostě tečka, tečka, tečka. 768 00:37:03,136 --> 00:37:06,260 Takže jinými slovy, když jsem teď vyzve Uživatel s get řetězce, aby mi 769 00:37:06,260 --> 00:37:07,350 řetězec, co se stane? 770 00:37:07,350 --> 00:37:14,270 Pokud uživatel zadá "ahoj", která končí v H-E-L-L-O. Ale předpokládejme, že 771 00:37:14,270 --> 00:37:15,720 Uživatel pak druhy uvedené v - 772 00:37:15,720 --> 00:37:17,250 Vlastně bych neměl dělat Dobrý den, protože se ptáme 773 00:37:17,250 --> 00:37:18,330 je jejich názvy. 774 00:37:18,330 --> 00:37:20,580 Tak pojďme zpátky, když to zvládnu. 775 00:37:20,580 --> 00:37:26,130 >> Takže když jsem typ D-A-V-I-D pro mé jméno, ale připomenout, že druhý řádek 776 00:37:26,130 --> 00:37:29,220 Kód byl dostat řetězec znovu získat jejich školu. 777 00:37:29,220 --> 00:37:32,090 Kde je, že slovo, které uživatel druhy uvedené v jít dál? 778 00:37:32,090 --> 00:37:38,290 No, možná to bude jít do H-A-R-V-A-R-D. Takže i když jsem 779 00:37:38,290 --> 00:37:41,560 vypracován jako dvou řadách, je to jen celá parta bytech ve vašem 780 00:37:41,560 --> 00:37:42,710 počítače RAM. 781 00:37:42,710 --> 00:37:46,560 Je tu problém teď, protože teď, když jsem pomocí RAM v tomto velmi rozumné 782 00:37:46,560 --> 00:37:49,910 ale trochu naivní způsobem, co můžete není zřejmě rozlišovat? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Tam, kde jeden začíná a kde jeden konec, ne? 785 00:37:54,680 --> 00:37:55,860 Jsou trochu rozmazání dohromady. 786 00:37:55,860 --> 00:37:57,920 >> Tak to dopadá počítač to nedělá. 787 00:37:57,920 --> 00:38:04,720 Dovolte mi vlastně můžete vrátit v čase a několik znaků a místo Harvardu 788 00:38:04,720 --> 00:38:09,570 bude ihned po uživatelským jménem, uživatel skutečně dostane, za 789 00:38:09,570 --> 00:38:12,000 scény, speciální znak vložil 790 00:38:12,000 --> 00:38:13,885 Počítač pro něj. 791 00:38:13,885 --> 00:38:19,470 / 0, jinak známý jako znak NUL nepříjemně tzv. N-U-L, ne 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, ale píšete to jako / 0. 793 00:38:22,190 --> 00:38:27,130 Je to jen všechny nulových bitů je marker mezi prvním slovem, které uživatele 794 00:38:27,130 --> 00:38:28,290 napsal a druhý. 795 00:38:28,290 --> 00:38:33,020 >> Takže Harvard vlastně teď končí jako je sekvence znaků 796 00:38:33,020 --> 00:38:36,110 a ještě jedna / 0. 797 00:38:36,110 --> 00:38:41,690 Takže jinými slovy, tím, že tyto ověřovací hodnoty, osm sousedící nula 798 00:38:41,690 --> 00:38:45,220 bity, si nyní můžete začít rozlišovat jeden znak z druhého. 799 00:38:45,220 --> 00:38:49,720 Takže celou tu dobu, co bylo "ahoj" je vlastně "ahoj" s / 0, a 800 00:38:49,720 --> 00:38:53,580 Prozatím by se tam velmi dobře být trochu více paměti RAM 801 00:38:53,580 --> 00:38:56,400 uvnitř počítače. 802 00:38:56,400 --> 00:38:57,810 >> Nech mě udělat jednu věc nyní. 803 00:38:57,810 --> 00:39:01,800 Ukazuje se, že všechny z těchto čtverců jsme byli kreslení, jsou, ano, 804 00:39:01,800 --> 00:39:06,140 řetězce, ale obecně, tyto věci jsou pole. 805 00:39:06,140 --> 00:39:10,590 Pole je jen kus paměti to je zády k sobě k sobě k sobě, 806 00:39:10,590 --> 00:39:15,130 a obvykle používají řadu způsobem tohoto hranatá závorka zápisu. 807 00:39:15,130 --> 00:39:18,210 Takže budeme vidět, jak se trochu v průběhu času, ale dovolte mi jít dopředu a 808 00:39:18,210 --> 00:39:21,160 otevřít, řekněme věku. 809 00:39:21,160 --> 00:39:23,920 A všimněte si, co s nimi můžeme dělat tytéž triky, malé 810 00:39:23,920 --> 00:39:25,750 trochu syntaxe zde. 811 00:39:25,750 --> 00:39:29,270 >> Takže v řadě 17 tohoto programu - skutečnosti, dovolte mi, abych nejprve spustit program 812 00:39:29,270 --> 00:39:30,770 a tak můžeme vidět, co tohle dělá. 813 00:39:30,770 --> 00:39:33,530 Zavolám, aby na věky zkompilovat tento program. 814 00:39:33,530 --> 00:39:34,950 . / Stáří. 815 00:39:34,950 --> 00:39:36,480 Kolik lidí je v místnosti? 816 00:39:36,480 --> 00:39:38,020 Nazvěme to tři. 817 00:39:38,020 --> 00:39:39,575 Věk první osobě? 818 00:39:39,575 --> 00:39:42,710 18, 19, a 20. 819 00:39:42,710 --> 00:39:46,770 A teď trochu směšně, já jen udělali program, který ages ty 820 00:39:46,770 --> 00:39:47,740 tři lidé. 821 00:39:47,740 --> 00:39:50,390 >> Takže je tu jasně příležitost pro nějakou zábavu aritmetiky zde. 822 00:39:50,390 --> 00:39:51,560 Naštěstí, matematika je správná. 823 00:39:51,560 --> 00:39:54,720 18 šel do 19, 19 šel do 20 a tak dále. 824 00:39:54,720 --> 00:39:58,510 Ale to, co opravdu znamená být Ilustrativní je, jak jsme ukládání 825 00:39:58,510 --> 00:40:00,190 věk těchto tří lidí. 826 00:40:00,190 --> 00:40:02,370 Dovolte mi přiblížit, co je tady děje. 827 00:40:02,370 --> 00:40:06,240 >> Takže v první řadě, by měly tyto první pár řádků je stále dost známé. 828 00:40:06,240 --> 00:40:08,770 Já jsem jen výzva ke zvolení počet lidí v místnosti. 829 00:40:08,770 --> 00:40:11,490 Pak jsem pomocí dostat int a dělat, když se to znovu a znovu a znovu. 830 00:40:11,490 --> 00:40:15,780 Viděli jsme, že vzor dříve, ale linka 27 je nový a docela 831 00:40:15,780 --> 00:40:18,160 užitečné, a bude se stále užitečné. 832 00:40:18,160 --> 00:40:21,620 Všimněte si, že to, co je v souladu 27 je, že jsem se zdají být prohlášení 833 00:40:21,620 --> 00:40:23,960 int tzv. věky, ale počkejte. 834 00:40:23,960 --> 00:40:27,140 Není to jen int věku. 835 00:40:27,140 --> 00:40:30,130 Tam je tato hranaté závorky, uvnitř které je n. 836 00:40:30,130 --> 00:40:35,150 >> Takže držák n v této souvislosti, nikoliv uvnitř printf prohlášení zde, ale 837 00:40:35,150 --> 00:40:44,370 V této jediné lince 27, tento řádek řekl, dej mi n INT, z nichž každá 838 00:40:44,370 --> 00:40:46,080 je typu int. 839 00:40:46,080 --> 00:40:49,870 Tak to je kbelík, abych tak řekl, z, v tomto případě tři celá čísla zpět do 840 00:40:49,870 --> 00:40:52,770 zády k sobě, takže jsem skutečně má tři proměnné. 841 00:40:52,770 --> 00:40:54,890 Alternativou, aby se jasné, že je to. 842 00:40:54,890 --> 00:40:57,400 >> Pokud bych chtěl nejprve studenta věk, mohl bych to udělat. 843 00:40:57,400 --> 00:40:59,520 Kdybych chtěl druhý studenta věk bych mohl udělat. 844 00:40:59,520 --> 00:41:01,860 Kdybych chtěl třetí studenta věk, mohl bych to udělat. 845 00:41:01,860 --> 00:41:04,320 A nedej bože potřebujeme každého z nás věk v této místnosti - 846 00:41:04,320 --> 00:41:07,670 Myslím, že je to sakra hodně kopie, vložit znovu a znovu a znovu. 847 00:41:07,670 --> 00:41:10,870 A navíc, když jsem zkompilovat tento program, pokud další student chodí přes ven 848 00:41:10,870 --> 00:41:14,200 ze dveří, nyní moje číslo proměnných je nesprávné. 849 00:41:14,200 --> 00:41:17,450 >> Takže to, co je hezké o pole je Jakmile se začnete cítit sami 850 00:41:17,450 --> 00:41:20,190 kopírování a vkládání, je pravděpodobné, že je to není nejlepší přístup. 851 00:41:20,190 --> 00:41:22,240 Pole je dynamická potenciálně. 852 00:41:22,240 --> 00:41:24,610 Nevím dopředu, kolik lidí se bude v místnosti, 853 00:41:24,610 --> 00:41:28,670 ale vím, že musím n z nich, a budu zjistit, n, když přijde čas. 854 00:41:28,670 --> 00:41:35,500 Tento řádek kódu nyní znamená, dej mi kus paměti, která vypadá takto 855 00:41:35,500 --> 00:41:40,380 kde počet schránek na obrazovce je zcela závislá na n které 856 00:41:40,380 --> 00:41:42,010 Uživatel napsal palců 857 00:41:42,010 --> 00:41:44,850 >> Takže teď zbytek tohoto programu je vlastně docela podobné tomu, co jsme 858 00:41:44,850 --> 00:41:46,860 Jen jsem se znaky. 859 00:41:46,860 --> 00:41:49,970 Všimněte si, mám pro smyčce začíná v řádku 30. 860 00:41:49,970 --> 00:41:54,920 Takže hned po jsem si pole, jsem přecházet z y rovná nule až na n. 861 00:41:54,920 --> 00:41:58,890 Jen jsem to poučné printf zprávy jen říkám, dej mi věk 862 00:41:58,890 --> 00:42:03,690 osoby #% i tak číslo jedna, číslo dvě, číslo tři. 863 00:42:03,690 --> 00:42:04,730 A proč jsem to udělal? 864 00:42:04,730 --> 00:42:08,870 Upřímně řečeno, lidé raději počítat od jedné na nahoru, zatímco počítačoví vědci, 865 00:42:08,870 --> 00:42:09,620 nuly nahoru. 866 00:42:09,620 --> 00:42:11,700 počítačoví odborníci nebudou použít tento druh programu, takže jsme 867 00:42:11,700 --> 00:42:13,990 bude jen začít počítat v jednom, jako normální lidi. 868 00:42:13,990 --> 00:42:17,630 >> A nyní v souladu 33, všimnete mírně jiný kus syntaxe. 869 00:42:17,630 --> 00:42:23,710 I-tý věk v té proměnné typu pole dostane int. 870 00:42:23,710 --> 00:42:25,770 A teď konečně, je to jen aritmetický sem. 871 00:42:25,770 --> 00:42:29,200 Rozhodl jsem se v samostatné smyčce tvrdí, nějaký čas ubíhá, a nyní v této 872 00:42:29,200 --> 00:42:31,400 samostatná smyčka, tyto řádky spustit. 873 00:42:31,400 --> 00:42:35,810 >> Ode dneška za rok, člověk i bude i let, ale oznámení není 874 00:42:35,810 --> 00:42:36,500 proměnné i. 875 00:42:36,500 --> 00:42:38,390 To je nyní% i pro int. 876 00:42:38,390 --> 00:42:43,210 A oznámení jako první zástupný symbol, I zapojte i plus 1, takže počítáme jako 877 00:42:43,210 --> 00:42:44,250 normální člověk. 878 00:42:44,250 --> 00:42:49,190 A pak se za hodnotu jejich věku, pro i let, beru ages držák 879 00:42:49,190 --> 00:42:52,980 i - a proč to dělám a jeden tady? 880 00:42:52,980 --> 00:42:53,760 Prostě věku. 881 00:42:53,760 --> 00:42:55,030 Je to moje hloupá volba programů. 882 00:42:55,030 --> 00:42:56,810 Prostě ve věku jednoho roku. 883 00:42:56,810 --> 00:42:59,770 Mohl bych psát v jakékoliv číslo, které Já vlastně chci tam. 884 00:42:59,770 --> 00:43:02,430 >> Takže co to vlastně všechno relevance tady? 885 00:43:02,430 --> 00:43:07,610 No, dovolte mi vlastně listovat sem a namalovat obraz 886 00:43:07,610 --> 00:43:10,830 toho, co leží před námi. 887 00:43:10,830 --> 00:43:15,720 Co budeme dělat s naší další Problém nastavit dva se pustily do 888 00:43:15,720 --> 00:43:17,070 svět kryptografie. 889 00:43:17,070 --> 00:43:22,500 Takže to je řetězec znaků, takže sekvence z více znaků, a to, co 890 00:43:22,500 --> 00:43:23,750 to říká? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Není to v online verzi ze snímků. 893 00:43:30,600 --> 00:43:35,880 >> Takže tvrdím, že to se rovná to, hloupá reklama od mnoha let 894 00:43:35,880 --> 00:43:39,950 před který by mohl vyvolat jeden z jeho původu. 895 00:43:39,950 --> 00:43:42,740 Tak to je příklad šifrování nebo šifrování. 896 00:43:42,740 --> 00:43:46,150 Ukazuje se, že pokud chcete ve skutečnosti poslat informace nebo sdílet 897 00:43:46,150 --> 00:43:49,310 informace s někým bezpečně jako zprávy, jako je tato, můžete 898 00:43:49,310 --> 00:43:50,500 vyškrábat dopisy. 899 00:43:50,500 --> 00:43:53,170 Ale obvykle jsou slova nejsou kódovány náhodně. 900 00:43:53,170 --> 00:43:56,365 Jsou deionizovaná nějakým způsobem nebo změnit nějakým způsobem, aby - oops. 901 00:43:56,365 --> 00:43:59,040 To je zábava spoiler pro příště. 902 00:43:59,040 --> 00:44:04,390 >> Takže si můžete zmapovat, co je zřejmě O všímat B., který seřadí 903 00:44:04,390 --> 00:44:05,420 kapitalizace ručiček. 904 00:44:05,420 --> 00:44:07,960 Zřejmě r e se stane. 905 00:44:07,960 --> 00:44:14,000 Zdá se F-H-E-R se S-U-R-E. Tak Ukazuje se, že je mapování, a 906 00:44:14,000 --> 00:44:18,720 V tomto případě je to dost hloupý mapování, jestli má někdo na to přišel? 907 00:44:18,720 --> 00:44:21,440 To je něco, co nazývá Rot 13, 13 Otočit. 908 00:44:21,440 --> 00:44:24,760 Je to nejhloupější šifrování mechanismy, protože to doslova 909 00:44:24,760 --> 00:44:29,160 přidává 13 na každého z písmen, hloupý v tom smyslu, že pokud jste právě 910 00:44:29,160 --> 00:44:31,890 mít trochu volného času na ruce a tužka, nebo si jen myslím, že 911 00:44:31,890 --> 00:44:35,260 až v hlavě, můžete zkusit všechny možné obrázky - jeden, dva, 912 00:44:35,260 --> 00:44:38,470 tři, tečka, tečka, tečka, jen 25 otočte celou abecedu a 913 00:44:38,470 --> 00:44:40,860 nakonec budete zjistit, co tato zpráva je. 914 00:44:40,860 --> 00:44:43,700 Takže pokud jste něco takového v základní školy předávání zpráv do 915 00:44:43,700 --> 00:44:46,830 nejlepší přítel, pokud vaše základní školy Učitel jen pročíst 916 00:44:46,830 --> 00:44:50,320 zprávy a brutální nuceni řešení, Možná jste dostali 917 00:44:50,320 --> 00:44:52,550 odpověď, že. 918 00:44:52,550 --> 00:44:54,970 >> Teď samozřejmě, v reálném světě, kryptografie je složitější. 919 00:44:54,970 --> 00:45:00,120 To je úryvek textu, který je počítačový systém, který má uživatelské jméno a 920 00:45:00,120 --> 00:45:03,630 hesel, jak téměř všichni z nás dělají, a To je to, co by mohlo vaše heslo 921 00:45:03,630 --> 00:45:07,260 vypadat, pokud je uložen na pevném řídit, ale v zašifrované formě. 922 00:45:07,260 --> 00:45:11,050 To není jen rotace dopisů, Je B a B je C. To je 923 00:45:11,050 --> 00:45:15,620 mnohem sofistikovanější, ale používá co je obecně známé jako tajný klíč 924 00:45:15,620 --> 00:45:16,690 kryptografie. 925 00:45:16,690 --> 00:45:20,210 Tento snímek vypráví následující Příběh s několika ikonami. 926 00:45:20,210 --> 00:45:22,250 >> Na levé straně, máme to, co zavoláme prostý text. 927 00:45:22,250 --> 00:45:25,420 Ve světě kryptografie, prostý Text je původní zprávu 928 00:45:25,420 --> 00:45:29,050 psaný v angličtině nebo francouzštině nebo jazyka vůbec. 929 00:45:29,050 --> 00:45:32,405 Pokud chcete zašifrovat, budeme předávat je obrazově přes visacím zámkem, takže 930 00:45:32,405 --> 00:45:35,580 některé druh algoritmu, některé funkce nebo program, který někdo napsal 931 00:45:35,580 --> 00:45:39,880 že se pere písmena doufejme více komplikovaně než pouhým přidáním 13 932 00:45:39,880 --> 00:45:40,980 ke každému z nich. 933 00:45:40,980 --> 00:45:43,780 >> Co získáte z tohoto procesu, Uprostřed se nazývá cyphertext. 934 00:45:43,780 --> 00:45:44,850 Tak trochu sexy slova. 935 00:45:44,850 --> 00:45:47,630 To jen znamená, že je šifrována verze prostý text. 936 00:45:47,630 --> 00:45:52,570 A pouze pokud máte stejný tajemství, 13 nebo minus 13, jste schopni 937 00:45:52,570 --> 00:45:54,970 dešifrovat zprávy takhle. 938 00:45:54,970 --> 00:45:57,770 >> Takže problém nastavit dva, mezi věcmi, budete dělat, když v Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, budete muset napsat kód bezva tato hesla, přijít na to, 940 00:46:01,860 --> 00:46:05,170 co jsou zač a jak byly zašifrované, ale my vám trochu 941 00:46:05,170 --> 00:46:06,460 z vedení podél cesty. 942 00:46:06,460 --> 00:46:09,320 V Standard Edition, představíme pár šifer, šifrování 943 00:46:09,320 --> 00:46:12,400 mechanismy, jeden s názvem Caesar, jeden volal Vigenere, které jsou stále 944 00:46:12,400 --> 00:46:16,100 rotační šifry, kdy se stane něco, B se stává něčím, ale 945 00:46:16,100 --> 00:46:18,820 musíte to udělat programově protože tam bude skutečně tajná 946 00:46:18,820 --> 00:46:22,840 klíč zúčastněných, z nichž je obvykle číslo nebo klíčové slovo, které pouze 947 00:46:22,840 --> 00:46:26,420 odesílatel a příjemce těchto zprávy by měl pochopit. 948 00:46:26,420 --> 00:46:28,660 >> Nyní, to vlastně má inkarnace v reálném světě. 949 00:46:28,660 --> 00:46:32,910 Toto, například, je málo orphan Annie je tajné dekodér prsten, a 950 00:46:32,910 --> 00:46:35,180 může skutečně realizovat tyto rotační šifry - 951 00:46:35,180 --> 00:46:37,930 Se stává něčím, B se stává něco - s několika koly, 952 00:46:37,930 --> 00:46:40,840 jeden na vnější straně, druhá uvnitř taková, že pokud otočíte kolečkem nebo 953 00:46:40,840 --> 00:46:44,170 kroužek, můžete skutečně zarovnat dopisy s různými písmeny, 954 00:46:44,170 --> 00:46:45,430 získání tajného kódu. 955 00:46:45,430 --> 00:46:48,110 A tak jako cliffhanger pro dnešek, co jsem myslel, že to je trochu 956 00:46:48,110 --> 00:46:52,170 návrat, že pokud zapnete televizi 24. prosince, můžete sledovat 957 00:46:52,170 --> 00:46:55,390 Film ad nauseum pro 24 hodin v řadě. 958 00:46:55,390 --> 00:47:06,030 Ale pro dnešek, otevřu to tady a dá nám jen dvě minuty z 959 00:47:06,030 --> 00:47:13,493 pedagogicky relevantní Vánoční příběh s malým chlapíkem jménem Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [PŘEHRÁVÁNÍ] 961 00:47:14,400 --> 00:47:17,420 >> -Ať už je to známé všem a různé, že Ralph Parker je jmenován 962 00:47:17,420 --> 00:47:20,650 člen Malý sirotek Annie tajemství kruh a je oprávněn ke všem 963 00:47:20,650 --> 00:47:23,460 se ctí a výhody vyskytující se na ně vztahují. 964 00:47:23,460 --> 00:47:25,990 >> -Podepsáno, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Spolupodepsal, Pierre Andre inkoustem. 966 00:47:30,100 --> 00:47:34,270 Vyznamenání a výhody již ve věku devíti let. 967 00:47:34,270 --> 00:47:39,440 >> [Křičel na rozhlasových] 968 00:47:39,440 --> 00:47:40,770 >> Pojď, jdeme na to. 969 00:47:40,770 --> 00:47:44,965 Nepotřebuji All That Jazz o pašeráci a piráti. 970 00:47:44,965 --> 00:47:48,270 >> -Poslouchejte zítra pro uzavření dobrodružství černý 971 00:47:48,270 --> 00:47:49,650 pirátská loď. 972 00:47:49,650 --> 00:47:53,320 Nyní je čas na tajemství Annie Zpráva pro vás členy 973 00:47:53,320 --> 00:47:55,720 tajného kruhu. 974 00:47:55,720 --> 00:47:56,580 Pamatujte si, děti. 975 00:47:56,580 --> 00:48:01,720 Pouze členové Secret Circle Annie umí dekódovat Annie tajnou zprávu. 976 00:48:01,720 --> 00:48:05,872 Pamatujte si, že Annie je závislá na vás. 977 00:48:05,872 --> 00:48:08,670 Nastavit piny B2. 978 00:48:08,670 --> 00:48:11,000 Zde je zpráva. 979 00:48:11,000 --> 00:48:12,335 12., 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Já jsem ve svém prvním tajné schůzce. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre byl ve velké hlasové dnes. 983 00:48:21,650 --> 00:48:24,830 Jsem poznal, že z dnešní zprávy bylo opravdu důležité. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 To je zpráva od Annie sama. 986 00:48:28,540 --> 00:48:30,086 Pamatujte si, že nikomu to neříkejte. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Sekund později jsem v jediné místnosti v domě, kde devítiletý chlapec 989 00:48:38,710 --> 00:48:42,668 mohli sedět v soukromí a dekódování. 990 00:48:42,668 --> 00:48:47,628 Aha, B. jsem šel na další. 991 00:48:47,628 --> 00:48:53,060 E. První slovo je "být." S. Přicházelo to nyní snazší. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 To je R. 994 00:48:55,940 --> 00:48:56,900 >> -No tak, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Musím jít. 996 00:48:57,860 --> 00:48:59,780 >> -Hned jsem dole, mami. 997 00:48:59,780 --> 00:49:01,030 Gee svist. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Ujistěte se, že. 1000 00:49:08,220 --> 00:49:09,500 Ujistěte se, že to, co? 1001 00:49:09,500 --> 00:49:11,660 Jaký byl malý sirotek Annie snaží říct? 1002 00:49:11,660 --> 00:49:12,844 Ujistěte se, že to, co? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy má jít. 1004 00:49:14,732 --> 00:49:16,148 Prosím vás vyjde? 1005 00:49:16,148 --> 00:49:17,092 >> -Dobře, mami. 1006 00:49:17,092 --> 00:49:18,510 Budu hned zpátky. 1007 00:49:18,510 --> 00:49:20,270 >> -Byl jsem stále blíž do současnosti. 1008 00:49:20,270 --> 00:49:21,823 Napětí bylo hrozné. 1009 00:49:21,823 --> 00:49:23,045 Co to bylo? 1010 00:49:23,045 --> 00:49:26,510 Osud planety může visí na vlásku. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, Randyho musím jít. 1012 00:49:28,985 --> 00:49:32,680 >> -Hned jsem ven křičet nahlas. 1013 00:49:32,680 --> 00:49:33,956 >> -Už tam skoro jsme. 1014 00:49:33,956 --> 00:49:35,140 Prsty se mi letěl. 1015 00:49:35,140 --> 00:49:36,880 Moje mysl byla ocelová past. 1016 00:49:36,880 --> 00:49:38,010 Každý pórů vibroval. 1017 00:49:38,010 --> 00:49:39,878 To bylo skoro jasno. 1018 00:49:39,878 --> 00:49:43,210 Ano, ano, ano, ano, ano. 1019 00:49:43,210 --> 00:49:49,030 >> -Ujistěte se, že pít Ovaltine. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 Mizerný reklamu? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Ten hajzl. 1025 00:50:00,694 --> 00:50:01,900 >> [END PŘEHRÁVÁNÍ] 1026 00:50:01,900 --> 00:50:04,260 >> Reproduktor 1: Toto je CS50, a že bude problém nastavit dva. 1027 00:50:04,260 --> 00:50:06,305 Uvidíme se příští týden. 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2: Na dalším CS50, se to stane. 1029 00:50:08,800 --> 00:50:11,060 >> Reproduktor 1: Takže jedno téma, nemáme Podíval se na potud je 1030 00:50:11,060 --> 00:50:12,220 že funkčních ukazatelů. 1031 00:50:12,220 --> 00:50:14,540 Nyní, ukazatel funkce je jen adresu veřejné 1032 00:50:14,540 --> 00:50:17,000 funkce, ale stejně jako - 1033 00:50:17,000 --> 00:50:18,250 syn - 1034 00:50:18,250 --> 00:50:19,670