1 00:00:00,000 --> 00:00:02,880 >> [REPRODUCCIÓN DE MÚSICA] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> ALTAVOZ 1: Este es CS50 y este es el comienzo de la semana dos. 4 00:00:13,500 --> 00:00:18,400 Por lo tanto, vamos a bucear a la derecha en algo es decir con errores, por así decirlo. 5 00:00:18,400 --> 00:00:24,015 Por lo tanto, aquí es IDE CS50 y he detuvo con antelación este screen-- maldita 6 00:00:24,015 --> 00:00:25,070 ello. 7 00:00:25,070 --> 00:00:25,760 Spoiler de alerta. 8 00:00:25,760 --> 00:00:26,260 Correcto. 9 00:00:26,260 --> 00:00:29,060 He tirado esta pantalla aquí, que tiene un programa muy simple. 10 00:00:29,060 --> 00:00:32,659 Si nos desplazamos hacia abajo, la mayoría de esto es simplemente comenta, 11 00:00:32,659 --> 00:00:36,730 pero aquí en las líneas 13 a través 17 tenemos un programa. 12 00:00:36,730 --> 00:00:40,580 >> Es sintácticamente válida, lo que significa que si Compilo él, se compilar y ejecutar, 13 00:00:40,580 --> 00:00:41,920 pero es buggy. 14 00:00:41,920 --> 00:00:47,330 Este programa pretende en los comentarios encima de la tapa que se debe imprimir 10 estrellas, 15 00:00:47,330 --> 00:00:48,870 pero no lo hace. 16 00:00:48,870 --> 00:00:53,290 Y en base a su experiencia, o pronto a ser experiencia con C, 17 00:00:53,290 --> 00:00:56,820 Puede que lógicamente discernir por qué esto es, de hecho, con errores? 18 00:00:56,820 --> 00:00:57,804 ¿Sí? 19 00:00:57,804 --> 00:00:59,220 AUDIENCIA: Se va de cero a 10. 20 00:00:59,220 --> 00:01:01,884 Eso es 11 iteraciones. 21 00:01:01,884 --> 00:01:02,550 ALTAVOZ 1: Sí. 22 00:01:02,550 --> 00:01:06,030 Así, va de cero a través de e iguales a 10, 23 00:01:06,030 --> 00:01:08,140 que por supuesto es de 11 iteraciones. 24 00:01:08,140 --> 00:01:10,020 Por lo tanto, se va a impresión, de hecho, 11 estrellas. 25 00:01:10,020 --> 00:01:13,040 Por lo tanto, la convención de la informática en la mayoría de los lenguajes de programación 26 00:01:13,040 --> 00:01:15,270 es, de hecho, sólo para comenzará a contar desde cero, 27 00:01:15,270 --> 00:01:18,800 pero contar hasta, pero no a través de la valor que en realidad importa. 28 00:01:18,800 --> 00:01:21,216 >> Ahora, esto es una cosa que Toma un poco de tiempo para acostumbrarse 29 00:01:21,216 --> 00:01:25,350 e incluso Scratch, diseñada como es para los no programadores o no equipo 30 00:01:25,350 --> 00:01:28,070 científicos y para los niños en gran medida, está diseñado para tener 31 00:01:28,070 --> 00:01:29,570 empezar a contar por lo general a la una. 32 00:01:29,570 --> 00:01:30,277 Y eso está bien. 33 00:01:30,277 --> 00:01:33,110 Puede empezar a contar absolutamente en uno si eso es más cómodo. 34 00:01:33,110 --> 00:01:37,210 Y contar hasta ya través de 10, pero te darás cuenta particular esta semana 35 00:01:37,210 --> 00:01:39,950 y más allá de que tan muchas cosas en la programación 36 00:01:39,950 --> 00:01:42,465 suponer que 0 es el primero dígitos con el que se cuenta, 37 00:01:42,465 --> 00:01:45,590 que usted va a resultar más fácil sólo para entrar en este hábito de partida 38 00:01:45,590 --> 00:01:49,490 desde cero y contar hasta el valor usted se preocupa en este momento de la 39 00:01:49,490 --> 00:01:49,990 conseguir ir. 40 00:01:49,990 --> 00:01:50,990 >> Por lo tanto, que se ha fijado que. 41 00:01:50,990 --> 00:01:53,670 Cambiamos el menor o equivale a poco menos. 42 00:01:53,670 --> 00:01:56,050 Echemos un vistazo a un segundo ejemplo aquí. 43 00:01:56,050 --> 00:01:59,585 >> Así, este programa también afirma en su comenta encima de la tapa que se debe imprimir 44 00:01:59,585 --> 00:02:02,260 diez estrellas, pero no lo hace. 45 00:02:02,260 --> 00:02:05,540 ¿Cuál es el error aquí? 46 00:02:05,540 --> 00:02:07,930 >> Así, qué-- y lo siento, seamos claros. 47 00:02:07,930 --> 00:02:08,610 10 estrellas. 48 00:02:08,610 --> 00:02:11,644 Uno por línea, pero no es así. 49 00:02:11,644 --> 00:02:14,810 Así que, de hecho, me dejó ir adelante y compilar éste porque es un poco menos 50 00:02:14,810 --> 00:02:16,900 despejar basado en esa descripción. 51 00:02:16,900 --> 00:02:18,720 Déjame ir a nuestro directorio de origen. 52 00:02:18,720 --> 00:02:25,110 Hacer cochecillo un tajo de puntos, uno buggy. 53 00:02:25,110 --> 00:02:28,680 OK, veo 11 estrellas, que sigue siendo problemática, 54 00:02:28,680 --> 00:02:30,090 pero también son todo en una sola línea. 55 00:02:30,090 --> 00:02:31,500 ¿Cuál es el problema aquí? 56 00:02:31,500 --> 00:02:32,339 Sí. 57 00:02:32,339 --> 00:02:33,255 AUDIENCIA: [inaudible]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 ALTAVOZ 1: Sí. 60 00:02:36,860 --> 00:02:40,210 Así que esta es una sutileza que puede Recuerdo haberme hecho una breve mención de. 61 00:02:40,210 --> 00:02:42,793 A pesar de que todo se ve bastante, y está muy bien sangría, 62 00:02:42,793 --> 00:02:45,850 y como que se ve a los arañazos como en esa línea 16 y 17 son, 63 00:02:45,850 --> 00:02:47,600 de hecho, con sangría bajo ese bucle. 64 00:02:47,600 --> 00:02:48,400 Eso es irrelevante. 65 00:02:48,400 --> 00:02:50,460 El equipo no se conocer o ver el espacio en blanco. 66 00:02:50,460 --> 00:02:52,910 El espacio en blanco es sólo para nosotros los seres humanos, estilísticamente. 67 00:02:52,910 --> 00:02:57,010 El equipo no sabe cuando se tiene llaves, que sería, de hecho, 68 00:02:57,010 --> 00:02:58,280 solucionar este problema. 69 00:02:58,280 --> 00:03:02,350 >> Así, si en realidad fuimos y poner explícitamente en estas llaves 70 00:03:02,350 --> 00:03:05,220 eso sería solucionar este problema dejando en claro que el compilador 71 00:03:05,220 --> 00:03:07,930 que realmente quiero para ejecutar dos líneas de código nuevo, 72 00:03:07,930 --> 00:03:09,220 y otra vez, y otra vez. 73 00:03:09,220 --> 00:03:11,680 Pero ¿cuál es la explicación fundamental? 74 00:03:11,680 --> 00:03:12,180 ¿Correcto? 75 00:03:12,180 --> 00:03:15,260 Nosotros no estrictamente necesario rizado se prepara todo el tiempo, 76 00:03:15,260 --> 00:03:18,210 a pesar de que es probablemente el mejor práctica para entrar en el hábito de todos modos 77 00:03:18,210 --> 00:03:20,878 aunque añade dos caracteres a su código. ¿por qué? 78 00:03:20,878 --> 00:03:22,380 >> AUDIENCIA: [inaudible]? 79 00:03:22,380 --> 00:03:24,630 ALTAVOZ 1: Sí, así que es otra solución en conjunto. 80 00:03:24,630 --> 00:03:25,130 ¿Correcto? 81 00:03:25,130 --> 00:03:28,250 Sobre todo si a primera vista no lo hace realmente apreciar lo que está pasando. 82 00:03:28,250 --> 00:03:31,070 Bueno, seguramente podríamos acaba de hacer dos cosas a la vez 83 00:03:31,070 --> 00:03:32,710 y simplemente evitar el problema por completo. 84 00:03:32,710 --> 00:03:36,080 Y eso está bien, pero ahora, para los propósitos de la actualidad, lo que 85 00:03:36,080 --> 00:03:38,200 es la explicación para el error? 86 00:03:38,200 --> 00:03:39,810 ¿Por qué eran todas esas estrellas en una línea? 87 00:03:39,810 --> 00:03:40,806 ¿Sí? 88 00:03:40,806 --> 00:03:43,296 >> AUDIENCIA: Parece que si usted tiene una línea de código, 89 00:03:43,296 --> 00:03:46,649 usted puede hacerlo sin ellos. 90 00:03:46,649 --> 00:03:47,440 ALTAVOZ 1: Exactamente. 91 00:03:47,440 --> 00:03:48,750 Esto es sólo una convención humana. 92 00:03:48,750 --> 00:03:50,750 La gente se da cuenta de que es un poco molesto o aburrido 93 00:03:50,750 --> 00:03:53,470 a tener que poner las llaves de todo de las veces si lo que quieres hacer 94 00:03:53,470 --> 00:03:55,090 es ejecutar una línea de código. 95 00:03:55,090 --> 00:03:57,660 Por lo tanto, los seres humanos decidieron algunos Hace tiempo que eso está bien. 96 00:03:57,660 --> 00:04:01,180 Si usted quiere poner toda su bucle en esa sola línea como esta, 97 00:04:01,180 --> 00:04:04,030 eso está bien con el single punto y coma al final. 98 00:04:04,030 --> 00:04:07,210 Pero sólo se puede hacer una de esas línea sin las llaves. 99 00:04:07,210 --> 00:04:09,900 >> Así que, cuando la guía de estilo CS50 como le para señalar, 100 00:04:09,900 --> 00:04:11,980 verás que en general, es buen hábito 101 00:04:11,980 --> 00:04:14,920 para entrar en esto hasta que estés extravío bastante cómodo 102 00:04:14,920 --> 00:04:17,404 de este tipo de convenciones y hacer su propia cosa. 103 00:04:17,404 --> 00:04:18,820 Mientras estás auto consistente. 104 00:04:18,820 --> 00:04:21,540 Y hablaremos más sobre estilo un poco más tarde hoy. 105 00:04:21,540 --> 00:04:23,200 >> Por lo tanto, permítanme abro otro programa. 106 00:04:23,200 --> 00:04:24,930 Por supuesto, debemos fijar que el 10 también. 107 00:04:24,930 --> 00:04:32,470 Déjame ir adelante y escribo un verdadero programa rápido que voy a llamar, 108 00:04:32,470 --> 00:04:38,140 digamos, lazo dot C. Así, lazo dot C. Y en bucle punto C que voy a tener, 109 00:04:38,140 --> 00:04:41,970 incluir E / S estándar punto H int void main. 110 00:04:41,970 --> 00:04:44,020 Y ahora vamos a hacer, de hecho, un bucle. 111 00:04:44,020 --> 00:04:46,020 Así, 4 int I consigue cero. 112 00:04:46,020 --> 00:04:48,660 I es menos de, digamos, 50. 113 00:04:48,660 --> 00:04:49,950 I más, más. 114 00:04:49,950 --> 00:04:53,350 Y entonces aquí vamos seguir adelante y no imprimir F. 115 00:04:53,350 --> 00:04:56,400 Y luego quiero imprimir I y una nueva línea, punto y coma. 116 00:04:56,400 --> 00:05:00,015 >> Y esto debe imprimir todo el números de cero hasta 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Algunos cabeza asiente. 119 00:05:03,680 --> 00:05:04,270 Unos núms. 120 00:05:04,270 --> 00:05:05,339 ¿Cuál es el error ya? 121 00:05:05,339 --> 00:05:06,630 ¿Cuál es el error fácil que hice? 122 00:05:06,630 --> 00:05:07,170 Sí. 123 00:05:07,170 --> 00:05:08,544 >> AUDIENCIA: [inaudible]. 124 00:05:08,544 --> 00:05:09,210 ALTAVOZ 1: Sí. 125 00:05:09,210 --> 00:05:11,520 Así que, aunque parece como esto es lo que me propongo, 126 00:05:11,520 --> 00:05:13,920 Recuerdo que I es también Sólo un carácter ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Por lo tanto, si yo digo, imprimir "I." 128 00:05:14,955 --> 00:05:16,670 Es, literalmente, va imprimir I. Por lo tanto, si yo 129 00:05:16,670 --> 00:05:20,030 querer plug-in de un marcador de posición valor que en realidad necesito hacer esto 130 00:05:20,030 --> 00:05:22,630 y luego plug-in de la valor de I dinámicamente. 131 00:05:22,630 --> 00:05:25,200 De lo contrario, sólo voy a obtener 50 de I en la pantalla. 132 00:05:25,200 --> 00:05:28,140 >> Así que, déjame ir adelante y hacer de este bucle, ejecutarlo, 133 00:05:28,140 --> 00:05:30,650 y, de hecho, tenemos todo el camino a través de 49. 134 00:05:30,650 --> 00:05:34,140 Y si me desplazo en el tiempo que veo el número cero al principio. 135 00:05:34,140 --> 00:05:36,050 >> Bueno, ¿y si me especie de pata? 136 00:05:36,050 --> 00:05:37,800 ¿Qué pasa si hago esto? 137 00:05:37,800 --> 00:05:40,120 El hecho de que yo no estoy pensando. 138 00:05:40,120 --> 00:05:40,970 ¿Cuál es este programa. 139 00:05:40,970 --> 00:05:43,970 Una vez que estás compila y ejecuta, va a hacer lógicamente? 140 00:05:43,970 --> 00:05:44,870 >> AUDIENCIA: Nada. 141 00:05:44,870 --> 00:05:45,661 >> ALTAVOZ 1: Nada. 142 00:05:45,661 --> 00:05:47,156 ¿Porque es eso? 143 00:05:47,156 --> 00:05:49,124 >> AUDIENCIA: I está diseñado para el cero. 144 00:05:49,124 --> 00:05:51,899 Por lo tanto, la condición es falsa. 145 00:05:51,899 --> 00:05:52,940 ALTAVOZ 1: Sí, exactamente. 146 00:05:52,940 --> 00:05:55,110 Todo el código es correcto, sintácticamente. 147 00:05:55,110 --> 00:05:57,310 Esto compilar este código se ejecutará, pero no lo es 148 00:05:57,310 --> 00:06:00,110 va a hacer nada útil porque yo me inicializar a cero. 149 00:06:00,110 --> 00:06:02,240 Luego comprobamos, es que más del 50? 150 00:06:02,240 --> 00:06:03,810 Obviamente, no, no lo es. 151 00:06:03,810 --> 00:06:05,760 Así que el bucle no se ejecuta en absoluto. 152 00:06:05,760 --> 00:06:09,580 >> ¿Y si hacemos algo un poco más temerario? 153 00:06:09,580 --> 00:06:12,890 Así que, ¿qué pasa si lo hacemos como int I consigue cero. 154 00:06:12,890 --> 00:06:15,640 Y ahora me deja utilizar el rato bucle, que era otra condición. 155 00:06:15,640 --> 00:06:21,810 Y mientras yo digo, mientras que I es mayor que o igual a cero y, a continuación, en el aquí 156 00:06:21,810 --> 00:06:26,070 seguir adelante y guardar el archivo, haga bucle. 157 00:06:26,070 --> 00:06:27,070 Y estoy a punto de ejecutarlo. 158 00:06:27,070 --> 00:06:30,230 ¿Qué voy a ver esto tiempo con un bucle while? 159 00:06:30,230 --> 00:06:30,852 Sí. 160 00:06:30,852 --> 00:06:32,120 >> AUDIENCIA: Un bucle infinito? 161 00:06:32,120 --> 00:06:35,360 >> ALTAVOZ 1: Un bucle infinito? 162 00:06:35,360 --> 00:06:36,662 ¿Si y porque? 163 00:06:36,662 --> 00:06:38,120 AUDIENCIA: Porque es siempre cero. 164 00:06:38,120 --> 00:06:38,786 ALTAVOZ 1: Sí. 165 00:06:38,786 --> 00:06:40,100 Así que se inicializa a cero. 166 00:06:40,100 --> 00:06:44,470 Por supuesto que es siempre mayor que o igual a 0 como resultado. 167 00:06:44,470 --> 00:06:46,460 Así que, yo sólo voy a ver esto infinitamente. 168 00:06:46,460 --> 00:06:49,850 Y ahora, este ha llegado una vez o dos veces a la cabeza del curso. 169 00:06:49,850 --> 00:06:52,417 ¿Qué sucede cuando usted tener un bucle infinito? 170 00:06:52,417 --> 00:06:53,314 >> AUDIENCIA: Control C. 171 00:06:53,314 --> 00:06:53,980 ALTAVOZ 1: Sí. 172 00:06:53,980 --> 00:06:56,250 Así Control C eventualmente responder. 173 00:06:56,250 --> 00:06:59,520 Por desgracia, hemos imprimimos millones y millones de ceros ya 174 00:06:59,520 --> 00:07:01,520 por lo que el equipo tiene tipo de tengo delante de mí. 175 00:07:01,520 --> 00:07:03,394 Por lo tanto, va a ignorar me para un poco. 176 00:07:03,394 --> 00:07:06,560 Pero si usted acaba de golpear Control C unos pocos veces en su teclado Mac o PC, 177 00:07:06,560 --> 00:07:08,790 finalmente debe, de hecho, dar por terminado. 178 00:07:08,790 --> 00:07:11,770 Y si no, le mostraremos algunos técnicas antes de tiempo en el que 179 00:07:11,770 --> 00:07:14,850 en realidad puede matar a la fuerza a los programas, al igual que en Windows y Mac OS, 180 00:07:14,850 --> 00:07:15,562 si es necesario. 181 00:07:15,562 --> 00:07:16,770 Pero vamos a intentar algo más. 182 00:07:16,770 --> 00:07:19,895 Vamos realidad Incremento I. Es esto todavía va a ser infinito? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Déjame correr esto. 185 00:07:25,140 --> 00:07:27,090 Y ahora usted puede clase de ver lo que está pasando. 186 00:07:27,090 --> 00:07:30,140 Esto, también, es un bucle infinito. 187 00:07:30,140 --> 00:07:33,080 Pero esto es un poco de una pregunta con trampa. 188 00:07:33,080 --> 00:07:35,460 ¿Esto va a imprimir números de siempre? 189 00:07:35,460 --> 00:07:36,647 >> AUDIENCIA: No. 190 00:07:36,647 --> 00:07:37,230 ALTAVOZ 1: No. 191 00:07:37,230 --> 00:07:37,620 ¿Por qué? 192 00:07:37,620 --> 00:07:38,820 He oído que algunos nos aquí. 193 00:07:38,820 --> 00:07:41,859 Alguien-- Sí. 194 00:07:41,859 --> 00:07:44,275 AUDIENCIA: Usted no tiene suficiente bits para mantener realmente está pasando. 195 00:07:44,275 --> 00:07:44,730 ALTAVOZ 1: De acuerdo. 196 00:07:44,730 --> 00:07:46,000 Así que no tengo suficiente bits para seguir adelante. 197 00:07:46,000 --> 00:07:47,124 Entonces, ¿qué va a pasar? 198 00:07:47,124 --> 00:07:49,320 Es sólo va a parar? 199 00:07:49,320 --> 00:07:52,542 >> AUDIENCIA: En algún momento que cerrará el-- 200 00:07:52,542 --> 00:07:54,500 ALTAVOZ 1: Se cerrará el down bucle, pero ¿por qué? 201 00:07:54,500 --> 00:07:57,950 ¿Qué va a pasar en el final de sus fronteras? 202 00:07:57,950 --> 00:07:58,479 ¿Sí? 203 00:07:58,479 --> 00:08:00,520 AUDIENCIA: Se hará un ciclo de nuevo a los números negativos. 204 00:08:00,520 --> 00:08:02,900 ALTAVOZ 1: Para los números negativos, o si sólo estábamos tratando positivo, 205 00:08:02,900 --> 00:08:03,570 cero por lo menos. 206 00:08:03,570 --> 00:08:04,550 Así que sí, absolutamente. 207 00:08:04,550 --> 00:08:08,059 Recordemos que vimos la última vez que si incrementar sus pedacitos demasiadas veces, 208 00:08:08,059 --> 00:08:10,225 y vosotros Fore desbordamiento la capacidad de su int 209 00:08:10,225 --> 00:08:13,058 o lo que sea el tipo de datos es, eres va a envolver alrededor, probablemente, 210 00:08:13,058 --> 00:08:14,020 dos números negativos. 211 00:08:14,020 --> 00:08:16,644 O si usted ha especificado que su este producto debe ser positiva, 212 00:08:16,644 --> 00:08:18,560 que se puede hacer, pero nosotros no hemos visto eso todavía, 213 00:08:18,560 --> 00:08:21,420 podría terminar al menos volver a cero. 214 00:08:21,420 --> 00:08:22,410 Aunque, en realidad sí. 215 00:08:22,410 --> 00:08:24,320 En este caso, negativo números, en cuyo caso 216 00:08:24,320 --> 00:08:26,870 el bucle se va a terminar porque no es, de hecho, 217 00:08:26,870 --> 00:08:29,220 Mayor qué o igual a cero si es negativo. 218 00:08:29,220 --> 00:08:31,780 >> Así que, por desgracia, cómo larga tendríamos que esperar? 219 00:08:31,780 --> 00:08:35,490 En este momento estamos hasta qué, 2000000-ish? 220 00:08:35,490 --> 00:08:37,705 Somos como 2 mil millones, vamos a tener que esperar 221 00:08:37,705 --> 00:08:39,330 hasta que realmente podemos ver este síntoma. 222 00:08:39,330 --> 00:08:46,200 Pero podemos ver un poco más rápido, maybe-- vamos a ver si podemos interrumpir. 223 00:08:46,200 --> 00:08:46,700 Vamos. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Incluso los menús están apareciendo lentamente. 226 00:08:51,331 --> 00:08:51,830 Correcto. 227 00:08:51,830 --> 00:08:54,270 Por lo tanto, vamos a volver a que en poco tiempo. 228 00:08:54,270 --> 00:08:56,320 Es una buena tiempo-- maldita sea, los cachorros. 229 00:08:56,320 --> 00:08:58,280 >> Es un buen momento para que algunos anuncios. 230 00:08:58,280 --> 00:09:01,225 Así que, si te pueden gustar para participar en YHack, 231 00:09:01,225 --> 00:09:03,600 que es ser un evento patrocinado por nuestros amigos de Yale. 232 00:09:03,600 --> 00:09:05,990 Y, de hecho, algunos de el curso de TFS en Yale están involucrados con esto. 233 00:09:05,990 --> 00:09:08,610 YHack es una organización internacional Hack-a-thon organizada por y sostuvo 234 00:09:08,610 --> 00:09:12,395 en Yale, que reúne a 1.500 al igual que los hackers de mentalidad y creativos todos 235 00:09:12,395 --> 00:09:13,120 sobre el mundo. 236 00:09:13,120 --> 00:09:14,610 Si esto es de interés, echar un vistazo aquí. 237 00:09:14,610 --> 00:09:17,401 Si esto es demasiado brevemente en la pantalla, echar un vistazo a las diapositivas de hoy 238 00:09:17,401 --> 00:09:19,622 para la dirección URL para yhack.org. 239 00:09:19,622 --> 00:09:21,080 Por lo tanto, también a pocos anunciar. 240 00:09:21,080 --> 00:09:24,410 Así que, oficialmente secciones comenzarán la semana que viene aquí y New Haven. 241 00:09:24,410 --> 00:09:27,660 Tenga en cuenta que voy a recibir una correo electrónico a finales de este fin de semana de lo más probable. 242 00:09:27,660 --> 00:09:29,390 Toma mucho tiempo para CS50 a la sección, 243 00:09:29,390 --> 00:09:32,080 dadas todas las personas en el clase y todo el mundo se mueve alrededor. 244 00:09:32,080 --> 00:09:34,871 Y todos los becarios de enseñanza ' horarios también están todavía solidificando, 245 00:09:34,871 --> 00:09:38,110 pero permanezca atento a un correo electrónico y si es necesario ser, puede volver a la sección de allí después. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Por lo tanto, incluso si usted es un participante constante en secciones, darse cuenta de que casi todos 248 00:09:43,280 --> 00:09:46,786 de los recursos que usamos en secciones están a disposición del público en el CS50 249 00:09:46,786 --> 00:09:48,460 Estudiar en este URL aquí. 250 00:09:48,460 --> 00:09:51,630 Por lo tanto, si desea nunca para volver opinión el material de la sección, o leer por delante, 251 00:09:51,630 --> 00:09:54,170 o no se puede hacer un poco de semana, darse cuenta de que las diapositivas de la muestra, 252 00:09:54,170 --> 00:09:58,210 y los problemas y las definiciones, y más están todos allí también. 253 00:09:58,210 --> 00:10:00,645 >> Las horas de oficina reanudan hoy, y mañana, y el miércoles, 254 00:10:00,645 --> 00:10:03,020 y el jueves comprobar el supuesto de sitio web para el horario. 255 00:10:03,020 --> 00:10:05,690 >> Y también, ahora el lanzamiento hoy es CS50 Discuta. 256 00:10:05,690 --> 00:10:09,230 Por lo tanto, siempre y cuando usted tiene preguntas para entre sí o para el personal de la asignatura, 257 00:10:09,230 --> 00:10:12,099 y generalmente están trabajando en un conjunto de problemas, 258 00:10:12,099 --> 00:10:15,015 das cuenta de que no lo hace necesariamente que dar vuelta a la humana próxima usted. 259 00:10:15,015 --> 00:10:17,810 Si no hay nadie allí, usted puede llegar a nosotros y compañeros de clase 260 00:10:17,810 --> 00:10:19,890 en línea a través CS50 Discuta. 261 00:10:19,890 --> 00:10:22,600 Por lo tanto, esta es una discusión pensión para el curso, 262 00:10:22,600 --> 00:10:24,550 y darse cuenta de que este es tal vez el mejor 263 00:10:24,550 --> 00:10:28,480 lugar para empezar cuando usted tiene preguntas cuando fuera de las horas de oficina 264 00:10:28,480 --> 00:10:29,470 en particular. 265 00:10:29,470 --> 00:10:31,070 >> Para llevar comenzarán esta semana también. 266 00:10:31,070 --> 00:10:33,170 En Fuego y Hielo [Inaudible] en New Haven. 267 00:10:33,170 --> 00:10:35,379 Echa un vistazo a el curso de página web con el fin de confirmar su asistencia. 268 00:10:35,379 --> 00:10:36,753 En primer llegado, primer servido para eso. 269 00:10:36,753 --> 00:10:39,380 Si usted no recibe en esta semana haremos éstos Viernes mayoría de todos los 270 00:10:39,380 --> 00:10:40,400 durante el plazo. 271 00:10:40,400 --> 00:10:41,830 >> OK, y ahora una palabra sobre la clasificación. 272 00:10:41,830 --> 00:10:44,690 Especialmente al entrar en un problema establecer uno, que está fuera esta semana, 273 00:10:44,690 --> 00:10:46,670 y el problema fijó dos ya partir de entonces. 274 00:10:46,670 --> 00:10:51,680 ¿Cómo hacemos para evaluar conjuntos P y evaluar la calidad de los mismos? 275 00:10:51,680 --> 00:10:55,560 Así, es de cuatro ejes que utilizamos en CS50, y son estos cuatro aquí. 276 00:10:55,560 --> 00:10:59,200 >> Ámbito de aplicación, que captura en una numérica base de lo mucho del conjunto P 277 00:10:59,200 --> 00:10:59,860 Qué hacer frente a. 278 00:10:59,860 --> 00:11:02,890 Se corresponde aproximadamente con esfuerzo, y es nuestra forma de capturar 279 00:11:02,890 --> 00:11:05,190 ¿trató la mitad de la P set, todo el conjunto P. 280 00:11:05,190 --> 00:11:08,860 Esto es fácil de conseguir perfecta puntuaciones en si lo hace, de hecho, 281 00:11:08,860 --> 00:11:11,020 tratar todos los aspectos del conjunto P. 282 00:11:11,020 --> 00:11:12,010 Así que tenlo en mente. 283 00:11:12,010 --> 00:11:13,420 >> La corrección es exactamente eso. 284 00:11:13,420 --> 00:11:17,760 ¿Su trabajo código como la especificación y como solución de la muestra el personal ' 285 00:11:17,760 --> 00:11:19,730 sugieren que su código debe, de hecho, trabajar. 286 00:11:19,730 --> 00:11:23,260 Check 50, si no se ha cumplido con lo sin embargo, está en P establecer una especificación 287 00:11:23,260 --> 00:11:25,060 y de la voluntad general, darle respuestas sí / no 288 00:11:25,060 --> 00:11:26,518 en cuanto a si el código es correcto. 289 00:11:26,518 --> 00:11:30,680 Al menos en lo que vamos Para evaluar en base a las pruebas 290 00:11:30,680 --> 00:11:32,430 que se corre dentro de ese programa. 291 00:11:32,430 --> 00:11:33,850 >> El diseño es mucho más subjetiva. 292 00:11:33,850 --> 00:11:35,994 Esto es lo bien escrito es su código. 293 00:11:35,994 --> 00:11:38,410 Y esto es algo que vas a mejorar en el transcurso del tiempo, 294 00:11:38,410 --> 00:11:41,201 y es algo que vamos a proporcionar más información cualitativa sobre. 295 00:11:41,201 --> 00:11:43,350 Y por diseño que podría significa antes de tiempo 296 00:11:43,350 --> 00:11:47,650 podría tener la tentación de alguna P set de hacer algo loopingly, 297 00:11:47,650 --> 00:11:51,590 pero para tener tal vez tres, o cuatro, o cinco bucles anidados delanteras o mientras anidado 298 00:11:51,590 --> 00:11:52,090 bucles. 299 00:11:52,090 --> 00:11:54,130 Eso generalmente debe empezar a hacer temblar 300 00:11:54,130 --> 00:11:56,070 y sería generalmente mal diseño considerado. 301 00:11:56,070 --> 00:11:59,490 Y usted comenzará a ver en la clase y De la clase que buenas maneras de hacer las cosas, 302 00:11:59,490 --> 00:12:02,920 malas maneras de hacer las cosas que podrían ser todos correctos, pero no 303 00:12:02,920 --> 00:12:04,304 necesariamente bien diseñado. 304 00:12:04,304 --> 00:12:05,220 Al igual que escribir un ensayo. 305 00:12:05,220 --> 00:12:08,100 Usted puede ser capaz de poner palabras en una página que son gramaticalmente correcto, 306 00:12:08,100 --> 00:12:10,016 pero el ensayo o la tesis que están en es 307 00:12:10,016 --> 00:12:11,810 completamente incoherente o poco convincente. 308 00:12:11,810 --> 00:12:15,930 Y lo que podría ser el análogo en el mundo escrito de mal o buen diseño. 309 00:12:15,930 --> 00:12:18,490 >> Y el estilo, también, es bastante subjetivo. 310 00:12:18,490 --> 00:12:20,060 Pero por lo menos que esperamos coherencia. 311 00:12:20,060 --> 00:12:21,480 Esto es lo bonito que es su código. 312 00:12:21,480 --> 00:12:22,840 Son cosas muy bien sangría? 313 00:12:22,840 --> 00:12:26,600 Son sus variables bien nombrados / ¿Son todos de sus paréntesis y llaves 314 00:12:26,600 --> 00:12:27,920 alineado como deberían ser? 315 00:12:27,920 --> 00:12:31,490 Tenemos una guía de estilo CS50 como el conjunto problema te orientará en. 316 00:12:31,490 --> 00:12:33,730 Los más cómodos son la bienvenida a alejarse de ese 317 00:12:33,730 --> 00:12:35,771 siempre y cuando usted trabaja por cuenta consistente. 318 00:12:35,771 --> 00:12:38,020 Y esto, también, es una lección vamos a reforzar en la sección. 319 00:12:38,020 --> 00:12:40,990 Así que, si todo esto era un poco , cuenta el conjunto y las secciones P rápida 320 00:12:40,990 --> 00:12:42,900 voy a entrar en más profundidad en poco tiempo. 321 00:12:42,900 --> 00:12:45,490 >> Pero en general, tenemos muy pocos cubos para CS50. 322 00:12:45,490 --> 00:12:48,170 Las puntuaciones son generalmente en una escala de uno a tres, o de uno a cinco. 323 00:12:48,170 --> 00:12:50,836 Estamos literally-- y yo no podemos decir esto lo suficiente en la primera semana. 324 00:12:50,836 --> 00:12:51,582 Tres es buena. 325 00:12:51,582 --> 00:12:54,290 Así, a pesar de que, sí, tres de cinco años normalmente, matemáticamente, 326 00:12:54,290 --> 00:12:57,240 podría ser un 60 por ciento o menos como un D. 327 00:12:57,240 --> 00:12:58,840 Tres es, de hecho, buena. 328 00:12:58,840 --> 00:13:01,050 Y, de hecho, esperamos la mayoría de los estudiantes en la clase 329 00:13:01,050 --> 00:13:04,280 para empezar el término alrededor dos en dos, y tres, y cuatro patas. 330 00:13:04,280 --> 00:13:05,510 Probablemente no tantos cincos. 331 00:13:05,510 --> 00:13:06,661 No hay muchos otros. 332 00:13:06,661 --> 00:13:08,910 Pero en general para iniciar en el punto ideal de la curva 333 00:13:08,910 --> 00:13:11,694 de modo que a medida que pasa el tiempo, en realidad hay espacio para, 334 00:13:11,694 --> 00:13:13,360 y oportunidades para la progresión superior. 335 00:13:13,360 --> 00:13:15,810 Así que, por favor no equiparar tres con 60%. 336 00:13:15,810 --> 00:13:17,410 Es mucho más abstracto que eso. 337 00:13:17,410 --> 00:13:20,160 La fórmula con la que se calcula grados se ponderarán del modo siguiente. 338 00:13:20,160 --> 00:13:21,610 Corrección vale más. 339 00:13:21,610 --> 00:13:23,010 Diseño vale un poco menos. 340 00:13:23,010 --> 00:13:24,490 Estilo vale un poco menos. 341 00:13:24,490 --> 00:13:26,950 Y esto generalmente captura la cantidad de tiempo 342 00:13:26,950 --> 00:13:29,800 que va en conseguir cada uno de estos ejes justo. 343 00:13:29,800 --> 00:13:31,810 El estilo es muy fácil, debe ser súper rápido, 344 00:13:31,810 --> 00:13:33,657 pero es un hábito fácil para obtener pereza. 345 00:13:33,657 --> 00:13:35,490 La corrección podría tomar que la mayor parte del tiempo. 346 00:13:35,490 --> 00:13:38,990 Persiguiendo algunos podrían bug tomar esa hora extra o más, 347 00:13:38,990 --> 00:13:41,737 y así, el marcador en última instancia, que capta. 348 00:13:41,737 --> 00:13:43,070 Y por eso, ahora una palabra más grave. 349 00:13:43,070 --> 00:13:45,240 Desde CS50 tiene la distinción, para bien 350 00:13:45,240 --> 00:13:47,440 o para mal, de ser tal vez mejor informado 351 00:13:47,440 --> 00:13:50,065 con los temas de la académica la honestidad de la mayoría de cualquier otro curso. 352 00:13:50,065 --> 00:13:53,720 Y, en efecto, es a mi conocimiento que enviamos más estudiantes, por desgracia, 353 00:13:53,720 --> 00:13:56,690 con fines disciplinarios cada año como consecuencia de ello. Por lo tanto, 354 00:13:56,690 --> 00:13:59,040 en el interés de la plena divulgación, vamos a hablar brevemente 355 00:13:59,040 --> 00:14:02,820 acerca de lo que sucede en CS50, y lo que puede hacer, y lo que puede tener en cuenta. 356 00:14:02,820 --> 00:14:05,530 >> Así pues, aquí desde 2007, cuando Heredé el curso, 357 00:14:05,530 --> 00:14:07,870 es el número de casos de mesa Ad. 358 00:14:07,870 --> 00:14:10,690 Junta de anuncio es disciplinaria de Harvard cuerpo, o ahora el Consejo de Honor, 359 00:14:10,690 --> 00:14:13,790 a la que se refieren los casos cuando los estudiantes hacen algo que el curso de 360 00:14:13,790 --> 00:14:15,470 programa considera irrazonable. 361 00:14:15,470 --> 00:14:17,220 No hay patrón verdadero aquí, diría yo. 362 00:14:17,220 --> 00:14:19,530 Se fluctúa en el años, pero en general 363 00:14:19,530 --> 00:14:22,262 este es el número de los casos que se conocen. 364 00:14:22,262 --> 00:14:23,970 El número de estudiantes que están involucrados? 365 00:14:23,970 --> 00:14:25,290 Es también varía. 366 00:14:25,290 --> 00:14:27,930 Por lo general, el año pasado por ejemplo, 29 estudiantes de la Universidad de Harvard 367 00:14:27,930 --> 00:14:29,740 eran Ad embarcados, por así decirlo. 368 00:14:29,740 --> 00:14:32,670 29 de ellos los estudiantes actuales, Dos de ellos estudiantes anteriores, 369 00:14:32,670 --> 00:14:35,610 que estaban colaborando de alguna manera desfavorable. 370 00:14:35,610 --> 00:14:38,400 Y luego, en términos de la porcentaje, por lo general alrededor de 3% 371 00:14:38,400 --> 00:14:41,360 de la clase que, por desgracia, hace que este tipo de decisiones. 372 00:14:41,360 --> 00:14:44,470 >> Así, el año pasado fue de 3,5% del total de estudiantes de CS50 373 00:14:44,470 --> 00:14:46,820 que era Ad embarcados, por así decirlo. 374 00:14:46,820 --> 00:14:48,490 >> ¿Entonces, Qué significa todo esto? 375 00:14:48,490 --> 00:14:49,660 Y ¿qué es lo que realmente hacemos? 376 00:14:49,660 --> 00:14:52,930 >> Así, para la divulgación completa, nos absolutamente, como los informáticos, 377 00:14:52,930 --> 00:14:57,620 contar con herramientas de software a nuestra disposición y es muy fácil para nosotros, para ser justos, 378 00:14:57,620 --> 00:15:00,980 compañeros de clase de que otros que no son cruzar estas líneas para cruzar comparar 379 00:15:00,980 --> 00:15:04,570 cada presentación este año en contra de cada presentación durante los últimos ocho años. 380 00:15:04,570 --> 00:15:05,445 Software hace esto. 381 00:15:05,445 --> 00:15:07,440 Y en última instancia, es los ojos humanos que deciden 382 00:15:07,440 --> 00:15:11,410 si o no hacer referencia alguna la materia para su posterior adjudicación, 383 00:15:11,410 --> 00:15:12,737 pero el software sin duda ayuda. 384 00:15:12,737 --> 00:15:15,820 Y esto, francamente, es por eso que creo que tenemos un número tan grande de CS50. 385 00:15:15,820 --> 00:15:18,540 No es porque CS50 estudiantes o estudiantes CS más 386 00:15:18,540 --> 00:15:20,840 generalmente son menos honestos que cualquier otro estudiante, 387 00:15:20,840 --> 00:15:22,340 es sólo tenemos la herramientas y las técnicas 388 00:15:22,340 --> 00:15:24,095 con la que aprovechar esta primera pasada. 389 00:15:24,095 --> 00:15:25,960 >> Pero sí mantener un ojo en todas estas cosas 390 00:15:25,960 --> 00:15:30,340 así, de nuevo, en interés de la reconociendo el trabajo que se está poniendo 391 00:15:30,340 --> 00:15:32,397 en por una súper mayoría de la clase. 392 00:15:32,397 --> 00:15:34,230 Y la política del curso en la honestidad académica, 393 00:15:34,230 --> 00:15:37,021 a pesar de que es un montón de párrafos de largo con un montón de balas 394 00:15:37,021 --> 00:15:40,490 que son de esperar bastante legible, que realmente no se reducen a ser razonable. 395 00:15:40,490 --> 00:15:44,000 Y la mejor regla de oro que ofrecemos dentro del plan de estudios 396 00:15:44,000 --> 00:15:46,020 Es esta, la esencia de todo el trabajo que 397 00:15:46,020 --> 00:15:47,850 someterse a este curso debe ser la suya. 398 00:15:47,850 --> 00:15:51,510 Y de hecho, en casi todos los casos referidos para acción disciplinaria 399 00:15:51,510 --> 00:15:55,640 que era a causa de algún estudiante a altas horas de noche típicamente volvió su código 400 00:15:55,640 --> 00:15:58,130 más pura y simple a un compañero de clase, que luego lo adoptó 401 00:15:58,130 --> 00:16:00,840 en su totalidad o significativamente de los mismos. 402 00:16:00,840 --> 00:16:02,680 >> Pero en realidad, esto está bien. 403 00:16:02,680 --> 00:16:04,684 Y de hecho, en la oficina horas, las tiras de papel 404 00:16:04,684 --> 00:16:07,850 usted ha sido entregado si vienes por la oficina horas la semana pasada alienta tanto. 405 00:16:07,850 --> 00:16:09,710 Tienes toda la bienvenidos y alentados 406 00:16:09,710 --> 00:16:12,340 para discutir los boletines de problemas con los compañeros de clase. 407 00:16:12,340 --> 00:16:14,461 Para ayudar a los demás cuando tropiezo. 408 00:16:14,461 --> 00:16:17,710 Pero en general, la regla de oro debe ser esto, "cuando usted está pidiendo ayuda, 409 00:16:17,710 --> 00:16:20,412 usted puede mostrar su código a los demás, pero usted no puede ver la suya ". 410 00:16:20,412 --> 00:16:22,620 Así que, en otras palabras, si estoy luchando con algún conjunto P 411 00:16:22,620 --> 00:16:25,290 y yo estoy sentado allí en el comedor salón, o en la biblioteca, 412 00:16:25,290 --> 00:16:28,470 o en el aula tratando de encontrar alguna falta, 413 00:16:28,470 --> 00:16:30,340 Ciertamente puedo mostrar mi código en mi pantalla 414 00:16:30,340 --> 00:16:32,590 a la persona que se sienta al lado para mí, sin duda el personal, 415 00:16:32,590 --> 00:16:33,600 sino también un compañero de clase. 416 00:16:33,600 --> 00:16:36,580 Pero si la solución que mi compañero de clase ofrece es, oh, 417 00:16:36,580 --> 00:16:39,200 aquí sólo echar un vistazo a lo que Lo hice, que cruza la línea. 418 00:16:39,200 --> 00:16:43,120 >> Y me atrevería a decir que es por lo general una cosa razonable para la mayoría de la gente 419 00:16:43,120 --> 00:16:45,030 de detectar muy fácilmente la línea de. 420 00:16:45,030 --> 00:16:47,195 Y así, consulte el plan de estudios para más detalle. 421 00:16:47,195 --> 00:16:49,070 Y ahora uno de los más aspectos controvertidos 422 00:16:49,070 --> 00:16:52,529 del programa CS50 que pensé que hablaría en conclusión aquí 423 00:16:52,529 --> 00:16:53,820 es la llamada cláusula de arrepentimiento. 424 00:16:53,820 --> 00:16:55,340 Así que, aquí está toda la letra pequeña. 425 00:16:55,340 --> 00:16:58,090 Pero, en general hemos visto en los últimos 8 años o más 426 00:16:58,090 --> 00:17:01,510 que, de hecho, casi todos CS50 de casos de deshonestidad académica 427 00:17:01,510 --> 00:17:04,390 han sido el resultado de simplemente pobres haciendo tarde en la noche la decisión. 428 00:17:04,390 --> 00:17:07,144 El resultado de la tensión, el resultado de falta de alimentación, la falta de sueño, 429 00:17:07,144 --> 00:17:09,560 demasiadas series P, demasiados plazos, demasiados compromisos. 430 00:17:09,560 --> 00:17:13,520 Acumule en un 02 a.m. Estrés, 03:00 AM, 4:00 am, con un plazo inminente. 431 00:17:13,520 --> 00:17:17,020 La mayoría de los estudiantes en estos casos simplemente han tomado malas decisiones 432 00:17:17,020 --> 00:17:20,619 que muy bien podrían lamentar la mañana siguiente si no minutos más tarde, 433 00:17:20,619 --> 00:17:25,490 pero hasta el año pasado no hubo válvula de escape que estos estudiantes podrían 434 00:17:25,490 --> 00:17:29,140 realmente abrirse a abordar realmente el problema de frente y sin miedo a ser 435 00:17:29,140 --> 00:17:30,850 arrancado desde la universidad en conjunto. 436 00:17:30,850 --> 00:17:33,260 >> Y, de hecho, hemos introducido esta cláusula pesar del año pasado, 437 00:17:33,260 --> 00:17:35,970 que dice que si dentro de 72 horas, tres días, 438 00:17:35,970 --> 00:17:37,970 de cruzar alguna línea prescrito en el plan de estudios 439 00:17:37,970 --> 00:17:41,178 vienes adelante a uno de el curso de cabeza y vamos a tener una charla al respecto. 440 00:17:41,178 --> 00:17:43,720 Todavía hay algunos de los que resultado, al contrario de lo que es 441 00:17:43,720 --> 00:17:44,990 ha informado de lo contrario. 442 00:17:44,990 --> 00:17:49,190 Todavía hay algún resultado que es accionable por el curso, 443 00:17:49,190 --> 00:17:51,611 en general, la reducción a cero de un conjunto P o tomar alguna otra acción, 444 00:17:51,611 --> 00:17:53,610 pero lo haremos, de hecho, manejarlo nosotros mismos y no 445 00:17:53,610 --> 00:17:58,460 consulte lo más alto eran el resultado podría ser mucho más graves. 446 00:17:58,460 --> 00:18:01,810 Y, de hecho, para compartir lo que pasó el año pasado, en los ocho años, y ahora 447 00:18:01,810 --> 00:18:04,950 nueve años, de la enseñanza de este curso y después de juguetear con varios botones, 448 00:18:04,950 --> 00:18:07,866 girando varios diales en el último varios años en la honestidad académica, 449 00:18:07,866 --> 00:18:11,920 y ver por los datos sin aparentes impacto, incluso de los discursos de este tipo, 450 00:18:11,920 --> 00:18:15,490 Este fue sin duda lo mejor hemos introducido pedagógicamente 451 00:18:15,490 --> 00:18:18,090 en ocho años a lo largo de estas líneas en CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 estudiantes se presentaron bajo esta cláusula el año pasado. 453 00:18:21,010 --> 00:18:23,389 Nos tomamos ninguna medida para siete de esos estudiantes, 454 00:18:23,389 --> 00:18:25,430 determinar que eran innecesariamente preocupado. 455 00:18:25,430 --> 00:18:27,304 Ellos no tenían, de hecho, cruzado una línea, pero 456 00:18:27,304 --> 00:18:28,960 fue una buena charla para tener, no obstante. 457 00:18:28,960 --> 00:18:31,190 Nos lo quitaron 11 de las puntuaciones que se presentaron. 458 00:18:31,190 --> 00:18:33,840 Y en un caso, le preguntamos a un estudiante para hacer un conjunto de problemas. 459 00:18:33,840 --> 00:18:36,370 Pero más convincente, sinceramente, con estos 19 charlas, 460 00:18:36,370 --> 00:18:39,020 que era mucho más de lo espera que tengan, cada una de ellas 461 00:18:39,020 --> 00:18:41,370 10 minutos de tal vez una una hora de duración, también trajo 462 00:18:41,370 --> 00:18:44,920 a la luz una serie de cuestiones en relación con problemas familiares, problemas de amigo, 463 00:18:44,920 --> 00:18:46,940 problemas de salud mental que luego contratan, 464 00:18:46,940 --> 00:18:50,200 con la bendición, residente del estudiante decano, o amigos, o cualquier otro número 465 00:18:50,200 --> 00:18:51,450 de los recursos de apoyo. 466 00:18:51,450 --> 00:18:54,454 Así que esto era de lejos uno de los mejores usos de nuestro tiempo 467 00:18:54,454 --> 00:18:55,870 y uno de los mejores intervenciones. 468 00:18:55,870 --> 00:18:58,870 >> Con eso dicho, no tenía de entrada en la tasa de detección 469 00:18:58,870 --> 00:19:00,909 de deshonestidad académica en general. 470 00:19:00,909 --> 00:19:02,950 Y me atrevo a decir, este subconjunto de los estudiantes de último año 471 00:19:02,950 --> 00:19:06,350 era un grupo demográfico que nunca antes identificado antes 472 00:19:06,350 --> 00:19:08,140 y nunca había conectado antes. 473 00:19:08,140 --> 00:19:10,020 Y así, se trataba de maravillosas historias de éxito 474 00:19:10,020 --> 00:19:13,390 a pesar de que salieron a la luz en menos de circunstancias óptimas. 475 00:19:13,390 --> 00:19:15,640 Por lo tanto, tenga esto en cuenta como usted hace, tal vez, 476 00:19:15,640 --> 00:19:17,390 alguna mala decisión a ti mismo por la noche, 477 00:19:17,390 --> 00:19:20,151 que se recurre tanto tiempo como el estudiante en esa situación 478 00:19:20,151 --> 00:19:23,400 poseer y presentar para que podamos tener ese tipo de charla y tratar con él 479 00:19:23,400 --> 00:19:27,310 de una manera que es educativo, y luego podemos dejarlo atrás al día siguiente. 480 00:19:27,310 --> 00:19:30,335 >> Así que sin más preámbulos, tomar la borde fuera de esta conversación, 481 00:19:30,335 --> 00:19:35,080 la razón por la que los cachorros son hasta decir sólo para romper el hielo por un momento. 482 00:19:35,080 --> 00:19:39,560 Y, por desgracia, todos son el sueño, pero lo que se suponía iba a suceder aquí 483 00:19:39,560 --> 00:19:41,760 era todo el mundo se suponía para asombro y tipo de relajarse 484 00:19:41,760 --> 00:19:43,910 después de eso muy pesada conversación. 485 00:19:43,910 --> 00:19:46,930 Pero al parecer, me puse los cachorros para dormir. 486 00:19:46,930 --> 00:19:50,070 Pero si vas a CS50 de cachorros web Slash, 487 00:19:50,070 --> 00:19:51,610 puedes verlos todo el día. 488 00:19:51,610 --> 00:19:55,280 Particularmente tal vez 02:00, o 3:00, o 4:00 de la mañana en la noche 489 00:19:55,280 --> 00:19:57,480 para ver un poco de alivio de la tensión allí. 490 00:19:57,480 --> 00:19:58,805 Así que eso es slash cachorros. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Correcto. 493 00:20:02,200 --> 00:20:03,020 ¿No era eso divertido? 494 00:20:03,020 --> 00:20:04,200 OK. 495 00:20:04,200 --> 00:20:07,140 Así que, volviendo a algún equipo ciencia, si me lo permite. 496 00:20:07,140 --> 00:20:10,600 >> Por lo tanto, recordar que la última vez que empezamos sin mirar justo en principal, que 497 00:20:10,600 --> 00:20:13,930 fue la función por defecto, el cuándo bandera verde clic equivalente, 498 00:20:13,930 --> 00:20:16,999 pero también empezamos brevemente escribir algunas de nuestras propias funciones. 499 00:20:16,999 --> 00:20:20,040 Y hasta el momento ninguna de estas funciones han sido particularmente grande o carnoso. 500 00:20:20,040 --> 00:20:24,570 Te metes en los más grandes funciones, probablemente, P conjunto 2, P set 3, 501 00:20:24,570 --> 00:20:26,410 Definitivamente P fijó 4 en adelante. 502 00:20:26,410 --> 00:20:29,340 En este momento la mayoría de sus programas, si no todos ellos, sin duda para P 503 00:20:29,340 --> 00:20:31,550 conjunto 1 se puede hacer en su totalidad en principal. 504 00:20:31,550 --> 00:20:33,810 Si su programa sólo cinco líneas, 10 líneas, 505 00:20:33,810 --> 00:20:37,070 incluso 20 líneas de largo, perfectamente razonable para escribirlo 506 00:20:37,070 --> 00:20:40,930 todo en principal y de no complicar más su código, pero lo que estamos haciendo hoy 507 00:20:40,930 --> 00:20:44,360 y hacia adelante está intentando también introducir algunas buenas técnicas de diseño 508 00:20:44,360 --> 00:20:48,660 de manera que por ejemplo el código se vuelve más complicado y como los problemas 509 00:20:48,660 --> 00:20:51,690 quiere resolver de obtener más y más interesante que tiene, más o menos, 510 00:20:51,690 --> 00:20:55,850 las herramientas en su caja de herramientas con las que para diseñar buenas soluciones a esos. 511 00:20:55,850 --> 00:21:01,210 >> Por lo tanto, vamos a echar un vistazo rápido de vuelta en este programa desde mi última semana, que 512 00:21:01,210 --> 00:21:06,550 fue funciones cero punto C. Y cuenta de que, sencillamente, 513 00:21:06,550 --> 00:21:10,310 parece que esto con dos funciones, el principal y el nombre de impresión. 514 00:21:10,310 --> 00:21:13,160 Y pensando en volver o tal vez revertir la ingeniería de hoy, 515 00:21:13,160 --> 00:21:16,880 lo que fue la motivación para introducir una función en la línea 28 llama, 516 00:21:16,880 --> 00:21:18,180 Nombre de impresión? 517 00:21:18,180 --> 00:21:21,745 O lo que era este un ejemplo de en términos de un principio o comida para llevar, 518 00:21:21,745 --> 00:21:22,605 si tú pudieras. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Algunos murmullos. 521 00:21:27,300 --> 00:21:28,830 ¿Qué? 522 00:21:28,830 --> 00:21:32,210 >> Sí descomposición tan funcional es una especie de la manera elegante de decir, 523 00:21:32,210 --> 00:21:34,690 descomponer su programa en sus partes constituyentes 524 00:21:34,690 --> 00:21:37,530 y luego usar esas partes para ensamblar un conjunto. 525 00:21:37,530 --> 00:21:39,620 Por lo tanto, eso también es sólo un poco de un bocado ya, 526 00:21:39,620 --> 00:21:42,050 pero esto es quizás incluso una mejor ejemplo de algo 527 00:21:42,050 --> 00:21:43,081 acaba de llamar la abstracción. 528 00:21:43,081 --> 00:21:43,580 ¿Correcto? 529 00:21:43,580 --> 00:21:46,950 Abstracción va a ser uno de los temas recurrentes en CS50 530 00:21:46,950 --> 00:21:49,085 y ciencias de la computación más en general, ya que es 531 00:21:49,085 --> 00:21:53,060 una técnica con la que se puede resolver problemas de manera más eficaz, ya que 532 00:21:53,060 --> 00:21:56,807 puede escribir soluciones más intuitivamente y de manera que las escalas 533 00:21:56,807 --> 00:21:58,390 y es comprensible por otras personas. 534 00:21:58,390 --> 00:21:59,860 ¿Qué quiero decir con esto? 535 00:21:59,860 --> 00:22:04,340 >> Así, podría decirse que es mucho más fácil de leer mirar un programa como este, 536 00:22:04,340 --> 00:22:05,990 súper corto que sea. 537 00:22:05,990 --> 00:22:10,050 Cuando vea en la línea 22 que hay una función llamada, el nombre de impresión. 538 00:22:10,050 --> 00:22:12,620 Ese nombre solo dice lo que hace. 539 00:22:12,620 --> 00:22:15,780 Esa función aparentemente toma de entrada entre sus paréntesis, 540 00:22:15,780 --> 00:22:18,600 y al parecer hace algo, presumiblemente imprime el nombre. 541 00:22:18,600 --> 00:22:20,880 Y así, a pesar de que absolutamente podría tener 542 00:22:20,880 --> 00:22:25,280 hecho lo que hicimos hace una semana, que era acaba de tomar esta línea real de código, 543 00:22:25,280 --> 00:22:28,710 deshacerse de este, y obtener deshacerse de este todos juntos, 544 00:22:28,710 --> 00:22:31,436 que tipo de resumieron distancia la noción de la impresión de un nombre. 545 00:22:31,436 --> 00:22:33,060 No me importa si usted está utilizando def impresión. 546 00:22:33,060 --> 00:22:35,601 No me importa si tiene una ciento S y N. Estos barra invertida 547 00:22:35,601 --> 00:22:37,270 son detalles muy arcanos. 548 00:22:37,270 --> 00:22:40,090 Lo que me importa como programador está imprimiendo un nombre. 549 00:22:40,090 --> 00:22:43,414 Y así, ¿qué mejor manera de hacerlo que por llamar a una función, el nombre de impresión? 550 00:22:43,414 --> 00:22:46,330 Y así, esa fue una de las motivaciones para hacer algo como esto. 551 00:22:46,330 --> 00:22:50,370 Hacer el código más legible, más reutilizable, y también se auto descriptiva. 552 00:22:50,370 --> 00:22:52,120 Ahora, vamos a echar un vistazo en otro ejemplo, 553 00:22:52,120 --> 00:22:56,220 que era uno funciones, que teníamos aquí. 554 00:22:56,220 --> 00:23:00,367 >> Por lo tanto, éste es quizás aún más convincente porque, en este caso, 555 00:23:00,367 --> 00:23:01,700 No quiero que acaba de obtener un int. 556 00:23:01,700 --> 00:23:03,320 Quiero conseguir un int positivo. 557 00:23:03,320 --> 00:23:06,470 Y resulta que para obtener un resultado positivo int que tiene que hacer un montón de trabajo de campo. 558 00:23:06,470 --> 00:23:06,969 ¿Correcto? 559 00:23:06,969 --> 00:23:09,600 No es una simple línea llamar como el nombre de impresión era, 560 00:23:09,600 --> 00:23:11,480 que es ciertamente menos convincente. 561 00:23:11,480 --> 00:23:16,000 >> Para obtener un int positivo, logically-- déjame desplazo hacia abajo para ocultar esto. 562 00:23:16,000 --> 00:23:18,887 ¿Qué tienes que hacer? 563 00:23:18,887 --> 00:23:20,720 Como todas las herramientas que tienen en este momento se 564 00:23:20,720 --> 00:23:24,440 cosas como definición de impresión de Standard Biblioteca y también de la biblioteca CS50 565 00:23:24,440 --> 00:23:26,990 tenemos Obtener Int, y obtener Float, Obtener Largo Largo, Get String, 566 00:23:26,990 --> 00:23:29,260 pero el único, Germane, en este momento es conseguir Int. 567 00:23:29,260 --> 00:23:32,970 Por lo tanto, si la única herramienta que tienes en su caja de herramientas es Obtén Int, 568 00:23:32,970 --> 00:23:35,505 cómo hacemos para la implementación que para conseguir int positivo? 569 00:23:35,505 --> 00:23:35,929 >> AUDIENCIA: Crear un registro y se les de si la entrada que dieron 570 00:23:35,929 --> 00:23:36,762 fue positivo o no. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> ALTAVOZ 1: Perfecto. 573 00:23:40,640 --> 00:23:41,200 Exactamente. 574 00:23:41,200 --> 00:23:43,950 Otra de las herramientas que tenemos en nuestra caja de herramientas de una o dos semanas 575 00:23:43,950 --> 00:23:45,419 es sólo la construcción de bucle. 576 00:23:45,419 --> 00:23:48,210 Y así, si, si usamos un tiempo lazo, o un do while, o un primer plano 577 00:23:48,210 --> 00:23:50,850 bucle que probablemente podría conseguir lejos con cualquiera de los que están en alguna forma. 578 00:23:50,850 --> 00:23:55,140 Podemos aplicar la noción de get int positivo sólo por el uso Obtén Int, 579 00:23:55,140 --> 00:23:57,830 y luego simplemente seguir llamándolo de nuevo y mantener molestar al usuario 580 00:23:57,830 --> 00:24:00,320 hasta que él o ella realmente nos da lo que queremos. 581 00:24:00,320 --> 00:24:03,260 >> Y ahora, este abstracción del proceso 582 00:24:03,260 --> 00:24:05,680 de conseguir un int positivo en una función llamada 583 00:24:05,680 --> 00:24:08,930 Obtener Int positivo es un poco más convincente porque mira esto. 584 00:24:08,930 --> 00:24:10,990 Estos son como 10 más líneas de código que 585 00:24:10,990 --> 00:24:15,090 están involucrados en la obtención de un int positivo, y yo no me importa cómo lo hagas. 586 00:24:15,090 --> 00:24:17,850 Lo único que importa es que usted puede hacerlo, y por eso me he 587 00:24:17,850 --> 00:24:21,660 ocultos todos estos detalles detrás de un función llamada Get Positivo int que, 588 00:24:21,660 --> 00:24:23,430 de hecho, tiene esta do while. 589 00:24:23,430 --> 00:24:27,660 >> Y ver la semana pasada por la sintaxis allí, pero simplemente declara N, 590 00:24:27,660 --> 00:24:29,800 y se imprime el instrucciones para el usuario. 591 00:24:29,800 --> 00:24:33,330 Llama Obtener Int y luego comprueba esta condición de nuevo, y otra vez, 592 00:24:33,330 --> 00:24:35,230 y otra vez hasta que el usuario coopera. 593 00:24:35,230 --> 00:24:38,000 >> Así que ahora, a pocas comprobaciones de sanidad. 594 00:24:38,000 --> 00:24:40,370 Para aquellos familiarizados quizás con un poco de programación, 595 00:24:40,370 --> 00:24:46,410 ¿por qué se declara N, ¿por qué creo N fuera del bucle Do While? 596 00:24:46,410 --> 00:24:50,370 ¿Por qué es en la línea 29 y no en como 33, por ejemplo. 597 00:24:50,370 --> 00:24:53,529 >> AUDIENCIA: Porque cuando declararlo fuera, tipo 598 00:24:53,529 --> 00:24:56,688 de más, la scope-- más grande 599 00:24:56,688 --> 00:24:58,146 >> ALTAVOZ 1: Good. 600 00:24:58,146 --> 00:24:59,604 >> AUDIENCIA: --y si se declara que dentro del bucle, [inaudible] 601 00:24:59,604 --> 00:25:00,979 porque no sabe nada de él. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 ALTAVOZ 1: Exactamente. 604 00:25:03,610 --> 00:25:06,330 Si puedo simplify-- es un problema de alcance. 605 00:25:06,330 --> 00:25:11,530 Y alcance se refiere al contexto en el que existe una variable o es utilizable. 606 00:25:11,530 --> 00:25:15,050 Y la buena regla de oro aquí es que en general, cuando se declara o crear 607 00:25:15,050 --> 00:25:21,642 una variable sólo se puede utilizar en el interior de los más cercanos abrazar llaves. 608 00:25:21,642 --> 00:25:22,600 ¿Entonces que significa eso? 609 00:25:22,600 --> 00:25:26,551 Si, en cambio, deshacer esto y voy con algo que se siente un poco más simple. 610 00:25:26,551 --> 00:25:27,050 ¿Correcto? 611 00:25:27,050 --> 00:25:29,360 >> Línea 32 sólo se ve más limpio para mí ahora. 612 00:25:29,360 --> 00:25:31,500 Estoy haciendo las dos cosas a una vez y luego asignar 613 00:25:31,500 --> 00:25:33,070 la mano derecha a la mano izquierda. 614 00:25:33,070 --> 00:25:35,180 El problema ahora se basa en que la definición del ámbito de aplicación 615 00:25:35,180 --> 00:25:41,130 N es que se puede utilizar en líneas 31 y 32 en el interior de este bucle, 616 00:25:41,130 --> 00:25:45,100 pero donde por esa definición puede no ser utilizado? 617 00:25:45,100 --> 00:25:45,660 De acuerdo, ¿qué? 618 00:25:45,660 --> 00:25:46,160 Sí. 619 00:25:46,160 --> 00:25:47,490 >> AUDIENCIA: 35. 620 00:25:47,490 --> 00:25:49,180 >> ALTAVOZ 1: 35. 621 00:25:49,180 --> 00:25:50,480 Definitivamente no 35. 622 00:25:50,480 --> 00:25:52,349 Y también dónde si no? 623 00:25:52,349 --> 00:25:52,890 AUDIENCIA: 34. 624 00:25:52,890 --> 00:25:55,040 ALTAVOZ 1: Incluso 34 es problemático porque es 625 00:25:55,040 --> 00:25:56,450 fuera de las llaves. 626 00:25:56,450 --> 00:25:58,200 Y así, de hecho, vamos a ver qué pasa. 627 00:25:58,200 --> 00:25:58,700 ¿Correcto? 628 00:25:58,700 --> 00:26:00,722 Esto puede parecer un poco intuitiva o no podría, 629 00:26:00,722 --> 00:26:02,680 pero vamos a ver lo que el compilador tiene que decir cuando 630 00:26:02,680 --> 00:26:04,730 entramos en directorio de origen de hoy. 631 00:26:04,730 --> 00:26:08,950 Hacer función una. 632 00:26:08,950 --> 00:26:11,231 Oh Dios mío. 633 00:26:11,231 --> 00:26:12,980 Bueno, finalmente terminé que, por cierto. 634 00:26:12,980 --> 00:26:14,030 Correcto. 635 00:26:14,030 --> 00:26:15,510 ¿Y cuál es el problema aquí? 636 00:26:15,510 --> 00:26:17,430 Muy arcana a la vista. 637 00:26:17,430 --> 00:26:19,570 Pero esto es lo que typed-- hacer funcionar una. 638 00:26:19,570 --> 00:26:21,640 Esto es lo que induce, que es en realidad 639 00:26:21,640 --> 00:26:23,705 utilizando el sonido metálico del compilador con algunas de esas banderas 640 00:26:23,705 --> 00:26:25,080 que vamos a ver de nuevo en poco tiempo. 641 00:26:25,080 --> 00:26:26,829 Y de nuevo, busque siempre en el primero de error, 642 00:26:26,829 --> 00:26:30,540 debido a que sólo podría tener una cascada efecto de sentido en otras líneas. 643 00:26:30,540 --> 00:26:34,410 >> Así que lo que esto significa es que el problema está en función 1.c. 644 00:26:34,410 --> 00:26:36,890 Está en la línea 32. 645 00:26:36,890 --> 00:26:39,712 Y es en la columna, o carácter, 13. 646 00:26:39,712 --> 00:26:42,670 Así que cuando su editor de texto que puede ayudará a identificar dónde es el problema. 647 00:26:42,670 --> 00:26:47,079 Así que si me desplazo hacia arriba, lo que es la línea 32? 648 00:26:47,079 --> 00:26:49,120 Eso es de hecho éste eso ya está resaltado 649 00:26:49,120 --> 00:26:50,607 derecho aquí-- no utilizada n variable. 650 00:26:50,607 --> 00:26:51,440 Pero no es inusitado. 651 00:26:51,440 --> 00:26:52,320 Lo estoy usando. 652 00:26:52,320 --> 00:26:56,110 Pero el compilador de confundir, porque sólo existe dentro de este ámbito. 653 00:26:56,110 --> 00:26:57,727 Y lo que no puedo usar aquí. 654 00:26:57,727 --> 00:26:58,560 No puedo usar aquí. 655 00:26:58,560 --> 00:27:01,320 Y el compilador, por lo tanto, ni siquiera importa que estoy tratando. 656 00:27:01,320 --> 00:27:03,940 Parece ser inusitado dentro de su alcance real. 657 00:27:03,940 --> 00:27:08,854 >> Así que podemos ampliar el alcance haciendo exactamente lo que empezamos con-- int n. 658 00:27:08,854 --> 00:27:11,020 Y a pesar de que no es así mirar tan elegante, tal vez, 659 00:27:11,020 --> 00:27:15,110 y estamos teniendo una línea adicional aquí, ahora es el alcance de todo el mundo. 660 00:27:15,110 --> 00:27:15,970 Así que vamos a intentarlo de nuevo. 661 00:27:15,970 --> 00:27:19,040 Así que la función de una. 662 00:27:19,040 --> 00:27:19,610 Agradable. 663 00:27:19,610 --> 00:27:23,370 Y ahora si me si yo ejecuto la función uno, vamos a darle negativo 10, 664 00:27:23,370 --> 00:27:27,170 negativo 1, 0, 1, y de hecho funciona. 665 00:27:27,170 --> 00:27:28,610 >> Así que no hay otra solución aquí. 666 00:27:28,610 --> 00:27:29,280 ¿Tu sabes que? 667 00:27:29,280 --> 00:27:31,230 ¿Qué pasa si yo realmente estoy luchando con esto? 668 00:27:31,230 --> 00:27:33,140 Yo no sé dónde está el n supone que debe ir. 669 00:27:33,140 --> 00:27:33,723 ¿Tu sabes que? 670 00:27:33,723 --> 00:27:39,220 Yo sólo voy a poner todo el forma en la parte superior de mi archivo aquí. 671 00:27:39,220 --> 00:27:42,835 ¿Cómo sería esto hacer, qué te parece? 672 00:27:42,835 --> 00:27:43,335 ¿Sí? 673 00:27:43,335 --> 00:27:44,251 >> AUDIENCIA: [inaudible]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 ALTAVOZ 1: Sí. 676 00:27:48,630 --> 00:27:50,560 Así que me he hecho global, por así decirlo. 677 00:27:50,560 --> 00:27:54,430 Si usted tiene una variable que está fuera todas las funciones que se le permite, 678 00:27:54,430 --> 00:27:58,780 y el código debe compilar y n ahora será accesible no sólo en get 679 00:27:58,780 --> 00:28:02,490 int positivo, pero también en la que main-- es un poco preocupante porque hay 680 00:28:02,490 --> 00:28:04,864 ya una n en principal, por lo que más en que en tan sólo un moment-- 681 00:28:04,864 --> 00:28:06,530 pero esto sería considerado un mal diseño. 682 00:28:06,530 --> 00:28:06,910 Correcto. 683 00:28:06,910 --> 00:28:08,570 Si usted tiene que recurrir a algo así como, oh, voy a 684 00:28:08,570 --> 00:28:10,125 sólo hay que poner aquí porque el código parece compilar 685 00:28:10,125 --> 00:28:12,180 en general, no es la mejor práctica. 686 00:28:12,180 --> 00:28:14,590 Más bien quiere elegir el más estrecho posible alcance 687 00:28:14,590 --> 00:28:18,720 para las variables, lo que significaría va con nuestro diseño inicial, que 688 00:28:18,720 --> 00:28:19,920 es aquí. 689 00:28:19,920 --> 00:28:24,400 >> Ahora como un aparte, si tuvieras una forma idéntica con nombre de variable de aquí, 690 00:28:24,400 --> 00:28:27,750 la forma c manejaría esto-- aunque esto no va a suceder demasiado often-- 691 00:28:27,750 --> 00:28:30,150 es que esto sigue siendo perfectamente bien aquí. 692 00:28:30,150 --> 00:28:35,000 Pero esta definición de n en línea 22 habrá sombra el global. 693 00:28:35,000 --> 00:28:38,190 Así que éste trabajará dentro principal, y el global 694 00:28:38,190 --> 00:28:41,670 en realidad se aplican cuando usted está en conseguir int positivo pero más sobre esto 695 00:28:41,670 --> 00:28:43,890 otra vez, pero sólo Para los curiosos. 696 00:28:43,890 --> 00:28:45,970 >> Así que en resumen, podemos solucionar este problema aquí. 697 00:28:45,970 --> 00:28:49,220 Ahora vamos a desmenuzar otras dos piezas antes de ver una última línea de código 698 00:28:49,220 --> 00:28:50,170 en este programa. 699 00:28:50,170 --> 00:28:52,170 Obtener int positivo. 700 00:28:52,170 --> 00:28:54,450 En el lado izquierdo de su palabra es la palabra int. 701 00:28:54,450 --> 00:28:56,860 ¿Qué significa eso qué te parece? 702 00:28:56,860 --> 00:28:58,900 Hasta ahora hemos visto mayormente vacío. 703 00:28:58,900 --> 00:28:59,400 ¿Sí? 704 00:28:59,400 --> 00:29:01,810 >> AUDIENCIA: Es el tipo de variable que usted está preguntando acerca. 705 00:29:01,810 --> 00:29:04,550 >> ALTAVOZ 1: Sí, es el tipo de, déjame No digas variable, pero el tipo de valor 706 00:29:04,550 --> 00:29:05,990 que yo estoy pidiendo volver. 707 00:29:05,990 --> 00:29:08,070 Y de hecho, eso es intuitiva aquí, es de esperar. 708 00:29:08,070 --> 00:29:08,200 ¿Correcto? 709 00:29:08,200 --> 00:29:10,250 Si usted desea conseguir un int positivo, ¿qué es lo que 710 00:29:10,250 --> 00:29:12,920 quiere que el function-- como nuestro voluntarios de la semana pasada 711 00:29:12,920 --> 00:29:15,720 a entregar una copia de una pieza de papel con un int en él? 712 00:29:15,720 --> 00:29:19,190 Y así hemos especificado que el tipo denominado de retorno de esta función 713 00:29:19,190 --> 00:29:20,450 es conseguir int positivo. 714 00:29:20,450 --> 00:29:22,990 Si no queremos que devolver nada, dices vacío. 715 00:29:22,990 --> 00:29:25,270 Si quieres que vuelva una cadena, dices cadena. 716 00:29:25,270 --> 00:29:27,310 Si quieres que vuelva un flotador, dices flotador. 717 00:29:27,310 --> 00:29:30,440 Pero el único que se aplica aquí lógicamente, porque estoy usando get int, 718 00:29:30,440 --> 00:29:34,130 a pesar de que me estoy limitando a valores positivos, es devolver un int. 719 00:29:34,130 --> 00:29:38,380 >> Así que por el contrario, ¿qué significa que hay un vacío en paréntesis? 720 00:29:38,380 --> 00:29:40,130 ¿Qué hacen los paréntesis generalmente definir? 721 00:29:40,130 --> 00:29:40,588 ¿Sí? 722 00:29:40,588 --> 00:29:42,880 >> AUDIENCIA: Significa la función de en realidad no conseguirlo. 723 00:29:42,880 --> 00:29:44,650 >> ALTAVOZ 1: Significa la función de en realidad no conseguir qué? 724 00:29:44,650 --> 00:29:45,430 >> AUDIENCIA: Una entrada. 725 00:29:45,430 --> 00:29:46,763 >> ALTAVOZ 1: Una entrada, en absoluto. 726 00:29:46,763 --> 00:29:49,870 Así que de hecho, si el paréntesis aquí se especifica vacío, 727 00:29:49,870 --> 00:29:51,650 Eso sólo significa que no quiero ninguna entrada. 728 00:29:51,650 --> 00:29:53,269 Yo me encargo de el problema yo mismo. 729 00:29:53,269 --> 00:29:55,810 Y, de hecho, usted no tiene que decirle conseguir nada int positivo. 730 00:29:55,810 --> 00:29:59,630 Usted acaba de decir, obtener int positivo, y que la función se apagará y hacer su cosa. 731 00:29:59,630 --> 00:30:02,970 >> Pero ha habido un pequeño truco que he estado jugando aquí todo este tiempo 732 00:30:02,970 --> 00:30:04,970 para asegurarse de que el código se compila. 733 00:30:04,970 --> 00:30:09,620 Observe que int-- obtener positivo int void-- está en la línea 27. 734 00:30:09,620 --> 00:30:14,530 Pero por alguna razón aparentemente raro es también aquí en la línea 16. 735 00:30:14,530 --> 00:30:18,530 Y sólo por si acaso voy a repetir esto por lo que es perfectamente idénticos. 736 00:30:18,530 --> 00:30:21,640 Y yo he dicho prototipo con un pequeño comentario de una sola línea. 737 00:30:21,640 --> 00:30:28,850 ¿Qué sucede si elimino que, Y Ahora vuelva a ejecutar hacen la función 1, introduzca. 738 00:30:28,850 --> 00:30:29,350 ¡Vaya. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Espera un minuto. 741 00:30:33,110 --> 00:30:34,764 ¿Dónde está mi ficha? 742 00:30:34,764 --> 00:30:35,263 ¿Eh? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Colocarse. 745 00:30:39,620 --> 00:30:41,570 Realiza la función 1. 746 00:30:41,570 --> 00:30:42,150 Allá vamos. 747 00:30:42,150 --> 00:30:42,310 OK. 748 00:30:42,310 --> 00:30:43,400 No había guardado correctamente. 749 00:30:43,400 --> 00:30:45,220 Por lo tanto, creo que hay un poco de error aquí donde yo no estoy 750 00:30:45,220 --> 00:30:46,636 ver el nombre de la ficha en el momento. 751 00:30:46,636 --> 00:30:47,940 Entonces, ¿qué está pasando aquí? 752 00:30:47,940 --> 00:30:52,210 Declaración implícita de función conseguir int positivo es válida en C99. 753 00:30:52,210 --> 00:30:53,940 Así confundiendo de nuevo. 754 00:30:53,940 --> 00:30:55,200 Entonces, ¿qué es esto indicativo de? 755 00:30:55,200 --> 00:30:57,287 Bueno, resulta que C es bastante estúpido. 756 00:30:57,287 --> 00:30:59,912 Bueno, es la programación idioma, o mejor dicho, el compilador es. 757 00:30:59,912 --> 00:31:02,940 Sólo se sabe lo que tiene enseñado, y es sólo 758 00:31:02,940 --> 00:31:05,640 va a saber algo si enseñado antes. 759 00:31:05,640 --> 00:31:07,960 En otras palabras, en principal en este momento, estoy 760 00:31:07,960 --> 00:31:10,900 tratando de llamar a una función llamada conseguir int positivo. 761 00:31:10,900 --> 00:31:14,120 Pero el compilador no va darse cuenta de que conseguir int positivo 762 00:31:14,120 --> 00:31:16,500 existe hasta la línea 26. 763 00:31:16,500 --> 00:31:21,360 Y así, lo que hace el compilador es sólo errores tan pronto como se pone a la línea 17, 764 00:31:21,360 --> 00:31:23,700 diciendo declaración implícita de conseguir int positivo, que 765 00:31:23,700 --> 00:31:27,740 es sólo una forma elegante de decir, no lo sé sabe qué conseguir int positivo es todavía. 766 00:31:27,740 --> 00:31:31,240 >> Otros lenguajes como Java y Python y Ruby pueden mirar hacia adelante. 767 00:31:31,240 --> 00:31:32,240 C no lo hace. 768 00:31:32,240 --> 00:31:35,110 Y así el camino fijamos esta es una de dos maneras. 769 00:31:35,110 --> 00:31:40,160 Cualquiera de los dos, si el problema es que llegar int positivo no se ha visto antes, 770 00:31:40,160 --> 00:31:42,150 así, permítanme muevo a la cima. 771 00:31:42,150 --> 00:31:43,650 Eso sería solucionar este problema. 772 00:31:43,650 --> 00:31:46,790 Pero en general, es mejor técnica considerada 773 00:31:46,790 --> 00:31:50,220 para poner su función principal en el mismo superior para que un ser humano la lectura de su código 774 00:31:50,220 --> 00:31:52,710 sabe lo que hace el programa, debido principal no se entierra todo 775 00:31:52,710 --> 00:31:53,960 el camino en la parte inferior o en el medio. 776 00:31:53,960 --> 00:31:55,130 Es en la parte superior. 777 00:31:55,130 --> 00:31:56,410 Para que no se siente ideal. 778 00:31:56,410 --> 00:31:58,326 Y usted puede conseguir realmente en situaciones en las 779 00:31:58,326 --> 00:32:00,820 si las llamadas Una de las funciones otra, que llama a otro, 780 00:32:00,820 --> 00:32:04,630 usted puede conseguir en un problema donde no puede ir encima de la otra, lógicamente. 781 00:32:04,630 --> 00:32:05,920 Simplemente no es posible. 782 00:32:05,920 --> 00:32:09,290 >> Y así, la manera de trabajar evitar esto es simplemente tomar 783 00:32:09,290 --> 00:32:13,200 La firma de la función, por lo que speak-- la primera línea, donde es declared-- 784 00:32:13,200 --> 00:32:16,850 y acaba de copiar, pegar en el superior, pero no con braces-- rizado 785 00:32:16,850 --> 00:32:17,980 sólo con un punto y coma. 786 00:32:17,980 --> 00:32:20,840 Es como una pequeña pista de lo que está por venir. 787 00:32:20,840 --> 00:32:26,630 Y, de hecho, todo este tiempo en el que han visto cosas como io.h estándar 788 00:32:26,630 --> 00:32:33,040 y cs50.h, de manera similar, en esos puntos archivos h hay otros prototipos. 789 00:32:33,040 --> 00:32:35,250 Y veremos que en poco tiempo. 790 00:32:35,250 --> 00:32:39,340 >> Así que en resumen, cuando se tiene un programa en un archivo con múltiples funciones 791 00:32:39,340 --> 00:32:42,300 además de principal, casi siempre quieren declararlos 792 00:32:42,300 --> 00:32:45,360 simplemente por medio de su primera línea, seguido por un punto y coma, 793 00:32:45,360 --> 00:32:48,410 en la parte superior del archivo. 794 00:32:48,410 --> 00:32:50,460 Eso fue una gran cantidad de una sola vez. 795 00:32:50,460 --> 00:32:53,130 ¿Alguna pregunta? 796 00:32:53,130 --> 00:32:53,920 ¿Alguna pregunta? 797 00:32:53,920 --> 00:32:54,530 Correcto. 798 00:32:54,530 --> 00:32:59,760 >> Así que vamos a pasar a continuación, a algo así como la tos. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Qué apropiado. 801 00:33:00,570 --> 00:33:01,220 Correcto. 802 00:33:01,220 --> 00:33:02,260 Tos. 803 00:33:02,260 --> 00:33:05,080 Así que aquí es un c implementación de un programa 804 00:33:05,080 --> 00:33:07,560 que hicimos el otro día en Rasguño que muy simplemente 805 00:33:07,560 --> 00:33:08,691 dice la tos, tos, tos. 806 00:33:08,691 --> 00:33:09,190 Correcto. 807 00:33:09,190 --> 00:33:11,136 Y alguien dijo unas pocas Hace días que no hay 808 00:33:11,136 --> 00:33:12,760 una manera de limpiar el código ya. 809 00:33:12,760 --> 00:33:12,880 ¿Correcto? 810 00:33:12,880 --> 00:33:15,440 Tan pronto como usted está copiando y pegar probablemente mal diseño. 811 00:33:15,440 --> 00:33:18,725 Por lo menos una vez que lleguemos a cuatro o cinco o 20 tos, se siente una mala práctica. 812 00:33:18,725 --> 00:33:19,850 Acabamos de seguir copiar, pegar. 813 00:33:19,850 --> 00:33:22,213 ¿Cuál es la solución obvia a la limpieza de este programa para arriba? 814 00:33:22,213 --> 00:33:23,120 >> AUDIENCIA: Loop. 815 00:33:23,120 --> 00:33:23,350 >> ALTAVOZ 1: Sí. 816 00:33:23,350 --> 00:33:24,070 Así que utilice un bucle. 817 00:33:24,070 --> 00:33:27,697 Y podemos usar un bucle para, por un tiempo bucle, cualquier número de enfoques. 818 00:33:27,697 --> 00:33:29,780 Y de hecho, eso es lo que que hacemos en la versión uno aquí. 819 00:33:29,780 --> 00:33:32,250 En cambio me he reescrito en la versión uno de cough.c 820 00:33:32,250 --> 00:33:35,170 siendo la tos sólo dentro de un bucle para. 821 00:33:35,170 --> 00:33:38,240 Muy bien, pero hay una oportunidad ahora de tipo de inicio 822 00:33:38,240 --> 00:33:41,630 para diseñar este un poco más como la lección que nos enseñó hace un momento, 823 00:33:41,630 --> 00:33:46,190 que es esto-- suponer que quería para crear una función llamada tos, 824 00:33:46,190 --> 00:33:49,730 Consideremos por un momento lo que va a ser similar. 825 00:33:49,730 --> 00:33:51,900 Así que si quiero algo a toser, sólo necesito 826 00:33:51,900 --> 00:33:53,800 utilizar la impresión f dentro de la función. 827 00:33:53,800 --> 00:33:55,030 Y de hecho lo soy. 828 00:33:55,030 --> 00:33:56,990 Y de hecho, todo esto tiempo, en cualquier momento que estés 829 00:33:56,990 --> 00:33:59,000 algo que imprimir la pantalla, un programador 830 00:33:59,000 --> 00:34:00,610 exigiría que un efecto secundario. 831 00:34:00,610 --> 00:34:02,990 ¡No es entregándome a alguien de vuelta un valor. 832 00:34:02,990 --> 00:34:06,170 Me está tomando algún tipo de acción que podría ser visualmente evidente. 833 00:34:06,170 --> 00:34:10,672 Pero esta función tos, qué volver cualquier cosa basada en su primera línea? 834 00:34:10,672 --> 00:34:12,880 No, porque su tipo de retorno es nula, lo cual sólo significa 835 00:34:12,880 --> 00:34:14,250 no me ha de entregar nada a cambio. 836 00:34:14,250 --> 00:34:16,791 Podría estar haciendo algo visualmente, pero es que no me entrega 837 00:34:16,791 --> 00:34:18,639 copias de una hoja de papel como la semana pasada. 838 00:34:18,639 --> 00:34:21,310 >> ¿Necesita alguna entrada? 839 00:34:21,310 --> 00:34:21,810 No. 840 00:34:21,810 --> 00:34:23,134 Y lo que es nula aquí también. 841 00:34:23,134 --> 00:34:25,600 Así que esto también es una especie de sobre-ingeniería de este problema. 842 00:34:25,600 --> 00:34:26,099 ¿Correcto? 843 00:34:26,099 --> 00:34:28,820 He hecho el programa más complejos, más líneas de código, 844 00:34:28,820 --> 00:34:31,889 No he hecho ninguna más funcional, pero esto 845 00:34:31,889 --> 00:34:34,210 sería un trampolín, quizás, para una más amplia 846 00:34:34,210 --> 00:34:36,830 contexto con código más complicado. 847 00:34:36,830 --> 00:34:38,150 Pero ¿qué pasa con esto? 848 00:34:38,150 --> 00:34:42,050 ¿Qué he done-- simplemente echando un vistazo a esto sin mirar el comentario 849 00:34:42,050 --> 00:34:46,076 en la parte superior del file-- lo tienen Yo fundamentalmente hecho aquí con mi tos 850 00:34:46,076 --> 00:34:47,409 aplicación que es diferente? 851 00:34:47,409 --> 00:34:48,327 Sí, en la espalda? 852 00:34:48,327 --> 00:34:51,384 >> AUDIENCIA: Que sea lo que puede tiene un carácter apague. 853 00:34:51,384 --> 00:34:52,050 ALTAVOZ 1: Sí. 854 00:34:52,050 --> 00:34:53,270 Así que esto se siente un poco agradable. 855 00:34:53,270 --> 00:34:53,389 ¿Correcto? 856 00:34:53,389 --> 00:34:56,600 Es como la adición de una característica a su programa o de su función, en este caso. 857 00:34:56,600 --> 00:34:57,830 Todavía no devuelve nada. 858 00:34:57,830 --> 00:35:00,538 Podría tener un efecto secundario visual, porque está llamando impresión f. 859 00:35:00,538 --> 00:35:02,800 Pero ahora he parametrizada la función, que 860 00:35:02,800 --> 00:35:06,470 significa que he tomado especificados de entrada de tipo int y llamarlo n, 861 00:35:06,470 --> 00:35:08,510 pero podía llamarlo lo que quiera. 862 00:35:08,510 --> 00:35:11,550 De hecho, podría ser sólo veces que sean aún más explícito. 863 00:35:11,550 --> 00:35:13,310 Y entonces yo podría cambiar esto aquí. 864 00:35:13,310 --> 00:35:16,450 Pero el punto es que así es como yo crear una función que toma la entrada. 865 00:35:16,450 --> 00:35:19,530 Y si usted recuerda volteando quizá a través de Internet en un solo 866 00:35:19,530 --> 00:35:23,000 de los paseos virtuales, la cuarto y el ejemplo la tos final, 867 00:35:23,000 --> 00:35:27,150 te darás cuenta de que aquí me has generalizó mi código de tipo further-- de abstraída 868 00:35:27,150 --> 00:35:27,690 aún más. 869 00:35:27,690 --> 00:35:31,390 Al igual que la tos y el estornudo, ambos son sobre como decir algo o hacer 870 00:35:31,390 --> 00:35:32,330 algún tipo de sonido. 871 00:35:32,330 --> 00:35:34,725 Guardar sería el correspondiente bloque de Scratch. 872 00:35:34,725 --> 00:35:37,350 Y así lo hice en esta versión, que podemos simplemente echar un vistazo a, 873 00:35:37,350 --> 00:35:43,170 es tos es como decir, [TOS], tos, y mientras tanto, el estornudo es 874 00:35:43,170 --> 00:35:44,570 como decir, [ACHOO]. 875 00:35:44,570 --> 00:35:46,900 Y por lo que he generalicé la aplicación de aquellos 876 00:35:46,900 --> 00:35:48,970 por ahora la aplicación esta función genérica, 877 00:35:48,970 --> 00:35:51,490 decir, que es interesante para los propósitos de hoy 878 00:35:51,490 --> 00:35:54,300 sólo porque todavía no tiene un tipo de retorno. 879 00:35:54,300 --> 00:35:56,398 Pero, ¿cuántas entradas tiene? 880 00:35:56,398 --> 00:35:56,981 AUDIENCIA: Dos. 881 00:35:56,981 --> 00:35:57,430 ALTAVOZ 1: Dos. 882 00:35:57,430 --> 00:35:59,263 Y así, si quieres tomar en dos argumentos, 883 00:35:59,263 --> 00:36:00,710 simplemente separarlos con una coma. 884 00:36:00,710 --> 00:36:03,110 Y si quieres a continuación llamar a esa función, 885 00:36:03,110 --> 00:36:05,800 notar que acaba llame por ejemplo, cita, fin de la cita, 886 00:36:05,800 --> 00:36:09,090 para el primer argumento, común n, para el segundo argumento. 887 00:36:09,090 --> 00:36:12,130 Así que de nuevo, sólo tenemos ahora la bloques de construcción para que podamos realmente 888 00:36:12,130 --> 00:36:15,686 poner en práctica algunas de nuestras propias funciones. 889 00:36:15,686 --> 00:36:16,570 Correcto. 890 00:36:16,570 --> 00:36:19,690 Para cualquier duda sobre estas? 891 00:36:19,690 --> 00:36:22,400 >> Así que ahora vamos a pelar una capa de ser así. 892 00:36:22,400 --> 00:36:24,840 Y el objetivo, en última instancia, es un problema conjunto de la próxima semana 893 00:36:24,840 --> 00:36:27,710 va a estar en cryptogrophy-- el arte de la codificación de la información. 894 00:36:27,710 --> 00:36:30,640 Y específicamente, la información tendrá que cifrar o descifrar 895 00:36:30,640 --> 00:36:31,605 va a ser de texto. 896 00:36:31,605 --> 00:36:33,980 Y así, ese tipo de invitaciones la cuestión hoy como así, 897 00:36:33,980 --> 00:36:38,480 lo que está pasando debajo de la campana con el texto más allá de ASCII de semana cero, 898 00:36:38,480 --> 00:36:40,730 ¿Y cómo podemos realmente empezar a manipularlo? 899 00:36:40,730 --> 00:36:43,070 Así que aquí está el nombre de Zamyla. 900 00:36:43,070 --> 00:36:47,380 Y en texto, que podrían ser introducidos a igual que la función de cadena get. 901 00:36:47,380 --> 00:36:52,540 Y a partir de ahora, cuando vea una cadena como esto-- Z-A-H-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 empezar a pensar en ello como si cada de esos personajes es en una caja de su 903 00:36:56,550 --> 00:36:57,050 propio. 904 00:36:57,050 --> 00:36:59,460 Y de hecho, en una semana o así es tiempo, cada una de estas cajas 905 00:36:59,460 --> 00:37:04,280 va a representar muy específica un bloque de memory-- un bocado de memoria. 906 00:37:04,280 --> 00:37:07,050 Así que cada una de estas cartas, en última instancia, representará 8 bits. 907 00:37:07,050 --> 00:37:10,560 Y en realidad a ver lo que está pasando de debajo de la campana en mi ordenador. 908 00:37:10,560 --> 00:37:13,440 >> Sin embargo, para no basta sólo para mirar Zamyla 909 00:37:13,440 --> 00:37:17,520 a través de esta lente, por el que cada uno de estas cartas es en su propia caja. 910 00:37:17,520 --> 00:37:22,697 Y muy bien lo suficiente en C podemos acceder a cada una de estas cajas directamente. 911 00:37:22,697 --> 00:37:25,530 Así que si usted desea conseguir el primer letra de su nombre, súper fácil en C. 912 00:37:25,530 --> 00:37:28,410 Si usted desea conseguir el último carta, super fácil, así 913 00:37:28,410 --> 00:37:30,240 con un trozo de nueva sintaxis. 914 00:37:30,240 --> 00:37:36,250 >> Así que voy a seguir adelante en CS50 IDE y abrir la cadena de cero punto C. 915 00:37:36,250 --> 00:37:40,270 Y en este ejemplo aquí, hay un par de cosas nuevas que hacer. 916 00:37:40,270 --> 00:37:44,360 Así que por primera vez en la línea 19, que hemos visto esta cadena get antes--. 917 00:37:44,360 --> 00:37:49,840 Así que como una prueba de cordura rápida, si alguien puede ofrecer verbalmente 918 00:37:49,840 --> 00:37:52,662 La explicación de un laico de lo que está pasando en la línea 19. 919 00:37:52,662 --> 00:37:55,370 Como acaba de traducir esto en Inglés que no compañero de habitación en CS50 920 00:37:55,370 --> 00:37:56,416 podría entender. 921 00:37:56,416 --> 00:37:56,916 Sí. 922 00:37:56,916 --> 00:37:59,749 >> AUDIENCIA: Tener la entrada de un usuario cuerda y guárdelo en un s variable. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 ALTAVOZ 1: Good. 925 00:38:02,600 --> 00:38:05,579 Tener la entrada del usuario una cadena y almacenarlo en una variable s. 926 00:38:05,579 --> 00:38:06,120 Eso es genial. 927 00:38:06,120 --> 00:38:08,090 Así que en la mano derecha lado, llamamos cadena get. 928 00:38:08,090 --> 00:38:10,340 Que devuelve un valor que no fueron asignados 929 00:38:10,340 --> 00:38:14,230 del lado derecho al izquierdo a mano lado en una variable llamada s que es 930 00:38:14,230 --> 00:38:15,950 diseñado para almacenar una cadena. 931 00:38:15,950 --> 00:38:16,800 Exactamente. 932 00:38:16,800 --> 00:38:20,000 >> Así que ahora la línea 22, por el comentario en la línea 21, 933 00:38:20,000 --> 00:38:22,780 obviamente imprime esa cadena un carácter por línea. 934 00:38:22,780 --> 00:38:23,740 ¿Pero como? 935 00:38:23,740 --> 00:38:27,040 Así que en primer lugar, inicializamos I 0. 936 00:38:27,040 --> 00:38:31,061 Y entonces, ¿cómo se llega a al final del nombre de Zamyla? 937 00:38:31,061 --> 00:38:32,810 Bueno, al final de El nombre de Zamyla, pude 938 00:38:32,810 --> 00:38:38,151 escribir manualmente en el último carácter de su nombre de alguna manera, o el número de la misma. 939 00:38:38,151 --> 00:38:38,650 ¿Correcto? 940 00:38:38,650 --> 00:38:43,500 Si nos remontamos aquí-- Z-A-M-L-- Y-L-A-- para que yo pudiera escribir. 941 00:38:43,500 --> 00:38:47,340 ¿Qué es el índice de La última carta de Zamyla? 942 00:38:47,340 --> 00:38:52,517 Si esta es 0-- hablando como un programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Yo heard-- tan de hecho, la última letra en el nombre de Zamyla es el sexto, 944 00:38:56,570 --> 00:38:58,890 pero si contamos desde 0, que va a ser el número 5. 945 00:38:58,890 --> 00:39:01,320 Así que tenlo en cuenta aquí. 946 00:39:01,320 --> 00:39:04,929 >> Resulta que hay una función en C llama strlen y vuelta en el día 947 00:39:04,929 --> 00:39:06,720 y hasta la fecha sigue siendo, una gran cantidad de programadores 948 00:39:06,720 --> 00:39:09,524 elegir sincronizar nombres para su funciones que suenan como las palabras 949 00:39:09,524 --> 00:39:10,440 que están tratando de decir. 950 00:39:10,440 --> 00:39:12,590 Así strlen es longitud de la cadena. 951 00:39:12,590 --> 00:39:18,168 Y así lo haría longitud de la cadena de S volver cuando Zamyla es la entrada? 952 00:39:18,168 --> 00:39:19,569 >> AUDIENCIA: Cinco. 953 00:39:19,569 --> 00:39:22,090 >> ALTAVOZ 1: Z-A-H-Y-L. Seis. 954 00:39:22,090 --> 00:39:22,590 ¿Correcto? 955 00:39:22,590 --> 00:39:23,940 ¿Cuál es la longitud del nombre de Zamyla? 956 00:39:23,940 --> 00:39:24,440 ¿Correcto? 957 00:39:24,440 --> 00:39:26,240 Y en realidad, seis letras. 958 00:39:26,240 --> 00:39:26,740 ¿Correcto? 959 00:39:26,740 --> 00:39:28,940 Y así, ¿qué significa eso para nuestro bucle? 960 00:39:28,940 --> 00:39:32,130 Vamos a ir de 0 hasta seis, que 961 00:39:32,130 --> 00:39:33,650 nos va a dar cinco iteraciones. 962 00:39:33,650 --> 00:39:34,890 ¿Qué hacemos en cada iteración? 963 00:39:34,890 --> 00:39:36,870 Bueno, ciento C, alguien adivinado el otro día, 964 00:39:36,870 --> 00:39:38,710 significa un marcador de posición para qué? 965 00:39:38,710 --> 00:39:39,335 >> AUDIENCIA: Char. 966 00:39:39,335 --> 00:39:40,293 ALTAVOZ 1: Sólo un char. 967 00:39:40,293 --> 00:39:42,877 Así que un solo character-- no múltiples personajes como una cadena. 968 00:39:42,877 --> 00:39:45,251 Y entonces aquí está la nueva línea que tenemos imprimir. 969 00:39:45,251 --> 00:39:46,580 Y entonces aquí está la nueva sintaxis. 970 00:39:46,580 --> 00:39:51,130 Si desea imprimir el i-th carácter de la cadena S, por así decirlo, 971 00:39:51,130 --> 00:39:54,060 usted puede simplemente decir lo nombre de la cadena S, 972 00:39:54,060 --> 00:39:58,230 y luego abrir corchete, y luego cerró corchete, con una i 973 00:39:58,230 --> 00:39:58,780 la mitad. 974 00:39:58,780 --> 00:40:01,430 Y es un poco agradable en ese que tipo de parece a un cuadrado 975 00:40:01,430 --> 00:40:06,210 al igual que las plazas en las que Zamyla de existen personajes en esa foto allí. 976 00:40:06,210 --> 00:40:09,970 >> Así que si realmente ejecutar este Ahora, vamos a ver qué pasa. 977 00:40:09,970 --> 00:40:15,190 Haga cadena 0 punto slash string 0, y entonces estoy 978 00:40:15,190 --> 00:40:16,720 va a escribir el nombre de Zamyla. 979 00:40:16,720 --> 00:40:19,428 No hay pronta, porque yo no lo hice utilizar la impresión f, pero eso está bien. 980 00:40:19,428 --> 00:40:20,660 Sólo sé lo que hacer. 981 00:40:20,660 --> 00:40:23,240 Y, en efecto, imprime El nombre de Zamyla, uno por línea. 982 00:40:23,240 --> 00:40:25,760 >> Ahora vamos a ser un poco imprudente. 983 00:40:25,760 --> 00:40:28,461 Supongamos que yo no sabía acerca strlen y pensé, 984 00:40:28,461 --> 00:40:31,460 bien, nadie va a tener un nombre más grande que como 50 caracteres. 985 00:40:31,460 --> 00:40:36,360 Vamos a seguir adelante y volver a compilar este y vuelva a ejecutar y, a continuación, escriba en Zamyla 986 00:40:36,360 --> 00:40:37,160 de nuevo. 987 00:40:37,160 --> 00:40:40,850 Lógicamente, lo que es el programa va a tratar de imprimir? 988 00:40:40,850 --> 00:40:49,545 Z-A-H-Y-L-A continuación, al igual que 45 bytes desconocidos de memoria. 989 00:40:49,545 --> 00:40:51,670 Y de hecho, volveremos a esta idea de la memoria. 990 00:40:51,670 --> 00:40:54,180 Pero así, lógicamente, si El nombre de Zamyla es este largo, 991 00:40:54,180 --> 00:40:56,450 como por la imagen aquí, lo que estamos diciendo 992 00:40:56,450 --> 00:40:59,810 se mantendrá la impresión, tenga la impresión, mantenga impresión, tenga la impresión, tenga la impresión, 993 00:40:59,810 --> 00:41:03,781 todo el camino hasta el carácter 50a, que quién sabe lo que va a suceder. 994 00:41:03,781 --> 00:41:05,030 Así que vamos realmente a echar un vistazo. 995 00:41:05,030 --> 00:41:06,720 Vamos escriba en Zamyla. 996 00:41:06,720 --> 00:41:07,250 Interesante. 997 00:41:07,250 --> 00:41:08,190 Tuvimos suerte. 998 00:41:08,190 --> 00:41:09,700 Sólo un montón de espacio en blanco. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 Hay un carácter funky. 1001 00:41:11,120 --> 00:41:14,577 Se ve un poco como una pregunta extraña marcar allí, pero no es el nombre de Zamyla. 1002 00:41:14,577 --> 00:41:15,660 Vamos a llegar muy imprudente. 1003 00:41:15,660 --> 00:41:20,000 ¿Qué tal si imprimimos 500 bloques a lo desconocido? 1004 00:41:20,000 --> 00:41:24,380 Vamos a seguir adelante y hacer esto así y luego volver a ejecutar. 1005 00:41:24,380 --> 00:41:27,980 Y la pantalla completa, porque vamos tenemos que ver más espacio. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Tienes suerte de nuevo. 1008 00:41:31,830 --> 00:41:33,070 >> ¿Nos atrevemos a llegar más temerario? 1009 00:41:33,070 --> 00:41:36,070 Vamos a conseguir más temerario. 1010 00:41:36,070 --> 00:41:39,350 50.000 caracteres. 1011 00:41:39,350 --> 00:41:41,390 Esto no es, ciertamente, una buena idea. 1012 00:41:41,390 --> 00:41:41,890 Correcto. 1013 00:41:41,890 --> 00:41:42,990 Haga cadena 0. 1014 00:41:42,990 --> 00:41:44,720 Esta será nuestra última demostración. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 OK. 1019 00:41:50,680 --> 00:41:54,407 Así que mi memoria es realmente vacío en este momento, que es en realidad un poco conveniente. 1020 00:41:54,407 --> 00:41:55,990 Lo que estoy tratando de llegar a-- bien. 1021 00:41:55,990 --> 00:41:57,614 Y ahora estoy solo va a conseguir imprudente. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 Make-- de pantalla completa de dejarlo. 1024 00:42:03,860 --> 00:42:04,990 Intro. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Allá vamos. 1028 00:42:13,390 --> 00:42:15,610 No tengo ni idea de lo que es, pero suena mal. 1029 00:42:15,610 --> 00:42:16,110 Correcto. 1030 00:42:16,110 --> 00:42:20,322 Y, de hecho, muy pronto, si usted está entre los pocos afortunados en horario de oficina 1031 00:42:20,322 --> 00:42:22,780 y en el problema de establecer uno, podría muy bien encontrarse con esto. 1032 00:42:22,780 --> 00:42:25,490 Fallo de segmentación hace realidad tienen un significado bien definido. 1033 00:42:25,490 --> 00:42:28,450 Esto significa algún tipo de error relativa a un segmento de la memoria. 1034 00:42:28,450 --> 00:42:30,490 Y en términos simples, que significa que tocamos 1035 00:42:30,490 --> 00:42:34,780 memory-- utilizamos memoria RAM en mi equipo para que yo no he tenido acceso. 1036 00:42:34,780 --> 00:42:37,050 Y eso es lo que a la vez potente y también peligroso 1037 00:42:37,050 --> 00:42:39,910 sobre C es que en realidad tener acceso sin restricciones 1038 00:42:39,910 --> 00:42:45,910 a la totalidad de la memoria del programa o bytes o RAM, más específicamente. 1039 00:42:45,910 --> 00:42:49,510 >> Así que, aunque el nombre de Zamyla es sólo seis caracteres de longitud, 1040 00:42:49,510 --> 00:42:51,450 Todavía puedo ir a ninguna parte en la memoria que quiero. 1041 00:42:51,450 --> 00:42:53,491 Y como un aparte, si tienes Has leído algún artículo 1042 00:42:53,491 --> 00:42:55,610 lo largo de los años sobre algunos servidor o algún programa 1043 00:42:55,610 --> 00:42:58,654 conseguir agrietados o hackeado eso es aprovechado algo 1044 00:42:58,654 --> 00:43:00,820 llamado un desbordamiento de búfer explotar que vamos a realidad 1045 00:43:00,820 --> 00:43:04,970 hablar en pocas semanas, eso es en general, en referencia a alguna forma de engañar 1046 00:43:04,970 --> 00:43:09,090 un ordenador a ir bien más allá de los límites de la memoria 1047 00:43:09,090 --> 00:43:11,410 que debería tener, y encontrar algo jugosa 1048 00:43:11,410 --> 00:43:13,530 en que un memory-- contraseña, tal vez, de una manera 1049 00:43:13,530 --> 00:43:16,990 de eludir algún número de serie cheque, o simplemente generalmente capaces 1050 00:43:16,990 --> 00:43:20,360 para engañar a la computadora está ejecutando código que no se pretendía. 1051 00:43:20,360 --> 00:43:22,360 Pero volvamos a la realidad por un momento 1052 00:43:22,360 --> 00:43:24,550 donde estaba este programa implementado con strlen, 1053 00:43:24,550 --> 00:43:26,110 e introducir una cosa aquí. 1054 00:43:26,110 --> 00:43:30,030 ¿Qué hay de nuevo entre estas tres líneas superiores? 1055 00:43:30,030 --> 00:43:30,910 >> Así punto cadena h. 1056 00:43:30,910 --> 00:43:35,490 Resulta que hay esta biblioteca llamada Cadena punto H, o la Biblioteca de cuerdas, 1057 00:43:35,490 --> 00:43:38,490 cuyo archivo de cabecera, por así decirlo, es punto cadena h que me da 1058 00:43:38,490 --> 00:43:40,860 el acceso a esta función strlen. 1059 00:43:40,860 --> 00:43:43,841 Si omito que el compilador es va a gritar a mí de alguna forma. 1060 00:43:43,841 --> 00:43:44,590 ¿Pero sabes que? 1061 00:43:44,590 --> 00:43:46,090 Ahora vamos a llegar muy matizada. 1062 00:43:46,090 --> 00:43:50,820 En la línea 22, hay algo tipo de inefficient-- mal diseñado, 1063 00:43:50,820 --> 00:43:53,990 arguably-- sobre esta línea de código. 1064 00:43:53,990 --> 00:43:56,280 Piense en cómo se implementan para-loop 1065 00:43:56,280 --> 00:44:00,140 y qué pasos suceda de nuevo y una y otra vez-- la inicialización, 1066 00:44:00,140 --> 00:44:04,110 la condición, el código que es ejecutado, entonces el incremento 1067 00:44:04,110 --> 00:44:07,880 o el cambio, entonces la condición, luego el código, entonces el cambio, entonces 1068 00:44:07,880 --> 00:44:11,280 la condición, entonces el código, entonces el cambio, y así sucesivamente. 1069 00:44:11,280 --> 00:44:15,320 Entonces, ¿qué podría ser un poco preocupante o mal hecho aquí? 1070 00:44:15,320 --> 00:44:16,387 Sí, en azul. 1071 00:44:16,387 --> 00:44:18,220 AUDIENCIA: strlen es llamado muchas, muchas veces. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 ALTAVOZ 1: Sí. 1074 00:44:21,320 --> 00:44:23,700 Así strlen se llama muchas veces, pero lo que es 1075 00:44:23,700 --> 00:44:27,113 la longitud del nombre de la Zamyla primera vez que el bucle se ejecuta? 1076 00:44:27,113 --> 00:44:27,860 >> AUDIENCIA: Seis. 1077 00:44:27,860 --> 00:44:28,110 >> ALTAVOZ 1: Seis. 1078 00:44:28,110 --> 00:44:30,976 Bueno, ¿cuál es la longitud de su nombre la segunda vez que se ejecuta el código? 1079 00:44:30,976 --> 00:44:31,432 >> AUDIENCIA: Seis. 1080 00:44:31,432 --> 00:44:31,890 >> ALTAVOZ 1: De acuerdo. 1081 00:44:31,890 --> 00:44:32,720 Todavía es seis. 1082 00:44:32,720 --> 00:44:33,220 ¿Correcto? 1083 00:44:33,220 --> 00:44:35,260 El nombre de Zarla no tiene cambiado, incluso si estoy buscando 1084 00:44:35,260 --> 00:44:38,240 a sólo una parte de las letras de su nombre. 1085 00:44:38,240 --> 00:44:41,349 Y así, el hecho de que soy efectivamente hacer esta pregunta, ¿cuál es 1086 00:44:41,349 --> 00:44:44,640 la longitud de Zamyla, ¿cuál es la longitud de Zamyla, ¿cuál es la longitud de Zamyla, 1087 00:44:44,640 --> 00:44:47,990 seis veces por separado, o de siete, incluso, es una estupidez, 1088 00:44:47,990 --> 00:44:50,390 porque eso es inmutable esa respuesta. 1089 00:44:50,390 --> 00:44:53,550 Y así lo que pude en realidad hacer es esto-- en cadena de un 1090 00:44:53,550 --> 00:44:55,680 Tengo un poco mejor versión aquí. 1091 00:44:55,680 --> 00:45:00,110 Allí-- cadena whoops-- dos que tengo una versión ligeramente mejor en el que 1092 00:45:00,110 --> 00:45:05,010 Hago esto-- en lugar de sólo inicializar i a 0, también con una coma 1093 00:45:05,010 --> 00:45:07,990 declarar una segunda variable llamada n-- Yo no tengo que decir int nuevo. 1094 00:45:07,990 --> 00:45:09,220 Que no debería, de hecho. 1095 00:45:09,220 --> 00:45:10,380 Pero yo os digo n. 1096 00:45:10,380 --> 00:45:13,610 Y entonces me inicializar n de el strlen de n, por lo que ahora 1097 00:45:13,610 --> 00:45:17,110 ¿Cuántas veces strlen se ejecutan en total? 1098 00:45:17,110 --> 00:45:17,610 Solo una vez. 1099 00:45:17,610 --> 00:45:20,257 Y así que esto es lo que queremos decir antes sobre un mejor diseño. 1100 00:45:20,257 --> 00:45:23,090 En realidad una vez que su código es correcto, yendo y pensamiento a través de, 1101 00:45:23,090 --> 00:45:26,820 estoy usando tan poco memoria o tan pocos segundos 1102 00:45:26,820 --> 00:45:30,409 o milisegundos de tiempo de computadora como posible implementar algún problema? 1103 00:45:30,409 --> 00:45:32,200 Y yo voy a desplazarse y acaba de mencionar 1104 00:45:32,200 --> 00:45:34,283 que hay esta mención de null en esta versión, 1105 00:45:34,283 --> 00:45:36,390 pero vamos a volver a que en poco tiempo. 1106 00:45:36,390 --> 00:45:41,010 Porque por ahora, vamos a echar un vistazo en donde esto nos va a llevar. 1107 00:45:41,010 --> 00:45:44,110 Así que uno, resulta que ahora que tenemos la capacidad 1108 00:45:44,110 --> 00:45:46,860 mirar a caracteres individuales, podemos aprovechar algo 1109 00:45:46,860 --> 00:45:50,807 desde la semana 0 que era muy arcana y especie de interesante en el momento. 1110 00:45:50,807 --> 00:45:53,390 Pero ahora, y sobre todo cuando nos llegar a la criptografía en una semana, 1111 00:45:53,390 --> 00:45:54,820 que va a ser muy poderosa. 1112 00:45:54,820 --> 00:45:57,450 Resulta que con un poco de ints y carrozas de datos Tipos-- 1113 00:45:57,450 --> 00:46:00,300 y caracteres y cadenas y otra cosas-- algunos de ellos 1114 00:46:00,300 --> 00:46:02,800 se puede muy fácilmente convertida a otro. 1115 00:46:02,800 --> 00:46:05,840 >> Por ejemplo, cuando hablamos acerca ASCII algún tiempo ago-- aquí está 1116 00:46:05,840 --> 00:46:07,796 Las letras mayúsculas A a través de M, punto, punto, 1117 00:46:07,796 --> 00:46:12,530 dot-- hemos dicho que hay un mapeo entre estas letras y números. 1118 00:46:12,530 --> 00:46:14,970 Y de hecho, es cierto para las letras minúsculas también. 1119 00:46:14,970 --> 00:46:17,470 Minúsculas a es 97, el capital es un 65. 1120 00:46:17,470 --> 00:46:20,860 Y hay un número en ASCII, que es justo este mapeo 1121 00:46:20,860 --> 00:46:23,240 sistema para todas esas otras letras. 1122 00:46:23,240 --> 00:46:25,030 ¿Entonces que significa eso? 1123 00:46:25,030 --> 00:46:28,390 Bueno, voy a seguir adelante y abierto algo realmente rápido llamado 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, la mayoría de los cuales son los comentarios. 1125 00:46:31,240 --> 00:46:33,860 Y de nuevo en línea siempre se puede vista a través de los comentarios. 1126 00:46:33,860 --> 00:46:36,180 >> Y miren lo que esto va a hacer. 1127 00:46:36,180 --> 00:46:38,410 Así que tiene una función principal. 1128 00:46:38,410 --> 00:46:41,490 He modificable los números sólo para ahora, porque sé lo que estoy haciendo. 1129 00:46:41,490 --> 00:46:42,950 Yo sé lo que quiero ver aquí. 1130 00:46:42,950 --> 00:46:45,220 Y yo he inicializado a 65. 1131 00:46:45,220 --> 00:46:48,490 Y estoy contando a través de 26 cartas en total. 1132 00:46:48,490 --> 00:46:52,990 ¿Y qué voy a imprimir una línea a la vez 1133 00:46:52,990 --> 00:46:54,930 si se puede interpretar esto pone de relieve la línea? 1134 00:46:54,930 --> 00:46:55,970 Lo que se impresa? 1135 00:46:55,970 --> 00:46:56,797 Sí. 1136 00:46:56,797 --> 00:46:57,264 >> AUDIENCIA: ¿Vas para imprimir la carta que 1137 00:46:57,264 --> 00:46:59,805 corresponde al mapa de la valor carta y valor entero? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 ALTAVOZ 1: Exactamente. 1140 00:47:01,990 --> 00:47:04,740 Voy a imprimir la carta correspondiente al valor de número entero, 1141 00:47:04,740 --> 00:47:06,131 y viceversa, de la siguiente manera. 1142 00:47:06,131 --> 00:47:08,880 Bueno, esto, alguien dijo antes, es sólo un marcador de posición para un char. 1143 00:47:08,880 --> 00:47:09,490 Es todavía. 1144 00:47:09,490 --> 00:47:12,280 Esto, por supuesto, es un marcador de posición para un no int-- una nueva línea. 1145 00:47:12,280 --> 00:47:18,140 Y ahora note, mi primer valor que Estoy conectando para ese marcador de posición 1146 00:47:18,140 --> 00:47:22,320 no es sólo I. Estoy diciendo, paréntesis, char I, 1147 00:47:22,320 --> 00:47:26,700 que el residuo carbonoso paréntesis es diciéndole al compilador, el tratamiento que 1148 00:47:26,700 --> 00:47:28,490 no como lo que es, que es un número. 1149 00:47:28,490 --> 00:47:30,490 Tratarlo como un personaje real. 1150 00:47:30,490 --> 00:47:34,490 Considerando que el segundo valor que estoy enchufando en-- yo-- debería ser sólo un número. 1151 00:47:34,490 --> 00:47:38,140 >> Así que si puedo compilar este program-- así que esto es hacer ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 ASCII slash dot 0-- Acabo de llegar esta pequeña práctica tabla que 1153 00:47:41,720 --> 00:47:44,950 me muestra todo lo posible asignaciones sin tener que pensarlo 1154 00:47:44,950 --> 00:47:46,450 a través o averiguarlo por mi cuenta. 1155 00:47:46,450 --> 00:47:48,783 Y también estoy imprimiendo, notar las letras minúsculas, 1156 00:47:48,783 --> 00:47:51,410 porque unas pocas líneas más adelante, me también imprimir este mapeo 1157 00:47:51,410 --> 00:47:53,737 también, que es sólo para decir que una vez que entienda 1158 00:47:53,737 --> 00:47:55,570 lo que está pasando debajo el capó, ¿verdad 1159 00:47:55,570 --> 00:47:57,111 convertir automáticamente un lado a otro. 1160 00:47:57,111 --> 00:48:00,160 Y de hecho, si alguno de ustedes nunca hizo esto en la escuela primaria 1161 00:48:00,160 --> 00:48:03,490 o escuchado acerca de alguien teniendo míticamente una nota 1162 00:48:03,490 --> 00:48:05,620 y que pasa a su o su amiga en la clase, 1163 00:48:05,620 --> 00:48:08,300 pero la revueltos cartas de como A se convierte en B, 1164 00:48:08,300 --> 00:48:11,240 y B se convierte en C, o algo más complicado que eso, bueno, 1165 00:48:11,240 --> 00:48:13,410 ¿cómo ir sobre la implementación que cuando era niño? 1166 00:48:13,410 --> 00:48:16,340 Bueno, sólo un poco sabe A se convierte en B, B se convierte en C, 1167 00:48:16,340 --> 00:48:19,700 pero matemáticamente, lo que estaba haciendo ese chico? 1168 00:48:19,700 --> 00:48:22,050 ¿Qué estaba agregando a cada letra? 1169 00:48:22,050 --> 00:48:23,340 Efectivamente, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Así que cuando usted cambia de A a B, eso es algo así como el cambio de 65 a 66, 1171 00:48:27,740 --> 00:48:29,590 que matemáticamente significa simplemente añada 1. 1172 00:48:29,590 --> 00:48:33,300 Y por lo que si usted fuera a poner en práctica ese pequeño técnica engañosa 1173 00:48:33,300 --> 00:48:36,380 para su profesor en código, podría hacer exactamente eso solo 1174 00:48:36,380 --> 00:48:38,552 mediante la adición de una sola letra juntos. 1175 00:48:38,552 --> 00:48:40,260 Así que después de poco tiempo, estamos vamos a ver cómo nos 1176 00:48:40,260 --> 00:48:43,300 puede tomar ventaja de eso para realmente lucha genuina y unscramble 1177 00:48:43,300 --> 00:48:43,991 información. 1178 00:48:43,991 --> 00:48:47,240 Mientras tanto, sabemos que hemos empezado introducir un par de otras bibliotecas 1179 00:48:47,240 --> 00:48:48,990 aquí-- la cadena uno hoy. 1180 00:48:48,990 --> 00:48:51,180 Y un sitio muy útil esperamos que pueda encontrar 1181 00:48:51,180 --> 00:48:55,010 se llama reference.cs50.net, que el profesorado han reunido, 1182 00:48:55,010 --> 00:48:57,510 de modo que si usted quiere ver cómo funciona strlen, 1183 00:48:57,510 --> 00:48:59,300 usted puede comenzar a escribir El nombre de la función, 1184 00:48:59,300 --> 00:49:02,890 haga clic strlen allí, y luego una explicación menos cómodo 1185 00:49:02,890 --> 00:49:03,700 va a aparecer. 1186 00:49:03,700 --> 00:49:06,880 O si desea que el oficial Explicación basada en Linux, 1187 00:49:06,880 --> 00:49:08,945 puede hacer clic más cómoda en la parte superior derecha, y 1188 00:49:08,945 --> 00:49:12,070 presentará la misma información, pero en términos más complejos. 1189 00:49:12,070 --> 00:49:15,070 Eso es un recurso útil para realmente sabe lo que hace todo. 1190 00:49:15,070 --> 00:49:17,320 >> La próxima vez que vamos a echar un vistazo a Ovaltine 1191 00:49:17,320 --> 00:49:20,070 y más, y presentarnos al mundo de la criptografía. 1192 00:49:20,070 --> 00:49:21,930 Antes de eso, ya veremos más tarde esta semana. 1193 00:49:21,930 --> 00:49:23,390 Y ahora, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Nos vemos el miércoles. 1195 00:49:26,730 --> 00:49:30,216 >> [REPRODUCCIÓN DE MÚSICA] 1196 00:49:30,216 --> 00:49:33,702 >> [REPRODUCCIÓN DE MÚSICA] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> ALTAVOZ 1: Lo que el [SEÑAL] estás haciendo? 1199 00:49:42,200 --> 00:49:45,720 >> ALTAVOZ 1: Estoy comiendo mi postre? 1200 00:49:45,720 --> 00:49:47,160 ¿Cómo se come eso? 1201 00:49:47,160 --> 00:49:47,860 Con las manos? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [REPRODUCCIÓN DE MÚSICA] 1204 00:49:57,940 --> 00:50:03,453