1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> PROFESOR: Así que el orden del día de esta semana, no es que la cantidad de cosas. 3 00:00:09,790 --> 00:00:12,801 Pero esperemos que muy, muy útil y relevante para ustedes esta semana. 4 00:00:12,801 --> 00:00:15,550 Pero vamos a pasar tal vez 15, 20 minutos hablando sólo de forma rápida 5 00:00:15,550 --> 00:00:17,370 sobre la lista de enlaces. 6 00:00:17,370 --> 00:00:19,694 Listas de enlaces van a ser cubiertos en el cuestionario. 7 00:00:19,694 --> 00:00:22,610 Así que tal vez sería muy útil para aprender un poco acerca de lo que es. 8 00:00:22,610 --> 00:00:25,210 >> Vamos a pasar la gran mayoría de la sección actual 9 00:00:25,210 --> 00:00:27,640 repasando problemas de práctica concurso cero. 10 00:00:27,640 --> 00:00:30,970 Y luego vamos a salvar tal vez 20, 30 minutos al final de las preguntas pendientes 11 00:00:30,970 --> 00:00:32,850 alguien tiene. 12 00:00:32,850 --> 00:00:34,610 >> Y luego, el último cinco minutos, voy 13 00:00:34,610 --> 00:00:36,467 para dar una bomba hasta el habla para el concurso. 14 00:00:36,467 --> 00:00:38,050 Ustedes todos quieren estar aquí para eso. 15 00:00:38,050 --> 00:00:39,591 Debido a que va a ser un buen momento. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Muy bien, por lo que algunos el material en la lista de enlaces. 18 00:00:49,230 --> 00:00:52,620 ¿Cómo lo general están estructurados es usted tiene lo que se llama un nodo, ¿verdad? 19 00:00:52,620 --> 00:00:54,870 Usted tiene estas cosas llamadas nodos, que son estructuras. 20 00:00:54,870 --> 00:00:57,360 Voy a ir sobre cómo crear un nodo en la siguiente diapositiva. 21 00:00:57,360 --> 00:01:00,680 Pero, en esencia todos ellos vinculados listas se trata de datos que 22 00:01:00,680 --> 00:01:03,340 ha sido ensartados a través de punteros. 23 00:01:03,340 --> 00:01:09,110 >> Y así, la ventaja que tenemos de utilizar una lista enlazada más, 24 00:01:09,110 --> 00:01:11,280 quizás, como una matriz, es el hecho de que en una matriz 25 00:01:11,280 --> 00:01:15,000 usted necesita un bloque contiguo de memoria todo en el mismo lugar, uno 26 00:01:15,000 --> 00:01:16,870 después de otra, para poder tener eso. 27 00:01:16,870 --> 00:01:20,200 Considerando que la lista enlazada, usted podría tienen pequeños trozos aleatorios de la memoria 28 00:01:20,200 --> 00:01:23,020 todo el equipo ensartados por punteros. 29 00:01:23,020 --> 00:01:26,270 >> Y de esta manera puede acceder a la información 30 00:01:26,270 --> 00:01:28,610 que viene uno tras otra, después de la otra 31 00:01:28,610 --> 00:01:32,720 sin necesidad de sólo un pedazo enorme de la memoria en su ordenador en alguna parte. 32 00:01:32,720 --> 00:01:35,910 Y por lo que este es uno de los principales razones por las que utilizamos lista de enlaces. 33 00:01:35,910 --> 00:01:40,300 >> En segundo lugar, es muy fácil de forma dinámica cambiar el tamaño de la lista de enlaces porque en conjunto, 34 00:01:40,300 --> 00:01:44,720 cuando se declara una matriz, usted tiene un cierto valor establecido. 35 00:01:44,720 --> 00:01:47,340 Digamos que yo quería crear un arreglo de 10 enteros. 36 00:01:47,340 --> 00:01:49,970 Puedo crear una matriz de 10 números enteros, y eso es todo. 37 00:01:49,970 --> 00:01:50,580 Es 10. 38 00:01:50,580 --> 00:01:52,038 No sé qué hacer después de eso. 39 00:01:52,038 --> 00:01:53,680 Si quería hacer 11, no puede hacerlo. 40 00:01:53,680 --> 00:01:55,710 Si quiero que sea 9, no puede hacerlo. 41 00:01:55,710 --> 00:01:59,910 >> Mientras que en una lista de enlaces, puede agregar y borrar e insertar donde quieras. 42 00:01:59,910 --> 00:02:04,940 Usted puede cambiar el tamaño de forma dinámica su estructurar aquí, su estructura de datos. 43 00:02:04,940 --> 00:02:08,370 Y eso nos da mucha más flexibilidad añadida 44 00:02:08,370 --> 00:02:11,320 que no lo hacemos normalmente tener con matrices. 45 00:02:11,320 --> 00:02:15,210 >> Cualquier persona confundida en el básico estructura de cómo una lista de enlace es 46 00:02:15,210 --> 00:02:17,930 o por qué tenemos que usar uno sobre una matriz? 47 00:02:17,930 --> 00:02:20,330 Sí, vamos a repasar en detalle cómo crear en realidad uno. 48 00:02:20,330 --> 00:02:24,121 Pero esto es sólo un poco el sentido general en este momento. 49 00:02:24,121 --> 00:02:24,620 Guay. 50 00:02:24,620 --> 00:02:28,770 Y así matrices se ensartan de estas encantadoras pequeñas cosas 51 00:02:28,770 --> 00:02:29,960 llamados nodos. 52 00:02:29,960 --> 00:02:32,210 Todo lo que un nodo está es un tipo de estructura. 53 00:02:32,210 --> 00:02:36,090 Recuerde, una estructura es si querías para crear un cierto tipo de variable 54 00:02:36,090 --> 00:02:39,850 en C que aún no existes, que, como programador, 55 00:02:39,850 --> 00:02:42,030 en realidad puede crear usted mismo. 56 00:02:42,030 --> 00:02:46,540 >> Y así, este tipo de datos estructura se denomina un nodo, 57 00:02:46,540 --> 00:02:50,770 en realidad ha sido creado por nosotros, para que no existe en C por sí solo. 58 00:02:50,770 --> 00:02:53,150 Y la forma en que usted cree uno es que tienes 59 00:02:53,150 --> 00:02:57,170 la cabecera de typedef struct, que le dice al compilador que soy 60 00:02:57,170 --> 00:02:59,640 a punto de crear una estructura. 61 00:02:59,640 --> 00:03:00,830 >> Vamos nombre de "nodo". 62 00:03:00,830 --> 00:03:03,350 Y en el interior vamos para declarar una variable en, 63 00:03:03,350 --> 00:03:05,060 que se va a almacenar un valor. 64 00:03:05,060 --> 00:03:09,320 Y entonces también vamos a haber un puntero llamado "siguiente" 65 00:03:09,320 --> 00:03:12,090 que apunta a la siguiente nodo de la lista de enlaces. 66 00:03:12,090 --> 00:03:14,730 Y luego de terminar que fuera con sólo repetir nodo nuevo para 67 00:03:14,730 --> 00:03:17,490 el compilador sabe, OK ese es el final de mi estructura. 68 00:03:17,490 --> 00:03:22,540 >> Y así, de esta manera, estamos tipo de crear un pequeño arsenal lindo 69 00:03:22,540 --> 00:03:25,450 tipo de cosas con un y con un valor puntero. 70 00:03:25,450 --> 00:03:27,757 Y usted puede vincular a todos ellos junto con los punteros. 71 00:03:27,757 --> 00:03:30,090 Para que puedan ser de todo tipo ensartados en una cadena. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Guay. 74 00:03:34,162 --> 00:03:35,453 ¿Se puede saber que un poco mejor? 75 00:03:35,453 --> 00:03:36,140 >> AUDIENCIA: Sí. 76 00:03:36,140 --> 00:03:38,540 >> PROFESOR: Muy bien. 77 00:03:38,540 --> 00:03:44,280 Así que la forma en que, como ustedes pueden ver, una lista de enlaces típica se estructura 78 00:03:44,280 --> 00:03:45,500 es que tienes una cabeza. 79 00:03:45,500 --> 00:03:49,460 Usted tiene el valor de la cabeza que no es siendo señalado por cualquier otro puntero. 80 00:03:49,460 --> 00:03:53,177 Pero va a señalar, o de referencia, otro nodo. 81 00:03:53,177 --> 00:03:56,510 El nodo después de que se va a hacer referencia a la nodo después de eso, y así sucesivamente y así sucesivamente 82 00:03:56,510 --> 00:03:59,170 hasta que finalmente golpeó Al final de su lista de enlaces. 83 00:03:59,170 --> 00:04:00,980 Y usted no tendrá un puntero allí. 84 00:04:00,980 --> 00:04:04,659 >> Y así, pensar como, en una cadena, o incluso si alguno de ustedes hechos, no sé, 85 00:04:04,659 --> 00:04:06,450 al igual que con Fruit Loops cuando eras pequeño. 86 00:04:06,450 --> 00:04:08,590 Usted haría unirlos y el desgaste alrededor de su cuello. 87 00:04:08,590 --> 00:04:09,840 ¿Cree que es exactamente lo mismo. 88 00:04:09,840 --> 00:04:12,964 Usted tiene estas pequeñas cosas que usted puede encadenar este punto a uno 89 00:04:12,964 --> 00:04:15,291 después de ella, a la que después de , y así sucesivamente y así sucesivamente 90 00:04:15,291 --> 00:04:17,040 hasta que tenga una cadena de una estructura de datos 91 00:04:17,040 --> 00:04:21,190 que se pueden utilizar como más te guste. 92 00:04:21,190 --> 00:04:27,370 >> Así que la forma en que esto se haría suelen insertar o eliminar 93 00:04:27,370 --> 00:04:30,020 cualquier nodo desde un enlace la lista es muy diferente 94 00:04:30,020 --> 00:04:31,970 dependiendo de donde ese nodo es. 95 00:04:31,970 --> 00:04:34,880 Así, por ejemplo, porque punteros son siempre 96 00:04:34,880 --> 00:04:38,645 apuntando a un valor específico, cuando se elimina o inserta un nodo, 97 00:04:38,645 --> 00:04:41,770 usted quiere asegurarse de que el puntero es todo lo que apunta a las cosas correctas. 98 00:04:41,770 --> 00:04:46,200 >> Así que si usted quería potencialmente insertar un nuevo nodo con el valor de una 99 00:04:46,200 --> 00:04:48,379 dentro de un enlace ordenada lista, todos sabemos aquí 100 00:04:48,379 --> 00:04:51,170 de la imagen que va a Entra en medio de la cabeza y dos, ¿no? 101 00:04:51,170 --> 00:04:52,620 Debido a que uno se adapte a la derecha allí. 102 00:04:52,620 --> 00:04:59,060 Pero la forma en que lo haría es por primera dereferencing el puntero 103 00:04:59,060 --> 00:05:02,160 de la cabeza y el envío de que a uno. 104 00:05:02,160 --> 00:05:05,040 >> Pero entramos en un problema aquí. 105 00:05:05,040 --> 00:05:08,280 ¿Alguien puede ver cuál es el problema es si tuviéramos que primero eliminar la referencia 106 00:05:08,280 --> 00:05:10,090 el puntero de la cabeza a uno? 107 00:05:10,090 --> 00:05:14,202 ¿Qué problema podríamos correr en si tratamos para añadir esta al frente de nuestra gama? 108 00:05:14,202 --> 00:05:15,409 >> AUDIENCIA: [inaudible] 109 00:05:15,409 --> 00:05:16,200 PROFESOR: Exactamente. 110 00:05:16,200 --> 00:05:20,000 Así que aquí tenemos un puntero que era una vez que apunta desde la cabeza a los dos. 111 00:05:20,000 --> 00:05:23,120 Pero si usted deshacerse de ese puntero, apuntan a uno, 112 00:05:23,120 --> 00:05:26,500 ahora tenemos ni idea a dónde ir para encontrar dos. 113 00:05:26,500 --> 00:05:29,850 Debido a que como ya he dicho antes, usted tiene un trozo gigante de la memoria en su ordenador. 114 00:05:29,850 --> 00:05:31,860 Todos estos nodos podrían ser intercaladas al azar 115 00:05:31,860 --> 00:05:33,350 en cualquier lugar en el equipo. 116 00:05:33,350 --> 00:05:36,140 Y usted no sabe cómo hacer para encontrar eso. 117 00:05:36,140 --> 00:05:40,420 >> Y así es necesario tener punteros señalando a todos los nodos en el extremo. 118 00:05:40,420 --> 00:05:42,420 O bien si accidentalmente eliminar la referencia de un 119 00:05:42,420 --> 00:05:44,485 sin primera asignación un valor primero, eres 120 00:05:44,485 --> 00:05:47,410 sólo va a perder todo después. 121 00:05:47,410 --> 00:05:49,720 >> Entonces, ¿qué vamos a hacer es, lo haría primero 122 00:05:49,720 --> 00:05:53,270 que desee crear un puntero en el nodo que desea insertar. 123 00:05:53,270 --> 00:05:55,270 Apunte a donde usted quiere insertar a, 124 00:05:55,270 --> 00:05:59,410 y luego después que podría apuntar la cabeza hacia atrás a uno. 125 00:05:59,410 --> 00:06:02,800 >> ¿Eso tiene sentido para todo el mundo aquí? 126 00:06:02,800 --> 00:06:03,346 Excelente. 127 00:06:03,346 --> 00:06:04,720 Piense en ello como al igual que una cadena. 128 00:06:04,720 --> 00:06:07,420 Si se agrega una cadena, que es un poco intuitiva 129 00:06:07,420 --> 00:06:10,742 cómo te va sobre la inserción de eso. 130 00:06:10,742 --> 00:06:15,274 >> Aceptar, por lo que es en realidad mucho más corto de lo que pensé que sería, 131 00:06:15,274 --> 00:06:16,690 una perorata de cinco minutos en las listas de enlaces. 132 00:06:16,690 --> 00:06:19,960 Sólo para que ustedes tienen la idea básica de lo que es. 133 00:06:19,960 --> 00:06:23,580 >> Aquí tenemos el programa de prueba cero. 134 00:06:23,580 --> 00:06:24,895 No dejes que esto te intimide. 135 00:06:24,895 --> 00:06:26,270 Sé que es una gran cantidad de información. 136 00:06:26,270 --> 00:06:27,580 Se ve muy aterrador. 137 00:06:27,580 --> 00:06:33,130 Es también una gran cantidad de, yo pensar, CSC tipo de términos. 138 00:06:33,130 --> 00:06:37,440 Cosas como cadenas hexadecimales, punteros, las asignaciones de memoria dinámica 139 00:06:37,440 --> 00:06:40,120 son términos que suenan muy asustadizo. 140 00:06:40,120 --> 00:06:42,700 >> Pero vamos a romperlos abajo, hacer algunos problemas de práctica 141 00:06:42,700 --> 00:06:44,980 para que ustedes todos están listos para esta prueba. 142 00:06:44,980 --> 00:06:47,104 ¿Cuántos de ustedes tienen ya comenzó a estudiar? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, ustedes probablemente quiera para comenzar a ponerse en marcha 145 00:06:53,670 --> 00:06:56,480 en eso, debido a que el concurso es mañana. 146 00:06:56,480 --> 00:06:58,739 O jueves para algunos de ustedes. 147 00:06:58,739 --> 00:07:01,030 Sí, así que vamos a ir sobre algunos problemas de práctica. 148 00:07:01,030 --> 00:07:04,600 Si ustedes todos queremos tomar una hoja de papel, un lápiz. 149 00:07:04,600 --> 00:07:07,310 Vamos a simplemente pasar el gran mayoría de la sección actual 150 00:07:07,310 --> 00:07:11,590 repasando algunos de los que lo que ustedes tienen una idea de qué esperar en el cuestionario. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> OK. 153 00:07:16,890 --> 00:07:19,730 Un par de logística detalles así, para nadie 154 00:07:19,730 --> 00:07:25,120 que no ha estado en ese enlace allí, si vas a cs50.yale.edu, en el frente 155 00:07:25,120 --> 00:07:28,566 esta página hay un enlace que dice "Acerca del concurso Cero." 156 00:07:28,566 --> 00:07:29,440 Enlace te lleva allí. 157 00:07:29,440 --> 00:07:31,065 Si usted no lo ha leído, por favor leerlo. 158 00:07:31,065 --> 00:07:34,470 Porque te dice realmente importante información sobre el cuestionario. 159 00:07:34,470 --> 00:07:37,410 >> Voy a tirar esto hacia fuera de que sólo porque, físicamente, 160 00:07:37,410 --> 00:07:40,200 si ustedes no sabe dónde ir, vamos a tener problemas. 161 00:07:40,200 --> 00:07:44,220 Y lo que si su pasado en términos con A a N, ir al salón de actos del colegio de abogados. 162 00:07:44,220 --> 00:07:47,500 Y si sus últimas aperturas con P a la Z, ir al Auditorio Davies. 163 00:07:47,500 --> 00:07:50,240 Y esto sólo se aplica para personas en la sección Miércoles. 164 00:07:50,240 --> 00:07:53,420 >> Si usted está tomando la prueba en Jueves, usted va a SSS 114 165 00:07:53,420 --> 00:07:55,078 donde su conferencia normalmente es. 166 00:07:55,078 --> 00:07:55,953 AUDIENCIA: [inaudible] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 PROFESOR: O a la Z, vas para ir al auditorio Davies. 169 00:08:01,940 --> 00:08:03,273 Voy a cambiar eso, ¿verdad? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, sí, sólo falla automáticamente. 172 00:08:09,698 --> 00:08:11,753 >> Ah, sí, que es Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Sí, mi mal. 175 00:08:16,030 --> 00:08:17,610 Sí, O a la Z, vas ir a Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Voy a arreglar esto una vez que subir. 177 00:08:19,140 --> 00:08:20,320 Sí. 178 00:08:20,320 --> 00:08:22,160 >> Y luego también algo importante para la mente 179 00:08:22,160 --> 00:08:25,290 es que el miércoles, si usted es oficialmente inscrito en la sección miércoles 180 00:08:25,290 --> 00:08:26,832 usted debe tomar su concurso el miércoles. 181 00:08:26,832 --> 00:08:29,706 Y si usted está inscrito en Jueves, deberá llevar el concurso Jueves. 182 00:08:29,706 --> 00:08:31,000 Y es durante las horas de clase. 183 00:08:31,000 --> 00:08:35,970 ¿Dónde, creo que es de 1:00 a 2:15 los miércoles y dos y media-3:45 184 00:08:35,970 --> 00:08:37,220 los jueves. 185 00:08:37,220 --> 00:08:41,710 >> Si usted tiene un conflictos irreconciliables, Excusas de Dean son lo único, 186 00:08:41,710 --> 00:08:43,030 por desgracia, podemos tomar. 187 00:08:43,030 --> 00:08:45,560 Debido a que hemos tenido una gran mayoría de las solicitudes 188 00:08:45,560 --> 00:08:47,970 para cambiar del miércoles al jueves. 189 00:08:47,970 --> 00:08:51,265 ¿Qué no podemos honrar a menos tenemos la petición de un Decano. 190 00:08:51,265 --> 00:08:52,650 >> OK. 191 00:08:52,650 --> 00:08:57,000 Así que antes de empezar en un par de los problemas de la práctica, 192 00:08:57,000 --> 00:09:00,540 Yo sólo voy a ir más Consejos útiles de Andy para el éxito. 193 00:09:00,540 --> 00:09:04,140 Chicos, cuando estudias, realmente querer practicar la escritura de código a mano. 194 00:09:04,140 --> 00:09:07,050 La primera vez que tomó un concurso CS, no lo hubiera hecho 195 00:09:07,050 --> 00:09:09,960 código de práctica de la escritura a mano antes y que era extremadamente 196 00:09:09,960 --> 00:09:11,890 impactante de lo difícil que era. 197 00:09:11,890 --> 00:09:16,125 >> Cuando ustedes no se meten en la hábito de escribir todo lo, 198 00:09:16,125 --> 00:09:20,260 se trata, naturalmente, de ser muy capaz de tener autocompletar 199 00:09:20,260 --> 00:09:22,015 soportes y puntos y comas allí. 200 00:09:22,015 --> 00:09:23,890 Cuando se escribe un vistazo con la mano, a veces es 201 00:09:23,890 --> 00:09:27,100 muy, muy fácil olvidar un punto y coma, o se olvide de cerrar un soporte, 202 00:09:27,100 --> 00:09:30,970 o se olvide de cerrar dos puntos, o algo asi. 203 00:09:30,970 --> 00:09:34,322 >> Así que cuando se escribe código a mano, es una sensación muy diferente. 204 00:09:34,322 --> 00:09:37,280 Así que ustedes, cuando se está trabajando a través de algunos de los problemas de la práctica, 205 00:09:37,280 --> 00:09:38,904 sería bueno practicar realmente hoy. 206 00:09:38,904 --> 00:09:41,770 O mañana, supongo, si estás tomar la prueba el jueves. 207 00:09:41,770 --> 00:09:45,280 >> En segundo lugar, tenemos la última, como, el valor de la práctica de ocho de años 208 00:09:45,280 --> 00:09:47,070 cuestionarios en línea. 209 00:09:47,070 --> 00:09:50,759 Concurso de este año será probablemente muy, muy similar a todos ellos. 210 00:09:50,759 --> 00:09:51,800 Todos son muy similares. 211 00:09:51,800 --> 00:09:54,220 De alguna manera entrar en el estilo de el tipo de preguntas 212 00:09:54,220 --> 00:09:57,250 lo que pedimos, el tipo de funciones que vamos a escribir en, 213 00:09:57,250 --> 00:09:58,580 etcétera, etcétera. 214 00:09:58,580 --> 00:10:01,980 >> Así que toma las pruebas de la práctica, especialmente bajo las limitaciones de tiempo. 215 00:10:01,980 --> 00:10:05,390 75 minutos para hacer la prueba es no un montón de tiempo. 216 00:10:05,390 --> 00:10:07,254 Es muy, muy largo. 217 00:10:07,254 --> 00:10:09,670 Y lo que ustedes realmente quieren para asegurarse de que ustedes son 218 00:10:09,670 --> 00:10:11,990 el hábito de la escritura código a mano rápidamente. 219 00:10:11,990 --> 00:10:15,070 Debido a que usted no desea que la primera tiempo para ver una prueba de que la longitud 220 00:10:15,070 --> 00:10:16,560 estar en su prueba. 221 00:10:16,560 --> 00:10:20,540 Ustedes realmente quiere asegurarse que la práctica de antemano. 222 00:10:20,540 --> 00:10:24,550 >> En cuarto lugar, desea revisar la conferencias y sección diapositivas. 223 00:10:24,550 --> 00:10:25,980 Usted no tiene que memorizar cosas. 224 00:10:25,980 --> 00:10:30,430 En realidad, todo el mundo se le permite un una hoja de notas de papel blanco, 225 00:10:30,430 --> 00:10:31,090 frente y detrás. 226 00:10:31,090 --> 00:10:32,920 Ustedes pueden escribir o escribir. 227 00:10:32,920 --> 00:10:37,070 Si ves que necesitas memorizar nada, lo dejó en esa hoja. 228 00:10:37,070 --> 00:10:40,810 >> Te garantizo que usted no quiere ser atrapado en el medio de ese cuestionario 229 00:10:40,810 --> 00:10:43,890 siendo así, oh sí, ¿cuál es el tiempo de ejecución de este tipo frente a ese tipo. 230 00:10:43,890 --> 00:10:46,490 Sólo hay que poner abajo y copiarlo directamente desde la hoja de la nota. 231 00:10:46,490 --> 00:10:50,420 A continuación, puede en realidad sólo tiene que utilizar su cerebro para pensar en los problemas 232 00:10:50,420 --> 00:10:52,190 en lugar de tener que recordar hechos. 233 00:10:52,190 --> 00:10:55,250 Y así realmente aprovechar de ningún detalle de nicho 234 00:10:55,250 --> 00:11:00,140 que usted piensa que necesita para memorizar, plop abajo en la hoja de examen. 235 00:11:00,140 --> 00:11:02,680 >> OK, cualquier pregunta logísticamente en relación con el cuestionario 236 00:11:02,680 --> 00:11:05,510 antes de empezar alguna practican problemas de concursos? 237 00:11:05,510 --> 00:11:06,416 ¿Sí? 238 00:11:06,416 --> 00:11:10,040 >> AUDIENCIA: No he tenido la oportunidad mirar el cuestionario [inaudible] 239 00:11:10,040 --> 00:11:11,757 pero se que va a ser aplicación sobre todo, 240 00:11:11,757 --> 00:11:14,090 ¿O hay también va a ser, como, preguntas de cultura? 241 00:11:14,090 --> 00:11:14,940 >> PROFESOR: Es mucho. 242 00:11:14,940 --> 00:11:16,731 Por lo tanto, la forma en que yo haría describe el cuestionario 243 00:11:16,731 --> 00:11:18,810 es-- junté algunos problemas de práctica 244 00:11:18,810 --> 00:11:20,960 que me sacó de todos los concursos. 245 00:11:20,960 --> 00:11:25,210 Pero verás que hay dos principales tipos de preguntas que nos preguntarán ustedes. 246 00:11:25,210 --> 00:11:28,750 >> Se trata de un muy bajo nivel de detalle de cosas. 247 00:11:28,750 --> 00:11:31,720 Le daremos un pequeño trozo de código y decir, ¿hay algún error en esta lista? 248 00:11:31,720 --> 00:11:33,110 ¿Cuál sería la impresión de aquí? 249 00:11:33,110 --> 00:11:35,980 ¿Qué hará este código producir, etcétera. 250 00:11:35,980 --> 00:11:38,710 Así detalles de información de muy baja actividad. 251 00:11:38,710 --> 00:11:42,700 >> Y por el otro lado, vamos a tener muy alto nivel preguntas basadas en el conocimiento. 252 00:11:42,700 --> 00:11:45,190 ¿Puede explicar lo que el diferencia entre una búsqueda binaria 253 00:11:45,190 --> 00:11:46,148 y una búsqueda lineal es? 254 00:11:46,148 --> 00:11:48,500 ¿Por qué íbamos a querer utilizar uno sobre el otro? 255 00:11:48,500 --> 00:11:49,960 Tal vez, lo que es GDB? 256 00:11:49,960 --> 00:11:51,560 ¿Por qué queremos utilizar GDB? 257 00:11:51,560 --> 00:11:54,590 Nivel más alto, más fundamental preguntas de comprensión. 258 00:11:54,590 --> 00:11:58,240 Así verás una mezcla de los dos de ellos en su cuestionario. 259 00:11:58,240 --> 00:12:01,462 >> Cualquier otra cosa antes de que dirigirse directamente a ella? 260 00:12:01,462 --> 00:12:02,879 OK. 261 00:12:02,879 --> 00:12:03,670 AUDIENCIA: Una más. 262 00:12:03,670 --> 00:12:04,030 PROFESOR: Oh, una más. 263 00:12:04,030 --> 00:12:04,340 Apenado. 264 00:12:04,340 --> 00:12:05,631 >> AUDIENCIA: Sí, está bien. 265 00:12:05,631 --> 00:12:10,140 Así que estás diciendo 75 minutos es demasiado corto, como es poco probable 266 00:12:10,140 --> 00:12:11,640 que vamos a terminar? 267 00:12:11,640 --> 00:12:13,571 O, como, 75 minutos es exactamente el mismo tiempo 268 00:12:13,571 --> 00:12:15,700 ya que necesitaríamos si fuéramos preparado adecuadamente? 269 00:12:15,700 --> 00:12:17,450 PROFESOR: OK, por lo que el cuestionario es un reto. 270 00:12:17,450 --> 00:12:19,550 En definitiva, es un reto. 271 00:12:19,550 --> 00:12:21,092 Usted se encontrará con poco tiempo. 272 00:12:21,092 --> 00:12:24,341 Usted está probablemente va a golpear, como 10, 15 minutos para el final, y ser como, mierda. 273 00:12:24,341 --> 00:12:25,520 Tengo tanto que hacer. 274 00:12:25,520 --> 00:12:26,520 Y eso es totalmente bien. 275 00:12:26,520 --> 00:12:28,740 Todo el mundo va a sentir la misma manera. 276 00:12:28,740 --> 00:12:31,074 >> Apenas sea muy consciente de cuanto tiempo tienes. 277 00:12:31,074 --> 00:12:33,490 Y por eso te digo chicos hacen los exámenes de práctica. 278 00:12:33,490 --> 00:12:36,672 Porque lo que realmente le da un gran sentido de lo que la prueba va a ser así. 279 00:12:36,672 --> 00:12:39,130 Así que si usted se encuentra siendo capaz de terminar la práctica 280 00:12:39,130 --> 00:12:41,671 cuestionarios en una buena cantidad de tiempo, usted puede mantener un ritmo bueno, 281 00:12:41,671 --> 00:12:45,695 entonces usted no tendrá un problema el miércoles o el jueves. 282 00:12:45,695 --> 00:12:46,575 >> Guay. 283 00:12:46,575 --> 00:12:49,200 Así que si todo el mundo wants-- Creo la mayoría de la gente tiene hojas de papel 284 00:12:49,200 --> 00:12:49,810 ya. 285 00:12:49,810 --> 00:12:52,604 Voy a esencialmente sólo darle ejemplos de preguntas, 286 00:12:52,604 --> 00:12:54,520 dar a ustedes, como, un unos minutos para hacer ellos. 287 00:12:54,520 --> 00:12:59,610 Y vamos a repasar como clase lo que las respuestas a ellos son. 288 00:12:59,610 --> 00:13:02,860 >> Así que este es un muy típico pregunta temprano vamos a 289 00:13:02,860 --> 00:13:06,720 pregunte usted, sólo la conversión números entre diferentes bases. 290 00:13:06,720 --> 00:13:09,070 Binarios, como ustedes pueden recuerdo, es la base de dos. 291 00:13:09,070 --> 00:13:12,470 Decimal es base 10, o lo que como seres humanos normalmente interpretan. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal es de base 16, que es cero al nueve, así como la A a la F. 293 00:13:17,120 --> 00:13:19,990 >> Así que hay cuatro números estoy pidiendo a ustedes para convertir aquí. 294 00:13:19,990 --> 00:13:23,909 Voy a dar lo desea, de tres a cuatro minutos para pensar en cómo 295 00:13:23,909 --> 00:13:25,200 iríamos sobre solucionar esto. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> AUDIENCIA: ¿Se nos permite calculadoras? 298 00:13:35,710 --> 00:13:37,630 >> PROFESOR: No lo harás necesitará calculadoras, sí. 299 00:13:37,630 --> 00:13:42,420 Creo además básica, creo, es Se les pedirá a todos ustedes por hacer. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> Y justo así que tipo de un sentido de cuando todo el mundo se hace, mira hacia arriba, 302 00:14:45,070 --> 00:14:47,429 onda, no sé, sonreír, mira feliz si ya está. 303 00:14:47,429 --> 00:14:47,929 Sí. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Tal vez un par de minutos más. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, vamos a traerlo. 308 00:18:29,600 --> 00:18:31,580 Estoy a propósito de ir a daros menos tiempo 309 00:18:31,580 --> 00:18:33,760 lo que probablemente necesita hacer algunos de estos problemas, 310 00:18:33,760 --> 00:18:37,124 simplemente porque quiero asegurarme de que obtenemos a través de un montón de problemas. 311 00:18:37,124 --> 00:18:39,290 Así que no se preocupe si usted no tienen la oportunidad de terminar. 312 00:18:39,290 --> 00:18:43,770 Totalmente bien, siempre y cuando usted tiene una idea de cómo ir sobre esto. 313 00:18:43,770 --> 00:18:45,850 Así que vamos a seguir adelante y hacer el primero. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Así que primero, ¿alguien quiere decirme en binario, lo que haga cada uno de estos dígitos 316 00:18:57,870 --> 00:19:00,484 representar en términos de sus valores? 317 00:19:00,484 --> 00:19:01,250 ¿Sí? 318 00:19:01,250 --> 00:19:03,349 >> AUDIENCIA: Dos al potencia cero, dos a uno. 319 00:19:03,349 --> 00:19:04,140 PROFESOR: Exactamente. 320 00:19:04,140 --> 00:19:04,640 Asi que. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Derecho, por lo que normalmente cuando estamos en la base 10 323 00:19:16,430 --> 00:19:20,580 Todo esto representa son, como, 10 a la base de cero, ¿no? 324 00:19:20,580 --> 00:19:21,810 Ese es el lugar de su ser. 325 00:19:21,810 --> 00:19:24,520 Todo tu lugar de 10 es es 10 a la potencia de uno. 326 00:19:24,520 --> 00:19:26,600 Lugar de Usted es el 100 10 a la potencia de dos. 327 00:19:26,600 --> 00:19:29,570 >> Cualquiera que sea la base que está en está pasando que ver con la misma cosa, 328 00:19:29,570 --> 00:19:31,480 simplemente con una base diferente. 329 00:19:31,480 --> 00:19:34,130 Así binario, todo lo que es es base dos. 330 00:19:34,130 --> 00:19:37,110 Te vas a convertir todo el dígitos en dos a cualquier poder 331 00:19:37,110 --> 00:19:38,190 de ese dígito. 332 00:19:38,190 --> 00:19:41,450 Y así, en este sentido, puede tener una forma más fácil 333 00:19:41,450 --> 00:19:43,800 de ser capaz de sumar o resumir todos los números en orden 334 00:19:43,800 --> 00:19:46,010 para convertir en la base 10. 335 00:19:46,010 --> 00:19:50,362 >> Así que, ¿alguien quiere decirme lo que el respuesta a la primera es en base diez? 336 00:19:50,362 --> 00:19:51,674 >> AUDIENCIA: Dos, [inaudible] 337 00:19:51,674 --> 00:19:52,340 PROFESOR: Sí. 338 00:19:52,340 --> 00:19:53,230 AUDIENCIA: 42. 339 00:19:53,230 --> 00:19:56,560 PROFESOR: 42, ahí lo tienes. 340 00:19:56,560 --> 00:20:00,660 Así que la forma que tenemos esta respuesta era por haciendo dos, el primero, que es de dos. 341 00:20:00,660 --> 00:20:02,760 Más dos del tercero, que es ocho. 342 00:20:02,760 --> 00:20:07,590 Plus dos a la quinta, la cual es lo que sobra. 343 00:20:07,590 --> 00:20:09,390 Usted los resumes y es 42. 344 00:20:09,390 --> 00:20:12,000 >> ¿Hay alguien confundido sobre cómo hemos llegado hasta eso? 345 00:20:12,000 --> 00:20:15,630 Además tan básico, como Le dije, usted debe estar bien. 346 00:20:15,630 --> 00:20:17,410 Si no, bueno, podemos practicar eso también. 347 00:20:17,410 --> 00:20:18,720 Pero eso está bien. 348 00:20:18,720 --> 00:20:20,560 Guay. 349 00:20:20,560 --> 00:20:25,570 >> ¿Alguien quiere darme la responder a la segunda también? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Bien. 352 00:20:27,600 --> 00:20:30,044 Cualquier persona confundida sobre cómo conseguimos que sea? 353 00:20:30,044 --> 00:20:31,960 Enfriar, voy a tener la respuestas en la siguiente diapositiva. 354 00:20:31,960 --> 00:20:34,440 Así que no se preocupe si usted necesitará copiar hacia abajo. 355 00:20:34,440 --> 00:20:38,860 >> OK, así hexadecimal es un poco más complicado. 356 00:20:38,860 --> 00:20:41,840 pero yo te voy a mostrar chicos un acceso directo para saber cómo hacerlo. 357 00:20:41,840 --> 00:20:44,800 Así hexadecimal, como usted recuerde, todo lo que es ser de 16. 358 00:20:44,800 --> 00:20:48,920 Y debido a que los humanos no lo hacen realidad tener 16 números para representar que, 359 00:20:48,920 --> 00:20:56,940 vamos a partir de cero a nueve, que nuestra primera 10 valores, y luego hacemos la A a la F, 360 00:20:56,940 --> 00:20:58,630 que son los siguientes seis valores. 361 00:20:58,630 --> 00:21:03,040 >> Y así, la forma más fácil de ir de cualquier número binario a hexadecimal 362 00:21:03,040 --> 00:21:05,350 es separarlos en dos mitades. 363 00:21:05,350 --> 00:21:10,042 Y por lo que cualquier número binario que dará es probable que tenga ocho dígitos. 364 00:21:10,042 --> 00:21:11,750 Usted sólo puede romper hacia arriba en el centro. 365 00:21:11,750 --> 00:21:17,460 >> Así que la primera uno-- solo uno, solo uno, uno, uno, uno solo. 366 00:21:17,460 --> 00:21:21,340 Tipo de pensar que, ya sabes, dibuja una barra o una coma entre ellas. 367 00:21:21,340 --> 00:21:23,800 Y sólo se puede convertir directamente lo que sea 368 00:21:23,800 --> 00:21:26,670 esto es el primer número de hexadecimal, 369 00:21:26,670 --> 00:21:29,880 y todo lo que aquí es el segundo de hexadecimal. 370 00:21:29,880 --> 00:21:37,584 >> Así que recuerde de la notación común, lo empiezan valores hexadecimales con? 371 00:21:37,584 --> 00:21:38,460 >> AUDIENCIA: Cero. 372 00:21:38,460 --> 00:21:39,270 >> PROFESOR: 0X. 373 00:21:39,270 --> 00:21:45,210 Así que sabemos que en cualquier momento te pedimos para convertir cualquier número a hexadecimal, 374 00:21:45,210 --> 00:21:48,230 o en cualquier momento que usted ve ninguna número que comienza con 0X, 375 00:21:48,230 --> 00:21:50,230 usted sabe que es un valor hexadecimal. 376 00:21:50,230 --> 00:21:54,160 >> Y entonces usted va a pedir que determinar lo que estos dos dígitos son. 377 00:21:54,160 --> 00:21:59,690 Y la manera de hacerlo, del conteo de que la mitad y del conteo de ese medio. 378 00:21:59,690 --> 00:22:02,870 Así que en este ejemplo, lo que habría uno, uno, uno, uno ser? 379 00:22:02,870 --> 00:22:04,890 ¿Qué valor podría ser? 380 00:22:04,890 --> 00:22:06,040 Eso sería F, ¿verdad? 381 00:22:06,040 --> 00:22:08,050 Eso sería 15. 382 00:22:08,050 --> 00:22:11,780 >> Así que este sería F. Uno, uno, uno, uno aquí es también 383 00:22:11,780 --> 00:22:21,270 F. Así que uno, uno, uno, uno, uno, uno, uno, una en hexadecimal, todo lo que es es 0xFF. 384 00:22:21,270 --> 00:22:25,350 Debido a que este medio representa F, el valor de 15, 385 00:22:25,350 --> 00:22:27,331 y esto representaba un medio F, el valor 15. 386 00:22:27,331 --> 00:22:29,456 Porque recuerda, estamos a contar desde cero a nueve. 387 00:22:29,456 --> 00:22:35,290 Una es como 10, B es como 11, F es 15. 388 00:22:35,290 --> 00:22:41,690 >> ¿Tiene sentido a todo el mundo cómo llegamos de binario a hexadecimal? 389 00:22:41,690 --> 00:22:44,595 >> AUDIENCIA: Entonces ¿cómo hemos llegado 15 de la uno, uno, uno, uno? 390 00:22:44,595 --> 00:22:46,220 PROFESOR: Sí, esto es binario, ¿verdad? 391 00:22:46,220 --> 00:22:48,090 Imagínese esto es sólo un número binario. 392 00:22:48,090 --> 00:22:50,792 Así que hay dos a la cero, que es uno. 393 00:22:50,792 --> 00:22:51,500 AUDIENCIA: ¡Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Así que sólo una total hacia fuera. 395 00:22:51,670 --> 00:22:52,670 >> PROFESOR: Sí, y luego que acaba totales que fuera. 396 00:22:52,670 --> 00:22:53,380 Eso es todo lo que es. 397 00:22:53,380 --> 00:22:54,890 >> AUDIENCIA: OK. 398 00:22:54,890 --> 00:22:55,830 >> PROFESOR: OK. 399 00:22:55,830 --> 00:23:00,740 >> AUDIENCIA: Entonces vas de binario a decimal a hexadecimal? 400 00:23:00,740 --> 00:23:04,590 >> PROFESOR: Eso es la manera más fácil de hacerlo, sí. 401 00:23:04,590 --> 00:23:11,390 No vas a decimal porque decimal tiene cero a nueve. 402 00:23:11,390 --> 00:23:13,410 Somos sólo un poco dividir esto en dos. 403 00:23:13,410 --> 00:23:15,201 >> AUDIENCIA: [inaudible] usando decimal a encontrar 404 00:23:15,201 --> 00:23:17,809 lo que coincide hasta en hexadecimal. 405 00:23:17,809 --> 00:23:20,100 PROFESOR: Quiero decir, eres del conteo de uso de las matemáticas básicas. 406 00:23:20,100 --> 00:23:20,725 AUDIENCIA: Sí. 407 00:23:20,725 --> 00:23:22,300 PROFESOR: Sí, más o menos. 408 00:23:22,300 --> 00:23:23,630 Es un poco confuso. 409 00:23:23,630 --> 00:23:26,410 Pero sólo sé que usted puede dividir lo que sea 410 00:23:26,410 --> 00:23:28,160 este valor es sólo en mitades. 411 00:23:28,160 --> 00:23:29,570 Mira, ¿qué es esto en binario? 412 00:23:29,570 --> 00:23:30,610 ¿Qué número es? 413 00:23:30,610 --> 00:23:33,270 Va a ser algo de cero a F. 414 00:23:33,270 --> 00:23:35,722 >> Aquí también va a ser algo de cero a F. 415 00:23:35,722 --> 00:23:37,722 Y entonces usted puede simplemente poner esos dos allí mismo. 416 00:23:37,722 --> 00:23:38,263 >> AUDIENCIA: OK. 417 00:23:38,263 --> 00:23:38,910 PROFESOR: Sí. 418 00:23:38,910 --> 00:23:39,410 OK. 419 00:23:39,410 --> 00:23:42,320 Así que chicos quiere tratar el siguiente, entonces? 420 00:23:42,320 --> 00:23:49,601 Cero, uno, cero uno, uno, cero, uno cero. 421 00:23:49,601 --> 00:23:52,350 Te voy a dar chicos como 30 segundos, ya que probablemente no sabías 422 00:23:52,350 --> 00:23:53,850 el truco para cómo hacer esto antes. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, alguien quiere conseguir éste un tiro? 425 00:24:27,381 --> 00:24:28,774 >> 0x5A. 426 00:24:28,774 --> 00:24:29,440 PROFESOR: 0x5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Bien. 429 00:24:31,340 --> 00:24:37,050 Así que esta aquí sería ser-- desea para decirnos cómo llegó eso? 430 00:24:37,050 --> 00:24:38,920 En primer lugar, ¿cómo llegaste a los cinco? 431 00:24:38,920 --> 00:24:42,030 >> AUDIENCIA: Debido a cero, uno, cero, uno es de cinco. 432 00:24:42,030 --> 00:24:45,170 >> PROFESOR: ¿Todos entienden ¿por cero, uno, cero, uno es de cinco? 433 00:24:45,170 --> 00:24:46,260 Tienes una aquí. 434 00:24:46,260 --> 00:24:48,010 No tienes nada en dos a la primera. 435 00:24:48,010 --> 00:24:50,300 En dos a la segunda, que tener uno, que es de cuatro. 436 00:24:50,300 --> 00:24:52,600 Entonces se agrega el cuatro más el uno, que tiene cinco. 437 00:24:52,600 --> 00:24:53,600 ¿Todos bien? 438 00:24:53,600 --> 00:24:54,100 OK. 439 00:24:54,100 --> 00:24:56,570 Y entonces lo que este ser y por qué? 440 00:24:56,570 --> 00:24:58,350 ¿Qué número tiene una corresponde a? 441 00:24:58,350 --> 00:24:59,350 >> AUDIENCIA: 10. 442 00:24:59,350 --> 00:25:00,976 >> PROFESOR: ¿Y esto en base dos? 443 00:25:00,976 --> 00:25:01,850 AUDIENCIA: [inaudible] 444 00:25:01,850 --> 00:25:03,010 PROFESOR: Exactamente. 445 00:25:03,010 --> 00:25:06,370 Así que este segundo valor aquí sería 0x5A. 446 00:25:06,370 --> 00:25:08,410 >> Todo el mundo buena sobre cómo convertir? 447 00:25:08,410 --> 00:25:10,770 Es mucho más sencillo de lo que crees que es. 448 00:25:10,770 --> 00:25:13,330 Solo quiero estar seguro sabes consejos útiles 449 00:25:13,330 --> 00:25:14,950 y trucos sobre cómo hacer eso. 450 00:25:14,950 --> 00:25:18,432 >> AUDIENCIA: ¿Por qué puede usted acaba de dividir que en medio de esa manera? 451 00:25:18,432 --> 00:25:21,390 Sólo como, OK, yo sólo voy a se preocupan por estos primeros [inaudible]? 452 00:25:21,390 --> 00:25:24,240 >> PROFESOR: Porque eso es en realidad el manera se representan los valores hexadecimales. 453 00:25:24,240 --> 00:25:26,890 0X, que significa en realidad otra cosa que decirte 454 00:25:26,890 --> 00:25:28,710 que es un número hexadecimal. 455 00:25:28,710 --> 00:25:31,580 Y esto representa siempre los primeros cuatro dígitos. 456 00:25:31,580 --> 00:25:34,330 Y esto representa siempre los últimos cuatro dígitos. 457 00:25:34,330 --> 00:25:37,835 Y por lo que estas dos cifras solo corresponden a las diferentes bits. 458 00:25:37,835 --> 00:25:39,200 >> AUDIENCIA: Entonces vamos a always-- 459 00:25:39,200 --> 00:25:41,830 >> PROFESOR: Siempre estás va a conseguir ocho bits de valor. 460 00:25:41,830 --> 00:25:44,580 >> AUDIENCIA: ¿Es que al igual que una cosa aquí o que una cosa por todas partes? 461 00:25:44,580 --> 00:25:46,883 PROFESOR: Eso es sólo una cosa en computadoras, sí. 462 00:25:46,883 --> 00:25:47,424 AUDIENCIA: OK. 463 00:25:47,424 --> 00:25:48,240 Impresionante. 464 00:25:48,240 --> 00:25:51,290 >> PROFESOR: También, por lo que en este ejemplo convertimos de binario a decimal, 465 00:25:51,290 --> 00:25:53,290 y de binario a hexadecimal. 466 00:25:53,290 --> 00:25:56,610 ¿Quieren asegurarse de que usted también practicar ir al revés. 467 00:25:56,610 --> 00:26:03,370 Así que si yo te di 0xFF, podría dibujar que en binario, ¿verdad? 468 00:26:03,370 --> 00:26:06,820 >> Convierte F en binario, que es uno, uno, uno, uno, 469 00:26:06,820 --> 00:26:09,380 convertir F a binario, el cual es uno, uno, uno, uno. 470 00:26:09,380 --> 00:26:11,310 >> Así que nosotros podríamos pedirle que hacer al revés. 471 00:26:11,310 --> 00:26:14,817 Así decimal a binario, o hexadecimal a binario. 472 00:26:14,817 --> 00:26:16,650 Así que usted quiere hacer Asegúrese de saber en ambos sentidos. 473 00:26:16,650 --> 00:26:19,371 Probablemente vamos a hacerte una combinación de los dos. 474 00:26:19,371 --> 00:26:20,660 >> Sí, usted tiene una pregunta? 475 00:26:20,660 --> 00:26:22,724 Puedo ver-- eres bueno? 476 00:26:22,724 --> 00:26:23,348 AUDIENCIA: Sí. 477 00:26:23,348 --> 00:26:24,560 PROFESOR: OK. 478 00:26:24,560 --> 00:26:26,101 ¿Soy buena para borrar esto? 479 00:26:26,101 --> 00:26:26,600 Excelente. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Muy bien, por lo que las respuestas están aquí, si alguien Es curioso tarde y confundirse. 482 00:26:40,437 --> 00:26:41,844 OK. 483 00:26:41,844 --> 00:26:46,070 >> AUDIENCIA: ¿Importa si ponemos nuestras letras en capitolio o minúscula? 484 00:26:46,070 --> 00:26:50,360 >> PROFESOR: Lo hace, porque en hexadecimal, por convención, 485 00:26:50,360 --> 00:26:52,840 todos los personajes están en mayúsculas. 486 00:26:52,840 --> 00:26:54,650 Así A a F son va a ser mayúsculo. 487 00:26:54,650 --> 00:26:58,660 Si usted pone una minúscula a, no sé si queremos necesariamente marcarlo mal. 488 00:26:58,660 --> 00:27:00,679 Pero en teoría, eso no es técnicamente 489 00:27:00,679 --> 00:27:01,970 cómo se supone que tienes que. 490 00:27:01,970 --> 00:27:03,303 Así que todos ellos deben estar en mayúsculas. 491 00:27:03,303 --> 00:27:05,910 Sí, buena pregunta. 492 00:27:05,910 --> 00:27:07,780 >> OK. 493 00:27:07,780 --> 00:27:08,790 Segunda pregunta. 494 00:27:08,790 --> 00:27:12,750 Considere este hermoso programa aquí. 495 00:27:12,750 --> 00:27:15,180 Voy a hacer la pregunta, Volveré esto. 496 00:27:15,180 --> 00:27:23,170 >> Así, en primer lugar, lo que está dentro de la norma io.h eso es de interés para el programa? 497 00:27:23,170 --> 00:27:26,640 En segundo lugar, lo que hace vacío significar en la línea de tres? 498 00:27:26,640 --> 00:27:30,572 Y en tercer lugar, ¿qué quiere regresar cero desde principal, como la línea de seis, por lo general significan? 499 00:27:30,572 --> 00:27:33,280 Si ustedes quieren escribir los abajo, ya que tengo que cambiar de nuevo 500 00:27:33,280 --> 00:27:36,810 a la diapositiva sólo para que pueda ver el código. 501 00:27:36,810 --> 00:27:40,400 Este es un ejemplo de, como, tal vez una alto nivel en cuestión le pedimos 502 00:27:40,400 --> 00:27:42,435 qué cosas quiere decir en un programa. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Todo el mundo es bueno para mí volver a la diapositiva? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 Vale, guay. 507 00:27:54,361 --> 00:27:57,610 Así que te voy a dar a tipos como tal vez tres minuto para mirar éste rápida real. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, así que éste es como bastante fácil, conceptualmente. 510 00:28:44,140 --> 00:28:49,280 ¿Alguien quiere decirme lo que es primero interior de hachís incluyendo 511 00:28:49,280 --> 00:28:52,630 nuestro archivo de biblioteca io.h estándar? 512 00:28:52,630 --> 00:28:55,510 ¿Por qué necesitamos esa biblioteca incluido para este programa? 513 00:28:55,510 --> 00:28:56,930 Lo que aquí es lo que necesitamos para? 514 00:28:56,930 --> 00:28:56,980 >> ¿Sí? 515 00:28:56,980 --> 00:28:58,340 >> AUDIENCIA: ¿Es que cuando pones que printf? 516 00:28:58,340 --> 00:28:59,131 >> PROFESOR: Exactamente. 517 00:28:59,131 --> 00:29:01,780 Así printf, cada vez que tener una entrada desde el usuario 518 00:29:01,780 --> 00:29:04,140 e imprimir algo a la pantalla, eso es 519 00:29:04,140 --> 00:29:05,600 la entrada estándar, la biblioteca de salida. 520 00:29:05,600 --> 00:29:07,170 Piense en ello que manera-- entrada, salida. 521 00:29:07,170 --> 00:29:08,430 >> ¿Tengo una salida? 522 00:29:08,430 --> 00:29:09,207 Sí. 523 00:29:09,207 --> 00:29:12,040 Así que sé que siempre voy a necesitará la biblioteca i.o estandarizar. 524 00:29:12,040 --> 00:29:16,400 >> Así printf es la función por el cual tenemos que acceder 525 00:29:16,400 --> 00:29:19,370 y hashtag incluye el biblioteca i.o estándar. 526 00:29:19,370 --> 00:29:20,280 OK. 527 00:29:20,280 --> 00:29:22,660 >> En segundo lugar, ¿qué significa vacío? 528 00:29:22,660 --> 00:29:26,970 Tenemos el principal int (void), lo que hace anular aquí significa aquí en la línea de tres? 529 00:29:26,970 --> 00:29:28,080 Sí, en la parte posterior. 530 00:29:28,080 --> 00:29:29,020 >> AUDIENCIA: [inaudible] 531 00:29:29,020 --> 00:29:29,920 >> PROFESOR: Exactamente. 532 00:29:29,920 --> 00:29:33,320 Así que recuerde, hemos aprendido comenzando con nuestra pset 533 00:29:33,320 --> 00:29:35,360 que en realidad se puede indique la línea de comandos 534 00:29:35,360 --> 00:29:39,010 argumentos que su programa, que función principal, toma como usted, el usuario, 535 00:29:39,010 --> 00:29:39,650 llámalo. 536 00:29:39,650 --> 00:29:42,650 Si tenemos vacío, eso significa que usted simplemente podría ejecutar directamente el programa 537 00:29:42,650 --> 00:29:44,680 sin ningún tipo de argumentos de la línea de comandos. 538 00:29:44,680 --> 00:29:46,160 Todo el mundo claro? 539 00:29:46,160 --> 00:29:46,660 OK. 540 00:29:46,660 --> 00:29:52,850 >> Y por último, ¿por qué nos molestamos haciendo esta cosa cero vuelta aquí? 541 00:29:52,850 --> 00:29:54,740 ¿Por qué tenemos un int principal? 542 00:29:54,740 --> 00:29:57,330 ¿Por qué no podemos simplemente tener void main vacío? 543 00:29:57,330 --> 00:29:59,216 ¿Sí? 544 00:29:59,216 --> 00:30:01,590 AUDIENCIA: Sólo para que podamos asegúrese de que el programa es 545 00:30:01,590 --> 00:30:04,247 salir con éxito, como se a diferencia de si fue contado. 546 00:30:04,247 --> 00:30:06,580 Y nosotros sabemos que eso es un tipo diferente de error. 547 00:30:06,580 --> 00:30:07,621 >> PROFESOR: Sí, exactamente. 548 00:30:07,621 --> 00:30:10,670 Esto es sólo una muy lo convencional que hacemos, 549 00:30:10,670 --> 00:30:13,840 es que justo al final de su programa, sólo para asegurarse de 550 00:30:13,840 --> 00:30:15,830 que su función principal está funcionando correctamente, 551 00:30:15,830 --> 00:30:17,940 siempre queremos hacer de retorno cero. 552 00:30:17,940 --> 00:30:21,160 A pesar de que puede necesariamente no ven que imprimen en cualquier lugar. 553 00:30:21,160 --> 00:30:25,092 >> Debido a que como programadores, ya sabes, si usted tiene muchas líneas diferentes de código 554 00:30:25,092 --> 00:30:27,050 y usted no sabe dónde estos van mal, 555 00:30:27,050 --> 00:30:30,240 y si ocurre un error que deseas asegúrese de que usted obtenga ese error. 556 00:30:30,240 --> 00:30:33,240 Y tan típicamente si algo sale mal que tendremos un regreso de uno solo 557 00:30:33,240 --> 00:30:34,669 para asegurarse de que sabemos que es. 558 00:30:34,669 --> 00:30:36,460 Así que si usted ve un retorno cero, que típicamente 559 00:30:36,460 --> 00:30:38,293 significa que su programa es ejecutado con éxito. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 ¿Bien? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Guay. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, segundo programa aquí. 566 00:30:52,680 --> 00:30:54,827 Considere eso. 567 00:30:54,827 --> 00:30:56,910 Y si ustedes ver a un flotar, ustedes probablemente puede 568 00:30:56,910 --> 00:31:00,810 tener una buena idea de lo que Estoy a punto de preguntarle. 569 00:31:00,810 --> 00:31:05,200 >> Así que cuando este programa ejecuta, como se puede ver, 570 00:31:05,200 --> 00:31:09,330 Estoy declarando un flotador dentro de mi función principal. 571 00:31:09,330 --> 00:31:13,470 Estoy dándole el nombre "respondió," y estoy configurando que igual a uno dividido por 10. 572 00:31:13,470 --> 00:31:17,860 Estoy imprimiendo, a uno decimal, que flotan. 573 00:31:17,860 --> 00:31:19,880 Y luego voy a volver a cero. 574 00:31:19,880 --> 00:31:24,470 >> Así que cuando la ejecución del programa, pensar de nuevo a codiciosos ahora, 575 00:31:24,470 --> 00:31:26,550 Este programa imprime 0.0. 576 00:31:26,550 --> 00:31:29,993 Como todos sabemos, es de esperar que todos saben, uno dividido por 10 no es un 0,00, 577 00:31:29,993 --> 00:31:32,350 que es 0,1. 578 00:31:32,350 --> 00:31:37,810 Pero explicar por qué este programa piensa que 1 dividido por 10 grabados al 0,1 otra 579 00:31:37,810 --> 00:31:39,504 de 0,1? 580 00:31:39,504 --> 00:31:42,545 Te doy chicos tal vez como 30 segundo a pensar simplemente rápidamente sobre eso 581 00:31:42,545 --> 00:31:43,878 y yo voy a volver al programa. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> OK. 584 00:32:20,290 --> 00:32:22,205 ¿Alguien quiere darle una oportunidad? 585 00:32:22,205 --> 00:32:24,330 En tres frases o menos, porque normalmente estamos 586 00:32:24,330 --> 00:32:27,650 va a restringir todas las respuestas tres frases o menos 587 00:32:27,650 --> 00:32:31,130 por lo que no acaba de regurgitar cosas al azar favoritas en tu concurso. 588 00:32:31,130 --> 00:32:32,740 >> Sí, tomar una foto. 589 00:32:32,740 --> 00:32:36,390 >> AUDIENCIA: Así que creo que hay esta cosa que se llama, como, [inaudible] 590 00:32:36,390 --> 00:32:42,320 Así que podría ser, por ejemplo, puede haber, como, 0.09, 591 00:32:42,320 --> 00:32:47,250 que, cuando se imprime la primera dígitos, sería a 0,0? 592 00:32:47,250 --> 00:32:49,100 >> PROFESOR: Close, no del todo. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> AUDIENCIA: Estás divisoria y 10, y son ambos enteros. 595 00:32:51,770 --> 00:32:54,610 Y así, la forma en que se va para almacenarlo es como un entero. 596 00:32:54,610 --> 00:32:56,480 Y por lo que el número entero más cercano sería 0.0. 597 00:32:56,480 --> 00:32:57,471 Y eso es 0,1. 598 00:32:57,471 --> 00:32:58,970 PROFESOR: Sí, eso es muy bueno. 599 00:32:58,970 --> 00:33:00,040 Esa es la respuesta correcta. 600 00:33:00,040 --> 00:33:03,597 Así que este es un muy confuso concepto para un montón de niños. 601 00:33:03,597 --> 00:33:06,680 Y realmente quiero para asegurarse de que esto se ve reforzado en la cabeza de todos. 602 00:33:06,680 --> 00:33:10,090 >> Así que lo que llamamos flotante punto de imprecisión, 603 00:33:10,090 --> 00:33:12,800 donde la razón por la cual una gran cantidad de sus programas en codiciosos 604 00:33:12,800 --> 00:33:17,010 no funcionó inicialmente fue porque usted se olvidó de emitir su variable. 605 00:33:17,010 --> 00:33:19,370 Así lo dijo Christabell era del todo correcto. 606 00:33:19,370 --> 00:33:21,990 >> Un flotador es inherentemente impreciso. 607 00:33:21,990 --> 00:33:26,400 Debido a que en un ordenador, a la derecha, tenemos una cantidad finita de bits de memoria 608 00:33:26,400 --> 00:33:28,480 podemos usar para representar números. 609 00:33:28,480 --> 00:33:33,480 Así, por ejemplo, este ID CS50 es-- Creo que es un equipo de 64 bits. 610 00:33:33,480 --> 00:33:37,520 >> Un flotador sólo puede ser representado por una cantidad finita de esos bits. 611 00:33:37,520 --> 00:33:42,260 Y así 0,1 con ceros infinitos, que fue de 0,1 es, ¿verdad? 612 00:33:42,260 --> 00:33:45,450 Pero en realidad no podemos almacenar ese número en nuestro ordenador. 613 00:33:45,450 --> 00:33:47,810 Simplemente no tenemos memoria suficiente para hacerlo. 614 00:33:47,810 --> 00:33:52,340 >> Y así la aproximación más cercana lo que está almacenado en la memoria es en realidad 615 00:33:52,340 --> 00:33:55,390 algo así como 0.000 algo, algo, algo, algo. 616 00:33:55,390 --> 00:34:01,240 Lo cual, una vez que truncar que, redondea a 0,0. 617 00:34:01,240 --> 00:34:05,640 >> Y así, este ejemplo es sólo uno que demuestra un montón de problemas 618 00:34:05,640 --> 00:34:08,469 tenemos cuando estamos tratando de hacer mal las matemáticas 619 00:34:08,469 --> 00:34:11,000 sin poner como un entero diferente. 620 00:34:11,000 --> 00:34:14,870 Así que tener cuidado de que esto ocurra. 621 00:34:14,870 --> 00:34:18,239 >> En pruebas, si le damos un bloque de código y es como, 622 00:34:18,239 --> 00:34:19,510 lo que imprime al final? 623 00:34:19,510 --> 00:34:24,096 Y si se trata de un valor aleatorio que chicos deben saber por qué está sucediendo. 624 00:34:24,096 --> 00:34:24,909 ¿Sí? 625 00:34:24,909 --> 00:34:27,926 >> AUDIENCIA: Truncar es deshacerse de todo lo que después de un cierto punto? 626 00:34:27,926 --> 00:34:28,513 [INAUDIBLE] 627 00:34:28,513 --> 00:34:30,929 PROFESOR: Sí, lo que en realidad este es un muy mal ejemplo, 628 00:34:30,929 --> 00:34:37,870 porque en realidad lo que sea 0.100 se truncará hasta 0,1. 629 00:34:37,870 --> 00:34:41,389 Pero si tuviera que ejecutar it-- no lo hago recordar, porque el año pasado 630 00:34:41,389 --> 00:34:42,830 corrió en un programa diferente. 631 00:34:42,830 --> 00:34:45,300 Corrieron en algo llamado el CS50 Appliance, que 632 00:34:45,300 --> 00:34:46,389 es diferente de la ID. 633 00:34:46,389 --> 00:34:48,520 Ese fue un sistema de 32 bits, creo. 634 00:34:48,520 --> 00:34:50,290 Y así había diferentes números. 635 00:34:50,290 --> 00:34:53,330 >> Pero, en esencia, sólo sé que todo el concepto de truncamiento 636 00:34:53,330 --> 00:34:54,815 y cómo se acaba corta las cosas. 637 00:34:54,815 --> 00:34:55,690 Y por lo que si rounds-- 638 00:34:55,690 --> 00:34:56,300 >> AUDIENCIA: Sin redondeo. 639 00:34:56,300 --> 00:34:57,370 >> PROFESOR: Exactamente. 640 00:34:57,370 --> 00:34:57,870 Sí. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Guay. 643 00:35:04,380 --> 00:35:05,250 >> Hola, en la parte posterior. 644 00:35:05,250 --> 00:35:07,634 Estamos repasando algunos preguntas de revisión concurso. 645 00:35:07,634 --> 00:35:08,430 >> Correcto. 646 00:35:08,430 --> 00:35:10,150 Así que considera un programa diferente aquí. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Voy a dar a ustedes un par de minutos para leer sobre esto. 649 00:35:15,380 --> 00:35:18,588 Esto es algo que era para un muy recientemente que creo que soplaba mucho de ustedes 650 00:35:18,588 --> 00:35:19,142 las mentes de hombres. 651 00:35:19,142 --> 00:35:21,100 Pero vamos a hablar a través de este nuevo sólo 652 00:35:21,100 --> 00:35:24,152 para asegurarse de que entenderlo completamente. 653 00:35:24,152 --> 00:35:24,652 OK. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 OK. 656 00:35:41,780 --> 00:35:44,342 Cualquier persona necesita más tiempo para leer a través de este código? 657 00:35:44,342 --> 00:35:45,650 OK. 658 00:35:45,650 --> 00:35:50,630 >> Así que me parece que en este programa estoy 659 00:35:50,630 --> 00:35:53,460 la creación de dos cadenas mediante el uso de GetString. 660 00:35:53,460 --> 00:35:55,180 Una llamada s y uno llamado t. 661 00:35:55,180 --> 00:35:58,680 Y si son iguales es igual a la otra, 662 00:35:58,680 --> 00:36:00,880 debe imprimir "Usted escriba la misma cosa ". 663 00:36:00,880 --> 00:36:04,170 >> Pero elsewise, sería imprimir, "Usted escrito cosas diferentes ", ¿verdad? 664 00:36:04,170 --> 00:36:05,990 Parece muy, muy simple. 665 00:36:05,990 --> 00:36:08,720 Pero, sin embargo, si realmente tratar de escribir este programa, 666 00:36:08,720 --> 00:36:12,230 parece que incluso cuando de entrada las mismas cadenas exactas, 667 00:36:12,230 --> 00:36:15,490 todavía imprime, "Usted mecanografiado diferentes cosas! " 668 00:36:15,490 --> 00:36:18,020 ¿Alguien quiere tomar un oportunidad por qué este programa siempre 669 00:36:18,020 --> 00:36:20,370 responde que las entradas son diferentes, incluso 670 00:36:20,370 --> 00:36:22,090 cuando las palabras en sí son los mismos? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Así que si yo fuera a input-- David amor utilizar un ejemplo como madre, ¿no? 673 00:36:29,170 --> 00:36:37,890 Minúsculas M-O-M de S, T es igual a minúsculas M-O-M. 674 00:36:37,890 --> 00:36:40,340 Si me encontré con esto a través de ese código, ¿por qué se 675 00:36:40,340 --> 00:36:44,180 imprimir "que ha escrito cosas diferentes?" 676 00:36:44,180 --> 00:36:46,336 >> ¿Necesita más a nadie tiempo para pensar acerca de esto? 677 00:36:46,336 --> 00:36:47,294 OK, creo que estamos bien. 678 00:36:47,294 --> 00:36:48,716 ¿Sí? 679 00:36:48,716 --> 00:36:53,930 >> AUDIENCIA: OK, así que es algo acerca de donde se almacena en la memoria, ¿no? 680 00:36:53,930 --> 00:36:54,890 >> PROFESOR: Sí. 681 00:36:54,890 --> 00:37:00,400 >> AUDIENCIA: En caso de que, como si esto cadena s se almacena en la memoria spot-- 682 00:37:00,400 --> 00:37:01,689 Estoy inventando esto-- es cero. 683 00:37:01,689 --> 00:37:02,355 PROFESOR: Claro. 684 00:37:02,355 --> 00:37:05,290 AUDIENCIA: Y cadena t se almacena a punto de la memoria, 685 00:37:05,290 --> 00:37:11,000 como, 167, y luego cero no es igual a 167. 686 00:37:11,000 --> 00:37:12,610 >> PROFESOR: Exactamente. 687 00:37:12,610 --> 00:37:18,350 OK, así que recuerde esta increíble revelación explicamos a ustedes 688 00:37:18,350 --> 00:37:21,530 la semana pasada, que cadenas no existen realmente? 689 00:37:21,530 --> 00:37:25,380 Cuando creamos algo que se llama cadena que estamos, en realidad, 690 00:37:25,380 --> 00:37:29,330 la creación de algo que se llama estrella de carbón. 691 00:37:29,330 --> 00:37:34,470 Que todo lo que es es un puntero a una cadena o a un array de caracteres. 692 00:37:34,470 --> 00:37:39,480 >> Y así, en este ejemplo, si estaban a la entrada de M-O-M el camino 693 00:37:39,480 --> 00:37:49,350 que mi equipo iba a guardarlo es dentro de la barra invertida de memoria cero, ¿no? 694 00:37:49,350 --> 00:37:53,180 Estos cuatro personajes, caracteres, sería almacenada en alguna parte. 695 00:37:53,180 --> 00:37:59,290 >> Y entonces estos cuatro personajes, barra invertida cero, 696 00:37:59,290 --> 00:38:01,275 se almacenan en otro lugar, ¿verdad? 697 00:38:01,275 --> 00:38:04,685 No tengo ni idea de dónde las direcciones son, están en alguna parte de mi equipo. 698 00:38:04,685 --> 00:38:07,080 Pero yo no sé exactamente dónde están. 699 00:38:07,080 --> 00:38:10,170 >> Cuando creo una cadena s, lo que realmente es 700 00:38:10,170 --> 00:38:15,550 es un puntero a la inicio de esta cadena. 701 00:38:15,550 --> 00:38:21,130 Y cuando creo este valor t, todo lo que es un puntero a aquí. 702 00:38:21,130 --> 00:38:23,980 Y así, cuando usted está tratando equiparar y comprobar 703 00:38:23,980 --> 00:38:27,710 para ver si s es igual a igual es igual a t, el ordenador 704 00:38:27,710 --> 00:38:31,635 es en realidad volver a que la dirección de esta m 705 00:38:31,635 --> 00:38:33,390 y la dirección de ese m. 706 00:38:33,390 --> 00:38:36,230 Y porque son de dos piezas separadas de datos 707 00:38:36,230 --> 00:38:38,750 que se almacenan en dos diferentes direcciones en el equipo, 708 00:38:38,750 --> 00:38:41,750 el equipo nunca va a reconocerlos como siendo el mismo. 709 00:38:41,750 --> 00:38:43,500 ¿Alguien quiere darle una oportunidad por lo que 710 00:38:43,500 --> 00:38:46,900 tendría que hacer si queremos corregir esto y tener un programa en ejecución correcta 711 00:38:46,900 --> 00:38:49,360 ¿en lugar? 712 00:38:49,360 --> 00:38:52,070 Piense en eso por un par de segundos. 713 00:38:52,070 --> 00:38:54,929 ¿Qué necesitamos para cambiar a conseguir este funcionamiento del programa 714 00:38:54,929 --> 00:38:56,220 la forma en que queremos que funcione? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Sí, quiero tomar una puñalada en ella? 717 00:39:18,918 --> 00:39:24,082 >> AUDIENCIA: ¿Podemos tratar de eliminar la referencia al puntero y comprobar a través de la matriz? 718 00:39:24,082 --> 00:39:25,540 PROFESOR: Esa es una manera de hacerlo. 719 00:39:25,540 --> 00:39:27,880 Así que, ¿cuál es tu nombre? 720 00:39:27,880 --> 00:39:29,010 Lo siento, me lo recuerdes. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 PROFESOR: Sí, ¿y qué Zee sugerido sería absolutamente trabajar. 723 00:39:32,130 --> 00:39:32,629 ¿Correcto? 724 00:39:32,629 --> 00:39:35,730 Podríamos eliminar la referencia al puntero y en realidad ir y acceso 725 00:39:35,730 --> 00:39:38,460 los datos físicos en el interior de aquí. 726 00:39:38,460 --> 00:39:40,300 Y sólo podemos comparar toda la pantalla. 727 00:39:40,300 --> 00:39:43,670 >> Podemos decir, OK, puntero, dame lo que hay aquí dentro. 728 00:39:43,670 --> 00:39:44,960 Sería devolver un m. 729 00:39:44,960 --> 00:39:47,168 Y yo diría, puntero, dame lo que hay aquí dentro. 730 00:39:47,168 --> 00:39:47,750 Devolver un m. 731 00:39:47,750 --> 00:39:48,410 Realice los partido? 732 00:39:48,410 --> 00:39:49,410 Sí. 733 00:39:49,410 --> 00:39:50,340 Luego de pasar. 734 00:39:50,340 --> 00:39:54,240 >> Seguimos comprobando todo los dos cadenas de todo el camino hasta el final 735 00:39:54,240 --> 00:39:56,635 y ver si esos son iguales, si todos los valores son iguales. 736 00:39:56,635 --> 00:39:59,680 Y si todos los valores son iguales, entonces sabemos las cuerdas son ciertas. 737 00:39:59,680 --> 00:40:01,600 Absolutamente, así es como lo haríamos? 738 00:40:01,600 --> 00:40:03,930 >> ¿Alguien confundió en todo esto? 739 00:40:03,930 --> 00:40:06,970 Todo el concepto de cómo las cadenas en realidad sólo son punteros, 740 00:40:06,970 --> 00:40:08,440 y la forma en que realmente no existe? 741 00:40:08,440 --> 00:40:10,480 ¿Y por qué tenemos errores como la forma en que lo hagamos? 742 00:40:10,480 --> 00:40:15,070 Porque te garantizo chicos, punteros y la asignación de cadena y la memoria 743 00:40:15,070 --> 00:40:16,470 van a llegar. 744 00:40:16,470 --> 00:40:17,410 >> ¿Sí? 745 00:40:17,410 --> 00:40:21,072 >> AUDIENCIA: [inaudible] dereference ella, sólo hay que poner una estrella [inaudible] 746 00:40:21,072 --> 00:40:21,780 PROFESOR: Eso es. 747 00:40:21,780 --> 00:40:28,430 Así que para derererence un medio de puntero para ir a la dirección del puntero 748 00:40:28,430 --> 00:40:30,390 y obtener los datos, el valor allí. 749 00:40:30,390 --> 00:40:32,700 Y la manera de hacerlo es indicador de la estrella. 750 00:40:32,700 --> 00:40:34,262 No hay que confundir eso. 751 00:40:34,262 --> 00:40:35,186 >> AUDIENCIA: [inaudible]. 752 00:40:35,186 --> 00:40:35,852 >> PROFESOR: Sí. 753 00:40:35,852 --> 00:40:39,750 AUDIENCIA: Así que usted puede simplemente escribir si la estrella s iguales iguales estrella t. 754 00:40:39,750 --> 00:40:40,630 >> PROFESOR: Bueno, no. 755 00:40:40,630 --> 00:40:40,960 No. 756 00:40:40,960 --> 00:40:41,640 >> AUDIENCIA: Eso no es lo suficientemente bueno, ¿verdad? 757 00:40:41,640 --> 00:40:43,760 >> PROFESOR: No lo es, porque eres Sólo el control de la primera letra. 758 00:40:43,760 --> 00:40:46,010 Usted está probablemente va a necesitará algún tipo de un bucle que 759 00:40:46,010 --> 00:40:49,055 itera por cada personaje en ambas cadenas. 760 00:40:49,055 --> 00:40:49,837 Sí. 761 00:40:49,837 --> 00:40:52,920 Así que si quería comprobar sólo para ver si empezaban con la misma cosa, 762 00:40:52,920 --> 00:40:58,220 que puede hacer si, estrella s es igual a la estrella t. 763 00:40:58,220 --> 00:41:01,300 Entonces usted sabe que por lo menos comenzado con el mismo carácter. 764 00:41:01,300 --> 00:41:01,952 >> ¿Sí? 765 00:41:01,952 --> 00:41:04,056 >> AUDIENCIA: Así que la forma usted que sería 766 00:41:04,056 --> 00:41:06,064 como un embebido para bucle o puntero? 767 00:41:06,064 --> 00:41:06,730 PROFESOR: Sí. 768 00:41:06,730 --> 00:41:08,170 Prácticamente sólo un bucle for. 769 00:41:08,170 --> 00:41:12,430 Recuerde, David en la clase mencionada el azúcar sintáctico libre? 770 00:41:12,430 --> 00:41:17,690 Y tenía esta misma Lo confuso de la estrella t 771 00:41:17,690 --> 00:41:22,030 más uno, donde se integraría a través y que se mueva el puntero? 772 00:41:22,030 --> 00:41:29,910 La manera más fácil de hacer esto es solo t de i. 773 00:41:29,910 --> 00:41:31,090 >> Así que es sólo una matriz. 774 00:41:31,090 --> 00:41:34,630 La forma en que usted tendría una para bucle que pasó de cero a i, donde 775 00:41:34,630 --> 00:41:36,580 i es la longitud de la cadena, sólo podría 776 00:41:36,580 --> 00:41:39,510 escribir que en vez de hacer el toda puntero, cosa referencia. 777 00:41:39,510 --> 00:41:43,510 Así que estas cosas son exactamente equivalente en su ordenador. 778 00:41:43,510 --> 00:41:45,905 >> Ustedes probablemente no lo hará necesitan saber que, 779 00:41:45,905 --> 00:41:48,280 pero es bueno para sólo un poco tener en la parte posterior de su mente. 780 00:41:48,280 --> 00:41:52,630 Sólo sé que el equipo reconoce diferentes bloques de código 781 00:41:52,630 --> 00:41:53,890 como la misma cosa. 782 00:41:53,890 --> 00:41:57,510 Debido a que este es sólo mucho más de usuario amigable para nosotros presentar como si fuera 783 00:41:57,510 --> 00:41:58,150 una matriz. 784 00:41:58,150 --> 00:42:00,990 Es más fácil. 785 00:42:00,990 --> 00:42:02,719 >> AUDIENCIA: Entonces utilizar strlen que gustar, get-- 786 00:42:02,719 --> 00:42:03,385 PROFESOR: Sí. 787 00:42:03,385 --> 00:42:03,926 AUDIENCIA: OK. 788 00:42:03,926 --> 00:42:05,940 PROFESOR: Usted podría utilizar strlen o, si se 789 00:42:05,940 --> 00:42:10,420 no tenía strlen usted puede hacer hasta hasta llegar a la barra invertida cero para ambos. 790 00:42:10,420 --> 00:42:11,568 De cualquier funcionaría. 791 00:42:11,568 --> 00:42:12,068 Sí. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 AUDIENCIA: Así que es para eliminar la referencia de cada carácter individual si fuéramos realmente 794 00:42:17,996 --> 00:42:21,044 escribir este código, Sólo podía hacer camisetas soportes i 795 00:42:21,044 --> 00:42:22,460 desea con la estrella en la frente de ella? 796 00:42:22,460 --> 00:42:27,700 >> PROFESOR: Sí, es igual a equals s soporte de i, y luego sigo yo en movimiento 797 00:42:27,700 --> 00:42:29,790 abajo hacia arriba hasta llegar a la final. 798 00:42:29,790 --> 00:42:31,286 Sí, eso es lo que haría. 799 00:42:31,286 --> 00:42:33,660 Y voy a realmente tengo un lado ejemplo de cuando en realidad 800 00:42:33,660 --> 00:42:36,740 escribir strlen para que ustedes harán clase de llegar a jugar un rato con él un poco. 801 00:42:36,740 --> 00:42:43,567 >> Así es todo clara en apenas memoria, cadenas, punteros, direcciones de calidad? 802 00:42:43,567 --> 00:42:46,650 Algunos conceptos de más alto nivel que voluntad a ciencia cierta necesidad de saber sobre el concurso 803 00:42:46,650 --> 00:42:48,928 mañana. 804 00:42:48,928 --> 00:42:49,904 >> Correcto. 805 00:42:49,904 --> 00:42:50,404 Bien. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Sí. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, así que lo único que tendremos también pedimos usted, como lo hacemos todos los años en un concurso, es decir, 810 00:43:04,180 --> 00:43:08,340 supongamos que usted ha olvidado (que parece que nos olvidamos de hacerlo anualmente) 811 00:43:08,340 --> 00:43:10,810 en el que se declara el archivo de cabecera strlen. 812 00:43:10,810 --> 00:43:13,860 Y así que tenemos que volver a escribir nosotros mismos. 813 00:43:13,860 --> 00:43:16,350 >> Aquí hay una lista de directrices que podemos presentarle 814 00:43:16,350 --> 00:43:20,660 chicos donde se llega a suponer que s la cadena no será nulo. 815 00:43:20,660 --> 00:43:23,830 Usted puede asumir que s habrá terminó con una barra invertida cero. 816 00:43:23,830 --> 00:43:26,670 Así que ya sabes que es lo que que va a terminar con. 817 00:43:26,670 --> 00:43:29,500 >> Y, por ejemplo, que la longitud de hola sería cinco. 818 00:43:29,500 --> 00:43:32,890 Así que usted puede asumir que hola será de cinco, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Usted no tiene que suponer que la backside cero representa la longitud. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Este último que aquí, no lo hagas preocuparse de desbordamiento de enteros. 822 00:43:42,300 --> 00:43:45,270 ¿Alguien recuerda desbordamiento de entero es lo que? 823 00:43:45,270 --> 00:43:48,041 >> AUDIENCIA: Va más allá de la longitud de la [inaudible]. 824 00:43:48,041 --> 00:43:50,740 >> PROFESOR: Sí, se puede explicar un poco, ¿qué significa eso? 825 00:43:50,740 --> 00:43:55,330 >> AUDIENCIA: Entonces, supongo que se remonta al ejemplo truncar antes. 826 00:43:55,330 --> 00:43:58,380 Pero si usted tiene sólo tantos números que van más allá del número de bits 827 00:43:58,380 --> 00:44:01,409 que en realidad se puede asignarlo que será sólo un poco cortado. 828 00:44:01,409 --> 00:44:04,242 PROFESOR: Sí, así que en una típica ordenador, cuántos bits tenemos? 829 00:44:04,242 --> 00:44:05,306 AUDIENCIA: 32? 830 00:44:05,306 --> 00:44:06,430 PROFESOR: Sí, 32, a la derecha. 831 00:44:06,430 --> 00:44:10,030 Y eso es, qué, cuatro millones de dólares, dos mil millones? 832 00:44:10,030 --> 00:44:13,579 Cuatro millones de dólares, hasta cuatro millones enteros positivos, ¿verdad? 833 00:44:13,579 --> 00:44:15,370 Dos mil millones negativos, dos mil millones positivo, 834 00:44:15,370 --> 00:44:16,900 depende de cómo desea hacerlo. 835 00:44:16,900 --> 00:44:21,470 >> Y así que básicamente podemos tener suficientes números enteros que pueden ir hasta 836 00:44:21,470 --> 00:44:25,800 de dos a 31 menos 1, ¿verdad? 837 00:44:25,800 --> 00:44:27,980 Porque una vez que golpeó a dos a la 32, no lo hacemos 838 00:44:27,980 --> 00:44:30,040 tener esa cantidad de memoria en nuestro ordenador. 839 00:44:30,040 --> 00:44:32,310 >> Y así, en teoría, que podría llegar a un número 840 00:44:32,310 --> 00:44:34,560 es decir, como, dos a la 46a. 841 00:44:34,560 --> 00:44:38,040 Es un número enorme-culo, pero teóricamente podrías. 842 00:44:38,040 --> 00:44:42,730 Y desbordamiento tan entero es si intenta crear un entero que va más allá de lo que 843 00:44:42,730 --> 00:44:44,790 el equipo es capaz de almacenar. 844 00:44:44,790 --> 00:44:46,590 >> Y así ustedes para este ejemplo no tienen 845 00:44:46,590 --> 00:44:51,330 que preocuparse acerca de nosotros que le da un gigante cadena que es de dos a los caracteres 32ª 846 00:44:51,330 --> 00:44:51,830 largo. 847 00:44:51,830 --> 00:44:54,010 Eso sería realmente significa. 848 00:44:54,010 --> 00:44:59,430 >> Muy bien, así que sólo voy a dar ustedes la estructura de base de este. 849 00:44:59,430 --> 00:45:02,020 Vas a crear un función llamada int strlen donde 850 00:45:02,020 --> 00:45:08,436 Un pase en, una estrella char, o cadena, puntero a la cadena llamó s. 851 00:45:08,436 --> 00:45:10,820 >> Muy bien, todo el mundo que copiar hacia abajo. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Guay. 854 00:45:14,850 --> 00:45:17,020 Otra Oops-- manera. 855 00:45:17,020 --> 00:45:21,360 >> Así que esto es como una especie de más duro pedazo de problema, 856 00:45:21,360 --> 00:45:25,320 así que te voy a dar unos cinco chicos a seis minutos de clase de una lluvia de ideas 857 00:45:25,320 --> 00:45:27,478 y escribir a cabo esta función. 858 00:45:27,478 --> 00:45:29,710 >> AUDIENCIA: No hacemos cuenta de [inaudible], 859 00:45:29,710 --> 00:45:30,200 nosotros no tenemos que usar entero? 860 00:45:30,200 --> 00:45:31,241 >> PROFESOR: No, no lo haces. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Te voy a dar una pista chicos. 863 00:48:06,930 --> 00:48:12,325 Un bucle while puede ser muy útil aquí. 864 00:48:12,325 --> 00:48:12,825 Sí. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Aquí 867 00:48:45,495 --> 00:48:45,995 caramelo. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Caramelo también estará disponible para el concurso, creo. 870 00:48:53,410 --> 00:48:55,315 Así que ustedes será todo azucarada hasta mañana. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Puede yo-- lo tienes. 873 00:49:02,962 --> 00:49:03,718 >> AUDIENCIA: OK. 874 00:49:03,718 --> 00:49:04,384 PROFESOR: Sí. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Tal vez 30 segundos más o menos. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Muy bien, si estás no se hace, no se preocupe. 879 00:50:07,340 --> 00:50:08,810 Nos moveremos por esto juntos. 880 00:50:08,810 --> 00:50:09,310 OK. 881 00:50:09,310 --> 00:50:13,800 Así que me voy a sólo el diseño del estructura básica para esta función aquí. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 En primer lugar, ¿alguien quiere decirle mí lo que int significa? 885 00:50:23,460 --> 00:50:25,160 Tenemos que tener en esta función. 886 00:50:25,160 --> 00:50:26,709 >> AUDIENCIA: strlen [inaudible]. 887 00:50:26,709 --> 00:50:27,500 PROFESOR: Exactamente. 888 00:50:27,500 --> 00:50:31,140 Así que pase lo que pase aquí, tenemos que devolver un entero. 889 00:50:31,140 --> 00:50:36,367 Y como se especifica en el spec, queremos return-- 890 00:50:36,367 --> 00:50:37,700 Vaya para él chicos, sólo seguir adelante. 891 00:50:37,700 --> 00:50:40,480 Está todo bien. 892 00:50:40,480 --> 00:50:42,960 Coma todo lo que no tengo a tomar de nuevo, en realidad. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 El int simplemente significa que eres va estar volviendo un entero. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> ¿Qué es este carbón estrellas s? 897 00:50:57,106 --> 00:50:58,640 ¿Que significa eso? 898 00:50:58,640 --> 00:51:00,879 >> AUDIENCIA: Al igual que, lo que se está introduciendo en. 899 00:51:00,879 --> 00:51:01,670 PROFESOR: Exactamente. 900 00:51:01,670 --> 00:51:04,142 Y lo que es casi el lo mismo que la estrella de carbón? 901 00:51:04,142 --> 00:51:04,850 AUDIENCIA: String? 902 00:51:04,850 --> 00:51:05,641 PROFESOR: Exactamente. 903 00:51:05,641 --> 00:51:09,080 Así que todo lo que estamos haciendo es dar esto un puntero a una cadena. 904 00:51:09,080 --> 00:51:09,580 OK. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Guay. 907 00:51:13,360 --> 00:51:16,650 >> Además, no se olvide, si nos olvidamos para darle estos soportes, 908 00:51:16,650 --> 00:51:18,330 no te olvides de escribir tu mismo. 909 00:51:18,330 --> 00:51:20,720 Debido a que en teoría, su código es incorrecta si se olvida de escribirlos. 910 00:51:20,720 --> 00:51:21,803 Así siempre prestar atención. 911 00:51:21,803 --> 00:51:23,750 Al igual, pequeñas cosas que no se dan cuenta 912 00:51:23,750 --> 00:51:26,917 cuando se está programando en su computadora portátil, porque tu portátil lo hace por usted? 913 00:51:26,917 --> 00:51:28,624 No se olvide, cuando usted está escribiendo con la mano. 914 00:51:28,624 --> 00:51:29,170 ¿Sí? 915 00:51:29,170 --> 00:51:30,954 >> AUDIENCIA: ¿Pero cómo incorrecto? 916 00:51:30,954 --> 00:51:33,190 Al igual, podemos llegar todo el problema equivocado? 917 00:51:33,190 --> 00:51:34,190 >> PROFESOR: No, no. 918 00:51:34,190 --> 00:51:34,860 No te preocupes. 919 00:51:34,860 --> 00:51:39,270 En realidad es teóricamente posible para que usted consiga puntos completos en una pregunta 920 00:51:39,270 --> 00:51:41,980 incluso si su código nunca se queda en la vida real. 921 00:51:41,980 --> 00:51:46,052 Le sugiero que no lo intentas para que esto suceda. 922 00:51:46,052 --> 00:51:48,260 Por ejemplo, como si todo eso es que aquí es correcto, 923 00:51:48,260 --> 00:51:51,850 pero se olvida de dos puntos o un soporte, su código en realidad no correr. 924 00:51:51,850 --> 00:51:53,740 Pero podemos ser misericordiosos. 925 00:51:53,740 --> 00:51:54,394 >> ¿Sí? 926 00:51:54,394 --> 00:51:56,050 >> AUDIENCIA: ¿Tiene usted comentar en nuestro puño y letra? 927 00:51:56,050 --> 00:51:57,758 >> PROFESOR: No, no, no se preocupa por eso. 928 00:51:57,758 --> 00:51:58,440 Sin comentarios. 929 00:51:58,440 --> 00:51:59,400 Estilo debe ser bueno. 930 00:51:59,400 --> 00:52:01,470 Al igual, no smush todo en una sola línea. 931 00:52:01,470 --> 00:52:04,580 No vamos a ser felices con usted si usted hace eso. 932 00:52:04,580 --> 00:52:07,250 >> ¿Alguien quiere dame la primera línea? 933 00:52:07,250 --> 00:52:08,633 Sugerencia, es muy fácil. 934 00:52:08,633 --> 00:52:09,320 >> ¿Sí? 935 00:52:09,320 --> 00:52:11,920 >> AUDIENCIA: Int, n es igual a cero. 936 00:52:11,920 --> 00:52:13,734 Sólo tienes que configurar mostrador. 937 00:52:13,734 --> 00:52:15,900 PROFESOR: Entonces queremos alguna una especie de mostrador, ¿verdad? 938 00:52:15,900 --> 00:52:19,780 Yo sólo voy a nombrarlo "contar" en aras de la legibilidad. 939 00:52:19,780 --> 00:52:21,265 ¿Qué queremos para configurarlo igual? 940 00:52:21,265 --> 00:52:21,890 >> AUDIENCIA: Cero. 941 00:52:21,890 --> 00:52:23,840 PROFESOR: Sí. 942 00:52:23,840 --> 00:52:24,340 Punto y coma. 943 00:52:24,340 --> 00:52:26,250 También es punto y coma dibujo muy extrañas. 944 00:52:26,250 --> 00:52:28,870 Sólo la práctica de hacer eso. 945 00:52:28,870 --> 00:52:31,990 >> Así que queremos tener primero un contador de tipo int. 946 00:52:31,990 --> 00:52:35,360 Porque queremos contar hasta cómo muchos caracteres o letras son 947 00:52:35,360 --> 00:52:36,780 en esta cadena, ¿verdad? 948 00:52:36,780 --> 00:52:38,330 Primer paso muy fácil. 949 00:52:38,330 --> 00:52:42,140 >> OK, tal vez un poco más complejo Ahora, ¿cómo vamos a hacerlo? 950 00:52:42,140 --> 00:52:45,400 ¿Alguien quiere dame la línea de código 951 00:52:45,400 --> 00:52:48,450 que puede ser capaz de ayudar en bucle a través de lo que sea que es esto? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Sí, valiente alma en la parte de atrás? 954 00:52:56,900 --> 00:53:06,832 >> AUDIENCIA: OK, así que mientras que el punto asteriscos, el sí, estrella de s, 955 00:53:06,832 --> 00:53:09,465 no es igual a cero, entonces hacer algo? 956 00:53:09,465 --> 00:53:11,090 PROFESOR: Eso es muy, muy cerca. 957 00:53:11,090 --> 00:53:11,835 Muy cerca. 958 00:53:11,835 --> 00:53:13,710 Así que voy a tratar dos cosas con eso. 959 00:53:13,710 --> 00:53:18,240 En primer lugar, no es exactamente cero. 960 00:53:18,240 --> 00:53:20,110 ¿Qué es? 961 00:53:20,110 --> 00:53:22,550 Es el terminador nulo, barra invertida que es cero. 962 00:53:22,550 --> 00:53:24,960 Así que son diferentes en términos de cómo están almacenados. 963 00:53:24,960 --> 00:53:26,270 Así que estás muy cerca. 964 00:53:26,270 --> 00:53:30,330 >> Y en segundo lugar, no queremos sólo mover el puntero. 965 00:53:30,330 --> 00:53:32,320 Queremos realidad acceder a los valores, ¿no? 966 00:53:32,320 --> 00:53:34,050 Y así, ¿cómo lo hacemos? 967 00:53:34,050 --> 00:53:34,550 Muy fácil. 968 00:53:34,550 --> 00:53:36,841 No pienses en punteros, no pienses en recuerdos. 969 00:53:36,841 --> 00:53:38,525 Volver a la segunda semana de este curso. 970 00:53:38,525 --> 00:53:39,555 >> AUDIENCIA: [inaudible]. 971 00:53:39,555 --> 00:53:40,680 PROFESOR: Al, ¿recuerdas? 972 00:53:40,680 --> 00:53:41,400 ¿Cuáles son las cadenas? 973 00:53:41,400 --> 00:53:42,650 ¿Cómo se almacenan en la memoria? 974 00:53:42,650 --> 00:53:43,300 >> AUDIENCIA: Están levantadas. 975 00:53:43,300 --> 00:53:43,810 >> PROFESOR: Se crían. 976 00:53:43,810 --> 00:53:45,550 Entonces, ¿cómo accedemos cada personaje dentro? 977 00:53:45,550 --> 00:53:46,466 >> AUDIENCIA: [inaudible]. 978 00:53:46,466 --> 00:53:47,530 PROFESOR: Exactamente. 979 00:53:47,530 --> 00:53:53,195 Así que lo que sucede en el interior rato-- aquí? 980 00:53:53,195 --> 00:53:54,940 S de - 981 00:53:54,940 --> 00:53:55,920 >> AUDIENCIA: I. 982 00:53:55,920 --> 00:53:58,216 >> PROFESOR: Oh, yo no existe, ¿verdad? 983 00:53:58,216 --> 00:53:59,620 >> AUDIENCIA: ¡Oh, cuente? 984 00:53:59,620 --> 00:54:01,640 >> PROFESOR: Podemos simplemente utilizar la cuenta, ¿no? 985 00:54:01,640 --> 00:54:03,050 >> AUDIENCIA: Lo siento, me llamó i. 986 00:54:03,050 --> 00:54:04,341 >> PROFESOR: Sí, está todo bien. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Tenemos una variable hasta aquí eso es ya se ha declarado como nuestro contador. 989 00:54:10,760 --> 00:54:13,650 Así que ¿por qué no nos limitamos a usar que para moverse a través del bucle while? 990 00:54:13,650 --> 00:54:15,230 ¿Tiene sentido? 991 00:54:15,230 --> 00:54:20,864 >> Así, mientras que s de count-- quiere a nadie para darme lo que sucede después de aquí? 992 00:54:20,864 --> 00:54:22,030 AUDIENCIA: No es igual. 993 00:54:22,030 --> 00:54:23,405 PROFESOR: no es igual, ¿no? 994 00:54:23,405 --> 00:54:26,200 Es la explosión es igual, signo de exclamación es igual, 995 00:54:26,200 --> 00:54:28,500 lo que ustedes quieren llamarlo no equal-- 996 00:54:28,500 --> 00:54:29,496 >> AUDIENCIA: [inaudible]. 997 00:54:29,496 --> 00:54:30,990 >> PROFESOR: Sí. 998 00:54:30,990 --> 00:54:37,110 Recuerde comilla simple es para un char, comillas dobles son para una cadena. 999 00:54:37,110 --> 00:54:38,630 Tenga cuidado al usarlos. 1000 00:54:38,630 --> 00:54:42,430 Así que cuando estamos mirando a través de la matriz, el último carácter, 1001 00:54:42,430 --> 00:54:46,420 sabemos que no queremos que sea barra invertida cero. 1002 00:54:46,420 --> 00:54:47,340 >> Así, mientras que. 1003 00:54:47,340 --> 00:54:48,840 No estamos en el final de la cadena. 1004 00:54:48,840 --> 00:54:52,335 ¿Qué es lo que queremos hacer en el interior? 1005 00:54:52,335 --> 00:54:55,269 >> AUDIENCIA: Queremos añadir a la contador para que cuente plus plus? 1006 00:54:55,269 --> 00:54:56,060 PROFESOR: Exactamente. 1007 00:54:56,060 --> 00:55:03,064 Así que aquí vamos a hacer contar, contar plus plus. 1008 00:55:03,064 --> 00:55:03,980 Falta una línea más. 1009 00:55:03,980 --> 00:55:05,090 Casi estámos allí. 1010 00:55:05,090 --> 00:55:07,398 ¿Qué estamos olvidando de hacer? 1011 00:55:07,398 --> 00:55:08,770 >> AUDIENCIA: Volviendo a cero? 1012 00:55:08,770 --> 00:55:10,820 >> PROFESOR: ¿Quieres volver a cero? 1013 00:55:10,820 --> 00:55:12,962 >> AUDIENCIA: No, regresar a strlen. 1014 00:55:12,962 --> 00:55:13,511 Espera. 1015 00:55:13,511 --> 00:55:14,760 PROFESOR: ¿Qué se almacena en? 1016 00:55:14,760 --> 00:55:15,090 AUDIENCIA: Count. 1017 00:55:15,090 --> 00:55:15,589 Contar. 1018 00:55:15,589 --> 00:55:17,150 PROFESOR: Exactamente. 1019 00:55:17,150 --> 00:55:20,760 Así que aquí vamos a volver recuento. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Porque lo que estamos haciendo aquí ultimately-- 1022 00:55:25,380 --> 00:55:29,780 tenemos una variable contador que es va a incrementar a través de nuestra cadena. 1023 00:55:29,780 --> 00:55:33,050 Vamos a seguir adelante, mantenemos va, vueltas y vueltas en este circuito. 1024 00:55:33,050 --> 00:55:37,700 Y si bien no estamos en el final de este cadena, que es el terminador nulo. 1025 00:55:37,700 --> 00:55:40,410 >> Y cada vez que pasamos por que, estamos agregando a nuestro mostrador. 1026 00:55:40,410 --> 00:55:42,640 Y vamos más a lo largo de esta matriz. 1027 00:55:42,640 --> 00:55:44,880 Y al final, una vez que golpear el terminador nulo, 1028 00:55:44,880 --> 00:55:48,469 sabemos, oh, podemos romper, devuelva el conteo. 1029 00:55:48,469 --> 00:55:49,260 Tenemos nuestra strlen. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> ¿Todo el mundo obtener la forma Esto se implementó? 1032 00:55:56,400 --> 00:55:58,830 Mientras loops-- Sé que no tenemos hecho demasiado con ellos, 1033 00:55:58,830 --> 00:56:01,240 pero son por lo general muy, muy útil si 1034 00:56:01,240 --> 00:56:05,390 no sabes lo que estás parando condición tiene que ser necesariamente. 1035 00:56:05,390 --> 00:56:06,220 >> ¿Pregunta? 1036 00:56:06,220 --> 00:56:10,080 >> AUDIENCIA: ¿Podemos escribir nula con la condición de tiempo? 1037 00:56:10,080 --> 00:56:10,940 >> PROFESOR: Si bien? 1038 00:56:10,940 --> 00:56:15,304 Sí, por lo que en este problema te tuve chicos asumen que s no va a ser nulo. 1039 00:56:15,304 --> 00:56:17,220 Porque recuerda, teóricamente, si yo te di 1040 00:56:17,220 --> 00:56:21,180 un puntero que era demasiado grande de la memoria, que le daría la nula, ¿verdad? 1041 00:56:21,180 --> 00:56:23,770 Eso es lo que el operativo sistema haría. 1042 00:56:23,770 --> 00:56:26,960 >> Así que si yo no digo que asumir s sería nulo, es necesario comprobar. 1043 00:56:26,960 --> 00:56:32,050 Así que aquí, lo haría, si s es igual a igual a null, devolver uno. 1044 00:56:32,050 --> 00:56:33,028 Algo así. 1045 00:56:33,028 --> 00:56:34,153 AUDIENCIA: [inaudible] cero. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 PROFESOR: OK, te lo diré por qué no se puede hacer eso. 1048 00:56:39,370 --> 00:56:43,357 Porque recuerda en la memoria, a la derecha, aquí. 1049 00:56:43,357 --> 00:56:43,940 Vamos a ir aquí. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Tienes bloques gigantes de la memoria todos con rejillas 1052 00:56:54,090 --> 00:56:56,680 que almacenan valores diferentes, ¿no? 1053 00:56:56,680 --> 00:57:00,110 Y así toda una cadena de es-- ejemplo, si hemos de entrada hola, 1054 00:57:00,110 --> 00:57:05,490 sería H-E-L-L-O barra invertida cero, ¿no? 1055 00:57:05,490 --> 00:57:09,570 Y entonces, ¿quién sabe, como al azar cosas que están en aquí después de ella. 1056 00:57:09,570 --> 00:57:11,220 >> En realidad no sabemos lo que hay. 1057 00:57:11,220 --> 00:57:13,350 Y por lo que si usted fuera a hacer en lugar de la barra invertida cero, 1058 00:57:13,350 --> 00:57:15,590 null, puede que no sea nulo. 1059 00:57:15,590 --> 00:57:17,680 Debido a que sólo puede significar algunas otras cosas al azar 1060 00:57:17,680 --> 00:57:19,270 que no pertenecen en su cadena. 1061 00:57:19,270 --> 00:57:23,219 Y así, la forma en que siempre sabemos que una cadena termina con una barra invertida es cero. 1062 00:57:23,219 --> 00:57:25,760 Y eso es siempre la forma en que comprobar para ver el final de una cadena. 1063 00:57:25,760 --> 00:57:30,820 >> Null, todo lo que significa es que si tienes un puntero inexistente, primero de todo, 1064 00:57:30,820 --> 00:57:36,160 o si su memoria es tan grande que usted no puede regresar, entonces sería nula. 1065 00:57:36,160 --> 00:57:40,150 Así que tener mucho cuidado al diferenciar la diferencia entre la nula 1066 00:57:40,150 --> 00:57:42,130 y la barra invertida cero. 1067 00:57:42,130 --> 00:57:43,670 Sí. 1068 00:57:43,670 --> 00:57:46,886 >> Todo el mundo de acuerdo con esto? 1069 00:57:46,886 --> 00:57:48,150 OK. 1070 00:57:48,150 --> 00:57:50,440 >> Así que tuve que ustedes escriban strlen. 1071 00:57:50,440 --> 00:57:53,790 Factible también podríamos pedirle que escribes fuera de A a I, recuerda que "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 o lo que sea que ustedes quieren llamarlo? 1073 00:57:55,400 --> 00:57:58,010 Esa función en Vigenére y César, que 1074 00:57:58,010 --> 00:58:00,900 convierte un valor ASCII a un entero? 1075 00:58:00,900 --> 00:58:04,360 Eso también ha subido en las pruebas anteriores de las funciones que le hemos pedido a escribir. 1076 00:58:04,360 --> 00:58:08,280 >> Casi cualquier función que usted ha utilizado y es 1077 00:58:08,280 --> 00:58:11,660 muy fácil escribir usted mismo, sensores gusta es menor, 1078 00:58:11,660 --> 00:58:14,620 es superior, para reducir, al superior. 1079 00:58:14,620 --> 00:58:17,964 Funciones que convertir un cadena de minúsculas a mayúsculas. 1080 00:58:17,964 --> 00:58:19,380 Todos sabemos cómo hacerlo, ¿no? 1081 00:58:19,380 --> 00:58:21,100 Es muy fácil. 1082 00:58:21,100 --> 00:58:24,770 Sólo quiero estar seguro que can-- es el mismo proceso de pensamiento. 1083 00:58:24,770 --> 00:58:26,940 Sólo iterar a través y usted da vuelta las cosas. 1084 00:58:26,940 --> 00:58:30,190 Usted tampoco contar o cuando encender las cosas de manera diferente. 1085 00:58:30,190 --> 00:58:32,280 >> Me suggest-- I no sé si vamos 1086 00:58:32,280 --> 00:58:39,080 a pedir que memorizar lo mayúscula o de capital Z, o minúscula A o minúsculas 1087 00:58:39,080 --> 00:58:42,640 z están en ASCII, pero yo sugeriría quizá por escrito que en el caso 1088 00:58:42,640 --> 00:58:44,124 hacemos. 1089 00:58:44,124 --> 00:58:45,540 Sólo para que ustedes tienen una referencia. 1090 00:58:45,540 --> 00:58:47,180 Como mayúscula A es, qué, 197? 1091 00:58:47,180 --> 00:58:51,320 Y entonces minúscula es como 50 algo. 1092 00:58:51,320 --> 00:58:52,492 65, sí, ahí lo tienes. 1093 00:58:52,492 --> 00:58:54,950 Así que más o menos conocer la diferencia entre ellos es 32. 1094 00:58:54,950 --> 00:58:57,670 Eso es muy importante. 1095 00:58:57,670 --> 00:58:58,170 Sí. 1096 00:58:58,170 --> 00:59:01,445 ¿Soy bueno en esto? 1097 00:59:01,445 --> 00:59:01,945 OK. 1098 00:59:01,945 --> 00:59:03,109 >> AUDIENCIA: Podríamos teóricamente escribir algún 1099 00:59:03,109 --> 00:59:04,410 de ellos hacia abajo también en nuestra poco-- 1100 00:59:04,410 --> 00:59:07,035 >> PROFESOR: Usted teóricamente simplemente podría copiar la función hacia abajo. 1101 00:59:07,035 --> 00:59:08,482 Es verdad. 1102 00:59:08,482 --> 00:59:11,080 >> AUDIENCIA: No [inaudible]. 1103 00:59:11,080 --> 00:59:12,720 >> PROFESOR: Ustedes tienen una hoja. 1104 00:59:12,720 --> 00:59:14,194 Ustedes tienen una hoja de notas. 1105 00:59:14,194 --> 00:59:14,860 Puedes escribirlo. 1106 00:59:14,860 --> 00:59:15,490 Puedes escribirlo. 1107 00:59:15,490 --> 00:59:17,031 Puedes hacer lo que quieras con él. 1108 00:59:17,031 --> 00:59:18,530 Sí. 1109 00:59:18,530 --> 00:59:21,406 Por lo tanto teóricamente, si quiere, ir. 1110 00:59:21,406 --> 00:59:23,338 >> AUDIENCIA: [inaudible] pero no lo hacemos de verdad 1111 00:59:23,338 --> 00:59:25,994 necesariamente tienen que recordar el valor, podemos simplemente 1112 00:59:25,994 --> 00:59:28,914 utilizar el de superior o de funciones inferior, a la derecha? 1113 00:59:28,914 --> 00:59:29,580 PROFESOR: Sí. 1114 00:59:29,580 --> 00:59:32,740 Pero si os dimos una pregunta que dice escribir a superior, 1115 00:59:32,740 --> 00:59:34,350 entonces usted tendría que escribirlo. 1116 00:59:34,350 --> 00:59:38,150 Así que ustedes pueden asumir que usted chicos tienen acceso a todas las funciones, 1117 00:59:38,150 --> 00:59:41,523 pero si usted desea utilizar para la parte superior o para inferior, qué es lo que también hay que hacer? 1118 00:59:41,523 --> 00:59:43,840 >> AUDIENCIA: [inaudible] utilizar CS50 [inaudible] 1119 00:59:43,840 --> 00:59:44,840 >> PROFESOR: ¿Es CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Tenga cuidado allí. 1122 00:59:48,310 --> 00:59:50,640 >> Así que para la parte superior, para bajar, es superior, es menor, 1123 00:59:50,640 --> 00:59:52,990 funciones que implican manipulación de cadenas son 1124 00:59:52,990 --> 00:59:55,490 todo dentro de ya sea el Ascii o dentro de la biblioteca matemática 1125 00:59:55,490 --> 00:59:57,350 o dentro de la biblioteca de cadena. 1126 00:59:57,350 --> 01:00:00,290 Así que si ustedes usan esas funciones, tenga cuidado de recordar 1127 01:00:00,290 --> 01:00:01,451 para incluir esa cabecera. 1128 01:00:01,451 --> 01:00:03,950 Así que quizás también algo que que desee incluir en su hoja, 1129 01:00:03,950 --> 01:00:04,892 cuáles son la cabecera? 1130 01:00:04,892 --> 01:00:06,600 ¿Cuáles son las bibliotecas usted ha estado usando? 1131 01:00:06,600 --> 01:00:08,550 ¿Qué funciones son dentro de esas bibliotecas? 1132 01:00:08,550 --> 01:00:09,230 Es importante. 1133 01:00:09,230 --> 01:00:10,420 >> ¿Sí? 1134 01:00:10,420 --> 01:00:12,570 >> AUDIENCIA: ¿Podríamos simplemente policía y hacer hashtag 1135 01:00:12,570 --> 01:00:14,955 a través de la absolutamente cada carta que alguna vez 1136 01:00:14,955 --> 01:00:17,340 visto así en todas las preguntas? 1137 01:00:17,340 --> 01:00:18,320 >> PROFESOR: Usted podría. 1138 01:00:18,320 --> 01:00:20,361 No sé lo feliz vamos a ser de grado 1139 01:00:20,361 --> 01:00:25,090 que prueba que cada pieza de código es el doble de lo que tiene que ser. 1140 01:00:25,090 --> 01:00:27,200 No sé, podríamos sacar un punto para el estilo. 1141 01:00:27,200 --> 01:00:28,790 Pero teóricamente su código sería correcto. 1142 01:00:28,790 --> 01:00:30,915 Ustedes podrían policía y basta con incluir todo. 1143 01:00:30,915 --> 01:00:32,044 Eso también está bien, sí. 1144 01:00:32,044 --> 01:00:32,960 AUDIENCIA: [inaudible]. 1145 01:00:32,960 --> 01:00:33,270 PROFESOR: Sí. 1146 01:00:33,270 --> 01:00:34,900 Yo sugeriría que no hacer eso sin embargo. 1147 01:00:34,900 --> 01:00:35,505 Sí. 1148 01:00:35,505 --> 01:00:36,130 AUDIENCIA: Cool. 1149 01:00:36,130 --> 01:00:36,620 PROFESOR: Buena pregunta. 1150 01:00:36,620 --> 01:00:37,480 AUDIENCIA: Entonces, el peor de los casos. 1151 01:00:37,480 --> 01:00:38,563 PROFESOR: El peor de los casos. 1152 01:00:38,563 --> 01:00:40,350 Si olvida totalmente, usted podría hacer eso. 1153 01:00:40,350 --> 01:00:40,850 Sí. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Sí, el código está ahí. 1156 01:00:45,400 --> 01:00:49,176 Solía ​​n lugar del conteo, pero, usted conocer, lo que flota su barco. 1157 01:00:49,176 --> 01:00:51,092 AUDIENCIA: Espere, por lo que no tendría que Hashtag 1158 01:00:51,092 --> 01:00:53,460 incluir porque somos empezando por el int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> PROFESOR: Sí, yo supuse que nos pidieron que escribir la función. 1161 01:00:59,924 --> 01:01:02,340 Si usted quería estar seguro, probablemente podría ponerlo allí. 1162 01:01:02,340 --> 01:01:05,650 Pero yo no me molesté, sí. 1163 01:01:05,650 --> 01:01:09,919 >> Ni siquiera sé si necesita cualquier biblioteca para esto. 1164 01:01:09,919 --> 01:01:12,710 Debido a que usted no está realmente la impresión cualquier cosa o nada, ¿verdad? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Sí, yo no sé si necesita una biblioteca. 1167 01:01:19,568 --> 01:01:22,400 >> OK. 1168 01:01:22,400 --> 01:01:26,020 Este es también un poco más a lo largo las líneas de manipulación de memoria. 1169 01:01:26,020 --> 01:01:27,400 Este tipo de poco complicado. 1170 01:01:27,400 --> 01:01:28,960 Piensa sobre esto. 1171 01:01:28,960 --> 01:01:30,580 Usted tiene una función llamada func. 1172 01:01:30,580 --> 01:01:33,570 Podría haber llamado que lo que sea, pero elijo nombrarlo func. 1173 01:01:33,570 --> 01:01:36,000 Lo tengo encima de mi principal. 1174 01:01:36,000 --> 01:01:39,790 Recuerde, usted quiere tener una función después de que su principal, 1175 01:01:39,790 --> 01:01:42,370 usted quiere asegurarse de que incluir el prototipo de la parte superior. 1176 01:01:42,370 --> 01:01:45,750 >> Pero en este caso fue tan corto que sentí que podía simplemente 1177 01:01:45,750 --> 01:01:47,260 incluirlo encima de la principal. 1178 01:01:47,260 --> 01:01:51,170 No necesita tener el prototipo, porque ya está escrito arriba. 1179 01:01:51,170 --> 01:01:55,430 Así que todo lo que estoy haciendo en mi función principal está creando entero x es igual a 10. 1180 01:01:55,430 --> 01:02:00,490 Voy a llamar a mi función func, y luego imprimir algo. 1181 01:02:00,490 --> 01:02:02,840 >> Y entonces eso es realmente lo func está haciendo. 1182 01:02:02,840 --> 01:02:04,340 ¿Quieren que pensar en esto. 1183 01:02:04,340 --> 01:02:05,423 Debido a que es un poco complicado. 1184 01:02:05,423 --> 01:02:07,220 Es muy, muy difícil, en realidad. 1185 01:02:07,220 --> 01:02:09,549 Piense en lo que esto programa sería hacer salir. 1186 01:02:09,549 --> 01:02:10,840 Te voy a dar dos chicos minutos. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Buenas discusiones? 1189 01:03:37,891 --> 01:03:38,853 >> AUDIENCIA: Sí. 1190 01:03:38,853 --> 01:03:39,815 >> PROFESOR: Sí. 1191 01:03:39,815 --> 01:03:42,220 Muy bien, así que esto es complicado por una razón. 1192 01:03:42,220 --> 01:03:44,845 Y es por eso que yo quería para llevar esto a la atención de todos. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 ¿Alguien quiere darme una sugerencia, un intento? 1195 01:03:51,147 --> 01:03:52,230 ¿Cómo sería esta imprimir? 1196 01:03:52,230 --> 01:03:53,930 Totalmente bien si te equivocas. 1197 01:03:53,930 --> 01:03:55,619 ¿Sí? 1198 01:03:55,619 --> 01:03:59,483 >> AUDIENCIA: Creo que es 100 y luego 10 en dos líneas separadas. 1199 01:03:59,483 --> 01:04:00,940 >> PROFESOR: Y un 10? 1200 01:04:00,940 --> 01:04:03,154 ¿Alguien tiene alguna otras conjeturas? 1201 01:04:03,154 --> 01:04:04,150 ¿Sí? 1202 01:04:04,150 --> 01:04:09,040 >> AUDIENCIA: Tal vez sólo 10 porque func no devuelve nada? 1203 01:04:09,040 --> 01:04:11,610 >> PROFESOR: OK, así que tener conjetura número uno 1204 01:04:11,610 --> 01:04:14,990 es que conjetura número dos es sólo va a imprimir 10. 1205 01:04:14,990 --> 01:04:17,623 ¿Alguien tiene alguna otras conjeturas? 1206 01:04:17,623 --> 01:04:19,654 OK. 1207 01:04:19,654 --> 01:04:21,070 Así que vamos a caminar a través de este, ¿no? 1208 01:04:21,070 --> 01:04:23,903 Siempre que reciba una pieza de código, no basta con ver y ser como, 1209 01:04:23,903 --> 01:04:25,060 ah, eso es tantas cosas! 1210 01:04:25,060 --> 01:04:26,460 ¡Estoy tan confundida! 1211 01:04:26,460 --> 01:04:28,220 Al igual que, calmarse. 1212 01:04:28,220 --> 01:04:31,602 Sólo sé que usted podría mirar a través de código línea por línea. 1213 01:04:31,602 --> 01:04:32,310 Eso es todo lo que es. 1214 01:04:32,310 --> 01:04:33,840 Es como leer un libro. 1215 01:04:33,840 --> 01:04:38,000 >> Así que con cualquier función, siempre comenzamos a principal. 1216 01:04:38,000 --> 01:04:40,860 Así que vamos a comenzará a las void main int, 1217 01:04:40,860 --> 01:04:43,010 incluso el programa de ya deteriorada, ¿verdad? 1218 01:04:43,010 --> 01:04:45,070 Comience en en void main. 1219 01:04:45,070 --> 01:04:48,030 Int x es igual a 10. 1220 01:04:48,030 --> 01:04:50,400 >> Así que voy a borrar esto. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Voy a señalar a la memoria para que lo chicos pueden especie de ver lo que está pasando. 1223 01:04:58,470 --> 01:05:02,190 >> Recuerde que aquí tenemos nuestra pila? 1224 01:05:02,190 --> 01:05:05,810 Hasta aquí tenemos nuestra amontonarán en algún lugar aquí. 1225 01:05:05,810 --> 01:05:07,470 Pila crece, ¿verdad? 1226 01:05:07,470 --> 01:05:10,150 Y dentro de la pila, que tiene la red funcionan tan bien como 1227 01:05:10,150 --> 01:05:12,230 todos de red variables locales. 1228 01:05:12,230 --> 01:05:14,310 >> Así que aquí, int x es igual a 10. 1229 01:05:14,310 --> 01:05:17,670 Dentro de nuestra función principal que estamos la creación de una variable llamada x. 1230 01:05:17,670 --> 01:05:20,590 Estamos estableciendo que igual a 10. 1231 01:05:20,590 --> 01:05:24,200 Aquí tienes algunos x, y ya está estableciendo que igual a 10, a la derecha, 1232 01:05:24,200 --> 01:05:25,400 dentro principal. 1233 01:05:25,400 --> 01:05:27,430 ¿Todos bien? 1234 01:05:27,430 --> 01:05:28,070 >> Función. 1235 01:05:28,070 --> 01:05:30,330 Así que ahora, dentro de nuestro principal función, estamos llamando 1236 01:05:30,330 --> 01:05:31,810 la función que hemos escrito anteriormente. 1237 01:05:31,810 --> 01:05:34,550 Así que estamos ahora entramos en la segunda función. 1238 01:05:34,550 --> 01:05:40,120 Vamos a crear otro variables int x es igual a 100. 1239 01:05:40,120 --> 01:05:42,410 ¿Qué está pasando aquí en la pila? 1240 01:05:42,410 --> 01:05:46,980 ¿Qué sucede cuando se llama a un función que crea nuevas variables? 1241 01:05:46,980 --> 01:05:50,038 ¿Qué sucede aquí en la pila? 1242 01:05:50,038 --> 01:05:52,134 >> AUDIENCIA: [inaudible] pilas en la parte superior? 1243 01:05:52,134 --> 01:05:52,800 PROFESOR: Sí. 1244 01:05:52,800 --> 01:05:54,050 Así que en realidad crea una copia. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 Y que tipo de pilas en la parte superior. 1247 01:05:57,740 --> 01:06:00,700 Piense en el stack-- una pila de libros, una pila de nada. 1248 01:06:00,700 --> 01:06:06,520 Piles en la parte superior, en primer lugar en la última cabo, último en entrar, primero en salir. 1249 01:06:06,520 --> 01:06:08,471 >> Así que va a crear una x aquí. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Eso va a tener todos los funcs variables. 1252 01:06:14,450 --> 01:06:14,950 Excelente. 1253 01:06:14,950 --> 01:06:20,980 Así que ahora tenemos dos diferentes x de que representar dos cosas muy diferentes. 1254 01:06:20,980 --> 01:06:24,470 Entonces vamos a imprimir el número entero de x. 1255 01:06:24,470 --> 01:06:26,430 Así que vamos a imprimir 100, ¿verdad? 1256 01:06:26,430 --> 01:06:29,389 Porque aquí es 100. 1257 01:06:29,389 --> 01:06:31,680 Así que eso es lo primero que se va a imprimir. 1258 01:06:31,680 --> 01:06:35,710 Como esta función devuelve nada, ahora esa función, esa línea en main 1259 01:06:35,710 --> 01:06:37,070 está hecho. 1260 01:06:37,070 --> 01:06:39,160 Todo el mundo bueno conmigo hasta ahora? 1261 01:06:39,160 --> 01:06:43,034 >> Así que estamos ahora a través de dos de los tres líneas de nuestra función principal. 1262 01:06:43,034 --> 01:06:44,450 Ahora vamos a la tercera línea. 1263 01:06:44,450 --> 01:06:46,350 Vamos a printf. 1264 01:06:46,350 --> 01:06:48,222 ¿Qué es este x dentro principal? 1265 01:06:48,222 --> 01:06:49,263 ¿Qué es lo que representan? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> ¿Qué valor es x ahora? 1268 01:06:54,280 --> 01:06:55,220 >> AUDIENCIA: 100. 1269 01:06:55,220 --> 01:06:56,799 >> PROFESOR: Es 100? 1270 01:06:56,799 --> 01:06:57,590 AUDIENCIA: Todavía 10. 1271 01:06:57,590 --> 01:06:58,878 PROFESOR: Todavía 10. 1272 01:06:58,878 --> 01:07:00,870 Sí. 1273 01:07:00,870 --> 01:07:06,810 Porque recuerda, en el plazo nuestra func, x es igual a 100. 1274 01:07:06,810 --> 01:07:09,690 Pero si volvemos la espalda a nuestra función principal, 1275 01:07:09,690 --> 01:07:12,440 esa variable se almacena en una lugar diferente en nuestra pila. 1276 01:07:12,440 --> 01:07:16,250 >> Así que ahora tenemos que volver a la chimenea principal, red de variables locales. 1277 01:07:16,250 --> 01:07:18,460 Y aquí x es igual a 10. 1278 01:07:18,460 --> 01:07:20,300 Y así vamos a imprimir 10. 1279 01:07:20,300 --> 01:07:22,530 >> Así que ella tenía toda la razón. 1280 01:07:22,530 --> 01:07:25,053 Vamos a tener la de salida de 100 y 10. 1281 01:07:25,053 --> 01:07:25,553 ¿Sí? 1282 01:07:25,553 --> 01:07:28,700 AUDIENCIA: Cuando malloc, es que la montón o la pila que es [inaudible]? 1283 01:07:28,700 --> 01:07:31,950 PROFESOR: Cuando malloc, usted está tomando memoria del montón 1284 01:07:31,950 --> 01:07:32,830 y su asignación. 1285 01:07:32,830 --> 01:07:34,950 Así que usted no tiene meterse con nada de esto. 1286 01:07:34,950 --> 01:07:38,100 Así que supongo que la comida para llevar más grande aquí hay algo que se llama alcance. 1287 01:07:38,100 --> 01:07:39,650 >> Para aquellos de ustedes que estaban en la sesión de revisión de anoche, 1288 01:07:39,650 --> 01:07:41,080 hablamos brevemente sobre esto. 1289 01:07:41,080 --> 01:07:45,380 Alcance define cómo y cuando existen variables. 1290 01:07:45,380 --> 01:07:48,050 O dentro de lo que enmarca qué existen las variables. 1291 01:07:48,050 --> 01:07:51,690 >> Más o menos la regla general es decir, su variables-- si usted los crea 1292 01:07:51,690 --> 01:07:56,660 dentro braces-- rizado existen sólo dentro de esas llaves. 1293 01:07:56,660 --> 01:08:00,312 >> Así por ejemplo, en nuestra función de func, ves esas dos llaves. 1294 01:08:00,312 --> 01:08:02,020 Si va a crear nada en el interior de la misma, 1295 01:08:02,020 --> 01:08:06,500 es probable que todo lo que estamos haciendo es la creación de una pila y el almacenamiento que no. 1296 01:08:06,500 --> 01:08:07,430 Lo mismo en el principal. 1297 01:08:07,430 --> 01:08:09,950 Eso es sólo almacena dentro del principal. 1298 01:08:09,950 --> 01:08:13,560 >> También quieres ser muy, muy cuidado aquí. 1299 01:08:13,560 --> 01:08:18,310 Debido a que alcance también se presta a diferentes ejemplos. 1300 01:08:18,310 --> 01:08:25,950 Así, por ejemplo para una bucle, por int i es igual a 0. 1301 01:08:25,950 --> 01:08:28,460 I es menor que, no sé, 10. 1302 01:08:28,460 --> 01:08:32,111 Yo plus plus. 1303 01:08:32,111 --> 01:08:34,560 Y tienes código dentro de ella, ¿no? 1304 01:08:34,560 --> 01:08:38,830 >> ¿De dónde viene esta variable, i, en realidad sólo existo? 1305 01:08:38,830 --> 01:08:40,510 Sólo dentro del bucle for. 1306 01:08:40,510 --> 01:08:43,640 Así que apuesto a que muchos de ustedes tienen Probablemente encontrado este error cuando 1307 01:08:43,640 --> 01:08:45,930 que estás haciendo programas en sus conjuntos de procesadores. 1308 01:08:45,930 --> 01:08:49,990 ¿Cuántos de ustedes han tratado de utilizar i fuera de un bucle for y tenía un error? 1309 01:08:49,990 --> 01:08:53,310 Al igual que un enteros sin referencias ¿o algo asi? 1310 01:08:53,310 --> 01:08:56,069 >> La razón por la que sucede es porque aquí estás 1311 01:08:56,069 --> 01:08:59,109 la creación de algo que sólo existe dentro de su bucle. 1312 01:08:59,109 --> 01:09:01,972 Y si intenta usarlo, i no lo hace en realidad existe fuera de ella. 1313 01:09:01,972 --> 01:09:04,930 Así que, básicamente, un ordenador diciendo: Yo no sabes lo que estás hablando. 1314 01:09:04,930 --> 01:09:08,689 Todo lo que sé es que yo era un aquí, pero ahora ya no. 1315 01:09:08,689 --> 01:09:12,580 >> Así que si yo fuera a crear un bucle for dentro, ¿no? 1316 01:09:12,580 --> 01:09:19,080 Y yo voy a crear otro, como int j, y tienen que hacer lo que sea. 1317 01:09:19,080 --> 01:09:23,689 Y tienes un código dentro de ese bucle, j sólo existe aquí. 1318 01:09:23,689 --> 01:09:26,029 Pero eso también existe dentro de i. 1319 01:09:26,029 --> 01:09:29,310 Y así j sólo existe dentro de este bucle, 1320 01:09:29,310 --> 01:09:33,850 mientras que existe en todo el asunto. 1321 01:09:33,850 --> 01:09:34,500 >> Todo el mundo claro? 1322 01:09:34,500 --> 01:09:37,416 Lo mismo con sentencias condicionales si quieres crear cualquier cosa. 1323 01:09:37,416 --> 01:09:40,390 Lo mismo con bucles mientras que si desea crear nada. 1324 01:09:40,390 --> 01:09:42,390 Eso es algo de lo que muy, muy cuidadoso acerca. 1325 01:09:42,390 --> 01:09:45,681 Así que este era un buen problema en el sentido de que demuestra dos cosas. 1326 01:09:45,681 --> 01:09:47,160 Se demostró por primera vez, el alcance. 1327 01:09:47,160 --> 01:09:49,550 Y demostró también la asignación de memoria. 1328 01:09:49,550 --> 01:09:54,130 Debido a que ustedes deben saber que funciones crecen hacia arriba en la pila. 1329 01:09:54,130 --> 01:09:56,710 Y que cuando se llama a funciones, que está creando 1330 01:09:56,710 --> 01:09:59,060 esencialmente una nueva pila de memoria. 1331 01:09:59,060 --> 01:10:02,100 Eso es muy diferente de lo que su memoria es la red. 1332 01:10:02,100 --> 01:10:03,300 Sí. 1333 01:10:03,300 --> 01:10:03,800 ¡Uf! 1334 01:10:03,800 --> 01:10:05,470 Todo el mundo en Aceptar en eso? 1335 01:10:05,470 --> 01:10:06,750 Eso fue confuso. 1336 01:10:06,750 --> 01:10:09,380 Muy buenos temas para repasar, porque usted está probablemente 1337 01:10:09,380 --> 01:10:12,255 va a conseguir un poco complicado cosas como que en el cuestionario. 1338 01:10:12,255 --> 01:10:13,350 Sí. 1339 01:10:13,350 --> 01:10:13,850 Guay. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Voy a poner usted consigue 100 en un línea y luego 10 en el otro. 1342 01:10:18,430 --> 01:10:21,468 Sí, muy bueno. 1343 01:10:21,468 --> 01:10:26,350 >> OK, ahora los chicos se llega la oportunidad de ser el TA. 1344 01:10:26,350 --> 01:10:30,600 Tienes la oportunidad de responder a todas la encantadora mensajes de correo electrónico que a veces me pongo. 1345 01:10:30,600 --> 01:10:34,290 >> Así que, queridos Andi, veo creo que algo es ir mal con mi compilador. 1346 01:10:34,290 --> 01:10:37,910 Estoy seguro de que mi código es correcto, pero sigo obteniendo un fallo de segmentación 1347 01:10:37,910 --> 01:10:39,074 cada vez que me encuentro. 1348 01:10:39,074 --> 01:10:39,740 ¿Que esta pasando? 1349 01:10:39,740 --> 01:10:42,844 Por favor, ayuda, mucho amor. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Si ustedes tiene algo como que cómo respondería usted? 1352 01:10:49,410 --> 01:10:51,860 Estas son en realidad muy común preguntas nos preguntarán ustedes. 1353 01:10:51,860 --> 01:10:54,090 Es que si, le daremos un escenario, vamos a darnos 1354 01:10:54,090 --> 01:10:56,350 su mejor respuesta a lo que está pasando. 1355 01:10:56,350 --> 01:11:00,710 Alguien tiene una puñalada en lo que está pasando? 1356 01:11:00,710 --> 01:11:02,654 ¿Sí? 1357 01:11:02,654 --> 01:11:06,056 >> AUDIENCIA: Tal vez el desreferenciado nulo, algo así como el puntero 1358 01:11:06,056 --> 01:11:08,924 se señala en algo nulo. 1359 01:11:08,924 --> 01:11:11,590 PROFESOR: Sí, eso sería un ejemplo de cuando eso suceda. 1360 01:11:11,590 --> 01:11:14,467 Pero lo que es la imagen más grande de lo que está pasando aquí? 1361 01:11:14,467 --> 01:11:17,050 AUDIENCIA: ¿Es que usted está tratando para acceder a la memoria que no estás 1362 01:11:17,050 --> 01:11:18,175 supone que tienen acceso a? 1363 01:11:18,175 --> 01:11:19,200 PROFESOR: Exactamente. 1364 01:11:19,200 --> 01:11:24,800 Así que pensar en un fallo seg, un off límites, área restringida en la memoria 1365 01:11:24,800 --> 01:11:27,780 que no debe tocarse. 1366 01:11:27,780 --> 01:11:31,670 >> Así que más o menos cuando se está tratando a index-- como por ejemplo, 1367 01:11:31,670 --> 01:11:34,110 usted ha declarado array de cero a nueve. 1368 01:11:34,110 --> 01:11:37,360 Pero intenta tocar ese décimo valor, usted no tiene acceso a eso. 1369 01:11:37,360 --> 01:11:38,694 Debido a que usted no ha declarado. 1370 01:11:38,694 --> 01:11:40,943 Y para que su equipo va mirar que sea similar, 1371 01:11:40,943 --> 01:11:43,440 uh oh, estás tratando de ir fuera de los límites de un índice. 1372 01:11:43,440 --> 01:11:45,270 Voy a darle un fallo de segmentación. 1373 01:11:45,270 --> 01:11:46,590 >> Piense como segmento, ¿verdad? 1374 01:11:46,590 --> 01:11:49,665 Un segmento adicional, la culpa es cuando intenta romper algo 1375 01:11:49,665 --> 01:11:50,790 y que no debería estar allí. 1376 01:11:50,790 --> 01:11:53,660 Fallo de segmentación es en cualquier momento intenta tocar las cosas 1377 01:11:53,660 --> 01:11:54,970 que no debe tocarse. 1378 01:11:54,970 --> 01:11:56,815 >> Así ejemplos comunes son un índice. 1379 01:11:56,815 --> 01:11:58,940 Por supuesto, si usted está tratando tocar eso era nulo, 1380 01:11:58,940 --> 01:12:00,220 que también funcionaría también. 1381 01:12:00,220 --> 01:12:02,300 Si el puntero estaba tratando de tocar las cosas que no se deben tocar, 1382 01:12:02,300 --> 01:12:03,730 que también podría funcionar tan bien. 1383 01:12:03,730 --> 01:12:07,120 Lo más típico podrás ver esto en una matriz. 1384 01:12:07,120 --> 01:12:07,740 ¿Todos bien? 1385 01:12:07,740 --> 01:12:10,374 >> AUDIENCIA: Así que si quieres para acceder al punto 10a 1386 01:12:10,374 --> 01:12:12,290 y sólo hay un límite de nueve años o algo así. 1387 01:12:12,290 --> 01:12:13,160 >> PROFESOR: Sí, exactamente. 1388 01:12:13,160 --> 01:12:13,660 Bastante. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Guay. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Estimado Andi. 1393 01:12:19,920 --> 01:12:23,440 Así que tenemos estas maravillosas cosas llaman clases. 1394 01:12:23,440 --> 01:12:25,472 Si Merge sort-- como nosotros sierra en el ejemplo, cuando 1395 01:12:25,472 --> 01:12:27,180 David hizo todo cosa en class-- por qué, 1396 01:12:27,180 --> 01:12:29,760 si es mucho más rápido que cualquiera de los otros tipos, 1397 01:12:29,760 --> 01:12:33,310 ¿por qué nos molestamos saber cualquiera de los otros tipos? 1398 01:12:33,310 --> 01:12:35,100 >> ¿Qué es esta pregunta realmente que le pregunta? 1399 01:12:35,100 --> 01:12:36,659 ¿Qué hay de los tres palabra-- 1400 01:12:36,659 --> 01:12:37,950 AUDIENCIA: ¿Cuál es la compensación? 1401 01:12:37,950 --> 01:12:38,530 PROFESOR: Exactamente. 1402 01:12:38,530 --> 01:12:39,946 Eso es lo que está haciendo la pregunta. 1403 01:12:39,946 --> 01:12:43,682 ¿Cuál es el equilibrio entre Combinar especie versos cualquier otro tipo? 1404 01:12:43,682 --> 01:12:45,850 >> AUDIENCIA: Toma la memoria, ¿no? 1405 01:12:45,850 --> 01:12:47,720 >> PROFESOR: ¿Tiene usted explicar que un poco más? 1406 01:12:47,720 --> 01:12:49,490 En primer lugar vamos a explicar tienda Combinar. 1407 01:12:49,490 --> 01:12:50,970 ¿Cómo Combinar especie trabajar? 1408 01:12:50,970 --> 01:12:55,220 >> AUDIENCIA: Así funciona por dividiendo todo en medio 1409 01:12:55,220 --> 01:13:00,660 y luego poner juntos y la reasignación de ella con el fin, 1410 01:13:00,660 --> 01:13:02,862 que cada vez que combinar los conjuntos. 1411 01:13:02,862 --> 01:13:03,820 PROFESOR: Más o menos. 1412 01:13:03,820 --> 01:13:06,861 Así que puedo sacar esto, pero sería llevarme cinco minutos a lo alcanzará. 1413 01:13:06,861 --> 01:13:10,220 Mirar hacia atrás a la sección de diapositivas donde cubrimos Combinar tipo. 1414 01:13:10,220 --> 01:13:10,790 Exactamente. 1415 01:13:10,790 --> 01:13:13,406 >> Así que la forma de combinación de trabajos de ordenación es que divide las cosas por la mitad, 1416 01:13:13,406 --> 01:13:15,780 y luego que sólo se ve en el primeros valores de todos ellos 1417 01:13:15,780 --> 01:13:17,000 y clasifica sólo eso. 1418 01:13:17,000 --> 01:13:20,364 Continuamente crea nuevas matrices y pone las cosas cada vez más en orden. 1419 01:13:20,364 --> 01:13:23,030 Y así, mientras que eso es muy, muy rápido porque es-- ya sabes, 1420 01:13:23,030 --> 01:13:25,380 una búsqueda binaria es n log n. 1421 01:13:25,380 --> 01:13:27,880 Estás creando tantos diferentes matrices que eres 1422 01:13:27,880 --> 01:13:29,700 el uso de una enorme cantidad de memoria. 1423 01:13:29,700 --> 01:13:33,080 Y así, mientras que es más rápido, la compensación aquí es que usted está utilizando más memoria. 1424 01:13:33,080 --> 01:13:38,490 >> Y así, sugerencia, ordena y búsquedas estaban cubiertos mucho más este año 1425 01:13:38,490 --> 01:13:41,610 lo que han sido en años anteriores. 1426 01:13:41,610 --> 01:13:45,100 Ustedes deben ver que reflejado en consecuencia en el cuestionario. 1427 01:13:45,100 --> 01:13:49,160 Definitivamente, me gustaría gastar tiempo en ir más de lo que todos los diferentes tipos 1428 01:13:49,160 --> 01:13:52,320 son, buscar la forma binaria, cómo lineal trabajo de búsqueda. 1429 01:13:52,320 --> 01:13:54,750 Cómo quizás pseudocódigo codificar los a cabo. 1430 01:13:54,750 --> 01:13:55,950 ¿Cuáles son los tiempos de funcionamiento? 1431 01:13:55,950 --> 01:13:59,210 Algo así como tiempos de funcionamiento es muy fácil de copiar hacia abajo en una hoja de notas, 1432 01:13:59,210 --> 01:13:59,710 ¿derecho? 1433 01:13:59,710 --> 01:14:01,420 >> Es muy difícil cuando estás en el medio de la prueba 1434 01:14:01,420 --> 01:14:02,390 y usted tiene que darse cuenta de eso. 1435 01:14:02,390 --> 01:14:03,160 Copie abajo. 1436 01:14:03,160 --> 01:14:05,550 Te garantizo que eres va a tener que saber eso. 1437 01:14:05,550 --> 01:14:06,860 ¿Cuáles son las ventajas y desventajas? 1438 01:14:06,860 --> 01:14:10,064 Peor de los casos, mejores escenarios para todos ellos, muy llegar a conocer. 1439 01:14:10,064 --> 01:14:10,564 ¿Sí? 1440 01:14:10,564 --> 01:14:12,730 >> AUDIENCIA: ¿Necesitamos saber cómo codificar Combinar especie? 1441 01:14:12,730 --> 01:14:15,470 Al igual, es lo que necesitamos recordar el recursiva? 1442 01:14:15,470 --> 01:14:18,950 >> PROFESOR: Lo dudo mucho, simplemente porque es como bastante complicado. 1443 01:14:18,950 --> 01:14:22,282 Pero puede que no sea factible si pedirle que use pseudocódigo a cabo. 1444 01:14:22,282 --> 01:14:22,781 Sí. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Sí, está bien, uno más. 1447 01:14:29,170 --> 01:14:31,387 Esto puede haber surgido en la última pieza en un poco. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 ¿Sí? 1450 01:14:43,090 --> 01:14:44,930 ¿Todos oír eso? 1451 01:14:44,930 --> 01:14:48,360 >> OK, así que más o menos de la primera todo, ¿qué tipo de programa 1452 01:14:48,360 --> 01:14:51,000 sería darle una salida como esta? 1453 01:14:51,000 --> 01:14:54,350 Recuerde que usted pide que aprender acerca de este nuevo tipo de herramienta de depuración? 1454 01:14:54,350 --> 01:14:57,340 ¿Cuál era el nombre de ella? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, derecha 1456 01:14:59,460 --> 01:15:02,600 >> Era un programa donde usted puede llamar a eso pude 1457 01:15:02,600 --> 01:15:05,940 realizar un seguimiento de toda la memoria que está utilizando en su programa y que estaba pasando. 1458 01:15:05,940 --> 01:15:11,090 Así que si tienes algo, como, definitivamente perdido, 40 bytes en un bloque. 1459 01:15:11,090 --> 01:15:14,870 Probablemente usted no está recordando a liberarla. 1460 01:15:14,870 --> 01:15:18,710 Porque si usted está usando bytes de memoria, eso significa que ha accedido a que la memoria, 1461 01:15:18,710 --> 01:15:20,240 pero no ha sido capaz de liberarse. 1462 01:15:20,240 --> 01:15:21,948 Así que usted quiere hacer Seguro que eres también 1463 01:15:21,948 --> 01:15:31,420 utilizando libremente-- eso es un function-- para liberar a todos los 1464 01:15:31,420 --> 01:15:34,930 de la memoria reasignado por malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Guay. 1466 01:15:35,500 --> 01:15:37,140 Así que esta diapositiva, tendré para arriba. 1467 01:15:37,140 --> 01:15:41,050 Está en todas partes en un montón de conferencias, en una gran cantidad de sección diapositivas. 1468 01:15:41,050 --> 01:15:44,254 ¿De verdad quiere asegurarse que acaba de saber todo esto. 1469 01:15:44,254 --> 01:15:47,170 Ya sea en su hoja de nota o si quiere memorizarlo, no dude en. 1470 01:15:47,170 --> 01:15:48,836 Eso es muy, muy, muy importante. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> También una muy buena pregunta que podemos pedir. 1473 01:15:56,890 --> 01:16:00,320 ¿Por qué es mirada Selección sort-- en Selección sort-- todos los tiempos de ejecución 1474 01:16:00,320 --> 01:16:02,060 son N al cuadrado. 1475 01:16:02,060 --> 01:16:06,714 Independientemente de cómo la lista llega a usted como, ¿por qué es sort-- Selección 1476 01:16:06,714 --> 01:16:08,630 Te voy a dar 30 chicos segundo pensar en esto. 1477 01:16:08,630 --> 01:16:10,700 Debido a que es un poco confuso. 1478 01:16:10,700 --> 01:16:12,710 Se trata de una reflexión conceptual. 1479 01:16:12,710 --> 01:16:16,470 ¿Por qué los tiempos de ejecución de la misma en tanto los peores y mejores escenarios? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> ¿Sí? 1482 01:16:30,000 --> 01:16:38,084 >> AUDIENCIA: Debido Selección especie cada posición o el espacio en este pequeño arsenal 1483 01:16:38,084 --> 01:16:40,350 cosa o lo que sea. 1484 01:16:40,350 --> 01:16:44,430 Así que incluso en el mejor de los casos, incluso si está perfectamente ordenadas, 1485 01:16:44,430 --> 01:16:47,380 sería aún tiene que ser así, OK, uno. 1486 01:16:47,380 --> 01:16:49,000 En mi primer lugar tengo una. 1487 01:16:49,000 --> 01:16:50,250 Y pasar por todos ellos. 1488 01:16:50,250 --> 01:16:51,249 OK, uno es el más pequeño. 1489 01:16:51,249 --> 01:16:53,053 Y luego va otra vez y es como, OK, dos 1490 01:16:53,053 --> 01:16:54,594 es la más pequeña de todas las cosas. 1491 01:16:54,594 --> 01:16:56,804 Pero todavía tiene que comprobar todos y cada uno. 1492 01:16:56,804 --> 01:16:57,470 PROFESOR: Sí. 1493 01:16:57,470 --> 01:17:00,490 Así, por ejemplo, vamos a decir Tenemos una lista, ya clasificado, 1494 01:17:00,490 --> 01:17:03,390 una serie uno a cinco. 1495 01:17:03,390 --> 01:17:07,100 La forma en que tipo de selección es que pasa por, comprueba estos dos. 1496 01:17:07,100 --> 01:17:08,234 A continuación, comprueba los dos. 1497 01:17:08,234 --> 01:17:09,650 Y entonces se comprueba y verifica. 1498 01:17:09,650 --> 01:17:13,285 Mantiene comprobar todos ellos, independientemente de si o no 1499 01:17:13,285 --> 01:17:14,160 en realidad está ordenada. 1500 01:17:14,160 --> 01:17:16,450 Porque eso es simplemente la forma en que el tipo trabaja. 1501 01:17:16,450 --> 01:17:19,530 >> Y por lo que esta cuestión es algo así como una pregunta conceptual pediremos. 1502 01:17:19,530 --> 01:17:21,430 Donde primero, a saber qué tipo de selección 1503 01:17:21,430 --> 01:17:23,304 es, a la derecha, para poder responder a la pregunta. 1504 01:17:23,304 --> 01:17:26,200 Tienes que ser capaz de entender conceptualmente lo que está pasando. 1505 01:17:26,200 --> 01:17:30,760 Y entonces usted puede aplicarlo y pensar, OK vamos a imaginar peor de los casos. 1506 01:17:30,760 --> 01:17:32,230 Están todos en orden descendente. 1507 01:17:32,230 --> 01:17:33,290 ¿Cómo afectaría eso que? 1508 01:17:33,290 --> 01:17:34,650 >> ¿Y si es el fin de ascender? 1509 01:17:34,650 --> 01:17:35,640 Si ya está ordenada? 1510 01:17:35,640 --> 01:17:37,240 ¿Cómo afectaría eso los tiempos de ejecución? 1511 01:17:37,240 --> 01:17:40,270 Y entonces tipo de selección, te darás cuenta que no importa realmente. 1512 01:17:40,270 --> 01:17:43,500 Debido a que usted está comprobando toda la valores, independientemente de lo que está pasando. 1513 01:17:43,500 --> 01:17:45,810 >> Y así las cosas buenas para recordar. 1514 01:17:45,810 --> 01:17:50,290 ¿Por qué algunas clases difieren de los demás y la mejor y peor de los casos 1515 01:17:50,290 --> 01:17:52,740 afectaría a todos ellos. 1516 01:17:52,740 --> 01:17:56,700 >> Voy a golpear realmente en clase porque eso va a estar en el cuestionario. 1517 01:17:56,700 --> 01:17:57,199 Sí. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 OK. 1520 01:18:01,320 --> 01:18:05,590 Hay seis minutos para el final. 1521 01:18:05,590 --> 01:18:09,880 Puedo tomar tres minutos de preguntas. 1522 01:18:09,880 --> 01:18:12,290 También puedo colgar alrededor de como 20 minutos después de la sección 1523 01:18:12,290 --> 01:18:13,850 si desea hacer preguntas también. 1524 01:18:13,850 --> 01:18:16,330 ¿Alguien apenas tiene muy breve preguntas o cuestiones conceptuales 1525 01:18:16,330 --> 01:18:17,360 son poco claros acerca de este momento? 1526 01:18:17,360 --> 01:18:17,832 ¿Sí? 1527 01:18:17,832 --> 01:18:19,720 >> AUDIENCIA: ¿Puedes hablar un poco poco acerca de los operadores bit a bit? 1528 01:18:19,720 --> 01:18:20,280 >> PROFESOR: Sí. 1529 01:18:20,280 --> 01:18:22,446 Así que los operadores bit a bit son algo que probablemente 1530 01:18:22,446 --> 01:18:24,170 sólo podría querer poner en su hoja. 1531 01:18:24,170 --> 01:18:27,540 Así quickly-- No quiero ir demasiado en profundidad 1532 01:18:27,540 --> 01:18:31,164 porque de Harvard, en su opinión período de sesiones, la cubrió bastante bien. 1533 01:18:31,164 --> 01:18:33,080 Operador de bits, hay cinco de ellos, ¿no? 1534 01:18:33,080 --> 01:18:41,370 >> Hay una, que es x o función, no hay signo, que es la y. 1535 01:18:41,370 --> 01:18:44,050 Pipe, que es el o. 1536 01:18:44,050 --> 01:18:46,790 Y entonces usted tiene los dos diferentes tipos de turnos. 1537 01:18:46,790 --> 01:18:50,610 >> Si te doy dos valores, si es Yo te doy, como, uno y uno. 1538 01:18:50,610 --> 01:18:52,390 Lo que habría que evaluar a? 1539 01:18:52,390 --> 01:18:55,490 Si te doy cierto y verdadero, cierto? 1540 01:18:55,490 --> 01:18:56,930 ¿Qué hay de verdadero o falso? 1541 01:18:56,930 --> 01:18:57,830 Siendo cierto, ¿no? 1542 01:18:57,830 --> 01:18:59,762 Debido a que hay una o. 1543 01:18:59,762 --> 01:19:01,220 Lo más probable es que te damos los números. 1544 01:19:01,220 --> 01:19:03,780 Así que recuerde, uno es igual a verdadera, cero es igual a falso. 1545 01:19:03,780 --> 01:19:07,407 Y nos podría darle estas cosas y pedirle que nos diga lo que pasa. 1546 01:19:07,407 --> 01:19:10,240 Harvard cubre dentro de la primera 10 minutos de su sesión de estudio 1547 01:19:10,240 --> 01:19:11,230 muy, muy bien. 1548 01:19:11,230 --> 01:19:14,260 Así que ustedes quieren hacer Seguro que mira hacia atrás en eso. 1549 01:19:14,260 --> 01:19:16,387 >> AUDIENCIA: ¿Es pisa5 va a estar en el concurso? 1550 01:19:16,387 --> 01:19:16,970 PROFESOR: No. 1551 01:19:16,970 --> 01:19:18,240 Ni siquiera mirar a pisa5 ahora. 1552 01:19:18,240 --> 01:19:18,810 Es dificil. 1553 01:19:18,810 --> 01:19:22,830 Así que ni siquiera te molestes en buscar en pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Sin embargo, como algunos consejos y sugerencias, 1555 01:19:25,665 --> 01:19:28,320 sugeriría que inicie pisa5 tan pronto como el concurso ha terminado. 1556 01:19:28,320 --> 01:19:30,319 Este será el más duro semana, pero luego ustedes 1557 01:19:30,319 --> 01:19:34,590 se la pasó en las colinas de verde y cachorros laminados, 1558 01:19:34,590 --> 01:19:36,115 y está bien. 1559 01:19:36,115 --> 01:19:39,810 >> Esta clase se pone significativa más fácil después del quinto conjunto de procesadores. 1560 01:19:39,810 --> 01:19:41,560 Horario de oficina: AUDIENCIA son Domingo, Lunes? 1561 01:19:41,560 --> 01:19:44,260 PROFESOR: Sí, así que las horas de oficina hará del domingo al lunes para el conjunto de procesadores. 1562 01:19:44,260 --> 01:19:47,009 El horario de atención esta noche esencialmente sólo será crítica para el concurso. 1563 01:19:47,009 --> 01:19:50,350 Si alguien quiere entrar y pedir la TA una pregunta, estaremos allí. 1564 01:19:50,350 --> 01:19:53,220 >> Voy a tomar tal vez una pregunta más si alguien tiene una pregunta? 1565 01:19:53,220 --> 01:19:53,809 ¿Sí? 1566 01:19:53,809 --> 01:19:55,850 AUDIENCIA: Cuando estés nodos que definen, [inaudible] 1567 01:19:55,850 --> 01:20:00,700 si dices estrellas nodo y luego otro, hace el ordenador de forma automática 1568 01:20:00,700 --> 01:20:03,610 entiendes que eres refiriéndose a otro puntero? 1569 01:20:03,610 --> 01:20:04,580 >> PROFESOR: No. 1570 01:20:04,580 --> 01:20:06,710 >> AUDIENCIA: Usted tiene que reenlazar que [inaudible]? 1571 01:20:06,710 --> 01:20:09,270 >> PROFESOR: Así que, básicamente, el estructura de un nodo es, recordemos, 1572 01:20:09,270 --> 01:20:12,620 que es como se crea el nodo y entonces usted tiene un puntero llamada siguiente. 1573 01:20:12,620 --> 01:20:14,630 Todo lo que estamos haciendo es tener la estructura allí. 1574 01:20:14,630 --> 01:20:16,387 Tiene que asignar ese puntero en alguna parte. 1575 01:20:16,387 --> 01:20:18,470 Así que las computadoras no lo hace sabe lo que está haciendo todavía. 1576 01:20:18,470 --> 01:20:20,250 Tiene que asignar realidad cuando va a crear su lista enlazada. 1577 01:20:20,250 --> 01:20:22,170 Y eso es lo que principalmente pset 5 estará encendido. 1578 01:20:22,170 --> 01:20:24,106 Así que no te preocupes por nada de eso en este momento. 1579 01:20:24,106 --> 01:20:26,380 >> AUDIENCIA: Así que no necesitamos centrarse demasiado en la lista de enlaces, justo 1580 01:20:26,380 --> 01:20:27,440 la concepción general? 1581 01:20:27,440 --> 01:20:30,980 >> PROFESOR: Just prácticamente pilas, colas, listas de enlaces, árboles, tablas hash. 1582 01:20:30,980 --> 01:20:33,639 Sólo ser capaz de saber lo que son. 1583 01:20:33,639 --> 01:20:35,680 No vamos a pedir te gusta nada específico 1584 01:20:35,680 --> 01:20:39,300 porque en realidad no hemos hecho un conjunto de procesadores que la cubre nada de eso todavía. 1585 01:20:39,300 --> 01:20:45,540 >> Así que en los últimos dos minutos antes Me puse libre para matar a este cuestionario. 1586 01:20:45,540 --> 01:20:49,370 Más o menos, como, pensar en cómo ahora que ustedes han llegado en esta clase. 1587 01:20:49,370 --> 01:20:52,820 >> Recuerdo que cuando la segunda semana de esta clase, algunos de ustedes 1588 01:20:52,820 --> 01:20:55,720 pasar tres horas escribiendo agua. 1589 01:20:55,720 --> 01:20:57,970 ¿Cuánto tiempo le llevará chicos escriban agua ahora? 1590 01:20:57,970 --> 01:20:59,670 30 segundos, tal vez? 1591 01:20:59,670 --> 01:21:01,810 Piense en la cantidad ustedes han aprendido. 1592 01:21:01,810 --> 01:21:04,320 CS es un tema muy, muy difícil. 1593 01:21:04,320 --> 01:21:06,190 No hay duda de eso. 1594 01:21:06,190 --> 01:21:09,160 Es difícil, por eso nadie se lo estudia. 1595 01:21:09,160 --> 01:21:10,730 Es simplemente difícil. 1596 01:21:10,730 --> 01:21:11,650 Y es totalmente bien. 1597 01:21:11,650 --> 01:21:14,150 >> Y estoy muy orgulloso de que todo el mundo ha llegado tan lejos. 1598 01:21:14,150 --> 01:21:16,380 Conjuntos de procesadores no son fáciles. 1599 01:21:16,380 --> 01:21:17,790 Ellos toman mucho tiempo. 1600 01:21:17,790 --> 01:21:22,580 Chicos, yo nunca le pedirá que escriba el juego de 15 o Vigenére en el conjunto de procesadores. 1601 01:21:22,580 --> 01:21:24,160 No hay necesidad de simplemente asuste por eso. 1602 01:21:24,160 --> 01:21:28,080 Todo lo que estamos probando aquí es evaluar su conocimiento conceptual, así 1603 01:21:28,080 --> 01:21:31,524 como algunos de sus habilidades básicas de codificación. 1604 01:21:31,524 --> 01:21:33,440 La prueba está diseñada para ser realmente difícil. 1605 01:21:33,440 --> 01:21:36,180 Al igual, que está diseñado para que usted no obtiene 100. 1606 01:21:36,180 --> 01:21:39,880 También está diseñado para que usted probablemente No ser capaz de terminar en 75 minutos. 1607 01:21:39,880 --> 01:21:41,995 Y eso es totalmente bien. 1608 01:21:41,995 --> 01:21:42,870 Soy un estudiante de mí mismo. 1609 01:21:42,870 --> 01:21:45,960 Lo sé, lo odio cuando camino de un cuestionario ser así, mierda. 1610 01:21:45,960 --> 01:21:47,044 Eso fue muy duro. 1611 01:21:47,044 --> 01:21:49,460 Probablemente lo que va a happen-- y eso es totalmente bien, 1612 01:21:49,460 --> 01:21:50,751 Te lo digo chicos ahora. 1613 01:21:50,751 --> 01:21:53,190 Los medios en estas cosas no son altos en absoluto. 1614 01:21:53,190 --> 01:21:55,360 >> Y para aquellos de ustedes que han estado recibiendo, como, 1615 01:21:55,360 --> 01:21:57,870 tres en sus boletines de problemas, eso no quiere decir que estés 1616 01:21:57,870 --> 01:21:59,536 va a conseguir un 60 por ciento en esta clase. 1617 01:21:59,536 --> 01:22:01,440 Si usted recibe un 60% en el concurso, que no lo hace 1618 01:22:01,440 --> 01:22:03,330 decir que vas a obtener una D en esta clase. 1619 01:22:03,330 --> 01:22:05,740 Vemos, sobre todo yo, por aquellos de ustedes en mi sección, 1620 01:22:05,740 --> 01:22:07,406 Yo veo lo difícil que ustedes están trabajando. 1621 01:22:07,406 --> 01:22:09,190 Y guardo un registro de eso. 1622 01:22:09,190 --> 01:22:11,420 >> Ustedes estarán bien. 1623 01:22:11,420 --> 01:22:14,580 No hay memoria institucional de la felicidad al final del semestre. 1624 01:22:14,580 --> 01:22:16,840 Debido a que todos los niños de Harvard están diciendo sus amigos, oh, estarás bien. 1625 01:22:16,840 --> 01:22:18,381 Nadie te está diciendo chicos que aquí. 1626 01:22:18,381 --> 01:22:20,950 Así que tengo que decir a ustedes que aquí. 1627 01:22:20,950 --> 01:22:22,280 >> Ustedes estarán bien. 1628 01:22:22,280 --> 01:22:24,080 Estoy muy orgulloso de todos ustedes. 1629 01:22:24,080 --> 01:22:25,680 La prueba será dura. 1630 01:22:25,680 --> 01:22:28,140 Estudio para ella, y después simplemente tirarlo a la basura. 1631 01:22:28,140 --> 01:22:31,280 ¡Prepárate para aprender cosas nuevas. 1632 01:22:31,280 --> 01:22:33,990 Y comer dulces. 1633 01:22:33,990 --> 01:22:35,940 Nosotros hemos tienen un montón de caramelos. 1634 01:22:35,940 --> 01:22:37,760 >> Obtener una buena noche de sueño. 1635 01:22:37,760 --> 01:22:40,420 No, no dormir, porque eso sería muy malo. 1636 01:22:40,420 --> 01:22:41,490 CS es mucha lógica. 1637 01:22:41,490 --> 01:22:44,960 Si no duermes, no puede funcionar, y su cerebro no puede funcionar. 1638 01:22:44,960 --> 01:22:48,780 Y voy a estar aquí para el próximo 20 minutos si alguien quiere pasar el rato. 1639 01:22:48,780 --> 01:22:51,150 Ustedes van a acabar con él. 1640 01:22:51,150 --> 01:22:53,000 Buena suerte. 1641 01:22:53,000 --> 01:22:55,663