>> ZAMYLA CHAN: Čestitamo na zaključujete
Prvi par programov C.
Vem, da je tvoj prvi plenilec v Sintaksa C lahko zastrašujoče.
Vendar vam zagotavljam, ob koncu leta tečaj, boste lahko na pogled
Prvih nekaj nalog in njihovo dokončanje v nekaj minutah.
>> Sedaj, ko ste dobili bolj seznanjeni s sintakso, pojdimo k cesarju.
V Cezarja, bo uporabnik predloži celo ključna kot ukazno vrstico
Trditev, vnesite navaden SMS na poziv.
Program bo nato encipher besedilo in tiskanje
njihova šifropisom sporočilo.
>> Šifriranje za Cezarja je dokaj preprost.
Shift vsako pismo, v svojih golo besedilo, s ključem.
Zaradi tega je tudi precej negotov.
Vendar bo o izvajanju Caesar uvesti nam ASCIIMath in nabor podatkov
struktur.
Bomo prišli do bolj zapleten šifre kasneje.
S cesarjem ključu 2, črka v golo besedilo bi jo zastopa
črka C v Zakrivena ker C je dve črki, po A. B bi
z D in C zastopa E. naproti konec abecede, W
z Y in X zastopala Z. Toda Y nima dve črki po tem, da
so šifre ovije okoli abecede.
Y v golo besedilo je torej zastopnik V Zakrivena, in Z, ki ga B. To je lahko
pomaga, da si ogledate Caesar Cypher kot neprekinjeno abeceda kolo.
>> Da encipher svoje besedilo, uporabniški bo začela dva argumenta
v ukazni vrstici -
/. Cesar sledi ključem.
Kot vedno, ne moremo zaupati uporabnika popolnoma vstopiti vhod, da bi
Občutek za naš program.
Torej bomo morali za potrditev njihovih vnosa ukaza.
>> Namesto z uporabo int main praznino, smo z int main, int argc, argv niz.
Celo spremenljivka argc predstavlja število argumentov opravili v
ukazni vrstici.
In argv je matrika, ali pa pomislite, da je Seznam, od argumentov opravili noter
>> Torej za Cezarja, kako preveriti vhod uporabnikov?
No, jih je treba vstopajo le dve vrstici argumenti v ukazni -
/. Cezar in ključ.
Torej, če argc ne 2, kar pomeni, da bodisi pozabil ključ in samo
vpisana. / cesar, ali pa vnese več ključev.
>> Če je temu tako, potem boste želite natisniti navodila
in zaprete program.
Te bomo morali poskusiti znova v ukazni vrstici.
Toda tudi če argc je 2, boste je treba preveriti, ali so
vam veljaven ključ.
Za Cezarja, morate celo število.
Ampak argv je array nizov.
Kako lahko dostopate ta ključ?
>> Hiter pogled na polja -
podatkovne strukture, ki imajo več Vrednosti isto vrsto podatkov.
Vnosi nič indeksirane, kar pomeni, da Prvi element je indeks nič
in zadnji element na velikost indeksa minus 1, pri čemer znaša število
elementi v matriki.
>> Če bi razglasila novo matrično nabiralnik niz dolžine 3, vizualno pa
izgleda takole.
Trije zabojniki za godala , Z ramo ob rami.
Za dostop do katerega koli elementa, vnesete ime v niz in nato kažejo
indeks v oglatih oklepajih.
Tukaj sem dodeljevanju vrednost vsakega element, tako kot jaz bi naredil z vsemi
drugi niz spremenljivka.
>> Torej za dostop do naše argumente v ukazni vrstici, vse, kar moramo storiti, je dostop
Pravica element argv matrike.
Če uporabnik vnese. / Blastoff Team Raketa v terminal, bi argv 0
biti. / blastoff.
argv bi bilo Team, in arg2 bi bila raketa.
>> Zdaj, ko smo lahko dostopajo do naše tipko, še vedno potrebujemo, da bi
prepričajte, da je pravilno.
Ga moramo pretvoriti v celo število.
Vendar ne moremo samo odda kot smo že storili.
Na srečo, da funkcija Y skrbi to za nas in celo vrne 0.
če niz ni mogoče pretvoriti v celo število.
To je do vas, čeprav povedati Uporabnik zakaj si ne bo
naj program nadaljuje.
Shranite rezultat Y v celo število, in tam imate svoj ključ.
Naslednji del je preprost.
Poziv uporabniku za svojo golo besedilo, ki bo tipa podatkovni niz.
K sreči za nas, vse si vnesene strune so veljavna.
>> Zdaj, ko imamo vse potrebne podatke od uporabnika, da je čas za nas
encipher svoje sporočilo.
Koncept je preprost Cezarja dovolj, da bi razumel.
Toda kako računalnik vedo, kateri Črke pridejo po drug drugemu?
>> Tu tabela ASCII pride noter
Vsak lik ima celo Številka je z njo povezana.
Kapital je 65.
Kapital B je 66.
Male črke je 97.
Male črke b je 98.
Vendar znakov ni omejeno na samo abecede številk.
Na primer, simbol @ je ASCII številka 64.
>> Pred obravnavo celotnega niza, kaj je pretvarjal bomo morali preusmeriti
en znak.
No, smo le želeli preusmeriti dejansko Črke v navadnem besedilu, ne
znakov ali številk.
Torej prva stvar, ki jo boste želeli preveriti, ali je znak v
abeceda.
>> Funkcija isalpha počne za nas in vrne Boolean -
res, če likov je pismo, false če je drugače.
Dva druge uporabne funkcije isupper in islower, s
samoumevna imena.
Vrnejo res, če zaradi narave je velikimi ali malimi črkami,
respectively.
Ker so Booleans, oni koristno uporabiti kot pogoji.
>> Če isalpha vrne true, boste morali preusmeriti, da je znak, ki ga tipko.
Torej, kaj je odprta za ASCIIMath in še nekaj math ASCII.
Uporaba je zelo podobna uporabi za cesarja in se v ključu pri
ukazni vrstici.
>> Če sem teči ASCIIMath 5, se zdi, da dodate 5. da, da mi je dal črko f, in
prikazuje vrednost ASCII.
Tako da je lahko pogled na program.
>> Morda se sprašujete, tukaj, zakaj Pismo je celo, ko je
jasno, no, pismo.
Izkazalo se je, da se znaki in cela sta medsebojno zamenljiva.
S tem da je pismo v eno narekovaji, lahko celo shranite
ASCII vrednost kapitala A. Bodite previdni, čeprav.
Potrebujete eno obleko.
Brez narekovajev, prevajalnik bi si za spremenljivko
imenovan, in ne znak.
>> Potem dodam dopis in ključ, shranjevanje Vsota v int spremenljivke rezultat.
Čeprav rezultat tipa podatkov celo, moja printf izjavo uporablja
% C ograda za znake.
Torej program natisne značaja povezana s celo rezultata.
In ker smo natisnili celo Obrazec kakor tudi z% d, bomo videli
številko, kot dobro.
Sedaj lahko vidite, da smo zdravljenje znakov in
cela, in obratno.
>> Oglejmo preizkus iz ASCIIMath nekaj večkrat uporablja 25 kot ključ.
Smo dobili pismo z.
Zdaj skušamo 26.
Želimo, da bi dobili pismo je, vendar namesto tega smo dobili levi nosilec.
Torej je očitno, samo dodal Ključ do dopisa ne bo naredil.
Moramo ugotoviti formulo za zavijanje po abecedi, kot naši
Primer je v začetku naredil.
>> Formula za Cezarjevega Premik je, kot sledi.
c enak p plus k, modulo 26.
Ne pozabite, da je modulo koristno operacija, ki nam daje preostanek
delitve eno številko s seboj.
Oglejmo uporablja to formulo za navaden Besedilo črke s ključem 2.
ASCII vrednost y je 89, ki nam daje 91 modulo 26,
kar je enako 13 -
zagotovo ne vrednost ASCII o, kar je 67.
>> Humor me zdaj in se oddaljiti od Vrednosti ASCII znakov v indeksu abecednem
kjer je nič in je Z 25. kar pomeni, da je Y 24.
24 plus 2, modulu 6, nam daje 26, modulu 26, 0, ki je
Indeks abecedni o.
Tako se zdi ta formula uporablja za Indeks abecedni pisma in
ni njena vrednost ASCII.
>> Ampak začnete z vrednostmi ASCII.
In natisniti Zakrivena značaja, boste morali svojo vrednost ASCII, kot dobro.
To je do vas, potem pa, da ugotovimo kako preklapljate.
>> Ko boš ugotovil pravo formulo za en znak, vse, kar morate storiti
se uporablja isto formulo za vsak črka v golo besedilo -
samo, če je to pismo je abecedni, Seveda.
In ne pozabite, da morate ohraniti tako, zgornji ali spodnji, tam
isUpper in isLower funkcije že omenjeno bo prišel prav.
Morda imate dve formule -
ena za velikimi črkami in ena za male.
Torej isUpper bo isLower vam pomaga določiti, katere formula uporablja.
>> Kako si uporabljajo svojo formulo za vsak posamezen znak v nizu?
No, niz je samo nabor znakov.
Tako da lahko dostopate vsak znak združevanje nad vsakim znakom v
niz v for zanko.
Kot je za stanje vaših za zanke, funkcija strlen za vrvico
dolžina, bo prišel prav.
To traja v nizu kot vhodni in vrne dolžino tega niza.
Poskrbite, da se vključi pravo knjižnico uporabo funkcije dolžina niza.
>> In tu imate šifropisom.
Moje ime je Zamyla.
In [GOVOREŒA KODA].