1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA Chan: Čestitke Na završetku 3 00:00:11,270 --> 00:00:13,200 Prvi par C programe. 4 00:00:13,200 --> 00:00:16,379 Znam da je svoj prvi nalet u C sintaksa može biti zastrašujuće. 5 00:00:16,379 --> 00:00:20,060 Ali, uvjeravam vas, na kraju Naravno, vi ćete biti u mogućnosti pogledati 6 00:00:20,060 --> 00:00:23,870 Prvi par zadataka i ih dovršiti u nekoliko minuta. 7 00:00:23,870 --> 00:00:27,830 >> Sada kada ste uzimajući više upoznati sa sintaksom, idemo caru. 8 00:00:27,830 --> 00:00:31,720 U Cezara, korisnik će dostaviti cijeli ključ kao naredbenog retka 9 00:00:31,720 --> 00:00:35,300 argument, a zatim ući obični SMS poruka na upit. 10 00:00:35,300 --> 00:00:38,050 Program će kodirati tekst i ispis 11 00:00:38,050 --> 00:00:40,020 njihov šifrirana poruka. 12 00:00:40,020 --> 00:00:42,980 >> Enciphering za Cezara je vrlo jednostavna. 13 00:00:42,980 --> 00:00:46,455 Shift svako slovo, u njihovom običan tekst, po ključu. 14 00:00:46,455 --> 00:00:49,220 Kao rezultat toga, to je također prilično nesigurno. 15 00:00:49,220 --> 00:00:53,850 Ipak, implementacija Caesar će uvesti da ASCIIMath i niza podataka 16 00:00:53,850 --> 00:00:54,460 strukture. 17 00:00:54,460 --> 00:00:57,510 Mi ćemo doći do složenije šifre kasnije. 18 00:00:57,510 --> 00:01:01,680 Uz Cezar ključ od dva slova, u običan tekst će biti zastupljena 19 00:01:01,680 --> 00:01:07,580 Pismo C u šifrirani tekst jer C je nakon dva slova A. B će biti 20 00:01:07,580 --> 00:01:12,450 zastupa D i C E. prema kraj je abecede, W je 21 00:01:12,450 --> 00:01:18,550 zastupa Y, i X su Z. ali y nema dva slova poslije njega, tako da 22 00:01:18,550 --> 00:01:21,070 su simboli omata abecede. 23 00:01:21,070 --> 00:01:27,190 Y u tekstualnom tako je zastupao U šifrirani tekst i Z s B. to može 24 00:01:27,190 --> 00:01:32,080 pomoći da vidite Caesar Cypher kao kontinuirani abeceda kotača. 25 00:01:32,080 --> 00:01:35,760 >> Kako kodirati svoj tekst, korisnički ući će dva argumenta 26 00:01:35,760 --> 00:01:37,090 u zapovjednoj liniji - 27 00:01:37,090 --> 00:01:40,010 . / Caesar slijedi ključ. 28 00:01:40,010 --> 00:01:44,710 Kao i uvijek, ne možemo vjerovati korisnika potpuno ući ulaz koji bi 29 00:01:44,710 --> 00:01:45,800 Osjećaj za naš program. 30 00:01:45,800 --> 00:01:50,670 Dakle, morat ćemo potvrditi svoje naredbenog retka ulaz. 31 00:01:50,670 --> 00:01:57,285 >> Umjesto korištenja int main prazninu, mi smo pomoću int, int argc glavni string, argv. 32 00:01:57,285 --> 00:02:01,730 Cjelobrojna varijabla argc zastupa broj argumenata prošao u 33 00:02:01,730 --> 00:02:02,880 naredbenog retka. 34 00:02:02,880 --> 00:02:09,070 I argv je niz, ili mislite o njemu kao Popis od argumenata prošlo u. 35 00:02:09,070 --> 00:02:12,000 >> Tako je za Cezara, kako ćemo provjeriti korisnikov input? 36 00:02:12,000 --> 00:02:15,870 Pa, što bi trebao biti samo ulaska Dva argumenata naredbenog retka - 37 00:02:15,870 --> 00:02:18,150 . / Cezar i ključ. 38 00:02:18,150 --> 00:02:22,340 Dakle, ako argc nije 2, to znači da oni ni zaboravio ključ i samo 39 00:02:22,340 --> 00:02:27,230 ušao. / Caesar, ili oni ušao više ključeva. 40 00:02:27,230 --> 00:02:29,770 >> Ako je to slučaj, onda ćete želite ispisati upute 41 00:02:29,770 --> 00:02:30,910 i zatvoriti program. 42 00:02:30,910 --> 00:02:34,320 Oni će morati pokušati ponovno iz naredbenog retka. 43 00:02:34,320 --> 00:02:37,430 No, čak i ako je argc 2, vi ćete trebate provjeriti jesu li 44 00:02:37,430 --> 00:02:39,100 dati valjani ključ. 45 00:02:39,100 --> 00:02:40,730 Za Cezara, morate cijeli broj. 46 00:02:40,730 --> 00:02:43,260 No, argv je niz žice. 47 00:02:43,260 --> 00:02:46,490 Kako ste pristupili taj ključ? 48 00:02:46,490 --> 00:02:47,850 >> Brzi pogled na polja - 49 00:02:47,850 --> 00:02:51,410 strukture podataka koje imaju više vrijednosti istog tipa podataka. 50 00:02:51,410 --> 00:02:55,350 Prijave su nula-indeksirane, što znači da Prvi element je indeks nula 51 00:02:55,350 --> 00:03:00,260 a posljednji element, na indeks veličine minus 1, gdje je veličina je broj 52 00:03:00,260 --> 00:03:02,850 Elementi u polju. 53 00:03:02,850 --> 00:03:07,380 >> Ako sam proglasio novi spremnik niz polje duljine 3 je vizualno 54 00:03:07,380 --> 00:03:08,570 izgleda ovako. 55 00:03:08,570 --> 00:03:11,520 Tri kontejnera za gudače , Rame uz rame. 56 00:03:11,520 --> 00:03:15,445 Za pristup bilo koji element, upišete ime od polja, a zatim pokazuju 57 00:03:15,445 --> 00:03:18,080 Indeks je u uglate zagrade. 58 00:03:18,080 --> 00:03:21,610 Evo, ja sam dodjeljivanja vrijednosti svakog Element, baš kao što bih učiniti s bilo 59 00:03:21,610 --> 00:03:24,310 drugi string varijablu. 60 00:03:24,310 --> 00:03:29,020 >> Dakle za pristup naše argumente naredbenog retka, sve što morate učiniti je pristupiti 61 00:03:29,020 --> 00:03:31,690 pravo element argv niz. 62 00:03:31,690 --> 00:03:37,360 Ako korisnik unio. / Blastoff Team Raketa u terminal, argv 0 bi 63 00:03:37,360 --> 00:03:38,950 biti. / Blastoff. 64 00:03:38,950 --> 00:03:45,010 argv bi se tim, i ARG2 će biti raketna. 65 00:03:45,010 --> 00:03:47,670 >> Sada možemo pristupiti našem ključ, još uvijek je potrebno napraviti 66 00:03:47,670 --> 00:03:49,040 sigurni da je točna. 67 00:03:49,040 --> 00:03:51,060 Moramo ga pretvoriti u cijeli broj. 68 00:03:51,060 --> 00:03:54,680 No, ne možemo samo baci kao smo učinili ranije. 69 00:03:54,680 --> 00:03:58,800 Srećom, na Y funkcija brine to za nas, pa čak i vraća 0. 70 00:03:58,800 --> 00:04:02,110 Ako niz ne može se pretvoriti na cijeli broj. 71 00:04:02,110 --> 00:04:04,450 To je do vas, ipak, reći Korisnik zašto nećeš 72 00:04:04,450 --> 00:04:06,220 neka Program nastavite. 73 00:04:06,220 --> 00:04:10,710 Spremite rezultat na Y u cijeli, i tamo imate svoj ključ. 74 00:04:10,710 --> 00:04:12,070 Sljedeći dio je jednostavan. 75 00:04:12,070 --> 00:04:15,940 Traži od korisnika za njihov običan tekst, koji će biti od podataka tipa string. 76 00:04:15,940 --> 00:04:18,339 Srećom za nas, svi korisnički unesene žice vrijede. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Sada imamo sve potrebne ulazne od korisnika, vrijeme je za nas 79 00:04:24,760 --> 00:04:26,520 šifrirati svoju poruku. 80 00:04:26,520 --> 00:04:29,200 Koncept je jednostavan Cezara dovoljno da se razumijemo. 81 00:04:29,200 --> 00:04:33,750 No, kako se vaše računalo zna što slova dolaze nakon što je jedan drugi? 82 00:04:33,750 --> 00:04:36,100 >> Evo gdje ASCII tablica dolazi u. 83 00:04:36,100 --> 00:04:39,420 Svaki lik ima cijeli broj Broj povezan s njom. 84 00:04:39,420 --> 00:04:41,380 Glavni je 65. 85 00:04:41,380 --> 00:04:43,310 Capital B 66. 86 00:04:43,310 --> 00:04:45,260 Mala slova je 97. 87 00:04:45,260 --> 00:04:47,590 Mala slova b je 98. 88 00:04:47,590 --> 00:04:50,770 Ali likovi nisu ograničeni na samo abecede brojeva. 89 00:04:50,770 --> 00:04:56,020 Na primjer, @ simbol ASCII broj 64. 90 00:04:56,020 --> 00:04:59,690 >> Prije nego što se bavi cijeli niz, neka je pretvarati se samo moramo prebaciti 91 00:04:59,690 --> 00:05:01,220 jedan znak. 92 00:05:01,220 --> 00:05:04,640 Pa, mi samo želimo pomaknuti stvarna Slova u običan tekst, a ne 93 00:05:04,640 --> 00:05:06,020 slova i brojeva. 94 00:05:06,020 --> 00:05:09,100 Dakle, prva stvar koju ćemo želite provjerili je li lik je u 95 00:05:09,100 --> 00:05:10,430 abeceda. 96 00:05:10,430 --> 00:05:14,460 >> Funkcija isalpha to za nas i vraća Boolean - 97 00:05:14,460 --> 00:05:18,570 vrijedi ako likova je pismo, false ako nije drugačije. 98 00:05:18,570 --> 00:05:22,270 Dvije druge korisne funkcije isupper i islower, uz 99 00:05:22,270 --> 00:05:23,860 samorazumljivo imena. 100 00:05:23,860 --> 00:05:27,370 Vraćaju li istina daje karakter je veliko ili malo slovo, 101 00:05:27,370 --> 00:05:28,740 respektivno. 102 00:05:28,740 --> 00:05:33,770 Budući da su Booleani, oni su korisno koristiti kao uvjete. 103 00:05:33,770 --> 00:05:38,310 >> Ako isalpha vraća istina, morat ćete pomak taj lik je ključ. 104 00:05:38,310 --> 00:05:43,750 Tako ćemo otvoriti ASCIIMath i učiniti neke ASCII matematiku. 105 00:05:43,750 --> 00:05:48,700 Korištenje je vrlo sličan korištenja za Cezara i uzima u ključ u 106 00:05:48,700 --> 00:05:50,870 naredbenog retka. 107 00:05:50,870 --> 00:05:59,590 >> Ako sam pokrenuti ASCIIMath 5, čini se dodati 5. da, što mi je slovo F, a 108 00:05:59,590 --> 00:06:01,260 prikaz ASCII vrijednost. 109 00:06:01,260 --> 00:06:04,090 Tako ćemo pogledati na programu. 110 00:06:04,090 --> 00:06:11,820 >> Možda se pitate, upravo ovdje, zašto pismo je cijeli broj, kada je 111 00:06:11,820 --> 00:06:14,330 jasno, dobro, pismo. 112 00:06:14,330 --> 00:06:17,690 Ispada da su likovi i cijeli brojevi su međusobno. 113 00:06:17,690 --> 00:06:21,730 Stavljanjem pismo u jednom navodnici, cijeli broj možete pohraniti 114 00:06:21,730 --> 00:06:25,390 ASCII vrijednost kapitala A. Budite oprezni, iako. 115 00:06:25,390 --> 00:06:27,150 Morate pojedinačne odjeću. 116 00:06:27,150 --> 00:06:31,260 Bez navodnika, Prevodilac će tražiti varijable 117 00:06:31,260 --> 00:06:35,510 ime, a ne znakova. 118 00:06:35,510 --> 00:06:42,140 >> Zatim dodam slovo i ključ, skladištenje suma u int varijable rezultat. 119 00:06:42,140 --> 00:06:47,740 Iako rezultat je tip podataka cijeli, moj printf priopćenju koristi 120 00:06:47,740 --> 00:06:50,370 % C rezervirano mjesto za znakova. 121 00:06:50,370 --> 00:06:54,530 Dakle, program ispisuje karakter povezan s cijeli broj rezultata. 122 00:06:54,530 --> 00:07:00,400 A budući da smo tiskao cijeli oblik kao i pomoću% d, vidimo 123 00:07:00,400 --> 00:07:02,110 Broj i. 124 00:07:02,110 --> 00:07:04,450 Tako sada možete vidjeti da smo liječenje znakova i 125 00:07:04,450 --> 00:07:06,980 cijeli brojevi, i obrnuto. 126 00:07:06,980 --> 00:07:12,205 >> Idemo testa iz ASCIIMath nekoliko više puta s 25 kao ključ. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Mi smo dobili pismo z. 129 00:07:17,090 --> 00:07:19,750 Sada pokušavamo 26. 130 00:07:19,750 --> 00:07:25,600 Želimo dobiti pismo je, ali umjesto toga smo dobili lijevi nosač. 131 00:07:25,600 --> 00:07:29,490 Dakle, očito, samo dodavanje Ključ pismu neće učiniti. 132 00:07:29,490 --> 00:07:32,780 Moramo shvatiti formulu za omotajte oko abecede, kao što je naš 133 00:07:32,780 --> 00:07:34,570 Primjer u početku činio. 134 00:07:34,570 --> 00:07:38,520 >> Formula za Carev Pomak na sljedeći način. 135 00:07:38,520 --> 00:07:42,750 c iznosi p plus k modulu 26. 136 00:07:42,750 --> 00:07:46,040 Zapamtite da modulu je koristan operacija koja nam daje ostatak 137 00:07:46,040 --> 00:07:49,880 dijeljenja jedan broj od drugog. 138 00:07:49,880 --> 00:07:54,870 Ajmo primijeniti ovu formulu za obični Tekst pismo s ključem od dva. 139 00:07:54,870 --> 00:08:01,810 ASCII vrijednost y je 89, koji daje nam 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 što je ekvivalentno 13 - 141 00:08:03,690 --> 00:08:08,740 definitivno nije ASCII vrijednost mjesta, što je 67. 142 00:08:08,740 --> 00:08:12,810 >> Humor mi sada i odmaknuti od ASCII vrijednosti u abecednom indeksu 143 00:08:12,810 --> 00:08:18,690 gdje je nula i Z je 25. što znači da je Y 24. 144 00:08:18,690 --> 00:08:25,830 24 plus 2, modulu 6, daje nam 26, modulo 26, 0, što je 145 00:08:25,830 --> 00:08:28,170 abecedni indeks. 146 00:08:28,170 --> 00:08:32,980 Dakle, ova formula čini se odnose na Indeks abecedni pisma i 147 00:08:32,980 --> 00:08:34,960 Ne njegov ASCII vrijednost. 148 00:08:34,960 --> 00:08:37,630 >> No, što počnete s ASCII vrijednosti. 149 00:08:37,630 --> 00:08:41,650 I za ispis šifrirana karakter, morat ćete svoju ASCII vrijednost kao dobro. 150 00:08:41,650 --> 00:08:46,400 To je do vas, dakle, shvatiti kako prebaciti natrag i naprijed. 151 00:08:46,400 --> 00:08:49,850 >> Nakon što shvatiti pravu formulu za jedan znak, sve što trebate učiniti 152 00:08:49,850 --> 00:08:53,520 se primijeniti istu formulu za svaku pismo u običan tekst - 153 00:08:53,520 --> 00:08:57,720 samo ako to pismo je po abecedi, naravno. 154 00:08:57,720 --> 00:09:02,360 I ne zaboravite da vam je potrebno za očuvanje slučaj, gornji ili donji, tamo 155 00:09:02,360 --> 00:09:06,890 isUpper i isLower funkcije spomenuto će doći u ruci. 156 00:09:06,890 --> 00:09:08,830 Možda ima dvije formule - 157 00:09:08,830 --> 00:09:11,680 jedan za velikim slovima i jedan za malim slovima. 158 00:09:11,680 --> 00:09:18,420 Dakle isUpper isLower će vam pomoći odrediti koje formula primjenjivati. 159 00:09:18,420 --> 00:09:22,460 >> Kako se prijaviti svoju formulu za svaku jedan znak u nizu? 160 00:09:22,460 --> 00:09:25,910 Pa, string je samo niz znakova. 161 00:09:25,910 --> 00:09:31,150 Dakle, možete pristupiti svaki lik strane grupiranje tijekom svakog lika u 162 00:09:31,150 --> 00:09:33,450 niz u for petlji. 163 00:09:33,450 --> 00:09:37,550 Što se tiče stanja vašeg računa za petlje, funkciju strlen, za string 164 00:09:37,550 --> 00:09:39,280 Duljina, će doći u ruci. 165 00:09:39,280 --> 00:09:44,020 Potrebno je u nizu kao ulazni i vraća duljinu tog niza. 166 00:09:44,020 --> 00:09:49,250 Pobrinite se da su pravi knjižnicu Za korištenje funkcije duljine. 167 00:09:49,250 --> 00:09:51,790 >> I tamo imate svoj šifrirani tekst. 168 00:09:51,790 --> 00:09:53,260 Moje ime je Zamyla. 169 00:09:53,260 --> 00:09:54,510 I [Govoreći CODE]. 170 00:09:54,510 --> 00:10:02,944