>> ZAMYLA CHAN: Sveikinimai nuo apdailos jūsų
Pirmoji pora C programomis.
Žinau, kad jūsų pirmasis įsiveržimas į C sintaksė gali būti varginantis.
Bet aš jus patikinti, tuo tikslu Žinoma, jūs galėsite pažvelgti į
Pirmoji pora užduotis ir užbaigti juos per kelias minutes.
>> Dabar, kad jūs gaunate daugiau susipažinę su sintakse, galime gauti Cezariui.
Be Cezaris, vartotojas bus pateikti sveikasis skaičius raktas kaip komandinės eilutės
argumentas, tada įveskite paprastas tekstinį pranešimą į eilutę.
Programa bus tada šifruoti tekstas ir spausdinimo
jų ciphertext pranešimą.
>> Caesar šifravimo yra gana paprasta.
Shift kiekvieną raidę, jų teksto, kurį klavišą.
Kaip rezultatas, jis taip pat gana nesaugus.
Bet įgyvendinančią Cezaris bus pristatyti mums ASCIIMath ir masyvo duomenų
struktūros.
Mes susisieksime su daugiau sudėtingas šifrai vėliau.
Su Caesar rakte 2 raide A teksto būtų atstovaujamos
raidė C ciphertext nes C yra dvi raidės nuo A B būtų
atstovaujamos D ir C E. link abėcėlės pabaigos, W
atstovaujamos Y ir X iki Z. Bet Y neturi dvi raidės, po ja, todėl
kad šifrai kimba abėcėlės.
Y paprasto teksto Taigi atstovaujamos Į ciphertext ir Z. B. Jis gali
padėti pamatyti Cezario šifras kaip nuolatinis abėcėlė ratas.
>> Norėdami šifruoti savo tekstą, vartotojo pateks du argumentus
į komandinės eilutės -
. / Caesar po raktu.
Kaip visada, mes negalime pasitikėti vartotoją visiškai įvesti indėlį, kad padaryti
prasmė mūsų programoje.
Taigi, mes turime patikrinti jų komandinės eilutės įvesties.
>> Vietoj to, naudojant int main negaliojančiu, mes naudojant int main int argc, styginių argv.
Sveikasis kintamasis argc atstovauja argumentų patenka į skaičius
komandinės eilutės.
Ir argv yra masyvas, arba galvoti apie tai, kaip sąrašas, iš argumentų, praėjo in
>> Taigi, Cezaris, kaip mes patvirtinti naudotojo įvesties?
Na, jie turėtų būti sudaryti dvi komandinės eilutės argumentai -
. / Caesar ir raktas.
Taigi, jei argc nėra 2, tai reiškia, kad jie arba pamiršo raktą ir tik
įrašytas. / Cezaris, arba jie įrašyti kelis raktus.
>> Jei tai toks atvejis, tada jums norite spausdinti instrukcijas
ir uždarykite programą.
Jie turi bandykite dar kartą iš komandinės eilutės.
Bet net jei argc yra 2, jūs reikia patikrinti, ar jie
jums galiojantį klavišą.
Dėl Cezaris, jums reikia sveikasis skaičius.
Bet argv yra eilučių masyvo.
Kaip jūs patektumėte į atitinkamą klavišą?
>> Žvilgsnis masyvai -
duomenų struktūrų, turinčių daug vertės tos pačios duomenų tipą.
Įrašai yra nulinės indeksuotas, tai reiškia, kad Pirmasis elementas yra puslapis nulis
ir paskutinis elementas yra dydžio indeksas minus 1, kur dydis skaičius
masyvo elementų.
>> Jei aš paskelbė naują eilutę masyvo pašto dėžutę ilgio 3 vizualiai, tai
atrodo taip.
Trys konteineriai styginiams , Šalia.
Norėdami prieiti prie kurio nors elemento, įveskite pavadinimą masyvo ir tada rodo
laužtiniuose skliaustuose indeksas.
Čia aš priskyrimo vertę kiekvienam elementas, kaip aš norėčiau tai padaryti su bet
Kiti styginiai kintamasis.
>> Taigi, norint naudotis mūsų komandų eilutės argumentus, visi mes turime padaryti, tai gauti
teisė elementas argv masyvo.
Jei vartotojas įveda. / Blastoff komanda Raketų į terminalą, argv 0 būtų
būti. / blastoff.
argv būtų grupė, ir arg2 būtų raketa.
>> Dabar, kad mes galime pasiekti mūsų raktą, mes vis dar reikia padaryti
įsitikinkite, kad ji yra teisinga.
Mums reikia ją konvertuoti į sveikasis skaičius.
Bet mes negalime tiesiog įmetė kaip mes padarėme anksčiau.
Laimei, Y funkcija rūpinasi tai mums ir net grąžina 0
jei eilutė negali būti konvertuojamos į sveikojo skaičiaus.
Tai iki jums, nors pasakyti vartotojo kodėl jums nebus
leisti programai tęsti.
Atmintį rezultatą Y sveikasis skaičius, ir jūs turite savo raktą.
Kitas dalis yra labai paprasta.
Paskatinti jų paprasto teksto vartotoją, tai bus tipo duomenų eilutę.
Laimei mums, visi vartotojo įvedamas stygos yra galiojantis.
>> Dabar, mes turime visus reikalingus išteklius nuo vartotojo, atėjo laikas mums
šifruoti savo pranešimą.
Cezario Koncepcija yra paprasta pakankamai suprasti.
Tačiau kaip kompiuteris žinoti, kuris laiškai ateina vienas po kito?
>> Štai kur ASCII lentelę Įgijusi
Kiekvienas personažas turi sveikasis skaičius numeris, susietas su juo.
Kapitalas yra 65.
Kapitalo B 66.
Mažosios yra 97.
Mažosios raidės b yra 98.
Tačiau ženklai yra ne tik iki vos abėcėlės skaičių.
Pavyzdžiui, simbolio @ yra ASCII skaičius 64.
>> Prieš sprendžiant su visa eilutę, Tarkime, mes tiesiog pereiti
vieną simbolį.
Na, mes tik norime perkelti faktinį raidės paprasto teksto, o ne
simboliai arba skaičiai.
Taigi pirmas dalykas, kad mes norime patikrinti, ar simbolis yra
abėcėlė.
>> Funkcija IsAlpha tai atlieka už mums ir grąžina Būlio -
tiesa, jei simbolių yra laiškas, false, jei kitaip.
Dvi kitos naudingos funkcijos yra isupper ir IsLower, su
Savaime suprantama, pavadinimus.
Jie grįžta tiesa, jei registro simbolis yra didžiosios ar mažosios,
atitinkamai.
Kadangi jie yra loginę, jie naudinga naudoti kaip sąlygomis.
>> Jei IsAlpha grąžina true, jums reikės pereiti tą simbolį pagal raktą.
Taigi leiskite atvira ASCIIMath ir ką nors ASCII matematikos.
Naudojimas yra labai panašus į naudojimo Caesar ir užima tuo raktu
komandinės eilutės.
>> Jei aš paleisti ASCIIMath 5, atrodo, pridėti 5, kad suteikėte man laišką F ir
rodyti ASCII reikšmė.
Taigi galime pažvelgti į programos išvaizdą.
>> Jums gali kilti klausimas, čia, kodėl laiškas yra sveikasis skaičius, kai jis
aiškiai, gerai, laiškas.
Pasirodo, kad simboliai ir sveikieji skaičiai yra sukeičiami.
Įtraukdami laišką į vieną kabutės, sveikasis skaičius gali laikyti
ASCII reikšmė kapitalo A. Būkite atsargūs, nors.
Jūs turite bendrosios drabužius.
Be kabučių, sudarytojas atrodytų kintamojo
pavadintas, o ne charakterį.
>> Tada pridėti raštą ir raktas, saugoti , suma int kintamųjų.
Nors rezultatas yra duomenų tipas sveikasis skaičius, mano printf naudoja
% C vietos rezervavimo ženklų.
Taigi, programa spausdina simbolį susijęs su sveiko rezultatas.
O kadangi mes atspausdintas sveikasis skaičius forma taip pat naudojant% s, matome,
skaičius taip pat.
Taigi, dabar jūs galite pamatyti, kad mes gydyti simbolius ir
sveikieji skaičiai, ir atvirkščiai.
>> Leiskite testas iš ASCIIMath kelių daugiau kartų, kaip raktas 25 naudoja.
Mes gauname raide Z.
Dabar mes stengiamės 26.
Mes norime, kad raidė a, o o mes gauname kairįjį laikiklį.
Taigi akivaizdu, tiesiog pridedant raktas į laišką nedarys.
Mums reikia išsiaiškinti formulę, į kuriuos vyniojami aplink abėcėlė, kaip mūsų
pavyzdys iš pradžių padarė.
>> Už Cezario formulė poslinkis yra taip.
c lygus p plius k Modulo 26.
Atminkite, kad modulio yra naudinga operacija, kuri suteikia mums likusią
dalijant vieną skaičių kitą.
Leiskite taikyti šią formulę paprastas tekstas laiškas su 2 raktu.
ASCII reikšmė y yra 89, kuris suteikia mums 91 modulo 26,
o tai lygu 13 -
tikrai ne ASCII reikšmė iš, kuris yra 67.
>> Humoras man dabar ir tolti nuo ASCII vertės į abėcėlinę rodyklę
kur yra nulis ir Z yra 25 tai reiškia, kad Y yra 24.
24 plius 2 modulio 6, suteikia mums 26, moduliu 26, 0, kuris yra
abėcėlinė rodyklė.
Taigi ši formulė atrodo, taikomos abėcėlinė rodyklė rašto ir
ne jo ASCII reikšmė.
>> Bet jūs pradėsite su ASCII reikšmes.
Ir spausdinti ciphertext pobūdžio, jums reikia savo ASCII reikšmė taip pat.
Tai iki jums, tada išsiaiškinti, kaip pereiti atgal ir pirmyn.
>> Kai jums išsiaiškinti tinkamą formulę už vieną rašmenį, viskas, ką reikia padaryti,
yra taikyti tą pačią formulę kiekvienam raidė paprastąjį tekstą -
tik jei šis laiškas yra abėcėlinis, žinoma.
Ir atminkite, kad jums reikia išlaikyti atveju, viršutinės ar apatinės, tai kur
isUpper ir IsLower funkcijos minėta praverčia.
Jūs galite turėti dvi formules -
vienas didžiosiomis raidėmis ir vienas mažosios.
Taigi isUpper IsLower padės jums nustatyti, kurios formulė taikyti.
>> Kaip taikyti savo formulę kiekvienam vieną simbolį į eilutę?
Na, eilutė yra tiesiog masyvas simbolių.
Taigi, galite prieiti prie kiekvieno požymio Grupuojant per kiekvieną pobūdžio
eilutę už linijos.
Kalbant apie jūsų būklę kilpos, funkcija strlen, už eilutę
ilgis, bus naudinga.
Ji trunka eilutę kaip pirkimo ir grąžina tos eilutės ilgis.
Įsitikinkite, kad įtraukėte tinkamą biblioteką naudoti eilutės ilgis funkciją.
>> Ir jūs turite savo ciphertext.
Mano vardas Zamyla.
Ir [KALBANTI kodą].