1 00:00:00,000 --> 00:00:01,940 [Powered by Google Translate] [Paso a paso - conxunto de problemas 2] 2 00:00:01,940 --> 00:00:04,130 [Zamyla Chan - Harvard University] 3 00:00:05,170 --> 00:00:07,490 [Esta é CS50. CS50.TV] 4 00:00:07,490 --> 00:00:10,750 Todo ben. Ola, todos, e ben benvida ao Paso a paso 2. 5 00:00:10,750 --> 00:00:14,330 En primeiro lugar, quero felicitalo-lo por rematar pset 1. 6 00:00:14,330 --> 00:00:18,140 Sei que podería ter sido un pouco difícil para algúns de vós, 7 00:00:18,140 --> 00:00:20,460 podería ser o seu primeiro programa de ordenador que escribiu, 8 00:00:20,460 --> 00:00:24,500 pero lembre que a finais deste, cando ollar cara atrás a finais do semestre, 9 00:00:24,500 --> 00:00:29,820 vai mirar para pset 1 e vai dicir: "Ei, eu podería ter feito isto en 5 minutos." 10 00:00:29,820 --> 00:00:35,700 Entón coñece e confía que a finais deste vai definitivamente considerar un pset moi sinxelo. 11 00:00:35,700 --> 00:00:40,640 Pero por agora é unha realización enorme, e parabéns polo ser feito. 12 00:00:40,640 --> 00:00:44,010 Agora, tamén, unha nota rápida antes de entrar na carne do paso a paso. 13 00:00:44,010 --> 00:00:48,340 Eu só quero facer unha breve nota que ás veces non ten tempo suficiente 14 00:00:48,340 --> 00:00:52,500 durante as orientacións que pasar por cada única forma de facer o conxunto de problemas 15 00:00:52,500 --> 00:00:56,140 e si cadra só concentrarse nun ou dous tipos de implementacións, 16 00:00:56,140 --> 00:00:57,750 formas que podería facelo. 17 00:00:57,750 --> 00:01:01,970 Pero iso non quere dicir que está prohibido facelo doutro xeito. 18 00:01:01,970 --> 00:01:05,980 Existen moitas veces, como coa informática, moitas formas de facer as cousas, 19 00:01:05,980 --> 00:01:12,190 e así definitivamente sentirse libre para usar un tipo de solución que eu poida ter presentado. 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. Unha sección de preguntas - 1. César - 2. Vigenère] 22 00:01:17,160 --> 00:01:20,650 Todo ben. Entón conxunto de problemas 2: crypto é unha diversión. 23 00:01:20,650 --> 00:01:24,500 Unha vez máis, con todos os pset vai comezar por unha sección de preguntas 24 00:01:24,500 --> 00:01:29,600 que vai ser realizado en súas seccións co seu compañeiro de ensino asignado. 25 00:01:29,600 --> 00:01:31,670 Non imos pasar por estes sobre o paso a paso, 26 00:01:31,670 --> 00:01:35,100 pero sempre vai axudar a completar a pset. 27 00:01:35,100 --> 00:01:38,100 Así, a primeira parte do conxunto de problemas e César. 28 00:01:38,100 --> 00:01:43,470 E así, en César alguén vai pasar-lle unha chave cun número enteiro, 29 00:01:43,470 --> 00:01:48,420 e vai cifrar unha secuencia de texto que fornecen 30 00:01:48,420 --> 00:01:50,670 e darlles de volta unha cousa cifrada. 31 00:01:50,670 --> 00:01:56,050 Se alguén asistiu Unha Historia de Nadal, hai un exemplo de que non hai. 32 00:01:56,050 --> 00:01:59,090 A continuación, a segunda parte do conxunto de problemas e Vigenère, 33 00:01:59,090 --> 00:02:01,790 que é unha técnica máis avanzada de cifrado. 34 00:02:01,790 --> 00:02:05,640 E así imos codificar unha parte do texto, 35 00:02:05,640 --> 00:02:09,600 excepto no canto de só un único número enteiro, en realidade estamos indo a codifica-la 36 00:02:09,600 --> 00:02:13,340 cunha palabra clave que o usuario pode fornecer. 37 00:02:16,270 --> 00:02:22,090 Ok, entón a primeira ferramenta no cadro de ferramentas de hoxe é realmente vai ser a actualización do aparello. 38 00:02:22,090 --> 00:02:26,430 O foro de debate veriamos cousas como, "Por que non funciona?" 39 00:02:26,430 --> 00:02:28,110 "Por que non 50 Enviar traballo?" 40 00:02:28,110 --> 00:02:31,830 e moitas veces a solución é realmente só para actualizar o seu aparello. 41 00:02:31,830 --> 00:02:36,730 E por iso, se vostede acaba de ser executado nunha fiestra de terminal no seu dispositivo sudo yum-y - 42 00:02:36,730 --> 00:02:40,040 que é unha bandeira dicindo que si, actualizar todo - actualización, 43 00:02:40,040 --> 00:02:42,280 a continuación, o aparello pode actualizar necesario. 44 00:02:42,280 --> 00:02:46,960 E non fai mal se xa está na versión máis recente do aparello. 45 00:02:46,960 --> 00:02:51,280 A continuación, el vai só dicir que non hai actualizacións dispoñibles e pode continuar a traballar xuntos. 46 00:02:51,280 --> 00:02:55,800 Pero iso é bo para executar incluso cada vez que abrir o dispositivo 47 00:02:55,800 --> 00:02:57,140 porque aínda estamos moi - 48 00:02:57,140 --> 00:03:00,320 por veces, se entramos nun erro - resolve-lo no aparello. 49 00:03:00,320 --> 00:03:03,180 Entón, asegúrese de que ten a versión máis recente do aparello 50 00:03:03,180 --> 00:03:07,710 e realizar o que actualizar alí. 51 00:03:07,710 --> 00:03:14,360 Todo ben. Entón, xa que estamos lidando con as letras e cambiando, codificación cousas, 52 00:03:14,360 --> 00:03:20,410 imos realmente quere facer o mellor amigo de nosa táboa ASCII. 53 00:03:20,410 --> 00:03:24,350 Existen numerosos liña, se atopa. Quizais mesmo facer o seu propio. 54 00:03:24,350 --> 00:03:29,950 Basicamente, con cada letra e cada número e cada personaxe 55 00:03:29,950 --> 00:03:32,210 existe un número asociado a eles, 56 00:03:32,210 --> 00:03:38,670 e por iso é bo de ver os seus valores ASCII ao lado da letra real. 57 00:03:38,670 --> 00:03:42,310 Isto vai axudar definitivamente no conxunto de problemas. 58 00:03:42,310 --> 00:03:45,750 Unha cousa que realmente me axudou nese conxunto de problemas era, en realidade, imprimir lo, 59 00:03:45,750 --> 00:03:48,380 e como eu estaba pasando, realmente usalo, 60 00:03:48,380 --> 00:03:51,150 escribir: "Se este ten que ir para alí, entón ..." 61 00:03:51,150 --> 00:03:55,270 Tipo de usalo e marcalo, facer-se a mellor amiga da súa táboa ASCII. 62 00:03:57,240 --> 00:04:00,750 Entón temos algunhas outras ferramentas á nosa disposición. 63 00:04:00,750 --> 00:04:03,750 Esta vez, en vez de realmente avisar o usuario para toda a súa entrada 64 00:04:03,750 --> 00:04:05,230 imos facer unha combinación. 65 00:04:05,230 --> 00:04:06,880 Nós imos leva-los a algunha entrada, 66 00:04:06,880 --> 00:04:11,350 pero nós tamén imos usar só os argumentos de liña de comandos. 67 00:04:11,350 --> 00:04:15,600 Entón, cando eles corren o programa, xeralmente di. / Ola, por exemplo, 68 00:04:15,600 --> 00:04:17,310 o seu programa foi hello.c. 69 00:04:17,310 --> 00:04:22,500 Pero, desta vez, en vez de só dicir que, poden poñer palabras, argumentos despois. 70 00:04:22,500 --> 00:04:27,210 E así imos usar o que eles pasan para nós como a súa contribución, así como, 71 00:04:27,210 --> 00:04:31,720 tan conmovedora ademais de só solicitando enteiro, pero tamén usando argumentos de liña de comandos. 72 00:04:31,720 --> 00:04:36,590 E despois imos en matrices e cadeas, que imos estar usando moi ben. 73 00:04:41,460 --> 00:04:44,810 Aquí é só un exemplo dun gráfico de mini-ASCII. 74 00:04:44,810 --> 00:04:48,460 Como dixen, cada letra representa un número, 75 00:04:48,460 --> 00:04:52,510 e así familiarizarse con iso. El vai vir a cadra. 76 00:04:52,510 --> 00:04:55,610 E máis tarde, cando comezar a facer algúns ASCIIMath xestionar os números - 77 00:04:55,610 --> 00:05:00,110 engadir, subtrair-los -, entón definitivamente bo para referirse a este gráfico. 78 00:05:02,860 --> 00:05:06,920 Entón, aquí está un exemplo dunha cifra de César - algo que pode xogar. 79 00:05:06,920 --> 00:05:11,190 É só unha roda. Esencialmente, existe un alfabeto exterior e, a continuación, hai un alfabeto interior. 80 00:05:11,190 --> 00:05:15,290 Entón, aquí está un exemplo da cifra de César, pero con unha chave de 0. 81 00:05:15,290 --> 00:05:21,540 Esencialmente, un está vencellada con A, B está aliñado con B, todo o camiño ata Z. 82 00:05:21,540 --> 00:05:26,590 Pero, entón, dicir que quería unha chave de tres, por exemplo. 83 00:05:26,590 --> 00:05:33,280 Entón nós xirar a roda interna de modo que a agora aliñar con D, etc 84 00:05:33,280 --> 00:05:35,250 E así, este é, esencialmente, o que imos facer. 85 00:05:35,250 --> 00:05:38,340 Nós non temos unha roda, pero o que imos facer é facer o noso programa 86 00:05:38,340 --> 00:05:44,490 tipo de desprazar o alfabeto con nós unha certa cantidade de números. 87 00:05:44,490 --> 00:05:48,650 Entón, como eu dixen antes, nós imos estar lidando con argumentos de liña de comandos 88 00:05:48,650 --> 00:05:50,390 así como a obtención dun número enteiro. 89 00:05:50,390 --> 00:05:55,050 Así, a forma que un usuario pode realizar o seu programa de César é por dicir. / Caesar 90 00:05:55,050 --> 00:05:58,090 e, a continuación, escriba un número despois diso. 91 00:05:58,090 --> 00:06:01,130 E ese número representa a clave, o cambio, 92 00:06:01,130 --> 00:06:06,740 cantas veces vai estar xirando a roda interior da súa cifra de César. 93 00:06:06,740 --> 00:06:08,390 E así que ve aquí un exemplo. 94 00:06:08,390 --> 00:06:14,550 Se entramos as letras de A a L na nosa cifra de César, 95 00:06:14,550 --> 00:06:19,520 entón, sería a entrada D a O, porque é cada letra desprazouse máis de 3 veces, 96 00:06:19,520 --> 00:06:22,080 así como o exemplo da roda que eu mostre. 97 00:06:22,080 --> 00:06:25,300 Entón, se entrou, por exemplo, esta é CS50! 98 00:06:25,300 --> 00:06:27,960 entón sería tamén mover todas as letras. 99 00:06:27,960 --> 00:06:31,040 E iso é unha cousa importante, tanto César e Vigenère 100 00:06:31,040 --> 00:06:34,890 é que nós imos desconsiderar os cartas non. 101 00:06:34,890 --> 00:06:39,160 Entón, todos os espazos, personaxes, etc, números, imos perder los o mesmo. 102 00:06:39,160 --> 00:06:42,920 Só imos cambiar as letras neste caso. 103 00:06:42,920 --> 00:06:45,870 Entón, como ve na roda, só temos as letras dispoñibles para nós, 104 00:06:45,870 --> 00:06:50,150 por iso só quero cambiar as letras e cifrar as letras. 105 00:06:51,370 --> 00:06:56,720 Polo tanto, a primeira cousa que facer, viu que o uso para César en conxunto de problemas 2 106 00:06:56,720 --> 00:07:05,280 é executar César e insira un número cando executa-lo no terminal. 107 00:07:05,280 --> 00:07:10,940 Entón o que necesitamos facer é dalgunha forma obter esa clave e acceder a ela. 108 00:07:10,940 --> 00:07:14,730 E así que queremos dalgunha forma ver que vai ser o argumento segunda liña de comandos. 109 00:07:14,730 --> 00:07:20,950 O primeiro vai ser. / César, eo próximo vai ser o número clave. 110 00:07:22,190 --> 00:07:29,200 Entón, antes de que tivemos int (void) principal para iniciar nosos programas de C. 111 00:07:29,200 --> 00:07:31,790 Estamos indo para pelar unha capa un pouco 112 00:07:31,790 --> 00:07:34,720 e realmente ver que en vez de pasar o baleiro a nosa función principal 113 00:07:34,720 --> 00:07:37,920 en realidade estamos lidando con dous parámetros. 114 00:07:37,920 --> 00:07:44,070 Temos un int argc chamado e despois dun conxunto de cordas chamado argv. 115 00:07:44,070 --> 00:07:46,030 Entón argc é un enteiro, 116 00:07:46,030 --> 00:07:49,640 e representa o número de argumentos pasados ​​para o seu programa. 117 00:07:49,640 --> 00:07:53,590 E entón argv é na verdade a lista de argumentos pasados. 118 00:07:53,590 --> 00:08:00,820 Todos os argumentos son cadeas, e así argv representa unha matriz, unha lista de cadeas. 119 00:08:01,830 --> 00:08:03,990 Imos falar sobre matrices un pouco. 120 00:08:03,990 --> 00:08:05,940 Matrices son esencialmente unha nova estrutura de datos. 121 00:08:05,940 --> 00:08:09,660 Temos ints, temos dobra, temos cordas, e agora temos matrices. 122 00:08:09,660 --> 00:08:13,820 Matrices son estruturas de datos que pode conter varios valores do mesmo tipo, 123 00:08:13,820 --> 00:08:18,320 Entón, basicamente, unha lista de todo tipo que sexa. 124 00:08:18,320 --> 00:08:24,400 Esencialmente, se quería unha lista de enteiros, todo dunha variable, 125 00:08:24,400 --> 00:08:29,090 entón ten que crear unha nova variable, que foi de matriz tipo int. 126 00:08:29,090 --> 00:08:34,450 Entón matrices son con índice cero, o que significa que o primeiro elemento da matriz é o índice 0. 127 00:08:34,450 --> 00:08:41,799 Se a matriz é de lonxitude 4, como neste exemplo, entón o último elemento sería o índice 3, 128 00:08:41,799 --> 00:08:44,810 o cal é 4 - 1. 129 00:08:45,940 --> 00:08:48,420 Polo tanto, para crear matriz, faría algo así. 130 00:08:48,420 --> 00:08:51,440 Digamos que quería unha matriz dupla. 131 00:08:51,440 --> 00:08:56,520 Iso vale para calquera tipo de tipo de datos, con todo. 132 00:08:56,520 --> 00:09:00,210 Entón diga que quere un conxunto dobre. Digamos que queira chamalo de caixa de correo. 133 00:09:00,210 --> 00:09:04,760 Así como iniciar calquera outro matrimonio, 134 00:09:04,760 --> 00:09:09,760 diría parella e logo o nome, pero esta vez imos poñer os corchetes, 135 00:09:09,760 --> 00:09:13,570 e, a continuación, o número haberá a lonxitude da matriz. 136 00:09:13,570 --> 00:09:16,840 Nótese que nas matrices que non pode xa modificar a lonxitude, 137 00:09:16,840 --> 00:09:21,230 así sempre ten que definir e escoller cantas caixas, 138 00:09:21,230 --> 00:09:25,440 cantos valores a matriz vai realizar. 139 00:09:25,440 --> 00:09:31,820 Así, para definir valores diferentes na súa matriz, vai usar esa sintaxe seguinte 140 00:09:31,820 --> 00:09:33,200 como podes ver no slide. 141 00:09:33,200 --> 00:09:37,620 Ten 0 índice de caixa será definido para 1,2, 142 00:09:37,620 --> 00:09:42,180 caixa de correo índice de 1 set a 2.4, etc 143 00:09:42,180 --> 00:09:47,910 Polo tanto, agora que revimos matrices un pouco, imos voltar a argc e argv. 144 00:09:47,910 --> 00:09:52,220 Sabemos que argv é agora unha matriz de cadeas. 145 00:09:52,220 --> 00:09:55,080 Así, cando un usuario pasa - din que está executando un programa - 146 00:09:55,080 --> 00:09:58,740 eles din. / Ola David Malan, 147 00:09:58,740 --> 00:10:05,160 o que o programa vai facer por ti é xa, de feito, vir cara arriba co argc e argv son. 148 00:10:05,160 --> 00:10:07,620 Así que non se preocupe con iso. 149 00:10:07,620 --> 00:10:14,370 Argc, neste caso, sería de 3 porque ve tres palabras distintas separadas por espazos. 150 00:10:14,370 --> 00:10:18,850 E entón a matriz, neste caso, o primeiro índice sería. / Ola, 151 00:10:18,850 --> 00:10:21,770 seguinte David, o Malan próximo. 152 00:10:21,770 --> 00:10:25,640 Alguén ve inmediatamente que a relación entre argv, 153 00:10:25,640 --> 00:10:28,990  a matriz, e argc é? 154 00:10:32,820 --> 00:10:38,090 Si Nós imos entrar que un exemplo de args.c. 155 00:10:38,090 --> 00:10:42,880 Imos ver se podemos sacar proveito da relación entre o 2. 156 00:10:42,880 --> 00:10:46,550 Aquí pode considerar que o aparello a aplicación por defecto 157 00:10:46,550 --> 00:10:49,450 para abrir ficheiros. C ás veces é Emacs. 158 00:10:49,450 --> 00:10:54,660 Pero queremos tratar con gedit, entón o que podes facer é que pode prema co botón dereito sobre o arquivo C, 159 00:10:54,660 --> 00:11:04,580 vaia Propiedades, Abrir con e, a continuación, escolla gedit, definido por defecto, 160 00:11:04,580 --> 00:11:13,020 e agora o programa debe abrir o gedit en vez de Emacs. 161 00:11:14,710 --> 00:11:16,290 Perfecto. 162 00:11:17,120 --> 00:11:25,520 Entón aquí eu teño un programa que quero imprimir cada argumento de liña de comandos. 163 00:11:25,520 --> 00:11:32,050 Entón o que o usuario inserir, quero esencialmente devolve-lo de volta para eles en unha nova liña. 164 00:11:32,050 --> 00:11:36,710 Entón, o que é unha estrutura que pode usar para iterar sobre algo - 165 00:11:36,710 --> 00:11:40,380 algo que probablemente usado en seu 1 pset? 166 00:11:40,380 --> 00:11:45,840 Se queres pasar por un determinado número de cousas? >> [Alumno] Para loop. 167 00:11:45,840 --> 00:11:48,910 Para loop. Exactamente. Entón, imos comezar co loop for. 168 00:11:48,910 --> 00:11:56,900 Temos a int i = 0. Imos comezar por unha variable de inicio por defecto. 169 00:11:56,900 --> 00:12:02,370 Eu vou deixar a condición dun conxunto e, a continuación, dicir que eu + +, vai facer as cousas alí. 170 00:12:02,370 --> 00:12:04,090 Todo ben. 171 00:12:04,090 --> 00:12:11,590 Entón, a pensar de volta para argv, argv, a lista de argumentos pasados ​​para o programa 172 00:12:11,590 --> 00:12:15,380 e argc é o número de argumentos no programa, 173 00:12:15,380 --> 00:12:21,280 a continuación, o que significa que argc é esencialmente da lonxitude da argv, dereita, 174 00:12:21,280 --> 00:12:28,970 porque non van ser tantos argumentos como o valor argc. 175 00:12:28,970 --> 00:12:35,910 Polo tanto, se queremos iterar sobre cada elemento na argv, 176 00:12:35,910 --> 00:12:43,290 imos querer cada vez acceder á variable en argv no índice indicado. 177 00:12:43,290 --> 00:12:49,060 Que pode ser representado con iso, non? 178 00:12:49,060 --> 00:12:53,430 Esta variable representa aquí a secuencia particular neste caso 179 00:12:53,430 --> 00:12:57,030 porque é unha matriz de cadea - a cadea particular aquel determinado índice. 180 00:12:57,030 --> 00:13:00,690 O que queremos facer, neste caso, queremos imprimir lo, entón imos dicir que printf. 181 00:13:00,690 --> 00:13:04,680 E agora argv é unha cadea, por iso queremos poñer este espazo reservado alí. 182 00:13:04,680 --> 00:13:08,430 Queremos unha nova liña só para facelo ben. 183 00:13:08,430 --> 00:13:12,530 Polo tanto, temos aquí un lazo para. Non temos a condición aínda. 184 00:13:12,530 --> 00:13:20,020 Entón eu comeza en 0, e despois cada vez que vai imprimir a cadea dada 185 00:13:20,020 --> 00:13:22,980 en que o índice particular na matriz. 186 00:13:22,980 --> 00:13:28,410 Así, cando queremos deixar de imprimir elementos na matriz? 187 00:13:28,410 --> 00:13:35,720 Cando terminarmos, non? Cando chegamos ao fin da matriz. 188 00:13:35,720 --> 00:13:38,870 Entón, nós non queremos superar pasado a lonxitude da matriz, 189 00:13:38,870 --> 00:13:43,700 e xa sabemos que non precisamos realmente activamente descubrir o que a lonxitude de argv é 190 00:13:43,700 --> 00:13:47,520 porque chega a nós, eo que é isto? Argc. Exactamente. 191 00:13:47,520 --> 00:13:56,640 Entón, nós queremos facer esta cifra argc proceso de veces. 192 00:13:56,640 --> 00:13:59,550 Eu non estou no directorio correcto. 193 00:14:02,100 --> 00:14:03,490 Todo ben. 194 00:14:03,490 --> 00:14:08,990 Agora imos facer args. Sen erros, o que é óptimo. 195 00:14:08,990 --> 00:14:11,430 Entón imos correr args. 196 00:14:11,430 --> 00:14:15,130 O que é que isto vai volver para nós? El só vai imprimir lo de volta. 197 00:14:15,130 --> 00:14:18,320 "Inseriu args no programa, eu vou dá-lo de volta para ti." 198 00:14:18,320 --> 00:14:23,170 Entón, imos dicir que queremos dicir args entón foo bar. 199 00:14:23,170 --> 00:14:26,570 Así, pois, imprime-lo de volta para nós. Todo ben? 200 00:14:26,570 --> 00:14:30,790 Polo tanto, hai un exemplo de como pode utilizar argc e argv 201 00:14:30,790 --> 00:14:33,460 sabendo que argc representa a lonxitude do argv. 202 00:14:33,460 --> 00:14:42,750 Asegúrese de que vostede non fai nunca, con matrices de acceso dun alén da lonxitude da matriz 203 00:14:42,750 --> 00:14:45,140 porque C vai definitivamente berrar con vostede. 204 00:14:45,140 --> 00:14:47,560 Vai ter unha cousa chamada fallo de segmento, 205 00:14:47,560 --> 00:14:52,470 que non é divertido, basicamente dicindo que está intentando acceder algo 206 00:14:52,470 --> 00:14:55,000 que non existe, non pertence a vostede. 207 00:14:55,000 --> 00:14:59,430 Entón, asegúrese de, e, especialmente, con o cero-indexación, nós non queremos - 208 00:14:59,430 --> 00:15:02,390 Por exemplo, se temos unha matriz de lonxitude 4, 209 00:15:02,390 --> 00:15:07,240 que o índice de matriz 4 non existe, porque nós comezamos a 0, o índice cero. 210 00:15:07,240 --> 00:15:11,730 El vai facer unha segunda natureza como loops cando comezamos a 0. 211 00:15:11,730 --> 00:15:13,610 Entón, só tes que manter isto presente. 212 00:15:13,610 --> 00:15:22,590 Non quero nunca acceder ao índice dunha matriz que está alén do seu alcance. 213 00:15:26,710 --> 00:15:32,560 Así, podemos ver agora como podemos tipo de acceso 214 00:15:32,560 --> 00:15:35,930 os argumentos de liña de comandos que son pasados ​​dentro 215 00:15:35,930 --> 00:15:41,330 Pero, como viu a corda, o argv é na verdade unha matriz de cadea. 216 00:15:41,330 --> 00:15:45,740 Polo tanto, non é realmente un enteiro aínda, pero César queremos tratar con números enteiros. 217 00:15:45,740 --> 00:15:54,430 Afortunadamente, existe unha función creada para nós que realmente pode converter unha cadea para un enteiro. 218 00:15:54,430 --> 00:15:58,710 Tamén aquí non estamos lidando con a entrada do usuario ao que estamos levando-os 219 00:15:58,710 --> 00:16:03,740 para a entrada de aquí a clave, por iso non podemos realmente Reprompt e dicir: 220 00:16:03,740 --> 00:16:07,840 "Oh, me dea outro enteiro, por exemplo, non é válido." 221 00:16:07,840 --> 00:16:10,540 Pero aínda necesitamos comprobar se hai uso correcto. 222 00:16:10,540 --> 00:16:13,520 En César eles só están autorizados a pasar un número, 223 00:16:13,520 --> 00:16:18,030 e así que ten que funcionar. / César e entón eles teñen que darlle un número. 224 00:16:18,030 --> 00:16:23,660 Así argc ten que ser un número determinado. 225 00:16:23,660 --> 00:16:29,060 Cal é o número que sería iso, eles teñen que pasar-lle o. / César e despois unha clave? 226 00:16:29,060 --> 00:16:32,920 ¿Que é argc? >> [Alumno] 2. >> Dous. Exactamente. 227 00:16:32,920 --> 00:16:35,490 Entón quere estar seguro de que argc é 2. 228 00:16:35,490 --> 00:16:39,620 Se non, basicamente, rexeitar a executar o programa. 229 00:16:39,620 --> 00:16:43,040 Na principal é unha función que se int main, 230 00:16:43,040 --> 00:16:47,360 entón sempre en 0 boas prácticas de retorno ao final dun programa exitoso. 231 00:16:47,360 --> 00:16:50,840 Así, por exemplo, eles dan-lle tres argumentos de liña de comandos en vez de 2 232 00:16:50,840 --> 00:16:54,350 ou darlle unha, por exemplo, entón o que vai facer e vai querer comprobar para que 233 00:16:54,350 --> 00:16:59,900 e despois volver un dicindo, non, eu non podo continuar con este programa. 234 00:16:59,900 --> 00:17:03,190 [Alumno] Non pode haber un espazo no seu texto. >> Perdoe-me? 235 00:17:03,190 --> 00:17:06,780 [Alumno] Non pode haber un espazo no texto que está intentando cifrar. 236 00:17:06,780 --> 00:17:08,480 Ah! 237 00:17:08,480 --> 00:17:11,280 En termos do texto que estamos intentando cifrar, que en realidade vén despois 238 00:17:11,280 --> 00:17:13,970 cando damos este texto. 239 00:17:13,970 --> 00:17:18,260 Entón, agora, nós estamos só aceptar como argumentos de mando do número real, 240 00:17:18,260 --> 00:17:21,579 o cambio real para o cifrado de César. 241 00:17:21,579 --> 00:17:27,569 [Alumno] Por que precisa de 2 no canto de só un argc? Hai sempre un número. 242 00:17:27,569 --> 00:17:32,200 Dereito. A razón pola que cómpre 2 para argc, en vez de un 243 00:17:32,200 --> 00:17:36,260 é porque cando executar un programa e dicir. / César ou. / Ola, 244 00:17:36,260 --> 00:17:38,280 que realmente conta como un argumento de liña de comandos. 245 00:17:38,280 --> 00:17:43,020 Así, entón, que xa ocupa 1 e así entón nós estamos introducindo un extra. 246 00:17:45,030 --> 00:17:49,440 Entón está introducindo na verdade unha secuencia no argumento de liña de comandos. 247 00:17:49,440 --> 00:17:52,730 O que quere facer, para César que queren tratar con un número enteiro, 248 00:17:52,730 --> 00:17:57,180 así pode usar esta función atoi. 249 00:17:57,180 --> 00:18:02,850 E, basicamente, vostede pasalo nunha corda e logo ha volver atrás dun número enteiro 250 00:18:02,850 --> 00:18:06,070 se é posible facer esa cadea nun enteiro. 251 00:18:06,070 --> 00:18:10,960 Agora lembre cando estamos lidando con cousas printf ou GetString, así, 252 00:18:10,960 --> 00:18:13,390 que inclúen as bibliotecas que son específicas para nós. 253 00:18:13,390 --> 00:18:19,450 Así, en principio, comezamos cunha marca de algo hash estándar I / O,. H, así. 254 00:18:19,450 --> 00:18:22,430 Ben, atoi non está dentro dunha destas bibliotecas, 255 00:18:22,430 --> 00:18:26,600 Entón, o que temos que facer é que temos que incluír a biblioteca axeitado para iso. 256 00:18:26,600 --> 00:18:32,720 Entón, recordo ao Paso a paso 1 onde discutir a función manual. 257 00:18:32,720 --> 00:18:37,110 Te tipo home no seu terminal e, a continuación, seguida polo nome dunha función. 258 00:18:37,110 --> 00:18:39,720 E para que será unha lista completa do seu uso, 259 00:18:39,720 --> 00:18:42,890 pero tamén vai traer o que biblioteca que pertence. 260 00:18:42,890 --> 00:18:47,000 Entón, eu vou deixar isto para usar a función manual con atoi 261 00:18:47,000 --> 00:18:53,360 e descubrir cal biblioteca necesitas Engadir para ser capaz de utilizar a función atoi. 262 00:18:54,450 --> 00:18:57,670 Entón, nós temos a clave e agora se trata de obter o texto simple, 263 00:18:57,670 --> 00:19:01,820 e para que, en realidade, vai ser a entrada do usuario onde pedir. 264 00:19:01,820 --> 00:19:05,540 Lidamos con GetInt e GetFloat, e así na mesma liña 265 00:19:05,540 --> 00:19:07,670 imos estar lidando con GetString. 266 00:19:07,670 --> 00:19:12,440 Pero, neste caso, non precisamos de facer calquera while ou while para comprobar. 267 00:19:12,440 --> 00:19:14,480 GetString vai certamente dar-nos unha corda, 268 00:19:14,480 --> 00:19:17,630 e nós estamos indo para cifrar o que o usuario nos dá. 269 00:19:17,630 --> 00:19:23,770 Así, pode asumir que todas esas secuencias de usuarios inseridos son correctos. 270 00:19:23,770 --> 00:19:24,670 Grande. 271 00:19:24,670 --> 00:19:27,270 Entón unha vez que ten a chave e unha vez que ten o texto, 272 00:19:27,270 --> 00:19:31,660 agora o que queda é que ten que codificar o texto simple. 273 00:19:31,660 --> 00:19:36,530 Só para cubrir rapidamente sobre linguaxe, o texto orixinal é o que o usuario lle dá, 274 00:19:36,530 --> 00:19:41,030 eo texto cifrado é o que volver a eles. 275 00:19:42,450 --> 00:19:45,850 Entón, cordas, para poder pasar por verdade letra por letra 276 00:19:45,850 --> 00:19:48,550 porque temos que cambiar cada letra, 277 00:19:48,550 --> 00:19:51,390 entendemos que as secuencias, se nós tipo de pelar a capa, 278 00:19:51,390 --> 00:19:54,130 vemos que son só realmente unha lista de caracteres. 279 00:19:54,130 --> 00:19:55,930 Un vén a continuación do outro. 280 00:19:55,930 --> 00:20:01,690 E así podemos tratar cordas como matrices, porque elas son matrices de caracteres. 281 00:20:01,690 --> 00:20:05,640 Entón, digamos que ten unha secuencia chamada de texto, 282 00:20:05,640 --> 00:20:09,400 e dentro dese texto variable é almacenada Este é CS50. 283 00:20:09,400 --> 00:20:15,680 A continuación, o texto no índice 0 sería un T maiúsculo, índice 1 sería h, etc 284 00:20:17,530 --> 00:20:23,970 E, a continuación, con matrices, no exemplo en args.c argc, 285 00:20:23,970 --> 00:20:27,090 vimos que tiñamos para iterar sobre un array 286 00:20:27,090 --> 00:20:32,440 e por iso tivemos que repetir a partir de i = 0 ata i é menor que a lonxitude. 287 00:20:32,440 --> 00:20:35,560 Entón, necesitamos algunha forma de descubrir o que a lonxitude da corda é nosa 288 00:20:35,560 --> 00:20:37,090 se imos para iterar sobre el. 289 00:20:37,090 --> 00:20:42,300 Afortunadamente, de novo, hai unha función que para nós, aínda que máis tarde na CS50 290 00:20:42,300 --> 00:20:45,860 vai certamente ser capaz de aplicar e facer a súa propia función 291 00:20:45,860 --> 00:20:48,260 que pode calcular a lonxitude dunha corda. 292 00:20:48,260 --> 00:20:52,120 Pero, por agora, imos usar lonxitude da corda, así strlen. 293 00:20:52,120 --> 00:21:00,440 Vostede pasa unha corda, e entón el ha voltar un int que representa a lonxitude da secuencia. 294 00:21:00,440 --> 00:21:05,840 Vexamos un exemplo de como podemos ser capaces de iterar sobre cada carácter nunha cadea 295 00:21:05,840 --> 00:21:08,470 e facer algo con iso. 296 00:21:08,470 --> 00:21:13,250 O que queremos facer é iterar cada carácter da cadea, 297 00:21:13,250 --> 00:21:19,150 eo que queremos facer é que imprimir volver cada personaxe 1 a 1 298 00:21:19,150 --> 00:21:22,060 excepto engadimos algo próximo a el. 299 00:21:22,060 --> 00:21:27,020 Entón, imos comezar co loop for. Int i = 0. 300 00:21:27,020 --> 00:21:30,070 Nós imos deixar espazo para a condición. 301 00:21:32,700 --> 00:21:36,840 Queremos repetir ata chegar ao final da cadea, non? 302 00:21:36,840 --> 00:21:41,340 Entón, o que nos dá a función de lonxitude da corda? 303 00:21:41,340 --> 00:21:43,160 [Resposta do alumno inaudível] 304 00:21:43,160 --> 00:21:46,420 Ese é o longo dos argumentos da liña de ordes. 305 00:21:46,420 --> 00:21:50,650 Pero, para unha cadea que queremos usar unha función que nos dá a lonxitude da corda. 306 00:21:50,650 --> 00:21:53,090 Entón, iso é lonxitude da corda. 307 00:21:53,090 --> 00:21:57,130 E entón tes que pasar unha corda para el. 308 00:21:57,130 --> 00:21:59,760 Precisa saber o que precisa de corda para calcular a lonxitude de. 309 00:21:59,760 --> 00:22:03,160 Entón, neste caso, estamos lidando con cadea s. 310 00:22:04,790 --> 00:22:05,860 Grande. 311 00:22:05,860 --> 00:22:10,770 Entón o que queremos facer, imos printf. 312 00:22:10,770 --> 00:22:14,850 Agora, queremos tratar con caracteres. Queremos imprimir cada personaxe individual. 313 00:22:14,850 --> 00:22:22,150 Cando se quere imprimir un float, usaría o marcador, como f%. 314 00:22:22,150 --> 00:22:24,580 Cun int usaría% d. 315 00:22:24,580 --> 00:22:30,890 E así da mesma forma, cun personaxe que usa c% para dicir que eu vou estar imprimindo un carácter 316 00:22:30,890 --> 00:22:34,570 que está almacenado dentro dunha variable. 317 00:22:34,570 --> 00:22:40,840 Entón temos iso, e imos engadir un período e un espazo para el. 318 00:22:40,840 --> 00:22:45,430 Cal personaxe que estamos a usar? 319 00:22:45,430 --> 00:22:49,780 Nós imos estar usando calquera personaxe que estamos no da cadea. 320 00:22:49,780 --> 00:22:52,890 Entón nós imos estar usando algo coa corda, 321 00:22:52,890 --> 00:22:56,420 pero queremos estar accedendo o personaxe correcto alí. 322 00:22:56,420 --> 00:23:02,740 Entón, se unha cadea é só unha matriz, como podemos entón acceder elementos de matrices? 323 00:23:02,740 --> 00:23:06,480 Temos aquelas chaves, e entón poñemos o índice alí. 324 00:23:06,480 --> 00:23:11,820 Polo tanto, temos corchetes. O noso índice, neste caso, podemos usar só i. Exactamente. 325 00:23:15,290 --> 00:23:22,370 Entón, aquí estamos dicindo que imos estar imprimindo un carácter seguido por un punto e un espazo, 326 00:23:22,370 --> 00:23:30,870 e que o personaxe vai ser a letra m na nosa cadea s. 327 00:23:32,920 --> 00:23:39,330 Eu só vou gardar isto. Okay. 328 00:23:42,510 --> 00:23:46,840 Agora estou indo a executar lonxitude da corda. 329 00:23:46,840 --> 00:23:53,440 Entón, tivemos unha cadea chamada OMG, e agora está aínda máis evidente. 330 00:23:53,440 --> 00:23:57,870 Do mesmo xeito, imos dicir que realmente quere obter unha cadea de usuario. 331 00:23:57,870 --> 00:23:59,580 Como podemos facer iso? 332 00:23:59,580 --> 00:24:01,610 Antes, como chegamos a un int? 333 00:24:01,610 --> 00:24:08,040 Dixemos GetInt, non? Pero este non é int, entón imos GetString. 334 00:24:11,780 --> 00:24:17,770 Imos facer lonxitude da corda. Aquí non entrou un aviso específico. 335 00:24:17,770 --> 00:24:19,940 Entón, eu non sei. 336 00:24:19,940 --> 00:24:23,820 Eu vou poñer o meu nome aquí e entón eu podo facer unha desas cousas 337 00:24:23,820 --> 00:24:29,600 onde asignar unha palabra para cada letra ou algo así. Cool. 338 00:24:29,600 --> 00:24:31,900 Entón, iso é lonxitude da corda. 339 00:24:33,000 --> 00:24:34,640 Entón, estamos de volta a César. 340 00:24:34,640 --> 00:24:38,620 Temos algunhas ferramentas sobre como nós iterar sobre unha corda, 341 00:24:38,620 --> 00:24:41,250 como podemos acceder cada elemento individual. 342 00:24:41,250 --> 00:24:44,720 Entón agora podemos volver para o programa. 343 00:24:44,720 --> 00:24:48,650 Como mencionei antes, na táboa ASCII, o seu mellor amigo, 344 00:24:48,650 --> 00:24:52,300 vai ver os números que están asociados a cada letra. 345 00:24:52,300 --> 00:24:55,900 Entón aquí dicir que o noso texto simple é que eu estou tonto! 346 00:24:55,900 --> 00:25:01,090 A continuación, cada un destes caracteres pode ter un número e valor ASCII asociado a el, 347 00:25:01,090 --> 00:25:04,710 mesmo o apóstrofo, incluso o espazo, mesmo a marca de exclamación, 348 00:25:04,710 --> 00:25:06,600 así que vai querer manter isto presente. 349 00:25:06,600 --> 00:25:12,360 Entón, dicir que a nosa clave que o usuario incluído no seu argumento de liña de comandos é 6. 350 00:25:12,360 --> 00:25:17,770 Isto significa que a primeira letra, que é I, o cal é representado por 73, 351 00:25:17,770 --> 00:25:25,610 querer volver a eles o que letra é representada polo valor ASCII de 73 + 6. 352 00:25:25,610 --> 00:25:29,020 Neste caso, que sería 79. 353 00:25:30,840 --> 00:25:35,040 Agora, queremos ir ao seguinte carácter. 354 00:25:35,040 --> 00:25:40,960 Polo tanto, a seguinte Índice 1 do plaintext sería o apóstrofo. 355 00:25:40,960 --> 00:25:46,780 Pero lembre-se nós só queremos codificar as letras. 356 00:25:46,780 --> 00:25:50,040 Entón, nós queremos estar seguro de que o apóstrofo en realidade, permanece o mesmo, 357 00:25:50,040 --> 00:25:54,310 que non cambiar de 39 a 45 o que é. 358 00:25:54,310 --> 00:25:57,150 Queremos mantelo como unha apóstrofe. 359 00:25:57,150 --> 00:26:00,780 Entón, nós queremos lembrar-se só codificar as letras 360 00:26:00,780 --> 00:26:04,560 porque queremos que todos os outros símbolos se manteña inalteradas no noso programa. 361 00:26:04,560 --> 00:26:07,130 Outra cousa que queremos é preservar a capitalización. 362 00:26:07,130 --> 00:26:10,250 Entón, cando ten unha letra maiúscula, debe permanecer como unha maiúscula. 363 00:26:10,250 --> 00:26:12,830 Lowercases debe permanecer como minúsculas. 364 00:26:13,620 --> 00:26:19,480 Por iso, algunhas funcións útiles para ser capaz de tratar con letras só Nomes 365 00:26:19,480 --> 00:26:22,380 preservar e manter a capitalización das cousas 366 00:26:22,380 --> 00:26:25,130 é a función IsLower isalpha, isupper,. 367 00:26:25,130 --> 00:26:29,270 E estes son funcións que retornan vostede un valor booleano. 368 00:26:29,270 --> 00:26:34,180 Basicamente, verdadeiro ou falso. É este un maiúscula? Este é o alfanumérico? 369 00:26:34,180 --> 00:26:37,180 É este unha carta, esencialmente. 370 00:26:37,180 --> 00:26:41,070 Entón, aquí están tres exemplos de como usar esa función. 371 00:26:41,070 --> 00:26:47,060 Basicamente, pode probar o valor devolto pola función é verdadeira ou falsa 372 00:26:47,060 --> 00:26:49,400 con base en que a entrada. 373 00:26:49,400 --> 00:26:54,880 Quere facer algo non cifrar ou cifra que ou asegúrese de que é maiúscula, etc 374 00:26:54,880 --> 00:27:01,080 [Estudante] Pode só explicar os un pouco máis e como usalos? >> Si, con certeza. 375 00:27:01,080 --> 00:27:08,470 Entón, se miramos cara atrás, aquí temos un capital I, non? 376 00:27:08,470 --> 00:27:14,550 Entón, nós sabemos que vai para o porque + 6 é O. 377 00:27:14,550 --> 00:27:18,740 Pero queremos estar seguro de que o que vai ser unha capital de O. 378 00:27:18,740 --> 00:27:22,940 Entón, basicamente, que é unha especie de vai cambiar a nosa entrada. 379 00:27:22,940 --> 00:27:26,870 Entón, se é maiúscula ou non vai tipo de cambiar a forma como lidamos con el. 380 00:27:26,870 --> 00:27:32,360 Entón, se usamos a función isupper en que determinado índice, 381 00:27:32,360 --> 00:27:36,480 así isupper ("I"), que retorna para nós verdade, entón sabemos que é superior. 382 00:27:36,480 --> 00:27:40,360 Entón con base en que, máis tarde imos entrar nunha fórmula 383 00:27:40,360 --> 00:27:42,750 que vai empregar para cambiar as cousas de César, 384 00:27:42,750 --> 00:27:46,560 Entón, basicamente, non vai ser unha fórmula lixeiramente diferente se é maiúscula 385 00:27:46,560 --> 00:27:50,670 ao contrario de minúsculas. Ten sentido? 386 00:27:51,020 --> 00:27:52,760 Si Non te preocupes. 387 00:27:54,900 --> 00:27:58,990 Eu falei un pouco sobre a adición de 6 a unha carta, que non chega a ter sentido 388 00:27:58,990 --> 00:28:05,500 excepto cando tipo de entender que eses personaxes 389 00:28:05,500 --> 00:28:08,920 son unha especie de intercambiábeis con números enteiros. 390 00:28:08,920 --> 00:28:11,250 O que facemos é que tipo de fundición uso implícito. 391 00:28:11,250 --> 00:28:18,100 Imos para lanzar un pouco máis tarde, onde toma un valor e transformalo en un tipo 392 00:28:18,100 --> 00:28:20,440 que era orixinalmente. 393 00:28:20,440 --> 00:28:25,910 Pero con este pset imos ser capaces de utilizar indistintamente tipo de caracteres 394 00:28:25,910 --> 00:28:30,880 e os correspondentes seus valores enteiros. 395 00:28:30,880 --> 00:28:35,140 Entón, se simplemente pechar un personaxe con só as comiñas simples, 396 00:28:35,140 --> 00:28:40,390 entón vai ser capaz de traballar con el con números enteiros, tratando-o como un número enteiro. 397 00:28:40,390 --> 00:28:48,040 Así, o capital C refírese a 67. F minúsculas refírese a 102. 398 00:28:48,040 --> 00:28:51,480 De novo, se quere saber eses valores, ollar para a súa táboa ASCII. 399 00:28:51,480 --> 00:28:56,160 Entón, imos entrar en algúns exemplos de como pode ser capaz de restar e sumar, 400 00:28:56,160 --> 00:29:03,130 como pode realmente realmente traballar con estes personaxes, use os alternativamente. 401 00:29:03,870 --> 00:29:11,350 I dicir que ASCIIMath vai calcular a suma dun caracter para un número enteiro 402 00:29:11,350 --> 00:29:17,590 e, a continuación, presenta o carácter resultante, así como o valor resultante ASCII. 403 00:29:17,590 --> 00:29:22,290 E aquí estou dicindo - we'll acordo con esta parte máis tarde - 404 00:29:22,290 --> 00:29:29,100 pero, basicamente, eu estou dicindo que o usuario debe dicir ASCIIMath executado xunto cunha clave, 405 00:29:29,100 --> 00:29:30,880 e eu estou dicindo que a clave será o número 406 00:29:30,880 --> 00:29:34,600 co cal estamos indo para engadir este personaxe. 407 00:29:34,600 --> 00:29:38,560 Entón aquí notar que desde que eu estou esixindo unha clave, 408 00:29:38,560 --> 00:29:40,590 dende que eu estou esixindo que eles están me dando unha cousa, 409 00:29:40,590 --> 00:29:45,600 Eu só quero aceptar. / Asciimath e unha chave. 410 00:29:45,600 --> 00:29:49,330 Entón, eu vou esixir que argc é igual a 2. 411 00:29:49,330 --> 00:29:54,360 Se non é, entón eu vou volver 1 eo programa vai saír. 412 00:29:55,070 --> 00:29:58,540 Entón, eu estou dicindo que a clave non vai ser o primeiro argumento da liña de comandos, 413 00:29:58,540 --> 00:30:05,080 que vai ser o segundo, e, como ve aquí, 414 00:30:05,080 --> 00:30:11,790 Vou transformar isto nun enteiro. 415 00:30:15,740 --> 00:30:19,230 Entón eu estou indo a definir un personaxe para ser r. 416 00:30:19,230 --> 00:30:23,970 Nótese que o tipo de variable CHR é realmente un número enteiro. 417 00:30:23,970 --> 00:30:30,480 O xeito que eu son capaz de utilizar r como un enteiro é rematando con estas aspas. 418 00:30:33,850 --> 00:30:40,560 Entón, de volta á nosa declaración de printf onde temos un espazo reservado para un personaxe 419 00:30:40,560 --> 00:30:43,590 e un espazo reservado para un número enteiro, 420 00:30:43,590 --> 00:30:49,450 o caracter é representado polo CHR, e o número enteiro é a clave. 421 00:30:49,450 --> 00:30:54,320 E entón imos engadir o resultado en dous xuntos. 422 00:30:54,320 --> 00:30:58,420 Entón, nós estamos indo para engadir r + o que é a clave, 423 00:30:58,420 --> 00:31:03,520 e despois imos para imprimir o resultado. 424 00:31:06,210 --> 00:31:14,220 Entón, imos facer asciimath. Cabe a data, entón imos correr asciimath. 425 00:31:14,220 --> 00:31:18,290 Ah, pero mira, el non fai nada, porque realmente non darlle unha clave. 426 00:31:18,290 --> 00:31:23,850 Entón, cando el só volveu unha, a nosa función principal, el só volveu para nós. 427 00:31:23,850 --> 00:31:29,250 Entón imos pasar unha chave. Alguén me pode dar un número. >> [Alumno] 4. 428 00:31:29,250 --> 00:31:30,920 4. Okay. 429 00:31:30,920 --> 00:31:39,280 Así, un aumento de 4 r vai dar us V, o que corresponde ao valor ASCII 118. 430 00:31:39,280 --> 00:31:43,880 Entón que tipo de sentido que - 431 00:31:43,880 --> 00:31:51,250 En realidade, te podo preguntar, o que pensas que o valor ASCII de r é se r + 4 é de 118? 432 00:31:53,070 --> 00:31:55,470 Entón, si, é de 114 r. 433 00:31:55,470 --> 00:32:03,010 Entón, se ollar para a táboa ASCII, entón, por suposto, vai ver que r é representado por 114. 434 00:32:03,010 --> 00:32:08,610 Polo tanto, agora que sabemos que podemos engadir enteiros para caracteres, iso parece moi sinxelo. 435 00:32:08,610 --> 00:32:12,740 Nós só estamos indo a repetir unha cadea como vimos no exemplo anterior. 436 00:32:12,740 --> 00:32:17,170 Imos comprobar se é unha carta. 437 00:32:17,170 --> 00:32:20,420 Se for, entón imos transferir-lo por calquera que sexa a clave. 438 00:32:20,420 --> 00:32:23,650 Moi sinxelo, excepto cando comeza a gustar deste, 439 00:32:23,650 --> 00:32:32,140 vostede ve que Z, representado por 122, a continuación, vai dar-lle un carácter diferente. 440 00:32:32,140 --> 00:32:37,770 En realidade, quero estar dentro do noso alfabeto, non? 441 00:32:37,770 --> 00:32:43,180 Polo tanto, temos que descubrir algunha maneira de tipo de implicación en torno. 442 00:32:43,180 --> 00:32:47,190 Cando chegar zed e pretende aumentar un determinado número, 443 00:32:47,190 --> 00:32:51,230 non quere ir máis aló da sección alfabeto ASCII; 444 00:32:51,230 --> 00:32:54,140 quere dispoñer de volta todo o camiño para A. 445 00:32:54,140 --> 00:32:58,550 Pero teña presente que aínda está preservando o caso. 446 00:32:58,550 --> 00:33:00,980 Entón, sabendo que as letras non poden facer símbolos 447 00:33:00,980 --> 00:33:05,290 como símbolos non van estar cambiando tamén. 448 00:33:05,290 --> 00:33:08,170 Na última pset definitivamente non precisa, 449 00:33:08,170 --> 00:33:14,310 pero unha opción foi aplicar o seu pset ganancioso usando a función módulo. 450 00:33:14,310 --> 00:33:17,230 Pero agora estamos indo realmente precisa usar módulo, 451 00:33:17,230 --> 00:33:19,900 entón imos só pasar por riba deste un pouco. 452 00:33:19,900 --> 00:33:26,920 Basicamente, cando ten x modulo y, que lle dá o resto de x dividido por y. 453 00:33:26,920 --> 00:33:30,930 Aquí están algúns exemplos aquí. Temos a 27% 15. 454 00:33:30,930 --> 00:33:36,200 Basicamente, cando restar 15 do 27 tantas veces como sexa posible, sen estar negativo 455 00:33:36,200 --> 00:33:39,060 entón vostede obtén 12 sobraron. 456 00:33:39,060 --> 00:33:44,650 Entón, iso é tipo como no contexto de matemáticas, pero como podemos realmente usar este? 457 00:33:44,650 --> 00:33:47,100 El vai ser útil para o noso wrapover. 458 00:33:47,100 --> 00:33:55,420 Para iso, imos só dicir que eu pedín a todos os que se dividen en tres grupos. 459 00:33:55,420 --> 00:33:58,010 Ás veces fai iso en grupos e algo como isto. 460 00:33:58,010 --> 00:34:01,320 Digamos que eu dixen: "Ok, quero que todos vostedes ser dividido en tres." 461 00:34:01,320 --> 00:34:04,240 Como podería facer iso? 462 00:34:04,240 --> 00:34:06,810 [Resposta do alumno inaudível] Si, exactamente. Conta fóra. Okay. 463 00:34:06,810 --> 00:34:10,260 Imos realmente facer iso. Quere comezar? 464 00:34:10,260 --> 00:34:13,810 [Estudantes contando] 1, 2, 3, 4. 465 00:34:13,810 --> 00:34:16,620 Pero lembre-se ... >> [Alumno] Oh, desculpe. 466 00:34:16,620 --> 00:34:18,730 Este é un punto moi bo. 467 00:34:18,730 --> 00:34:24,130 Vostede dixo 4, pero nós realmente quero que diga unha porque só queremos tres grupos. 468 00:34:24,130 --> 00:34:30,159 Entón, como - Non, iso é un bo exemplo, porque entón como pode dicir unha? 469 00:34:30,159 --> 00:34:33,370 Cal é a relación entre 4 e 1? 470 00:34:33,370 --> 00:34:36,760 Ben, 4 mod 3 é 1. 471 00:34:36,760 --> 00:34:41,460 Entón, se continúa, sería 2. 472 00:34:41,460 --> 00:34:44,540 Así, temos 1, 2, 3, 1, 2. 473 00:34:44,540 --> 00:34:49,420 Unha vez máis, está, de feito, a 5 ª persoa. Como vostede sabe que dicir 2 en vez de 5? 474 00:34:49,420 --> 00:34:53,760 Vostede di que 5 mod 3 é 2. 475 00:34:53,760 --> 00:34:59,100 Quero ver cantos grupos de 3 sobran despois de que orde son eu 476 00:34:59,100 --> 00:35:02,860 E entón continuou ao longo da sala enteira, 477 00:35:02,860 --> 00:35:07,760 entón veriamos que estamos sempre na realidade da aplicación da función mod para nós mesmos 478 00:35:07,760 --> 00:35:09,990 que tipo de contar off. 479 00:35:09,990 --> 00:35:14,490 Isto é un tipo de exemplo máis tanxible de como pode usar módulo 480 00:35:14,490 --> 00:35:17,960 porque eu estou seguro que a maioría de nós probablemente xa pasou por este proceso 481 00:35:17,960 --> 00:35:19,630 onde tivemos que contar fóra. 482 00:35:19,630 --> 00:35:21,840 Calquera dúbida sobre modulo? 483 00:35:21,840 --> 00:35:25,360 Será moi importante para comprender os conceptos desta, 484 00:35:25,360 --> 00:35:28,640 entón eu quero estar seguro de que vostedes entenden. 485 00:35:28,640 --> 00:35:34,660 [Alumno] Se non hai resto, non é darlle o número real? 486 00:35:34,660 --> 00:35:40,430 Un dos tres primeiro deles tivese feito isto, tería dado a eles o que realmente eran, 487 00:35:40,430 --> 00:35:43,310 ou tería dado a eles [inaudível] >> Esa é unha boa pregunta. 488 00:35:43,310 --> 00:35:48,750 Cando non hai resto do módulo - para dicir que ten 6 mod 3 - 489 00:35:48,750 --> 00:35:52,340 que realmente lle dá de volta 0. 490 00:35:53,670 --> 00:35:57,290 Nós imos falar sobre iso un pouco máis tarde. 491 00:35:58,810 --> 00:36:07,720 Ah, si, por exemplo, a persoa 3 - 3 mod 3 é realmente 0, pero ela dixo 3. 492 00:36:07,720 --> 00:36:14,900 Entón, iso é como unha especie de captura interna, por exemplo, 493 00:36:14,900 --> 00:36:17,620 como ben se o mod é 0, entón eu vou ser a 3 ª persoa. 494 00:36:17,620 --> 00:36:22,740 Pero nós imos entrar en tipo de como podemos querer tratar co que 0 é tarde. 495 00:36:22,740 --> 00:36:32,750 Entón agora nós dalgunha forma, ter un xeito de mapear o zed letra correcta. 496 00:36:32,750 --> 00:36:34,920 Entón, agora nós pasamos por estes exemplos, 497 00:36:34,920 --> 00:36:37,880 que tipo de ver como César podería funcionar. 498 00:36:37,880 --> 00:36:42,640 Vostede ve os dous alfabetos e entón ve-los a cambiar. 499 00:36:42,640 --> 00:36:44,430 Entón, imos tratar de expresar que en termos de fórmula. 500 00:36:44,430 --> 00:36:46,940 Esta fórmula é, en realidade, dada a ti na especificación, 501 00:36:46,940 --> 00:36:52,070 pero tipo imos ollar a través do que significa cada variable. 502 00:36:52,070 --> 00:36:55,000 O noso resultado final vai ser o texto cifrado. 503 00:36:55,000 --> 00:36:58,300 Polo tanto, esta di que o carácter i da cifrado 504 00:36:58,300 --> 00:37:02,500 vai corresponder ao carácter i da de texto simple. 505 00:37:02,500 --> 00:37:08,130 Isto ten sentido porque queremos ser sempre aliñados esas cousas. 506 00:37:08,130 --> 00:37:13,480 Por iso, vai ser o personaxe i da máis k cifrado, que é a nosa clave - 507 00:37:13,480 --> 00:37:17,230 que ten sentido - e entón temos este mod 26. 508 00:37:17,230 --> 00:37:19,860 Lembre-se de volta cando tivemos o zed 509 00:37:19,860 --> 00:37:24,190 nós non queremos entrar no personaxe, entón nós queriamos para modificar isto 510 00:37:24,190 --> 00:37:26,540 e do tipo de envoltura en torno do alfabeto. 511 00:37:26,540 --> 00:37:33,430 Tras zed ía a, b, c, d, ata que ten o número correcto. 512 00:37:33,430 --> 00:37:44,690 Entón, sabemos que zed, se + 6, nos daría f porque despois vén zed a, b, c, d, e, f. 513 00:37:44,690 --> 00:37:52,530 Entón, imos lembrar que sabemos con certeza que zed + 6 vai dar-nos f. 514 00:37:52,530 --> 00:38:03,530 En valores ASCII, z é de 122 e f é 102. 515 00:38:03,530 --> 00:38:10,570 Entón temos que atopar unha forma de facer a nosa fórmula César dar 102 516 00:38:10,570 --> 00:38:13,590 despois de tomar en 122. 517 00:38:13,590 --> 00:38:19,550 Entón, se nós simplemente aplicamos esa fórmula, o% ('z' + 6) 26, que, en realidade, dálle 24 518 00:38:19,550 --> 00:38:25,980 porque 122 + 6 é de 128; 128% 26 dálle 24 restantes. 519 00:38:25,980 --> 00:38:29,140 Pero iso non significa realmente f. Isto definitivamente non é 102. 520 00:38:29,140 --> 00:38:33,590 Isto non é tamén a carta 6 no alfabeto. 521 00:38:33,590 --> 00:38:41,550 Entón, obviamente, debemos ter algunha forma de axustar iso un pouco. 522 00:38:42,970 --> 00:38:51,340 En termos do alfabeto normal, sabemos que z é a letra 26 e f é a sexta. 523 00:38:51,340 --> 00:38:55,460 Pero estamos en ciencia da computación, por iso estamos indo para o índice de 0. 524 00:38:55,460 --> 00:39:00,690 Entón, en vez de z é o número 26, imos dicir que é o número 25 525 00:39:00,690 --> 00:39:02,630 porque a é 0. 526 00:39:02,630 --> 00:39:04,770 Entón agora imos aplicar esta fórmula. 527 00:39:04,770 --> 00:39:11,710 Temos z representado por 25 + 6, o que lle dá 31. 528 00:39:11,710 --> 00:39:15,790 E 31 mod 26 dálle 5 como un resto. 529 00:39:15,790 --> 00:39:20,500 Isto é perfecto, porque sabemos que é a letra f 5 no alfabeto. 530 00:39:20,500 --> 00:39:26,400 Pero aínda non é f, non? Aínda non é 102. 531 00:39:26,400 --> 00:39:32,730 Entón a este pset, un reto será tentar descubrir a relación 532 00:39:32,730 --> 00:39:36,910 entre converter entre estes valores ASCII e do índice alfabético. 533 00:39:36,910 --> 00:39:40,280 Esencialmente, o que quere facer, quere comezar cos valores ASCII, 534 00:39:40,280 --> 00:39:45,390 pero despois quere dalgunha forma, traducir iso en un índice alfabético 535 00:39:45,390 --> 00:39:52,610 a continuación, calcular o que a carta debe ser - basicamente, o que o seu índice alfabético é 536 00:39:52,610 --> 00:39:57,660 do carácter cifra - entón traducir isto para os valores ASCII. 537 00:39:57,660 --> 00:40:04,870 Entón, se sacar súa táboa ASCII, a continuación, tentar atopar relacións entre, digamos, 102 e 5 538 00:40:04,870 --> 00:40:10,440 ou 122 e 25. 539 00:40:12,140 --> 00:40:15,690 Nós comezamos a nosa clave dos argumentos de liña de comandos, temos obtido o texto simple, 540 00:40:15,690 --> 00:40:17,520 temos cifrada-lo. 541 00:40:17,520 --> 00:40:19,820 Agora todo o que queda a facer é imprimir lo. 542 00:40:19,820 --> 00:40:22,040 Nós poderiamos facelo de dous xeitos diferentes. 543 00:40:22,040 --> 00:40:24,570 O que podemos facer é realmente imprimir a medida que avanzamos. 544 00:40:24,570 --> 00:40:28,250 Coma nós iterar sobre os caracteres na secuencia, 545 00:40:28,250 --> 00:40:31,660 poderiamos simplemente imprimir certo, entón cando calculalas lo. 546 00:40:31,660 --> 00:40:36,030 Alternativamente, tamén se pode almacena-lo nunha matriz e unha matriz de caracteres 547 00:40:36,030 --> 00:40:39,280 e ao final iterar sobre esta matriz enteiro e imprimir lo. 548 00:40:39,280 --> 00:40:40,980 Entón tes dúas opcións para iso. 549 00:40:40,980 --> 00:40:47,280 E lembre que% c será o espazo reservado para a impresión dun personaxe. 550 00:40:47,280 --> 00:40:50,420 Polo tanto, temos de César, e agora imos pasar Vigenère, 551 00:40:50,420 --> 00:40:57,580 o que é moi semellante ao Caesar, pero só un pouco máis complexo. 552 00:40:57,580 --> 00:41:03,310 Entón, basicamente con Vigenère é que vai estar pasando unha palabra clave. 553 00:41:03,310 --> 00:41:06,510 Entón, en vez de un número, vai ter unha secuencia, 554 00:41:06,510 --> 00:41:09,200 e así que vai actuar como a palabra clave. 555 00:41:09,200 --> 00:41:14,440 Entón, como sempre, está indo para obter un prompt para unha cadea de usuario 556 00:41:14,440 --> 00:41:19,050 e entón cifrar-lo e despois darlles a volta cifrado. 557 00:41:19,050 --> 00:41:24,650 Entón, como eu dixen, é moi semellante ao César, excepto en vez de desprazarse por un determinado número, 558 00:41:24,650 --> 00:41:30,620 o número é realmente vai cambiar cada vez de personaxe para personaxe. 559 00:41:30,620 --> 00:41:34,890 Para representar o número real de cambiar, é representado polas letras do teclado. 560 00:41:34,890 --> 00:41:43,150 Entón, se vostede poñerse en un cambio de un, por exemplo, a continuación, que correspondería a un cambio de 0. 561 00:41:43,150 --> 00:41:45,900 Entón, é unha vez máis de volta ao índice alfabético. 562 00:41:45,900 --> 00:41:49,100 O que pode ser útil se está vendo que estamos realmente lidando con valores ASCII 563 00:41:49,100 --> 00:41:51,790 así como as cartas, así como o índice alfabético, 564 00:41:51,790 --> 00:41:58,020 quizais atopar ou facer a súa propia táboa ASCII que amosa o índice alfabético de 0 a 25, 565 00:41:58,020 --> 00:42:03,750 A a Z, e os valores ASCII de modo que pode tipo de ver a relación 566 00:42:03,750 --> 00:42:07,020 e esbozar e tentar atopar algúns patróns. 567 00:42:07,020 --> 00:42:11,010 Do mesmo xeito, se está cambiando na instancia determinada por f - 568 00:42:11,010 --> 00:42:21,110 e este é ou f minúscula ou maiúscula -, entón, que correspondería a 5. 569 00:42:21,110 --> 00:42:24,180 Estamos ben ata agora? 570 00:42:25,770 --> 00:42:30,050 A fórmula para Vigenère é un pouco diferente. 571 00:42:30,050 --> 00:42:32,960 Basicamente, vostede ve que é só como César, 572 00:42:32,960 --> 00:42:37,390 excepto no canto de só k temos k índice j. 573 00:42:37,390 --> 00:42:44,810 Teña en conta que non estamos usando i porque esencialmente, a lonxitude da contrasinal 574 00:42:44,810 --> 00:42:49,850 non é necesariamente a lonxitude do noso texto cifrado. 575 00:42:49,850 --> 00:42:56,130 Este será un pouco máis claro cando vemos un exemplo que eu teño un pouco máis tarde. 576 00:42:56,130 --> 00:43:03,160 Basicamente, se executar o programa cunha palabra clave de ohai, 577 00:43:03,160 --> 00:43:08,560 entón iso significa que cada vez, ohai vai ser o seu turno. 578 00:43:08,560 --> 00:43:11,060 Entón, dependendo de en que posición está na súa contrasinal, 579 00:43:11,060 --> 00:43:15,800 vai cambiar o seu carácter cifrado determinada por esa cantidade. 580 00:43:15,800 --> 00:43:19,630 De novo, así como César, queremos estar seguro de que preservar a capitalización das cousas 581 00:43:19,630 --> 00:43:22,900 e nós só letras de cifrado non caracteres ou espazos. 582 00:43:22,900 --> 00:43:26,330 Entón, ollar cara atrás a César sobre as funcións que pode usar, 583 00:43:26,330 --> 00:43:32,570 a forma que decidiu como cambiar as cousas, e que se aplican ao seu programa aquí. 584 00:43:32,570 --> 00:43:35,260 Entón, imos mapear iso. 585 00:43:35,260 --> 00:43:39,680 Temos un texto sinxelo que temos obtido a partir do usuario a partir de GetString 586 00:43:39,680 --> 00:43:44,090 Está dicindo ... é CS50! 587 00:43:44,090 --> 00:43:47,090 Entón temos a palabra chave de ohai. 588 00:43:47,090 --> 00:43:50,930 Os primeiros catro carácteres son moi sinxelo. 589 00:43:50,930 --> 00:43:55,580 Sabemos que T vai ser desprazada polo, 590 00:43:55,580 --> 00:44:01,990 h, a continuación, vai ser desviado por hora, i vai ser desviado por un. 591 00:44:01,990 --> 00:44:04,610 Aquí vese que a representa 0, 592 00:44:04,610 --> 00:44:11,940 así, entón o valor final é en realidade só unha carta a mesma de antes. 593 00:44:11,940 --> 00:44:15,250 Entón s é desprazado por i. 594 00:44:15,250 --> 00:44:19,370 Pero entón tes eses períodos aquí. 595 00:44:19,370 --> 00:44:25,960 Nós non queremos para codificar que, entón non muda-lo por nada 596 00:44:25,960 --> 00:44:31,280 e só imprimir o período inalterado. 597 00:44:31,280 --> 00:44:38,020 [Estudante] Non entendo como vostede sabe que este é desprazado por - Onde - >> Oh, desculpe. 598 00:44:38,020 --> 00:44:41,620 Arriba aquí ve o mando ohai argumento de liña aquí, 599 00:44:41,620 --> 00:44:43,740 que vai ser a palabra clave. 600 00:44:43,740 --> 00:44:49,550 E por iso, basicamente, está en bicicleta sobre os personaxes a palabra clave. 601 00:44:49,550 --> 00:44:52,020 [Estudante] Entón o que vai estar cambiando o mesmo - 602 00:44:52,020 --> 00:44:56,260 Así, o correspondente a un determinado número no alfabeto. 603 00:44:56,260 --> 00:44:58,400 [Estudante] Dereito. Pero de onde sacou a parte de CS50? 604 00:44:58,400 --> 00:45:02,540 Oh Isto é en GetString onde está como "Deixa-me unha corda para codificar." 605 00:45:02,540 --> 00:45:07,510 [Alumno] Eles van dar-lle ese argumento para cambiar por 606 00:45:07,510 --> 00:45:09,380 e entón vai pedir a súa primeira corda. Si >>. 607 00:45:09,380 --> 00:45:12,440 Entón, cando eles executar o programa, que van incluír a palabra clave 608 00:45:12,440 --> 00:45:14,740 nos seus argumentos da liña de ordes cando executa-lo. 609 00:45:14,740 --> 00:45:19,740 Entón, despois de ter comprobado que realmente lle deu un, e non máis, non menos, 610 00:45:19,740 --> 00:45:23,750 a continuación, vai leva-los a unha secuencia, digamos, "Déame unha corda". 611 00:45:23,750 --> 00:45:27,630 Entón é aí que, neste caso, eles deron-lle isto ... é CS50! 612 00:45:27,630 --> 00:45:32,090 Entón vai usar isto e utilizar ohai e iterar. 613 00:45:32,090 --> 00:45:38,200 Teña en conta que aquí nós pulamos cifrar os períodos, 614 00:45:38,200 --> 00:45:51,660 pero en termos da nosa posición para ohai, o próximo usan o. 615 00:45:51,660 --> 00:45:54,990 Neste caso, é un pouco máis difícil de ver porque é 4, 616 00:45:54,990 --> 00:45:57,710 entón imos seguir un pouco. Basta estar aquí comigo. 617 00:45:57,710 --> 00:46:02,960 Entón temos i e s, os cales son, a continuación, traducido por O e H, respectivamente. 618 00:46:02,960 --> 00:46:09,370 Entón, temos un espazo, e entón sabemos que non imos para codificar os espazos. 619 00:46:09,370 --> 00:46:18,930 Pero teña en conta que, en vez de ir a un neste punto aquí, 620 00:46:18,930 --> 00:46:28,330 estamos criptografando por un - Eu non sei se pode ver que - ben aquí. 621 00:46:28,330 --> 00:46:33,710 Entón non é como se realmente predeterminado, por exemplo, vai aquí, vai aquí h, 622 00:46:33,710 --> 00:46:39,200 un vai aquí, i vai aquí, o, h, a, i, o, h, a, i. Non fai iso. 623 00:46:39,200 --> 00:46:43,760 Só cambiar a súa posición na palabra clave 624 00:46:43,760 --> 00:46:51,020 cando vostede sabe que está indo realmente para ser cifrar unha carta real. 625 00:46:51,020 --> 00:46:53,920 Será que este tipo de ten sentido? 626 00:46:53,920 --> 00:46:55,800 Okay. 627 00:46:56,490 --> 00:46:58,500 Así, só algúns recordatorios. 628 00:46:58,500 --> 00:47:03,760 Quere estar seguro de que só avanzará á seguinte letra a palabra chave 629 00:47:03,760 --> 00:47:06,390 o personaxe no seu texto orixinal é unha letra. 630 00:47:06,390 --> 00:47:09,120 Entón, dicir que estamos no o. 631 00:47:09,120 --> 00:47:19,310 Entender que o próximo personaxe, o índice i do texto orixinal, é un número, por exemplo. 632 00:47:19,310 --> 00:47:31,630 Entón, nós non avanzamos j, o índice para a nosa palabra clave, ata chegar outra carta. 633 00:47:31,630 --> 00:47:36,230 De novo, vostede tamén quere ter a certeza de que entorno ao comezo da palabra clave 634 00:47:36,230 --> 00:47:37,770 cando está no fin. 635 00:47:37,770 --> 00:47:42,030 Se ves aquí estamos no i, o seguinte ten que ser o. 636 00:47:42,030 --> 00:47:47,690 Entón quere atopar unha forma de poder contorno para o inicio da súa contrasinal 637 00:47:47,690 --> 00:47:49,470 cada vez que chegar ao final. 638 00:47:49,470 --> 00:47:55,040 E así unha vez máis, que tipo de operador é útil, neste caso para enrolar? 639 00:47:56,630 --> 00:47:59,840 Como na conta fóra exemplo. 640 00:47:59,840 --> 00:48:03,710 [Alumno] O sinal de por cento. >> Si, o sinal de porcentaxe, que é módulo. 641 00:48:03,710 --> 00:48:11,250 Entón modulo vai vir a cadra aquí, cando quere dispoñer sobre o índice no seu ohai. 642 00:48:11,250 --> 00:48:17,700 É só unha suxestión rápida: Proba pensar participa máis a palabra chave un pouco como o off contando, 643 00:48:17,700 --> 00:48:23,590 onde hai tres grupos, a persoa 4, 644 00:48:23,590 --> 00:48:30,610 o seu número que eles dixeron foi de 4 mod 3, que foi 1. 645 00:48:30,610 --> 00:48:32,880 Entón probe pensar desa maneira. 646 00:48:34,770 --> 00:48:42,740 Como viu na fórmula, sempre que teña ci e despois pi pero despois KJ, 647 00:48:42,740 --> 00:48:44,700 quere ter seguro de que manter o control destes. 648 00:48:44,700 --> 00:48:47,580 Non precisa de chamalo de min, non precisa de chamalo j, 649 00:48:47,580 --> 00:48:53,270 pero quere ter seguro de que manter o control da posición que está no seu plaintext 650 00:48:53,270 --> 00:48:55,790 así como a posición que está na súa palabra clave 651 00:48:55,790 --> 00:48:59,840 porque os que non son, necesariamente, será o mesmo. 652 00:48:59,840 --> 00:49:06,400 Non só a palabra chave - que podería ser unha extensión completamente diferente do que o seu texto simple. 653 00:49:06,400 --> 00:49:09,140 Ademais, o texto simple, existen números e caracteres 654 00:49:09,140 --> 00:49:14,450 de xeito que non vai quedar perfectamente xuntos. Si 655 00:49:14,450 --> 00:49:19,280 [Alumno] Existe unha función para cambiar caso? 656 00:49:19,280 --> 00:49:24,530 Pode cambiar ao capital a? >> Si, hai definitivamente. 657 00:49:24,530 --> 00:49:27,890 Podes consultar - eu creo que é toupper, toda palabra 1. 658 00:49:30,650 --> 00:49:36,310 Pero cando estás cifra cousas e preservar o texto, 659 00:49:36,310 --> 00:49:39,350 el é o mellor, basicamente, a ter casos separados. 660 00:49:39,350 --> 00:49:42,040 Se é unha maiúscula, entón quere cambiar por este 661 00:49:42,040 --> 00:49:46,460 porque na súa fórmula, cando mira cara atrás como temos que tipo de movemento 662 00:49:46,460 --> 00:49:50,900 alternativamente entre o modo ASCII de representar os números 663 00:49:50,900 --> 00:49:55,020 eo índice alfabético real, queremos estar seguro de 664 00:49:55,020 --> 00:50:01,850 alí vai ser algún tipo de patrón que vai empregar. 665 00:50:01,850 --> 00:50:04,580 Outra nota sobre o estándar de feito. 666 00:50:04,580 --> 00:50:07,250 Vai definitivamente ser tratar con números. 667 00:50:07,250 --> 00:50:11,280 Probe a non usar números máxicos, que é un exemplo de estilo. 668 00:50:11,280 --> 00:50:18,470 Entón, dicir que quere algo cada cambio de tempo por gusto - 669 00:50:18,470 --> 00:50:22,400 Ok, entón Consello, outro spoiler é cando está indo estar cambiando algo 670 00:50:22,400 --> 00:50:26,310 por unha certa cantidade, proba non representa que por un número real 671 00:50:26,310 --> 00:50:32,810 pero tentao e vexa se pode utilizar o valor ASCII, que tipo de facer máis sentido. 672 00:50:32,810 --> 00:50:35,470 Outra nota: Como estamos a tratar con fórmulas, 673 00:50:35,470 --> 00:50:41,200 aínda que o seu TF vai saber o que tipo de estándar que pode estar usando, 674 00:50:41,200 --> 00:50:44,430 mellor no seu tipo de comentarios de explicar a lóxica, como, 675 00:50:44,430 --> 00:50:51,880 "Está a usar este estándar porque ..." e tipo de explicar o nivel de forma sucinta nos seus comentarios. 676 00:50:54,090 --> 00:50:58,990 [Este foi paso a paso 2] Se non hai calquera outras preguntas, entón eu vou estar aquí por un pouco. 677 00:50:58,990 --> 00:51:04,370 Boa sorte co seu pset 2: crypto e grazas por vir. 678 00:51:06,070 --> 00:51:08,620 [Estudante] Grazas. Grazas >>. 679 00:51:09,220 --> 00:51:10,800 [Intro multimedia offline]