1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Walkthrough - Problema rinkinys 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvardo universiteto] 3 00:00:05,170 --> 00:00:07,490 [Tai CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Gerai. Sveiki, visi, ir sveiki atvykę Walkthrough 2. 5 00:00:10,750 --> 00:00:14,330 Pirma, aš noriu pasveikinti jus apdailos pset 1. 6 00:00:14,330 --> 00:00:18,140 Aš žinau, kad jis galėjo būti šiek tiek sunku, kai kurie iš jūsų, 7 00:00:18,140 --> 00:00:20,460 galėjo būti jūsų pirmasis kompiuterinė programa, kuri jums parašė, 8 00:00:20,460 --> 00:00:24,500 bet tik nepamirškite, kad šį tikslą, kai jūs atsigręžti semestro pabaigoje, 9 00:00:24,500 --> 00:00:29,820 jums pažvelgti pset 1 ir jūs galėsite pasakyti: "Ei, aš galėjo padaryti, kad per 5 minutes." 10 00:00:29,820 --> 00:00:35,700 Taigi, žinote ir kuriais pasitikite, kad tai pabaigoje jums tikrai rasti 1 pset gana paprasta. 11 00:00:35,700 --> 00:00:40,640 Bet dabar ji yra didžiulis pasiekimas, ir sveikinimai gauti padaryti. 12 00:00:40,640 --> 00:00:44,010 Dabar, taip pat trumpa pastaba, kol mes gauti į rankos mėsos. 13 00:00:44,010 --> 00:00:48,340 Aš tik noriu, kad greitai dėmesį, kad aš kartais neturite pakankamai laiko 14 00:00:48,340 --> 00:00:52,500 per walkthroughs eiti per kiekvieną problemą, daro taip, 15 00:00:52,500 --> 00:00:56,140 ir gana galbūt kaip tik sutelkti dėmesį į 1 arba 2 rūšių diegimas, 16 00:00:56,140 --> 00:00:57,750 būdai, kad galima tai padaryti. 17 00:00:57,750 --> 00:01:01,970 Bet tai nėra pasakyti, kad jums yra draudžiamas daro jį kitu būdu. 18 00:01:01,970 --> 00:01:05,980 Yra dažnai, kaip su kompiuterių mokslo, daug būdų, kaip daryti dalykus, 19 00:01:05,980 --> 00:01:12,190 ir tai tikrai jaučiasi laisvai naudoti kito tipo tirpalo, nei aš gali būti pateiktos. 20 00:01:12,190 --> 00:01:14,520 [2 pset: Crypto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. Klausimų skyrius - 1. Cezaris - 2. Vigenere] 22 00:01:17,160 --> 00:01:20,650 Gerai. Taigi problema nustatyti 2: Crypto yra įdomus vienas. 23 00:01:20,650 --> 00:01:24,500 Vėlgi, su kiekvienu pset jūs pradėsite su klausimų skyriuje 24 00:01:24,500 --> 00:01:29,600 kad manimi vyksta jūsų sekcijose turi būti atliekamas su savo paskirtiems mokymo kolegos. 25 00:01:29,600 --> 00:01:31,670 Mes neketiname eiti per tai per rankos, 26 00:01:31,670 --> 00:01:35,100 tačiau jie tikrai padės baigsite pset. 27 00:01:35,100 --> 00:01:38,100 Taigi, pirmoji dalis problemos rinkinį Cezaris. 28 00:01:38,100 --> 00:01:43,470 Ir taip, Cezaris kas bus perduoti jums su sveikojo skaičiaus klavišą, 29 00:01:43,470 --> 00:01:48,420 ir jums bus užšifruoti teksto eilutę, kad jie suteiks jums 30 00:01:48,420 --> 00:01:50,670 ir suteikti jiems šifruotą dalykas. 31 00:01:50,670 --> 00:01:56,050 Jei kas nors stebėjo Kalėdų istorija, yra pavyzdys, kad. 32 00:01:56,050 --> 00:01:59,090 Tada antroji dalis problemos komplekto yra Vigenere 33 00:01:59,090 --> 00:02:01,790 kuris yra daugiau pažangių šifravimo metodas. 34 00:02:01,790 --> 00:02:05,640 Ir taip mes ketiname šifruoti teksto fragmentą, 35 00:02:05,640 --> 00:02:09,600 išskyrus tuos atvejus, o ne tik su vienu sveikojo skaičiaus, mes iš tikrųjų ketiname koduoti 36 00:02:09,600 --> 00:02:13,340 su raktiniu žodžiu, kad vartotojas bus pateikti mums. 37 00:02:16,270 --> 00:02:22,090 Gerai, kad pirmasis įrankis, įrankinės šiandien yra iš tikrųjų bus atnaujinti prietaisą. 38 00:02:22,090 --> 00:02:26,430 Dėl diskusijų lentoje būtų pamatyti dalykų, pavyzdžiui, "Kodėl tai veikia?" 39 00:02:26,430 --> 00:02:28,110 "Kodėl nepateikia 50?" 40 00:02:28,110 --> 00:02:31,830 ir dažnai sprendimas iš tikrųjų yra tik atnaujinti savo prietaisą. 41 00:02:31,830 --> 00:02:36,730 Ir todėl, jei jūs tiesiog paleisti terminalo lange jūsų prietaiso sudo yum-y - 42 00:02:36,730 --> 00:02:40,040 tai vėliava sakydamas taip, atnaujinti viską - atnaujinta 43 00:02:40,040 --> 00:02:42,280 tada jūsų įrenginys bus atnaujinti, jei reikia. 44 00:02:42,280 --> 00:02:46,960 Ir ji negadina, jei jūs jau yra naujausios versijos prietaiso. 45 00:02:46,960 --> 00:02:51,280 Tada jis bus tik pasakyti, jokių naujų atnaujinimų, ir jūs galite toliau dirbti kartu. 46 00:02:51,280 --> 00:02:55,800 Bet tai yra gerai, net vykdyti kiekvieną kartą, kai atidarote prietaiso 47 00:02:55,800 --> 00:02:57,140 nes mes dar labai daug - 48 00:02:57,140 --> 00:03:00,320 kartais, jei mes einame į Klaidos - Tvirtinimo jį į prietaisą. 49 00:03:00,320 --> 00:03:03,180 Todėl įsitikinkite, įsitikinkite, kad turite naujausią versiją su prietaiso 50 00:03:03,180 --> 00:03:07,710 ir paleisti, kad atnaujinti yra. 51 00:03:07,710 --> 00:03:14,360 Gerai. Taigi, kadangi mes susiduriame su raidėmis ir keičiasi, šifravimo dalykų, 52 00:03:14,360 --> 00:03:20,410 mes ketiname tikrai norite tapti geriausiais draugais su mūsų ASCII diagramos. 53 00:03:20,410 --> 00:03:24,350 Yra daug tie internete, jei jums rasti. Gal net padaryti savo. 54 00:03:24,350 --> 00:03:29,950 Iš esmės, nurodant kiekvienos raidės ir kiekvienas skaičius ir Kiekvienas personažas 55 00:03:29,950 --> 00:03:32,210 yra numeris su jais susiję, 56 00:03:32,210 --> 00:03:38,670 ir todėl gerai matyti savo ASCII reikšmes kartu su faktinio laišku. 57 00:03:38,670 --> 00:03:42,310 Kad tikrai padės jums į problemą, rinkinį. 58 00:03:42,310 --> 00:03:45,750 Vienas dalykas, kad tikrai padėjo man šią problemą, buvo iš tikrųjų jį atspausdinti, 59 00:03:45,750 --> 00:03:48,380 ir kaip buvau išgyvena, aš iš tikrųjų atkreipti į jį, 60 00:03:48,380 --> 00:03:51,150 rašo: "Jei tai turi eiti ten, tada ..." 61 00:03:51,150 --> 00:03:55,270 Rūšies remtis pažymėkite ją, tapo geriausi draugai su savo ASCII lentelę. 62 00:03:57,240 --> 00:04:00,750 Tada mes turime kelias kitas priemones, mūsų žinioje. 63 00:04:00,750 --> 00:04:03,750 Šį kartą, o ne iš tikrųjų paskatino vartotoją visiems jų indėlį 64 00:04:03,750 --> 00:04:05,230 mes ketiname padaryti derinys. 65 00:04:05,230 --> 00:04:06,880 Mes ketiname greitai juos kai įėjimo, 66 00:04:06,880 --> 00:04:11,350 bet mes taip pat ketiname tiesiog naudoti komandinės eilutės argumentai. 67 00:04:11,350 --> 00:04:15,600 Taigi, kai jie paleisti savo programą, paprastai jūs pasakyti. / Hello, pavyzdžiui, 68 00:04:15,600 --> 00:04:17,310 jei jūsų programa hello.c. 69 00:04:17,310 --> 00:04:22,500 Bet šį kartą, o ne tiesiog pasakyti, kad jie gali įdėti žodžius, argumentai vėliau. 70 00:04:22,500 --> 00:04:27,210 Ir taip mes ketiname naudoti bet jie pereina į mus, kaip jų indėlį, taip pat, 71 00:04:27,210 --> 00:04:31,720 taip peržengiant tiesiog stebinčių sveikojo skaičiaus, bet ir naudojant komandinės eilutės argumentai. 72 00:04:31,720 --> 00:04:36,590 Ir tada mes eiti į masyvų ir styginiams, kuriuos mes naudoti taip pat daug. 73 00:04:41,460 --> 00:04:44,810 Štai tik 1 mini ASCII diagramos pavyzdys. 74 00:04:44,810 --> 00:04:48,460 Kaip sakiau, kiekviena raidė atitinka prie numerio 75 00:04:48,460 --> 00:04:52,510 ir taip susipažinti su tuo. Ji bus naudinga. 76 00:04:52,510 --> 00:04:55,610 Ir vėliau, kai mes pradėti daryti šiek tiek ASCIIMath, susijusius su numerių 77 00:04:55,610 --> 00:05:00,110 pridurdamas, atimant jas - tada tikrai gerai, kad kreiptis į šios diagramos. 78 00:05:02,860 --> 00:05:06,920 Taigi čia Cezario šifravimo pavyzdys - kažkas, kad jums gali būti žaidžiamas su. 79 00:05:06,920 --> 00:05:11,190 Jis yra tik ratų. Iš esmės, yra išorinis abėcėlė ir ten yra vidinė abėcėlė. 80 00:05:11,190 --> 00:05:15,290 Taigi, čia yra Cezario šifras, bet su 0 rakto pavyzdys. 81 00:05:15,290 --> 00:05:21,540 Iš esmės, yra suderintas su A, B, būtų suderinta su B, visą kelią iki Z. 82 00:05:21,540 --> 00:05:26,590 Bet tada sako, kad mes norėjome iš 3 raktą, pvz. 83 00:05:26,590 --> 00:05:33,280 Tada mes turėtume pasukti vidinį ratą taip, kad sutaptų su D ir tt 84 00:05:33,280 --> 00:05:35,250 Ir todėl tai iš esmės yra tai, ką mes ketiname daryti. 85 00:05:35,250 --> 00:05:38,340 Mes neturime rato, bet tai, ką mes ketiname daryti, kad mūsų programą 86 00:05:38,340 --> 00:05:44,490 rūšies perkelti abėcėlė, kartu su mumis, tam tikrą skaičių. 87 00:05:44,490 --> 00:05:48,650 Taigi, kaip jau minėjau anksčiau, mes ketiname būti susijusios su komandinės eilutės argumentai 88 00:05:48,650 --> 00:05:50,390 taip pat gauti sveikąjį skaičių. 89 00:05:50,390 --> 00:05:55,050 Taigi, taip, kad vartotojas bus paleisti Caesar programą yra suprantama. / Caesar 90 00:05:55,050 --> 00:05:58,090 ir tada įvesti numerį, po to. 91 00:05:58,090 --> 00:06:01,130 Ir šis skaičius sudaro raktą, perjungimo, 92 00:06:01,130 --> 00:06:06,740 kiek kartų jūs ketinate, sukasi vidinį ratą savo Cezario šifras. 93 00:06:06,740 --> 00:06:08,390 Ir taip pamatysite čia pavyzdys. 94 00:06:08,390 --> 00:06:14,550 Jei mes įrašyti raides nuo A iki L mūsų Cezario šifras 95 00:06:14,550 --> 00:06:19,520 Tada ji būtų įvesties D per O, nes tai kiekvienas laiškas perėjo daugiau nei 3 kartus, 96 00:06:19,520 --> 00:06:22,080 kaip ir rato, kad aš parodžiau jums pavyzdys. 97 00:06:22,080 --> 00:06:25,300 , Pavyzdžiui, tada, jei įvedėte Tai CS50! 98 00:06:25,300 --> 00:06:27,960 tada ji taip pat perkelti visas raides. 99 00:06:27,960 --> 00:06:31,040 Ir tai yra svarbus dalykas, Cezario ir Vigenere 100 00:06:31,040 --> 00:06:34,890 yra tai, kad mes ketiname praleisti bet ne raides. 101 00:06:34,890 --> 00:06:39,160 Taigi jokių tarpų, simbolių ir tt, skaičiai, mes ketiname išlaikyti juos tas pats. 102 00:06:39,160 --> 00:06:42,920 Mes tik ketina perkelti laiškus šiuo atveju. 103 00:06:42,920 --> 00:06:45,870 Taigi, kaip matote rato, turime tik raides, mums, 104 00:06:45,870 --> 00:06:50,150 taip, mes tik norime perkelti laiškus ir šifruoti laiškus. 105 00:06:51,370 --> 00:06:56,720 Taigi pirmas dalykas, kurį reikia padaryti, kad matėte,, kad naudojimas Cezario problema nustatyti 2 106 00:06:56,720 --> 00:07:05,280 yra paleisti Cezaris, ir tada įveskite numerį, kai jį paleisti terminale. 107 00:07:05,280 --> 00:07:10,940 Taigi, ką mes turime padaryti, tai kažkaip gauti tą raktą ir patekti į jį. 108 00:07:10,940 --> 00:07:14,730 Ir todėl mes norime kažkaip tai bus antrasis komandinės eilutės argumentas. 109 00:07:14,730 --> 00:07:20,950 Pirmasis bus. / Cezario, o kitą bus raktų numerį. 110 00:07:22,190 --> 00:07:29,200 Taigi, kol mes turėjo int main (void) pradėti savo C programas. 111 00:07:29,200 --> 00:07:31,790 Mes ketiname žievelės atgal į sluoksnį, šiek tiek 112 00:07:31,790 --> 00:07:34,720 ir realiai pamatyti, kad vietoj einančios tuštumos į mūsų pagrindinė funkcija 113 00:07:34,720 --> 00:07:37,920 mes iš tikrųjų susiduriame su 2 parametrų. 114 00:07:37,920 --> 00:07:44,070 Mes turime int, pavadintą argc ir tada eilučių masyve argv. 115 00:07:44,070 --> 00:07:46,030 Taigi argc yra sveikasis skaičius, 116 00:07:46,030 --> 00:07:49,640 ir ji yra perduotus argumentus, kad jūsų programa. 117 00:07:49,640 --> 00:07:53,590 Ir tada argv iš tiesų yra perduotus argumentus sąrašas. 118 00:07:53,590 --> 00:08:00,820 Visi argumentai yra eilutės, ir taip argv atstovauja masyvą, sąrašą, stygų. 119 00:08:01,830 --> 00:08:03,990 Pakalbėkime apie masyvų šiek tiek. 120 00:08:03,990 --> 00:08:05,940 Matricos yra iš esmės nauja duomenų struktūra. 121 00:08:05,940 --> 00:08:09,660 Mes turime int, mes dviviečiai, mes turime eilutes, ir dabar mes turime masyvų. 122 00:08:09,660 --> 00:08:13,820 Matricos yra duomenų struktūros, kurie gali turėti keletą reikšmių tos pačios rūšies, 123 00:08:13,820 --> 00:08:18,320 taip iš esmės, neatsižvelgiant į jų rūšį norite sąrašą. 124 00:08:18,320 --> 00:08:24,400 Iš esmės, jei jūs norėjote 1 kintamojo sveikųjų skaičių sąrašą, 125 00:08:24,400 --> 00:08:29,090 tada jums reikės sukurti naują kintamąjį, tipo int masyvas. 126 00:08:29,090 --> 00:08:34,450 Taigi matricos yra nulinės indeksuota, tai reiškia, kad pirmasis elementas masyve yra indeksuoti kaip 0. 127 00:08:34,450 --> 00:08:41,799 Jei masyvas yra 4 ilgio, kaip šiame pavyzdyje, tai jūsų paskutinis elementas būtų indeksuoti 3 128 00:08:41,799 --> 00:08:44,810 kuris yra 4-1. 129 00:08:45,940 --> 00:08:48,420 Taigi, norint sukurti masyvą, galėtumėte padaryti kažką panašaus į tai. 130 00:08:48,420 --> 00:08:51,440 Pasakykite, kad norėjo dvigubo masyvo. 131 00:08:51,440 --> 00:08:56,520 Tai pasakytina ir apie bet kokio tipo duomenų tipo, nors. 132 00:08:56,520 --> 00:09:00,210 Taigi pasakyti norite dvigubo masyvo. Tarkime, jūs norite jį pavadinti paštas. 133 00:09:00,210 --> 00:09:04,760 Tiesiog kaip galėtumėte inicijuoti bet kokią kitą dvigubai, 134 00:09:04,760 --> 00:09:09,760 dvigubai ir tada sakykite vardą, bet šį kartą mes įdėti į skliaustus, 135 00:09:09,760 --> 00:09:13,570 ir tada numeris bus masyvo ilgis. 136 00:09:13,570 --> 00:09:16,840 Masyvuose mes galime bet kada pakeisti ilgis, 137 00:09:16,840 --> 00:09:21,230 todėl jūs visada turite nustatyti ir pasirinkti, kiek dėžės, 138 00:09:21,230 --> 00:09:25,440 kiek reikšmės jūsų masyvas ketina surengti. 139 00:09:25,440 --> 00:09:31,820 Taigi, norint nustatyti skirtingas vertybes savo masyvas, jūs ketinate naudoti tokią sintaksę, 140 00:09:31,820 --> 00:09:33,200 kaip matote skaidrėje. 141 00:09:33,200 --> 00:09:37,620 Jūs turite paštas puslapis 0 bus nustatyti iki 1,2, 142 00:09:37,620 --> 00:09:42,180 paštas indeksas 1 rinkinys 2,4, ir tt 143 00:09:42,180 --> 00:09:47,910 Taigi dabar, kad mes peržiūrėsime rinkiniai + šiek tiek grįžkime argc ir argv. 144 00:09:47,910 --> 00:09:52,220 Mes žinome,, kad argv dabar eilučių masyvas. 145 00:09:52,220 --> 00:09:55,080 Taigi, kai vartotojas pereina - pasakyti, kad jie buvo paleista programa - 146 00:09:55,080 --> 00:09:58,740 jie sako. / Apie Davidas Malan 147 00:09:58,740 --> 00:10:05,160 tai, ką programa darys, jūs jau iš tikrųjų yra sugalvoti su tuo, ką argc ir argv. 148 00:10:05,160 --> 00:10:07,620 Taigi jums nereikia nerimauti, kad. 149 00:10:07,620 --> 00:10:14,370 Argc šiuo atveju bus 3, nes jis mato 3 skirtingus žodžius, atskirtus tarpais. 150 00:10:14,370 --> 00:10:18,850 Ir taip, tada šiuo atveju masyvas, pirmasis puslapis būtų. / Sveiki, 151 00:10:18,850 --> 00:10:21,770 kitą Dovydas, kitą Malan. 152 00:10:21,770 --> 00:10:25,640 Ar kas nors pamatyti iš karto, ką santykiai tarp argv 153 00:10:25,640 --> 00:10:28,990  masyvas, ir argc yra? 154 00:10:32,820 --> 00:10:38,090 Taip. Mes į, kad, pavyzdžiui args.c. 155 00:10:38,090 --> 00:10:42,880 Leiskite pamatyti, jei mes galime pasinaudoti santykius tarp 2. 156 00:10:42,880 --> 00:10:46,550 Čia galite rasti, kad į prietaisą Programa pagal nutylėjimą 157 00:10:46,550 --> 00:10:49,450 atidaryti C failus kartais Emacs. 158 00:10:49,450 --> 00:10:54,660 Bet mes norime susidoroti su gedit, kad tai, ką jūs galite padaryti, galite dešiniuoju pelės klavišu ant jūsų C failą, 159 00:10:54,660 --> 00:11:04,580 eiti į Properties Atidaryti naudojant, tada pasirinkite gedit, Nustatyti kaip numatytąjį, 160 00:11:04,580 --> 00:11:13,020 ir dabar jūsų programa turėtų būti atidaryta gedit vietoj Emacs. 161 00:11:14,710 --> 00:11:16,290 Tobula. 162 00:11:17,120 --> 00:11:25,520 Taigi čia aš turiu programą, kurią norite spausdinti kiekvieną komandinės eilutės argumentas. 163 00:11:25,520 --> 00:11:32,050 Taigi nepriklausomai vartotojo įėjimai, aš noriu grąžinti jį atgal į juos iš esmės naują eilutę. 164 00:11:32,050 --> 00:11:36,710 Taigi, kas yra struktūra, kad mes galime naudoti, kad keistumėte ką nors - 165 00:11:36,710 --> 00:11:40,380 kažkas, kad jūs tikriausiai naudojamas jūsų pset 1? 166 00:11:40,380 --> 00:11:45,840 Jei norite eiti per nustatytą skaičių dalykų? >> [Studentas] kilpa. 167 00:11:45,840 --> 00:11:48,910 Už linijos. Tiksliai. Taigi pradėkime už linijos. 168 00:11:48,910 --> 00:11:56,900 Mes turime int i = 0. Tegul tik pradėti su standartiniu iniciacijos kintamojo. 169 00:11:56,900 --> 00:12:02,370 Aš ruošiuosi palikti už nustatytą sąlygą ir tada sako i + +, ketinate daryti dalykų ten. 170 00:12:02,370 --> 00:12:04,090 Gerai. 171 00:12:04,090 --> 00:12:11,590 Taip galvoti atgal argv, jei argv yra argumentų, priimtas į programą, sąrašas 172 00:12:11,590 --> 00:12:15,380 ir argc programoje yra daug argumentų, 173 00:12:15,380 --> 00:12:21,280 tada tai reiškia, kad argc iš esmės yra argv ilgis, tiesa, 174 00:12:21,280 --> 00:12:28,970 nes ten bus kaip daugelio argumentų kaip argc vertės. 175 00:12:28,970 --> 00:12:35,910 Taigi, jei mes norime kartoti per kiekvieną elementą argv, 176 00:12:35,910 --> 00:12:43,290 mes ketiname norite kiekvieną kartą naudoti kintamąjį argv prie tikro indekso. 177 00:12:43,290 --> 00:12:49,060 Tai galima pavaizduoti tai, tiesa? 178 00:12:49,060 --> 00:12:53,430 Šis kintamasis čia atstovauja šiuo atveju ypatingą eilutę 179 00:12:53,430 --> 00:12:57,030 , nes jis styginių masyvas - tuo tikro indekso pirma eilutė. 180 00:12:57,030 --> 00:13:00,690 Ką mes norime daryti, šiuo atveju mes norime spausdinti jį, todėl tarkim printf. 181 00:13:00,690 --> 00:13:04,680 Ir dabar argv yra eilutė, todėl mes norime, kad vietos rezervavimo ženklą. 182 00:13:04,680 --> 00:13:08,430 Mes norime, kad naują eilutę, tik, kad ji atrodo gerai. 183 00:13:08,430 --> 00:13:12,530 Taigi čia mes turime už linijos. Mes neturime būklę. 184 00:13:12,530 --> 00:13:20,020 Taigi, aš prasideda nuo 0, ir tada kiekvieną kartą jis ketina spausdinti nurodytą eilutę 185 00:13:20,020 --> 00:13:22,980 tuo konkrečiu indeksą masyve. 186 00:13:22,980 --> 00:13:28,410 Taigi, kai mes norime nustoti spausdinti masyvo elementus? 187 00:13:28,410 --> 00:13:35,720 Kai baigsite, tiesa? Kai mes pasiekėme masyvo pabaigos. 188 00:13:35,720 --> 00:13:38,870 Taigi mes nenorime viršyti praeityje masyvo ilgį, 189 00:13:38,870 --> 00:13:43,700 ir mes jau žinome, mums nereikia, kad iš tikrųjų aktyviai išsiaiškinti, kas argv ilgis yra 190 00:13:43,700 --> 00:13:47,520 , nes jis mums duota, ir kas tai? Argc. Tiksliai. 191 00:13:47,520 --> 00:13:56,640 Taigi, mes norime padaryti šį procesą argc skaičių kartų. 192 00:13:56,640 --> 00:13:59,550 Nesu teisinga kataloge. 193 00:14:02,100 --> 00:14:03,490 Gerai. 194 00:14:03,490 --> 00:14:08,990 Dabar padarykime args. Jokių klaidų, kuris yra puikus. 195 00:14:08,990 --> 00:14:11,430 Todėl galime tik paleisti args. 196 00:14:11,430 --> 00:14:15,130 Kas yra tai grįžti į mus? Tai tiesiog ketinate spausdinti jį atgal. 197 00:14:15,130 --> 00:14:18,320 "Jūs įvestas args į programą; aš ruošiuosi duoti jį su Jumis." 198 00:14:18,320 --> 00:14:23,170 Tarkime, mes norime pasakyti args foo juostą. 199 00:14:23,170 --> 00:14:26,570 Taip, tada jis spausdina jį atgal į mus. Viskas gerai? 200 00:14:26,570 --> 00:14:30,790 Taigi yra pavyzdys, kaip jūs galite naudoti argc ir argv 201 00:14:30,790 --> 00:14:33,460 argc žinant, kad atstovauja argv ilgis. 202 00:14:33,460 --> 00:14:42,750 Padaryti, įsitikinkite, kad jūs ne kada nors su matricos atidaryti vieną už masyvo ilgį 203 00:14:42,750 --> 00:14:45,140 nes C tikrai šaukti į jus. 204 00:14:45,140 --> 00:14:47,560 Jūs gausite kažką vadinama segmentavimo kaltės, 205 00:14:47,560 --> 00:14:52,470 kuris niekada įdomus, iš esmės sakydamas, jūs bandote pasiekti kažką 206 00:14:52,470 --> 00:14:55,000 kad neegzistuoja, nepriklauso jums. 207 00:14:55,000 --> 00:14:59,430 Todėl įsitikinkite, kad, o ypač su nuline indeksavimo, mes nenorime - 208 00:14:59,430 --> 00:15:02,390 Kaip, pavyzdžiui, jei mes turime 4 ilgio masyvą, 209 00:15:02,390 --> 00:15:07,240 kad masyvas 4 puslapis neegzistuoja, nes mes pradedame nuo 0, ne nulinis indeksas. 210 00:15:07,240 --> 00:15:11,730 Jis taps savaime kaip ir kilpos, kai mes prasideda nuo 0. 211 00:15:11,730 --> 00:15:13,610 Tad tiesiog keep that in mind. 212 00:15:13,610 --> 00:15:22,590 Jūs nenorite, kad kada nors pasiekti indeksą masyvo, kad po ranka. 213 00:15:26,710 --> 00:15:32,560 Taigi matome dabar, kaip mes galime tipo priėjimą 214 00:15:32,560 --> 00:15:35,930 perduoti komandinės eilutės argumentai, perduodamos. 215 00:15:35,930 --> 00:15:41,330 Tačiau, kaip matėme eilutę argv yra iš tikrųjų styginių masyvas. 216 00:15:41,330 --> 00:15:45,740 Taigi tikrai nėra sveikasis skaičius dar, bet Cezario mes norime susidoroti su sveikaisiais skaičiais. 217 00:15:45,740 --> 00:15:54,430 Laimei, yra funkcija, sukurta mums, kad iš tiesų gali konvertuoti eilutę iki sveikojo skaičiaus. 218 00:15:54,430 --> 00:15:58,710 Taip pat čia nėra susijusios su naudotojo įvesties kur mes paskatinti juos 219 00:15:58,710 --> 00:16:03,740 įvesties čia raktą, todėl mes galime ne iš tikrųjų reprompt ir pasakyti, 220 00:16:03,740 --> 00:16:07,840 "O, duok man kitą sveikasis skaičius, tarkim, jei tai negalioja." 221 00:16:07,840 --> 00:16:10,540 , Tačiau mes vis dar reikia patikrinti, ar teisingai naudojimo. 222 00:16:10,540 --> 00:16:13,520 Cezario jie yra leidžiami tik važiuoti, numeris 1, 223 00:16:13,520 --> 00:16:18,030 ir todėl jie turi paleisti / Cezaris ir tada jie turi duoti jums numerį. 224 00:16:18,030 --> 00:16:23,660 Taigi argc turi būti tam tikras skaičius. 225 00:16:23,660 --> 00:16:29,060 Kokiu numeriu tai būtų, jei jie turi perduoti jums. / Cezario ir tada raktu? 226 00:16:29,060 --> 00:16:32,920 Kas yra argc? >> [Studentas] 2. >> Du. Tiksliai. 227 00:16:32,920 --> 00:16:35,490 Taigi, jūs norite įsitikinti, kad argc yra 2. 228 00:16:35,490 --> 00:16:39,620 Priešingu atveju jūs iš esmės atsisako paleisti programą. 229 00:16:39,620 --> 00:16:43,040 Pagrindinis tai funkcija, kuri sako int main 230 00:16:43,040 --> 00:16:47,360 taip, tada mes visada geros praktikos return 0 prie sėkmingo programos pabaigos. 231 00:16:47,360 --> 00:16:50,840 Taigi, jei, tarkim, jie suteikia jums 3 komandinės eilutės argumentai, o ne 2 232 00:16:50,840 --> 00:16:54,350 ar jums 1, pavyzdžiui, tada, ką jums daryti, jūs norite patikrinti, ar 233 00:16:54,350 --> 00:16:59,900 ir tada grįžti 1 sakydamas: ne, aš negali tęsti su šia programa. 234 00:16:59,900 --> 00:17:03,190 [Studentas] Negali būti savo tekstą erdvė. >> Atsiprašau? 235 00:17:03,190 --> 00:17:06,780 [Studentas] Negali būti vietos tekste, kurį bandote užšifruoti. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Kalbant apie tekstą, kurį mes bandome šifruoti, kad iš tikrųjų ateina vėliau 238 00:17:11,280 --> 00:17:13,970 kai mes šį tekstą. 239 00:17:13,970 --> 00:17:18,260 Taigi dabar mes tiesiog priimti kaip komandų argumentuose tikrasis skaičius, 240 00:17:18,260 --> 00:17:21,579 tikrasis perėjimas Cezario šifravimo. 241 00:17:21,579 --> 00:17:27,569 [Studentas] Kodėl jums reikia 2, o ne tik 1 argc? Yra tikrai numeris 1. 242 00:17:27,569 --> 00:17:32,200 Į dešinę. Priežastis, kodėl mes turime 2 už argc vietoj 1 243 00:17:32,200 --> 00:17:36,260 yra todėl, kad, kai paleidžiate programą ir pasakyti. / caesar arba / Sveiki, 244 00:17:36,260 --> 00:17:38,280 kad iš tikrųjų skaičiuoja kaip komandinės eilutės argumentu. 245 00:17:38,280 --> 00:17:43,020 Taip, tada, kad jau užima 1 ir taip, tada mes įvedusi 1 papildoma. 246 00:17:45,030 --> 00:17:49,440 Taigi jūs įvedusi tikrai komandinės eilutės argumentas eilutę. 247 00:17:49,440 --> 00:17:52,730 Tai, ką norite daryti, Cezario mes norime susidoroti su sveikojo skaičiaus, 248 00:17:52,730 --> 00:17:57,180 , todėl jūs galite naudoti šią funkciją atoi. 249 00:17:57,180 --> 00:18:02,850 Ir iš esmės, jums perduoti jį į eilutę ir tada ji sugrįš jums atgal sveikasis skaičius 250 00:18:02,850 --> 00:18:06,070 jei tai įmanoma padaryti, kad eilutę į sveikojo skaičiaus. 251 00:18:06,070 --> 00:18:10,960 Dabar prisimenu, kai mes susiduriame su printf arba GetString, dalykų, pavyzdžiui, kad, 252 00:18:10,960 --> 00:18:13,390 mes įtraukiame bibliotekų, kurias specialiai mums. 253 00:18:13,390 --> 00:18:19,450 Taigi pradžioje mes pradedame su maišos žymės Standartinio I / O, h, kažką panašaus, kad. 254 00:18:19,450 --> 00:18:22,430 Na, atoi nėra vienoje iš šių bibliotekų, 255 00:18:22,430 --> 00:18:26,600 todėl tai, ką mes turime padaryti, yra už tai mes turime tinkamą biblioteką. 256 00:18:26,600 --> 00:18:32,720 Taigi prisiminti Walkthrough 1, kur aš aptarė vadovą funkciją. 257 00:18:32,720 --> 00:18:37,110 Jūs parašykite man savo terminalą, o po to funkcijos pavadinimą. 258 00:18:37,110 --> 00:18:39,720 Ir kad duos visą eilę jo naudojimo, 259 00:18:39,720 --> 00:18:42,890 , bet taip pat jis bus parodytas, kuriuos biblioteka, kuri priklauso. 260 00:18:42,890 --> 00:18:47,000 Taigi aš palikti, kad jums naudoti rankinio valdymo funkciją su atoi 261 00:18:47,000 --> 00:18:53,360 ir išsiaiškinti, kuriuos biblioteka reikia įtraukti, kad būtų galima naudoti atoi funkciją. 262 00:18:54,450 --> 00:18:57,670 Taigi, mes turime raktą ir dabar jis yra gauti paprastą tekstą, 263 00:18:57,670 --> 00:19:01,820 ir kad iš tikrųjų bus naudotojo įvesties, kur jūs greitai. 264 00:19:01,820 --> 00:19:05,540 Mes nagrinėjami GetInt ir GetFloat ir tt Lygiai taip pat 265 00:19:05,540 --> 00:19:07,670 mes ketiname būti susijusios su GetString. 266 00:19:07,670 --> 00:19:12,440 Bet šiuo atveju mes nereikia daryti jokių DO arba o kontūrus patikrinti. 267 00:19:12,440 --> 00:19:14,480 GetString tikrai suteiks mums eilutę, 268 00:19:14,480 --> 00:19:17,630 ir mes ketiname užšifruoti viską, vartotojas suteikia mums. 269 00:19:17,630 --> 00:19:23,770 Todėl jūs galite manyti, kad visi iš šių naudotojų gauto stygos yra teisingi. 270 00:19:23,770 --> 00:19:24,670 Didysis. 271 00:19:24,670 --> 00:19:27,270 Taip, tada, kai jūs turite raktą ir kai jūs turite tekstą, 272 00:19:27,270 --> 00:19:31,660 dabar kas liko turite šifruoti paprastojo. 273 00:19:31,660 --> 00:19:36,530 Tiesiog greitai padengti per žargonas, paprastasis yra tai, ką vartotojas suteikia jums, 274 00:19:36,530 --> 00:19:41,030 ciphertext yra tai, ką jums grįžti į juos. 275 00:19:42,450 --> 00:19:45,850 Taigi, stygos, kad būtų galima eiti per faktiškai laiške laišku 276 00:19:45,850 --> 00:19:48,550 nes mes turime pereiti kiekvieną laišką, 277 00:19:48,550 --> 00:19:51,390 mes suprantame, kad eilutės, jei mes tipo žievelės atgal sluoksnio, 278 00:19:51,390 --> 00:19:54,130 matome, kad jie tiesiog tikrai simbolių sąrašas. 279 00:19:54,130 --> 00:19:55,930 Vienas ateina po kito. 280 00:19:55,930 --> 00:20:01,690 Ir taip mes galime traktuoti kaip masyvai, nes jie yra matricos simbolių eilutes. 281 00:20:01,690 --> 00:20:05,640 Taigi, tarkime, jūs turite eilutę, pavadintą tekstas, 282 00:20:05,640 --> 00:20:09,400 ir per tą kintamąjį tekstą saugomas Tai CS50. 283 00:20:09,400 --> 00:20:15,680 Tik paskui tekstas 0 indeksuoti būti didžioji T, indeksas 1 h, ir tt 284 00:20:17,530 --> 00:20:23,970 Ir tada su matricomis, args.c argc pavyzdžiui, 285 00:20:23,970 --> 00:20:27,090 pamatėme, kad mes turėjome pakartoti per masyvą 286 00:20:27,090 --> 00:20:32,440 ir todėl mes turėjome kartoti nuo i = 0, kol i mažiau nei ilgio. 287 00:20:32,440 --> 00:20:35,560 Taigi, mes turime šiek tiek suprasti, ką mūsų eilutę ilgis 288 00:20:35,560 --> 00:20:37,090 jei mes ketiname pakartoti per jį. 289 00:20:37,090 --> 00:20:42,300 Laimei, vėl, yra funkcija yra už mus, nors vėliau CS50 290 00:20:42,300 --> 00:20:45,860 jums tikrai galės įgyvendinti ir atlikti savo funkciją 291 00:20:45,860 --> 00:20:48,260 kad gali apskaičiuoti eilutės ilgis. 292 00:20:48,260 --> 00:20:52,120 Bet dabar mes ketiname naudoti eilutės ilgis, todėl strlen. 293 00:20:52,120 --> 00:21:00,440 Jums pereiti į eilutę, ir tada ji sugrįš jums int, kuri atstovauja eilutės ilgį. 294 00:21:00,440 --> 00:21:05,840 Pažvelkime, kaip galėtume pakartoti per kiekvieną simbolį į eilutę, pavyzdžiui 295 00:21:05,840 --> 00:21:08,470 ir kažką daryti su tuo. 296 00:21:08,470 --> 00:21:13,250 Ką mes norime padaryti, tai kartoti per kiekvieną eilutę simbolį, 297 00:21:13,250 --> 00:21:19,150 ir tai, ką mes norime padaryti, tai mes spausdinti kiekvieną simbolį 1 iš 1 298 00:21:19,150 --> 00:21:22,060 išskyrus mes pridėti kažką šalia jo. 299 00:21:22,060 --> 00:21:27,020 Taigi pradėkime už linijos. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Mes ketiname palikti vietos sąlyga. 301 00:21:32,700 --> 00:21:36,840 Mes norime kartoti, kol mes pasiekti eilutės pabaigos, tiesa? 302 00:21:36,840 --> 00:21:41,340 Taip, tada kokia funkcija suteikia mums eilutės ilgis? 303 00:21:41,340 --> 00:21:43,160 [Nesigirdi studentas atsakas] 304 00:21:43,160 --> 00:21:46,420 Štai ilgis iš komandinės eilutės argumentai. 305 00:21:46,420 --> 00:21:50,650 Bet eilutę mes norite naudoti funkciją, kuri suteikia mums eilutės ilgį. 306 00:21:50,650 --> 00:21:53,090 Taip, kad eilutės ilgis. 307 00:21:53,090 --> 00:21:57,130 Ir taip, tada jūs turite pereiti eilutę. 308 00:21:57,130 --> 00:21:59,760 Jis turi žinoti, ką eilutė turi apskaičiuoti ilgį. 309 00:21:59,760 --> 00:22:03,160 Tada šiuo atveju mes susiduriame su virvele s. 310 00:22:04,790 --> 00:22:05,860 Didysis. 311 00:22:05,860 --> 00:22:10,770 Taip, tada tai, ką mes norime padaryti, tegul printf. 312 00:22:10,770 --> 00:22:14,850 Dabar mes norime susidoroti su raidėmis. Mes norime spausdinti kiekvieną individualų charakterį. 313 00:22:14,850 --> 00:22:22,150 , Kai norite jį atsispausdinti plūdę, jums reikės naudoti vietos rezervavimo ženklą kaip% f. 314 00:22:22,150 --> 00:22:24,580 Su int galėtumėte naudoti% d. 315 00:22:24,580 --> 00:22:30,890 Ir panašiai, raide naudojate% c pasakyti, kad aš ruošiuosi būti, kad spausdinate simbolį 316 00:22:30,890 --> 00:22:34,570 kad saugomas viduje kintamasis. 317 00:22:34,570 --> 00:22:40,840 Taigi, mes turime tai, ir Pridėkime laikotarpis ir Space. 318 00:22:40,840 --> 00:22:45,430 Kuris personažas yra naudojate? 319 00:22:45,430 --> 00:22:49,780 Mes ketinate naudoti kokia pobūdis mes eilutę. 320 00:22:49,780 --> 00:22:52,890 Taigi tada mes ketiname naudoti kažką su virvele, 321 00:22:52,890 --> 00:22:56,420 bet mes norime, kad patekti į tam tikrą charakterį. 322 00:22:56,420 --> 00:23:02,740 Taigi, jei eilutė yra tik matrica, tai kaip mes masyvų elementus? 323 00:23:02,740 --> 00:23:06,480 Mes turime tuos skliaustus, ir tada mes ten įdėti indeksą. 324 00:23:06,480 --> 00:23:11,820 Taigi, mes turime skliaustus. Mūsų puslapis šiuo atveju, mes galime tiesiog naudokite i. Tiksliai. 325 00:23:15,290 --> 00:23:22,370 Taigi čia mes sakome mes ketiname būti, kad spausdinate simbolį po taško ir erdvės, 326 00:23:22,370 --> 00:23:30,870 ir kad charakteris bus i mūsų styginių s raidė. 327 00:23:32,920 --> 00:23:39,330 Aš tiesiog ketina sutaupyti. Gerai. 328 00:23:42,510 --> 00:23:46,840 Dabar aš ruošiuosi paleisti eilutės ilgis. 329 00:23:46,840 --> 00:23:53,440 Taigi mes turėjome eilutę, pavadintą OMG, ir dabar jis pabrėžė, dar labiau. 330 00:23:53,440 --> 00:23:57,870 Be to, galime pasakyti, kad mes iš tikrųjų nori gauti eilutę iš vartotojo. 331 00:23:57,870 --> 00:23:59,580 Kaip galėtume tai padaryti? 332 00:23:59,580 --> 00:24:01,610 Anksčiau, kaip mes gauti int? 333 00:24:01,610 --> 00:24:08,040 Mes sakėme GetInt, tiesa? Bet tai nėra INT, todėl galime GetString. 334 00:24:11,780 --> 00:24:17,770 Kurkime eilutės ilgis. Čia mes ne įvesti tam tikrą eilutę. 335 00:24:17,770 --> 00:24:19,940 Taigi, aš nežinau. 336 00:24:19,940 --> 00:24:23,820 Aš ruošiuosi įdėti savo vardą čia, ir taip, tada aš galiu padaryti, vienas iš tų dalykų 337 00:24:23,820 --> 00:24:29,600 kur aš priskirti žodį Kiekvienas laiškas ar kažką panašaus, kad. Cool. 338 00:24:29,600 --> 00:24:31,900 Taip, kad eilutės ilgis. 339 00:24:33,000 --> 00:24:34,640 Taigi mes grįžome į Cezario. 340 00:24:34,640 --> 00:24:38,620 Mes turime keletą įrankių, kaip galime pakartoti per eilutę, 341 00:24:38,620 --> 00:24:41,250 kaip mes pasiekti kiekvieną atskirą elementą. 342 00:24:41,250 --> 00:24:44,720 Taigi dabar mes galime grįžti į programą. 343 00:24:44,720 --> 00:24:48,650 Kaip jau minėjau anksčiau, ASCII lentelę, jūsų geriausias draugas, 344 00:24:48,650 --> 00:24:52,300 jūs ketinate pamatyti numerius, kurie yra susiję su kiekvienos raidės. 345 00:24:52,300 --> 00:24:55,900 Taigi čia pasakyti, mūsų paprastasis tai aš apsvaigęs! 346 00:24:55,900 --> 00:25:01,090 Tada kiekvienas iš šių simbolių ketina turėti numerį ir ASCII reikšmė, su juo susijusios, 347 00:25:01,090 --> 00:25:04,710 netgi apostrofas, net erdvė, net šauktukas, 348 00:25:04,710 --> 00:25:06,600 todėl jūs norite keep that in mind. 349 00:25:06,600 --> 00:25:12,360 Taigi sako mūsų raktas, kad vartotojas, įtrauktas į savo komandinės eilutės argumentas yra 6. 350 00:25:12,360 --> 00:25:17,770 Tai reiškia, kad už pirmąją raidę, kuri yra i, kuriai atstovauja 73, 351 00:25:17,770 --> 00:25:25,610 norite grįžti į juos, kokia raidė atstovauja ASCII vertės 73 + 6. 352 00:25:25,610 --> 00:25:29,020 , Kad šiuo atveju būtų 79. 353 00:25:30,840 --> 00:25:35,040 Dabar mes norime eiti prie kito simbolio. 354 00:25:35,040 --> 00:25:40,960 Taigi sekantis indeksas 1 iš paprastojo būtų apostrofas. 355 00:25:40,960 --> 00:25:46,780 Bet atsiminkite, mes tik norime šifruoti raides. 356 00:25:46,780 --> 00:25:50,040 Taigi, mes norime įsitikinti, kad, apostrofas tikrųjų lieka ta pati, 357 00:25:50,040 --> 00:25:54,310 kad mes negalime pakeisti nuo 39 iki 45 whatever. 358 00:25:54,310 --> 00:25:57,150 Mes norime laikyti jį kaip kabutes. 359 00:25:57,150 --> 00:26:00,780 Taigi, mes norime prisiminti tik šifruoti raides 360 00:26:00,780 --> 00:26:04,560 nes mes norime visų kitų simbolių nesikeis mūsų programoje. 361 00:26:04,560 --> 00:26:07,130 Kitas dalykas, kad mes norime išsaugoti didžiąsias raides. 362 00:26:07,130 --> 00:26:10,250 Taigi, kai turite didžiąsias raides, jis turėtų likti kaip didžiosiomis raidėmis. 363 00:26:10,250 --> 00:26:12,830 Mažosios raidės turi likti kaip mažosiomis raidėmis. 364 00:26:13,620 --> 00:26:19,480 Taigi keletas naudingų funkcijų, kad būtų galima spręsti tik šifravimo laiškų 365 00:26:19,480 --> 00:26:22,380 ir išlaikyti išsaugoti kapitalizuoti dalykų 366 00:26:22,380 --> 00:26:25,130 yra IsAlpha, isupper, IsLower funkcijos. 367 00:26:25,130 --> 00:26:29,270 Ir todėl tai yra funkcijos, kurios grąžina Būlio vertė. 368 00:26:29,270 --> 00:26:34,180 Iš esmės, true arba false. Ar tai didžiosiomis raidėmis? Ar tai raidinis skaitmeninis? 369 00:26:34,180 --> 00:26:37,180 Ar tai laiškas, iš esmės. 370 00:26:37,180 --> 00:26:41,070 Taigi, čia yra 3 pavyzdžiai, kaip galėtumėte naudoti šią funkciją. 371 00:26:41,070 --> 00:26:47,060 Iš esmės, jūs galėtų patikrinti, ar šios funkcijos jums grąžinta reikšmė yra true arba false 372 00:26:47,060 --> 00:26:49,400 remiantis, kad pirkimo. 373 00:26:49,400 --> 00:26:54,880 Arba daryti ką nors ar ne šifruoti Šifro arba įsitikinkite, kad tai didžiosiomis raidėmis ir tt 374 00:26:54,880 --> 00:27:01,080 [Studentas] Gal galėtum paaiškinti šiek tiek daugiau ir kaip jūs juos naudoti? >> Taip, tikrai. 375 00:27:01,080 --> 00:27:08,470 Taigi, jei mes žiūrime atgal, čia mes turime papildomą kapitalą I, tiesa? 376 00:27:08,470 --> 00:27:14,550 Taigi mes žinome, kad man vyksta O, nes aš + 6 O. 377 00:27:14,550 --> 00:27:18,740 Bet mes norime įsitikinti,, kad O bus kapitalo O. 378 00:27:18,740 --> 00:27:22,940 Taigi, iš esmės, tai yra rūšies ketina keisti savo indėlį. 379 00:27:22,940 --> 00:27:26,870 Tad ar tai būtų didžiąsias arba ne natūra pakeisti taip, kad mes su ja kovojame. 380 00:27:26,870 --> 00:27:32,360 Taip, tada, jei mes naudojame isupper apie tą konkrečią indekso funkcija, 381 00:27:32,360 --> 00:27:36,480 taip isupper ("aš"), kuri grąžina mus tikrosios, todėl mes žinome, kad tai viršutinis. 382 00:27:36,480 --> 00:27:40,360 Taip, tada remiantis, kad vėliau mes pereiti į formulę 383 00:27:40,360 --> 00:27:42,750 , kad jūs naudojate perkelti dalykų Cezaris, 384 00:27:42,750 --> 00:27:46,560 taip, tada iš esmės, ten bus šiek tiek kitoks formulė, jei jis didžiąsias 385 00:27:46,560 --> 00:27:50,670 , o ne į mažąsias. Prasminga? 386 00:27:51,020 --> 00:27:52,760 Taip. Jokių rūpesčių. 387 00:27:54,900 --> 00:27:58,990 Aš kalbėjau šiek tiek apie laiške, kuris ne visai prasmės pridedant 6 388 00:27:58,990 --> 00:28:05,500 išskyrus atvejus, kai mes tipo suprasti, kad šie simboliai 389 00:28:05,500 --> 00:28:08,920 yra natūra sukeisti su sveikaisiais skaičiais. 390 00:28:08,920 --> 00:28:11,250 Tai, ką mes darome, yra rūšies naudojimo numanomo liejimo. 391 00:28:11,250 --> 00:28:18,100 Mes eiti į liejimo šiek tiek vėliau, kur jūs imtis vertę ir jūs jį į kitos rūšies 392 00:28:18,100 --> 00:28:20,440 nei jis iš pradžių buvo. 393 00:28:20,440 --> 00:28:25,910 Tačiau su šiuo pset galėsime rūšies pakaitomis naudoti simbolius 394 00:28:25,910 --> 00:28:30,880 ir jų atitinkami skaičiai. 395 00:28:30,880 --> 00:28:35,140 Taigi, jei jūs tiesiog aptaisyti tik su viengubomis kabutėmis simbolį, 396 00:28:35,140 --> 00:28:40,390 tada galėsite su juo dirbti su sveikaisiais skaičiais, susijusios su juo, kaip sveikasis skaičius. 397 00:28:40,390 --> 00:28:48,040 Taigi kapitalo C iki 67. Mažosios raidės f iki 102. 398 00:28:48,040 --> 00:28:51,480 Vėlgi, jei jūs norite žinoti šias vertybes, pažvelgti į savo ASCII lentelę. 399 00:28:51,480 --> 00:28:56,160 Taigi eikime į keletą pavyzdžių, kaip jums gali būti suteikta atimti ir pridėti, 400 00:28:56,160 --> 00:29:03,130 , kaip jūs iš tikrųjų galite tikrai veikia su šių simbolių, naudokite juos pakaitomis. 401 00:29:03,870 --> 00:29:11,350 Aš sakau, kad ASCIIMath ketina apskaičiuoti simbolį be sveikasis skaičius 402 00:29:11,350 --> 00:29:17,590 ir tada parodo gautą pobūdį, taip pat gautą ASCII reikšmė. 403 00:29:17,590 --> 00:29:22,290 Ir taip čia aš noriu pasakyti - we'll susiję su šios dalies vėliau - 404 00:29:22,290 --> 00:29:29,100 bet iš esmės, aš noriu pasakyti, kad vartotojas turi pasakyti paleisti ASCIIMath kartu su raktu, 405 00:29:29,100 --> 00:29:30,880 ir aš sakau, kad svarbiausia bus numeris 406 00:29:30,880 --> 00:29:34,600 , su kuria mes ketiname pridėti šį simbolį. 407 00:29:34,600 --> 00:29:38,560 Taigi čia pastebėti, kad, nes aš reiklus raktą, 408 00:29:38,560 --> 00:29:40,590 nes aš reikalauja, kad jie suteikia man 1 dalykas, 409 00:29:40,590 --> 00:29:45,600 Aš tik noriu priimti / asciimath ir raktas. 410 00:29:45,600 --> 00:29:49,330 Taigi, aš ketina reikalauti, kad argc lygus 2. 411 00:29:49,330 --> 00:29:54,360 Jei ne, tada aš nesiruošia grįžti 1 ir programa bus išeiti. 412 00:29:55,070 --> 00:29:58,540 Taigi aš sakau, svarbiausia yra nesiruošia būti pirmasis komandinės eilutės argumentas, 413 00:29:58,540 --> 00:30:05,080 tai bus antrasis, ir, kaip matote čia, 414 00:30:05,080 --> 00:30:11,790 Aš ruošiuosi kreiptis, kad į sveikasis skaičius. 415 00:30:15,740 --> 00:30:19,230 Tada aš ketina nustatyti simbolį r. 416 00:30:19,230 --> 00:30:23,970 Atkreipkite dėmesį, kad kintamojo Chr tipas yra sveikasis skaičius. 417 00:30:23,970 --> 00:30:30,480 Klojinius jį su šiomis viengubomis kabutėmis būdas, kad aš galėtų naudoti kaip sveikasis skaičius r. 418 00:30:33,850 --> 00:30:40,560 Taigi atgal į mūsų printf, kur turime simbolį rezervavimo 419 00:30:40,560 --> 00:30:43,590 ir tada vietos rezervavimo ženklas sveikasis skaičius, 420 00:30:43,590 --> 00:30:49,450 simbolių atstovauja "Chr" ir sveikasis skaičius yra raktas. 421 00:30:49,450 --> 00:30:54,320 Ir taip, tada mes ketiname dvikovė pridėti 2 kartu. 422 00:30:54,320 --> 00:30:58,420 Taigi, mes ketiname pridėti r + bet raktas, 423 00:30:58,420 --> 00:31:03,520 ir tada mes ketiname spausdinti, kad rezultatą. 424 00:31:06,210 --> 00:31:14,220 Taigi padarykime asciimath. Tai iki šiol, tad tiesiog paleisti asciimath. 425 00:31:14,220 --> 00:31:18,290 Oh, bet pamatyti, nėra nieko daryti, nes mes ne iš tikrųjų duoti raktą. 426 00:31:18,290 --> 00:31:23,850 Taigi, kai ji ką tik grįžo 1, Mūsų pagrindinė funkcija, ji ką tik grįžo atgal į mus. 427 00:31:23,850 --> 00:31:29,250 Taigi, galime perduoti raktą. Kas nors duoti man numerį. >> [Studentas] 4. 428 00:31:29,250 --> 00:31:30,920 4. Gerai. 429 00:31:30,920 --> 00:31:39,280 Taigi r padidėjo 4 ketina duoti mums v, kuris atitinka ASCII vertės 118. 430 00:31:39,280 --> 00:31:43,880 Taip, tada tai tipo prasminga, kad - 431 00:31:43,880 --> 00:31:51,250 Tiesą sakant, aš galiu paprašyti jus, ką jūs manote, ASCII reikšmė r jei r + 4 yra 118? 432 00:31:53,070 --> 00:31:55,470 Tada taip, kad r yra 114. 433 00:31:55,470 --> 00:32:03,010 Taigi, jei ieškote ASCII lentelę, tada, tikrai pakankamai, jūs pamatysite, kad r yra atstovaujama 114. 434 00:32:03,010 --> 00:32:08,610 Taigi dabar, kad mes žinome, kad mes galime pridėti sveikieji skaičiai iki simbolių, tai atrodo gana paprasta. 435 00:32:08,610 --> 00:32:12,740 Mes tik ketina pakartoti per eilutę, kaip matėme, pavyzdžiui, prieš. 436 00:32:12,740 --> 00:32:17,170 Mes patikrinti, jei tai laiškas. 437 00:32:17,170 --> 00:32:20,420 Jei taip yra, tada mes jį perkelti, bet raktas. 438 00:32:20,420 --> 00:32:23,650 Gana paprasta, išskyrus tuos atvejus, kai jūs gaunate patinka šis, 439 00:32:23,650 --> 00:32:32,140 pamatysite, kad, atstovaujamos 122 z, tada duos jums kitą simbolį. 440 00:32:32,140 --> 00:32:37,770 Mes iš tikrųjų nori gyventi per mūsų abėcėle, tiesa? 441 00:32:37,770 --> 00:32:43,180 Taigi, mums reikia išsiaiškinti tam tikros rūšies vyniojimo aplink kelią. 442 00:32:43,180 --> 00:32:47,190 Kai jūs pasieksite Zed ir norite padidinti tam tikro skaičiaus, 443 00:32:47,190 --> 00:32:51,230 nenorite eiti į už ASCII abėcėlės skyriuje; 444 00:32:51,230 --> 00:32:54,140 norite wrap visą kelią atgal į A. 445 00:32:54,140 --> 00:32:58,550 Tačiau reikia nepamiršti, jūs vis dar išsaugoti bylą. 446 00:32:58,550 --> 00:33:00,980 Taigi, žinant, kad raidės negali tapti simboliai 447 00:33:00,980 --> 00:33:05,290 tik kaip simboliai nebus taip pat keičiasi. 448 00:33:05,290 --> 00:33:08,170 Per pastarąjį pset jūs tikrai nereikėjo, 449 00:33:08,170 --> 00:33:14,310 tačiau galimybė įgyvendinti savo gobšus pset naudojant modulis funkciją. 450 00:33:14,310 --> 00:33:17,230 Bet dabar mes iš tikrųjų ketiname reikia naudoti modulius, 451 00:33:17,230 --> 00:33:19,900 tad tiesiog eiti per šį šiek tiek. 452 00:33:19,900 --> 00:33:26,920 Iš esmės, kai jūs turite x Modulo y, kad suteikia jums x padalintas Y likusią. 453 00:33:26,920 --> 00:33:30,930 Štai keletas pavyzdžių čia. Mes turime 27% 15. 454 00:33:30,930 --> 00:33:36,200 Iš esmės, kai jūs atimti 15 iš 27 tiek kartų, kiek įmanoma be getting neigiamas 455 00:33:36,200 --> 00:33:39,060 tada jums 12, likusių. 456 00:33:39,060 --> 00:33:44,650 Taigi, tai tipo kaip ir matematikos kontekste, bet kaip mes galime iš tikrųjų naudoti? 457 00:33:44,650 --> 00:33:47,100 Ji ketina būtų naudinga mūsų wrapover. 458 00:33:47,100 --> 00:33:55,420 Už tai, tegul tiesiog pasakyti, aš paprašiau, kad tu visiems padalinti į 3 grupes. 459 00:33:55,420 --> 00:33:58,010 Kartais tai padaryti grupių ir kažkas panašaus. 460 00:33:58,010 --> 00:34:01,320 Pasakykite, aš pasakiau: "Gerai, Noriu, kad visi turi būti suskirstyta į 3." 461 00:34:01,320 --> 00:34:04,240 Kaip galite tai padaryti? 462 00:34:04,240 --> 00:34:06,810 [Nesigirdi studentas atsakas] Taip, būtent. Atsiskaityti. Gerai. 463 00:34:06,810 --> 00:34:10,260 Tegul iš tikrųjų, kad. Ar norite pradėti? 464 00:34:10,260 --> 00:34:13,810 [Studentai, skaičiuojant] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Bet atsiminkite, ... >> [Studentas] Oi, atsiprašau. 466 00:34:16,620 --> 00:34:18,730 Tai yra tikrai geras dalykas. 467 00:34:18,730 --> 00:34:24,130 Jūs sakėte, 4, bet mes iš tikrųjų norime jums pasakyti 1, nes mes tik norime 3 grupes. 468 00:34:24,130 --> 00:34:30,159 Taigi, kaip - Ne, tai tikrai geras pavyzdys, nes tada, kaip gali jums pasakyti, 1? 469 00:34:30,159 --> 00:34:33,370 Kas yra santykiai tarp 4 ir 1? 470 00:34:33,370 --> 00:34:36,760 Na, 4 mod 3 1. 471 00:34:36,760 --> 00:34:41,460 Taigi, jei norite tęsti, būtų 2. 472 00:34:41,460 --> 00:34:44,540 Taigi, mes turime 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Dar kartą, jūs iš tikrųjų 5-asis asmuo. Kaip žinote, pasakyti 2 vietoj 5? 474 00:34:49,420 --> 00:34:53,760 Jūs sakote, 5 mod 3 2. 475 00:34:53,760 --> 00:34:59,100 Aš noriu pamatyti, kiek yra likę grupės 3, tada kokia tvarka aš 476 00:34:59,100 --> 00:35:02,860 Ir taip, tada, jei mes ir toliau palei visą kambarį, 477 00:35:02,860 --> 00:35:07,760 tada mes norėtume matyti, kad mes visada iš tikrųjų taikant mod funkciją į save 478 00:35:07,760 --> 00:35:09,990 rūšies atskaityti. 479 00:35:09,990 --> 00:35:14,490 Štai daugiau natūra materialiuoju pavyzdžiui, apie tai, kaip galite naudoti modulo 480 00:35:14,490 --> 00:35:17,960 , nes aš tikiu, kad dauguma iš mūsų tikriausiai išgyveno šio proceso 481 00:35:17,960 --> 00:35:19,630 kur mes turėjome atskaityti. 482 00:35:19,630 --> 00:35:21,840 Bet kokie klausimai dėl pagal modulį? 483 00:35:21,840 --> 00:35:25,360 Tai bus labai svarbu suprasti šios sąvokos, 484 00:35:25,360 --> 00:35:28,640 todėl aš noriu, įsitikinkite, kad jums, vaikinai supranta. 485 00:35:28,640 --> 00:35:34,660 [Studentas] Jei nėra likusi, ji suteiks jums faktinį skaičių? 486 00:35:34,660 --> 00:35:40,430 Jei viena iš pirmųjų 3 iš jų tai padarė, tai davė jiems, ką jie iš tikrųjų buvo, 487 00:35:40,430 --> 00:35:43,310 ar tai jiems davė [nesigirdi] >> Tai geras klausimas. 488 00:35:43,310 --> 00:35:48,750 Kai nėra Likusi pagal modulį - taip, tarkime, jūs turite 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 , kuris faktiškai suteikia jums atgal 0. 490 00:35:53,670 --> 00:35:57,290 Mes kalbame apie tai šiek tiek vėliau. 491 00:35:58,810 --> 00:36:07,720 Oh yeah, pavyzdžiui, 3-iasis asmuo - 3 mod 3 yra iš tikrųjų 0, bet ji sakė, 3. 492 00:36:07,720 --> 00:36:14,900 Taigi, kad koks kaip vidinės laimikis, pavyzdžiui, 493 00:36:14,900 --> 00:36:17,620 kaip gerai, jei mod yra 0, tada aš ruošiuosi būti 3-iasis asmuo. 494 00:36:17,620 --> 00:36:22,740 Bet mes susisieksime į natūra, kaip mes norime susidoroti su 0 yra vėliau. 495 00:36:22,740 --> 00:36:32,750 Taigi dabar mes kažkaip būdas fiksuoti Zed dešinėje laiško. 496 00:36:32,750 --> 00:36:34,920 Taigi dabar mes išgyveno šių pavyzdžių, 497 00:36:34,920 --> 00:36:37,880 mes rūšies pamatyti, kaip Cezaris gali dirbti. 498 00:36:37,880 --> 00:36:42,640 Pamatysite 2 abėcėles, ir tada pamatysite juos perkeliant. 499 00:36:42,640 --> 00:36:44,430 Taigi, pabandykime ir pareikšti, kad pagal formulę. 500 00:36:44,430 --> 00:36:46,940 Ši formulė yra iš tikrųjų jums duota spec, 501 00:36:46,940 --> 00:36:52,070 bet gal rūšies atrodo per tai, ką kiekvienas kintamasis reiškia. 502 00:36:52,070 --> 00:36:55,000 Mūsų galutinis rezultatas bus ciphertext. 503 00:36:55,000 --> 00:36:58,300 Taigi tai sako, kad-osios iš ciphertext pobūdis 504 00:36:58,300 --> 00:37:02,500 vyksta atitinka-ajai paprastojo pobūdžio. 505 00:37:02,500 --> 00:37:08,130 Tai turi prasmę, nes mes norime visada būti pamušalas šiuos dalykus. 506 00:37:08,130 --> 00:37:13,480 Taigi tai bus ciphertext plius k, kuris yra pagrindinis mūsų osios pobūdis - 507 00:37:13,480 --> 00:37:17,230 , kad prasminga ir tada mes turime šio mod 26. 508 00:37:17,230 --> 00:37:19,860 Prisiminti atgal, kai mes turėjome Zed 509 00:37:19,860 --> 00:37:24,190 mes nenorėjome gauti į simbolį, todėl norėjome Mod IT 510 00:37:24,190 --> 00:37:26,540 ir rūšis apgaubiamojo abėcėlės. 511 00:37:26,540 --> 00:37:33,430 Po Zed jums būtų eiti į, b, c, d, kol jūs turite su šiuo numeriu. 512 00:37:33,430 --> 00:37:44,690 Taigi mes žinome, kad Zed, jei + 6, būtų suteikti mums f, nes po Zed ateina a, b, c, d, e, g. 513 00:37:44,690 --> 00:37:52,530 Taigi galime prisiminti, mes tikrai žinome, kad Zed + 6 ketina duoti mums f. 514 00:37:52,530 --> 00:38:03,530 ASCII vertybių, z yra 122 ir f yra 102. 515 00:38:03,530 --> 00:38:10,570 Taigi, mes turime rasti tam tikrą kelią, kad mūsų Caesar formulę, suteikia mums 102 516 00:38:10,570 --> 00:38:13,590 atsižvelgiant į 122. 517 00:38:13,590 --> 00:38:19,550 Taigi, jei mes tiesiog taikyti šią formulę ("z" + 6) 26%, kuris faktiškai suteikia jums 24 518 00:38:19,550 --> 00:38:25,980 nes 122 + 6 128; suteikia jums 128% 26 24 likutį. 519 00:38:25,980 --> 00:38:29,140 Bet tai nereiškia, iš tikrųjų reiškia, f. Tai tikrai ne 102. 520 00:38:29,140 --> 00:38:33,590 Tai taip pat ne 6 abėcėlės raidė. 521 00:38:33,590 --> 00:38:41,550 Taigi akivaizdu, kad mes turime turėti šiek tiek truputį keisdami tai šiek tiek kelią. 522 00:38:42,970 --> 00:38:51,340 Kalbant reguliariai abėcėlės, mes žinome, kad z yra 26 raidė ir f yra 6. 523 00:38:51,340 --> 00:38:55,460 Bet mes informatikos, todėl mes ketiname rodiklį esant 0. 524 00:38:55,460 --> 00:39:00,690 Taigi tada vietoj Z yra numeris 26, mes pasakyti, kad tai numeris 25 525 00:39:00,690 --> 00:39:02,630 nes yra 0. 526 00:39:02,630 --> 00:39:04,770 Taigi dabar galime taikyti šią formulę. 527 00:39:04,770 --> 00:39:11,710 Mes turime Z atstovavo 25 + 6, kuri suteikia jums 31. 528 00:39:11,710 --> 00:39:15,790 Ir 31 mod 26 suteikia jums 5 kaip likusios. 529 00:39:15,790 --> 00:39:20,500 Tai puiku, nes mes žinome, kad f yra 5 abėcėlės raidė. 530 00:39:20,500 --> 00:39:26,400 Tačiau ji vis dar ne f, tiesa? Jis vis dar nėra 102. 531 00:39:26,400 --> 00:39:32,730 Taip, tada šios pset iššūkis bus bando išsiaiškinti santykius 532 00:39:32,730 --> 00:39:36,910 tarp konvertuoti tarp šių ASCII vertybių ir abėcėlinė rodyklė. 533 00:39:36,910 --> 00:39:40,280 Iš esmės, ką jūs norite daryti, jūs norite pradėti ASCII vertes, 534 00:39:40,280 --> 00:39:45,390 bet tada jūs norite kažkaip išversti, kad į abėcėlinė rodyklė 535 00:39:45,390 --> 00:39:52,610 tada apskaičiuoti, ką raidė ji turėtų būti - iš esmės, ką jos abėcėlinė rodyklė 536 00:39:52,610 --> 00:39:57,660 Cipher pobūdžio - tada išversti, kad atgal į ASCII reikšmes. 537 00:39:57,660 --> 00:40:04,870 Taigi, jei jums ištraukti savo ASCII lentelę, tada pabandykite ir rasti ryšius tarp, tarkim, 102 ir 5 538 00:40:04,870 --> 00:40:10,440 arba 122 ir 25. 539 00:40:12,140 --> 00:40:15,690 Mes Dotarłeś mūsų raktas iš komandinės eilutės argumentai, mes Dotarłeś paprastojo 540 00:40:15,690 --> 00:40:17,520 mes užšifruota. 541 00:40:17,520 --> 00:40:19,820 Dabar viskas, ką liko padaryti, tai spausdinti. 542 00:40:19,820 --> 00:40:22,040 Galėtume tai padaryti keletą įvairių būdų. 543 00:40:22,040 --> 00:40:24,570 Ką mes galime padaryti yra iš tikrųjų, spausdinti, kaip mes einame kartu. 544 00:40:24,570 --> 00:40:28,250 Kaip mes pakartoti per simbolių į eilutę, 545 00:40:28,250 --> 00:40:31,660 mes galime tiesiog spausdinti tada, kai mes jį apskaičiuoti. 546 00:40:31,660 --> 00:40:36,030 Arba, jūs taip pat galėtų laikyti jį masyvo ir simbolių masyvo 547 00:40:36,030 --> 00:40:39,280 ir pabaigoje pakartoti per tą visą masyvą ir atspausdinti jį. 548 00:40:39,280 --> 00:40:40,980 Todėl jūs turite daug galimybių, kad pora. 549 00:40:40,980 --> 00:40:47,280 Ir atminkite, kad% c bus vietos rezervavimo ženklų spausdinimo simbolį. 550 00:40:47,280 --> 00:40:50,420 Taigi mes turime Cezaris, ir dabar mes pereiti prie Vigenere 551 00:40:50,420 --> 00:40:57,580 kuris yra labai panašus į Cezario bet tik šiek tiek sudėtingesnis. 552 00:40:57,580 --> 00:41:03,310 Taigi iš esmės Vigenere jūs ketinate būti perduoti reikšminį žodį. 553 00:41:03,310 --> 00:41:06,510 Taigi vietoj skaičių, jūs ketinate turėti eilutę, 554 00:41:06,510 --> 00:41:09,200 ir kad ketina veikti kaip raktažodžio. 555 00:41:09,200 --> 00:41:14,440 Tada, kaip įprasta, jūs ketinate gauti eilutę eilutę iš vartotojo 556 00:41:14,440 --> 00:41:19,050 ir tada šifruoti, ir tada suteikti jiems ciphertext atgal. 557 00:41:19,050 --> 00:41:24,650 Taigi, kaip ir sakiau, jis labai panašus į Cezario, išskyrus tuos atvejus, o ne perkelia tam tikro skaičiaus, 558 00:41:24,650 --> 00:41:30,620 skaičius iš tikrųjų vyksta keisti kiekvieną kartą, nuo charakterio pobūdžio. 559 00:41:30,620 --> 00:41:34,890 , Tą skaičių, perkelti, jis atstovauja klaviatūros raidžių. 560 00:41:34,890 --> 00:41:43,150 Taigi, jei jūs įvesti pamainos, pavyzdžiui, tada, kad atitiktų poslinkį nuo 0. 561 00:41:43,150 --> 00:41:45,900 Todėl vėl atgal į abėcėlinė rodyklė. 562 00:41:45,900 --> 00:41:49,100 , Kas gali būti naudinga, jei jūs matote, kad mes iš tikrųjų susiduriame su ASCII vertybių 563 00:41:49,100 --> 00:41:51,790 taip pat raidės, taip pat abėcėlinė rodyklė, 564 00:41:51,790 --> 00:41:58,020 galbūt rasti arba padaryti savo ASCII lentelę, kuri rodo abėcėlinė rodyklė nuo 0 iki 25, 565 00:41:58,020 --> 00:42:03,750 nuo a iki z, ir ASCII reikšmes, kad būtų galima rūšies santykius 566 00:42:03,750 --> 00:42:07,020 ir eskizas ir išbandyti ir rasti keletą modelių. 567 00:42:07,020 --> 00:42:11,010 Panašiai, jei jūs pereiti prie tam tikros instancijos f 568 00:42:11,010 --> 00:42:21,110 ir tai yra arba mažosiomis arba didžiosiomis raidėmis f - tada, kad atitiktų 5. 569 00:42:21,110 --> 00:42:24,180 Ar mes gerai iki šiol? 570 00:42:25,770 --> 00:42:30,050 , Formulė Vigenere yra šiek tiek kitoks. 571 00:42:30,050 --> 00:42:32,960 Iš esmės, jūs pamatysite, kad tai tiesiog kaip Cezaris, 572 00:42:32,960 --> 00:42:37,390 išskyrus tuos atvejus, o ne tik k mes turime k indekso j. 573 00:42:37,390 --> 00:42:44,810 Atkreipkite dėmesį, kad mes ne naudoti, nes iš esmės, raktinio žodžio ilgį 574 00:42:44,810 --> 00:42:49,850 nebūtinai mūsų ciphertext ilgį. 575 00:42:49,850 --> 00:42:56,130 Tai bus šiek tiek aiškiau, kai mes matome pavyzdį, kad turiu šiek tiek vėliau. 576 00:42:56,130 --> 00:43:03,160 Iš esmės, jei jūs naudojate savo programą su raktinį žodį ohai, 577 00:43:03,160 --> 00:43:08,560 tada tai reiškia, kad kiekvieną kartą, ohai bus jūsų perėjimas. 578 00:43:08,560 --> 00:43:11,060 Taigi, priklausomai nuo to, kokią poziciją jūs esate raktiniu žodžiu, 579 00:43:11,060 --> 00:43:15,800 jūs ketinate perkelti savo tikrą ciphertext pobūdį ta suma. 580 00:43:15,800 --> 00:43:19,630 Vėl, kaip Cezaris, mes norime įsitikinti, kad išsaugotume kapitalizuoti dalykų 581 00:43:19,630 --> 00:43:22,900 ir mes tik šifruoti raidės, o ne simbolių ar tarpų. 582 00:43:22,900 --> 00:43:26,330 Taigi atsigręžti į Cezario funkcijas, kad jums gali tekti naudoti, 583 00:43:26,330 --> 00:43:32,570 taip, kad jūs nusprendė, kaip pereiti dalykų, ir taikyti tą, kad jūsų programa čia. 584 00:43:32,570 --> 00:43:35,260 Taigi leiskite Map this out. 585 00:43:35,260 --> 00:43:39,680 Mes turime paprastojo, kad mes Dotarłeś iš vartotojo GetString 586 00:43:39,680 --> 00:43:44,090 sakydamas ... yra CS50! 587 00:43:44,090 --> 00:43:47,090 Tada mes turime iš ohai raktinį žodį. 588 00:43:47,090 --> 00:43:50,930 Pirmieji 4 simboliai yra gana paprasta. 589 00:43:50,930 --> 00:43:55,580 Mes žinome, kad T yra atitraukiama o, 590 00:43:55,580 --> 00:44:01,990 tada h vyksta atitraukiama h, i atitraukiama. 591 00:44:01,990 --> 00:44:04,610 Čia jūs matote, kad 0, 592 00:44:04,610 --> 00:44:11,940 taip, tada galutinis vertė iš tikrųjų yra tik tas pats laiškas, kaip ir anksčiau. 593 00:44:11,940 --> 00:44:15,250 Tada s perkeliama i. 594 00:44:15,250 --> 00:44:19,370 Bet tada jūs turite šiuos laikotarpius. 595 00:44:19,370 --> 00:44:25,960 Mes nenorime, šifruoti, kad taip, tada mes ne pakeisti jį nieko 596 00:44:25,960 --> 00:44:31,280 ir tiesiog atsispausdinti laikotarpį nepakeičiant. 597 00:44:31,280 --> 00:44:38,020 [Studentas] Aš nesuprantu, kaip jūs žinote, kad tai yra atitraukiama - kur tu - >> Oi, atsiprašau. 598 00:44:38,020 --> 00:44:41,620 Viršuje čia matote, kad komandinės eilutės argumentas ohai čia, 599 00:44:41,620 --> 00:44:43,740 kad bus raktinį žodį. 600 00:44:43,740 --> 00:44:49,550 Ir todėl iš esmės, jūs važiuoti dviračiu per raktinį žodį simbolių. 601 00:44:49,550 --> 00:44:52,020 [Studentas] Taigi "o" ketina būti perkelti tas pats - 602 00:44:52,020 --> 00:44:56,260 Tt o atitinka tam tikrą skaičių abėcėlės. 603 00:44:56,260 --> 00:44:58,400 [Studentas] Teisė. Bet kur tu gauti CS50 dalis? 604 00:44:58,400 --> 00:45:02,540 Oh. Štai GetString, kur jūs esate, pavyzdžiui, "Duok man eilutę koduoti. 605 00:45:02,540 --> 00:45:07,510 [Studentas] Jie ketina duoti jums šį argumentą perkelti iki 606 00:45:07,510 --> 00:45:09,380 ir tada jums paprašyti jūsų pirmą eilutę. >> Taip. 607 00:45:09,380 --> 00:45:12,440 Taigi, kai jie paleisti programą, jie ketina įtraukti raktinį žodį 608 00:45:12,440 --> 00:45:14,740 komandinės eilutės argumentai, kai jie paleisti. 609 00:45:14,740 --> 00:45:19,740 Tada, kai jūs Įsitikinę, kad jie iš tikrųjų davė jums 1 ir ne daugiau, ne mažiau, 610 00:45:19,740 --> 00:45:23,750 tada jūs ketinate tai paskatins juos eilutę, tarkim, "Duok man eilutę." 611 00:45:23,750 --> 00:45:27,630 , Kad šiuo atveju jie jums duoda šitą ... yra CS50! 612 00:45:27,630 --> 00:45:32,090 Taip, tada jūs ketinate naudoti, kad ir naudoti ohai ir pakartoti per. 613 00:45:32,090 --> 00:45:38,200 Atkreipkite dėmesį, kad čia mes praleista daugiau šifravimo laikotarpius, 614 00:45:38,200 --> 00:45:51,660 , bet mūsų poziciją, už ohai, kitą mes naudojome o. 615 00:45:51,660 --> 00:45:54,990 Šiuo atveju tai šiek tiek sunkiau pamatyti, nes tai 4, 616 00:45:54,990 --> 00:45:57,710 todėl tegul toliau šiek tiek. Tiesiog klijuoti su manimi čia. 617 00:45:57,710 --> 00:46:02,960 Tada mes turime i ir S, kurie vėliau yra išverstas atitinkamai o ir h. 618 00:46:02,960 --> 00:46:09,370 Tada mes turime erdvę, ir taip, tada mes žinome, kad esate nesiruošia šifruoti tuos skyrius,. 619 00:46:09,370 --> 00:46:18,930 Tačiau atkreipkite dėmesį, kad vietoj vyksta šioje vietoje čia, 620 00:46:18,930 --> 00:46:28,330 mes šifravimo - Aš nežinau, jei jūs galite pamatyti, kad čia. 621 00:46:28,330 --> 00:46:33,710 Todėl nėra, kaip jūs iš tikrųjų iš anksto, tarkim, o važiuoja čia, h eina čia, 622 00:46:33,710 --> 00:46:39,200 goes here, i eina čia, o, h, i, o, h, a, i. Jūs neturite daryti. 623 00:46:39,200 --> 00:46:43,760 Jūs tik perkelti savo poziciją pagal raktinį žodį 624 00:46:43,760 --> 00:46:51,020 kai jūs žinote, kad jūs iš tikrųjų bus šifravimo faktinė laišką. 625 00:46:51,020 --> 00:46:53,920 Ar, kad šios rūšies prasmės? 626 00:46:53,920 --> 00:46:55,800 Gerai. 627 00:46:56,490 --> 00:46:58,500 Taigi, tik kai kurie priminimai. 628 00:46:58,500 --> 00:47:03,760 Jūs norite įsitikinti, kad jūs tik iš anksto į kitą raktinio žodžio raidę 629 00:47:03,760 --> 00:47:06,390 jei savo paprastojo simbolis yra raidė. 630 00:47:06,390 --> 00:47:09,120 Taigi sako, mes ne o. 631 00:47:09,120 --> 00:47:19,310 Pastebime, kad kito simbolio, i paprastojo indeksas yra numeris, pavyzdžiui. 632 00:47:19,310 --> 00:47:31,630 Tai mes ne iš anksto J, mūsų raktinį žodį indekso, kol pasieksite kitą raidę. 633 00:47:31,630 --> 00:47:36,230 Vėlgi, jūs taip pat norite įsitikinti, kad jūs vaikjuostės nuo raktinio žodžio pradžioje 634 00:47:36,230 --> 00:47:37,770 , kai esate ne jo pabaigoje. 635 00:47:37,770 --> 00:47:42,030 Jei matote, čia mes ne i kitą turi būti Ö. 636 00:47:42,030 --> 00:47:47,690 Taigi, jūs norite rasti tam tikrą kelią, kad galėtų vaikjuostės raktinio žodžio pradžioje 637 00:47:47,690 --> 00:47:49,470 kiekvieną kartą, kai jums pasiekti pabaigos. 638 00:47:49,470 --> 00:47:55,040 Ir tokiu būdu vėlgi, kokios operatoriaus naudinga toje vyniojimo aplink? 639 00:47:56,630 --> 00:47:59,840 Kaip išjungimo pavyzdžiui skaičiavimo. 640 00:47:59,840 --> 00:48:03,710 [Studentas] procento ženklas. >> Taip, procento ženklas, kuris yra modulį. 641 00:48:03,710 --> 00:48:11,250 Taigi modulį bus naudinga čia, jei norite, į kuriuos vyniojami indeksą savo ohai. 642 00:48:11,250 --> 00:48:17,700 Ir tiesiog greitas patarimas: pabandykite galvoti apie vyniojimo per raktažodžiu šiek tiek, kaip skaičiuoti išjungti, 643 00:48:17,700 --> 00:48:23,590 kur, jei yra 3 grupės, 4-oji asmenų, 644 00:48:23,590 --> 00:48:30,610 jų skaičius, kad jie pasakė buvo 4 mod 3, kuri buvo 1. 645 00:48:30,610 --> 00:48:32,880 Taigi pabandykite ir galvoti apie tai, kad taip. 646 00:48:34,770 --> 00:48:42,740 Kaip matėte formulę, kur jūs turite CI ir tada pi bet tada kj, 647 00:48:42,740 --> 00:48:44,700 norite įsitikinkite, kad jums sekti iš tų. 648 00:48:44,700 --> 00:48:47,580 Jums nereikia skambinti Tai aš, jums nereikia ją vadina j, 649 00:48:47,580 --> 00:48:53,270 , bet jūs norite įsitikinkite, kad jums sekti pozicijos, kad jūs savo paprastojo 650 00:48:53,270 --> 00:48:55,790 taip pat pozicijos, kad esate ne savo žodį 651 00:48:55,790 --> 00:48:59,840 nes tie, nebūtinai bus tas pats. 652 00:48:59,840 --> 00:49:06,400 Ne tik raktinis žodis - tai gali būti visiškai kitokia nei jūsų paprastojo ilgis. 653 00:49:06,400 --> 00:49:09,140 Be to, jūsų paprastas tekstas, yra skaičiai ir simboliai, 654 00:49:09,140 --> 00:49:14,450 todėl ji nesiruošia puikiai dera kartu. Taip. 655 00:49:14,450 --> 00:49:19,280 [Studentas] Ar yra funkcija, jei norite pakeisti raidžių? 656 00:49:19,280 --> 00:49:24,530 Galite pakeisti į sostinę? >> Taip, ten tikrai yra. 657 00:49:24,530 --> 00:49:27,890 Galite patikrinti - Aš manau, kad toupper, visi 1 žodį. 658 00:49:30,650 --> 00:49:36,310 Bet kai jūs bandote Šifro dalykų ir išsaugoti tekstą, 659 00:49:36,310 --> 00:49:39,350 tai geriausia, iš esmės turi atskirus atvejus. 660 00:49:39,350 --> 00:49:42,040 , Jei ji didžiąsias, tada jūs norite pereiti 661 00:49:42,040 --> 00:49:46,460 nes savo formulę, kai jūs atsigręžti kaip mes turi tipo kelyje 662 00:49:46,460 --> 00:49:50,900 pakaitomis tarp ASCII būdu atstovauti skaičius 663 00:49:50,900 --> 00:49:55,020 ir faktinis abėcėlinė rodyklė, mes norime įsitikinti, kad 664 00:49:55,020 --> 00:50:01,850 ten bus kai kurie iš modelio natūra, kad jūs ketinate naudoti. 665 00:50:01,850 --> 00:50:04,580 Kita pastaba modelio, iš tikrųjų. 666 00:50:04,580 --> 00:50:07,250 Jūs ketinate būti susijusios su skaičiais. 667 00:50:07,250 --> 00:50:11,280 Stenkitės nenaudoti magiškus skaičius, kuris yra stiliaus pavyzdys. 668 00:50:11,280 --> 00:50:18,470 Taigi sako, norite kiekvienai laiko poslinkio ko nors patinka - 669 00:50:18,470 --> 00:50:22,400 Gerai, kad užuomina, kitas spoileris yra, kai jūs ketinate būti perkelti kažką 670 00:50:22,400 --> 00:50:26,310 tam tikra suma, pabandykite negali atstovauti, kad faktinis skaičius 671 00:50:26,310 --> 00:50:32,810 , o pabandyti ir pamatyti, jei jūs galite naudoti ASCII reikšmė, kuri rūšies padaryti daugiau prasmės. 672 00:50:32,810 --> 00:50:35,470 Dar viena pastaba: Kadangi mes susiduriame su formulėmis, 673 00:50:35,470 --> 00:50:41,200 net jei jūsų TF rūšies žinoti, ką modelis gali būti naudojamas, 674 00:50:41,200 --> 00:50:44,430 geriausiai jūsų komentarų rūšies paaiškinti logiką, kaip ir, 675 00:50:44,430 --> 00:50:51,880 "Aš naudoju šį modelį, nes ..." rūšis ir trumpai paaiškinti modelio jūsų komentarų. 676 00:50:54,090 --> 00:50:58,990 [Tai buvo žingsnis po žingsnio 2] Jei nėra kitų klausimų, tada aš tiesiog likti čia šiek tiek. 677 00:50:58,990 --> 00:51:04,370 Sėkmės su jūsų pset 2: Crypto ir Ačiū, kad atvykote. 678 00:51:06,070 --> 00:51:08,620 [Studentas] Ačiū. >> Ačiū. 679 00:51:09,220 --> 00:51:10,800 [Media Atsijungęs intro]