>> ZAMYLA CHAN: Gratuluji na dokončením
První pár C programy.
Vím, že vaše první vpád do C syntaxe může být skličující.
Ale ujišťuji vás, že na konci roku Samozřejmě, budete mít možnost podívat se na
Prvních pár úkolů a splnit během několika minut.
>> Nyní, když jste stále známější se syntaxí, pojďme k císaři.
V Caesarovi, uživatel bude předkládat číslo klíče jako příkazového řádku
Argument, zadejte prostý Textová zpráva na příkazovém řádku.
Program pak bude zašifrovat text a tisku
jejich šifrovaný vzkaz.
>> Šifrováním pro Caesara je poměrně jednoduché.
Shift každý dopis, v jejich prostý text, klávesou.
V důsledku toho, že je to také dost nejistá.
Ale provádí Caesar se představí nám ASCIIMath a pole dat
struktury.
Dostaneme se k složitější šifry později.
S Caesarem klíče 2, písmeno v holý text bude zastoupena
písmeno C do šifrového textu, protože C skládá ze dvou písmen po A. B by
zastoupené D a C E. K konec abecedy, W je
zastoupené Y, X a Z. Ale Y nemá dvě písmena po ní, takže
šifry se zalomí kolem abecedy.
Y ve formátu prostého textu je tedy zastoupena V šifrového textu a Z do B. To může
Nápověda zobrazíte Caesar Cypher jako kontinuální abeceda kolo.
>> Chcete-li zašifrovat svůj text, uživatelské vstoupí dva argumenty
do příkazového řádku -
. / Caesar následuje klíč.
Jako vždy, nemůžeme věřit uživatele úplně zadat vstup, aby
smysl pro náš program.
Takže budeme muset ověřit jejich vstup z příkazové řádky.
>> Namísto použití int main neplatné, jsme pomocí int main int argc, argv, řetězec.
Celočíselné proměnné argc představuje Počet argumentů předaných do
příkazového řádku.
A argv je pole, nebo myslíte, že na to, jak seznam, z argumentů předaných palců
>> Takže pro Caesara, jak jsme se ověřit uživatelského vstupu?
No, měly by být zadání dva argumenty příkazového řádku -
. / Caesar a klíč.
Takže pokud není argc 2, to znamená, že buď zapomněl klíče a jen
vstoupil. / caesar, nebo zadat více klíčů.
>> Pokud je to váš případ, pak budete které chcete vytisknout pokyny
a ukončete program.
Budou muset zkusit znovu z příkazového řádku.
Ale i když argc je 2, budete si muset vybrat je třeba zkontrolovat, zda
vám platný klíč.
Pro Caesara, budete potřebovat číslo.
Ale argv je pole řetězců.
Jak přistupovat tento klíč?
>> Rychlý pohled na pole -
datové struktury, které drží více hodnoty stejný typ dat.
Příspěvky jsou nulové, indexované, což znamená, že Prvním prvkem je index nulový
a poslední element je v indexu velikosti minus 1, kde velikost je počet
prvky pole.
>> Kdybych prohlásil nový řetězec pole schránky délky 3, vizuálně, je
vypadá takto.
Tři kontejnery pro řetězce , Bok po boku.
Chcete-li otevřít libovolný prvek, zadejte název z pole a pak uvést
index v hranatých závorkách.
Zde jsem přiřazení hodnoty k sobě prvek, stejně jako bych to s jakýmkoli
jiné řetězcové proměnné.
>> Takže přístup k našim argumenty příkazového řádku, vše, co musíte udělat, je přístup
právo prvek pole argv.
Pokud uživatel zadal. / Odpal tým Rocket do terminálu, by argv 0
být. / odpálení.
argv bude tým, a arg2 bude raketa.
>> Teď, když jsme přístup našeho klíč, stále je třeba, aby
ujistěte se, že je to správné.
Musíme převést na celé číslo.
Ale nemůžeme jen cast jako jsme udělali dříve.
Naštěstí na Y funkce se stará o z toho pro nás, a dokonce vrátí 0
v případě, že řetězec nelze převést na celé číslo.
Je to jen na vás, i když, abych uživatel proč ne
nechat program pokračovat.
Uložte výsledek Y v celé číslo, a tam máte klíč.
Další část je jednoduchý.
Vyzve uživatele k jejich prostý text, která bude datového typu řetězec.
Naštěstí pro nás všechny uživatelské vloženy struny jsou platné.
>> Nyní, když máme všechny potřebné vstupy od uživatele, že je čas pro nás
zašifrovat své poselství.
Koncept je jednoduchý Caesar dost rozumět.
Ale jak se váš počítač vědět, jaké dopisy přicházejí jeden po druhém?
>> Zde je místo, kde ASCII tabulka vypovídací
Každá postava má celé číslo číslo s ním spojené.
Kapitál je 65.
Kapitál B je 66.
Malá písmena je 97.
Malé písmeno b je 98.
Ale znaky nejsou omezeny na pouhých abecedy čísel.
Například, symbol @ ASCII číslo 64.
>> Než se zabývá celého řetězce, pojďme předstírat, že jsme se jen přesunout
jeden znak.
No, my jen chceme posunout aktuální písmena v prostém textu, nikoli
znaky nebo čísla.
Takže první věc, kterou budete chtít zkontrolovat, zda je znak v
abeceda.
>> Funkce isalpha to udělá za nám a vrátí logickou hodnotu -
true, pokud postav je dopis, false, jestliže jinak.
Dva další užitečné funkce isupper a islower se
self-vysvětlující jména.
Oni se vrátí true, pokud daný znak je velká nebo malá písmena,
v tomto pořadí.
Vzhledem k tomu, že jsou booleovské operace, jsou vhodné k použití jako podmínky.
>> Pokud isalpha vrací true, budete potřebovat posunout tento znak klávesou.
Takže pojďme otevřít na ASCIIMath a udělat nějaké ASCII matematiky.
Použití je velmi podobné využití pro Caesara a bere v klíči na
příkazového řádku.
>> Mám-li spustit ASCIIMath 5, zdá se přidat 5 až, že mi na písmeno F, a
zobrazení na hodnotu ASCII.
Takže pojďme se podívat na program.
>> Možná se divíte, tady, proč písmeno je celé číslo, pokud je to
jasně, dobře, písmeno.
Ukazuje se, že znaky a čísla jsou zaměnitelné.
Tím, že dopis v jedno uvozovky, můžete číslo uložit
ASCII hodnota kapitálu A. Buďte opatrní, i když.
Musíte jednotlivé oblečení.
Bez jednotné uvozovek, kompilátor by najít proměnné
s názvem, a nikoli charakter.
>> Pak přidám dopis a klíč, skladování částka v int proměnné výsledek.
I když výsledek je datového typu integer, moje printf výraz používá
% C zástupný symbol pro znaky.
Takže program vytiskne znak spojené s výsledkem celé číslo.
A protože jsme si vytiskli celé číslo podobě i pomocí% d, vidíme,
číslo stejně.
Takže nyní můžete vidět, že jsme léčbě znaků a
celá čísla, a naopak.
>> Pojďme otestují ASCIIMath několika Vícekrát pomocí 25 jako klíč.
Dostáváme Písmeno Z.
Nyní se pokusíme 26.
Chceme se dostat dopis a, ale místo toho dostaneme levou hranatou závorku.
Tak samozřejmě, jen přidat Klíčem k dopisu nebude dělat.
Musíme vymyslet vzorec zabalit kolem abecedy, jako naše
Například na začátku udělal.
>> Vzorec pro císařovo posun je následující.
c se rovná p plus K modulo 26.
Pamatujte si, že modulo je užitečný operace, která nám dává zbytek
dělení jedno číslo od druhého.
Pojďme platí tento vzorec na rovinatý Text dopis s klíčem 2.
ASCII hodnota y je 89, nám dává 91 modulo 26,
který se rovná 13 -
rozhodně není hodnota ASCII z, který je 67 let.
>> Humor mě teď a upustit od ASCII hodnot do indexu abecedním
kde je nulová, a Z je 25, což znamená, že Y je 24.
24 a 2, modulo 6, nám dává 26, modulo 26, 0, který je
abecední seznam.
Takže to vypadá, že vzorec platí pro abecední rejstřík dopisu a
není jeho ASCII hodnota.
>> Ale začnete s ASCII hodnoty.
A vytisknout znak šifrového textu budete muset svou hodnotu ASCII stejně.
Je to jen na vás, pak zjistit, jak přepínat tam a zpět.
>> Jakmile se přijít na správný recept jeden znak, vše, co potřebujete udělat,
je použít stejný vzorec pro každý dopis v prostém textu -
pouze v případě, že dopis je abecední, Samozřejmě.
A pamatujte, že musíte zachovat v případě, horní a dolní, to je místo, kde
isupper a islower funkce již bylo zmíněno dříve přijde vhod.
Můžete mít dva vzorce -
jeden pro velká písmena a jeden pro malá písmena.
Takže isupper islower vám pomůže určit, které vzorec použít.
>> Jak použít své vzorce každý znak v řetězci?
No, řetězec je jen pole znaků.
Takže můžete přistupovat každý znak seskupování přes každý znak v
řetězec v cyklu for.
Co se týče stavu vašeho smyčky for, Funkce strlen, pro řetězec
délka, přijde vhod.
Bere v řetězci jako vstup vrací délku tohoto řetězce.
Nezapomeňte uvést správnou knihovnu použít délku řetězce funkce.
>> A tady máte šifrový text.
Mé jméno je Zamyla.
A [MLUVÍCÍ KÓD].