1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA Chan: Felicitări pe de finisare dvs. 3 00:00:11,270 --> 00:00:13,200 Primul cuplu de programe C. 4 00:00:13,200 --> 00:00:16,379 Știu că prima incursiune în Sintaxa C poate fi descurajantă. 5 00:00:16,379 --> 00:00:20,060 Dar eu vă asigur, la sfârșitul Desigur, veți avea posibilitatea să se uite la 6 00:00:20,060 --> 00:00:23,870 Primul cuplu de misiuni și le finaliza în câteva minute. 7 00:00:23,870 --> 00:00:27,830 >> Acum, că sunteți obtinerea mult mai familiar cu sintaxa, să trecem la Cezar. 8 00:00:27,830 --> 00:00:31,720 În Cezar, utilizatorul va prezenta o Cheia întreg ca o linie de comandă 9 00:00:31,720 --> 00:00:35,300 argument, apoi introduceți un simplu mesaj text la prompt. 10 00:00:35,300 --> 00:00:38,050 Programul va codifica apoi textul și de imprimare 11 00:00:38,050 --> 00:00:40,020 lor mesaj cifrat. 12 00:00:40,020 --> 00:00:42,980 >> Cifrare pentru Cezar este destul de simplu. 13 00:00:42,980 --> 00:00:46,455 Shift fiecare literă, în lor text simplu, cu cheia. 14 00:00:46,455 --> 00:00:49,220 Ca urmare, este de asemenea destul de nesigur. 15 00:00:49,220 --> 00:00:53,850 Dar de punere în aplicare Cezar va introduce ne la datele ASCIIMath și matrice 16 00:00:53,850 --> 00:00:54,460 structuri. 17 00:00:54,460 --> 00:00:57,510 Vom ajunge la mai complexe cifruri mai târziu. 18 00:00:57,510 --> 00:01:01,680 Cu o cheie Cezar de 2, litera A din text simplu va fi reprezentată de 19 00:01:01,680 --> 00:01:07,580 litera C în cifrat, deoarece C este de două scrisori de la A. B ar fi 20 00:01:07,580 --> 00:01:12,450 reprezentată de D și C, de E. Spre sfârșitul alfabetului, W este 21 00:01:12,450 --> 00:01:18,550 reprezentată de Y, X și Y de Z. Dar nu are două litere după aceasta, așa 22 00:01:18,550 --> 00:01:21,070 de cifruri infasoara in jurul alfabetul. 23 00:01:21,070 --> 00:01:27,190 Y în text simplu este astfel reprezentată de A în cifrat, și Z de B. Se poate 24 00:01:27,190 --> 00:01:32,080 ajuta pentru a vedea Cezar Cypher ca o roată alfabet continuu. 25 00:01:32,080 --> 00:01:35,760 >> Pentru a codifica textul lor, utilizatorul va introduce două argumente 26 00:01:35,760 --> 00:01:37,090 în linia de comandă - 27 00:01:37,090 --> 00:01:40,010 . / Cezar, urmat de o cheie. 28 00:01:40,010 --> 00:01:44,710 Ca întotdeauna, nu putem avea încredere în utilizatorului complet pentru a intra intrare, care face 29 00:01:44,710 --> 00:01:45,800 sens pentru programul nostru. 30 00:01:45,800 --> 00:01:50,670 Așa că va trebui să valideze lor linie de intrare de comandă. 31 00:01:50,670 --> 00:01:57,285 >> În loc de a folosi main Int, suntem folosind int main, argc Int, string argv. 32 00:01:57,285 --> 00:02:01,730 Întreg argc variabilă reprezintă numărul de argumente trecute în 33 00:02:01,730 --> 00:02:02,880 linia de comandă. 34 00:02:02,880 --> 00:02:09,070 Și argv este o matrice, sau cred ca e o listă, a argumentelor a trecut inch 35 00:02:09,070 --> 00:02:12,000 >> Deci, pentru Cezar, cum putem valida de intrare a utilizatorului? 36 00:02:12,000 --> 00:02:15,870 Ei bine, acestea ar trebui să fie intra numai două argumente în linia de comandă - 37 00:02:15,870 --> 00:02:18,150 . / Cezar și o cheie. 38 00:02:18,150 --> 00:02:22,340 Deci, dacă argc nu este 2, ceea ce înseamnă că ei fie uitat o cheie și doar 39 00:02:22,340 --> 00:02:27,230 a intrat. / Cezar, sau se a intrat mai multe chei. 40 00:02:27,230 --> 00:02:29,770 >> Dacă acesta este cazul, atunci veți doriți să imprimați instrucțiuni 41 00:02:29,770 --> 00:02:30,910 și închide programul. 42 00:02:30,910 --> 00:02:34,320 Ei au nevoie pentru a încerca din nou de la linia de comandă. 43 00:02:34,320 --> 00:02:37,430 Dar, chiar dacă argc este 2, veți nevoie pentru a verifica dacă acestea 44 00:02:37,430 --> 00:02:39,100 vă dau o cheie valabilă. 45 00:02:39,100 --> 00:02:40,730 Pentru Cezar, ai nevoie de un întreg. 46 00:02:40,730 --> 00:02:43,260 Dar argv este o matrice de siruri de caractere. 47 00:02:43,260 --> 00:02:46,490 Cum accesezi că cheia? 48 00:02:46,490 --> 00:02:47,850 >> O scurtă privire la tablouri - 49 00:02:47,850 --> 00:02:51,410 structuri de date care dețin mai multe Valorile de același tip de date. 50 00:02:51,410 --> 00:02:55,350 Intrările sunt zero indexate, ceea ce înseamnă că Primul element este zero, indicele 51 00:02:55,350 --> 00:03:00,260 iar ultimul element este la dimensiunea indexului minus 1, în cazul în care dimensiunea este numărul de 52 00:03:00,260 --> 00:03:02,850 elemente din matrice. 53 00:03:02,850 --> 00:03:07,380 >> În cazul în care am declarat-o căsuță poștală nouă gamă de coarde de lungime 3, vizual, acesta 54 00:03:07,380 --> 00:03:08,570 arata ca aceasta. 55 00:03:08,570 --> 00:03:11,520 Trei containere pentru siruri de caractere , Cot la cot. 56 00:03:11,520 --> 00:03:15,445 Pentru a accesa orice element, tastați numele de matrice și apoi indică 57 00:03:15,445 --> 00:03:18,080 indicele în paranteze pătrate. 58 00:03:18,080 --> 00:03:21,610 Aici, eu atribuirea o valoare la fiecare Element, la fel cum mi-ar face cu orice 59 00:03:21,610 --> 00:03:24,310 altă variabilă șir. 60 00:03:24,310 --> 00:03:29,020 >> Deci, pentru a accesa argumentele de linie de comandă, tot ce trebuie să faceți este să accesați 61 00:03:29,020 --> 00:03:31,690 elementul dreptul de matrice argv. 62 00:03:31,690 --> 00:03:37,360 În cazul în care utilizatorul a introdus. / Explozie Echipa Rachetă în terminal, argv 0 ar fi 63 00:03:37,360 --> 00:03:38,950 fie. / blastoff. 64 00:03:38,950 --> 00:03:45,010 argv ar fi echipa, și arg2 ar fi rachete. 65 00:03:45,010 --> 00:03:47,670 >> Acum, că ne putem accesa cheia noastră, avem încă nevoie pentru a face 66 00:03:47,670 --> 00:03:49,040 sigur că e corect. 67 00:03:49,040 --> 00:03:51,060 Trebuie să-l transforme într-un întreg. 68 00:03:51,060 --> 00:03:54,680 Dar nu putem pur și simplu arunca ca am făcut anterior. 69 00:03:54,680 --> 00:03:58,800 Din fericire, de la A la funcția Y are grijă de acest lucru pentru noi și chiar se întoarce 0 70 00:03:58,800 --> 00:04:02,110 dacă șirul nu poate fi convertit într-un număr întreg. 71 00:04:02,110 --> 00:04:04,450 Este până la tine, totuși, să-i spuneți utilizatorul de ce nu va 72 00:04:04,450 --> 00:04:06,220 să permiteți ca programul continua. 73 00:04:06,220 --> 00:04:10,710 Stoca rezultatul A la Y într-un întreg, și nu aveți cheia. 74 00:04:10,710 --> 00:04:12,070 Următoarea parte este simplu. 75 00:04:12,070 --> 00:04:15,940 Solicita utilizatorului pentru textul lor simplu, care va fi de tip șir de date. 76 00:04:15,940 --> 00:04:18,339 Din fericire pentru noi, toți utilizatorii introduse siruri de caractere sunt valide. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Acum, că avem toate datele necesare de utilizator, e timpul pentru noi să 79 00:04:24,760 --> 00:04:26,520 codifica mesajul lor. 80 00:04:26,520 --> 00:04:29,200 Conceptul de Cezar este simplu suficientă pentru a înțelege. 81 00:04:29,200 --> 00:04:33,750 Dar cum știe computer care scrisori de vin unul după altul? 82 00:04:33,750 --> 00:04:36,100 >> Iată unde tabelul ASCII vine inch 83 00:04:36,100 --> 00:04:39,420 Fiecare personaj are un întreg numărul asociat cu ea. 84 00:04:39,420 --> 00:04:41,380 Capital A este de 65. 85 00:04:41,380 --> 00:04:43,310 Capital B este 66. 86 00:04:43,310 --> 00:04:45,260 Minuscule un este 97. 87 00:04:45,260 --> 00:04:47,590 Mici b este 98. 88 00:04:47,590 --> 00:04:50,770 Dar personajele nu sunt limitate la doar numere alfabetice. 89 00:04:50,770 --> 00:04:56,020 De exemplu, simbolul @ este numărul ASCII 64. 90 00:04:56,020 --> 00:04:59,690 >> Înainte de a face cu întregul șir, Sa ne prefacem ca doar trebuie să schimbe 91 00:04:59,690 --> 00:05:01,220 un caracter. 92 00:05:01,220 --> 00:05:04,640 Ei bine, noi vrem doar să schimbe actuala literele din text simplu, nu 93 00:05:04,640 --> 00:05:06,020 caractere sau numere. 94 00:05:06,020 --> 00:05:09,100 Deci, primul lucru pe care vom dori să verificați dacă personajul este în 95 00:05:09,100 --> 00:05:10,430 alfabetul. 96 00:05:10,430 --> 00:05:14,460 >> Funcția isalpha face acest lucru pentru ne-a și returnează o booleană - 97 00:05:14,460 --> 00:05:18,570 valabil în cazul în care personajele este o scrisoare, false în caz contrar. 98 00:05:18,570 --> 00:05:22,270 Două alte funcții utile sunt isupper și islower, cu 99 00:05:22,270 --> 00:05:23,860 numele de auto-explicative. 100 00:05:23,860 --> 00:05:27,370 Ei se întorc true dacă caracterul dat Este mari sau mici, 101 00:05:27,370 --> 00:05:28,740 respectiv. 102 00:05:28,740 --> 00:05:33,770 Din moment ce acestea sunt Booleans, sunt util să se folosească ca și condiții. 103 00:05:33,770 --> 00:05:38,310 >> Dacă isalpha întoarce adevărat, veți avea nevoie de pentru a schimba caracterul de cheie. 104 00:05:38,310 --> 00:05:43,750 Deci, haideți să deschidem la ASCIIMath și de a face unele matematica ASCII. 105 00:05:43,750 --> 00:05:48,700 Utilizarea este foarte similară cu utilizarea pentru Cezar și ia într-o cheie de la 106 00:05:48,700 --> 00:05:50,870 linie de comandă. 107 00:05:50,870 --> 00:05:59,590 >> Dacă aș alerga ASCIIMath 5, se pare pentru a adăuga 5 la o, oferindu-mi litera F, și 108 00:05:59,590 --> 00:06:01,260 afișează valoarea ASCII. 109 00:06:01,260 --> 00:06:04,090 Deci, haideți să aruncăm o privire la program. 110 00:06:04,090 --> 00:06:11,820 >> S-ar putea întreba, chiar aici, de ce scrisoare este un întreg, atunci când este 111 00:06:11,820 --> 00:06:14,330 în mod clar, bine, o scrisoare. 112 00:06:14,330 --> 00:06:17,690 Se pare că personajele și întregi sunt interschimbabile. 113 00:06:17,690 --> 00:06:21,730 Prin punerea litera A din singur ghilimele, întreg poate stoca 114 00:06:21,730 --> 00:06:25,390 valoarea ASCII a capitalului A. Fii atent, totuși. 115 00:06:25,390 --> 00:06:27,150 Aveți nevoie de haine unice. 116 00:06:27,150 --> 00:06:31,260 Fără semne apostrof, compilator ar uita pentru o variabilă 117 00:06:31,260 --> 00:06:35,510 numit A, și nu caracterul. 118 00:06:35,510 --> 00:06:42,140 >> Apoi am adăuga scrisoare și o cheie, stocarea suma în rezultatul variabilele Int. 119 00:06:42,140 --> 00:06:47,740 Chiar dacă rezultatul este de tipul de date întreg, declarația mea printf folosește 120 00:06:47,740 --> 00:06:50,370 % C substituent pentru caractere. 121 00:06:50,370 --> 00:06:54,530 Astfel încât programul imprimă caracterul asociată rezultatului număr întreg. 122 00:06:54,530 --> 00:07:00,400 Și din moment ce am tipărit întreg Formularul precum și utilizarea% d, vom vedea 123 00:07:00,400 --> 00:07:02,110 numărul de asemenea. 124 00:07:02,110 --> 00:07:04,450 Deci, acum puteți vedea că am trata caractere și 125 00:07:04,450 --> 00:07:06,980 numere întregi, și vice-versa. 126 00:07:06,980 --> 00:07:12,205 >> Să testul de ASCIIMath câteva mai multe ori, utilizând 25 ca o cheie. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Am primit scrisoarea z. 129 00:07:17,090 --> 00:07:19,750 Acum vom încerca 26. 130 00:07:19,750 --> 00:07:25,600 Vrem să ajungem litera a, dar în schimb avem un suport stânga. 131 00:07:25,600 --> 00:07:29,490 Deci, evident, doar adăugând cheie la scrisoarea nu va face. 132 00:07:29,490 --> 00:07:32,780 Trebuie să găsim o formulă să-și încheie în jurul alfabetul, ca nostru 133 00:07:32,780 --> 00:07:34,570 exemplu, la început a făcut. 134 00:07:34,570 --> 00:07:38,520 >> O formulă pentru a Caesar schimbare este după cum urmează. 135 00:07:38,520 --> 00:07:42,750 c este egal cu p, plus k modulo 26. 136 00:07:42,750 --> 00:07:46,040 Amintiți-vă că modulo este un util operațiune care ne dă restul 137 00:07:46,040 --> 00:07:49,880 de împărțirea numărului unul de celălalt. 138 00:07:49,880 --> 00:07:54,870 Să aplicăm această formulă la campie scrisoare text cu o cheie de 2. 139 00:07:54,870 --> 00:08:01,810 Valoarea ASCII a lui y este 89, care ne dă 91 modulo 26, 140 00:08:01,810 --> 00:08:03,690 care este egal cu 13 - 141 00:08:03,690 --> 00:08:08,740 cu siguranta nu valoarea ASCII de un, care este 67. 142 00:08:08,740 --> 00:08:12,810 >> Mi pe plac acum și pentru a muta departe de Valorile ASCII de un indice alfabetic 143 00:08:12,810 --> 00:08:18,690 unde A este zero, iar Z este de 25, ceea ce înseamnă că Y este 24. 144 00:08:18,690 --> 00:08:25,830 24 plus 2, modulo 6, ne dă 26, modulo 26, 0, care este 145 00:08:25,830 --> 00:08:28,170 index alfabetic de o. 146 00:08:28,170 --> 00:08:32,980 Deci această formulă pare să se aplice index alfabetic al litera și 147 00:08:32,980 --> 00:08:34,960 Nu sa valoare ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Dar începe cu valorile ASCII. 149 00:08:37,630 --> 00:08:41,650 Și pentru a imprima caracterul cifrat, veți avea nevoie de valoarea ASCII, de asemenea. 150 00:08:41,650 --> 00:08:46,400 Este până la tine, apoi, să dau afară cum pentru a comuta înainte și înapoi. 151 00:08:46,400 --> 00:08:49,850 >> Odată ce îți dai seama formula de dreapta pentru un caracter, tot ce trebuie sa faci 152 00:08:49,850 --> 00:08:53,520 Se aplică aceeași formulă pentru fiecare scrisoare în text simplu - 153 00:08:53,520 --> 00:08:57,720 numai în cazul în care scrisoarea este alfabetică, Desigur. 154 00:08:57,720 --> 00:09:02,360 Și amintiți-vă că aveți nevoie pentru a păstra caz, superioară sau inferioară, care este în cazul în care 155 00:09:02,360 --> 00:09:06,890 Funcțiile islower isupper și menționat mai devreme va veni la îndemână. 156 00:09:06,890 --> 00:09:08,830 S-ar putea avea două formule - 157 00:09:08,830 --> 00:09:11,680 una pentru litere mari și unul pentru litere mici. 158 00:09:11,680 --> 00:09:18,420 Deci, isupper un islower te va ajuta determina care formula de aplicat. 159 00:09:18,420 --> 00:09:22,460 >> Cum se aplică formula pentru fiecare singur caracter într-un șir? 160 00:09:22,460 --> 00:09:25,910 Ei bine, un șir este doar o matrice de caractere. 161 00:09:25,910 --> 00:09:31,150 Astfel încât să puteți accesa fiecare caracter de gruparea peste fiecare caracter în 162 00:09:31,150 --> 00:09:33,450 șir într-o buclă. 163 00:09:33,450 --> 00:09:37,550 În ceea ce privește starea de dumneavoastră pentru buclă, funcția strlen, pentru șirul 164 00:09:37,550 --> 00:09:39,280 lungime, va veni la îndemână. 165 00:09:39,280 --> 00:09:44,020 Este nevoie într-un șir ca intrare și returnează lungimea acel șir. 166 00:09:44,020 --> 00:09:49,250 Asigurați-vă că pentru a include biblioteca dreapta pentru a utiliza funcția lungimea șirului. 167 00:09:49,250 --> 00:09:51,790 >> Și nu ai cifrat ta. 168 00:09:51,790 --> 00:09:53,260 Numele meu este Zamyla. 169 00:09:53,260 --> 00:09:54,510 Și [CODE vorbind]. 170 00:09:54,510 --> 00:10:02,944