JASON HIRSCHHORN: Bienvenido, todo el mundo, hasta la semana 10. Esta es una semana emocionante porque mañana es la prueba 1, que vamos a conseguir a en un segundo. Hoy en la sección, vamos a ir más de algunos recursos para la prueba, y a continuación, voy a responder a todas y cada una preguntas que ustedes tienen. Y finalmente terminaremos con algunos problemas de práctica. Podemos pasar toda la sección responder a las preguntas. Podemos pasar toda la sección pasando por los problemas de la práctica. No hacemos más que expandirse para llenar el el espacio y el tiempo que tenemos. Así que puse esta lista cada semana, pero es particularmente importante esta semana. Para el estudio, si no lo ha comenzado ya, oh chico. Pero es de esperar que haya comenzado ya. Y usted va a través de los materiales y los recursos listados aquí. Yo recomendaría altamente un número de estos. En particular, los apuntes de clase son muy importante y útil. El study.cs50.net proporciona una gran introducción a una gran cantidad de los temas que cubren. También tiene un gran practicar problemas. Y después, Google es genial, también. No sé lo que tendrá que utilizar para. Pero usar Google, también. Llegar a mí si usted tiene cualquiera preguntas, comentarios o inquietudes. Mirar por encima de la sesión de revisión diapositivas de la noche anterior. O, si usted tiene algún tiempo, ver el vídeo. Proporcionan una gran cantidad de útiles material e información. Y tratar de cubrir si no todas, muchas de los temas que hemos cubierto y que usted podría ver en el cuestionario. Hablando de la prueba, que será mañana. Es 75 minutos. Muchos de ustedes lo están tomando en 1 en punto, y algunos de ustedes son llevándolo a las 5:30. Por el momento usted está tomando y la ubicación que está tomando, asegúrese compruebas el documento en la página principal CS50.net. Recuerde que usted puede conseguir uno de 8 1/2 en un 11 por hoja para llevar con usted. A menudo, la gente no utiliza este hoja en absoluto durante la prueba. Pero, en realidad, es un increíblemente herramienta de estudio útil. Así armando esa hoja se lo Pasé probablemente tres o cuatro horas haciendo cuando estaba estudiando para CS50, y que era sin duda el más útil manera de que pudiera estudiar para el examen. Así que incluso si usted tiene alguna otra de las personas guías de estudio a la vista y utilizar como referencias, le recomiendo hacer su propia guía de estudio, poniendo esas cosas juntas. Eso realmente ayuda a aprender todo el material. Por último, pero no menos importante en esta sección, después de la prueba de mañana hay una más conferencias - el próximo lunes. Hay una sección más, no el próximo Martes antes de Acción de Gracias, pero el Martes después de eso. Nos reuniremos juntos para una final adiós partido y también hacer un poco de fresco cosas para conseguir que ustedes se entusiasmen con la otros estudios en ciencias de la computación. Hay un proyecto más, uno más justo, uno más hackathon. Estamos llegando al final de CS50, que es emocionante - sino también, si usted es como la yo, un poco triste. Antes de pasar, ¿alguien tiene alguna pregunta acerca de lo que que hemos cubierto hasta ahora? OK, bueno vamos a repasar algunas de las preguntas que tiene para la prueba y temas podríamos cubrir. Así que esta es una lista que he creado. No es de ninguna manera exhaustiva, pero esperemos que refrescar la memoria si tener algunas preguntas acerca de cualquiera de estos temas, o si tiene preguntas sobre problemas de la práctica de pruebas en los últimos años. Tuve un par de preguntas que fueron envié un correo electrónico a mí, pero quiero mantener a raya en los que por un segundo. ¿Alguien tiene alguna pregunta, problemas que no entendían, respuestas que no comprendían para que podamos empezar? Avi. AUDIENCIA: ¿Puedes ir más DOM y Ajax realmente rápido? Al igual que, lo que necesita saber o deberían entender acerca de ellos? JASON HIRSCHHORN: Voy a contestar en general esta cuestión de, ¿qué hago yo necesita saber acerca de determinado tema x? Porque tengo la sensación de que muchos de ustedes me van a pedir que, o están curiosidad sobre eso. Así que en la medida en que el tema era cubierto de conferencia, o sección, o en study.cs50.net, un conjunto de problemas, que debe estar familiarizado con él. Así que usted no necesita saber todos los tipos de la etiqueta que está disponible en HTML o cada tipo de atributo o propiedad usted puede dar algo en CSS. Pero si lo has visto en un ejemplo de conferencia, si lo viste en un problema conjunto, probablemente debería estar familiarizado con él, sobre todo las cosas que viste en conferencia. Así que hemos discutido el documento modelo de objetos un poco en sección, más aún en conferencia. Usted debe estar familiarizado con que gran parte de ella. Y usted debe estar familiarizado con Ajax en la misma medida. Nunca vimos increíblemente avanzado o ejemplos complicados de Ajax, por lo usted no va a pedir hacer algo increíblemente complicado. Pero se le puede pedir, ¿cómo puedo hacer una llamada Ajax usando jQuery? Que es algo que has visto un número de veces antes, tanto en la Sesión de Revisión y en la conferencia, y es sólo de dos líneas españolas de código. Así que eso es algo que debiera estar familiarizado. Pero una vez más, para todos estos temas, si usted lo ha visto antes, es un juego justo. Y podríamos pedirle que - obviamente, estamos vamos a pedir que te lo no han visto antes. Codificación de algo que no tiene visto antes. Lo cual no quiere decir que usted no tiene visto las herramientas para resolver ese problema antes. Usted ha visto esas herramientas. Por ejemplo, en la prueba 1, si que necesita para codificar strlen. No hemos codificado strlen antes. Pero usted sabe cómo utilizar un bucle for, usted sabe cómo utilizar si las condiciones. Usted sabe cómo escribir variables en C Va a ser la misma cosa aquí. Usted no va a pedir que haga nada que no haya visto antes, pero es posible que se le pida que, al igual que, puesto algo juntos de una manera novedosa, o resolver un tipo diferente de problema. Lo sentimos, pero eso no era específica para su pregunta, pero yo no puedo responder sobre cada tema lo que hacer o no necesita saber. Pero también, lo siento, lo último en eso. Hemos pasado mucho más tiempo en listas de enlaces que tenemos en el Ajax. No utilizó Ajax en un conjunto de problemas. Una de las características centrales de ese problema de ajuste que haya listas de enlaces. Y nos pasamos un montón de tiempo en la conferencia y la sección de usarlo. Así, las probabilidades son lista de enlaces se van a plantear más a menudo en el concurso de Ajax voluntad. O las preguntas que tienen que ver con el vínculo lista tendrá un valor de más puntos. Así que sin duda puede centrarse y estrecho en las cosas que son más probable subir porque tenemos pasado más tiempo en ellos. Aceptar cualquier otra pregunta? Sí. AUDIENCIA: ¿Podemos ir sobre el uso de funciones anónimas en JavaScript? Soy un son poco confundido acerca de eso. JASON HIRSCHHORN: Así que en JavaScript - Estoy tratando de pensar cómo me podría escribir esto en - así que vamos a realmente abren este código. Así que este es el código que hicimos la semana pasada. Y usted ha visto esto antes si estaban aquí en la sección de la semana pasada. ¿O has visto algo similar a esto antes. Pero se puede ver en esta primera línea. Esta es la forma de empezar - todo el mundo ha visto esto antes. Si usted quiere poner algo de código JavaScript, lo pones dentro de este, en el supuesto está usando jQuery. Esto es decir, no hacer nada hasta carga del documento. Y luego, Curt, se ve aquí estamos haciendo algo como esto - función paren abiertas, cerradas paren. Así que no estamos dando este funcionar un nombre. No vamos a definir esta función se supone que ejecutar y luego llamar un montón de veces. Sólo estamos diciendo este documento ya toma una función. Un par de cosas que hacer. Y no queremos pasar el tiempo dándole un nombre o guardarlo para perpetuidad. Sólo queremos hacer algunas cosas. Así que una función anónima especie de que sirve propósito. Cuando usted no va a usar algo una y otra vez, así que no es necesario para darle un nombre - que acaba de que desee utilizar una vez - usted acaba de decir que la función, por ejemplo, en este caso, y no eres más que la definición de algo que usted podría dar un nombre. Al igual, podríamos tirar de esta función fuera y darle un nombre y luego llamar a ese funcionar aquí. Pero nosotros no necesitamos porque nosotros no hacemos quieren perder el tiempo dándole un nombre o perdiendo algo en nuestro espacio de nombre. Y verás que mucho. Por ejemplo, vemos que mucho en este código, pero usted ha visto esto antes, cuando hacer clic en algo - ejecutar este tipo de código. Podríamos definir el código que queremos a correr cuando hacemos clic, en este caso, este ID, como una función separada y luego ejecutar esa función. Pero en este caso, sólo estamos saltando ese paso y llevarlos a aquí y sólo para definir todo que queremos que suceda y no darle un nombre. Eso todavía podría no tener respondido a su pregunta. AUDIENCIA: No, lo hace. Quiero decir, supongo que simplemente no se sabe muy entiendo por qué sería una funcionar en absoluto, sin embargo. Porque en realidad no es la que llama. En realidad, no tiene nombre. JASON HIRSCHHORN: Es una función en el sentido de que es una serie de pasos, igual que lo puso en una función. Y entonces es por eso que llamamos es función anónima. No vamos a darle un nombre. No vamos a perder intentando darle un nombre, pero que pudimos. Las funciones anónimas, que siempre se puede dar un nombre. Así, por ejemplo, el código aquí, podríamos poner este código dentro de un función y luego llamar esta función aquí. En lugar de ello, decimos, no vamos a molestar con eso. Sólo vamos a escribir todo aquí. Es como si a veces, cuando estás escribiendo cuatro bucle en C - chicos han visto esto antes - tal vez usted está iteración a través de un forloop en i es igual a 0. I es menos de strlen. ¿O usted va a través de algunos matriz, puede guardar array índice i en alguna variable. Y utiliza esa variable. Así que no es necesario volver a escribir array soporte de i una y otra y otra vez. Y eso es algo así como una variable ficticia. No está sirviendo mucho propósito que no sea Para que el código un poco más limpio y más fácil de leer. Función similar aquí. Justo hace un poco más fácil, pero funcionalmente no hay diferencia. ¿Responde esto a su pregunta? AUDIENCIA: Si. JASON HIRSCHHORN: OK .. Mario? AUDIENCIA: Ayer a menudo ponen función paréntesis evento. ¿Eso significa algo? ¿O es para cosas como que harían document.ready evento función. JASON HIRSCHHORN: Hemos visto esto, y de nuevo, estas son cosas pequeñas que Probablemente yo no quiero pasar demasiado tiempo en él. Porque a veces no quiero que la gente conseguir asustado que no tienen oído hablar de estas cosas tanto. Pero hablamos un poco acerca de controladores de eventos. Así que algo sucede, y luego esta función se ejecuta. Y entonces nosotros también queremos saber algunos detalles sobre lo que ocurrido en este caso. Así que piensen en conjunto de problemas 4. Esa es probablemente la forma más fácil de entender que en estallido. Había un poco de código - como un evento iba a pasar, pero evento puede significar muchas cosas. Si podría significar el ratón se hace clic, se podría significar golpear una tecla de flecha, et cetera, et cetera. Pero todo se guarda en esta genérica Lo llamó eventos. Y entonces podemos decir, es este evento esta cosa? ¿O es este evento esta cosa? O bien, ¿qué clase de pasado con ese evento? Así que por eso se crea esa variable ahí para salvar esa información adicional acerca de qué es exactamente lo que pasó esa usted va a querer utilizar en la función. Pero, de nuevo, eso es probablemente uno de los cosas menos importantes que ser Super familiarizado. Bien, ¿qué otras preguntas tienen las personas tenido, o bloques de tropiezo que han encontrado durante la revisión? Vamos a volver a esa lista. ¿Qué pasa durante exámenes de práctica, si la gente ha tomado las ya? ¿Cuáles fueron algunos de los problemas que disparado ustedes arriba? Sé que es un hecho de que el año pasado cuestionario fue muy duro. AUDIENCIA: ¿Puede explicar qué un ataque de inyección SQL es? JASON HIRSCHHORN: OK, muy bien. Así que hablamos de esto un poco. Hay una conferencia sobre la seguridad. Y de nuevo, como he mencionado antes, este es un aparte. Pero se le frustrado en el cuestionario cuando se lee un pequeño de dos puntos pregunta, y usted es como, cuando ¿alguna vez aprendiste eso? Todas esas cosas en esas conferencias que no pensabas que necesitabas sabe, o usted podría pasar por alto, porque que no tenían que ver con la conjunto de problemas, los que probablemente subir de nuevo en el concurso. Así que, cosas divertidas, fresco que acaba de David pensó que estaba diciendo para que usted pueda disfrutar, que te estaba diciendo para que usted pueda disfrutar y hacer que acaba de ser super entusiasmados por aprender todo lo que hay que aprender acerca de la informática. Esas cosas también vienen para arriba en pruebas. Por lo tanto, incluso estas pequeñas cosas que no lo hicieron se relacionan directamente con su problema establecer, como ustedes están familiarizados con de Cuestionario 0, probablemente van a plantear. Y este es un buen ejemplo de algo. Así que los ataques a la inyección de SQL es cuando se obtener alguna información del usuario y desea insertar en una tabla utilizando una inserción de SQL declaración, pero no desinfectar la entrada antes de tiempo. Así que, obviamente hemos visto Sentencias SQL. Voy a abrirme - vamos a ir - iremos a la revisión - Creo, que lo cubrió? Creo Samala hizo. Para que podamos llegar - AUDIENCIA: ¿Dónde encontraste esto? JASON HIRSCHHORN: Así que si vas a CS50.net, pruebas, y entonces se puede desplazarse una y obtener diapositivas de la sesión de revisión. Pero usted puede ver que esto es un buen ejemplo de un ataque de inyección SQL. Tomamos un poco de información del usuario y nos dan una cadena, y luego desee insertar esa cadena en una base de datos. Generalmente vamos a desinfectar que de entrada, lo que significa que hay algunos personajes que son peligrosos. Por ejemplo, en cadenas SQL, estas citas - comillas simples o dobles - significar algo. Significan termina esta cadena aquí. Y por lo que si el usuario le da un solo o una doble cita, que podría ser intentando hacer tropezar a su consulta de SQL y insertar algunas cosas malas en ella. Y si lo hacen, podrían ganar el control de su base de datos o hacer algún cosas que usted no quiere que hagan. Así que por eso cada vez que tomamos SQL consultas, que desinfectar la entrada antes de ponerla en la base de datos, que significa que escapan a los personajes. Hablaremos de eso en un segundo. Pero cuento largo, una inyección SQL ataque es si usted no hace eso - si usted no toma el cuidado de la entrada que le dieron antes de poner su base de datos, que pueden, como veis abajo aquí, ejecute una consulta que, de hecho - que ponen en su código aquí abajo y esta línea de selección aquí abajo seleccionará todo, desde la mesa sin importar de lo que se le da la contraseña. Porque usted tiene la o 1 es igual a 1. Así que es básicamente, cuento largo, una manera de hacerse cargo de la base de datos. La pregunta, entonces, para ustedes, es donde en p sets 7 hiciste desinfecte todas las entradas a las consultas SQL? ¿Dónde ocurrió ese paso? ¿Dónde se evita la inyección de SQL los ataques de los que sucede en p fije 7? Sí. AUDIENCIA: Cripta? JASON HIRSCHHORN: Por lo que no se cripta. No hicimos lo hace para este problema particular ajustado, pero sucede en la función de consulta. En realidad escribí para ti, y nos ocupamos de la desinfección insumos para usted. Pero en los últimos años, los estudiantes han tenido para escribir las entradas por su cuenta. En conjunto p 7, que muchos de ustedes - déjame abro otro archivo. Entonces te darás cuenta de por aquí un montón de personas, en conjunto de problemas 7, no llamaron esta función en cadenas. Esta función, htmlspecialchars, nuevo - esta cadena podría tener algunas cosas que en HTML significa algo más. Al igual que un aparato ortopédico, un cuadrado, o un ángulo Soporte de decir algo en HTML. Y así, si imprime que a la pantalla o si usted acaba de tomar eso y imprimir que fuera a su HTML, que el poder hacer algo que no esperas. Así htmlspecialchars va sobre todos aquellos caracteres que tienen especial reuniones y se les escapa. Por lo que se imprime como texto usted quiere ver, en lugar de arruinando su HTML. Llamamos a esa función en la cabecera. Y un montón de gente se olvidó de llamar a esa función en la código que estabas escribiendo. Así, por ejemplo, si un nombre de valores tuvo un corchete angular en él y se le olvidó llamar a esta función, que el ángulo soporte podría haber lanzado de lo su HTML parecía. Pero llamar a esta función se escapará que por lo que realmente muestre como soporte en ángulo y no tirar fuera de su código HTML. La misma razón por la que hemos visto, a veces, rayas verticales antes de las comillas dobles en una línea printf porque no queremos que el comillas dobles por la cuerda. Queremos imprimirlos a la pantalla. Así que todo esto es la misma idea. ¿Responde esto a su pregunta? AUDIENCIA: Más o menos. JASON HIRSCHHORN: ¿Tiene usted tener un seguimiento? AUDIENCIA: Creo que la inyección de SQL ataque tiene que ver con eso? No entiendo cómo Los dos están relacionados. ¿Por qué harías las specialChars? JASON HIRSCHHORN: OK, así que el SQL ataque de inyección es cuando se inyecta algunas cadenas maliciosos en alguien de programa, y ​​que sólo toman y ejecutan la consulta SQL con una cadena que les dio. Como se puede ver aquí abajo, que podría ser problemático. Así que la forma se previene en contra de que se usted toma su cadena que dan usted - por lo que esta cadena aquí - y desinfectar. Usted escapar de todas las cosas que son potencialmente problemático. Así que no sean interpretadas como algo eso significa algo. Y un ejemplo de que con HTML es esta función. Así que es la misma idea aquí. Y me estaba mostrando que otra ejemplos de cuando has visto esta idea antes. De escapar de la entrada del usuario antes de imprimir a cabo a una pantalla o lo ponga dentro de una sentencia SQL. AUDIENCIA: Así que en este caso, el usuario está jugando con el programador. JASON HIRSCHHORN: Si. Con todos estos ataques a la seguridad, eso siempre es generalmente el usuario, o alguien está tratando de desastre con usted, el programador. Y estas son formas en las que pueden prevenir en contra de ellos. AUDIENCIA: Así que tengo una pregunta acerca de las funciones hash. En la prueba 1 a partir de 2011, hay dos preguntas acerca de hashes de un solo lado. Y me estaba preguntando lo que eso significaba. JASON HIRSCHHORN: OK, lo que prueba? 2011? AUDIENCIA: Si. AUDIENCIA: Cuestionario 1? AUDIENCIA: [inaudible]. Eso es como hash de una contraseña. Eso no es poner las cosas - JASON HIRSCHHORN: ¿En qué página fue? AUDIENCIA: Creo que fue 9 o 10, o ambos. JASON HIRSCHHORN: Muy bien, seguir adelante, Curt. Puede contestar mientras buscamos. AUDIENCIA: Creo que está hablando acerca de hash de una contraseña. Al igual que, cuando alguien entra en una contraseña, lo conviertes en algo encriptado. Ese es el hash de la contraseña, que es diferente de una función hash que pone algo en una tabla hash. JASON HIRSCHHORN: Veamos. Déjame sacar lo que ellos dar como respuesta. Y luego vamos a caminar a través de él. Así Curt le dio un gran ejemplo de un hash de un solo sentido. Cuando nos hemos visto antes, nos tomar la contraseña y activar - recuerda, en conjunto p 7, alguien podría tener una contraseña que es sólo una contraseña, pero luego éste se cifra en algo realmente largo. El hash de un solo sentido significa que es muy fácil para pasar de un modo a otro, pero es muy difícil pasar de el otro camino de regreso. Y para que sepas, cuando nos marchábamos contraseñas de la gente en un problema fije 7, que le llevará a su - así, por ejemplo, dicen que querían cambiar su contraseña, se les pregunta por su antigua contraseña. Usted tomó su antigua contraseña. Cifró él. Y luego comparó los dos encriptaciones en lugar de unencrypting el original uno, porque es muy difícil ir de esa manera. Sí. AUDIENCIA: ¿Cómo en profundidad hace nuestra comprensión de TelNet tiene que ser? JASON HIRSCHHORN: Si se mencionó brevemente en la conferencia, sólo un breve entendimiento. De nuevo, de vuelta a la respuesta a la pregunta de Avi - más cosas surgen, más probable es lo que tiene que ser super familiarizarse con ellas. Si sólo he llegado en la conferencia, eso es sólo un lugar. Pero si entran en la conferencia, sección, y un problema establecido, entonces usted probablemente tendrá que ser súper familiarizarse con ellas. Así que yo tenía una pregunta de antes sobre - es era el otoño de 2010 - Cuestionario 1, vamos a tirar para arriba - esta pregunta en pilas y colas, que nos hicieron pasar un poco de tiempo hablando en conferencia, incluso aunque nosotros no lo hicimos realmente Alguna vez lo golpeó en la sección. Así que esta pregunta te da una serie de comandos y le pide que lo se imprime en este caso. Así que esta es una pregunta totalmente razonable que se puede pedir de ustedes chicos, y entonces ustedes deberían ser capaz de responder a ella. Entonces, ¿por qué no lo mira durante 30 segundos y, a continuación, si alguien quiere proponer las respuestas a mí, y entonces vamos a caminar a través de él. De acuerdo, que tiene una respuesta a la pregunta 27? Sí. AUDIENCIA: ¿es 1, 2, 3, 3? JASON HIRSCHHORN: Eso es correcto. 27 es 1, 2, 3, 3. Así que echemos un vistazo a cómo conseguimos eso. En primer lugar, estamos diciendo, si s es una cola, lo que se imprime? Así que una q es primero en entrar, primero en salir. Hemos visto eso antes. Vimos la imagen de las personas esperando en la Manzana Tienda a comprar algún producto. Las primeras personas en son las primeras personas fuera. Las primeras cosas en una cola son las primeras cosas a cabo. Así que si empujamos algo en una cola, pulse el 1, luego que el pop la 1. Pop sólo significa llevar. En este caso, simplemente tome algo. Tomamos la primera cosa, eso es un 1. Así que vamos a poner las cosas que imprimir hasta aquí. Esto ya no se encuentra en nuestra cola. Luego empujamos en un 2 y un 3, y que sobresalen de la primera hora. Una vez más, porque es una cola. Así que llegamos a 2, luego ponemos en otro 3 y llame pop de nuevo. Nuestra 3 es primero. Y luego tuvimos un montón de otras cosas y llamada pop. Pero, de nuevo, ya que esta es una cola, primero en entrar, primero en salir. Sacamos lo primero que alguna vez se puso pulg Ese es nuestro 3. Y, en este caso, no nos preocupamos sobre todas esas otras cosas. Así que eso es si se trata de una cola. ¿Una pregunta sobre una cola? A es diferente de la pila. ¿Cuál es el acrónimo que tenemos para la comprensión de una pila? AUDIENCIA: último en entrar, primero en salir. JASON HIRSCHHORN: LIFO, creo. Último en entrar, primero en salir. Así que vimos un ejemplo de una pila de bandejas en un comedor. Cualquiera que sea la bandeja está en la parte superior es recogido. Y entonces, si las nuevas bandejas vienen adentro, conseguir poner en la parte superior. Y entonces lo que está en Top Obtiene recogido. Así que esas bandejas sobre el poderío inferior permanecer allí durante un tiempo. En ese caso, una vez más, vamos a alargar esto. Empujamos en uno, por lo que uno es el primero en la fila. Y nos pop algo. Y sólo hay una cosa en allí, así que nos movemos 1 aquí abajo. Luego ponemos los días 2 y 3 y nos pop algo. Pero, de nuevo, ya que esta es una cola - o se trata de una pila, en lugar - tomamos lo que fuera en el pasado. Lo que está en último sale primero. Y 3 es en pasado. Por eso, pusimos el 3 por allí, entonces ponemos en otro 3 y pop algo nuevo. Por último, ponemos en el 4, 5, 6 y 7, y aquí nos pop. Y porque es una pila, tomamos lo que fue puesto en la última y escribir que aquí abajo. Así que terminamos con 1, 3, 3, 7. ¿Alguien tiene alguna pregunta acerca de pilas o colas, o este ejemplo? Aceptar. Volvamos a la lista de temas. Por ahí no, por aquí. ¿Qué otras preguntas tiene la gente? AUDIENCIA: No sé lo importante esto es, pero yo estaba confundido por la diferencia entre diferentes tipos de lenguas como el marcado, compilados, interpretado. JASON HIRSCHHORN: Eso es una buena pregunta. Creo que eso es algo importante, así que vamos a repasar rápidamente. Las grandes lenguas que hemos visto hasta ahora son C, PHP y JavaScript, en términos de lenguajes de programación. HTML, como usted ha mencionado, no es un lenguaje de programación. Es un lenguaje de marcas. Y luego tenemos CSS, que es también no es un lenguaje de programación. También hemos visto SQL, que no es un lenguaje de programación cualquiera. Así SQL permite escribir consultas de una base de datos. HTML es un lenguaje de marcas. Define cómo se estructuran las cosas. Y CSS le permite el estilo de las cosas. Esa es probablemente la medida de lo que necesita saber acerca de esos tres. Pero es más interesante figura las diferencias entre C, PHP, y JavaScript. Así que una de las diferencias más grandes, como usted ha mencionado, es la forma en que están compilado, o lo que sea el equivalente es. Así que C se compila. Siempre nos correríamos un compilador. Y entonces ¿dónde están sus errores al ejecutar el compilador de C? ¿De dónde usted la muestra errores en el código? ¿Cómo sabes que hay un error en el código en C? AUDIENCIA: Le muestra en el terminal. JASON HIRSCHHORN: Se muestra en el terminal como se está compilando. Y si hay errores, en realidad no se compilará. Así que ya sabes que hay errores correctas de distancia, antes de tiempo, antes de que usted incluso ejecutar su código. Por supuesto, es posible ejecutar el código y conseguir un fallo de segmentación, pero eso fue probablemente debido a que usted hizo algo lógico tonto. Pero el código con técnicamente todo correcto y podría funcionar. Así código C se compila antes de tiempo. ¿Qué pasa con el código PHP? ¿Dónde estaban los errores en su código PHP? ¿Cómo se sabe que tuvo errores en el código PHP? AUDIENCIA: Tiempo de ejecución? JASON HIRSCHHORN: Sí, cuando iría en ella, tendría que ejecutar la Código PHP en la parte posterior. Y luego le mostrará una pantalla. Es posible que vea algunas cosas en la parte superior, pero entonces usted vería, como, algunos naranja, mesa feo. Y le dará un número de línea y digamos, bla, bla, bla, esto que no funcionó. Así que PHP se interpreta línea por línea y ejecutado en el servidor. Y a continuación, el resultado es enviado a usted. Grande. Ejecutado en la línea de servidores de línea y luego enviado a usted. Y si hay un error, que va a enviar que el error, pero es posible que tenga conseguido algunas cosas antes de tiempo. Así que algunos de los que podría haber funcionado, pero más tarde, algunas cosas no podría tener sin trabajar. ¿Qué pasa con JavaScript? ¿Dónde has visto los errores de JavaScript? En p set 8, cuando recibió un error, ¿cómo lo sabes? ¿Dónde aparece? AUDIENCIA: En la consola, en la parte inferior. JASON HIRSCHHORN: En el consola, en la parte inferior. También le daría la número de línea, y que lo haría mostrará en la parte inferior. Y JavaScript no se ha ejecutado en el servidor. JavaScript fue enviada a su ordenador, y luego, cuando llegó el momento de ejecutar el JavaScript, el código JavaScript se ejecutar línea a línea en el cliente, de su lado. No el servidor, el lado del cliente. Y del mismo modo, fue ejecutar línea por línea. Y luego, cuando se llega a un error, se mostraría en la parte inferior. Al igual que en PHP, algunos de ellos podrían ejecutar, y entonces usted puede ser que consiga un error más adelante. Además, un poco de PHP a diferencia, si que tienes un error de JavaScript - dices que no has hecho la derecha código para un cuadro de alerta - usted podría mantener el funcionamiento de su programa. El cuadro de alerta no iba a funcionar, pero su programa estaría bien. Sólo tal vez esa función sería un fracaso. Así que hay algunos de los más grandes diferencia en términos de cómo estos idiomas, o cómo el código de programación Puedes escribir en realidad se está evaluando. También hay otras diferencias en términos de - la mayor diferencia que hemos visto en términos de variables en los diferentes idiomas. Entonces, ¿puede alguien darme una diferencia entre las variables en los tres idiomas? Sí. AUDIENCIA: En C, son estrictamente escrito. En los otros dos, que están vagamente escrito. JASON HIRSCHHORN: Y ¿Qué significa eso? AUDIENCIA: Que en C, usted tiene que declarar el tipo de la variable cuando se declara la variable, como interbool o char. JASON HIRSCHHORN: Excelente. En C, siempre tuvimos que poner un tipo de una variable. Y no podíamos mezclar tipos. No se podía hacer un entero más una cadena. Pero como hemos visto en otros lenguas, en realidad se pueden mezclar tipos, y usted nunca tiene que dar algo que un tipo, nunca. Entonces, ¿cómo sabemos que las cosas son variables en PHP y JavaScript? AUDIENCIA: En PHP, empiezan con un signo de dólar. En JavaScript, cuando se declara ellos, usted tiene que tener un bar. JASON HIRSCHHORN: Así es. Así que en PHP, empiezan con un signo de dólar. En JavaScript, ellos tienen que tener bar, aunque a veces no lo hacen en realidad tiene que tener bar. Pero eso es correcto. Así que eso es una gran diferencia entre las variables. Creo que esos son probablemente, fuera de la la parte superior de mi cabeza, los dos más grandes diferencias entre estos tres idiomas. Pero, sí. AUDIENCIA: Y el ámbito de las variables C se limita a las llaves, donde los demás, que es como, muere si es sólo una función, pero por lo demás, es - JASON HIRSCHHORN: Así es. Así ámbito de aplicación es ligeramente diferente en C. Como Te acuerdas, las llaves definen el ámbito de las variables. Así que si se define dentro de un if condición, que está dentro de un bucle for, la variable sólo existe allí. En JavaScript, si se define una variable dentro de una condición if - dentro de un bucle for - que va a existir para esa función, pero no va a existir fuera de esa función. Así ámbito de aplicación es un poco más flexible en JavaScript y PHP. Eso responde a la pregunta? Bueno, alguna otra pregunta? Podemos hacer cuatro minutos más de preguntas, a continuación, vamos a saltar a la codificación. AUDIENCIA: ¿Podemos ir a Ajax y hablar de lo que es eso? JASON HIRSCHHORN: Hable con Avi después. Él hizo esa pregunta antes. AUDIENCIA: Mi mal. JASON HIRSCHHORN: No se preocupe. AUDIENCIA: ¿Qué es exactamente JSON? JASON HIRSCHHORN: ¿Qué es JSON? ¿Cuál es tu pregunta? AUDIENCIA: Sólo muy rápido, la diferencia entre los print y echo en PHP. JASON HIRSCHHORN: ¿Por qué no buscas en google la diferencia entre la impresión y el eco? Pequeña diferencia. No es gran cosa. Pero definitivamente debe google, y que te voy a dar una buena respuesta. JSON, probablemente más grande de un acuerdo. Soportes para JavaScript Object Notation. Y cuando hemos visto JSON está utilizando? ¿Cuándo se ha visto - ¿por qué siquiera conoce la palabra JSON? ¿Cuándo has visto? AUDIENCIA: Cuando estábamos preparando las cotizaciones de acciones de las finanzas. JASON HIRSCHHORN: Así que viste cuando usted estaba recibiendo las cotizaciones de acciones de las finanzas. ¿Y por qué has visto? AUDIENCIA: Cuando nos recuperamos toda la información que llegó en ese formato. JASON HIRSCHHORN: Así que te lo dan - sí. Adelante. AUDIENCIA: [inaudible] información de un objeto? JASON HIRSCHHORN: Tanto de los que reunido es la respuesta estamos buscando. ¿Quieres información de esta otra página web. Y es de esperar que cuando estás conseguir esa información, sería presentado a usted en algún tipo de formato normalizado. Todo el mundo es probablemente familiar con valores separados por comas. Puede exportar una hoja de cálculo de Excel o cualquier tipo de hoja de cálculo como una lista de Valores separados por comas. Y las comas dividen todo los diferentes campos. JavaScript Object Notation - JSON - es otro tipo de estandarizada el diseño de las cosas. Y eso es a menudo cómo nos recuperamos información de nuestras consultas Ajax. Así que en este caso, lo conseguimos desde el sitio de Yahoo. Vuelven las cosas a nosotros en un objeto JSON. Y entonces lo que sabemos, porque es una norma, lo que es va a parecer. Así que podemos recorrer el array que se devuelve a nosotros, la gran variedad de objetos que se vuelven nosotros. Nosotros probablemente necesitamos conocer las claves, pero por lo general le dan documentación en el sitio web cuando usted está trayendo un poco de JSON notación para ellos. Del mismo modo, puede JSON codificar un objeto. Así que hay una función de JSON subrayar codificar. Y para que pueda tomar un objeto que que has creado, JSON codificarlo, y pasarlo a algo otra cosa, si quieres. Y JSON decodificación también existe para un propósito similar, o para el propósito opuesto. AUDIENCIA: ¿Necesitamos saber escribir código para las tablas hash y tries? ¿O sólo tenemos que entender cómo se usan, conceptualmente? JASON HIRSCHHORN: Entonces, levanta la mano si se hizo una tabla hash para p fijó 4 con una lista de enlaces. O p set 5. Así que fue una gran mayoría de la gente. P fijó 5, 6, quién sabe. Hace mucho tiempo. Así que la gran mayoría de los que hizo tablas hash con listas de enlaces. Y debido a que esa es probablemente la más enfoque común, y porque pasamos un montón de tiempo haciendo listas de vínculos y de hash tablas, probablemente debería ser bastante familiarizado con la forma de código una tabla hash y una lista de enlaces. Y si usted piensa de nuevo a ese problema establecer, en realidad no era tan duro como usted esperaba. Y había mucho menos código de lo que esperaba. Yo diría que usted debe saber codificar una tabla hash o una lista de enlaces. No es que fuera a invitar a que, necesariamente, pero que debiera ciertamente saber eso. Además, si se mira a través de los concursos anteriores, ha habido una gran cantidad de preguntas sobre la escritura de funciones en listas de enlaces o listas doblemente enlazadas. Esa parece llegar cada año. Insertar el botón derecho en una lista de enlaces, a la derecha borrar de una lista de enlaces, insertar la derecha para obtener una lista doblemente enlazada, et cetera. Así que, me siento muy cómodo diciendo que usted debe saber eso. Para intentarlo, yo diría que debiera sin duda saben cómo funciona, y tal vez dar un poco de pseudocódigo para saber cómo para codificar y configurarlo. Pero no sería la peor cosa en el mundo si usted no sabe cómo codificarlo en C. Sería estupendo si Sabía cómo codificar en C, pero creo probablemente pseudocódigo para intentarlo haría es lo máximo que se necesita saber para intentarlo. AUDIENCIA: Crédito adicional? JASON HIRSCHHORN: Y lo mismo con, si entrar en árboles binarios de búsqueda, es posible que necesitas - y que ha visto en el pasado, hemos hecho un montón de - usted sabe cómo árbol binario de búsqueda funciona. Probablemente debería ser capaz de establecer uno en pseudo-código. Pero debido a que la gran mayoría de las personas no hizo esto en el problema conjunto, yo diría que es probablemente menos importante que usted sepa cómo codificar y establecer un árbol así. ¿Alguna otra pregunta? También, podemos pedir a ellos a lo largo a medida que avanzamos a través de algunos problemas. Bien, vamos a seguir adelante. Saltar esa diapositiva por ahora. Hablando de árboles, que es la primera pregunta que tengo para ustedes. Debido a que este es un problema. Yo diría que es muy probable que usted obtener un problema como este en su concurso pidiéndole que codificar algún tipo de inserción, eliminar, buscar, para un tipo de estructura de datos que hemos visto. Eso viene cada año y pasamos una mucho tiempo la segunda mitad de este semestre repasando estos tipos de datos. Así que ahora mismo, he definido un nodo en un árbol de búsqueda binaria. Y lo que me gustaría que hicieras es dado un árbol de búsqueda binario que comienza en este nodo raíz estrella, complete la implementación de la función a continuación, que pasa a ser una función de búsqueda. Y hacerlo con y sin recurrencias. Así que quiero que escribas dos funciones. Una haciendo esto con la recursión, uno haciendo esto sin recursión. Y no asuma que la raíz será no nula. Así que estamos buscando para el entero i en el árbol a partir de la raíz, y necesitamos para escribir esta forma recursiva y de forma iterativa. Sí. AUDIENCIA: ¿Así que quieres que regresemos verdadera si lo encontramos, y falso si no lo encuentra. JASON HIRSCHHORN: ¿Cómo lo supiste? ¿Cómo lo sabes? AUDIENCIA: Me estaba preguntando primero, pero yo estaba asumiendo, porque dice bool en el principio de la función. JASON HIRSCHHORN: Así es. Dice bool, por lo que no necesita ni siquiera decirle lo que espero que vuelvas porque dice allí mismo. Pero es cierto. Volver, verdadero o falso. Así que antes de empezar, yo recomendaría, si no está familiarizado con árboles binarios de búsqueda, dibujo rápidamente una foto de ella para obtener su la comprensión, a la derecha. Esto también le ayudará a la hora de escribir su código y revisarla. Una vez más, usted también no tiene que mucho tiempo en el cuestionario para hacer todas las cosas que les pedimos que hacer. Así que escribir pseudocódigo es muy útil. Y por lo general, damos sobre - si el pseudocódigo es perfectamente correcto, eso es en general, el 50% en una pregunta. Así que no es una regla fija, pero si que acaba de escribir pseudocódigo y es correcta, por lo general es de 50%. Así que yo siempre recomiendo - si usted está presionado por el tiempo, o incluso si usted está tratando de averiguarlo - comenzando con el pseudocódigo. Y, por último, si usted podría escribir este todos en C, eso sería fantástico. Así que vamos a tomar tres minutos para trabajar en este programa. Y luego vamos a escribir pseudocódigo para una sola vez, y después vamos a codificar de forma recursiva y luego iterativamente. Si usted tiene alguna pregunta, por libre de levantar la mano. Feliz caminar y responderlas antes de empezar como un grupo. Resumamos, y vamos a Pseudocódigo la versión recursiva de esto, y luego vamos a codificarlo. Así que una función recursiva necesita dos cosas. Esto puede ser una pregunta que usted podría pedir. Necesita dos cosas. ¿Quién puede levantar la mano y me dice cuáles son las dos cosas que un recursivo función de las necesidades? Por definición tiene dos cosas. ¿Cuáles son esas dos cosas? Nuevas manos. Sí, Alden. AUDIENCIA: Así que no estoy muy seguro de si esta es la terminología, pero - JASON HIRSCHHORN: me alegro que está levantando la mano. AUDIENCIA: Se necesita un caso base, y necesita un paso recursivo. JASON HIRSCHHORN: Perfect. Necesita de un caso base y un paso recursivo. ¿Cuál es nuestro caso base aquí? AUDIENCIA: root F es igual a es igual a nulo. Lo siento, sólo en pseudocódigo, si es nulo. Si la raíz es nulo. JASON HIRSCHHORN: Si la raíz es nulo. Eso es excelente. Ese es nuestro caso base. Eso es lo que vamos para comprobar en todo momento. Y caso base es el lo primero que haces. Si usted choca con la hipótesis de base, ya está hecho. Ahora necesitamos nuestra llamada recursiva, y me dispuesto a apostar que necesitamos un par recursiva se llama aquí. Debido a que es un árbol, y nos podría ir de muchas maneras. Así que si la raíz es nulo, estamos bien. ¿Qué propones? Y ahora voy a empezar a llamar a cabo en ustedes, porque sé que ustedes todos lo saben. Pero Annie, ¿qué debe la siguiente línea a ser? ¿Y si lo encontramos? ¿Qué hacemos? AUDIENCIA: Si nos encontramos? JASON HIRSCHHORN: O lo que debe ser que - dame el pseudocódigo para la línea en la que nos encontramos. AUDIENCIA: Si i es igual a la raíz i? JASON HIRSCHHORN: Y entonces, ¿qué hacemos? AUDIENCIA: Devuelve true. JASON HIRSCHHORN: Muy bien. Así que si i es i - oh, los dos están llamados i. Eso hace confuso. Pero si i es i return true. Esa es probablemente la próxima Lo que debemos hacer. Tiene sentido. Bien, ahora que no hemos hecho nuestro recursiva llame sin embargo, sin embargo, porque una recursiva llamada llamara esta función de nuevo. Entonces, ¿qué debe el siguiente línea de pseudocódigo a ser? Anna. AUDIENCIA: El lado izquierdo. JASON HIRSCHHORN: Sea específico, sin embargo. Este es un árbol binario de búsqueda, así que lo que no el control de la parte izquierda implicaría? AUDIENCIA: Así nodo - Lo siento, la raíz. Y luego la flecha izquierda. Nodo, nodo, lo siento. No estoy leyendo correctamente. Se llama nodo, ¿verdad? JASON HIRSCHHORN: Se llamará root en esa función, pero de cualquier manera. El lado izquierdo - ¿Sí? AUDIENCIA: Si no lo hace igual i, a continuación, vamos a llamar a la función de nuevo? JASON HIRSCHHORN: Eso es correcto. Si no lo hace igual i, vamos para llamar a la función. Pero, ¿qué lado del árbol vamos llamar a la función de nuevo? AUDIENCIA: En el lado izquierdo. JASON HIRSCHHORN: No estamos siempre vamos a llamar a la izquierda, si no es igual que. AUDIENCIA: Oh, lo siento. Llame a la derecha. JASON HIRSCHHORN: Queremos saber específicamente, sin embargo - recuerda, en un árbol binario de búsqueda, todo para el lado izquierdo es más pequeño. Todo a la derecha lado es mayor. Así que no es sólo - sí, adelante. AUDIENCIA: Si es menos de i, entonces - si es en la izquierda - JASON HIRSCHHORN: Así que si RI es inferior a - por lo que si nuestro número es menor que yo, de qué lado queremos ir? AUDIENCIA: Queremos ir en el lado derecho. JASON HIRSCHHORN: Queremos ir - permítanme llamar un árbol rápido. Si esto es 5, este será 3. Así que si ri es inferior a cinco, lo que lado queremos ir? AUDIENCIA: Perdona, ¿qué? JASON HIRSCHHORN: Nuestro número es menor que el número que estamos mirando ahora. AUDIENCIA: Oh, entonces queremos para ir a la parte izquierda. Sí. Lo siento. JASON HIRSCHHORN: Exactamente. No hay problema. En el árbol binario de búsqueda, todo menor es a la izquierda, mayor está a la derecha. Así que si nuestro número es menor que el i estamos comprobando - porque se ve en el nodo, que tiene un i - entonces usted quiere ir a la izquierda. Y esta es una tarea fácil. ¿Qué es la otra línea de pseudocódigo tenemos que escribir? Carlos? AUDIENCIA: La misma cosa, que acaba de cambiar a un signo mayor que y vaya a la derecha. JASON HIRSCHHORN: ¿Puede usted decir que una vez más? AUDIENCIA: Si nuestro número es mayor que yo, voy a la derecha. JASON HIRSCHHORN: Excelente trabajo en el pseudocódigo. Vamos a hacer esto en el código real. Y de nuevo, este pseudocódigo se probablemente conseguirá, porque es correcta, el 50% en esta cuestión. Pero este pseudocódigo también se traduce uno a uno, esencialmente, en el código. Así que vamos a hacer esto en C. ¿Quién puede dar mí la primera línea de código? En realidad, en primer lugar, antes de que haga que, deja, echaré sobre - AUDIENCIA: Tengo una pregunta. ¿Por qué se aplica sangría a la línea que te di? JASON HIRSCHHORN: Porque Yo no podía escribir. No se. Tienes razón. Esa línea debe estar allí. Bien, aquí es nuestra función. Y permítanme detengo, también, nuestra definición de un nodo. ¿Qué pasa si no lo hiciéramos escribir typedef? ¿Alguien sabe? AUDIENCIA: No sería compilar. JASON HIRSCHHORN: sería compilar, sí. AUDIENCIA: ¿Sería justo declarar una instancia en lugar de convertirlo en un nuevo tipo usted puede declarar múltiple casos de? JASON HIRSCHHORN: Así que no lo haría saber - que no lo haría simplemente declarar un tipo. Usted todavía puede hacer una gran cantidad de nodos. AUDIENCIA: Pero, ¿no tenemos que escribir struct nodo cada vez? JASON HIRSCHHORN: Eso es correcto. Usted tendría que escribir nodo struct cada vez, en lugar de sólo nodo. Pero con typedef, usted puede apenas escribir nodo cada vez. Bueno, ¿quién no ha dado - sí, Avica. AUDIENCIA: Si la raíz es igual a los iguales null, devuelve false. JASON HIRSCHHORN: Grande, y ese es nuestro caso base. La siguiente línea de código. Alguien que no ha dado me una línea de código todavía? Sí. AUDIENCIA: Root flecha i es igual igual a i. A continuación, vuelva realidad. JASON HIRSCHHORN: Muy bien. Siguiente línea? Sí. ¿Alguien más? Y entonces usted puede ir a continuación. AUDIENCIA: Porque si la raíz de flecha i es menor que vuelvo función llamada find root - JASON HIRSCHHORN: Lo siento. AUDIENCIA: root hallazgo Retorno apunta a la izquierda coma i. JASON HIRSCHHORN: Así que si ri es mayor que la cosa en el árbol, queremos ir a la izquierda? AUDIENCIA: No, tuve que cambiaron. JASON HIRSCHHORN: ¿Cuál? AUDIENCIA: No, sí. Tengo menos de firmar allí. JASON HIRSCHHORN: Correcto, si ri es menos de lo que está en la raíz - nuestra raíz actual - entonces quiero ir a la izquierda. ¿Y cuál es la última línea, ¿verdad? AUDIENCIA: Básicamente lo mismo, excepto conmutar el mayor o igual a menos de y de izquierda a derecha. JASON HIRSCHHORN: Excelente. ¿Alguien tiene alguna pregunta acerca de esto? Por lo que algunas otras cosas que haría han sido correctas, es que podría ser el-ltiff. Supongo que, técnicamente, ninguna de estas Realmente también necesitan ser ltiff. Además, hay probablemente sólo un caso aquí. Así que eso es probablemente su último caso. Usted ni siquiera necesita que-ltiff. Pero probablemente bueno para escribir que, para ser claros. Sí. AUDIENCIA: ¿Entonces usted no cree que el concurso - si hacemos errores, por ejemplo, en la sintaxis - pequeños errores de sintaxis - ¿cómo que se ocupaban en el concurso? JASON HIRSCHHORN: Por lo general en el examen, pequeños errores de sintaxis o pequeño errores de estilo no pierdes puntos. Así que si se le olvidó un punto y coma aquí, no estaría mal. Si usted se olvidó de cerrar este paréntesis, que estaría bien. Errores de sintaxis enormes que alteran la significado funcional de su código drásticamente, podría obtener quitado puntos por. O por lo general, sólo de clasificación sobre la conveniencia o no de su funciones de código, incluso - no su diseño tanto, y no su estilo. Ahora vamos a codificar una iterativo versión del hallazgo. Así que va a ser muy similar, pero Hay ciertamente va a ser algunas diferencias clave. Sin embargo, nuestra pseudocódigo probablemente puede ir - todavía podemos tener una línea de la pseudocódigo y averiguar lo que el la línea es en este caso. Así que en una versión iterativa, lo que Qué te parece, Julia, en caso de ser la primera línea? AUDIENCIA: Una vez más, en boolean iterativo, que necesita para crear un bucle, ¿verdad? JASON HIRSCHHORN: OK. AUDIENCIA: Así que por igual, k, para x es igual a 0, x es menor que yo. O No, x es menor que el tamaño del árbol. JASON HIRSCHHORN: El árbol. Así que realmente no sabemos el tamaño de la árbol, y nosotros no sabemos realmente por ¿cuántas veces se puede ir, así que ¿qué es un diferente tipo de bucle que puede ser mejor en este caso? AUDIENCIA: Si otra persona? JASON HIRSCHHORN: Si otra persona no puede ser un bucle. Entonces, ¿qué es un tipo de lazo que puede simplemente vaya hasta que se cumpla algún caso? ¿Cuál es el único otro tipo de bucle en C, además de un bucle? AUDIENCIA: While. JASON HIRSCHHORN: Mientras, exactamente. En un bucle de tiempo, no se necesita saber cómo - un bucle while y for loop pueden hacer el exactamente lo mismo, pero lo bueno alrededor de un bucle while es que no necesitamos saber qué tan grande es nuestro árbol. Así que vamos a ir hasta que lo que? AUDIENCIA: Hasta que equivale a el tamaño de - JASON HIRSCHHORN: Bueno, es muy similar a nuestro caso recursivo. Por lo tanto - AUDIENCIA: Si bien raíz i no es igual a i. JASON HIRSCHHORN: Eso es muy estrecha. Mientras que la raíz i - vamos a intentarlo. No creo que [inaudible] donde root i no es igual a i. Es posible que necesitemos cambiar en un poco poco, pero eso suena como que es bastante bueno, por ahora. Así que vamos a hacer eso. Además, recordemos, no podemos asumir por la pregunta. No asumir que el raíz será no nula. Entonces, ¿qué cree usted que el muy Lo primero que debemos hacer es? AUDIENCIA: Simplemente hacer lo mismo Lo que antes. Si la raíz es igual a los iguales null, devuelve false. JASON HIRSCHHORN: Muy bien. Así que podría ser nulo. Así que queremos deshacernos de ello enseguida. Y entonces estamos yendo cheque si raíz i no es igual a i. Por lo tanto, decimos que estamos buscando en este árbol para 3, raíz i no i igual, ahora estamos en nuestro bucle while. ¿Qué queremos hacer? Y de nuevo, va a ser bastante similar a la nuestra versión recursiva. Sí. AUDIENCIA: ¿Así que te gustaría repetir, o seguir por el árbol, siempre y cuando la raíz no es igual a nulo. JASON HIRSCHHORN: Mientras el raíz no es igual a null? AUDIENCIA: El guión raíz i no es igual a nulo. Sólo la raíz, sí. Como siempre y cuando la raíz es no es igual a null. JASON HIRSCHHORN: ¿Así que quieres para cambiar esto en la raíz no es igual a nulo? AUDIENCIA: Si. AUDIENCIA: Podríamos combinar estos, ¿no? No necesitamos el caso, en un principio. JASON HIRSCHHORN: OK, así que si no lo hacemos - si los combinamos, por lo que vamos a hacer mientras que la raíz no es igual a null, y si la raíz pasa a ser nulo en el empezando, ¿qué hacemos aquí? AUDIENCIA: return false. JASON HIRSCHHORN: Muy bien. Así que de ambas maneras, probablemente habría funcionado. Esta es una manera diferente, y esto lo combina. Pero, de nuevo, si se hizo de cualquier manera, estamos no va a despegar de diseño puntos en el concurso. Pero esto se ve bien. Así, mientras que la raíz no es igual a null, lo que es lo primero Lo que queremos comprobar? Alguien más? Null, ¿qué es lo primero? AUDIENCIA: Si ri es inferior a - oh, supongo, si ya encontrado en la raíz. Así que si la raíz flecha i es igual a i - JASON HIRSCHHORN: ¿Lo sientes? AUDIENCIA: Si la raíz de flecha i es igual a es igual a i - JASON HIRSCHHORN: ¿Qué hacemos? AUDIENCIA: Devuelve true. JASON HIRSCHHORN: Muy bien. ¿Y qué es lo siguiente? Jeff, ¿cuál es la siguiente línea de código? AUDIENCIA: Si i es menor que la raíz de flecha i, entonces es igual a la raíz de la raíz de flecha izquierda. JASON Hirschhorn: iguales de raíz raíz de flecha izquierda. Así que esa es probablemente la mayor diferencia aquí en este iterativo la versión opuesta a la versión recursiva. La versión recursiva, nos llamar a la función de nuevo. Estaremos actualizando root cuando que llamamos la nueva función. Aquí no estamos llamando a una nueva función. Estamos simplemente actualizar raíz en esta función. Eso es excelente. ¿Y cuál es la última línea de código? Sí, Mario? AUDIENCIA: iguales raíz Else raíz de flecha derecha. JASON HIRSCHHORN: ¿Lo sientes? Iguales de raíz: AUDIENCIA raíz de flecha derecha. JASON HIRSCHHORN: ¿Podría usted también escribir algo como esto? AUDIENCIA: No tengo ni idea. JASON HIRSCHHORN: No se puede. No se puede hacer más iguales. OK, así que esto se ve bien. ¿Por qué no simplemente lo que para limpiarlo. Esto se ve muy bien, y esto iba a funcionar. Y nos estallar. Si la raíz izquierda tenía razón nula o raíz era nulo, llegaríamos hasta aquí. Root sería igual a nulo. Nos gustaría salir de nuestro bucle, y nos gustaría volver falsa. Así que cuando salimos de la bucle, devolverá false. Y de nuevo, el bucle de un tiempo era perfecto aquí porque no sabemos cómo grande es nuestro árbol. Tratamos de escribir el bucle, pero se dio cuenta de que tienes que encontrar la manera grande que es antes de tiempo. Sí. AUDIENCIA: Si éste no fuera un binario árbol de búsqueda, sería matemáticas reales-y escribirlo de forma iterativa, ¿verdad? Al igual que, si se trataba de un árbol, pero no necesariamente - por lo que no era todo lo más pequeño a la izquierda, y todo lo grande a la derecha. Sería muy difícil iterar sobre ella, ¿verdad? Tendríamos que salvar lo que era antes en en el árbol y volver, y cosas por el estilo. JASON HIRSCHHORN: Si no fuera un binario árbol de búsqueda, si era sólo un árbol y las cosas no eran ordenados como esto - y nos dimos cuenta antes, cuando Anna nos estaba ayudando a que por lo que es ordenado nos ayuda mucho - tendríamos que, eso sí, siempre guarde donde estábamos antes. Pero podría haber una gran cantidad de donde estábamos previouslys. No puede haber una gran cantidad de nodos primarios. Probablemente la mejor manera de hacerlo sería ser la de seguir empujando las cosas hacia algunos tipo de pila o cola. Nunca tendría que codificar esta porque es un problema difícil. Pero usted empuja algunas cosas en una pila o cola y luego hacerlos estallar apagado, y luego evaluarlos. Y luego tener alguna otra cosa donde en realidad estás poniendo los nodos y a continuación, cree que, a continuación, buscar a través de eso. Esa podría ser la mejor manera de hacerlo. Bueno, cualquier pregunta sobre este problema? AUDIENCIA: Esta es una nota relacionada. ¿Tendremos que comparar los tiempos de ejecución para las tablas de hash, binario árboles de búsqueda, etcétera? JASON HIRSCHHORN: Probablemente. Así que vamos a hacer eso muy rápido. Tiempo de ejecución para la tabla hash - ¿cuáles son los otros? Árbol binario? AUDIENCIA: listas de enlaces. JASON HIRSCHHORN: OK, vamos a hacerlo de inserción. ¿Cuál es el gran O de inserción en una tabla hash? ¿Cuáles son los supuestos usted está haciendo? AUDIENCIA: Usted está insertando en la a partir de la lista de enlaces. JASON HIRSCHHORN: Probablemente la primera suposición es que no hay colisiones. Si no hay colisiones, entonces el tiempo de inserción es una. Si hay colisiones, y ya está haciendo encadenamiento separado e insertando al principio de la lista de enlace, a continuación, la inserción es también constante. Si usted está haciendo una tabla hash, pero usted tener un método diferente de tratar con las colisiones, lo que es un método diferente? ¿Qué es de un método diferente de tratar con colisión en una tabla hash? AUDIENCIA: La programación lineal. JASON HIRSCHHORN: Programación lineal. Así que vamos a seguir buscando para el siguiente punto abierto. Eso no es tiempo de inserción constante. Usted podría tener que pasar por toda la tabla, de modo que podría ser gran O de n. Sí. AUDIENCIA: Si no apenas encadenar? JASON HIRSCHHORN: Hicimos encadenamiento separado. Esa fue la primera. Eso es lo que la lista de enlaces. El nombre de fantasía es encadenamiento separado. Podría ser cualquier tipo de estructura de la lista nos ha tocado hacer en la lista de enlaces. Así que de nuevo, la inserción en una tabla hash podría ser la constante de tiempo. ¿Qué pasa con la inserción en una cola apilador? AUDIENCIA: ¿No es constante? JASON HIRSCHHORN: Es la constante de tiempo. No eres más que empujar a encenderlo. Aceptar. Inserción, cuáles eran los otros? En un intento? ¿Qué es la gran O de inserción en una oportunidad? AUDIENCIA: La longitud es constante. Longitud de los más largos - la longitud de la palabra vas a insertar. JASON HIRSCHHORN: ¿Lo sientes? Espera, así que lo que oí? Usted dijo -, ¿qué dijiste? ¿Cuál fue su respuesta, Marcus? AUDIENCIA: La longitud de la palabra vas a insertar en caracteres, asumiendo que es una prueba de carácter. JASON HIRSCHHORN: OK, así que la longitud de la palabra. Vamos a hacer una suposición de que es una cadena de caracteres. Usted ha dicho algo diferente, sin embargo. Usted dijo que la longitud de palabra más larga. AUDIENCIA: Eso es sólo constante, ¿no? JASON HIRSCHHORN: ¿Por qué sea ​​constante? AUDIENCIA: Al igual que, si se utiliza gran O notación, entonces no varían en función de de la cantidad de cosas que ya están en el intento. JASON HIRSCHHORN: De modo que lo haría dicen que es la constante de tiempo. Es inserción constante, y eso es porque esta idea - digamos que tenemos una palabra que es de 45 años, o una palabra que es el 60, que tiene un número constante. Y que sólo se insertaría en tiempo constante. En la práctica, sin embargo, no sería, obviamente, suceder en un milisegundo, por ejemplo. Pero diríamos gran O es constante para intentarlo. Y esa es una de sus mayores ventajas. ¿Qué pasa con la inserción en una lista de vínculos? Sólo una, ordenadas lista de enlaces genérico? Sí. AUDIENCIA: yo tenía una pregunta. En la prueba, es que alguna vez nos la pida tiempo de inserción que es cuatro pasos, o algo así? ¿O es sólo - cuando dices tiempo de inserción es una, eso sólo significa que la constante de tiempo? JASON HIRSCHHORN: Sí, lo harían siempre preguntar, ¿es gran O de n? Big O de log n? N al cuadrado constante. Esos son realmente la única los que necesita saber. ¿Qué pasa con la inserción en ordenados lista de vínculos? AUDIENCIA: yo tenía una pregunta - una pregunta - JASON HIRSCHHORN: ¿Cuál es la respuesta a esa pregunta, sin embargo? AUDIENCIA: Espera, ¿qué lo preguntas? JASON HIRSCHHORN: ¿Qué es la gran O de inserción en una lista de enlaces ordenados? AUDIENCIA: One? No se espera, sin esperar, n. JASON HIRSCHHORN: N. Además la lista de enlaces. ¿Y cuál era su pregunta? AUDIENCIA: Así que escribirías o de k o o de 1 para el - JASON HIRSCHHORN: Oh. Me gustaría escribir o de 1, probablemente. Había otra estructura de datos eso habría sido bueno. Árbol, árbol binario de búsqueda. Lo inserción en un árbol binario de búsqueda? AUDIENCIA: Login. JASON HIRSCHHORN: Entonces, ¿cuál es la peor caso en un árbol binario de búsqueda? Así que si nos toca empezar a las 5, y cada número es mayor que 5, y luego tenemos 5, 7, 9, 11, etcétera. En este caso, es básicamente un enlace lista, y tenemos que insertar toda la forma en el extremo. Así que es gran O de n. Esa podría ser nuestra peor de los casos en un árbol de búsqueda binaria. Obviamente, nunca se construirá un árbol de búsqueda binario con 5 en la medio, sabiendo que 5 ser el número más bajo. Pero podría ser, si eres empezar desde cero. ¿Tiene preguntas sobre esto antes de que pasar a otra pregunta? Esa era una buena pregunta. Sabría gran O de - AUDIENCIA: ¿Qué pasa con la búsqueda para los cuatro? JASON HIRSCHHORN: Definitivamente nos tenía búsqueda y clasificación. Hicimos todos los algoritmos, claro. Espere, fue que para la prueba 1? Fue eso cubierto - ¿Ya tiene que pregunta en la prueba 1? El gran tiempo de ejecución O de búsqueda binaria, ordenación por inserción, la ordenación de burbuja? AUDIENCIA: Si. JASON HIRSCHHORN: Si tuvieras que pregunta sobre la Prueba 0, las probabilidades son que no lo harás conseguir exactamente la misma pregunta en la prueba 1. Podría ser bueno saber eso. Si todo funciona correctamente saber gh ya. Pero otros tiempos de ejecución logarítmicas son probablemente bueno saberlo. Las cosas que no fueron cubiertos en concurso 0. Al igual que todos estos operadores en estos tipos de datos abstractos. OK, vamos a seguir adelante. Éste debe ser bastante rápido. Y este es un nuevo lenguaje que no tenemos en realidad codificada en antes. Esta es una pregunta que pide codificar en PHP. Así que considera la matriz PHP a continuación. Escribir códigos PHP y / o HTML, que salida a una tabla de dos columnas con TFS nombres y casas. Usted nunca ha hecho esto antes, este problema específico. Pero esto debe ser muy familiar para lo que hiciste en el problema conjunto 7. Así que yo estaría dispuesto a apostar que será pedido que codificar algo en PHP que es muy similar a lo que hicieron en conjunto de problemas 7. En primer lugar, la matriz no es tan específico. ¿Qué tipo de arreglo es esto? AUDIENCIA: Asociativo. JASON HIRSCHHORN: Es una matriz asociativa. ¿Y cuál es la diferencia entre una array asociativo y un objeto? AUDIENCIA: Una matriz de objetos tiene un índice de enteros y una matriz asociativa es un índice de una cadena, o algo por el estilo. JASON HIRSCHHORN: Así que una gran variedad de objetos tendrían índices de enteros, pero un objeto tiene campos. Tiene los nombres de campo como nombre, casa, estudiante. ¿Tiene una idea? AUDIENCIA: Bueno, asociativo array es en PHP, ¿verdad? Y es objeto en JavaScript? JASON HIRSCHHORN: Honestamente, no hay diferencia real entre los dos. Ambos tienen cadenas como las llaves, y puede tienen básicamente cualquier cosa como valor. Diferentes idiomas llame a uno Lo matriz asociativa, una cosa un objeto. Así que, honestamente, no existe una verdadera diferencia, pero no hay duda alguna diferencias sintácticas entre los dos. Sí. AUDIENCIA: Así es objeto también codifica bajo la campana como una tabla hash, entonces? JASON HIRSCHHORN: Lo que se hace decir, codificados bajo el capó? AUDIENCIA: Nos dijeron que asociativo variedad era técnicamente un la tabla de hash. Así que es objeto también técnicamente una tabla hash? JASON HIRSCHHORN: Yo no voy para responder a esa pregunta. Me pondré en contacto con usted en eso. Pero no se me ocurriría, ya sea de los que son como eso. Pero, en cualquier forma, matriz asociativa y objeto, en general, la gente usa los términos indistintamente. En este caso, la parte fría es que usted puede usar las teclas. Cadenas como claves, en lugar de sólo números simples. Así que he estado hablando esto por un rato. Con suerte, algunas personas tienen hecho más que empezar en esto. Vamos a escribir algo de PHP y HTML código, de modo que tenemos una de dos columnas mesa con nombres y casas de TFS. Bueno, también me gustaría una cabecera remar en esta tabla. Así que voy a ir directo en esto. Vamos a presentar, nuevo, y vamos a - Aceptar. ¿Cómo comienzo a una mesa? ¿Cuál es la etiqueta, Michael, para iniciar una mesa? AUDIENCIA: Tabla. JASON HIRSCHHORN: Tabla. Y si abro una etiqueta, lo que más necesito? AUDIENCIA: A la cabeza? O bien, supongo, de clase. JASON HIRSCHHORN: Así que, lo siento. Supongamos que ya hemos escrito doctab, HTML, todas esas cosas. Pero si abro esta etiqueta mesa, lo que más debo escribir? para validar HTML? AUDIENCIA: cerrarla. JASON HIRSCHHORN: Cierre la etiqueta. ¿Cómo se escribe una etiqueta de cerca mesa? AUDIENCIA: Dot slash mesa. JASON HIRSCHHORN: Raya vertical de mesa, muy bien. Probablemente tiene sentido escribir tanto de las juntas porque tienes que hacerlo. Bueno, si quiero una fila de encabezado, ¿cómo Escribo una fila de encabezado con los títulos? AUDIENCIA: ¿Es menos de 10 horas cerca - TR, sí. JASON HIRSCHHORN: TR? AUDIENCIA: Entonces lo mismo, la barra, sí. JASON HIRSCHHORN: OK, y dame dos columnas. AUDIENCIA: T D? JASON HIRSCHHORN: OK. Quiero dos columnas. ¿Esto me da dos columnas? ¿Cuántas columnas es esto? Una. Así que vamos a copiar y pegar esto. Así que en realidad, en el examen, todo este código que hemos escrito hasta ahora era realidad que le dan. Pero usted debe probablemente todavía saber cómo escribirlo. Sí. AUDIENCIA: Tu casa está entre las dos. JASON HIRSCHHORN: Boom. Se debe ir a la derecha, ¿no? Buena decisión. Así que de nuevo, todo este código es en realidad que le ha asignado en el examen real. Pero es divertido de escribir, y usted debe saber cómo escribirlo. Así que aquí es donde usted necesita para iniciar su código. ¿Qué necesitamos para escribir aquí? Lo sentimos, pero tengo que cambiar el nombre de este archivo. Así que nos ahorramos en un archivo HTML., no en un archivo PHP.. Estas cosas no significarían nada en un archivo PHP.. Así que estamos en un archivo HTML.. ¿Qué es lo primero Tengo que escribir? Quiero poner un poco de PHP código en un archivo HTML. AUDIENCIA: PHP, como otro de zanahoria y signo de interrogación PHP, ¿verdad? JASON HIRSCHHORN: Muy bien. Y ¿cómo puedo terminar eso? AUDIENCIA: Con un signo de interrogación. JASON HIRSCHHORN: Eso es genial. Esa es la primera cosa que necesito si quiero poner un poco de código PHP en aquí. AUDIENCIA:. Pensé que un PHP archivo podría tener HTML. JASON HIRSCHHORN: Si. Un archivo PHP. Puede tomar algún HTML y visualizar. Ese fue mi error. Yo sólo estaba tratando de imitar lo que era en el cuestionario. Bueno, lo siento para confundirte. Sí, practice.HTML. Ahora vamos a poner algo de código PHP pulg ¿Cuál es la primera línea de Código PHP debo escribir? Voy a ir a través de esta matriz y convertirla en una mesa. Sí. AUDIENCIA: Usted puede utilizar un bucle for H o ​​un bucle for. JASON HIRSCHHORN: OK, ¿qué Qué quieres usar? AUDIENCIA: Me gustaría utilizar un bucle for. Para, y luego lo hace el signo de dólar i es igual a 0 y coma dólar firmar i menor que 2. Y entonces coma i dólar firmar i plus plus. JASON HIRSCHHORN: ¿Cómo usted sabe utilizar un 2? AUDIENCIA: Porque había dos matrices asociativas dentro de la más grande matriz asociativa. JASON HIRSCHHORN: Así que lo más grande de no un conjunto asociado. Lo más importante es simplemente una matriz normal. Pero tienes razón, hay dos matrices asociativas dentro de nuestro arsenal más grande. Es por eso que utiliza dos. Me siento incómodo asumir que son 2, así que lo que es una manera de escribir esto sin asumir que son 2? AUDIENCIA: [inaudible]? JASON HIRSCHHORN: OK, ¿cómo Cómo se escribe eso? AUDIENCIA: signo de dólar Foreach tfs o como signo de dólar tf. JASON HIRSCHHORN: OK, así que para cada tfs tfs como, quiero, ahora de nuevo, tener mi mesa. Entonces, ¿quién me puede dar la siguiente línea de código? AUDIENCIA: Imprimir y, a continuación, en citas, extremo tr soporte soporte, fin de la cita. Paréntesis End, y coma. JASON HIRSCHHORN: OK, y ¿Qué es eso que va a hacer? AUDIENCIA: Se va a decir, nueva fila. Se va a poner el etiquetar para una nueva fila. JASON HIRSCHHORN: Correcto, este PHP, como hemos hablado antes - esta PHP va a ser evaluado, y luego que va a imprimir en el archivo una mesa de remolque y, a continuación, que Se evaluará HTML. Sólo estamos copiando este HTML que tuvimos aquí. Sí. AUDIENCIA: [inaudible]? JASON HIRSCHHORN: ¿Lo sientes? Está justo aquí. Otoño 2012. No mire las respuestas, vamos a resolver juntos. Así imprimimos fila de la tabla. Así que es probable que en el ritmo de las cosas. ¿Cuál es la próxima línea de código que necesitamos para escribir? Assam, dame la siguiente línea de código. AUDIENCIA: Es necesario el nombre del tf. Tf soportes abiertos comillas nombrar soportes cerrados. JASON HIRSCHHORN: Déme su nombre. AUDIENCIA: Usted necesita imprimir eso. [VOCES interponiendo] JASON HIRSCHHORN: OK, ¿Cómo lo imprimo? [VOCES interponiendo] JASON HIRSCHHORN: me falta algo ahora. ¿Qué me estoy perdiendo? AUDIENCIA: Usted necesita un signo de dólar. JASON HIRSCHHORN: ¿Qué cosa que me estoy perdiendo? Todos hemos impreso hasta el momento es el tr. AUDIENCIA: Cierre el tr después de ella. JASON HIRSCHHORN: Así que necesitamos para cerrar el TR después. ¿Quién ve lo que nos falta en la línea 16? Sí, Anna. AUDIENCIA: Usted necesita abrir un td y llaves. JASON HIRSCHHORN: ¿Y dónde ponemos las llaves? AUDIENCIA: Alrededor del nombre tf. JASON HIRSCHHORN: ¿Así? AUDIENCIA: Si. Y a continuación, cierre el td. JASON HIRSCHHORN: ¿Así? AUDIENCIA: ¿Necesita comillas marcas al lado de las llaves? JASON HIRSCHHORN: ¿Aquí mismo? No, no lo haces. Así que eso es exactamente correcto. Sí. AUDIENCIA: Así que la diferencia entre ese y encatenating con puntos es, si utiliza puntos, usted tendría que tener la comillas dobles, a continuación, un punto, entonces el punto - JASON HIRSCHHORN: Correcto. Así que estás diciendo que hay un final manera de escribir esta así. Lo que el operador de concatenación en JavaScript? AUDIENCIA: Un signo más. Usted se olvidó de poner el rizado corsé para la espalda. JASON HIRSCHHORN: Muy bien. Y hay una línea más de código que falta. ¿Quién me puede dar la última línea de código que nos falta? AUDIENCIA: Sólo exactamente lo mismo, sólo con la casa en lugar del nombre. Gran JASON HIRSCHHORN: Muy bien. Y su sintaxis es exactamente el adecuado para hacer las cosas en una matriz asociativa. Así que en la prueba real, usted es realidad dada hasta aquí. Así que este código se le dio a usted. Todo lo que tenía que escribir eran estos cuatro líneas y recordar a cerrar la etiqueta de tabla. Ustedes realmente hizo todo eso y más. Sí. AUDIENCIA: Así que sería funcionalmente lo mismo si usted acaba de tener que todos en una llamada impresión grande, ¿verdad? Y a continuación, sólo concatenado en, et cetera? JASON HIRSCHHORN: ¿Así? AUDIENCIA: Si. Simplemente no se ve bien si fueras mirarlo cuando se está inspeccionando el elemento en su sitio web, ¿no? JASON HIRSCHHORN: Estoy de acuerdo. Si Cargué esta página web, sería yo capaz de ver el código PHP, nunca? AUDIENCIA: No. JASON HIRSCHHORN: No. Y, de hecho, no lo haría. AUDIENCIA: Este no es el HTML, ¿verdad? Así que usted puede ser capaz de - JASON HIRSCHHORN: Así que esto haría PHP evaluar lado del servidor. PHP siempre se evalúa lado del servidor, por lo que nunca se es capaz de ver el código PHP. AUDIENCIA: Pero usted sería capaz de ver el resultado de las impresiones. JASON HIRSCHHORN: Así es. Y sinceramente, no podría poner todo en la línea. Podría darle formato muy bien para usted, o puede ponerla en una línea. Incierto. Pero eso sí, buen punto. AUDIENCIA: ¿Cómo es que hay sin resaltar texto para cualquiera de los comandos de PHP? Porque yo recuerdo haber visto eso. JASON HIRSCHHORN: Porque es una Archivo. HTML aquí en la parte superior. Ahí lo tienes. AUDIENCIA: Si lo hiciéramos el método inicial con la de los bucles, derecha, si nos querido acceder a un tfs, ¿verdad hacer soporte tfs 0 soporte, entonces [Inaudible]? JASON HIRSCHHORN: Lo harías - por lo que dices para el bucle for lo haría en el signo de dólar tfs soporte 1 o i, claro. O signo de dólar cierro soporte y luego corchete comillas, sí. Bien, excelente. Tenemos uno más uno rápido. Siete minutos, por lo que quiero para repasar esta. Este es otro ejemplo. Estamos ahora totalmente otro idioma. Tenemos algo de código HTML. Es un poco pequeña en la pantalla, pero Quiero que mira a través de lo que realmente rápidamente, y puede que alguien me diga, si yo fuera a mostrarse la página web, lo que vería? Describir todo lo relacionado con esta página web. Noé? ¿Qué voy a ver? AUDIENCIA: Código en la parte delantera de Google, con una idea de texto y un botón de enviar. JASON HIRSCHHORN: ¿Y qué diría el botón? AUDIENCIA: Submit. Oh, en esta categoría. Lo siento. JASON HIRSCHHORN: Diría búsqueda. Recuerde que el nombre. ¿Para qué utilizamos el nombre de? Este atributo de nombre, lo que es que se utiliza? [VOCES interponiendo] AUDIENCIA: Ese es su nombre para cuando se hace clic? JASON HIRSCHHORN: Eso podría ser. Pero, ¿qué es lo que generalmente vemos - ¿por qué estamos dando esta cola se llama? ¿Por qué vemos eso? Sí. AUDIENCIA: ¿Eso no convertirse índice de la variable súper global? JASON HIRSCHHORN: Sí, generalmente cuando esta forma presentaría, y entonces, ¿dónde sería este presente a? ¿En qué página? Noé, lo que sería esta página someterse a? AUDIENCIA: No estoy seguro. JASON HIRSCHHORN: ¿Dónde Podríamos podemos encontrarlo? ¿Dónde encuentras lo que la página se somete a? ¿Qué línea de código? AUDIENCIA: acción Form. JASON HIRSCHHORN: Exactamente. Acción. Por lo que se somete a la página de búsqueda. Búsqueda barra invertida. Así que eso es exactamente correcto. ¿Qué método? AUDIENCIA: Obtener. JASON HIRSCHHORN: Obtener. Exactamente. Así leemos esto. Esto va a ser una forma. Tienes toda la razón. Dos cosas sobre la forma, el título de la página y la parte superior sería Google. Así que aquí hay dos preguntas que debe ser capaz de responder sobre esta página. Si este código HTML vive en este sitio web y el usuario introduce error en este texto campo aquí, ¿qué URL se al usuario a encontrar a sí misma en enviar el formulario? Así que tenemos esta aquí. Voy a volver a esta página, sin embargo. Voy a escribir esta primera parte. ¿Todos pueden ver por aquí? Bueno, Mario, que crees que sabes? ¿En qué página? AUDIENCIA: Backslash búsqueda. JASON HIRSCHHORN: Voy para bajar aquí. Aceptar, la barra invertida question marca q es igual a error. ¿Alguien tiene una sugerencia diferente? Sí. Entonces, ¿cómo hacemos para que esto? Bueno, hemos visto esto antes. Y se le ocurrió esto antes. Tenías razón, Noah, que el acción nos está diciendo lo que página vamos a. También sabemos qué método. Estamos haciendo get. Y la diferencia entre GET y POST es que consiguen muestra en la URL y después no lo hace. Así que si escribía poste derecho existe en el método, ¿qué sería diferente? AUDIENCIA: Sería justo ser la búsqueda de roza. JASON HIRSCHHORN: sería sólo se roza la búsqueda. Nada por aquí iba a suceder. Pero debido a que es un hacerse, la URL se muestra de la siguiente manera. En primer lugar vemos un signo de interrogación y vemos que el nombre y el valor. Diga había otro campo de texto y Le di un nombre de r y de entrada un valor, oruga. ¿Cómo sería esto ahora parece? Tengo uno más campo de texto, me dará una nombre de r y un valor de oruga. AUDIENCIA: Después de bar tendrías la oruga y comercial. JASON HIRSCHHORN: Eso es No ampersand. AUDIENCIA: ¿O sólo lo y el símbolo. JASON HIRSCHHORN: Sí, no. Tenías razón, me equivoqué. Eso es como un g. AUDIENCIA: Caterpillar. r es igual a la oruga, lo siento. JASON HIRSCHHORN: ¿Hay no r ahí? AUDIENCIA: No, no hay. JASON HIRSCHHORN: Hablaremos acerca de que después de la clase. Eso es exactamente correcto. Así que el y es correcta. Y entonces usted podría tener muchos de éstos, y todos ellos se pueden concatenar junto con que y. Así que eso es exactamente correcto. Hay una pregunta más. Dibuje DOM de este HTML, a partir con el documento. Podríamos hacer eso en dos minutos. Lo haremos aquí. Voy a volver a esta página web. Bien, empecemos con el documento. ¿Qué sigue? Así que cuando usted está leyendo a través de - AUDIENCIA: HTML. JASON HIRSCHHORN: HTML es el siguiente. Vamos a ir etiqueta por etiqueta. ¿Qué hay después de HTML? AUDIENCIA: Head. JASON HIRSCHHORN: Head. ¿Qué hay después de la cabeza? AUDIENCIA: Título. JASON HIRSCHHORN: Título. Y el título tiene un valor de Google, pero yo no voy a escribir que en por ahora. Bueno, ¿a dónde va el cuerpo? AUDIENCIA: Además saliendo del HTML. JASON HIRSCHHORN: Exactamente. Cuerpo sale de aquí. ¿Todo el mundo entiende por qué ese es el caso? Probablemente debería ser capaz de averiguar esto, también, aunque yo no tenía este bonito sangría. La sangría especie de lo delata, pero se puede ver que la etiqueta de la cabeza tiene han cerrado, lo que nos indica que probablemente no se puede bajar aquí. Tenemos que volver a subir a lo Fue justo antes de la cabeza etiqueta, o en virtud de eso. Estamos aún con la etiqueta de la cabeza. Y bajo el cuerpo va formulario. Bajo la forma, hay dos entradas. Aceptar. Eso es todo lo que tengo. Prueba 1 es mañana. Estoy tan emocionada por ustedes. Va a ser una explosión. Si usted tiene - AUDIENCIA: [Aplausos] JASON HIRSCHHORN: Oh para, para. Pero no, no estoy bromeando. Si usted tiene alguna pregunta, por derecho después de la sección, voy a estar fuera. Si usted tiene alguna pregunta esta noche, no dude en llamar, correo electrónico, Gchat, portadora me Pigeon. Buena suerte mañana. Tener un descanso de Acción de Gracias maravilloso, si yo no te veo antes de esa fecha. Y voy a verte después de Acción de Gracias el martes para nuestra última sección de fiesta de la historia. AUDIENCIA: [inaudible]. JASON HIRSCHHORN: Muy bien. Bueno, voy a ver ustedes el próximo semana, o en dos semanas. Y buena suerte mañana.