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šetci, a vitajte na Walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 Po prvé, chcem ti pogratulovať pre dokončovacie PSet 1. 6 00:00:14,330 --> 00:00:18,140 Viem, že by to mohlo byť trochu ťažké pre niektoré z vás, 7 00:00:18,140 --> 00:00:20,460 mohla byť vaša prvý počítačový program, ktorý si napísal, 8 00:00:20,460 --> 00:00:24,500 ale len na pamäti, že na konci tohto, keď sa pozriete späť na konci semestra, 9 00:00:24,500 --> 00:00:29,820 budete vyzerať na PSet 1 a povieš: "Hej, som mohol urobiť, že za 5 minút." 10 00:00:29,820 --> 00:00:35,700 Takže viem, a verím, že na konci tohto, budete určite nájdete PSet 1 celkom jednoduché. 11 00:00:35,700 --> 00:00:40,640 Ale teraz je to obrovský úspech, a gratulujem k získaniu práce. 12 00:00:40,640 --> 00:00:44,010 Teraz, aj krátka poznámka, ako sa dostaneme do mäsa návodu. 13 00:00:44,010 --> 00:00:48,340 Ja len chcem, aby sa rýchlo na vedomie, že som niekedy nebude mať dostatok času 14 00:00:48,340 --> 00:00:52,500 počas návody prejsť každý spôsob, ako robiť problému sadu 15 00:00:52,500 --> 00:00:56,140 a skôr len možno sústrediť na 1 alebo 2 druhov implementácií, 16 00:00:56,140 --> 00:00:57,750 spôsobmi, ktoré by ste mohli urobiť. 17 00:00:57,750 --> 00:01:01,970 Ale to neznamená, že ste zakázané robiť to inak. 18 00:01:01,970 --> 00:01:05,980 Tam sú často, ako u počítačovej vedy, početné spôsoby, ako robiť veci, 19 00:01:05,980 --> 00:01:12,190 a tak rozhodne neváhajte použiť iný typ riešenia, ako som mohla prezentovať. 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. Oddiel otázok - 1. Caesar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Dobrá. Takže problém nastaviť 2: Crypto je legrace jeden. 23 00:01:20,650 --> 00:01:24,500 Opäť, s každým PSet začnete s časťou otázok 24 00:01:24,500 --> 00:01:29,600 že sa to robí vo svojich oddieloch s účelovo výučby kolegami. 25 00:01:29,600 --> 00:01:31,670 Nebudeme chodiť cez tieto cez návodu, 26 00:01:31,670 --> 00:01:35,100 ale určite vám pomôžu dokončiť PSet. 27 00:01:35,100 --> 00:01:38,100 Takže prvá časť problému súboru je Caesar. 28 00:01:38,100 --> 00:01:43,470 A tak sa v Caesar niekto prejde vám kľúč s integer, 29 00:01:43,470 --> 00:01:48,420 a budete šifrovať reťazec textu, ktoré poskytujú vám 30 00:01:48,420 --> 00:01:50,670 a dať ich späť šifrované vec. 31 00:01:50,670 --> 00:01:56,050 Ak niekto sledoval, A Christmas Story, je tu príklad, že. 32 00:01:56,050 --> 00:01:59,090 Potom druhá časť problému sady je Vigenere, 33 00:01:59,090 --> 00:02:01,790 ktorý je viac pokročilý šifrovací techniky. 34 00:02:01,790 --> 00:02:05,640 A tak budeme zašifrovať nejaký text, 35 00:02:05,640 --> 00:02:09,600 s výnimkou namiesto toho sa len jedným celé číslo, my vlastne bude enkódovat 36 00:02:09,600 --> 00:02:13,340 s kľúčovým slovom, že užívateľ bude poskytovať nás. 37 00:02:16,270 --> 00:02:22,090 Dobre, takže prvý nástroj v paneli nástrojov je dnes skutočne bude aktualizácia zariadenia. 38 00:02:22,090 --> 00:02:26,430 Na diskusné panely by sme vidieť veci ako, "Prečo nie túto prácu?" 39 00:02:26,430 --> 00:02:28,110 "Prečo nie Pošlite 50 prácu?" 40 00:02:28,110 --> 00:02:31,830 a často riešenie je v skutočnosti len aktualizovať svoj prístroj. 41 00:02:31,830 --> 00:02:36,730 A tak ak ste práve beží v okne terminálu vo vašom spotrebiče sudo yum-y - 42 00:02:36,730 --> 00:02:40,040 to vlajka hovorí áno, aktualizujte všetko - aktualizácia, 43 00:02:40,040 --> 00:02:42,280 potom sa váš spotrebič bude aktualizovať, pokiaľ nebolo treba. 44 00:02:42,280 --> 00:02:46,960 A to nie je na škodu, keď ste už na najnovšiu verziu spotrebiča. 45 00:02:46,960 --> 00:02:51,280 Potom to bude len povedať, žiadne nové aktualizácie k dispozícii a môžete pokračovať v práci ďalej. 46 00:02:51,280 --> 00:02:55,800 Ale to je dobré urobiť ešte pri každom otvorení spotrebiča 47 00:02:55,800 --> 00:02:57,140 pretože sme stále veľa - 48 00:02:57,140 --> 00:03:00,320 niekedy, keď sme prišli do chrobáka - upevňovacie ju do prístroja. 49 00:03:00,320 --> 00:03:03,180 Takže sa uistite, že máte najnovšiu verziu spotrebiče 50 00:03:03,180 --> 00:03:07,710 a spustiť, že aktualizáciu tam. 51 00:03:07,710 --> 00:03:14,360 Dobrá. Takže od tej doby máme čo do činenia s písmenami a mení, šifrovaním veci, 52 00:03:14,360 --> 00:03:20,410 budeme naozaj chcieť, aby sa stal najlepší priatelia s našou ASCII tabuľky. 53 00:03:20,410 --> 00:03:24,350 Tam sú početné tie on-line, ak zistíte, že. Možno dokonca vytvoriť svoj vlastný. 54 00:03:24,350 --> 00:03:29,950 V podstate, s každým listom 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 ich hodnoty ASCII vedľa skutočného listu. 57 00:03:38,670 --> 00:03:42,310 To bude určite pomôže v problému sade. 58 00:03:42,310 --> 00:03:45,750 Jedna vec, ktorá mi naozaj pomohlo v tomto probléme súboru bol skutočne vytlačiť, 59 00:03:45,750 --> 00:03:48,380 a ako som sa prechádzal, by som skutočne kresliť na to, 60 00:03:48,380 --> 00:03:51,150 písať, "Ak to má ísť do tam, a potom ..." 61 00:03:51,150 --> 00:03:55,270 Druh čerpať na neho a označiť ju, stanú najlepšími priateľmi s Vašou ASCII tabuľky. 62 00:03:57,240 --> 00:04:00,750 Potom máme ešte niekoľko ďalších nástrojov, ktoré máme k dispozícii. 63 00:04:00,750 --> 00:04:03,750 Tentoraz miesto skutočne by užívateľovi zobrazil výzvu pre všetky ich vstupu 64 00:04:03,750 --> 00:04:05,230 budeme robiť kombináciu. 65 00:04:05,230 --> 00:04:06,880 Budeme výzvu je pre nejaký vstup, 66 00:04:06,880 --> 00:04:11,350 ale my sme tiež bude používať len argumenty príkazového riadku. 67 00:04:11,350 --> 00:04:15,600 Takže keď beží svoj program, zvyčajne hovoríte. / Hello, napríklad, 68 00:04:15,600 --> 00:04:17,310 ak váš program bol hello.c. 69 00:04:17,310 --> 00:04:22,500 Ale tentoraz nie len hovoriť, že môžu dať slová, argumenty potom. 70 00:04:22,500 --> 00:04:27,210 A tak budeme používať, čo sa im odovzdať k nám ako ich vstup tiež, 71 00:04:27,210 --> 00:04:31,720 tak dojemné, ako len výzvou pre celé číslo, ale aj pomocou argumentov príkazového riadku. 72 00:04:31,720 --> 00:04:36,590 A potom pôjdeme do polí a reťazcov, ktoré budeme používať veľa tiež. 73 00:04:41,460 --> 00:04:44,810 Tu je len príklad 1 mini ASCII tabuľky. 74 00:04:44,810 --> 00:04:48,460 Ako som už povedal, každý list zodpovedá počtu, 75 00:04:48,460 --> 00:04:52,510 a tak sa zoznámiť s tým. To sa bude hodiť. 76 00:04:52,510 --> 00:04:55,610 A neskôr, keď sme začať robiť nejaké ASCIIMath zaoberajúce sa číslami - 77 00:04:55,610 --> 00:05:00,110 sčítanie, odčítanie je - potom určite dobré odkazovať sa na tento graf. 78 00:05:02,860 --> 00:05:06,920 Takže tu je príklad kódu Caesar - niečo, čo ste možno hrali s 79 00:05:06,920 --> 00:05:11,190 Je to len kolesá. V podstate je vonkajšie abeceda, a potom je vnútorná abeceda. 80 00:05:11,190 --> 00:05:15,290 Takže tu je príklad kódu Caesar, ale s kľúčom od 0. 81 00:05:15,290 --> 00:05:21,540 V podstate, je zarovnaný s, B je zladená s B, celú cestu až do Z. 82 00:05:21,540 --> 00:05:26,590 Ale potom, že sme chceli kľúč 3, napríklad. 83 00:05:26,590 --> 00:05:33,280 Potom by sme otočiť vnútorné koleso tak, aby sa vyrovnáva s D, atď 84 00:05:33,280 --> 00:05:35,250 A tak je to v podstate to, čo budeme robiť. 85 00:05:35,250 --> 00:05:38,340 Nemáme kolesá, ale to, čo budeme robiť, je, aby náš program 86 00:05:38,340 --> 00:05:44,490 druh posunúť abecedu spolu s nami určitú čísel. 87 00:05:44,490 --> 00:05:48,650 Tak ako som povedal predtým, budeme sa zaoberať argumentmi príkazového riadku 88 00:05:48,650 --> 00:05:50,390 , Ako aj získanie celé číslo. 89 00:05:50,390 --> 00:05:55,050 Takže tak, že užívateľ bude spustite Caesar programu je samozrejmosťou. / Caesar 90 00:05:55,050 --> 00:05:58,090 a zadaním čísla za to. 91 00:05:58,090 --> 00:06:01,130 A toto číslo predstavuje kľúč, radenie, 92 00:06:01,130 --> 00:06:06,740 koľkokrát budete sa otáčaním vnútorné koleso vášho kódu Caesar. 93 00:06:06,740 --> 00:06:08,390 A tak vidíte tu príklad. 94 00:06:08,390 --> 00:06:14,550 Ak sme vstúpili do písmen od A do L na našom šifrou Caesar, 95 00:06:14,550 --> 00:06:19,520 potom by vstup D bodom O, pretože to je každý list posunula 3 krát, 96 00:06:19,520 --> 00:06:22,080 rovnako ako na príklad kolesá, ktoré som vám ukázal. 97 00:06:22,080 --> 00:06:25,300 Takže, ak ste zadali, napríklad, to je CS50! 98 00:06:25,300 --> 00:06:27,960 potom by tiež presunúť všetky písmená. 99 00:06:27,960 --> 00:06:31,040 A to je dôležitá vec, ako Caesar a Vigenère 100 00:06:31,040 --> 00:06:34,890 je to, že budeme preskočiť nejaké non-listy. 101 00:06:34,890 --> 00:06:39,160 Takže žiadne medzery, znaky, atď, čísla, budeme držať je rovnaký. 102 00:06:39,160 --> 00:06:42,920 Sme ešte len vo chvíli, posunúť písmená v tomto prípade. 103 00:06:42,920 --> 00:06:45,870 Takže ako vidíte na kolesá, máme iba písmená máme k dispozícii, 104 00:06:45,870 --> 00:06:50,150 takže sme len chcete posunúť písmená a šifrovanie listy. 105 00:06:51,370 --> 00:06:56,720 Takže prvá vec robiť, ste videli, že využitie pre Caesara v problému nastavenia 2 106 00:06:56,720 --> 00:07:05,280 je spustiť Caesara a zadajte číslo, ak ho spustíte v termináli. 107 00:07:05,280 --> 00:07:10,940 Takže to, čo potrebujete urobiť, je nejako dostať, že kľúč a prístup. 108 00:07:10,940 --> 00:07:14,730 A tak chceme nejako vidieť, že to bude druhý argument príkazového riadku. 109 00:07:14,730 --> 00:07:20,950 Prvý z nich bude. / Caesar, a ten budúci bude kľúčom číslo. 110 00:07:22,190 --> 00:07:29,200 Takže ako sme mali int main (void) a vykonajte naše C programy. 111 00:07:29,200 --> 00:07:31,790 Budeme Zlúpnite vrstvu trochu 112 00:07:31,790 --> 00:07:34,720 a skutočne vidieť, že namiesto toho, aby odovzdávanie v prázdne na našu hlavnou funkciou 113 00:07:34,720 --> 00:07:37,920 sme vlastne zaoberajú 2 parametre. 114 00:07:37,920 --> 00:07:44,070 Máme int argc názvom a potom pole reťazcov nazýva 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 predstavuje počet argumentov zaslaných do svojho programu. 117 00:07:49,640 --> 00:07:53,590 A potom ArGV je vlastne zoznam odovzdaných argumentov. 118 00:07:53,590 --> 00:08:00,820 Všetky argumenty sú reťazce, a tak ArGV predstavuje pole, zoznam, reťazcov. 119 00:08:01,830 --> 00:08:03,990 Poďme sa baviť o matice trochu. 120 00:08:03,990 --> 00:08:05,940 Pole sú v podstate nová dátová štruktúra. 121 00:08:05,940 --> 00:08:09,660 Máme ints, sme sa zdvojnásobí, máme reťazca, a teraz máme pole. 122 00:08:09,660 --> 00:08:13,820 Polia sú dátové štruktúry, ktoré môžu obsahovať viac hodnôt rovnakého typu, 123 00:08:13,820 --> 00:08:18,320 Takže v podstate, zoznam, čo typ chcete. 124 00:08:18,320 --> 00:08:24,400 V podstate, ak ste chceli zoznam celých čísel všetko v 1 premennej, 125 00:08:24,400 --> 00:08:29,090 potom by ste vytvoriť novú premennú, ktorá bola z poľa typu int. 126 00:08:29,090 --> 00:08:34,450 Takže polia sú nulové indexované, čo znamená, že prvý prvok poľa je na indexe 0. 127 00:08:34,450 --> 00:08:41,799 Ak je pole dĺžky 4, ako v tomto príklade, potom sa vaše posledný prvok bude na indexe 3, 128 00:08:41,799 --> 00:08:44,810 ktorý je 4-1. 129 00:08:45,940 --> 00:08:48,420 Takže ak chcete vytvoriť pole, by ste niečo také. 130 00:08:48,420 --> 00:08:51,440 Povedzme, že ste chceli dvojaký poľa. 131 00:08:51,440 --> 00:08:56,520 To platí pre všetky typy dátového typu, hoci. 132 00:08:56,520 --> 00:09:00,210 Takže povedať, chcete dvojaký poľa. Povedzme, že chcete nazývať schránky. 133 00:09:00,210 --> 00:09:04,760 Rovnako ako by ste inicializovať iný dvojníka, 134 00:09:04,760 --> 00:09:09,760 by ste povedal double a potom meno, ale tentoraz sme dali hranaté zátvorky, 135 00:09:09,760 --> 00:09:13,570 a potom číslo bude dĺžka poľa. 136 00:09:13,570 --> 00:09:16,840 Všimnite si, že v poliach nemôžeme nikdy zmeniť dĺžku, 137 00:09:16,840 --> 00:09:21,230 takže vždy budete mať k definovaniu a zvoliť, koľko políčok, 138 00:09:21,230 --> 00:09:25,440 koľko hodnôt vaše pole bude držať. 139 00:09:25,440 --> 00:09:31,820 Takže nastaviť rôzne hodnoty vo vašom poli, budete používať tento nasledujúci syntax, 140 00:09:31,820 --> 00:09:33,200 ako vidíte na snímke. 141 00:09:33,200 --> 00:09:37,620 Máte schránka index 0 bude nastavená na 1,2, 142 00:09:37,620 --> 00:09:42,180 schránky index 1 sada na 2,4, atď 143 00:09:42,180 --> 00:09:47,910 Takže teraz, že sme preskúmať pole trochu, poďme späť k argc a ArGV. 144 00:09:47,910 --> 00:09:52,220 Vieme, že ArGV je teraz pole reťazcov. 145 00:09:52,220 --> 00:09:55,080 Takže keď používateľ prechádza - hovoria, že používate program - 146 00:09:55,080 --> 00:09:58,740 hovoria. / hello David Malan, 147 00:09:58,740 --> 00:10:05,160 čo program bude robiť pre vás už skutočne prísť s tým, čo argc a ArGV je. 148 00:10:05,160 --> 00:10:07,620 Takže si nemusíte robiť starosti, že. 149 00:10:07,620 --> 00:10:14,370 Argc v tomto prípade by bola 3, pretože to vidí 3 rôzne slov oddelených medzerami. 150 00:10:14,370 --> 00:10:18,850 A potom sa pole v tomto prípade, by prvý index je. / Hello, 151 00:10:18,850 --> 00:10:21,770 budúci David, budúci Malan. 152 00:10:21,770 --> 00:10:25,640 Má niekto vidieť hneď, aký je vzťah medzi ArGV, 153 00:10:25,640 --> 00:10:28,990  poľa, a argc je? 154 00:10:32,820 --> 00:10:38,090 Jo. Dostaneme sa do toho v príklade v args.c. 155 00:10:38,090 --> 00:10:42,880 Poďme sa pozrieť, či sa nám podarí využiť vzťahu medzi 2. 156 00:10:42,880 --> 00:10:46,550 Tu môžete zistiť, že v prístroji predvolené aplikácie 157 00:10:46,550 --> 00:10:49,450 otvoriť. C súbory je niekedy Emacs. 158 00:10:49,450 --> 00:10:54,660 Ale chceme rokovať s gedit, takže to, čo môžete urobiť, je môžete kliknúť pravým tlačidlom na súbor C, 159 00:10:54,660 --> 00:11:04,580 prejsť na Vlastnosti, Otvoriť, a potom zvoľte gedit, Nastaviť ako predvolený, 160 00:11:04,580 --> 00:11:13,020 a teraz váš program by mal otvoriť v gedit miesto Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfect. 162 00:11:17,120 --> 00:11:25,520 Tak tu mám program, ktorý chcem vytlačiť každý argument príkazového riadku. 163 00:11:25,520 --> 00:11:32,050 Takže bez ohľadu na užívateľské vstupy, chcem hlavne vrátiť späť k nim na nový riadok. 164 00:11:32,050 --> 00:11:36,710 Takže to, čo je štruktúra, ktorá môžeme použiť k iterácii niečo - 165 00:11:36,710 --> 00:11:40,380 niečo, čo ste pravdepodobne zvyknutí vo svojej PSet 1? 166 00:11:40,380 --> 00:11:45,840 Ak chcete prejsť nastavenom počte vecí? >> [Študent] Pre slučky. 167 00:11:45,840 --> 00:11:48,910 Pre slučky. Presne tak. Takže začnime s tým, pre sláčiky. 168 00:11:48,910 --> 00:11:56,900 Máme pre int i = 0. Poďme začať s štandardné inicializácia premennej. 169 00:11:56,900 --> 00:12:02,370 Chystám sa opustiť podmienku pre súbor a potom povedať, že som + +, bude robiť veci tam. 170 00:12:02,370 --> 00:12:04,090 Dobrá. 171 00:12:04,090 --> 00:12:11,590 Tak spomínal na ArGV, ak ArGV je zoznam argumentov zaslaných do programu 172 00:12:11,590 --> 00:12:15,380 a argc je počet argumentov v programe, 173 00:12:15,380 --> 00:12:21,280 potom to znamená, že je v podstate argc dĺžka ArGV, doprava, 174 00:12:21,280 --> 00:12:28,970 pretože sa bude čo najviac argumentov ako hodnotu argc. 175 00:12:28,970 --> 00:12:35,910 Takže ak chceme iteráciu každý element v ArGV, 176 00:12:35,910 --> 00:12:43,290 budeme chcieť zakaždým prístup k premennej v ArGV v danom indexe. 177 00:12:43,290 --> 00:12:49,060 To môže byť reprezentovaný s tým, že jo? 178 00:12:49,060 --> 00:12:53,430 Táto premenná tu predstavuje určitý reťazec v tomto prípade 179 00:12:53,430 --> 00:12:57,030 pretože je to string array - konkrétne reťazec v danú indexu. 180 00:12:57,030 --> 00:13:00,690 Čo chceme robiť, v tomto prípade chceme vytlačiť, takže povedzme printf. 181 00:13:00,690 --> 00:13:04,680 A teraz ArGV je reťazec, tak chceme, aby to symbol tam. 182 00:13:04,680 --> 00:13:08,430 Chceme nový riadok len, aby to vyzeralo dobre. 183 00:13:08,430 --> 00:13:12,530 Takže tu máme pre slučku. Nemáme stav ešte. 184 00:13:12,530 --> 00:13:20,020 Tak som začína na 0, a potom zakaždým, keď to bude tlačiť daný reťazec 185 00:13:20,020 --> 00:13:22,980 V tomto konkrétnom indexu v poli. 186 00:13:22,980 --> 00:13:28,410 Takže keď chceme prestať tlačiť z prvkov v poli? 187 00:13:28,410 --> 00:13:35,720 Keď sme hotoví, nie? Keď sme došli na koniec poľa. 188 00:13:35,720 --> 00:13:38,870 Takže nechceme prekročiť okolo dĺžka poľa, 189 00:13:38,870 --> 00:13:43,700 a my už vieme, že to nie je potrebné, aby skutočne aktívne zistiť, čo dĺžka ArGV je 190 00:13:43,700 --> 00:13:47,520 pretože je to rovnako na nás, a čo je to? Argc. Presne tak. 191 00:13:47,520 --> 00:13:56,640 Takže chceme robiť tento proces argc niekoľkokrát. 192 00:13:56,640 --> 00:13:59,550 Nie som v pravom adresári. 193 00:14:02,100 --> 00:14:03,490 Dobrá. 194 00:14:03,490 --> 00:14:08,990 Teraz poďme urobiť args. Žiadne chyby, čo je skvelé. 195 00:14:08,990 --> 00:14:11,430 Takže poďme stačí spustiť ARGUMENTY. 196 00:14:11,430 --> 00:14:15,130 Čo sa to bude vracať k nám? Je to len tak vytlačiť ju späť. 197 00:14:15,130 --> 00:14:18,320 "Tie vložené ARGUMENTY do programu, ja dám ju späť k vám." 198 00:14:18,320 --> 00:14:23,170 Takže povedzme, že chceme povedať ARGUMENTY potom foo bar. 199 00:14:23,170 --> 00:14:26,570 Takže potom sa vytlačí ju späť k nám. Všetko v poriadku? 200 00:14:26,570 --> 00:14:30,790 Takže tam je príkladom toho, ako možno použiť argc a ArGV 201 00:14:30,790 --> 00:14:33,460 vedomie, že argc predstavuje dĺžku ArGV. 202 00:14:33,460 --> 00:14:42,750 Uistite sa, že ste to nikdy s polí prístupom jedna za dĺžku poľa 203 00:14:42,750 --> 00:14:45,140 pretože C určite kričať na vás. 204 00:14:45,140 --> 00:14:47,560 Získate niečo ako Segmentation fault, 205 00:14:47,560 --> 00:14:52,470 ktorý nie je nikdy legrace, v podstate hovorí, že sa snažíte o prístup niečo 206 00:14:52,470 --> 00:14:55,000 že neexistuje, nepatrí vám. 207 00:14:55,000 --> 00:14:59,430 Takže sa uistite, a to najmä s nulovou indexovanie, nechceme, aby - 208 00:14:59,430 --> 00:15:02,390 Ako napríklad, keď sa majú rad dĺžky 4, 209 00:15:02,390 --> 00:15:07,240 že index poľa 4 neexistuje, pretože začíname na 0, v nulového indexu. 210 00:15:07,240 --> 00:15:11,730 To sa stane druhou prirodzenosťou, rovnako ako pre vedenie, keď začneme na 0. 211 00:15:11,730 --> 00:15:13,610 Takže len na to myslieť. 212 00:15:13,610 --> 00:15:22,590 Nechcete, aby niekedy prístup index poľa, ktorá je mimo váš dosah. 213 00:15:26,710 --> 00:15:32,560 Takže môžeme vidieť teraz, ako môžeme druh prístupu 214 00:15:32,560 --> 00:15:35,930 argumenty príkazového riadku, ktoré sú odovzdané palcov 215 00:15:35,930 --> 00:15:41,330 Ale ako si videl reťazec, ArGV je vlastne reťazec poľa. 216 00:15:41,330 --> 00:15:45,740 Takže to vlastne nie je číslo ešte, ale Caesar chceme zaoberať s celými číslami. 217 00:15:45,740 --> 00:15:54,430 Našťastie, tam je funkcia vytvorená pre nás, že môže skutočne previesť reťazec na celé číslo. 218 00:15:54,430 --> 00:15:58,710 Tiež tu sa nejedná o užívateľského vstupu, kde sme vyzvať ich, 219 00:15:58,710 --> 00:16:03,740 pre vstup tu pre kľúč, takže nemôžeme vlastne reprompt a povedať, 220 00:16:03,740 --> 00:16:07,840 "Ach, daj mi ďalšie celé číslo, teda ak to nie je platné." 221 00:16:07,840 --> 00:16:10,540 Ale my stále potrebujeme skontrolovať správne použitie. 222 00:16:10,540 --> 00:16:13,520 Caesar sú povolené iba prejsť v 1 rade, 223 00:16:13,520 --> 00:16:18,030 a preto majú spustiť. / Caesar a potom vám dať číslo. 224 00:16:18,030 --> 00:16:23,660 Takže argc musia byť určité množstvo. 225 00:16:23,660 --> 00:16:29,060 Aké číslo by to malo byť, ak majú prejsť Vám. / Caesar a potom kľúč? 226 00:16:29,060 --> 00:16:32,920 Čo je argc? >> [Študent] 2. Dva >>. Presne tak. 227 00:16:32,920 --> 00:16:35,490 Takže chcete, aby sa ubezpečil, že argc je 2. 228 00:16:35,490 --> 00:16:39,620 Inak ste v podstate odmietajú spustiť program. 229 00:16:39,620 --> 00:16:43,040 V hlavnej, že je to funkcia, ktorá hovorí, že int main, 230 00:16:43,040 --> 00:16:47,360 takže potom sme vždy v dobrom 0 praxi návrate na konci úspešného programu. 231 00:16:47,360 --> 00:16:50,840 Takže ak, povedzme, že vám 3 argumenty príkazového riadku miesto 2 232 00:16:50,840 --> 00:16:54,350 alebo vám 1, napríklad, potom to, čo budete robiť, je budete chcieť skontrolovať, že 233 00:16:54,350 --> 00:16:59,900 a potom sa vrátiť 1 hovorí, nie, nemôžem pokračovať s týmto programom. 234 00:16:59,900 --> 00:17:03,190 [Študent] Nemôže byť miesta v texte. >> Prepáčte? 235 00:17:03,190 --> 00:17:06,780 [Študent] Nemôže byť priestor v texte, ktorý sa snažíte šifrovanie. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Pokiaľ ide o text, ktorý sa snažíme pre šifrovanie, ktoré skutočne príde neskôr 238 00:17:11,280 --> 00:17:13,970 keď nám tento text. 239 00:17:13,970 --> 00:17:18,260 Takže teraz sme len prijímať ako riadiace argumenty skutočný počet, 240 00:17:18,260 --> 00:17:21,579 Skutočný posun pre šifrovanie Caesar. 241 00:17:21,579 --> 00:17:27,569 [Študent] Prečo potrebujete 2 na rozdiel od púhych 1 argc? Tam je určite 1 číslo. 242 00:17:27,569 --> 00:17:32,200 Právo. Dôvodom, prečo potrebujeme 2 pre argc namiesto 1 243 00:17:32,200 --> 00:17:36,260 je, že pri spustení programu a hovoriť. / caesar alebo. / hello, 244 00:17:36,260 --> 00:17:38,280 skutočne počíta ako argument príkazového riadku. 245 00:17:38,280 --> 00:17:43,020 Takže, že už zaberá 1, a tak potom sme zadaním 1 prístelka. 246 00:17:45,030 --> 00:17:49,440 Takže ste vlastne zadanie reťazec v argumente príkazového riadku. 247 00:17:49,440 --> 00:17:52,730 Čo chcete urobiť, pre Caesara chceme zaoberať celé číslo, 248 00:17:52,730 --> 00:17:57,180 takže môžete použiť túto funkciu atoi. 249 00:17:57,180 --> 00:18:02,850 A v podstate, odovzdáte ho v reťazci, a potom sa vráti späť celé číslo 250 00:18:02,850 --> 00:18:06,070 ak je to možné, aby sa tento reťazec na celé číslo. 251 00:18:06,070 --> 00:18:10,960 Teraz si spomenúť, kedy máme čo do činenia s printf alebo GetString, podobné veci, 252 00:18:10,960 --> 00:18:13,390 zahrnieme knižnice, ktoré sú špecifické pre nás. 253 00:18:13,390 --> 00:18:19,450 Takže na začiatku sme začať s hash tagom štandardné I / O,. H, niečo také. 254 00:18:19,450 --> 00:18:22,430 No, atoi nie je v jednom z týchto knižníc, 255 00:18:22,430 --> 00:18:26,600 takže to, čo musíme urobiť, je, že sme o právo knižnicu za to. 256 00:18:26,600 --> 00:18:32,720 Takže pripomenúť späť na Walkthrough 1, kde som sa jednalo o ručné funkciu. 257 00:18:32,720 --> 00:18:37,110 Zadáte muža vo vašom terminálu a potom nasleduje názov funkcie. 258 00:18:37,110 --> 00:18:39,720 A tak, aby prinesie až celý zoznam jeho použitie, 259 00:18:39,720 --> 00:18:42,890 ale rovnako to bude vychovávať, ktoré knižnica, ktorá patrí. 260 00:18:42,890 --> 00:18:47,000 Tak som nechám na vás použiť manuálne funkciu atoi 261 00:18:47,000 --> 00:18:53,360 a zistiť, v ktorej knižnici je potrebné zahrnúť, aby mohli používať atoi funkciu. 262 00:18:54,450 --> 00:18:57,670 Takže máme kľúč a teraz to príde k získaniu obyčajný text, 263 00:18:57,670 --> 00:19:01,820 a tak, aby skutočne bude vstup užívateľa, kde sa výzva. 264 00:19:01,820 --> 00:19:05,540 Sme sa zaoberali GetInt a GetFloat, a tak v rovnakom duchu 265 00:19:05,540 --> 00:19:07,670 budeme rokovať s GetString. 266 00:19:07,670 --> 00:19:12,440 Ale v tomto prípade nepotrebujeme robiť žiadne robiť, kým alebo while pre kontrolu. 267 00:19:12,440 --> 00:19:14,480 GetString určite nám reťazec, 268 00:19:14,480 --> 00:19:17,630 a budeme šifrovať, čo používateľ zadá nás. 269 00:19:17,630 --> 00:19:23,770 Takže si môžete predpokladať, že všetky z týchto reťazcov užívateľských zadaných sú správne. 270 00:19:23,770 --> 00:19:24,670 Great. 271 00:19:24,670 --> 00:19:27,270 Takže akonáhle máte kľúč, a akonáhle máte text, 272 00:19:27,270 --> 00:19:31,660 Teraz to, čo zostalo, je potrebné zašifrovať holý text. 273 00:19:31,660 --> 00:19:36,530 Len rýchlo pokryť viac než žargón, holý text je to, čo používateľ zadá vám, 274 00:19:36,530 --> 00:19:41,030 a ciphertext je to, čo sa k nim vracať. 275 00:19:42,450 --> 00:19:45,850 Takže reťazca, aby mohli prejsť skutočne listu listom 276 00:19:45,850 --> 00:19:48,550 pretože musíme posunúť každý list, 277 00:19:48,550 --> 00:19:51,390 Chápeme, že reťazce, ak sme trochu kôry zadnej vrstvy, 278 00:19:51,390 --> 00:19:54,130 vidíme, že sú naozaj len zoznam znakov. 279 00:19:54,130 --> 00:19:55,930 Jeden prichádza po druhej. 280 00:19:55,930 --> 00:20:01,690 A tak môžeme liečiť reťazce ako polia, pretože sú pole znakov. 281 00:20:01,690 --> 00:20:05,640 Takže povedať, že máte reťazec s názvom text, 282 00:20:05,640 --> 00:20:09,400 av rámci tejto premennej text je uložený To je CS50. 283 00:20:09,400 --> 00:20:15,680 Potom textu na indexe 0 by byť veľké T, by index 1 je h, atď 284 00:20:17,530 --> 00:20:23,970 A potom s poľom, v argc napríklad v args.c, 285 00:20:23,970 --> 00:20:27,090 sme videli, že sme museli iterácii poľa 286 00:20:27,090 --> 00:20:32,440 a tak sme museli prechádzať od i = 0 až do i je menšia než dĺžka. 287 00:20:32,440 --> 00:20:35,560 Takže potrebujeme nejaký spôsob, ako prísť na to, aká je dĺžka nášho reťazca je 288 00:20:35,560 --> 00:20:37,090 ak budeme určiť iteráciou cez to. 289 00:20:37,090 --> 00:20:42,300 Našťastie znova, tam je funkcia tam pre nás, aj keď neskôr v CS50 290 00:20:42,300 --> 00:20:45,860 budete určite schopní realizovať a vyrobiť si vlastnú funkciu 291 00:20:45,860 --> 00:20:48,260 ktoré môžu vypočítať dĺžku reťazca. 292 00:20:48,260 --> 00:20:52,120 Ale pre teraz budeme používať dĺžku reťazca, takže strlen. 293 00:20:52,120 --> 00:21:00,440 Odovzdáte v reťazci, a potom sa vráti vám int predstavujúce dĺžku vášho reťazca. 294 00:21:00,440 --> 00:21:05,840 Poďme sa pozrieť na príklad, ako by sme mohli byť schopní iteráciu každý znak v reťazci 295 00:21:05,840 --> 00:21:08,470 a urobiť niečo s tým. 296 00:21:08,470 --> 00:21:13,250 To, čo chcem urobiť, je iterácii každý znak reťazca, 297 00:21:13,250 --> 00:21:19,150 a to, čo chceme urobiť, je, že sme tlač späť každý znak 1 od 1 298 00:21:19,150 --> 00:21:22,060 okrem pridáme niečo vedľa nej. 299 00:21:22,060 --> 00:21:27,020 Takže začnime s tým, pre sláčiky. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Budeme ponechať priestor pre stav. 301 00:21:32,700 --> 00:21:36,840 Chceme opakovať, ako sa dostaneme na koniec reťazca, nie? 302 00:21:36,840 --> 00:21:41,340 Tak čo funkcia nám dáva dĺžku reťazca? 303 00:21:41,340 --> 00:21:43,160 [Nepočuteľné Študent odpoveď] 304 00:21:43,160 --> 00:21:46,420 To je dĺžka argumentov príkazového riadku. 305 00:21:46,420 --> 00:21:50,650 Ale pre reťazec chceme používať funkcie, ktoré nám dáva dĺžku reťazca. 306 00:21:50,650 --> 00:21:53,090 Tak to je dĺžka reťazca. 307 00:21:53,090 --> 00:21:57,130 A potom sa budete musieť prejsť v reťazci k nej. 308 00:21:57,130 --> 00:21:59,760 Je potrebné, aby čo reťazec je potrebné k výpočtu dĺžky. 309 00:21:59,760 --> 00:22:03,160 Takže v tomto prípade máme do činenia 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, čo chceme robiť, poďme printf. 312 00:22:10,770 --> 00:22:14,850 Teraz, chceme rokovať s postavami. Chceme vytlačiť každý individuálny charakter. 313 00:22:14,850 --> 00:22:22,150 Ak chcete, aby vytlačiť float, mali by ste použiť zástupný symbol ako% f 314 00:22:22,150 --> 00:22:24,580 S int, mali by ste použiť% d 315 00:22:24,580 --> 00:22:30,890 A tak podobne, s charakterom použiť% c povedať, že som bude tlač znaku 316 00:22:30,890 --> 00:22:34,570 , Ktorý je uložený vo vnútri premenné. 317 00:22:34,570 --> 00:22:40,840 Takže máme toto, a dodajme obdobie a priestor k nemu. 318 00:22:40,840 --> 00:22:45,430 Znak, ktorý sme používate? 319 00:22:45,430 --> 00:22:49,780 Budeme používať bez ohľadu na charakter sme na reťazce. 320 00:22:49,780 --> 00:22:52,890 Takže budeme používať niečo s reťazcami, 321 00:22:52,890 --> 00:22:56,420 ale chceme, aby sa prístup k určitej znak tam. 322 00:22:56,420 --> 00:23:02,740 Takže ak reťazec je len pole, tak ako máme pristupovať prvky polí? 323 00:23:02,740 --> 00:23:06,480 Máme tie hranaté zátvorky, a potom sme dali index tam. 324 00:23:06,480 --> 00:23:11,820 Takže máme hranatých zátvoriek. Naša index v tomto prípade stačí používať i Presne tak. 325 00:23:15,290 --> 00:23:22,370 Takže tu hovoríme my bude tlačiť znak nasledovaný bodkou a medzerou, 326 00:23:22,370 --> 00:23:30,870 a tento znak bude i-ty list v našom reťazca s 327 00:23:32,920 --> 00:23:39,330 Ja som jednoducho ísť tou výnimkou, že. Dobre. 328 00:23:42,510 --> 00:23:46,840 Teraz budem bežať dĺžku reťazca. 329 00:23:46,840 --> 00:23:53,440 Takže sme mali reťazec s názvom OMG, a teraz je to ešte viac zdôraznil. 330 00:23:53,440 --> 00:23:57,870 Podobne, povedzme, že skutočne chcú dostať reťazec od užívateľa. 331 00:23:57,870 --> 00:23:59,580 Ako môžeme urobiť? 332 00:23:59,580 --> 00:24:01,610 Pred, ako sa dostaneme int? 333 00:24:01,610 --> 00:24:08,040 Povedali sme, že GetInt, že jo? Ale to nie je int, tak sa poďme GetString. 334 00:24:11,780 --> 00:24:17,770 Poďme urobiť dĺžku reťazca. Tu sme nezadali konkrétne výzvy. 335 00:24:17,770 --> 00:24:19,940 Tak ja neviem. 336 00:24:19,940 --> 00:24:23,820 Chystám sa dať svoje meno sem, a tak potom to môžem robiť jednu z tých vecí 337 00:24:23,820 --> 00:24:29,600 kde som priradiť slovo pre každé písmeno alebo niečo také. Cool. 338 00:24:29,600 --> 00:24:31,900 Tak to je dĺžka reťazca. 339 00:24:33,000 --> 00:24:34,640 Takže sme späť k Caesarovi. 340 00:24:34,640 --> 00:24:38,620 Máme niekoľko nástrojov, ako by sme iterácii reťazec, 341 00:24:38,620 --> 00:24:41,250 ako sme prístup každého jednotlivého prvku. 342 00:24:41,250 --> 00:24:44,720 Takže teraz sa môžeme dostať späť do programu. 343 00:24:44,720 --> 00:24:48,650 Ako som už spomenul predtým, v ASCII tabuľke, váš najlepší priateľ, 344 00:24:48,650 --> 00:24:52,300 budete vidieť čísla, ktoré sú spojené s každým písmenom. 345 00:24:52,300 --> 00:24:55,900 Tak tu že naše holý je, že som závrat! 346 00:24:55,900 --> 00:25:01,090 Potom každý z týchto znakov bude mať číslo a ASCII hodnotu s ním spojené, 347 00:25:01,090 --> 00:25:04,710 aj apostrof, dokonca aj priestor, a to aj výkričník, 348 00:25:04,710 --> 00:25:06,600 takže budete chcieť mať na pamäti. 349 00:25:06,600 --> 00:25:12,360 Takže povedať, náš kľúč, ktorý užívateľ zahrnuté do ich argument príkazového riadku je 6. 350 00:25:12,360 --> 00:25:17,770 To znamená, že na prvé písmeno, ktoré je I, ktorá je reprezentovaná 73, 351 00:25:17,770 --> 00:25:25,610 Ak sa chcete vrátiť k nim bez ohľadu na písmeno je reprezentované ASCII hodnotou 73 + 6. 352 00:25:25,610 --> 00:25:29,020 V tomto prípade, že by bolo 79. 353 00:25:30,840 --> 00:25:35,040 Teraz chceme ísť na ďalší znak. 354 00:25:35,040 --> 00:25:40,960 Takže ďalší v indexe 1 holého textu bude apostrof. 355 00:25:40,960 --> 00:25:46,780 Ale pamätajte si chceme len, aby zašifrovať listy. 356 00:25:46,780 --> 00:25:50,040 Takže chceme, aby sa ubezpečil, že apostrof skutočne zostáva rovnaká, 357 00:25:50,040 --> 00:25:54,310 že sa nemení od 39 do čohokoľvek 45 je. 358 00:25:54,310 --> 00:25:57,150 Chceme, aby to ako apostrof. 359 00:25:57,150 --> 00:26:00,780 Takže chceme pamätať iba zašifrovať písmená 360 00:26:00,780 --> 00:26:04,560 preto, že chceme všetky ostatné symboly sa nezmení v našom programe. 361 00:26:04,560 --> 00:26:07,130 Ďalšia vec, ktorá chceme, je zachovať písmen. 362 00:26:07,130 --> 00:26:10,250 Takže keď máte veľké písmeno, malo by zostať ako veľká. 363 00:26:10,250 --> 00:26:12,830 Lowercasuje by mala zostať ako malé písmená. 364 00:26:13,620 --> 00:26:19,480 Takže niektoré užitočné funkcie, ktoré boli schopné sa vyrovnať len s šifrovaním listy 365 00:26:19,480 --> 00:26:22,380 a udržať zachovanie kapitalizácii vecí 366 00:26:22,380 --> 00:26:25,130 je isalpha, isupper, islower funkcie. 367 00:26:25,130 --> 00:26:29,270 A tak to sú funkcie, ktoré vracajú vám boolovská. 368 00:26:29,270 --> 00:26:34,180 V podstate, true alebo false. Je to veľká? Je to alfanumerický? 369 00:26:34,180 --> 00:26:37,180 Je to list, v podstate. 370 00:26:37,180 --> 00:26:41,070 Takže tu sú 3 príklady, ako by ste použiť túto funkciu. 371 00:26:41,070 --> 00:26:47,060 V podstate, môžete otestovať, či hodnota vrátená pre Vás túto funkciu je pravdivé alebo nepravdivé 372 00:26:47,060 --> 00:26:49,400 na základe tohto vstupu. 373 00:26:49,400 --> 00:26:54,880 Buď nemajú zašifrovať niečo alebo šifrovaných, alebo sa uistite, že je to veľká, atď 374 00:26:54,880 --> 00:27:01,080 [Študent] Mohol by si vysvetliť, tie trochu viac a ako ich používať? Jo >>, pre istotu. 375 00:27:01,080 --> 00:27:08,470 Takže keď sa pozrieme späť, tu máme kapitál I, P? 376 00:27:08,470 --> 00:27:14,550 Takže vieme, že som dostal O, pretože som + 6 je O. 377 00:27:14,550 --> 00:27:18,740 Ale my chceme, aby sa ubezpečil, že O bude kapitál O. 378 00:27:18,740 --> 00:27:22,940 Takže v podstate, že je tak trochu zmení naše vstup. 379 00:27:22,940 --> 00:27:26,870 Takže nech už je to veľká, alebo nie vôľa druh zmeniť tak, že sme jej zaoberať. 380 00:27:26,870 --> 00:27:32,360 Takže ak budeme používať isupper funkcie na danom indexe, 381 00:27:32,360 --> 00:27:36,480 tak isupper ("I"), ktorá vráti pre nás skutočné, takže vieme, že je to horná. 382 00:27:36,480 --> 00:27:40,360 Takže na základe toho, neskôr pôjdeme do vzorca 383 00:27:40,360 --> 00:27:42,750 že budete používať k posunu veci Caesar, 384 00:27:42,750 --> 00:27:46,560 takže potom v podstate, že to bude mierne líšiť vzorec, ak je to veľká 385 00:27:46,560 --> 00:27:50,670 ako protichodný na malé písmená. Zmysel? 386 00:27:51,020 --> 00:27:52,760 Jo. Žiadne starosti. 387 00:27:54,900 --> 00:27:58,990 Hovoril som trochu o pridanie 6 na list, ktorý nie je úplne zmysel 388 00:27:58,990 --> 00:28:05,500 okrem prípadov, keď sme trochu pochopili, že tieto znaky 389 00:28:05,500 --> 00:28:08,920 sú trochu zameniteľné s celými číslami. 390 00:28:08,920 --> 00:28:11,250 Čo robíme je, že sme spôsob použitia implicitné odliatku. 391 00:28:11,250 --> 00:28:18,100 Pôjdeme do odlievacie trochu neskôr, kde budete mať hodnotu a dáte ho do iného typu 392 00:28:18,100 --> 00:28:20,440 ako bol pôvodne. 393 00:28:20,440 --> 00:28:25,910 Ale s týmto PSet budeme môcť trochu zameniteľne používajú znaky 394 00:28:25,910 --> 00:28:30,880 a ich zodpovedajúce celočíselné hodnoty. 395 00:28:30,880 --> 00:28:35,140 Takže ak si jednoducho obaliť postavu len s apostrofy, 396 00:28:35,140 --> 00:28:40,390 potom budete môcť pracovať s ním s celými číslami, vyrovnať sa s ňou ako celé číslo. 397 00:28:40,390 --> 00:28:48,040 Takže kapitál C sa vzťahuje k 67. Malá f sa týka 102. 398 00:28:48,040 --> 00:28:51,480 Opäť platí, že ak chcete poznať tieto hodnoty, pozrite sa na ASCII tabuľky. 399 00:28:51,480 --> 00:28:56,160 Tak poďme do niektorých príkladov, ako by ste mohli byť schopní odčítať a pridať, 400 00:28:56,160 --> 00:29:03,130 ako môžete vlastne naozaj pracovať s týmito znakmi, používať zameniteľne. 401 00:29:03,870 --> 00:29:11,350 Ja hovorím, že ASCIIMath bude výpočet pridanie znaku na celé číslo 402 00:29:11,350 --> 00:29:17,590 a potom zobrazí výsledný charakter, rovnako ako výsledné ASCII hodnotu. 403 00:29:17,590 --> 00:29:22,290 A tak tu hovorím - Dáme sa zaoberajú touto časťou neskôr - 404 00:29:22,290 --> 00:29:29,100 ale v podstate, ja som povedal, že užívateľ by mal povedať, bežať ASCIIMath spolu s kľúčom, 405 00:29:29,100 --> 00:29:30,880 a ja hovorím, že ten kľúč bude číslo 406 00:29:30,880 --> 00:29:34,600 s ktorými budeme pridávať tento znak. 407 00:29:34,600 --> 00:29:38,560 Tak tu si všimnúť, že od tej doby som náročný kľúč, 408 00:29:38,560 --> 00:29:40,590 pretože som žiadal, aby Dávaš mi 1 vec, 409 00:29:40,590 --> 00:29:45,600 Chcem len prijať. / Asciimath a kľúč. 410 00:29:45,600 --> 00:29:49,330 Takže budem požadovať, aby argc je rovný 2. 411 00:29:49,330 --> 00:29:54,360 Ak tomu tak nie je, potom budem vracať 1 a program sa ukončí. 412 00:29:55,070 --> 00:29:58,540 Takže hovorím, nie je kľúč bude prvý argument na príkazovom riadku, 413 00:29:58,540 --> 00:30:05,080 to bude druhý, a ako vidíte tu, 414 00:30:05,080 --> 00:30:11,790 Budem sa to malo zmeniť na celé číslo. 415 00:30:15,740 --> 00:30:19,230 Potom idem nastaviť znak byť r 416 00:30:19,230 --> 00:30:23,970 Všimnite si, že typ premennej CHR je vlastne číslo. 417 00:30:23,970 --> 00:30:30,480 Spôsob, akým som mohol použiť r ako celé číslo je ohraničením s týmito jednoduchými úvodzovkami. 418 00:30:33,850 --> 00:30:40,560 Takže späť k nášmu printf vyhlásenie, kde máme vyhradené miesto pre znak 419 00:30:40,560 --> 00:30:43,590 a potom zástupný symbol pre celé číslo, 420 00:30:43,590 --> 00:30:49,450 charakter je reprezentovaný chr, a celé číslo je kľúč. 421 00:30:49,450 --> 00:30:54,320 A potom sa budeme vo výsledku pridať 2 spolu. 422 00:30:54,320 --> 00:30:58,420 Takže budeme pridávať r + bez ohľadu na kľúč, 423 00:30:58,420 --> 00:31:03,520 a potom budeme tlačiť výsledok, ktorý. 424 00:31:06,210 --> 00:31:14,220 Takže poďme sa asciimath. Je to aktuálne, tak sa poďme stačí spustiť asciimath. 425 00:31:14,220 --> 00:31:18,290 Oh, ale vidieť, že nerobí nič, pretože sme nemali vlastne dať kľúč. 426 00:31:18,290 --> 00:31:23,850 Takže keď som sa práve vrátil 1, naším hlavným funkcie, to sa práve vrátil späť k nám. 427 00:31:23,850 --> 00:31:29,250 Takže poďme prejsť v kľúči. Niekto mi číslo. >> [Študent] 4. 428 00:31:29,250 --> 00:31:30,920 4. Dobre. 429 00:31:30,920 --> 00:31:39,280 Takže r zvýšil o 4 bude nám v, ktorá zodpovedá ASCII hodnotu 118. 430 00:31:39,280 --> 00:31:43,880 Takže potom to trochu dáva zmysel, že - 431 00:31:43,880 --> 00:31:51,250 Vlastne, môžem sa vás spýtať, čo si myslíte, že ASCII hodnota r, ak je 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, keď sa pozriete na ASCII tabuľky a potom je nepochybné, že uvidíte, že r je zastúpená 114. 434 00:32:03,010 --> 00:32:08,610 Takže teraz vieme, že môžeme pridať celé čísla znakov, sa to zdá celkom jednoduché. 435 00:32:08,610 --> 00:32:12,740 Sme len tak pre iteráciu reťazec, ako sme videli na príklade pred. 436 00:32:12,740 --> 00:32:17,170 Pozrieme sa, či je to list. 437 00:32:17,170 --> 00:32:20,420 Ak je, potom budeme posúvať ju bez ohľadu na kľúč. 438 00:32:20,420 --> 00:32:23,650 Docela jednoduché, okrem prípadov, keď sa dostanete do takhle, 439 00:32:23,650 --> 00:32:32,140 zistíte, že z zastúpené 122, by potom vám iný charakter. 440 00:32:32,140 --> 00:32:37,770 My vlastne chceme, aby ostali v našej abecedy, nie? 441 00:32:37,770 --> 00:32:43,180 Takže musíme prísť na to, nejaký spôsob, ako druhu obalu okolo. 442 00:32:43,180 --> 00:32:47,190 Keď sa dostanete múr a chcete zvýšiť o určitý počet, 443 00:32:47,190 --> 00:32:51,230 nechcete ísť do za ASCII abecedy časti; 444 00:32:51,230 --> 00:32:54,140 Chcete zabaliť späť celú cestu do A. 445 00:32:54,140 --> 00:32:58,550 Ale majte na pamäti, že stále zachovať vec. 446 00:32:58,550 --> 00:33:00,980 Tak s vedomím, že listy sa nemôže stať symbolmi 447 00:33:00,980 --> 00:33:05,290 rovnako ako symboly sa nebude meniť tiež. 448 00:33:05,290 --> 00:33:08,170 V poslednom PSet určite nemusel, 449 00:33:08,170 --> 00:33:14,310 ale voľba bola pre implementáciu chamtivý PSet pomocou modul funkcie. 450 00:33:14,310 --> 00:33:17,230 Ale teraz sme vlastne bude musieť použiť modul, 451 00:33:17,230 --> 00:33:19,900 takže poďme na to trochu. 452 00:33:19,900 --> 00:33:26,920 V podstate, keď máte x modulo y, ktorý vám dáva zvyšok x delené y. 453 00:33:26,920 --> 00:33:30,930 Tu sú niektoré príklady tu. Máme 27% 15. 454 00:33:30,930 --> 00:33:36,200 V podstate, keď si odpočítať 15 z 27 toľkokrát, koľkokrát je to možné, bez toho by sa negatívne 455 00:33:36,200 --> 00:33:39,060 potom dostanete 12 ostali. 456 00:33:39,060 --> 00:33:44,650 Takže to je niečo ako v matematickom kontexte, ale ako môžeme vlastne použiť? 457 00:33:44,650 --> 00:33:47,100 Bude to byť užitočné pre našu wrapover. 458 00:33:47,100 --> 00:33:55,420 Pre tento, povedzme, že som vás požiadal, aby ste všetci rozdeliť do 3 skupín. 459 00:33:55,420 --> 00:33:58,010 Niekedy sa to v skupinách a niečo podobné. 460 00:33:58,010 --> 00:34:01,320 Povedzme, že som povedal: "Dobre, chcem vám všetkým byť rozdelená do 3." 461 00:34:01,320 --> 00:34:04,240 Ako by ste mohli urobiť, že? 462 00:34:04,240 --> 00:34:06,810 [Nepočuteľné Študent odpoveď] Jo, presne tak. Odpočítať. Dobre. 463 00:34:06,810 --> 00:34:10,260 Poďme vlastne robiť, že. Chcete začať? 464 00:34:10,260 --> 00:34:13,810 [Študenti počítanie mimo] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Ale pamätajte si ... >> [Študent] Oh, prepáč. 466 00:34:16,620 --> 00:34:18,730 To je naozaj dobrá pripomienka. 467 00:34:18,730 --> 00:34:24,130 Hovoril ste, že 4, ale vlastne chceme vám povedať, 1, pretože chceme len 3 skupiny. 468 00:34:24,130 --> 00:34:30,159 Takže, ako - Nie, to je naozaj dobrý príklad, pretože potom, ako môžete povedať, 1? 469 00:34:30,159 --> 00:34:33,370 Aký je vzťah medzi 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 ak budete pokračovať, mali by ste byť 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äť, ty si vlastne 5. osoba. Ako viete, povedať 2 miesto 5? 474 00:34:49,420 --> 00:34:53,760 Hovoríte, že 5 mod 3 je 2. 475 00:34:53,760 --> 00:34:59,100 Chcem vidieť, koľko skupiny 3 ar zostalo, potom akom poradí am I. 476 00:34:59,100 --> 00:35:02,860 A potom sa, ak sme pokračovali pozdĺž celej miestnosti, 477 00:35:02,860 --> 00:35:07,760 potom by sme videli, že sme vždy skutočne používaných mod funkciu pre seba 478 00:35:07,760 --> 00:35:09,990 na druh odpočítať. 479 00:35:09,990 --> 00:35:14,490 To je viac druhov hmotného príkladom toho, ako môžete použiť modulo 480 00:35:14,490 --> 00:35:17,960 pretože som si istý, že väčšina z nás pravdepodobne prešiel týmto procesom 481 00:35:17,960 --> 00:35:19,630 kde sme museli odpočítať. 482 00:35:19,630 --> 00:35:21,840 Akékoľvek otázky týkajúce sa modulo? 483 00:35:21,840 --> 00:35:25,360 To bude dosť dôležité pochopiť koncepty tohto, 484 00:35:25,360 --> 00:35:28,640 tak chcem, aby sa ubezpečil ste pochopili. 485 00:35:28,640 --> 00:35:34,660 [Študent] Ak nie je zvyšok, to vám aktuálne číslo? 486 00:35:34,660 --> 00:35:40,430 Ak jeden z prvých 3 z nich to urobil, bolo by to rovnako im, čo vlastne bol, 487 00:35:40,430 --> 00:35:43,310 alebo by to byť rovnako im [nepočuteľné] >> To je dobrá otázka. 488 00:35:43,310 --> 00:35:48,750 Ak nie je zvyšok na modulo - tak, že máte 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 že vlastne dáva staré 0. 490 00:35:53,670 --> 00:35:57,290 Budeme hovoriť o tom, že o niečo neskôr. 491 00:35:58,810 --> 00:36:07,720 Ach jo, napríklad, 3. osoba - 3 mod 3 je vlastne 0, ale povedala 3. 492 00:36:07,720 --> 00:36:14,900 Takže je to niečo ako vnútorný úlovok, napríklad, 493 00:36:14,900 --> 00:36:17,620 ako v poriadku, ak je mod je 0 potom budem ako 3. osoba. 494 00:36:17,620 --> 00:36:22,740 Ale dostaneme do druhu, ako by sme mohli chcieť rokovať s tými, 0 je neskôr. 495 00:36:22,740 --> 00:36:32,750 Takže teraz sme si nejako mať spôsob mapovania múr na správnom listu. 496 00:36:32,750 --> 00:36:34,920 Takže teraz sme prešli týchto príkladoch, 497 00:36:34,920 --> 00:36:37,880 sme trochu vidieť, ako Caesar by mohlo fungovať. 498 00:36:37,880 --> 00:36:42,640 Vidíte 2 abecedy a potom si na ne pozrieť radenie. 499 00:36:42,640 --> 00:36:44,430 Tak poďme skúsiť a vyjadriť, že pokiaľ ide o vzorce. 500 00:36:44,430 --> 00:36:46,940 Tento vzorec je vlastne podáva do spec, 501 00:36:46,940 --> 00:36:52,070 ale poďme trochu pozrieť skrz to, čo každá premenná znamená. 502 00:36:52,070 --> 00:36:55,000 Naša konečný výsledok bude ciphertext. 503 00:36:55,000 --> 00:36:58,300 Tak to hovorí, že i-ty znak ciphertext 504 00:36:58,300 --> 00:37:02,500 bude zodpovedať tej charakteru textu. 505 00:37:02,500 --> 00:37:08,130 To dáva zmysel, pretože chceme, aby vždy čakajú tieto veci. 506 00:37:08,130 --> 00:37:13,480 Tak to bude i-teho charakter šifrového plus K, ktorá je naším hlavným - 507 00:37:13,480 --> 00:37:17,230 to dáva zmysel - a potom sme tento mod 26. 508 00:37:17,230 --> 00:37:19,860 Spomínam si, keď sme mali múr 509 00:37:19,860 --> 00:37:24,190 Nechceli sme sa dostať do charakteru, tak sme chceli, aby to mod 510 00:37:24,190 --> 00:37:26,540 a druh obalu okolo abecedy. 511 00:37:26,540 --> 00:37:33,430 Po múr by ste ísť, b, c, d, kým ste sa dostali na správne číslo. 512 00:37:33,430 --> 00:37:44,690 Takže vieme, že zet, ak + 6, by nám f, pretože po zet prichádza, b, c, d, e, f 513 00:37:44,690 --> 00:37:52,530 Tak spomeňme vieme určite, že múr + 6 sa bude dať nám f 514 00:37:52,530 --> 00:38:03,530 V ASCII hodnôt, z je 122 a f je 102. 515 00:38:03,530 --> 00:38:10,570 Takže musíme nájsť nejaký spôsob, ako robiť svoju Caesar vzorec nám 102 516 00:38:10,570 --> 00:38:13,590 potom, čo vzal v 122. 517 00:38:13,590 --> 00:38:19,550 Takže keď sme stačí použiť tento vzorec, je ('z' + 6)% 26, ktoré vlastne dáva vám 24 518 00:38:19,550 --> 00:38:25,980 pretože 122 + 6 je 128, 128% 26 vám dáva 24 zvyšok. 519 00:38:25,980 --> 00:38:29,140 Ale to nie je naozaj neznamená f To rozhodne nie je 102. 520 00:38:29,140 --> 00:38:33,590 To tiež nie je 6. písmeno v abecede. 521 00:38:33,590 --> 00:38:41,550 Tak samozrejme, musíme mať nejaký spôsob, ako štiepať to trochu. 522 00:38:42,970 --> 00:38:51,340 Pokiaľ ide o pravidelné abecedy, vieme, že z je 26. písmeno a f je 6.. 523 00:38:51,340 --> 00:38:55,460 Ale my sme v informatike, takže budeme indexom 0. 524 00:38:55,460 --> 00:39:00,690 Takže namiesto toho, aby z ich počet 26, budeme hovoriť, že je to číslo 25 525 00:39:00,690 --> 00:39:02,630 pretože je 0. 526 00:39:02,630 --> 00:39:04,770 Tak teraz poďme použiť tento vzorec. 527 00:39:04,770 --> 00:39:11,710 Máme z zastúpená 25 + 6, ktorá vám dáva 31. 528 00:39:11,710 --> 00:39:15,790 A 31 mod 26 vám dáva 5 ako zvyšok. 529 00:39:15,790 --> 00:39:20,500 To je ideálne, pretože vieme, že f je 5. písmeno v abecede. 530 00:39:20,500 --> 00:39:26,400 Ale to ešte nie je f, P? To ešte nie je 102. 531 00:39:26,400 --> 00:39:32,730 Takže pre túto PSet, bude úlohou sa snaží zistiť vzťah 532 00:39:32,730 --> 00:39:36,910 medzi konverzie medzi týmito ASCII hodnotami a abecedný register. 533 00:39:36,910 --> 00:39:40,280 V podstate to, čo budete chcieť robiť, chcete začať s ASCII hodnotami, 534 00:39:40,280 --> 00:39:45,390 ale potom chcete nejako preložiť do indexu abecedy 535 00:39:45,390 --> 00:39:52,610 potom vypočítať, aké písmeno by malo byť - v podstate, čo jeho abecedný index je 536 00:39:52,610 --> 00:39:57,660 z šifry charakteru - a potom prekladať, že späť do ASCII hodnoty. 537 00:39:57,660 --> 00:40:04,870 Takže ak ste vytasiť svoj ASCII tabuľku, skúste a nájsť vzťahy medzi, povedzme, 102 a 5 538 00:40:04,870 --> 00:40:10,440 alebo 122 a 25. 539 00:40:12,140 --> 00:40:15,690 Dostali sme náš kľúč od argumentov príkazového riadku, sme dostali holý text, 540 00:40:15,690 --> 00:40:17,520 sme zašifrovaný to. 541 00:40:17,520 --> 00:40:19,820 Teraz všetko, čo zostáva urobiť, je vytlačiť. 542 00:40:19,820 --> 00:40:22,040 Mohli by sme to niekoľko rôznych spôsobov. 543 00:40:22,040 --> 00:40:24,570 To, čo sme mohli urobiť, je skutočne vytlačiť, ako sme ísť ďalej. 544 00:40:24,570 --> 00:40:28,250 Ako sme iteráciu znaky v reťazci, 545 00:40:28,250 --> 00:40:31,660 by sme mohli jednoducho len vytlačiť vpravo potom, keď sme spočítať. 546 00:40:31,660 --> 00:40:36,030 Prípadne môže tiež uložiť do poľa a majú rad znakov 547 00:40:36,030 --> 00:40:39,280 a na konci iterácii tejto celé pole a vytlačiť. 548 00:40:39,280 --> 00:40:40,980 Takže máte niekoľko možností pre to. 549 00:40:40,980 --> 00:40:47,280 A nezabudnite, že% c bude zástupný symbol pre tlač charakter. 550 00:40:47,280 --> 00:40:50,420 Tak tu to máme Caesara, a teraz prejdeme k Vigenère, 551 00:40:50,420 --> 00:40:57,580 ktorý je veľmi podobný Caesar, ale len o niečo zložitejšie. 552 00:40:57,580 --> 00:41:03,310 Takže v podstate sa Vigenere ich budete sa prechádzať v kľúčové slovo. 553 00:41:03,310 --> 00:41:06,510 Takže namiesto čísla, budete mať reťazec, 554 00:41:06,510 --> 00:41:09,200 a tak, že sa to pôsobiť ako kľúčové slovo. 555 00:41:09,200 --> 00:41:14,440 Potom, ako obvykle, budete si výzva pre reťazec od užívateľa 556 00:41:14,440 --> 00:41:19,050 a potom zašifrovať a potom im chrbát ciphertext. 557 00:41:19,050 --> 00:41:24,650 Tak, ako som povedal, je to veľmi podobné Caesara, s výnimkou miesto posúvanie určitého počtu, 558 00:41:24,650 --> 00:41:30,620 číslo je vlastne zmení zakaždým, keď z charakteru k charakteru. 559 00:41:30,620 --> 00:41:34,890 Predstavujú, že skutočný počet sa posunúť, je to zastúpené na klávesnici písmená. 560 00:41:34,890 --> 00:41:43,150 Takže ak zadáte v posune, napríklad, potom to by zodpovedalo posunu 0. 561 00:41:43,150 --> 00:41:45,900 Takže je to zase späť do abecedného indexu. 562 00:41:45,900 --> 00:41:49,100 Čo by mohlo byť užitočné, ak ste videl, že sme skutočne zaoberajú ASCII hodnotami 563 00:41:49,100 --> 00:41:51,790 ako aj písmená, rovnako ako index abecedne, 564 00:41:51,790 --> 00:41:58,020 Možno vás alebo si vytvorte vlastný ASCII tabuľku, ktorá ukazuje v abecednom indexe 0 až 25, 565 00:41:58,020 --> 00:42:03,750 až z, a ASCII hodnoty, takže môžete trochu vidieť vzťah 566 00:42:03,750 --> 00:42:07,020 a načrtnúť a pokúsiť sa nájsť nejaké vzory. 567 00:42:07,020 --> 00:42:11,010 Podobne, ak ste boli radenia na niektorých stupni f - 568 00:42:11,010 --> 00:42:21,110 a to je buď malá alebo veľká f - potom by zodpovedali 5. 569 00:42:21,110 --> 00:42:24,180 Sme dobrý tak ďaleko? 570 00:42:25,770 --> 00:42:30,050 Vzorec pre Vigenere je trochu iný. 571 00:42:30,050 --> 00:42:32,960 V podstate, zistíte, že je to len ako Caesar, 572 00:42:32,960 --> 00:42:37,390 okrem nie len k máme k index j 573 00:42:37,390 --> 00:42:44,810 Všimnite si, že sme nepoužívajú aj preto, že v podstate, dĺžku kľúčového slova 574 00:42:44,810 --> 00:42:49,850 nie je nutne dĺžku nášho ciphertext. 575 00:42:49,850 --> 00:42:56,130 To bude trochu jasnejší, keď vidíme príklad, že mám trochu neskôr. 576 00:42:56,130 --> 00:43:03,160 V podstate, ak spustíte váš program s kľúčovým slovom na ohai, 577 00:43:03,160 --> 00:43:08,560 potom to znamená, že zakaždým, ohai bude vaša smena. 578 00:43:08,560 --> 00:43:11,060 Takže v závislosti na akú pozíciu ste vo vašom kľúčové slovo, 579 00:43:11,060 --> 00:43:15,800 budete zmeniť svoj určitý šifrový znak tejto sumy. 580 00:43:15,800 --> 00:43:19,630 Opäť, rovnako ako Caesar, chceme sa uistiť, že sme zachovať kapitalizácii vecí 581 00:43:19,630 --> 00:43:22,900 a my sme iba zašifrovať písmená, nie znaky alebo medzery. 582 00:43:22,900 --> 00:43:26,330 Pozrite sa teda späť k cisárovi o funkciách, ktoré môžete použili, 583 00:43:26,330 --> 00:43:32,570 tak, že ste sa rozhodli, ako sa posunúť veci, a platí, že do svojho programu tu. 584 00:43:32,570 --> 00:43:35,260 Takže poďme zmapovať toto. 585 00:43:35,260 --> 00:43:39,680 Máme holý, ktoré sme dostali od užívateľa od GetString 586 00:43:39,680 --> 00:43:44,090 hovorí to ... je CS50! 587 00:43:44,090 --> 00:43:47,090 Potom máme kľúčové slovo ohai. 588 00:43:47,090 --> 00:43:50,930 Prvé 4 znaky sú pomerne jednoduchá. 589 00:43:50,930 --> 00:43:55,580 Vieme, že T sa bude posunutý o, 590 00:43:55,580 --> 00:44:01,990 potom h sa bude posunutý h, aj sa bude posunutý. 591 00:44:01,990 --> 00:44:04,610 Tu môžete vidieť, že predstavuje 0, 592 00:44:04,610 --> 00:44:11,940 takže potom konečná hodnota je v skutočnosti len rovnaké písmeno ako predtým. 593 00:44:11,940 --> 00:44:15,250 Potom s je posunutý i 594 00:44:15,250 --> 00:44:19,370 Ale potom budete mať tieto doby tu. 595 00:44:19,370 --> 00:44:25,960 My nechceme zašifrovať, takže potom nemusíte meniť ničím 596 00:44:25,960 --> 00:44:31,280 a len vytlačiť období bez zmeny. 597 00:44:31,280 --> 00:44:38,020 [Študent] Nechápem, ako viete, že to je posunutý - Kde vás - >> Oh, prepáč. 598 00:44:38,020 --> 00:44:41,620 Na vrchole tu môžete vidieť, že argument príkazového riadku ohai tu, 599 00:44:41,620 --> 00:44:43,740 že to bude kľúčové slovo. 600 00:44:43,740 --> 00:44:49,550 A tak v podstate, ste na bicykli cez znaky v kľúčové slovo. 601 00:44:49,550 --> 00:44:52,020 [Študent] Tak o sa bude radenie rovnaké - 602 00:44:52,020 --> 00:44:56,260 Takže o zodpovedá určitému počtu v abecede. 603 00:44:56,260 --> 00:44:58,400 [Študent] Právo. Ale kde si vzal CS50 časť z? 604 00:44:58,400 --> 00:45:02,540 Oh. To je v GetString, kde ste ako: "Daj mi reťazec kódovania." 605 00:45:02,540 --> 00:45:07,510 [Študent] Chystajú sa vám tento argument k posunu od 606 00:45:07,510 --> 00:45:09,380 a potom sa spýtam na prvý reťazec. Jo >>. 607 00:45:09,380 --> 00:45:12,440 Takže pri ďalšom spustení programu, idú zahrnúť kľúčové slovo 608 00:45:12,440 --> 00:45:14,740 vo svojich argumentov príkazového riadku pri spustení to. 609 00:45:14,740 --> 00:45:19,740 Potom, akonáhle ste čítal, že som vlastne dal 1 a nie viac, nie menej, 610 00:45:19,740 --> 00:45:23,750 potom budete prinútili je pre reťazec, hovorí: "Daj mi reťazec." 611 00:45:23,750 --> 00:45:27,630 Tak to je, kde v tomto prípade, že ste rovnako si to ... je CS50! 612 00:45:27,630 --> 00:45:32,090 Takže potom budete používať, že a používať ohai a iteráciu. 613 00:45:32,090 --> 00:45:38,200 Všimnite si, že sme tu preskočil šifrovanie obdobie, 614 00:45:38,200 --> 00:45:51,660 ale z hľadiska nášho postavenia na ohai, budúci sme použili o 615 00:45:51,660 --> 00:45:54,990 V tomto prípade je to trochu ťažšie vidieť, pretože to je 4, 616 00:45:54,990 --> 00:45:57,710 takže poďme pokračovať trochu. Len držať so mnou. 617 00:45:57,710 --> 00:46:02,960 Potom máme I a S, ktoré sú potom preložený do O a H, resp. 618 00:46:02,960 --> 00:46:09,370 Potom máme priestor, a tak vieme, že sme sa nebude zašifrovať medzery. 619 00:46:09,370 --> 00:46:18,930 Ale všimnite si, že namiesto toho, aby na tomto mieste práve tu, 620 00:46:18,930 --> 00:46:28,330 sme šifrovanie by - ja neviem, či je vidieť, že - tu. 621 00:46:28,330 --> 00:46:33,710 Takže to nie je ako ste vlastne vopred, povedzme, o ide tu, h ide tu, 622 00:46:33,710 --> 00:46:39,200 ide tu, aj tu ide, o, h, i, o, h,, i Nemusíte robiť. 623 00:46:39,200 --> 00:46:43,760 Stačí iba zmeniť svoj postoj na kľúčové slovo 624 00:46:43,760 --> 00:46:51,020 keď viete, že ste v skutočnosti bude šifrovanie skutočný list. 625 00:46:51,020 --> 00:46:53,920 Znamená to, že druh zmysel? 626 00:46:53,920 --> 00:46:55,800 Dobre. 627 00:46:56,490 --> 00:46:58,500 Takže len niekoľko upomienok. 628 00:46:58,500 --> 00:47:03,760 Chcete, aby sa ubezpečil, že si len postúpiť na ďalšie písmeno v kľúčovom slove 629 00:47:03,760 --> 00:47:06,390 ak postava v otvorenom texte, je list. 630 00:47:06,390 --> 00:47:09,120 Takže povedať, že sme na o. 631 00:47:09,120 --> 00:47:19,310 Sme zistili, že ďalší znak, index i holého textu, je číslo, napríklad. 632 00:47:19,310 --> 00:47:31,630 Potom sme nepostúpi j, index pre naše kľúčové slovo, až sa dostaneme ďalší list. 633 00:47:31,630 --> 00:47:36,230 Opäť, budete tiež chcieť, aby sa ubezpečil, že ste wraparound na začiatok kľúčového slova 634 00:47:36,230 --> 00:47:37,770 keď ste na konci. 635 00:47:37,770 --> 00:47:42,030 Ak vidíte tu sme u i, vedľa nich má byť o 636 00:47:42,030 --> 00:47:47,690 Takže chcete nájsť nejaký spôsob, ako byť schopný wraparound na začiatku svojho kľúčového slova 637 00:47:47,690 --> 00:47:49,470 zakaždým, keď sa dostanete na koniec. 638 00:47:49,470 --> 00:47:55,040 A tak znova, aký druh subjektu je užitočné v tomto prípade pre obal okolo? 639 00:47:56,630 --> 00:47:59,840 Rovnako ako v počítaní off príklade. 640 00:47:59,840 --> 00:48:03,710 [Študent] znak percenta. >> Jo, znak percent, čo je modulo. 641 00:48:03,710 --> 00:48:11,250 Takže modulo príde vhod tu, ak chcete zabaliť cez index v ohai. 642 00:48:11,250 --> 00:48:17,700 A práve rýchla nápoveda: Skúste myslieť na balenie nad kľúčového slova trochu ako počítanie off, 643 00:48:17,700 --> 00:48:23,590 kde v prípade, že je 3 skupiny, 4. osoba, 644 00:48:23,590 --> 00:48:30,610 ich počet, že oni hovorili bol 4 mod 3, ktorý bol 1. 645 00:48:30,610 --> 00:48:32,880 Tak skúste a myslím, že to takto. 646 00:48:34,770 --> 00:48:42,740 Ako ste videli vo vzorci, kde máte CI a potom PI, ale potom kJ, 647 00:48:42,740 --> 00:48:44,700 chcete, aby sa ubezpečil, že budete mať prehľad o nich. 648 00:48:44,700 --> 00:48:47,580 Nemusíte volať to nie som ja, nemusíte volať, že j, 649 00:48:47,580 --> 00:48:53,270 ale chcete, aby sa ubezpečil, že ste sledovať pozície, že ste na v otvorenom texte 650 00:48:53,270 --> 00:48:55,790 , Ako aj na pozíciu, ktorú sme u v kľúčovej 651 00:48:55,790 --> 00:48:59,840 pretože tieto nie sú nevyhnutne bude rovnaký. 652 00:48:59,840 --> 00:49:06,400 Nielen, že na základe kľúčového slova - by to mohlo byť úplne iné dĺžky než váš obyčajný text. 653 00:49:06,400 --> 00:49:09,140 Tiež váš holý, tam sú čísla a znaky, 654 00:49:09,140 --> 00:49:14,450 takže to nebude dokonale ladí dohromady. Áno. 655 00:49:14,450 --> 00:49:19,280 [Študent] Je tu funkcia pre zmenu prípad? 656 00:49:19,280 --> 00:49:24,530 Môžete zmeniť na základnom imaní A? >> Jo, tam určite je. 657 00:49:24,530 --> 00:49:27,890 Môžete sa pozrieť na - Verím, že je to toupper, všetko 1 slovo. 658 00:49:30,650 --> 00:49:36,310 Ale keď sa snažíte šifra veci a zachovať text, 659 00:49:36,310 --> 00:49:39,350 je najlepší v podstate mať oddelené prípady. 660 00:49:39,350 --> 00:49:42,040 Ak je to veľká, potom sa budete chcieť posunúť o tejto 661 00:49:42,040 --> 00:49:46,460 pretože vo vašom vzorci, keď sa pozriete späť, ako sme sa trochu cestách 662 00:49:46,460 --> 00:49:50,900 zameniteľne medzi ASCII spôsobom reprezentovať čísla 663 00:49:50,900 --> 00:49:55,020 a skutočné abecedný register, chceme sa uistiť, 664 00:49:55,020 --> 00:50:01,850 tam to bude nejaká vzoru, ktorý budete používať. 665 00:50:01,850 --> 00:50:04,580 Ďalšie poznámka o vzore, skutočne. 666 00:50:04,580 --> 00:50:07,250 Budeš určite prácu s číslami. 667 00:50:07,250 --> 00:50:11,280 Snažte sa používať magické čísla, ktorá je príkladom štýlu. 668 00:50:11,280 --> 00:50:18,470 Takže povedať, že chcete každý niečo časového posunu rád - 669 00:50:18,470 --> 00:50:22,400 Dobre, tak náznak, ďalší spojler je, keď idete k posunutiu niečo 670 00:50:22,400 --> 00:50:26,310 o určitú čiastku, snažte sa predstavovať, že skutočné číslo 671 00:50:26,310 --> 00:50:32,810 ale skúste a uvidíte, či môžete použiť ASCII hodnotu, ktorá bude trochu väčší zmysel. 672 00:50:32,810 --> 00:50:35,470 Ďalšia poznámka: Vzhľadom k tomu, máme čo do činenia s formulou, 673 00:50:35,470 --> 00:50:41,200 aj keď vaše TF bude trochu vedieť, čo vzor môžete používať, 674 00:50:41,200 --> 00:50:44,430 najlepšie vo svojej komentáre druhu vysvetliť logiku, ako, 675 00:50:44,430 --> 00:50:51,880 "Ja používam tento vzor, ​​pretože ..." a druh vysvetliť vzor stručne vo svojich komentároch. 676 00:50:54,090 --> 00:50:58,990 [To návod 2] Ak tam nie sú nejaké ďalšie otázky, potom som si len zostať tu trochu. 677 00:50:58,990 --> 00:51:04,370 Veľa šťastia s vaším PSet 2: Crypto a vďaka za príchod. 678 00:51:06,070 --> 00:51:08,620 [Študent] Ďakujem. Vďaka >>. 679 00:51:09,220 --> 00:51:10,800 [Media Offline intro]