ALLISON BUCHHOLTZ-AU: Hey, todo el mundo. Bienvenidos a la sección. Hoy es sólo va a ser todo concurso revisar para su examen el miércoles. Espero que todo el mundo recuerda que tienen un concurso para el Miércoles. Y si no lo hizo, así, ahora que has estado recordado. Así Miércoles asegurarse usted se presenta para la clase o como otros alojamientos necesario. Ustedes van a ser impresionante. Va a ser grande. Y yo voy a hacer todo lo que pueda para ayudar a prepararse hoy para su concurso ahora. Y también en el caso de que usted no sabe, hay una sesión de revisión amplia curso hoy a las 7 en punto de Laboratorios del Noroeste B103 habitación. Usted me puede ver de nuevo para hacer un bis como Voy a llevar parte de esa sesión de revisión también. Así que si usted no puede obtener suficiente de mí Ahora, usted puede venir otra vez esta noche. Muy bien por lo que lo primero es lo primero,. A sólo algunos consejos de concurso antes de que en realidad bucear en las revisiones. Así como con cualquier examen, la práctica sin duda ayudará a cabo. Hay exámenes del pasado seis o siete años de la existencia, así que eso es una gran cantidad de práctica material para que ustedes tienen. Y de hecho, hoy en día es en realidad va a ir sobre cualquier tema que ustedes tienen preguntas sobre como así como trabajar a través de problemas de práctica de concurso cero. Así que voy a vomitar cero concurso desde el año pasado aquí, y podemos trabajar con cualquier problema que ustedes le gustaría. Así que la práctica. Vas a empezar a hacer eso hoy. Código en el papel. Así que sí, si todo el mundo en realidad podría salir papel, que va a ser grande, porque no eres va a tener el equipo en el examen y escribir el código a mano es a menudo mucho más difícil que se podría esperar. Usted está acostumbrado a sólo viendo y escribiendo, y usted tiene su compilador ayudarle cuando tiene errores, pero usted no consigue que en el examen. Así que es realmente importante en realidad ser capaz de escribir el código, y que la memoria muscular de hacer a mano realmente le ayudará. Así que estamos poniendo un poco estrecha. Es lunes. Su examen es el miércoles. Pero si tienes tiempo, Definitivamente tomar uno de los exámenes del año pasado o el años antes bajo la restricción de tiempo de una hora y media. Sólo noquear a una hora y media de tiempo, y sentarse por sí mismo, y sólo el trabajo a través de los problemas como si estuviera realmente tomarlo, porque uno de las cosas más grandes que oímos hablar las pruebas es que son muy largos. Se trata de una gran cantidad de material. Hay un montón de preguntas, y la mayoría de la gente no puede terminar. Sé que estoy totalmente de no terminar mis pruebas cuando me llevaron a la clase. En ese sentido, como una menor sección cómodo, entiende que este curso está destinado para atender a las personas de todos los niveles. La razón por la que tenemos que dividir menos cómodo, en algún lugar entre, y más cómodo es tipo de hacerla más justa. Y si usted es menos cómodo, es no es necesario en sí para conseguir todo. Al igual que si usted estaba recibiendo todo, lo haría probablemente estar en la sección más cómodo. Así que, obviamente, no golpearon a sí mismos hasta demasiado difícil si usted no puede terminar el examen. Toma de mí, yo no lo hice. Sigo siendo un concentrador. Todavía estoy ayudando a enseñar el curso. Vas a estar bien. Bien. Y, por último, dormir un poco. Obviamente con cualquier examen siempre decimos esto. Abarrotar la noche anterior y no conseguir dormir hace no-- tal vez si que que funciona para usted, vaya para él. Sin embargo, para la gran mayoría de gente, conseguir un poco de sueño, dejando su descanso cerebral y recuperar antes de entrar en el examen realmente le ayudará. También habrá casi seguramente dulces en el examen, así que tienes que esperar. Ustedes van a hacer muy bien. Va a estar bien. Y ahora, en la siguiente hora y media me tratará y preparar de la mejor manera que puedo. Así que tengo diapositivas de, básicamente, todas las secciones hasta ahora. Yo no voy a ir a través de todos ellos porque eso no es factible en una hora y media, así como trabajar a través de problemas de práctica. Así que en vez que tengo una lista de temas. Estas son todas las cosas que pudiéramos interrogar a usted en. Si hay algo que realmente salta a cabo que quiere ir más, que quiero que me vaya más conceptualmente, Puedo tratar de dar usted una visión general allí. O si quieres saltar a la derecha en a haciendo problemas de práctica juntos, podemos hacer eso. Todo depende de ustedes. No hay que muchos de ustedes. Así que es lo que les gusta a ustedes hacer. Quiero ser el más útil hacia ustedes. Así que voy a dejar que acaba de ver. AUDIENCIA: Una cosa es el gráfico que guardemos diciendo acerca de la pila y el montón. Sólo la idea detrás eso y lo que eso significa. ALLISON BUCHHOLTZ-AU: Sí, está bien. Este es todo el camino a la final, así que me desplazo a través. AUDIENCIA: Nosotros no tenemos que hacerlo ahora, pero lo que sea. ALLISON BUCHHOLTZ-AU: ¿Hubo anything-- éste. ¿Es este tipo de difusa para la gente? AUDIENCIA: Sí, lo segundo que. Y podemos también qué buffer overflow? ALLISON BUCHHOLTZ-AU: Desbordamiento de búfer? Okay. Así buffer overflow es bastante fácil sólo para hablar. Se trata básicamente de buffers se piensa en parte de la memoria de matriz que tiene, ¿verdad? Por lo general hablamos de desbordamiento de búfer cuando usted no está comprobando cuánto el usuario está poniendo en, ¿verdad? Y la idea de ser con tampón de desbordamiento es que están poniendo en el momento demasiados datos para el espacio que ha asignado para ellos, ¿verdad? Así que si usted dice, da me algún mensaje, estamos asumiendo que van a dar nosotros un mensaje de longitud razonable. Tal vez un par de líneas, lo que sea. Así que no comprobamos. En su lugar, nos dan de comer en un todo libro que es un mensaje, y se desborda la cantidad de espacio que hemos asignado para esto. Y lo que pasa es que podría sobrescribir lugares que no se supone. Así que sé que el profesor dijo Malan algo acerca de los ataques de desbordamiento de búfer. Así que ahí es donde la entrada de la voluntad del usuario una cierta cantidad masiva de datos en las esperanzas que sobrescribe pasado Al final de su búfer y reemplaza algo-- me pregunto Yo que tengo esas diapositivas aquí. Yo no creo que tengamos aquellas diapositivas de aquí. Pero, básicamente, que sobrescribe una parte de la memoria que le permite el acceso a las partes de su computadora que usted no lo haría normalmente tener acceso. Lo más importante con desbordamiento de buffer es sólo entender que ocurre cuando usted no está comprobación de la cantidad de su usuario está poniendo en. Cuando usted no es tipo de salvaguardar contra eso. Y en su forma más simple cosa, es sólo tu usuario la introducción de una cantidad masiva de datos en un intento sobrescribir algo de seguridad parte de su memoria. Eso es todo lo que es. Así que esta aquí, la pila y el montón. Básicamente todo esto es sólo es una representación de la memoria y donde se guardan las cosas. Eso es muy amable de Todo lo que necesitas saber. Las cosas más grandes que lo que necesita saber son que-- déjame ver si hay un mejor-- aquí. Así que esta es la pila de aquí. Así que la pila tiene que ver con todas sus funciones que usted está llamando en cualquier momento dado. Y lo que es importante recordar ir fuera de la semana pasada con malloc es que usted realmente no tiene control necesario sobre él. Todo depende de cuando cierta funciones están ejecutando. Y cuando se están ejecutando, que tienen lo que se llaman marcos de pila que suben aquí. Por lo tanto, todo tipo de pasa sin ninguna entrada de bienes de usted. Usted escribe su programa, y se deja correr, y la pila de tipo de toma cuidar de sí mismo, ya que necesita. Así que si en el principal que está llamando cubo, que se pasará por aquí. Se va a crear un marco. Pero no hay nada que usted hace de forma explícita para crear ese marco de pila que no sea escribir la función, para empezar, ¿de acuerdo? ¿Qué es una especie de bajo de su el control es el montón con malloc. Así que cada vez que malloc algo, usted está tomando memoria del montón. Y esa es la memoria que usted tener, por falta de una palabra mejor, control explícito sobre, porque recuerde con malloc es básicamente allí hasta que digan lo contrario. Para aquellos de ustedes que sección visto la semana pasada, que está ahí hasta que usted le dice que se vaya. Será allí a menos de otro modo no dicho. Así que el montón es sólo algo se puede pensar en como memoria que usted tiene control sobre. Y esos son sólo los dos grandes cosas diferentes. Aparte de eso, usted no debe tener que preocuparse demasiado acerca de pila y el montón preguntas o típicamente más justo si tiene parámetros locales o una función sería en la pila o montón. Obviamente, en este caso sería la pila. Si usted está mallocing algo, ¿Dónde está que viene? El montón. Si nos fijamos en los concursos de práctica, los son generalmente el tipo de preguntas que tienen. Usted no tiene que preocuparse demasiado en ello. Te metes en forma más explícita acerca de pila y el montón más tarde o en otras clases de CS. Así que tener una especie de idea general de lo que es esto será bueno, que yo sólo un poco se fue por arriba. Cualesquiera otros temas? ¿Sí? AUDIENCIA: ¿Se puede ir más punteros de nuevo muy rápidamente? ALLISON BUCHHOLTZ-AU: Punteros? ¿Quieres conceptual visión general de punteros o practicas con los punteros? AUDIENCIA: Algo así como la sintaxis. ALLISON BUCHHOLTZ-AU: La sintaxis? Sí. Bien, nos vamos acercando. Sí, así que esto es sólo un poco de algo cuando se tiene una función recursiva, cada vez que la función recursiva es llamado, que sólo añade otro marco de pila. Más o menos un ejemplo de la forma en que realmente no tener control sobre el marcos en su pila. Aceptar, punteros. Muy bien, por lo que la creación de punteros. Recuerde, es sólo tienes que escribir la estrella. Asi que cualquier tipo de datos que usted va a estar apuntando a. Así que este sería un puntero a un int. Esto sería un puntero a un char. Esto sería un puntero a un flotador. Así que es básicamente lo que sea quieres que estar apuntando a, estrella es cómo se declara el puntero, ¿de acuerdo? Pero entonces, evidentemente, pone un poco complicado cuando tienes puntero o usted tiene protagonizar lo que sea. Así que la gran diferencia es cuando estás declaring-- así que tenemos tan some-- esto toma algunos int estrellas. Así que esto es un poco de puntero llama x a un int, ¿verdad? Así que recuerda lo que esto hace es esta llama al sistema de x. Y esto va a tener un poco de dirección, ¿no? Así que digamos que esta es nuestra dirección. Los punteros tienen direcciones. Así que lo que dice es que en este ubicación, estamos almacenando un int. Así que otra manera podemos pensar en esto es que esto es algún int. Realmente no hemos asignado a nada todavía, pero es sólo un int. Así que nos podemos hacer es si nosotros STAR x es igual a 5, este se convierte en un 5, ¿de acuerdo? Esto dice ir a cualquier x es apuntando a, por lo que ir a esta dirección y que sea igual a 5. Así que asignamos 5 a esta dirección, ¿no? Y entonces, si usted hace esto, esto nos da la dirección de. Esta es la dirección del operador. Entonces, ¿cuál es la dirección de x? No sabemos. No hemos dotado con una dirección. Podríamos decir que es some-- ahora nos dimos una dirección, por lo que la dirección es de 4. Y en realidad, si pasamos por algo como esto, algo de lo que hicimos. Así que trabajar a través de aquí-- Encuentro ayuda si usted dibuja hacia fuera punteros. Si usted está en su examen, lo recomiendo dibujar cajas. Así que esta primera, int x es igual a 5. Esto sólo significa que tenemos un poco de colocar en la memoria que es 5, ¿no? Y nuestra mesa aquí nos dice que es en la dirección 0x04. Y entonces se crea un poco de puntero. Así que vamos a romper esto abajo una a la vez. Así que esto crea algunos boxear a un int, ¿verdad? Se va a celebrar alguna dirección de un él. Así que esto es cierto puntero. Y esta tiza es realmente pequeño. Así que tenemos un poco de puntero aquí. Y nuestra mesa nos dice que es la dirección es 0x08. Enfriar. Y estamos asignando a la dirección de x. Recuerde, los punteros tienen direcciones, ¿de acuerdo? Así que si queremos mantener x, tenemos utilizar el operador de dirección, lo que es el símbolo de unión, para obtener la dirección de x, que en este caso, 0x04. Y luego, si tenemos alguna copia int, esto sólo crea alguna otra caja que mantiene un int llamada copia. Y si asignamos a esto-- por lo que este hace referencia a ella. Así que dice ir a cualquier puntero de dirección se mantiene. Puntero mantiene esta dirección, por lo que nos gustaría ir por aquí, y decimos, bien, lo que está en él? Es 5. Entonces copia se convierte en 5. Tiene sentido? ¿Qué pasa si he tratado de asignar esta a solo puntero. ¿Qué significa en realidad puntero igual? Sólo sería lo puntero contiene, ¿no? Y entonces, ¿qué si lo hice? ¿Cuál sería la copia ser ahora? AUDIENCIA: 0x08. ALLISON BUCHHOLTZ-AU: Sí, la dirección de nuestro puntero. Cualquier parte de eso que necesita ser re-explica? Enfriar. Definitivamente hay una muy diversión problema en una prueba que podamos sobre esa le da más práctica. Los chicos de la semana pasada puede decirle que no era tan malo. Llegamos a través de un entero carta, y todo el mundo lo hicieron muy bien. OK, así que eso es información general de la sintaxis de los punteros. Lo más importante es entender cómo crearlos, hacer referencia, y la dirección, ¿de acuerdo? Enfriar. Cualesquiera otros temas antes nos sumergimos en la práctica. Además, si estamos pasando por los problemas de la práctica y hay algo que usted quiere un actualización sobre, podemos hacer eso también. ¿Tiene usted algo? AUDIENCIA: Estructuras y listas enlazadas. ALLISON BUCHHOLTZ-AU: Las estructuras y vinculado listas, en Aceptar. Así estructuras. En realidad nos vamos sobre esta noche también. OK, así estructuras. Las estructuras son básicamente sólo una forma para que usted mantenga múltiples valores de tipos diferentes. Así que con un arsenal somos constreñida a un tipo de datos. Nuestra gama ya sea tiene que ser sólo números, o simplemente ser caracteres, o simplemente ser carrozas. Pero, tal vez necesites contener más que eso. Tal vez usted necesita para hold-- si estamos hablando de un estudiante, usted va a tener su casa, su Número de identificación, su edad, lugar de residencia, ¿verdad? Y todos los que son diferentes tipos de tipos. Así que no se puede almacenar los que todos en una matriz. Así que lo que puede hacer usted es puede crear una estructura, la cual se puede pensar en como tu propio tipo de datos de carácter personal. Así que en lugar de sólo tener ints y en lugar de sólo con carrozas, usted puede tener un estudiante tipo que tiene todos estos campos en el mismo. Así que la forma inicializamos nuestras estructuras es-- realidad ya que mi escritura es terrible, van a la transición a escribir. Woo. Aceptar, por lo que si queremos crear un struct-- Yo sólo voy a aquí abajo. No tenga en cuenta el principal en lo que sea que utilizaremos más adelante. Así que la forma en que quieres hacer es con typedef struct. Y vamos a llamar a este estudiante porque eso es lo que yo estaba usando. OK, así que typedef significa que eres la definición de un nuevo tipo, ¿de acuerdo? Hay matices en cuando lo hace sólo una estructura frente a una estructura typedef. Para todos los intentos y propósitos, ustedes son sólo va a suponer que son aproximadamente el mismo y justo utilizar typedef struct por ahora. Se convertirá de forma más evidente en su siguiente P establece cuáles son esas diferencias, pero yo no creo que se necesita preocuparse de eso ahora mismo. Me gustaría mucho que saber cómo crear uno, acceder a ella, y asignar [? valor. ?] Un nuevo tipo de estructura, y estamos pidiendo que los estudiantes. Así que después hemos terminado la creación de este, para todos los intentos y propósitos, usted tendrá un tipo llamado estudiante. Y usted puede pensar en él sólo como un tipo como un int o un float, o un char. Es sólo otro tipo, ¿de acuerdo? Así que en éste, ¿qué tenemos? Tenemos tal vez un nombre. Así que tal vez queremos un nombre de cadena. Y tenemos quizá un int que es un ID. Y tenemos otro en ese es el número de teléfono. Y hemos dejado some-- a ver. ¿Qué más podríamos tener? Vamos a tener un poco de cuerda en su casa. Todas las cosas que un estudiante tiene. Así que esto crea una estructura ahora. Entonces, ¿cómo podríamos crear un estudiante? Si tenemos alguna variable que es va a hablar de Walker aquí, así que tener-- sólo somos va a llamar a este andador. Él necesita un tipo. ¿Cuál es tu tipo? AUDIENCIA: Estudiante. ALLISON BUCHHOLTZ-AU: Estudiante. Así que esto simplemente crea un objeto que pueda pensar en que tiene todas estas cosas. Usted acaba de crear un estudiante andador. Así que ahora tenemos que ser capaces asignar todos estos, ¿no? Así que ¿alguien recuerda cómo accedemos dentro de una estructura? AUDIENCIA: Período. ALLISON BUCHHOLTZ-AU: Período Exactamente. Así que si queríamos asignar él un nombre, que podría hacer eso. Obviamente, esto haría ser-- esta parte aquí sería estar dentro de principal, por lo en realidad déjame hacer esto. Declare que este por encima de principal, así que podemos usarla dentro de principal. Así que ahora yo quiero que haga ID, y sólo tendremos que hacer un poco de allí, y luego le asignaremos una casa. Bam. Enfriar. Así que ahora si alguna vez necesitan acceso algo más tarde tal vez en-- nosotros-- si alguna vez necesitamos acceder a cualquier cosa, vamos a hacer una copia de identificación int. Y quiero copiar ID de Walker en esto. ¿Cómo podría yo hacerlo? Usted necesita tener acceso dentro del caminante struct a [? ir a ese?] [? E?]. Y de la misma manera que asignado hasta aquí, ¿cómo podríamos acceder a ella cuando queremos dar ese valor a otra cosa? AUDIENCIA: Walker.id. ALLISON BUCHHOLTZ-AU: Sí, exactamente. Así que eso es más o menos todo lo que necesita saber para estructuras. Sólo tiene que pensar en como otra variable. Básicamente un crear su propio tipo de variable, ¿de acuerdo? Se utiliza para declarar las variables de ninguna manera. Aquí caminante sigue siendo una variable. Sólo tiene un estudiante tipo ahora en lugar de un tipo int, o una cadena de tipo, o un tipo char. Si había una manera fácil de hablar sobre estructuras, es, literalmente, sólo un crear su propio tipo de datos que le permite al grupo todas estas diferentes tipo de datos juntos. ¿Eso tiene sentido? Okay. Eso y el acceso con puntos. Casi todo lo que necesita. Bien, ¿de dónde va mi PowerPoint? Aquí lo tienes. Bueno, esto es raro. Ajá. Aceptar, fresco. Cualesquiera otras cosas o hacer que que dirigirse a la práctica? Practique? Okay. Impresionante. Voy a salir de esta. Si en cualquier momento durante preguntas de la práctica, Estoy feliz de renovar y pasar por las cosas. Así que tengo concurso cero hasta aquí. Si ustedes quieren tirar que en el equipo, al igual que tomar cinco minutos para navegar a través de. Tal vez elegir algún superior preguntas que quieren repasar. Si ustedes no puede decidir, sólo tendremos que poco a poco empezar a trabajar a través de ellos, pero estoy seguro de que va a haber algún preguntas que usted es particular con ganas de hablar y tener mi trabajo a través de todos ustedes. Así que seguir adelante y tomar cinco minutos. Desplazarse a través de. Y esta es la prueba a partir de 2013. AUDIENCIA: Cero? ALLISON BUCHHOLTZ-AU: Sí, concurso cero. No estamos haciendo un concurso de cosas. Vamos a hacer que en un par de semanas. También para aquellos de ustedes que llegó tarde, tenemos el caramelo, por lo que hace que ustedes quieren el caramelo? AUDIENCIA: Claro. ALLISON BUCHHOLTZ-AU: Yo sólo soy va a pasar alrededor. Oye, si ustedes llegan aquí temprano, se obtiene más dulces. Eso está bien. Ben, ¿quieres caramelos? ¿Quieres un poco de esto? También hay Snickers si alguien quiere Snickers. Voy a dejar aquí y aquí. Siéntase libre. ¿Quieres más? AUDIENCIA: todo listo. Gracias. ALLISON BUCHHOLTZ-AU: Y yo tenía una buena montoncito allí al principio. Ustedes la oportunidad de tomar la prueba y Llego a tener una fiesta concurso clasificación. Es un caos. 900 exámenes. Va a ser muy divertido. El ir a ser grande. Estoy bastante seguro de que es una de la mayor vinculación de personal noches del año. ¿Alguien ha hecho prueba de cero el año pasado todavía por curiosidad? AUDIENCIA: Partes de ella. ALLISON BUCHHOLTZ-AU: Partes de ella, en Aceptar. ¿Sabía usted tiene preguntas sobre cualquiera de ellos? AUDIENCIA: Ya fue a las horas de oficina. Gracias embargo. ALLISON BUCHHOLTZ-AU: Bueno, con suerte es todavía tipo de útiles. ¿Cuándo vas a horario de oficina para que? AUDIENCIA: Mi TF ellos tenía esta tarde. ALLISON BUCHHOLTZ-AU: Oh. ¿Quién es tu TF? AUDIENCIA: Fred [? Wujaya?]. ALLISON BUCHHOLTZ-AU: Hay tantas TFS. Así que muchos. Bien. Alguien tiene alguna para iniciar lo que pueda Anote que queremos trabajar? Supongo que los punteros uno con la tabla. No te lo pienses. AUDIENCIA: Tal vez el interruptor de uno. ALLISON BUCHHOLTZ-AU: Así que el número 12? Asumo número 8 y 9 son, probablemente, Lo que la gente quiere ir. AUDIENCIA: Y 10 y 11. ALLISON BUCHHOLTZ-AU: ¿Y ustedes saben usted consigue una página de notas, ¿verdad? AUDIENCIA: Sí, ¿y qué son nos permitió poner en eso. ALLISON BUCHHOLTZ-AU: Está permitido poner todo lo que quieras. Y puede ser escrito. Por lo que yo recuerdo, la nuestra fueron mecanografiadas. AUDIENCIA: Usted puede hacer espalda y ambos lados? ALLISON BUCHHOLTZ-AU: Sí, ambos lados. Así que algo como el montón y [? parte de atrás?] montón, su funcionamiento veces. Útil. Quizás pequeñas cosas acerca de punteros para recordarle. Sintaxis de las cosas. Tener al igual que un esqueleto programa puede ser muy útil. Yo sé que siempre me olvidé exactamente lo Se suponía que debía escribir para int main, porque siempre acaba copio pegar desde mi conjunto P anterior o que ya está ahí, por lo que Realmente nunca escribí, así que tener eso puede ser super útil. OK, así que ¿por qué no hacemos nosotros comenzar con el número 8, entonces? Bien. Okay. Así que considere el programa a continuación. Así que, obviamente, cuando vemos punteros, probablemente una buena idea para empezar a dibujar, ¿verdad? Quiero saber donde toda mi grandes trozos de tiza fueron. Esto es un poco molesto. Así que tenemos aquí una función de intercambio eso va a tomar en dos punteros. Así pues, en este caso, en realidad debería ser el cambio cosas frente a nuestro intercambio inicial función que sólo tomó en copias. Entonces, ¿qué va a hacer es-- empecemos por principal, porque ahí es donde 1 es. Así que tenemos un poco de int x 1. Tenemos algunos y que es igual a 2. Y luego tenemos algún intercambio eso va a tomar esos. Y vamos a ver lo que tenemos aquí. Y en nuestro table-- oh chico. ¿Cómo voy a hacer esto? Voy a sacar mi mesa aquí. Apenas por lo que es allí. Apenas por lo que es. 1, 2, 3, 4, 5, 6, 7. Y ellos nos dan que 1 es 1, y 1 2. Enfriar. Impresionante. Así que 3. Y hay [? A 1.?] Bien. Y a continuación, la dirección de x es 0x123. E Y es Ox127. Enfriar. Bien. Quiero que los chicos trabaja en este para el trabajo justo como-- en él con las personas que te rodean. Me hubiera gustado haber dicho que mientras yo estaba sentado arriba. Trabajar en él. Trate de trabajar en él por vosotros mismos por un par de minutos, y luego voy a trabajar en él con usted. Debido a que la única manera de que estés realmente va a aprender es haciéndolo usted mismo. No se preocupe. Buena suerte. Bien, ¿por qué no hacemos que poco a poco comenzar a trabajar a través de este. Así que todo el mundo recibe después de la línea uno, x es 1. Después de la línea dos, x y y son 1 y 2, ¿verdad? Enfriar. Así que la línea tres es donde las cosas ponerse interesante, por supuesto. Así que lo que hemos hecho aquí es que ahora tenemos intercambiado. Decimos que X e Y tienen esos puntos, o que tienen la dirección de x e y, ¿verdad? Así que en este caso, tres, ¿cuál es el valor de una? una había sido aprobada en, se le ha dado el valor de la dirección de x, ¿verdad? AUDIENCIA: 1? ALLISON BUCHHOLTZ-AU: Así que añadimos a la x? ¿Cuál es la dirección de x? AUDIENCIA: 0x123. ALLISON BUCHHOLTZ-AU: Exactamente. Pero lo que es una realidad que apunta a? Si tuviéramos que eliminar la referencia a, ¿qué valor tendría que darnos. AUDIENCIA: 1. ALLISON BUCHHOLTZ-AU: sería darnos 1, porque lo que que estamos diciendo es ir a este dirección, nos dice cuál es el valor. Entonces, ¿qué sería de b? AUDIENCIA: 0x127. ALLISON BUCHHOLTZ-AU: Exactamente. Así que es la dirección de y. Y entonces, ¿qué [? eliminar la referencia? ?] AUDIENCIA: 2. ALLISON BUCHHOLTZ-AU: OK, así que ahora cuatro. Dijimos a es equal-- bien ahora que hemos hecho int temp es igual a la estrella de una. Entonces, ¿qué cambia? Sólo hay una cosa eso cambia aquí. Qué es? AUDIENCIA: temp. ALLISON BUCHHOLTZ-AU: La temp. Así que podemos volver a escribir todo esto. Una buena estrategia para estos se acaba de averiguar qué cambios, porque más a menudo sólo hay una cosa que es va a cambiar en un momento dado, ¿de acuerdo? Así hemos asignado temp. Ahora nuestro próximo punto, cinco, nos han hecho una estrella igual a protagonizar b. Entonces, ¿qué cambia ahora? AUDIENCIA: Estrella a. ALLISON BUCHHOLTZ-AU: Estrella a, so todo lo demás se mantiene igual. ¿Y qué significa protagonizar un igual? AUDIENCIA: 2. ALLISON BUCHHOLTZ-AU: 2. Precioso. Impresionante. Aceptar y, a continuación, ahora tenemos iniciar b es igual a temp. Así que lo único que cambia es la estrella b. Todo lo demás se mantiene igual. ¿Y cuál es la estrella b igual a ahora? Y que haya completado la tabla. Porque ahora, al final, si decimos x ey, sabemos que en este point-- sabemos que cuando nos cambiado protagonizar una de 2, lo que hicieron es que dijo que estaba bien, en abordar 0x123 aquí, cambiarlo. Ahora bien, esto era 2. Y a continuación, en este punto, decíamos así, diríjase a la estrella b. Así que ir a la dirección en 0x127 y lo convierten en un 1. Así que ahora en el final cuando en realidad nos volvemos para main, en realidad tenemos que x es igual a 2 e y es igual a 1. Todo el mundo bien con eso? Aceptar, fresco. Número 9. Ustedes trabajar en esto. Voy a establecer un consejo por lo que podemos sacar a través de él. Va a ser una explosión. Las grandes mesas pueden ser realmente da miedo, lo sé. Pero si sólo los toma en una fila un tiempo, ellos dan mucho menos miedo. Bien. Así que ya sabes que esto tendrá pasado por principal primero, ¿no? Inicializa x e y y luego trata de cambiarlos. Así que incluso está por encima de intercambio, de manera real, Goes es que estamos pasando por principal, y entonces está llamando hasta cambiar, ¿de acuerdo? Así que todo el mundo sabe eso. Así que ¿cuál chicos quieren empezar? ¿Hay alguien realmente seguro sobre uno de estos? O incluso parcialmente seguro? ¿Por qué no empezamos con x? ¿Qué pensamos x es? AUDIENCIA: 1. ALLISON BUCHHOLTZ-AU: 1. Así que ¿por qué es 2. Y eso es porque el gran distinción aquí es que sólo somos pasando copias, ¿no? No estamos pasando por referencia. Así que incluso al final de este programa x e y han permanecido igual, porque son sólo copias en la función de intercambio. Ellos en realidad no cambian, ¿no? Entonces, ¿qué acerca de a, b, y la temperatura? AUDIENCIA: A es B. ALLISON BUCHHOLTZ-AU: a es b. Así que en este caso, una era x, que es 1, ¿no? Así que aquí, vamos a caminar a través de él. Así que al principio, una y b son 1 y 2 e indefinido. Así que originalmente temp consigue asignado a una, por lo que la temperatura es 1. a es igual a b, por lo que tenemos 2, y b es igual a temp. Ahora tenemos 1. AUDIENCIA: En el que anterior intercambiadas ampersand x y signo y. ¿Qué significa eso exactamente? ALLISON BUCHHOLTZ-AU: Así que eso significa que estás pasando por referencia. Así que eso significa que eres en realidad que pasa en las direcciones de donde x e y se almacenan. AUDIENCIA: Pero usted no es el canje de la dirección. ALLISON BUCHHOLTZ-AU: Usted no es intercambio de las direcciones. Usted está intercambiando lo que hay dentro de ellos. Al igual que lo que está en esa dirección, y eso es por qué funciona. Versus en este programa aquí lo que estás haciendo es que estás creando copias. Así que tienes x e y que existen como sus propias variables aquí. Pero luego, cuando se pasa ellos en permuta, es como si está creando todo este otro conjunto. Así que nunca se es en realidad x e y conmovedoras. AUDIENCIA: Si signo x se lo que está en la dirección de x, ¿cuál sería la estrella x ser? ALLISON BUCHHOLTZ-AU: Ampersand x es lo que está en la dirección de x, entonces star-- bien, en este caso, x no es un puntero. AUDIENCIA: ¡Oh, OK. Por lo que sólo hace esto porque no es un puntero. ALLISON BUCHHOLTZ-AU: Derecho. Sólo se puede hacer de estrella algo que es un puntero. Tal vez usted podría hacer que a las cosas que no lo son, pero la compilación que hacen que las cosas locas que pasaría. Y yo no soy exactamente seguro de lo que iba a suceder. Siempre se puede tomar la dirección de algo, pero no se puede eliminar la referencia algo que no es un puntero. Si eso tiene sentido, eso es una buena distinción de tener. Así que no es tan malo, ¿verdad? Las mesas son de esperar conseguir un poco menos de miedo. Bien. ¡Ah, las divertidas. Así que ahora, a escribir su propio código. Así que voy a dejar que ustedes trabaja en esto durante unos cuatro minutos, y entonces podemos hablar acerca de maneras de acercarse a ella. No dude en hablar con la gente que te rodea. También esto es interesante. Es como una todas las niñas sección en este momento. Bastante emocionante. Excepto por Chang. Pero Chang no es realmente parte de la sección. Impresionante. Perfect. Así que le daré un par de consejos. En el caso donde se tiene más de un carácter, donde usted tiene algo más como 123 o 1000 algo, tiene que ser capaz de bucle y convertir a través de cada uno de aquellos. Así que hay un par maneras que usted puede hacer que, pero usted está definitivamente va a tener un bucle en algún lugar de allí para bucle a través de ellos, que es algo así como el sorteo con incluso si se llama a strlen, que es algo así como ¡oh tal vez usted desea utilizar la longitud de la cadena de alguna manera. Bien. Entonces, ¿qué piensan ustedes que podría ser una de las primeras cosas que queremos hacer? Hay un par de casos en aquí tenemos que tener en cuenta, ¿verdad? O tenemos algo que es nulo. ¿Qué tenemos? Casos. Null. Tenemos el caso de que tiene algo que no sea 09, ¿no? Así que vamos a decir que tiene letras. O tenemos el caso de que es válido. Tres casos para pensar. Así que ¿cuál piensa que podría ser la más fácil para cuidar de primera? AUDIENCIA: Nulo. ALLISON BUCHHOLTZ-AU: El caso es nulo. Entonces, ¿qué íbamos a hacer allí? AUDIENCIA: [inaudible]. ALLISON BUCHHOLTZ-AU: Sí. ¿Y qué es lo que quiero hacer? AUDIENCIA: Regresa 0. ALLISON BUCHHOLTZ-AU: Exactamente. Impresionante. Okay. Así que ahora el caso de que tenga letras y el caso de que es válido. De hecho, podemos cuidar esto dentro de un bucle, ¿de acuerdo? Así que una manera de hacerlo it-- lo que podría ser una forma simple de comprobar si es válida. Tendríamos que ir a través de cada letra y hacer qué? AUDIENCIA: Comprobar si es en-- ALLISON BUCHHOLTZ-AU: Derecho, se puede comprobar si es entre 0 y 9, ¿no? Y luego, en el caso que es válida, estamos va a terminar iteración a través de nuestra cadena de todos modos, ¿no? Entonces, ¿por qué no intentamos y combinarlas en una sola. Vamos a repetir a través de la cadena fuera, y como hemos hacer eso, vamos a primero hacer una verificación para ver si esa letra o si ese personaje es válida. Si es así, vamos a realizar la operación que tenemos que convertirlo. De lo contrario, regresará 0, ¿no? Así que antes de hacer eso, nos probablemente querrá alguna variable que podemos volver al final que va a ser nuestro valor real. Así que vamos a inicializar algún valor sea 0. Y así es como empezamos. Así que voy a deshacerse de este. Entonces, ¿cómo vamos a iterar a través de esta cadena. AUDIENCIA: bucle For. ALLISON BUCHHOLTZ-AU: Un bucle for. Entonces, ¿cuál es nuestra buscas? AUDIENCIA: i es 0. ALLISON BUCHHOLTZ-AU: Mm-hm. Y lo que estamos iterando hasta que? AUDIENCIA: longitud de str s. ALLISON BUCHHOLTZ-AU: OK, ahora recuerdo hay una mejor manera. [Inaudible]. AUDIENCIA: Sí, podemos hacer n es igual. ALLISON BUCHHOLTZ-AU: Exactamente. AUDIENCIA: i es menor que n. ALLISON BUCHHOLTZ-AU: ¿Y por qué querríamos hacer eso? ¿Te acuerdas de la razón? AUDIENCIA: Tenemos que volver a calcular la misma. ALLISON BUCHHOLTZ-AU: robaba de esta manera usted sólo tienen que calcular strlen una vez. Si lo hace i es menor que strlen s, eso es significa que recalcula la longitud de cada vez se ejecuta el bucle for, que no es un enorme costo de la energía, pero es mejor práctica para tratar de hacer cosas como que una vez. A menos que tal vez usted tiene una cadena loca eso está cambiando en cada iteración. Pero si se mantiene igual, la salvará. Bien. Y entonces yo plus plus. Impresionante. Estamos en nuestro camino. AUDIENCIA: ¿En serio rápidamente. En primer lugar, por lo que vamos a decir que acabamos de ¿He de menos de strlen de s, nos están calificando en el diseño en absoluto o sólo la corrección? Ellos no lo son. Estamos de calificaciones en la corrección para pruebas por lo que yo sé. No puedo hacer una en el pleno garantía, pero en su mayor parte, gran mayoría es correcto, porque estás bajo mucha restricción de tiempo. Diseño normalmente significa usted tiene tiempo para pensar sobre la elegancia de su situación. Aceptar, por lo que estamos iterando a través. Así que tenemos que revisar, ya sea a ver si este personaje es válida o si podemos realizar nuestro normal [? una para i?] función. Podemos preocuparse por lo que es decir en un segundo. Entonces, ¿por qué no nos take-- si alguien puede pensar acerca de una manera de comprobar que ver si esto es válido. Sabemos que va a ser si alguna condición, ¿no? Y recuerda que esto es en ASCII, así que ¿cómo podría vemos si no es 0,1, 2, 3, 4, 5, 6, 7, 8, o 9. AUDIENCIA: Si alfa. ALLISON BUCHHOLTZ-AU: Así que si lo haría alfa sólo háganos saber si se trata de una carta. Y si nos dan un símbolo, es todavía no del todo va a comprobar. Así que si usted tira de su ASCII mesa, sabemos que del 0 al 9 están en un segmento. Dime los números que corresponden a si es posible. AUDIENCIA: 40. ALLISON BUCHHOLTZ-AU: Así que el rango es como 40-- AUDIENCIA: Tal vez. 48 a 57. No estoy seguro. ALLISON BUCHHOLTZ-AU: de 40 a 57? AUDIENCIA: 48, creo. ALLISON BUCHHOLTZ-AU: 48 a 57. Así que sabemos que los ASCII symbols-- si el valor ASCII no es entre el 48 y el 57, no es válido, ¿no? Así que podríamos usar eso para nuestra ventaja posiblemente? ¿Cómo vamos a conseguir esta carta, en primer lugar? ¿Cómo estamos accediendo esto este personaje? AUDIENCIA: s i soporte. ALLISON BUCHHOLTZ-AU: Mm-hm. Porque podemos pensar en cadenas como arrays, recuerdan. Entonces, ¿qué es lo que queremos decir? Queremos decir si esta es-- te voy a dar una pista. Se trata de un menor que. ¿Qué crees que debe ser inferior a? AUDIENCIA: 57? ALLISON BUCHHOLTZ-AU: 47, ¿no? Pero también representa que a medida que un 0 en un solo [? los radios?], porque eso es el carácter 0. También puede poner 47. Tener la tabla ASCII, como que se ve, es sólo algo usted debe tener en su hoja de examen. Así que si este es el caso, si es una menos de 0-- y no necesariamente. No es más que cualquiera de los dos va a ser inferior o superior a 9. Así que usted puede llenar esta última para mí? Así que o s de i es lo que, Rhea? AUDIENCIA: Mayor que 9. ALLISON BUCHHOLTZ-AU: No. ¿Eso tiene sentido para todo el mundo, ¿cómo llegamos allí? Estos problemas, que son como una vez que ver las soluciones, es como oh, OK. Y es por eso que la práctica le ayudará. OK, así que volvemos 0. Precioso. Bien. De lo contrario, ¿qué queremos hacer? Esta es la parte interesante donde es un poco más como las matemáticas frente a CS en mi opinión. ¿Alguien tiene una idea de cómo podemos hacer esto? Así que lo importante se dan cuenta es el primer carácter estamos tomando va a ser el dígito de orden más alto, ¿no? Así que si estamos viendo la conversión 123, la primera vez iteramos va a ser 1, pero necesitamos que para ser 100 para el final, ¿verdad? Así que una cosa que puedes hacer es que con cada dígito subsiguiente usted toma, usted multiplica su valor por 10, de modo que para el momento en que llegue a la final, todo ha sido desplazado hacia arriba, a la derecha? Así que la primera vez que se ejecuta él, usted tiene 1 como su valor. Segunda vez que se ejecuta, usted multiplicar su valor por 10. Se actualizará de modo que ahora es 10, y añadir en su siguiente valor. Y entonces usted multiplica eso por 10 y añadir en su siguiente valor. Y es por eso que dicen que esto es mucho más parecido a las pruebas un algoritmo matemático frente CS, pero estoy divagando. Yo no escribo las pruebas. Así que una cosa que podemos hacer es que dicen que es igual a 10 veces el valor. Así que esto va a cambiar su dígito una vez cada vez. Y luego sólo queremos agregar. Queremos añadir en lo acabamos de recibir, ¿no? Entonces, ¿cómo nos convertimos en realidad nuestra De caracteres ASCII en el número que representa? Así que sabemos que 0 es igual a 47, ¿no? Así que si 0 es 47, lo que tendríamos que hacer para que para hacer realidad sea un int de 0? AUDIENCIA: Es 48. ALLISON BUCHHOLTZ-AU: 48? Lo siento. Nos resta 48, ¿no? Recuerde matemáticas ASCII? Podemos tratarlos sólo como números normales. Si usted los trata como números, se convierten en los números de eficacia. Así que si tenemos s de i, que vamos a decir en este caso es igual a 0. Así s de i en este caso sería el ASCII-- el int ASCII para que sería 47. Así que podríamos subtract-- o 48. Usted podría hacer eso, es una manera. ¿Alguien sabe de un mejor manera que podríamos hacer 48? Acabamos de decir 0 es-- entrar en el ASCII que podía hacer cita 0. Así lo hace tipo de hacer sentido de cómo funciona esto? AUDIENCIA: En este punto, es el valor 0 porque incluso si lo multiplicas por 10, estás empezando con cero, por lo que en caso de que se enciende? ALLISON BUCHHOLTZ-AU: Así que en este caso, querer multiplicar antes de agregar, porque en este caso, sí, lo haría todavía ser: mi puntero no se encuentra. El valor en este caso, la primera tiempo corremos será cero. Así que sólo estás añadiendo en ese primer dígito. Lo que es importante es que la próxima vez iterar, que desea desplazar hacia arriba antes de agregar su siguiente dígito en. ¿Eso aclarar para usted? Okay. A veces vas a conseguir más cosas extrañas Mathy. Si tuviera más de esto, usted todavía va a get-- vas a hacer muy bien. Crédito parcial es una muy gran cosa sobre concursos CS50. Así que escribir lo que sabes. Si tienes todo a excepción de aquí, eres todavía va a hacer muy bien el problema. Debido a que usted está demostrando, OK, yo sé casi. Sé que tengo que recorrer. Yo sé lo que tengo que comprobar. Acabo de hacer no bastante obtener la forma de convertirlo. Vas a estar bien. Sí, usted va a perder un par de puntos, pero usted todavía va a conseguir un buen número de puntos para algo como que si estás faltan estas dos líneas. Me gustaría ser como bien, esta persona sabe lo que están haciendo. Matemáticas es difícil. Así que yo diría que estaría bien. Aceptar, por lo que los chicos listos para trate de strlen con punteros ahora que ustedes son maestros puntero? Así que voy a dejar que ustedes chicos trabajan en que para un poco. Si alguien necesita un repaso. Así que usted quiere utilizar puntero aritmética, y luego, si s es nulo, su aplicación debe devolver 0. Cosas como esta que te hacen muy feliz de simplemente llamar strlen al final del día. Creo que éste podría ser un poco más fácil que el anterior, que es bueno. Te voy a dar un minuto más chicos, y luego vamos a trabajar a través de él. Y luego tenemos que ir a los interruptores. Aceptar, chicos listos? Tal vez un poco. Así que yo le he dado su dos opciones, ¿no? Cualquiera de comprobar nula y devolver 0 si que es, o realmente calcular la longitud. Entonces, ¿quién quiere escribir comprobar nula? No te lo pienses. AUDIENCIA: Si paréntesis s es igual a es igual a nula rentabilidad 0. ALLISON BUCHHOLTZ-AU: Lovely. Me encanta cuando la mitad de su problema es simplemente la comprobación de nulos. Sé que con ustedes último semana yo estaba como cheque por nulo literalmente cada vez. Aceptar, así que-- AUDIENCIA: Si return 0 es sólo una línea, Qué necesidad tenemos ya el soporte rizado? ALLISON BUCHHOLTZ-AU: Usted no lo hace técnicamente necesitarlos, siempre eres consistente. Es una buena práctica sólo a adquirir el hábito de la utilización de llaves, pero técnicamente no. Usted no los necesita para una línea. Nosotros sólo tendemos a recomendar para las personas que empiezan a programar. Así que ahora lo que podríamos querer hacer aquí? Así que ahora que sabemos que nuestra cadena es válida. Queremos mantener cálculo de la longitud. ¿Cuál es, probablemente, la primera Lo que queremos hacer? AUDIENCIA: Crear una int que es la longitud. ALLISON BUCHHOLTZ-AU: Exactamente. AUDIENCIA: Y queremos configurarlo para que? ALLISON BUCHHOLTZ-AU: 0. Perfect. Bien. Ahora lo que quiero hacer? Esto es realmente la mayor parte de ella. No te lo pienses. AUDIENCIA: ¿Así que probablemente lo hace un bucle for. Y luego, ya cuando se llama s eres obtener la dirección de la primera hora, usted comenzaría con i es igual a 0. Y luego, siempre y cuando x además de que no está de vuelta slash 0. ALLISON BUCHHOLTZ-AU: El terminador nulo. AUDIENCIA: El terminador nulo. A continuación, se agrega uno de longitud. ALLISON BUCHHOLTZ-AU: Sí. Aceptar, por lo que permite convertir esa en código muy concreta. Pero esa es la idea perfecta. Eso es exactamente lo que estamos haciendo. Vamos a ser la iteración a través con el puntero. Así que lo que queremos hacer es lugar de un int aquí, porque somos no se refiere a una red IT. Nos referimos a el inicio de una cadena, que empezar a ser un poco de dirección, ¿verdad? Por eso queremos un puntero. Así que vamos a tener un poco de estrella char, porque corresponde a nuestros s, ¿no? Así que este es un momento que estamos inicializar al inicio de la cadena, ¿de acuerdo? Así que vamos a llamarlo i. Si es el principio de la cadena, ¿qué va a ser asignado a? No 0. Nosotros queremos que sea la comienzo de nuestra cadena. Lo que representa el inicio de nuestra cadena que nos fue dado? AUDIENCIA: Justo s. ALLISON BUCHHOLTZ-AU: s. Así que esto crea un nuevo puntero que representa el inicio de nuestra cadena, ¿de acuerdo? Otra forma de pensar de ella es como aquí está nuestra matriz. Esa es nuestra cadena, s. Así que digamos que este es el primer lugar, y esto es 0x4. 04. Esta es nuestra s, que sostiene que la dirección. Y acabamos de crear otra llamada i que sólo se refiere a la misma cosa. Así que los dos están simplemente apuntando al inicio de nuestra cadena. Esto es sólo una representación gráfica. Así que ahora lo que queremos hacer es que queremos repetir nuestra condición de iteración a través de nuestra cadena. Ahora ir de compras. Tengo que ir de compras, chicos. Es que queremos mantener la actualización hasta alcanzamos el terminador nulo, ¿no? Entonces, ¿qué podría que parece? ¿Queremos i, o queremos estrella i es la pregunta? ¿Es el terminador nulo una dirección o algo situado en una dirección? Situado en una dirección, ¿no? Así que tenemos que eliminar la referencia de lo que es aquí, porque esto es sólo un poco de dirección. Para conseguir realmente al inicio tenemos que eliminar la referencia de este por lo que en realidad obtenemos lo que hay en este primer lugar. Así que si lo hacemos Star I, lo que No queremos que la igualdad? AUDIENCIA: Volver barra? ALLISON BUCHHOLTZ-AU: No. ¿Eso tiene sentido para todo el mundo? Tenemos que entrar en nuestra cadena y asegurarse de que no es el final. Y entonces podemos simplemente actualizar así. Actualización normal. Así que, mientras estos son Met, ¿qué es lo que tenemos que hacer? AUDIENCIA: Longitud plus plus. ALLISON BUCHHOLTZ-AU: Mm-hm. Y luego, después del bucle for termina, ¿qué es lo que queremos volver? AUDIENCIA: Longitud? ALLISON BUCHHOLTZ-AU: Longitud. Hay que ir. Obviamente la carne de éste es la comprensión de este bucle. ¿Todo el mundo obtener la forma que trabajaron? Estoy feliz de ir sobre ella de nuevo. AUDIENCIA: La segunda parte, por lo que la estrella i allí, esa es la dirección de la primero-- ALLISON BUCHHOLTZ-AU: No es la dirección. Es lo que está en. AUDIENCIA: Eso es en realidad en ese país. ALLISON BUCHHOLTZ-AU: Eso es lo que es en realidad en ese país. Así que esto es dejar que diciendo-- me hago esta mejor. Así que esto es 0x04, y yo sólo voy para decir que voy a hacer esto mi nombre. Okay. Sí, sé que tengo opinión concurso de esta noche. Un montón de opinión Quiz. Así que digamos que esta cadena es mi nombre, Allison. Poco desordenado, pero está ahí. Y s representa la ubicación de donde comienza la cadena, así que voy a hacer esto real-- esta es la dirección de una, donde comienza la cadena, ¿no? Así que lo que hacemos aquí es que queremos utilizar punteros para recorrer. Así que creamos algún puntero, i, que también es igual a la de inicio de la cadena. Y en cada punto, queremos continuar pasando por la matriz aquí hasta que nos golpeamos el terminador nulo. Así que siempre queremos comprobar qué es en cada una de estas direcciones. Por lo tanto, eliminar la referencia i, de manera que la primera vez que lo hacemos nosotros decir, OK, lo que está en la dirección 0x04? Es un a. Bien, estamos bien. Incremento de longitud. Pasar a la siguiente. Así que yo-- recordar punteros aumento por el tamaño de lo que están señalando. Así pues, en este caso, ya que es un char, que va a actualizar a una. Así que ahora vamos a mirar a 5, lo que significa que va por aquí. Por lo que dice bien, ir a 0x05. ¿Qué hay ahí? Es una l. Y va a seguir haciendo que hasta que llega a éste. Y dice bien, lo que está en sea ​​cual sea la dirección que es esto? El terminador nulo, en Aceptar. Salida. Y justo volver longitud. Porque usted necesita lo que en realidad es en esa dirección, no la dirección de sí mismo. Hay muy pocos lugares donde que realmente necesita la dirección. La mayoría de las veces cuando está utilizando la y es cuando usted es el primer la asignación de un puntero o cuando estás pasando en otra función. Aceptar, todos bien allí? Tipo de? Okay. Así que parece que hemos tiene alrededor de 12 minutos para el final, así que vamos a ir a tal vez nuestro último problema, y luego hay alguna conceptos que han surgido mientras tanto podemos ir rápidamente sobre eso. Así que cambiar de marcha es la última problema aquí, cambiar estados. Así que su trabajo es volver a escribir este de modo que se comporta de la misma pero no utiliza los interruptores. Manos tiza. Así que cualquier pregunta sobre este fuera el bate? Ninguno? Okay. ¿Todo el mundo entiende que si el caso no tiene nada después de ella, que significa que debe siga el siguiente paso? Así que el caso 1 y 2 en este caso hacer exactamente lo mismo. Algunas veces un momento de confusión. Bien. Alguien tiene alguna idea? ¿Sí? AUDIENCIA: Así que usted puede sólo lo hacen si las declaraciones. ALLISON BUCHHOLTZ-AU: Mm-hm. ¿Cuál es nuestra primera? AUDIENCIA: Si n es igual es igual a 1, y las 2 líneas para o n es igual es igual a 2, luego la letra pequeña. Y a continuación, se puede hacer otra cosa si? O puedes simplemente hacer un si? ALLISON BUCHHOLTZ-AU: Usted puede hacer otra cosa si? AUDIENCIA: ¿Le importa si lo haces si? ALLISON BUCHHOLTZ-AU: Por lo que hace. Hace anyone-- así, obtendrá el mismo resultado si se utiliza sólo pasaría frente si utiliza IFS demás. Pueden ustedes pensar en la razón por qué es posible que desee utilizar una cosa si frente a una gran cantidad de IFS? Tiene que con eficiencia. ¿Sí? AUDIENCIA: Se comprobaría todos los ifs cada vez. ALLISON BUCHHOLTZ-AU: Así que incluso si golpeó esta primera, que iría en cheque cada otro. Así que usted quiere utilizar if-else IFS en casos donde sólo uno de ellos nunca se aplicará. Así que la exclusión mutua es lo que tendemos a decir. Si usted tiene un montón de síes, significa que tal vez más de uno de ellos asuntos, y tal vez más de uno de ellos puede ser verdad. Y desea tanto de ellos para ejecutar si son ciertas. Si sólo desea uno de ellos para trabajar en estos casos mutuamente excluyentes, desea utilizar otro si, porque todo tiene que ver con la eficiencia. Su código es simplemente mejor diseñado si se adhiere a esta práctica. Así que en este caso vamos a tener una persona si. Y esto sería? AUDIENCIA: n es igual es igual a 3. ALLISON BUCHHOLTZ-AU: Perfecto. Medio de impresión. Y luego, en nuestra última caso, ¿qué tenemos? Otras ventas o bien si? AUDIENCIA: Else. ALLISON BUCHHOLTZ-AU: ¿Tenemos want-- Quiere más si ya tenemos casos concretos. No es una especie de cajón de sastre. Si usted tenía un defecto en un switch-- recordar en interruptores que puede tener el caso, y entonces usted tiene por defecto. Si usted tenía un defecto, que es una especie de su estado de cuenta más allí. Pero si sólo tiene casos, que significa que usted necesita para comprobar si se trata de cada uno de aquellos. Así, en este caso, sería el 4 o 5. Queremos una huella. Es grande. Y ahí lo tienes. Y eso sería su programa. Así que en este caso si tenía un defecto algo, tendríamos una más en lo que quería que hiciéramos. Así que es una buena distinción a saber, de comprender. ¿Eso ayuda con interruptores para usted? Perfect. Bien. Tenemos cerca de ocho minutos para el final. ¿Ustedes tienen alguna otros conceptos de alto nivel? Preguntas en general? ¿Sí? AUDIENCIA: Tuve una pregunta acerca de uno de ellos eso fue el azar generador de números en concurso cero. ALLISON BUCHHOLTZ-AU: Oh, eso. Ese es otro donde es más matemática no sea: sí. La solución a que-- Yo incluso cuando Yo lo veo, yo soy como lo que es esto. AUDIENCIA: Era el número 7. ALLISON BUCHHOLTZ-AU: Es extraño, en mi opinión. Así que básicamente usted quiere utilizar drand48, que le dará un poco de número entre 0 y 1. Y desea utilizarlo de manera que de alguna manera obtener A-- y es mucho más de un problema de matemáticas para mí que creo que un problema CS. La forma en que lo haces y it-- a veces sólo será así. Una vez más, estos son los los casos en que es una especie de como escribir lo que puede y de crédito parcial. Así que si queremos un cambio, sabemos que estamos va a utilizar drand48 de alguna manera, ¿no? Así que ¿por qué no acaba de anotar que hacia abajo. Estamos utilizando de alguna manera. La forma que tienen ustedes lo usa es como esto, que voy a tratar de explicar. Así que básicamente lo que sucede aquí es porque es entre 0 y 1, lo que estás haciendo es que estás multiplicando por-- esto es en gran medida una cuestión de matemáticas. Simplemente completa exención de responsabilidad, esto es completamente una cuestión de matemáticas. Lo que estás haciendo es a causa de 0 y 1 y quiero que sea dentro de este rango, en realidad averiguar qué tan grande el rango es, y luego que, básicamente, la escala para arriba, que es lo que esto está haciendo. b menos una le da ese rango, el diferencia entre esos números. Usted puede multiplicar entre 0 y 1, y luego la adición de un solo significa que el escalado hacia arriba de modo que sea entre a y b, que no me gustó de verdad este problema. Como he dicho, este cuestionario se entiende que abarca las personas que son menos cómodos, en algún punto intermedio, y más cómodo. Así que si lo hicieron de manera que se trataba de algo que todo el mundo en el menor cómodo lugar conseguiría, tendríamos demasiados gente anotando perfecciona, y el más cómodo sería aburrido. Así que siempre tienen estos tipo de preguntas desafío para la mente que están destinados a ser un poco más difícil que tome un poco de pensamiento creativo. Cuando usted los ve, no demasiado perplejo. Definitivamente, me gustaría decir flip a través de su concurso en primer lugar. Frente a los problemas que usted sabe que puede, porque no sirve de nada quedarse atascado en un problema cuando hay tres o de cuatro o cinco en la página después de que usted puede hacer fácilmente. AUDIENCIA: ¿Por qué es exactamente lo que se multiplica por el rango? ALLISON BUCHHOLTZ-AU: se multiplica el rango que usted sabes-- es como la cantidad después de un Quieres? Así que usted puede pensar, porque devuelve un número entre 0 y 1, se puede pensar en él como un porcentaje. Así que es básicamente diciendo que si tenemos nuestra línea número aquí, una es aquí, y b es aquí. Eres como la cantidad de un pasado es? Es todo lo que estamos haciendo. Así que usted está pidiendo el porcentaje de este rango, el cual es lo que te está dando. Y entonces, básicamente, sólo escalar hacia arriba mediante la adición de a. Es un desafío para la mente matemática. Si había algún consejo de última hora, yo diría flip a través de las preguntas, averiguar cuáles usted Sé que como, oh yo me encargo. Casi seguramente van a ser preguntas que usted no sabrá o que usted va a tener tiempo para, por lo golpeó sus fortalezas, ¿de acuerdo? Ustedes van a excelente. Hay una gran cantidad de preguntas por una razón, para que usted tenga tiempo para tipo de tener la oportunidad para demostrar lo que usted es realmente bueno. Así que está bien si estás no es bueno en todo. Jugar a tus fortalezas. ¿Sí? AUDIENCIA: Así es este va a devolver algo que ha truncado? Sí, lo hará, porque Drand rendimientos entre 0 y 1. Se volverá un int, porque va a truncar cuando añadimos una o multiplicamos por ella. Enfriar. Para cualquier duda de última hora? Ustedes van a hacer muy bien. Usted va a ser fabuloso. E incluso si no es así, habrá ser dulces aquí la próxima semana. Y yo te amaré. Te amo chicos independientemente. Muy bien, todo el mundo, la buena suerte. Tienen un gran tiempo. Vas a estar bien. ¿Y sabes qué? En dos días se va haber terminado, mientras que yo tener dos exámenes parciales el jueves, por lo que al menos se hará ustedes. Muy bien, voy a ver ustedes la próxima semana.