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 - 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 V redu. Pozdravljeni, vsi, in dobrodošli potopis 2. 5 00:00:10,750 --> 00:00:14,330 Prvič, rad bi vam čestital za dodelavo pset 1. 6 00:00:14,330 --> 00:00:18,140 Vem, da bi bilo malo težko za nekatere od vas, 7 00:00:18,140 --> 00:00:20,460 Lahko bi bil tvoj prvi računalniški program, ki ga je napisal, 8 00:00:20,460 --> 00:00:24,500 ampak ne pozabite, da je konec tega, ko pogledaš nazaj na koncu semestra, 9 00:00:24,500 --> 00:00:29,820 boste lahko ogledate na pset 1 in boste rekli: "Hej, sem lahko naredil, da v 5 minutah." 10 00:00:29,820 --> 00:00:35,700 Torej, vem in verjamem, da na koncu to boste zagotovo našli pset 1 zelo preprosta. 11 00:00:35,700 --> 00:00:40,640 Toda za zdaj je velik dosežek, in čestitke za pridobivanje storiti. 12 00:00:40,640 --> 00:00:44,010 No, tudi kratko opozorilo, preden smo prišli v mesa walkthrough. 13 00:00:44,010 --> 00:00:48,340 Želim samo, da bi hitro seznanil, da sem včasih ne bodo imeli dovolj časa 14 00:00:48,340 --> 00:00:52,500 med walkthroughs, da gredo skozi vsak posamezen način dela problema niz 15 00:00:52,500 --> 00:00:56,140 in ne samo morda osredotočiti na 1 ali 2 vrst izvedb, 16 00:00:56,140 --> 00:00:57,750 načinov, da bi lahko to naredili. 17 00:00:57,750 --> 00:01:01,970 Toda to ne pomeni, da ste prepovedano opravljati drugače. 18 00:01:01,970 --> 00:01:05,980 Pogosto so, tako kot pri računalništvu, številni načini počne stvari, 19 00:01:05,980 --> 00:01:12,190 in tako zagotovo vas prosimo, da uporabite drugačno vrsto rešitev, kot je bilo predstavljeno sem. 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. Oddelek vprašanja - 1. Cezar - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 V redu. Torej, problem set 2: Crypto je smešna. 23 00:01:20,650 --> 00:01:24,500 Še enkrat, z vsakim pset boste začeli z delom vprašanj 24 00:01:24,500 --> 00:01:29,600 da se bo to potekalo v vaših delih s svojim namenskih sodelavec poučevanja. 25 00:01:29,600 --> 00:01:31,670 Mi ne bo šel skozi te čez walkthrough, 26 00:01:31,670 --> 00:01:35,100 vendar pa bo zagotovo pomagal izpolniti pset. 27 00:01:35,100 --> 00:01:38,100 Torej, prvi del problema niza je Cezar. 28 00:01:38,100 --> 00:01:43,470 In tako v Caesar bo nekdo mimo vas tipko z celo število, 29 00:01:43,470 --> 00:01:48,420 in boste šifriranje niz besedila, ki so vam 30 00:01:48,420 --> 00:01:50,670 in jih vrne šifrirano stvar. 31 00:01:50,670 --> 00:01:56,050 Če je kdo gledal A Christmas Story, tam je primer, da obstaja. 32 00:01:56,050 --> 00:01:59,090 Nato drugi del problema nizu je Vigenere, 33 00:01:59,090 --> 00:02:01,790 , ki je bolj napredna tehnika šifriranja. 34 00:02:01,790 --> 00:02:05,640 In tako bomo encipher del besedila, 35 00:02:05,640 --> 00:02:09,600 razen namesto s samo enim celo, da smo dejansko dogaja, da je kodiranje 36 00:02:09,600 --> 00:02:13,340 s ključno besedo, da bo uporabnik ki nam jih posredujete. 37 00:02:16,270 --> 00:02:22,090 Ok, prvo orodje v orodjarni danes se dejansko dogaja, da se posodabljanje aparata. 38 00:02:22,090 --> 00:02:26,430 Na tablo za razprave bi videli stvari, kot so: "Zakaj ne to delo?" 39 00:02:26,430 --> 00:02:28,110 "Zakaj ne 50 Pošlji delo?" 40 00:02:28,110 --> 00:02:31,830 in pogosto rešitev je dejansko samo za posodobitev naprave. 41 00:02:31,830 --> 00:02:36,730 In tako, če si teči v terminalsko okno v vašem aparata sudo yum-y - 42 00:02:36,730 --> 00:02:40,040 to je zastava rekel ja, posodobiti vse - posodabljanje, 43 00:02:40,040 --> 00:02:42,280 potem bo vaša naprava posodobiti če je to potrebno. 44 00:02:42,280 --> 00:02:46,960 In ne boli, če ste že na najnovejšo različico aparata. 45 00:02:46,960 --> 00:02:51,280 Potem bo samo, da ni na voljo nove posodobitve in lahko še naprej delajo skupaj. 46 00:02:51,280 --> 00:02:55,800 Ampak to je dobro, da tudi izvesti vsakič, ko odprete aparat 47 00:02:55,800 --> 00:02:57,140 zato, ker smo še vedno zelo veliko - 48 00:02:57,140 --> 00:03:00,320 Včasih, če pridemo v hrošča - to določitvi v napravi. 49 00:03:00,320 --> 00:03:03,180 Zato poskrbite, da imate najnovejšo različico naprave 50 00:03:03,180 --> 00:03:07,710 in zagon, da posodobitev tam. 51 00:03:07,710 --> 00:03:14,360 V redu. Zato, ker imamo opravka s črkami in spreminja, enciphering stvari, 52 00:03:14,360 --> 00:03:20,410 bomo resnično želimo, da postanejo najboljši prijatelji z našimi ASCII tabeli. 53 00:03:20,410 --> 00:03:24,350 Obstajajo številni tisti, na spletu, če boste našli. Mogoče celo sami. 54 00:03:24,350 --> 00:03:29,950 V bistvu, z vsako črko in vsako številko in vsak značaja 55 00:03:29,950 --> 00:03:32,210 je število, povezano z njimi, 56 00:03:32,210 --> 00:03:38,670 in zato je dobro, da vidijo svoje ASCII vrednosti ob dejanski pisma. 57 00:03:38,670 --> 00:03:42,310 To bo zagotovo vam pomagajo v problemski sklop. 58 00:03:42,310 --> 00:03:45,750 Ena stvar, ki me res pomagal v tem nizu je bil problem, da ga dejansko natisniti, 59 00:03:45,750 --> 00:03:48,380 in ko sem šel skozi, bi dejansko opirala na to, 60 00:03:48,380 --> 00:03:51,150 zapisali: "Če se to mora najprej priti do tja, potem ..." 61 00:03:51,150 --> 00:03:55,270 Nekako pripraviti nanj in ga označite, postanejo najboljši prijatelji s svojim ASCII tabeli. 62 00:03:57,240 --> 00:04:00,750 Potem imamo še nekaj drugih orodij, ki jih imamo na voljo. 63 00:04:00,750 --> 00:04:03,750 Tokrat namesto dejansko česar si za vse njihov prispevek 64 00:04:03,750 --> 00:04:05,230 bomo narediti kombinacijo. 65 00:04:05,230 --> 00:04:06,880 Mi jih bo prosil za nekaj vložek, 66 00:04:06,880 --> 00:04:11,350 vendar smo tudi dogaja, da samo uporabo argumente v ukazni vrstici. 67 00:04:11,350 --> 00:04:15,600 Torej, ko zaženete svoj program, ponavadi rečete. / Pozdravi, na primer, 68 00:04:15,600 --> 00:04:17,310 če je vaš program je bil hello.c. 69 00:04:17,310 --> 00:04:22,500 Ampak tokrat, namesto da samo pravim, da lahko preidemo od besed, argumentov kasneje. 70 00:04:22,500 --> 00:04:27,210 In tako bomo uporabljajo kakršne koli gredo, da bi nas kot njihov prispevek, kot tudi, 71 00:04:27,210 --> 00:04:31,720 tako premostili samo pozivanje za celo, ampak tudi z argumenti v ukazni vrstici. 72 00:04:31,720 --> 00:04:36,590 In potem bomo šli na poljih in godala, ki jih bomo uporabljali veliko, kot dobro. 73 00:04:41,460 --> 00:04:44,810 Tukaj je samo primer 1 mini ASCII tabeli. 74 00:04:44,810 --> 00:04:48,460 Kot sem rekel, vsak dopis v vrsto, 75 00:04:48,460 --> 00:04:52,510 in tako se seznanite s tem. To bo prišel prav. 76 00:04:52,510 --> 00:04:55,610 In kasneje, ko smo začeli delaš nekaj ASCIIMath ki se ukvarja s številkami - 77 00:04:55,610 --> 00:05:00,110 seštevanje, odštevanje jih - potem zagotovo dobra za sklicevanje na to tabelo. 78 00:05:02,860 --> 00:05:06,920 Torej, tukaj je primer šifra Caesar - nekaj, kar lahko ste igrali s. 79 00:05:06,920 --> 00:05:11,190 To je samo kolo. V bistvu je zunanji abeceda in potem je notranja abeceda. 80 00:05:11,190 --> 00:05:15,290 Torej, tukaj je primer šifra Caesar pač pa s ključi od 0. 81 00:05:15,290 --> 00:05:21,540 V bistvu je usklajena z A, B usklajena z B, vse tja do Z. 82 00:05:21,540 --> 00:05:26,590 Ampak potem rekli smo si želeli ključ 3, na primer. 83 00:05:26,590 --> 00:05:33,280 Potem bi se vrti notranje kolo, tako da zdaj usklajuje z D, itd 84 00:05:33,280 --> 00:05:35,250 In tako to je v bistvu tisto, kar smo naredili. 85 00:05:35,250 --> 00:05:38,340 Nimamo kolo, ampak kaj bomo narediti je, da naš program 86 00:05:38,340 --> 00:05:44,490 vrsta premik abecede z nami določenem številu. 87 00:05:44,490 --> 00:05:48,650 Torej, kot sem že dejal, bomo morali ukvarjati z argumenti ukazne vrstice 88 00:05:48,650 --> 00:05:50,390 kot tudi dobili celo število. 89 00:05:50,390 --> 00:05:55,050 Torej tako, da bo uporabnik zažene vaš program je Cezar z besedami. / Cesar 90 00:05:55,050 --> 00:05:58,090 in nato vnesete številko po tem. 91 00:05:58,090 --> 00:06:01,130 In ta številka predstavlja ključ, premik, 92 00:06:01,130 --> 00:06:06,740 kolikokrat jih boste lahko vrti notranje kolo vašega šifra Caesar. 93 00:06:06,740 --> 00:06:08,390 In tako si lahko ogledate tukaj primer. 94 00:06:08,390 --> 00:06:14,550 Če smo vnesli črke od A do L v naši šifra Caesar, 95 00:06:14,550 --> 00:06:19,520 potem bi bilo vnos D do O, saj to je vsak dopis premaknilo več kot 3-krat, 96 00:06:19,520 --> 00:06:22,080 tako kot na primer kolesa, ki sem ti pokazal. 97 00:06:22,080 --> 00:06:25,300 Torej, če ste navedli, na primer, to je CS50! 98 00:06:25,300 --> 00:06:27,960 potem bi tudi premakniti vse črke. 99 00:06:27,960 --> 00:06:31,040 In to je pomembna stvar, tako Cezarjem in Vigenere 100 00:06:31,040 --> 00:06:34,890 je, da bomo preskočiti vse non-pisem. 101 00:06:34,890 --> 00:06:39,160 Torej, vsi prostori, znaki, itd, številke, bomo obdržati isto. 102 00:06:39,160 --> 00:06:42,920 Mi smo le, da bo premik črke v tej zadevi. 103 00:06:42,920 --> 00:06:45,870 Torej, kot vidite na kolesu, imamo le črke, ki so na voljo za nas, 104 00:06:45,870 --> 00:06:50,150 Tako smo le želeli preusmeriti črke in šifriranje črk. 105 00:06:51,370 --> 00:06:56,720 Torej prva stvar, boste videli, da je uporaba za Cezarja pri reševanju iz 2 106 00:06:56,720 --> 00:07:05,280 je teči Cezarja in nato vnesite številko, ko ga zaženete v terminalu. 107 00:07:05,280 --> 00:07:10,940 Torej, kaj moramo storiti, je, da bi nekako dobil to ključ in dostop do njega. 108 00:07:10,940 --> 00:07:14,730 In tako želimo, da bi nekako videli, da se bo v drugi vrstici ukaz argument. 109 00:07:14,730 --> 00:07:20,950 Prva je, da bo. / Caesar, naslednja pa se bo ključ številka. 110 00:07:22,190 --> 00:07:29,200 Torej, preden smo imeli int main (void), da začnemo C programe. 111 00:07:29,200 --> 00:07:31,790 Gremo nazaj plast lupine malo 112 00:07:31,790 --> 00:07:34,720 in dejansko videli, da namesto poteka v praznini na naš glavni funkciji 113 00:07:34,720 --> 00:07:37,920 imamo dejansko opraviti s 2 parametri. 114 00:07:37,920 --> 00:07:44,070 Imamo int argc imenom, nato pa niz nizov imenuje argv. 115 00:07:44,070 --> 00:07:46,030 Torej argc je celo, 116 00:07:46,030 --> 00:07:49,640 in predstavlja številne argumente prenesejo v svoj program. 117 00:07:49,640 --> 00:07:53,590 In potem argv je pravzaprav seznam opravili argumentov. 118 00:07:53,590 --> 00:08:00,820 Vse trditve so strune in tako argv predstavlja matriko, seznam, nizov. 119 00:08:01,830 --> 00:08:03,990 Spregovorimo o matrikah malo. 120 00:08:03,990 --> 00:08:05,940 Polja so v bistvu nova struktura podatkov. 121 00:08:05,940 --> 00:08:09,660 Imamo ints, ki smo jih podvoji, imamo strune, in zdaj imamo nize. 122 00:08:09,660 --> 00:08:13,820 Polja so podatkovne strukture, ki jih lahko imajo več vrednosti istega tipa, 123 00:08:13,820 --> 00:08:18,320 tako da v bistvu seznam kakršno koli želite. 124 00:08:18,320 --> 00:08:24,400 V bistvu, če si hotel seznam celih vse v 1 spremenljivke, 125 00:08:24,400 --> 00:08:29,090 potem bi ustvarili novo spremenljivko, ki je bil tipa int array. 126 00:08:29,090 --> 00:08:34,450 Torej, nizi so nič na indeks, kar pomeni, da je prvi element matrike je na indeksu 0. 127 00:08:34,450 --> 00:08:41,799 Če je matrika dolžine 4, kot v tem primeru, potem bi bil vaš zadnji del znaša indeks 3, 128 00:08:41,799 --> 00:08:44,810 kar je za 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Torej, da bi ustvarili niz, bi naredil kaj takega. 130 00:08:48,420 --> 00:08:51,440 Povejte, da ste želeli dvojno matriko. 131 00:08:51,440 --> 00:08:56,520 To velja za vse vrste vrste podatkov, čeprav. 132 00:08:56,520 --> 00:09:00,210 Torej hočeš reči, dvojno matriko. Recimo, da želite, da ga pokličete predal. 133 00:09:00,210 --> 00:09:04,760 Tako kot bi morali inicializirati vsako drugo dvojno, 134 00:09:04,760 --> 00:09:09,760 lahko bi rekli, dvoposteljne in nato ime, a tokrat smo se oglatih oklepajev, 135 00:09:09,760 --> 00:09:13,570 , nato pa se bo število pa je dolžina niza. 136 00:09:13,570 --> 00:09:16,840 Upoštevajte, da v polji ne moremo nikoli spremeniti dolžino, 137 00:09:16,840 --> 00:09:21,230 tako da boste vedno imeli za opredelitev in izberete, koliko škatel, 138 00:09:21,230 --> 00:09:25,440 koliko vrednosti vašega niz se bo držati. 139 00:09:25,440 --> 00:09:31,820 Torej, da določijo različne vrednosti v vaši niz, ki ste ga boste uporabljali sintakso, 140 00:09:31,820 --> 00:09:33,200 kot vidite na diapozitivu. 141 00:09:33,200 --> 00:09:37,620 Imate predal indeks 0 bo nastavljena na 1,2, 142 00:09:37,620 --> 00:09:42,180 predal indeks 1 nastavljen na 2,4, itd 143 00:09:42,180 --> 00:09:47,910 Torej, zdaj, ko smo pregledali nizi malo, gremo nazaj na argc in argv. 144 00:09:47,910 --> 00:09:52,220 Vemo, da je zdaj argv nabor nizov. 145 00:09:52,220 --> 00:09:55,080 Torej, ko uporabnik preide v - pravijo, da teče program - 146 00:09:55,080 --> 00:09:58,740 pravijo. / zdravo David Malan, 147 00:09:58,740 --> 00:10:05,160 Kaj bo program naredil za vas je dejansko že prišli do kar argc in argv so. 148 00:10:05,160 --> 00:10:07,620 Torej vam ni treba skrbeti za to. 149 00:10:07,620 --> 00:10:14,370 Argc v tem primeru bi bila 3, ker vidi 3 različne besede, ločene s presledki. 150 00:10:14,370 --> 00:10:18,850 In tako je matrika v tem primeru, bi bil prvi indeks. / Zdravo, 151 00:10:18,850 --> 00:10:21,770 naslednjič David, naslednji Malan. 152 00:10:21,770 --> 00:10:25,640 Ali kdo takoj videti, kakšen je odnos med argv, 153 00:10:25,640 --> 00:10:28,990  matrika, in argc je? 154 00:10:32,820 --> 00:10:38,090 Ja. Dobili bomo v to na primer v args.c. 155 00:10:38,090 --> 00:10:42,880 Poglejmo, če lahko izkoristimo razmerja med 2. 156 00:10:42,880 --> 00:10:46,550 Tukaj boste morda ugotovili, da v stroju privzeta aplikacija 157 00:10:46,550 --> 00:10:49,450 za odpiranje datotek. C je včasih Emacs. 158 00:10:49,450 --> 00:10:54,660 Vendar želimo, da se ukvarjajo z gedit, kaj lahko naredite, je, da lahko z desnim klikom na datoteko C, 159 00:10:54,660 --> 00:11:04,580 pojdite na Lastnosti, Odpri z in nato gedit, nastavljena kot privzeta, 160 00:11:04,580 --> 00:11:13,020 in zdaj naj program odpre v gedit namesto Emacs. 161 00:11:14,710 --> 00:11:16,290 Popolno. 162 00:11:17,120 --> 00:11:25,520 Torej, tukaj imam program, ki ga želim natisniti vsak argument v ukazni vrstici. 163 00:11:25,520 --> 00:11:32,050 Torej, ne glede uporabnik vložki, želim, da v bistvu vrniti nazaj k njim v novo vrstico. 164 00:11:32,050 --> 00:11:36,710 Torej, kaj je objekt, ki ga lahko uporabimo za ponovitev čez nekaj - 165 00:11:36,710 --> 00:11:40,380 nekaj, kar boste verjetno uporabljali v svoji pset 1? 166 00:11:40,380 --> 00:11:45,840 Če želite, da gredo skozi določeno število stvari? >> [Študent] Za zanke. 167 00:11:45,840 --> 00:11:48,910 Za zanke. Točno tako. Torej začnimo z za zanko. 168 00:11:48,910 --> 00:11:56,900 Imamo za int i = 0. Reciva začeli s standardno spremenljivko inicializacijo. 169 00:11:56,900 --> 00:12:02,370 Bom zapustiti pogoj za nabor in nato rekel, da sem + +, bo naredil stvari tam. 170 00:12:02,370 --> 00:12:04,090 V redu. 171 00:12:04,090 --> 00:12:11,590 Tako razmišljanje nazaj argv, če argv je seznam argumentov, izrečenih v programu 172 00:12:11,590 --> 00:12:15,380 in argc je število argumentov v programu, 173 00:12:15,380 --> 00:12:21,280 potem to pomeni, da je v bistvu argc dolžina argv, desno, 174 00:12:21,280 --> 00:12:28,970 ker se bo čim več argumentov kot vrednost argc. 175 00:12:28,970 --> 00:12:35,910 Torej, če želimo, da izbirate čez vsak element v argv, 176 00:12:35,910 --> 00:12:43,290 bomo želeli, da vsakič, ko dostopate do spremenljivke v argv na določen indeks. 177 00:12:43,290 --> 00:12:49,060 To lahko predstavimo s tem, kajne? 178 00:12:49,060 --> 00:12:53,430 Ta spremenljivka tukaj predstavlja poseben niz v tem primeru 179 00:12:53,430 --> 00:12:57,030 ker je nizov - zlasti niz v tej določenega indeksa. 180 00:12:57,030 --> 00:13:00,690 Kaj želimo narediti v tem primeru želimo, da ga natisnete, tako da recimo printf. 181 00:13:00,690 --> 00:13:04,680 In zdaj argv je niz, zato smo želeli dati to ogrado tam. 182 00:13:04,680 --> 00:13:08,430 Želimo novo linijo tako da bi bilo videti dobro. 183 00:13:08,430 --> 00:13:12,530 Torej, tukaj imamo za zanko. Nimamo stanje še ni. 184 00:13:12,530 --> 00:13:20,020 Torej, jaz se začne pri 0 in nato vsakič, ko se bo tiskanje določen niz 185 00:13:20,020 --> 00:13:22,980 v tistem indeks v matriki. 186 00:13:22,980 --> 00:13:28,410 Torej, če želimo ustaviti tiskanje elementov v matriki? 187 00:13:28,410 --> 00:13:35,720 Ko smo končali, kajne? Ko smo prišli do konca niza. 188 00:13:35,720 --> 00:13:38,870 Torej si ne želimo, da presega mimo dolžino niza, 189 00:13:38,870 --> 00:13:43,700 in smo že vemo, da ni treba, da dejansko aktivno kakšna dolžina je argv 190 00:13:43,700 --> 00:13:47,520 zato, ker je glede na nas, kaj je to? Argc. Točno tako. 191 00:13:47,520 --> 00:13:56,640 Zato želimo narediti to številko procesa argc krat. 192 00:13:56,640 --> 00:13:59,550 Nisem v pravi mapi. 193 00:14:02,100 --> 00:14:03,490 V redu. 194 00:14:03,490 --> 00:14:08,990 Zdaj pa ti argumenti. Ni napak, kar je super. 195 00:14:08,990 --> 00:14:11,430 Torej, kaj je šele teči argumentov. 196 00:14:11,430 --> 00:14:15,130 Kaj se to dogaja, da se vrnete k nam? To je le, da bo natisniti nazaj. 197 00:14:15,130 --> 00:14:18,320 "Ti vnesene argumentov v program, bom dal nazaj." 198 00:14:18,320 --> 00:14:23,170 Torej, recimo, želimo povedati argumentov potem foo bar. 199 00:14:23,170 --> 00:14:26,570 Torej jo natisne nazaj k nam. Vse v redu? 200 00:14:26,570 --> 00:14:30,790 Torej je primer, kako lahko uporabite argc in argv 201 00:14:30,790 --> 00:14:33,460 vedoč, da argc predstavlja dolžino argv. 202 00:14:33,460 --> 00:14:42,750 Poskrbite, da ne boste nikoli z dostopom do polja vrat 1 presega dolžino niza 203 00:14:42,750 --> 00:14:45,140 ker bo zagotovo C vpiti na vas. 204 00:14:45,140 --> 00:14:47,560 Dobili boste nekaj, kar ti segmentacije krivda, 205 00:14:47,560 --> 00:14:52,470 ki ni nikoli zabavno, v bistvu rekel, da si poskušate dostopiti do nekaj 206 00:14:52,470 --> 00:14:55,000 da ne obstaja, ne pripada tebi. 207 00:14:55,000 --> 00:14:59,430 Zato poskrbite, predvsem pa z nič-kazala, da ne želimo, da - 208 00:14:59,430 --> 00:15:02,390 Kot na primer, če imamo niz dolžine 4, 209 00:15:02,390 --> 00:15:07,240 da je matrika indeks 4 ne obstaja, ker smo začeli na 0, nič kazalo. 210 00:15:07,240 --> 00:15:11,730 To bo postal drugi narave, tako kot za zanke, ko začnemo na 0. 211 00:15:11,730 --> 00:15:13,610 Torej, samo da se vodijo v mislih. 212 00:15:13,610 --> 00:15:22,590 Vi ne želite, da vedno dostop do indeksa matrike, ki je izven vašega dosega. 213 00:15:26,710 --> 00:15:32,560 Tako lahko sedaj vidimo, kako smo lahko način dostopa 214 00:15:32,560 --> 00:15:35,930 V ukazni vrstici argumenti, ki so opravili noter 215 00:15:35,930 --> 00:15:41,330 Ampak kot ste videli niz je argv je dejansko nizov. 216 00:15:41,330 --> 00:15:45,740 Torej je dejansko ne celo še, vendar v Cezarja želimo ukvarjati s števil. 217 00:15:45,740 --> 00:15:54,430 Na srečo, obstaja funkcija ustvarili za nas, da lahko dejansko pretvorbo niza v celo število. 218 00:15:54,430 --> 00:15:58,710 Tudi tu smo se ne ukvarjajo s prispevki uporabnikov, kjer smo jih bo prisililo, 219 00:15:58,710 --> 00:16:03,740 za vnos tukaj za ključu, zato ne moremo dejansko reprompt in reči, 220 00:16:03,740 --> 00:16:07,840 "Oh, daj mi še eno celo število, recimo, če ni veljaven." 221 00:16:07,840 --> 00:16:10,540 Ampak mi še vedno potreba, da preveri pravilno uporabo. 222 00:16:10,540 --> 00:16:13,520 V Cezarja so dovoljena le prenesti v 1 številu, 223 00:16:13,520 --> 00:16:18,030 in tako so morali zagnati. / Cezar in potem imajo ti dati številko. 224 00:16:18,030 --> 00:16:23,660 Torej argc mora biti določeno število. 225 00:16:23,660 --> 00:16:29,060 Kaj več bi bilo, če bi morala opraviti vam. / Cezar in nato s tipko? 226 00:16:29,060 --> 00:16:32,920 Kaj je argc? >> [Študent] 2. >> Dva. Točno tako. 227 00:16:32,920 --> 00:16:35,490 Torej hočeš prepričati, da argc je 2. 228 00:16:35,490 --> 00:16:39,620 V nasprotnem primeru si v bistvu nočejo zagnati program. 229 00:16:39,620 --> 00:16:43,040 V glavnem je to funkcija, ki pravi, int main, 230 00:16:43,040 --> 00:16:47,360 Tako pa smo vedno v dobrem 0 prakse vračanja na koncu uspešnega programa. 231 00:16:47,360 --> 00:16:50,840 Torej, če, recimo, da vam 3 argumente v ukazni vrstici, namesto 2 232 00:16:50,840 --> 00:16:54,350 ali vam 1, na primer, potem kaj boste storiti, je, da boste želeli preveriti, da 233 00:16:54,350 --> 00:16:59,900 in se nato vrnite 1 rekel, ne, ne morem nadaljevati s tem programom. 234 00:16:59,900 --> 00:17:03,190 [Študent], ne more biti prostora v vašem besedilu. >> Kako prosim? 235 00:17:03,190 --> 00:17:06,780 [Študent], ne more biti prostor, v besedilu, ki ga poskušate šifriranje. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 V zvezi z besedilom, ki ga poskušate šifriranje, da dejansko pride kasneje 238 00:17:11,280 --> 00:17:13,970 ko damo to besedilo. 239 00:17:13,970 --> 00:17:18,260 Torej, zdaj smo šele sprejema kot ukazne argumente dejansko število, 240 00:17:18,260 --> 00:17:21,579 dejanski premik za šifriranje Caesar. 241 00:17:21,579 --> 00:17:27,569 [Študent] Zakaj rabiš 2 v primerjavi s samo 1 argc? Tam je zagotovo številka 1. 242 00:17:27,569 --> 00:17:32,200 Prav. Razlog, zakaj potrebujemo 2 za argc namesto 1 243 00:17:32,200 --> 00:17:36,260 Kajti, ko zaženete program in povedati. / Caesar ali. / zdravo, 244 00:17:36,260 --> 00:17:38,280 ki dejansko šteje kot argument ukazne vrstice. 245 00:17:38,280 --> 00:17:43,020 Torej, da že zavzema 1 in tako smo potem vnesla 1 dodatno. 246 00:17:45,030 --> 00:17:49,440 Torej ste dejansko vnesla niz v argument ukazne vrstice. 247 00:17:49,440 --> 00:17:52,730 Kaj želite narediti za Cezarja želimo ukvarjati s celo število, 248 00:17:52,730 --> 00:17:57,180 tako da lahko uporabite to funkcijo atoi. 249 00:17:57,180 --> 00:18:02,850 In v bistvu si ga prenese v nizu, nato pa vas bo vrnil nazaj celo število 250 00:18:02,850 --> 00:18:06,070 če je možno, da bi ta niz v celo število. 251 00:18:06,070 --> 00:18:10,960 Sedaj se spomniš, ko imamo opravka z printf ali GetString, stvari, kot je ta, 252 00:18:10,960 --> 00:18:13,390 vključimo knjižnice, ki so značilne za nas. 253 00:18:13,390 --> 00:18:19,450 Torej na začetku začnemo z znakom standardni tag nekaj I / O, h. Podobnega. 254 00:18:19,450 --> 00:18:22,430 No, atoi ni v enem od teh knjižnic, 255 00:18:22,430 --> 00:18:26,600 kaj moramo storiti, je, da moramo tudi pravo knjižnico za to. 256 00:18:26,600 --> 00:18:32,720 Torej priklicati nazaj v Walkthrough 1, kjer sem obravnaval ročno funkcijo. 257 00:18:32,720 --> 00:18:37,110 Vnesete človeka v vašem terminalu, nato pa sledi ime funkcije. 258 00:18:37,110 --> 00:18:39,720 In tako bo, da bi se celoten seznam njeno uporabo, 259 00:18:39,720 --> 00:18:42,890 vendar pa bo bruhati ki knjižnica, ki pripada. 260 00:18:42,890 --> 00:18:47,000 Torej bom pustil, da za vas, da uporabite ročni funkcije z atoi 261 00:18:47,000 --> 00:18:53,360 in ugotoviti, katera knjižnica morate vključiti, da bi lahko uporabite atoi funkcijo. 262 00:18:54,450 --> 00:18:57,670 Torej imamo ključ in zdaj gre za pridobivanje golo besedilo, 263 00:18:57,670 --> 00:19:01,820 in da dejansko gre za vnos uporabnika, kjer ste poziv. 264 00:19:01,820 --> 00:19:05,540 Obravnavali smo GetInt in GetFloat, zato v tem smislu 265 00:19:05,540 --> 00:19:07,670 bomo morali ukvarjati z GetString. 266 00:19:07,670 --> 00:19:12,440 Toda v tem primeru ni potrebno storiti vse storiti, medtem ko zanke ali preveriti. 267 00:19:12,440 --> 00:19:14,480 GetString bo zagotovo nam niz, 268 00:19:14,480 --> 00:19:17,630 in bomo za šifriranje, kar si nam daje. 269 00:19:17,630 --> 00:19:23,770 Torej lahko domnevamo, da so vse te uporabnike vnesenih nizov pravilna. 270 00:19:23,770 --> 00:19:24,670 Čudovito. 271 00:19:24,670 --> 00:19:27,270 Potem ko imaš ključ in ko imaš besedilo, 272 00:19:27,270 --> 00:19:31,660 Zdaj, kaj je ostalo se morate encipher the čistim. 273 00:19:31,660 --> 00:19:36,530 Tako hitro pokrijte žargona, je čistopis je tisto, kar vam daje uporabniku, 274 00:19:36,530 --> 00:19:41,030 in Zakrivena je tisto, kar se vrniti na njih. 275 00:19:42,450 --> 00:19:45,850 Torej strune, da bi lahko šel skozi dejansko dopisom z dopisom 276 00:19:45,850 --> 00:19:48,550 ker se moramo premakniti vsako pismo, 277 00:19:48,550 --> 00:19:51,390 Zavedamo se, da niti, če bi nekako Odlepite plasti, 278 00:19:51,390 --> 00:19:54,130 vidimo, da so samo res seznam znakov. 279 00:19:54,130 --> 00:19:55,930 Eden pride po drugi strani. 280 00:19:55,930 --> 00:20:01,690 In tako lahko ravnamo strune so nizi, ker so nizi znakov. 281 00:20:01,690 --> 00:20:05,640 Torej, da imate niz z imenom besedilo, 282 00:20:05,640 --> 00:20:09,400 in je v tem spremenljivo besedilo shranjeno To je CS50. 283 00:20:09,400 --> 00:20:15,680 Potem bi besedilo na indeksom 0 je kapital T, bi se indeks 1 h, itd 284 00:20:17,530 --> 00:20:23,970 In potem z nizi v argc primer v args.c, 285 00:20:23,970 --> 00:20:27,090 smo videli, da smo morali ponoviti čez niz 286 00:20:27,090 --> 00:20:32,440 in tako smo morali ponoviti od i = 0 do i je manj od dolžine. 287 00:20:32,440 --> 00:20:35,560 Zato moramo na nek način poskušal ugotoviti, kaj je dolžina niza je naš 288 00:20:35,560 --> 00:20:37,090 če hočemo, da izbirate nad njim. 289 00:20:37,090 --> 00:20:42,300 Na srečo še enkrat, da je funkcija ni za nas, čeprav je kasneje v CS50 290 00:20:42,300 --> 00:20:45,860 boste zagotovo lahko izvajajo in da svoje funkcije 291 00:20:45,860 --> 00:20:48,260 da lahko izračunamo dolžino niza. 292 00:20:48,260 --> 00:20:52,120 Ampak za zdaj se bomo uporabljati dolžina niza, tako strlen. 293 00:20:52,120 --> 00:21:00,440 Podaš v nizu, nato pa se bo vrnil vam int, ki predstavlja dolžino vašega niza. 294 00:21:00,440 --> 00:21:05,840 Oglejmo si primer, kako bi morali biti sposobni ponoviti čez vsak znak v nizu 295 00:21:05,840 --> 00:21:08,470 in narediti nekaj s tem. 296 00:21:08,470 --> 00:21:13,250 Kaj želite storiti, je ponovitev čez vsak znak niza, 297 00:21:13,250 --> 00:21:19,150 in kaj želimo storiti, je, da smo natisni nazaj vsak znak 1 do 1 298 00:21:19,150 --> 00:21:22,060 razen dodamo nekaj zraven nje. 299 00:21:22,060 --> 00:21:27,020 Torej začnimo z za zanko. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Bomo pustite prostor za stanje. 301 00:21:32,700 --> 00:21:36,840 Želimo, da izbirate, dokler ne pridete do konca niza, kajne? 302 00:21:36,840 --> 00:21:41,340 Torej, kaj potem funkcija nam daje dolžino niza? 303 00:21:41,340 --> 00:21:43,160 [Neslišno študentski odziv] 304 00:21:43,160 --> 00:21:46,420 To je dolžina argumentov ukazne vrstice. 305 00:21:46,420 --> 00:21:50,650 Toda za niz želimo uporabiti funkcijo, ki nam daje dolžino niza. 306 00:21:50,650 --> 00:21:53,090 Torej, to je dolžina niza. 307 00:21:53,090 --> 00:21:57,130 In tako potem moraš opraviti v nizu z njim. 308 00:21:57,130 --> 00:21:59,760 To mora vedeti, kaj je niz mora izračunati dolžino. 309 00:21:59,760 --> 00:22:03,160 Torej v tem primeru imamo opravka z niz-i. 310 00:22:04,790 --> 00:22:05,860 Čudovito. 311 00:22:05,860 --> 00:22:10,770 Torej, kaj želimo narediti, gremo printf. 312 00:22:10,770 --> 00:22:14,850 Zdaj želimo, da se ukvarjajo z znaki. Želimo, da natisnete vsak posamezen znak. 313 00:22:14,850 --> 00:22:22,150 Če želite, da se natisne plovec, bi lahko uporabite ogrado, kot f%. 314 00:22:22,150 --> 00:22:24,580 Z notr bi lahko uporabite% d. 315 00:22:24,580 --> 00:22:30,890 In tako podobno, z znakom uporabite% C reči, da bom lahko natisnete značaja 316 00:22:30,890 --> 00:22:34,570 , ki je shranjen v spremenljivko. 317 00:22:34,570 --> 00:22:40,840 Torej imamo to in kaj je dodati obdobje in prostor do nje. 318 00:22:40,840 --> 00:22:45,430 Kateri lik smo uporabljate? 319 00:22:45,430 --> 00:22:49,780 Bomo uporabljali ne glede na lik, da smo na niza. 320 00:22:49,780 --> 00:22:52,890 Torej bomo uporabljali nekaj z vrvico, 321 00:22:52,890 --> 00:22:56,420 vendar želimo, da se dostop do nekaterih znak tam. 322 00:22:56,420 --> 00:23:02,740 Torej, če je samo niz niz, potem kako dostopati do elementov polja? 323 00:23:02,740 --> 00:23:06,480 Imamo tiste oglate oklepaje, nato pa smo se indeks tam. 324 00:23:06,480 --> 00:23:11,820 Torej imamo oglate oklepaje. Naš indeks v tem primeru smo lahko samo jaz raba. Točno tako. 325 00:23:15,290 --> 00:23:22,370 Torej, tukaj smo govoriš bomo tiskate znak, ki mu sledi pika in prostor, 326 00:23:22,370 --> 00:23:30,870 in da je lik se bo i-črka v naši niza s. 327 00:23:32,920 --> 00:23:39,330 Grem rešiti da. Ok. 328 00:23:42,510 --> 00:23:46,840 Zdaj bom teči niz dolžine. 329 00:23:46,840 --> 00:23:53,440 Tako smo imeli niz imenovano OMG, in zdaj je še poudaril. 330 00:23:53,440 --> 00:23:57,870 Prav, recimo, da smo dejansko želijo, da bi dobili niz od uporabnika. 331 00:23:57,870 --> 00:23:59,580 Kako lahko to storimo? 332 00:23:59,580 --> 00:24:01,610 Pred tem, kako smo prišli int? 333 00:24:01,610 --> 00:24:08,040 Rekli smo GetInt, kajne? Vendar to ni int, tako da je GetString. 334 00:24:11,780 --> 00:24:17,770 Naj bo dolžina niza. Tukaj nismo vnese poseben poziv. 335 00:24:17,770 --> 00:24:19,940 Torej, ne vem. 336 00:24:19,940 --> 00:24:23,820 Bom dal moje ime tu in potem sem lahko naredite eno od teh stvari 337 00:24:23,820 --> 00:24:29,600 kjer sem dodeliti besedo za vsako črko ali kaj podobnega. Kul. 338 00:24:29,600 --> 00:24:31,900 Torej, to je dolžina niza. 339 00:24:33,000 --> 00:24:34,640 Torej smo spet na cesarja. 340 00:24:34,640 --> 00:24:38,620 Imamo nekaj orodij, o tem, kako smo Ponovil v nizu, 341 00:24:38,620 --> 00:24:41,250 kako dostopati do vsakega posameznega elementa. 342 00:24:41,250 --> 00:24:44,720 Sedaj lahko vrnemo k programu. 343 00:24:44,720 --> 00:24:48,650 Kot sem že omenil, v ASCII tabeli, vaš najboljši prijatelj, 344 00:24:48,650 --> 00:24:52,300 boste videli številke, ki so povezane z vsako črko. 345 00:24:52,300 --> 00:24:55,900 Torej, tukaj pravijo naši čistopis je, da sem vrti! 346 00:24:55,900 --> 00:25:01,090 Nato vsak od teh znakov se dogaja, da imajo številne in ASCII vrednost, povezano z njim, 347 00:25:01,090 --> 00:25:04,710 tudi opuščaj, tudi prostor, tudi klicaj, 348 00:25:04,710 --> 00:25:06,600 tako da boste želeli obdržati to v mislih. 349 00:25:06,600 --> 00:25:12,360 Tako pravijo naši ključ, da si z njihovo trditev ukazni vrstici je 6. 350 00:25:12,360 --> 00:25:17,770 To pomeni, da v prvem pismu, ki sem jaz, ki predstavlja 73, 351 00:25:17,770 --> 00:25:25,610 želite vrniti na njih ne glede na pismo predstavlja ASCII vrednost 73 + 6. 352 00:25:25,610 --> 00:25:29,020 V tem primeru bi bilo 79. 353 00:25:30,840 --> 00:25:35,040 Zdaj želimo, da se premaknete na naslednji znak. 354 00:25:35,040 --> 00:25:40,960 Torej bo naslednja v indeksu 1 čistim je opuščaj. 355 00:25:40,960 --> 00:25:46,780 Ampak ne pozabite, smo le želeli encipher črke. 356 00:25:46,780 --> 00:25:50,040 Zato želimo zagotoviti, da Opuščaj dejansko ostane enak, 357 00:25:50,040 --> 00:25:54,310 da ne bomo spremenili od 39 do 45, je karkoli. 358 00:25:54,310 --> 00:25:57,150 Želimo, da ostane kot opuščaj. 359 00:25:57,150 --> 00:26:00,780 Zato želimo, da se spomnimo samo encipher črke 360 00:26:00,780 --> 00:26:04,560 ker želimo, da vse ostale simbole, da ostajajo nespremenjene v našem programu. 361 00:26:04,560 --> 00:26:07,130 Še ena stvar, ki jo želim je, da ohrani črk. 362 00:26:07,130 --> 00:26:10,250 Torej, če imate veliko črko, bi morala ostati kot velikimi črkami. 363 00:26:10,250 --> 00:26:12,830 Lowercases mora ostati kot male. 364 00:26:13,620 --> 00:26:19,480 Torej je nekaj uporabnih funkcij, da bi lahko obravnaval le enciphering črk 365 00:26:19,480 --> 00:26:22,380 in da ohranjanje kapitalizacijo stvari 366 00:26:22,380 --> 00:26:25,130 Je isalpha, isupper, islower funkcije. 367 00:26:25,130 --> 00:26:29,270 In tako so funkcije, ki vrnejo vam Boolova vrednost. 368 00:26:29,270 --> 00:26:34,180 V bistvu, resnična ali neresnična. Je to velika črka? Je to alfanumerično? 369 00:26:34,180 --> 00:26:37,180 Je to pismo, v bistvu. 370 00:26:37,180 --> 00:26:41,070 Torej, tukaj so 3 primeri, kako bi lahko uporabite to funkcijo. 371 00:26:41,070 --> 00:26:47,060 V bistvu, bi lahko preizkusijo, ali vrnjeno vrednost, ki vam jih ta funkcija drži ali ne 372 00:26:47,060 --> 00:26:49,400 temelji na tem vhodu. 373 00:26:49,400 --> 00:26:54,880 Ali ne encipher kaj ali je šifra ali pa se prepričajte, da je to velika črka, itd 374 00:26:54,880 --> 00:27:01,080 [Študent] moreš razložite malo več, in kako jih uporabiti? >> Ja, zagotovo. 375 00:27:01,080 --> 00:27:08,470 Torej, če se ozremo nazaj, tukaj imamo kapital I, kajne? 376 00:27:08,470 --> 00:27:14,550 Tako smo vedeli, da sem gre O, saj sem + 6 je O. 377 00:27:14,550 --> 00:27:18,740 Vendar želimo zagotoviti, da O se bo kapital O. 378 00:27:18,740 --> 00:27:22,940 Torej v bistvu, da je nekako bo spremenilo naš način. 379 00:27:22,940 --> 00:27:26,870 Torej, ali je velike ali ne bo nekako spremeniti tako, da imamo opravka z njim. 380 00:27:26,870 --> 00:27:32,360 Torej, če bomo uporabili isupper funkcijo na posameznem indeksu, 381 00:27:32,360 --> 00:27:36,480 Tako isupper ("I"), ki vrne za nas pravi, da vemo, da je to zgornji del. 382 00:27:36,480 --> 00:27:40,360 Torej temelji na tem, kasneje pa bomo šli v formulo 383 00:27:40,360 --> 00:27:42,750 da boste uporabljali za premik stvari v cesarja, 384 00:27:42,750 --> 00:27:46,560 Torej v bistvu, da se bo nekoliko drugačna formula, če je velika črka 385 00:27:46,560 --> 00:27:50,670 za razliko od male črke. Smiselno? 386 00:27:51,020 --> 00:27:52,760 Ja. Brez skrbi. 387 00:27:54,900 --> 00:27:58,990 Govoril sem nekaj o dodajanju 6 k dopisu, ki pa ni povsem smiselna 388 00:27:58,990 --> 00:28:05,500 razen, ko smo nekako razumemo, da ti znaki 389 00:28:05,500 --> 00:28:08,920 so nekako zamenjati z števil. 390 00:28:08,920 --> 00:28:11,250 Kaj moramo storiti, je, da smo nekako uporaba implicitne litje. 391 00:28:11,250 --> 00:28:18,100 Šli bomo v vlivanje malce kasneje, če vzameš vrednost in jo spremeniti v drugo vrsto 392 00:28:18,100 --> 00:28:20,440 kot je prvotno bil. 393 00:28:20,440 --> 00:28:25,910 Ampak s tem pset bomo lahko nekako izmenično uporabo znakov 394 00:28:25,910 --> 00:28:30,880 in njihove ustrezne vrednosti celoštevilskih. 395 00:28:30,880 --> 00:28:35,140 Torej, če ste le Obložite znak le z enojnih narekovajih, 396 00:28:35,140 --> 00:28:40,390 potem boste lahko delali pri njem cela števila, ki se ukvarjajo z njim kot celo število. 397 00:28:40,390 --> 00:28:48,040 Torej kapital C se nanaša na 67 let. Male črke f nanaša na 102. 398 00:28:48,040 --> 00:28:51,480 Še enkrat, če želite izvedeti, te vrednote, pogled na vašo ASCII tabeli. 399 00:28:51,480 --> 00:28:56,160 Torej, pojdimo na nekaj primerov, kako bi lahko za odštevanje in seštevanje, 400 00:28:56,160 --> 00:29:03,130 kako lahko dejansko res deluje s temi znaki, ki jih uporabljajo izmenično. 401 00:29:03,870 --> 00:29:11,350 Jaz pravim, da ASCIIMath se bo za izračun dodatka znak na celo 402 00:29:11,350 --> 00:29:17,590 in nato prikaže posledičnega učinka, kakor tudi nastalega ASCII vrednost. 403 00:29:17,590 --> 00:29:22,290 In tako sem jaz pravim - Bomo se ukvarjajo s tem delom kasneje - 404 00:29:22,290 --> 00:29:29,100 ampak v bistvu, mislim, da bi si rekel teči ASCIIMath skupaj s ključem, 405 00:29:29,100 --> 00:29:30,880 in jaz pravim, da je ta ključ se bo število 406 00:29:30,880 --> 00:29:34,600 s katerimi bomo dodali ta znak. 407 00:29:34,600 --> 00:29:38,560 Torej, tukaj opazil, da odkar sem zahtevna ključ, 408 00:29:38,560 --> 00:29:40,590 ker sem zahtevala, da oni bi mi 1 stvar, 409 00:29:40,590 --> 00:29:45,600 Želim samo, da sprejme. / Asciimath in ključ. 410 00:29:45,600 --> 00:29:49,330 Torej bom zahteval, da je argc enaka 2. 411 00:29:49,330 --> 00:29:54,360 Če ni, potem se bom vrnil 1 in program se bo zaprl. 412 00:29:55,070 --> 00:29:58,540 Zato pravim, da je ključ ne bo v prvi vrstici ukaz argument, 413 00:29:58,540 --> 00:30:05,080 da bo v drugo, in kot vidite tukaj, 414 00:30:05,080 --> 00:30:11,790 Grem bi se to spremenilo v celo število. 415 00:30:15,740 --> 00:30:19,230 Nato bom določil znak, da je r. 416 00:30:19,230 --> 00:30:23,970 Obvestilo, da je tip spremenljivke chr je dejansko število. 417 00:30:23,970 --> 00:30:30,480 Tako, da sem lahko uporabila r kot celo število, je, da jo obdaja s temi enojnih narekovajih. 418 00:30:33,850 --> 00:30:40,560 Torej nazaj na našo printf izjavo, kjer imamo ogrado za znak 419 00:30:40,560 --> 00:30:43,590 in potem ogrado za celo število, 420 00:30:43,590 --> 00:30:49,450 znak je predstavljen z chr, in celo ključnega pomena. 421 00:30:49,450 --> 00:30:54,320 In tako potem bomo v rezultat dodamo 2 skupaj. 422 00:30:54,320 --> 00:30:58,420 Torej bomo dodali r +, kar je ključnega pomena, 423 00:30:58,420 --> 00:31:03,520 in potem bomo natisnete rezultat tega. 424 00:31:06,210 --> 00:31:14,220 Torej bi asciimath. To je odvisno od dneva, tako da je šele teči asciimath. 425 00:31:14,220 --> 00:31:18,290 Oh, ampak glej, da ne storiti ničesar, saj nismo dejansko izročiti to tipko. 426 00:31:18,290 --> 00:31:23,850 Torej, ko je pravkar vrnil 1, naša glavna funkcija je pravkar vrnil nazaj k nam. 427 00:31:23,850 --> 00:31:29,250 Torej, potem pa preide na ključ. Nekdo mi številko. >> [Študent] 4. 428 00:31:29,250 --> 00:31:30,920 4. Ok. 429 00:31:30,920 --> 00:31:39,280 Torej r povečala za 4 se dogaja, da nam v, ki ustreza ASCII vrednosti 118. 430 00:31:39,280 --> 00:31:43,880 Torej je nekako smiselno, da se - 431 00:31:43,880 --> 00:31:51,250 Pravzaprav, lahko vas vprašam, kaj misliš ASCII vrednost r je, če r + 4 je 118? 432 00:31:53,070 --> 00:31:55,470 Potem ja, r 114. 433 00:31:55,470 --> 00:32:03,010 Torej, če pogledaš na ASCII tabele pa, seveda dovolj, boste videli, da r predstavlja 114. 434 00:32:03,010 --> 00:32:08,610 Torej sedaj, ko vemo, da lahko dodamo, da cela znakov, se to zdi precej preprost. 435 00:32:08,610 --> 00:32:12,740 Mi smo le, da bo ponovitev čez niz, kot smo videli na primeru prej. 436 00:32:12,740 --> 00:32:17,170 Preverili bomo, če je to pismo. 437 00:32:17,170 --> 00:32:20,420 Če je tako, potem ga bomo preusmeriti na kateri koli ključ. 438 00:32:20,420 --> 00:32:23,650 Precej preprosto, razen če vam je všeč to, da, 439 00:32:23,650 --> 00:32:32,140 boste videli, da z, ki jo zastopa 122, potem bi vam drugačen značaj. 440 00:32:32,140 --> 00:32:37,770 Dejansko smo želeli, da ostanejo v naši abecedi, kajne? 441 00:32:37,770 --> 00:32:43,180 Zato moramo ugotoviti, na nek način nekakšno ovije okoli. 442 00:32:43,180 --> 00:32:47,190 Ko prispete Zed in želite povečati določeno število, 443 00:32:47,190 --> 00:32:51,230 ne želite iti v preko ASCII abecedi delu; 444 00:32:51,230 --> 00:32:54,140 želite zaviti nazaj vse do A. 445 00:32:54,140 --> 00:32:58,550 Toda ne pozabite, da ste še vedno ohranja zadevo. 446 00:32:58,550 --> 00:33:00,980 Torej vedo, da pisma ne more postati simboli 447 00:33:00,980 --> 00:33:05,290 tako kot simboli ne bodo spreminjali, kot dobro. 448 00:33:05,290 --> 00:33:08,170 V zadnjem pset vam zagotovo ne bi bilo treba, 449 00:33:08,170 --> 00:33:14,310 ampak možnost je bila, da izvajajo svoje pohlepno pset s pomočjo modula funkcijo. 450 00:33:14,310 --> 00:33:17,230 Ampak zdaj smo dejansko dogaja, da je treba uporabiti modul, 451 00:33:17,230 --> 00:33:19,900 tako da pojdiva nad tem malo. 452 00:33:19,900 --> 00:33:26,920 V bistvu, če imate x, y po modulu, ki vam preostanek x, deljena z y. 453 00:33:26,920 --> 00:33:30,930 Tukaj je nekaj primerov tukaj. Imamo 27% 15. 454 00:33:30,930 --> 00:33:36,200 V bistvu, če odštejemo 15 od 27 tolikokrat, kot je mogoče, ne da bi negativno 455 00:33:36,200 --> 00:33:39,060 potem dobiš 12 levo čez. 456 00:33:39,060 --> 00:33:44,650 Torej, to je nekako kot v matematičnem smislu, ampak kako lahko dejansko uporablja? 457 00:33:44,650 --> 00:33:47,100 To bo koristno za naše wrapover. 458 00:33:47,100 --> 00:33:55,420 Za to, recimo, da sem prosil, da vsi delimo v 3 skupine. 459 00:33:55,420 --> 00:33:58,010 Včasih to naredite v skupinah in česa podobnega. 460 00:33:58,010 --> 00:34:01,320 Povejte mi rekel: "V redu, želim vam vsem, da se razdeli na 3". 461 00:34:01,320 --> 00:34:04,240 Kako bi to naredil? 462 00:34:04,240 --> 00:34:06,810 [Neslišno študentski odziv] Ja, točno. Štetje off. Ok. 463 00:34:06,810 --> 00:34:10,260 Kaj je dejansko naredil. Ali želite začeti? 464 00:34:10,260 --> 00:34:13,810 [Študenti štetje off] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Vendar ne pozabite ... >> [Študent] Oh, oprostite. 466 00:34:16,620 --> 00:34:18,730 To je res dobra točka. 467 00:34:18,730 --> 00:34:24,130 Rekel si, 4, vendar smo dejansko želijo, da rečeš 1, saj smo le želeli 3 skupine. 468 00:34:24,130 --> 00:34:30,159 Torej, kako - Ne, to je res dober primer, saj je potem, kako bi lahko rekli 1? 469 00:34:30,159 --> 00:34:33,370 Kakšna je povezava med 4 in 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 Torej, če boste še naprej, bi si 2. 472 00:34:41,460 --> 00:34:44,540 Torej imamo 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Še enkrat, ti si dejansko 5. oseba. Kako veste, da pravijo, 2 namesto 5? 474 00:34:49,420 --> 00:34:53,760 Pravite, 5 mod 3 je 2. 475 00:34:53,760 --> 00:34:59,100 Rad bi videl, koliko skupine 3 so ostala, potem kar bi jaz 476 00:34:59,100 --> 00:35:02,860 In tako je, če bomo nadaljevali po celotnem prostoru, 477 00:35:02,860 --> 00:35:07,760 potem bomo videli, da smo vedno dejansko uporabo mod funkcijo za sebe 478 00:35:07,760 --> 00:35:09,990 do vrste računa off. 479 00:35:09,990 --> 00:35:14,490 To je bolj neke vrste oprijemljiv primer, kako lahko uporabite modulo 480 00:35:14,490 --> 00:35:17,960 ker sem prepričan, večina od nas verjetno šli skozi ta proces 481 00:35:17,960 --> 00:35:19,630 kjer smo imeli za štetje dol. 482 00:35:19,630 --> 00:35:21,840 Vsa vprašanja v zvezi modulu? 483 00:35:21,840 --> 00:35:25,360 To bo zelo pomembno, da razumemo koncepte to, 484 00:35:25,360 --> 00:35:28,640 zato želim, da poskrbite, da boste vi razumeli. 485 00:35:28,640 --> 00:35:34,660 [Študent] Če ni ostalo, ne da bi vam dejansko število? 486 00:35:34,660 --> 00:35:40,430 Če bi ena od prvih 3 od njih to storil, bi jih dal, kar dejansko so, 487 00:35:40,430 --> 00:35:43,310 ali bi jo jim dal [neslišno] >> To je dobro vprašanje. 488 00:35:43,310 --> 00:35:48,750 Če ni ostalo za modulo - tako da imate 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 ki dejansko vam daje nazaj 0. 490 00:35:53,670 --> 00:35:57,290 O tem bomo govorili, da je malce kasneje. 491 00:35:58,810 --> 00:36:07,720 Oh ja, na primer, 3. oseba - 3 mod 3 je dejansko 0, vendar je rekla 3. 492 00:36:07,720 --> 00:36:14,900 Torej, to je nekako kot notranje ulova, na primer, 493 00:36:14,900 --> 00:36:17,620 kot je v redu, če je mod 0 potem bom, da je 3. oseba. 494 00:36:17,620 --> 00:36:22,740 Ampak bomo dobili v naravi, kako bi radi, da se ukvarjajo s tem, kaj je 0 kasneje. 495 00:36:22,740 --> 00:36:32,750 Torej, zdaj smo nekako imajo način kartiranja Zed na pravem pismu. 496 00:36:32,750 --> 00:36:34,920 Torej, zdaj smo šli preko teh primerov, 497 00:36:34,920 --> 00:36:37,880 smo nekako vidim, kako bi lahko delo Cezar. 498 00:36:37,880 --> 00:36:42,640 Vidiš 2 abeced in potem videli, da premikajo. 499 00:36:42,640 --> 00:36:44,430 Torej, kaj je poskusil izraziti, da v smislu formule. 500 00:36:44,430 --> 00:36:46,940 Ta formula je dejansko dal v spec, 501 00:36:46,940 --> 00:36:52,070 Ampak kaj je nekako spregleda, kaj pomeni vsaka spremenljivka. 502 00:36:52,070 --> 00:36:55,000 Naš končni rezultat bo Zakrivena. 503 00:36:55,000 --> 00:36:58,300 Torej, to pravi, da je i-narava Zakrivena 504 00:36:58,300 --> 00:37:02,500 bo ustrezala i značaja čistim. 505 00:37:02,500 --> 00:37:08,130 To je smiselno, saj želimo vedno podloga te stvari. 506 00:37:08,130 --> 00:37:13,480 Torej bo v i-lik Zakrivena plus k, ki je naš ključ - 507 00:37:13,480 --> 00:37:17,230 da ima smisel - in potem imamo to mod 26. 508 00:37:17,230 --> 00:37:19,860 Spomni se, ko smo imeli Zed 509 00:37:19,860 --> 00:37:24,190 nismo želeli priti v naravo, zato smo želeli, da ga mod 510 00:37:24,190 --> 00:37:26,540 in nekako zaviti okoli abecede. 511 00:37:26,540 --> 00:37:33,430 Po Zed bi šel za, b, c, d, dokler imaš na pravo številko. 512 00:37:33,430 --> 00:37:44,690 Torej vemo, da je Zed, če bi + 6, ker nam f po Zed prihaja, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Torej ne pozabite, da se prepričam, da je Zed + 6 se dogaja, da nam f. 514 00:37:52,530 --> 00:38:03,530 V ASCII vrednosti z je 122 in 102 f. 515 00:38:03,530 --> 00:38:10,570 Zato moramo najti način, da postane naš Cezar formule nam 102 516 00:38:10,570 --> 00:38:13,590 po zaužitju na 122. 517 00:38:13,590 --> 00:38:19,550 Torej, če smo le uporablja to formulo, je ('z' + 6) 26%, ki dejansko vam daje 24 518 00:38:19,550 --> 00:38:25,980 ker 122 + 6 je 128, 128% 26 vam 24 ostanek. 519 00:38:25,980 --> 00:38:29,140 Ampak to v resnici ne pomeni f. To je definitivno ni 102. 520 00:38:29,140 --> 00:38:33,590 To tudi ni 6. črka v abecedi. 521 00:38:33,590 --> 00:38:41,550 Torej je očitno, da moramo imeti nek način poteg to malo. 522 00:38:42,970 --> 00:38:51,340 V okviru rednega abecede, vemo, da je z 26. pismo in f 6. mesto. 523 00:38:51,340 --> 00:38:55,460 Vendar pa smo v računalništvu, tako da bomo indeksa na 0. 524 00:38:55,460 --> 00:39:00,690 Torej, namesto da se je število z 26, bomo rekli, da je število 25 525 00:39:00,690 --> 00:39:02,630 ker je 0. 526 00:39:02,630 --> 00:39:04,770 Torej, zdaj pa uporabljajo to formulo. 527 00:39:04,770 --> 00:39:11,710 Imamo z zastopniki 25 + 6, ki vam daje 31. 528 00:39:11,710 --> 00:39:15,790 In 31 mod 26 vam ponuja 5 kot preostali. 529 00:39:15,790 --> 00:39:20,500 To je odlično, saj vemo, da je f 5. črka v abecedi. 530 00:39:20,500 --> 00:39:26,400 Ampak to še ni f, kajne? Še vedno ni 102. 531 00:39:26,400 --> 00:39:32,730 Torej za to pset bo izziv poskuša ugotoviti povezave 532 00:39:32,730 --> 00:39:36,910 med pretvorbo med temi ASCII vrednosti in abecedni indeks. 533 00:39:36,910 --> 00:39:40,280 V bistvu, kaj boste želeli storiti, da želite začeti z ASCII vrednostmi, 534 00:39:40,280 --> 00:39:45,390 potem pa želite, da nekako prenesti v indeksu abecednem 535 00:39:45,390 --> 00:39:52,610 nato pa izračunati, koliko dopis mora biti - v bistvu, kakšna je njegova abecedni indeks 536 00:39:52,610 --> 00:39:57,660 z šifra učinka - da se nato prevedejo nazaj v ASCII vrednosti. 537 00:39:57,660 --> 00:40:04,870 Torej, če ste potegniti svoj ASCII tabelo, nato pa poskusite najti odnosov med, recimo, 102 in 5 538 00:40:04,870 --> 00:40:10,440 ali 122 in 25. 539 00:40:12,140 --> 00:40:15,690 Smo gotten naš ključ od argumentov v ukazni vrstici, smo gotten čistim, 540 00:40:15,690 --> 00:40:17,520 smo ga šifrirane. 541 00:40:17,520 --> 00:40:19,820 Zdaj je vse, kar nam je ostalo storiti je, da ga natisnete. 542 00:40:19,820 --> 00:40:22,040 Mi lahko storite nekaj različnih načinov. 543 00:40:22,040 --> 00:40:24,570 Kaj lahko storimo je dejansko tiskanje sproti. 544 00:40:24,570 --> 00:40:28,250 Kot smo Ponovil nad znake v nizu, 545 00:40:28,250 --> 00:40:31,660 Lahko bi preprosto samo tiskanje prav takrat, ko smo ga izračunali. 546 00:40:31,660 --> 00:40:36,030 Lahko pa si jo tudi shranite v matriko in imajo niz znakov 547 00:40:36,030 --> 00:40:39,280 in na koncu Ponovil v tej celotni niz in ga natisnite. 548 00:40:39,280 --> 00:40:40,980 Torej imate nekaj možnosti za to. 549 00:40:40,980 --> 00:40:47,280 In ne pozabite, da je% d se bo ograda za tiskanje znak. 550 00:40:47,280 --> 00:40:50,420 Torej imamo Cezar, zdaj pa gremo na Vigenere, 551 00:40:50,420 --> 00:40:57,580 , ki je zelo podoben cesarju, vendar le nekoliko bolj zapleteno. 552 00:40:57,580 --> 00:41:03,310 Torej v bistvu z Vigenere se boste mimo ključno besedo. 553 00:41:03,310 --> 00:41:06,510 Torej, namesto s številkami, boste imeli niz, 554 00:41:06,510 --> 00:41:09,200 in tako, da se dogaja, da deluje kot ključno besedo. 555 00:41:09,200 --> 00:41:14,440 Potem pa, kot ponavadi, boste dobili poziv za vrvico od uporabnika 556 00:41:14,440 --> 00:41:19,050 in ga encipher in potem jim hrbet Zakrivena. 557 00:41:19,050 --> 00:41:24,650 Torej, kot sem rekel, da je zelo podoben cesarju, razen namesto premika po določenem številu, 558 00:41:24,650 --> 00:41:30,620 število se dejansko dogaja, da spremeni vsakič od značaja značaja. 559 00:41:30,620 --> 00:41:34,890 Ki bi predstavljal dejanskega števila premik, to je zastopnik tipkovnice črkami. 560 00:41:34,890 --> 00:41:43,150 Torej, če boste vnesli v premik, na primer, potem bi to ustreza premiku 0. 561 00:41:43,150 --> 00:41:45,900 Torej je spet vrnil v abecedni indeks. 562 00:41:45,900 --> 00:41:49,100 Kaj bi lahko bilo koristno, če ste videli, da smo dejansko ukvarjajo z ASCII vrednostmi 563 00:41:49,100 --> 00:41:51,790 kot tudi črke, kot tudi indeks po abecednem, 564 00:41:51,790 --> 00:41:58,020 Mogoče je bil ali bi svoj ASCII tabelo, ki prikazuje abecedni indeks od 0 do 25, 565 00:41:58,020 --> 00:42:03,750 A do Z, in ASCII vrednosti, tako da boste lahko videli nekakšen odnos 566 00:42:03,750 --> 00:42:07,020 in skico, in poskusite najti nekaj vzorcev. 567 00:42:07,020 --> 00:42:11,010 Podobno, če ste bili premika na primer z določeno f - 568 00:42:11,010 --> 00:42:21,110 in to je bodisi male ali velike črke f - potem bi to ustreza 5. 569 00:42:21,110 --> 00:42:24,180 Ali smo dobro, tako daleč? 570 00:42:25,770 --> 00:42:30,050 Formula za Vigenere je malo drugačen. 571 00:42:30,050 --> 00:42:32,960 V bistvu, boste videli, da je tako kot Cezar, 572 00:42:32,960 --> 00:42:37,390 razen namesto samo k imamo k, indeks j. 573 00:42:37,390 --> 00:42:44,810 Obvestilo, da mi ne uporabljam, ker v bistvu dolžino ključno besedo 574 00:42:44,810 --> 00:42:49,850 ni nujno, koliko našega Zakrivena. 575 00:42:49,850 --> 00:42:56,130 To bo malo bolj jasno, ko vidimo primer, da imam malo kasneje. 576 00:42:56,130 --> 00:43:03,160 V bistvu, če zaženete program s ključno besedo ohai, 577 00:43:03,160 --> 00:43:08,560 potem to pomeni, da vsakič, ohai se bo tvoja izmena. 578 00:43:08,560 --> 00:43:11,060 Torej glede na kakšnem položaju ste v vašo ključno besedo, 579 00:43:11,060 --> 00:43:15,800 boste premakniti vaš značaj nekaterih Zakrivena za ta znesek. 580 00:43:15,800 --> 00:43:19,630 Še enkrat, tako kot Cezar, želimo zagotoviti, da bomo ohranili kapitalizacijo stvari 581 00:43:19,630 --> 00:43:22,900 in smo samo encipher črke, ne znakov ali presledkov. 582 00:43:22,900 --> 00:43:26,330 Torej, pogled nazaj na cesarja o nalogah, ki ste jih uporabili, 583 00:43:26,330 --> 00:43:32,570 način, da ste se odločili, kako se premika stvari in se uporablja, da je vaš program tukaj. 584 00:43:32,570 --> 00:43:35,260 Torej map tole. 585 00:43:35,260 --> 00:43:39,680 Imamo čistim, da smo gotten od uporabnika iz GetString 586 00:43:39,680 --> 00:43:44,090 Ta pravi ... je CS50! 587 00:43:44,090 --> 00:43:47,090 Potem smo imeli ključno besedo za ohai. 588 00:43:47,090 --> 00:43:50,930 Prve 4 znaki so zelo preprosta. 589 00:43:50,930 --> 00:43:55,580 Vemo, da je T se bo premaknilo zo, 590 00:43:55,580 --> 00:44:01,990 potem h se bo preusmerila s H, I, se bo preusmerila s. 591 00:44:01,990 --> 00:44:04,610 Tukaj lahko vidite, da predstavlja 0, 592 00:44:04,610 --> 00:44:11,940 tako da potem končno vrednost je pravzaprav ravno isto črko kot prej. 593 00:44:11,940 --> 00:44:15,250 Nato se je premaknilo z i. 594 00:44:15,250 --> 00:44:19,370 Ampak potem imate te dobe tukaj. 595 00:44:19,370 --> 00:44:25,960 Ne želimo, da encipher, da je tako, potem ne bomo spremenili z nobenim 596 00:44:25,960 --> 00:44:31,280 in samo izpisal obdobje nespremenjeno. 597 00:44:31,280 --> 00:44:38,020 [Študent] Ne razumem, kako veš, da je ta zamakne - Kje si - >> Oh, oprostite. 598 00:44:38,020 --> 00:44:41,620 Na vrhu tukaj vidite, da je argument v ukazni vrstici ohai tukaj 599 00:44:41,620 --> 00:44:43,740 da se dogaja, da je ključna beseda. 600 00:44:43,740 --> 00:44:49,550 In tako v bistvu, ste kolesarjenje skozi znakov ključne besede. 601 00:44:49,550 --> 00:44:52,020 [Študent] Torej o se bo prestavljanje enako - 602 00:44:52,020 --> 00:44:56,260 Torej, o ustreza določenemu številu v abecedi. 603 00:44:56,260 --> 00:44:58,400 [Študent] desno. Ampak kje si dobil del od CS50? 604 00:44:58,400 --> 00:45:02,540 Oh. To je v GetString, kjer ste kot: »Daj mi niz za kodiranje." 605 00:45:02,540 --> 00:45:07,510 [Študent] Ti boš dal ta argument za premik z 606 00:45:07,510 --> 00:45:09,380 in potem boš prosil za svoj prvi niz. >> Ja. 607 00:45:09,380 --> 00:45:12,440 Torej, ko zaženete program, se bomo, da vključuje ključne besede 608 00:45:12,440 --> 00:45:14,740 v svojih trditvah v ukazni vrstici, ko ga zaženete. 609 00:45:14,740 --> 00:45:19,740 Potem, ko ste preverili, da ste dejansko dal 1 in ne več, ne manj, 610 00:45:19,740 --> 00:45:23,750 potem boš jih spodbudili za niz, rekel: "Daj mi niz." 611 00:45:23,750 --> 00:45:27,630 Torej, to je, če je v tem primeru oni dal to ... je CS50! 612 00:45:27,630 --> 00:45:32,090 Torej boste uporabili in uporabljajo ohai in izbirate več. 613 00:45:32,090 --> 00:45:38,200 Obvestilo, da je tu preskočijo šifriranje dobe, 614 00:45:38,200 --> 00:45:51,660 ampak glede na naš položaj za ohai, naslednji smo o. 615 00:45:51,660 --> 00:45:54,990 V tem primeru je to malo težje videti, ker to je 4, 616 00:45:54,990 --> 00:45:57,710 tako da je še vedno malo. Samo držijo z mano. 617 00:45:57,710 --> 00:46:02,960 Potem imamo i in S, ki se jih nato prevedli zo in h oz. 618 00:46:02,960 --> 00:46:09,370 Potem imamo prostor, zato pa vemo, da ne bomo encipher prostore. 619 00:46:09,370 --> 00:46:18,930 Ampak obvestilo, da namesto da bi šel na tem mestu prav tu, 620 00:46:18,930 --> 00:46:28,330 smo šifriranje jih - ne vem, če lahko vidite, da je - prav tukaj. 621 00:46:28,330 --> 00:46:33,710 Torej to ni všeč, ga lahko dejansko vnaprej, recimo, o gre tukaj, h gre tukaj, 622 00:46:33,710 --> 00:46:39,200 gre tukaj, i gre tukaj, o, h, i, o, h, i. Saj ne delaj tega. 623 00:46:39,200 --> 00:46:43,760 Vi samo premik svoj položaj na ključne besede 624 00:46:43,760 --> 00:46:51,020 če veste, da ste dejansko dogaja, da se dejansko šifriranje pismo. 625 00:46:51,020 --> 00:46:53,920 Ali to nekako smiselno? 626 00:46:53,920 --> 00:46:55,800 Ok. 627 00:46:56,490 --> 00:46:58,500 Torej je le nekaj opozoril. 628 00:46:58,500 --> 00:47:03,760 Hočeš, da poskrbite, da boste le napreduje v naslednjo črko v vaše ključne besede 629 00:47:03,760 --> 00:47:06,390 Če lik v vašem čistim je pismo. 630 00:47:06,390 --> 00:47:09,120 Tako pravijo, da smo na o. 631 00:47:09,120 --> 00:47:19,310 Opažamo, da je naslednji znak, indeks i od čistim, je številka, na primer. 632 00:47:19,310 --> 00:47:31,630 Potem ne bomo vnaprej zj, indeks za našo ključno besedo, dokler ne bomo dosegli še eno pismo. 633 00:47:31,630 --> 00:47:36,230 Še enkrat, boste prav tako želeli, da poskrbite, da boste blatnikov do začetka ključne besede 634 00:47:36,230 --> 00:47:37,770 ko si na koncu. 635 00:47:37,770 --> 00:47:42,030 Če vidite tukaj smo na i, naslednji pa mora biti o. 636 00:47:42,030 --> 00:47:47,690 Torej hočeš najti način, da lahko wraparound na začetek vaše ključne besede 637 00:47:47,690 --> 00:47:49,470 Vsakič, ko pridete do konca. 638 00:47:49,470 --> 00:47:55,040 In tako spet, kakšen subjekt je koristno, v tem primeru za ovije okoli? 639 00:47:56,630 --> 00:47:59,840 Tako kot pri štetju off primer. 640 00:47:59,840 --> 00:48:03,710 [Študent] znak za odstotek. >> Ja, znak za odstotek, kar je modula. 641 00:48:03,710 --> 00:48:11,250 Tako bo modulo prišel prav tukaj, če želite zaviti v indeks v vašem ohai. 642 00:48:11,250 --> 00:48:17,700 In ravno hiter namig: Misli na zavijanje po ključnih besedah ​​nekoliko podoben štetje off, 643 00:48:17,700 --> 00:48:23,590 če, če obstaja 3 skupine, 4. oseba, 644 00:48:23,590 --> 00:48:30,610 Njihovo število se je, da so rekli, da je 4 mod 3, ki je bil 1. 645 00:48:30,610 --> 00:48:32,880 Torej, poskusite in si o njej mislijo tako. 646 00:48:34,770 --> 00:48:42,740 Kot ste videli v formuli, kjer imate ci, nato pa pi potem pa kJ, 647 00:48:42,740 --> 00:48:44,700 hočeš prepričati, da si beležite teh. 648 00:48:44,700 --> 00:48:47,580 Ni vam treba poklicati, da sem se, da vam ni treba, da ga pokličete j, 649 00:48:47,580 --> 00:48:53,270 vendar želite, da poskrbite, da boste spremljali položaj, da ste v vašem hotelu čistim 650 00:48:53,270 --> 00:48:55,790 kot tudi stališča, da si na na vašo ključno besedo 651 00:48:55,790 --> 00:48:59,840 ker tisti, ki niso nujno, bo isto. 652 00:48:59,840 --> 00:49:06,400 Ne le, da je ključno - da bi se lahko popolnoma drugačen od vašega dolžina čistim. 653 00:49:06,400 --> 00:49:09,140 Tudi vaš čistopis, so številke in črke, 654 00:49:09,140 --> 00:49:14,450 tako da ne bo popolnoma ujemajo skupaj. Da. 655 00:49:14,450 --> 00:49:19,280 [Študent] Ali obstaja funkcija, da spremenite zadevo? 656 00:49:19,280 --> 00:49:24,530 Lahko spremenite v prestolnici? >> Ja, prav gotovo. 657 00:49:24,530 --> 00:49:27,890 Si lahko ogledate - Verjamem, da je vse, toupper 1 besedo. 658 00:49:30,650 --> 00:49:36,310 Toda, ko ste poskušali šifra stvari in ohraniti besedilo, 659 00:49:36,310 --> 00:49:39,350 v bistvu je najbolje, da imajo ločene primere. 660 00:49:39,350 --> 00:49:42,040 Če je velika črka, nato pa želite preusmeriti s tem 661 00:49:42,040 --> 00:49:46,460 ker je v svoji formuli, ko pogledam nazaj, kako moramo nekako poti 662 00:49:46,460 --> 00:49:50,900 izmenično med ASCII način predstavlja število 663 00:49:50,900 --> 00:49:55,020 in dejansko abecedni indeks, želimo zagotoviti 664 00:49:55,020 --> 00:50:01,850 tam bo še kakšen vzorec, da boste za uporabo. 665 00:50:01,850 --> 00:50:04,580 Še ena opomba na vzorcu, pravzaprav. 666 00:50:04,580 --> 00:50:07,250 Ti boš gotovo se ukvarjajo s številkami. 667 00:50:07,250 --> 00:50:11,280 Poskusi, da ne uporabljajo magične številke, ki je primer slog. 668 00:50:11,280 --> 00:50:18,470 Torej, da želite vsak nekaj časovnega zamika po všeč - 669 00:50:18,470 --> 00:50:22,400 V redu, torej namig, še spojler, ko boš lahko premika nekaj 670 00:50:22,400 --> 00:50:26,310 do določenega zneska, poskusite ne predstavlja, da z dejanskim številom 671 00:50:26,310 --> 00:50:32,810 ampak poskusiti in videli, če lahko uporabite ASCII vrednost, ki bo nekako bolj smiselno. 672 00:50:32,810 --> 00:50:35,470 Še ena opomba: Zaradi imamo opravka s formulami, 673 00:50:35,470 --> 00:50:41,200 čeprav bo vaš TF nekako vem, kaj bi si lahko vzorec uporabe, 674 00:50:41,200 --> 00:50:44,430 najbolje, da v svoje vrste pripombah pojasnjuje logiko, kot so, 675 00:50:44,430 --> 00:50:51,880 "Jaz sem z uporabo tega vzorca, ker ..." in nekako razložiti vzorec jedrnato v vaših komentarjih. 676 00:50:54,090 --> 00:50:58,990 [To je potopis 2] Če ni katera koli druga vprašanja, bom samo ostati tukaj malo. 677 00:50:58,990 --> 00:51:04,370 Veliko sreče z vašo pset 2: kripto in hvala za prihod. 678 00:51:06,070 --> 00:51:08,620 [Študent] Hvala. >> Hvala. 679 00:51:09,220 --> 00:51:10,800 [Media trenutno intro]