1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Návod - Problém Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvard University] 3 00:00:05,170 --> 00:00:07,490 [To je CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Dobrá. Ahoj, všichni, a vítejte na Walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 Za prvé, chci ti pogratulovat pro dokončovací PSet 1. 6 00:00:14,330 --> 00:00:18,140 Vím, že by to mohlo být trochu obtížné pro některé z vás, 7 00:00:18,140 --> 00:00:20,460 mohla být vaše první počítačový program, který jsi napsal, 8 00:00:20,460 --> 00:00:24,500 ale jen na paměti, že na konci tohoto, když se podíváte zpět na konci semestru, 9 00:00:24,500 --> 00:00:29,820 budete vypadat na PSet 1 a řekneš: "Hej, jsem mohl udělat, že za 5 minut." 10 00:00:29,820 --> 00:00:35,700 Takže vím, a věřím, že na konci tohoto, budete určitě najdete PSet 1 docela jednoduché. 11 00:00:35,700 --> 00:00:40,640 Ale teď je to obrovský úspěch, a gratuluji k získání práce. 12 00:00:40,640 --> 00:00:44,010 Nyní, i krátká poznámka, než se dostaneme do masa návodu. 13 00:00:44,010 --> 00:00:48,340 Já jen chci, aby se rychle na vědomí, že jsem někdy nebude mít dostatek času 14 00:00:48,340 --> 00:00:52,500 během návody projít každý způsob, jak dělat problému sadu 15 00:00:52,500 --> 00:00:56,140 a spíše jen možná soustředit na 1 nebo 2 druhů implementací, 16 00:00:56,140 --> 00:00:57,750 způsoby, které byste mohli udělat. 17 00:00:57,750 --> 00:01:01,970 Ale to neznamená, že jste zakázáno dělat to jinak. 18 00:01:01,970 --> 00:01:05,980 Tam jsou často, jako u počítačové vědy, četné způsoby, jak dělat věci, 19 00:01:05,980 --> 00:01:12,190 a tak rozhodně neváhejte použít jiný typ řešení, než jsem mohla prezentovat. 20 00:01:12,190 --> 00:01:14,520 [Pset 2: Crypto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. Oddíl otázek - 1. Caesar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Dobrá. Takže problém nastavit 2: Crypto je legrace jeden. 23 00:01:20,650 --> 00:01:24,500 Opět, s každým PSet začnete s částí otázek 24 00:01:24,500 --> 00:01:29,600 že se to provádí ve svých oddílech s účelově výuky kolegy. 25 00:01:29,600 --> 00:01:31,670 Nebudeme chodit přes tyto přes návodu, 26 00:01:31,670 --> 00:01:35,100 ale určitě vám pomohou dokončit PSet. 27 00:01:35,100 --> 00:01:38,100 Takže první část problému souboru je Caesar. 28 00:01:38,100 --> 00:01:43,470 A tak se v Caesar někdo projde vám klíč s integer, 29 00:01:43,470 --> 00:01:48,420 a budete šifrovat řetězec textu, které poskytují vám 30 00:01:48,420 --> 00:01:50,670 a dát je zpět šifrované věc. 31 00:01:50,670 --> 00:01:56,050 Pokud někdo sledoval, A Christmas Story, je tu příklad, že. 32 00:01:56,050 --> 00:01:59,090 Pak druhá část problému sady je Vigenere, 33 00:01:59,090 --> 00:02:01,790 který je více pokročilý šifrovací techniky. 34 00:02:01,790 --> 00:02:05,640 A tak budeme zašifrovat nějaký text, 35 00:02:05,640 --> 00:02:09,600 s výjimkou místo toho se jen jedním celé číslo, my vlastně bude enkódovat 36 00:02:09,600 --> 00:02:13,340 s klíčovým slovem, že uživatel bude poskytovat nás. 37 00:02:16,270 --> 00:02:22,090 Dobře, takže první nástroj v panelu nástrojů je dnes skutečně bude aktualizace zařízení. 38 00:02:22,090 --> 00:02:26,430 Na diskusní vývěsky bychom vidět věci jako, "Proč ne tuto práci?" 39 00:02:26,430 --> 00:02:28,110 "Proč ne Pošlete 50 práci?" 40 00:02:28,110 --> 00:02:31,830 a často řešení je ve skutečnosti jen aktualizovat svůj přístroj. 41 00:02:31,830 --> 00:02:36,730 A tak pokud jste právě běží v okně terminálu ve vašem spotřebiče sudo yum-y - 42 00:02:36,730 --> 00:02:40,040 to vlajka říká ano, aktualizujte všechno - aktualizace, 43 00:02:40,040 --> 00:02:42,280 pak se váš spotřebič bude aktualizovat, pokud nebylo třeba. 44 00:02:42,280 --> 00:02:46,960 A to není na škodu, když jste již na nejnovější verzi spotřebiče. 45 00:02:46,960 --> 00:02:51,280 Pak to bude jen říct, žádné nové aktualizace k dispozici a můžete pokračovat v práci dál. 46 00:02:51,280 --> 00:02:55,800 Ale to je dobré provést ještě při každém otevření spotřebiče 47 00:02:55,800 --> 00:02:57,140 protože jsme stále hodně - 48 00:02:57,140 --> 00:03:00,320 někdy, když jsme přišli do brouka - upevňovací ji do přístroje. 49 00:03:00,320 --> 00:03:03,180 Takže se ujistěte, že máte nejnovější verzi spotřebiče 50 00:03:03,180 --> 00:03:07,710 a spustit, že aktualizaci tam. 51 00:03:07,710 --> 00:03:14,360 Dobrá. Takže od té doby máme co do činění s písmeny a mění, šifrováním věci, 52 00:03:14,360 --> 00:03:20,410 budeme opravdu chtít, aby se stal nejlepší přátelé s naší ASCII tabulky. 53 00:03:20,410 --> 00:03:24,350 Tam jsou četné ty on-line, pokud zjistíte, že. Možná dokonce vytvořit svůj vlastní. 54 00:03:24,350 --> 00:03:29,950 V podstatě, s každým dopisem a každé číslo a každý charakter 55 00:03:29,950 --> 00:03:32,210 je číslo s nimi, 56 00:03:32,210 --> 00:03:38,670 , a tak je dobré, aby jejich hodnoty ASCII vedle skutečného dopisu. 57 00:03:38,670 --> 00:03:42,310 To bude určitě pomůže v problému sadě. 58 00:03:42,310 --> 00:03:45,750 Jedna věc, která mi opravdu pomohlo v tomto problému souboru byl skutečně vytisknout, 59 00:03:45,750 --> 00:03:48,380 a jak jsem se procházel, bych skutečně kreslit na to, 60 00:03:48,380 --> 00:03:51,150 psát, "Pokud to má jít do tam, a pak ..." 61 00:03:51,150 --> 00:03:55,270 Druh čerpat na něj a označit ji, stanou nejlepšími přáteli s Vaší ASCII tabulky. 62 00:03:57,240 --> 00:04:00,750 Pak máme ještě několik dalších nástrojů, které máme k dispozici. 63 00:04:00,750 --> 00:04:03,750 Tentokrát místo skutečně by uživateli zobrazil výzvu pro všechny jejich vstupu 64 00:04:03,750 --> 00:04:05,230 budeme dělat kombinaci. 65 00:04:05,230 --> 00:04:06,880 Budeme výzvu je pro nějaký vstup, 66 00:04:06,880 --> 00:04:11,350 ale my jsme také bude používat jen argumenty příkazového řádku. 67 00:04:11,350 --> 00:04:15,600 Takže když běží svůj program, obvykle říkáte. / Hello, například, 68 00:04:15,600 --> 00:04:17,310 pokud váš program byl hello.c. 69 00:04:17,310 --> 00:04:22,500 Ale tentokrát ne jen říkat, že mohou dát slova, argumenty poté. 70 00:04:22,500 --> 00:04:27,210 A tak budeme používat, co se jim předat k nám jako jejich vstup také, 71 00:04:27,210 --> 00:04:31,720 tak dojemné, než jen výzvou pro celé číslo, ale také pomocí argumentů příkazové řádky. 72 00:04:31,720 --> 00:04:36,590 A pak půjdeme do polí a řetězců, které budeme používat mnoho také. 73 00:04:41,460 --> 00:04:44,810 Zde je jen příklad 1 mini ASCII tabulky. 74 00:04:44,810 --> 00:04:48,460 Jak jsem již řekl, každý dopis odpovídá počtu, 75 00:04:48,460 --> 00:04:52,510 a tak se seznámit s tím. To se bude hodit. 76 00:04:52,510 --> 00:04:55,610 A později, když jsme začít dělat nějaké ASCIIMath zabývající se čísly - 77 00:04:55,610 --> 00:05:00,110 sčítání, odčítání je - pak určitě dobré odkazovat se na tento graf. 78 00:05:02,860 --> 00:05:06,920 Takže tady je příklad kódu Caesar - něco, co jste možná hráli s. 79 00:05:06,920 --> 00:05:11,190 Je to jen kola. V podstatě je vnější abecedy a pak je vnitřní abeceda. 80 00:05:11,190 --> 00:05:15,290 Takže tady je příklad kódu Caesar, ale s klíčem od 0. 81 00:05:15,290 --> 00:05:21,540 V podstatě, je zarovnán s, B je sladěna s B, celou cestu až do Z. 82 00:05:21,540 --> 00:05:26,590 Ale pak, že jsme chtěli klíč 3, například. 83 00:05:26,590 --> 00:05:33,280 Pak bychom otočit vnitřní kolo tak, aby se vyrovnává s D, atd. 84 00:05:33,280 --> 00:05:35,250 A tak je to v podstatě to, co budeme dělat. 85 00:05:35,250 --> 00:05:38,340 Nemáme kola, ale to, co budeme dělat, je, aby náš program 86 00:05:38,340 --> 00:05:44,490 druh posunout abecedu spolu s námi určitou čísel. 87 00:05:44,490 --> 00:05:48,650 Tak jak jsem řekl dříve, budeme se zabývat argumenty příkazového řádku 88 00:05:48,650 --> 00:05:50,390 , jakož i získání celé číslo. 89 00:05:50,390 --> 00:05:55,050 Takže tak, že uživatel bude spusťte Caesar programu je říká. / Caesar 90 00:05:55,050 --> 00:05:58,090 a zadáním čísla za to. 91 00:05:58,090 --> 00:06:01,130 A toto číslo představuje klíč, řazení, 92 00:06:01,130 --> 00:06:06,740 kolikrát budete se otáčením vnitřní kolo vašeho kódu Caesar. 93 00:06:06,740 --> 00:06:08,390 A tak vidíte zde příklad. 94 00:06:08,390 --> 00:06:14,550 Pokud jsme vstoupili do písmen od A do L na našem šifrou Caesar, 95 00:06:14,550 --> 00:06:19,520 pak by vstup D bodem O, protože to je každý dopis posunula 3 krát, 96 00:06:19,520 --> 00:06:22,080 stejně jako na příklad kola, které jsem vám ukázal. 97 00:06:22,080 --> 00:06:25,300 Takže, pokud jste zadali, například, to je CS50! 98 00:06:25,300 --> 00:06:27,960 pak by také přesunout všechna písmena. 99 00:06:27,960 --> 00:06:31,040 A to je důležitá věc, jak Caesar a Vigenère 100 00:06:31,040 --> 00:06:34,890 je to, že budeme přeskočit nějaké non-dopisy. 101 00:06:34,890 --> 00:06:39,160 Takže žádné mezery, znaky, atd., čísla, budeme držet je stejný. 102 00:06:39,160 --> 00:06:42,920 Jsme teprve ve chvíli, posunout písmena v tomto případě. 103 00:06:42,920 --> 00:06:45,870 Takže jak vidíte na kola, máme pouze písmena máme k dispozici, 104 00:06:45,870 --> 00:06:50,150 takže jsme jen chcete posunout písmena a šifrování dopisy. 105 00:06:51,370 --> 00:06:56,720 Takže první věc dělat, jste viděli, že využití pro Caesara v problému nastavení 2 106 00:06:56,720 --> 00:07:05,280 je spustit Caesara a zadejte číslo, pokud jej spustíte v terminálu. 107 00:07:05,280 --> 00:07:10,940 Takže to, co potřebujete udělat, je nějak dostat, že klíč a přístup. 108 00:07:10,940 --> 00:07:14,730 A tak chceme nějak vidět to to bude druhý argument příkazového řádku. 109 00:07:14,730 --> 00:07:20,950 První z nich bude. / Caesar, a příští bude číslo klíče. 110 00:07:22,190 --> 00:07:29,200 Takže než jsme měli int main (void) a proveďte naše C programy. 111 00:07:29,200 --> 00:07:31,790 Budeme Sloupněte vrstvu trochu 112 00:07:31,790 --> 00:07:34,720 a skutečně vidět, že místo toho, aby předávání v prázdnu na naši hlavní funkcí 113 00:07:34,720 --> 00:07:37,920 jsme vlastně zabývá 2 parametry. 114 00:07:37,920 --> 00:07:44,070 Máme int argc názvem a pak pole řetězců nazývá argv. 115 00:07:44,070 --> 00:07:46,030 Takže argc je celé číslo, 116 00:07:46,030 --> 00:07:49,640 a představuje počet argumentů předaných do svého programu. 117 00:07:49,640 --> 00:07:53,590 A pak argv je vlastně seznam předaných argumentů. 118 00:07:53,590 --> 00:08:00,820 Všechny argumenty jsou řetězce, a tak argv představuje pole, seznam, řetězců. 119 00:08:01,830 --> 00:08:03,990 Pojďme se bavit o matice trochu. 120 00:08:03,990 --> 00:08:05,940 Pole jsou v podstatě nová datová struktura. 121 00:08:05,940 --> 00:08:09,660 Máme ints, jsme se zdvojnásobí, máme řetězce a teď máme pole. 122 00:08:09,660 --> 00:08:13,820 Pole jsou datové struktury, které mohou obsahovat více hodnot stejného typu, 123 00:08:13,820 --> 00:08:18,320 Takže v podstatě, seznam, co typ chcete. 124 00:08:18,320 --> 00:08:24,400 V podstatě, pokud jste chtěli seznam celých čísel vše v 1 proměnné, 125 00:08:24,400 --> 00:08:29,090 pak byste vytvořit novou proměnnou, která byla z pole typu int. 126 00:08:29,090 --> 00:08:34,450 Takže pole jsou nulové indexované, což znamená, že první prvek pole je na indexu 0. 127 00:08:34,450 --> 00:08:41,799 Pokud je pole délky 4, jako v tomto příkladu, pak se vaše poslední prvek bude na indexu 3, 128 00:08:41,799 --> 00:08:44,810 který je 4-1. 129 00:08:45,940 --> 00:08:48,420 Takže chcete-li vytvořit pole, byste něco takového. 130 00:08:48,420 --> 00:08:51,440 Řekněme, že jste chtěli dvojí pole. 131 00:08:51,440 --> 00:08:56,520 To platí pro všechny typy datového typu, ačkoli. 132 00:08:56,520 --> 00:09:00,210 Takže říci, chcete dvojí pole. Řekněme, že chcete nazývat schránky. 133 00:09:00,210 --> 00:09:04,760 Stejně jako byste inicializovat jiný dvojníka, 134 00:09:04,760 --> 00:09:09,760 byste řekl double a pak jméno, ale tentokrát jsme dali hranaté závorky, 135 00:09:09,760 --> 00:09:13,570 i pak množství se bude délka pole. 136 00:09:13,570 --> 00:09:16,840 Poznamenejme, že v poli se nemůže nikdy měnit délku, 137 00:09:16,840 --> 00:09:21,230 takže vždy budete mít definovat a zvolit, kolik políček, 138 00:09:21,230 --> 00:09:25,440 kolik hodnot vaše pole bude držet. 139 00:09:25,440 --> 00:09:31,820 Takže nastavit různé hodnoty ve vašem poli, budete používat tento následující syntaxi, 140 00:09:31,820 --> 00:09:33,200 jak vidíte na snímku. 141 00:09:33,200 --> 00:09:37,620 Máte schránka index 0 bude nastavena na 1,2, 142 00:09:37,620 --> 00:09:42,180 schránky index 1 sada na 2,4, atd. 143 00:09:42,180 --> 00:09:47,910 Takže teď, že jsme přezkoumat pole trochu, pojďme zpět k argc a argv. 144 00:09:47,910 --> 00:09:52,220 Víme, že argv je nyní pole řetězců. 145 00:09:52,220 --> 00:09:55,080 Takže když uživatel prochází - říkají, že používáte program - 146 00:09:55,080 --> 00:09:58,740 říkají. / hello David Malan, 147 00:09:58,740 --> 00:10:05,160 Co bude program dělat pro vás již skutečně přijít s tím, co argc a argv je. 148 00:10:05,160 --> 00:10:07,620 Takže si nemusíte dělat starosti, že. 149 00:10:07,620 --> 00:10:14,370 Argc v tomto případě by byla 3, protože to vidí 3 různé slov oddělených mezerami. 150 00:10:14,370 --> 00:10:18,850 A tak pak pole v tomto případě by první index. / Ahoj, 151 00:10:18,850 --> 00:10:21,770 příští David, příští Malan. 152 00:10:21,770 --> 00:10:25,640 Má někdo vidět hned, jaký je vztah mezi argv, 153 00:10:25,640 --> 00:10:28,990  pole, a argc je? 154 00:10:32,820 --> 00:10:38,090 Jo. Dostaneme se do toho v příkladu v args.c. 155 00:10:38,090 --> 00:10:42,880 Pojďme se podívat, jestli se nám podaří využít vztahu mezi 2. 156 00:10:42,880 --> 00:10:46,550 Zde můžete zjistit, že v přístroji výchozí aplikace 157 00:10:46,550 --> 00:10:49,450 na Otevřít. soubory je někdy Emacs. 158 00:10:49,450 --> 00:10:54,660 Ale chceme jednat s gedit, takže to, co můžete udělat, je můžete kliknout pravým tlačítkem na soubor C, 159 00:10:54,660 --> 00:11:04,580 přejít na Vlastnosti, Otevřít, a pak zvolte gedit, Nastavit jako výchozí, 160 00:11:04,580 --> 00:11:13,020 a nyní váš program by měl otevřít v gedit místo Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfect. 162 00:11:17,120 --> 00:11:25,520 Tak tady mám program, který chci vytisknout každý argument příkazového řádku. 163 00:11:25,520 --> 00:11:32,050 Takže bez ohledu na uživatelské vstupy, chci hlavně vrátit zpět k nim na nový řádek. 164 00:11:32,050 --> 00:11:36,710 Takže to, co je struktura, která můžeme použít k iteraci něco - 165 00:11:36,710 --> 00:11:40,380 něco, co jste pravděpodobně zvyklí ve své PSet 1? 166 00:11:40,380 --> 00:11:45,840 Pokud chcete projít nastaveném počtu věcí? >> [Student] Pro smyčky. 167 00:11:45,840 --> 00:11:48,910 Pro smyčky. Přesně tak. Takže začněme s tím, pro smyčce. 168 00:11:48,910 --> 00:11:56,900 Máme pro int i = 0. Pojďme začít s standardní inicializace proměnné. 169 00:11:56,900 --> 00:12:02,370 Chystám se opustit podmínku pro soubor a pak říct, že jsem + +, bude dělat věci tam. 170 00:12:02,370 --> 00:12:04,090 Dobrá. 171 00:12:04,090 --> 00:12:11,590 Tak vzpomínal na argv, pokud argv je seznam argumentů předaných do programu 172 00:12:11,590 --> 00:12:15,380 a argc je počet argumentů v programu, 173 00:12:15,380 --> 00:12:21,280 pak to znamená, že je v podstatě argc délka argv, doprava, 174 00:12:21,280 --> 00:12:28,970 protože se bude co nejvíce argumentů jako hodnotu argc. 175 00:12:28,970 --> 00:12:35,910 Takže pokud chceme iteraci každý element v argv, 176 00:12:35,910 --> 00:12:43,290 budeme chtít pokaždé přístup k proměnné v argv v daném indexu. 177 00:12:43,290 --> 00:12:49,060 To může být reprezentován s tím, že jo? 178 00:12:49,060 --> 00:12:53,430 Tato proměnná zde představuje určitý řetězec v tomto případě 179 00:12:53,430 --> 00:12:57,030 protože je to string array - zejména řetězec v danou indexu. 180 00:12:57,030 --> 00:13:00,690 Co chceme dělat, v tomto případě chceme vytisknout, takže řekněme printf. 181 00:13:00,690 --> 00:13:04,680 A teď argv je řetězec, tak chceme, aby to symbol tam. 182 00:13:04,680 --> 00:13:08,430 Chceme nový řádek jen, aby to vypadalo dobře. 183 00:13:08,430 --> 00:13:12,530 Takže tady máme pro smyčku. Nemáme stav ještě. 184 00:13:12,530 --> 00:13:20,020 Tak jsem začíná na 0, a pak pokaždé, když to bude tisknout daný řetězec 185 00:13:20,020 --> 00:13:22,980 v tomto konkrétním indexu v poli. 186 00:13:22,980 --> 00:13:28,410 Takže když chceme přestat tisknout z prvků v poli? 187 00:13:28,410 --> 00:13:35,720 Když jsme hotovi, ne? Když jsme došli na konec pole. 188 00:13:35,720 --> 00:13:38,870 Takže nechceme překročit kolem délka pole, 189 00:13:38,870 --> 00:13:43,700 a my už víme, že to není nutné, aby skutečně aktivně zjistit, co délka argv je 190 00:13:43,700 --> 00:13:47,520 protože je to stejně na nás, a co je to? Argc. Přesně tak. 191 00:13:47,520 --> 00:13:56,640 Takže chceme dělat tento proces argc několikrát. 192 00:13:56,640 --> 00:13:59,550 Nejsem v pravém adresáři. 193 00:14:02,100 --> 00:14:03,490 Dobrá. 194 00:14:03,490 --> 00:14:08,990 Nyní pojďme udělat args. Žádné chyby, což je skvělé. 195 00:14:08,990 --> 00:14:11,430 Takže pojďme stačí spustit ARGUMENTY. 196 00:14:11,430 --> 00:14:15,130 Co se to bude vracet k nám? Je to jen tak vytisknout ji zpět. 197 00:14:15,130 --> 00:14:18,320 "Ty vloženy ARGUMENTY do programu, já dám ji zpět k vám." 198 00:14:18,320 --> 00:14:23,170 Takže řekněme, že chceme říci ARGUMENTY pak foo bar. 199 00:14:23,170 --> 00:14:26,570 Takže pak se vytiskne ji zpět k nám. Všechno v pořádku? 200 00:14:26,570 --> 00:14:30,790 Takže tam je příkladem toho, jak lze použít argc a argv 201 00:14:30,790 --> 00:14:33,460 vědomí, že argc představuje délku argv. 202 00:14:33,460 --> 00:14:42,750 Ujistěte se, že jste to nikdy s polí přístupem jedna za délku pole 203 00:14:42,750 --> 00:14:45,140 protože C určitě křičet na vás. 204 00:14:45,140 --> 00:14:47,560 Získáte něco jako segmentation fault, 205 00:14:47,560 --> 00:14:52,470 který není nikdy legrace, v podstatě říká, že se snažíte o přístup něco 206 00:14:52,470 --> 00:14:55,000 že neexistuje, nepatří vám. 207 00:14:55,000 --> 00:14:59,430 Takže se ujistěte, a to zejména s nulovou indexování, nechceme, aby - 208 00:14:59,430 --> 00:15:02,390 Jako například, když se mají řadu délky 4, 209 00:15:02,390 --> 00:15:07,240 že index pole 4 neexistuje, protože začínáme na 0, v nulového indexu. 210 00:15:07,240 --> 00:15:11,730 To se stane druhou přirozeností, stejně jako pro vedení, když začneme na 0. 211 00:15:11,730 --> 00:15:13,610 Takže jen na to myslet. 212 00:15:13,610 --> 00:15:22,590 Nechcete, aby někdy přístup index pole, která je mimo váš dosah. 213 00:15:26,710 --> 00:15:32,560 Takže můžeme vidět nyní, jak můžeme druh přístupu 214 00:15:32,560 --> 00:15:35,930 argumenty příkazového řádku, které jsou předány palců 215 00:15:35,930 --> 00:15:41,330 Ale jak jsi viděl řetězec, argv je vlastně řetězec pole. 216 00:15:41,330 --> 00:15:45,740 Takže to vlastně není číslo ještě, ale Caesar chceme zabývat s celými čísly. 217 00:15:45,740 --> 00:15:54,430 Naštěstí, tam je funkce vytvořená pro nás, že může skutečně převést řetězec na celé číslo. 218 00:15:54,430 --> 00:15:58,710 Také tady se nejedná o uživatelského vstupu, kde jsme vybídnout je, 219 00:15:58,710 --> 00:16:03,740 pro vstup zde pro klíč, takže nemůžeme vlastně reprompt a říct, 220 00:16:03,740 --> 00:16:07,840 "Ach, dej mi další celé číslo, tedy pokud to není platné." 221 00:16:07,840 --> 00:16:10,540 Ale my stále potřebujeme zkontrolovat správné použití. 222 00:16:10,540 --> 00:16:13,520 Caesar jsou povoleny pouze projít v 1 řadě, 223 00:16:13,520 --> 00:16:18,030 a proto mají spustit. / Caesar a pak vám dát číslo. 224 00:16:18,030 --> 00:16:23,660 Takže argc musí být určité množství. 225 00:16:23,660 --> 00:16:29,060 Jaké číslo by to mělo být, pokud mají projít Vám. / Caesar a pak klíč? 226 00:16:29,060 --> 00:16:32,920 Co je argc? >> [Student] 2. Dva >>. Přesně tak. 227 00:16:32,920 --> 00:16:35,490 Takže chcete, aby se ujistil, že argc je 2. 228 00:16:35,490 --> 00:16:39,620 Jinak jste v podstatě odmítají spustit program. 229 00:16:39,620 --> 00:16:43,040 V hlavní, že je to funkce, která říká, že int main, 230 00:16:43,040 --> 00:16:47,360 takže pak jsme vždy v dobrém 0 praxi návratu na konci úspěšného programu. 231 00:16:47,360 --> 00:16:50,840 Takže pokud, řekněme, že vám 3 argumenty příkazového řádku místo 2 232 00:16:50,840 --> 00:16:54,350 nebo vám 1, například, pak to, co budete dělat, je budete chtít zkontrolovat, že 233 00:16:54,350 --> 00:16:59,900 a pak se vrátit 1 říká, ne, nemohu pokračovat s tímto programem. 234 00:16:59,900 --> 00:17:03,190 [Student] Nemůže být místa v textu. >> Promiňte? 235 00:17:03,190 --> 00:17:06,780 [Student] Nemůže být prostor v textu, který se snažíte šifrování. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Pokud jde o text, který se snažíme šifrování, které skutečně přijde později 238 00:17:11,280 --> 00:17:13,970 když nám tento text. 239 00:17:13,970 --> 00:17:18,260 Takže teď jsme jen přijímat jako řídicí argumenty skutečný počet, 240 00:17:18,260 --> 00:17:21,579 skutečný posun pro šifrování Caesar. 241 00:17:21,579 --> 00:17:27,569 [Student] Proč potřebujete 2 na rozdíl od pouhých 1 argc? Tam je určitě 1 číslo. 242 00:17:27,569 --> 00:17:32,200 Právo. Důvodem, proč potřebujeme 2 pro argc namísto 1 243 00:17:32,200 --> 00:17:36,260 je, že při spuštění programu a říkat. / caesar nebo. / hello, 244 00:17:36,260 --> 00:17:38,280 skutečně počítá jako argument příkazového řádku. 245 00:17:38,280 --> 00:17:43,020 Takže, že už zabírá 1, a tak pak jsme zadáním 1 přistýlka. 246 00:17:45,030 --> 00:17:49,440 Takže jste vlastně zadání řetězec v argumentu příkazového řádku. 247 00:17:49,440 --> 00:17:52,730 Co chcete udělat, pro Caesara chceme zabývat celé číslo, 248 00:17:52,730 --> 00:17:57,180 takže můžete použít tuto funkci atoi. 249 00:17:57,180 --> 00:18:02,850 A v podstatě, předáte jej v řetězci, a pak se vrátí zpět celé číslo 250 00:18:02,850 --> 00:18:06,070 pokud je to možné, aby se tento řetězec na celé číslo. 251 00:18:06,070 --> 00:18:10,960 Nyní si vzpomenout, kdy máme co do činění s printf nebo GetString, podobné věci, 252 00:18:10,960 --> 00:18:13,390 zahrneme knihovny, které jsou specifické pro nás. 253 00:18:13,390 --> 00:18:19,450 Takže na začátku jsme začít s hash tagem standardní I / O,. H, něco takového. 254 00:18:19,450 --> 00:18:22,430 No, atoi není v jednom z těchto knihoven, 255 00:18:22,430 --> 00:18:26,600 takže to, co musíme udělat, je, že jsme o právo knihovnu za to. 256 00:18:26,600 --> 00:18:32,720 Takže připomenout zpět na Walkthrough 1, kde jsem se jednalo o ruční funkci. 257 00:18:32,720 --> 00:18:37,110 Zadáte muže ve vašem terminálu a pak následuje název funkce. 258 00:18:37,110 --> 00:18:39,720 A tak, aby přinese až celý seznam jeho použití, 259 00:18:39,720 --> 00:18:42,890 ale stejně to bude vychovávat, které knihovna, která patří. 260 00:18:42,890 --> 00:18:47,000 Tak jsem nechám na vás použít manuální funkci atoi 261 00:18:47,000 --> 00:18:53,360 a zjistit, ve které knihovně je třeba zahrnout, aby mohli používat atoi funkci. 262 00:18:54,450 --> 00:18:57,670 Takže máme klíč a teď to přijde k získání prostý text, 263 00:18:57,670 --> 00:19:01,820 a tak, aby skutečně bude vstup uživatele, kde se výzva. 264 00:19:01,820 --> 00:19:05,540 Jsme se zabývali GetInt a GetFloat, a tak ve stejném duchu 265 00:19:05,540 --> 00:19:07,670 budeme jednat s GetString. 266 00:19:07,670 --> 00:19:12,440 Ale v tomto případě nepotřebujeme dělat žádné dělat, zatímco nebo while pro kontrolu. 267 00:19:12,440 --> 00:19:14,480 GetString určitě nám řetězec, 268 00:19:14,480 --> 00:19:17,630 a budeme šifrovat, co uživatel zadá nás. 269 00:19:17,630 --> 00:19:23,770 Takže si můžete předpokládat, že všechny z těchto řetězců uživatelských zadaných jsou správné. 270 00:19:23,770 --> 00:19:24,670 Great. 271 00:19:24,670 --> 00:19:27,270 Takže jakmile máte klíč, a jakmile máte text, 272 00:19:27,270 --> 00:19:31,660 Nyní to, co zbylo, je nutné zašifrovat holý text. 273 00:19:31,660 --> 00:19:36,530 Jen rychle pokrýt více než žargon, holý text je to, co uživatel zadá vám, 274 00:19:36,530 --> 00:19:41,030 a ciphertext je to, co se k nim vracet. 275 00:19:42,450 --> 00:19:45,850 Takže řetězce, aby mohli projít skutečně dopisu dopisem 276 00:19:45,850 --> 00:19:48,550 protože musíme posunout každý dopis, 277 00:19:48,550 --> 00:19:51,390 Chápeme, že řetězce, pokud jsme trochu kůry zadní vrstvy, 278 00:19:51,390 --> 00:19:54,130 vidíme, že jsou opravdu jen seznam znaků. 279 00:19:54,130 --> 00:19:55,930 Jeden přichází po druhé. 280 00:19:55,930 --> 00:20:01,690 A tak můžeme léčit řetězce jako pole, protože jsou pole znaků. 281 00:20:01,690 --> 00:20:05,640 Takže říci, že máte řetězec s názvem text, 282 00:20:05,640 --> 00:20:09,400 av rámci této proměnné text je uložen To je CS50. 283 00:20:09,400 --> 00:20:15,680 Pak textu na indexu 0 by být velké T, by index 1 je h, atd. 284 00:20:17,530 --> 00:20:23,970 A potom s polem, v argc například v args.c, 285 00:20:23,970 --> 00:20:27,090 jsme viděli, že jsme museli iteraci pole 286 00:20:27,090 --> 00:20:32,440 a tak jsme museli přecházet od i = 0 až do i je menší než délka. 287 00:20:32,440 --> 00:20:35,560 Takže potřebujeme nějaký způsob, jak přijít na to, jaká je délka našeho řetězce je 288 00:20:35,560 --> 00:20:37,090 pokud budeme iterovat přes to. 289 00:20:37,090 --> 00:20:42,300 Naštěstí znovu, tam je funkce tam pro nás, i když později v CS50 290 00:20:42,300 --> 00:20:45,860 budete určitě schopni realizovat a vyrobit si vlastní funkci 291 00:20:45,860 --> 00:20:48,260 které mohou vypočítat délku řetězce. 292 00:20:48,260 --> 00:20:52,120 Ale pro teď budeme používat délku řetězce, takže strlen. 293 00:20:52,120 --> 00:21:00,440 Předáte v řetězci, a pak se vrátí vám int představující délku vašeho řetězce. 294 00:21:00,440 --> 00:21:05,840 Pojďme se podívat na příklad, jak bychom mohli být schopni iteraci každý znak v řetězci 295 00:21:05,840 --> 00:21:08,470 a udělat něco s tím. 296 00:21:08,470 --> 00:21:13,250 To, co chci udělat, je iteraci každý znak řetězce, 297 00:21:13,250 --> 00:21:19,150 a to, co chceme udělat, je, že jsme tisk zpět každý znak 1 od 1 298 00:21:19,150 --> 00:21:22,060 kromě přidáme něco vedle ní. 299 00:21:22,060 --> 00:21:27,020 Takže začněme s tím, pro smyčce. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Budeme ponechat prostor pro stav. 301 00:21:32,700 --> 00:21:36,840 Chceme opakovat, než se dostaneme na konec řetězce, ne? 302 00:21:36,840 --> 00:21:41,340 Tak co funkce nám dává délku řetězce? 303 00:21:41,340 --> 00:21:43,160 [Neslyšitelné Student odpověď] 304 00:21:43,160 --> 00:21:46,420 To je délka argumentů příkazového řádku. 305 00:21:46,420 --> 00:21:50,650 Ale pro řetězec chceme používat funkce, které nám dává délku řetězce. 306 00:21:50,650 --> 00:21:53,090 Tak to je délka řetězce. 307 00:21:53,090 --> 00:21:57,130 A pak se budete muset projít v řetězci k ní. 308 00:21:57,130 --> 00:21:59,760 Je třeba vědět, co řetězec je potřeba vypočítat délku. 309 00:21:59,760 --> 00:22:03,160 Takže v tomto případě máme co do činění s string s. 310 00:22:04,790 --> 00:22:05,860 Great. 311 00:22:05,860 --> 00:22:10,770 Takže to, co chceme dělat, pojďme printf. 312 00:22:10,770 --> 00:22:14,850 Nyní, chceme jednat s postavami. Chceme vytisknout každý individuální charakter. 313 00:22:14,850 --> 00:22:22,150 Pokud chcete, aby vytisknout float, měli byste použít zástupný symbol jako% f. 314 00:22:22,150 --> 00:22:24,580 S int, měli byste použít% d. 315 00:22:24,580 --> 00:22:30,890 A tak podobně, s charakterem použít% c říct, že jsem bude tisk znaku 316 00:22:30,890 --> 00:22:34,570 , který je uložen uvnitř proměnné. 317 00:22:34,570 --> 00:22:40,840 Takže máme tohle, a dodejme období a prostor k němu. 318 00:22:40,840 --> 00:22:45,430 Znak, který jsme používáte? 319 00:22:45,430 --> 00:22:49,780 Budeme používat bez ohledu na charakter jsme na řetězce. 320 00:22:49,780 --> 00:22:52,890 Takže budeme používat něco s řetězci, 321 00:22:52,890 --> 00:22:56,420 ale chceme, aby se přístup k určité znak tam. 322 00:22:56,420 --> 00:23:02,740 Takže pokud řetězec je jen pole, tak jak máme přistupovat prvky polí? 323 00:23:02,740 --> 00:23:06,480 Máme ty hranaté závorky, a pak jsme dali index tam. 324 00:23:06,480 --> 00:23:11,820 Takže máme hranatých závorek. Naše index v tomto případě stačí používat i. Přesně tak. 325 00:23:15,290 --> 00:23:22,370 Takže tady říkáme my bude tisknout znak následovaný tečkou a mezerou, 326 00:23:22,370 --> 00:23:30,870 a tento znak bude i-tý dopis v našem řetězce s. 327 00:23:32,920 --> 00:23:39,330 Já jsem prostě jít tou výjimkou, že. Dobře. 328 00:23:42,510 --> 00:23:46,840 Teď budu běžet délku řetězce. 329 00:23:46,840 --> 00:23:53,440 Takže jsme měli řetězec s názvem OMG, a teď je to ještě více zdůraznil. 330 00:23:53,440 --> 00:23:57,870 Podobně, řekněme, že skutečně chtějí dostat řetězec od uživatele. 331 00:23:57,870 --> 00:23:59,580 Jak můžeme udělat? 332 00:23:59,580 --> 00:24:01,610 Před, jak se dostaneme int? 333 00:24:01,610 --> 00:24:08,040 Řekli jsme, že GetInt, že jo? Ale to není int, tak se pojďme GetString. 334 00:24:11,780 --> 00:24:17,770 Pojďme udělat délku řetězce. Zde jsme nezadali konkrétní výzvy. 335 00:24:17,770 --> 00:24:19,940 Tak já nevím. 336 00:24:19,940 --> 00:24:23,820 Chystám se dát své jméno sem, a tak pak to můžu dělat jednu z těch věcí 337 00:24:23,820 --> 00:24:29,600 kde jsem přiřadit slovo pro každé písmeno nebo něco takového. Cool. 338 00:24:29,600 --> 00:24:31,900 Tak to je délka řetězce. 339 00:24:33,000 --> 00:24:34,640 Takže jsme zpátky k Caesarovi. 340 00:24:34,640 --> 00:24:38,620 Máme několik nástrojů, jak bychom iteraci řetězec, 341 00:24:38,620 --> 00:24:41,250 jak jsme přístup každého jednotlivého prvku. 342 00:24:41,250 --> 00:24:44,720 Takže teď se můžeme dostat zpět do programu. 343 00:24:44,720 --> 00:24:48,650 Jak jsem již zmínil dříve, v ASCII tabulce, váš nejlepší přítel, 344 00:24:48,650 --> 00:24:52,300 budete vidět čísla, které jsou spojeny s každým písmenem. 345 00:24:52,300 --> 00:24:55,900 Tak tady že naše holý je, že jsem závrať! 346 00:24:55,900 --> 00:25:01,090 Pak každý z těchto znaků bude mít číslo a ASCII hodnotu s ním spojené, 347 00:25:01,090 --> 00:25:04,710 i apostrof, dokonce i prostor, i vykřičník, 348 00:25:04,710 --> 00:25:06,600 takže budete chtít mít na paměti. 349 00:25:06,600 --> 00:25:12,360 Takže říci, náš klíč, který uživatel zahrnuty do jejich argument příkazového řádku je 6. 350 00:25:12,360 --> 00:25:17,770 To znamená, že na první písmeno, které je I, která je reprezentována 73, 351 00:25:17,770 --> 00:25:25,610 Chcete-li se vrátit k nim bez ohledu na písmeno je reprezentováno ASCII hodnotou 73 + 6. 352 00:25:25,610 --> 00:25:29,020 V tomto případě, že by bylo 79. 353 00:25:30,840 --> 00:25:35,040 Teď chceme jít na další znak. 354 00:25:35,040 --> 00:25:40,960 Takže další v indexu 1 holého textu bude apostrof. 355 00:25:40,960 --> 00:25:46,780 Ale pamatujte si, my jen chceme zašifrovat dopisy. 356 00:25:46,780 --> 00:25:50,040 Takže chceme, aby se ujistil, že apostrof skutečně zůstává stejná, 357 00:25:50,040 --> 00:25:54,310 že se nemění od 39 do čehokoli 45 je. 358 00:25:54,310 --> 00:25:57,150 Chceme, aby to jako apostrof. 359 00:25:57,150 --> 00:26:00,780 Takže chceme pamatovat pouze zašifrovat písmena 360 00:26:00,780 --> 00:26:04,560 proto, že chceme všechny ostatní symboly se nezmění v našem programu. 361 00:26:04,560 --> 00:26:07,130 Další věc, která chceme, je zachovat písmen. 362 00:26:07,130 --> 00:26:10,250 Takže když máte velké písmeno, mělo by zůstat jako velká. 363 00:26:10,250 --> 00:26:12,830 Lowercasuje by měla zůstat jako malá písmena. 364 00:26:13,620 --> 00:26:19,480 Takže některé užitečné funkce, které byly schopny se vyrovnat pouze s šifrováním dopisy 365 00:26:19,480 --> 00:26:22,380 a udržet zachování kapitalizaci věcí 366 00:26:22,380 --> 00:26:25,130 je isalpha, isupper, islower funkce. 367 00:26:25,130 --> 00:26:29,270 A tak to jsou funkce, které vracejí vám booleovskou hodnotu. 368 00:26:29,270 --> 00:26:34,180 V podstatě, true nebo false. Je to velká? Je to alfanumerický? 369 00:26:34,180 --> 00:26:37,180 Je to dopis, v podstatě. 370 00:26:37,180 --> 00:26:41,070 Takže zde jsou 3 příklady, jak byste použít tuto funkci. 371 00:26:41,070 --> 00:26:47,060 V podstatě, můžete otestovat, zda hodnota vrácená pro Vás tuto funkci je pravdivé nebo nepravdivé 372 00:26:47,060 --> 00:26:49,400 na základě tohoto vstupu. 373 00:26:49,400 --> 00:26:54,880 Buď nemají zašifrovat něco nebo šifrovaných, nebo se ujistěte, že je to velká, atd. 374 00:26:54,880 --> 00:27:01,080 [Student] Mohl bys vysvětlit, ty trochu víc a jak je používat? Jo >>, pro jistotu. 375 00:27:01,080 --> 00:27:08,470 Takže když se podíváme zpátky, tady máme kapitál I, P? 376 00:27:08,470 --> 00:27:14,550 Takže víme, že jsem dostal O, protože jsem + 6 je O. 377 00:27:14,550 --> 00:27:18,740 Ale my chceme, aby se ujistil, že O bude kapitál O. 378 00:27:18,740 --> 00:27:22,940 Takže v podstatě, že je tak trochu změní naše vstup. 379 00:27:22,940 --> 00:27:26,870 Takže ať už je to velká, nebo ne vůle druh změnit tak, že jsme jí zabývat. 380 00:27:26,870 --> 00:27:32,360 Takže pokud budeme používat isupper funkce na daném indexu, 381 00:27:32,360 --> 00:27:36,480 tak isupper ("I"), která vrátí pro nás skutečné, takže víme, že je to horní. 382 00:27:36,480 --> 00:27:40,360 Takže na základě toho, později půjdeme do vzorce 383 00:27:40,360 --> 00:27:42,750 že budete používat k posunu věci Caesar, 384 00:27:42,750 --> 00:27:46,560 takže pak v podstatě, že to bude mírně lišit vzorec, pokud je to velká 385 00:27:46,560 --> 00:27:50,670 jak protichůdný na malá písmena. Smysl? 386 00:27:51,020 --> 00:27:52,760 Jo. Žádné starosti. 387 00:27:54,900 --> 00:27:58,990 Mluvil jsem trochu o přidání 6 na dopis, který není úplně smysl 388 00:27:58,990 --> 00:28:05,500 kromě případů, kdy jsme trochu pochopili, že tyto znaky 389 00:28:05,500 --> 00:28:08,920 jsou trochu zaměnitelné s celými čísly. 390 00:28:08,920 --> 00:28:11,250 Co děláme je, že jsme způsob použití implicitní odlitku. 391 00:28:11,250 --> 00:28:18,100 Půjdeme do licí trochu později, kde budete mít hodnotu a dáte ho do jiného typu 392 00:28:18,100 --> 00:28:20,440 než byl původně. 393 00:28:20,440 --> 00:28:25,910 Ale s tímto PSet budeme moci trochu zaměnitelně používají znaky 394 00:28:25,910 --> 00:28:30,880 a jejich odpovídající celočíselné hodnoty. 395 00:28:30,880 --> 00:28:35,140 Takže pokud si prostě obalit postavu jen s apostrofy, 396 00:28:35,140 --> 00:28:40,390 pak budete moci pracovat s ním s celými čísly, vyrovnat se s ní jako celé číslo. 397 00:28:40,390 --> 00:28:48,040 Takže kapitál C se vztahuje k 67. Malá f se týká 102. 398 00:28:48,040 --> 00:28:51,480 Opět platí, že pokud chcete znát tyto hodnoty, podívejte se na ASCII tabulky. 399 00:28:51,480 --> 00:28:56,160 Tak pojďme do některých příkladů, jak byste mohli být schopni odečíst a přidat, 400 00:28:56,160 --> 00:29:03,130 jak můžete vlastně opravdu pracovat s těmito znaky, používat zaměnitelně. 401 00:29:03,870 --> 00:29:11,350 Já říkám, že ASCIIMath bude výpočet přidání znaku na celé číslo 402 00:29:11,350 --> 00:29:17,590 a potom zobrazí výsledný charakter, stejně jako výsledné ASCII hodnotu. 403 00:29:17,590 --> 00:29:22,290 A tak tady říkám - Dáme se zabývají touto částí později - 404 00:29:22,290 --> 00:29:29,100 ale v podstatě, já jsem řekl, že uživatel by měl říci, běžet ASCIIMath spolu s klíčem, 405 00:29:29,100 --> 00:29:30,880 a já říkám, že ten klíč bude číslo 406 00:29:30,880 --> 00:29:34,600 s nimiž budeme přidávat tento znak. 407 00:29:34,600 --> 00:29:38,560 Tak tady si všimnout, že od té doby jsem náročný klíč, 408 00:29:38,560 --> 00:29:40,590 protože jsem požadoval, aby Dáváš mi 1 věc, 409 00:29:40,590 --> 00:29:45,600 Chci jen přijmout. / Asciimath a klíč. 410 00:29:45,600 --> 00:29:49,330 Takže budu požadovat, aby argc je roven 2. 411 00:29:49,330 --> 00:29:54,360 Pokud tomu tak není, pak budu vracet 1 a program se ukončí. 412 00:29:55,070 --> 00:29:58,540 Takže říkám, není klíč bude první argument na příkazové řádce, 413 00:29:58,540 --> 00:30:05,080 to bude druhý, a jak vidíte zde, 414 00:30:05,080 --> 00:30:11,790 Budu se to mělo změnit na celé číslo. 415 00:30:15,740 --> 00:30:19,230 Pak jdu nastavit znak být r. 416 00:30:19,230 --> 00:30:23,970 Všimněte si, že typ proměnné CHR je vlastně číslo. 417 00:30:23,970 --> 00:30:30,480 Způsob, jakým jsem mohl použít r jako celé číslo je ohraničením s těmito jednoduchými uvozovkami. 418 00:30:33,850 --> 00:30:40,560 Takže zpět k našemu printf prohlášení, kde máme vyhrazené místo pro znak 419 00:30:40,560 --> 00:30:43,590 a pak zástupný symbol pro celé číslo, 420 00:30:43,590 --> 00:30:49,450 charakter je reprezentován chr, a celé číslo je klíč. 421 00:30:49,450 --> 00:30:54,320 A pak se budeme ve výsledku přidat 2 spolu. 422 00:30:54,320 --> 00:30:58,420 Takže budeme přidávat r + bez ohledu na klíč, 423 00:30:58,420 --> 00:31:03,520 a pak budeme tisknout výsledek, který. 424 00:31:06,210 --> 00:31:14,220 Takže pojďme se asciimath. Je to aktuální, tak se pojďme stačí spustit asciimath. 425 00:31:14,220 --> 00:31:18,290 Oh, ale vidět, že nedělá nic, protože jsme neměli vlastně dát klíč. 426 00:31:18,290 --> 00:31:23,850 Takže když jsem se právě vrátil 1, naším hlavním funkce, to se právě vrátil zpět k nám. 427 00:31:23,850 --> 00:31:29,250 Takže pojďme projít v klíči. Někdo mi číslo. >> [Student] 4. 428 00:31:29,250 --> 00:31:30,920 4. Dobře. 429 00:31:30,920 --> 00:31:39,280 Takže r zvýšil o 4 bude nám v, která odpovídá ASCII hodnotu 118. 430 00:31:39,280 --> 00:31:43,880 Takže pak to trochu dává smysl, že - 431 00:31:43,880 --> 00:31:51,250 Vlastně, můžu se vás zeptat, co si myslíte, že ASCII hodnota r, je-li r + 4 je 118? 432 00:31:53,070 --> 00:31:55,470 Tak jo, r je 114. 433 00:31:55,470 --> 00:32:03,010 Takže, když se podíváte na ASCII tabulky a pak je nepochybné, že uvidíte, že r je zastoupena 114. 434 00:32:03,010 --> 00:32:08,610 Takže teď víme, že můžeme přidat celá čísla znaků, se to zdá docela jednoduché. 435 00:32:08,610 --> 00:32:12,740 Jsme jen tak iteraci řetězec, jako jsme viděli na příkladu před. 436 00:32:12,740 --> 00:32:17,170 Podíváme se, jestli je to dopis. 437 00:32:17,170 --> 00:32:20,420 Pokud je, pak budeme posouvat ji bez ohledu na klíč. 438 00:32:20,420 --> 00:32:23,650 Docela jednoduché, kromě případů, kdy se dostanete do takhle, 439 00:32:23,650 --> 00:32:32,140 zjistíte, že z, zastoupené 122, by pak vám jiný charakter. 440 00:32:32,140 --> 00:32:37,770 My vlastně chceme, aby zůstali v naší abecedy, ne? 441 00:32:37,770 --> 00:32:43,180 Takže musíme přijít na to, nějaký způsob, jak druhu obalu kolem. 442 00:32:43,180 --> 00:32:47,190 Když se dostanete zed a chcete zvýšit o určitý počet, 443 00:32:47,190 --> 00:32:51,230 nechcete jít do za ASCII abecedy části; 444 00:32:51,230 --> 00:32:54,140 Chcete zabalit zpět celou cestu do A. 445 00:32:54,140 --> 00:32:58,550 Ale mějte na paměti, že stále zachovat věc. 446 00:32:58,550 --> 00:33:00,980 Tak s vědomím, že dopisy se nemůže stát symboly 447 00:33:00,980 --> 00:33:05,290 stejně jako symboly se nebude měnit také. 448 00:33:05,290 --> 00:33:08,170 V posledním PSet určitě nemusel, 449 00:33:08,170 --> 00:33:14,310 ale volba byla pro implementaci chamtivý PSet pomocí modul funkce. 450 00:33:14,310 --> 00:33:17,230 Ale teď jsme vlastně bude muset použít modul, 451 00:33:17,230 --> 00:33:19,900 takže pojďme na to trochu. 452 00:33:19,900 --> 00:33:26,920 V podstatě, když máte x modulo y, který vám dává zbytek x děleno y. 453 00:33:26,920 --> 00:33:30,930 Zde jsou některé příklady zde. Máme 27% 15. 454 00:33:30,930 --> 00:33:36,200 V podstatě, když si odečíst 15 z 27 tolikrát, kolikrát je to možné, aniž by se negativní 455 00:33:36,200 --> 00:33:39,060 pak dostanete 12 zbyly. 456 00:33:39,060 --> 00:33:44,650 Takže to je něco jako v matematickém kontextu, ale jak můžeme vlastně použít? 457 00:33:44,650 --> 00:33:47,100 Bude to být užitečné pro naši wrapover. 458 00:33:47,100 --> 00:33:55,420 Pro tento, řekněme, že jsem vás požádal, abyste všichni rozdělit do 3 skupin. 459 00:33:55,420 --> 00:33:58,010 Někdy se to ve skupinách a něco podobného. 460 00:33:58,010 --> 00:34:01,320 Řekněme, že jsem řekl: "Dobře, chci vám všem být rozdělena do 3." 461 00:34:01,320 --> 00:34:04,240 Jak byste mohli udělat, že? 462 00:34:04,240 --> 00:34:06,810 [Neslyšitelné Student odpověď] Jo, přesně tak. Odpočítat. Dobře. 463 00:34:06,810 --> 00:34:10,260 Pojďme vlastně dělat, že. Chcete začít? 464 00:34:10,260 --> 00:34:13,810 [Studenti počítání mimo] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Ale pamatujte si ... >> [Student] Oh, promiň. 466 00:34:16,620 --> 00:34:18,730 To je opravdu dobrá připomínka. 467 00:34:18,730 --> 00:34:24,130 Říkal jste, že 4, ale vlastně chceme vám říct, 1, protože chceme pouze 3 skupiny. 468 00:34:24,130 --> 00:34:30,159 Takže, jak - Ne, to je opravdu dobrý příklad, protože pak, jak můžete říct, 1? 469 00:34:30,159 --> 00:34:33,370 Jaký je vztah mezi 4 a 1? 470 00:34:33,370 --> 00:34:36,760 No, 4 mod 3 je 1. 471 00:34:36,760 --> 00:34:41,460 Takže pokud budete pokračovat, měli byste být 2. 472 00:34:41,460 --> 00:34:44,540 Takže máme 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Opět, jste vlastně 5. osoba. Jak víte, říct 2 místo 5? 474 00:34:49,420 --> 00:34:53,760 Říkáte, že 5 mod 3 je 2. 475 00:34:53,760 --> 00:34:59,100 Chci vidět, kolik skupiny 3 ar zbylo, pak jakém pořadí am I. 476 00:34:59,100 --> 00:35:02,860 A pak se, pokud jsme pokračovali podél celé místnosti, 477 00:35:02,860 --> 00:35:07,760 pak bychom viděli, že jsme vždy skutečně používaných mod funkci pro sebe 478 00:35:07,760 --> 00:35:09,990 na druh odpočítat. 479 00:35:09,990 --> 00:35:14,490 To je více druhů hmotného příkladem toho, jak můžete použít modulo 480 00:35:14,490 --> 00:35:17,960 protože jsem si jistý, že většina z nás pravděpodobně prošel tímto procesem 481 00:35:17,960 --> 00:35:19,630 kde jsme museli odpočítat. 482 00:35:19,630 --> 00:35:21,840 Jakékoliv dotazy týkající se modulo? 483 00:35:21,840 --> 00:35:25,360 To bude dost důležité pochopit koncepty tohoto, 484 00:35:25,360 --> 00:35:28,640 tak chci, aby se ujistil jste pochopili. 485 00:35:28,640 --> 00:35:34,660 [Student] Není-li zbytek, to vám aktuální číslo? 486 00:35:34,660 --> 00:35:40,430 Pokud jeden z prvních 3 z nich to udělal, bylo by to stejně jim, co vlastně byl, 487 00:35:40,430 --> 00:35:43,310 nebo by to být stejně jim [neslyšitelné] >> To je dobrá otázka. 488 00:35:43,310 --> 00:35:48,750 Není-li zbytek na modulo - tak, že máte 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 že vlastně dává zpátky 0. 490 00:35:53,670 --> 00:35:57,290 Budeme mluvit o tom, že o něco později. 491 00:35:58,810 --> 00:36:07,720 Ach jo, například, 3rd person - 3 mod 3 je vlastně 0, ale řekla 3. 492 00:36:07,720 --> 00:36:14,900 Takže je to něco jako vnitřní úlovek, například, 493 00:36:14,900 --> 00:36:17,620 jako v pořádku, pokud mod je 0 pak budu mít 3rd person. 494 00:36:17,620 --> 00:36:22,740 Ale dostaneme do druhu, jak bychom mohli chtít jednat s těmi, 0 je později. 495 00:36:22,740 --> 00:36:32,750 Takže teď jsme si nějak mají způsob, jak mapuje zed na správném dopisu. 496 00:36:32,750 --> 00:36:34,920 Takže teď jsme prošli těchto příkladech, 497 00:36:34,920 --> 00:36:37,880 jsme trochu vidět, jak Caesar by mohlo fungovat. 498 00:36:37,880 --> 00:36:42,640 Vidíte 2 abecedy a pak si na ně podívat řazení. 499 00:36:42,640 --> 00:36:44,430 Tak pojďme zkusit a vyjádřit, že pokud jde o vzorce. 500 00:36:44,430 --> 00:36:46,940 Tento vzorec je vlastně podává do spec, 501 00:36:46,940 --> 00:36:52,070 ale pojďme trochu podívat skrze to, co každá proměnná znamená. 502 00:36:52,070 --> 00:36:55,000 Naše konečný výsledek bude ciphertext. 503 00:36:55,000 --> 00:36:58,300 Tak to říká, že i-tý charakter ciphertext 504 00:36:58,300 --> 00:37:02,500 bude odpovídat té charakteru textu. 505 00:37:02,500 --> 00:37:08,130 To dává smysl, protože chceme, aby vždy čekají tyto věci. 506 00:37:08,130 --> 00:37:13,480 Takže to bude tého charakter šifrového plus K, která je naším hlavním - 507 00:37:13,480 --> 00:37:17,230 to dává smysl - a pak jsme tento mod 26. 508 00:37:17,230 --> 00:37:19,860 Vzpomínám si, když jsme měli zed 509 00:37:19,860 --> 00:37:24,190 Nechtěli jsme se dostat do charakteru, tak jsme chtěli mod to 510 00:37:24,190 --> 00:37:26,540 a druh obalu kolem abecedy. 511 00:37:26,540 --> 00:37:33,430 Po zed byste jít, b, c, d, dokud jste se dostali na správné číslo. 512 00:37:33,430 --> 00:37:44,690 Takže víme, že zet, pokud + 6, by nám f, protože po zet přichází, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Tak vzpomeňme víme jistě, že zed + 6 se bude dát nám f. 514 00:37:52,530 --> 00:38:03,530 V ASCII hodnot, z je 122 a f je 102. 515 00:38:03,530 --> 00:38:10,570 Takže musíme najít nějaký způsob, jak dělat svou Caesar vzorec nám 102 516 00:38:10,570 --> 00:38:13,590 poté, co vzal v 122. 517 00:38:13,590 --> 00:38:19,550 Takže když jsme stačí použít tento vzorec, ('z' + 6)% 26, které vlastně dává vám 24 518 00:38:19,550 --> 00:38:25,980 protože 122 + 6 je 128, 128% 26 vám dává 24 zbytek. 519 00:38:25,980 --> 00:38:29,140 Ale to není opravdu neznamená f. To rozhodně není 102. 520 00:38:29,140 --> 00:38:33,590 To také není 6. písmeno v abecedě. 521 00:38:33,590 --> 00:38:41,550 Tak samozřejmě, musíme mít nějaký způsob, jak štípat to trochu. 522 00:38:42,970 --> 00:38:51,340 Pokud jde o pravidelné abecedy, víme, že z je 26. písmeno a f je 6.. 523 00:38:51,340 --> 00:38:55,460 Ale my jsme v informatice, takže budeme indexem 0. 524 00:38:55,460 --> 00:39:00,690 Takže místo toho, aby z je počet 26, budeme říkat, že je to číslo 25 525 00:39:00,690 --> 00:39:02,630 protože je 0. 526 00:39:02,630 --> 00:39:04,770 Tak teď pojďme použít tento vzorec. 527 00:39:04,770 --> 00:39:11,710 Máme z zastoupená 25 + 6, která vám dává 31. 528 00:39:11,710 --> 00:39:15,790 A 31 mod 26 vám dává 5 jako zbytek. 529 00:39:15,790 --> 00:39:20,500 To je ideální, protože víme, že f je 5. písmeno v abecedě. 530 00:39:20,500 --> 00:39:26,400 Ale to ještě není f, P? To ještě není 102. 531 00:39:26,400 --> 00:39:32,730 Takže pro tuto PSet, bude úkolem se snaží zjistit vztah 532 00:39:32,730 --> 00:39:36,910 mezi konverze mezi těmito ASCII hodnotami a abecední rejstřík. 533 00:39:36,910 --> 00:39:40,280 V podstatě to, co budete chtít dělat, chcete začít s ASCII hodnotami, 534 00:39:40,280 --> 00:39:45,390 ale pak chcete nějak přeložit do indexu abecedy 535 00:39:45,390 --> 00:39:52,610 pak vypočítat, jaké písmeno by mělo být - v podstatě, co jeho abecední index je 536 00:39:52,610 --> 00:39:57,660 z šifry charakteru - a pak překládat, že zpět do ASCII hodnoty. 537 00:39:57,660 --> 00:40:04,870 Takže pokud jste vytasit svůj ASCII tabulku, zkuste a najít vztahy mezi, řekněme, 102 a 5 538 00:40:04,870 --> 00:40:10,440 nebo 122 a 25. 539 00:40:12,140 --> 00:40:15,690 Dostali jsme náš klíč od argumentů příkazového řádku, jsme dostali holý text, 540 00:40:15,690 --> 00:40:17,520 jsme zašifrován to. 541 00:40:17,520 --> 00:40:19,820 Nyní vše, co zbývá udělat, je vytisknout. 542 00:40:19,820 --> 00:40:22,040 Mohli bychom to několik různých způsobů. 543 00:40:22,040 --> 00:40:24,570 To, co jsme mohli udělat, je skutečně vytisknout, jak jsme jít dál. 544 00:40:24,570 --> 00:40:28,250 Jak jsme iteraci znaky v řetězci, 545 00:40:28,250 --> 00:40:31,660 bychom mohli prostě jen vytisknout vpravo pak, když jsme spočítat. 546 00:40:31,660 --> 00:40:36,030 Případně může také uložit do pole a mají řadu znaků 547 00:40:36,030 --> 00:40:39,280 a na konci iteraci této celé pole a vytisknout. 548 00:40:39,280 --> 00:40:40,980 Takže máte několik možností pro to. 549 00:40:40,980 --> 00:40:47,280 A nezapomeňte, že% c bude zástupný symbol pro tisk charakter. 550 00:40:47,280 --> 00:40:50,420 Tak tady to máme Caesara, a nyní přejdeme k Vigenère, 551 00:40:50,420 --> 00:40:57,580 který je velmi podobný Caesar, ale jen o něco složitější. 552 00:40:57,580 --> 00:41:03,310 Takže v podstatě se Vigenere je budete se procházet v klíčové slovo. 553 00:41:03,310 --> 00:41:06,510 Takže místo čísla, budete mít řetězec, 554 00:41:06,510 --> 00:41:09,200 a tak, že se to působit jako klíčové slovo. 555 00:41:09,200 --> 00:41:14,440 Pak, jako obvykle, budete si výzva pro řetězec od uživatele 556 00:41:14,440 --> 00:41:19,050 a pak zašifrovat a pak jim záda ciphertext. 557 00:41:19,050 --> 00:41:24,650 Tak, jak jsem řekl, je to velmi podobné Caesara, s výjimkou místo posouvání určitého počtu, 558 00:41:24,650 --> 00:41:30,620 číslo je vlastně změní pokaždé, když z charakteru k charakteru. 559 00:41:30,620 --> 00:41:34,890 Představují, že skutečný počet se posunout, je to zastoupené na klávesnici písmena. 560 00:41:34,890 --> 00:41:43,150 Takže pokud zadáte v posunu, například, pak to by odpovídalo posunu 0. 561 00:41:43,150 --> 00:41:45,900 Takže je to zase zpátky do abecedního indexu. 562 00:41:45,900 --> 00:41:49,100 Co by mohlo být užitečné, pokud jste viděl, že jsme skutečně zabývají ASCII hodnotami 563 00:41:49,100 --> 00:41:51,790 jakož i písmena, stejně jako index abecedně, 564 00:41:51,790 --> 00:41:58,020 Možná vás nebo si vytvořte vlastní ASCII tabulku, která ukazuje v abecedním indexu 0 až 25, 565 00:41:58,020 --> 00:42:03,750 až z, a ASCII hodnoty, takže můžete trochu vidět vztah 566 00:42:03,750 --> 00:42:07,020 a nastínit a pokusit se najít nějaké vzory. 567 00:42:07,020 --> 00:42:11,010 Podobně, pokud jste byli řazení na některých stupni f - 568 00:42:11,010 --> 00:42:21,110 a to je buď malá nebo velká f - pak by odpovídaly 5. 569 00:42:21,110 --> 00:42:24,180 Jsme dobrý tak daleko? 570 00:42:25,770 --> 00:42:30,050 Vzorec pro Vigenere je trochu jiný. 571 00:42:30,050 --> 00:42:32,960 V podstatě, zjistíte, že je to jen jako Caesar, 572 00:42:32,960 --> 00:42:37,390 kromě ne jen k máme k. index j. 573 00:42:37,390 --> 00:42:44,810 Všimněte si, že jsme nepoužívají i proto, že v podstatě, délku klíčového slova 574 00:42:44,810 --> 00:42:49,850 není nutně délku našeho ciphertext. 575 00:42:49,850 --> 00:42:56,130 To bude trochu jasnější, když vidíme příklad, že mám trochu později. 576 00:42:56,130 --> 00:43:03,160 V podstatě, pokud spustíte váš program s klíčovým slovem na ohai, 577 00:43:03,160 --> 00:43:08,560 pak to znamená, že pokaždé, ohai bude vaše směna. 578 00:43:08,560 --> 00:43:11,060 Takže v závislosti na jakou pozici jste ve vašem klíčové slovo, 579 00:43:11,060 --> 00:43:15,800 budete změnit svůj určitý šifrový znak této částky. 580 00:43:15,800 --> 00:43:19,630 Opět, stejně jako Caesar, chceme se ujistit, že jsme zachovat kapitalizaci věcí 581 00:43:19,630 --> 00:43:22,900 a my jsme pouze zašifrovat písmena, nikoliv znaky nebo mezery. 582 00:43:22,900 --> 00:43:26,330 Podívejte se tedy zpět k císaři o funkcích, které můžete použili, 583 00:43:26,330 --> 00:43:32,570 tak, že jste se rozhodli, jak se posunout věci, a platí, že do svého programu zde. 584 00:43:32,570 --> 00:43:35,260 Takže pojďme zmapovat tohle. 585 00:43:35,260 --> 00:43:39,680 Máme holý, které jsme dostali od uživatele od GetString 586 00:43:39,680 --> 00:43:44,090 říká to ... je CS50! 587 00:43:44,090 --> 00:43:47,090 Pak máme klíčové slovo ohai. 588 00:43:47,090 --> 00:43:50,930 První 4 znaky jsou poměrně jednoduchá. 589 00:43:50,930 --> 00:43:55,580 Víme, že T se bude posunut o, 590 00:43:55,580 --> 00:44:01,990 pak h se bude posunut h, i se bude posunut. 591 00:44:01,990 --> 00:44:04,610 Zde můžete vidět, že představuje 0, 592 00:44:04,610 --> 00:44:11,940 takže pak konečná hodnota je ve skutečnosti jen stejné písmeno jako předtím. 593 00:44:11,940 --> 00:44:15,250 Pak s je posunut i. 594 00:44:15,250 --> 00:44:19,370 Ale pak budete mít tyto doby zde. 595 00:44:19,370 --> 00:44:25,960 Nechceme, aby zašifrovat, takže pak nemusíte měnit ničím 596 00:44:25,960 --> 00:44:31,280 a jen vytisknout období beze změny. 597 00:44:31,280 --> 00:44:38,020 [Student] Nechápu, jak víte, že to je posunut - Kde vás - >> Oh, promiň. 598 00:44:38,020 --> 00:44:41,620 Na vrcholu zde můžete vidět, že argument příkazového řádku ohai zde, 599 00:44:41,620 --> 00:44:43,740 že to bude klíčové slovo. 600 00:44:43,740 --> 00:44:49,550 A tak v podstatě, jste na kole přes znaky v klíčové slovo. 601 00:44:49,550 --> 00:44:52,020 [Student] Tak o se bude řazení stejné - 602 00:44:52,020 --> 00:44:56,260 Takže o odpovídá určitému počtu v abecedě. 603 00:44:56,260 --> 00:44:58,400 [Student] Právo. Ale kde jsi vzal CS50 část z? 604 00:44:58,400 --> 00:45:02,540 Oh. To je v GetString, kde jste jako: "Dej mi řetězec kódování." 605 00:45:02,540 --> 00:45:07,510 [Student] Chystají se vám tento argument přejít od 606 00:45:07,510 --> 00:45:09,380 a pak se zeptám na první řetězec. Jo >>. 607 00:45:09,380 --> 00:45:12,440 Takže při příštím spuštění programu, jdou zahrnout klíčové slovo 608 00:45:12,440 --> 00:45:14,740 ve svých argumentů příkazového řádku při spuštění to. 609 00:45:14,740 --> 00:45:19,740 Pak, jakmile jste četl, že jsem vlastně dal 1 a ne více, ne méně, 610 00:45:19,740 --> 00:45:23,750 pak budete přiměli je pro řetězec, říká: "Dej mi řetězec." 611 00:45:23,750 --> 00:45:27,630 Tak to je, kde v tomto případě, že jste stejně si to ... je CS50! 612 00:45:27,630 --> 00:45:32,090 Takže pak budete používat, že a používat ohai a iteraci. 613 00:45:32,090 --> 00:45:38,200 Všimněte si, že jsme tady přeskočil šifrování období, 614 00:45:38,200 --> 00:45:51,660 ale z hlediska našeho postavení na ohai, příští jsme použili o. 615 00:45:51,660 --> 00:45:54,990 V tomto případě je to trochu těžší vidět, protože to je 4, 616 00:45:54,990 --> 00:45:57,710 takže pojďme pokračovat trochu. Jen držet se mnou. 617 00:45:57,710 --> 00:46:02,960 Pak máme I a S, které jsou potom přeložen do O a H, resp. 618 00:46:02,960 --> 00:46:09,370 Pak máme prostor, a tak víme, že jsme se nebude zašifrovat mezery. 619 00:46:09,370 --> 00:46:18,930 Ale všimněte si, že místo toho, aby na tomto místě právě zde, 620 00:46:18,930 --> 00:46:28,330 jsme šifrování by - já nevím, jestli je vidět, že - tady. 621 00:46:28,330 --> 00:46:33,710 Takže to není jako jste vlastně předem, řekněme, o jde zde, h jde tady, 622 00:46:33,710 --> 00:46:39,200 jde zde, i zde jde, o, h,, i, o, h,, i. Nemusíte dělat. 623 00:46:39,200 --> 00:46:43,760 Stačí pouze změnit svůj postoj na klíčové slovo 624 00:46:43,760 --> 00:46:51,020 když víte, že jste ve skutečnosti bude šifrování skutečný dopis. 625 00:46:51,020 --> 00:46:53,920 Znamená to, že druh smysl? 626 00:46:53,920 --> 00:46:55,800 Dobře. 627 00:46:56,490 --> 00:46:58,500 Takže jen několik upomínek. 628 00:46:58,500 --> 00:47:03,760 Chcete, aby se ujistil, že si jen postoupit na další písmeno v klíčovém slově 629 00:47:03,760 --> 00:47:06,390 pokud postava v otevřeném textu, je dopis. 630 00:47:06,390 --> 00:47:09,120 Takže říct, že jsme na o.. 631 00:47:09,120 --> 00:47:19,310 Jsme zjistili, že další znak, index i holého textu, je číslo, například. 632 00:47:19,310 --> 00:47:31,630 Pak jsme nepostoupí j, index pro naše klíčové slovo, až se dostaneme další dopis. 633 00:47:31,630 --> 00:47:36,230 Opět, budete také chtít, aby se ujistil, že jste Wraparound na začátek klíčového slova 634 00:47:36,230 --> 00:47:37,770 když jste na konci. 635 00:47:37,770 --> 00:47:42,030 Pokud vidíte tady jsme u i, ten příští musí být o. 636 00:47:42,030 --> 00:47:47,690 Takže chcete najít nějaký způsob, jak být schopen wraparound na začátku svého klíčového slova 637 00:47:47,690 --> 00:47:49,470 pokaždé, když se dostanete na konec. 638 00:47:49,470 --> 00:47:55,040 A tak znovu, jaký druh subjektu je užitečné v tomto případě pro obal kolem? 639 00:47:56,630 --> 00:47:59,840 Stejně jako v počítání off příkladu. 640 00:47:59,840 --> 00:48:03,710 [Student] znak procenta. >> Jo, znak procent, což je modulo. 641 00:48:03,710 --> 00:48:11,250 Takže modulo přijde vhod zde, pokud chcete zabalit přes index v ohai. 642 00:48:11,250 --> 00:48:17,700 A právě rychlá nápověda: Zkuste myslet na balení nad klíčového slova trochu jako počítání mimo, 643 00:48:17,700 --> 00:48:23,590 kde v případě, že je 3 skupiny, 4. osoba, 644 00:48:23,590 --> 00:48:30,610 jejich počet, že oni říkali byl 4 mod 3, který byl 1. 645 00:48:30,610 --> 00:48:32,880 Tak zkuste a myslím, že to takhle. 646 00:48:34,770 --> 00:48:42,740 Jak jste viděli ve vzorci, kde máte CI a pak PI, ale pak kJ, 647 00:48:42,740 --> 00:48:44,700 chcete, aby se ujistil, že budete mít přehled o nich. 648 00:48:44,700 --> 00:48:47,580 Nemusíte volat to nejsem já, nemusíte volat, že j, 649 00:48:47,580 --> 00:48:53,270 ale chcete, aby se ujistil, že jste sledovat pozice, že jste na v otevřeném textu 650 00:48:53,270 --> 00:48:55,790 , jakož i na pozici, kterou jsme u v klíčové 651 00:48:55,790 --> 00:48:59,840 protože tyto nejsou nutně bude stejný. 652 00:48:59,840 --> 00:49:06,400 Nejen, že na základě klíčového slova - by to mohlo být úplně jiné délky než váš prostý text. 653 00:49:06,400 --> 00:49:09,140 Také váš holý, tam jsou čísla a znaky, 654 00:49:09,140 --> 00:49:14,450 takže to nebude dokonale ladí dohromady. Ano. 655 00:49:14,450 --> 00:49:19,280 [Student] Je zde funkce pro změnu případ? 656 00:49:19,280 --> 00:49:24,530 Můžete změnit na základním kapitálu A? >> Jo, tam určitě je. 657 00:49:24,530 --> 00:49:27,890 Můžete se podívat na - Věřím, že je to toupper, vše 1 slovo. 658 00:49:30,650 --> 00:49:36,310 Ale když se snažíte šifra věci a zachovat text, 659 00:49:36,310 --> 00:49:39,350 je nejlepší v podstatě mít oddělené případy. 660 00:49:39,350 --> 00:49:42,040 Pokud je to velká, pak se budete chtít posunout o této 661 00:49:42,040 --> 00:49:46,460 protože ve vašem vzorci, když se podíváte zpátky, jak jsme se trochu cestách 662 00:49:46,460 --> 00:49:50,900 zaměnitelně mezi ASCII způsobem reprezentovat čísla 663 00:49:50,900 --> 00:49:55,020 a skutečný abecední rejstřík, chceme se ujistit, 664 00:49:55,020 --> 00:50:01,850 tam to bude nějaká vzoru, který budete používat. 665 00:50:01,850 --> 00:50:04,580 Další poznámka o vzoru, skutečně. 666 00:50:04,580 --> 00:50:07,250 Budeš určitě práci s čísly. 667 00:50:07,250 --> 00:50:11,280 Snažte se používat magická čísla, která je příkladem stylu. 668 00:50:11,280 --> 00:50:18,470 Takže říct, že chcete každý něco časového posunu rád - 669 00:50:18,470 --> 00:50:22,400 Dobře, tak náznak, další spoiler je, když jdete k posunutí něco 670 00:50:22,400 --> 00:50:26,310 o určitou částku, snažte se představovat, že skutečné číslo 671 00:50:26,310 --> 00:50:32,810 ale zkuste a uvidíte, jestli můžete použít ASCII hodnotu, která bude trochu větší smysl. 672 00:50:32,810 --> 00:50:35,470 Další poznámka: Vzhledem k tomu, máme co do činění s formulí, 673 00:50:35,470 --> 00:50:41,200 i když vaše TF bude trochu vědět, co vzor můžete používat, 674 00:50:41,200 --> 00:50:44,430 nejlepší ve své komentáře druhu vysvětlit logiku, jako, 675 00:50:44,430 --> 00:50:51,880 "Já používám tento vzor, ​​protože ..." a druh vysvětlit vzor stručně ve svých komentářích. 676 00:50:54,090 --> 00:50:58,990 [To návod 2] Pokud tam nejsou nějaké další otázky, pak jsem si jen zůstat tady trochu. 677 00:50:58,990 --> 00:51:04,370 Hodně štěstí s vaším PSet 2: Crypto a díky za příchod. 678 00:51:06,070 --> 00:51:08,620 [Student] Děkuji. Díky >>. 679 00:51:09,220 --> 00:51:10,800 [Media Offline intro]