[REPRODUCCIÓN DE VÍDEO] [CAR PUERTA Apagado] [CAR MOTOR DE ARRANQUE] [REPRODUCCIÓN DE MÚSICA] -Los Que se mueven a lo largo de la derecha en busca de buenos momentos y buenas noticias. Con buenos amigos que no se puede perder. -Esto Podría convertirse en un hábito. Golpes -Oportunidad Vamos simplemente llegar y agarrarlo. -Sí! -junto Vamos a NAB ella. Autostop ll del `, autobús o taxi amarillo él. -Dammit. -Estamos En movimiento justo a lo largo. -Footloose Y de lujo. -Cómo No es parte de la diversión. Venga a compartirlo conmigo. -Estamos En movimiento justo a lo largo. -Estamos Va a compartir la carga. -Nosotros No necesita un mapa para conseguir este espectáculo en el camino. -Oye Fozzy, quiero que gira a la izquierda si se llega a un tenedor en la carretera. -Sí señor. Gire a la izquierda en el tenedor en la carretera. Gire a la izquierda. -No Creo eso. -Cruising Derecha a lo largo encontramos las luces en la carretera. -Y Tu camino o camino. -Así Que confían en mi navegación. Estrellas -Movie con coches llamativos y la vida con la capota bajada. -Estamos Asaltando las grandes colinas. -Sí, La tormenta es el adecuado. ¿Debe ser nevando? -No, No lo creo. -Los Que se mueven a lo largo de la derecha. -Footloose Y de lujo. -Eres Listo para el gran momento. -¿Es Listo para mí? -Los Que se mueven a lo largo de la derecha. La derecha móvil adelante. La derecha móvil adelante. La derecha móvil adelante. -Creo Que usted tira mejor terminado. -Sí señor. [FIN DE REPRODUCCIÓN] [Aplausos] DAVID J. MALAN: Este es CS50. Y este es el final de la Semana 0, pero el comienzo de una hermosa amistad. Estamos muy contentos de estar aquí, en la Universidad de Yale por primera vez con nuestro amigo Scaz, y Jason, y Andy. Todos los 40 de la de CS50 TF y CA está aquí en Yale. Y todos ustedes. Y de hecho, es probable que sea hora a-- [Aplausos] Así, a pesar de que la mayoría de las conferencias será de hecho estar en Cambridge este año, la realidad es que por diseño, y mucho deliberadamente CS50, Yo creo que estamos llegando al punto tecnológicamente, y pedagógicamente, donde puede ser un educativa superiores experiencia para colaborar con algunos de material en línea del curso. De hecho, el reality-- y si creo este philosophically-- es que las conferencias no son un particular medios eficaces para la entrega información bastante compleja. Ciertamente durante horas más largos períodos de tiempo. Y, de hecho cada pocos minutos-- Recuerdo que a mí mismo en college-- Zona que fuera por un momento, se olvida de algún tema complejo, y te has ido más o menos para los próximos 45 minutos. Y la realidad es que si usted está aquí en New Haven o Cambridge o más allá, la simplicidad de tener la capacidad de hacer una pausa y avance rápido, rebobinar, hipervínculo relacionado los recursos, las transcripciones de búsqueda de texto completo y similares es una oportunidad que Me atrevo a decir para nuestros estudiantes en línea mucho más allá de New Haven, les ofrece una oportunidad para captar realmente la material conceptual que nos introducir en las clases tanto mejor. Pero en última instancia, en el CS50, es la experiencia de los estudiantes se caracteriza por lo que, de manera mucho más por conjuntos de problemas del curso, o proyectos de programación semanales, la secciones de los cursos dirigidos por el docente becarios, las horas de oficina nocturnas dirigidas por los asistentes del curso y la enseñanza compañeros, y de hecho tales eventos como CS50 Puzzle Día, Hack-a-thon del CS50, el CS50 Feria, almuerzos semanales, y mucho más. Y así, si usted está aquí en Nueva Haven, o sintonizar desde lejos, hoy en Cambridge, y nos veremos de nuevo pronto, la realidad es que esto es una y la misma clase. Y estamos muy emocionados de estar aquí todos juntos hoy. Y así, al final del semestre, ya sea aquí o lejos, así esperamos que pueda llevar con orgullo, con alegría, y tal vez con un poco de alivio, la camisa que da testimonio a usted de haber tomado CS50. Entonces, ¿dónde nos dejamos fuera el miércoles? Tomamos un vistazo a pensamiento computacional. Y eso es hacia lo que destilada ciencias de la computación a, por lo menos Por ahora. Pero destilada que poco más en al menos tres elementos componentes. Las entradas, por lo que lo que es el problema que estamos tratando de resolver? Salidas, ¿cuál es la Respondemos que esperamos conseguir? Y la representación de allí. Y no vamos a insistir aquí en después en binario, o incluso ASCII, y similares tanto, pero más bien dar por sentado que podemos representar esta información, porque las partes mucho más interesante de esos problemas no son sólo la entradas y salidas, pero los algoritmos que intervienen en la solución de esos problemas. Y se puede recordar de el otro día que nos tomó un bastante tradicional concepto de mirar a alguien en un libro de teléfono bastante grande, o más generalmente digitalmente estos días, sólo un conjunto de datos muy grande. Una lista de contactos muy grande, con un montón de nombres ordenados alfabéticamente. Y nos dimos cuenta de que mientras yo podría abordar este problema simplemente mediante el uso de un lineal página approach-- por página, o incluso dos de en un tiempo-- nos dimos cuenta que el algorithm-- más intuitivo sólo tipo de dividir y conquistar el problema de nuevo, y otra vez, y otra vez-- reducir a la mitad con cada tiempo, nos dio este resultado verde. Y es tanto más plana porque sugiere que, aun cuando este problema hace más grande y más grande, como es el caso en estos días con los datos conjuntos y reality-- Facebook y Google resultados de la búsqueda y la como-- hace nuestro algoritmo realizar la misma eficacia con esos bocados más grandes como lo hizo incluso con los bocados más pequeños. Ahora se plantea la pregunta, ¿qué podemos realmente resolver similar con este tipo de intuición? Este tipo de división y conquista? Bueno, podríamos hacer algo como esta hoy aquí. Podríamos tomar asistencia. Así que tal como 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11- no va a ser todo lo que eficiente. Así que espere, la escuela primaria. 2, 4, 6, 8, 10, 12, 14, 16, 18 y así sucesivamente. Pero podríamos hacer un poco mejor? Estoy bastante seguro de que no puedo hacer esto por mí mismo. Así que si vas a humor nos por sólo un momento, llevamos con nosotros un algoritmo que es Acabo de tres pasos, pero sí exigir: si no mente-- todos se levantan, si tú pudieras. Así, con todos nosotros ahora de pie, paso uno de este algoritmo es la siguiente. Ponte de pie y asignar usted mismo el número 1. Así que en este punto en el tiempo, literalmente, todos en esta sala esperemos que se piensa a sí mismos, Sin embargo torpemente, el número 1. Ahora el paso dos de este algoritmo es va a involucrar a la siguiente. Paso dos, emparejarse con alguien de pie, añadir sus números juntos, y adoptar la suma como su nuevo número. Comprobación de validez rápida. ¿Qué número está todo el mundo pensando ahora? Así que 2, excepto quizás por uno, torpe, persona solitaria. Si tenemos un número impar de personas en la habitación. Así que una persona puede seguir siendo el número 1, que está bien. Pero paso tres aquí, uno de que debe sentarse. El otro debe ir de nuevo al paso dos, y repetir, si lo haría. Así que si sigue en pie, debe ser entre aquellos que se remonta al paso dos. Continua. Algunas personas aún en pie. Así que, si sigue en pie, emparejarse con alguien. Muy bien, la disminución de abajo. Algunas personas aún en pie. Voy a ayudar si es necesario. Recuerde la conclusión clave aquí, es cómo mucho más rápido esto es que yo contando. Así que vamos a ver. Yo puedo ayudar. Entonces, ¿qué número son aún pensando? AUDIENCIA: Estoy en 44. DAVID J. MALAN: 44, por lo que seguir adelante y sentarse. ¿Qué número está pensando? AUDIENCIA: 74. DAVID J. MALAN: 74. Muy bien, adelante y siéntate. ¿Quién más se sigue de pie? 86. Y es nadie más aún en pie? ¿Qué número? Escuché 67. Y luego, en la parte superior? 32. ¿Alguien más aún en pie y pensando en un número? Oh hola. Apenado. Vuelvo enseguida. 42. ¿Alguien mas? AUDIENCIA: 47. DAVID J. MALAN: 47. ¿Hay alguien más aún en pie que no se ha contado? Así que el número final de personas en una habitación que tiene 497 asientos es-- todos los cuales son filled-- es 390. Así que esto es genial. Pronto vamos a discutir la noción de un error en un programa informático. Pero vamos a volver a que en poco tiempo. Pero en teoría, lo que podría haber pasado hace un momento? Así que a pesar de que había tres grandes pasos de este algoritmo, cada uno de los era sólo un poco de una operación grande. Y había una ciclicidad a ella en que si estuviera todavía en pie, que siguió su camino desde el paso tres a dos, paso tres a dos, paso tres a dos. Pero lo que siguió ocurriendo en cada iteración? Cada ciclo de este bucle? Que estaba pasando en la habitación en otro lugar? No sólo la misma cosa, pero lo que que estaba sucediendo a la mitad de ustedes? Sentándose. Y lo que hay en la mentira esta idea, al igual que el ejemplo de libro de teléfono, en que si la mitad de los que son sentarse cada vez, el problema está empezando con tal vez 400 personas, luego a 200 personas, de 100 personas, luego de 50 personas, y así sucesivamente. Y así reducir gradualmente en la teoría a una sola persona, pensando en el valor total de todos. Ahora la realidad, algunas dinámicas sociales, y algunos errores aritméticos podría contribuir a ese fallo definitivo. Pero en teoría, mientras yo seguía contando distancia, teniendo varias docenas pasos, o cientos de pasos a contar a vosotros mismos, a contar una sala llena de más o menos 500 personas debería haber tenido muchos menos pasos, porque sólo se puede dividir 500 y medio tantas veces. Y así, al igual que con el teléfono reservar ejemplo, el otro día, nos tenemos algo logarítmica por así decirlo, con lo cual si todos fuéramos operando al unísono, e ignorando el errores de adición, ¿verdad han logrado exactamente ese tipo de tiempo de ejecución? Ahora, para ser justos, una especie de trampa, en que me ha atraído otros recursos. Considerando que es sólo uno de mí, Yo apalancadas cientos de ti. Pero eso podría decirse que es un ejemplo de procesamiento en paralelo, o un estado del arte muy en boga donde las computadoras en estos días tienen múltiples CPUs, o más técnicamente, más múltiples núcleos, y verdaderamente puede hacer múltiples cosas a la vez, al igual que todo lo que estamos haciendo allí, en paralelo. Pero recordar que lo que También lo hizo el miércoles fue tratar de capturar esta intuición y formalizar en el código. Algo así como pseudo-código. Y de hecho, y espero que perdonar, es como 80 grados en aquí. Así que me voy a tomar esto fuera por sólo un poco. Lo que pensé que haríamos es la transición ahora a una aplicación mediante el cual nos comprometemos nuevamente a la audiencia, pero escribir un programa en Inglés como la sintaxis, con el cual resolver este problema aquí. [REPRODUCCIÓN DE VÍDEO] Mantequilla de maní tiempo jalea -Es. La mantequilla de maní tiempo jalea. La mantequilla de maní tiempo jalea. Camino ya! Camino ya! Camino ya! Camino ya! Ahora hay que ir! ¡Ahi tienes! ¡Ahi tienes! ¡Ahi tienes! Mantequilla de maní jalea! Mantequilla de maní jalea! Mantequilla de maní jalea! Mantequilla de maní jalea! Maní, jalea de la mantequilla de maní! Mantequilla de maní jalea! Jalea de cacahuete mantequilla con un bate de béisbol. [FIN DE REPRODUCCIÓN] DAVID J. MALAN: --que video, pero es un poco adictivo, si no es un poco molesto. Pero para hacer esto, pensé que lo que habíamos hacer es tratar de escribir un programa conjunto, para lo cual necesitamos tres voluntarios. Tiene que ser cómodo en cámara e internet. Sam, vamos para arriba. Camisa púrpura, aquí, vamos para arriba. Y a partir de aquí, déjame ir un poco más atrás. Carmesí y camisas azules, vamos para arriba. Perfecto. Ven ahora. Vamos para arriba, vamos para arriba. ¿Y cual es tu nombre? Erica. David, un placer conocerte. Si desea aprovechar esta sede aquí. Este es Sam. ¿Cómo te llamas? Antonio. Antonio, un placer conocerte. Erica y Sam, si lo gustaría tener un asiento aquí. Lo que hemos venido preparado con, ya que estos chicos están descubriendo, es los ingredientes con la cual hacer una mantequilla de maní y jalea. Ahora bien, esto podría ser algo que usted toma mucho por sentado. Pero nos hemos dado a cada uno de nuestros tres voluntarios aquí-- dos voluntarios y Sam aquí, un hogaza de pan cada uno, un plato, un cuchillo, un frasco de jalea o mermelada, y un tarro de mantequilla de maní. Y el objetivo que nos ocupa ahora es va a ser para estos tres hacer una mantequilla de maní y mermelada. Pero lo que vamos a hacer es esperar el audience-- ya todos ustedes sin duda saben cómo hacerlo esta tan bien en reality-- van a proporcionarnos la instrucciones paso a paso. El pseudo-código, si se quiere. Así que voy a jugar el papel de escriba aquí. Y yo tengo una pequeña lista de cosas por hacer, y de manera que cada uno de ustedes, uno a la vez, pide un potencial instrucción, voy a escribirlo, repetir si es necesario. Y entonces ustedes van a hacer una mantequilla de maní y mermelada sólo haciendo lo que le dicen. Así que pensar en sí mismos como los ordenadores. Sólo se puede hacer lo que te dicen. No hay suposiciones, sin preguntas. Sólo tiene que hacerlo. Entonces, ¿quién le gustaría aventurar la primera instrucciones para hacer un sándwich PBJ? En el balcón hay. AUDIENCIA: Abra la bolsa de pan. DAVID J. MALAN: Abra el bolsa de pan, si se quiere. Así que vamos a ver. Vamos a iterar, y obtener un poco más preciso. Buena forma de empezar sin embargo. El segundo paso, alguien más. Ahora nadie quiere ser voluntario. Paso dos, en el frente. AUDIENCIA: Abra el interior bolsa de pan también. DAVID J. MALAN: Abra el bolsa interior de pan también. Grande, que aprender. Un poco más preciso. Vamos a conseguir este trabajo. Sí, en camisa verde. AUDIENCIA: [inaudible] DAVID J. MALAN: Rebanadas de pan. Retire con cuidado dos rebanadas de pan. Eso es bueno. El cuarto paso, alguien más? Por aquí, ¿no? AUDIENCIA: [inaudible] DAVID J. MALAN: Coloque el pan en el plato. Paso cinco? Paso cinco, ¿sí? AUDIENCIA: [inaudible] DAVID J. MALAN: Encima de-- oh, mano. Coloque la mano en la parte superior de la mantequilla de maní. ¿Es eso lo que me dirijo? AUDIENCIA: Sí, y desenroscar. DAVID J. MALAN: Y-- decirlo de nuevo. AUDIENCIA: [inaudible] DAVID J. MALAN: Y puso el tapa al lado de la mantequilla de cacahuete. Ligeramente coloque la mano en la parte superior de la mantequilla de maní, y desenroscar, y poner la tapa junto a la mantequilla de cacahuete. OK, paso seis. Paso seis, alguien más. ¿Sí? AUDIENCIA: [inaudible] DAVID J. MALAN: Dilo otra vez. AUDIENCIA: Repita el paso cinco de nuevo. DAVID J. MALAN: Y repetir el paso cinco más, que se va a crear un poco de un problema ahora si que estamos haciendo este paso a paso. Así que ahora vamos de nuevo al paso cinco. Ligeramente colocar la mano en la parte superior de mantequilla de maní y desatornillar y poner la tapa al lado de la mantequilla de maní. Entonces captar la mantequilla de maní y repita el paso cinco de nuevo. Así que vamos a anular ese bucle infinito, si se quiere. Paso siete, otra persona. Sí, en la parte trasera. AUDIENCIA: [inaudible] DAVID J. MALAN: top --en de otra. AUDIENCIA: [inaudible] DAVID J. MALAN: En la Por otro lado en el otro superior. ¿Quieres simplemente venir aquí? ¿Cómo termino la instrucción? ¿Qué hay del resto de la instrucción? AUDIENCIA: Haciendo caso omiso de esa parte. DAVID J. MALAN: Haciendo caso omiso de esa parte. Empecemos de nuevo. Paso siete. AUDIENCIA: [inaudible] DAVID J. MALAN: Agarre con oponerse a mano-- esto es bueno. Esto es realmente bueno. AUDIENCIA: [inaudible] DAVID J. MALAN: Y jar-- plástico AUDIENCIA: [inaudible] DAVID J. MALAN: Y twist-- AUDIENCIA: [inaudible] DAVID J. MALAN: Durante dos segundos. Sólo tienes que abrir el tarro de mantequilla de maní. Espero que perdones. Así que vamos a suponer que llegamos allí. Abra el tarro de mantequilla de maní. [Aplausos] DAVID J. MALAN: Paso ocho, vamos. Paso ocho, sí, en la parte trasera. AUDIENCIA: [inaudible] DAVID J. MALAN: Good. Paso nueve, ¿sí? AUDIENCIA: [inaudible] DAVID J. MALAN: --out de el tarro de mantequilla de maní. Y- y qué? AUDIENCIA: [inaudible] DAVID J. MALAN: Y cuchillo puesto de nuevo en la mantequilla de maní. Paso diez. Paso diez. AUDIENCIA: [inaudible] DAVID J. MALAN: Ponga el cuchillo y, a continuación, retire el precinto. Agradable. Fuera de la mantequilla de maní. Muy bien, el paso 11. AUDIENCIA: [inaudible] DAVID J. MALAN: OK, ordenador gris siga equipo azul o rojo. Bien. [Aplausos] DAVID J. MALAN: Tráenos casa. Par de pasos más. ¿Que sigue? Pasos 12. Paso 12. ¿Sí? AUDIENCIA: Pon una de las rebanadas de pan suavemente en una de sus manos. DAVID J. MALAN: Una de sus manos. Y luego, paso 13. ¿Sí? AUDIENCIA: [inaudible] DAVID J. MALAN: rebanada --en de pan. Bien. Bastante bien. Paso 14, sí. AUDIENCIA: Deshacer el paso 13. DAVID J. MALAN: Deshacer el paso 13. Vamos a pasar a la jalea. Es un programa de 100 pasos, pero estamos estábamos en el paso 15. Sí. AUDIENCIA: [inaudible] DAVID J. MALAN: 7 a 13 usando la jalea, porque los que fue tan bien. Repita los pasos 7 a 13, usando la gelatina. Así captar la mitad inferior de la tarro de la jalea con una mano en la parte superior. Por otro lado de la otra superior, haciendo caso omiso de esa parte, agarrar con las manos opuestas, la tapa y el frasco de plástico en la parte inferior, y torcer durante dos segundos. A continuación, abra el frasco de jalea. Y por último, vamos a tratar de darnos algo comestible. Paso 16. Así que ¿por qué no lo dejamos ahí. Muchas gracias a nuestros tres voluntarios. [Aplausos] Tenemos un poco de CS50 bola de la tensión para usted. Iba a ser un sándwich pero- ¿y qué era el punto, más allá de tener un poco de diversión con el algoritmo? Pero la realidad es que, incluso cuando estás programando una computadora, tiene que ser súper precisa. Como complejo o intimidante como su propio ordenador muy bien podría ser la de que, al menos cuando algo sale mal, la realidad es que es un bastante tonto dispositivo que fue inventado por nosotros los seres humanos, y sólo puede hacerlo un subconjunto de lo que hacer-- veces ciertamente faster-- pero no sabe cómo hacer suposiciones. No sabe cómo estar en la misma longitud de onda que tú. Sólo se hará precisamente lo que le dices. Y vas a ser golpeado, tal vez, a medida que comenzamos escribir código real con el primeros boletines de problemas y más allá, lo fácil que es hacer una suposición como un ser humano, y no preveo que necesito para manejar ese caso, o que el caso de la esquina, por así decirlo, que podría muy bien surgir si, por ejemplo, Sam tenía la única jar squeezable de gelatina, mientras que todos los demás tenían algunos frascos de vidrio como bien. Así que antes de que nos dirigimos nuestra atención a algo de código real, permítame presentarle el las cabezas de los cursos aquí en Yale. Nuestros amigos Scaz, Andy, y Jason venir y decir hola. [Aplausos] SCAZ: Hemos perdido Jason temporalmente. Hola de nuevo, todo el mundo. Mi nombre es Scaz. He estado enseñando en Yale desde 2001. Y cuando no estoy enseñando, mi investigación se encuentra en la robótica y la inteligencia artificial. Y el anuncio de que tengo hoy es que a partir de un par de semanas, vamos a traer algunos material complementario para CS50 para hablar sobre el software de inteligencia. Vamos a hablar de cómo sitios como Netflix y Hulu puede recomendar películas que es posible que desee ver. ¿Dónde vamos a hablar acerca de cómo coches sin conductor en realidad funcionan. Y vamos a ser capaces a tierra estas cosas en los conceptos que usted está aprendiendo en esta clase de hoy. Debido a que todas estas cosas son construido sobre la misma base. Y eso es lo que este serie explorará. Así que estoy realmente esperando con ganas de ver más de ti todos, y que vas a llegar a ver más de todos nosotros muy pronto. Permítanme presentarles a Jason. JASON: Hola a todos. Mi nombre es Jason. Lamentablemente, yo fui a Harvard como estudiante. Eso va a cortarse fuera de la corriente real. Y ahora estoy aquí como un profesor de el departamento de ciencias de la computación. Y yo estoy ayudando a ejecutar el curso con Scaz, David y Andy. ANDY: Hola chicos. Andy de mi nombre. Yo soy en realidad el único Yale estudiante en el escenario ahora. [Aplausos] Estoy en Berkeley College, originalmente de Solon, Ohio. Y yo era uno de esos niños donde, cuando llegué a la Universidad de Yale, Realmente pensé que yo nunca lo haría tiene que mirar a un número cada vez más. Y entonces me di cuenta de que necesitaba tanto la ciencia como QR créditos para graduarse. Y así mi primavera estudiante de primer año, tomé una clase, un CS, introducción clase CS aquí en Yale. Yo estaba como, esto es como realmente muy bien. Y mientras que en realidad terminó declarando Como los asuntos globales importantes, las habilidades Aprendí en CS y programación son tan aplicables a cualquier campo usted elige hacer. Y el personal aquí en Yale, hemos sido tan duro en el trabajo para prepararse para ustedes. Y nosotros esperamos ver todo en las secciones y oficinas horas. Así que sí. [Aplausos] DAVID J. MALAN: Gracias. Así que antes de que empezara la clase, tuvimos la oportunidad caminar por el campus con un teléfono celular y tomar algunos selfies en forma de video de verdad mi primera gira por el campus de Yale aquí. Y por lo que pensamos que nos gustaría compartir una áspera corte de exactamente esto como Scaz y Andy y Jason me llevó por el campus. [REPRODUCCIÓN DE VÍDEO] [SIRENAS] -David. -Bienvenido A Yale. -Me alegro de verte. -Me alegro de verte. -¿Podemos Ir en un viaje? -Vamos A ir en un tour. Visita -road. -Este Signo ha estado allí por un tiempo. -Whah, CS50. -Hurry! Vamos vamos vamos vamos. Usted debería [inaudible] Harkness Tower. -Y Vimos que un par de veces. [Aplausos] -Mira Hacia fuera para la moto! Ahh! Hola Frank. -¿Qué Pasa, muchachos? -¿Como estas? -Me alegro de verte. -Bienvenido Al video. No actúes demasiado excitado. -Me Encanta Silliman. Ahh! -Ha Pasado cerca de tres horas desde Jason tenía helado y Nutella. Así que tenemos que parar de vuelta en Silliman para un poco. -No Es incluso [inaudible] sin embargo, sólo el hecho de que tienen aquí es tan increíble. Amigo, hay Nutella en cada comida. -No Fue el año pasado también. -Sí. -Dile mucho acerca de Yale hasta ahora. Pero yo ahora que TD allá. Y eso es considerado fuera de la escuela. -Aquí Tenemos la arquitectura gótica. Mundialmente famoso. Tenemos una arquitectura más gótico. Y construcción, y arquitectura más gótico. Hola. Aquí es donde vamos a tener horario de oficina De martes a jueves en Hogwarts, como [inaudible]. -Correcto. Eso es todo para la gira. Estamos en la Universidad de Yale de Facultad de Derecho, donde la conferencia de hoy está a punto de tener lugar. Vamos a la cabeza en. [FIN DE REPRODUCCIÓN] DAVID J. MALAN: Y eso nos trae aquí ahora. Así que hasta el momento, hemos estado centrándose en pseudocódigo, que es esta sintaxis Inglés-como. No tiene ninguna especificación prescrita. Es sólo que utilizar algunos lenguaje intuitivo si quiero explicar lo que quieres hacer. Pero vamos a empezar ahora a la transición al código, ya que la mayoría de la gente diría. Pero más precisamente, algo conocido como código fuente. Este es el lenguaje que los humanos escriben que las computadoras ultimately-- posiblemente después de cierto número de steps-- entiende en última instancia con el fin de saber cómo hacer algo. Que vio un atisbo de esto tal vez el miércoles. Este es un ejemplo que increíblemente, lo esperado cuando se ejecuta simplemente dice "hola mundo". Y está escrito en un lenguaje llamado C, que es muy similar sintácticamente a muchos otros idiomas que usted puede no saber, pero podría haber oído hablar de como Java, y C ++ y Python y Ruby, y similares, y de hecho, vamos a pasar gran parte del semestre usando C, y luego hacia el final de la semestre, construir sobre ella, y la introducción de cualquier número de otros idiomas. Entre ellos PHP y JavaScript, un lenguaje de base de datos denominado SQL. Pero con C, lo que tendremos esta comprensión de abajo hacia arriba exactamente cómo funcionan los ordenadores, lo que puede hacer con ellos, y cómo se pueden resolver los problemas tanto más eficazmente por este capas que discutimos el miércoles, y de pie sobre los hombros de los demás. Pero más sobre esto más por venir. Hoy nos fijamos en un entorno sencillo, pero fundamentalmente idéntica una entorno conocido como Scratch de nuestros amigos en el MIT Media Lab. Esta es una gráfica lenguaje de programación, Scratch, por el que usted puede arrastrar y soltar cosas que verá como piezas de un rompecabezas que Sólo enclavamiento si se hace sentido lógico o programático para hacerlo. Pero nos va a permitir a tener una conversación sobre todo de la misma programación fundamentos que algunos de ustedes podría saber ya, que muchos de ustedes no podría saber nada de sin tener empantanarse francamente, en el intelectualmente sintaxis poco interesante del punto y coma, y los paréntesis, y cita, y similares. Todo lo cual, a principios sucesivamente, son una distracción a lo que son interesantes e ideas realmente útiles. Así que echemos un rápido mirada al entorno aquí, así que usted sabe lo que le espera. Y, de hecho, entre los juegos que puede jugar son algunos programas escritos por los propios antiguos alumnos del CS50. Uno de ellos, a mí mismo, voy a estar éste escrita en la universidad para mí. Si pudiera tomar un voluntario que está dispuesto a jugar un juego por primera vez. Claro. Vamos arriba. ¿Cómo te llamas? AUDIENCIA: Angela. DAVID J. MALAN: Angela, vamos para arriba. Así rasguño ha estado fuera por un par de años. Y cuando estaba en la escuela de posgrado, Estaba cruz registrados en el MIT, teniendo profesor Mitchel Resnick de curso sobre tecnologías educativas. Y estábamos entre los primeros los estudiantes en el mundo de realidad beta Rasguño prueba. Y mi proyecto era lo que Angela ahora se ha ofrecido amablemente a obra llamada oscartime. Así que voy a seguir adelante y haga doble clic en el icono de aquí. Se va a abrir una programación entorno que pronto vamos a sumergirnos en. Voy a pantalla completa por Angela, aquí. Voy a golpear el verde bandera en un momento. Y luego un todo mucha basura va a caer del cielo. Y usted va a utilizar el ratón aquí para arrastrar y soltar realidad la basura en los botes de basura de Oscar. Así que si quieres seguir adelante y haga clic la bandera verde, el juego comenzará. [REPRODUCCIÓN DE MÚSICA] Oh, me encanta la basura. Cualquier cosa sucia o sucio o polvoriento. Cualquier cosa irregular o podrida, u oxidado. Sí, me encanta la basura. Si realmente quieres ver algo de mala calidad, mira esto. Tengo aquí una zapatilla de deporte eso es hecho jirones y desgastadas. Está todo lleno de agujeros bodegas y los cordones se rompen. Un regalo de mi madre el día en que nació. Me encanta porque es-- DAVID J. MALAN: --green estos días sólo ser tirar todo a la basura. Y así lo que uno de Propia did-- personal del CS50 Jordan, que usted puede ser satisfacer hoy-- tiene realidad actualizado esto para los tiempos de hoy. Y así me permite abrirme un remix en lugar de Angela. Y vamos a jugar esto en vez de unos momentos donde ahora estás va a tener que decidir entre si tirar algo a la basura, o reciclar o compostar ella. Así que hay un poco de presión sobre usted para llegar este derecho en la parte delantera de su 392 a 497 compañeros de clase aquí en la sala, si tú pudieras. [REPRODUCCIÓN DE VÍDEO] [REPRODUCCIÓN DE MÚSICA] Oh me encanta basura. Cualquier cosa sucia o sucio o polvoriento. Cualquier cosa irregular o podrida o oxidado. Sí, me encanta la basura. Si realmente quieres ver algo de mala calidad, mira esto. Tengo aquí una zapatilla de deporte eso es hecho jirones y desgastadas. Está todo lleno de agujeros y los cordones se rompen. Un regalo de mi madre el día en que nació. Me encanta porque es basura. Oh, me encanta la basura. Cualquier cosa sucia, o sucio, o polvoriento. Cualquier cosa irregular o podrida o oxidado. Sí, me encanta la basura. He aquí algunas cosas más podrido. He aquí algunos newspaper-- [FIN DE REPRODUCCIÓN] DAVID J. MALAN: --¿Hay en realidad compostable. Pero gracias a nuestro voluntario, Angela. Tenemos una pelota anti-estrés para usted aquí también. Así que gracias. Así que éste fue escrito por mí. Pero ahora uno por un ex alumno real quien implementado esto, que es un juego. Todo en esta lengua llamada Scratch, que pronto pelar las capas de. Pero si hubiéramos como-- cómo sobre otro voluntario? Correcto. Vamos arriba. ¿Cómo te llamas? Vistazo? Lanza. Lance, vamos para arriba. Encantada de conocerte. Vamos de esta manera. Así que éste podría tener un tema familiar para algunos de ustedes. Pero verás también que no puede haber interactividad, por el cual usted podría ser en realidad el papel del personaje en movimiento. Encantada de conocerte. David. Yo os doy, Pikachu. Instrucciones quieras acerca de venir en la pantalla. Pero en fin, usted va a querer atrapar las cosas sabrosas, y evitar las bombas y otras cosas. Con los cursores enteramente. Así que pulse la barra espaciadora. -Pikachu. DAVID J. MALAN: Catch las cosas de la izquierda, no tomar las cosas a la derecha. [REPRODUCCIÓN DE MÚSICA] Así que un último aquí. Si pudiéramos tener uno más voluntarios aquí. Pensamos que habíamos recrear algo de-- en el shirt-- amarilla a partir del miércoles. ¿Cuál es tu nombre? María, vamos a María. Y recuerdo el miércoles introdujimos la noción de binario, y las bombillas binarios. Esto es en realidad ahora una aplicación de esa misma interfaz que teníamos en el iPad con la luz bulbos, pero aquí procesada digitalmente. Y en lugar de hacer un esfuerzo ball-- placer conocerte, David. Trajimos algunas luz bombillas de Cambridge. Si puede, al hacer clic en los bombillas para convertirlos encendido y apagado, subir con el binario representación de, digamos, 256. Y verás en el medio, la cuenta corriente. Así que uno está. Así que el bit más a la izquierda está encendida. MARY: Sí, [inaudible] DAVID J. MALAN: Bueno, así que tenemos sólo-- oh. Así que esta es la columna 128. Así que estamos hasta 128. Tenemos que llegar a 256. Y usted puede jugar en y fuera, no es gran cosa. O usted puede golpear ese 128 más veces si quieren. Muy bien, muy bien. 24. Sí, cada vez más cerca. Más cerca! Oh, ¿cuál es el problema entonces? Entonces, ¿cuál es el problema? Entonces, ¿qué es lo que necesitamos ¿resuelve este problema? Así que necesitamos otro poco. Y esto es perfectamente razonable, en realidad, ¿no? Si desea contar a partir del número 1-2 a 3 a 4 a 5, 6, 7, 8, 9 para rodar en realidad a 10, eres va a necesitar un bit adicional. Así que vamos a realidad rebobinar aquí, y llegar con-- que era, obviamente, pretende ser una puesta a punto. No se puede hacer 256 con sólo una bombilla. Así que ¿qué hay de simplemente el número 50? Número 50. Excelente. Un gran aplauso de María y de ella también. Gracias. Así que este topic-- intencional como que era-- realmente repetirse. El valor más grande que pueda representar con ocho bits o un byte, es de hecho 256. Pero no si se inicia contando desde 0, como hemos parecen seguir haciendo por tener todos esos pedacitos de descanso. Pero ahora vamos a bucear en el subyacente implementación de este entorno, y desmenuzar algunas de estas ideas. Así que en un momento en que estamos a punto de ver una algunos diversos fundamentos de programación. El primero de los cuales vamos a llamar comunicado. Clasificar los verbos, si se quiere. Acciones. Las cosas que se deben hacer. Y en un momento verás bloques que se ven así. Diga "hola mundo", por ejemplo. O esperar un segundo. O jugar maullido sonido. Y de hecho el medio ambiente en que vamos a estar haciendo esto se llama Scratch. Y si me levanto sin arañazos precarga ningún código real, vamos a echar un rápido vistazo a este interfaz de usuario, por así decirlo. Los controles con los que interactúan. En la parte superior izquierda de aquí de la pantalla, debajo de los menús, tenemos el escenario, por así decirlo. Así Scratch es lo que vamos a llamar Sprite. Es un personaje. Y puede ser controlado por escribir programas en su contra. Y que va a ser capaz de moverse hacia arriba y hacia abajo ya la izquierda y la derecha en este entorno, no sólo moviendo el ratón, pero mediante programación. Puedo decirle a caminar derecho, a pie izquierda, arriba, abajo o similares. Y puedo introducir otra sprites o personajes también. De hecho, en el fondo aquí es donde verás tu lista de sprites. Por el momento, sólo tengo uno, pero puedo crear más, y van a aparecer exactamente ahí abajo. Así que si se rebobina por un momento, al igual que Oscartime-- por ejemplo, Oscar, a la izquierda, la basura puede, era un sprite. Y la cosa en el medio, la Papelera de reciclaje, fue otro elemento sprite. Y el cubo de compostaje fue otro elemento sprite. Y cada pedazo de basura o reciclables que caía desde el cielo es también un sprite, cada uno de los cuales fue programada individualmente. ¿Cómo se programa? Bueno, aquí a la derecha lado es el área de scripts. Y aquí es donde podemos arrastrar y soltar las piezas del rompecabezas. En una semana, que va a ser donde equivalentemente escribimos código con más de un teclado, pero para Hoy va a ser arrastrando y soltando piezas del rompecabezas, la paletas para el cual todos pueden se encuentran aquí en el centro. De hecho, en el centro aquí hay un montón de las categorías de rompecabezas piezas o bloques. Uno está relacionado con el movimiento, mira, sonido, una pluma que suben y bajan, datos, eventos controlan. No del todo seguro todavía lo que todo esto significa, pero verás que ellos han sido muy bien clasificado. Y para escribir un programa en Scratch, vamos a hacer exactamente eso. Voy a comenzar bajo Eventos y arrastran este de aquí. Cuando la bandera verde hizo clic. Ahora, ¿por que uno? Bueno recordar que nuestros voluntarios se acercó, lo primero que o lo que hicieron fue hacer clic en ese verde bandera en la esquina superior derecha. Y eso sólo significa iniciar el programa. Así que cuando ese evento ocurre, ¿qué es lo que quiero hacer? Voy a pasar por debajo de las miradas, y yo voy a hacer "saludar". Y yo voy a cambiar esto y decir algo como "hola Yale." Y ahora me voy a enfocar salir, haga clic en la bandera verde, y listo, he escrito un programa. No todo es tan emocionante por el momento, pero esto es exactamente donde cada de los que comenzó autor, ambos con Pikachu y el bombillas binarios y oscartime, y así muchos más ejemplos. Empiezas super simple, y entonces empiezas a capa, y añadir características y funcionalidad. Entonces, ¿qué son estas capas va a consistir? Bueno, más allá de las declaraciones, también vamos a tener las cosas que son poco más fancily llamada de Boole Expresiones, después de que alguien llamado Bool. Y una expresión booleana es simplemente una expresión que es verdadero o falso, sí o no, 1 o 0. Cualquier polos opuestos como esas. Es verdadero o no. Pero también vamos a ver los que podría tener este aspecto. Así, por ejemplo, es el ratón? Son una especie de preguntas, si se quiere. El ratón es ya sea hacia abajo, cierto o no lo es, falso. 1 o 0, si se quiere, tiende a ser la asignación. Cierto es 1, falso es 0. Bueno ¿qué pasa con menos de esto? O eso, es que esto sea menos que esto? Esa es una pregunta de tipo. Y si se pone de dos números en allí, ya sea x va a ser menor que y o igual a y, o mayor que y, pero este bloque vamos a ver, es sólo va a responder a la pregunta, es que esto sea menos que eso? También podríamos ver algo como esto. Tocar punteros del ratón. Así que en Scratch, usted puede pedir la cuestión, es el Sprite tocar el puntero del ratón? Es decir, es la que asoma el cursor por encima del tope, o su equivalente? Veremos cosas anding juntos. Puede hacer dos preguntas, y asegúrese de que los dos dar sí o respuestas verdaderas antes tomar la decisión de hacer algo. Pero entonces, ¿cómo tomar decisiones? Bueno, tenemos estas condiciones. Y vimos esto en nuestra ejemplo de la guía telefónica. Mirando hacia la izquierda o adecuado para Mike Smith. Y en la condición, hacer algo potencialmente, si una expresión booleana es verdadera. Y, en efecto, observe las formas ahora. Hay un marcador de posición en este momento en posiciones elevadas donde podemos fit-- si retrocederá un slide-- esa forma. No es exactamente el mismo tamaño. Y de hecho, verás que Rasguño cambia el tamaño de las cosas de forma dinámica para encajar las piezas del rompecabezas, pero el forma es lo importante. Esta cosa parece que, y de hecho es aproximadamente la misma forma que debe encajar allí. Y si queremos hacer algo de esta manera o de esa manera, si de lo contrario, tenemos este rompecabezas pieza en Rasguño también. Ahora suponga que desea hacer si, más si, o de lo contrario. En otras palabras, una de tres vías tenedor en la carretera. Bueno, ¿qué puede hacer usted con sólo echar un vistazo a esto? Puedo tomar esta pieza del rompecabezas, y no parece encajar, pero de nuevo, Scratch va para cambiar el tamaño muy bien para nosotros. Podría empezar a capa estas cosas juntas. Así que ahora tengo una de tres vías tenedor si esto es cierto, hacer esto. Porque si esta otra cosa es cierta, ir por este camino, de lo contrario va esta otra manera. Y en El Muppet Movie, la tenedor en la carretera, por así decirlo, entre Yale o Stanford, fue exactamente eso, sólo dos condiciones. O bien ir por este camino, de lo contrario ir en esa dirección. Bueno, también bucles de existir en la programación. Y hemos utilizado estos ya en clase y en el código de pseudocódigo, y seguramente en los Programas de Scratch para siempre. Arañazos tiene esta pieza del rompecabezas que sólo va a dejar que hagas algo para siempre. Y a veces uno quiere hacer algo para siempre. No es necesariamente un error, es porque quieres un reloj para seguir adelante, o un juego para seguir jugando. O bien, puede especificar un número finito de pasos, ya que con este bloque de repetir aquí, que se repita algo 10 veces. Podemos establecer variables, pronto veremos. Y con las variables, similar en espíritu al álgebra, como x o y o z. Es algo simbólico que puede almacenar algún valor, alguna pieza de información, que es posible que desee recordar para más adelante. Mejor ejemplo de esto podría ser un juego donde usted tiene una cuenta, al igual que en Pikachu. ¿Cuántos pedazos de torta y qué sé yo qué coges? Bueno, eso podría ser una variable llamado puntuación que comienza en 0. Y entonces cada vez que atrapó un pedazo de la torta o dulces, o similares, que se incrementa. Se se agrega a uno a la vez. Y las tiendas por lo que una variable de un pieza de información así. Luego está matrices, y vendremos de nuevo a ellos en una semana o dos veces, pero una matriz es como una especie de inventario o una mochila, en el interior de los cuales usted puede poner las cosas virtuales. Te permite almacenar más de una pieza de información. Y eso podría ser útil si en el juego, eres especie de caminar alrededor recoger las cosas. Y tal vez desea mantener todos esos pedazos de torta nada más, y no sólo comer uno tras otro. Y luego hay un construcción colombófilo vamos llegado a llamadas funciones o procedimientos. Y aunque vamos más rápido aquí, vamos a ver que se trata de un solución natural a los problemas que vamos encuentro. Como empiezan nuestros programas cada vez más grande que vamos a comenzar a notar patrones en el código que estamos escribiendo, las piezas del rompecabezas que estamos arrastrar y soltar. Y tan pronto como usted note que estás haciendo algo una y otra vez, o peor aún copiar y pegar la programación código que usted ha escrito, eso es probablemente una oportunidad para factorizar lo que mantiene la copia y pegar, y poniéndolo en algo que se llama una "función". Pero más en aquellos en mucho más detalle en poco tiempo. Y luego está características incluso más elegante. Para aquellos de ustedes más cómodo, o tomar APCS o equivalente, Rasguño realmente apoya cosas como hilos y eventos y mucho más. Así que darse cuenta de que tiene bastante alto techo, a pesar de que también es muy ampliamente accesible a la gente que nunca han programado antes. Así que de hecho, vamos a echar un vistazo en un programa simple o dos. Ya miramos cómo podría saludar con Scratch. Déjame ir por delante y abrir un pequeño programa más interesante que escribí con antelación. Y de este llamado Pet el Gato. Todos estos programas habrá disponible en la página web del CS50. De hecho, ya está ahí. Así que usted puede descargar ellos, y juegan con ellos, y con la de problemas 0, lo que también está en la página web del curso, es recomendable que caminar a través de estos. Y por otra parte, tenemos una número de vídeos walk-through línea en el que I y El equipo de CS50 verdaderamente caminar a través de cada uno de estos ejemplos en un mucho ritmo más lento, un remitible muy rápido, o ritmo rebobinable, de modo que usted puede caminar a través de estos en su tiempo libre también. Así que aquí está rasguño a la izquierda. He aquí un programa de la derecha que ya he pre-hechos. Así que permítanme zoom en esto. Y podría alguien en Inglés, sabiendo lo que ya sabes, a partir de ahora como a cómo funciona el principio, una especie de, digamos, en una frase de Inglés o de la pena, ¿qué hace este programa aparentemente hacer? Sí, en camisa naranja. AUDIENCIA: [inaudible] DAVID J. MALAN: Sí, si su cursor está en el rasguño de gato, reproducir un sonido maullando. Pero notamos cómo expresamos eso. No hay al parecer una bucle de allí, para siempre. Y luego hay un condiciones, la expresión if. Y colectivamente, ¿qué significan esos? Significa este programa se acaba siempre corriendo, y que sólo siempre está esperando y ver y escuchar para mí para mover el cursor sobre el gato. Debido a que cada vez que hago esto, como usted propone, que va a hacer esto. Permítanme comenzar el programa. Nada parece ser pasando, notar cómo se puso de relieve ahora en una línea amarilla. Eso sólo significa que se está ejecutando. Y porque hay un para siempre lazo, todavía en funcionamiento. Así que permítanme muevo el cursor sobre Scratch. [MAULLIDO] [MAULLIDO] Y si me mudo si fuera poco, [MAULLIDO] ahora que se detenga, pero el programa de Aún corriendo. [MAULLIDO] Y así, adorable. [MAULLIDO] Así que vamos a abrir un poco más avanzado ejemplo llamada No acaricie el Gato. Y ahora vamos a ver qué que sucede aquí. Meowing [MAULLIDO]. Así que es un poco en piloto automático, si se quiere. --pet el gato. Me pregunto porque. [ROAR] [MAULLIDO] Entonces, ¿cómo funciona? Bueno, usted puede tipo de razón a través de él de manera intuitiva, tal vez. Pero vamos a ver el código real. Así que de nuevo, cuando la bandera verde se hace clic, hacer esto para siempre. ¿Qué es lo que quieres hacer para siempre? Bueno, si conmovedora ratón puntero, entonces el juego un sonido que al parecer llama León 5, eso es dentro de este proyecto, de lo contrario jugar maullido sonido, y luego esperar dos segundos, por lo que que no está maullando sin cesar. De hecho, usted puede comenzar muy rápidamente para molestar a ti mismo y tus compañeros de piso. Vamos a quitar este bloque. Y note lo que es bueno de Scratch. Las cosas simplemente especie de arrastre y soltar y el enclavamiento. Así que de nuevo, crece a llenar lo que quieres. Pero si me quito esto, y luego exitosa obra, [ORDENADOR BLIP SONIDO] --es una especie de tropezar sí, porque es, literalmente, haciendo lo que estoy diciendo. Se está diciendo siempre jugar a este sonido, pero Yo no estoy dando la oportunidad de terminar. Y por lo que sería un error. Y es por eso que tuvimos esta cosa de aquí ahora. Así que vamos a realmente empezar desde scratch-- especie de juego de palabras poco intended-- en el que ahora tenemos el movimiento gato. Así que me voy a hacer esto sobre la marcha. Voy a hacer un zoom aquí, sólo que me empezó en Eventos. Y bandera verde hizo clic. Y hay otras maneras para iniciar los scripts. Vamos a mantenerlo simple aquí. Y ahora me voy a ir adelante y pasar por debajo de control. Y de nuevo, si se olvida de donde las cosas están, simplemente haga clic en la vuelta, y, finalmente, a encontrar de nuevo. Así que lo que quiero hacer siempre lo que? Quiero usar el bloque de movimiento que sé que existe, se mueve 10 pasos. Así que vamos a ver qué pasa aquí si juego este juego. Por suerte no va demasiado lejos. Todavía puedo tipo de agarrarlo por la cola y tirar de él hacia atrás. Pero el programa sigue funcionando, por lo que es una especie de lucha contra mí. Pero sería un poco agradable si condicionalmente arreglar esto en el código. Debido a que este es no-- En realidad esto es realmente no es un juego divertido para cualquier persona de cualquier edad. Así que vamos a tratar de solucionar este problema tener algún tipo de condiciones. Así que me voy a ir bajo Control y, a continuación, si. Me gusta esta idea. Así que después de mover 10 pasos, si: déjame percibo donde estoy. Voy a pasar por debajo de detección, y luego se ve que puedo ir aquí. remar a los partidos de forma. El tamaño no, pero es va a crecer para llenar. Y ahora esto es un pequeño menú. Y ahora ratón pointer-- no lo hago quieren el ratón, quiero que el borde. Así Scratch es lo suficientemente inteligente como para saber cuando un sprite está tocando el borde. ¿Qué es lo que quiero que haga realidad? Déjame ir adelante y cambiar de marcha. ¿Tu sabes que? Voy a contar con él la vuelta. Así que a los 15 grados no es realmente me va a ayudar. Quiero que la vuelta e ir a otro lado. Así que vamos a ver qué pasa aquí, si me golpeó Juega ahora. OK, tipo de aspecto estúpido, pero que está haciendo exactamente lo que dije. Y es que gira todo el sprite. Ahora resulta que puedo arreglar esto. Y yo no sé cómo para solucionar este problema al principio. Yo como que tenía que futz alrededor y ver la mejor manera de hacer esto. Pero si voy a-- vamos a ver, el movimiento. Oh, me encontré con esto. En realidad, Set Estilo Rotación. Izquierda, derecha, o no rotar, o por todas partes. Y resulta que es lo que quiero. Y yo voy a poner esto no es mi lazo, porque yo no necesito fijar el estilo rotación múltiples veces. Voy ponerlo en la parte superior de la este programa de manera que se establece una vez, y luego recuerda. Y ahora voy a probar este nuevo. Permítanme detenerme programa. Y ahora que fija ese error. Así que estoy iterativa mejorar en esto. El programa es conseguir un poco más complejo y más grande, pero me estoy tomando pasos de bebé por así decirlo, y bocados pequeños fuera del problema para conseguir mejor y mejor. Pero esto también, es una especie de cojos. ¿Tu sabes que? Pediría a alguien con una muy buena, voz espantosa como para llegar? Alguien con una voz. Uh, sí. Vamos arriba. En la camisa verde. Así que resulta que hay alguna otra diversión cosas, la estética y sonidos por igual. Aquí está el maullido. Hago clic en la ficha Sonidos. [MAULLIDO] No es el maullido. [MEOW MEOW] [MAULLIDO] --actually grabar algo de nuestra propia aquí. Así que vamos a hacer exactamente eso. En lugar de utilizar este sonido gato, vamos a adelante aquí, y ¿cuál es tu nombre? Nick, un placer conocerte. Es David. Así que en un momento, voy para golpear el botón de grabación. Y si puedes simplemente gritar en el portátil, "ouch", como si acaba de entrar en la pared, que será muy apreciado. 1, 2. NICK: ¡Ay! DAVID J. MALAN: Awesome. Y ahora se puede hacer un poco de edición aquí. El ir a deshacerse de las partes tranquilas. Y creo que eso es bueno. Muchas gracias. NICK: Placer. DAVID J. MALAN: No tengo simplemente le cambió el nombre "ouch" pero ahora me voy a volver a mis guiones. Y fíjense en efecto, hay sonido aquí. Y voy a seguir adelante y reproducir el sonido ouch, y yo voy a hacer que si que está tocando solamente los bordes. Y luego voy a tiene que dar la vuelta. Así que vamos a ver lo que pasa aquí. Vamos a pantalla completa. [REPRODUCCIÓN DE VÍDEO] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [FIN DE REPRODUCCIÓN] DAVID J. MALAN: Entonces te das cuenta que estamos poniendo un poco de suerte. Voy a tenerlo movimiento como 100 pasos a la vez. El efecto de que ahora se va a ser-- [ORDENADOR GLITCH SOUND] Así dentro de lo razonable. Así que la oportunidad de refinar que más si realmente queremos. Así que ahora vamos a introducir otro concepto. Para dejarme ir en una sola llamada Cuenta de ovejas y el uso algo llamado una variable. Se trata de una pequeña oveja adorable, y He cambiado el traje por así decirlo. Así que, aunque el valor por defecto es un gato, usted puede cargar, se puede dibujar, usted puede hacer cualquier número de personajes en tu sprite. He aquí un programa que es vamos a hacer lo que en Inglés? Basado nuevamente el justo lo que sabe ahora. ¿Qué hacer este programa? Sí, va a contar. Un número cada vez. Tenemos al parecer, tienen este contador conjunto. No sé lo que es eso, pero tal vez se trata de una variable. Es sólo un contenedor, xo y. Pero la palabra de contador es más descriptivo que x del matemático o y. Así que podemos usar las palabras en inglés para las cosas. Siempre, sólo significa seguir haciendo esto. Diga mostrador. Ahora, ¿dónde ha salido esto? Bueno, resulta que contador es una variable. Así que es sólo otro puzzle pieza que creó con antelación. Y a pesar de que suceda de no ser la misma forma aquí, normalmente dirías algo así como hola aquí. También puedes arrastrar una variable de modo que eso es lo consigamos dijo. Entonces espero un segundo, cambiar el contador en uno, incrementándolo por la adición de uno. De modo que el efecto neto es esta oveja conteo adorable. A pesar de que está contando a sí mismo. Ahora es muy rápido va a ser aburrido porque él va a hacer esto de verdad para siempre, pero eso es exactamente lo que el El diseño del programa de receta. Vamos a tratar ahora otro ejemplo que aprovecha una variable. Este llamado Hola Hola Hola, que no ser molesto rápidamente. Ahora éste tiene dos guiones. Y así, una vez más, estamos dando pasos de bebé. Empezamos con algo súper pequeño, añadido a la misma, añadido a la misma. Ahora quiero hacer algo aún más dinámico, así que quiero estar escuchando para dos cosas distintas a la vez. Así que a la izquierda, cuando bandera verde se hace clic, Me puse una variable que escribí con antelación llamada silenciado. Y yo arbitrariamente puse a 0. Así arañazos no tiene verdadera y falsa, pero tiene 0 y 1. Así que puede aproximarse a la misma idea. Y luego para siempre, si la barra de espacio es presionado, a continuación, establezca la variable a 0. O lo siento. Si se pulsa el Espacio, y si silenciado, la variable, es 0, a continuación, establecer silenciado a 1, otro conjunto silenciado a 0. Esto parece algo así como estamos simplemente haciendo y deshaciendo el trabajo. Pero ¿cuál es el efecto? Cada vez que me golpeó la barra espaciadora, lo que pasa a mi variables llamada silenciado, lógicamente? Algo así consigue volteado. Se cambia de 0 a 1, o de 1 a 0. Así que tomó un par de cuadras para expresar eso, pero todo Que estoy haciendo es alternar el estado de esta variable a 0 o 1, o 0 o 1 cada vez que me golpeó la barra espaciadora. Ahora aquí, ¿qué está haciendo esto? Siempre, si silencia es 0, así que si silenciado es falso. Así que si no está silenciado, es el semántica allí, juegan sonido león marino, y pensar hi hi hi para dos segundo, espere dos segundos. Así cuenta ahora estos scripts son efectivamente va a ejecutar en paralelo de modo que uno puede estar escuchando a una acción, el otro para tomar una decisión sobre la base de esa acción. Y puede hacer esto para siempre. [LEÓN DE MAR BARKING] [LEÓN DE MAR BARKING] Se va a hacer esto para siempre y [LEÓN DE MAR BARKING] como yo acabo de hacer. Y ahora está aún en marcha pero yo tengo "silenciado" el juego. [LEÓN DE MAR BARKING] Y eso es todo este tipo hace ahora también. Vamos a abrir otro ejemplo aquí. Déjame ir a eventos, y ahora este adorable también. Pero note que tiene dos sprites. Así que no sólo dos guiones con de un sprite, sino dos sprites. Y si hago clic en el chico de color azul como yo ya tienen, veo que como un programa aquí que, literalmente, sólo dice esto, cuando recibo un evento, decir "Polo" durante dos segundos. Así que si alguna vez has jugado en una piscina, el juego de Marco Polo, si el guión chico naranja es una indicación, al parecer, cada vez que me golpeó la barra espaciadora, ¿cuál es el tipo de naranja va a hacer? Él va a decir "Marco". Y entonces este es un nuevo bloque. No hemos visto esto antes, pero retransmitir un acontecimiento. Y podría llamarlo nada evento que queremos. Volveremos a este tal vez en poco tiempo. Pero la difusión de un evento Es una manera para una Sprite hablar con otro por esencialmente pasándolo a un mensaje. No es un mensaje que se ve. No es algo visual. Es una especie de un mensaje ordenador que el otro chico está escuchando. Porque de hecho, el chico de color azul, el recuerdo no tiene bandera verde cuando se hace clic. El lugar tiene, cuando recibo un evento. Cuando él se entregó esta nota en la clase, por así decirlo, debe decir "Polo". Y por lo que el efecto neto es que cuando yo golpeó la bandera verde, no pasa nada. Pero cuando llegué a la barra espaciadora, dice "Marco", él responde con "Polo". Pero la única sprites estoy interactuar con es el naranja. Así que esta es una forma de tipo de pasar mensajes entre sprites y que ellos se comunican uno con el otro. Ahora echemos un vistazo a una última uno aquí llamados hilos. Y notar esto por jugarlo. Así que estos son dos sprites. El ave es una especie de volando alrededor. Él está rebotando. No hay "ouch", pero la misma idea. Pero el gato parece muy inteligente. ¿Cuál es el gato aparentemente haciendo? Y esperar. ¿Cuál es el gato aparentemente haciendo? No se trata sólo de rebote. Está siguiendo el ave. Y así, al parecer, hay una manera con una combinación de bloques aquí-- y vamos a ver al gato muy rápido. Siempre, si tocar pájaro, luego jugar el León 4, sea lo que sea el sonido. Hemos escuchado una vez. De lo contrario, apuntar hacia pájaro, y mover un solo paso. Ahora bien, el hecho de que es uno paso es lo que le da el pájaro un poco de ventaja al principio, pero si en su lugar hacer de este 10, por ejemplo, por lo que cada iteración del bucle que está en movimiento 10 pasos de tiempo. Por lo tanto más espacio. Vamos a ver lo que sucede a continuación. [LION ROAR] No todo lo que mucho mejor. Así que ahora vamos a tratar de mejorar la a éstos un poco de forma iterativa, y volver a la noción de una función. Y, de hecho uno de los fundamentales comida para llevar del diseño de la clase. No sólo la escritura de programas que funcionan y que son correctos, pero están bien diseñado. Y el diseño es mucho más subjetivo, y usted consigue mejor en el tiempo. Pero vamos a tomar algunos pasos de bebé hacia comenzando con un programa que funciona, absolutamente, pero no es muy bueno. No está muy bien escrito. Así que aquí hay un programa que hace esto. Tos, tos, tos. ¿Qué hace el programa parece? Parece correcto para mí. Está diciendo sofá por un segundo, entonces se espera. Entonces dice de nuevo, entonces se espera. Entonces dice de nuevo, entonces se espera. Y entonces el programa implícitamente termina, porque no hay bucle. Pero ¿por qué es un programa mal escrito? Incluso si nunca has programado antes? Al igual, lo frota la camino equivocado, tal vez aquí? ¿Sí? AUDIENCIA: [inaudible] DAVID J. MALAN: Exactamente. Estás repitiendo a ti mismo una y otra vez. Y, literalmente, He copiado y pegado dos de esos bloques y otra vez. Y eso es exactamente el tipo de cordura y comprueba que usted debe hacer. Espera un minuto. ¿Debo realmente estar haciendo esto? Entonces, ¿qué es esto lo que es el solución obvia, tal vez? Tienen algún tipo de lazo. Y yo recuerdo no del todo lo que la pieza del rompecabezas es, pero si miro el siguiente iteración aquí, de hecho, no hay sólo el bucle para siempre, no repetir un número de veces. Y así he especificado tres. Y ahora cuenta de lo mucho más apretada, ¿cómo mucho más sucinta este programa es. Y en cierto sentido, ¿cómo mucho más fácil de mantener. Si quiero cambiar la palabra de la tos a otra cosa, como achoo, como si estuviera estornudos. Entonces lo cambio en una lugar, y no tres. Así que esto ya se siente como ligeramente mejor diseño. Déjame tos lugar abierto 2, nuestro tercer ejemplo. Observe como un científico de la computación, Empiezo a contar a 0, por lo general. Ahora bien, esto se ve un poco más aterrador en primero, pero el efecto es el mismo. Tos, tos, tos. Pero lo que parece ser, fundamentalmente, nuevo en la parte superior del programa? He quitado la palabra. He quitado la espera. ¿Y qué tengo yo conecté en su lugar? Una función. Un bloque de la tos. Quiero decir, francamente, me parece clase de un idiota si no lo hacía solo comenzar con el bloque eso es aparentemente llamado "tos", si eso es todo lo que quiero que haga. Pero eso no existe en Scratch. Más bien me fui a la una de la paleta de llama Más Bloques aquí, y me arrastro esta gran cosa púrpura aquí que me permite definir una función. En esencia, me deja crear mi propio rompecabezas pieza que se puede llamar cualquier cosa que yo queremos, que puede hacer lo que quiera, pero le da un nombre. Me da una nueva pieza del rompecabezas de color púrpura que ahora hace lo que le digo que haga. Así que esta pieza púrpura aquí corresponde a este de aquí. ¿Y qué hace? Dice la tos para un segundos, y luego se espera. Y ahora que he creado una especie de mi propia pieza del rompecabezas de encargo, de manera que se comporta exactamente la misma manera. Así que puedo seguir haciendo esto. Y, de hecho, no va a haber más y más oportunidades para la modularización, y para la estratificación, la complejidad en la parte superior de uno al otro. Pero esta idea básica, de hecho en el problema dijo 0. ¿Qué vas a el reto de hacer es descargar Scratch, o simplemente usarlo en la web, y divertirse con ella. Le daremos una serie de requisitos, que tiene un sonido, y cierto número de piezas de un rompecabezas. Pero que va a hacer exactamente esto. Y te das cuenta de que vas a querer tomar algunos pasos de bebé en un principio, hasta que el programa se hace cada vez más compleja. Pero teniendo en cuenta este es el mejor manera que podía hacer esto? ¿Puedo evitar este instinto tal vez, copiar y pegar? Pero antes de problemas 0, y antes de levantar la sesión, pensamos que sería mejor tomar uno más voluntarios si pudiéramos, para un programa final esa es tal vez la más ajuste en absoluto, dado lugar actual. Baja. Sí. Sí. ¿Cómo te llamas? UH oh. Eso está bien. Ambos vienen abajo. Y yo tengo se ocupará de esto de alguna manera dentro de ese próximos diez segundos. Así que vamos hacia abajo. Baja. Déjame entrar en hasta aquí. Vamos. Correcto. Vamos a ver aquí. Así cuenta muy rápido aquí, si quieres venir en adelante. Haremos dos rondas de esto. ¿Y cual es tu nombre? SABRINA: Sabrina. DAVID J. MALAN: Sabrina y? YING GEE: Ying Gee. DAVID J. MALAN: Ying Gee. Encantado de conocerte ambos. David. Así que nuestro último ejemplo aquí es llamado juego más difícil de Ivy. Y por qué no tenemos que hagas Nivel 1, y usted hacen Nivel 2. Y veremos qué tan lejos más allá de que en realidad vamos. Escrito por un estudiante el año pasado, remezclado por mí de manera que esto iría más bien en New Haven. Y te doy un juego que va a involucrar a mover las flechas arriba y abajo, y conseguir de Yale a la línea de meta. Aquí vamos. [REPRODUCCIÓN DE VÍDEO] [MÚSICA - NFL EN FOX Theme Song] [MÚSICA - MC HAMMER "U PUEDE NO TOQUE  ESTA"] -U No puede tocar esto. U no puede tocar esto. No puede tocar esto. Mi, mi, mi, mi música me golpea tan duro, me hace decir, oh, mi señor. Gracias por bendecirme con una mente a la rima y dos pies bombo. Eso es bueno cuando sabes que estás abajo. Un homeboy droga súper Del Oaktown. Y yo soy conocido como tal y esto un latido uh, no se puede tocar. Te dije que Homeboy U no puede tocar esto. Sí, eso es lo que estamos viviendo y sabes U no puede tocar esto. Mírame a los ojos, el hombre. U no puede tocar esto. Yo, déjame busto el funky letras. U no puede tocar esto. Nuevas patadas y pantalones frescos. Lo tienes como ese y usted sabe que quiere bailar. Así que moverse de su asiento y obtener una mosca muchacha y atrapar a este ritmo. Mientras se espera rodar en bombear un poco poco y hacerles saber lo que está pasando. Como eso. Como eso. Fría en una misión tan tire hacia atrás. Hágales saber que usted es demasiado y este es un movimiento uh no se puede tocar. Yo, te lo dije U no puede tocar esto. ¿Por qué usted estaba allí hombre? U no puede tocar esto. Yo, sonará en la escuela de la campana, lechón. U no puede tocar esto. Dame una canción, un ritmo haciéndolos sudor que es lo que les estoy dando ahora. Ellos saben cuando se habla de la Hammer se habla de un espectáculo que es exagerada. Y los cantantes son ajustados sudoración por lo que les pase un micrófono. O una cinta para saber qué que va a tener y ahora él va a quemar las cartas. Legit ya sea un trabajo duro o que también podría dejar de fumar. Porque sabes U no puede tocar esto. U no puede tocar esto. Descomponerlo. Deténgase. Hora Del Martillo. Ir con la corriente en un giro si no se puede mover a esta entonces probablemente estás muerto. Así que agitar las manos en el aire [inaudible] Este es un baile ganador esto y vas a obtener más delgada. Mueva deslice el trasero sólo para un minuto vamos a todos hacer el golpe. Sí. U no puede tocar esto. U no puede tocar esto. Será mejor que publicitado muchacho U no puede tocar esto. Anillo de regreso de la escuela campana. Descomponerlo. Deténgase. Hora Del Martillo DAVID J. MALAN: Eso es todo por CS50! Muchas gracias por estar con nosotros! Nos vemos fuera. [FIN DE REPRODUCCIÓN] [REPRODUCCIÓN DE VÍDEO] [MÚSICA - "Seinfeld", tema musical] -Oye David. -Oye, David. ¿Cómo va? -Buen Trabajo, hoy en día. -Entonces ¿Has pensado en lo que que vas a hacer por las bromas fuera? -No, No tengo nada. -¿Qué Si: ¿y si esta es la broma fuera? -Como, Desembalaje carros? -UH Huh. Ya sabes, se trata de nada. -Así Que desea, no hay historia, no hay conflicto, sin resolución. No entiendo. ¿De qué trata entonces? -Nada. -Así Que tenemos fuera broma es sobre nada, y que no tienen los actores. ¿Quién va a estar en esto? -No no no. Quiero decir, voy a estar en ella. -Tendrás Estar en ella? -Sí! La gente siempre está diciendo yo soy un personaje. -Bueno, Quiero decir, es verdad. Pero, ¿quién más va a estar en ella? No puede simplemente ser tú. -Usted Habrá en ella, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, todo el mundo. -Así Que se trata de la nada, y todo el mundo que está en él? -Absolutamente nada. -Esto es ridículo.