1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Tutorial - Joc Problema 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvard University] 3 00:00:05,170 --> 00:00:07,490 [Aquesta és CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Està bé. Hola a tots i benvinguts a Tutorial 2. 5 00:00:10,750 --> 00:00:14,330 En primer lloc, vull felicitar a vostè per acabar conjunt de processadors 1. 6 00:00:14,330 --> 00:00:18,140 Sé que podria haver estat una mica difícil per a alguns de vostès, 7 00:00:18,140 --> 00:00:20,460 podria haver estat el seu primer programa d'ordinador que vostè va escriure, 8 00:00:20,460 --> 00:00:24,500 però recorda que al final d'això, quan un mira cap enrere al final del semestre, 9 00:00:24,500 --> 00:00:29,820 podràs veure pset 1 i que dirà, "Hey, jo podria haver fet que en 5 minuts". 10 00:00:29,820 --> 00:00:35,700 Així que coneix i confia que a finals d'aquest sempre trobaràs un conjunt de processadors molt simples. 11 00:00:35,700 --> 00:00:40,640 Però per ara és una gran fita, i felicitats per aconseguir que es facin. 12 00:00:40,640 --> 00:00:44,010 Ara, també una nota ràpida abans d'entrar a la carn del tutorial. 13 00:00:44,010 --> 00:00:48,340 Només vull fer una nota ràpida que a vegades no tenen temps suficient 14 00:00:48,340 --> 00:00:52,500 durant les visites guiades per anar a través de totes les formes possibles de fer el conjunt de problemes 15 00:00:52,500 --> 00:00:56,140 i en comptes només potser centrar-se en 1 o 2 tipus d'implementacions, 16 00:00:56,140 --> 00:00:57,750 maneres que vostè pot fer això. 17 00:00:57,750 --> 00:01:01,970 Però això no vol dir que està prohibit fer d'una altra manera. 18 00:01:01,970 --> 00:01:05,980 Sovint, com ocorre amb la informàtica, moltes maneres de fer les coses, 19 00:01:05,980 --> 00:01:12,190 i pel que definitivament no dubti en utilitzar un tipus diferent de solució del que va poder haver presentat. 20 00:01:12,190 --> 00:01:14,520 [Pset 2: Crypto - Zamyla Chan - zamyla@cs50.net] 21 00:01:14,520 --> 00:01:17,160 [Pset2 - 0. Una secció de preguntes - 1. César - 2. Vigenère] 22 00:01:17,160 --> 00:01:20,650 Està bé. Així problema 2: Crypto és una diversió. 23 00:01:20,650 --> 00:01:24,500 Un cop més, amb cada conjunt de processadors vostè començarà amb una secció de preguntes 24 00:01:24,500 --> 00:01:29,600 que portarà a terme en les seves seccions amb el seu company d'ensenyament assignat. 25 00:01:29,600 --> 00:01:31,670 No anirem a través d'aquests sobre el tutorial, 26 00:01:31,670 --> 00:01:35,100 però sens dubte l'ajudarà a completar el conjunt de processadors. 27 00:01:35,100 --> 00:01:38,100 Així que la primera part del conjunt problema és César. 28 00:01:38,100 --> 00:01:43,470 I així, en César algú li passi una tecla amb un nombre enter, 29 00:01:43,470 --> 00:01:48,420 i vostè xifrar una cadena de text que li proporcionen 30 00:01:48,420 --> 00:01:50,670 i tornar una mica encriptat. 31 00:01:50,670 --> 00:01:56,050 Si algú va veure una història d'Nadal, hi ha un exemple d'això allà. 32 00:01:56,050 --> 00:01:59,090 Llavors la segona part del conjunt de problemes és Vigenère, 33 00:01:59,090 --> 00:02:01,790 que és una tècnica de codificació més avançada. 34 00:02:01,790 --> 00:02:05,640 Així que anem a xifrar un text, 35 00:02:05,640 --> 00:02:09,600 excepte que en lloc de només un únic sencer, estem realment va a codificar 36 00:02:09,600 --> 00:02:13,340 amb una paraula clau que l'usuari ens proporcionarà. 37 00:02:16,270 --> 00:02:22,090 Bé, la primera eina en la caixa d'eines d'avui és en realitat estarà actualitzant l'aparell. 38 00:02:22,090 --> 00:02:26,430 Al tauler de discussió veuríem coses com: "Per què no funciona?" 39 00:02:26,430 --> 00:02:28,110 "Per què no se sotmet 50 treball?" 40 00:02:28,110 --> 00:02:31,830 i moltes vegades la solució és realment només per actualitzar el dispositiu. 41 00:02:31,830 --> 00:02:36,730 Així que si vostè acaba d'executar en una finestra de terminal en el seu aparell sudo yum-i - 42 00:02:36,730 --> 00:02:40,040 això és una bandera dient que sí, actualitzar tot - actualització, 43 00:02:40,040 --> 00:02:42,280 a continuació, l'aparell s'actualitzarà si cal. 44 00:02:42,280 --> 00:02:46,960 I no està de més si ja són a la versió més recent del dispositiu. 45 00:02:46,960 --> 00:02:51,280 A continuació, s'acaba de dir no hi ha actualitzacions noves disponibles i vostè pot seguir treballant al llarg. 46 00:02:51,280 --> 00:02:55,800 Però això és bo per a executar fins i tot cada vegada que obri l'aparell 47 00:02:55,800 --> 00:02:57,140 perquè estem encara molt - 48 00:02:57,140 --> 00:03:00,320 de vegades, si entrem en un error - reparar en l'aparell. 49 00:03:00,320 --> 00:03:03,180 Així que assegura't que tens la versió més recent del dispositiu 50 00:03:03,180 --> 00:03:07,710 actualitzar i executar que hi ha. 51 00:03:07,710 --> 00:03:14,360 Està bé. Així que ja que estem tractant amb lletres i canviant, xifrat coses, 52 00:03:14,360 --> 00:03:20,410 anem a voler realment a convertir-se en el millor amic de la nostra taula ASCII. 53 00:03:20,410 --> 00:03:24,350 N'hi ha nombrosos en línia, si vostè troba. Potser fins i tot fer el seu propi. 54 00:03:24,350 --> 00:03:29,950 Bàsicament, amb cada lletra i cada nombre i el caràcter de cada 55 00:03:29,950 --> 00:03:32,210 hi ha un nombre associat amb ells, 56 00:03:32,210 --> 00:03:38,670 i el que és bo per veure els seus valors ASCII juntament amb la carta actual. 57 00:03:38,670 --> 00:03:42,310 Que sens dubte l'ajudarà en el conjunt de problemes. 58 00:03:42,310 --> 00:03:45,750 Una cosa que realment em va ajudar en aquest conjunt de problemes era realment imprimir, 59 00:03:45,750 --> 00:03:48,380 i com jo estava passant, en realitat es basarà en ella, 60 00:03:48,380 --> 00:03:51,150 escriure: "Si això ha d'anar cap allà, llavors ..." 61 00:03:51,150 --> 00:03:55,270 Tipus de dibuixar sobre ella i marcar cap amunt, es converteixen en millors amics amb la seva taula ASCII. 62 00:03:57,240 --> 00:04:00,750 Llavors tenim alguna eina més a la nostra disposició. 63 00:04:00,750 --> 00:04:03,750 Aquesta vegada, en lloc de realment preguntar a l'usuari per tots els seus aportacions 64 00:04:03,750 --> 00:04:05,230 farem una combinació. 65 00:04:05,230 --> 00:04:06,880 Nosaltres anem a sol · licitar alguna entrada, 66 00:04:06,880 --> 00:04:11,350 però també utilitzarem només els arguments de línia de comandes. 67 00:04:11,350 --> 00:04:15,600 Així que quan s'executi el seu programa, en general li diuen. / Hola, per exemple, 68 00:04:15,600 --> 00:04:17,310 si el seu programa era hello.c. 69 00:04:17,310 --> 00:04:22,500 Però aquesta vegada, en comptes de dir això, es pot posar en paraules, arguments després. 70 00:04:22,500 --> 00:04:27,210 Així que farem servir tot el que passi a nosaltres com les seves aportacions, així, 71 00:04:27,210 --> 00:04:31,720 així d'anar més enllà de simplement preguntar completament, sinó també amb arguments de línia de comandes. 72 00:04:31,720 --> 00:04:36,590 I després entrarem a una matriu i cadenes, que estarem usant molt també. 73 00:04:41,460 --> 00:04:44,810 Això és només un exemple d'una taula ASCII mini. 74 00:04:44,810 --> 00:04:48,460 Com ja he dit, cada lletra correspon a un nombre, 75 00:04:48,460 --> 00:04:52,510 i així familiaritzar-se amb això. Això serà molt útil. 76 00:04:52,510 --> 00:04:55,610 I després, quan vam començar a fer algunes ASCIIMath tracta dels nombres - 77 00:04:55,610 --> 00:05:00,110 sumar, restar ells - llavors definitivament bo per referir-se a aquesta taula. 78 00:05:02,860 --> 00:05:06,920 Així que aquí està un exemple d'un xifrat César - una cosa que vostè va poder haver jugat. 79 00:05:06,920 --> 00:05:11,190 És només una roda. Essencialment, hi ha un alfabet exterior i llavors hi ha un alfabet interior. 80 00:05:11,190 --> 00:05:15,290 Així que aquí és un exemple de la xifra de Cèsar, però amb una tecla de 0. 81 00:05:15,290 --> 00:05:21,540 Essencialment, A està alineat amb A, B està alineat amb B, tot el camí fins Z. 82 00:05:21,540 --> 00:05:26,590 Però després diuen que volíem una clau de 3, per exemple. 83 00:05:26,590 --> 00:05:33,280 Després es gira la roda interior de manera que ara s'alinea amb una D, etc 84 00:05:33,280 --> 00:05:35,250 I això és bàsicament el que farem. 85 00:05:35,250 --> 00:05:38,340 No tenim una roda, però el que farem és fer que el nostre programa 86 00:05:38,340 --> 00:05:44,490 Aquest tipus de canvi de l'alfabet juntament amb nosaltres una certa quantitat de nombres. 87 00:05:44,490 --> 00:05:48,650 Així que com he dit abans, estarem tractant amb arguments de línia de comandes 88 00:05:48,650 --> 00:05:50,390 així com aconseguir un nombre enter. 89 00:05:50,390 --> 00:05:55,050 Així que la forma que l'usuari executi el programa de César és dient. / Caesar 90 00:05:55,050 --> 00:05:58,090 i després d'introduir un nombre després d'això. 91 00:05:58,090 --> 00:06:01,130 I aquest nombre representa la clau, el canvi, 92 00:06:01,130 --> 00:06:06,740 Quantes vegades estaràs girant la roda interior del seu sistema de xifrat César. 93 00:06:06,740 --> 00:06:08,390 I pel que veig aquí un exemple. 94 00:06:08,390 --> 00:06:14,550 Si entrem en les lletres de l'A a la L en el nostre sistema de xifrat César, 95 00:06:14,550 --> 00:06:19,520 llavors ho faria a través de l'entrada D O perquè és cada lletra desplaçat més de 3 vegades, 96 00:06:19,520 --> 00:06:22,080 igual que l'exemple de la roda que et vaig mostrar. 97 00:06:22,080 --> 00:06:25,300 Així que si has introduït, per exemple, tracta CS50! 98 00:06:25,300 --> 00:06:27,960 llavors també seria moure totes les cartes. 99 00:06:27,960 --> 00:06:31,040 I això és una cosa important en tant César i Vigenère 100 00:06:31,040 --> 00:06:34,890 és que passarem per alt les cartes no ho són. 101 00:06:34,890 --> 00:06:39,160 Així que tots els espais, personatges, etc, nombres, anem a mantenir igual. 102 00:06:39,160 --> 00:06:42,920 Només canviarem les lletres en aquest cas. 103 00:06:42,920 --> 00:06:45,870 Així que com veus a la roda, només tenim les cartes de què disposem, 104 00:06:45,870 --> 00:06:50,150 de manera que només vol canviar les lletres i xifrar les lletres. 105 00:06:51,370 --> 00:06:56,720 Així que el primer que ha de fer, hem vist que l'ús de Cèsar al problema 2 106 00:06:56,720 --> 00:07:05,280 César és executar i escrigui un nombre quan s'executa al terminal. 107 00:07:05,280 --> 00:07:10,940 Així que el que hem de fer és aconseguir d'alguna manera que la clau i accedir-hi. 108 00:07:10,940 --> 00:07:14,730 I pel que volem veure d'alguna manera serà l'argument de línia d'ordres segona. 109 00:07:14,730 --> 00:07:20,950 La primera d'elles serà. / César, i la propera serà el número clau. 110 00:07:22,190 --> 00:07:29,200 Així que abans de tenir int main (void) per iniciar els nostres programes en C. 111 00:07:29,200 --> 00:07:31,790 Anem a pelar una capa una mica 112 00:07:31,790 --> 00:07:34,720 i veure realment que en comptes de passar en buit a la nostra funció principal 113 00:07:34,720 --> 00:07:37,920 en realitat estem tractant amb dos paràmetres. 114 00:07:37,920 --> 00:07:44,070 Tenim un int argc trucada i després una matriu de cadenes anomenat argv. 115 00:07:44,070 --> 00:07:46,030 Així argc és un nombre enter, 116 00:07:46,030 --> 00:07:49,640 i representa el nombre d'arguments passats al teu programa. 117 00:07:49,640 --> 00:07:53,590 I llavors argv és en realitat la llista dels arguments passats. 118 00:07:53,590 --> 00:08:00,820 Tots els arguments són cadenes, i així argv representa una matriu, una llista de cadenes. 119 00:08:01,830 --> 00:08:03,990 Anem a parlar sobre les matrius una mica. 120 00:08:03,990 --> 00:08:05,940 Les matrius són essencialment una estructura de dades nova. 121 00:08:05,940 --> 00:08:09,660 Tenim sencers, hem dobles, comptem amb cordes, i ara tenim les matrius. 122 00:08:09,660 --> 00:08:13,820 Les matrius són estructures de dades que poden emmagatzemar diversos valors del mateix tipus, 123 00:08:13,820 --> 00:08:18,320 tan essencialment, una llista de qualsevol tipus que desitgi. 124 00:08:18,320 --> 00:08:24,400 Bàsicament, si vostè vol una llista de nombres enters, tot en una variable, 125 00:08:24,400 --> 00:08:29,090 a continuació, ha de crear una nova variable que és de tipus array int. 126 00:08:29,090 --> 00:08:34,450 Així que les matrius són zero indexada, el que significa que el primer element de la matriu està en l'índex 0. 127 00:08:34,450 --> 00:08:41,799 Si la matriu és de longitud 4, com en aquest exemple, llavors l'últim element seria en l'índex 3, 128 00:08:41,799 --> 00:08:44,810 que és 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Així que per crear la matriu, vostè faria alguna cosa com això. 130 00:08:48,420 --> 00:08:51,440 Diguem que vostè volia una doble filera. 131 00:08:51,440 --> 00:08:56,520 Això s'aplica a qualsevol tipus de tipus de dades, però. 132 00:08:56,520 --> 00:09:00,210 Així que dius que vols una doble filera. Diguem que vostè vol dir bústia. 133 00:09:00,210 --> 00:09:04,760 Igual que vostè podria inicialitzar qualsevol altra doble, 134 00:09:04,760 --> 00:09:09,760 et diria doble i després el nom, però aquest cop posem els claudàtors, 135 00:09:09,760 --> 00:09:13,570 i després el nombre no serà la longitud de la matriu. 136 00:09:13,570 --> 00:09:16,840 Tingueu en compte que en les matrius mai podem canviar la longitud, 137 00:09:16,840 --> 00:09:21,230 pel que sempre cal definir i triar quantes caixes, 138 00:09:21,230 --> 00:09:25,440 quants valors de la matriu es va a celebrar. 139 00:09:25,440 --> 00:09:31,820 Així que per establir diferents valors a la matriu, vostè va a utilitzar aquesta sintaxi següent, 140 00:09:31,820 --> 00:09:33,200 com es veu a la diapositiva. 141 00:09:33,200 --> 00:09:37,620 Té 0 Índex de bústia s'estableix en 1,2, 142 00:09:37,620 --> 00:09:42,180 Índex de bústia 1 set a 2,4, etc 143 00:09:42,180 --> 00:09:47,910 Així que ara que hem revisat arrays una mica, anem a tornar a argc i argv. 144 00:09:47,910 --> 00:09:52,220 Sabem que argv és ara una matriu de cadenes. 145 00:09:52,220 --> 00:09:55,080 Així, quan un usuari passa - diuen que estan executant un programa - 146 00:09:55,080 --> 00:09:58,740 que diuen. / hola David Malan, 147 00:09:58,740 --> 00:10:05,160 el que el programa farà per vostè ja és en realitat arribar al argc i argv són. 148 00:10:05,160 --> 00:10:07,620 Així que vostè no s'ha de preocupar per això. 149 00:10:07,620 --> 00:10:14,370 Argc en aquest cas seria de 3 ja que considera tres paraules diferents separades per espais. 150 00:10:14,370 --> 00:10:18,850 I així, llavors la matriu, en aquest cas, el primer índex seria. / Hello, 151 00:10:18,850 --> 00:10:21,770 la següent David, la Malan. 152 00:10:21,770 --> 00:10:25,640 Algú veu de seguida quina és la relació entre argv, 153 00:10:25,640 --> 00:10:28,990  la matriu i argc és? 154 00:10:32,820 --> 00:10:38,090 Si. Anem a arribar a això en un exemple a args.c. 155 00:10:38,090 --> 00:10:42,880 A veure si podem treure profit de la relació entre la 2. 156 00:10:42,880 --> 00:10:46,550 Aquí pot trobar que en l'aparell l'aplicació per defecte 157 00:10:46,550 --> 00:10:49,450 per obrir arxius. c és de vegades Emacs. 158 00:10:49,450 --> 00:10:54,660 Però volem tractar amb gedit, així que el que vostè pot fer és fer clic dret sobre l'arxiu de C, 159 00:10:54,660 --> 00:11:04,580 hagi de Propietats, Obrir amb i, a continuació, escolliu gedit, en Selecciona per defecte, 160 00:11:04,580 --> 00:11:13,020 i ara el seu programa d'obrir gedit en lloc de Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfecte. 162 00:11:17,120 --> 00:11:25,520 Així que aquí tinc un programa que vull imprimir cada argument de la línia d'ordres. 163 00:11:25,520 --> 00:11:32,050 Així que el que l'usuari introdueix, vull essencialment tornar de nou a ells en una nova línia. 164 00:11:32,050 --> 00:11:36,710 Llavors, què és una estructura que podem usar per iterar sobre alguna cosa - 165 00:11:36,710 --> 00:11:40,380 cosa que probablement usat en conjunt de processadors 1? 166 00:11:40,380 --> 00:11:45,840 Si vols anar a través d'un nombre establert de les coses? >> [Estudiant] Per bucle. 167 00:11:45,840 --> 00:11:48,910 Per bucle. Exactament. Així que anem a començar amb el bucle for. 168 00:11:48,910 --> 00:11:56,900 Tenim per int i = 0. Anem a començar amb una variable d'inicialització estàndard. 169 00:11:56,900 --> 00:12:02,370 Vaig a sortir de la condició d'un conjunt i després dir i + +, farem les coses allà. 170 00:12:02,370 --> 00:12:04,090 Està bé. 171 00:12:04,090 --> 00:12:11,590 Així que pensant en tornar a argv, si argv és la llista d'arguments passats al programa 172 00:12:11,590 --> 00:12:15,380 i argc és el nombre d'arguments al programa, 173 00:12:15,380 --> 00:12:21,280 llavors això vol dir que argc és essencialment la longitud de argv, dret, 174 00:12:21,280 --> 00:12:28,970 perquè no hi haurà tants arguments com el valor de argc. 175 00:12:28,970 --> 00:12:35,910 Així que si volem iterar sobre cada element de argv, 176 00:12:35,910 --> 00:12:43,290 anem a voler cada vegada que accedir a la variable en argv en l'índex donat. 177 00:12:43,290 --> 00:12:49,060 Que es pot representar amb aquest, oi? 178 00:12:49,060 --> 00:12:53,430 Aquesta variable representa aquí la cadena en particular, en aquest cas 179 00:12:53,430 --> 00:12:57,030 perquè és una matriu de cadenes - la cadena en particular en aquest índex donat. 180 00:12:57,030 --> 00:13:00,690 El que volem fer, en aquest cas volem imprimir, així que anem a dir printf. 181 00:13:00,690 --> 00:13:04,680 I ara argv és una cadena, de manera que volem indicar un marcador de posició allà. 182 00:13:04,680 --> 00:13:08,430 Volem una nova línia només perquè es vegi bé. 183 00:13:08,430 --> 00:13:12,530 Així que aquí tenim un bucle per. No tenim la malaltia encara. 184 00:13:12,530 --> 00:13:20,020 Així que comença a 0, i després cada vegada que es va a imprimir la cadena donada 185 00:13:20,020 --> 00:13:22,980 en aquest índex determinat de la matriu. 186 00:13:22,980 --> 00:13:28,410 Per això, quan volem deixar d'imprimir els elements de la matriu? 187 00:13:28,410 --> 00:13:35,720 Quan hem acabat, oi? Quan hem arribat al final de la matriu. 188 00:13:35,720 --> 00:13:38,870 Així que no desitja excedir més enllà de la longitud de la matriu, 189 00:13:38,870 --> 00:13:43,700 i ja sabem que no és necessari en realitat activament esbrinar quina és la longitud de argv és 190 00:13:43,700 --> 00:13:47,520 perquè ha donat a nosaltres, i el que és això? Argc. Exactament. 191 00:13:47,520 --> 00:13:56,640 Per això volem fer aquest nombre argc procés de vegades. 192 00:13:56,640 --> 00:13:59,550 No estic al directori correcte. 193 00:14:02,100 --> 00:14:03,490 Està bé. 194 00:14:03,490 --> 00:14:08,990 Ara farem args. No hi ha errors, la qual cosa és genial. 195 00:14:08,990 --> 00:14:11,430 Així que anem a executar args. 196 00:14:11,430 --> 00:14:15,130 Què és això tornarà a nosaltres? És només voleu imprimir de nou. 197 00:14:15,130 --> 00:14:18,320 "S'introdueixen arguments al programa, jo ho donaré a vostè." 198 00:14:18,320 --> 00:14:23,170 Així que diguem que volem dir args llavors foo bar. 199 00:14:23,170 --> 00:14:26,570 Així que el que s'imprimeix de nou a nosaltres. ¿D'acord? 200 00:14:26,570 --> 00:14:30,790 Així que és un exemple de com es pot utilitzar argc i argv 201 00:14:30,790 --> 00:14:33,460 sabent que argc representa la longitud de argv. 202 00:14:33,460 --> 00:14:42,750 Assegureu-vos que vostè no ho fa mai amb accés matrius d'un més enllà de la longitud de la matriu 203 00:14:42,750 --> 00:14:45,140 C perquè definitivament cridar a vostè. 204 00:14:45,140 --> 00:14:47,560 Vostè aconseguirà una cosa que es diu un error de segmentació, 205 00:14:47,560 --> 00:14:52,470 que mai és divertit, bàsicament dient que està tractant d'accedir a alguna cosa 206 00:14:52,470 --> 00:14:55,000 que no existeix, no li pertany a vostè. 207 00:14:55,000 --> 00:14:59,430 Així que segur, i sobretot amb el zero indexació, no vull - 208 00:14:59,430 --> 00:15:02,390 Com per exemple, si tenim una matriu de longitud 4, 209 00:15:02,390 --> 00:15:07,240 que l'índex de matriu de 4 no existeix, perquè comencem a 0, en l'índex zero. 210 00:15:07,240 --> 00:15:11,730 Es convertirà en una segona naturalesa igual que per als bucles quan comencem a 0. 211 00:15:11,730 --> 00:15:13,610 Així que tingues-ho en compte. 212 00:15:13,610 --> 00:15:22,590 Vostè no desitja tenir accés sempre que l'índex d'un array que està més enllà del seu abast. 213 00:15:26,710 --> 00:15:32,560 Així que podem veure ara com podem tipus d'accés 214 00:15:32,560 --> 00:15:35,930 els arguments de línia de comandes que es passen polz 215 00:15:35,930 --> 00:15:41,330 Però com va veure la cadena, el argv és en realitat una matriu de cadenes. 216 00:15:41,330 --> 00:15:45,740 Així que no és en realitat un enter encara, però en Cèsar volem tractar amb nombres enters. 217 00:15:45,740 --> 00:15:54,430 Per sort, hi ha una funció creada per nosaltres perquè en realitat es pot convertir una cadena a un enter. 218 00:15:54,430 --> 00:15:58,710 També aquí no estem tractant amb l'entrada de l'usuari en el que els està incitant 219 00:15:58,710 --> 00:16:03,740 per a l'entrada de la clau aquí, així que en realitat no pot reprompt i dir: 220 00:16:03,740 --> 00:16:07,840 "Oh, em donarà un altre nombre enter, per exemple, si no és vàlid." 221 00:16:07,840 --> 00:16:10,540 Però encara necessita verificar l'ús correcte. 222 00:16:10,540 --> 00:16:13,520 En César només se'ls permet passar a un nombre, 223 00:16:13,520 --> 00:16:18,030 i el que han d'executar. / César i després t'han de donar un nombre. 224 00:16:18,030 --> 00:16:23,660 Així argc ha de ser un nombre determinat. 225 00:16:23,660 --> 00:16:29,060 Quin nombre que seria si han de passar el. / Cèsar i després una tecla? 226 00:16:29,060 --> 00:16:32,920 Quin és argc? >> [Estudiant] 2. >> Dos. Exactament. 227 00:16:32,920 --> 00:16:35,490 Així que vostè vol assegurar-se que argc és 2. 228 00:16:35,490 --> 00:16:39,620 En cas contrari, bàsicament es neguen a executar el programa. 229 00:16:39,620 --> 00:16:43,040 En main és una funció que diu int main, 230 00:16:43,040 --> 00:16:47,360 així llavors sempre en 0 bon retorn pràctica al final d'un programa reeixit. 231 00:16:47,360 --> 00:16:50,840 Així que si, per exemple, et donen tres arguments de la línia d'ordres en lloc de 2 232 00:16:50,840 --> 00:16:54,350 o et donen 1, per exemple, llavors el que vaig a fer és que vostè voldrà comprovar que 233 00:16:54,350 --> 00:16:59,900 i després tornar una dient, no, no puc seguir amb aquest programa. 234 00:16:59,900 --> 00:17:03,190 [Estudiant] No pot haver un espai en el text. >> Perdó? 235 00:17:03,190 --> 00:17:06,780 [Estudiant] No pot haver un espai en el text que està tractant de xifrar. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 Pel que fa al text que estem tractant de xifrar, que en realitat ve després 238 00:17:11,280 --> 00:17:13,970 quan donem aquest text. 239 00:17:13,970 --> 00:17:18,260 Així que ara només estem acceptant com a arguments de la comanda el nombre real, 240 00:17:18,260 --> 00:17:21,579 el canvi real per al xifrat de Cèsar. 241 00:17:21,579 --> 00:17:27,569 [Estudiant] Per què necessita 2 en lloc de només 1 argc? Definitivament hi ha un nombre. 242 00:17:27,569 --> 00:17:32,200 Dret. La raó per la qual necessitem per argc 2 en comptes de 1 243 00:17:32,200 --> 00:17:36,260 és perquè quan s'executa un programa i diuen. / Cèsar o. / hola, 244 00:17:36,260 --> 00:17:38,280 que realment compta com un argument de línia d'ordres. 245 00:17:38,280 --> 00:17:43,020 Així que ja ocupa 1 i així llavors estem introduint un extra. 246 00:17:45,030 --> 00:17:49,440 Així que en realitat està introduint una cadena en l'argument de la línia d'ordres. 247 00:17:49,440 --> 00:17:52,730 El que vull fer, per Cèsar ens volen fer front a un nombre enter, 248 00:17:52,730 --> 00:17:57,180 perquè pugui utilitzar aquesta funció atoi. 249 00:17:57,180 --> 00:18:02,850 I en el fons, es passa a una cadena i després se li tornarà un enter 250 00:18:02,850 --> 00:18:06,070 si és possible fer aquesta cadena en un enter. 251 00:18:06,070 --> 00:18:10,960 Ara recordo quan ens enfrontem a coses printf o GetString, així, 252 00:18:10,960 --> 00:18:13,390 que inclouen les biblioteques que són específics per a nosaltres. 253 00:18:13,390 --> 00:18:19,450 Així que al principi vam començar amb un estàndard de hash tag d'E / S,. H, una cosa així. 254 00:18:19,450 --> 00:18:22,430 Bé, atoi no està dins d'una d'aquestes biblioteques, 255 00:18:22,430 --> 00:18:26,600 així que el que has de fer és que hem d'incloure la biblioteca de dret per a això. 256 00:18:26,600 --> 00:18:32,720 Així recordar de nou a Tutorial 1, on em vaig referir a la funció manual. 257 00:18:32,720 --> 00:18:37,110 Escrius home del teu terminal i després seguit pel nom d'una funció. 258 00:18:37,110 --> 00:18:39,720 I perquè, veureu la llista completa del seu ús, 259 00:18:39,720 --> 00:18:42,890 sinó que també el portarà fins a quin biblioteca que pertany. 260 00:18:42,890 --> 00:18:47,000 Així que ho deixo a vostè per utilitzar la funció manual amb atoi 261 00:18:47,000 --> 00:18:53,360 i esbrinar en quina biblioteca s'ha d'incloure per poder utilitzar la funció atoi. 262 00:18:54,450 --> 00:18:57,670 Així que tenim la clau i ara es tracta d'obtenir el text sense format, 263 00:18:57,670 --> 00:19:01,820 i de manera que realment serà la entrada de l'usuari en què suggeriran. 264 00:19:01,820 --> 00:19:05,540 Ens topem amb getInt i GetFloat, i així, en la mateixa línia 265 00:19:05,540 --> 00:19:07,670 estarem tractant amb GetString. 266 00:19:07,670 --> 00:19:12,440 Però en aquest cas no és necessari fer cap acord while o while per comprovar. 267 00:19:12,440 --> 00:19:14,480 GetString sens dubte ens donarà una cadena, 268 00:19:14,480 --> 00:19:17,630 i anem a xifrar que l'usuari ens dóna. 269 00:19:17,630 --> 00:19:23,770 Així que vostè pot assumir que totes aquestes cadenes d'usuari introduïts són els correctes. 270 00:19:23,770 --> 00:19:24,670 Gran. 271 00:19:24,670 --> 00:19:27,270 Així que una vegada que tens la clau i un cop que tens el text, 272 00:19:27,270 --> 00:19:31,660 ara el que queda és que cal xifrar el text en clar. 273 00:19:31,660 --> 00:19:36,530 Només per cobrir ràpidament en argot, el text pla és el que l'usuari li dóna, 274 00:19:36,530 --> 00:19:41,030 i el text xifrat és el de tornar-hi. 275 00:19:42,450 --> 00:19:45,850 Així cadenes, per ser capaç d'anar a través de realitat lletra per lletra 276 00:19:45,850 --> 00:19:48,550 perquè hem de canviar cada lletra, 277 00:19:48,550 --> 00:19:51,390 entenem que les cadenes, si és que tipus de pelar la capa, 278 00:19:51,390 --> 00:19:54,130 veiem que només són realment una llista de caràcters. 279 00:19:54,130 --> 00:19:55,930 Una ve després de l'altra. 280 00:19:55,930 --> 00:20:01,690 I així podem tractar les cadenes com arrays, ja que són conjunts de caràcters. 281 00:20:01,690 --> 00:20:05,640 Així que vostè té una cadena anomenada text, 282 00:20:05,640 --> 00:20:09,400 i dins d'aquest text variable s'emmagatzema Això és CS50. 283 00:20:09,400 --> 00:20:15,680 A continuació, el text en l'índex 0 seria una T majúscula, índex 1 seria h, etc 284 00:20:17,530 --> 00:20:23,970 I a continuació, amb les matrius, en l'exemple argc a args.c, 285 00:20:23,970 --> 00:20:27,090 vam veure que havíem de recórrer en iteració una matriu 286 00:20:27,090 --> 00:20:32,440 i pel que va haver de recórrer des i = 0 fins i és menor que la longitud. 287 00:20:32,440 --> 00:20:35,560 Així que necessitem alguna manera d'esbrinar el que la durada de la nostra cadena és 288 00:20:35,560 --> 00:20:37,090 si anem a iterar sobre ella. 289 00:20:37,090 --> 00:20:42,300 Per sort, un cop més, hi ha una funció allà per a nosaltres, encara que més tard en CS50 290 00:20:42,300 --> 00:20:45,860 que sens dubte serà capaç d'aplicar i fer la seva pròpia funció 291 00:20:45,860 --> 00:20:48,260 que pot calcular la longitud d'una cadena. 292 00:20:48,260 --> 00:20:52,120 Però per ara utilitzarem longitud de la cadena, de manera que strlen. 293 00:20:52,120 --> 00:21:00,440 Es passa d'una cadena, i després se li retornarà un enter que representa la longitud de la cadena. 294 00:21:00,440 --> 00:21:05,840 Vegem un exemple de com podria ser capaç de repetir cada caràcter en una cadena 295 00:21:05,840 --> 00:21:08,470 i fer alguna cosa amb això. 296 00:21:08,470 --> 00:21:13,250 El que volem fer és iterar sobre cada caràcter de la cadena, 297 00:21:13,250 --> 00:21:19,150 i el que volem fer és que imprimim de nou cada caràcter 1 per 1 298 00:21:19,150 --> 00:21:22,060 excepte afegir alguna cosa al seu costat. 299 00:21:22,060 --> 00:21:27,020 Així que anem a començar amb el bucle for. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Anem a deixar espai per a la condició. 301 00:21:32,700 --> 00:21:36,840 Volem recórrer fins arribar al final de la cadena, no? 302 00:21:36,840 --> 00:21:41,340 Llavors, ¿quina funció ens dóna la longitud de la corda? 303 00:21:41,340 --> 00:21:43,160 [Resposta dels estudiants inaudible] 304 00:21:43,160 --> 00:21:46,420 Aquesta és la longitud dels arguments de línia de comandes. 305 00:21:46,420 --> 00:21:50,650 No obstant això, per a una cadena que voleu utilitzar una funció que ens dóna la longitud de la cadena. 306 00:21:50,650 --> 00:21:53,090 Així que aquesta és la longitud de cadena. 307 00:21:53,090 --> 00:21:57,130 I llavors vostè ha de passar una cadena a la mateixa. 308 00:21:57,130 --> 00:21:59,760 Cal saber quina cadena s'ha de calcular la longitud d'. 309 00:21:59,760 --> 00:22:03,160 Així que en aquest cas estem tractant amb la cadena s. 310 00:22:04,790 --> 00:22:05,860 Gran. 311 00:22:05,860 --> 00:22:10,770 Així que el que volem fer, anem a printf. 312 00:22:10,770 --> 00:22:14,850 Ara, volem tractar amb els personatges. Volem imprimir cada caràcter individual. 313 00:22:14,850 --> 00:22:22,150 Quan vostè vol que imprimeixi un flotador, s'utilitza com a marcador de posició% f. 314 00:22:22,150 --> 00:22:24,580 Amb un int que faria servir% d. 315 00:22:24,580 --> 00:22:30,890 I així, de la mateixa manera, amb un caràcter% c s'utilitza per dir que em vaig a imprimir un caràcter 316 00:22:30,890 --> 00:22:34,570 que està emmagatzemat a l'interior d'una variable. 317 00:22:34,570 --> 00:22:40,840 Així que tenim això, i anem a afegir un punt i un espai per a això. 318 00:22:40,840 --> 00:22:45,430 Quin personatge estem utilitzant? 319 00:22:45,430 --> 00:22:49,780 Utilitzarem qualsevol naturalesa que som a la cadena. 320 00:22:49,780 --> 00:22:52,890 Així que estarem usant alguna cosa amb una corda, 321 00:22:52,890 --> 00:22:56,420 però volem estar accedint al caràcter cert allà. 322 00:22:56,420 --> 00:23:02,740 Així que si una cadena és només una matriu, llavors, com accedir als elements de les matrius? 323 00:23:02,740 --> 00:23:06,480 Comptem amb els claudàtors, i després posem l'índex d'allà. 324 00:23:06,480 --> 00:23:11,820 Així que tenim entre claudàtors. El nostre índex en aquest cas, només puc utilitzar. Exactament. 325 00:23:15,290 --> 00:23:22,370 Així que aquí estem dient que anem a imprimir un caràcter seguit d'un punt i un espai, 326 00:23:22,370 --> 00:23:30,870 i que personatge serà la lletra i en la nostra cadena s. 327 00:23:32,920 --> 00:23:39,330 Jo només vaig a salvar d'això. Bé. 328 00:23:42,510 --> 00:23:46,840 Ara em vaig a córrer longitud de la cadena. 329 00:23:46,840 --> 00:23:53,440 Així que vam tenir una cadena anomenada OMG, i ara s'ha emfatitzat encara més. 330 00:23:53,440 --> 00:23:57,870 De la mateixa manera, diguem que realment vol aconseguir una cadena de l'usuari. 331 00:23:57,870 --> 00:23:59,580 Com podem fer això? 332 00:23:59,580 --> 00:24:01,610 Abans, com hem arribat un int? 333 00:24:01,610 --> 00:24:08,040 Vam dir getInt, oi? Però això no és int, així que anem a GetString. 334 00:24:11,780 --> 00:24:17,770 Fem longitud de la cadena. Aquí no s'ha introduït el seu sistema específic. 335 00:24:17,770 --> 00:24:19,940 Així que no ho sé. 336 00:24:19,940 --> 00:24:23,820 Vaig a publicar el meu nom en l'aquí i llavors jo puc fer una d'aquestes coses 337 00:24:23,820 --> 00:24:29,600 on puc assignar una paraula per a cada lletra o alguna cosa per l'estil. Cool. 338 00:24:29,600 --> 00:24:31,900 Així que aquesta és la longitud de cadena. 339 00:24:33,000 --> 00:24:34,640 Així que estem de tornada a César. 340 00:24:34,640 --> 00:24:38,620 Tenim algunes eines sobre com iterar sobre una seqüència, 341 00:24:38,620 --> 00:24:41,250 com accedir a cada element individual. 342 00:24:41,250 --> 00:24:44,720 Així que ara podem tornar al programa. 343 00:24:44,720 --> 00:24:48,650 Com he esmentat abans, a la taula ASCII, el seu millor amic, 344 00:24:48,650 --> 00:24:52,300 veuràs els nombres que estan associats amb cada lletra. 345 00:24:52,300 --> 00:24:55,900 Així que aquí dir que el nostre text en clar és que estic marejat! 346 00:24:55,900 --> 00:25:01,090 A continuació, cada un d'aquests caràcters es tindrà un nombre i el valor ASCII associat amb ell, 347 00:25:01,090 --> 00:25:04,710 fins i tot l'apòstrof, fins i tot l'espai, fins i tot el signe d'exclamació, 348 00:25:04,710 --> 00:25:06,600 pel que vostè vol mantenir això en ment. 349 00:25:06,600 --> 00:25:12,360 Així que dir que la nostra clau que l'usuari inclòs en el seu argument de línia d'ordres és 6. 350 00:25:12,360 --> 00:25:17,770 Això vol dir que per a la primera lletra, que és, que està representat per 73, 351 00:25:17,770 --> 00:25:25,610 desitja tornar a qualsevol lletra està representada pel valor ASCII de 73 + 6. 352 00:25:25,610 --> 00:25:29,020 En aquest cas seria 79. 353 00:25:30,840 --> 00:25:35,040 Ara volem anar al següent caràcter. 354 00:25:35,040 --> 00:25:40,960 Així que el següent en l'índex 1 del text clar seria l'apòstrof. 355 00:25:40,960 --> 00:25:46,780 Però recordeu que només vol xifrar les lletres. 356 00:25:46,780 --> 00:25:50,040 Així que volem assegurar-nos que l'apòstrof en realitat segueix sent la mateixa, 357 00:25:50,040 --> 00:25:54,310 que no canviem de 39-45 el que és. 358 00:25:54,310 --> 00:25:57,150 Volem mantenir-lo com un apòstrof. 359 00:25:57,150 --> 00:26:00,780 Per això volem recordar a xifrar només les lletres 360 00:26:00,780 --> 00:26:04,560 perquè volem que tots els altres símbols de romandre sense canvis en el nostre programa. 361 00:26:04,560 --> 00:26:07,130 Una altra cosa que volem és preservar la capitalització. 362 00:26:07,130 --> 00:26:10,250 Així que quan vostè té una lletra majúscula, ha de romandre com una majúscula. 363 00:26:10,250 --> 00:26:12,830 Lowercases ha de romandre en minúscula. 364 00:26:13,620 --> 00:26:19,480 Així que algunes funcions útils per poder fer front a només lletres de xifrat 365 00:26:19,480 --> 00:26:22,380 mantenir i preservar la capitalització de les coses 366 00:26:22,380 --> 00:26:25,130 són les funcions islower isalpha, isupper,. 367 00:26:25,130 --> 00:26:29,270 I aquestes són funcions que retornen un valor booleà. 368 00:26:29,270 --> 00:26:34,180 Bàsicament, vertader o fals. És aquesta una majúscula? És aquesta alfanumèric? 369 00:26:34,180 --> 00:26:37,180 És aquesta una carta, essencialment. 370 00:26:37,180 --> 00:26:41,070 Així que aquí estan 3 exemples de com es pot utilitzar aquesta funció. 371 00:26:41,070 --> 00:26:47,060 Bàsicament, es pot comprovar si el valor retornat per la funció és veritable o falsa 372 00:26:47,060 --> 00:26:49,400 sobre la base d'aquesta entrada. 373 00:26:49,400 --> 00:26:54,880 O fer alguna cosa no xifrar o xifrar o assegureu-vos que es tracta de majúscules, etc 374 00:26:54,880 --> 00:27:01,080 [Estudiant] Pots explicar aquells una mica més i com s'utilitzen? >> Sí, segur. 375 00:27:01,080 --> 00:27:08,470 Així que si mirem cap enrere, aquí tenim una R majúscula, no? 376 00:27:08,470 --> 00:27:14,550 Així que sabem que serà O + 6 perquè és O. 377 00:27:14,550 --> 00:27:18,740 Però volem assegurar-nos que la O serà una capital d'O 378 00:27:18,740 --> 00:27:22,940 Així que, bàsicament, que és una espècie d'anar a canviar la nostra entrada. 379 00:27:22,940 --> 00:27:26,870 Així que si es tracta de majúscules o no vol canviar el tipus de forma de lluitar amb això. 380 00:27:26,870 --> 00:27:32,360 Així que si fem servir la funció isupper en aquest índex en particular, 381 00:27:32,360 --> 00:27:36,480 així isupper ("I"), que retorna veritable per a nosaltres, així que sabem que és superior. 382 00:27:36,480 --> 00:27:40,360 Així que sobre la base que, més tard anirem en una fórmula 383 00:27:40,360 --> 00:27:42,750 que s'utilitzarà per canviar les coses de César, 384 00:27:42,750 --> 00:27:46,560 Així que, bàsicament, serà una fórmula lleugerament diferent si es tracta de majúscules 385 00:27:46,560 --> 00:27:50,670 en contraposició a minúscules. Té sentit? 386 00:27:51,020 --> 00:27:52,760 Si. No es preocupi. 387 00:27:54,900 --> 00:27:58,990 He parlat una mica sobre com afegir 6 a una carta, que no acaba de tenir sentit 388 00:27:58,990 --> 00:28:05,500 excepte quan ens tipus d'entendre que aquests personatges 389 00:28:05,500 --> 00:28:08,920 són una mica intercanviable amb nombres enters. 390 00:28:08,920 --> 00:28:11,250 El que fem nosaltres és una mena de càsting d'ús implícit. 391 00:28:11,250 --> 00:28:18,100 Anirem a llançar una mica més endavant d'on es pren un valor i el converteixes en un tipus diferent 392 00:28:18,100 --> 00:28:20,440 del que originalment era. 393 00:28:20,440 --> 00:28:25,910 No obstant això, amb aquest conjunt de processadors que serem capaços d'utilitzar indistintament tipus de caràcters 394 00:28:25,910 --> 00:28:30,880 i els seus corresponents valors sencers. 395 00:28:30,880 --> 00:28:35,140 Així que si vostè simplement revestir un caràcter amb només les cometes simples, 396 00:28:35,140 --> 00:28:40,390 llavors vostè serà capaç de treballar amb ella amb nombres enters, que tracta com un enter. 397 00:28:40,390 --> 00:28:48,040 Així que la C majúscula es refereix a 67. F minúscules es refereix a 102. 398 00:28:48,040 --> 00:28:51,480 De nou, si vostè vol saber aquests valors, mira al teu taula ASCII. 399 00:28:51,480 --> 00:28:56,160 Així que entrarem en alguns exemples de com podria ser capaç de restar i sumar, 400 00:28:56,160 --> 00:29:03,130 com vostè pot realment treballar amb aquests personatges, els utilitzen de manera intercanviable. 401 00:29:03,870 --> 00:29:11,350 Jo dic que ASCIIMath es va a calcular l'addició d'un caràcter en un enter 402 00:29:11,350 --> 00:29:17,590 i tot seguit, mostra el caràcter resultant així com el valor ASCII resultant. 403 00:29:17,590 --> 00:29:22,290 Així que aquí estic dient - ens tornarem acord amb aquesta última part - 404 00:29:22,290 --> 00:29:29,100 però en el fons, estic dient que l'usuari ha de dir ASCIIMath executar juntament amb una clau, 405 00:29:29,100 --> 00:29:30,880 i jo dic que aquesta clau serà el nombre 406 00:29:30,880 --> 00:29:34,600 amb el que afegirem a aquest personatge. 407 00:29:34,600 --> 00:29:38,560 Així que aquí adonar que ja que estic demanant una clau, 408 00:29:38,560 --> 00:29:40,590 ja que estic demanant que m'estan donant una cosa, 409 00:29:40,590 --> 00:29:45,600 Només vull acceptar. / ASCIIMath i una clau. 410 00:29:45,600 --> 00:29:49,330 Així que vaig a exigir que argc és igual a 2. 411 00:29:49,330 --> 00:29:54,360 Si no és així, llavors em vaig a tornar una i el programa es tancarà. 412 00:29:55,070 --> 00:29:58,540 Així que estic dient la clau no serà l'argument de línia d'ordres en primer lloc, 413 00:29:58,540 --> 00:30:05,080 que serà la segona, i com pot veure aquí, 414 00:30:05,080 --> 00:30:11,790 Em convertir això en un nombre sencer. 415 00:30:15,740 --> 00:30:19,230 Llavors em vaig a posar a un personatge que es r. 416 00:30:19,230 --> 00:30:23,970 Observeu que el tipus de la variable CHR és en realitat un enter. 417 00:30:23,970 --> 00:30:30,480 La manera com sóc capaç d'utilitzar r com un enter és per tancar amb aquestes cometes simples. 418 00:30:33,850 --> 00:30:40,560 Així que tornem al nostre estat de printf en què tenim un marcador per un caràcter 419 00:30:40,560 --> 00:30:43,590 i llavors un marcador de posició per a un nombre enter, 420 00:30:43,590 --> 00:30:49,450 el caràcter es representa per la CDH, i el sencer és la clau. 421 00:30:49,450 --> 00:30:54,320 I llavors anem a afegir en conseqüència els 2 junts. 422 00:30:54,320 --> 00:30:58,420 Així que anem a afegir r + sigui quina sigui la clau és, 423 00:30:58,420 --> 00:31:03,520 i després anem a imprimir el resultat d'això. 424 00:31:06,210 --> 00:31:14,220 Així que farem ASCIIMath. És fins ara, així que anem a executar ASCIIMath. 425 00:31:14,220 --> 00:31:18,290 Oh, però mira, no fa res, perquè en realitat no ens donen una clau. 426 00:31:18,290 --> 00:31:23,850 Així que quan un acaba de tornar, la nostra funció principal, que acaba de tornar de nou a nosaltres. 427 00:31:23,850 --> 00:31:29,250 Així que anem a passar a una tecla. Que algú em doni un nombre. >> [Estudiant] 4. 428 00:31:29,250 --> 00:31:30,920 4. Bé. 429 00:31:30,920 --> 00:31:39,280 Així r augmentar en 4 ens donarà v, que es correspon amb el valor ASCII de 118. 430 00:31:39,280 --> 00:31:43,880 Llavors és com que té sentit que - 431 00:31:43,880 --> 00:31:51,250 En realitat, et puc preguntar, què creu vostè que el valor ASCII de r és si r + 4 és 118? 432 00:31:53,070 --> 00:31:55,470 Llavors sí, r és 114. 433 00:31:55,470 --> 00:32:03,010 Així que si ens fixem en la taula ASCII i després, per descomptat, vostè veurà que r està representada per 114. 434 00:32:03,010 --> 00:32:08,610 Així que ara que sabem que podem sumar enters a caràcters, això sembla bastant simple. 435 00:32:08,610 --> 00:32:12,740 Només anem a iterar sobre una cadena com vam veure en l'exemple anterior. 436 00:32:12,740 --> 00:32:17,170 Anem a comprovar si es tracta d'una carta. 437 00:32:17,170 --> 00:32:20,420 Si és així, llavors ho canviarem pel que la clau és. 438 00:32:20,420 --> 00:32:23,650 Bastant simple, excepte quan s'arriba a agradar això, 439 00:32:23,650 --> 00:32:32,140 es veu que z, representat per 122, llavors li donaria un caràcter diferent. 440 00:32:32,140 --> 00:32:37,770 En realitat vol quedar al nostre alfabet, no? 441 00:32:37,770 --> 00:32:43,180 Així que hem de buscar la manera de tipus d'embolicar al voltant. 442 00:32:43,180 --> 00:32:47,190 En arribar a zed i desitja augmentar en un cert nombre, 443 00:32:47,190 --> 00:32:51,230 no vull entrar en més enllà de la secció alfabet ASCII; 444 00:32:51,230 --> 00:32:54,140 voleu ajustar de nou tot el camí fins A. 445 00:32:54,140 --> 00:32:58,550 Però tingui en compte que vostè està preservant el cas. 446 00:32:58,550 --> 00:33:00,980 Així que sabent que les lletres no poden convertir-se en símbols 447 00:33:00,980 --> 00:33:05,290 igual que els símbols no estaran canviant. 448 00:33:05,290 --> 00:33:08,170 En l'últim conjunt de processadors que definitivament no era necessari, 449 00:33:08,170 --> 00:33:14,310 però l'opció era implementar el seu pset cobdiciós amb la funció mòdul. 450 00:33:14,310 --> 00:33:17,230 Però ara estem en realitat va a haver d'utilitzar el mòdul, 451 00:33:17,230 --> 00:33:19,900 així que anem a anar sobre això una mica. 452 00:33:19,900 --> 00:33:26,920 Bàsicament, quan es té x mòdul i, que li dóna la resta de dividir x per i. 453 00:33:26,920 --> 00:33:30,930 Aquests són alguns exemples. Tenim un 27% 15. 454 00:33:30,930 --> 00:33:36,200 Bàsicament, quan es resta 15 del 27 tantes vegades com sigui possible sense arribar negatiu 455 00:33:36,200 --> 00:33:39,060 llavors vostè aconsegueix 12 sobres. 456 00:33:39,060 --> 00:33:44,650 Així que això és una mica com en el context de les matemàtiques, però com podem realment utilitzar això? 457 00:33:44,650 --> 00:33:47,100 Això serà útil per al nostre wrapover. 458 00:33:47,100 --> 00:33:55,420 Per això, anem a dir li vaig demanar a tots que es divideixen en 3 grups. 459 00:33:55,420 --> 00:33:58,010 De vegades ho fa en grup i alguna cosa per l'estil. 460 00:33:58,010 --> 00:34:01,320 Diguem que jo vaig dir: "Bé, jo vull que tots es divideix en 3". 461 00:34:01,320 --> 00:34:04,240 Com podria fer això? 462 00:34:04,240 --> 00:34:06,810 [Resposta dels estudiants inaudible] Sí, exactament. Compti. Bé. 463 00:34:06,810 --> 00:34:10,260 Farem això en realitat. Vols començar? 464 00:34:10,260 --> 00:34:13,810 [Estudiants comptant] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Però recorda ... >> [Estudiant] Oh, ho sento. 466 00:34:16,620 --> 00:34:18,730 Aquest és un punt molt bo. 467 00:34:18,730 --> 00:34:24,130 Vas dir 4, però en realitat vull que diguis 1 perquè només volem 3 grups. 468 00:34:24,130 --> 00:34:30,159 Llavors, com - No, això és un exemple molt bo, perquè llavors, com pot vostè dir 1? 469 00:34:30,159 --> 00:34:33,370 Quina és la relació entre el 4 i 1? 470 00:34:33,370 --> 00:34:36,760 Bé, mod 3 4 1. 471 00:34:36,760 --> 00:34:41,460 Així que si vostè continua, vostè seria 2. 472 00:34:41,460 --> 00:34:44,540 Així disposem de 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Un cop més, vostè és en realitat la 5 ª persona. Com saps que dir 2 en lloc de 5? 474 00:34:49,420 --> 00:34:53,760 Vostè diu mod 3 5 2. 475 00:34:53,760 --> 00:34:59,100 Vull veure quants grups de 3 es queda, llavors quin ordre sóc jo 476 00:34:59,100 --> 00:35:02,860 I llavors si continuem per tota l'habitació, 477 00:35:02,860 --> 00:35:07,760 llavors veuríem que en realitat sempre estem aplicant la funció mod a nosaltres mateixos 478 00:35:07,760 --> 00:35:09,990 comptar tipus de descompte. 479 00:35:09,990 --> 00:35:14,490 Aquest és un tipus més d'exemple tangible de com pot utilitzar mòdul 480 00:35:14,490 --> 00:35:17,960 perquè estic segur que la majoria de nosaltres hem passat per aquest procés 481 00:35:17,960 --> 00:35:19,630 on hem tingut que compte. 482 00:35:19,630 --> 00:35:21,840 Qualsevol pregunta sobre mòdul? 483 00:35:21,840 --> 00:35:25,360 Serà molt important entendre els conceptes d'aquesta, 484 00:35:25,360 --> 00:35:28,640 per la qual cosa pot mirar vostès entenen. 485 00:35:28,640 --> 00:35:34,660 [Estudiant] Si no hi ha resta, se li donarà el nombre real? 486 00:35:34,660 --> 00:35:40,430 Si un dels 3 primer d'ells ho havia fet, hauria donat el que realment eren, 487 00:35:40,430 --> 00:35:43,310 o l'hi han donat [inaudible] >> Això és una bona pregunta. 488 00:35:43,310 --> 00:35:48,750 Quan no hi ha resta per al mòdul - així que vostè té 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 que en realitat et retorna 0. 490 00:35:53,670 --> 00:35:57,290 Anem a parlar d'això una mica més tard. 491 00:35:58,810 --> 00:36:07,720 Ah, sí, per exemple, la 3 ª persona - 3 mod 3 és realment 0, però ella va dir 3. 492 00:36:07,720 --> 00:36:14,900 Així que és una mena de captura interna, per exemple, 493 00:36:14,900 --> 00:36:17,620 com bé, si el mod és 0, llavors jo seré la 3 ª persona. 494 00:36:17,620 --> 00:36:22,740 Però entrarem en una mena de com podem voler tractar amb el que 0 és tard. 495 00:36:22,740 --> 00:36:32,750 Així que ara que d'alguna manera tenen una forma de fer un mapa el zed a la lletra correcta. 496 00:36:32,750 --> 00:36:34,920 Així que ara que hem arribat a través d'aquests exemples, 497 00:36:34,920 --> 00:36:37,880 quin tipus de veure com Cèsar podria funcionar. 498 00:36:37,880 --> 00:36:42,640 Vostè veu els dos alfabets i després els veus canviant. 499 00:36:42,640 --> 00:36:44,430 Així que anem a tractar d'expressar que en termes de la fórmula. 500 00:36:44,430 --> 00:36:46,940 Aquesta fórmula es dóna realment a vostè en l'especificació, 501 00:36:46,940 --> 00:36:52,070 però bé anem a mirar a través del que significa cada variable. 502 00:36:52,070 --> 00:36:55,000 El nostre resultat final serà el text xifrat. 503 00:36:55,000 --> 00:36:58,300 Així que això ens diu que el caràcter d'ordre i del text xifrat 504 00:36:58,300 --> 00:37:02,500 va a correspondre al caràcter i-èsim del text pla. 505 00:37:02,500 --> 00:37:08,130 Això té sentit, perquè volem estar sempre alineant aquestes coses. 506 00:37:08,130 --> 00:37:13,480 Així que serà el caràcter d'ordre i del text xifrat k plus, que és la nostra clau - 507 00:37:13,480 --> 00:37:17,230 que té sentit - i llavors tenim aquest mod 26. 508 00:37:17,230 --> 00:37:19,860 Recorda quan vam tenir la zed 509 00:37:19,860 --> 00:37:24,190 nosaltres no volem entrar en el personatge, així que volia mod 510 00:37:24,190 --> 00:37:26,540 i el tipus d'embolcall al voltant de l'alfabet. 511 00:37:26,540 --> 00:37:33,430 Després de zed anirà a, b, c, d, fins que va arribar al nombre correcte. 512 00:37:33,430 --> 00:37:44,690 Així que sabem que zed, si + 6, ens donaria f zed perquè després ve a, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Així que recordarem que sabem del cert que zed + 6 ens donarà f. 514 00:37:52,530 --> 00:38:03,530 En valors ASCII, z és de 122 i F 102. 515 00:38:03,530 --> 00:38:10,570 Així que hem de trobar alguna manera de fer que la nostra fórmula Cèsar ens donen 102 516 00:38:10,570 --> 00:38:13,590 després de prendre en 122. 517 00:38:13,590 --> 00:38:19,550 Així que si només s'aplica aquesta fórmula, el% ('z' + 6) 26, que en realitat li dóna 24 518 00:38:19,550 --> 00:38:25,980 perquè 122 + 6 és de 128, 128 26% li dóna 24 restants. 519 00:38:25,980 --> 00:38:29,140 Però això no vol dir realment f. Això definitivament no és 102. 520 00:38:29,140 --> 00:38:33,590 Això no és també la sisena lletra de l'alfabet. 521 00:38:33,590 --> 00:38:41,550 Així que, òbviament, hem de tenir alguna manera d'ajustar això una mica. 522 00:38:42,970 --> 00:38:51,340 En termes de l'alfabet corrent, sabem que z és la lletra 26 i F és la sisena. 523 00:38:51,340 --> 00:38:55,460 Però estem en ciències de la computació, per la qual cosa anem a índex a 0. 524 00:38:55,460 --> 00:39:00,690 Així que en lloc de z és el nombre 26, direm que és el número 25 525 00:39:00,690 --> 00:39:02,630 perquè a és 0. 526 00:39:02,630 --> 00:39:04,770 Així que ara anem a aplicar aquesta fórmula. 527 00:39:04,770 --> 00:39:11,710 Tenim z representat per 25 + 6, el que li dóna 31. 528 00:39:11,710 --> 00:39:15,790 I 31 mod 26 li dóna 5 com una resta. 529 00:39:15,790 --> 00:39:20,500 Això és perfecte, perquè sabem que f és la cinquena lletra de l'alfabet. 530 00:39:20,500 --> 00:39:26,400 Però encara no és f, oi? Encara no és 102. 531 00:39:26,400 --> 00:39:32,730 Així que per aquest conjunt de processadors, el desafiament serà tractar d'esbrinar la relació 532 00:39:32,730 --> 00:39:36,910 entre la conversió entre aquests valors ASCII i l'índex alfabètic. 533 00:39:36,910 --> 00:39:40,280 Essencialment, el que vostè vol fer, vol començar amb els valors ASCII, 534 00:39:40,280 --> 00:39:45,390 però llavors vostè vol traduir d'alguna manera que en un índex alfabètic 535 00:39:45,390 --> 00:39:52,610 després calcular quina lletra ha de ser - bàsicament, el que el seu índex alfabètic és 536 00:39:52,610 --> 00:39:57,660 del caràcter de xifrat - després traduir això als valors ASCII. 537 00:39:57,660 --> 00:40:04,870 Així que si vostè fuet del seu taula ASCII, a continuació, tractar de trobar relacions entre, per exemple, 102 i 5 538 00:40:04,870 --> 00:40:10,440 o el 122 i 25. 539 00:40:12,140 --> 00:40:15,690 Hem rebut la clau dels arguments de línia de comandes, hem rebut el text en clar, 540 00:40:15,690 --> 00:40:17,520 ho hem xifrat. 541 00:40:17,520 --> 00:40:19,820 Ara tot el que queda per fer és imprimir-lo. 542 00:40:19,820 --> 00:40:22,040 Podríem fer això un parell de maneres diferents. 543 00:40:22,040 --> 00:40:24,570 El que podem fer és imprimir en realitat a mesura que avancem. 544 00:40:24,570 --> 00:40:28,250 En iterar sobre els caràcters de la cadena, 545 00:40:28,250 --> 00:40:31,660 podríem simplement imprimir només en aquell moment quan el calculem. 546 00:40:31,660 --> 00:40:36,030 Com a alternativa, també es pot emmagatzemar en una matriu i tenen una sèrie de caràcters 547 00:40:36,030 --> 00:40:39,280 i al final iterar sobre aquesta matriu sencera i imprimir-lo. 548 00:40:39,280 --> 00:40:40,980 Així que tens un parell d'opcions per a això. 549 00:40:40,980 --> 00:40:47,280 I recorda que% c serà el marcador de posició per a la impressió d'un caràcter. 550 00:40:47,280 --> 00:40:50,420 Així que tenim Cèsar, i ara passem a Vigenère, 551 00:40:50,420 --> 00:40:57,580 que és molt similar a Cèsar, però només una mica més complex. 552 00:40:57,580 --> 00:41:03,310 Per tant, bàsicament amb Vigenère és que estarà passant en una paraula clau. 553 00:41:03,310 --> 00:41:06,510 Així que en lloc d'un nombre, tindrem una cadena, 554 00:41:06,510 --> 00:41:09,200 i pel que va actua com a paraula clau. 555 00:41:09,200 --> 00:41:14,440 Llavors, com sempre, arribarà l'avís d'una cadena de l'usuari 556 00:41:14,440 --> 00:41:19,050 i després xifrar i després donar-los l'esquena text xifrat. 557 00:41:19,050 --> 00:41:24,650 Així que com he dit, és molt similar a la de César, però en lloc de canviar per un cert nombre, 558 00:41:24,650 --> 00:41:30,620 el nombre és en realitat canviarà cada vegada d'un personatge a un altre. 559 00:41:30,620 --> 00:41:34,890 Representar que el nombre real de canviar, és representat per les lletres del teclat. 560 00:41:34,890 --> 00:41:43,150 Així que si s'introdueix en un canvi d'una, per exemple, a continuació, que correspondria a un canvi de 0. 561 00:41:43,150 --> 00:41:45,900 Així que és de nou per tornar a l'índex alfabètic. 562 00:41:45,900 --> 00:41:49,100 Quin podria ser útil si veient que en realitat estem tractant amb valors ASCII 563 00:41:49,100 --> 00:41:51,790 així com les lletres, així com l'índex alfabètic, 564 00:41:51,790 --> 00:41:58,020 potser trobar o fer la seva pròpia taula ASCII que mostra l'índex alfabètic de 0 a 25, 565 00:41:58,020 --> 00:42:03,750 az, i els valors ASCII de manera que vostè pot veure el tipus de relació 566 00:42:03,750 --> 00:42:07,020 i esbossar i tractar de trobar alguns patrons. 567 00:42:07,020 --> 00:42:11,010 De la mateixa manera, si vostè estava canviant en la instància determinada per f - 568 00:42:11,010 --> 00:42:21,110 i això és o bé f minúscula o majúscula - a continuació, que correspondria a 5. 569 00:42:21,110 --> 00:42:24,180 Estem bé fins ara? 570 00:42:25,770 --> 00:42:30,050 La fórmula de Vigenère és una mica diferent. 571 00:42:30,050 --> 00:42:32,960 Bàsicament, es veu que és igual que Cèsar, 572 00:42:32,960 --> 00:42:37,390 però en lloc de k tenim k sol índex j. 573 00:42:37,390 --> 00:42:44,810 Tingueu en compte que no estem usant i perquè en essència, la longitud de la paraula clau 574 00:42:44,810 --> 00:42:49,850 no és necessàriament la longitud del nostre text xifrat. 575 00:42:49,850 --> 00:42:56,130 Aquest serà una mica més clar quan veiem un exemple que tinc una mica més endavant. 576 00:42:56,130 --> 00:43:03,160 Bàsicament, si executa el programa amb una paraula clau de ohai, 577 00:43:03,160 --> 00:43:08,560 llavors això vol dir que cada vegada, ohai serà el teu torn. 578 00:43:08,560 --> 00:43:11,060 Així que depenent de quina posició està en la paraula clau, 579 00:43:11,060 --> 00:43:15,800 que canviarà el seu caràcter determinat text xifrat en aquesta quantitat. 580 00:43:15,800 --> 00:43:19,630 Un cop més, com Cèsar, volem assegurar-nos de preservar la capitalització de les coses 581 00:43:19,630 --> 00:43:22,900 i nosaltres només lletres xifrar i no caràcters o espais. 582 00:43:22,900 --> 00:43:26,330 Així que mirar cap enrere a Cèsar en les funcions que vostè va poder haver utilitzat, 583 00:43:26,330 --> 00:43:32,570 la manera com vostè decideix com canviar les coses, i aplicar això al seu programa aquí. 584 00:43:32,570 --> 00:43:35,260 Així que anem a mapejar això. 585 00:43:35,260 --> 00:43:39,680 Comptem amb un text clar que hem rebut per part de l'usuari de GetString 586 00:43:39,680 --> 00:43:44,090 En dir això ... CS50 és! 587 00:43:44,090 --> 00:43:47,090 Llavors tenim una paraula clau de ohai. 588 00:43:47,090 --> 00:43:50,930 Els 4 primers caràcters són bastant simples. 589 00:43:50,930 --> 00:43:55,580 Sabem que T serà desplaçat per O, 590 00:43:55,580 --> 00:44:01,990 llavors h serà desplaçat per h, i serà desplaçat per una. 591 00:44:01,990 --> 00:44:04,610 Aquí veiem que a representa 0, 592 00:44:04,610 --> 00:44:11,940 així, el valor final és en realitat la mateixa lletra que abans. 593 00:44:11,940 --> 00:44:15,250 Llavors s és desplaçat per i. 594 00:44:15,250 --> 00:44:19,370 Però llavors vostè té aquests períodes aquí. 595 00:44:19,370 --> 00:44:25,960 No volem que per xifrar, de manera que llavors no ho canvio per res 596 00:44:25,960 --> 00:44:31,280 i només imprimir el període sense canvis. 597 00:44:31,280 --> 00:44:38,020 [Estudiant] No entenc com saps que aquesta es desplaça per - D'on et - >> Oh, ho sento. 598 00:44:38,020 --> 00:44:41,620 A la part superior es veu que aquí la línia d'ordres ohai argument aquí, 599 00:44:41,620 --> 00:44:43,740 que serà la paraula clau. 600 00:44:43,740 --> 00:44:49,550 Així que, bàsicament, estàs amb bicicleta a través dels personatges de la paraula clau. 601 00:44:49,550 --> 00:44:52,020 [Estudiant] Així que o es desplaçarà el mateix - 602 00:44:52,020 --> 00:44:56,260 Així O correspon a un cert nombre en l'alfabet. 603 00:44:56,260 --> 00:44:58,400 [Estudiant] Dret. Però, d'on vas treure la part de CS50? 604 00:44:58,400 --> 00:45:02,540 Oh. Això està en GetString on vostè és com, "Dóna'm una cadena a codificar." 605 00:45:02,540 --> 00:45:07,510 [Estudiant] Ells et donaran aquest argument per canviar per 606 00:45:07,510 --> 00:45:09,380 i llavors us preguntarà la seva primera cadena. Sí >>. 607 00:45:09,380 --> 00:45:12,440 Així que quan s'executa el programa, s'inclouran la paraula clau 608 00:45:12,440 --> 00:45:14,740 en els seus arguments de línia d'ordres quan s'executa. 609 00:45:14,740 --> 00:45:19,740 Després, un cop que hagi comprovat que en realitat han donat una i no més, ni menys, 610 00:45:19,740 --> 00:45:23,750 llavors vostè va a sol · licitar una cadena, per exemple: "Dóna'm una cadena." 611 00:45:23,750 --> 00:45:27,630 Així que aquí és on en aquest cas s'ha donat aquesta ... CS50 és! 612 00:45:27,630 --> 00:45:32,090 Així que vas a utilitzar i l'ús que ohai i iterar. 613 00:45:32,090 --> 00:45:38,200 Recordeu que aquí ens saltem sobre l'encriptació dels períodes, 614 00:45:38,200 --> 00:45:51,660 però pel que fa a la nostra posició per ohai, el següent que fem servir o. 615 00:45:51,660 --> 00:45:54,990 En aquest cas és una mica més difícil de veure perquè és 4, 616 00:45:54,990 --> 00:45:57,710 així que seguirem una mica. Només queda't amb mi aquí. 617 00:45:57,710 --> 00:46:02,960 Llavors tenim i i s, que després es tradueixen per O i H, respectivament. 618 00:46:02,960 --> 00:46:09,370 Llavors tenim un espai, i així llavors sabem que no anem a xifrar els espais. 619 00:46:09,370 --> 00:46:18,930 Però cal notar que, en lloc d'anar a una en aquest lloc aquí, 620 00:46:18,930 --> 00:46:28,330 estem xifrant per un - no sé si es pot veure que - aquí mateix. 621 00:46:28,330 --> 00:46:33,710 Així que no és com si en realitat predeterminat, per exemple, o va aquí, h va aquí, 622 00:46:33,710 --> 00:46:39,200 una va aquí, em va aquí, o, h, a., i, o, h, a, i No facis això. 623 00:46:39,200 --> 00:46:43,760 Només canviar la seva posició en la paraula clau 624 00:46:43,760 --> 00:46:51,020 quan vostè sap que vostè està realment va a xifrar una lletra real. 625 00:46:51,020 --> 00:46:53,920 Té aquesta mena de sentit? 626 00:46:53,920 --> 00:46:55,800 Bé. 627 00:46:56,490 --> 00:46:58,500 Així que només alguns recordatoris. 628 00:46:58,500 --> 00:47:03,760 Vostè vol assegurar-se que només avançar a la següent lletra de la paraula clau 629 00:47:03,760 --> 00:47:06,390 si el personatge en el seu text pla és una lletra. 630 00:47:06,390 --> 00:47:09,120 Així que dir que estem al o. 631 00:47:09,120 --> 00:47:19,310 Ens adonem que el següent caràcter, l'índex i del text pla, és un nombre, per exemple. 632 00:47:19,310 --> 00:47:31,630 Llavors no avancem j, l'índex de paraules clau, fins a arribar una altra carta. 633 00:47:31,630 --> 00:47:36,230 Un cop més, vostè també vol assegurar-se que vostè envoltant al principi de la paraula clau 634 00:47:36,230 --> 00:47:37,770 quan ets al final de la mateixa. 635 00:47:37,770 --> 00:47:42,030 Si vostè veu aquí estem en i, el següent ha de ser o. 636 00:47:42,030 --> 00:47:47,690 Així que vostè vol trobar la manera de poder envoltant al principi de la paraula clau 637 00:47:47,690 --> 00:47:49,470 cada vegada que s'arriba al final. 638 00:47:49,470 --> 00:47:55,040 I de nou, quin tipus d'operador és útil en aquest cas per embolicar al voltant? 639 00:47:56,630 --> 00:47:59,840 Igual que en el recompte d'exemple. 640 00:47:59,840 --> 00:48:03,710 [Estudiant] El signe de percentatge. >> Sí, el signe de percentatge, que és mòdul. 641 00:48:03,710 --> 00:48:11,250 Així mòdul serà molt útil aquí quan voleu ajustar l'índex en el seu ohai. 642 00:48:11,250 --> 00:48:17,700 I només una pista ràpida: Intenta pensar d'embolicar sobre la paraula clau una mica com la de comptar, 643 00:48:17,700 --> 00:48:23,590 on si hi ha 3 grups, la persona quart, 644 00:48:23,590 --> 00:48:30,610 el nombre que va dir va ser 4 mod 3, que va ser d'1. 645 00:48:30,610 --> 00:48:32,880 Així que tractar de pensar-hi d'aquesta manera. 646 00:48:34,770 --> 00:48:42,740 Com es va veure en la fórmula, sempre que tinguis i després ci pi però després kj, 647 00:48:42,740 --> 00:48:44,700 vostè voldrà assegurar-se que vostè mantingui un registre de les persones. 648 00:48:44,700 --> 00:48:47,580 No cal que ho digui jo, no cal dir-j, 649 00:48:47,580 --> 00:48:53,270 però pot mirar el seguiment de la posició que vostè està en text pla en la seva 650 00:48:53,270 --> 00:48:55,790 així com la posició que vostè està en la seva paraula clau 651 00:48:55,790 --> 00:48:59,840 perquè aquests no són necessàriament serà el mateix. 652 00:48:59,840 --> 00:49:06,400 No només la paraula clau - que podria ser una longitud completament diferent del seu text clar. 653 00:49:06,400 --> 00:49:09,140 A més, el seu text clar, hi ha números i caràcters, 654 00:49:09,140 --> 00:49:14,450 pel que no va a coincidir perfectament junts. Sí 655 00:49:14,450 --> 00:49:19,280 [Estudiant] Hi ha una funció per alternar majúscules i minúscules? 656 00:49:19,280 --> 00:49:24,530 Es pot canviar una a majúscula? >> Sí, definitivament ho és. 657 00:49:24,530 --> 00:49:27,890 Vostè pot comprovar fora - Crec que és ToUpper, tota paraula 1. 658 00:49:30,650 --> 00:49:36,310 Però quan vostè està tractant de xifrar les coses i utilitzar el text, 659 00:49:36,310 --> 00:49:39,350 el millor és bàsicament tenir causes diferents. 660 00:49:39,350 --> 00:49:42,040 Si es tracta d'una majúscula, llavors vostè vol canviar per aquest 661 00:49:42,040 --> 00:49:46,460 perquè en la fórmula, quan un mira cap enrere com hem de tipus de govern 662 00:49:46,460 --> 00:49:50,900 indistintament entre la forma d'ASCII que representa els nombres 663 00:49:50,900 --> 00:49:55,020 i el mateix índex alfabètic, que vol assegurar-se 664 00:49:55,020 --> 00:50:01,850 que hi haurà algun tipus de patró que s'utilitzarà. 665 00:50:01,850 --> 00:50:04,580 Una altra nota en el patró, en realitat. 666 00:50:04,580 --> 00:50:07,250 Vostè serà sens dubte tractar amb nombres. 667 00:50:07,250 --> 00:50:11,280 Intenta no utilitzar nombres màgics, que és un exemple d'estil. 668 00:50:11,280 --> 00:50:18,470 Així que dius que vols alguna cosa cada canvi de temps per gust - 669 00:50:18,470 --> 00:50:22,400 Bé, per toc, un altre spoiler és quan vostè estarà canviant alguna cosa 670 00:50:22,400 --> 00:50:26,310 per cert, tracta de no representa que per un nombre real 671 00:50:26,310 --> 00:50:32,810 sinó més aviat tractar de veure si es pot utilitzar el valor ASCII, quin tipus de tenir més sentit. 672 00:50:32,810 --> 00:50:35,470 Una altra nota: Com que estem tractant amb fórmules, 673 00:50:35,470 --> 00:50:41,200 tot i que la seva TF se sap quin tipus de patró que podria estar usant, 674 00:50:41,200 --> 00:50:44,430 millor en la seva classe de comentaris d'explicar la lògica, com, 675 00:50:44,430 --> 00:50:51,880 "Estic fent servir aquest patró perquè ..." i la classe d'explicar el patró de manera succinta en els seus comentaris. 676 00:50:54,090 --> 00:50:58,990 [Aquest tutorial va ser 2] Si no hi ha altres preguntes, llavors em quedaré aquí una mica. 677 00:50:58,990 --> 00:51:04,370 Bona sort amb el seu conjunt de processadors 2: Crypto i gràcies per venir. 678 00:51:06,070 --> 00:51:08,620 [Estudiant] Gràcies. Gràcies >>. 679 00:51:09,220 --> 00:51:10,800 [Intro Mitjans Offline]