1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Sveikinimai nuo apdailos jūsų 3 00:00:11,270 --> 00:00:13,200 Pirmoji pora C programomis. 4 00:00:13,200 --> 00:00:16,379 Žinau, kad jūsų pirmasis įsiveržimas į C sintaksė gali būti varginantis. 5 00:00:16,379 --> 00:00:20,060 Bet aš jus patikinti, tuo tikslu Žinoma, jūs galėsite pažvelgti į 6 00:00:20,060 --> 00:00:23,870 Pirmoji pora užduotis ir užbaigti juos per kelias minutes. 7 00:00:23,870 --> 00:00:27,830 >> Dabar, kad jūs gaunate daugiau susipažinę su sintakse, galime gauti Cezariui. 8 00:00:27,830 --> 00:00:31,720 Be Cezaris, vartotojas bus pateikti sveikasis skaičius raktas kaip komandinės eilutės 9 00:00:31,720 --> 00:00:35,300 argumentas, tada įveskite paprastas tekstinį pranešimą į eilutę. 10 00:00:35,300 --> 00:00:38,050 Programa bus tada šifruoti tekstas ir spausdinimo 11 00:00:38,050 --> 00:00:40,020 jų ciphertext pranešimą. 12 00:00:40,020 --> 00:00:42,980 >> Caesar šifravimo yra gana paprasta. 13 00:00:42,980 --> 00:00:46,455 Shift kiekvieną raidę, jų teksto, kurį klavišą. 14 00:00:46,455 --> 00:00:49,220 Kaip rezultatas, jis taip pat gana nesaugus. 15 00:00:49,220 --> 00:00:53,850 Bet įgyvendinančią Cezaris bus pristatyti mums ASCIIMath ir masyvo duomenų 16 00:00:53,850 --> 00:00:54,460 struktūros. 17 00:00:54,460 --> 00:00:57,510 Mes susisieksime su daugiau sudėtingas šifrai vėliau. 18 00:00:57,510 --> 00:01:01,680 Su Caesar rakte 2 raide A teksto būtų atstovaujamos 19 00:01:01,680 --> 00:01:07,580 raidė C ciphertext nes C yra dvi raidės nuo A B būtų 20 00:01:07,580 --> 00:01:12,450 atstovaujamos D ir C E. link abėcėlės pabaigos, W 21 00:01:12,450 --> 00:01:18,550 atstovaujamos Y ir X iki Z. Bet Y neturi dvi raidės, po ja, todėl 22 00:01:18,550 --> 00:01:21,070 kad šifrai kimba abėcėlės. 23 00:01:21,070 --> 00:01:27,190 Y paprasto teksto Taigi atstovaujamos Į ciphertext ir Z. B. Jis gali 24 00:01:27,190 --> 00:01:32,080 padėti pamatyti Cezario šifras kaip nuolatinis abėcėlė ratas. 25 00:01:32,080 --> 00:01:35,760 >> Norėdami šifruoti savo tekstą, vartotojo pateks du argumentus 26 00:01:35,760 --> 00:01:37,090 į komandinės eilutės - 27 00:01:37,090 --> 00:01:40,010 . / Caesar po raktu. 28 00:01:40,010 --> 00:01:44,710 Kaip visada, mes negalime pasitikėti vartotoją visiškai įvesti indėlį, kad padaryti 29 00:01:44,710 --> 00:01:45,800 prasmė mūsų programoje. 30 00:01:45,800 --> 00:01:50,670 Taigi, mes turime patikrinti jų komandinės eilutės įvesties. 31 00:01:50,670 --> 00:01:57,285 >> Vietoj to, naudojant int main negaliojančiu, mes naudojant int main int argc, styginių argv. 32 00:01:57,285 --> 00:02:01,730 Sveikasis kintamasis argc atstovauja argumentų patenka į skaičius 33 00:02:01,730 --> 00:02:02,880 komandinės eilutės. 34 00:02:02,880 --> 00:02:09,070 Ir argv yra masyvas, arba galvoti apie tai, kaip sąrašas, iš argumentų, praėjo in 35 00:02:09,070 --> 00:02:12,000 >> Taigi, Cezaris, kaip mes patvirtinti naudotojo įvesties? 36 00:02:12,000 --> 00:02:15,870 Na, jie turėtų būti sudaryti dvi komandinės eilutės argumentai - 37 00:02:15,870 --> 00:02:18,150 . / Caesar ir raktas. 38 00:02:18,150 --> 00:02:22,340 Taigi, jei argc nėra 2, tai reiškia, kad jie arba pamiršo raktą ir tik 39 00:02:22,340 --> 00:02:27,230 įrašytas. / Cezaris, arba jie įrašyti kelis raktus. 40 00:02:27,230 --> 00:02:29,770 >> Jei tai toks atvejis, tada jums norite spausdinti instrukcijas 41 00:02:29,770 --> 00:02:30,910 ir uždarykite programą. 42 00:02:30,910 --> 00:02:34,320 Jie turi bandykite dar kartą iš komandinės eilutės. 43 00:02:34,320 --> 00:02:37,430 Bet net jei argc yra 2, jūs reikia patikrinti, ar jie 44 00:02:37,430 --> 00:02:39,100 jums galiojantį klavišą. 45 00:02:39,100 --> 00:02:40,730 Dėl Cezaris, jums reikia sveikasis skaičius. 46 00:02:40,730 --> 00:02:43,260 Bet argv yra eilučių masyvo. 47 00:02:43,260 --> 00:02:46,490 Kaip jūs patektumėte į atitinkamą klavišą? 48 00:02:46,490 --> 00:02:47,850 >> Žvilgsnis masyvai - 49 00:02:47,850 --> 00:02:51,410 duomenų struktūrų, turinčių daug vertės tos pačios duomenų tipą. 50 00:02:51,410 --> 00:02:55,350 Įrašai yra nulinės indeksuotas, tai reiškia, kad Pirmasis elementas yra puslapis nulis 51 00:02:55,350 --> 00:03:00,260 ir paskutinis elementas yra dydžio indeksas minus 1, kur dydis skaičius 52 00:03:00,260 --> 00:03:02,850 masyvo elementų. 53 00:03:02,850 --> 00:03:07,380 >> Jei aš paskelbė naują eilutę masyvo pašto dėžutę ilgio 3 vizualiai, tai 54 00:03:07,380 --> 00:03:08,570 atrodo taip. 55 00:03:08,570 --> 00:03:11,520 Trys konteineriai styginiams , Šalia. 56 00:03:11,520 --> 00:03:15,445 Norėdami prieiti prie kurio nors elemento, įveskite pavadinimą masyvo ir tada rodo 57 00:03:15,445 --> 00:03:18,080 laužtiniuose skliaustuose indeksas. 58 00:03:18,080 --> 00:03:21,610 Čia aš priskyrimo vertę kiekvienam elementas, kaip aš norėčiau tai padaryti su bet 59 00:03:21,610 --> 00:03:24,310 Kiti styginiai kintamasis. 60 00:03:24,310 --> 00:03:29,020 >> Taigi, norint naudotis mūsų komandų eilutės argumentus, visi mes turime padaryti, tai gauti 61 00:03:29,020 --> 00:03:31,690 teisė elementas argv masyvo. 62 00:03:31,690 --> 00:03:37,360 Jei vartotojas įveda. / Blastoff komanda Raketų į terminalą, argv 0 būtų 63 00:03:37,360 --> 00:03:38,950 būti. / blastoff. 64 00:03:38,950 --> 00:03:45,010 argv būtų grupė, ir arg2 būtų raketa. 65 00:03:45,010 --> 00:03:47,670 >> Dabar, kad mes galime pasiekti mūsų raktą, mes vis dar reikia padaryti 66 00:03:47,670 --> 00:03:49,040 įsitikinkite, kad ji yra teisinga. 67 00:03:49,040 --> 00:03:51,060 Mums reikia ją konvertuoti į sveikasis skaičius. 68 00:03:51,060 --> 00:03:54,680 Bet mes negalime tiesiog įmetė kaip mes padarėme anksčiau. 69 00:03:54,680 --> 00:03:58,800 Laimei, Y funkcija rūpinasi tai mums ir net grąžina 0 70 00:03:58,800 --> 00:04:02,110 jei eilutė negali būti konvertuojamos į sveikojo skaičiaus. 71 00:04:02,110 --> 00:04:04,450 Tai iki jums, nors pasakyti vartotojo kodėl jums nebus 72 00:04:04,450 --> 00:04:06,220 leisti programai tęsti. 73 00:04:06,220 --> 00:04:10,710 Atmintį rezultatą Y sveikasis skaičius, ir jūs turite savo raktą. 74 00:04:10,710 --> 00:04:12,070 Kitas dalis yra labai paprasta. 75 00:04:12,070 --> 00:04:15,940 Paskatinti jų paprasto teksto vartotoją, tai bus tipo duomenų eilutę. 76 00:04:15,940 --> 00:04:18,339 Laimei mums, visi vartotojo įvedamas stygos yra galiojantis. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Dabar, mes turime visus reikalingus išteklius nuo vartotojo, atėjo laikas mums 79 00:04:24,760 --> 00:04:26,520 šifruoti savo pranešimą. 80 00:04:26,520 --> 00:04:29,200 Cezario Koncepcija yra paprasta pakankamai suprasti. 81 00:04:29,200 --> 00:04:33,750 Tačiau kaip kompiuteris žinoti, kuris laiškai ateina vienas po kito? 82 00:04:33,750 --> 00:04:36,100 >> Štai kur ASCII lentelę Įgijusi 83 00:04:36,100 --> 00:04:39,420 Kiekvienas personažas turi sveikasis skaičius numeris, susietas su juo. 84 00:04:39,420 --> 00:04:41,380 Kapitalas yra 65. 85 00:04:41,380 --> 00:04:43,310 Kapitalo B 66. 86 00:04:43,310 --> 00:04:45,260 Mažosios yra 97. 87 00:04:45,260 --> 00:04:47,590 Mažosios raidės b yra 98. 88 00:04:47,590 --> 00:04:50,770 Tačiau ženklai yra ne tik iki vos abėcėlės skaičių. 89 00:04:50,770 --> 00:04:56,020 Pavyzdžiui, simbolio @ yra ASCII skaičius 64. 90 00:04:56,020 --> 00:04:59,690 >> Prieš sprendžiant su visa eilutę, Tarkime, mes tiesiog pereiti 91 00:04:59,690 --> 00:05:01,220 vieną simbolį. 92 00:05:01,220 --> 00:05:04,640 Na, mes tik norime perkelti faktinį raidės paprasto teksto, o ne 93 00:05:04,640 --> 00:05:06,020 simboliai arba skaičiai. 94 00:05:06,020 --> 00:05:09,100 Taigi pirmas dalykas, kad mes norime patikrinti, ar simbolis yra 95 00:05:09,100 --> 00:05:10,430 abėcėlė. 96 00:05:10,430 --> 00:05:14,460 >> Funkcija IsAlpha tai atlieka už mums ir grąžina Būlio - 97 00:05:14,460 --> 00:05:18,570 tiesa, jei simbolių yra laiškas, false, jei kitaip. 98 00:05:18,570 --> 00:05:22,270 Dvi kitos naudingos funkcijos yra isupper ir IsLower, su 99 00:05:22,270 --> 00:05:23,860 Savaime suprantama, pavadinimus. 100 00:05:23,860 --> 00:05:27,370 Jie grįžta tiesa, jei registro simbolis yra didžiosios ar mažosios, 101 00:05:27,370 --> 00:05:28,740 atitinkamai. 102 00:05:28,740 --> 00:05:33,770 Kadangi jie yra loginę, jie naudinga naudoti kaip sąlygomis. 103 00:05:33,770 --> 00:05:38,310 >> Jei IsAlpha grąžina true, jums reikės pereiti tą simbolį pagal raktą. 104 00:05:38,310 --> 00:05:43,750 Taigi leiskite atvira ASCIIMath ir ką nors ASCII matematikos. 105 00:05:43,750 --> 00:05:48,700 Naudojimas yra labai panašus į naudojimo Caesar ir užima tuo raktu 106 00:05:48,700 --> 00:05:50,870 komandinės eilutės. 107 00:05:50,870 --> 00:05:59,590 >> Jei aš paleisti ASCIIMath 5, atrodo, pridėti 5, kad suteikėte man laišką F ir 108 00:05:59,590 --> 00:06:01,260 rodyti ASCII reikšmė. 109 00:06:01,260 --> 00:06:04,090 Taigi galime pažvelgti į programos išvaizdą. 110 00:06:04,090 --> 00:06:11,820 >> Jums gali kilti klausimas, čia, kodėl laiškas yra sveikasis skaičius, kai jis 111 00:06:11,820 --> 00:06:14,330 aiškiai, gerai, laiškas. 112 00:06:14,330 --> 00:06:17,690 Pasirodo, kad simboliai ir sveikieji skaičiai yra sukeičiami. 113 00:06:17,690 --> 00:06:21,730 Įtraukdami laišką į vieną kabutės, sveikasis skaičius gali laikyti 114 00:06:21,730 --> 00:06:25,390 ASCII reikšmė kapitalo A. Būkite atsargūs, nors. 115 00:06:25,390 --> 00:06:27,150 Jūs turite bendrosios drabužius. 116 00:06:27,150 --> 00:06:31,260 Be kabučių, sudarytojas atrodytų kintamojo 117 00:06:31,260 --> 00:06:35,510 pavadintas, o ne charakterį. 118 00:06:35,510 --> 00:06:42,140 >> Tada pridėti raštą ir raktas, saugoti , suma int kintamųjų. 119 00:06:42,140 --> 00:06:47,740 Nors rezultatas yra duomenų tipas sveikasis skaičius, mano printf naudoja 120 00:06:47,740 --> 00:06:50,370 % C vietos rezervavimo ženklų. 121 00:06:50,370 --> 00:06:54,530 Taigi, programa spausdina simbolį susijęs su sveiko rezultatas. 122 00:06:54,530 --> 00:07:00,400 O kadangi mes atspausdintas sveikasis skaičius forma taip pat naudojant% s, matome, 123 00:07:00,400 --> 00:07:02,110 skaičius taip pat. 124 00:07:02,110 --> 00:07:04,450 Taigi, dabar jūs galite pamatyti, kad mes gydyti simbolius ir 125 00:07:04,450 --> 00:07:06,980 sveikieji skaičiai, ir atvirkščiai. 126 00:07:06,980 --> 00:07:12,205 >> Leiskite testas iš ASCIIMath kelių daugiau kartų, kaip raktas 25 naudoja. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Mes gauname raide Z. 129 00:07:17,090 --> 00:07:19,750 Dabar mes stengiamės 26. 130 00:07:19,750 --> 00:07:25,600 Mes norime, kad raidė a, o o mes gauname kairįjį laikiklį. 131 00:07:25,600 --> 00:07:29,490 Taigi akivaizdu, tiesiog pridedant raktas į laišką nedarys. 132 00:07:29,490 --> 00:07:32,780 Mums reikia išsiaiškinti formulę, į kuriuos vyniojami aplink abėcėlė, kaip mūsų 133 00:07:32,780 --> 00:07:34,570 pavyzdys iš pradžių padarė. 134 00:07:34,570 --> 00:07:38,520 >> Už Cezario formulė poslinkis yra taip. 135 00:07:38,520 --> 00:07:42,750 c lygus p plius k Modulo 26. 136 00:07:42,750 --> 00:07:46,040 Atminkite, kad modulio yra naudinga operacija, kuri suteikia mums likusią 137 00:07:46,040 --> 00:07:49,880 dalijant vieną skaičių kitą. 138 00:07:49,880 --> 00:07:54,870 Leiskite taikyti šią formulę paprastas tekstas laiškas su 2 raktu. 139 00:07:54,870 --> 00:08:01,810 ASCII reikšmė y yra 89, kuris suteikia mums 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 o tai lygu 13 - 141 00:08:03,690 --> 00:08:08,740 tikrai ne ASCII reikšmė iš, kuris yra 67. 142 00:08:08,740 --> 00:08:12,810 >> Humoras man dabar ir tolti nuo ASCII vertės į abėcėlinę rodyklę 143 00:08:12,810 --> 00:08:18,690 kur yra nulis ir Z yra 25 tai reiškia, kad Y yra 24. 144 00:08:18,690 --> 00:08:25,830 24 plius 2 modulio 6, suteikia mums 26, moduliu 26, 0, kuris yra 145 00:08:25,830 --> 00:08:28,170 abėcėlinė rodyklė. 146 00:08:28,170 --> 00:08:32,980 Taigi ši formulė atrodo, taikomos abėcėlinė rodyklė rašto ir 147 00:08:32,980 --> 00:08:34,960 ne jo ASCII reikšmė. 148 00:08:34,960 --> 00:08:37,630 >> Bet jūs pradėsite su ASCII reikšmes. 149 00:08:37,630 --> 00:08:41,650 Ir spausdinti ciphertext pobūdžio, jums reikia savo ASCII reikšmė taip pat. 150 00:08:41,650 --> 00:08:46,400 Tai iki jums, tada išsiaiškinti, kaip pereiti atgal ir pirmyn. 151 00:08:46,400 --> 00:08:49,850 >> Kai jums išsiaiškinti tinkamą formulę už vieną rašmenį, viskas, ką reikia padaryti, 152 00:08:49,850 --> 00:08:53,520 yra taikyti tą pačią formulę kiekvienam raidė paprastąjį tekstą - 153 00:08:53,520 --> 00:08:57,720 tik jei šis laiškas yra abėcėlinis, žinoma. 154 00:08:57,720 --> 00:09:02,360 Ir atminkite, kad jums reikia išlaikyti atveju, viršutinės ar apatinės, tai kur 155 00:09:02,360 --> 00:09:06,890 isUpper ir IsLower funkcijos minėta praverčia. 156 00:09:06,890 --> 00:09:08,830 Jūs galite turėti dvi formules - 157 00:09:08,830 --> 00:09:11,680 vienas didžiosiomis raidėmis ir vienas mažosios. 158 00:09:11,680 --> 00:09:18,420 Taigi isUpper IsLower padės jums nustatyti, kurios formulė taikyti. 159 00:09:18,420 --> 00:09:22,460 >> Kaip taikyti savo formulę kiekvienam vieną simbolį į eilutę? 160 00:09:22,460 --> 00:09:25,910 Na, eilutė yra tiesiog masyvas simbolių. 161 00:09:25,910 --> 00:09:31,150 Taigi, galite prieiti prie kiekvieno požymio Grupuojant per kiekvieną pobūdžio 162 00:09:31,150 --> 00:09:33,450 eilutę už linijos. 163 00:09:33,450 --> 00:09:37,550 Kalbant apie jūsų būklę kilpos, funkcija strlen, už eilutę 164 00:09:37,550 --> 00:09:39,280 ilgis, bus naudinga. 165 00:09:39,280 --> 00:09:44,020 Ji trunka eilutę kaip pirkimo ir grąžina tos eilutės ilgis. 166 00:09:44,020 --> 00:09:49,250 Įsitikinkite, kad įtraukėte tinkamą biblioteką naudoti eilutės ilgis funkciją. 167 00:09:49,250 --> 00:09:51,790 >> Ir jūs turite savo ciphertext. 168 00:09:51,790 --> 00:09:53,260 Mano vardas Zamyla. 169 00:09:53,260 --> 00:09:54,510 Ir [KALBANTI kodą]. 170 00:09:54,510 --> 00:10:02,944