>> ZAMYLA CHAN: Gratulujem na dokončením
Prvý pár C programy.
Viem, že vaša prvá vpád do C syntax môže byť skľučujúca.
Ale uisťujem vás, že na konci roka Samozrejme, budete mať možnosť pozrieť sa na
Prvých pár úloh a splniť v priebehu niekoľkých minút.
>> Teraz, keď ste stále známejší so syntaxou, poďme k cisárovi.
V Caesarovi, užívateľ bude predkladať číslo kľúča ako príkazového riadku
Argument, zadajte prostý Textová správa na príkazovom riadku.
Program potom bude zašifrovať text a tlače
ich šifrovaný odkaz.
>> Šifrovaním pre Caesara je pomerne jednoduché.
Shift každý list, v ich obyčajný text, klávesom.
V dôsledku toho, že je to tiež dosť neistá.
Ale vykonáva Caesar sa predstaví nám ASCIIMath a polia dát
štruktúry.
Dostaneme sa k zložitejšie šifry neskôr.
S Caesarom kľúča 2, písmeno v holý text bude zastúpená
písmeno C do šifrového textu, pretože C skladá z dvoch písmen po A. B by
zastúpené D a C E. K koniec abecedy, W je
zastúpené Y, X a Z. Ale Y nemá dve písmená po nej, takže
šifry sa zalomia okolo abecedy.
Y vo formáte obyčajného textu je teda zastúpená V šifrového textu a Z do B. To môže
Pomocník zobrazíte Caesar Cypher ako kontinuálne abeceda koleso.
>> Ak chcete zašifrovať svoj text, užívateľské vstúpi dva argumenty
do príkazového riadku -
. / Caesar nasleduje kľúč.
Ako vždy, nemôžeme veriť užívateľa úplne zadať vstup, aby
zmysel pre náš program.
Takže budeme musieť overiť ich vstup z príkazového riadku.
>> Namiesto použitia int main neplatné, sme pomocou int main int argc, argv, reťazec.
Celočíselné premenné argc predstavuje Počet argumentov predaných do
príkazového riadku.
A argv je pole, alebo myslíte, že na to, ako zoznam, z argumentov predaných palcov
>> Takže pre Caesara, ako sme sa overiť užívateľského vstupu?
No, mali by byť zadanie dva argumenty príkazového riadku -
. / Caesar a kľúč.
Takže ak nie je argc 2, to znamená, že buď zabudol kľúče a len
vstúpil. / caesar, alebo zadať viac kľúčov.
>> Ak je to váš prípad, potom budete ktoré chcete vytlačiť pokyny
a ukončite program.
Budú musieť skúsiť znova z príkazového riadku.
Ale aj keď argc je 2, budete si musieť vybrať je potrebné skontrolovať, či
vám platný kľúč.
Pre Caesara, budete potrebovať číslo.
Ale argv je pole reťazcov.
Ako pristupovať tento kľúč?
>> Rýchly pohľad na pole -
dátové štruktúry, ktoré držia viac hodnoty rovnaký typ dát.
Príspevky sú nulové, indexované, čo znamená, že Prvým prvkom je index nulový
a posledný element je v indexe veľkosti mínus 1, kde veľkosť je počet
prvky poľa.
>> Keby som vyhlásil nový reťazec pole schránky dĺžky 3, vizuálne, je
vyzerá takto.
Tri kontajnery pre reťazce , Bok po boku.
Ak chcete otvoriť ľubovoľný prvok, zadajte názov z poľa a potom uviesť
index v hranatých zátvorkách.
Tu som priradenie hodnoty k sebe prvok, rovnako ako by som to s akýmkoľvek
iné reťazcové premenné.
>> Takže prístup k našim argumenty príkazového riadku, všetko, čo musíte urobiť, je prístup
právo prvok poľa argv.
Ak používateľ zadal. / Odpal tím Rocket do terminálu, by argv 0
byť. / odpálenie.
argv bude tím, a arg2 bude raketa.
>> Teraz, keď sme prístup nášho kľúč, stále je potrebné, aby
uistite sa, že je to správne.
Musíme previesť na celé číslo.
Ale nemôžeme len cast ako sme urobili predtým.
Našťastie na Y funkcie sa stará o z toho pre nás, a dokonca vráti 0
v prípade, že reťazec nemožno previesť na celé číslo.
Je to len na vás, aj keď, aby som užívateľ prečo nie
nechať program pokračovať.
Uložte výsledok Y v celé číslo, a tam máte kľúč.
Ďalšia časť je jednoduchý.
Vyzve užívateľa k ich obyčajný text, ktorá bude dátového typu reťazec.
Našťastie pre nás všetky užívateľské vložené struny sú platné.
>> Teraz, keď máme všetky potrebné vstupy od užívateľa, že je čas pre nás
zašifrovať svoje posolstvo.
Koncept je jednoduchý Caesar dosť rozumieť.
Ale ako sa váš počítač vedieť, aké listy prichádzajú jeden po druhom?
>> Tu je miesto, kde ASCII tabuľka vypovedaciu
Každá postava má celé číslo číslo s ním spojené.
Kapitál je 65.
Kapitál B je 66.
Malé písmená je 97.
Malé písmeno b je 98.
Ale znaky nie sú obmedzené na iba abecedy čísel.
Napríklad, symbol @ ASCII číslo 64.
>> Než sa zaoberá celého reťazca, poďme predstierať, že sme sa len presunúť
jeden znak.
No, my len chceme posunúť aktuálne písmená v prostom texte, nie
znaky alebo čísla.
Takže prvá vec, ktorú budete chcieť skontrolovať, či je znak v
abeceda.
>> Funkcia isalpha to urobí za nám a vráti logickú hodnotu -
true, ak postáv je list, false, ak inak.
Dva ďalšie užitočné funkcie isupper a islower sa
self-vysvetľujúce mená.
Oni sa vráti true, ak daný znak je veľká alebo malé písmená,
v tomto poradí.
Vzhľadom k tomu, že sú booleovské operácie, sú vhodné na použitie ako podmienky.
>> Ak isalpha vracia true, budete potrebovať posunúť tento znak klávesom.
Takže poďme otvoriť na ASCIIMath a urobiť nejaké ASCII matematiky.
Použitie je veľmi podobné využitie pre Caesara a berie v kľúči na
príkazového riadku.
>> Mám chcete spustiť ASCIIMath 5, zdá sa pridať 5 až, že mi na písmeno F, a
zobrazenie na hodnotu ASCII.
Takže poďme sa pozrieť na program.
>> Možno sa čudujete, tu, prečo písmeno je celé číslo, ak je to
jasne, dobre, písmeno.
Ukazuje sa, že znaky a čísla sú zameniteľné.
Tým, že list v jedno úvodzovky, môžete číslo uložiť
ASCII hodnota kapitálu A. Buďte opatrní, aj keď.
Musíte jednotlivé oblečenie.
Bez jednotnej úvodzoviek, kompilátor by nájsť premenné
s názvom, a nie charakter.
>> Potom pridám list a kľúč, skladovanie suma v int premenné výsledok.
Aj keď výsledok je dátového typu integer, moja printf výraz používa
% C zástupný symbol pre znaky.
Takže program vytlačí znak spojené s výsledkom celé číslo.
A pretože sme si vytlačili celé číslo podobe aj pomocou% d, vidíme,
číslo rovnako.
Takže teraz môžete vidieť, že sme liečbe znakov a
celé čísla, a naopak.
>> Poďme otestujú ASCIIMath niekoľkých Viackrát pomocou 25 ako kľúč.
Dostávame Písmeno Z.
Teraz sa pokúsime 26.
Chceme sa dostať list a, ale namiesto toho dostaneme ľavú hranatú zátvorku.
Tak samozrejme, len pridať Kľúčom k listu nebude robiť.
Musíme vymyslieť vzorec zabaliť okolo abecedy, ako naša
Napríklad na začiatku urobil.
>> Vzorec pre cisárovo posun je nasledujúci.
c sa rovná p plus K modulo 26.
Pamätajte si, že modulo je užitočný operácie, ktorá nám dáva zvyšok
delenie jedno číslo od druhého.
Poďme platí tento vzorec na rovinatý Text list s kľúčom 2.
ASCII hodnota y je 89, nám dáva 91 modulo 26,
ktorý sa rovná 13 -
rozhodne nie je hodnota ASCII z, ktorý je 67 rokov.
>> Humor ma teraz a upustiť od ASCII hodnôt do indexu abecednom
kde je nulová, a Z je 25, čo znamená, že Y je 24.
24 a 2, modulo 6, nám dáva 26, modulo 26, 0, ktorý je
abecedný zoznam.
Takže to vyzerá, že vzorec platí pre abecedný register listu a
nie je jeho ASCII hodnota.
>> Ale začnete s ASCII hodnoty.
A vytlačiť znak šifrového textu budete musieť svoju hodnotu ASCII rovnako.
Je to len na vás, potom zistiť, ako prepínať tam a späť.
>> Akonáhle sa prísť na správny recept jeden znak, všetko, čo potrebujete urobiť,
je použiť rovnaký vzorec pre každý list v prostom texte -
iba v prípade, že list je abecedný, Samozrejme.
A pamätajte, že musíte zachovať v prípade, horný a dolný, to je miesto, kde
isupper a islower funkcie už bolo spomenuté skôr príde vhod.
Môžete mať dva vzorce -
jeden pre veľké písmená a jeden pre malé písmená.
Takže isupper islower vám pomôže určiť, ktoré vzorec použiť.
>> Ako použiť svoje vzorce každý znak v reťazci?
No, reťazec je len pole znakov.
Takže môžete pristupovať každý znak zoskupovanie cez každý znak v
reťazec v cykle for.
Čo sa týka stavu vášho slučky for, Funkcia strlen, pre reťazec
dĺžka, príde vhod.
Berie v reťazci ako vstup vracia dĺžku tohto reťazca.
Nezabudnite uviesť správnu knižnicu použiť dĺžku reťazca funkcie.
>> A tu máte šifrový text.
Moje meno je Zamyla.
A [HOVORIACI CODE].