1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Problem Set 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Sveučilište Harvard] 3 00:00:05,170 --> 00:00:07,490 [Ovo je CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 U redu. Pozdrav, svima, i dobrodošli na Walkthrough dva. 5 00:00:10,750 --> 00:00:14,330 Prvo, želim da vam čestitam na završnu pset jedan. 6 00:00:14,330 --> 00:00:18,140 Znam da je to moglo biti malo teško za neke od vas, 7 00:00:18,140 --> 00:00:20,460 mogao biti vaš prvi računalni program koji ste napisali, 8 00:00:20,460 --> 00:00:24,500 ali samo zapamtite da na kraju, kad se osvrnuti na kraju semestra, 9 00:00:24,500 --> 00:00:29,820 ćete pogledati pset jedan, a vi ćete reći: "Hej, ja mogao učiniti da se u pet minuta." 10 00:00:29,820 --> 00:00:35,700 Pa znate i povjerenja da će na kraju ove ćete sigurno pronaći pset jedna vrlo jednostavna. 11 00:00:35,700 --> 00:00:40,640 No, za sada je to veliki uspjeh, i čestitke za dobivanje učinio. 12 00:00:40,640 --> 00:00:44,010 Sada, također brzo napomena prije nego što smo dobili u mesa prohod. 13 00:00:44,010 --> 00:00:48,340 Ja samo želim da brzo umu da sam ponekad neće imati dovoljno vremena 14 00:00:48,340 --> 00:00:52,500 tijekom Walkthroughs proći kroz svaki način radi problema skup 15 00:00:52,500 --> 00:00:56,140 i radije samo možda usredotočiti na jedan ili dva vrste implementacije, 16 00:00:56,140 --> 00:00:57,750 načina na koje bi mogao to učiniti. 17 00:00:57,750 --> 00:01:01,970 Ali to ne znači da ste zabranjeno raditi na drugi način. 18 00:01:01,970 --> 00:01:05,980 Tu su često, kao i kod računalne znanosti, brojni načini obavljanja stvari, 19 00:01:05,980 --> 00:01:12,190 i tako definitivno slobodno koristiti neku drugu vrstu rješenja nego što sam mogao predstavljena. 20 00:01:12,190 --> 00:01:14,520 [Pset 2: kripto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. Odsjek Pitanja - 1. Cezar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 U redu. Dakle Problem postaviti dva: kripto je zabavno jednom. 23 00:01:20,650 --> 00:01:24,500 Opet, sa svakim pset ćete početi s dijelom pitanja 24 00:01:24,500 --> 00:01:29,600 koji će se provoditi u odjeljcima s dodijeljenom nastave kolega. 25 00:01:29,600 --> 00:01:31,670 Nećemo ići kroz njih preko prohod, 26 00:01:31,670 --> 00:01:35,100 ali definitivno će vam pomoći dovršiti pset. 27 00:01:35,100 --> 00:01:38,100 Dakle, prvi dio problema setu je Cezar. 28 00:01:38,100 --> 00:01:43,470 I tako se u Cezara netko će proći vam ključ s cijelim brojem, 29 00:01:43,470 --> 00:01:48,420 i vi ćete kodirati niz teksta koji su vam pružiti 30 00:01:48,420 --> 00:01:50,670 te ih vratiti šifriranu stvar. 31 00:01:50,670 --> 00:01:56,050 Ako je itko gledao Božićna priča, tu je primjer da postoji. 32 00:01:56,050 --> 00:01:59,090 Onda drugi dio problema setu je Vigenere, 33 00:01:59,090 --> 00:02:01,790 što je više naprednih šifriranje tehnika. 34 00:02:01,790 --> 00:02:05,640 I tako ćemo se kodirati komad teksta, 35 00:02:05,640 --> 00:02:09,600 osim umjesto sa samo jednim cijeli, mi zapravo idemo ga kodirati 36 00:02:09,600 --> 00:02:13,340 s ključnom riječi koje će korisnik nam može dati. 37 00:02:16,270 --> 00:02:22,090 Ok, tako da je prvi alat u alatni danas zapravo će biti ažuriranju aparata. 38 00:02:22,090 --> 00:02:26,430 Na raspravu bismo vidjeli stvari poput: "Zašto ne ovaj posao?" 39 00:02:26,430 --> 00:02:28,110 "Zašto ne Submit 50 posao?" 40 00:02:28,110 --> 00:02:31,830 i često rješenje je zapravo samo ažurirati svoj uređaj. 41 00:02:31,830 --> 00:02:36,730 I tako, ako ste samo pokrenuti u prozor terminala u vašem aparata sudoku igra yum-y - 42 00:02:36,730 --> 00:02:40,040 to je zastava rekavši da, ažurirati sve - ažuriranje, 43 00:02:40,040 --> 00:02:42,280 onda tvoj uređaj će se ažurirati ako je potrebno biti. 44 00:02:42,280 --> 00:02:46,960 I to ne boli, ako ste već na najnoviju verziju uređaja. 45 00:02:46,960 --> 00:02:51,280 Tada će samo reći nema novih ažuriranja dostupna i možete nastaviti raditi zajedno. 46 00:02:51,280 --> 00:02:55,800 No, to je dobro za izvršenje čak svaki put kada otvorite aparat 47 00:02:55,800 --> 00:02:57,140 jer mi smo još uvijek jako puno - 48 00:02:57,140 --> 00:03:00,320 ponekad ako dođemo u bug - to popravljajući u aparatu. 49 00:03:00,320 --> 00:03:03,180 Dakle, pobrinite se da imate najnoviju verziju uređaja 50 00:03:03,180 --> 00:03:07,710 i pokrenuti kako ažurirati postoji. 51 00:03:07,710 --> 00:03:14,360 U redu. Dakle, budući da imamo posla sa slovima i mijenja, enciphering stvari, 52 00:03:14,360 --> 00:03:20,410 idemo stvarno želite postati najbolji prijatelji s našim ASCII tablici. 53 00:03:20,410 --> 00:03:24,350 Postoje brojni one online, ako vam. Možda čak napraviti svoj vlastiti. 54 00:03:24,350 --> 00:03:29,950 Uglavnom, sa svakim slovom i svakom broju i svaki lik 55 00:03:29,950 --> 00:03:32,210 je broj povezan s njima, 56 00:03:32,210 --> 00:03:38,670 pa to je dobro vidjeti njihove ASCII vrijednosti uz stvarne pismu. 57 00:03:38,670 --> 00:03:42,310 To definitivno će vam pomoći u problemu setu. 58 00:03:42,310 --> 00:03:45,750 Jedna stvar koja me stvarno pomogao u ovom problematikom set bio je zapravo ga ispisati, 59 00:03:45,750 --> 00:03:48,380 i kao što sam prolazio, ja bi zapravo privući na njega, 60 00:03:48,380 --> 00:03:51,150 napisati: "Ako ovo mora ići tamo, onda ..." 61 00:03:51,150 --> 00:03:55,270 Vrsta izvući na njega te ga obilježavati, postali najbolji prijatelji sa svojim ASCII tablice. 62 00:03:57,240 --> 00:04:00,750 Onda imamo nekoliko drugih alata na raspolaganju. 63 00:04:00,750 --> 00:04:03,750 Ovaj put umjesto zapravo pitajući korisnika za sve svoje ulaza 64 00:04:03,750 --> 00:04:05,230 idemo napraviti kombinaciju. 65 00:04:05,230 --> 00:04:06,880 Mi ćemo ih pitati za neki ulaz, 66 00:04:06,880 --> 00:04:11,350 ali mi smo također ćeš samo koristiti argumente naredbenog retka. 67 00:04:11,350 --> 00:04:15,600 Dakle, kada su pokrenuti svoj program, obično ti kažeš. / Halo, na primjer, 68 00:04:15,600 --> 00:04:17,310 ako vaš program je hello.c. 69 00:04:17,310 --> 00:04:22,500 No, ovaj put, umjesto samo govoreći da oni mogu staviti riječi, argumenti poslije. 70 00:04:22,500 --> 00:04:27,210 I tako ćemo koristiti sve što prođe u nas kao ulaz, kao i, 71 00:04:27,210 --> 00:04:31,720 tako da se kreće izvan samo navelo na cijeli, ali također koriste argumente naredbenog retka. 72 00:04:31,720 --> 00:04:36,590 A onda ćemo ići u polja i gudače, koji ćemo biti koristeći puno kao dobro. 73 00:04:41,460 --> 00:04:44,810 Evo samo primjer jedne mini ASCII tablici. 74 00:04:44,810 --> 00:04:48,460 Kao što sam rekao, svako slovo odgovara broju, 75 00:04:48,460 --> 00:04:52,510 i tako se upoznate s tim. To će doći u ruci. 76 00:04:52,510 --> 00:04:55,610 I kasnije, kada smo počeli raditi neke ASCIIMath bavi brojevima - 77 00:04:55,610 --> 00:05:00,110 dodavanjem, oduzimanjem ih - onda definitivno dobro da se odnosi na ove ljestvice. 78 00:05:02,860 --> 00:05:06,920 Dakle, ovdje je primjer Cezarova šifra - nešto što ste možda igrao s. 79 00:05:06,920 --> 00:05:11,190 To je samo kotač. U suštini, tu je vanjski abeceda i onda je unutarnji abeceda. 80 00:05:11,190 --> 00:05:15,290 Dakle, ovdje je primjer Cezarova šifra, ali s ključem od 0. 81 00:05:15,290 --> 00:05:21,540 U osnovi, usklađen je s A, B usklađen je s B, pa sve do Z. 82 00:05:21,540 --> 00:05:26,590 Ali onda reći da smo htjeli tipku 3, za primjer. 83 00:05:26,590 --> 00:05:33,280 Tada bismo rotirati unutarnji kotač, tako da sada poravnava s D, itd. 84 00:05:33,280 --> 00:05:35,250 I tako je to u suštini ono što ćemo učiniti. 85 00:05:35,250 --> 00:05:38,340 Mi nemamo kotač, ali što ćemo učiniti je naš program 86 00:05:38,340 --> 00:05:44,490 vrsta pomak abecedu zajedno s nama određenu količinu brojeva. 87 00:05:44,490 --> 00:05:48,650 Dakle, kao što sam rekao prije, idemo da se bave naredbenog retka argumente 88 00:05:48,650 --> 00:05:50,390 kao i dobivanje integer. 89 00:05:50,390 --> 00:05:55,050 Dakle, način na koji će korisnik pokrenuti Caesar program je govoreći. / Caesar 90 00:05:55,050 --> 00:05:58,090 , a zatim unesete broj nakon toga. 91 00:05:58,090 --> 00:06:01,130 I taj broj predstavlja ključ, prijenosa, 92 00:06:01,130 --> 00:06:06,740 koliko puta idete da se rotirajući unutarnji kotač svog Cezarova šifra. 93 00:06:06,740 --> 00:06:08,390 I tako vidite ovdje primjer. 94 00:06:08,390 --> 00:06:14,550 Ako smo ušli slova od A do L u našem Cezarova šifra, 95 00:06:14,550 --> 00:06:19,520 onda bi se ulaz D kroz O, jer da je svako slovo pomiče preko tri puta, 96 00:06:19,520 --> 00:06:22,080 baš kao primjer kotač koji sam vam pokazao. 97 00:06:22,080 --> 00:06:25,300 Dakle, ako ste unijeli, na primjer, ovo je CS50! 98 00:06:25,300 --> 00:06:27,960 onda bi također premjestiti sve od slova. 99 00:06:27,960 --> 00:06:31,040 I to je važna stvar u oba cara i Vigenere 100 00:06:31,040 --> 00:06:34,890 je da ćemo preskočiti bilo koji ne-slova. 101 00:06:34,890 --> 00:06:39,160 Dakle, svi prostori, likovi, itd, brojevi, idemo ih zadržati isti. 102 00:06:39,160 --> 00:06:42,920 Mi samo idemo prebaciti pisma u ovom slučaju. 103 00:06:42,920 --> 00:06:45,870 Dakle, kao što vidite na volanu, imamo samo slova na raspolaganju nama, 104 00:06:45,870 --> 00:06:50,150 tako da samo želimo prebaciti pisma i šifriranje slova. 105 00:06:51,370 --> 00:06:56,720 Dakle, prva stvar za učiniti, vidjeli ste da je običaj za Cezara u problemu postaviti dva 106 00:06:56,720 --> 00:07:05,280 je pokrenuti Cezar, a zatim unesite broj kada ga pokrenete u terminalu. 107 00:07:05,280 --> 00:07:10,940 Dakle, ono što trebamo napraviti je da nekako taj ključ i pristup. 108 00:07:10,940 --> 00:07:14,730 I tako želimo da se nekako vidi da će to biti drugi argument naredbenog retka. 109 00:07:14,730 --> 00:07:20,950 Prvi će biti. / Caesar, a sljedeći će biti ključni broj. 110 00:07:22,190 --> 00:07:29,200 Dakle, prije nego što smo imali int main (void) za početak naše C programe. 111 00:07:29,200 --> 00:07:31,790 Idemo piling leđa sloj malo 112 00:07:31,790 --> 00:07:34,720 i zapravo se vidi da umjesto donošenja u praznini našem glavnom funkcijom 113 00:07:34,720 --> 00:07:37,920 mi zapravo bave dvije parametara. 114 00:07:37,920 --> 00:07:44,070 Imamo int argc nazivom, a zatim niz žice zove argv. 115 00:07:44,070 --> 00:07:46,030 Dakle argc je cijeli broj, 116 00:07:46,030 --> 00:07:49,640 i to predstavlja broj argumenata donesenih u svom programu. 117 00:07:49,640 --> 00:07:53,590 A onda argv je zapravo popis argumenata donesenih. 118 00:07:53,590 --> 00:08:00,820 Svi argumenti su žice, i tako argv predstavlja niz, popis, u nizovima. 119 00:08:01,830 --> 00:08:03,990 Ajmo pričati o nizovima malo. 120 00:08:03,990 --> 00:08:05,940 Nizovi su u suštini nova struktura podataka. 121 00:08:05,940 --> 00:08:09,660 Imamo Ints, mi smo u parovima, imamo konce, a sada imamo polja. 122 00:08:09,660 --> 00:08:13,820 Nizovi su strukture podataka koje mogu držati više vrijednosti istog tipa, 123 00:08:13,820 --> 00:08:18,320 tako bitno, popis bez obzira na tip želite. 124 00:08:18,320 --> 00:08:24,400 U suštini, ako ste htjeli popis brojeva sve u jednom varijablom, 125 00:08:24,400 --> 00:08:29,090 onda će stvoriti novu varijablu koja je tipa int niz. 126 00:08:29,090 --> 00:08:34,450 Dakle, polja su nula-indeksirani, što znači da je prvi element niza je na indeksu 0. 127 00:08:34,450 --> 00:08:41,799 Ako polje je duljine 4, kao u ovom primjeru, onda tvoj zadnji element koji će biti na indeksu 3, 128 00:08:41,799 --> 00:08:44,810 što je 4-1. 129 00:08:45,940 --> 00:08:48,420 Dakle, stvoriti niz, što će učiniti ovako nešto. 130 00:08:48,420 --> 00:08:51,440 Recimo da je htio dvostruki niz. 131 00:08:51,440 --> 00:08:56,520 To vrijedi i za bilo koju vrstu podataka tipa, ipak. 132 00:08:56,520 --> 00:09:00,210 Dakle, recimo da želite dvostruki niz. Recimo da želite nazvati spremnik. 133 00:09:00,210 --> 00:09:04,760 Baš kao što bi bilo koji drugi inicijalizirati dvojnika, 134 00:09:04,760 --> 00:09:09,760 što će reći dvaput, a zatim ime, ali ovaj put smo stavili uglate zagrade, 135 00:09:09,760 --> 00:09:13,570 a zatim broj će biti duljina niza. 136 00:09:13,570 --> 00:09:16,840 Imajte na umu da u nizovima mi nikada ne možete promijeniti dužinu, 137 00:09:16,840 --> 00:09:21,230 tako da uvijek morate definirati i odabrati koliko okvire, 138 00:09:21,230 --> 00:09:25,440 koliko je vrijednosti vaša niz će se održati. 139 00:09:25,440 --> 00:09:31,820 Dakle, postaviti različite vrijednosti u vašoj polje, vi ćete koristiti ovu sljedeću sintaksu, 140 00:09:31,820 --> 00:09:33,200 kao što možete vidjeti na slajdu. 141 00:09:33,200 --> 00:09:37,620 Imate spremnik indeks 0 će biti postavljen na 1,2, 142 00:09:37,620 --> 00:09:42,180 spremnik indeks 1 komplet za 2,4, itd. 143 00:09:42,180 --> 00:09:47,910 Tako da sada smo pregledali polja malo, ajmo natrag na argc i argv. 144 00:09:47,910 --> 00:09:52,220 Mi znamo da je argv je sada niz žice. 145 00:09:52,220 --> 00:09:55,080 Dakle, kada korisnik prolazi u - kažu oni pokretanju programa - 146 00:09:55,080 --> 00:09:58,740 oni kažu. / Pozdrav David Malan, 147 00:09:58,740 --> 00:10:05,160 Što će program učiniti za vas već zapravo doći do onoga što argc i argv su. 148 00:10:05,160 --> 00:10:07,620 Dakle, ne morate brinuti o tome. 149 00:10:07,620 --> 00:10:14,370 Argc u ovom slučaju će biti 3 jer vidi tri različita riječi odvojene razmacima. 150 00:10:14,370 --> 00:10:18,850 I tako onda je polje u ovom slučaju, prvi indeks će biti. / Halo, 151 00:10:18,850 --> 00:10:21,770 Sljedeći David, pored jednog Malan. 152 00:10:21,770 --> 00:10:25,640 Da li itko odmah vidjeti što se odnos između argv, 153 00:10:25,640 --> 00:10:28,990  polje, a argc je? 154 00:10:32,820 --> 00:10:38,090 Da. Mi ćemo ući da je u primjeru u args.c. 155 00:10:38,090 --> 00:10:42,880 Hajdemo vidjeti možemo li iskoristiti odnos između dva. 156 00:10:42,880 --> 00:10:46,550 Ovdje možete naći da je u aparatu zadani program 157 00:10:46,550 --> 00:10:49,450 otvoriti. C datoteke je ponekad Emacs. 158 00:10:49,450 --> 00:10:54,660 No, mi želimo da se bave gedit, tako što možete učiniti je da desni klik na C datoteci, 159 00:10:54,660 --> 00:11:04,580 idite na Properties, Open S, a zatim odaberite gedit, postavljena kao zadano, 160 00:11:04,580 --> 00:11:13,020 i sada je vaš program bi trebao otvoriti u gedit umjesto Emacs. 161 00:11:14,710 --> 00:11:16,290 Savršeno. 162 00:11:17,120 --> 00:11:25,520 Dakle, ovdje imam program koji želim isprintati svaki argument naredbenog retka. 163 00:11:25,520 --> 00:11:32,050 Dakle, bez obzira na korisničke ulazi, želim biti ga vratiti ih na novi redak. 164 00:11:32,050 --> 00:11:36,710 Dakle, ono što je struktura koja možemo koristiti za iteraciju više nešto - 165 00:11:36,710 --> 00:11:40,380 nešto što vjerojatno koristiti u vašem pset 1? 166 00:11:40,380 --> 00:11:45,840 Ako želite ići kroz određenog broja stvari? >> [Student] Za petlje. 167 00:11:45,840 --> 00:11:48,910 Za petlje. Točno. Dakle, počnimo s for petlje. 168 00:11:48,910 --> 00:11:56,900 Imamo za int i = 0. Ajmo početi sa standardnom inicijalizacije varijabli. 169 00:11:56,900 --> 00:12:02,370 Ja ću ostaviti uvjet za set i onda reći i + +, ide raditi stvari tamo. 170 00:12:02,370 --> 00:12:04,090 U redu. 171 00:12:04,090 --> 00:12:11,590 Dakle, misleći natrag argv, ako argv je popis argumenata donesenih u programu 172 00:12:11,590 --> 00:12:15,380 i argc je broj argumenata u programu, 173 00:12:15,380 --> 00:12:21,280 onda to znači da je u suštini argc duljina argv, desno, 174 00:12:21,280 --> 00:12:28,970 jer tu će biti onoliko argumenata kao vrijednosti argc. 175 00:12:28,970 --> 00:12:35,910 Dakle, ako želimo ponoviti nad svaki element u argv, 176 00:12:35,910 --> 00:12:43,290 idemo želite svakom trenutku pristupiti varijablu u argv na određenom indeksu. 177 00:12:43,290 --> 00:12:49,060 To može biti zastupljena s tim, zar ne? 178 00:12:49,060 --> 00:12:53,430 Ova varijabla ovdje predstavlja posebnu niz u ovom slučaju 179 00:12:53,430 --> 00:12:57,030 jer to je niz polje - osobito string na tom određenom indeksu. 180 00:12:57,030 --> 00:13:00,690 Ono što želimo učiniti, u ovom slučaju želimo da ga isprintati, pa recimo printf. 181 00:13:00,690 --> 00:13:04,680 A sada argv je niz, pa želimo staviti da rezervirano mjesto tamo. 182 00:13:04,680 --> 00:13:08,430 Želimo novu liniju samo da izgleda dobro. 183 00:13:08,430 --> 00:13:12,530 Dakle, ovdje imamo za petlju. Mi nemamo stanje još. 184 00:13:12,530 --> 00:13:20,020 Tako sam počinje na 0, a onda svaki put to će ispisati zadani niz 185 00:13:20,020 --> 00:13:22,980 u tom indeksu u polju. 186 00:13:22,980 --> 00:13:28,410 Dakle, kada ne želimo da se zaustavi ispis elemenata u nizu? 187 00:13:28,410 --> 00:13:35,720 Kad smo završili, zar ne? Kad smo došli do kraja niza. 188 00:13:35,720 --> 00:13:38,870 Dakle, mi ne želimo da prelazi prošlosti duljine niza, 189 00:13:38,870 --> 00:13:43,700 a mi već znamo da ne treba da se zapravo aktivno saznati što duljina argv je 190 00:13:43,700 --> 00:13:47,520 jer je dao za nas, i što je to? Argc. Točno. 191 00:13:47,520 --> 00:13:56,640 Dakle, želimo učiniti ovaj broj procesa argc puta. 192 00:13:56,640 --> 00:13:59,550 Nisam u pravom imeniku. 193 00:14:02,100 --> 00:14:03,490 U redu. 194 00:14:03,490 --> 00:14:08,990 Sada ćemo napraviti argumenata. Nema pogreške, što je super. 195 00:14:08,990 --> 00:14:11,430 Dakle, neka je samo pokrenuti args. 196 00:14:11,430 --> 00:14:15,130 Što se to događa da se vrate u nas? To samo će ga ispisati natrag. 197 00:14:15,130 --> 00:14:18,320 "Vi unesene args u program, a ja ću ga dati natrag na vas." 198 00:14:18,320 --> 00:14:23,170 Dakle, recimo da želimo reći args onda foo bar. 199 00:14:23,170 --> 00:14:26,570 Pa onda ga ispisuje natrag do nas. Sve u redu? 200 00:14:26,570 --> 00:14:30,790 Dakle, tu je primjer kako možete koristiti argc i argv 201 00:14:30,790 --> 00:14:33,460 znajući da argc predstavlja duljinu argv. 202 00:14:33,460 --> 00:14:42,750 Pobrinite se da nikada ne sa nizovima pristup jednom izvan duljine niza 203 00:14:42,750 --> 00:14:45,140 jer C definitivno će vikati na tebe. 204 00:14:45,140 --> 00:14:47,560 Vi ćete dobiti nešto što se zove segmentacija kriv, 205 00:14:47,560 --> 00:14:52,470 koja nikada nije zabavno, u osnovi govoreći da pokušavate pristupiti nešto 206 00:14:52,470 --> 00:14:55,000 da ne postoji, ne pripadaju vama. 207 00:14:55,000 --> 00:14:59,430 Tako bi bili sigurni, a posebno s nula-kazala, ne želimo da - 208 00:14:59,430 --> 00:15:02,390 Kao na primjer, ako imamo niz duljine 4, 209 00:15:02,390 --> 00:15:07,240 da niz indeks 4 ne postoji, jer smo počeli na 0, na nultom indeksu. 210 00:15:07,240 --> 00:15:11,730 Ona će postati druga priroda baš kao i za petlje, kada smo započeli na 0. 211 00:15:11,730 --> 00:15:13,610 Dakle, samo to na umu. 212 00:15:13,610 --> 00:15:22,590 Vi ne želite ikada pristupiti indeks niza koji je izvan vašeg dosega. 213 00:15:26,710 --> 00:15:32,560 Tako možemo vidjeti kako sada možemo vrsta pristupa 214 00:15:32,560 --> 00:15:35,930 naredbenog retka argumente koji su prošli u. 215 00:15:35,930 --> 00:15:41,330 Ali, kao što ste vidjeli string, argv je zapravo niz polje. 216 00:15:41,330 --> 00:15:45,740 Dakle, to zapravo nije cijeli broj, no u Cezara želimo baviti brojeva. 217 00:15:45,740 --> 00:15:54,430 Srećom, tu je funkcija stvorena za nas da se zapravo može pretvoriti string u cijeli broj. 218 00:15:54,430 --> 00:15:58,710 Također ovdje mi se ne bave korisničkog unosa gdje smo ih je navelo 219 00:15:58,710 --> 00:16:03,740 za ulaz ovdje za ključ, tako da zapravo ne može reprompt i reći, 220 00:16:03,740 --> 00:16:07,840 "Oh, daj mi još jedan cijeli, kažu, ako je to ne vrijedi." 221 00:16:07,840 --> 00:16:10,540 Ali mi još uvijek ne treba da provjerite za pravilno korištenje. 222 00:16:10,540 --> 00:16:13,520 U Cezara oni su dozvoljeni samo da prođe u jednom broju, 223 00:16:13,520 --> 00:16:18,030 i tako oni moraju pokrenuti. / Cezara i onda oni moraju vam dati broj. 224 00:16:18,030 --> 00:16:23,660 Dakle argc mora biti određeni broj. 225 00:16:23,660 --> 00:16:29,060 Koji broj da bi se, ako oni moraju proći vam. / Cezara i zatim ključ? 226 00:16:29,060 --> 00:16:32,920 Što je argc? >> [Student] 2. >> Dvije. Točno. 227 00:16:32,920 --> 00:16:35,490 Dakle, želite da biste bili sigurni da argc je dva. 228 00:16:35,490 --> 00:16:39,620 Inače osnovi odbijaju pokrenuti program. 229 00:16:39,620 --> 00:16:43,040 U glavnom to je funkcija koja kaže int main, 230 00:16:43,040 --> 00:16:47,360 pa onda smo uvijek u dobrom 0 praksa povratka na kraju uspješnog programa. 231 00:16:47,360 --> 00:16:50,840 Dakle, ako, recimo, oni vam dati tri argumente naredbenog retka umjesto 2 232 00:16:50,840 --> 00:16:54,350 ili vam dati jedan primjer, a zatim ono što ćete učiniti je da ćete želite da provjerite da 233 00:16:54,350 --> 00:16:59,900 , a zatim se vratiti jednom rekao, ne, ja ne mogu nastaviti s ovim programom. 234 00:16:59,900 --> 00:17:03,190 [Student] Tu ne može biti prostor u vašem tekstu. >> Oprostite što? 235 00:17:03,190 --> 00:17:06,780 [Student] Tu ne može biti prostor u tekstu koji pokušavate šifriranje. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 U odnosu na tekst koji smo težak za šifriranje, koja zapravo dolazi kasnije 238 00:17:11,280 --> 00:17:13,970 kad smo dati taj tekst. 239 00:17:13,970 --> 00:17:18,260 Dakle, upravo sada smo samo prihvaćanjem kao zapovjednim argumenata stvarni broj, 240 00:17:18,260 --> 00:17:21,579 Stvarni pomak za Caesar enkripcijom. 241 00:17:21,579 --> 00:17:27,569 [Student] Zašto vam je potrebno dvoje, za razliku od samo jednog argc? Tu je definitivno jedan broj. 242 00:17:27,569 --> 00:17:32,200 Točno. Razlog zašto trebamo 2 za argc umjesto jednog 243 00:17:32,200 --> 00:17:36,260 je zato što kada pokrenete program i reći. / caesar ili. / halo, 244 00:17:36,260 --> 00:17:38,280 koji zapravo broji kao argument naredbenog retka. 245 00:17:38,280 --> 00:17:43,020 Pa onda da je već zauzima jedan i tako onda smo inputting 1 pomoćni. 246 00:17:45,030 --> 00:17:49,440 Dakle, ti si unosom zapravo niz u argument naredbenog retka. 247 00:17:49,440 --> 00:17:52,730 Što želite učiniti, za Cezara želimo baviti cijeli, 248 00:17:52,730 --> 00:17:57,180 tako da možete koristiti ovu funkciju atoi. 249 00:17:57,180 --> 00:18:02,850 I u osnovi, da prođe to u nizu, a onda će vam vratiti integer 250 00:18:02,850 --> 00:18:06,070 ako je moguće da bi taj string u cijeli broj. 251 00:18:06,070 --> 00:18:10,960 Sada se sjetiti kada smo se bave printf ili GetString, stvari kao što je to, 252 00:18:10,960 --> 00:18:13,390 smo uključiti knjižnice koje su specifične za nas. 253 00:18:13,390 --> 00:18:19,450 Dakle, na početku smo započeli s hash tag standardni I / O,. H, tako nešto. 254 00:18:19,450 --> 00:18:22,430 Pa, atoi nije unutar jedne od tih knjižnica, 255 00:18:22,430 --> 00:18:26,600 tako da ono što moramo učiniti je moramo uključiti pravo knjižnicu za to. 256 00:18:26,600 --> 00:18:32,720 Dakle sjetiti natrag Walkthrough jedan gdje sam se raspravljalo o priručnika funkciju. 257 00:18:32,720 --> 00:18:37,110 Možete upisati čovjeka u vašem terminalu, a zatim slijedi ime funkcije. 258 00:18:37,110 --> 00:18:39,720 I tako da će dovesti do cijeli popis njegove uporabe, 259 00:18:39,720 --> 00:18:42,890 ali, kao i to će dovesti do kojih knjižnica koja pripada. 260 00:18:42,890 --> 00:18:47,000 Dakle, ja ću ostaviti da vas koristiti priručnik funkciju atoi 261 00:18:47,000 --> 00:18:53,360 i shvatiti što knjižnica morate uključiti da bi mogli koristiti atoi funkcije. 262 00:18:54,450 --> 00:18:57,670 Tako smo dobili ključ, a sada je u pitanju dobivanje običan tekst, 263 00:18:57,670 --> 00:19:01,820 i to tako da zapravo će biti sfaust gdje zatražiti. 264 00:19:01,820 --> 00:19:05,540 Mi se bavila GetInt i GetFloat, i tako u istom duhu 265 00:19:05,540 --> 00:19:07,670 idemo se bave GetString. 266 00:19:07,670 --> 00:19:12,440 No, u ovom slučaju ne trebate učiniti bilo učiniti dok ili dok petlje provjeriti. 267 00:19:12,440 --> 00:19:14,480 GetString definitivno će nam dati niz, 268 00:19:14,480 --> 00:19:17,630 i mi idemo za šifriranje god korisnik nam daje. 269 00:19:17,630 --> 00:19:23,770 Dakle, možete pretpostaviti da su svi ovi korisnika unesene žice su točne. 270 00:19:23,770 --> 00:19:24,670 Izvrsno. 271 00:19:24,670 --> 00:19:27,270 Pa onda kad imaš tipku i jednom imaš tekst, 272 00:19:27,270 --> 00:19:31,660 Sada ono što je ostalo je da imate kodirati u čistim. 273 00:19:31,660 --> 00:19:36,530 Samo brzo da pokrije više žargon, cisti je ono što vam daje upute, 274 00:19:36,530 --> 00:19:41,030 i šifrirana je ono što im se vrate. 275 00:19:42,450 --> 00:19:45,850 Dakle, žice, da bi mogli proći kroz zapravo slovo po slovo 276 00:19:45,850 --> 00:19:48,550 jer imamo pomak svako slovo, 277 00:19:48,550 --> 00:19:51,390 mi razumijemo da konce, ako smo vrsta oguliti leđa sloja, 278 00:19:51,390 --> 00:19:54,130 vidimo da su oni samo jako popis likova. 279 00:19:54,130 --> 00:19:55,930 Jedan dolazi nakon druge. 280 00:19:55,930 --> 00:20:01,690 I tako možemo liječiti konce kao polja jer su nizovi znakova. 281 00:20:01,690 --> 00:20:05,640 Dakle, recimo da imate niz nazivom tekst, 282 00:20:05,640 --> 00:20:09,400 i unutar tog varijablu tekst je pohranjen Ovo je CS50. 283 00:20:09,400 --> 00:20:15,680 Zatim tekst na indeksu 0 će biti glavni T, indeks 1 bi h, itd. 284 00:20:17,530 --> 00:20:23,970 A onda s polja, u argc primjer u args.c, 285 00:20:23,970 --> 00:20:27,090 Vidjeli smo da smo morali ponoviti tijekom niz 286 00:20:27,090 --> 00:20:32,440 i tako smo se morali ponoviti od i = 0 do ja je manje od duljine. 287 00:20:32,440 --> 00:20:35,560 Dakle, trebamo neki način figuring out ono duljina naše string 288 00:20:35,560 --> 00:20:37,090 ako ćemo ponoviti preko njega. 289 00:20:37,090 --> 00:20:42,300 Srećom opet, tu je funkcija tu za nas, iako je kasnije u CS50 290 00:20:42,300 --> 00:20:45,860 definitivno ćete biti u stanju provesti i napraviti svoj vlastiti funkciju 291 00:20:45,860 --> 00:20:48,260 koji se može izračunati duljinu niza. 292 00:20:48,260 --> 00:20:52,120 No, za sada ćemo koristiti string duljine, tako strlen. 293 00:20:52,120 --> 00:21:00,440 Možete proći u nizu, a onda će se vratiti vam int koji predstavlja duljinu niza. 294 00:21:00,440 --> 00:21:05,840 Pogledajmo primjer kako bismo mogli biti u mogućnosti ponoviti više svaki lik u nizu 295 00:21:05,840 --> 00:21:08,470 i učiniti nešto s tim. 296 00:21:08,470 --> 00:21:13,250 Ono što želimo učiniti je ponoviti više svaki karakter niza, 297 00:21:13,250 --> 00:21:19,150 i što želimo učiniti je ispisati smo natrag svaki lik jedne strane 1 298 00:21:19,150 --> 00:21:22,060 osim što dodati nešto pokraj njega. 299 00:21:22,060 --> 00:21:27,020 Dakle, počnimo s for petlje. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Mi ćemo ostaviti prostor za uvjet. 301 00:21:32,700 --> 00:21:36,840 Želimo ponoviti dok smo do kraja niza, zar ne? 302 00:21:36,840 --> 00:21:41,340 Pa što onda funkcija nam daje duljinu niza? 303 00:21:41,340 --> 00:21:43,160 [Nečujno učenik odgovor] 304 00:21:43,160 --> 00:21:46,420 To je dužina od argumenata naredbenog retka. 305 00:21:46,420 --> 00:21:50,650 No, za niz želimo koristiti funkciju koja nam daje duljinu niza. 306 00:21:50,650 --> 00:21:53,090 Tako da je dužina niza. 307 00:21:53,090 --> 00:21:57,130 I tako onda morate proći u nizu na njega. 308 00:21:57,130 --> 00:21:59,760 To treba znati što string to treba izračunati duljinu. 309 00:21:59,760 --> 00:22:03,160 Dakle, u ovom slučaju imamo posla s niz s. 310 00:22:04,790 --> 00:22:05,860 Izvrsno. 311 00:22:05,860 --> 00:22:10,770 Pa onda ono što želimo učiniti, ajmo printf. 312 00:22:10,770 --> 00:22:14,850 Sada, želimo da se bave likovima. Želimo ispisati svaki pojedini lik. 313 00:22:14,850 --> 00:22:22,150 Kada želite da ispisati plovak, koju će koristiti rezervirano mjesto kao% f. 314 00:22:22,150 --> 00:22:24,580 Uz int bi koristili% d. 315 00:22:24,580 --> 00:22:30,890 I tako slično, s karakterom koristite% C reći ću se ispisuje karakter 316 00:22:30,890 --> 00:22:34,570 koji je pohranjen unutar varijable. 317 00:22:34,570 --> 00:22:40,840 Dakle, imamo ovo, i neka je dodati razdoblje i prostor za njega. 318 00:22:40,840 --> 00:22:45,430 Koji lik smo koristite? 319 00:22:45,430 --> 00:22:49,780 Mi ćemo biti koristeći god lik smo na u nizu. 320 00:22:49,780 --> 00:22:52,890 Pa onda idemo da se koristi nešto s nizom, 321 00:22:52,890 --> 00:22:56,420 ali želimo da se pristup određeni karakter tamo. 322 00:22:56,420 --> 00:23:02,740 Dakle, ako je samo niz polja, kako onda možemo pristupiti elemente polja? 323 00:23:02,740 --> 00:23:06,480 Imamo one uglate zagrade, a zatim smo stavili indeks tamo. 324 00:23:06,480 --> 00:23:11,820 Dakle, imamo uglate zagrade. Naš indeks u ovom slučaju mi ​​samo mogu koristiti. Točno. 325 00:23:15,290 --> 00:23:22,370 Dakle, ovdje mi govoriš da ćemo biti tiskanje znaka slijedi točkom i prostoru, 326 00:23:22,370 --> 00:23:30,870 i taj lik će biti ith pismo u našem niza s.. 327 00:23:32,920 --> 00:23:39,330 Samo ću spasiti da. Ok. 328 00:23:42,510 --> 00:23:46,840 Sada ću pokrenuti niz duljine. 329 00:23:46,840 --> 00:23:53,440 Dakle, imali smo niz nazivom OMG, a sada je još više naglašeno. 330 00:23:53,440 --> 00:23:57,870 Isto tako, ajmo reći da smo zapravo žele dobiti niz od korisnika. 331 00:23:57,870 --> 00:23:59,580 Kako bismo mogli to učiniti? 332 00:23:59,580 --> 00:24:01,610 Prije, kako smo dobili int? 333 00:24:01,610 --> 00:24:08,040 Mi smo rekli GetInt, zar ne? Ali to nije int, pa ajmo GetString. 334 00:24:11,780 --> 00:24:17,770 Učinimo string duljine. Ovdje nismo unijeti određenu brz. 335 00:24:17,770 --> 00:24:19,940 Dakle, ne znam. 336 00:24:19,940 --> 00:24:23,820 Ja ću staviti svoje ime ovdje i tako onda ja mogu učiniti jedna od onih stvari 337 00:24:23,820 --> 00:24:29,600 gdje sam dodijeliti riječ za svako slovo ili nešto slično. Cool. 338 00:24:29,600 --> 00:24:31,900 Tako da je dužina niza. 339 00:24:33,000 --> 00:24:34,640 Dakle, vratili smo se caru. 340 00:24:34,640 --> 00:24:38,620 Imamo nekoliko alata kako bismo ponoviti tijekom niza, 341 00:24:38,620 --> 00:24:41,250 kako smo pristupili svaki pojedini element. 342 00:24:41,250 --> 00:24:44,720 Dakle, sada možemo vratiti na programu. 343 00:24:44,720 --> 00:24:48,650 Kao što sam spomenuo prije, u ASCII tablici, vaš najbolji prijatelj, 344 00:24:48,650 --> 00:24:52,300 ćeš vidjeti brojeve koji su povezani sa svakim slovom. 345 00:24:52,300 --> 00:24:55,900 Dakle, ovdje reći da je naša cisti je sam vrtoglavicu! 346 00:24:55,900 --> 00:25:01,090 Onda svaki od tih znakova će imati broj i ASCII vrijednost povezane s njom, 347 00:25:01,090 --> 00:25:04,710 čak apostrof, čak i prostor, čak i uskličnik, 348 00:25:04,710 --> 00:25:06,600 tako da ćete želite zadržati na umu. 349 00:25:06,600 --> 00:25:12,360 Tako recimo naše tipku da korisnik uključeni u njihov argument naredbenog retka je šest. 350 00:25:12,360 --> 00:25:17,770 To znači da za prvo slovo, što je sam, koji je predstavljen 73, 351 00:25:17,770 --> 00:25:25,610 Želite li se vratiti na njih bez obzira na pismo predstavlja ASCII vrijednost 73 + 6. 352 00:25:25,610 --> 00:25:29,020 U ovom slučaju to bi bilo 79. 353 00:25:30,840 --> 00:25:35,040 Sada želimo ići na sljedeći znak. 354 00:25:35,040 --> 00:25:40,960 Dakle, sljedeći u indeksu 1. čistim bi biti apostrof. 355 00:25:40,960 --> 00:25:46,780 Ali zapamtite samo želimo da kodirati slova. 356 00:25:46,780 --> 00:25:50,040 Dakle, želimo biti sigurni da je apostrof zapravo ostaje ista, 357 00:25:50,040 --> 00:25:54,310 da mi ne mijenjaju od 39 do 45 što god je. 358 00:25:54,310 --> 00:25:57,150 Želimo ga zadržati kao apostrof. 359 00:25:57,150 --> 00:26:00,780 Dakle, želimo se sjetiti samo kodirati slova 360 00:26:00,780 --> 00:26:04,560 jer želimo sve druge simbole ostati nepromijenjena u našem programu. 361 00:26:04,560 --> 00:26:07,130 Još jedna stvar koja želimo je očuvati kapitalizaciju. 362 00:26:07,130 --> 00:26:10,250 Dakle, kada imate veliko slovo, to bi trebalo ostati kao velika slova. 363 00:26:10,250 --> 00:26:12,830 Lowercases treba ostati kao malim slovima. 364 00:26:13,620 --> 00:26:19,480 Dakle, neke korisne funkcije moći nositi sa samo enciphering slova 365 00:26:19,480 --> 00:26:22,380 i držati očuvanje kapitalizaciju stvari 366 00:26:22,380 --> 00:26:25,130 je isalpha, isupper, islower funkcije. 367 00:26:25,130 --> 00:26:29,270 I tako su funkcije koje vraćaju vam Boolean vrijednost. 368 00:26:29,270 --> 00:26:34,180 Uglavnom, istina ili laž. Je li ovo veliko? Je li ovo alfanumerički? 369 00:26:34,180 --> 00:26:37,180 Je li ovo pismo, u suštini. 370 00:26:37,180 --> 00:26:41,070 Dakle, ovdje su tri primjera kako bi koristili tu funkciju. 371 00:26:41,070 --> 00:26:47,060 Uglavnom, da bi mogao testirati je li vrijednost vraća vas tu funkciju je istinita ili lažna 372 00:26:47,060 --> 00:26:49,400 temelji se na taj ulaz. 373 00:26:49,400 --> 00:26:54,880 Ili ne kodirati nešto ili ga Cipher ili bi bili sigurni da je to veliko, itd. 374 00:26:54,880 --> 00:27:01,080 [Student] Može li samo objasniti one malo više i kako ih koristiti? >> Da, to je sigurno. 375 00:27:01,080 --> 00:27:08,470 Dakle, ako gledamo unatrag, ovdje imamo kapital I, zar ne? 376 00:27:08,470 --> 00:27:14,550 Dakle, mi znamo da sam ide u O jer sam + 6 je O. 377 00:27:14,550 --> 00:27:18,740 No, mi želimo biti sigurni da je O će biti glavni O. 378 00:27:18,740 --> 00:27:22,940 Tako je u osnovi, to je vrsta će promijeniti naš ulaz. 379 00:27:22,940 --> 00:27:26,870 Dakle, da li je to veliko ili neće vrsta promijeniti način na koji smo se s njima nositi. 380 00:27:26,870 --> 00:27:32,360 Dakle, ako mi koristimo isupper funkciju na tom indeksu, 381 00:27:32,360 --> 00:27:36,480 tako isupper ("ja"), koji se vraća za nas prave, tako da smo znali da je gornja. 382 00:27:36,480 --> 00:27:40,360 Pa onda na temelju toga, kasnije ćemo ići u formuli 383 00:27:40,360 --> 00:27:42,750 da ćete biti koristeći prebaciti stvari u Cezara, 384 00:27:42,750 --> 00:27:46,560 pa onda u osnovi, postoji će biti malo drugačija formula ako je to veliko 385 00:27:46,560 --> 00:27:50,670 za razliku od mala slova. Smisla? 386 00:27:51,020 --> 00:27:52,760 Da. Bez brige. 387 00:27:54,900 --> 00:27:58,990 Razgovarao sam malo o dodavanju 6 na pismu, koje ne sasvim smisla 388 00:27:58,990 --> 00:28:05,500 osim kad smo vrsta shvatiti da su ti likovi 389 00:28:05,500 --> 00:28:08,920 su vrste međusobno s brojeva. 390 00:28:08,920 --> 00:28:11,250 Ono što mi radimo je da smo vrsta korištenja implicitnog lijevanje. 391 00:28:11,250 --> 00:28:18,100 Mi ćemo ići u lijevanje malo kasnije o tome gdje se vrijednost i da se to pretvorilo u neku drugu vrstu 392 00:28:18,100 --> 00:28:20,440 nego što je prvotno bilo. 393 00:28:20,440 --> 00:28:25,910 No, s ovim pset ćemo moći vrsta naizmjenično koristiti znakove 394 00:28:25,910 --> 00:28:30,880 i njihove odgovarajuće cjelobrojne vrijednosti. 395 00:28:30,880 --> 00:28:35,140 Dakle, ako ste jednostavno spakirati lik sa samo jednostrukim navodnicima, 396 00:28:35,140 --> 00:28:40,390 onda ćete biti u mogućnosti da rade s njim s brojeva, koje se bave s njom kao cijeli broj. 397 00:28:40,390 --> 00:28:48,040 Dakle, kapital C odnosi se na 67. Mala f odnosi do 102. 398 00:28:48,040 --> 00:28:51,480 Opet, ako želite znati te vrijednosti, pogled na vaše ASCII tablice. 399 00:28:51,480 --> 00:28:56,160 Dakle, idemo u nekim primjerima kako biste mogli oduzeti i dodati, 400 00:28:56,160 --> 00:29:03,130 kako ste zapravo stvarno može raditi s tim likovima, koristite ih naizmjenično. 401 00:29:03,870 --> 00:29:11,350 Ja bih rekao da ASCIIMath će izračunati dodavanje karaktera na cijeli 402 00:29:11,350 --> 00:29:17,590 a zatim prikazuje rezultanta karakter kao i rezultanta ASCII vrijednost. 403 00:29:17,590 --> 00:29:22,290 I tako ovdje govorim - hrapavi bave ovom dijelu poslije - 404 00:29:22,290 --> 00:29:29,100 ali u osnovi, ja govorim da korisnik treba reći pokretanje ASCIIMath zajedno s ključem, 405 00:29:29,100 --> 00:29:30,880 i ja sam rekao da se taj ključ će biti broj 406 00:29:30,880 --> 00:29:34,600 s kojima ćemo dodati ovaj lik. 407 00:29:34,600 --> 00:29:38,560 Dakle, ovdje primijetiti da je od sam tražeći ključ, 408 00:29:38,560 --> 00:29:40,590 jer sam tražio da oni daju mi ​​jedna stvar, 409 00:29:40,590 --> 00:29:45,600 Ja samo želim prihvatiti. / Asciimath i ključ. 410 00:29:45,600 --> 00:29:49,330 Dakle, ja ću zahtijevati da argc je jednaka dva. 411 00:29:49,330 --> 00:29:54,360 Ako nije, onda ću se vratiti jednom, a program će se zatvoriti. 412 00:29:55,070 --> 00:29:58,540 Dakle, govorim ključ neće biti prvi komandna linija argumenti, 413 00:29:58,540 --> 00:30:05,080 to će biti drugi, a kao što vidite ovdje, 414 00:30:05,080 --> 00:30:11,790 Ja ću okrenuti da u cijeli broj. 415 00:30:15,740 --> 00:30:19,230 Onda ću postaviti znak da se r. 416 00:30:19,230 --> 00:30:23,970 Uočite da tip varijable Chr je zapravo cijeli. 417 00:30:23,970 --> 00:30:30,480 Način na koji sam u mogućnosti koristiti r kao cijeli broj je ga encasing s tim jednostruke navodnike. 418 00:30:33,850 --> 00:30:40,560 Dakle, natrag na naš printf izjavi gdje imamo rezervirano za nekog lika 419 00:30:40,560 --> 00:30:43,590 i onda rezervirano za cijeli broj, 420 00:30:43,590 --> 00:30:49,450 lik predstavlja Chr, a cijeli je ključ. 421 00:30:49,450 --> 00:30:54,320 I tako onda idemo u rezultatu dodajte dvije zajedno. 422 00:30:54,320 --> 00:30:58,420 Tako ćemo dodati r + god Ključ je, 423 00:30:58,420 --> 00:31:03,520 i onda ćemo ispisati rezultat toga. 424 00:31:06,210 --> 00:31:14,220 Dakle, budimo asciimath. To je do danas, pa neka je samo pokrenuti asciimath. 425 00:31:14,220 --> 00:31:18,290 Oh, ali vidite, to ne učiniti ništa, jer nismo zapravo dati ključ. 426 00:31:18,290 --> 00:31:23,850 Dakle, kada se upravo vratio jedan, naš glavni funkcije, to se upravo vratio natrag do nas. 427 00:31:23,850 --> 00:31:29,250 Pa onda ajmo proći u ključu. Netko mi dati broj. >> [Student] 4. 428 00:31:29,250 --> 00:31:30,920 4. Ok. 429 00:31:30,920 --> 00:31:39,280 Dakle, r porastao za 4 će nam dati V, što odgovara ASCII vrijednosti 118. 430 00:31:39,280 --> 00:31:43,880 Pa onda to nekako ima smisla da - 431 00:31:43,880 --> 00:31:51,250 Zapravo, mogu li vas pitati, što mislite ASCII vrijednost od r je li r + 4 118? 432 00:31:53,070 --> 00:31:55,470 Zatim, da, r je 114. 433 00:31:55,470 --> 00:32:03,010 Dakle, ako pogledate na ASCII tablici onda, naravno, vidjet ćete da je r predstavlja 114. 434 00:32:03,010 --> 00:32:08,610 Dakle, sada znamo da možemo dodati prirodni brojevi do likova, ovo izgleda prilično jednostavna. 435 00:32:08,610 --> 00:32:12,740 Mi smo samo ćemo ponoviti tijekom niza kao što smo vidjeli u primjeru prije. 436 00:32:12,740 --> 00:32:17,170 Mi ćemo provjeriti je li to pismo. 437 00:32:17,170 --> 00:32:20,420 Ako je tako, onda ćemo ga prebaciti na bilo koji ključ je. 438 00:32:20,420 --> 00:32:23,650 Prilično jednostavno, osim kada dođete do ovako, 439 00:32:23,650 --> 00:32:32,140 vidiš da je z, zastupana po 122, onda će vam dati drugačiji karakter. 440 00:32:32,140 --> 00:32:37,770 Mi zapravo žele ostati unutar naše abecede, zar ne? 441 00:32:37,770 --> 00:32:43,180 Dakle, moramo shvatiti neki način vrste omatanje oko. 442 00:32:43,180 --> 00:32:47,190 Kada dođete do Zed i želite povećati u određenom broju, 443 00:32:47,190 --> 00:32:51,230 ne želite ići u izvan ASCII abecede dijelu; 444 00:32:51,230 --> 00:32:54,140 Želite li završiti natrag sve do A. 445 00:32:54,140 --> 00:32:58,550 No, imajte na umu da ste još uvijek čuva slučaj. 446 00:32:58,550 --> 00:33:00,980 Dakle, znajući da slova ne mogu postati simboli 447 00:33:00,980 --> 00:33:05,290 baš kao simbola se ne događa da se mijenja, kao dobro. 448 00:33:05,290 --> 00:33:08,170 U posljednjem pset svakako nije potrebno, 449 00:33:08,170 --> 00:33:14,310 ali izbor je provesti svoj pohlepni pset pomoću modul funkciju. 450 00:33:14,310 --> 00:33:17,230 Ali sada mi zapravo ćete morati koristiti modul, 451 00:33:17,230 --> 00:33:19,900 pa neka je samo ići preko ove malo. 452 00:33:19,900 --> 00:33:26,920 U osnovi, kada imate x modulu y, koji vam daje ostatak x podijeljenih po y. 453 00:33:26,920 --> 00:33:30,930 Ovdje su neki primjeri ovdje. Imamo 27% 15. 454 00:33:30,930 --> 00:33:36,200 Uglavnom, kada oduzmete 15 od 27 onoliko puta koliko je moguće bez uzimajući negativna 455 00:33:36,200 --> 00:33:39,060 onda ćete dobiti 12 lijevo preko. 456 00:33:39,060 --> 00:33:44,650 Dakle, to je vrsta kao u matematici kontekstu, ali kako možemo zapravo koristiti ovaj? 457 00:33:44,650 --> 00:33:47,100 To će biti korisno za naše wrapover. 458 00:33:47,100 --> 00:33:55,420 Za to, recimo samo da sam pitao sve vas podijeliti u tri skupine. 459 00:33:55,420 --> 00:33:58,010 Ponekad možete to učiniti u skupinama i tako nešto. 460 00:33:58,010 --> 00:34:01,320 Recimo sam rekao: "Dobro, želim da svi mogu podijeliti u tri." 461 00:34:01,320 --> 00:34:04,240 Kako bi ste to učinili? 462 00:34:04,240 --> 00:34:06,810 [Nečujno učenik odgovor] Da, točno. Count off. Ok. 463 00:34:06,810 --> 00:34:10,260 Ajmo zapravo to učiniti. Želite li početi? 464 00:34:10,260 --> 00:34:13,810 [Studenti računajući off] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Ali ne zaboravite ... >> [Student] Oh, žao mi je. 466 00:34:16,620 --> 00:34:18,730 To je stvarno dobra stvar. 467 00:34:18,730 --> 00:34:24,130 Rekli ste četiri, ali zapravo želimo vam reći jedan, jer samo želimo tri skupine. 468 00:34:24,130 --> 00:34:30,159 Dakle, kako - Ne, to je stvarno dobar primjer, jer kako se onda može reći jedan? 469 00:34:30,159 --> 00:34:33,370 Što je odnos između 4 i 1? 470 00:34:33,370 --> 00:34:36,760 Pa, 4 mod 3 1. 471 00:34:36,760 --> 00:34:41,460 Dakle, ako ste i dalje, te će biti dva. 472 00:34:41,460 --> 00:34:44,540 Dakle, imamo jedan, dva, tri, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Opet, ti si zapravo 5. osoba. Kako znate da kažem dvije umjesto pet? 474 00:34:49,420 --> 00:34:53,760 Kažeš 5 mod 3 2. 475 00:34:53,760 --> 00:34:59,100 Želim vidjeti koliko skupine 3 su lijevo preko, onda što bi ja sam 476 00:34:59,100 --> 00:35:02,860 I tako onda ako smo nastavili duž cijele sobe, 477 00:35:02,860 --> 00:35:07,760 onda bismo vidjeli da smo uvijek zapravo primjenom mod funkciju za sebe 478 00:35:07,760 --> 00:35:09,990 na vrsta odbrojati. 479 00:35:09,990 --> 00:35:14,490 To je više vrsta materijalne primjer kako biste mogli koristiti modulo 480 00:35:14,490 --> 00:35:17,960 jer siguran sam da je većina od nas vjerojatno su prošli kroz taj proces 481 00:35:17,960 --> 00:35:19,630 gdje smo morali računati off. 482 00:35:19,630 --> 00:35:21,840 Sva pitanja o modulu? 483 00:35:21,840 --> 00:35:25,360 To će biti prilično važno razumjeti koncepte ovo, 484 00:35:25,360 --> 00:35:28,640 pa želim da biste bili sigurni vi razumjeti. 485 00:35:28,640 --> 00:35:34,660 [Student] Ako ne postoji ostatak, to vam je stvarni broj? 486 00:35:34,660 --> 00:35:40,430 Ako jedan od prvih tri od njih su to učinili, to će im dati ono što oni zapravo bili, 487 00:35:40,430 --> 00:35:43,310 ili bi to dali im [nečujno] >> To je dobro pitanje. 488 00:35:43,310 --> 00:35:48,750 Kada nema ostatak za modulo - tako da imate šest mod 3 - 489 00:35:48,750 --> 00:35:52,340 da zapravo vam daje natrag 0. 490 00:35:53,670 --> 00:35:57,290 Mi ćemo razgovarati o tome malo kasnije. 491 00:35:58,810 --> 00:36:07,720 Oh yeah, na primjer, 3. osoba - 3 mod 3 je zapravo 0, ali je rekla tri. 492 00:36:07,720 --> 00:36:14,900 Dakle, to je vrsta kao unutarnju ulova, na primjer, 493 00:36:14,900 --> 00:36:17,620 kao ok, ako mod je 0 onda ću biti treći čovjek. 494 00:36:17,620 --> 00:36:22,740 No, mi ćemo ući u vrste kako bismo se htjeli baviti ono 0 je kasnije. 495 00:36:22,740 --> 00:36:32,750 Dakle, sada smo nekako imaju način mapiranja Zed na desnoj pismu. 496 00:36:32,750 --> 00:36:34,920 Dakle, sada smo prošli kroz tih primjera, 497 00:36:34,920 --> 00:36:37,880 smo vrsta vidjeti kako Cezar bi mogli raditi. 498 00:36:37,880 --> 00:36:42,640 Možete vidjeti dva pisma, a zatim ih možete vidjeti kreće. 499 00:36:42,640 --> 00:36:44,430 Tako ćemo pokušati izraziti da u smislu formule. 500 00:36:44,430 --> 00:36:46,940 Ova formula je zapravo dao za vas u spec., 501 00:36:46,940 --> 00:36:52,070 ali neka je vrsta izgled kroz ono što svaka varijabla znači. 502 00:36:52,070 --> 00:36:55,000 Naš krajnji rezultat će biti šifrirana. 503 00:36:55,000 --> 00:36:58,300 Dakle, to govori da ith karakter šifrirana 504 00:36:58,300 --> 00:37:02,500 će odgovarati ith karaktera čistim. 505 00:37:02,500 --> 00:37:08,130 To ima smisla jer želimo uvijek biti podstava tih stvari. 506 00:37:08,130 --> 00:37:13,480 Dakle, to će biti ith karakter šifrirana plus k, koji je naš ključni - 507 00:37:13,480 --> 00:37:17,230 da ima smisla - i onda imamo ovaj mod 26. 508 00:37:17,230 --> 00:37:19,860 Sjetite se kada smo imali Zed 509 00:37:19,860 --> 00:37:24,190 nismo htjeli da se u karakteru, pa smo htjeli da ga mod 510 00:37:24,190 --> 00:37:26,540 i vrsta folijom oko abecede. 511 00:37:26,540 --> 00:37:33,430 Nakon Zed li će ići, B, C, D, dok je dobio pravi broj. 512 00:37:33,430 --> 00:37:44,690 Tako znamo da Zed, ako + 6, bi nam f jer nakon Zed dolazi a, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Dakle, sjetimo se sigurno znamo da je Zed + 6 će nam dati f. 514 00:37:52,530 --> 00:38:03,530 U ASCII vrijednosti, z 122 i f je 102. 515 00:38:03,530 --> 00:38:10,570 Dakle, moramo pronaći neki način izrade našu Caesar formulu nam dati 102 516 00:38:10,570 --> 00:38:13,590 nakon uzimanja u 122. 517 00:38:13,590 --> 00:38:19,550 Dakle, ako mi samo primijeniti ovu formulu, ('z' + 6)% 26, koja zapravo vam daje 24 518 00:38:19,550 --> 00:38:25,980 jer 122 + 6 128; 128% 26 daje vam 24 ostatak. 519 00:38:25,980 --> 00:38:29,140 No, to ne znači stvarno f. To definitivno nije 102. 520 00:38:29,140 --> 00:38:33,590 To je također ne 6. slovo abecede. 521 00:38:33,590 --> 00:38:41,550 Dakle, očito, moramo imati neki način ugađati ovo malo. 522 00:38:42,970 --> 00:38:51,340 U odnosu na redovne abecede, znamo da je z 26. slovo i f je šesti. 523 00:38:51,340 --> 00:38:55,460 Ali mi smo u informatici, pa idemo indeksa na 0. 524 00:38:55,460 --> 00:39:00,690 Pa onda umjesto z je broj 26, idemo reći da je broj 25 525 00:39:00,690 --> 00:39:02,630 jer je 0. 526 00:39:02,630 --> 00:39:04,770 Dakle, sada idemo primijeniti ovu formulu. 527 00:39:04,770 --> 00:39:11,710 Imamo z predstavlja 25 + 6, koji vam daje 31. 528 00:39:11,710 --> 00:39:15,790 I 31 mod 26 daje vam 5 kao ostatak. 529 00:39:15,790 --> 00:39:20,500 To je savršen, jer znamo da je f 5. slovo u abecedi. 530 00:39:20,500 --> 00:39:26,400 No, to još uvijek nije f, zar ne? To još uvijek nije 102. 531 00:39:26,400 --> 00:39:32,730 Dakle za ovaj pset, izazov će biti pokušava saznati odnos 532 00:39:32,730 --> 00:39:36,910 između pretvaranje između tih ASCII vrijednostima i abecednom indeksu. 533 00:39:36,910 --> 00:39:40,280 U suštini, ono što ćete želite učiniti, želite započeti s ASCII vrijednostima, 534 00:39:40,280 --> 00:39:45,390 ali onda želite nekako prevesti u abecednom indeksu 535 00:39:45,390 --> 00:39:52,610 onda izračunati što pismo bi trebao biti - u osnovi, ono što njegov abecedni indeks 536 00:39:52,610 --> 00:39:57,660 od šifra lika - onda prevesti natrag u ASCII vrijednostima. 537 00:39:57,660 --> 00:40:04,870 Dakle, ako ste bič svoj ASCII tablicu, a zatim pokušajte pronaći odnose između, recimo, 102 i 5 538 00:40:04,870 --> 00:40:10,440 ili 122 i 25 godina. 539 00:40:12,140 --> 00:40:15,690 Dobili smo naš ključ od argumenata naredbenog retka, mi smo stečen čistim, 540 00:40:15,690 --> 00:40:17,520 mi smo ga enciphered. 541 00:40:17,520 --> 00:40:19,820 Sada svi smo lijevo učiniti je ispisati ga. 542 00:40:19,820 --> 00:40:22,040 Mogli smo to učiniti nekoliko različitih načina. 543 00:40:22,040 --> 00:40:24,570 Što možemo učiniti je zapravo ispis kao što smo ići zajedno. 544 00:40:24,570 --> 00:40:28,250 Kao što smo ponoviti preko znakove u nizu, 545 00:40:28,250 --> 00:40:31,660 jednostavno smo mogli samo ispisati pravu onda kada smo ga izračunati. 546 00:40:31,660 --> 00:40:36,030 Alternativno, možete se također može pohraniti ga u niz i imaju niz znakova 547 00:40:36,030 --> 00:40:39,280 i na kraju ponoviti tijekom tog cijelog niza i isprintati. 548 00:40:39,280 --> 00:40:40,980 Dakle, imate nekoliko mogućnosti za to. 549 00:40:40,980 --> 00:40:47,280 I zapamtite da% c će biti rezervirano za ispis karakter. 550 00:40:47,280 --> 00:40:50,420 Dakle, tu imamo Cezar, a sada smo prešli na Vigenere, 551 00:40:50,420 --> 00:40:57,580 koja je vrlo slična caru, ali samo malo složenije. 552 00:40:57,580 --> 00:41:03,310 Dakle, u suštini s Vigenere se da ćeš biti prolazi u ključnoj riječi. 553 00:41:03,310 --> 00:41:06,510 Dakle, umjesto broja, ti si idući u imati niz, 554 00:41:06,510 --> 00:41:09,200 i to tako da će se ponašati kao ključnu riječ. 555 00:41:09,200 --> 00:41:14,440 Tada, kao i obično, ti si idući u dobiti brz za niz od korisnika 556 00:41:14,440 --> 00:41:19,050 i onda ga kodirati i zatim im dati šifrirana leđa. 557 00:41:19,050 --> 00:41:24,650 Dakle, kao što sam rekao, to je vrlo sličan Cezara, osim umjesto pomicanja do određenog broja, 558 00:41:24,650 --> 00:41:30,620 broj zapravo će se promijeniti svaki put od karaktera do karaktera. 559 00:41:30,620 --> 00:41:34,890 Da predstavljati taj stvarni broj pomak, to je zastupao tipkovnice slova. 560 00:41:34,890 --> 00:41:43,150 Dakle, ako ste unijeli u smjeni od, na primjer, onda koji bi odgovarao pomak 0. 561 00:41:43,150 --> 00:41:45,900 Dakle, to je opet vratiti u abecednom indeksu. 562 00:41:45,900 --> 00:41:49,100 Što bi moglo biti korisno ako ste vidjeli da smo zapravo se bave ASCII vrijednostima 563 00:41:49,100 --> 00:41:51,790 kao i slova, kao i abecednom indeksu, 564 00:41:51,790 --> 00:41:58,020 možda pronaći ili napraviti svoj vlastiti ASCII tablicu koja prikazuje abecedni indeks od 0 do 25, 565 00:41:58,020 --> 00:42:03,750 kroz z, i ASCII vrijednosti, tako da možete vidjeti vrste odnosa 566 00:42:03,750 --> 00:42:07,020 i ocrtati i pokušati pronaći neke obrasce. 567 00:42:07,020 --> 00:42:11,010 Isto tako, ako ste bili prebacuje na određenom stupnju f - 568 00:42:11,010 --> 00:42:21,110 i to je bilo malih ili velikih slova f - onda koji bi odgovarao pet. 569 00:42:21,110 --> 00:42:24,180 Jesmo li dobro tako daleko? 570 00:42:25,770 --> 00:42:30,050 Formula za Vigenere je malo drugačija. 571 00:42:30,050 --> 00:42:32,960 Uglavnom, vidjet ćete da je to samo kao Cezara, 572 00:42:32,960 --> 00:42:37,390 osim umjesto samo k imamo k indeks j. 573 00:42:37,390 --> 00:42:44,810 Primijetite da nismo koristim jer u suštini, dužinu ključnu riječ 574 00:42:44,810 --> 00:42:49,850 nije nužno duljinu našeg šifrirana. 575 00:42:49,850 --> 00:42:56,130 To će biti jasnije malo kad vidimo primjer da imam malo kasnije. 576 00:42:56,130 --> 00:43:03,160 Uglavnom, ako pokrenuti program s ključnom riječi o ohai, 577 00:43:03,160 --> 00:43:08,560 onda to znači da svaki put, ohai će biti vaš pomak. 578 00:43:08,560 --> 00:43:11,060 Dakle, ovisno o tome što je položaj koji su u ključnoj riječi, 579 00:43:11,060 --> 00:43:15,800 ideš prebaciti svoju određenu šifrirana karakter tog iznosa. 580 00:43:15,800 --> 00:43:19,630 Opet, baš kao i Cezara, želimo biti sigurni da ćemo sačuvati kapitalizaciju stvari 581 00:43:19,630 --> 00:43:22,900 a mi samo kodirati slova, a ne znakova ili prostorima. 582 00:43:22,900 --> 00:43:26,330 Dakle osvrnuti na Cezara na funkcije koje ste svibanj imati koristi, 583 00:43:26,330 --> 00:43:32,570 Način na koji ste se odlučili kako prebaciti stvari, i primijeniti da bi vaš program ovdje. 584 00:43:32,570 --> 00:43:35,260 Dakle, ajmo map ovo. 585 00:43:35,260 --> 00:43:39,680 Imamo čistim da smo stečen od korisnika iz GetString 586 00:43:39,680 --> 00:43:44,090 govoreći Ovaj ... je CS50! 587 00:43:44,090 --> 00:43:47,090 Onda imamo ključnu riječ u ohai. 588 00:43:47,090 --> 00:43:50,930 Prve četiri likovi su prilično jednostavne. 589 00:43:50,930 --> 00:43:55,580 Mi znamo da je T će biti pomaknut za o, 590 00:43:55,580 --> 00:44:01,990 onda h će biti pomaknut za sat, ja će biti pomaknut za. 591 00:44:01,990 --> 00:44:04,610 Ovdje možete vidjeti da predstavlja 0, 592 00:44:04,610 --> 00:44:11,940 pa onda na kraju vrijednost je zapravo isto pismo kao i prije. 593 00:44:11,940 --> 00:44:15,250 Tada je pomaknuta ja. 594 00:44:15,250 --> 00:44:19,370 Ali onda imate ove razdoblja ovdje. 595 00:44:19,370 --> 00:44:25,960 Mi ne želimo da kodirati, pa onda mi to ne mijenjati ništa 596 00:44:25,960 --> 00:44:31,280 i samo isprintati razdoblje nepromijenjen. 597 00:44:31,280 --> 00:44:38,020 [Student] Ja ne razumijem kako ti znaš da je to pomaknuta - Gdje vi - >> Oh, žao mi je. 598 00:44:38,020 --> 00:44:41,620 Na vrhu Ovdje možete vidjeti da je argument naredbenog retka ohai ovdje, 599 00:44:41,620 --> 00:44:43,740 da će to biti ključna. 600 00:44:43,740 --> 00:44:49,550 I tako u osnovi, vi ste biciklizam preko likova u ključnoj riječi. 601 00:44:49,550 --> 00:44:52,020 [Student] Dakle, o će se prebacuje isti - 602 00:44:52,020 --> 00:44:56,260 Dakle, o odgovara određenom broju u pismu. 603 00:44:56,260 --> 00:44:58,400 [Student] Točno. Ali gdje ste dobili CS50 dio od? 604 00:44:58,400 --> 00:45:02,540 Oh. To je u GetString gdje ste kao: "Daj mi niz za kodiranje." 605 00:45:02,540 --> 00:45:07,510 [Student] Oni će vam dati taj argument za pomak prema 606 00:45:07,510 --> 00:45:09,380 i onda ćete tražiti svoj prvi niz. >> Da. 607 00:45:09,380 --> 00:45:12,440 Dakle, kada su pokrenuti program, oni će uključiti ključnu riječ 608 00:45:12,440 --> 00:45:14,740 u svojim argumentima naredbenog retka kad ga pokrenuti. 609 00:45:14,740 --> 00:45:19,740 Onda nakon što ste provjerili da su oni zapravo sam vam dao jedan, a ne više, a ne manje 610 00:45:19,740 --> 00:45:23,750 onda ćeš ih potaknuti na žici, kažu, "Daj mi niz." 611 00:45:23,750 --> 00:45:27,630 Dakle, to je mjesto gdje se u ovom slučaju da ste s obzirom da ovo ... je CS50! 612 00:45:27,630 --> 00:45:32,090 Pa onda ćeš koristiti da i koristiti ohai i ponoviti više. 613 00:45:32,090 --> 00:45:38,200 Primijetite da ovdje preskočio kriptiranje razdoblja, 614 00:45:38,200 --> 00:45:51,660 ali u smislu naše pozicije za ohai, sljedeći jedne koristili smo o. 615 00:45:51,660 --> 00:45:54,990 U ovom slučaju to je malo teže vidjeti, jer to je 4, 616 00:45:54,990 --> 00:45:57,710 pa neka je i dalje malo. Samo držati sa mnom ovdje. 617 00:45:57,710 --> 00:46:02,960 Onda smo ja i S, koje su zatim prevedeni po o i h respektivno. 618 00:46:02,960 --> 00:46:09,370 Onda imamo prostor, pa onda znamo da se ne ide na šifrirati prostore. 619 00:46:09,370 --> 00:46:18,930 Ali primijetite da umjesto odlaska u ovom mjestu upravo ovdje, 620 00:46:18,930 --> 00:46:28,330 smo kriptiranje po - ne znam ako se može vidjeti da je - upravo ovdje. 621 00:46:28,330 --> 00:46:33,710 Dakle, to nije kao što je zapravo predodređen, kažu, o ide ovdje, h ide ovdje, 622 00:46:33,710 --> 00:46:39,200 ide ovdje, sam ide ovdje, o, h, a, I, o, h,, i. Vi ne to učiniti. 623 00:46:39,200 --> 00:46:43,760 Vi samo prebaciti svoju poziciju u ključnoj riječi 624 00:46:43,760 --> 00:46:51,020 kada znate da ste zapravo će biti šifriranjem stvarni pismo. 625 00:46:51,020 --> 00:46:53,920 Znači li to da vrsta ima smisla? 626 00:46:53,920 --> 00:46:55,800 Ok. 627 00:46:56,490 --> 00:46:58,500 Dakle, samo neki podsjetnici. 628 00:46:58,500 --> 00:47:03,760 Vi želite da biste bili sigurni da ste samo unaprijed na sljedeći pismu u ključnoj riječi 629 00:47:03,760 --> 00:47:06,390 ako lik u čistim je pismo. 630 00:47:06,390 --> 00:47:09,120 Pa recimo da smo na o.. 631 00:47:09,120 --> 00:47:19,310 Primjećujemo da sljedeći znak, ja indeks čistim, je broj, na primjer. 632 00:47:19,310 --> 00:47:31,630 Onda mi ne unaprijed J, indeks za našu riječ, sve dok ne dosegnemo još jedno pismo. 633 00:47:31,630 --> 00:47:36,230 Opet, također želite da provjerite da li su spustili na početku ključnu riječ 634 00:47:36,230 --> 00:47:37,770 kad ste na kraju njega. 635 00:47:37,770 --> 00:47:42,030 Ako vidite ovdje smo na ja, sljedeći mora biti o. 636 00:47:42,030 --> 00:47:47,690 Dakle, želite pronaći neki način da bude u mogućnosti spustili na početku ključnoj riječi 637 00:47:47,690 --> 00:47:49,470 svaki put da dođete do kraja. 638 00:47:49,470 --> 00:47:55,040 I tako opet, kakav operatora je koristan u tom slučaju za omatanje oko? 639 00:47:56,630 --> 00:47:59,840 Kao iu prebrojavanja off primjer. 640 00:47:59,840 --> 00:48:03,710 [Student] posto znak. >> Da, posto znak, koji je po modulu. 641 00:48:03,710 --> 00:48:11,250 Dakle modulu će doći u ruci ovdje kad želite završiti tijekom indeks u vašem ohai. 642 00:48:11,250 --> 00:48:17,700 I samo brzo savjet: Pokušajte se sjetiti umatanje preko ključnu riječ malo kao računajući isključen, 643 00:48:17,700 --> 00:48:23,590 gdje ako postoji tri skupine, 4. osoba, 644 00:48:23,590 --> 00:48:30,610 njihov broj da je je 4 mod 3, što je oko 1. 645 00:48:30,610 --> 00:48:32,880 Dakle, probati i mislim da je to na taj način. 646 00:48:34,770 --> 00:48:42,740 Kao što ste vidjeli u formuli, gdje god imate CI i onda pi ali onda kJ, 647 00:48:42,740 --> 00:48:44,700 želite da biste bili sigurni da ćete pratiti one. 648 00:48:44,700 --> 00:48:47,580 Ne trebate zvati ga ja, ne morate da ga zovu j, 649 00:48:47,580 --> 00:48:53,270 ali želite da biste bili sigurni da ćete pratiti na poziciji da si to u svom čistim 650 00:48:53,270 --> 00:48:55,790 kao i na poziciju da si to u svom ključnu riječ 651 00:48:55,790 --> 00:48:59,840 jer oni nisu nužno će biti isti. 652 00:48:59,840 --> 00:49:06,400 Ne samo ključnu riječ - to bi mogao biti potpuno drugačiji od vašeg duljina čistim. 653 00:49:06,400 --> 00:49:09,140 Također, svoj cisti, postoje brojevi i znakovi, 654 00:49:09,140 --> 00:49:14,450 tako da to ne ide savršeno podudaraju se zajedno. Da. 655 00:49:14,450 --> 00:49:19,280 [Student] Ima li funkcija za promjenu slučaj? 656 00:49:19,280 --> 00:49:24,530 Mogu li promijeniti kapitalu A? >> Da, tu je definitivno. 657 00:49:24,530 --> 00:49:27,890 Možete provjeriti - Vjerujem da je toupper, sve jedna riječ. 658 00:49:30,650 --> 00:49:36,310 Ali kad pokušavate šifra stvari i sačuvati tekst, 659 00:49:36,310 --> 00:49:39,350 to je najbolje u osnovi imaju odvojena slučaja. 660 00:49:39,350 --> 00:49:42,040 Ako je to veliko, onda želite pomak prema tome 661 00:49:42,040 --> 00:49:46,460 jer u formuli, kad se pogleda unatrag kako moramo vrsta pokretu 662 00:49:46,460 --> 00:49:50,900 naizmjenično između ASCII način predstavlja brojeve 663 00:49:50,900 --> 00:49:55,020 i stvarna abecedni indeks, želimo biti sigurni 664 00:49:55,020 --> 00:50:01,850 tu će biti neka vrsta uzorak da ćete koristiti. 665 00:50:01,850 --> 00:50:04,580 Još jedna napomena o obrascu, zapravo. 666 00:50:04,580 --> 00:50:07,250 Ti ćeš definitivno se bave s brojevima. 667 00:50:07,250 --> 00:50:11,280 Pokušajte ne koristiti magiju brojeva, što je primjer stilu. 668 00:50:11,280 --> 00:50:18,470 Dakle, recimo da želite svaki nešto vremena smjene po vole - 669 00:50:18,470 --> 00:50:22,400 Ok, tako da savjet, drugi spojler je kad idete da se kreće nešto 670 00:50:22,400 --> 00:50:26,310 za određeni iznos, pokušajte da ne predstavljaju da je stvarni broj 671 00:50:26,310 --> 00:50:32,810 nego probati i vidjeti ako možete koristiti ASCII vrijednost, koja će vrsta više smisla. 672 00:50:32,810 --> 00:50:35,470 Još jedna napomena: Zato što smo se bave formulama, 673 00:50:35,470 --> 00:50:41,200 iako vaš TF će vrsta znati što uzorak možda koristite, 674 00:50:41,200 --> 00:50:44,430 najbolje u komentarima vrste objasniti logiku, kao, 675 00:50:44,430 --> 00:50:51,880 "Ja sam koristeći ovaj obrazac, jer ..." i vrsta objasniti uzorak jezgrovito u svoje komentare. 676 00:50:54,090 --> 00:50:58,990 [To je prohod 2] Ako ne postoje sva ostala pitanja, onda ću ostati ovdje malo. 677 00:50:58,990 --> 00:51:04,370 Sretno s pset 2: kripto i hvala što ste došli. 678 00:51:06,070 --> 00:51:08,620 [Student] Hvala. >> Hvala. 679 00:51:09,220 --> 00:51:10,800 [Mediji Offline uvod]