1 00:00:00,000 --> 00:00:03,944 >> [Música tocando] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: Todo ben. 4 00:00:11,690 --> 00:00:14,674 Este é CS50, e este é o fin de semana dous. 5 00:00:14,674 --> 00:00:16,840 Eu sinto moito eu non podería estar alí con todos vós hoxe, 6 00:00:16,840 --> 00:00:18,300 pero está moi boas mans. 7 00:00:18,300 --> 00:00:21,710 Permita-me presentar Propia Rob Bowden do CS50. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB Bowden: E, por suposto, a continuación, temos que facer o desfrute do feito 10 00:00:31,730 --> 00:00:36,820 que nos enviou un verticais vídeo e amosar iso. 11 00:00:36,820 --> 00:00:38,320 >> [REPRODUCIÓN DE VIDEO] 12 00:00:38,320 --> 00:00:39,820 >> [Música tocando] 13 00:00:39,820 --> 00:00:42,350 >> PASO A PASO [] 14 00:00:42,350 --> 00:00:44,730 >> -Este Vídeo non está ten que mirar desa forma. 15 00:00:44,730 --> 00:00:46,570 El podería ser evitada. 16 00:00:46,570 --> 00:00:49,070 Diga non aos vídeos verticais. 17 00:00:49,070 --> 00:00:53,310 >> Videos -Vertical ocorrer cando soster a cámara na dirección incorrecta. 18 00:00:53,310 --> 00:00:55,880 O vídeo vai acabar sobre ollar como porco. 19 00:00:55,880 --> 00:00:57,650 >> - [Grunhido] 20 00:00:57,650 --> 00:01:02,240 >> -Hai Máis e máis persoas adictas para facer vídeos verticais cada día. 21 00:01:02,240 --> 00:01:06,240 Non é rachar ou nada, senón que é moi malo. 22 00:01:06,240 --> 00:01:10,410 Existen dous tipos de persoas que están aflitos con VVS. 23 00:01:10,410 --> 00:01:14,160 O primeiro grupo trata o videos de tirar como imaxes. 24 00:01:14,160 --> 00:01:15,850 Elas non significan ningún dano. 25 00:01:15,850 --> 00:01:19,180 Eles simplemente non entenden que canto pode xirar unha imaxe, 26 00:01:19,180 --> 00:01:20,880 non pode realmente transformar un vídeo. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [Mono SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -O Outro grupo é de persoas que non dar un [BLEEP]. 30 00:01:27,540 --> 00:01:31,090 >> Síndrome de Vídeo -Vertical é perigoso. 31 00:01:31,090 --> 00:01:34,120 As imaxes de vídeo teñen sempre foi horizontal. 32 00:01:34,120 --> 00:01:35,990 As televisións están horizontal. 33 00:01:35,990 --> 00:01:38,380 Pantallas de ordenador son horizontais. 34 00:01:38,380 --> 00:01:41,580 Os ollos da xente son horizontais. 35 00:01:41,580 --> 00:01:45,170 Non son construídos para ver vídeos verticais. 36 00:01:45,170 --> 00:01:47,600 >> -Eu Amo vídeos verticais. 37 00:01:47,600 --> 00:01:50,410 >> -Ninguém Se preocupa con vostede. 38 00:01:50,410 --> 00:01:53,340 >> -Se Deste problema non é controlada, tamén 39 00:01:53,340 --> 00:01:57,650 comezará mostrando catro vídeos dunha vez só para aforrar ancho de banda. 40 00:01:57,650 --> 00:02:02,400 >> Videos verticais -Letterboxed faría ser do tamaño dun selo postal. 41 00:02:02,400 --> 00:02:04,920 >> -E El vai se estender por todas partes. 42 00:02:04,920 --> 00:02:07,670 Pantallas de cine teñen sempre foi horizontal. 43 00:02:07,670 --> 00:02:11,200 Se verticais vídeos fan a aceptados, cines 44 00:02:11,200 --> 00:02:13,930 terá que ser alto e delgado. 45 00:02:13,930 --> 00:02:17,710 >> -E Todas as salas de cine faría ten que se demolida e reconstruída. 46 00:02:17,710 --> 00:02:22,090 E no momento en que foron reconstruídas, Mila Kunis sería vello e feo. 47 00:02:22,090 --> 00:02:24,342 >> -birds Ha chocar con eles e morrer. 48 00:02:24,342 --> 00:02:26,530 >> -Imos Todo estar duro pescozos de ollar para arriba. 49 00:02:26,530 --> 00:02:29,800 >> -E Ninguén vai sentir-se no a liña da fronte unha vez máis. 50 00:02:29,800 --> 00:02:37,170 >> -George Lucas ha re-lanzamento Estrela Guerras novamente-- a edición delgado. 51 00:02:37,170 --> 00:02:41,860 >> -Eu Nunca foi realmente capaz de dicir a historia que eu quería contar. 52 00:02:41,860 --> 00:02:46,030 Esta foi unha gran oportunidade para min probar cunha nova tecnoloxía. 53 00:02:46,030 --> 00:02:48,150 >> -Vostede É un idiota. 54 00:02:48,150 --> 00:02:54,430 >> -Toda Xa que un dispositivo móbil é usado para gravar vídeo, a tentación é alí. 55 00:02:54,430 --> 00:02:56,370 Basta dicir non. 56 00:02:56,370 --> 00:03:00,116 Diga non ao George Lucas. 57 00:03:00,116 --> 00:03:04,062 Diga non ao vello Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Diga non aos vídeos verticais. 59 00:03:06,600 --> 00:03:12,511 >> -E Se ve alguén a facer iso, din, "non está filmando a manequim correcto!" 60 00:03:12,511 --> 00:03:15,433 >> [Música tocando] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [FIN DE REPRODUCIÓN] 63 00:03:19,830 --> 00:03:23,702 >> [Aplausos] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB Bowden: --simple forma de cifrado, 67 00:03:45,790 --> 00:03:49,500 que é, basicamente, o cifrado e decodificación de mensaxes secretas. 68 00:03:49,500 --> 00:03:52,590 Polo tanto, temos aquí un xoguete moi sinxelo. 69 00:03:52,590 --> 00:03:56,900 E a idea é o anel externo xira en torno ao anel interno. 70 00:03:56,900 --> 00:04:01,610 E podes ver, se cadra si aumentar en, isso-- é difícil de ver. 71 00:04:01,610 --> 00:04:05,090 Pero, así como, o número 1-- ben, iso cambiou. 72 00:04:05,090 --> 00:04:09,120 >> O número 1 mapea á letra X, número 2 mapas para a letra 73 00:04:09,120 --> 00:04:11,630 J. incrible difícil non ir para adiante. 74 00:04:11,630 --> 00:04:16,100 Carta 2 mapea para J. Número 3 mapea para D. Así, 75 00:04:16,100 --> 00:04:20,140 con este anel que pode dar- alguén unha mensaxe 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Por algunha razón ten quero dicirlles XJD. 77 00:04:22,624 --> 00:04:24,540 Pero pode darlles algunha mensaxe de números, 78 00:04:24,540 --> 00:04:28,460 e sempre que eles teñen este anel, eles pode descifrar o que estás a dicir. 79 00:04:28,460 --> 00:04:32,510 >> Entón podes ver este en particular exemplo de cifrado 80 00:04:32,510 --> 00:04:36,640 antes en torno á época do Nadal asistiu Unha Historia de Nadal. 81 00:04:36,640 --> 00:04:38,520 Se nunca viu iso antes, entón só 82 00:04:38,520 --> 00:04:41,060 conectar TBS en literalmente calquera momento na véspera de Nadal, 83 00:04:41,060 --> 00:04:44,510 porque simplemente mostra-lo de volta para atrás a volta atrás para facer o día. 84 00:04:44,510 --> 00:04:46,744 E o vídeo é relevante esta. 85 00:04:46,744 --> 00:04:47,410 [REPRODUCIÓN DE VIDEO] 86 00:04:47,410 --> 00:04:50,020 -sexa Sábese a todo o mundo que Ralph Parker é por este medio 87 00:04:50,020 --> 00:04:52,850 nomeado membro da Pequena Orphan Annie Círculo Secreto 88 00:04:52,850 --> 00:04:56,490 e ten dereito a todos os honores e beneficios produciron ao mesmo. 89 00:04:56,490 --> 00:04:59,010 Asinado Little Orphan Annie. 90 00:04:59,010 --> 00:05:03,120 Referendado Pierre André en tinta! 91 00:05:03,120 --> 00:05:07,460 Honores e beneficios xa coa idade de nove! 92 00:05:07,460 --> 00:05:12,530 >> [Gritar de RADIO] 93 00:05:12,530 --> 00:05:13,030 -Imos. 94 00:05:13,030 --> 00:05:14,000 Imos comezar con el. 95 00:05:14,000 --> 00:05:18,274 Eu non teño todo ese jazz sobre contrabandistas e piratas. 96 00:05:18,274 --> 00:05:20,440 -listen Mañá á noite con a aventura final 97 00:05:20,440 --> 00:05:22,540 do Navío de pirata negro. 98 00:05:22,540 --> 00:05:25,460 Agora é o momento de Mensaxe secreta de Annie 99 00:05:25,460 --> 00:05:28,620 para vós, membros da Secret Circle. 100 00:05:28,620 --> 00:05:32,370 Teña en conta que dos miúdo, só os membros do Círculo Secreto de Annie 101 00:05:32,370 --> 00:05:34,880 pode descodificar a mensaxe secreta de Annie. 102 00:05:34,880 --> 00:05:39,100 Lembre, Annie está dependendo de ti. 103 00:05:39,100 --> 00:05:41,660 Define os seus pinos para B2. 104 00:05:41,660 --> 00:05:43,960 Aquí está a mensaxe. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Eu Estou na miña primeira reunión secreta. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> Oh, Pierre está gran esta noite voz. 115 00:05:54,570 --> 00:05:57,490 Podería dicir que esta noite mensaxe era realmente importante. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Esa é unha mensaxe de Annie si mesma. 119 00:06:01,580 --> 00:06:02,880 Lembre, non diga a ninguén. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Cinco Segundos máis tarde, eu estou no único cuarto na casa onde un neno de nove anos 122 00:06:11,130 --> 00:06:15,830 podería sentar privacidade e decodificar. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 B! 125 00:06:17,340 --> 00:06:20,210 Eu fun para o próximo. 126 00:06:20,210 --> 00:06:23,300 E. A primeira palabra é "ser". 127 00:06:23,300 --> 00:06:25,880 S. Estaba vindo máis fácil agora. 128 00:06:25,880 --> 00:06:28,400 U. 25. 129 00:06:28,400 --> 00:06:30,528 Isto é R. 130 00:06:30,528 --> 00:06:31,278 Imos, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Teño que ir! 132 00:06:31,861 --> 00:06:33,182 -Vou Ser dereito para abaixo, Ma! 133 00:06:33,182 --> 00:06:36,038 Gee Whiz. 134 00:06:36,038 --> 00:06:42,840 T. O. "Asegúrese" - asegúrese de que? 135 00:06:42,840 --> 00:06:44,770 Cal foi Little Orphan Annie intenta dicir? 136 00:06:44,770 --> 00:06:46,381 Asegúrese de que? 137 00:06:46,381 --> 00:06:47,825 >> -Randy Ten que ir! 138 00:06:47,825 --> 00:06:48,866 Será que podería saír? 139 00:06:48,866 --> 00:06:49,783 >> -Todos Correcto, nai! 140 00:06:49,783 --> 00:06:51,786 Estarei fóra á dereita! 141 00:06:51,786 --> 00:06:53,606 Eu estaba quedando máis preto agora. 142 00:06:53,606 --> 00:06:55,550 A tensión era terrible. 143 00:06:55,550 --> 00:06:57,050 Que foi? 144 00:06:57,050 --> 00:06:59,905 O destino do planeta pode colgar na balanza! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy ten que ir! 146 00:07:01,736 --> 00:07:05,680 >> -Vou Ser dereito para fóra, polo amor de Deus! 147 00:07:05,680 --> 00:07:07,170 Case alí! 148 00:07:07,170 --> 00:07:08,150 Meus dedos voaron. 149 00:07:08,150 --> 00:07:09,980 Miña mente era unha trampa de aceiro. 150 00:07:09,980 --> 00:07:11,496 Todos os poros tensou. 151 00:07:11,496 --> 00:07:13,268 Era case claro! 152 00:07:13,268 --> 00:07:13,767 Si. 153 00:07:13,767 --> 00:07:14,609 Si. 154 00:07:14,609 --> 00:07:15,108 Si. 155 00:07:15,108 --> 00:07:16,449 Si. 156 00:07:16,449 --> 00:07:20,240 Asegúrese de beber o seu Ovomaltine. 157 00:07:20,240 --> 00:07:20,740 Ovomaltine? 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Un comercial miserable? 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Fillo de puta. 162 00:07:34,920 --> 00:07:35,890 >> [FIN DE REPRODUCIÓN] 163 00:07:35,890 --> 00:07:39,650 >> ROB Bowden: Entón é así que Ovaltine refírese a criptografía. 164 00:07:39,650 --> 00:07:42,290 Basicamente CS50 só anunciado Ovomaltine, para que pudéssemos 165 00:07:42,290 --> 00:07:44,400 ser un comercial crummy para Ovomaltine. 166 00:07:44,400 --> 00:07:44,900 Todo ben. 167 00:07:44,900 --> 00:07:47,120 Entón, agora a ciencia da computación real. 168 00:07:47,120 --> 00:07:50,670 Teña en conta que o luns paramos mergullo máis profundo en cadeas. 169 00:07:50,670 --> 00:07:52,820 Entón, estabamos lidando con a cadea "Zamyla." 170 00:07:52,820 --> 00:07:55,130 E nós estabamos recoñecendo o feito de que podemos tratar 171 00:07:55,130 --> 00:07:57,510 "Zamyla" como unha secuencia de caracteres. 172 00:07:57,510 --> 00:07:59,740 E lembre de que aprendemos a notación de soporte. 173 00:07:59,740 --> 00:08:01,995 Así, se este se almacenan nunha cadea "s", despois 174 00:08:01,995 --> 00:08:05,860 se dixésemos s soporte 0, que faría indicar a capital letra 'Z' 175 00:08:05,860 --> 00:08:09,790 E se nós dixemos s soporte 1, que ía indicar a primeira letra minúscula un, 176 00:08:09,790 --> 00:08:14,220 e así sucesivamente ata s soporte 5, o que indicaría a última a. 177 00:08:14,220 --> 00:08:17,090 >> Agora lembre que o lonxitude desta secuencia é 6, 178 00:08:17,090 --> 00:08:23,220 pero os índices na cadea son 0 a 5, Z por aquel durar. 179 00:08:23,220 --> 00:08:28,650 Polo tanto, este agora encaixa nun cadro maior da memoria do seu ordenador, o seu RAM. 180 00:08:28,650 --> 00:08:32,020 Entón, o programa que algures está executando o seu ordenador 181 00:08:32,020 --> 00:08:34,780 Debe lembrar Zamyla algures na memoria. 182 00:08:34,780 --> 00:08:36,029 Entón eu podo ter un voluntario? 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Si, por favor. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 E cal é o seu nome? 187 00:08:51,500 --> 00:08:52,410 >> DEAN: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB Bowden: Dean? 189 00:08:53,550 --> 00:08:54,910 Pracer en coñece-lo, Dean. 190 00:08:54,910 --> 00:08:58,240 Entón veña aquí, e nós imos ter que deseñar 191 00:08:58,240 --> 00:09:00,740 no noso esquema agradable bacana de memoria. 192 00:09:00,740 --> 00:09:05,950 Agora me gusta de pensar de memoria como unha longa franxa de bytes, 193 00:09:05,950 --> 00:09:11,090 pero soamente con fins de visualización imos simplemente esquerda a dereita, de arriba abaixo. 194 00:09:11,090 --> 00:09:11,590 OK? 195 00:09:11,590 --> 00:09:22,030 >> Entón eu vou lle amosar unha program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 E así todo este programa é facendo é solicitando catro cordas 197 00:09:25,760 --> 00:09:28,830 do usuario con E, a continuación, a impresión GetString 198 00:09:28,830 --> 00:09:30,950 o que quere que a primeira cadea introducida era. 199 00:09:30,950 --> 00:09:32,840 Estamos ignorando dous a catro. 200 00:09:32,840 --> 00:09:33,610 Aceptar. 201 00:09:33,610 --> 00:09:38,210 Entón aquí agora- cando I primeiro s1 solicitude. 202 00:09:38,210 --> 00:09:39,740 Entón está no ordenador. 203 00:09:39,740 --> 00:09:41,680 E está aplicando GetString. 204 00:09:41,680 --> 00:09:46,710 Entón solicitar unha secuencia de me, e eu digo: OK, Dean. 205 00:09:46,710 --> 00:09:47,900 Dea a cadea "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Entón, en algún lugar na memoria que cómpre lembrar "Dean". 207 00:09:50,300 --> 00:09:52,160 Entón escriba o en memoria de algún lugar. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Perfecto. 210 00:09:59,210 --> 00:09:59,880 Aceptar. 211 00:09:59,880 --> 00:10:01,740 Entón, agora temos S2. 212 00:10:01,740 --> 00:10:03,869 E s2 será unha proposta para GetString. 213 00:10:03,869 --> 00:10:05,160 Entón, eu estou indo a introducir unha cadea. 214 00:10:05,160 --> 00:10:08,720 Vou entrar "Hannah". 215 00:10:08,720 --> 00:10:10,586 Entón escriba "Hannah" nalgún lugar na memoria. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Si. 218 00:10:19,360 --> 00:10:23,000 A-H. 219 00:10:23,000 --> 00:10:25,550 >> OK, entón agora s3. 220 00:10:25,550 --> 00:10:28,380 E vai ser outro solicitar a GetString. 221 00:10:28,380 --> 00:10:37,020 E entón agora escriba "María". 222 00:10:37,020 --> 00:10:37,520 Todo ben. 223 00:10:37,520 --> 00:10:40,980 E despois hai unha última solicitude para GetString, S4. 224 00:10:40,980 --> 00:10:42,580 Entón, eu non sei. 225 00:10:42,580 --> 00:10:45,640 Que tal irmos con antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Así que entrar na memoria. 227 00:10:49,460 --> 00:10:50,400 Si. 228 00:10:50,400 --> 00:10:53,970 Entón, só tes que facer "Rob". 229 00:10:53,970 --> 00:10:54,560 >> Aceptar. 230 00:10:54,560 --> 00:10:58,410 Entón, por que agora explain-- deixar eses espazos? 231 00:10:58,410 --> 00:11:01,340 Por que ten isto en branco espazo aquí, aquí e aquí enriba? 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Si. 234 00:11:05,670 --> 00:11:09,450 Entón, observe cando vou imprimir s1-- polo que, se nós 235 00:11:09,450 --> 00:11:11,890 tivo running "Hannah" dereito á beira de "Dean", 236 00:11:11,890 --> 00:11:14,360 como sabemos cando a cadea "Dean" remata? 237 00:11:14,360 --> 00:11:19,470 Entón, o impreso co s1 corda pode só impreso "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 Se non ten ningún indicio de cando "Dean", en realidade, remata. 239 00:11:22,720 --> 00:11:23,240 >> Todo ben. 240 00:11:23,240 --> 00:11:27,650 Así, en memoria a forma que nós, en realidade, representa ese final dunha cadea 241 00:11:27,650 --> 00:11:29,940 É con barra invertida cero. 242 00:11:29,940 --> 00:11:32,620 Polo tanto, este espazo é o que queriamos. 243 00:11:32,620 --> 00:11:34,040 Debe ser unha barra invertida cero. 244 00:11:34,040 --> 00:11:37,690 Esta será unha barra invertida cero, e esta será unha barra invertida cero. 245 00:11:37,690 --> 00:11:41,585 E pode que un premio fabuloso por ser un voluntario perfecto. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Tome unha bola de estrés! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> Aceptar. 250 00:11:49,700 --> 00:11:54,420 Polo tanto, este carácter de barra invertida cero é como podemos indicar o fin dunha secuencia de carácteres. 251 00:11:54,420 --> 00:11:57,120 É como cando un determinado programa quere imprimir unha secuencia de caracteres, 252 00:11:57,120 --> 00:11:59,760 é how-- lembro aprendemos a función strlen a semana pasada? 253 00:11:59,760 --> 00:12:00,940 Lonxitude da corda? 254 00:12:00,940 --> 00:12:03,770 É como lonxitude da corda é capaz de determinar canto tempo unha cadea é. 255 00:12:03,770 --> 00:12:05,810 El só segue iteración ao longo dos personaxes 256 00:12:05,810 --> 00:12:08,217 ata atopar o carácter de barra invertida cero. 257 00:12:08,217 --> 00:12:11,050 Así, o que é importante entender sobre o carácter barra invertida de cero 258 00:12:11,050 --> 00:12:14,950 é que é representado por todos os ceros en bits. 259 00:12:14,950 --> 00:12:18,980 Entón, teña en conta que este é distinguida desde o cero. 260 00:12:18,980 --> 00:12:23,010 Así, o carácter cero, se recorda no exemplo que deu a finais 261 00:12:23,010 --> 00:12:27,360 de conferencia onde os personaxes mapear a-- como mapas maiúsculas da a 65. 262 00:12:27,360 --> 00:12:29,130 Minúsculas unha mapas para 97. 263 00:12:29,130 --> 00:12:30,890 B minúsculas sería 98. 264 00:12:30,890 --> 00:12:35,220 Así, o número 0 mapas para-- Non facer sei fóra do cumio da miña cabeza. 265 00:12:35,220 --> 00:12:36,400 44 ou 45. 266 00:12:36,400 --> 00:12:37,890 Nalgún lugar na rexión. 267 00:12:37,890 --> 00:12:40,850 >> Así, o carácter 0 é un número real. 268 00:12:40,850 --> 00:12:44,350 Pero de cero barra invertida mapas para todos os bits cero. 269 00:12:44,350 --> 00:12:46,380 Polo tanto, hai unha distinción entre barra invertida cero, 270 00:12:46,380 --> 00:12:48,450 que chamaremos o terminador nulo. 271 00:12:48,450 --> 00:12:53,210 Hai unha distinción entre barra invertida cero eo carácter cero. 272 00:12:53,210 --> 00:12:54,350 >> Todo ben. 273 00:12:54,350 --> 00:12:57,520 Entón, falando un pouco máis sobre cadeas. 274 00:12:57,520 --> 00:13:01,470 Entón vemos aquí é así sería colocado para fóra na memoria. 275 00:13:01,470 --> 00:13:07,940 Entón, esa idea de cadeas como unha secuencia de xeito que o ordenador de caracteres oficial 276 00:13:07,940 --> 00:13:10,750 sciency prazo para a secuencia é unha matriz. 277 00:13:10,750 --> 00:13:13,790 Entón, nós chamariamos unha cadea un conxunto de caracteres. 278 00:13:13,790 --> 00:13:17,770 E de feito existen outros datos tipo que podemos facer matrices de fóra. 279 00:13:17,770 --> 00:13:19,975 >> Entón, para motivar iso, ollar un exemplo. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Imos chamalo vou ages0.c copia e pega o noso modelo. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 Aceptar. 284 00:13:33,410 --> 00:13:39,378 Polo tanto, neste programa que quero facer é ir a idade 285 00:13:39,378 --> 00:13:45,160 de tres alumnos do curso. 286 00:13:45,160 --> 00:13:49,240 Entón, nós sabemos o int age-- e agora eu vou dicir 0. 287 00:13:49,240 --> 00:13:53,140 Entón podes querer dicir idade1 pero con fins veremos moi pronto, 288 00:13:53,140 --> 00:13:57,187 Eu vou dicir int age0 igual GetInt. 289 00:13:57,187 --> 00:13:59,270 Así, a mesma chamada GetInt que temos que chegou a utilizar I 290 00:13:59,270 --> 00:14:01,561 non ocorrer de ser alertando dicindo: "dáme a idade." 291 00:14:01,561 --> 00:14:03,120 Pero, así o solicite. 292 00:14:03,120 --> 00:14:06,510 >> E idade1 igual GetInt. 293 00:14:06,510 --> 00:14:09,600 E int idade2 igual GetInt. 294 00:14:09,600 --> 00:14:14,070 Entón, de novo, tres estudantes, pero finalmente, os índices variables 295 00:14:14,070 --> 00:14:16,890 son age0 mediante idade2. 296 00:14:16,890 --> 00:14:17,550 Aceptar. 297 00:14:17,550 --> 00:14:23,960 Polo tanto, este programa vai facer o que sexa queremos con age0, idade1, e idade2, 298 00:14:23,960 --> 00:14:27,670 pero este programa, en definitiva traballa para tres estudantes. 299 00:14:27,670 --> 00:14:28,380 >> Aceptar. 300 00:14:28,380 --> 00:14:32,110 Entón agora o que se eu queira catro estudantes? 301 00:14:32,110 --> 00:14:36,000 Ben, eu vou ter que volver no meu código, cambiar o comentario, 302 00:14:36,000 --> 00:14:39,840 e agora temos un int idade3 igual GetInt. 303 00:14:39,840 --> 00:14:40,610 Aceptar. 304 00:14:40,610 --> 00:14:43,660 Entón, quen ve o problema aquí? 305 00:14:43,660 --> 00:14:47,310 Cal é o problema con este tipo de configuración? 306 00:14:47,310 --> 00:14:47,810 Si. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Si. 309 00:14:53,610 --> 00:14:56,360 Entón, nós estamos creando unha variable para cada alumno. 310 00:14:56,360 --> 00:15:00,140 Agora que funciona, pero en definitiva, o que se eu agora 311 00:15:00,140 --> 00:15:06,500 dicir: "Eu quero ir a idade de oito estudantes ou 16 alumnos 312 00:15:06,500 --> 00:15:11,340 ou os porén moitos estudantes de os centos de estudantes en CS50 313 00:15:11,340 --> 00:15:16,750 ou os miles de estudantes no campus ou os millóns de persoas no mundo? 314 00:15:16,750 --> 00:15:19,130 Entón, en definitiva, iso non é sostible. 315 00:15:19,130 --> 00:15:21,990 Cada vez que ve a si mesmo copiando e pegar o código como este, 316 00:15:21,990 --> 00:15:25,050 ten que xeralmente se senten que hai un xeito mellor. 317 00:15:25,050 --> 00:15:31,290 >> Polo tanto, este é o lugar onde nós introducimos unha declaración de matriz. 318 00:15:31,290 --> 00:15:34,564 Entón, cando declarar unha matriz, isto é o que o formato xeral 319 00:15:34,564 --> 00:15:35,480 vai ollar como. 320 00:15:35,480 --> 00:15:36,664 Estamos indo para dicir o tipo. 321 00:15:36,664 --> 00:15:38,830 e, a continuación, imos dar o nome desa matriz, 322 00:15:38,830 --> 00:15:41,150 así como nós establecer calquera variable dada. 323 00:15:41,150 --> 00:15:43,980 E entón, finalmente, estamos usando esta notación soporte de novo 324 00:15:43,980 --> 00:15:47,480 pero nun contexto diferente como estabamos a usalo antes. 325 00:15:47,480 --> 00:15:51,860 >> Entón, aquí iso parece un normal, declaración da variable que vimos. 326 00:15:51,860 --> 00:15:54,890 Entón vimos int x e coma antes. 327 00:15:54,890 --> 00:16:00,020 Ben, agora podemos ver algo como int x 5 soportes. 328 00:16:00,020 --> 00:16:04,020 E poñer esa idea en o GetInt programa que have-- 329 00:16:04,020 --> 00:16:08,850 para que poidamos aplicar este do mesmo xeito. 330 00:16:08,850 --> 00:16:13,630 >> Imos dicir que en CS tendemos a usar n como o número de algo. 331 00:16:13,630 --> 00:16:16,150 Entón aquí imos almacenar catro estudantes. 332 00:16:16,150 --> 00:16:25,960 E agora podemos dicir idade int soporte non n-- bastante obtelo yet-- 333 00:16:25,960 --> 00:16:32,210 para declarar unha matriz de catro alumnos. 334 00:16:32,210 --> 00:16:38,050 Entón, como iso pode ollar en memoria será semellante a esta. 335 00:16:38,050 --> 00:16:39,570 Desmarque esta. 336 00:16:39,570 --> 00:16:46,606 E nós imos ter un lugar en memory-- vou poñer isto alí enriba. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Así, en algún lugar na memoria. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Un, dous, tres, catro. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Temos catro enteiros nunha fileira para este conxunto de catro números enteiros. 343 00:17:09,849 --> 00:17:13,820 Así, na actualidade, o que é a tamaño dunha destas caixas? 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Si. 346 00:17:17,690 --> 00:17:18,390 É catro bytes. 347 00:17:18,390 --> 00:17:19,690 É 32 bits. 348 00:17:19,690 --> 00:17:22,310 Entón, agora que é diferente desde a matriz que 349 00:17:22,310 --> 00:17:24,020 vimos anteriormente, a matriz de caracteres. 350 00:17:24,020 --> 00:17:28,540 Nunha secuencia de cada caixa era só un byte, porque un personaxe é só un byte. 351 00:17:28,540 --> 00:17:32,170 Pero, con unha matriz de números enteiros, cada caixa ten que ser catro bytes en orde 352 00:17:32,170 --> 00:17:34,060 para encaixar un enteiro enteiro. 353 00:17:34,060 --> 00:17:37,197 Entón é iso que unha matriz de catro ints sería semellante. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> E despois volver para o código. 356 00:17:43,870 --> 00:17:47,460 Agora queremos realmente tenda enteiros para esa matriz. 357 00:17:47,460 --> 00:17:53,470 Entón, agora que é un moi, moi, moi estándar común que, nalgún momento 358 00:17:53,470 --> 00:17:54,680 chegar a ser a memoria muscular. 359 00:17:54,680 --> 00:17:56,710 Entón int i é igual a 0. 360 00:17:56,710 --> 00:17:57,940 i menos n. 361 00:17:57,940 --> 00:18:01,850 i plus plus. 362 00:18:01,850 --> 00:18:05,790 Idade i é igual a GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Polo tanto, este loop for, este formato, ten que ser moi acostumado. 364 00:18:15,100 --> 00:18:20,010 Polo tanto, esta é xeralmente o xeito no que imos iterado sobre practicamente calquera matriz. 365 00:18:20,010 --> 00:18:23,690 Agora, observe este tipo de explica por que, desde o inicio 366 00:18:23,690 --> 00:18:29,870 nós non temos para loops indo int i é igual a 1, i menor ou igual a 10. 367 00:18:29,870 --> 00:18:34,200 A razón é que a partir de de cero fai ben este traballo con arrays. 368 00:18:34,200 --> 00:18:36,270 Entón matrices son cero indexado. 369 00:18:36,270 --> 00:18:40,360 Se esta matriz é de lonxitude 4, os índices son de 0 a 3. 370 00:18:40,360 --> 00:18:42,880 >> Entón, a través do primeiro iteración deste lazo for 371 00:18:42,880 --> 00:18:49,930 estaremos definindo idade 0 soporte igual a unha chamada GetInt. 372 00:18:49,930 --> 00:18:52,440 Entón o que me aconteceu para entrar no teclado. 373 00:18:52,440 --> 00:18:56,970 Na segunda pasaxe, somos definindo idade1 igual a GetInt. 374 00:18:56,970 --> 00:18:58,230 Terceira paso, idade2. 375 00:18:58,230 --> 00:18:59,880 Idade3 pase final. 376 00:18:59,880 --> 00:19:05,750 Polo tanto, na primeira pasaxe do loop Eu escribir o número 4 no teclado, 377 00:19:05,750 --> 00:19:07,740 entón imos introducir un 4 aquí. 378 00:19:07,740 --> 00:19:11,470 Na segunda pasaxe entro 50, nós imos poñer un 50 aquí. 379 00:19:11,470 --> 00:19:15,180 Na terceira pasaxe podería escriba 1 negativo, negativo 1, 380 00:19:15,180 --> 00:19:21,810 e, finalmente, se eu entrar e 0-- Agora, lembre que este foi o índice de tres. 381 00:19:21,810 --> 00:19:25,350 >> Despois de que nós loop de volta, eu é será incrementado para 4. 382 00:19:25,350 --> 00:19:27,770 Xa non é menos que n, o cal é 4. 383 00:19:27,770 --> 00:19:29,840 E nós saír do loop. 384 00:19:29,840 --> 00:19:32,578 Entón, o que estaría mal con iso? 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Inaudível]? 387 00:19:38,729 --> 00:19:39,604 Audiencia: [inaudível] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Si. 390 00:19:46,400 --> 00:19:51,550 Así, a matriz ten só catro locais, o que significa que os índices de 0 a 3. 391 00:19:51,550 --> 00:19:55,630 Polo tanto, se ese fose o caso, eu o faría asumir o valor de 4 nalgún momento. 392 00:19:55,630 --> 00:20:00,910 idade 4 será a creación pase o que pase a ser máis aquí 393 00:20:00,910 --> 00:20:02,920 o que eu teño que dicir, entrar 6. 394 00:20:02,920 --> 00:20:05,010 Isto vai ser a creación desa a 6. 395 00:20:05,010 --> 00:20:06,560 >> Pero nós non sabemos o que está por aquí. 396 00:20:06,560 --> 00:20:08,836 Esta non é a memoria que tivemos acceso. 397 00:20:08,836 --> 00:20:10,710 Entón, se lembrar de a charla anterior, 398 00:20:10,710 --> 00:20:14,350 estaba imprimindo valores Zamyla e nalgún momento bateu esta segmentación 399 00:20:14,350 --> 00:20:17,990 fallo. Entón, probablemente vai estar a ver moitos fallos de segmentación como 400 00:20:17,990 --> 00:20:20,530 aplicar algúns dos conxuntos de problemas. 401 00:20:20,530 --> 00:20:24,950 Pero esta é unha das formas en que podes atopar unha segmentación 402 00:20:24,950 --> 00:20:28,540 falla, cando comezar a acceder memoria de formas que non debe ser. 403 00:20:28,540 --> 00:20:34,117 Por iso, non ten acceso a este lugar e este é un erro. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Polo tanto, este é mellor. 406 00:20:40,190 --> 00:20:45,820 Agora, aínda hai un pequeno problema con este código. 407 00:20:45,820 --> 00:20:50,720 E iso é basicamente que somos aínda preso catro alumnos. 408 00:20:50,720 --> 00:20:52,940 Agora, se eu queira utilizar oito estudantes, Aceptar. 409 00:20:52,940 --> 00:20:54,350 Non é un gran negocio. 410 00:20:54,350 --> 00:20:58,120 Podo entrar, cambiar a comentar e cambie n. 411 00:20:58,120 --> 00:20:59,760 Agora iso vai funcionar con oito alumnos. 412 00:20:59,760 --> 00:21:02,190 Se eu compilar e executar este iso, que vai mostrar me-- 413 00:21:02,190 --> 00:21:07,870 ha solicitar enteiros para oito estudantes e só pode funcionar. 414 00:21:07,870 --> 00:21:11,850 Pero é menos que perfecto para ter recompilar o programa de cada vez 415 00:21:11,850 --> 00:21:15,960 Quero cambiar o número de alumnos que quero entrar na idade. 416 00:21:15,960 --> 00:21:22,990 >> Así, a mellora final sobre este, como veremos aqui-- estamos 417 00:21:22,990 --> 00:21:26,177 vai solicitar o número de persoas. 418 00:21:26,177 --> 00:21:28,010 Aquí temos un número de persoas nos cuartos 419 00:21:28,010 --> 00:21:29,880 ou calquera idades de persoas na sala. 420 00:21:29,880 --> 00:21:33,300 Pero nós estamos indo para solicitar o número de persoas na sala do usuario. 421 00:21:33,300 --> 00:21:36,171 Polo tanto, este é o mesmo do-while loop que vimos antes. 422 00:21:36,171 --> 00:21:37,920 É exactamente o mesmo do-while loop que 423 00:21:37,920 --> 00:21:40,050 pode ser aplicando no set problema. 424 00:21:40,050 --> 00:21:43,102 Entón, mentres eles son entrando nunha n inferior a 1, 425 00:21:43,102 --> 00:21:45,310 polo que non ten que ser de polo menos unha persoa no cuarto. 426 00:21:45,310 --> 00:21:47,407 Mentres eles son entrando nunha n inferior a 1, 427 00:21:47,407 --> 00:21:48,990 entón imos seguir pedindo de novo. 428 00:21:48,990 --> 00:21:50,906 Introduza o número de persoas na sala. 429 00:21:50,906 --> 00:21:53,550 Agora, unha vez que temos o número de persoas no quarto-- 430 00:21:53,550 --> 00:21:58,020 para que eu poida poñerse que non Son 200 persoas nesta sala. 431 00:21:58,020 --> 00:22:05,480 Entón aquí estamos indo a vir e declarar unha matriz de tamaño 200. 432 00:22:05,480 --> 00:22:10,220 Estamos declarando matriz que é grande abondo para almacenar 200 idades. 433 00:22:10,220 --> 00:22:15,370 Benvida para abaixo, é o loop que vai estar moi acostumado. 434 00:22:15,370 --> 00:22:19,490 Entón iteración sobre esta matriz, atribuíndo a cada situación 435 00:22:19,490 --> 00:22:23,020 desa matriz un enteiro, e a continuación, en definitiva, aquí estamos 436 00:22:23,020 --> 00:22:28,340 quedando só un exemplo de iteración sobre esta matriz, para non facer valores, 437 00:22:28,340 --> 00:22:30,150 pero para acceder aos valores. 438 00:22:30,150 --> 00:22:33,810 >> Entón aquí vemos que está dicindo, de aquí a un ano, 439 00:22:33,810 --> 00:22:40,470 % I persoa estará% i anos, onde o primeiro% i é i + 1. 440 00:22:40,470 --> 00:22:43,010 Entón eu é esa variable índice. 441 00:22:43,010 --> 00:22:49,420 E o segundo% i será o valor almacenado na matriz idades máis 1. 442 00:22:49,420 --> 00:22:54,217 Polo tanto, este máis 1 é só porque somos dizendo-- esta máis 1, as idades i máis 1. 443 00:22:54,217 --> 00:22:57,050 Este é só un porque somos dicindo, de aquí a un ano a persoa 444 00:22:57,050 --> 00:22:58,280 será esta idade. 445 00:22:58,280 --> 00:23:01,080 >> ¿Como é que esta i + 1? 446 00:23:01,080 --> 00:23:04,064 Porque temos un plus un alí? 447 00:23:04,064 --> 00:23:04,564 Si. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Si. 450 00:23:07,930 --> 00:23:10,510 Entón lembre de cero matrices son indexados. 451 00:23:10,510 --> 00:23:14,840 Entón, se estamos imprimindo isto para alguén para ler só a saída, 452 00:23:14,840 --> 00:23:19,380 entón probablemente queren ver algo como unha persoa, a persoa número un, 453 00:23:19,380 --> 00:23:21,160 será de 20 anos de idade. 454 00:23:21,160 --> 00:23:23,570 Número dous persoa será de 15 anos de idade. 455 00:23:23,570 --> 00:23:27,420 Eles prefiro non ver persoa número cero é de 15 anos de idade. 456 00:23:27,420 --> 00:23:36,460 >> Entón, compilar esta e só ver o que parece como-- crear un espazo. 457 00:23:36,460 --> 00:23:43,560 Fai idades compila. 458 00:23:43,560 --> 00:23:45,080 Executando as idades. 459 00:23:45,080 --> 00:23:46,580 Vemos número de persoas na sala. 460 00:23:46,580 --> 00:23:48,850 Entón, eu vou dicir que hai tres persoas na sala. 461 00:23:48,850 --> 00:23:54,000 Idade da persoa número un, digamos 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 E agora eu vou dicir aquí a un ano agora van ser 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Imos ver o que funciona con un que n non é igual a 3. 464 00:24:02,900 --> 00:24:07,940 Entón, se eu digo número de persoas é 5, un, dous, tres, dous, un, un ano a partir de agora 465 00:24:07,940 --> 00:24:11,170 eles van ser dous, tres, catro, tres, dous anos de idade. 466 00:24:11,170 --> 00:24:16,500 Entón, eu podería só como facilmente n ser 10.000. 467 00:24:16,500 --> 00:24:21,270 Agora vou estar sentado aquí por un bo un tempo de entrar idades, pero funciona. 468 00:24:21,270 --> 00:24:26,000 >> Entón, agora na memoria nalgún lugar nos ten unha matriz de tamaño 10,000, 469 00:24:26,000 --> 00:24:28,830 Entón, finalmente 40.000 bytes, porque hai 470 00:24:28,830 --> 00:24:31,222 catro bytes para cada un destes números enteiros. 471 00:24:31,222 --> 00:24:33,180 Polo tanto, hai unha serie de tamaño 10.000 onde podemos 472 00:24:33,180 --> 00:24:36,201 almacenar as idades destas 10.000 persoas. 473 00:24:36,201 --> 00:24:36,700 Todo ben. 474 00:24:36,700 --> 00:24:40,070 Preguntas sobre nada diso? 475 00:24:40,070 --> 00:24:41,892 Si. 476 00:24:41,892 --> 00:24:43,350 Que se deu un número negativo? 477 00:24:43,350 --> 00:24:44,870 Imos ver o que acontece. 478 00:24:44,870 --> 00:24:49,320 Así, neste número especial case-- de persoas na sala, un negativo. 479 00:24:49,320 --> 00:24:52,580 Rexeitou que, porque aquí ocorrer 480 00:24:52,580 --> 00:24:57,180 para ser manexar o feito de que se n é menos dun imos pedir de novo. 481 00:24:57,180 --> 00:25:01,780 Se tentar declarar un matriz de tamaño negativo, 482 00:25:01,780 --> 00:25:03,950 que, xeralmente, non funciona. 483 00:25:03,950 --> 00:25:05,570 >> Entón, imos tratar. 484 00:25:05,570 --> 00:25:08,000 Imos ignorar o que quere valor que entrada n 485 00:25:08,000 --> 00:25:10,571 e só dicir as idades int negativa. 486 00:25:10,571 --> 00:25:12,410 A ver se aínda compilan. 487 00:25:12,410 --> 00:25:14,100 Non estou seguro. 488 00:25:14,100 --> 00:25:14,920 Non. 489 00:25:14,920 --> 00:25:18,280 Entón as idades é declarado como un matriz cun tamaño negativo. 490 00:25:18,280 --> 00:25:22,540 Entón upfront recoñece unha matriz non pode ser de tamaño negativo e rexeita. 491 00:25:22,540 --> 00:25:26,840 Agora, se non tratar con ese loop do-while correctamente, 492 00:25:26,840 --> 00:25:28,810 se non estivésemos a comprobación Se n é menor que 1-- 493 00:25:28,810 --> 00:25:32,690 imos dicir que só non tiña iso en todo 494 00:25:32,690 --> 00:25:35,940 e no seu lugar, só incorporarse un enteiro. 495 00:25:35,940 --> 00:25:40,710 Non importa o que é enteiro, declaramos unha matriz dese tamaño. 496 00:25:40,710 --> 00:25:44,250 >> Así, o compilador non pode posiblemente Reclamar agora. 497 00:25:44,250 --> 00:25:48,780 Se eu compilar isto-- polo que non podo reclamar, 498 00:25:48,780 --> 00:25:51,480 porque non pode saber que eu son vai introducir un número negativo, 499 00:25:51,480 --> 00:25:52,550 que se pode válido. 500 00:25:52,550 --> 00:25:54,633 Por todo o que sabe, eu podería escriba un número positivo, 501 00:25:54,633 --> 00:25:56,000 que é perfectamente válida. 502 00:25:56,000 --> 00:26:01,090 Entón eu imaxino que eu entrar negativo 1 persoas na sala, fallo de segmento. 503 00:26:01,090 --> 00:26:06,040 >> Así, Aceptar. 504 00:26:06,040 --> 00:26:13,160 Entón, imos engadir isto para atrás só mantelo que era orixinalmente. 505 00:26:13,160 --> 00:26:15,640 Entón, faga as idades. 506 00:26:15,640 --> 00:26:18,120 Agora, se eu quero probar un negativo age-- entón imos 507 00:26:18,120 --> 00:26:19,710 din que hai cinco persoas na sala. 508 00:26:19,710 --> 00:26:23,180 Idade da persoa número un é negativo 4, tres persoas 509 00:26:23,180 --> 00:26:26,500 é cero, persoa three-- Aceptar. 510 00:26:26,500 --> 00:26:29,850 Entón, aquí, aquí a un ano, o número de persoas unha será negativo 3 anos de idade. 511 00:26:29,850 --> 00:26:32,830 Entón, probablemente non ten sentido. 512 00:26:32,830 --> 00:26:37,220 Pero iso é só porque busca no código único que estamos facendo 513 00:26:37,220 --> 00:26:40,260 está pedindo GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Agora, se tivésemos tido a Función GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 ou que simplemente feito isto mesmo tipo de loop while alí en baixo, 516 00:26:49,690 --> 00:26:52,340 entón iso ía funcionar perfectamente ben. 517 00:26:52,340 --> 00:26:54,200 Pero, neste particular, caso, nós só non facer 518 00:26:54,200 --> 00:26:57,772 terá lugar a ser xestione valores negativos. 519 00:26:57,772 --> 00:26:59,147 Calquera outras preguntas sobre matrices? 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 Aceptar. 522 00:27:03,250 --> 00:27:09,380 >> Entón, nós vimos agora arrays. 523 00:27:09,380 --> 00:27:12,500 E nós imos ter que usar isto por liña de comandos argumentos. 524 00:27:12,500 --> 00:27:14,680 Así, no conxunto de problemas dois-- Sei que moitos de vós 525 00:27:14,680 --> 00:27:18,040 aínda pode estar a traballar en conxunto problema un, senón dous conxunto de problemas está chegando. 526 00:27:18,040 --> 00:27:22,260 No conxunto de problemas dous, vai Debe estar lidando con cadeas, arrays, 527 00:27:22,260 --> 00:27:23,950 e liña de comandos argumentos. 528 00:27:23,950 --> 00:27:26,270 >> Entón, cales son os argumentos da liña de comandos? 529 00:27:26,270 --> 00:27:29,570 Agora, podes ver aquí un pouco de provocación para o que está 530 00:27:29,570 --> 00:27:30,950 vai pasar. 531 00:27:30,950 --> 00:27:32,950 Vemos int main, argc inc, soportes de corda argv. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Entón, primeiro imos tratar interpretar o que está a tratar de dicir. 534 00:27:38,130 --> 00:27:40,800 Agora Aceptar. 535 00:27:40,800 --> 00:27:44,637 >> Así, na liña de comandos, ten que ser gañando con algúns deses comandos 536 00:27:44,637 --> 00:27:48,580 agora, e probablemente executado cd no terminal antes. 537 00:27:48,580 --> 00:27:52,100 Entón, se nós dicimos cd pset1, vostede sabe que iso deba 538 00:27:52,100 --> 00:27:55,050 estar cambiando ao directorio pset1. 539 00:27:55,050 --> 00:27:59,120 >> Agora conta que nunca escrito un programa como este antes. 540 00:27:59,120 --> 00:28:03,120 Cada programa que escribiu, sería executado, digamos, dot cortar Mario, 541 00:28:03,120 --> 00:28:06,779 dot cortar ganancioso, e, a continuación, pode solicitar entrada. 542 00:28:06,779 --> 00:28:08,570 Agora, iso non é o que Directorio alteración fai. 543 00:28:08,570 --> 00:28:12,770 Cando realizar cd, non dirás: cal directorio que quere en cd? 544 00:28:12,770 --> 00:28:17,200 Pola contra, que acaba de dicir, cd pset1, e el só vai ao directorio pset1. 545 00:28:17,200 --> 00:28:20,430 >> Entón, do mesmo xeito que temos outros exemplos. 546 00:28:20,430 --> 00:28:21,540 Ola facer. 547 00:28:21,540 --> 00:28:25,760 Cando realizar o make, non dirás: que o programa que desexa facer? 548 00:28:25,760 --> 00:28:29,620 Acaba de dicir, o liña de comandos fan Ola. 549 00:28:29,620 --> 00:28:31,060 >> Move é outro exemplo. 550 00:28:31,060 --> 00:28:34,840 Este estamos movendo o mario.c arquivar ata un directorio. 551 00:28:34,840 --> 00:28:38,060 Polo tanto, agora sabemos con este exemplo realmente estamos pasando dous argumentos. 552 00:28:38,060 --> 00:28:42,090 Hai mario.c como o primeiro argumento, e dot dot é o segundo argumento. 553 00:28:42,090 --> 00:28:46,140 E entón, cando realizar o make, vostede ver que realmente comando longo linha-- 554 00:28:46,140 --> 00:28:50,580 que realmente longa de comandos impreso na liña de comandos. 555 00:28:50,580 --> 00:28:53,590 Para que este longo command-- é só unha pequena parte dela, 556 00:28:53,590 --> 00:28:56,090 pero agora temos tres liña de comandos argumentos. 557 00:28:56,090 --> 00:28:59,750 Dot trazo cero, Ola, e hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Entón, estas son de liña de comandos argumentos, argumentos 559 00:29:03,497 --> 00:29:05,580 que está pasando no liña de comandos para que 560 00:29:05,580 --> 00:29:08,680 Non ten que ser solicitado cando realizar o programa. 561 00:29:08,680 --> 00:29:13,090 Sería frustrante cando foi clang dixo, "OK, 562 00:29:13,090 --> 00:29:15,630 que program-- que ficheiro que está compilando? 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 O que faría bandeiras quere entrar? trazo o. 565 00:29:19,440 --> 00:29:21,190 Que che gustaría o ficheiro que se chama? 566 00:29:21,190 --> 00:29:21,690 Ola. 567 00:29:21,690 --> 00:29:25,290 Non, só correr clang trazo o Ola hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Entón, ollando para iso. 569 00:29:28,820 --> 00:29:32,920 Agora argc argc-- é a conta de argumentos. 570 00:29:32,920 --> 00:29:36,620 É o número de liña de comandos argumentos entrou na liña de comandos. 571 00:29:36,620 --> 00:29:39,720 Ben, tecnicamente argv-- o v significa vector, 572 00:29:39,720 --> 00:29:41,460 que basicamente significa matriz. 573 00:29:41,460 --> 00:29:42,680 Pero pode ignorar isto. 574 00:29:42,680 --> 00:29:47,540 Argv-- temos secuencia argv, así soportes secuencia argv. 575 00:29:47,540 --> 00:29:50,150 Polo tanto, esta é outra forma de Soportes non teña visto antes. 576 00:29:50,150 --> 00:29:52,300 Soporte de forma que vimos notación cando dixemos, 577 00:29:52,300 --> 00:29:53,970 como, cadea s é igual a Zamyla. 578 00:29:53,970 --> 00:29:56,910 s soporte 0 accede á Z. personaxe 579 00:29:56,910 --> 00:30:00,720 >> Tamén vimos corchetes cando dixemos int idades entre parénteses 5. 580 00:30:00,720 --> 00:30:03,160 Que declarou unha matriz de tamaño 5. 581 00:30:03,160 --> 00:30:06,280 Entón aquí está unha versión do soportes que non vimos antes. 582 00:30:06,280 --> 00:30:09,630 Polo tanto, este tipo de corda que argv sería completamente familiarizado 583 00:30:09,630 --> 00:30:12,050 que sería só unha cadea. 584 00:30:12,050 --> 00:30:14,520 Agora, os parénteses indican que se trata dunha matriz. 585 00:30:14,520 --> 00:30:19,920 Así soportes secuencia argv medios argv que é unha matriz de cadeas. 586 00:30:19,920 --> 00:30:22,540 Agora tecnicamente unha cadea é un array de caracteres. 587 00:30:22,540 --> 00:30:26,400 Polo tanto, esta é agora unha matriz dunha matriz de caracteres. 588 00:30:26,400 --> 00:30:31,490 Pero é moito máis fácil pensar isto como só unha matriz de cadeas. 589 00:30:31,490 --> 00:30:34,900 >> Entón, por que os soportes pode estar baleiro? 590 00:30:34,900 --> 00:30:38,170 Como, por que non podemos dicir, soporte 5, soporte n? 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Si. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Si. 595 00:30:44,230 --> 00:30:46,396 Non sabemos cantas inputs alí van ser. 596 00:30:46,396 --> 00:30:53,560 Polo tanto, se miramos o exemplo clang, dicimos clang trazo o Ola hello.c. 597 00:30:53,560 --> 00:30:56,710 Neste caso en particular, non acontecer ser tres argumentos de liña de comandos. 598 00:30:56,710 --> 00:31:00,522 E así o brackets-- veremos nun segundo que non sería tres. 599 00:31:00,522 --> 00:31:01,730 É tecnicamente sería catro. 600 00:31:01,730 --> 00:31:04,030 Pero os soportes, fariamos digamos, hai tres. 601 00:31:04,030 --> 00:31:08,220 Pero agora, se miramos movemento mario.c punto punto, os corchetes 602 00:31:08,220 --> 00:31:09,760 nós quere poñer dúas neles. 603 00:31:09,760 --> 00:31:12,884 >> E hai unha serie de comandos que ten un número variable de liña de comandos 604 00:31:12,884 --> 00:31:13,620 argumentos. 605 00:31:13,620 --> 00:31:17,430 Entón, o que esta versión do notación de corchetes indica 606 00:31:17,430 --> 00:31:20,820 argv é que é unha matriz de cadeas. 607 00:31:20,820 --> 00:31:24,360 Pero nós non sabemos cantas cordas están nesa matriz. 608 00:31:24,360 --> 00:31:27,090 E como nós, entón sabe como moitas cordas están na matriz? 609 00:31:27,090 --> 00:31:28,870 Ese é o punto enteiro argc. 610 00:31:28,870 --> 00:31:32,300 argc dinos o tempo que desexa argv. 611 00:31:32,300 --> 00:31:36,500 >> Así, o último a ter en mente é que, tecnicamente, 612 00:31:36,500 --> 00:31:40,820 o propio comando conta como un dos argumentos de liña de comandos. 613 00:31:40,820 --> 00:31:45,330 Así pset1 CD, hai dous liña de comandos argumentos. 614 00:31:45,330 --> 00:31:50,260 O programa en si, cd e logo a parte de argumento real del, pset1. 615 00:31:50,260 --> 00:31:54,490 Calquera programa que escribiu ata agora tivo unha liña de comandos argument-- dot 616 00:31:54,490 --> 00:31:55,320 cortar Mario. 617 00:31:55,320 --> 00:31:57,350 Ese é o único argumento da liña de comandos. 618 00:31:57,350 --> 00:32:00,900 >> Entón, agora mirando para clang trazo o Ola hello.c. 619 00:32:00,900 --> 00:32:01,905 Entón, cal é argc? 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Entón argc é 4. 623 00:32:08,140 --> 00:32:12,140 Clang, entón argv 0 soporte é clang. 624 00:32:12,140 --> 00:32:15,630 argv soporte 1 é trazo 0. 625 00:32:15,630 --> 00:32:21,870 argv soporte 2 é Ola, e argv soporte 3 é hello.c. 626 00:32:21,870 --> 00:32:26,813 Ok, entón preguntas sobre este, e entón nós imos mirar para algúns exemplos programáticos. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> Aceptar. 629 00:32:30,480 --> 00:32:36,260 Entón, imos dar un ollo a hello3.c. 630 00:32:36,260 --> 00:32:41,890 Polo tanto, este debe ser familiar desde un dos primeiros exemplos de c 631 00:32:41,890 --> 00:32:45,800 tivemos onde nós quere só de dicir, Ola mundo, pero agora iso é máis xeral. 632 00:32:45,800 --> 00:32:52,300 Entón, aquí estamos dicindo Ola % S barra invertida n soporte argv 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- así, ata este punto, que é o que o meu ficheiro de modelo parecía. 634 00:32:57,440 --> 00:33:01,800 Eu tiña int main (void), e entón eu faría facer algo na función principal. 635 00:33:01,800 --> 00:33:05,100 Agora, en vez, xa que comezar a tratar con argumentos de liña de comandos, 636 00:33:05,100 --> 00:33:07,890 necesitamos declarar un forma diferente de inicio. 637 00:33:07,890 --> 00:33:11,930 >> Entón, ollando para hello3 de novo, o principal vai 638 00:33:11,930 --> 00:33:15,990 para levar dous argumentos agora-- int argc, o número de argumentos de liña de comandos, 639 00:33:15,990 --> 00:33:20,970 e argv secuencia entre parénteses, o real cordas entrou na liña de comandos. 640 00:33:20,970 --> 00:33:26,560 Entón, eu vou cambiar isto template para reflectir este feito. 641 00:33:26,560 --> 00:33:29,060 Agora, sempre que escribe un programa, se non o fai 642 00:33:29,060 --> 00:33:33,720 cómpre tomar ningunha de liña de comandos argumentos, entón é só usar int main (void). 643 00:33:33,720 --> 00:33:37,070 Pero agora, cando está escribindo programas argumento da liña de comandos, que 644 00:33:37,070 --> 00:33:40,350 está indo facer para problema definir dois-- entón agora que está executando 645 00:33:40,350 --> 00:33:42,630 programas que precisan de tomar argumentos de liña de comandos, 646 00:33:42,630 --> 00:33:45,250 ten que ter principal deste formulario. 647 00:33:45,250 --> 00:33:51,290 >> Entón aqui-- este é o gran uso do argumento da liña de comandos. 648 00:33:51,290 --> 00:33:54,100 Entón, a impresión argv 1. 649 00:33:54,100 --> 00:33:59,180 OK entón imos compilar e executar este programa. 650 00:33:59,180 --> 00:34:02,440 Fai hello3. 651 00:34:02,440 --> 00:34:03,570 Compila. 652 00:34:03,570 --> 00:34:06,870 Dot cortar hello3. 653 00:34:06,870 --> 00:34:08,920 E imos dicir, "Rob". 654 00:34:08,920 --> 00:34:10,760 Ola Rob. 655 00:34:10,760 --> 00:34:14,940 Se eu digo: "Ola María," Ola María. 656 00:34:14,940 --> 00:34:15,719 Ola María. 657 00:34:15,719 --> 00:34:18,639 Hannah aínda di: "Ola María, "porque eu non son 658 00:34:18,639 --> 00:34:21,340 facer algo co noso argv 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 agora sería "Hannah". 660 00:34:22,590 --> 00:34:25,030 Argc sería 3. 661 00:34:25,030 --> 00:34:27,735 E se eu fixen iso? 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Entón Ola nulo. 664 00:34:34,679 --> 00:34:38,760 >> El brevemente sobre o feito que, tecnicamente, GetString 665 00:34:38,760 --> 00:34:42,429 pode devolver nulo, pero nós imos chegar a moito máis do que realmente é nulo. 666 00:34:42,429 --> 00:34:47,449 Pero tomalo como unha cuestión de feito que non é xeralmente mal. 667 00:34:47,449 --> 00:34:50,179 Fixemos algo de malo se é imprimir "Ola nulo." 668 00:34:50,179 --> 00:34:52,179 E a razón que fixemos algo mal é-- ben, 669 00:34:52,179 --> 00:34:56,179 cando eu execute dot hello3 barra, argc foi de 1. 670 00:34:56,179 --> 00:34:59,680 Entón isto significa que a lonxitude de argv foi de 1. 671 00:34:59,680 --> 00:35:05,110 Se unha matriz é de lonxitude de 1, o único índice válido é cero. 672 00:35:05,110 --> 00:35:08,550 E así aquí argv 1 está fóra a franxa deste array. 673 00:35:08,550 --> 00:35:13,410 Era semellante a antes cando intento para almacenar 6 fóra da extremo da matriz. 674 00:35:13,410 --> 00:35:18,100 Entón, eu estou tentando acceder algo fóra das contas argv, 675 00:35:18,100 --> 00:35:21,340 e estamos quedando nulo. 676 00:35:21,340 --> 00:35:24,360 >> Entón unha versión mellor de tanto, unha mellora, 677 00:35:24,360 --> 00:35:27,010 é explicitamente comprobando argc. 678 00:35:27,010 --> 00:35:33,580 Entón, se argc é igual a 2, isto significa que nós funcionan algo así como barra dot hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 E ha imprimir "Ola Rob." 680 00:35:36,840 --> 00:35:39,850 Se argc non é igual 2, el só vai 681 00:35:39,850 --> 00:35:42,560 a ignorar o que poñer no argumento da liña de comandos 682 00:35:42,560 --> 00:35:43,960 como argumentos de liña de comandos. 683 00:35:43,960 --> 00:35:47,168 Ou se non poñer calquera en todo, é só vai ignorar isto e simplemente dicir: 684 00:35:47,168 --> 00:35:47,960 "Ola". 685 00:35:47,960 --> 00:35:51,490 >> Entón, compilar iso. 686 00:35:51,490 --> 00:35:54,500 Fai hello4. 687 00:35:54,500 --> 00:35:56,790 E, correndo hello4. 688 00:35:56,790 --> 00:36:00,010 Executa-lo deste xeito, o que debe ser impreso? 689 00:36:00,010 --> 00:36:01,330 "Ola". 690 00:36:01,330 --> 00:36:02,810 Ola ti. 691 00:36:02,810 --> 00:36:05,870 E sobre hello4 Rob? 692 00:36:05,870 --> 00:36:06,950 "Ola Rob." 693 00:36:06,950 --> 00:36:10,580 E, finalmente, Ola Rob Maria é só "Ola" de novo, 694 00:36:10,580 --> 00:36:13,677 porque realmente non entrar algo que se esperaba. 695 00:36:13,677 --> 00:36:15,510 Entrou máis nomes que podería soster, 696 00:36:15,510 --> 00:36:19,500 polo que só a omisión Ola vostede o comportamento. 697 00:36:19,500 --> 00:36:23,040 Así preguntas sobre iso? 698 00:36:23,040 --> 00:36:26,290 Ou argumentos de liña de comandos? 699 00:36:26,290 --> 00:36:28,690 >> OK, así que tomar un ollo a un algúns exemplos de como usar 700 00:36:28,690 --> 00:36:34,230 de liña de comandos arguments-- primeiro temos argv trazo 1 punto c. 701 00:36:34,230 --> 00:36:38,510 Polo tanto, os comentarios dar o que este programa debería estar facendo. 702 00:36:38,510 --> 00:36:42,460 Pero teña en conta agora-- este loop for, este corresponde ao estándar exacto 703 00:36:42,460 --> 00:36:43,390 Estaba dicindo antes. 704 00:36:43,390 --> 00:36:46,240 Nós só terá lugar a ser argc usando no canto de n. 705 00:36:46,240 --> 00:36:48,880 Agora argc é realmente o n. 706 00:36:48,880 --> 00:36:51,260 É a lonxitude da matriz argv. 707 00:36:51,260 --> 00:36:59,600 Entón está interactuando no argv matriz de printf ing cada valor de argv. 708 00:36:59,600 --> 00:37:04,730 >> Entón se eu fai iso. 709 00:37:04,730 --> 00:37:08,232 Fai argv 1. 710 00:37:08,232 --> 00:37:09,940 El compila. 711 00:37:09,940 --> 00:37:11,620 Dot cortar argv 1. 712 00:37:11,620 --> 00:37:15,530 Só correndo isto, impresións dot barra argv 1 713 00:37:15,530 --> 00:37:18,500 xa que esa era a única liña de comandos argument-- o nome do programa. 714 00:37:18,500 --> 00:37:22,080 Haberá sempre a least-- argc non poderá ser inferior a un, 715 00:37:22,080 --> 00:37:25,910 xa que non sempre será, polo menos, ser o nome do programa para ser executado. 716 00:37:25,910 --> 00:37:32,040 Entón argv 1 Rob imprimirá argv 1 e, a continuación, na nova liña "Rob". 717 00:37:32,040 --> 00:37:36,350 >> Así, na primeira iteración deste circuíto, i é 0. 718 00:37:36,350 --> 00:37:39,090 Argv 0 é o nome do programa. 719 00:37:39,090 --> 00:37:40,010 Dot cortar argv 1. 720 00:37:40,010 --> 00:37:43,770 E entón argv 1 é o meu primeiro argumento da liña de comandos, que é Rob. 721 00:37:43,770 --> 00:37:45,920 Neste punto, somos iguais a ARGC. 722 00:37:45,920 --> 00:37:48,210 Nós quebramos fóra do circuíto e estamos a facer. 723 00:37:48,210 --> 00:37:53,940 Entón, iso vai traballar para unha arbitraria número de argumentos de liña de comandos. 724 00:37:53,940 --> 00:37:58,550 Teña en conta que imprime argv 0, argv 1, 2 argv, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 E non hai argv 5. 726 00:38:00,150 --> 00:38:01,460 argc é igual a 5. 727 00:38:01,460 --> 00:38:06,960 Así, no argc-- no i é igual a 5, nós saír do loop. 728 00:38:06,960 --> 00:38:07,950 Aceptar. 729 00:38:07,950 --> 00:38:11,315 Así preguntas sobre que antes de nós ollar para un exemplo máis complexo? 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Entón argv 2. 732 00:38:16,860 --> 00:38:17,830 Todo ben. 733 00:38:17,830 --> 00:38:20,610 Entón, aínda estamos imprimindo os argumentos de liña de comandos. 734 00:38:20,610 --> 00:38:23,170 Pero agora entender que temos aninhado para un loop. 735 00:38:23,170 --> 00:38:24,670 Entón o que está a facer iso? 736 00:38:24,670 --> 00:38:28,430 Así, o primeiro circuíto está facendo o que fixo antes. 737 00:38:28,430 --> 00:38:30,950 Aínda estamos looping sobre cada argumento da liña de comandos, 738 00:38:30,950 --> 00:38:34,260 pero agora esta segunda loop-- temos tamén vin algo así antes. 739 00:38:34,260 --> 00:38:38,600 Cando estaba interactuar sobre Zamyla imprimindo Z-A-H-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Polo tanto, este segundo ciclo para int j é igual a 0, n é igual a strlen de soporte argv i. 741 00:38:44,816 --> 00:38:49,170 >> Entón, imos primeiro pensar por as-- imos percorrer. 742 00:38:49,170 --> 00:38:53,560 Imos pensar que o ordenador sería facer se eu execute este programa como só dot 743 00:38:53,560 --> 00:38:56,030 cortar argv trazo 2. 744 00:38:56,030 --> 00:39:03,590 Entón, se eu execute este código, a continuación, argc será igual a 1. 745 00:39:03,590 --> 00:39:07,050 E secuencia argv-- hai só vai ser un índice en argv, 746 00:39:07,050 --> 00:39:12,370 e que será igual a dot cortar argv 2-- o nome do programa. 747 00:39:12,370 --> 00:39:19,170 >> OK, entón agora eu é igual a 0, i menos 1, i plus plus para int j é igual a 0, 748 00:39:19,170 --> 00:39:23,880 n é igual a strlen de argv soporte 0, polo que a primeira iteración deste lazo. argv 749 00:39:23,880 --> 00:39:27,250 0 soporte é barra dot argv 2. 750 00:39:27,250 --> 00:39:29,320 Entón, cal é a lonxitude desta corda? 751 00:39:29,320 --> 00:39:32,480 Ben, dot cortar A-R-G-V trazo 2. 752 00:39:32,480 --> 00:39:35,020 Entón strlen de que será 8. 753 00:39:35,020 --> 00:39:37,500 Así j é igual a 0, n é igual a oito. 754 00:39:37,500 --> 00:39:39,530 Sempre que j é menor que 8, J ++. 755 00:39:39,530 --> 00:39:44,080 E con iso estaremos imprimindo un carácter único, que 756 00:39:44,080 --> 00:39:47,350 é argv soporte i j entre parénteses. 757 00:39:47,350 --> 00:39:49,826 >> Así, a única i é cero. 758 00:39:49,826 --> 00:39:51,700 Aínda só ten unha argumento da liña de comandos. 759 00:39:51,700 --> 00:39:53,890 Nesa primeira iteración do loop for, estamos 760 00:39:53,890 --> 00:39:56,950 será a impresión argv soporte 0 0 soporte. 761 00:39:56,950 --> 00:39:58,325 E entón j vai incrementar. 762 00:39:58,325 --> 00:40:01,650 E nós estamos indo a impresión argv soporte 0 soporte 1. 763 00:40:01,650 --> 00:40:04,150 E entón argv soporte 0 soporte 2. 764 00:40:04,150 --> 00:40:09,030 >> Polo tanto, este é o noso primeiro encontro de arrays multidimensionais. 765 00:40:09,030 --> 00:40:12,770 Teña en conta que antes de que eu dixen que argv é tecnicamente 766 00:40:12,770 --> 00:40:15,950 unha matriz de matrices de caracteres. 767 00:40:15,950 --> 00:40:24,360 Entón, aquí, se eu dixo algo así como cadea s é igual a franxa argv i, 768 00:40:24,360 --> 00:40:29,590 e entón eu dixo, s soporte j, este sería realizar o mesmo. 769 00:40:29,590 --> 00:40:31,960 Agora, xa viu s soporte j antes. 770 00:40:31,960 --> 00:40:36,680 Isto é só acceder ao j-th carácter desa cadea. 771 00:40:36,680 --> 00:40:48,010 Entón, con iso, estamos empezando a j-th personaxe do argv i-th. 772 00:40:48,010 --> 00:40:51,450 >> Entón, o que en definitiva, esta saída? 773 00:40:51,450 --> 00:40:53,210 Fai argv 2. 774 00:40:53,210 --> 00:40:54,730 El compila. 775 00:40:54,730 --> 00:40:56,340 Dot cortar argv 2. 776 00:40:56,340 --> 00:41:03,790 "Rob Maria Hannah," e dar un espazo. 777 00:41:03,790 --> 00:41:07,050 Así, vemos que se trata da saída dot na súa propia liña e barra 778 00:41:07,050 --> 00:41:08,920 na súa propia liña e un na súa propia liña. 779 00:41:08,920 --> 00:41:11,260 Está imprimindo cada carácter individual 780 00:41:11,260 --> 00:41:12,950 de cada argumento da liña de comandos. 781 00:41:12,950 --> 00:41:15,960 E, a continuación, entre eles, debido a esta nova liña 782 00:41:15,960 --> 00:41:19,380 estamos imprimindo aquí abaixo, en entre eles que vai imprimir unha nova liña. 783 00:41:19,380 --> 00:41:24,540 >> Polo tanto, este é semellante ao o trazo argv antes 1, 784 00:41:24,540 --> 00:41:26,459 que imprimiu cada argumento da liña de comandos, 785 00:41:26,459 --> 00:41:28,500 pero agora estamos imprimindo os argumentos da liña de comandos 786 00:41:28,500 --> 00:41:31,950 e, a continuación, a través de cada iteración carácter de cada argumento da liña de comandos 787 00:41:31,950 --> 00:41:35,400 para esta saída. 788 00:41:35,400 --> 00:41:36,870 OK? 789 00:41:36,870 --> 00:41:40,570 Así preguntas sobre iso? 790 00:41:40,570 --> 00:41:45,130 >> Unha cousa a notar é que de liña de comandos arguments-- 791 00:41:45,130 --> 00:41:49,990 polo que son separados por espazos como vostede naturalmente esperar que sexan. 792 00:41:49,990 --> 00:41:53,050 Así, unha secuencia pode espazos. 793 00:41:53,050 --> 00:41:57,380 Non é super importante, pero se eu quería que o argumento terceiro da liña de comandos 794 00:41:57,380 --> 00:42:01,226 ter un espazo nel, entón eu podería dicir algo como isto. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 OK? 797 00:42:05,550 --> 00:42:12,190 Entón, iso agora aínda só ten tres de liña de comandos así arguments-- 4. 798 00:42:12,190 --> 00:42:17,620 Dot cortar argv trazo 2, Rob, María e Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 Aceptar. 800 00:42:18,320 --> 00:42:19,310 Preguntas sobre este asunto? 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Non hai nada especial sobre o carácter de espazo. 803 00:42:24,894 --> 00:42:27,810 El só pasa a ser que o de liña de comandos trata o carácter de espazo 804 00:42:27,810 --> 00:42:29,226 como o xeito no que separa cada argumento. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Todo ben. 807 00:42:33,000 --> 00:42:39,950 Entón, a continuación, conxunto Problem dois-- vai ser 808 00:42:39,950 --> 00:42:43,240 mirando para cifrado de clave secreta. 809 00:42:43,240 --> 00:42:47,700 Así, semellante ao exemplo vimos de Unha Historia de Nadal, 810 00:42:47,700 --> 00:42:52,840 vai ser a implantación de algunhas algoritmos que, dada unha mensaxe, 811 00:42:52,840 --> 00:42:55,560 vai ser capaz para cifrar a mensaxe 812 00:42:55,560 --> 00:42:58,730 que só alguén con ese segredo clave, con aquel anel decodificar, 813 00:42:58,730 --> 00:43:01,090 debe ser capaz de descifrar. 814 00:43:01,090 --> 00:43:04,839 >> Entón esta é a edición estándar. 815 00:43:04,839 --> 00:43:07,130 Vai estar aplicando dúas versións diferentes. 816 00:43:07,130 --> 00:43:09,620 Se ocorrer de dar un ollo en que o hacker Professional-- agora, 817 00:43:09,620 --> 00:43:12,600 imos dar vostede unha secuencia como esta, 818 00:43:12,600 --> 00:43:15,240 o que representa un contrasinal cifrado. 819 00:43:15,240 --> 00:43:19,990 Así, o seu obxectivo é descubrir o que o contrasinal é descifrar. 820 00:43:19,990 --> 00:43:26,950 Agora, este é realmente como contrasinais almacénanse en moitos ordenadores, 821 00:43:26,950 --> 00:43:31,290 e el só almacena esta secuencia aleatoria de caracteres. 822 00:43:31,290 --> 00:43:34,440 Ten que descubrir como chegar dende esta secuencia aleatoria de caracteres 823 00:43:34,440 --> 00:43:36,140 ao que o contrasinal orixinal. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> E, finalmente, tras este conxunto de problemas, ten que 826 00:43:43,290 --> 00:43:46,100 ser capaz de comprender o que iso significa. 827 00:43:46,100 --> 00:43:51,650 Entón, vai aprender como descifrar este tipo de secuencia aleatoria. 828 00:43:51,650 --> 00:43:56,390 Do mesmo xeito, se lembrar de semana 0, pode ver este URL. 829 00:43:56,390 --> 00:44:00,210 E ten que ser capaz de descifrar iso eventualmente. 830 00:44:00,210 --> 00:44:04,810 Pode non ser feliz cando descifrar-lo e prema na ligazón. 831 00:44:04,810 --> 00:44:05,700 Todo ben. 832 00:44:05,700 --> 00:44:06,591 É isto por hoxe. 833 00:44:06,591 --> 00:44:12,095 Entón, vela a próxima semana! 834 00:44:12,095 --> 00:44:18,315 >> [MÚSICA Electrónica DE XOGO] 835 00:44:18,315 --> 00:47:15,619