1 00:00:00,000 --> 00:00:05,115 2 00:00:05,115 --> 00:00:07,230 >> JASON HIRSCHHORN: Bienvenido a la semana cuatro, cada uno. 3 00:00:07,230 --> 00:00:09,910 Tenemos una semana de mucho trabajo por delante. 4 00:00:09,910 --> 00:00:14,030 El lunes de esta semana y el miércoles la semana pasada, que ha sido introducido en 5 00:00:14,030 --> 00:00:17,920 punteros, y así que espero que tenga soplado su mente, pero esperemos que no 6 00:00:17,920 --> 00:00:18,870 te hizo demasiado confundido. 7 00:00:18,870 --> 00:00:23,140 Si es así, vamos a ir más que en sección de hoy, así como vamos 8 00:00:23,140 --> 00:00:24,510 hacer punteros. 9 00:00:24,510 --> 00:00:28,090 Vamos a ir a la pila, lo que lo que hemos hablado en la conferencia 10 00:00:28,090 --> 00:00:32,150 ya, y vamos a hacer alusión a lo que vendrá el miércoles y más allá 11 00:00:32,150 --> 00:00:33,780 en términos de gestión de la memoria. 12 00:00:33,780 --> 00:00:38,430 Y, por último, vamos a hablar un poco sobre la Lengua Portable Stanford, 13 00:00:38,430 --> 00:00:41,920 que es la biblioteca de ustedes son utilizando esta semana para poner en práctica el 14 00:00:41,920 --> 00:00:43,900 establece problema. 15 00:00:43,900 --> 00:00:46,020 >> Como he mostrado toda la semana pasada - 16 00:00:46,020 --> 00:00:48,750 Quería poner esta diapositiva de nuevo, porque se trata de una lista de la 17 00:00:48,750 --> 00:00:51,680 recursos que están disponibles a usted CS50. 18 00:00:51,680 --> 00:00:54,670 Esto es lo que le damos fuera de la caja, y estos son increíblemente 19 00:00:54,670 --> 00:00:57,160 importante para lo que el diapositiva siguiente mostrará. 20 00:00:57,160 --> 00:01:00,110 Pero antes de llegar a la siguiente diapositiva, Quiero entrar en esto de nuevo. 21 00:01:00,110 --> 00:01:03,410 >> Para cada conferencia, hay notas que se toman. 22 00:01:03,410 --> 00:01:06,850 Es un resumen de la conferencia, pero también tiene fragmentos de código y útil 23 00:01:06,850 --> 00:01:07,510 consejos y trucos. 24 00:01:07,510 --> 00:01:11,140 Así que si usted desea revisar la conferencia - espero que no te perdiste la conferencia, pero 25 00:01:11,140 --> 00:01:13,760 si lo has hecho, deberías rewatch - pero cuando se quiere revisar conferencia, 26 00:01:13,760 --> 00:01:15,530 definitivamente echa un vistazo a los apuntes de clase. 27 00:01:15,530 --> 00:01:18,770 También hay código fuente en línea de cada conferencia. 28 00:01:18,770 --> 00:01:23,680 >> cs50.net/shorts son cortos, Entre 6 y 12 videos de un minuto. 29 00:01:23,680 --> 00:01:25,470 Ustedes han visto a muchos de ellos. 30 00:01:25,470 --> 00:01:28,820 También hay videos no asignamos a usted, pero cubren temas que son 31 00:01:28,820 --> 00:01:30,310 cubierto de conferencia en este curso. 32 00:01:30,310 --> 00:01:33,550 Así que si usted desea actualizar en los temas, se echa un vistazo a estos pantalones cortos. 33 00:01:33,550 --> 00:01:37,830 >> study.cs50.net tiene cebadores sobre un montón de temas. 34 00:01:37,830 --> 00:01:38,880 Tiene videos. 35 00:01:38,880 --> 00:01:39,930 Tiene problemas de práctica. 36 00:01:39,930 --> 00:01:41,880 Es un recurso fantástico. 37 00:01:41,880 --> 00:01:46,380 Ven alguna pregunta, pero también interrogar a tiempo. 38 00:01:46,380 --> 00:01:47,390 >> Un par de más recursos. 39 00:01:47,390 --> 00:01:50,160 Existe el comando man en el terminal que le da una cierta 40 00:01:50,160 --> 00:01:52,590 información sobre una determinada función o comando. 41 00:01:52,590 --> 00:01:55,320 Hay Google, mi recurso favorito - uno de mis recursos favoritos. 42 00:01:55,320 --> 00:01:58,610 Mi recurso favorito es el último, que vamos a llegar a en un segundo. 43 00:01:58,610 --> 00:02:00,520 Hay cs50.net/discuss. 44 00:02:00,520 --> 00:02:01,930 Ese es nuestro foro de clases. 45 00:02:01,930 --> 00:02:05,080 Hay horas de oficina de lunes a Los jueves, de 8:00 a 11:00. 46 00:02:05,080 --> 00:02:08,669 También hay horas de oficina en línea para los estudiantes de extensión. 47 00:02:08,669 --> 00:02:12,010 >> Y, por último, si necesitas algo, tiene preguntas, comentarios o 48 00:02:12,010 --> 00:02:14,240 preocupaciones, usted tiene mi información de contacto. 49 00:02:14,240 --> 00:02:16,900 Póngase en contacto conmigo, por favor. 50 00:02:16,900 --> 00:02:20,970 >> Así que como he insinuado, el próximo miércoles, un semanas a partir de mañana, es su primera 51 00:02:20,970 --> 00:02:25,180 concurso, concurso de cero, ya que en la computadora ciencia empezamos a contar desde cero. 52 00:02:25,180 --> 00:02:28,620 Más información será proporcionada en dar una conferencia de mañana, y una mano que se 53 00:02:28,620 --> 00:02:33,510 ser publicado finalmente en línea, con más detalles específicos, en particular, la 54 00:02:33,510 --> 00:02:34,860 ubicación de prueba cero. 55 00:02:34,860 --> 00:02:37,390 Pero va a tener lugar el próximo miércoles en lugar de la conferencia. 56 00:02:37,390 --> 00:02:40,670 No hay conferencia el próximo lunes porque es un día de fiesta. 57 00:02:40,670 --> 00:02:45,010 >> La prueba incluirá todo el material desde la semana cero y la semana cinco, 58 00:02:45,010 --> 00:02:47,420 por lo que a través de esta semana, a través de dar una conferencia mañana. 59 00:02:47,420 --> 00:02:49,710 Material incluye las conferencias. 60 00:02:49,710 --> 00:02:51,580 Material incluye secciones. 61 00:02:51,580 --> 00:02:55,970 Material incluye los conjuntos de problemas, y especialmente aquellas partes que comienzan 62 00:02:55,970 --> 00:02:58,590 de los boletines de problemas donde te paseabas a través de alguna información básica sobre 63 00:02:58,590 --> 00:02:59,780 lo que está a punto de cubrir. 64 00:02:59,780 --> 00:03:02,570 No mirar a través de los boletines de problemas. 65 00:03:02,570 --> 00:03:07,340 >> Para ayudar a todos con el cuestionario, junto Lunes, a pesar de ser un día de fiesta, 66 00:03:07,340 --> 00:03:10,570 el curso será el anfitrión de una sesión de revisión de todo el curso. 67 00:03:10,570 --> 00:03:13,465 Video de la sesión de revisión de todo el curso será publicado en línea si 68 00:03:13,465 --> 00:03:14,570 no son capaces de hacerlo. 69 00:03:14,570 --> 00:03:18,510 Además, el próximo martes en la sección vamos a estar haciendo un montón de prueba 70 00:03:18,510 --> 00:03:22,810 revisar y espero jugar algunos peligro también, pero vamos a 71 00:03:22,810 --> 00:03:25,220 puede pasarse de responder a todas sus preguntas, pero voy a venir con 72 00:03:25,220 --> 00:03:27,710 una gran cantidad de preguntas útiles y la información basada 73 00:03:27,710 --> 00:03:29,540 en 10 años de pruebas. 74 00:03:29,540 --> 00:03:31,780 Tengo una idea bastante buena de lo que es va a aparecer y cómo preguntas son 75 00:03:31,780 --> 00:03:36,640 va a pedir, así que vamos a repasar los de la sección el próximo martes. 76 00:03:36,640 --> 00:03:39,260 >> Además, yo no he puesto esta diapositiva hasta la semana pasada, pero esto es algo que 77 00:03:39,260 --> 00:03:40,030 lo hizo la semana pasada. 78 00:03:40,030 --> 00:03:42,960 Así es como nos acercamos mucho de los problemas de codificación que hicimos. 79 00:03:42,960 --> 00:03:46,710 Quería destilar nuestro enfoque en algunos pasos simples que pueden ayudar a 80 00:03:46,710 --> 00:03:49,580 que con la solución de un problema de codificación. 81 00:03:49,580 --> 00:03:53,710 >> Recuerde que la semana pasada, codificamos binario búsqueda, y lo primero que hicimos 82 00:03:53,710 --> 00:03:55,820 cuando queríamos código binario de búsqueda es que pensamos acerca de nuestro 83 00:03:55,820 --> 00:03:57,090 encabeza cómo funcionaba. 84 00:03:57,090 --> 00:04:00,400 Nosotros no sacamos una foto en la clase, pero Le pregunté a todo el mundo para ver el corto 85 00:04:00,400 --> 00:04:03,250 vídeo, que no tiene una imagen representación de cómo 86 00:04:03,250 --> 00:04:04,900 búsqueda binaria funcionó. 87 00:04:04,900 --> 00:04:07,800 El primero y realmente queríamos hacer entender algo se haga un 88 00:04:07,800 --> 00:04:09,900 foto de entender su lógica, para asegurarse de que sepamos 89 00:04:09,900 --> 00:04:11,530 cómo funciona esta cosa. 90 00:04:11,530 --> 00:04:14,670 >> La siguiente cosa que usted hizo en la sección La semana pasada fue que tomamos nuestra salud mental 91 00:04:14,670 --> 00:04:17,100 modelo, y nos convertimos en algunos pseudocódigo. 92 00:04:17,100 --> 00:04:21,570 Pseudocódigo, una vez más, la programación-como sintaxis en palabras, pero no el código C. 93 00:04:21,570 --> 00:04:26,210 Ni siquiera específica para C. Nos tomamos nuestro ideas y tomó el Inglés que utilizamos 94 00:04:26,210 --> 00:04:31,510 para expresarlo, y lo escribió en algún tipo de programa de modo parecido. 95 00:04:31,510 --> 00:04:32,550 Así que eso es sólo la parte de la lógica. 96 00:04:32,550 --> 00:04:34,010 Nos ocupamos de nuestra lógica primero. 97 00:04:34,010 --> 00:04:36,930 Rompimos esta programación dura problema en dos partes, y tomamos 98 00:04:36,930 --> 00:04:38,670 cuidar de la parte de la lógica de primer. 99 00:04:38,670 --> 00:04:40,520 >> Y luego nos acercamos la parte de sintaxis. 100 00:04:40,520 --> 00:04:43,830 Recuerde que después trazamos la pseudocódigo, escogimos partes del 101 00:04:43,830 --> 00:04:47,840 pseudocódigo que sabíamos hace corresponder con elementos específicos en C. Por ejemplo, 102 00:04:47,840 --> 00:04:53,050 para los bucles, si las condiciones, o una mayor o igual a los operadores. 103 00:04:53,050 --> 00:04:56,100 Y finalmente, la última cosa que hicimos, la última cosa que hicimos, fue 104 00:04:56,100 --> 00:04:58,640 realmente codificar este programa en C. 105 00:04:58,640 --> 00:05:02,100 >> Vamos a pasar por este proceso hoy de nuevo en un tiempo relativamente grande 106 00:05:02,100 --> 00:05:05,620 problema de codificación que tendrá el mayor parte de la segunda mitad de la sección, 107 00:05:05,620 --> 00:05:07,730 pero yo quería poner este marco aquí para ustedes. 108 00:05:07,730 --> 00:05:11,435 Es la forma en que hemos estado acercando problemas en clase, y como probablemente 109 00:05:11,435 --> 00:05:14,610 usted ha estado acercando a estos problemas por su cuenta fuera de la sección. 110 00:05:14,610 --> 00:05:16,990 Así que voy a dejar esto aquí, y nos referiremos de nuevo a esto cuando 111 00:05:16,990 --> 00:05:21,930 estamos de codificación más tarde hoy y vaya sistemáticamente a través de los siguientes pasos. 112 00:05:21,930 --> 00:05:23,320 >> Por último, la retroalimentación. 113 00:05:23,320 --> 00:05:27,670 Si usted tiene alguna reacción para mí, la sitio web es en la parte superior de esta diapositiva, 114 00:05:27,670 --> 00:05:29,670 sayat.me/cs50. 115 00:05:29,670 --> 00:05:30,460 Dame un poco de retroalimentación. 116 00:05:30,460 --> 00:05:33,320 Tengo algunos comentarios fantásticos de ustedes la semana pasada. 117 00:05:33,320 --> 00:05:36,470 Dijiste que te gustaba la pseudocoding y codificación que hicimos. 118 00:05:36,470 --> 00:05:41,250 También alguien me dio un enlace a un estudio que se ha demostrado que la espera 119 00:05:41,250 --> 00:05:46,200 seis y cincuenta y siete segundos después de preguntar si alguien tiene preguntas es la óptima 120 00:05:46,200 --> 00:05:47,240 tiempo para esperar. 121 00:05:47,240 --> 00:05:50,850 Así que si usted tiene sus cronómetros a cabo, hoy voy a tratar de esperar siete 122 00:05:50,850 --> 00:05:56,240 segundos después de que me pregunte si alguien tiene cualquier pregunta antes de continuar. 123 00:05:56,240 --> 00:05:59,340 >> Así que antes de seguir adelante, ¿alguien tiene alguna pregunta hasta ahora? 124 00:05:59,340 --> 00:06:06,470 125 00:06:06,470 --> 00:06:07,810 >> Sala de control me dio siete segundos. 126 00:06:07,810 --> 00:06:11,480 Bien, nadie tenía alguna pregunta, pero no dude en preguntar si lo haces. 127 00:06:11,480 --> 00:06:15,110 >> En primer lugar, esta semana vamos a cubrir punteros, como ya insinuamos en el 128 00:06:15,110 --> 00:06:16,910 orden del día al inicio de la clase. 129 00:06:16,910 --> 00:06:18,060 Punteros que has visto en clase. 130 00:06:18,060 --> 00:06:21,040 Probablemente han fundido su mente. 131 00:06:21,040 --> 00:06:25,050 Eso está bien, eso es lo que han hecho con cientos de estudiantes CS50 antes que tú. 132 00:06:25,050 --> 00:06:29,900 Así que en los próximos 10 a 30 minutos, van a ir a través de estos indicadores 133 00:06:29,900 --> 00:06:31,450 lenta y sistemáticamente. 134 00:06:31,450 --> 00:06:34,490 Si en algún momento usted tiene alguna preguntas, por favor, me pregunta. 135 00:06:34,490 --> 00:06:38,430 Te garantizo que sus compañeros en esta sección y viendo en casa tienen la 136 00:06:38,430 --> 00:06:41,050 mismas preguntas. 137 00:06:41,050 --> 00:06:45,660 >> Vamos a hablar en general, en primer lugar, antes de que sumergirse en punteros, sobre las variables 138 00:06:45,660 --> 00:06:47,900 y los datos, que hemos estado usando antes. 139 00:06:47,900 --> 00:06:50,800 Además de tener estas cosas hasta en un portaobjetos, voy 140 00:06:50,800 --> 00:06:52,050 llamar a cabo. 141 00:06:52,050 --> 00:06:54,400 142 00:06:54,400 --> 00:07:00,140 >> Como esta diapositiva dice, los datos en la memoria tiene un valor y una dirección, por lo que estamos 143 00:07:00,140 --> 00:07:03,260 va a representar algo en la memoria. 144 00:07:03,260 --> 00:07:06,460 Recuerde que la semana pasada, o cuando has visto matrices están elaborando, por lo general, dibujamos 145 00:07:06,460 --> 00:07:10,850 como serie de cajas, así que vamos a simplemente dibujar una variable como una caja 146 00:07:10,850 --> 00:07:13,100 en algún lugar de la memoria. 147 00:07:13,100 --> 00:07:18,480 Este cuadro, en este ejemplo, vamos a llamarlo X, y tiene un valor. 148 00:07:18,480 --> 00:07:23,700 En este caso, estamos inicializando la variable a un valor de 50. 149 00:07:23,700 --> 00:07:30,260 >> También te darás cuenta de que además de sólo el valor, la variable x tiene un 150 00:07:30,260 --> 00:07:31,570 ubicación en la memoria. 151 00:07:31,570 --> 00:07:34,870 De hecho, como usted es probablemente un poco conscientes de, la memoria tiene un 152 00:07:34,870 --> 00:07:36,180 cantidad limitada de espacios. 153 00:07:36,180 --> 00:07:39,490 Sólo hay tantas cajas dentro de su equipo en el que puede almacenar cosas. 154 00:07:39,490 --> 00:07:42,580 Y mejor aún, para que sepa que las cosas se almacenan, cada caja tiene un 155 00:07:42,580 --> 00:07:46,340 dirección específica, un número específico donde se puede encontrar. 156 00:07:46,340 --> 00:07:52,540 Al igual que todos los estudiantes de primer año tienen su dirección postal en el Centro de Ciencias, 157 00:07:52,540 --> 00:07:55,070 cada caja en la memoria tiene una dirección específica. 158 00:07:55,070 --> 00:07:57,750 Cuando vaya a esa dirección, que puede obtener lo que encuentra allí. 159 00:07:57,750 --> 00:08:02,300 160 00:08:02,300 --> 00:08:05,000 >> Yo voy a ser totalmente arbitraria con la dirección de esta variable, pero estoy 161 00:08:05,000 --> 00:08:07,450 va a decir que la dirección es 123. 162 00:08:07,450 --> 00:08:08,700 Ahora, no me acaba de escribir 1-2-3. 163 00:08:08,700 --> 00:08:10,990 Escribí 0x123. 164 00:08:10,990 --> 00:08:15,280 La parte 0x significa esto es un número hexadecimal. 165 00:08:15,280 --> 00:08:19,800 Y no vamos a hablar de hexadecimal mucho hoy, pero tenga en cuenta que 166 00:08:19,800 --> 00:08:23,750 cuando nos referimos a las direcciones de memoria, nos referimos a ellos en hexadecimal. 167 00:08:23,750 --> 00:08:27,000 Así que cada vez que estoy hablando de un dirección, voy a poner que 0x, y eso es 168 00:08:27,000 --> 00:08:29,400 Sólo digo 123 es un número hexadecimal. 169 00:08:29,400 --> 00:08:30,430 Está en la base 16. 170 00:08:30,430 --> 00:08:32,760 No está en la base 10. 171 00:08:32,760 --> 00:08:34,270 >> ¿Alguien tiene alguna preguntas hasta ahora? 172 00:08:34,270 --> 00:08:42,090 173 00:08:42,090 --> 00:08:42,950 >> Perfect. 174 00:08:42,950 --> 00:08:44,430 Así que esa es una variable. 175 00:08:44,430 --> 00:08:47,020 Hemos visto esto antes, pero ahora estamos empezando a ir bajo el capó y ver 176 00:08:47,020 --> 00:08:48,350 lo que está sucediendo realmente. 177 00:08:48,350 --> 00:08:49,910 >> Así, los punteros. 178 00:08:49,910 --> 00:08:54,090 Lo bueno de los punteros es que a diferencia de una variable normal que tiene 179 00:08:54,090 --> 00:08:57,500 algún valor, algún entero, algunos carácter, tal vez una serie de 180 00:08:57,500 --> 00:09:01,930 caracteres, si estamos hablando de un matriz, el valor que tiene un puntero es 181 00:09:01,930 --> 00:09:04,290 una dirección. 182 00:09:04,290 --> 00:09:07,470 Hasta en la pantalla, tenemos la int x es igual a 50 que hemos creado antes. 183 00:09:07,470 --> 00:09:09,060 Yo ya he dibujado esa caja. 184 00:09:09,060 --> 00:09:12,090 >> También vamos a dibujar un cuadro. 185 00:09:12,090 --> 00:09:14,490 Esto va a ser - ¡oh, Dios mío. 186 00:09:14,490 --> 00:09:15,810 Necesitamos un nuevo marcador. 187 00:09:15,810 --> 00:09:19,270 188 00:09:19,270 --> 00:09:19,845 No es mucho mejor. 189 00:09:19,845 --> 00:09:23,230 >> Pero vamos a llamar a este cuadro - esto se llama la variable puntero. 190 00:09:23,230 --> 00:09:24,650 Pointer también tiene una dirección. 191 00:09:24,650 --> 00:09:26,180 Está en una dirección diferente. 192 00:09:26,180 --> 00:09:27,270 Es una variable diferente. 193 00:09:27,270 --> 00:09:28,820 No va a estar en la parte superior de la primera. 194 00:09:28,820 --> 00:09:32,330 No se puede tomar puso dos cosas dentro de un buzón de correo. 195 00:09:32,330 --> 00:09:34,160 No se puede sobrescribir el inicial uno, por lo que vamos a 196 00:09:34,160 --> 00:09:35,200 dirección diferente aquí. 197 00:09:35,200 --> 00:09:37,880 Vamos a darle la dirección 456. 198 00:09:37,880 --> 00:09:42,190 Pero el valor del puntero va a ser un dirección, y en este caso, se va 199 00:09:42,190 --> 00:09:45,750 ser abordado de la variable x. 200 00:09:45,750 --> 00:09:50,000 Así puntero dentro, estamos almacenando la dirección 123. 201 00:09:50,000 --> 00:09:52,700 >> Y la sintaxis que utilizo para escribirlo - estamos va a ir sobre la sintaxis de una 202 00:09:52,700 --> 00:09:56,420 segundo, pero sabe que la sintaxis de este diapositiva es la sintaxis que usaría 203 00:09:56,420 --> 00:09:58,700 para establecer esta situación hasta - 204 00:09:58,700 --> 00:10:02,735 antes de llegar a la sintaxis, sin embargo, me quiero dejar claro a todo el mundo y 205 00:10:02,735 --> 00:10:05,900 asegúrese de que todo el mundo entiende que punteros a diferencia de las variables 206 00:10:05,900 --> 00:10:11,560 tener una dirección como su valor, no es un entero o un char. 207 00:10:11,560 --> 00:10:13,470 >> Hasta aquí todo bien? 208 00:10:13,470 --> 00:10:16,360 >> Generalmente también, cuando estamos dibujando estos cosas, no sólo voy a 209 00:10:16,360 --> 00:10:18,320 señalar a la dirección aquí. 210 00:10:18,320 --> 00:10:24,100 Me voy a tomar una flecha de este caja a la otra variable que es 211 00:10:24,100 --> 00:10:29,590 que apunta a dar la sensación de que si yo fuera a mirar en la dirección 123, si 212 00:10:29,590 --> 00:10:34,130 Yo fuera a utilizar este puntero de encontrar lo que está señalando, me gustaría tener 213 00:10:34,130 --> 00:10:35,150 esta caja aquí. 214 00:10:35,150 --> 00:10:36,400 Me gustaría conseguir el número 50. 215 00:10:36,400 --> 00:10:40,010 216 00:10:40,010 --> 00:10:41,810 >> Sí, la pregunta? 217 00:10:41,810 --> 00:10:46,200 >> ESTUDIANTE: Si el puntero almacena una dirección, entonces, ¿cómo elegimos matrices, e INT 218 00:10:46,200 --> 00:10:48,650 estrella, o como un char estrella, o lo que sea? 219 00:10:48,650 --> 00:10:50,190 >> JASON HIRSCHHORN: ¿Puede usted repetir la parte media? 220 00:10:50,190 --> 00:10:51,310 Te perdí. 221 00:10:51,310 --> 00:10:55,070 >> ESTUDIANTE: ¿Cómo se elige arrays, como una estrella o una estrella int char, o 222 00:10:55,070 --> 00:10:57,200 lo que sea, si siempre almacena una dirección? 223 00:10:57,200 --> 00:10:59,340 >> JASON HIRSCHHORN: Buena pregunta. 224 00:10:59,340 --> 00:11:01,730 ¿Cómo elegimos lo que en realidad es señalando si se 225 00:11:01,730 --> 00:11:03,010 siempre almacena una dirección? 226 00:11:03,010 --> 00:11:07,840 Si en vez de derecho escrito int estrellas aquí, escribí estrella char, sería 227 00:11:07,840 --> 00:11:09,090 señalando - 228 00:11:09,090 --> 00:11:11,770 229 00:11:11,770 --> 00:11:14,750 eso es lo que escribiríamos si queríamos que apunte a un personaje. 230 00:11:14,750 --> 00:11:19,720 Profundo, profundo de los unos y ceros mundo, que int, que char, no 231 00:11:19,720 --> 00:11:20,600 realmente importa. 232 00:11:20,600 --> 00:11:24,280 Pero en términos de C, no quiero que ser muy específico en términos de la 233 00:11:24,280 --> 00:11:27,660 tipo de cosa que usted está señalando. 234 00:11:27,660 --> 00:11:30,240 En el nivel en el que estamos programando, vamos a escribir la 235 00:11:30,240 --> 00:11:32,670 tipo de cosas que estamos a punto de a pesar de que siempre es un 236 00:11:32,670 --> 00:11:34,940 abordar dentro de esta caja. 237 00:11:34,940 --> 00:11:38,980 238 00:11:38,980 --> 00:11:40,420 ¿Usted tiene una pregunta? 239 00:11:40,420 --> 00:11:41,670 Aceptar. 240 00:11:41,670 --> 00:11:43,240 241 00:11:43,240 --> 00:11:47,610 >> Ahora vamos a mirar una sintaxis para los punteros. 242 00:11:47,610 --> 00:11:50,070 La primera línea en esta diapositiva - 243 00:11:50,070 --> 00:11:52,520 int estrella, espacio, puntero - 244 00:11:52,520 --> 00:11:54,770 inicializa y genera - 245 00:11:54,770 --> 00:11:56,040 no inicializa, más bien. 246 00:11:56,040 --> 00:11:58,680 No establezca su valor a nada, pero crea este puntero. 247 00:11:58,680 --> 00:12:01,090 Así que en términos de mi diagrama - 248 00:12:01,090 --> 00:12:03,790 vamos a ir a este lado - 249 00:12:03,790 --> 00:12:08,510 esa primera línea, int estrellas puntero, crea un cuadro. 250 00:12:08,510 --> 00:12:12,800 Este cuadro es la variable puntero, y está en una dirección. 251 00:12:12,800 --> 00:12:16,250 Vamos a darle una diferente dirección, 999. 252 00:12:16,250 --> 00:12:17,010 >> Eso es todo lo que hace la línea. 253 00:12:17,010 --> 00:12:17,970 Hemos visto esto antes. 254 00:12:17,970 --> 00:12:21,750 Eso es como cualquier momento, si yo tuviera que acaba escribir int x allí, lo haría 255 00:12:21,750 --> 00:12:24,210 exactamente lo mismo, crear una caja llamada x. 256 00:12:24,210 --> 00:12:29,350 En este caso, estamos dando que un tipo diferente. 257 00:12:29,350 --> 00:12:30,240 Así que no va a ser un int. 258 00:12:30,240 --> 00:12:35,460 Va a ser un int estrella, y por lo que este cuadro es un poco 259 00:12:35,460 --> 00:12:38,650 diferente que si fuera simplemente ser un char, por ejemplo. 260 00:12:38,650 --> 00:12:41,550 >> Debido caracteres, memoria, son sólo un byte en la memoria. 261 00:12:41,550 --> 00:12:43,050 Los punteros son cuatro bytes. 262 00:12:43,050 --> 00:12:45,640 Así que este cuadro se verá un poco diferente si escribimos int estrellas como 263 00:12:45,640 --> 00:12:46,490 oposición a la charla. 264 00:12:46,490 --> 00:12:49,110 Pero aparte de eso, estamos creando un caja, y es en una dirección específica. 265 00:12:49,110 --> 00:12:51,830 Eso es todo lo que la primera línea hace. 266 00:12:51,830 --> 00:12:57,630 >> La segunda línea de código, int x es igual a 50, de nuevo crea otro cuadro de x en una 267 00:12:57,630 --> 00:12:58,410 diferente ubicación. 268 00:12:58,410 --> 00:13:00,340 Le daremos la dislocación 111. 269 00:13:00,340 --> 00:13:02,560 Y esto es en realidad inicializando el puntero además de 270 00:13:02,560 --> 00:13:03,490 la creación de la caja. 271 00:13:03,490 --> 00:13:07,380 Estamos poniendo un 50 dentro de esta caja. 272 00:13:07,380 --> 00:13:10,650 >> La tercera línea de código, puntero es igual a la dirección x. 273 00:13:10,650 --> 00:13:14,600 Eso significa que los operadores de direcciones una cosa muy específica. 274 00:13:14,600 --> 00:13:19,650 Siempre ponemos el signo delante de un nombre de variable, estamos diciendo dar 275 00:13:19,650 --> 00:13:22,810 me la dirección de esa variable. 276 00:13:22,810 --> 00:13:27,830 Así que cuando escribo signo x, eso es diciendo dame la dirección de x, en 277 00:13:27,830 --> 00:13:30,190 este caso, 111. 278 00:13:30,190 --> 00:13:30,610 >> ¿Sí? 279 00:13:30,610 --> 00:13:33,750 >> ESTUDIANTE: ¿Sería aceptable si pasar a conocer la dirección de este 280 00:13:33,750 --> 00:13:37,860 particular, la variable sólo decir puntero es igual 0x111? 281 00:13:37,860 --> 00:13:41,130 >> JASON HIRSCHHORN: Así que si usted sabía que esto fue en el 111, se puede escribir 282 00:13:41,130 --> 00:13:46,825 puntero x es igual a esta hexadecimal número, pero no puedo ver un camino que 283 00:13:46,825 --> 00:13:50,880 sabría nunca lo que es, de manera que es por qué usamos esta sintaxis. 284 00:13:50,880 --> 00:13:54,950 Pero, de nuevo, de que signo x, signo está diciendo dame la dirección de este 285 00:13:54,950 --> 00:13:59,960 variables, y al igual que cualquier igualdad signo no, eso es el almacenamiento que 286 00:13:59,960 --> 00:14:01,210 valor dentro de puntero. 287 00:14:01,210 --> 00:14:04,370 288 00:14:04,370 --> 00:14:07,760 >> Así que cada vez que vea que signo, creo que esto me está dando la dirección de 289 00:14:07,760 --> 00:14:08,810 esta cosa. 290 00:14:08,810 --> 00:14:12,240 Ampersand x me está dando la Dirección de esta caja de x. 291 00:14:12,240 --> 00:14:16,990 Una vez más, si lo hiciéramos puntero signo, lo puedo obtener? 292 00:14:16,990 --> 00:14:18,480 >> ESTUDIANTE: Dirección del puntero. 293 00:14:18,480 --> 00:14:19,780 >> JASON HIRSCHHORN: La dirección del puntero. 294 00:14:19,780 --> 00:14:20,410 Específicamente, ¿qué? 295 00:14:20,410 --> 00:14:21,790 >> ESTUDIANTE: 0x999. 296 00:14:21,790 --> 00:14:23,870 >> JASON HIRSCHHORN: 999. 297 00:14:23,870 --> 00:14:26,920 Puntero Ampersand daría me 999 en este caso. 298 00:14:26,920 --> 00:14:28,730 Ampersand frente a cualquier variable que da la 299 00:14:28,730 --> 00:14:30,630 dirección de esa variable. 300 00:14:30,630 --> 00:14:33,270 Por supuesto, realmente no me importa la dirección de este puntero. 301 00:14:33,270 --> 00:14:37,900 Me importa mucho más sobre el dirección de esta variable. 302 00:14:37,900 --> 00:14:41,980 >> Finalmente, el último símbolo que vamos para ver en realidad es el mismo símbolo, 303 00:14:41,980 --> 00:14:43,170 que asterisco. 304 00:14:43,170 --> 00:14:45,910 Pero en esta última línea, es utilizado un poco diferente. 305 00:14:45,910 --> 00:14:49,070 Observe cómo en esta última línea está al lado de la variable. 306 00:14:49,070 --> 00:14:52,600 Como antes de que fuera al lado del tipo, se fue parte de este tipo, estamos creando 307 00:14:52,600 --> 00:14:56,840 este puntero tipo entero, ahora la estrella significa algo 308 00:14:56,840 --> 00:14:57,510 un poco diferente. 309 00:14:57,510 --> 00:15:00,700 Significa ir a tratar el valor - 310 00:15:00,700 --> 00:15:01,610 int puntero - 311 00:15:01,610 --> 00:15:06,740 tratar el valor de esta variable como una dirección, vaya a esa dirección, y 312 00:15:06,740 --> 00:15:08,820 dame ese valor. 313 00:15:08,820 --> 00:15:15,430 >> Así que significa que la estrella, de nuevo, trate la valor y el puntero como una dirección, vaya a 314 00:15:15,430 --> 00:15:18,640 esa dirección, y devolverá ese valor. 315 00:15:18,640 --> 00:15:22,060 En este caso, ese valor es 50, por lo que esta línea printf 50. 316 00:15:22,060 --> 00:15:22,430 ¿Sí? 317 00:15:22,430 --> 00:15:25,770 >> ESTUDIANTE: Entonces, si tratamos de hacerlo en algo que no fue declarado como un 318 00:15:25,770 --> 00:15:29,190 puntero, como en x, y el valor es de 50, habría que tratar de ir para hacer frente a 50, 319 00:15:29,190 --> 00:15:30,535 o sería sólo nos dan un error? 320 00:15:30,535 --> 00:15:36,200 >> JASON HIRSCHHORN: Si lo hiciéramos estrella x, y trató a printf que, lo que el 321 00:15:36,200 --> 00:15:39,780 compilador hacer, o lo que el programa lo haría cuando se estaba ejecutando, es 322 00:15:39,780 --> 00:15:46,340 trataría 50 como una dirección y vaya a abordar el número 50 en su programa. 323 00:15:46,340 --> 00:15:51,980 Generalmente, cuando vas a estos direcciones al azar, no se van a 324 00:15:51,980 --> 00:15:54,310 ir a una dirección donde algo es agradable allí. 325 00:15:54,310 --> 00:15:57,160 Vas a ir a una muy mala dirección que no se supone que vaya 326 00:15:57,160 --> 00:16:00,510 a, y su programa se va a estrellar. 327 00:16:00,510 --> 00:16:01,560 >> Así que sí, tienes toda la razón. 328 00:16:01,560 --> 00:16:04,430 Haría exactamente lo mismo, pero cuando tratamos de ir a las direcciones que nos 329 00:16:04,430 --> 00:16:07,290 no hayan solicitado o no tener declarada, o que son simplemente al azar 330 00:16:07,290 --> 00:16:10,360 direcciones, casi siempre ponemos en problemas y nuestros errores en el programa. 331 00:16:10,360 --> 00:16:14,020 332 00:16:14,020 --> 00:16:15,040 >> ¿Eso responde a su pregunta? 333 00:16:15,040 --> 00:16:16,864 >> ESTUDIANTE: Sí, supongo Tengo otro. 334 00:16:16,864 --> 00:16:20,460 Así que si tienes frío hacer eso y sería ir a esa dirección, ¿cuál es el 335 00:16:20,460 --> 00:16:23,390 punto de declarar un puntero como un puntero si pudiéramos decir un puntero 336 00:16:23,390 --> 00:16:24,610 igual cosa ampersand? 337 00:16:24,610 --> 00:16:27,533 Y entonces sería como una significativa dirección, y podíamos ir allí, ¿verdad? 338 00:16:27,533 --> 00:16:29,130 >> JASON HIRSCHHORN: ¿Puede usted repetir la pregunta? 339 00:16:29,130 --> 00:16:32,210 >> ESTUDIANTE: ¿Por qué tenemos que declarar la puntero como un int estrella si lo haría 340 00:16:32,210 --> 00:16:35,600 trabajar sólo declararemos como como un int regular, debido a que aún lo haría 341 00:16:35,600 --> 00:16:39,336 tener una cosa que podría ser entonces dereferenced, ¿verdad? 342 00:16:39,336 --> 00:16:42,490 >> JASON HIRSCHHORN: ¿Por qué estamos declarándolo como un int estrellas en vez 343 00:16:42,490 --> 00:16:46,700 que al igual que un entero y ahorro de este número en ella? 344 00:16:46,700 --> 00:16:47,936 >> ESTUDIANTE: Sí. 345 00:16:47,936 --> 00:16:50,100 >> JASON HIRSCHHORN: Porque cuando usamos las cosas - 346 00:16:50,100 --> 00:16:50,960 gran pregunta - 347 00:16:50,960 --> 00:16:53,720 cuando usamos las cosas, cada vez que estamos usando un puntero y vamos a 348 00:16:53,720 --> 00:16:56,680 tratar algo como punteros, otros van las cosas en que yo no voy 349 00:16:56,680 --> 00:17:00,080 ir a ahora que ayuda si el programa sabe que 350 00:17:00,080 --> 00:17:01,270 esta cosa es un puntero. 351 00:17:01,270 --> 00:17:04,630 Se tratará de manera diferente en algunos otras maneras en que es irrelevante para nosotros, 352 00:17:04,630 --> 00:17:08,050 pero vamos a utilizarlo como un puntero, debemos decir que vamos a 353 00:17:08,050 --> 00:17:09,300 estar usando esto como un puntero. 354 00:17:09,300 --> 00:17:12,450 355 00:17:12,450 --> 00:17:17,584 >> Así que es básicamente cómo funcionan los punteros. 356 00:17:17,584 --> 00:17:20,849 No es mucho más complicado de lo que eso, pero por desgracia, se convierte en un 357 00:17:20,849 --> 00:17:23,710 cuando mucho más complicado lo ponemos en práctica. 358 00:17:23,710 --> 00:17:28,190 >> A continuación, vamos a hacer algo bastante grande. 359 00:17:28,190 --> 00:17:31,703 En lugar de simplemente tirar un par de líneas de código en línea, me pongo un 4, 5, 360 00:17:31,703 --> 00:17:34,290 6, 7, 8 9, 10 líneas de código. 361 00:17:34,290 --> 00:17:38,430 Y en lugar de la codificación de estos fuera de su ordenador o ejecutar este programa 362 00:17:38,430 --> 00:17:41,410 en el equipo, quiero que saques una hoja de papel y un lápiz o un 363 00:17:41,410 --> 00:17:45,800 pluma, y ​​averiguar lo que cada uno de las líneas de estos códigos hacen. 364 00:17:45,800 --> 00:17:49,460 Comience con la columna de la izquierda, trabajando desde arriba a abajo, que inicializa 365 00:17:49,460 --> 00:17:55,040 hay una gran cantidad de estas variables, y y luego ir a través de cada línea de código en 366 00:17:55,040 --> 00:17:57,880 la columna y la figura de la derecha lo que sucede. 367 00:17:57,880 --> 00:18:01,890 Voy a dar a todo el mundo tres minutos para comenzar por su cuenta, y luego vamos a 368 00:18:01,890 --> 00:18:03,230 pasa este como un grupo. 369 00:18:03,230 --> 00:20:10,620 370 00:20:10,620 --> 00:20:12,100 >> Vamos a empezar yendo sobre esto como un grupo. 371 00:20:12,100 --> 00:20:13,700 Está bien si no ha terminado. 372 00:20:13,700 --> 00:20:18,570 Voy a comenzar con la mano izquierda lado de la columna, y luego me voy 373 00:20:18,570 --> 00:20:24,520 invitar a ustedes aquí, los valientes que entre ustedes aquí, para ejecutar 374 00:20:24,520 --> 00:20:26,730 una línea de código en el lado derecho la columna y, a continuación, vamos a trabajar 375 00:20:26,730 --> 00:20:27,770 nuestro camino a través. 376 00:20:27,770 --> 00:20:32,900 >> Así que en primer lugar, que la primera línea de código, int x es igual a 2 coma y es igual a 8 coma z 377 00:20:32,900 --> 00:20:36,500 es igual a 12, crea tres variables. 378 00:20:36,500 --> 00:20:38,120 Lo hice todo en una sola línea. 379 00:20:38,120 --> 00:20:41,040 Esa es una sintaxis muy útil para crear múltiples cosas del 380 00:20:41,040 --> 00:20:44,030 mismo tipo en una línea. 381 00:20:44,030 --> 00:20:46,000 >> Así que tenemos tres cajas. 382 00:20:46,000 --> 00:20:48,834 383 00:20:48,834 --> 00:20:52,218 ¿Todos pueden ver a los tres, o es que es demasiado baja? 384 00:20:52,218 --> 00:20:53,152 Aceptar. 385 00:20:53,152 --> 00:20:57,180 >> Tenemos x, y, z. 386 00:20:57,180 --> 00:21:00,550 Y en x, obtenemos 2. 387 00:21:00,550 --> 00:21:03,035 In y, obtenemos 8. 388 00:21:03,035 --> 00:21:07,390 y en z, obtenemos 12. 389 00:21:07,390 --> 00:21:09,270 Bastante estándar hasta ahora. 390 00:21:09,270 --> 00:21:12,430 >> Siguiente estamos creando otro caja, otra variable. 391 00:21:12,430 --> 00:21:13,760 Se trata de un puntero de int. 392 00:21:13,760 --> 00:21:15,560 Se llama puntero x. 393 00:21:15,560 --> 00:21:16,920 Vamos a dibujar que aquí. 394 00:21:16,920 --> 00:21:22,640 395 00:21:22,640 --> 00:21:26,998 >> ¿Y qué estamos almacenando dentro puntero x? 396 00:21:26,998 --> 00:21:29,290 >> ESTUDIANTE: La dirección de x. 397 00:21:29,290 --> 00:21:31,100 >> JASON HIRSCHHORN: la dirección de x. 398 00:21:31,100 --> 00:21:33,750 En este caso, no sé la dirección de x. 399 00:21:33,750 --> 00:21:35,970 Podría ser cualquier cosa, pero yo voy a hacer algo ahora para que sea 400 00:21:35,970 --> 00:21:37,310 más fácil para nosotros. 401 00:21:37,310 --> 00:21:40,360 Pondremos x en 111. 402 00:21:40,360 --> 00:21:46,660 Así que ahora se pone 0x111, y vamos a dar un agradable flecha para significar 403 00:21:46,660 --> 00:21:48,520 está apuntando a x. 404 00:21:48,520 --> 00:21:57,510 >> Del mismo modo, tengo puntero y y z puntero. 405 00:21:57,510 --> 00:21:58,580 Consiguen valores. 406 00:21:58,580 --> 00:22:18,672 Le daremos a esta 0x222, 0x333. 407 00:22:18,672 --> 00:22:21,940 >> Esa es nuestra configuración inicial en el lado izquierdo de la columna. 408 00:22:21,940 --> 00:22:25,510 Hemos creado tres enteros y hemos creado tres punteros. 409 00:22:25,510 --> 00:22:28,290 Dentro de cada indicador, ahorramos la dirección de uno de los tres inicial 410 00:22:28,290 --> 00:22:30,460 las variables que hemos creado. 411 00:22:30,460 --> 00:22:35,710 >> Ahora, en el lado derecho de la columna, estamos usando ese asterisco 412 00:22:35,710 --> 00:22:41,390 símbolo en un número de maneras diferentes, no todos los cuales son para utilizarlo para 413 00:22:41,390 --> 00:22:43,480 eliminar la referencia de algo o de ir a una dirección específica y 414 00:22:43,480 --> 00:22:45,720 devolver el valor allí. 415 00:22:45,720 --> 00:22:48,680 >> ¿Puede alguien decirme cuál es el primera línea de código hace? 416 00:22:48,680 --> 00:22:51,360 417 00:22:51,360 --> 00:22:54,360 Alguien levantar la mano que aún no ha hablado. 418 00:22:54,360 --> 00:22:54,840 Usted? 419 00:22:54,840 --> 00:22:56,792 >> ESTUDIANTE: Establecer z a 16. 420 00:22:56,792 --> 00:23:00,340 >> JASON HIRSCHHORN: Está ambientada z a 16. 421 00:23:00,340 --> 00:23:02,120 Así que z es igual a x por y. 422 00:23:02,120 --> 00:23:04,630 En ese caso, es sólo la multiplicación que estamos haciendo. 423 00:23:04,630 --> 00:23:08,640 Así que z es igual a x por y, 2 veces 8 es 16. 424 00:23:08,640 --> 00:23:09,080 Perfect. 425 00:23:09,080 --> 00:23:11,330 Así que vamos a actualizar esto. 426 00:23:11,330 --> 00:23:14,010 Z = 16. 427 00:23:14,010 --> 00:23:18,270 >> Esa segunda línea de código x espacio estrellas es igual a espacio y. 428 00:23:18,270 --> 00:23:21,900 ¿Qué hace esa línea de código? 429 00:23:21,900 --> 00:23:22,830 Jeff. 430 00:23:22,830 --> 00:23:24,470 >> ESTUDIANTE: x es igual a x veces y? 431 00:23:24,470 --> 00:23:25,630 >> JASON HIRSCHHORN: Exactamente. 432 00:23:25,630 --> 00:23:28,870 Esa es la notación abreviada para x es igual a x por y. 433 00:23:28,870 --> 00:23:32,030 Usted probablemente ha visto las cosas como x más iguales y? 434 00:23:32,030 --> 00:23:34,380 Eso es x es igual ax más y. 435 00:23:34,380 --> 00:23:39,190 En este caso, estamos haciendo algo un poco diferente, x es igual a x por y. 436 00:23:39,190 --> 00:23:40,400 >> Entonces, ¿qué necesito para actualizar esta lista? 437 00:23:40,400 --> 00:23:41,915 >> ESTUDIANTE: x es 16. 438 00:23:41,915 --> 00:23:43,165 >> JASON HIRSCHHORN: x es 16. 439 00:23:43,165 --> 00:23:50,080 440 00:23:50,080 --> 00:23:52,840 >> Cambios en el color verde son los que que hemos hecho hasta ahora. 441 00:23:52,840 --> 00:23:56,900 A continuación, tenemos y igual estrellas puntero x. 442 00:23:56,900 --> 00:24:00,300 ¿Puede alguien caminar a través de lo que esta línea de código hace? 443 00:24:00,300 --> 00:24:01,400 ¿Qué hace esta línea de código? 444 00:24:01,400 --> 00:24:02,880 Caminar a través de mí desde el principio. 445 00:24:02,880 --> 00:24:07,060 >> ESTUDIANTE: Se necesita lo que sea puntero x es señalando, el valor que se está 446 00:24:07,060 --> 00:24:11,064 señalado por que, y lo almacena en y. 447 00:24:11,064 --> 00:24:11,950 >> JASON HIRSCHHORN: Excelente. 448 00:24:11,950 --> 00:24:13,310 Voy a repetir eso de nuevo. 449 00:24:13,310 --> 00:24:18,180 Usted hizo un trabajo fantástico, pero por lo que podemos enfatizarlo, esa estrella significa tratar 450 00:24:18,180 --> 00:24:20,550 la cosa en esa variable como una dirección e ir a ella. 451 00:24:20,550 --> 00:24:25,590 Por lo tanto, el tratamiento de la cosa en puntero x como un dirección, vaya a ella, tomar ese valor 452 00:24:25,590 --> 00:24:28,750 16, y luego sólo estamos ahorrando en la variable y. 453 00:24:28,750 --> 00:24:34,393 Así que ahora y se sobrescribe, y es ahora de 16. 454 00:24:34,393 --> 00:24:37,260 455 00:24:37,260 --> 00:24:42,810 >> La siguiente línea de código, indicador de la estrella subrayar x es igual a x por y. 456 00:24:42,810 --> 00:24:44,400 ¿Qué hace esa línea de código? 457 00:24:44,400 --> 00:24:47,120 458 00:24:47,120 --> 00:24:50,900 De nuevo, si usted es un poco perdido aquí, evaluarla de derecha a izquierda. 459 00:24:50,900 --> 00:24:53,480 Así Mondo, lo que hace la derecha parte de eso? 460 00:24:53,480 --> 00:24:55,820 >> ESTUDIANTE: El lado derecho justo multiplica lo que está en el 461 00:24:55,820 --> 00:24:56,990 cuadro es xe y. 462 00:24:56,990 --> 00:24:58,880 >> JASON HIRSCHHORN: Y eso es 16 y 16, por lo que es eso igual? 463 00:24:58,880 --> 00:24:59,350 >> ESTUDIANTE: 256. 464 00:24:59,350 --> 00:25:00,470 >> JASON HIRSCHHORN: 256. 465 00:25:00,470 --> 00:25:01,865 ¿Y dónde estamos ahorrando 256? 466 00:25:01,865 --> 00:25:05,410 >> ESTUDIANTE: Usted está ahorrando en lo que sea puntero x hace referencia, 467 00:25:05,410 --> 00:25:06,820 que es el cuadro de x. 468 00:25:06,820 --> 00:25:08,802 Así que ahora se convierte en x 256. 469 00:25:08,802 --> 00:25:11,480 >> JASON HIRSCHHORN: Así que la estrella, de nuevo, significa ir a. 470 00:25:11,480 --> 00:25:13,320 Vamos a lo que el puntero X está apuntando a. 471 00:25:13,320 --> 00:25:27,440 Se apunta a x, y hay estamos ahorrando el valor 256. 472 00:25:27,440 --> 00:25:29,750 >> ¿Una pregunta sobre que uno específico? 473 00:25:29,750 --> 00:25:33,860 No hemos visto a la estrella utilizada en a mano izquierda, sin embargo, de 474 00:25:33,860 --> 00:25:35,110 un operador de asignación. 475 00:25:35,110 --> 00:25:42,690 476 00:25:42,690 --> 00:25:44,410 >> Así que esa es la cuarta línea de código. 477 00:25:44,410 --> 00:25:47,970 La quinta línea de código, puede alguien que no ha hablado todavía me dan la 478 00:25:47,970 --> 00:25:49,710 quinta línea de código, o caminar a través de ella conmigo? 479 00:25:49,710 --> 00:25:55,120 480 00:25:55,120 --> 00:25:55,950 Annie, ¿qué hace? 481 00:25:55,950 --> 00:25:59,535 >> ESTUDIANTE: Cambie el valor del puntero x para el valor de puntero y. 482 00:25:59,535 --> 00:26:01,980 >> JASON HIRSCHHORN: Eso es exactamente correcto. 483 00:26:01,980 --> 00:26:06,010 El valor de puntero y es esta dirección aquí, y estamos almacenando que en 484 00:26:06,010 --> 00:26:07,670 el puntero variable x. 485 00:26:07,670 --> 00:26:12,740 Así que esto se convierte en 222. 486 00:26:12,740 --> 00:26:16,010 Y me voy a mover la flecha, también, para indicar que ahora 487 00:26:16,010 --> 00:26:17,260 tiene una dirección diferente. 488 00:26:17,260 --> 00:26:24,560 489 00:26:24,560 --> 00:26:27,970 >> Así que ahora puntero subrayado x y el puntero de subrayado y 490 00:26:27,970 --> 00:26:29,250 tener el mismo valor. 491 00:26:29,250 --> 00:26:30,390 Eso es lo que hace esa línea. 492 00:26:30,390 --> 00:26:34,170 Así que, esencialmente, son tanto que apunta a y. 493 00:26:34,170 --> 00:26:37,180 Si sólo teníamos nuestros punteros, y nosotros realmente no sabíamos las variables, se 494 00:26:37,180 --> 00:26:38,210 habría perdido x. 495 00:26:38,210 --> 00:26:42,230 Pero, por suerte, hemos salvado x en esta función, por lo que todavía 496 00:26:42,230 --> 00:26:43,350 saber donde x es. 497 00:26:43,350 --> 00:26:48,660 Pero vamos a ver ese problema viene más adelante, que si perdemos un puntero a 498 00:26:48,660 --> 00:26:51,790 algo, no podríamos saber realmente donde es o ser capaz de recuperarlo. 499 00:26:51,790 --> 00:26:53,540 Pero eso es para el futuro. 500 00:26:53,540 --> 00:26:55,310 Así que por ahora, eso es toda la razón, Annie. 501 00:26:55,310 --> 00:26:57,350 >> Y, por último, que la última línea de código. 502 00:26:57,350 --> 00:27:00,876 ¿Puede alguien darme lo que el última línea de código hace? 503 00:27:00,876 --> 00:27:01,742 ¿Sí? 504 00:27:01,742 --> 00:27:09,245 >> ESTUDIANTE: Se multiplica lo que está en puntero y, por lo que 16 veces 16 - 505 00:27:09,245 --> 00:27:10,810 >> JASON HIRSCHHORN: 16 es no en el puntero y. 506 00:27:10,810 --> 00:27:14,530 >> Estudiante: Bueno, va a esa dirección, lo encuentra, y luego se multiplica 507 00:27:14,530 --> 00:27:17,370 que por lo mismo - lo hace el lo mismo con el puntero de z, se multiplica 508 00:27:17,370 --> 00:27:19,280 los valores y la almacena en x. 509 00:27:19,280 --> 00:27:19,960 >> JASON HIRSCHHORN: Exactamente. 510 00:27:19,960 --> 00:27:22,540 Entonces, ¿qué tengo que actualizar? 511 00:27:22,540 --> 00:27:23,463 ¿Cuál debe ser x? 512 00:27:23,463 --> 00:27:25,520 >> ESTUDIANTE: La parte superior izquierda, 256. 513 00:27:25,520 --> 00:27:28,620 >> JASON HIRSCHHORN: ¿Y qué Cómo puedo cambiar a? 514 00:27:28,620 --> 00:27:31,160 Lo sentimos, pero vamos a ir hacia arriba. 515 00:27:31,160 --> 00:27:33,605 >> ESTUDIANTE: Se debe seguir siendo el mismo. 516 00:27:33,605 --> 00:27:36,020 >> JASON HIRSCHHORN: Sí, en realidad todavía es igual a 256. 517 00:27:36,020 --> 00:27:37,630 Pero eso es exactamente correcto. 518 00:27:37,630 --> 00:27:38,850 Vamos a descomponerlo. 519 00:27:38,850 --> 00:27:43,470 Vamos a ver aquí, esto en paréntesis, indicador de la estrella y, que 520 00:27:43,470 --> 00:27:46,850 trata a lo que hay en el puntero y como una dirección, va a ese 521 00:27:46,850 --> 00:27:48,670 dirección, toma la 16. 522 00:27:48,670 --> 00:27:51,570 Así que ahora tenemos un 16, y estamos multiplicando por el que 523 00:27:51,570 --> 00:27:52,710 lo mismo en z. 524 00:27:52,710 --> 00:27:54,895 El ir a esa dirección, tomando un 16. 525 00:27:54,895 --> 00:27:59,820 16 veces 16 es 256, y estamos almacenando que dentro de x. x ya pasa a 526 00:27:59,820 --> 00:28:02,000 igual 256, así que no estamos va a hacer el cambio. 527 00:28:02,000 --> 00:28:04,590 528 00:28:04,590 --> 00:28:08,550 >> Usted no tiene este archivo en este momento, pero en el código fuente de este 529 00:28:08,550 --> 00:28:12,880 sección que se publicará en línea en cs50.net/sections, he escrito todo 530 00:28:12,880 --> 00:28:14,780 de esto, exactamente lo que hicimos. 531 00:28:14,780 --> 00:28:17,780 Y de hecho incluido alguna otra información aquí, que estamos 532 00:28:17,780 --> 00:28:19,610 va a pasar en un segundo. 533 00:28:19,610 --> 00:28:24,040 >> Hacemos estas operaciones, como se puede ver aquí mismo y, a continuación, imprima la 534 00:28:24,040 --> 00:28:27,860 valor resultante de la variable específica que ha sido cambiado. 535 00:28:27,860 --> 00:28:28,880 Ya se ha escrito este código. 536 00:28:28,880 --> 00:28:30,130 Voy a ejecutar este código. 537 00:28:30,130 --> 00:28:36,110 538 00:28:36,110 --> 00:28:39,170 >> Y ahora vamos a caminar a través de la salida. 539 00:28:39,170 --> 00:28:40,860 Vamos a empezar por el principio. 540 00:28:40,860 --> 00:28:43,200 El valor de x es igual a 2. 541 00:28:43,200 --> 00:28:44,120 Eso debería tener sentido. 542 00:28:44,120 --> 00:28:46,600 Eso fue lo que inicialmente inicializado a. 543 00:28:46,600 --> 00:28:51,650 >> Dirección de x es esta locura. 544 00:28:51,650 --> 00:28:55,510 Una vez más, vemos, sin embargo, a pesar de que parece un poco loco al primero 545 00:28:55,510 --> 00:28:57,980 inspección, vemos que 0x allí. 546 00:28:57,980 --> 00:29:00,040 Este es un número hexadecimal. 547 00:29:00,040 --> 00:29:03,600 >> Y luego vemos todos estas cosas locas. 548 00:29:03,600 --> 00:29:05,860 Hay una b y una f, y también una c en ese país. 549 00:29:05,860 --> 00:29:09,460 Ninguno de los que son normales cero a nueve dígitos, pero debido a hexadecimal 550 00:29:09,460 --> 00:29:14,310 es base 16, que realmente necesita un par de otros símbolos para 551 00:29:14,310 --> 00:29:16,940 representar cada dígito. 552 00:29:16,940 --> 00:29:19,860 Así que de nuevo, no vamos a hablar de hexadecimal demasiado, pero sabe 553 00:29:19,860 --> 00:29:23,990 que cuando estás escribiendo hexadecimal números, verás algo de cero 554 00:29:23,990 --> 00:29:28,830 a través de 9 cosas más a partir de una F a través de. 555 00:29:28,830 --> 00:29:33,140 Así que, aunque no todos son cero a través de nueve números, este es un 556 00:29:33,140 --> 00:29:34,760 número, esta es una dirección. 557 00:29:34,760 --> 00:29:38,540 Y podría ser expresada en base 10 si queríamos. 558 00:29:38,540 --> 00:29:46,500 >> El valor de puntero de x aquí es También un número hexadecimal, y lo que es 559 00:29:46,500 --> 00:29:47,520 Es el mismo de? 560 00:29:47,520 --> 00:29:49,510 ¿Qué es este número el mismo que? 561 00:29:49,510 --> 00:29:53,910 562 00:29:53,910 --> 00:29:55,290 >> Dirección de x, ¿verdad? 563 00:29:55,290 --> 00:29:59,440 La línea derecha por encima de él, esos dos direcciones son idénticas, y eso es 564 00:29:59,440 --> 00:30:00,610 lo que esperamos. 565 00:30:00,610 --> 00:30:06,830 La dirección de x es el valor del puntero a x. 566 00:30:06,830 --> 00:30:10,020 >> A continuación, tenemos la dirección de puntero x, y que es, 567 00:30:10,020 --> 00:30:11,680 de nuevo, algunos de números aleatorios. 568 00:30:11,680 --> 00:30:15,390 Si vamos a inspeccionarlo, notamos que comparte una gran parte del 569 00:30:15,390 --> 00:30:16,410 mismos números que los otros. 570 00:30:16,410 --> 00:30:20,200 Es diferente, pero comparte una gran cantidad de los mismos números. 571 00:30:20,200 --> 00:30:22,700 Se acuerden hablando de búfer errores de desbordamiento? 572 00:30:22,700 --> 00:30:24,900 Cuando usted puede escribir sobre las cosas que son Cerca de ti en la memoria, si vas 573 00:30:24,900 --> 00:30:26,340 más allá de los límites de una matriz. 574 00:30:26,340 --> 00:30:28,920 Una vez más, no vamos a hablar de que en este momento, pero para aquellos de ustedes 575 00:30:28,920 --> 00:30:31,510 curioso, estas cosas son en realidad bastante cerca uno del otro. 576 00:30:31,510 --> 00:30:34,400 Estas cajas están muy cerca el uno al otro en la memoria. 577 00:30:34,400 --> 00:30:38,660 >> Y, por último, puntero x puntos a la valor, y por supuesto, es 2. 578 00:30:38,660 --> 00:30:39,920 Hice esa estrella. 579 00:30:39,920 --> 00:30:43,310 Seguimos la dirección de puntero x inicialmente, y 580 00:30:43,310 --> 00:30:45,340 devuelto un valor de x. 581 00:30:45,340 --> 00:30:47,870 >> Por último, vemos exactamente lo que acabamos de hacer. 582 00:30:47,870 --> 00:30:52,120 Primera z es 16, entonces x es 16, entonces y es 16. 583 00:30:52,120 --> 00:30:55,000 x eventualmente se convierte en 256 aquí. 584 00:30:55,000 --> 00:30:58,090 Y de nuevo, x no se cambia por esa última línea de código. 585 00:30:58,090 --> 00:31:00,950 Sigue siendo un 256. 586 00:31:00,950 --> 00:31:03,380 >> Si desea repetir esto por su cuenta una vez más, o ir a través de él, o 587 00:31:03,380 --> 00:31:05,690 cambiar algunos de estos valores, me he ya se ha escrito el código. 588 00:31:05,690 --> 00:31:11,490 Usted puede hacer los cambios en el código y ver cómo esos cambios realmente 589 00:31:11,490 --> 00:31:14,540 jugar en la vida real. 590 00:31:14,540 --> 00:31:16,855 >> Antes de continuar con los punteros, lo hace Alguien tiene alguna pregunta? 591 00:31:16,855 --> 00:31:20,924 592 00:31:20,924 --> 00:31:21,390 >> Aceptar. 593 00:31:21,390 --> 00:31:26,620 ¿Todos pueden tener un lado, y lo puso en el aire, y - 594 00:31:26,620 --> 00:31:28,090 cierra los ojos - 595 00:31:28,090 --> 00:31:32,700 pon tu mano derecha en el aire como un puño, y me da un pulgar arriba, pulgar 596 00:31:32,700 --> 00:31:36,590 abajo, pulgares medio, lo cómodo estás con punteros hasta ahora. 597 00:31:36,590 --> 00:31:37,840 Cierra los ojos. 598 00:31:37,840 --> 00:31:40,770 599 00:31:40,770 --> 00:31:41,050 >> Aceptar. 600 00:31:41,050 --> 00:31:43,360 Usted puede poner sus manos hacia abajo y abre los ojos. 601 00:31:43,360 --> 00:31:44,610 Gracias. 602 00:31:44,610 --> 00:31:47,110 603 00:31:47,110 --> 00:31:47,750 >> Vamos a seguir adelante. 604 00:31:47,750 --> 00:31:49,395 Vamos a seguir hablando de punteros, pero vamos a hablar 605 00:31:49,395 --> 00:31:51,590 sobre ellos en un poco de un contexto diferente. 606 00:31:51,590 --> 00:31:54,160 Vamos a hablar de arrays y punteros. 607 00:31:54,160 --> 00:31:56,660 Y recuerda que la semana pasada Soplé sus mentes? 608 00:31:56,660 --> 00:31:58,480 Cerebro de alguien, se fueron aquí en el suelo. 609 00:31:58,480 --> 00:32:01,335 Yo estaba bastante seguro sopló la mente de esa persona. 610 00:32:01,335 --> 00:32:02,925 Esa fue una mala broma. 611 00:32:02,925 --> 00:32:03,220 >> [Risas] 612 00:32:03,220 --> 00:32:03,990 >> JASON HIRSCHHORN: Voy a trabajar en eso. 613 00:32:03,990 --> 00:32:06,535 Pero de todos modos, las cadenas que encontramos fuera eran arrays. 614 00:32:06,535 --> 00:32:08,750 Las matrices son realmente punteros. 615 00:32:08,750 --> 00:32:09,920 >> ¿Qué quiero decir con eso? 616 00:32:09,920 --> 00:32:14,710 Bueno, si creamos una serie de seis personajes, que esta línea de código 617 00:32:14,710 --> 00:32:16,890 hace aquí - 618 00:32:16,890 --> 00:32:21,380 char, arreglo, soporte abierto, seis, cerca soporte, punto y coma - de nuevo, crea un 619 00:32:21,380 --> 00:32:23,490 serie de seis caracteres. 620 00:32:23,490 --> 00:32:24,070 Llenarlo. 621 00:32:24,070 --> 00:32:25,570 >> Tengo una foto de ella aquí. 622 00:32:25,570 --> 00:32:28,900 Estas cajas, vemos que la empapó con algunos personajes y la nula 623 00:32:28,900 --> 00:32:29,900 terminador en el extremo. 624 00:32:29,900 --> 00:32:32,630 Y abajo, aquí es donde me gustaría a dirigir su atención. 625 00:32:32,630 --> 00:32:34,230 La primera caja - 626 00:32:34,230 --> 00:32:35,200 que hemos hecho esto antes. 627 00:32:35,200 --> 00:32:37,230 De hecho, hemos hecho esto en cada conjunto de problemas. 628 00:32:37,230 --> 00:32:42,610 Puede referirse a la primera caja en esta matriz como soporte de matriz cero. 629 00:32:42,610 --> 00:32:44,970 Lo hemos hecho un millón de veces. 630 00:32:44,970 --> 00:32:47,860 >> Puedo referir realmente a la mismo cuadro de otra manera. 631 00:32:47,860 --> 00:32:50,630 Puedo referirme a ella como variedad estrella. 632 00:32:50,630 --> 00:32:55,620 Debido a la matriz, si fuéramos realmente imprimir lo que es igual a la matriz, la matriz es 633 00:32:55,620 --> 00:33:01,340 una dirección, y es una dirección de el primer cuadro de esta matriz. 634 00:33:01,340 --> 00:33:06,590 Para que el operador estrellas trata lo que es almacenada en el arreglo como una dirección, va a 635 00:33:06,590 --> 00:33:09,180 esa dirección, y regresa el valor allí. 636 00:33:09,180 --> 00:33:15,870 Array estrella volverá f igual soporte de matriz cero devuelve f. 637 00:33:15,870 --> 00:33:19,850 >> Una vez más, todos los lugares que hemos estado escribiendo cero soporte matriz, array estrella haría 638 00:33:19,850 --> 00:33:21,440 han hecho exactamente lo mismo. 639 00:33:21,440 --> 00:33:25,570 De hecho, el soporte de matriz cero es sólo nuestra capa de azúcar de 640 00:33:25,570 --> 00:33:26,270 lo que realmente ocurrió. 641 00:33:26,270 --> 00:33:29,420 Es realmente variedad estrella es la más forma correcta, si no es correcta 642 00:33:29,420 --> 00:33:32,840 manera, pensar en lo que es sucediendo realmente. 643 00:33:32,840 --> 00:33:37,280 >> Así que eso es todo bien y bueno, pero aquí es donde se pone fantástico. 644 00:33:37,280 --> 00:33:40,560 Vamos al segundo carácter aquí, este cero. 645 00:33:40,560 --> 00:33:42,870 En caso de ser un O, pero vamos a darle un cero. 646 00:33:42,870 --> 00:33:45,570 Estamos referimos a que, antes, la segundo cuadro en una matriz, como un array 647 00:33:45,570 --> 00:33:49,000 soporte de uno cada vez que nos hemos iterado a través de una matriz. 648 00:33:49,000 --> 00:33:51,860 >> Hay otra manera de referirse a él, y eso es abajo. 649 00:33:51,860 --> 00:33:57,750 Esa estrella, paren abiertas, array más 1, paren cerrado. 650 00:33:57,750 --> 00:34:01,400 Así que debido a las matrices se colocan - estos cajas están uno al lado del otro 651 00:34:01,400 --> 00:34:03,350 en la memoria - 652 00:34:03,350 --> 00:34:06,110 array estrella va a la primera. 653 00:34:06,110 --> 00:34:10,940 Así que si vamos a tomar matriz que dirección, añadir 1 a la misma, y ​​luego ir a 654 00:34:10,940 --> 00:34:13,070 que la nueva dirección, que va ser lo correcto al lado 655 00:34:13,070 --> 00:34:14,150 la dirección original. 656 00:34:14,150 --> 00:34:14,896 >> ¿Sí? 657 00:34:14,896 --> 00:34:18,810 >> ESTUDIANTE: Entonces, si array era, en lugar de siendo caracteres, sería enteros, a continuación, 658 00:34:18,810 --> 00:34:21,659 habría que incrementar por 4 cada vez? 659 00:34:21,659 --> 00:34:22,980 >> JASON HIRSCHHORN: eso es una gran pregunta. 660 00:34:22,980 --> 00:34:24,850 Permítanme llamar algo primero, entonces estoy va a responder a su pregunta. 661 00:34:24,850 --> 00:34:47,030 662 00:34:47,030 --> 00:34:49,300 >> Para dibujar esta en la pantalla realmente rápidamente antes de llegar a su 663 00:34:49,300 --> 00:34:51,219 pregunta, tenemos nuestra matriz - 664 00:34:51,219 --> 00:34:57,690 665 00:34:57,690 --> 00:35:00,530 y se va, pero yo sólo voy a centrarse en el primer par de unos. 666 00:35:00,530 --> 00:35:04,800 667 00:35:04,800 --> 00:35:08,020 En la memoria, hay una caja que creamos cuando nos 668 00:35:08,020 --> 00:35:10,130 inicializado esta matriz. 669 00:35:10,130 --> 00:35:12,795 Esta es la variable de la matriz, y es una dirección. 670 00:35:12,795 --> 00:35:17,420 Es, de hecho, la dirección de la Lo primero, la primera casilla. 671 00:35:17,420 --> 00:35:18,740 Así que este cuadro está en alguna parte. 672 00:35:18,740 --> 00:35:21,760 Estas seis cajas están en otra parte. 673 00:35:21,760 --> 00:35:24,810 >> Cuando hacemos el soporte de matriz cero, estamos va a conseguir lo primero aquí. 674 00:35:24,810 --> 00:35:28,370 Y cuando lo hacemos variedad estrella, vamos para conseguir exactamente lo mismo, el valor 675 00:35:28,370 --> 00:35:30,320 esa matriz está señalando. 676 00:35:30,320 --> 00:35:35,360 >> Cuando hacemos matriz soporte 1, vamos para obtener el segundo cuadro, sino también, 677 00:35:35,360 --> 00:35:39,630 porque el puntero está fuera de los paréntesis, primero vamos a añadir 678 00:35:39,630 --> 00:35:43,520 1 a esta dirección, y luego nos vamos seguir ese y nos la dará 679 00:35:43,520 --> 00:35:45,220 segunda casilla. 680 00:35:45,220 --> 00:35:47,800 Y así sucesivamente y así sucesivamente. 681 00:35:47,800 --> 00:35:51,860 >> Matriz más 2 va a añadir 2 del presente abordar aquí, porque una vez más, las direcciones 682 00:35:51,860 --> 00:35:54,640 están representados sólo números como hexadecimal, a menudo. 683 00:35:54,640 --> 00:36:00,070 Así que añadir 2 a la misma, y ​​para continuar, a la tercera caja, que pasa a ser, como usted 684 00:36:00,070 --> 00:36:04,710 puede ver, dos espacios de distancia en el primer cuadro. 685 00:36:04,710 --> 00:36:07,470 >> Con suerte, eso lo hizo menos confuso en lugar de más confuso. 686 00:36:07,470 --> 00:36:08,540 Pero, ¿que hacen que sea más confuso? 687 00:36:08,540 --> 00:36:10,030 Una vez más, voy a llegar a su pregunta en un segundo. 688 00:36:10,030 --> 00:36:12,250 ¿Eso es más confuso para nadie, o ¿alguien tiene alguna 689 00:36:12,250 --> 00:36:14,820 preguntas acerca de esta idea de matrices como punteros? 690 00:36:14,820 --> 00:36:20,080 691 00:36:20,080 --> 00:36:21,560 >> Fantástico. 692 00:36:21,560 --> 00:36:23,450 También sería fantástico si tuviera preguntas. 693 00:36:23,450 --> 00:36:27,780 Pero pasar a su pregunta. 694 00:36:27,780 --> 00:36:30,910 695 00:36:30,910 --> 00:36:37,340 >> La pregunta era enteros en la memoria tomar hasta cuatro bytes, por lo que cuatro cajas. 696 00:36:37,340 --> 00:36:42,050 Si pensamos en una cajas como un byte, enteros ocupan cuatro cajas. 697 00:36:42,050 --> 00:36:44,560 >> Así que dicen que estos son números enteros ahora. 698 00:36:44,560 --> 00:36:50,680 Este es un arreglo int aquí. 699 00:36:50,680 --> 00:36:52,570 Voy a hacer un poco de direcciones aleatorias. 700 00:36:52,570 --> 00:36:58,410 Así que si se trataba de un arreglo int, el primero podría ser un 10. 701 00:36:58,410 --> 00:37:03,210 El próximo uno cuatro cajas más porque enteros son cuatro cajas grandes. 702 00:37:03,210 --> 00:37:07,690 Hay esté 10, 11, 12, 13, por lo que éste sería un 14. 703 00:37:07,690 --> 00:37:08,870 Éste sería un 18. 704 00:37:08,870 --> 00:37:13,830 Éste sería un 22, y así sucesivamente. 705 00:37:13,830 --> 00:37:15,590 >> Así que de nuevo, son caracteres de un byte. 706 00:37:15,590 --> 00:37:17,380 Están justo al lado del otro, por lo que este mapa hablábamos 707 00:37:17,380 --> 00:37:19,190 antes de que funciona perfectamente. 708 00:37:19,190 --> 00:37:20,710 >> Pero usted acaba de traer para arriba el caso de enteros. 709 00:37:20,710 --> 00:37:23,440 Bueno, si he añadido 1 de la presente, se iría a 11. 710 00:37:23,440 --> 00:37:25,710 Sería en el medio de esta int si he seguido realmente 711 00:37:25,710 --> 00:37:26,710 específicamente por el estilo. 712 00:37:26,710 --> 00:37:30,070 En realidad estaba cuadro iba por la caja en la memoria. 713 00:37:30,070 --> 00:37:36,750 >> Lo bueno de este tipo de aritmética de punteros es el programa es 714 00:37:36,750 --> 00:37:38,840 lo suficientemente inteligente como para saber lo que quieres decir. 715 00:37:38,840 --> 00:37:46,000 Cuando usted está agregando 1 a una memoria dirección que apunta a un 716 00:37:46,000 --> 00:37:49,470 número entero, no es en realidad va añadir una manzana. 717 00:37:49,470 --> 00:37:51,150 Se va a añadir cuatro cuadras. 718 00:37:51,150 --> 00:37:54,530 Se va a escalar ese número para que usted compre el tamaño. 719 00:37:54,530 --> 00:37:57,780 >> Y esto se remonta a la pregunta de Curtis, ¿por qué hacemos int estrellas en vez 720 00:37:57,780 --> 00:37:58,595 de estrellas Char? 721 00:37:58,595 --> 00:38:01,050 ¿Era eso a tu pregunta? 722 00:38:01,050 --> 00:38:02,220 Alguien le preguntó que antes, ¿no? 723 00:38:02,220 --> 00:38:06,200 Por qué lo hacemos int estrellas en vez de carbón estrella, si se va a tratar no 724 00:38:06,200 --> 00:38:06,960 importa qué? 725 00:38:06,960 --> 00:38:09,790 Y eso es para que nos ayude con este tipo de aritmética de punteros. 726 00:38:09,790 --> 00:38:12,660 Si declaramos algo como una estrella de carbón pero que realmente va a través de 727 00:38:12,660 --> 00:38:16,890 enteros, cuando añadimos 1, sólo se mover una caja en lugar de la 728 00:38:16,890 --> 00:38:21,540 cuatro que lógicamente esperamos que se mueva otra vez. 729 00:38:21,540 --> 00:38:26,180 >> Así que de nuevo, en la aritmética de punteros, cuando estamos tratando a estas cosas como 730 00:38:26,180 --> 00:38:29,890 direcciones, a continuación, añadiendo o restando a ellos y luego siguiendo a 731 00:38:29,890 --> 00:38:35,410 averiguar lo que está pasando en la memoria, el número le sumamos a ellos se redujo 732 00:38:35,410 --> 00:38:39,491 por el tamaño del tipo de cosas están señalando. 733 00:38:39,491 --> 00:38:41,100 >> Así que si están apuntando a un entero - 734 00:38:41,100 --> 00:38:42,380 Sé que me repito - 735 00:38:42,380 --> 00:38:45,030 pero si son un número entero, que está en realidad va a pasar cuatro 736 00:38:45,030 --> 00:38:46,760 cajas más cada vez. 737 00:38:46,760 --> 00:38:49,230 Si son un char, eres va a mover una caja. 738 00:38:49,230 --> 00:38:52,720 Si son mucho, mucho, que es de ocho bytes, usted va a mover 739 00:38:52,720 --> 00:38:53,880 ocho cajas más. 740 00:38:53,880 --> 00:38:55,940 Cualquiera que sea el tamaño de la tipo de datos, ¿quién sabe? 741 00:38:55,940 --> 00:38:57,690 Realmente no importa para nuestros propósitos. 742 00:38:57,690 --> 00:39:01,450 Todo lo que tenemos que saber es, en realidad, esta matemática aquí, sólo añadir 1 743 00:39:01,450 --> 00:39:04,280 a nosotros llegar a la segunda casilla con independencia de qué tipo de cosa es en 744 00:39:04,280 --> 00:39:05,530 que la segunda caja. 745 00:39:05,530 --> 00:39:09,860 746 00:39:09,860 --> 00:39:13,870 >> Espero que haya algún tipo de preguntas aquí, porque era mucho, y yo 747 00:39:13,870 --> 00:39:15,780 no podría haber hecho una perfecta trabajo en explicar eso. 748 00:39:15,780 --> 00:39:18,280 749 00:39:18,280 --> 00:39:19,260 ¿En serio? 750 00:39:19,260 --> 00:39:20,980 No hay preguntas? 751 00:39:20,980 --> 00:39:23,660 Para el público en su casa - ahí vamos. 752 00:39:23,660 --> 00:39:27,490 >> ESTUDIANTE: Si se va a realizar una serie en una función, y usted quiere que 753 00:39:27,490 --> 00:39:31,095 devolver esa matriz a otra cosa, ¿cómo devolverlo? 754 00:39:31,095 --> 00:39:32,830 >> JASON HIRSCHHORN: Excelente pregunta. 755 00:39:32,830 --> 00:39:37,260 Así que si quería hacer una matriz en una función y, a continuación, devolver esa matriz - 756 00:39:37,260 --> 00:39:41,300 así que vamos a decir vamos a hacer una serie en una función llamada por el principal. 757 00:39:41,300 --> 00:39:45,750 Main llama esta función, y esto función crea la matriz, entonces 758 00:39:45,750 --> 00:39:47,100 la devuelve al principal. 759 00:39:47,100 --> 00:39:49,370 >> Ahora que hemos visto algo similar a esto antes. 760 00:39:49,370 --> 00:39:52,810 ¿Dónde hemos visto algo similar donde principal crea la matriz, y luego 761 00:39:52,810 --> 00:39:55,880 la función que manipula dicha información? 762 00:39:55,880 --> 00:39:58,380 ¿Qué hemos escrito antes eso se hace eso? 763 00:39:58,380 --> 00:39:59,626 >> ESTUDIANTE: Clasificación? 764 00:39:59,626 --> 00:40:01,890 >> JASON HIRSCHHORN: Clasificación ha hecho eso. 765 00:40:01,890 --> 00:40:03,980 Juego de 15 también ha hecho eso. 766 00:40:03,980 --> 00:40:09,680 En la clasificación, pasamos de la matriz, la pajar, y luego nos lo arreglaron por 767 00:40:09,680 --> 00:40:13,100 destructivamente actualización diferente partes en esa matriz. 768 00:40:13,100 --> 00:40:16,380 Así que tomamos nuestra matriz original - recuerde, uno de los parámetros a la 769 00:40:16,380 --> 00:40:18,010 función de clasificación fue array - 770 00:40:18,010 --> 00:40:19,858 >> ESTUDIANTE: ¿No es eso una matriz global? 771 00:40:19,858 --> 00:40:20,420 >> JASON HIRSCHHORN: Así es. 772 00:40:20,420 --> 00:40:21,610 Sí, vamos a volver allí. 773 00:40:21,610 --> 00:40:23,970 Pero si hubiera sido creada en - 774 00:40:23,970 --> 00:40:26,510 ¿fue un mundial, o fue creado en la función? 775 00:40:26,510 --> 00:40:28,115 Echemos un vistazo. 776 00:40:28,115 --> 00:40:29,638 Podemos responder a eso. 777 00:40:29,638 --> 00:40:49,700 778 00:40:49,700 --> 00:40:51,750 >> Parece que no es un array global. 779 00:40:51,750 --> 00:40:56,620 Se ha creado aquí mismo en esta línea una matriz de enteros, y entonces es 780 00:40:56,620 --> 00:40:59,820 pasado a nuestra función de clasificación. 781 00:40:59,820 --> 00:41:00,660 Así que no es un arreglo global. 782 00:41:00,660 --> 00:41:02,810 Se creó en principal, aprobada a nuestra función de clasificación. 783 00:41:02,810 --> 00:41:05,690 Nuestra función de clasificación destructivamente lo actualiza, y lo devuelve. 784 00:41:05,690 --> 00:41:09,310 Como podemos ver hacia arriba, más o menos - 785 00:41:09,310 --> 00:41:10,410 oh, Dios mío, lo siento. 786 00:41:10,410 --> 00:41:12,790 >> ESTUDIANTE: Ordenar simplemente devuelve si o no la encuentra? 787 00:41:12,790 --> 00:41:13,350 >> JASON HIRSCHHORN: Así es. 788 00:41:13,350 --> 00:41:14,120 Lo siento. 789 00:41:14,120 --> 00:41:16,320 Ordenar realidad - vamos a abrir eso. 790 00:41:16,320 --> 00:41:20,320 791 00:41:20,320 --> 00:41:21,310 Ordenar es nula. 792 00:41:21,310 --> 00:41:24,350 Ordenar no devuelve nada porque actualiza especie destructiva de la matriz, 793 00:41:24,350 --> 00:41:26,340 la matriz original. 794 00:41:26,340 --> 00:41:30,520 >> Así que eso es lo que hemos visto antes, pero su pregunta era ¿qué pasa si una especie 795 00:41:30,520 --> 00:41:32,155 en realidad crea la matriz? 796 00:41:32,155 --> 00:41:36,870 >> ESTUDIANTE: Consulte devuelve la actualización array, o algo así. 797 00:41:36,870 --> 00:41:39,030 >> JASON HIRSCHHORN: Otra cosa que se podría haber hecho fue principal llamado 798 00:41:39,030 --> 00:41:39,840 la función. 799 00:41:39,840 --> 00:41:44,570 Trabajo de esa función es la de crear un gama de algo, una serie de 800 00:41:44,570 --> 00:41:49,390 enteros, y luego regresan que array es creado a principal. 801 00:41:49,390 --> 00:41:55,080 >> Así como hemos visto antes al hablar alrededor de la pila, lo que vamos a 802 00:41:55,080 --> 00:42:00,390 hablar un poco más tarde hoy, una vez al devuelve la función, todo lo que era 803 00:42:00,390 --> 00:42:03,490 creado en esa función, todos sus variables locales, desaparecen. 804 00:42:03,490 --> 00:42:04,910 Hemos visto que la idea del alcance antes. 805 00:42:04,910 --> 00:42:07,750 Es por eso que hemos creado mundial variables que en algún momento, para escapar de esta 806 00:42:07,750 --> 00:42:11,790 problema de las cosas va a desaparecer cuando sus funciones devuelven. 807 00:42:11,790 --> 00:42:15,970 >> Lo que se puede hacer en ese caso es la función sería crear la matriz no como 808 00:42:15,970 --> 00:42:17,870 una variable local en la pila. 809 00:42:17,870 --> 00:42:21,670 Crearía en una parte diferente de memoria que permite que las cosas sean 810 00:42:21,670 --> 00:42:26,050 guardan incluso cuando las funciones se han vuelto y el marco de la función, el 811 00:42:26,050 --> 00:42:28,330 apilar marco, ha dejado la pila. 812 00:42:28,330 --> 00:42:29,770 >> Voy a utilizar algunos terminología aquí. 813 00:42:29,770 --> 00:42:31,620 No vas a conocer a esta hasta mañana, pero esa zona de 814 00:42:31,620 --> 00:42:34,320 memoria se llama el montón, y Yo no quiero entrar en eso. 815 00:42:34,320 --> 00:42:39,140 Pero lo que esa función podría hacer, de nuevo simplificar en exceso potencialmente, es crear 816 00:42:39,140 --> 00:42:43,390 esa matriz en un espacio diferente en memoria que en realidad se queda allí por 817 00:42:43,390 --> 00:42:47,920 siempre y cuando usted quiere que permanezca allí, y que va a pasar de nuevo a un puntero principal 818 00:42:47,920 --> 00:42:51,400 a esa matriz guardada en que otra parte de la memoria. 819 00:42:51,400 --> 00:42:54,960 Así que tiene unas cajas en otro lugar que no se deje destruidos cuando el 820 00:42:54,960 --> 00:43:00,770 función devuelve y pasa de nuevo a principal una dirección a ese conjunto de cajas. 821 00:43:00,770 --> 00:43:03,760 >> Esto probablemente no es una suficiente responder a su pregunta, pero 822 00:43:03,760 --> 00:43:05,520 que se estudiarán más mañana cuando ustedes habláis 823 00:43:05,520 --> 00:43:06,770 sobre el montón de conferencia. 824 00:43:06,770 --> 00:43:09,330 825 00:43:09,330 --> 00:43:11,590 >> Pasemos - oh, Dios mío! 826 00:43:11,590 --> 00:43:12,850 Eso es un delfín! 827 00:43:12,850 --> 00:43:14,650 ¿Cómo adorable es eso? 828 00:43:14,650 --> 00:43:15,660 Dios! 829 00:43:15,660 --> 00:43:18,170 Ellos son mi animal preferido, por lo que son realmente adorables. 830 00:43:18,170 --> 00:43:19,720 Tengo tres animales delfín de peluche. 831 00:43:19,720 --> 00:43:21,930 Pero basta de mí. 832 00:43:21,930 --> 00:43:23,910 >> Todos ustedes tienen sus ordenadores abrir delante de usted. 833 00:43:23,910 --> 00:43:25,530 Aquí está tu tarea de codificación. 834 00:43:25,530 --> 00:43:28,650 Vamos a comenzar con pseudocódigo, sin embargo, así que no te emociones demasiado. 835 00:43:28,650 --> 00:43:32,780 >> Usted tiene que escribir un programa que toma una y sólo una línea de comandos 836 00:43:32,780 --> 00:43:35,990 argumento, y eso es el número de delfines para ser entrenados. 837 00:43:35,990 --> 00:43:38,470 Ese número debe ser mayor que 0. 838 00:43:38,470 --> 00:43:41,160 >> A continuación, vamos a permitir que el entrenador para entrar en una era de 839 00:43:41,160 --> 00:43:42,540 cada uno de estos delfines. 840 00:43:42,540 --> 00:43:45,540 Cada era, de nuevo, en caso de ser mayor que 0. 841 00:43:45,540 --> 00:43:49,930 Y todas estas edades debe ser almacenados en una matriz. 842 00:43:49,930 --> 00:43:53,740 >> Para tener una edad, sin embargo, es necesario llamar a una función con la siguiente 843 00:43:53,740 --> 00:43:55,580 prototipo - 844 00:43:55,580 --> 00:44:01,750 int estrella, espacio, getAge, paréntesis, vacío, cerrar paréntesis, punto y coma. 845 00:44:01,750 --> 00:44:06,380 >> Por último, quiero que la impriman la edad del delfín más viejo. 846 00:44:06,380 --> 00:44:10,490 Así que de nuevo, antes de empezar a escribir en código, tener una hoja de papel o tener 847 00:44:10,490 --> 00:44:14,020 gedit abierto si lo desea, y escribir algunos pseudocódigo para este. 848 00:44:14,020 --> 00:44:16,560 En tres minutos, vamos para repasar el pseudocódigo. 849 00:44:16,560 --> 00:44:19,260 Vas a tener otros tres minutos a que el código y, a continuación vamos a repasar la codificación 850 00:44:19,260 --> 00:44:21,180 juntos. 851 00:44:21,180 --> 00:44:25,370 >> Y si usted tiene alguna pregunta, porque esto no está claro, levanta la mano y 852 00:44:25,370 --> 00:44:27,720 Voy a venir alrededor, y estoy feliz para responder a su pregunta. 853 00:44:27,720 --> 00:44:31,080 Pero para empezar, tomar tres minutos escribir pseudocódigo para asegurarse de que 854 00:44:31,080 --> 00:44:32,675 entender la lógica de este problema. 855 00:44:32,675 --> 00:46:40,160 856 00:46:40,160 --> 00:46:44,030 >> Vamos a tomar una puñalada en el pseudocódigo como un grupo. 857 00:46:44,030 --> 00:46:46,780 Voy a escribir esto en la pizarra como usted me da el pseudocódigo. 858 00:46:46,780 --> 00:46:49,350 ¿Quién quiere dar yo la primera línea? 859 00:46:49,350 --> 00:46:51,170 En primer lugar de la línea tal vez la más fácil, así que si no tienes 860 00:46:51,170 --> 00:46:54,010 sin embargo participado, comience aquí. 861 00:46:54,010 --> 00:46:56,020 ¿Cuál es la primera línea de pseudocódigo. 862 00:46:56,020 --> 00:47:02,322 >> ESTUDIANTE: Primera línea es comprobar que la número de argumentos que reciba. 863 00:47:02,322 --> 00:47:03,768 >> JASON HIRSCHHORN: Exactamente. 864 00:47:03,768 --> 00:47:10,516 865 00:47:10,516 --> 00:47:14,150 Compruebe el número de argumentos, primero Lo que tenemos que hacer. 866 00:47:14,150 --> 00:47:15,400 Siguiente? 867 00:47:15,400 --> 00:47:22,010 868 00:47:22,010 --> 00:47:27,776 >> ESTUDIANTE: Compruebe que ese comando, el primer argumento, es mayor que 0? 869 00:47:27,776 --> 00:47:31,050 >> JASON HIRSCHHORN: Compruebe que el primer argumento es mayor que 0, sí. 870 00:47:31,050 --> 00:47:38,930 871 00:47:38,930 --> 00:47:40,400 La siguiente línea, adelante. 872 00:47:40,400 --> 00:47:47,020 >> ESTUDIANTE: Entonces usted probablemente querrá almacenar ese argumento de la línea de comandos en 873 00:47:47,020 --> 00:47:51,380 una variable, o usted podría ir a la siguiente etapa. 874 00:47:51,380 --> 00:47:55,340 >> JASON HIRSCHHORN: Sí, una vez más, vamos a tener una cadena de aquí, pero queremos una 875 00:47:55,340 --> 00:47:57,600 entero porque es un número, por lo que necesitamos para hacer el 876 00:47:57,600 --> 00:47:58,650 cadena en un entero. 877 00:47:58,650 --> 00:47:59,210 >> ESTUDIANTE: x, y. 878 00:47:59,210 --> 00:48:00,090 >> JASON HIRSCHHORN: Eso es correcto. 879 00:48:00,090 --> 00:48:01,970 Por lo tanto, vamos a escribir eso. 880 00:48:01,970 --> 00:48:04,542 String - Whoa, mira a ese marcador. 881 00:48:04,542 --> 00:48:06,760 Esa es la segunda cosa que necesitamos hacer, tomar la cuerda y 882 00:48:06,760 --> 00:48:07,490 convertirlo en un int. 883 00:48:07,490 --> 00:48:08,740 ¿Qué sigue? 884 00:48:08,740 --> 00:48:13,220 885 00:48:13,220 --> 00:48:18,770 >> ESTUDIANTE: Crear una matriz de enteros con el tamaño de la primera línea de comandos 886 00:48:18,770 --> 00:48:20,190 argumento que no está programado? 887 00:48:20,190 --> 00:48:20,950 >> JASON HIRSCHHORN: ¿Lo sientes? 888 00:48:20,950 --> 00:48:26,957 >> ESTUDIANTE: Basta con crear una matriz de enteros, y hacer que el tamaño del comando 889 00:48:26,957 --> 00:48:28,260 argumento de la línea que tienes. 890 00:48:28,260 --> 00:48:30,920 >> JASON HIRSCHHORN: Crear matriz de tamaño - 891 00:48:30,920 --> 00:48:33,930 haremos arg, cualquiera que sea ese argumento era. 892 00:48:33,930 --> 00:48:34,850 ¿De acuerdo? 893 00:48:34,850 --> 00:48:36,100 ¿Qué sigue? 894 00:48:36,100 --> 00:48:44,310 895 00:48:44,310 --> 00:48:48,230 >> Así que tenemos la matriz, permite el entrenador para entrar en un 896 00:48:48,230 --> 00:48:50,096 edad para cada delfín. 897 00:48:50,096 --> 00:48:52,790 Para tener una edad, llamar a una función con el siguiente prototipo. 898 00:48:52,790 --> 00:48:53,480 Así que tenemos nuestra matriz. 899 00:48:53,480 --> 00:48:54,350 ¿Qué necesitamos hacer? 900 00:48:54,350 --> 00:48:56,805 >> ESTUDIANTE: Para n delfines? 901 00:48:56,805 --> 00:48:58,110 >> JASON HIRSCHHORN: OK. 902 00:48:58,110 --> 00:48:59,640 Voy a escribir para cada uno. 903 00:48:59,640 --> 00:49:01,580 Para cada una de delfines, lo que Qué tenemos que hacer? 904 00:49:01,580 --> 00:49:04,340 905 00:49:04,340 --> 00:49:05,785 Vaya por delante? 906 00:49:05,785 --> 00:49:08,400 >> ESTUDIANTE: Llame a la función. 907 00:49:08,400 --> 00:49:11,678 >> JASON HIRSCHHORN: Call la función, en Aceptar. 908 00:49:11,678 --> 00:49:15,640 >> ESTUDIANTE: En pseudocoding, debe usted definir funciones como en un aparte 909 00:49:15,640 --> 00:49:16,660 bloque de pseudocódigo? 910 00:49:16,660 --> 00:49:17,650 >> JASON HIRSCHHORN: Así que, sí. 911 00:49:17,650 --> 00:49:20,540 Vamos a hacer una caja separada de pseudocódigo aquí, pseudocódigo para getAge. 912 00:49:20,540 --> 00:49:23,600 Así que esta función, para cada delfín que llamamos getAge y 913 00:49:23,600 --> 00:49:25,370 getAge devuelve algo. 914 00:49:25,370 --> 00:49:27,840 Entonces, ¿dónde deberíamos poner el Lo que estamos volviendo? 915 00:49:27,840 --> 00:49:30,730 916 00:49:30,730 --> 00:49:32,690 Devuelve un puntero int, ¿verdad? 917 00:49:32,690 --> 00:49:35,810 Ese es el tipo de retorno, de acuerdo a que prototipo de función. 918 00:49:35,810 --> 00:49:37,620 Entonces, ¿dónde estamos poniendo que int puntero. 919 00:49:37,620 --> 00:49:41,828 920 00:49:41,828 --> 00:49:43,040 >> ESTUDIANTE: En la matriz. 921 00:49:43,040 --> 00:49:43,570 >> JASON HIRSCHHORN: En la matriz. 922 00:49:43,570 --> 00:49:44,460 Eso suena muy bien. 923 00:49:44,460 --> 00:49:53,270 Llame getAge, puso de retorno valor en la matriz. 924 00:49:53,270 --> 00:49:57,490 925 00:49:57,490 --> 00:49:58,850 >> Hagamos una pausa getAge por un segundo. 926 00:49:58,850 --> 00:49:59,855 Volveremos a eso. 927 00:49:59,855 --> 00:50:01,310 Y voy a dejar de empezar conmigo en eso, Marcus. 928 00:50:01,310 --> 00:50:02,790 Pero hemos llegado a cada edad. 929 00:50:02,790 --> 00:50:03,390 A todos ellos les hemos puesto en la matriz. 930 00:50:03,390 --> 00:50:04,640 ¿Qué hacemos al final? 931 00:50:04,640 --> 00:50:07,170 932 00:50:07,170 --> 00:50:10,640 ¿Cómo nos terminamos principal? 933 00:50:10,640 --> 00:50:13,630 ¿Cuál es la última cosa que necesitamos hacer? 934 00:50:13,630 --> 00:50:14,210 Alden? 935 00:50:14,210 --> 00:50:17,490 >> ESTUDIANTE: Podríamos clasificarlos, y a continuación, imprimir el hallazgo más grande. 936 00:50:17,490 --> 00:50:20,700 >> JASON HIRSCHHORN: Podríamos clasificarlos, sí. 937 00:50:20,700 --> 00:50:21,950 Entonces, ¿cómo resolvemos? 938 00:50:21,950 --> 00:50:25,670 939 00:50:25,670 --> 00:50:28,070 >> ESTUDIANTE: Podríamos igual que - 940 00:50:28,070 --> 00:50:30,600 >> JASON HIRSCHHORN: ¿Necesitamos para ordenar aquí, sin embargo? 941 00:50:30,600 --> 00:50:32,810 >> ESTUDIANTE: Supongo que no. 942 00:50:32,810 --> 00:50:33,760 >> JASON HIRSCHHORN: OK. 943 00:50:33,760 --> 00:50:34,920 Has hecho esto antes. 944 00:50:34,920 --> 00:50:37,300 ¿Cuál fue la primera forma usted escribió búsqueda? 945 00:50:37,300 --> 00:50:39,930 >> ESTUDIANTE: Podríamos comprobar cada uno contra el otro uno. 946 00:50:39,930 --> 00:50:40,640 >> JASON HIRSCHHORN: Vamos a hacer eso. 947 00:50:40,640 --> 00:50:44,090 Vamos a buscar a través de cada uno y sólo realizar un seguimiento de la edad antigua. 948 00:50:44,090 --> 00:50:47,850 949 00:50:47,850 --> 00:50:54,110 Buscar más antiguo, y entonces, ¿qué hacer tenemos que ver con el antiguo? 950 00:50:54,110 --> 00:50:55,330 >> ESTUDIANTE: devolverlo. 951 00:50:55,330 --> 00:50:56,280 Imprimirlo, lo siento. 952 00:50:56,280 --> 00:50:56,950 >> JASON HIRSCHHORN: Eso es. 953 00:50:56,950 --> 00:50:58,630 Exactamente derecha. 954 00:50:58,630 --> 00:51:02,400 Imprima más antigua. 955 00:51:02,400 --> 00:51:02,870 >> Aceptar. 956 00:51:02,870 --> 00:51:03,220 Marcus? 957 00:51:03,220 --> 00:51:05,800 >> ESTUDIANTE: Realizar un seguimiento de la más antiguo a medida que los agrega? 958 00:51:05,800 --> 00:51:07,900 >> JASON HIRSCHHORN: OK, buscar más antigua. 959 00:51:07,900 --> 00:51:11,910 Así podríamos seguir la pista de los más antiguos como los sumamos allí. 960 00:51:11,910 --> 00:51:16,360 Llame getAge, poner el valor de retorno en la matriz, y luego ver si este es el 961 00:51:16,360 --> 00:51:18,950 actual más antigua, tal vez salvar en una variable diferente? 962 00:51:18,950 --> 00:51:20,400 Eso funcionaría también. 963 00:51:20,400 --> 00:51:24,150 Eso podría en realidad nos ahorrará un viaje, pero esto es fantástico. 964 00:51:24,150 --> 00:51:26,120 Voy a dejar este hasta aquí por ahora. 965 00:51:26,120 --> 00:51:28,420 Pero si usted quiere en su aplicación tome ese paso 966 00:51:28,420 --> 00:51:29,980 aún más, eso sería genial. 967 00:51:29,980 --> 00:51:30,520 >> Marcus? 968 00:51:30,520 --> 00:51:31,950 Vamos a hacer getAge aquí. 969 00:51:31,950 --> 00:51:33,930 >> MARCUS: OK. 970 00:51:33,930 --> 00:51:36,000 Preguntar al usuario para una edad. 971 00:51:36,000 --> 00:51:38,400 >> JASON HIRSCHHORN: Ask el usuario de una era. 972 00:51:38,400 --> 00:51:39,650 Aceptar. 973 00:51:39,650 --> 00:51:44,285 974 00:51:44,285 --> 00:51:46,252 ¿Todos pueden ver eso? 975 00:51:46,252 --> 00:51:47,900 Por aquí? 976 00:51:47,900 --> 00:51:51,530 Aceptar, pide al usuario una edad. 977 00:51:51,530 --> 00:51:52,780 Sigue adelante, tienes esto. 978 00:51:52,780 --> 00:51:55,250 979 00:51:55,250 --> 00:51:58,900 >> MARCUS: Supongo que realmente no entiendo por qué es mejor devolver un int estrella de lo que 980 00:51:58,900 --> 00:52:02,020 sólo un int, como entonces sólo devolver la edad para almacenarlo. 981 00:52:02,020 --> 00:52:04,200 >> JASON HIRSCHHORN: No es necesariamente mejor volver. 982 00:52:04,200 --> 00:52:07,335 Sería funcionar igual de bien en regresar, pero quiero que regreses int estrellas. 983 00:52:07,335 --> 00:52:08,585 >> MARCUS: OK. 984 00:52:08,585 --> 00:52:11,120 985 00:52:11,120 --> 00:52:12,620 Realmente no sé qué - 986 00:52:12,620 --> 00:52:13,050 >> JASON HIRSCHHORN: OK. 987 00:52:13,050 --> 00:52:14,430 ¿Alguien tiene alguna idea? 988 00:52:14,430 --> 00:52:15,580 Pedimos usuario para una edad. 989 00:52:15,580 --> 00:52:16,830 Estamos recibiendo un número entero. 990 00:52:16,830 --> 00:52:23,970 991 00:52:23,970 --> 00:52:24,580 >> Aceptar. 992 00:52:24,580 --> 00:52:28,140 Entonces, ¿por qué no nos detenemos aquí. 993 00:52:28,140 --> 00:52:31,350 Vamos a ir a nuestro próximo paso en la lógica, el mapa estas cosas en ver, 994 00:52:31,350 --> 00:52:35,480 y después de que ustedes se codificar ese primer parte, y código bien todo eso 995 00:52:35,480 --> 00:52:37,380 juntos, pero un getAge en particular. 996 00:52:37,380 --> 00:52:39,395 Y vamos a averiguar lo que está pasando con ese int estrellas. 997 00:52:39,395 --> 00:52:41,970 998 00:52:41,970 --> 00:52:45,440 >> Pero antes de hacer eso, antes de saltar en código C, se puede señalar a alguien 999 00:52:45,440 --> 00:52:49,682 algunas cosas que ven en nuestro pseudocódigo eso mapa en código normal? 1000 00:52:49,682 --> 00:52:53,130 1001 00:52:53,130 --> 00:52:53,850 En C? 1002 00:52:53,850 --> 00:52:57,580 Por lo que algunas cosas en pseudocódigo, algunas palabras ves, algunos de sangrado que haya 1003 00:52:57,580 --> 00:53:00,435 ver, algunas cosas que le dan un poco de pistas sobre cómo codificar esto en C? 1004 00:53:00,435 --> 00:53:01,360 >> ESTUDIANTE: Para lazo. 1005 00:53:01,360 --> 00:53:01,930 >> JASON HIRSCHHORN: ¿Dónde? 1006 00:53:01,930 --> 00:53:04,356 >> ESTUDIANTE:. Porque "para cada" delfín " 1007 00:53:04,356 --> 00:53:06,310 >> JASON HIRSCHHORN: OK. 1008 00:53:06,310 --> 00:53:06,910 Eso es. 1009 00:53:06,910 --> 00:53:07,920 Tenemos un lazo allí. 1010 00:53:07,920 --> 00:53:09,420 ¿Qué más? 1011 00:53:09,420 --> 00:53:09,920 Mondo? 1012 00:53:09,920 --> 00:53:12,410 >> ESTUDIANTE: La cadena a int cosa sería una de i 1013 00:53:12,410 --> 00:53:14,270 >> JASON HIRSCHHORN: OK. 1014 00:53:14,270 --> 00:53:15,850 Así hemos visto que la función anterior. 1015 00:53:15,850 --> 00:53:19,180 1016 00:53:19,180 --> 00:53:20,430 Otras cosas que vemos? 1017 00:53:20,430 --> 00:53:26,456 1018 00:53:26,456 --> 00:53:27,992 >> ESTUDIANTE: Printf. 1019 00:53:27,992 --> 00:53:29,920 >> JASON HIRSCHHORN: Exactamente. 1020 00:53:29,920 --> 00:53:35,470 No, obviamente, pero espero que tengamos familiarizado ahora con printf. 1021 00:53:35,470 --> 00:53:38,340 ¿Qué más? 1022 00:53:38,340 --> 00:53:38,660 ¿Sí? 1023 00:53:38,660 --> 00:53:41,230 >> ESTUDIANTE: Lectura de un array es simplemente declarando una matriz? 1024 00:53:41,230 --> 00:53:42,350 >> JASON HIRSCHHORN: OK. 1025 00:53:42,350 --> 00:53:45,410 Así, de tamaño arg. 1026 00:53:45,410 --> 00:53:46,190 Eso es correcto. 1027 00:53:46,190 --> 00:53:49,140 No sé qué escribir que como, pero sí, declarando una. 1028 00:53:49,140 --> 00:53:50,490 Otra palabra para crearlo. 1029 00:53:50,490 --> 00:53:53,070 Cualesquiera otras cosas que vemos aquí? 1030 00:53:53,070 --> 00:53:53,830 Estructuras que conocemos? 1031 00:53:53,830 --> 00:53:56,340 ¿Qué pasa con esa línea de "búsqueda por mayor? "¿Qué tipo de 1032 00:53:56,340 --> 00:53:57,290 estructura puede que utilizar? 1033 00:53:57,290 --> 00:54:00,370 Alden, se lo sugirió. 1034 00:54:00,370 --> 00:54:01,620 >> ESTUDIANTE: Sólo tienes que buscar. 1035 00:54:01,620 --> 00:54:04,812 1036 00:54:04,812 --> 00:54:06,850 así como sólo un bucle. 1037 00:54:06,850 --> 00:54:07,920 >> JASON HIRSCHHORN: Un bucle. 1038 00:54:07,920 --> 00:54:10,420 Así, buscan. 1039 00:54:10,420 --> 00:54:12,510 Probablemente se esté hablando de lineal buscar aquí, así que es probable que 1040 00:54:12,510 --> 00:54:14,550 simplemente usando un bucle estándar de pasar por todo, por lo que 1041 00:54:14,550 --> 00:54:17,630 Curtis sugirió que podría poner en el bucle anterior. 1042 00:54:17,630 --> 00:54:19,810 >> Cualesquiera otras cosas que vemos? 1043 00:54:19,810 --> 00:54:22,260 Compruebe el número de argumentos. 1044 00:54:22,260 --> 00:54:23,300 ¿Cómo comprobamos algo? 1045 00:54:23,300 --> 00:54:24,782 >> ESTUDIANTE: Si los estados. 1046 00:54:24,782 --> 00:54:31,710 1047 00:54:31,710 --> 00:54:32,130 Y 1048 00:54:32,130 --> 00:54:33,640 >> JASON HIRSCHHORN: Eso es si una condición. 1049 00:54:33,640 --> 00:54:37,040 1050 00:54:37,040 --> 00:54:39,460 >> Así que, ¿por qué no empezar codificación de este programa. 1051 00:54:39,460 --> 00:54:40,570 Usted tiene el pseudocódigo aquí. 1052 00:54:40,570 --> 00:54:42,310 Comience a escribir y en el código C. 1053 00:54:42,310 --> 00:54:47,050 Una vez más, vamos a averiguar lo que es pasa con eso int estrella y 1054 00:54:47,050 --> 00:54:50,910 cómo realmente podemos escribir este programa para que se ajuste a la 1055 00:54:50,910 --> 00:54:52,870 especificación que te he dado. 1056 00:54:52,870 --> 00:54:57,330 Si lo desea, sin embargo, comenzar con sólo int quedaría invalidada. 1057 00:54:57,330 --> 00:54:58,620 Simplemente devuelve un entero. 1058 00:54:58,620 --> 00:55:00,070 >> Eso ayuda a ponerse en marcha. 1059 00:55:00,070 --> 00:55:01,380 Sólo codificar que. 1060 00:55:01,380 --> 00:55:04,760 Código sólo como el tipo de retorno como un int, no como un int estrellas. 1061 00:55:04,760 --> 00:55:07,340 Pero entonces vamos a convertirlo en int estrella otra vez para que podamos cumplir con 1062 00:55:07,340 --> 00:55:08,040 la especificación. 1063 00:55:08,040 --> 00:55:12,220 También explorará cómo uno podría realmente llegar a lo que era Jeff 1064 00:55:12,220 --> 00:55:13,550 hablando antes. 1065 00:55:13,550 --> 00:55:16,800 Así que toma tres a cinco minutos para codificar este. 1066 00:55:16,800 --> 01:01:16,860 1067 01:01:16,860 --> 01:01:19,590 >> Vamos a ir a través de este código juntos. 1068 01:01:19,590 --> 01:01:23,360 Pido disculpas si hubo una falta de claridad en algunas partes de este. 1069 01:01:23,360 --> 01:01:26,240 Pero lo que vamos a mirar a la derecha ahora es que ya he escrito todo el 1070 01:01:26,240 --> 01:01:29,690 código de lo que se verá como si sólo estamos devolviendo un 1071 01:01:29,690 --> 01:01:30,690 entero con getAge. 1072 01:01:30,690 --> 01:01:33,390 Y vamos a ir a través de ese código, y entonces vamos a ver cómo podemos 1073 01:01:33,390 --> 01:01:38,900 realmente conseguir que se alinean con lo que era nos pide devolver un int estrellas. 1074 01:01:38,900 --> 01:01:39,560 >> Aquí está el código. 1075 01:01:39,560 --> 01:01:42,870 Y de nuevo, me disculpo que no podemos codificar esta como un grupo, pero quiero 1076 01:01:42,870 --> 01:01:44,410 para asegurarse de que superaremos. 1077 01:01:44,410 --> 01:01:47,050 >> Por la parte superior, tenemos nuestra función prototipo, getAge. 1078 01:01:47,050 --> 01:01:48,920 Hemos visto eso antes. 1079 01:01:48,920 --> 01:01:54,490 Vuelva tipo primero, y luego nombrar, entonces los parámetros. 1080 01:01:54,490 --> 01:01:57,930 >> Hasta aquí, hemos incluido tres bibliotecas. 1081 01:01:57,930 --> 01:02:00,560 ¿Puede alguien decirme qué esta línea 12 lo hace? 1082 01:02:00,560 --> 01:02:02,020 De Sharp incluye live.h estándar? 1083 01:02:02,020 --> 01:02:05,410 1084 01:02:05,410 --> 01:02:06,410 ¿Qué hace esa línea? 1085 01:02:06,410 --> 01:02:10,120 Si yo le preguntara esto en un concurso, y Le pedí que me das la respuesta en 1086 01:02:10,120 --> 01:02:14,060 dos frases, ¿qué le dirías? 1087 01:02:14,060 --> 01:02:15,310 >> ESTUDIANTE: [inaudible] 1088 01:02:15,310 --> 01:02:19,290 1089 01:02:19,290 --> 01:02:22,160 le permite utilizar todas las funciones almacenado en ese archivo. 1090 01:02:22,160 --> 01:02:23,310 >> JASON HIRSCHHORN: Eso es una buena respuesta. 1091 01:02:23,310 --> 01:02:28,140 Es la función de cabecera que tiene el prototipos de un número de funciones, 1092 01:02:28,140 --> 01:02:31,130 y si usted va a utilizar los de su biblioteca, esto está diciendo estos 1093 01:02:31,130 --> 01:02:32,900 existen funciones. 1094 01:02:32,900 --> 01:02:37,510 ¿Qué más tengo que hacer si soy incluyendo, por ejemplo, la biblioteca CS50? 1095 01:02:37,510 --> 01:02:39,660 ¿Qué más tengo que hacer cuando Puedo compilar mi programa? 1096 01:02:39,660 --> 01:02:43,550 >> ESTUDIANTE: [inaudible] incluir utilizando el tablero l. 1097 01:02:43,550 --> 01:02:46,980 Así que tenemos que vincular en aquellos biblioteca CS50 con tablero l de pie para el enlace. 1098 01:02:46,980 --> 01:02:51,310 Enlaces tablero l CS50 en los reales y ceros, la ejecución real 1099 01:02:51,310 --> 01:02:55,030 de, por ejemplo, obtener cadena o conseguir int. 1100 01:02:55,030 --> 01:02:57,090 >> Así que estamos en principal. 1101 01:02:57,090 --> 01:03:00,340 Asegúrese de usuario introdujo una y sólo un argumento de línea de comandos. 1102 01:03:00,340 --> 01:03:02,780 Al igual que nuestro pseudocódigo, tenemos que si condicionar aquí. 1103 01:03:02,780 --> 01:03:05,650 Esperemos que los chicos están muy familiarizados con esta línea y es capaz de 1104 01:03:05,650 --> 01:03:10,590 escribir este código con bastante rapidez, comprobar argc. 1105 01:03:10,590 --> 01:03:12,430 >> A continuación, lo estamos haciendo a un i LINE. 1106 01:03:12,430 --> 01:03:13,490 Una vez más, has visto eso antes. 1107 01:03:13,490 --> 01:03:17,310 Eso es convertir una cadena a un entero. 1108 01:03:17,310 --> 01:03:19,520 >> Lo siguiente que hago es que tengo otra condición if. 1109 01:03:19,520 --> 01:03:22,450 Me estoy asegurando de que entraron en una positiva número de delfines por la 1110 01:03:22,450 --> 01:03:26,810 especificaciones, comprobar si delfines es menor que 1. 1111 01:03:26,810 --> 01:03:31,090 Así que de nuevo, esta primera parte de la código, estas tres cosas - 1112 01:03:31,090 --> 01:03:33,300 comprobar el número de argumentos, si n es mayor que cero - 1113 01:03:33,300 --> 01:03:35,770 que ha escrito el código mucho, validar la entrada del usuario. 1114 01:03:35,770 --> 01:03:39,210 Usted debe estar bastante familiarizado con escribir el código y ser capaz de 1115 01:03:39,210 --> 01:03:41,100 escribir bastante rápido. 1116 01:03:41,100 --> 01:03:43,220 >> A continuación, vamos inicializar un nuevo array. 1117 01:03:43,220 --> 01:03:45,140 ¿Qué tipo de cosas estamos poniendo en esta matriz? 1118 01:03:45,140 --> 01:03:48,950 1119 01:03:48,950 --> 01:03:53,010 Los enteros por esta primera tres personajes. 1120 01:03:53,010 --> 01:03:57,020 >> A continuación, estamos recibiendo las edades, y una normal, bucle for itera a través de una matriz, 1121 01:03:57,020 --> 01:04:00,405 y estamos llamando a esta función getAge, almacenar el valor de retorno de 1122 01:04:00,405 --> 01:04:02,000 getAge en la matriz. 1123 01:04:02,000 --> 01:04:04,630 Una vez más, usted ha escrito código como esto mucho antes, también. 1124 01:04:04,630 --> 01:04:08,585 Una de las cosas que esperamos que pueda espigar de pasar por su pasado 1125 01:04:08,585 --> 01:04:10,930 problemas de esta prueba es que una gran cantidad de lo que vas a seguir haciendo 1126 01:04:10,930 --> 01:04:12,730 son cosas que ya has hecho. 1127 01:04:12,730 --> 01:04:15,820 Es muy importante ver a los patrones para que usted no va a 1128 01:04:15,820 --> 01:04:18,660 hacer su trabajo muy duro para usted en el futuro, pensando que nunca he hecho 1129 01:04:18,660 --> 01:04:19,050 esto antes. 1130 01:04:19,050 --> 01:04:21,400 Usted ha hecho todas estas cosas antes. 1131 01:04:21,400 --> 01:04:23,880 >> A continuación, nuestras últimas líneas de código. 1132 01:04:23,880 --> 01:04:27,890 Estamos manteniendo un registro de la edad antigua, pasando a través de cada edad, al igual que lo 1133 01:04:27,890 --> 01:04:29,040 sugerido, Alden. 1134 01:04:29,040 --> 01:04:33,060 Y si la edad de la cosa actual estamos iteración a través de es mayor 1135 01:04:33,060 --> 01:04:36,350 que el número más antiguo que hemos almacenado, actualizamos el número más antiguo. 1136 01:04:36,350 --> 01:04:40,170 >> Y, por último, al final, es la impresión de el número más antiguo. 1137 01:04:40,170 --> 01:04:41,340 Una vez más, usted ha hecho esto antes. 1138 01:04:41,340 --> 01:04:43,850 En realidad se ha escrito búsqueda lineal. 1139 01:04:43,850 --> 01:04:44,980 Usted ha escrito eso. 1140 01:04:44,980 --> 01:04:46,190 Fue un poco diferente. 1141 01:04:46,190 --> 01:04:48,135 Buscabas un número específico, no es el mejor, pero 1142 01:04:48,135 --> 01:04:50,300 que ha escrito el código anterior. 1143 01:04:50,300 --> 01:04:52,930 >> Y, por último, en Int. getAge, usted ha visto esto antes. 1144 01:04:52,930 --> 01:04:55,780 Tenemos un bucle do-while pidiendo para la entrada del usuario hasta que 1145 01:04:55,780 --> 01:04:57,080 cumple una determinada condición. 1146 01:04:57,080 --> 01:05:00,650 Y, por último, sólo estamos volviendo que entero. 1147 01:05:00,650 --> 01:05:03,650 >> Así que todo el código que has visto antes y por escrito antes. 1148 01:05:03,650 --> 01:05:05,250 Nada es nuevo aquí. 1149 01:05:05,250 --> 01:05:08,040 Por supuesto, me he presentado en un diferente manera, y tal vez era demasiado 1150 01:05:08,040 --> 01:05:11,050 confundiendo con mis instrucciones, pero usted ha visto esto antes. 1151 01:05:11,050 --> 01:05:14,870 Esta lógica eres 100% capaz. 1152 01:05:14,870 --> 01:05:18,670 Y si nos encontramos con este programa muy rápido - 1153 01:05:18,670 --> 01:05:22,300 Yo ya he hecho, por lo que vamos a correr. / entrenador. 1154 01:05:22,300 --> 01:05:23,110 >> ¿Qué pasó? 1155 01:05:23,110 --> 01:05:24,878 >> ESTUDIANTE: [inaudible]. 1156 01:05:24,878 --> 01:05:26,120 >> JASON HIRSCHHORN: No lo hice dar ningún argumento. 1157 01:05:26,120 --> 01:05:27,290 Vamos a entrenar cinco delfines. 1158 01:05:27,290 --> 01:05:30,450 Esa sería una de dos, tres, cuatro, cinco años de edad. 1159 01:05:30,450 --> 01:05:34,240 Y como se puede ver a la derecha aquí, impreso el de mayor edad. 1160 01:05:34,240 --> 01:05:35,580 Así que vamos a ir de nuevo en gedit. 1161 01:05:35,580 --> 01:05:38,400 >> Pero por supuesto, esto no era lo que el especificación estaba pidiendo. 1162 01:05:38,400 --> 01:05:40,870 Se pide al prototipo. 1163 01:05:40,870 --> 01:05:45,070 No los rendimientos en número entero, pero los retornos en int estrellas. 1164 01:05:45,070 --> 01:05:47,600 Así que si me voy a cambiar hasta allí en el prototipo que será mejor 1165 01:05:47,600 --> 01:05:49,660 cambiarlo aquí. 1166 01:05:49,660 --> 01:05:52,140 >> Y ahora vamos a trabajar a través de esto, aquí mismo. 1167 01:05:52,140 --> 01:05:53,460 Vamos a comenzar en la parte inferior. 1168 01:05:53,460 --> 01:05:54,720 La edad no es un int estrellas. 1169 01:05:54,720 --> 01:05:56,987 La edad es el tipo de variable? 1170 01:05:56,987 --> 01:05:57,861 >> ESTUDIANTE: Un entero. 1171 01:05:57,861 --> 01:06:02,240 >> JASON HIRSCHHORN: Así que la línea 63, la edad no debe ser un número entero. 1172 01:06:02,240 --> 01:06:03,070 Debe ser un int estrellas. 1173 01:06:03,070 --> 01:06:05,680 ¿Cómo puedo hacer que un int estrella? 1174 01:06:05,680 --> 01:06:07,560 >> ESTUDIANTE: [inaudible]. 1175 01:06:07,560 --> 01:06:10,750 >> JASON HIRSCHHORN: Ponga una estrella allí. 1176 01:06:10,750 --> 01:06:13,080 Y ahora vamos a ver aquí abajo. 1177 01:06:13,080 --> 01:06:20,070 67, getInt devuelve un entero, y estamos el almacenamiento de número entero que en la edad. 1178 01:06:20,070 --> 01:06:21,980 Pero si estamos tratando a la edad como puntero ahora, ¿qué necesitamos 1179 01:06:21,980 --> 01:06:24,224 actualizar esta línea? 1180 01:06:24,224 --> 01:06:25,926 >> ESTUDIANTE: Ponga una estrella. 1181 01:06:25,926 --> 01:06:28,876 >> JASON HIRSCHHORN: Ponga una estrella antes de la edad. 1182 01:06:28,876 --> 01:06:30,397 ¿Es eso lo que dijiste? 1183 01:06:30,397 --> 01:06:31,311 >> ESTUDIANTE: Sí. 1184 01:06:31,311 --> 01:06:32,100 >> JASON HIRSCHHORN: Así es. 1185 01:06:32,100 --> 01:06:34,340 Debido getInt devuelve un entero. 1186 01:06:34,340 --> 01:06:39,110 Queremos ir a la ubicación dada a nosotros en la edad y ponemos un entero allí. 1187 01:06:39,110 --> 01:06:42,420 Si lo hemos hecho esta línea de código, que iríamos volver a lo que Curtis estaba hablando 1188 01:06:42,420 --> 01:06:46,170 anterior, el ahorro de una edad, un loco número entero, tal vez el entero 5. 1189 01:06:46,170 --> 01:06:48,860 Con el tiempo tratamos de ir a la ubicación 5 en la memoria, y nos metemos en una gran cantidad de 1190 01:06:48,860 --> 01:06:51,040 problemas por eso. 1191 01:06:51,040 --> 01:06:54,550 >> Así que necesitamos esa estrella allí, y la línea 69? 1192 01:06:54,550 --> 01:06:57,260 Una vez más, la edad, es en la memoria abordar aquí. 1193 01:06:57,260 --> 01:06:59,850 Entonces, ¿qué tenemos que actualizar esta línea? 1194 01:06:59,850 --> 01:07:00,990 Alguien más? 1195 01:07:00,990 --> 01:07:02,612 ¿Cómo tenemos que actualizar esta línea? 1196 01:07:02,612 --> 01:07:04,872 >> ESTUDIANTE: Ponga un asterisco allí. 1197 01:07:04,872 --> 01:07:06,180 >> JASON HIRSCHHORN: Exactamente. 1198 01:07:06,180 --> 01:07:08,270 Añadir un poco de estrellas ahí. 1199 01:07:08,270 --> 01:07:12,060 Ahora estamos llegando al valor señalado a la edad en lugar de la edad. 1200 01:07:12,060 --> 01:07:15,090 >> Así que de nuevo, vimos este código va desde un entero hasta el punto final. 1201 01:07:15,090 --> 01:07:17,130 Bastante similar. 1202 01:07:17,130 --> 01:07:19,965 Tenemos que mirar por todos esos lugares que tenía la edad, y tenemos que cambiarlas 1203 01:07:19,965 --> 01:07:23,180 un poco, porque no queremos que La caja del cambio de la edad tanto como la edad 1204 01:07:23,180 --> 01:07:26,470 está señalando. 1205 01:07:26,470 --> 01:07:30,790 >> Y volviendo la edad, ¿es correcto? 1206 01:07:30,790 --> 01:07:32,900 Eso es correcto, porque la edad es un puntero int. 1207 01:07:32,900 --> 01:07:33,845 Sí, la pregunta? 1208 01:07:33,845 --> 01:07:38,030 >> ESTUDIANTE: ¿Podemos mantenerlo int edad en todo y, a continuación, al final, poner 1209 01:07:38,030 --> 01:07:39,930 un signo delante de la edad? 1210 01:07:39,930 --> 01:07:41,780 >> JASON HIRSCHHORN: Y devolver su dirección? 1211 01:07:41,780 --> 01:07:43,380 Esa es una excelente pregunta. 1212 01:07:43,380 --> 01:07:48,720 Usted puede hacer eso, pero vamos a llegar a que en un segundo y la respuesta que 1213 01:07:48,720 --> 01:07:49,710 pregunta en un segundo. 1214 01:07:49,710 --> 01:07:50,790 Pregunta fantástico. 1215 01:07:50,790 --> 01:07:58,170 >> Hasta aquí, si nos estamos convirtiendo un int puntero, ¿qué tipo de cosas es 1216 01:07:58,170 --> 01:08:00,460 edades de delfines almacenar en ella? 1217 01:08:00,460 --> 01:08:03,640 Si estamos devolviendo un puntero int derecho aquí, qué tipo de cosa es 1218 01:08:03,640 --> 01:08:06,380 edades de delfines almacenar en ella? 1219 01:08:06,380 --> 01:08:10,220 Int punteros, así que la línea 37 debe ser int estrellas. 1220 01:08:10,220 --> 01:08:11,260 Ese es el tipo de esta matriz. 1221 01:08:11,260 --> 01:08:12,370 No es el almacenamiento de enteros más. 1222 01:08:12,370 --> 01:08:13,620 Ha almacenar int punteros. 1223 01:08:13,620 --> 01:08:16,340 1224 01:08:16,340 --> 01:08:22,750 >> Y finalmente, aquí abajo, edades de delfines soporte de i, que nos va a dar, 1225 01:08:22,750 --> 01:08:24,189 de nuevo, y int puntero. 1226 01:08:24,189 --> 01:08:25,590 No queremos que un puntero de int. 1227 01:08:25,590 --> 01:08:27,960 Queremos que el valor apuntado que por ese int. 1228 01:08:27,960 --> 01:08:29,500 Así Hassan, ¿cómo podemos cambiar esta línea? 1229 01:08:29,500 --> 01:08:30,939 >> ESTUDIANTE: Ponga una estrella? 1230 01:08:30,939 --> 01:08:32,899 >> JASON HIRSCHHORN: Exactamente, poner una estrella allí. 1231 01:08:32,899 --> 01:08:33,750 Eso nos dará un valor. 1232 01:08:33,750 --> 01:08:35,587 ¿Qué pasa con la línea 51? 1233 01:08:35,587 --> 01:08:37,050 >> ESTUDIANTE: Otra de las estrellas. 1234 01:08:37,050 --> 01:08:39,779 >> JASON HIRSCHHORN: Otra de las estrellas. 1235 01:08:39,779 --> 01:08:41,490 Eso es exactamente correcto. 1236 01:08:41,490 --> 01:08:45,740 Así que estamos tratando, de nuevo ahora, estos cosas como int punteros. 1237 01:08:45,740 --> 01:08:51,015 >> ESTUDIANTE: ¿es un problema en absoluto que, en getAge, edad int estrellas está nunca dada 1238 01:08:51,015 --> 01:08:51,899 ubicación e? 1239 01:08:51,899 --> 01:08:54,910 >> JASON HIRSCHHORN: Es un problema que edad int estrella nunca se le da un 1240 01:08:54,910 --> 01:08:56,930 ubicación, y que va a ser un parecido problema de lo que eras 1241 01:08:56,930 --> 01:08:59,830 hablando con sólo volver edad y comercial y 1242 01:08:59,830 --> 01:09:00,450 mantenerlo como un int. 1243 01:09:00,450 --> 01:09:02,580 Pero quiero ejecutar este código primero y ver qué pasa. 1244 01:09:02,580 --> 01:09:07,229 1245 01:09:07,229 --> 01:09:07,720 >> Aceptar. 1246 01:09:07,720 --> 01:09:10,399 Así edad variable no inicializado cuando se utiliza aquí. 1247 01:09:10,399 --> 01:09:14,240 Por lo tanto, dice, "inicializar la variable "Edad" para silenciar a esta advertencia, "y 1248 01:09:14,240 --> 01:09:16,630 sugiere darle nulo. 1249 01:09:16,630 --> 01:09:19,510 Vamos a darle un valor nulo. 1250 01:09:19,510 --> 01:09:20,790 Así que debemos deshacernos de advertencia tha. 1251 01:09:20,790 --> 01:09:22,040 Debemos ser capaces de compilar. 1252 01:09:22,040 --> 01:09:29,710 1253 01:09:29,710 --> 01:09:30,600 >> ¿Qué edad es el delfín? 1254 01:09:30,600 --> 01:09:33,180 Digamos, 1. 1255 01:09:33,180 --> 01:09:36,240 Culpa Seg. 1256 01:09:36,240 --> 01:09:39,300 >> Así que me gustaría ir a través de GDB, y yo animo a ir a través de GDB en 1257 01:09:39,300 --> 01:09:43,250 su cuenta para averiguar por qué esta programa sólo SEG criticado. 1258 01:09:43,250 --> 01:09:45,580 Yo no voy a dejar esto como un melodrama, sin embargo, y me voy a 1259 01:09:45,580 --> 01:09:47,960 abrir esta función. 1260 01:09:47,960 --> 01:09:50,950 Vamos a entender por qué este programa seg criticado. 1261 01:09:50,950 --> 01:09:55,640 Así que como todo en la pila, cuando un función se llama, una bandeja se añade a 1262 01:09:55,640 --> 01:09:59,590 la pila proverbial donde locales se almacenan las variables. 1263 01:09:59,590 --> 01:10:02,910 Cuando una función devuelve, esa bandeja se va. 1264 01:10:02,910 --> 01:10:05,540 Esas variables locales desaparecen también. 1265 01:10:05,540 --> 01:10:11,330 >> Edad estrella Int. equivale nulo es un local de variable guardada en ese marco de pila. 1266 01:10:11,330 --> 01:10:16,570 Cuando esta función se va, este variables desaparece también. 1267 01:10:16,570 --> 01:10:19,980 Así que pasamos en la dirección de lo que sea. 1268 01:10:19,980 --> 01:10:22,540 Pasamos de edad. 1269 01:10:22,540 --> 01:10:25,280 Es una dirección, pasamos por eso en. 1270 01:10:25,280 --> 01:10:29,430 Pero en última instancia, nosotros - 1271 01:10:29,430 --> 01:10:32,580 >> Lo siento, me estoy adelantando a mí mismo. 1272 01:10:32,580 --> 01:10:36,940 ¿Por qué este programa realmente SEG fallo en este caso fue porque la edad apuntaba 1273 01:10:36,940 --> 01:10:40,560 en null, que es un lugar específico, y nulo es un lugar que no está 1274 01:10:40,560 --> 01:10:41,870 permitido tocar. 1275 01:10:41,870 --> 01:10:45,570 Y así cuando tratamos de escribir esta línea de código, va a envejecer y hacer 1276 01:10:45,570 --> 01:10:49,090 algo allí, nos dieron en problemas, y ahí es donde nos segùn criticado. 1277 01:10:49,090 --> 01:10:51,630 Debido a que la edad de la estrella, la edad de nuevo está apuntando a null. 1278 01:10:51,630 --> 01:10:53,450 Queremos en null, que es una zona mala. 1279 01:10:53,450 --> 01:10:58,570 Intentamos getInt allí, 1 en nuestro caso, y ahí es donde nos segùn criticado. 1280 01:10:58,570 --> 01:11:01,340 >> Pero decir que un caso de opt-in, decir que nos había dado esta una dirección legítima 1281 01:11:01,340 --> 01:11:05,800 aquí, como bf4ac, algo vimos antes. 1282 01:11:05,800 --> 01:11:10,960 Aun así, cuando este programa regresó, se correría en un problema porque 1283 01:11:10,960 --> 01:11:13,810 que la dirección hubiera ido. 1284 01:11:13,810 --> 01:11:16,870 La dirección de variable local habría desaparecido. 1285 01:11:16,870 --> 01:11:20,580 Independientemente de la edad se señaló que no lo haría haber existido nunca más. 1286 01:11:20,580 --> 01:11:22,090 >> La forma en que arreglar eso es algo que has visto 1287 01:11:22,090 --> 01:11:24,450 antes, la función malloc. 1288 01:11:24,450 --> 01:11:26,240 Y usted ha sido introducido en que la función malloc antes. 1289 01:11:26,240 --> 01:11:27,670 Usted ha visto esto? 1290 01:11:27,670 --> 01:11:30,140 Malloc te da un poco de memoria que no desaparece cuando el 1291 01:11:30,140 --> 01:11:31,950 marco de pila se va. 1292 01:11:31,950 --> 01:11:33,660 Así que escribir esta línea de código - 1293 01:11:33,660 --> 01:11:35,360 y yo voy a dar a usted por ahora - 1294 01:11:35,360 --> 01:11:36,120 malloc. 1295 01:11:36,120 --> 01:11:41,490 Y ya que estamos almacenando un int, estamos va a malloc de suficiente espacio. 1296 01:11:41,490 --> 01:11:44,480 Vamos a decir que dar me una caja del tamaño de int. 1297 01:11:44,480 --> 01:11:49,480 Malloc devuelve una dirección, y estamos ahorro de esa dirección en la edad. 1298 01:11:49,480 --> 01:11:50,805 >> Ahora cuando ejecutamos este programa - 1299 01:11:50,805 --> 01:11:56,810 1300 01:11:56,810 --> 01:12:01,040 no vamos a SEG culpa porque los bloques de memoria que conseguimos a través de 1301 01:12:01,040 --> 01:12:05,140 malloc no desaparecen cuando el marco de pila desaparece. 1302 01:12:05,140 --> 01:12:07,160 Viven hasta que queramos para deshacerse de ellos. 1303 01:12:07,160 --> 01:12:09,610 >> Y esto se remonta a su pregunta, Jeff, de antes. 1304 01:12:09,610 --> 01:12:17,660 ¿Cómo puedo crear cosas dentro de mi funciones que quiero utilizar más tarde 1305 01:12:17,660 --> 01:12:19,310 en principal o en diferentes funciones? 1306 01:12:19,310 --> 01:12:25,800 Yo uso malloc, y paso sus direcciones alrededor. 1307 01:12:25,800 --> 01:12:30,200 >> Eso era mucho, lo admito, para cubrir en este momento. 1308 01:12:30,200 --> 01:12:33,380 Así que por favor, si usted tiene cualquier duda, consulte a distancia. 1309 01:12:33,380 --> 01:12:37,817 1310 01:12:37,817 --> 01:12:40,930 >> ESTUDIANTE: Entonces malloc no está en La pila más, entonces? 1311 01:12:40,930 --> 01:12:42,900 >> JASON HIRSCHHORN: Eso es exactamente correcto. 1312 01:12:42,900 --> 01:12:46,620 El malloc caja te da no está en la pila. 1313 01:12:46,620 --> 01:12:49,270 Se está dando a usted en esta otra parte de la memoria que vamos a 1314 01:12:49,270 --> 01:12:51,010 hablar en la conferencia el miércoles. 1315 01:12:51,010 --> 01:12:54,650 El nombre es el montón, pero no quiero hablar demasiado sobre él con excepción 1316 01:12:54,650 --> 01:12:57,920 Es este otro lugar que no recibe borrados cuando la función se va. 1317 01:12:57,920 --> 01:13:04,790 1318 01:13:04,790 --> 01:13:06,040 >> ¿Alguna otra pregunta? 1319 01:13:06,040 --> 01:13:08,999 1320 01:13:08,999 --> 01:13:13,390 >> ESTUDIANTE: Yo creo que si no ha utilizado un función separada y se pone todo esto 1321 01:13:13,390 --> 01:13:16,705 código en principal, que todavía necesitará utilizar malloc? 1322 01:13:16,705 --> 01:13:20,250 >> JASON HIRSCHHORN: Muy buena pregunta. 1323 01:13:20,250 --> 01:13:23,180 Esto probablemente no es el más eficiente forma de escribir este programa. 1324 01:13:23,180 --> 01:13:26,270 Se podría haber hecho fácilmente este do-while bucle principal y guardado 1325 01:13:26,270 --> 01:13:28,800 a ti mismo un montón de problemas. 1326 01:13:28,800 --> 01:13:31,910 La razón por la que quería hacerlo como esto se debe a que quería que todo el mundo 1327 01:13:31,910 --> 01:13:37,680 ser capaz de ver cómo, en principal, podemos crear una gran variedad de 1328 01:13:37,680 --> 01:13:41,060 punteros, punteros int. 1329 01:13:41,060 --> 01:13:45,590 Podemos inicializar los punteros en otro lugar, los puso en este otro 1330 01:13:45,590 --> 01:13:50,610 área de la memoria que se mantiene durante el tiempo que queremos que se quede, y entonces podemos 1331 01:13:50,610 --> 01:13:51,500 acceder a ellos más tarde. 1332 01:13:51,500 --> 01:13:53,670 >> Por ejemplo, aquí se hicieron búsquedas a través de ellos. 1333 01:13:53,670 --> 01:13:54,770 Podríamos haber hecho otra cosas a ellos. 1334 01:13:54,770 --> 01:13:56,820 Podríamos haber llegado a y encontró la media. 1335 01:13:56,820 --> 01:13:57,750 Podríamos haber hecho un montón de cosas. 1336 01:13:57,750 --> 01:14:02,650 El punto es que usted puede no perder de algunas cosas en medio principal 1337 01:14:02,650 --> 01:14:05,820 una matriz, crear esas cosas en algún lugar otra cosa, y luego seguir utilizando 1338 01:14:05,820 --> 01:14:06,620 ellos más adelante. 1339 01:14:06,620 --> 01:14:09,910 >> Y esta idea, lo que estamos haciendo ahora, va a llegar a mucho en el futuro 1340 01:14:09,910 --> 01:14:13,130 P-series y los problemas que quiere resolver. 1341 01:14:13,130 --> 01:14:16,260 Es por eso que lo hicimos como éste incluso aunque hay que admitir que es enrevesado 1342 01:14:16,260 --> 01:14:17,440 bit en este contexto. 1343 01:14:17,440 --> 01:14:20,004 >> ESTUDIANTE: [inaudible] 1344 01:14:20,004 --> 01:14:25,060 si usted puede mantener todas las edades como int valores reales en lugar de punteros, 1345 01:14:25,060 --> 01:14:27,610 podrías usar la edad ampersand ahora? 1346 01:14:27,610 --> 01:14:28,410 >> JASON HIRSCHHORN: ¿Lo sientes? 1347 01:14:28,410 --> 01:14:32,100 >> ESTUDIANTE: Si usted sacó las estrellas en todas las edades, y sólo arrojó 1348 01:14:32,100 --> 01:14:34,610 edad signo, al final, funcionaría eso? 1349 01:14:34,610 --> 01:14:36,670 >> JASON HIRSCHHORN: Así malloc devuelve una dirección. 1350 01:14:36,670 --> 01:14:37,752 >> ESTUDIANTE: OK, a la derecha. 1351 01:14:37,752 --> 01:14:41,550 >> JASON HIRSCHHORN: Devuelve una dirección, por lo que la edad tiene que ser un int 1352 01:14:41,550 --> 01:14:43,555 puntero, porque va a ser almacenados en una dirección. 1353 01:14:43,555 --> 01:14:52,980 1354 01:14:52,980 --> 01:14:55,160 >> Tenemos seis minutos para el final. 1355 01:14:55,160 --> 01:14:58,590 Voy a saltar de hablar alrededor de la pila por ahora. 1356 01:14:58,590 --> 01:15:04,090 Voy a entrar en tres minutos brevemente en SPL, la más importante 1357 01:15:04,090 --> 01:15:06,470 cosas que creo que necesitas saber para el conjunto de problemas. 1358 01:15:06,470 --> 01:15:09,430 >> Sin embargo, antes de llegar aquí, porque este es lo que vamos a terminar en, 1359 01:15:09,430 --> 01:15:11,440 dos recordatorios finales. 1360 01:15:11,440 --> 01:15:14,640 Uno, la verdad es que pasó por cosas bastante rápido en esta sección. 1361 01:15:14,640 --> 01:15:16,340 Pido disculpas por ese ritmo. 1362 01:15:16,340 --> 01:15:20,120 Si usted tiene alguna pregunta acerca de algo de lo que fuimos, por qué algo 1363 01:15:20,120 --> 01:15:22,810 funcionado de la manera que lo hizo, o algo que no explican tan claramente como pude 1364 01:15:22,810 --> 01:15:26,830 haber, por favor, me tira un correo electrónico o hablar a mí después de clases, y voy a ser feliz 1365 01:15:26,830 --> 01:15:28,360 para explicar a usted más en profundidad. 1366 01:15:28,360 --> 01:15:30,320 Así que por favor llegar si tiene preguntas. 1367 01:15:30,320 --> 01:15:33,270 >> Una vez más, el sitio web de la retroalimentación también. 1368 01:15:33,270 --> 01:15:36,120 Tome un poco de tiempo después de clase si usted tiene y dame un poco de retroalimentación. 1369 01:15:36,120 --> 01:15:37,730 Te lo agradezco mucho. 1370 01:15:37,730 --> 01:15:41,050 Como se vio al principio de la clase, He leído a través de ellos, responder a ellas 1371 01:15:41,050 --> 01:15:43,440 si quieres una respuesta, y yo te tomas muy a pecho. 1372 01:15:43,440 --> 01:15:45,250 Eso significa mucho para mí. 1373 01:15:45,250 --> 01:15:49,250 >> Vamos a terminar la clase hablando de la biblioteca que va a 1374 01:15:49,250 --> 01:15:50,200 estar usando esta semana. 1375 01:15:50,200 --> 01:15:53,220 Usted probablemente ha visto un código como lo que tener en la pantalla antes, GRect 1376 01:15:53,220 --> 01:15:54,470 paleta es igual newGRect, (x, y, ancho, alto). 1377 01:15:54,470 --> 01:15:57,410 1378 01:15:57,410 --> 01:16:00,350 Ustedes tienen probablemente a través de la lectura a través de la especificación se sentía bastante 1379 01:16:00,350 --> 01:16:03,530 cómodo con esto, pero para aquellos que eran menos cómodo, para que usted 1380 01:16:03,530 --> 01:16:06,830 chicos así, quiero volver a pasar por encima de este línea y vea cómo es similar a 1381 01:16:06,830 --> 01:16:09,010 lo que hemos utilizado antes. 1382 01:16:09,010 --> 01:16:11,610 >> Al igual que con cualquier variable - 1383 01:16:11,610 --> 01:16:14,570 se trata de un objeto, pero al igual que con cualquier variable, tenemos el primer tipo 1384 01:16:14,570 --> 01:16:17,490 y sobre todo aquí, GRect. 1385 01:16:17,490 --> 01:16:22,600 >> A continuación tenemos el nombre del objeto, y por último tenemos la función que 1386 01:16:22,600 --> 01:16:27,820 inicializa, nos da la paleta que queremos. 1387 01:16:27,820 --> 01:16:32,040 A veces escribimos int x es igual a 5, y inicializamos algo directamente. 1388 01:16:32,040 --> 01:16:34,930 A veces escribimos cadena nombre es igual a conseguir cuerda. 1389 01:16:34,930 --> 01:16:40,110 Utilizamos una función para obtener algo, y tomamos su valor de retorno, y 1390 01:16:40,110 --> 01:16:40,880 ese es nuestro nuevo valor. 1391 01:16:40,880 --> 01:16:44,580 >> Así que hemos visto esta idea antes, donde funciones que pueden o no necesitar 1392 01:16:44,580 --> 01:16:47,050 entrada crea realmente la cosa para nosotros, en lugar de 1393 01:16:47,050 --> 01:16:49,390 crearnos directamente. 1394 01:16:49,390 --> 01:16:51,060 Así que hemos visto este código antes. 1395 01:16:51,060 --> 01:16:55,490 Esperemos que esta idea de un objeto, o al menos la creación de un objeto, no es tan 1396 01:16:55,490 --> 01:16:59,550 abrumadora si se puede conceptualizar como apenas muy similar a las cosas 1397 01:16:59,550 --> 01:17:01,160 que hemos visto antes. 1398 01:17:01,160 --> 01:17:04,280 >> Sin embargo, lo bueno de los objetos como distinta de las variables es que 1399 01:17:04,280 --> 01:17:06,770 puede hacer cosas con ellos. 1400 01:17:06,770 --> 01:17:09,920 No es posible cambiar el color de un variable, pero que de hecho puede cambiar 1401 01:17:09,920 --> 01:17:13,250 el color de un objeto, o al menos en SPL puede cambiar la 1402 01:17:13,250 --> 01:17:14,540 color de los objetos. 1403 01:17:14,540 --> 01:17:18,540 >> No se puede mover una variable en una ventana, pero se puede mover 1404 01:17:18,540 --> 01:17:20,100 un objeto en una ventana. 1405 01:17:20,100 --> 01:17:21,450 Usted puede obtener la ubicación de un objeto. 1406 01:17:21,450 --> 01:17:23,110 Realmente no se puede obtener una La ubicación de variable. 1407 01:17:23,110 --> 01:17:26,070 Eso es lo bueno de objetos en esta biblioteca. 1408 01:17:26,070 --> 01:17:29,040 >> Sin embargo, estas funciones pueden ser un poco confuso. 1409 01:17:29,040 --> 01:17:33,410 Realmente no hemos utilizado las funciones o objetos antes, así que me pareció que era 1410 01:17:33,410 --> 01:17:38,420 útil para entender de forma genérica para expresar o hacer cosas con los objetos, o 1411 01:17:38,420 --> 01:17:39,740 entender objetos. 1412 01:17:39,740 --> 01:17:41,940 Y como te darás cuenta, tengo dos funciones escritas aquí, funciones 1413 01:17:41,940 --> 01:17:45,400 que haya visto antes - añadir, ventana coma paddle, y el color establecido 1414 01:17:45,400 --> 01:17:47,070 paddle negro coma. 1415 01:17:47,070 --> 01:17:49,810 En estos dos casos, tenemos una función que toma dos argumentos y 1416 01:17:49,810 --> 01:17:51,280 hace algo. 1417 01:17:51,280 --> 01:17:54,080 >> Ahora más genéricamente, todos estos funciones que vas a escribir que 1418 01:17:54,080 --> 01:17:59,760 tener que lidiar con los objetos tomar un lugar y un qué. 1419 01:17:59,760 --> 01:18:03,870 A dónde está el objeto que desea hacer algo para, en este 1420 01:18:03,870 --> 01:18:06,150 caso, una ventana o panel. 1421 01:18:06,150 --> 01:18:09,700 Y el qué es lo que quieres hacerlo o dar a la misma. 1422 01:18:09,700 --> 01:18:11,140 >> Cuando se está configurando el color algo, ¿dónde están 1423 01:18:11,140 --> 01:18:11,980 que el establecimiento del color? 1424 01:18:11,980 --> 01:18:14,160 Con el objeto de paddle. 1425 01:18:14,160 --> 01:18:16,230 Y de qué color se le ajuste? 1426 01:18:16,230 --> 01:18:18,320 Negro. 1427 01:18:18,320 --> 01:18:20,610 Con la función de complemento, donde haces algo? 1428 01:18:20,610 --> 01:18:21,610 Con el objeto de ventana. 1429 01:18:21,610 --> 01:18:22,630 Y lo que le están dando a ella? 1430 01:18:22,630 --> 01:18:24,230 Usted está dando la paleta. 1431 01:18:24,230 --> 01:18:29,070 >> Se dará cuenta de que las funciones que le uso, color set, ubicación establecida, et 1432 01:18:29,070 --> 01:18:32,140 etc, etc, todo seguir este patrón. 1433 01:18:32,140 --> 01:18:35,180 Toman algo que quieres hacer algo, el objeto que desea 1434 01:18:35,180 --> 01:18:39,970 hacer algo para, y lo que quieren hacer con él, o lo que usted quiere tener 1435 01:18:39,970 --> 01:18:42,630 cambiado, o lo que usted quiere tener agregado, o el color específico 1436 01:18:42,630 --> 01:18:43,430 usted quiere que sea. 1437 01:18:43,430 --> 01:18:49,330 O si no está lleno, ¿quieres hacen que sea llena, et cetera, et cetera. 1438 01:18:49,330 --> 01:18:53,500 >> Es cierto que una breve discusión de la Stanford - 1439 01:18:53,500 --> 01:18:55,950 ¿qué es? 1440 01:18:55,950 --> 01:18:59,060 Biblioteca Programación Stanford? 1441 01:18:59,060 --> 01:18:59,890 Biblioteca Portable, es cierto! 1442 01:18:59,890 --> 01:19:01,340 Gracias, clase. 1443 01:19:01,340 --> 01:19:04,150 Stanford Biblioteca Portable. 1444 01:19:04,150 --> 01:19:06,710 Pero una vez más, mucha más información dada en la especificación conjunto de problemas, pero 1445 01:19:06,710 --> 01:19:09,680 espero que esto hace que sea un poco más fácil de entender objeto, 1446 01:19:09,680 --> 01:19:13,710 especialmente en lo que han sido relativas a los cosas que hemos visto y hecho antes. 1447 01:19:13,710 --> 01:19:16,010 >> Así que con eso, es la cuarta semana. 1448 01:19:16,010 --> 01:19:18,140 Disfrutar aprendiendo sobre la mañana montón. 1449 01:19:18,140 --> 01:19:22,360 Buena suerte en tu examen la próxima semana, pero por supuesto, voy a ver antes de esa fecha, 1450 01:19:22,360 --> 01:19:24,860 esperemos que en la sección del próximo martes. 1451 01:19:24,860 --> 01:19:27,970 Pero también, si usted tiene alguna pregunta, comentarios, inquietudes, no dude en 1452 01:19:27,970 --> 01:19:28,930 para llegar. 1453 01:19:28,930 --> 01:19:31,745 Y después de la clase, voy a caminar a otro lado si usted quiere hablar acerca de su problema 1454 01:19:31,745 --> 01:19:32,995 establecer o tener algunas preguntas. 1455 01:19:32,995 --> 01:19:35,915