1 00:00:00,000 --> 00:00:10,103 2 00:00:10,103 --> 00:00:11,270 >> ZAMYLA CHAN: Felicitacions Ha acabat el 3 00:00:11,270 --> 00:00:13,200 primer parell de programes en C. 4 00:00:13,200 --> 00:00:16,379 Sé que la seva primera incursió en Sintaxi de C pot ser descoratjador. 5 00:00:16,379 --> 00:00:20,060 Però t'asseguro que, al final de l' Per descomptat, vostè serà capaç de mirar la 6 00:00:20,060 --> 00:00:23,870 primer parell de tasques i de completar en qüestió de minuts. 7 00:00:23,870 --> 00:00:27,830 >> Ara que vostè està aconseguint més familiar amb la sintaxi, anem a arribar a César. 8 00:00:27,830 --> 00:00:31,720 En Caesar, l'usuari ha de presentar una clau de sencer com una línia d'ordres 9 00:00:31,720 --> 00:00:35,300 argument, a continuació, introduïu un pla missatge de text a l'indicador. 10 00:00:35,300 --> 00:00:38,050 El programa llavors xifrar el text i imprimir 11 00:00:38,050 --> 00:00:40,020 el seu missatge de text xifrat. 12 00:00:40,020 --> 00:00:42,980 >> La xifra del Cèsar és bastant simple. 13 00:00:42,980 --> 00:00:46,455 Canvieu cada lletra, si text sense format, per la tecla. 14 00:00:46,455 --> 00:00:49,220 Com a resultat d'això, és també bastant insegur. 15 00:00:49,220 --> 00:00:53,850 Però la implementació de Caesar introduirà ens dades ASCIIMath i la matriu 16 00:00:53,850 --> 00:00:54,460 estructures. 17 00:00:54,460 --> 00:00:57,510 Anem a arribar al més complex sistemes de xifrat més tard. 18 00:00:57,510 --> 00:01:01,680 Amb una clau de Caesar 2, la lletra A text sense format estaria representada per 19 00:01:01,680 --> 00:01:07,580 la lletra C en el text xifrat per C és de dues lletres després d'A B serien 20 00:01:07,580 --> 00:01:12,450 representada per D i C d'E Cap el final de l'alfabet, W és 21 00:01:12,450 --> 00:01:18,550 representat per I, i X per Z. Però I no té dues cartes després que, per la 22 00:01:18,550 --> 00:01:21,070 les xifres s'embolica al voltant de l'alfabet. 23 00:01:21,070 --> 00:01:27,190 I en text pla es representa així A en text xifrat i Z per B. Pot 24 00:01:27,190 --> 00:01:32,080 ajudarà a veure el Caesar Cypher com una roda alfabet contínua. 25 00:01:32,080 --> 00:01:35,760 >> Per xifrar el text, l'usuari entraran dos arguments 26 00:01:35,760 --> 00:01:37,090 en la línia d'ordres - 27 00:01:37,090 --> 00:01:40,010 . / César seguit d'una tecla. 28 00:01:40,010 --> 00:01:44,710 Com sempre, no podem confiar en l'usuari completament per entrar d'entrada que fan 29 00:01:44,710 --> 00:01:45,800 sentit per al nostre programa. 30 00:01:45,800 --> 00:01:50,670 Així que anem a haver de validar la seva entrada de línia d'ordres. 31 00:01:50,670 --> 00:01:57,285 >> En lloc d'utilitzar void main int, estem utilitzant int main, argc int, string argv. 32 00:01:57,285 --> 00:02:01,730 El argc variable sencera representa el nombre d'arguments passats a 33 00:02:01,730 --> 00:02:02,880 la línia d'ordres. 34 00:02:02,880 --> 00:02:09,070 I argv és una matriu, o pensar en ella com una llista dels arguments passats polz 35 00:02:09,070 --> 00:02:12,000 >> Així que per a César, com validem l'entrada de l'usuari? 36 00:02:12,000 --> 00:02:15,870 Bé, només haurien d'estar entrant dos arguments de línia d'ordres - 37 00:02:15,870 --> 00:02:18,150 . / Caesar i una clau. 38 00:02:18,150 --> 00:02:22,340 Així que si argc no és 2, el que significa que o bé es va oblidar la clau i només 39 00:02:22,340 --> 00:02:27,230 introduït. / Cèsar, o entrat en diverses claus. 40 00:02:27,230 --> 00:02:29,770 >> Si aquest és el cas, llavors vostè voleu imprimir les instruccions 41 00:02:29,770 --> 00:02:30,910 i sortir del programa. 42 00:02:30,910 --> 00:02:34,320 Hauran de tornar a intentar des de la línia d'ordres. 43 00:02:34,320 --> 00:02:37,430 Però fins i tot si argc és 2, se li de comprovar si 44 00:02:37,430 --> 00:02:39,100 li donarà una clau vàlida. 45 00:02:39,100 --> 00:02:40,730 Per César, que necessita un enter. 46 00:02:40,730 --> 00:02:43,260 Però argv és una matriu de cadenes. 47 00:02:43,260 --> 00:02:46,490 Com es pot accedir a aquesta clau? 48 00:02:46,490 --> 00:02:47,850 >> Un ràpid cop d'ull a les matrius - 49 00:02:47,850 --> 00:02:51,410 estructures de dades que tenen múltiples valors del mateix tipus de dades. 50 00:02:51,410 --> 00:02:55,350 Les entrades estan indexats a zero, el que significa que el primer element és l'índex zero 51 00:02:55,350 --> 00:03:00,260 i l'últim element està en la grandària de l'índex menys 1, on la mida és el nombre de 52 00:03:00,260 --> 00:03:02,850 elements de la matriu. 53 00:03:02,850 --> 00:03:07,380 >> Si declarar una nova bústia matriu de cadenes de longitud 3, visualment, es 54 00:03:07,380 --> 00:03:08,570 són aquestes. 55 00:03:08,570 --> 00:03:11,520 Tres contenidors de cadenes , Al costat de l'altre. 56 00:03:11,520 --> 00:03:15,445 Per accedir a qualsevol element, escriviu el nom de la matriu i després indicar 57 00:03:15,445 --> 00:03:18,080 l'índex entre claudàtors. 58 00:03:18,080 --> 00:03:21,610 Aquí, estic assignant un valor a cada element, tal com ho faria amb qualsevol 59 00:03:21,610 --> 00:03:24,310 una altra variable de cadena. 60 00:03:24,310 --> 00:03:29,020 >> Així que per accedir als nostres arguments de línia d'ordres, tot el que hem de fer és accedir a 61 00:03:29,020 --> 00:03:31,690 l'element de la dreta de la matriu argv. 62 00:03:31,690 --> 00:03:37,360 Si l'usuari introdueix Team. / Enlairament Rocket al terminal, argv 0 faria 63 00:03:37,360 --> 00:03:38,950 ser. / enlairament. 64 00:03:38,950 --> 00:03:45,010 argv seria Team, i arg2 seria coet. 65 00:03:45,010 --> 00:03:47,670 >> Ara que podem accedir a la clau, encara hem de fer 66 00:03:47,670 --> 00:03:49,040 assegurar-se que és correcta. 67 00:03:49,040 --> 00:03:51,060 Hem de convertir-lo en un enter. 68 00:03:51,060 --> 00:03:54,680 Però no podem emetre com que hem fet anteriorment. 69 00:03:54,680 --> 00:03:58,800 Per sort, el de funció IA s'encarrega d'això per a nosaltres i fins i tot retorna 0 70 00:03:58,800 --> 00:04:02,110 si la cadena no es pot convertir en un nombre sencer. 71 00:04:02,110 --> 00:04:04,450 Tot depèn de tu, però, a dir l'usuari per la qual no 72 00:04:04,450 --> 00:04:06,220 deixar que el programa continuï. 73 00:04:06,220 --> 00:04:10,710 Deseu el resultat de l'A a la I en un sencer, i no tens la clau. 74 00:04:10,710 --> 00:04:12,070 La següent part és simple. 75 00:04:12,070 --> 00:04:15,940 Preguntar a l'usuari per el seu text, que serà de cadena de tipus de dades. 76 00:04:15,940 --> 00:04:18,339 Per sort per a nosaltres, tot l'usuari introdueix cordes són vàlides. 77 00:04:18,339 --> 00:04:21,170 78 00:04:21,170 --> 00:04:24,760 >> Ara que tenim totes les aportacions necessàries per part de l'usuari, és el moment per a nosaltres 79 00:04:24,760 --> 00:04:26,520 xifrar el missatge. 80 00:04:26,520 --> 00:04:29,200 El concepte de Caesar és simple suficient per entendre. 81 00:04:29,200 --> 00:04:33,750 Però, com sap l'ordinador que cartes vénen un darrere l'altre? 82 00:04:33,750 --> 00:04:36,100 >> Aquí és on la taula ASCII entra en joc 83 00:04:36,100 --> 00:04:39,420 Cada caràcter té un nombre enter número associat a ella. 84 00:04:39,420 --> 00:04:41,380 Capital és de 65. 85 00:04:41,380 --> 00:04:43,310 Capital de B és de 66. 86 00:04:43,310 --> 00:04:45,260 Minúscula és 97. 87 00:04:45,260 --> 00:04:47,590 Minúscules b és de 98. 88 00:04:47,590 --> 00:04:50,770 No obstant això, els caràcters no es limiten que només números alfabètics. 89 00:04:50,770 --> 00:04:56,020 Per exemple, el símbol @ és el nombre ASCII 64. 90 00:04:56,020 --> 00:04:59,690 >> Abans d'abordar tota la cadena, anem a suposar que només hem de canviar 91 00:04:59,690 --> 00:05:01,220 un caràcter. 92 00:05:01,220 --> 00:05:04,640 Bé, l'únic que volem desplaçar real lletres en el text, no 93 00:05:04,640 --> 00:05:06,020 caràcters o números. 94 00:05:06,020 --> 00:05:09,100 Així que el primer que voldrem comprovar és si el personatge està en 95 00:05:09,100 --> 00:05:10,430 l'alfabet. 96 00:05:10,430 --> 00:05:14,460 >> El isalpha funció ho fa per nosaltres i retorna un Boolean - 97 00:05:14,460 --> 00:05:18,570 cert si els personatges és una carta, false en cas contrari. 98 00:05:18,570 --> 00:05:22,270 Dues funcions són útils isupper i islower, amb 99 00:05:22,270 --> 00:05:23,860 noms autoexplicatius. 100 00:05:23,860 --> 00:05:27,370 Tornen true si el caràcter donat és majúscula o minúscula, 101 00:05:27,370 --> 00:05:28,740 respectivament. 102 00:05:28,740 --> 00:05:33,770 Com que són booleans, són útil per utilitzar com a condicions. 103 00:05:33,770 --> 00:05:38,310 >> Si isalpha torna true, haurà per canviar el caràcter amb la tecla. 104 00:05:38,310 --> 00:05:43,750 Així que anem a obrir a ASCIIMath i fer alguns càlculs ASCII. 105 00:05:43,750 --> 00:05:48,700 L'ús és molt similar a l'ús per Cèsar i presa en clau al 106 00:05:48,700 --> 00:05:50,870 línia d'ordres. 107 00:05:50,870 --> 00:05:59,590 >> Si em quedo ASCIIMath 5, sembla afegir 5 a 1, i em va donar la lletra f, i 108 00:05:59,590 --> 00:06:01,260 mostra el valor ASCII. 109 00:06:01,260 --> 00:06:04,090 Així que donem una ullada al programa. 110 00:06:04,090 --> 00:06:11,820 >> Vostè podria preguntar-se, aquí, per què lletra és un nombre enter, quan és 111 00:06:11,820 --> 00:06:14,330 clarament, també, una carta. 112 00:06:14,330 --> 00:06:17,690 Resulta que els personatges i sencers són intercanviables. 113 00:06:17,690 --> 00:06:21,730 En posar la lletra A en un sol entre cometes, tot l'poden emmagatzemar 114 00:06:21,730 --> 00:06:25,390 el valor ASCII del capital A. Aneu amb compte, però. 115 00:06:25,390 --> 00:06:27,150 Vostè necessita la roba individuals. 116 00:06:27,150 --> 00:06:31,260 Sense les cometes simples, el compilador buscaria una variable 117 00:06:31,260 --> 00:06:35,510 Una crida, i no el caràcter. 118 00:06:35,510 --> 00:06:42,140 >> Després afegeixo carta i una clau, l'emmagatzematge de la suma al resultat les variables int. 119 00:06:42,140 --> 00:06:47,740 Tot i que és resultat de tipus de dades sencer, la meua sentència printf s'usa el 120 00:06:47,740 --> 00:06:50,370 % C marcador de posició per als personatges. 121 00:06:50,370 --> 00:06:54,530 Així el programa imprimeix el caràcter associada amb el resultat de nombre enter. 122 00:06:54,530 --> 00:07:00,400 I ja que imprimim el nombre enter forma i amb% d, veiem 123 00:07:00,400 --> 00:07:02,110 el nombre així. 124 00:07:02,110 --> 00:07:04,450 Així que ara vostè pot veure que tractament de personatges i 125 00:07:04,450 --> 00:07:06,980 sencers, i viceversa. 126 00:07:06,980 --> 00:07:12,205 >> Anem a prova a terme ASCIIMath alguns més vegades usant 25 com una clau. 127 00:07:12,205 --> 00:07:15,510 128 00:07:15,510 --> 00:07:17,090 Vam rebre la lletra z. 129 00:07:17,090 --> 00:07:19,750 Ara tractem 26. 130 00:07:19,750 --> 00:07:25,600 Volem que la lletra a, però en canvi tenim un claudàtor esquerre. 131 00:07:25,600 --> 00:07:29,490 Així que, òbviament, simplement afegint el clau de la carta no és suficient. 132 00:07:29,490 --> 00:07:32,780 Hem de trobar una fórmula per embolicar tot l'alfabet, com el nostre 133 00:07:32,780 --> 00:07:34,570 exemple en el principi va fer. 134 00:07:34,570 --> 00:07:38,520 >> Una fórmula pel César canvi és el següent. 135 00:07:38,520 --> 00:07:42,750 c és igual a p més k mòdul 26. 136 00:07:42,750 --> 00:07:46,040 Recordeu que és un mòdul útil operació que ens dóna la resta 137 00:07:46,040 --> 00:07:49,880 de dividir un nombre per l'altre. 138 00:07:49,880 --> 00:07:54,870 Anem a aplicar aquesta fórmula a la plana Carta de text amb una clau de 2. 139 00:07:54,870 --> 00:08:01,810 El valor ASCII d'i és 89, el que ens dóna 91 mòdul 26, 140 00:08:01,810 --> 00:08:03,690 el que equival a 13 - 141 00:08:03,690 --> 00:08:08,740 definitivament no és el valor ASCII d'una, que és 67. 142 00:08:08,740 --> 00:08:12,810 >> Em Humor ara i allunyar-se de la Valors ASCII a un índex alfabètic 143 00:08:12,810 --> 00:08:18,690 on A és zero i Z és 25, el que significa que I és 24. 144 00:08:18,690 --> 00:08:25,830 24 més 2, mòdul 6, ens dóna 26, mòdul 26, 0, que és el 145 00:08:25,830 --> 00:08:28,170 índex alfabètic de a. 146 00:08:28,170 --> 00:08:32,980 Així que aquesta fórmula sembla aplicar a la índex alfabètic de la lletra i 147 00:08:32,980 --> 00:08:34,960 no el seu valor ASCII. 148 00:08:34,960 --> 00:08:37,630 >> Però vostè comença amb valors ASCII. 149 00:08:37,630 --> 00:08:41,650 I per imprimir el caràcter de text xifrat, té el valor ASCII també. 150 00:08:41,650 --> 00:08:46,400 Tot depèn de tu, doncs, d'esbrinar com canviar d'un costat a un altre. 151 00:08:46,400 --> 00:08:49,850 >> Un cop d'esbrinar la fórmula correcta per a un caràcter, tot el que ha de fer 152 00:08:49,850 --> 00:08:53,520 és aplicar la mateixa fórmula a tots els lletra en el text sense format - 153 00:08:53,520 --> 00:08:57,720 només si aquesta carta és alfabètic, és clar. 154 00:08:57,720 --> 00:09:02,360 I recordi que vostè necessita per preservar el cas, superior o inferior, que és on 155 00:09:02,360 --> 00:09:06,890 les funcions islower isupper i esmentat anteriorment serà molt útil. 156 00:09:06,890 --> 00:09:08,830 És possible que tingui dues fórmules - 157 00:09:08,830 --> 00:09:11,680 un per a les lletres majúscules i un per minúscules. 158 00:09:11,680 --> 00:09:18,420 Així isupper 1 esMenor l'ajudarà a determinar quina fórmula aplicar. 159 00:09:18,420 --> 00:09:22,460 >> Com s'aplica la fórmula a cada sol caràcter en una cadena? 160 00:09:22,460 --> 00:09:25,910 Bé, una cadena és només una matriu de caràcters. 161 00:09:25,910 --> 00:09:31,150 Així que vostè pot accedir a cada personatge agrupa més de tots els personatges de la 162 00:09:31,150 --> 00:09:33,450 cadena en un bucle. 163 00:09:33,450 --> 00:09:37,550 Pel que fa a la condició del seu bucle for, la funció strlen, per cadena 164 00:09:37,550 --> 00:09:39,280 longitud, serà molt útil. 165 00:09:39,280 --> 00:09:44,020 Es necessita una cadena com a entrada i torna la llargada d'aquesta cadena. 166 00:09:44,020 --> 00:09:49,250 Assegureu-vos d'incloure la biblioteca de dret per utilitzar la funció de longitud de la cadena. 167 00:09:49,250 --> 00:09:51,790 >> I aquí tens el teu text xifrat. 168 00:09:51,790 --> 00:09:53,260 El meu nom és el Zamyla. 169 00:09:53,260 --> 00:09:54,510 I [CODI DE PARLAR]. 170 00:09:54,510 --> 00:10:02,944