1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Gratulujem na dokončením 3 00:00:11,270 --> 00:00:13,200 Prvý pár C programy. 4 00:00:13,200 --> 00:00:16,379 Viem, že vaša prvá vpád do C syntax môže byť skľučujúca. 5 00:00:16,379 --> 00:00:20,060 Ale uisťujem vás, že na konci roka Samozrejme, budete mať možnosť pozrieť sa na 6 00:00:20,060 --> 00:00:23,870 Prvých pár úloh a splniť v priebehu niekoľkých minút. 7 00:00:23,870 --> 00:00:27,830 >> Teraz, keď ste stále známejší so syntaxou, poďme k cisárovi. 8 00:00:27,830 --> 00:00:31,720 V Caesarovi, užívateľ bude predkladať číslo kľúča ako príkazového riadku 9 00:00:31,720 --> 00:00:35,300 Argument, zadajte prostý Textová správa na príkazovom riadku. 10 00:00:35,300 --> 00:00:38,050 Program potom bude zašifrovať text a tlače 11 00:00:38,050 --> 00:00:40,020 ich šifrovaný odkaz. 12 00:00:40,020 --> 00:00:42,980 >> Šifrovaním pre Caesara je pomerne jednoduché. 13 00:00:42,980 --> 00:00:46,455 Shift každý list, v ich obyčajný text, klávesom. 14 00:00:46,455 --> 00:00:49,220 V dôsledku toho, že je to tiež dosť neistá. 15 00:00:49,220 --> 00:00:53,850 Ale vykonáva Caesar sa predstaví nám ASCIIMath a polia dát 16 00:00:53,850 --> 00:00:54,460 štruktúry. 17 00:00:54,460 --> 00:00:57,510 Dostaneme sa k zložitejšie šifry neskôr. 18 00:00:57,510 --> 00:01:01,680 S Caesarom kľúča 2, písmeno v holý text bude zastúpená 19 00:01:01,680 --> 00:01:07,580 písmeno C do šifrového textu, pretože C skladá z dvoch písmen po A. B by 20 00:01:07,580 --> 00:01:12,450 zastúpené D a C E. K koniec abecedy, W je 21 00:01:12,450 --> 00:01:18,550 zastúpené Y, X a Z. Ale Y nemá dve písmená po nej, takže 22 00:01:18,550 --> 00:01:21,070 šifry sa zalomia okolo abecedy. 23 00:01:21,070 --> 00:01:27,190 Y vo formáte obyčajného textu je teda zastúpená V šifrového textu a Z do B. To môže 24 00:01:27,190 --> 00:01:32,080 Pomocník zobrazíte Caesar Cypher ako kontinuálne abeceda koleso. 25 00:01:32,080 --> 00:01:35,760 >> Ak chcete zašifrovať svoj text, užívateľské vstúpi dva argumenty 26 00:01:35,760 --> 00:01:37,090 do príkazového riadku - 27 00:01:37,090 --> 00:01:40,010 . / Caesar nasleduje kľúč. 28 00:01:40,010 --> 00:01:44,710 Ako vždy, nemôžeme veriť užívateľa úplne zadať vstup, aby 29 00:01:44,710 --> 00:01:45,800 zmysel pre náš program. 30 00:01:45,800 --> 00:01:50,670 Takže budeme musieť overiť ich vstup z príkazového riadku. 31 00:01:50,670 --> 00:01:57,285 >> Namiesto použitia int main neplatné, sme pomocou int main int argc, argv, reťazec. 32 00:01:57,285 --> 00:02:01,730 Celočíselné premenné argc predstavuje Počet argumentov predaných do 33 00:02:01,730 --> 00:02:02,880 príkazového riadku. 34 00:02:02,880 --> 00:02:09,070 A argv je pole, alebo myslíte, že na to, ako zoznam, z argumentov predaných palcov 35 00:02:09,070 --> 00:02:12,000 >> Takže pre Caesara, ako sme sa overiť užívateľského vstupu? 36 00:02:12,000 --> 00:02:15,870 No, mali by byť zadanie dva argumenty príkazového riadku - 37 00:02:15,870 --> 00:02:18,150 . / Caesar a kľúč. 38 00:02:18,150 --> 00:02:22,340 Takže ak nie je argc 2, to znamená, že buď zabudol kľúče a len 39 00:02:22,340 --> 00:02:27,230 vstúpil. / caesar, alebo zadať viac kľúčov. 40 00:02:27,230 --> 00:02:29,770 >> Ak je to váš prípad, potom budete ktoré chcete vytlačiť pokyny 41 00:02:29,770 --> 00:02:30,910 a ukončite program. 42 00:02:30,910 --> 00:02:34,320 Budú musieť skúsiť znova z príkazového riadku. 43 00:02:34,320 --> 00:02:37,430 Ale aj keď argc je 2, budete si musieť vybrať je potrebné skontrolovať, či 44 00:02:37,430 --> 00:02:39,100 vám platný kľúč. 45 00:02:39,100 --> 00:02:40,730 Pre Caesara, budete potrebovať číslo. 46 00:02:40,730 --> 00:02:43,260 Ale argv je pole reťazcov. 47 00:02:43,260 --> 00:02:46,490 Ako pristupovať tento kľúč? 48 00:02:46,490 --> 00:02:47,850 >> Rýchly pohľad na pole - 49 00:02:47,850 --> 00:02:51,410 dátové štruktúry, ktoré držia viac hodnoty rovnaký typ dát. 50 00:02:51,410 --> 00:02:55,350 Príspevky sú nulové, indexované, čo znamená, že Prvým prvkom je index nulový 51 00:02:55,350 --> 00:03:00,260 a posledný element je v indexe veľkosti mínus 1, kde veľkosť je počet 52 00:03:00,260 --> 00:03:02,850 prvky poľa. 53 00:03:02,850 --> 00:03:07,380 >> Keby som vyhlásil nový reťazec pole schránky dĺžky 3, vizuálne, je 54 00:03:07,380 --> 00:03:08,570 vyzerá takto. 55 00:03:08,570 --> 00:03:11,520 Tri kontajnery pre reťazce , Bok po boku. 56 00:03:11,520 --> 00:03:15,445 Ak chcete otvoriť ľubovoľný prvok, zadajte názov z poľa a potom uviesť 57 00:03:15,445 --> 00:03:18,080 index v hranatých zátvorkách. 58 00:03:18,080 --> 00:03:21,610 Tu som priradenie hodnoty k sebe prvok, rovnako ako by som to s akýmkoľvek 59 00:03:21,610 --> 00:03:24,310 iné reťazcové premenné. 60 00:03:24,310 --> 00:03:29,020 >> Takže prístup k našim argumenty príkazového riadku, všetko, čo musíte urobiť, je prístup 61 00:03:29,020 --> 00:03:31,690 právo prvok poľa argv. 62 00:03:31,690 --> 00:03:37,360 Ak používateľ zadal. / Odpal tím Rocket do terminálu, by argv 0 63 00:03:37,360 --> 00:03:38,950 byť. / odpálenie. 64 00:03:38,950 --> 00:03:45,010 argv bude tím, a arg2 bude raketa. 65 00:03:45,010 --> 00:03:47,670 >> Teraz, keď sme prístup nášho kľúč, stále je potrebné, aby 66 00:03:47,670 --> 00:03:49,040 uistite sa, že je to správne. 67 00:03:49,040 --> 00:03:51,060 Musíme previesť na celé číslo. 68 00:03:51,060 --> 00:03:54,680 Ale nemôžeme len cast ako sme urobili predtým. 69 00:03:54,680 --> 00:03:58,800 Našťastie na Y funkcie sa stará o z toho pre nás, a dokonca vráti 0 70 00:03:58,800 --> 00:04:02,110 v prípade, že reťazec nemožno previesť na celé číslo. 71 00:04:02,110 --> 00:04:04,450 Je to len na vás, aj keď, aby som užívateľ prečo nie 72 00:04:04,450 --> 00:04:06,220 nechať program pokračovať. 73 00:04:06,220 --> 00:04:10,710 Uložte výsledok Y v celé číslo, a tam máte kľúč. 74 00:04:10,710 --> 00:04:12,070 Ďalšia časť je jednoduchý. 75 00:04:12,070 --> 00:04:15,940 Vyzve užívateľa k ich obyčajný text, ktorá bude dátového typu reťazec. 76 00:04:15,940 --> 00:04:18,339 Našťastie pre nás všetky užívateľské vložené struny sú platné. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Teraz, keď máme všetky potrebné vstupy od užívateľa, že je čas pre nás 79 00:04:24,760 --> 00:04:26,520 zašifrovať svoje posolstvo. 80 00:04:26,520 --> 00:04:29,200 Koncept je jednoduchý Caesar dosť rozumieť. 81 00:04:29,200 --> 00:04:33,750 Ale ako sa váš počítač vedieť, aké listy prichádzajú jeden po druhom? 82 00:04:33,750 --> 00:04:36,100 >> Tu je miesto, kde ASCII tabuľka vypovedaciu 83 00:04:36,100 --> 00:04:39,420 Každá postava má celé číslo číslo s ním spojené. 84 00:04:39,420 --> 00:04:41,380 Kapitál je 65. 85 00:04:41,380 --> 00:04:43,310 Kapitál B je 66. 86 00:04:43,310 --> 00:04:45,260 Malé písmená je 97. 87 00:04:45,260 --> 00:04:47,590 Malé písmeno b je 98. 88 00:04:47,590 --> 00:04:50,770 Ale znaky nie sú obmedzené na iba abecedy čísel. 89 00:04:50,770 --> 00:04:56,020 Napríklad, symbol @ ASCII číslo 64. 90 00:04:56,020 --> 00:04:59,690 >> Než sa zaoberá celého reťazca, poďme predstierať, že sme sa len presunúť 91 00:04:59,690 --> 00:05:01,220 jeden znak. 92 00:05:01,220 --> 00:05:04,640 No, my len chceme posunúť aktuálne písmená v prostom texte, nie 93 00:05:04,640 --> 00:05:06,020 znaky alebo čísla. 94 00:05:06,020 --> 00:05:09,100 Takže prvá vec, ktorú budete chcieť skontrolovať, či je znak v 95 00:05:09,100 --> 00:05:10,430 abeceda. 96 00:05:10,430 --> 00:05:14,460 >> Funkcia isalpha to urobí za nám a vráti logickú hodnotu - 97 00:05:14,460 --> 00:05:18,570 true, ak postáv je list, false, ak inak. 98 00:05:18,570 --> 00:05:22,270 Dva ďalšie užitočné funkcie isupper a islower sa 99 00:05:22,270 --> 00:05:23,860 self-vysvetľujúce mená. 100 00:05:23,860 --> 00:05:27,370 Oni sa vráti true, ak daný znak je veľká alebo malé písmená, 101 00:05:27,370 --> 00:05:28,740 v tomto poradí. 102 00:05:28,740 --> 00:05:33,770 Vzhľadom k tomu, že sú booleovské operácie, sú vhodné na použitie ako podmienky. 103 00:05:33,770 --> 00:05:38,310 >> Ak isalpha vracia true, budete potrebovať posunúť tento znak klávesom. 104 00:05:38,310 --> 00:05:43,750 Takže poďme otvoriť na ASCIIMath a urobiť nejaké ASCII matematiky. 105 00:05:43,750 --> 00:05:48,700 Použitie je veľmi podobné využitie pre Caesara a berie v kľúči na 106 00:05:48,700 --> 00:05:50,870 príkazového riadku. 107 00:05:50,870 --> 00:05:59,590 >> Mám chcete spustiť ASCIIMath 5, zdá sa pridať 5 až, že mi na písmeno F, a 108 00:05:59,590 --> 00:06:01,260 zobrazenie na hodnotu ASCII. 109 00:06:01,260 --> 00:06:04,090 Takže poďme sa pozrieť na program. 110 00:06:04,090 --> 00:06:11,820 >> Možno sa čudujete, tu, prečo písmeno je celé číslo, ak je to 111 00:06:11,820 --> 00:06:14,330 jasne, dobre, písmeno. 112 00:06:14,330 --> 00:06:17,690 Ukazuje sa, že znaky a čísla sú zameniteľné. 113 00:06:17,690 --> 00:06:21,730 Tým, že list v jedno úvodzovky, môžete číslo uložiť 114 00:06:21,730 --> 00:06:25,390 ASCII hodnota kapitálu A. Buďte opatrní, aj keď. 115 00:06:25,390 --> 00:06:27,150 Musíte jednotlivé oblečenie. 116 00:06:27,150 --> 00:06:31,260 Bez jednotnej úvodzoviek, kompilátor by nájsť premenné 117 00:06:31,260 --> 00:06:35,510 s názvom, a nie charakter. 118 00:06:35,510 --> 00:06:42,140 >> Potom pridám list a kľúč, skladovanie suma v int premenné výsledok. 119 00:06:42,140 --> 00:06:47,740 Aj keď výsledok je dátového typu integer, moja printf výraz používa 120 00:06:47,740 --> 00:06:50,370 % C zástupný symbol pre znaky. 121 00:06:50,370 --> 00:06:54,530 Takže program vytlačí znak spojené s výsledkom celé číslo. 122 00:06:54,530 --> 00:07:00,400 A pretože sme si vytlačili celé číslo podobe aj pomocou% d, vidíme, 123 00:07:00,400 --> 00:07:02,110 číslo rovnako. 124 00:07:02,110 --> 00:07:04,450 Takže teraz môžete vidieť, že sme liečbe znakov a 125 00:07:04,450 --> 00:07:06,980 celé čísla, a naopak. 126 00:07:06,980 --> 00:07:12,205 >> Poďme otestujú ASCIIMath niekoľkých Viackrát pomocou 25 ako kľúč. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Dostávame Písmeno Z. 129 00:07:17,090 --> 00:07:19,750 Teraz sa pokúsime 26. 130 00:07:19,750 --> 00:07:25,600 Chceme sa dostať list a, ale namiesto toho dostaneme ľavú hranatú zátvorku. 131 00:07:25,600 --> 00:07:29,490 Tak samozrejme, len pridať Kľúčom k listu nebude robiť. 132 00:07:29,490 --> 00:07:32,780 Musíme vymyslieť vzorec zabaliť okolo abecedy, ako naša 133 00:07:32,780 --> 00:07:34,570 Napríklad na začiatku urobil. 134 00:07:34,570 --> 00:07:38,520 >> Vzorec pre cisárovo posun je nasledujúci. 135 00:07:38,520 --> 00:07:42,750 c sa rovná p plus K modulo 26. 136 00:07:42,750 --> 00:07:46,040 Pamätajte si, že modulo je užitočný operácie, ktorá nám dáva zvyšok 137 00:07:46,040 --> 00:07:49,880 delenie jedno číslo od druhého. 138 00:07:49,880 --> 00:07:54,870 Poďme platí tento vzorec na rovinatý Text list s kľúčom 2. 139 00:07:54,870 --> 00:08:01,810 ASCII hodnota y je 89, nám dáva 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 ktorý sa rovná 13 - 141 00:08:03,690 --> 00:08:08,740 rozhodne nie je hodnota ASCII z, ktorý je 67 rokov. 142 00:08:08,740 --> 00:08:12,810 >> Humor ma teraz a upustiť od ASCII hodnôt do indexu abecednom 143 00:08:12,810 --> 00:08:18,690 kde je nulová, a Z je 25, čo znamená, že Y je 24. 144 00:08:18,690 --> 00:08:25,830 24 a 2, modulo 6, nám dáva 26, modulo 26, 0, ktorý je 145 00:08:25,830 --> 00:08:28,170 abecedný zoznam. 146 00:08:28,170 --> 00:08:32,980 Takže to vyzerá, že vzorec platí pre abecedný register listu a 147 00:08:32,980 --> 00:08:34,960 nie je jeho ASCII hodnota. 148 00:08:34,960 --> 00:08:37,630 >> Ale začnete s ASCII hodnoty. 149 00:08:37,630 --> 00:08:41,650 A vytlačiť znak šifrového textu budete musieť svoju hodnotu ASCII rovnako. 150 00:08:41,650 --> 00:08:46,400 Je to len na vás, potom zistiť, ako prepínať tam a späť. 151 00:08:46,400 --> 00:08:49,850 >> Akonáhle sa prísť na správny recept jeden znak, všetko, čo potrebujete urobiť, 152 00:08:49,850 --> 00:08:53,520 je použiť rovnaký vzorec pre každý list v prostom texte - 153 00:08:53,520 --> 00:08:57,720 iba v prípade, že list je abecedný, Samozrejme. 154 00:08:57,720 --> 00:09:02,360 A pamätajte, že musíte zachovať v prípade, horný a dolný, to je miesto, kde 155 00:09:02,360 --> 00:09:06,890 isupper a islower funkcie už bolo spomenuté skôr príde vhod. 156 00:09:06,890 --> 00:09:08,830 Môžete mať dva vzorce - 157 00:09:08,830 --> 00:09:11,680 jeden pre veľké písmená a jeden pre malé písmená. 158 00:09:11,680 --> 00:09:18,420 Takže isupper islower vám pomôže určiť, ktoré vzorec použiť. 159 00:09:18,420 --> 00:09:22,460 >> Ako použiť svoje vzorce každý znak v reťazci? 160 00:09:22,460 --> 00:09:25,910 No, reťazec je len pole znakov. 161 00:09:25,910 --> 00:09:31,150 Takže môžete pristupovať každý znak zoskupovanie cez každý znak v 162 00:09:31,150 --> 00:09:33,450 reťazec v cykle for. 163 00:09:33,450 --> 00:09:37,550 Čo sa týka stavu vášho slučky for, Funkcia strlen, pre reťazec 164 00:09:37,550 --> 00:09:39,280 dĺžka, príde vhod. 165 00:09:39,280 --> 00:09:44,020 Berie v reťazci ako vstup vracia dĺžku tohto reťazca. 166 00:09:44,020 --> 00:09:49,250 Nezabudnite uviesť správnu knižnicu použiť dĺžku reťazca funkcie. 167 00:09:49,250 --> 00:09:51,790 >> A tu máte šifrový text. 168 00:09:51,790 --> 00:09:53,260 Moje meno je Zamyla. 169 00:09:53,260 --> 00:09:54,510 A [HOVORIACI CODE]. 170 00:09:54,510 --> 00:10:02,944