ALTAVOZ: Soy [inaudible]. Y yo soy un senior en Leverett House. Yo estudio ciencias de la computación, y yo soy un TF para CS50. En su primer año, yo ni siquiera tengo un ordenador portátil o un teléfono inteligente. No tenía ninguna experiencia en programación. CS50 era el curso más memorable que Tomé en Harvard porque era una lucha, pero era una realidad lucha divertirse al mismo tiempo. E hice un montón de increíble, permanente amigos, y he aprendido mucho de verdad habilidades aplicables. Estoy tan contento de que yo no dejé que mi falta de fondo sea una excusa para mí No tome CS50. Soy [inaudible]. Soy un mayor en Leverett Casa, clase de 2014. Y tomé CS50. DAVID MALAN: Así que esto es CS50. Este es el final de la semana cero. Y recordar donde comenzamos la última vez, estaba con estas lámparas, que eran tan popular que nos fuimos y comprado un poco más hoy. Así que creo que esto va a ser lo nuestro este año - lámparas de escritorio, si usted viene para arriba en el escenario, al menos hasta que se acabe. Pero hemos utilizado estos revocatorio, para introducir los fundamentos de la representación de los datos. Necesitábamos manera de empezar que representa información dentro de una computadora. Y la forma más sencilla de hacerlo era con un ingrediente, la electricidad. Y la cosa más simple que puedes hacer con la electricidad es la enciende y se apaga. Deje que los electrones fluyen o no. Y el uso de esos dos estados básicos, frente a y sigue, o falso y verdadero, o cero y uno, empezamos a ver que podíamos construir arriba, en este caso, con la luz bulbos, más números que acaba de cero y uno. Contamos tan alto como siete, por ejemplo, la última vez. Pero todo lo que tenemos que hacer es seguir tirando más y más bombillas en ese problema y, de verdad, podemos representar cualquier número que nos posiblemente podría desear. Bueno, transitioned rápidamente entonces Miércoles a este byte de voluntarios. 8 bits es lo que generalmente llamamos un byte, así que aquí teníamos ocho voluntarios el miércoles que en conjunto eran en representación de ocho bits. Y cuando sus manos fueron , ellos eran uno. Y cuando sus manos estaban abajo, había un cero. Y tuvimos que estas personas subir al escenario por qué? ¿Qué somos capaces de hacer con esta secuencia de bits? Para crear un alfabeto. Hemos sido capaces de construir en la parte superior de ese lección anterior aprendió y en realidad empezar a hacer más interesante información que es por lo menos más familiar para nosotros los seres humanos. Y esto va a ser un recurrente tema a lo largo de 50 años, sino también equipo la ciencia en general, esta idea de capas, donde, al final de la días, si realmente inició el básico con un ordenador, sí, es ceros y unos. Y debajo de eso es sólo la electricidad. Pero muy rápidamente empezamos a tomar los detalles de bajo nivel por sentado y empezar a capa en la parte superior de trabajado pasado hecho que, en última instancia, por los Al final del semestre y, en definitiva, más en general, como los informáticos y los programadores, pueden hacer algo realmente cosas poderosas al aprovechar el trabajo que nosotros mismos hemos hecho y también de pie sobre los hombros de los demás. Ahora transitioned rápidamente el miércoles desde apenas la necesidad representar la información a querer hacer algo con él. Entonces, ¿qué se define como un algoritmo? Una serie de instrucciones. Así que es una serie de instrucciones, un número de pasos que usted, un ser humano, o una computadora, más típicamente, haría ejecutar una después de la otra con el fin para lograr algún objetivo. Y tuvimos unos cuantos goles la última vez, una de las cuales fue la de contar personas en la habitación. Y otro ejemplo era encontrar Mike Smith en una guía telefónica. Así que usted puede recordar que rompí un teléfono libro en un medio para este fin hasta encontrar Mike Smith. El propósito de ese visual era demostramos, una vez más, que éramos literalmente, lagrimeo este problema en un medio, en un medio, en un medio, y muy pasando rápidamente de como 1.000 páginas a sólo una sola página. Aquellos de ustedes que se perdieron en este Miércoles, pensé que podríamos reproducir algunas imágenes de lo que te perdiste. Vamos a echar un vistazo. [REPRODUCCIÓN DE VÍDEO] -Eso es. 1500 páginas, Niza línea limpia, lágrima legítimo. [VIDEO PLAYBACK FIN] DAVID MALAN: Así que eso fue el miércoles. Hacemos la transición, sin embargo, el miércoles ahora a querer representar algoritmos de alguna manera algo estándar, no sólo describirlos verbalmente, pero tratando de expresar por escrito o en una pantalla de ordenador, así que pudimos empezar a mejorar, y modificar ellos, y, con el tiempo, en realidad analizar qué tan correcta o qué tan rápido se fueron. Así que hemos introducido esta noción de pseudocódigo, que, en términos simples, es lo que? Aceptar, palabras. Vamos a ir un poco más profundo que eso. Inglés, claro, no son más que con qué fin? Las palabras con las que crear o para representar algoritmos. Así que no hay una lengua conocida como pseudocódigo en el mundo. Es sólo que, en Inglés, o sea ​​cual sea su lengua hablada es, el uso una especie de notación superficial para transmitir una idea de manera muy sucinta. Pero veremos que, sin duda, con un Pseudocódigo Inglés, y resulta la mayoría de los mismos lenguajes de programación son derivado de sí Inglés, vamos a encontrar que hay una norma formas de representar y pseudocódigo También el código de programación. Así como usted comienza a ver incluso el más simple ejemplos de hoy, se dan cuenta estos mismos patrones se repetirán la próxima semana. Así pseudocódigo era una especie de asemejarse idioma un lenguaje de programación. Y el primer ejemplo vimos visualmente escrito era éste. Fue sólo un programa de tres pasos, el objetivo de la cual era para contar el número de personas en una habitación de la residencia de ese video el miércoles. Pero hubo algunos aspectos interesantes de este programa más simple. Esto os servirá temas recurrentes. Así que para aquellos que no están familiarizados con esto, uno, que introdujo una variable. Y probablemente todos en esta sala es familiarizado con una variable en el contexto del álgebra. Pero aquí, en la programación, variables son, uno, puede haber llamado cualquier cosa que queramos. Hemos estado usando n como un contador. Pero podríamos utilizar el contador de palabras, o, como se verá, la mayoría de cualquier frase que te pueden gustar tanto tiempo, ya que es descriptiva, pero no deja de ser un recipiente de almacenamiento. Es un trozo de memoria, algún número de bits, y que varía según el ordenador, cómo muchos bits hay que componer esa variable. Pero podemos poner valores en ella. Hasta ahora, sólo hemos puesto los números. Pero podemos poner palabras reales. Podemos poner párrafos. Podemos poner imágenes - nada, en realidad, podemos representar con ceros y unos, podemos poner en esta noción de nivel superior de una variable. Así que bastante sencillo allí. Y esa es la línea uno. Pero nos movimos muy rápido desde una línea para hacer realidad algo con esa variable. Y en la tercera línea, actualizamos N. Nosotros N. incrementado Y podríamos escribir esto cualquier número de maneras. Pero quizás el más obvio es sólo para decir, ajuste N igual a cualquier N es más 1. Así que ese fue nuestro incremento. Mientras tanto, hubo un bucle. Y esta, también, es probablemente bastante intuitivo. Un bucle es sólo algo en un programa esto sucede una y otra vez, algunos tipo de ciclo. Y esta frase clave aquí, para cada uno, es realidad muy común en la mayor parte lenguajes de programación, incluyendo los veremos en el curso. Cada vez que vea la palabra, es típicamente transmite la idea de que un bucle, algo cíclico, está a punto de suceder. Pero vale la pena señalar una otro detalle sintáctico. El hecho de que la tercera línea se realidad sangría por haber tocado el barra espaciadora par de veces es deliberado. Debido convención humana es tal que, cuando estás haciendo algo nuevo y otra vez, en un bucle, como se inició en la línea dos, sangría nada que perteneciera a ese bucle sólo para dejar claro que su línea de tres y no, por ejemplo, línea de cuatro o cinco, si había líneas para o cinco, que son parte de que los bucles. Así que este simple muesca transmite la idea básica. Así que hemos aplicado este algoritmo, ahora, a unos pocos ejemplos. Y esto, también, ejemplo sencillo en el mundo real. Pero va a ser representativa de cómo va a ir sobre las pruebas del poseer programas cada vez más complejos. Intenta una serie de escenarios, algunos representantes de los insumos, y ver si obtener los resultados deseados. Así que este ejemplo tenía dos personas sentado en la habitación de la residencia. A la izquierda está el mismo pseudo-código. Y esta es una captura de pantalla de la misma último paso de la aplicación de este algoritmo para esos insumos, EN SU Había dos personas en la habitación y, recordar, a medida que avanzamos a través de líneas uno, y dos, y tres, y dos y tres y hecho - por el final de ese algoritmo, tuvimos de hecho contado los dos compañeros que forman en la habitación. Entonces intentamos otro ejemplo. Y dijimos que si hay cero personas en la habitación? ¿Es este código sigue siendo correcta? Y así fue. Lo que pasa es que la línea dos y, por lo tanto, la línea de tres o no va a ejecutar. Ellos no van a suceder en absoluto porque simplemente no son aplicables si hay cero personas en la habitación. Pero no es un gran problema. Línea uno inicializa N a cero, por lo que a pesar de que sólo una línea de este programa en realidad termina siendo útil, todavía da la respuesta correcta, como indicado por el naranja cero en la parte inferior. Pero entonces decidimos que era una especie de algoritmo estúpido. Era bastante lento. Sin duda, puedo hacer dos, cuatro, seis, ocho, diez, cuando conteo de personas en una habitación. Entonces ajustamos el algoritmo, el pseudocódigo, por decir, ahora en la línea dos, para cada par de personas en la habitación, procederá a, en la línea tres, incremente en por dos en cada iteración. Así que habría trabajado aquí por este par de personas en la habitación. Pero entonces, si usted comienza a pensar en esto, y no se necesita mucho tiempo para darse cuenta, espera un momento esto es va a romper, rompe en qué caso simple? Si hay tres personas en la habitación o, más en general, cuando hay una número impar de personas en el habitación, incluyendo una. Nos íbamos a perder a esa persona aquí porque no hay tales pares. Así que nos dirigimos rápidamente al lugar la introducción de lo adicional construcciones de programación a la pseudo-código. Así que una condición, que se llama , o una rama. Y se supone que debe transmitir, visualmente, la idea de la rama, un tenedor en la carretera donde usted puede hacer esto o, tal vez, algo más. Y, en efecto, abordamos este problema añadiendo la línea 4, por decir, en serio, por lo el final, si una persona sigue siendo, y luego seguir adelante y lo considero especial. Así que tipo de caso especial de ellos, por lo que de hablar, de modo que ahora podemos manejar tanto un número par de personas y un número impar de personas. Ahora bien, hay varias maneras podríamos haber expresado esto. Y, francamente, yo podría haber sido aún más nit exigente cuando se trataba de mi elección de Inglés para el pseudocódigo. Pero al menos el espíritu de la idea es transportado. Si usted entregó este código a un amigo que no está en CS, o nunca ha tenido CS, las probabilidades son que podían imaginar, dado tres personas en la habitación, cómo contar esas personas sobre la base en estas instrucciones. Y eso es todo realmente queremos lograr con pseudocódigo, de alguna manera estandarizar la forma en que vamos sobre la representación de ideas para que podamos empezar a hacer más complicado cosa todavía. Así que eso nos lleva a continuación, en la actualidad, al código real. Empezamos a programar hoy, aunque en un ambiente amistoso. Y luego hacemos la transición muy rápidamente a una sintaxis más arcano, pero que que verá es fundamentalmente el mismo que las ideas verán manifestados con este otro lenguaje de hoy. Sólo va a buscar un poco diferente. Así que en lugar de llamar a este código, estoy va a ser un poco más precisos y decir, a partir de ahora, al escribir un programa, estás escribiendo código fuente. Es algo así como pseudocódigo. Pero ya veremos que no es una especie de suelta cuando se trata de la elección de las palabras que utiliza. Cuando programe en un idioma, tiene para usar las palabras, las frases, la sintaxis, que otras personas han decidido representar ese idioma en particular. Así Pseudocódigos depende de usted. Un lenguaje de programación real como C, como veremos al final vemos, es estandarizada por otras personas. Entonces, ¿cómo hacemos para escribir algo de código fuente? Bueno, yo voy a ir adelante y hacer esto. Voy a seguir adelante y abrir una ventana aquí. Más sobre esto la próxima semana. Pero este es un dispositivo llamado el aparato CS50. Estoy corriendo un pedazo de software en mi Mac, aunque se puede hacer lo mismo en un equipo con Windows, que está dando mí la ilusión correr un diferente sistema operativo del todo correcto aquí en una ventana en mi Mac. Acabo completo proyecté así no lo hace ver realmente de Mac OS en estos momentos. Este es un sistema operativo llamado Linux. Es muy popular. Es muy rápido. Es muy libre, que ha hecho que sea muy convincente, especialmente en el mundo comercial. Y más en que hacia el final de la semestre cuando usamos Linux un poco para la programación web y alojamiento de sitios web y proyectos reales. Así que ahora, sólo sé que éste es un ordenador de sobremesa eso significaba mirar vagamente familiar para Windows y Mac OS. Apenas tiene algunos nombres diferentes y los iconos de las cosas. Pero este es el llamado CS50 aparato, una máquina virtual que, empezando la semana que viene, ustedes se correr dentro de una ventana en tu Mac o PC. Para hoy, voy a abrir el más simple de los programas. Se llama gedit. Y esto es sólo un editor gráfico. Es algo así como Microsoft Palabra, pero más simple. Es como tipo de texto editar o bloc de notas. Es sólo un programa muy sencillo con el que escribir palabras en la pantalla. Dio la casualidad de que lo que si salvo archivos que he creado cuando este programa en una extensión especial similar. c, lugar de doc., o. xls, o lo que sea usted está familiarizado con, puedo realmente crear programas utilizando incluso esta simple editor de texto. Así que déjame hacer eso. Déjame ir por delante y guarde este presentar primero como hello.c. Y de nuevo, esta interfaz de usuario se familiarizarse con usted rápidamente. Pero, por ahora, sólo estoy escribiendo en un nombre de archivo. Voy a guardarlo en mi John Directorio de inicio de Harvard. Y ahora tengo esta pestaña que indica De hecho estoy editando un archivo llamado hello.c. Así que nada demasiado interesante aún. Y ahora que va a ser bastante críptico. Me voy a acercar, sólo por lo que es más visible. Y voy a empezar a escribir incluir stdio.h, int main vacío, rizado, abierto corsé, uno, dos, tres, cuatro espacios de sangría, impresión f, para la impresión algo formateado, fin de la cita cita, "Hola, mundo" barra invertida, n, cerca cita, cerrado el paréntesis, punto y coma, introducir retroceso, retroceso, retroceso, retroceso, cerrado corchete - He programado. Muy bien por lo que este es un super simple programa, en realidad, el programa que alguien comienza la programación con. Y todo lo que hace, con toda su complejidad, se imprimirá en la pantalla, ¿adivinen qué? ¡Hola, mundo. Pero no es suficiente sólo para escribir un programa. Así que este es el código. Este es el código fuente en un lenguaje llamado c. Se guarda en la actualidad en un archivo llamado hello.c. Ahora mira al final de la pantalla aquí. Más sobre esto, de nuevo, en las semanas venideras. Pero esto es lo que vamos a llamar una ventana de terminal. Es un parpadeo, negro pronta y blanco. Es una especie de un viejo interfaz de la escuela para un equipo que generalmente no hace utilizar un ratón u otro elementos gráficos. Simplemente utiliza el teclado. Y puedo escribir comandos en este indicador parpadea. Y para los propósitos de la actualidad, sólo soy va a escribir la siguiente - hacer hola. Y ese programa, marca, es sólo una programa que, en el mundo real estos día, nos haga doble clic en. Pero en esta interfaz para hoy, estamos va a escribir su nombre en esta pantalla. hacer hola literalmente va a hazme un programa llamado hola. Y va a hacerlo por mirar para un archivo, simplemente por por defecto, llamado hello.c. Esto va a suponer que quiero un programa en C por la naturaleza de cómo este ordenador está configurado. Así que sigo adelante y pulsa enter. Veo una cierta salida críptica, pero esto se hará con demasiada familiarizarse en poco tiempo. Esto le sucedió a ejecutar un compilador, más sobre eso en un momento, llamado Clang. Pero ahora, tengo más que otro parpadeo rápido. Y puedo seguir adelante ahora y tipo de punto recortar, por razones poco interesantes que vamos a volver a la próxima semana - hola. Así que todo este esfuerzo hasta el momento sólo para escribir el más simple de los programas que, tan pronto como me golpeó Intro, hace eso. Así que he escrito mi primer programa. Así que estoy deliberadamente burlándose en este mismo sencillo programa por un par de razones. Uno, es difícil emocionarse acerca de tomar una clase si este es el final del juego. Pero más que eso, hay una muchas distracciones aquí. La primera vez que se aprende a programar, por aquellos de ustedes menos cómodo, y Incluso, en su día, cuando por primera vez vi algo como esto - usted puede tipo de la figura que, de acuerdo, este está en un mundo hola impresión. Pero hay tanta distracción. Hay tanto de sintaxis en la pantalla que se pone en el camino de muy sencilla, de otro modo sencillo, las ideas. Así que lo que vamos a hacer hoy es que estamos va a dejar a un lado C y llegar atrás para que el lunes. Y vamos a usar una gráfica lenguaje de programación llamado Scratch. Este es un lenguaje de programación, que yo alude el miércoles que va que nos permitirá hacer el mismo tipo de cosas pero hacen la vista gorda, porque hoy, a las llaves, los paréntesis, los puntos y comas, y todos estos estúpidos distracciones que se interponen en el camino, en este primer día, de algunos básicos, bastante ideas interesantes. Así que con ese fin, me voy a ir De vuelta a mi escritorio aquí y dará a conocer la alternativa a la programa, que se va a buscar un algo se enciende esto. Eso es lo que vamos a aplicar esa mismo programa de hoy - dos rompecabezas piezas que, cuando entrelazados y hecho clic en, dirá al mundo, hola mundo. Así que vamos a ir en realidad allí. Así que voy a seguir adelante y abrir un sitio web conocido como scratch.mit.edu. Y esto me llevará a Este sitio web aquí. De antemano, me he inscrito en este sitio web y los primeros problemas que le guiará a través de algunos de estos pasos. Voy a seguir adelante y haga clic en en mi carpeta de cero aquí. Y esto me va a mostrar algunos proyectos que he en realidad creado de antemano. Y resulta que esta gráfica lenguaje de programación no sólo va para hacernos programa arrastrando y dejar caer estas piezas de un rompecabezas, que ni siquiera se necesita un software especial. Todo está incrustado dentro de un navegador para que usted puede hacer esto, en teoría, en los equipos en este momento, como algunos de ustedes bien puede ser, incluso sin necesidad de software como el aparato CS50, que llegará la próxima semana. Así que me voy a ir hasta la esquina superior aquí y haga clic en Crear. Y en un momento en que me voy a poner un espacio en blanco pantalla a través de la cual puedo empezar programación en esta gráfica entorno de programación. Pero esta vez, va a ser mucho, mucho más simple en realidad lo hacen. Así que en un momento, cuando el Wi-Fi coopera, ahora tenemos esta pantalla. Así que una visita rápida verbal, pero me atrevo a decir, sin duda cuando te sumerjas en el primer conjunto de problemas, se le encontrar este muy accesible y bastante intuitivo. Pero vamos a pintar una imagen mental sólo por un momento. Así que debajo de este mensaje dicho ahorro cambios, estás a punto de ver la nada. Se trata de un sprite. Es un personaje. Y vive en lo que llamaremos un escenario, este gran rectángulo blanco sobre que puede moverse hacia arriba, abajo, izquierda, derecho, y lo hacen, en realidad, otro tipo de acciones. Mientras tanto, en el medio de este usuario interfaz, tenemos un montón de rompecabezas de piezas. Y verás que dicen cosas como moverse 10 pasos, giró 15 grados, apuntar en una dirección determinada. Pero hay categorías de bloques hasta aquí también. Así que si voy a Las apariencias, verás que hay otras piezas de un rompecabezas que aparentemente le dirá esta cit de saludar, para pensar, para mostrar a sí mismo, se esconden a sí mismo. Si voy a sonidos, resulta hay maneras de jugar suena como el maullido, para detener todos los sonidos, para jugar un tambor. Así, cuento largo, hay un conjunto montón de piezas de un rompecabezas que le permiten decirle a este gato, o cualquier número de otros personajes, lo que debe hacer. Pero para hacer esto todo lo que suceda necesario para iniciar la programación. Y esta gran caja blanca o caja de color gris, en la derecha, aquí es donde Voy a arrastrar realidad y soltar las piezas del rompecabezas. Esa es mi texto en blanco ventana equivalente. Así que voy a seguir adelante y haga clic en De control en el medio. O más bien, déjame empezar bajo Eventos. En Eventos banco, verás que hay una algunas cosas que son deliberadamente curvado en la parte superior de tal manera que es probable que no se entrelazan en la parte superior de las piezas de un rompecabezas. Y eso es porque demarcar el inicio de un programa, el inicio de una guión, por así decirlo. Así que si sigo adelante y arrastre, cuando está verde bandera clic aquí, y luego me quiere esto decir cat algo al primero. Así que me voy a pasar por debajo de el panel de apariencia. Y yo voy a seguir adelante y agarrar el saludar bloque, y arrastrar y soltar, y dejar ir para que de forma automática enclavamientos allí. Y a continuación, observe lo que pueda haga clic en el texto. Y puedo anularlo para ser más específica como, por ejemplo, hola mundo. Y ahora tenemos el programa que yo reclamo es equivalente a la mucho más programa arcano implementé en C hace un momento. Si voy ahora hacia el lado izquierdo, notar que hay una gran señal de stop y una gran bandera verde. Permítanme hacer zoom para mayor claridad. Y cuando hago clic ahora esta bandera verde, probablemente se puede adivinar lo que este primer programa ahora va a hacer. Así que, también, estamos programando, pero que en realidad no estamos empantanados en algunos de los sintáctica, detalles minuciosos. Pero vamos a intentar algo un poco más interesante. Déjame ir a mi carpeta de Scratch aquí. Y en realidad, déjame así que permítanme abro un programa separado aquí por sólo una momento, maximizar esta ventana Abrir archivo, y yo voy a entrar en el actual directorio de origen. Como siempre, usted encontrará, hoy y en adelante, que todos los ejemplos de hoy en día son accesibles en el interior del la página web de la asignatura. Y voy a seguir adelante aquí y recoger un poco de algo diferente. Este de aquí, para los que Necesito un voluntario. ¿Quién quiere una lámpara de escritorio de hoy? Bien, ¿qué hay de alguien un poco - está usted en el final? Vamos hacia abajo. Ahora, ¿le gustaría participar o Sólo decir comenzar con la lámpara de escritorio? VANESSA: [inaudible]. DAVID MALAN: OK. Excelente, lo que te llamas? Vanessa? David. Gusto en conocerlo. Así que vamos y Vanessa va para tomar el control de mi teclado por un momento. Y lo que he hecho aquí, sólo por el tiempo de amor, como me he dado cuenta de la Wi-Fi era un poco lento, Scratch, el entorno de programación que estamos utilizando, con posibilidad de descarga y ejecutar en el equipo local. Así que lo que hice antes de la conferencia, en caso de que suceda, es que he descargado todos los archivos que estamos a punto de jugar con de modo que puedan correr un poco más rápidamente a la derecha aquí en mi portátil. Así que por eso ahora que estoy viendo una interfaz de Mac-específica. Así que voy a seguir adelante y abrir éste. Voy a seguir adelante y ahora pantalla completa de la ventana. Y como verás, podemos muy rápidamente, como este estudiante hizo, uno de sus predecesores, van de hola mundo a una convincente mucho, mucho más aplicación. Así que aquí están las instrucciones. Ah, y tenemos una cosa más. Pensé que sería divertido, ya que, Normalmente, vamos a estar filmando cámaras de esta manera. Pensé que sería divertido si, Vanessa, pudimos ver el mundo a través de sus ojos. Así que aquí tenemos un poco de Google Glass. [ASOMBRADO Suspiros] DAVID MALAN: Nosotros sólo estaremos dando mostrador de distancia Lámparas hoy. [Risas] Así que permítanme Cue esto. Muy bien, así que tocar esto. Aceptar, Cristal, grabar un vídeo. Muy bien, Vanessa? Ahora, en un aparte que no tiene nada que ver con Scratch, si nos fijamos ligeramente hacia arriba y hacia la derecha, verás el cristal literal, y que debiera ver una pequeña ventana rectangular. Usted debe ver a todos sus compañeros de clase se está filmando en este momento? Sí. VANESSA: Si. DAVID MALAN: OK. Así que eso está bien. Nos lanzaremos este metraje más tarde. Por ahora, dirija su atención a la pantalla aquí. Y lo que su predecesor ha hecho es poner algunas instrucciones en la pantalla sólo mediante el uso de un programa de dibujo. Así que usted va a, en un momento, presione la barra espaciadora para comenzar. Y luego algunas piezas del rompecabezas se van para comenzar a ascender en la pantalla. Y usted desea golpear las teclas de flecha, simplemente al igual que en DDR real, de conformidad con las cosas en fila con las flechas. VANESSA: OK. DAVID MALAN: Has jugar antes. VANESSA: Si. DAVID MALAN: Muy bien, Vanessa, seguir adelante y se lo quite. [MÚSICA - KAYNE OESTE, "FUERTE"] [Aplausos] DAVID MALAN: Así que vamos ahora dar un paso de eso. Así que, claramente, ese es el final del juego. El fin del juego no es hola mundo. Pero usted no tiene que ver necesariamente cosas que son tan interactivo. También se puede hacer la animación. Así, por ejemplo, otro de su sucesores hicieron este programa aquí, que cuenta una historia de más de que no puso en práctica un juego. Así que déjame ir por delante, ya abrir aquí un programa en nuestro directorio fuente misma a partir de hoy. Esta llamada, y vamos a empezar con una historia de amor de la galleta. Y para no hacer esto demasiado académica, pero, como ves esta, creo que usted mismo cuál de los simples conceptos de programación que hemos hablado sobre hasta ahora - variables y bucles, y condiciones, hizo su predecesor, probablemente utilice sólo para poner en práctica algunas de las visualizaciones. Usted ve aquí. Así que te doy una historia de amor de la galleta. [MÚSICA - GREEN DAY, "vacaciones"] [CRASH] [MÚSICA - LA TORTUGA, "Happy Together"] DAVID MALAN: Muy bien, así que, tuvimos una historia de amor de la galleta. Pero incluso allí - [Aplausos] DAVID MALAN: Muy bien, incluso allí, pensar, como esos corazones fueron de la parte inferior a la parte superior de la pantalla, no era en realidad un poco de aleatoriedad pasando. Y, de hecho, vamos a ver que incluso en el más simple de entornos, como Scratch, como en C, puede generar números aleatorios, o la ilusión de números aleatorios, de manera que el juego es un poco más interesante de lo que podría si tuviera absolutamente codificado todo. En el movimiento que se ve, no hay algún tipo de respuesta. Tan pronto como los toques por el hombre de pan de jengibre la mujer del pan de jengibre, ella parece alejarse. Y así, de hecho, se puede poner en práctica, en la mayoría de los lenguajes de programación, la noción de los acontecimientos, de forma que si uno mano toca Por otro lado, que puede desencadenar algunos de su código fuente para de hecho ejecutar. Usted puede escuchar a tal cosas en la pantalla. Así que vamos a hacer un recorrido rápido, entonces, de algunos de los componentes básicos que podemos utilizar para alcanzar algunos de estos objetivos. Así que aquí es lo que haremos a partir de ahora llamar a un comunicado. Una declaración pasa a ser de color púrpura en Scratch, un poco de algo como esto, pero eso es arbitrario. Una declaración es sólo una pieza del rompecabezas, o, más en general, una instrucción, que narra la computadora para hacer algo, un comunicado. Así que aquí está una muestra simple. Say hello world. Otra podría ser, espera un segundo. Así que esta pieza del rompecabezas, que es apoyado en Scratch, vamos a dejar que su personajes se detienen por algún número de segundos. Esto, también, es sólo una declaración. Aquí al lado, tenemos otro más interesante, jugar maullido de sonido, y la pequeña flecha significa que en Scratch, este es un menú desplegable. Así que usted puede importar sonidos. Puede grabar sonidos y hacer otra cosas divertidas en cero. Y eso, también, sin embargo, al final y al cabo, es sólo una declaración. Pero ahora vamos a introducir una mayor pieza interesante, que se conoce como una Expresión booleana. Capital B, el nombre de un tipo llamado Bool. Y una expresión booleana es sólo un pieza del rompecabezas o, más en general, un pieza de información que es verdadero o falso - uno o cero, sí o no. Así que es sólo uno de los dos opuestos. Así que uno de esos expresión booleana en el mundo de scratch tiene este aspecto azul pieza del rompecabezas. Y está haciendo una pregunta, ratón hacia abajo, y que, o bien puede ser, de Por supuesto, verdadero o falso. Así que con esta pieza de puzzle en el Scratch, así, usted será capaz de detectar si un descifrar si el ratón es, de hecho, ser celebrada por el que interactúa humana con su programa. Éste es un poco más abstracto, pero esos dos cajas blancas son sólo para los números. Así que usted puede hacer cosas como es este número menor que el otro? Y si es así, Scratch se comportará de una manera u otra. Éste es un poco más gráfico. Es si el sprite, si el gato, por ejemplo, en realidad está tocando el puntero del ratón. Así que si la pequeña punta de la flecha se cierne sobre el gato, entonces este pieza del rompecabezas se evaluará como true. Será verdad, en cuyo caso, si utilizar esta expresión booleana, como veremos ver en un momento, en una rama, puede o bien hacer esto, o usted puede hacer eso, al igual que tuvimos una condición que comprobado, ¿hay uno más última persona en la habitación? Si es así, añada una. De lo contrario, no te preocupes más. Por lo tanto una expresión booleana puede ser también y ed-juntos o o-ed juntos. Así que usted puede combinar expresiones booleanas y decir esto y esto debe ser cierto para todo esto para ser verdad. Y aquí está un ejemplo del mundo más real. Si ha utilizado Cursos CS50 hacer curso comerciales, estas casillas de verificación allí, donde si marcas la casilla de al lado a los cursos, que va a decir, sí, sólo mostrarme cursos para los cuales el valor Q es 4.5 o superior. Si se desactiva, no, no lo hace preocuparse por eso. O de forma similar, a la derecha, no lo hace Conflictos con cursos que estoy tomando, eso es verdadero o falso. Es sólo una expresión booleana. Así que todo este tiempo en que usted ha utilizado sitios web con casillas de verificación, sólo son alternando el equivalente de un booleano expresión de encendido y apagado. Así pues, en qué forma usted utiliza estos? Pues bien, en Scratch, ya veremos dentro de un momento que hay condiciones que tener este aspecto. Y eso es algo sensato, porque gran parte como en pseudocódigo, nos sangría el tipo de piezas de un rompecabezas en forma de U, con una media que nada dentro de esa U es va a ejecutar, o no, dependiendo en donde está. Así que si la expresión booleana, a continuación, lo que hay dentro se quieran realizar. Mientras tanto, hay un if / else bloque. Así que si quieres una rama que va de esta o cual manera, Scratch nos da eso. Y por esta lógica, ahora, a pesar de que pieza del rompecabezas es claramente demasiado pequeño para acuñar algo más dentro de ella, las piezas del rompecabezas de cero, que son sólo va a crecer. Al arrastrar y soltar sobre algo, que sólo va a crecer para adaptarse a lo que sea es lo que estás tratando de hacer. Así que podemos tomar dos de estas cosas y hacer un tenedor de tres vías en la carretera, así que o bien hace esto, o aquello, o esta otra cosa con sólo anidarlas de esa manera. Por supuesto, si lo haces demasiado mucho, empieza a ponerse feo. Pero en ese momento, en realidad estás Probablemente no se programa muy bien. Y por lo que será recurrente tema, también, la de estilo. ¿Qué tan bien hacer realidad formatear su código? O ¿qué tan bien el diseño de su código? Pero más sobre esto en el futuro. Y ahora tenemos lazos. Hay un bonito lazo para siempre en scratch lo que significa, literalmente, que - do lo que hay dentro de este nuevo, y otra vez, y otra vez. Puede ser más concreto y decir: hacer lo siguiente 10 veces. También puede utilizar las variables. Usted puede subir con cualquier nombre en ese poco desplegable y decir, dame un variable llamada n y ajuste es igual a algún valor. Y entonces usted puede tener funciones. Pero más sobre esto en sólo un momento. Déjame volver a mi Interfaz de Scratch. Y déjame ir por delante en esta ocasión. Y vamos a seguir adelante y abrir, digamos, un ejemplo de - eso es un poco más interesante. Déjame ir delante, y, en realidad, Permítanme hacer yo mismo. No necesito para abrir éste. Déjame ir a Archivo, Nuevo. Voy a ir a eventos. Me voy a ir cuando la bandera verde hecho clic, y yo voy a ir a Sonido. Y yo voy a arrastrarlo este pieza del rompecabezas, jugar al maullido de sonido. Se bloquea juntos. Y ahora, si hago clic en la bandera verde - [MEOW SONIDO] DAVID MALAN: Adorable. OK, así que ahora vamos a hacer algo un poco más lógico sólo para demostrar que podemos, por ahora. Voy a desenganchar esto de ese tipo. Voy a ir a control. Y yo voy a agarrar una condición. Así que si algo entonces. Así que esa es la forma en que se ve allí. Así que necesito una expresión booleana. Y déjame seguir adelante y decir, déjame ir a los operadores. Voy a hacer algo un poco mathy, sólo por diversión. Voy a entrar ahí y decir, si algo menos que otra cosa, seguir adelante y hacer algo. Así que ahora, ¿sabes qué, un bloque aleatorio. Así cuenta cómo, si yo se ciernen sobre esta cosa aquí, que se ajustará en ese país. Así que ahora, aviso, estoy empezando a hacer algo ya más lógica interesante. Si un número aleatorio entre 1 y 10 es menos de, digamos seis. Si elijo seis, que, básicamente, medios, haga lo siguiente con un 50% probabilidad. Es como lanzar una moneda. Ahora, puedo hacer algo de forma condicional. Y ese algo que voy que hacer es reproducir el sonido. Así que ahora, cuando hago clic en la pantalla bandera, es como tirar una moneda. [MEOW SONIDO] DAVID MALAN: Fue cabezas o lo que sea allí. Vamos a hacerlo de nuevo. [MEOW SONIDO] DAVID MALAN: Jefes de nuevo. [MEOW SONIDO] DAVID MALAN: Jefes de nuevo. Ufff, OK. Tails ese momento. Así que el 50% de las veces, si hacemos esto infinitamente largo, vamos a obtener el 50% maullidos y 50% silencios. Así que, sólo un edificio básico bloque que nos permite hacer eso. Pero esto es un poco tedioso que tengo para seguir haciendo clic en ese botón. Así que vamos a arrastrar y tirar todos aquellos de distancia. Si usted los ha arrastrado a la mitad, que sólo va a eliminar a sí mismos. Déjame ir a controlar. Déjame ir a por siempre. Y esta vez, voy a hacer algo minorly molesto. [Risas] DAVID MALAN: Y déjame ir adelante y hacer control. Espere un segundo, sólo para no es demasiado rejilla. [MEOW SONIDO] DAVID MALAN: Eso no es natural. Aceptar. [MEOW SONIDO] DAVID MALAN: Y note lo que es, un buen sobre Scratch, para aquellos de ustedes que tiene experiencia de programación previa, no es necesario para iniciar y detener. No es necesario para compilar. Usted acaba de cambiar, y el programa se adaptará dinámicamente. Así que esto se está poniendo un poco interesante. Pero demos un paso más allá. Déjenme seguir adelante y obtener deshacerse de ese programa. [MEOW SONIDO] DAVID MALAN: Eso es lo que vamos a llamar a un error en los arañazos. Él no debe seguir haciendo ese sonido. Así que vamos a decirle que pare. Muy bien, así que ahora estoy va a entrar en - Te dejaré saber MIT. Vamos a repasar aquí para siempre. Y ahora, yo quiero hacer algo una y otra vez. Voy a entrar en control. Y vamos a ver, voy a arrastrar mi condición if allí. Así que ahora cuenta de la lógica. Cuando se hace clic en la bandera verde, hacer algo para siempre, pero sólo lo que algo si esta otra cosa es cierta. Voy a ir a, vamos a decir, sintiendo. Y yo voy a seguir adelante y elegir tocar y dejarlo allí. Esa es una expresión booleana. Y ahora, fíjate, en esta caída menú de abajo, hay algunos valores predefinidos. Así que puedo decir, estás tocando el borde de la pantalla? ¿O tocando el puntero del ratón, la flecha en la pantalla? Así que voy a hacer eso. Y si es así, entonces yo voy a ir adelante y jugar maullido sonido. Así que ahora tengo el tipo de inicios de un juego - un juego adorable. [MEOW SONIDO] DAVID MALAN: OK, un adorable, Buggy juego. Déjame esperar, digamos, un segundo allí. Ahora toca de nuevo, haciendo clic en la bandera verde. [MEOW SONIDO] DAVID MALAN: Así que ahora es como acariciar a un gato. [MEOW SONIDO] DAVID MALAN: Muy bien, ahora esto que yo hice por adelantado. Muy tarde, se pone tipo de fácil de hacer cosas estúpidas. Así que déjame ir aquí. Digamos, que era la mascota del gato. Ahora vamos a abrir no acaricie el Gato. Ahora, si jugamos éste, se puede adivinar, si eres mirando a la pantalla - [MEOW SONIDO] DAVID MALAN: Ahora, si yo acaricio al gato [LION ROAR] DAVID MALAN: Así que en realidad no acariciar al gato en ese caso. Así que ahora sólo tenemos un ejemplo de un rama que va en dos direcciones. Ahora voy a seguir adelante y abrir otro aquí. Éste, también, entre nuestra fuente archivos de código para el día. Así que déjame ir de nuevo en mi Fuente directorio y entrar, vamos a elegir este chico aquí y ver lo que es diferente. Wow, está bien, por lo que ahora se está haciendo un poco más complejo. Y antes de que veamos lo que hace este tipo, vamos a tratar de inferir, a partir del programa de en el lado derecho. Y ahora rascamos claramente nos permite tener varios guiones, múltiples programas asociados con uno de sprites, con un carácter, y, al parecer, Ambos van a correr al mismo ritmo. Debido a que comienza dos de estos programas con bandera verde cuando se hace clic, se trata de haciendo alusión a un tema más avanzado, con que algunos de ustedes podrían estar familiarizados, conocido como roscado, o multi-threading. Resulta que, cuento largo, computadoras hoy puede hacer esencialmente múltiple cosas a la vez. O pueden hacer una cosa a la vez, así rápido que no te das cuenta de que que está haciendo en realidad uno cosa a la vez. Pero por ahora, vamos a suponer que ambos estos programas van a ejecutar en el al mismo tiempo. Y note, ambos tienen rompecabezas para siempre piezas. Así que están tanto va a seguir funcionando hasta que llegué a la señal de stop de color rojo. Entonces, ¿qué van a hacer? Por el lado de la mano izquierda, yo soy al parecer Declarar una variable llamada silenciada. Así que no me llamo algo así como aburrido como N. llamé silenciado este tiempo para transmitir significado. Me puse igual a cero. Vamos a pensar en eso como Falso o vamos a pensar en eso como Falso. Ahora, para siempre hacer lo siguiente. Si se pulsa la barra espaciadora del teclado, entonces si silenciado es igual a cero, luego cambiar silenciado igual a uno. Else, establezca silenciado a cero. Así que, lógicamente, a pesar de que eso es un todo montón de piezas de un rompecabezas que está en Sólo digo, cuando me golpeó la barra espaciadora, ¿qué debo hacer para la variable llamada silenciado? Cambiarlo por uno a cero, o cero a uno. Eso es todo. Así que es como encender un interruptor de luz encendido o apagado y el recuerdo, con un variables, que yo lo he hecho. Mientras tanto, en el lado derecho, a términos sencillos, ¿cuál es el propósito de el guión de la derecha? ESTUDIANTE: Para reproducir el sonido de leones marinos. DAVID MALAN: Para reproducir el sonido del león marino, si él no está silenciado, por naturaleza de esa variable. Así que estamos compartiendo estado, por así decirlo, compartir información a través de estos dos guiones porque, aviso aquí, estamos siempre haciendo lo siguiente. Si silenciado es cero, por lo que si no está silenciado - si silenciado es falso, entonces el juego este sonido Sea Lion. Y piensa a sí mismo, hi, hi, hi, para de dos segundos, espere un momento, y luego puedes volver a intentarlo. Así que si nos vamos ahora hacia aquí a la izquierda, de donde es este tipo, y dio en el bandera verde, [SEA LION SONIDO] DAVID MALAN: ¿En qué punto esto pone muy molesto? Debido a que esto sólo va a durar para siempre. Así que a veces, bucles infinitos, por así decirlo, son deliberados. Pero en este caso, tan pronto como pulsa la barra espaciadora, se detiene. Ahora, el programa no ha dejado. Todavía está funcionando en estos bucles. Pero si tengo la barra espaciadora de nuevo - [SEA LION SONIDO] DAVID MALAN: Él va a recoger hasta donde lo había dejado. Así que hay una manera para que hagamos algo de nuevo y de nuevo, pero, que tiempo, sólo en determinadas condiciones. Bueno, ya que estamos en esta línea de hacer cosas una y otra vez, me dejó ir a otro ejemplo de ello aquí. Éste lo llamaremos contar ovejas. Y note lo que hace este tipo. En realidad es un poco más como el pseudocódigo jugamos con el Miércoles, mediante la cual se establecen algunas de venta libre, pensar en ello es como N de nuevo, para cero, que siempre hace lo siguiente. Él dice que el valor del contador para una segundo, espera un segundo, y luego cambia el contador en uno. Y en este contexto, que se acaba significa la incrementa. Así, añade uno a ella. Así que esto es literalmente - no es exactamente lo que pensamos de como contar ovejas. Es la oveja haciendo el recuento, para siempre, por encima de cero. Así que podemos hacer cosas similares allí, lógicamente. Pero ahora vamos a tratar de limpiar algunas de estas cosas. Déjame ir adelante ahora en un simple ejemplo en el que nuestro gato es sólo va a empezar a toser. Muy bien, así que aquí tiene tos 0 - los científicos de la computadora inicio a contar desde 0. Así que este gato es sólo va a toser tres veces. Y así es como he implementado eso. Cuando se hace clic en la bandera verde, toser, esperar, tos, espera, toser, espere. Y lo hice solo arrastra y colocar las piezas del rompecabezas. O si usted comienza a jugar con Scratch, verás que en realidad se puede duplicar piezas de manera que usted puede hacer las cosas más rápidamente sin arrastrar y cayendo hasta la saciedad. Pero no estamos en el mejor camino aquí. Porque ¿cómo lo hago tos por cuarta vez? Bueno, podría especie de ir aquí. Yo podría duplicar y luego pega este ahí. ¿Cómo puedo hacer toser quinta vez? Bueno, copie y pegue de nuevo. O arrastrar y soltar de nuevo. Y muy rápidamente, este programa se inicia conseguir muy, muy redundante, muy largo, pero realmente interesante. Pero hay una manera de limpiar esto. ¿Cuál es la manera obvia limpiar esto? OK, así que podríamos ir realmente y, cuando se pulse el espacio bar, pídale que tosa. Pero si yo sólo quiero hacer algo repetitiva, recordar que nosotros tenemos algunas construcciones de control. Permítanme que pase esto de la manera, pasar bajo control. Permítanme hacer una repetición, decir, tres veces. Y ahora vamos a robar un poco de de estas piezas del rompecabezas. Permítanme rompo esto aquí. Déjame lanzar estas lejos del todo. Y ahora, tengo una mejor programa diseñado. ¿Por qué? Si quiero cambiar el número de veces este gato tose, todo lo que tengo que hacer es cambiar una variable o un valor, en lugar de tres, cuatro, o cinco, o seis. O podría hacer algo de forma condicional, incluso, con el espacio bar si quería. Así que este es un principio general. Una vez que comience la copia y pegar código, ya sea en Scratch, o en C, que está haciendo algo mal, lo más probable. O por lo menos, una vez se ha superado algunos un número razonable de copias y pastas, usted está probablemente haciendo algo mal. Pero ¿sabes qué? Realmente no me gusta este. Este no es el diseño más limpio. Me gustaría que hubiera una pieza del rompecabezas llamado tos porque entonces yo no lo haría que aplicar esto a mí mismo, a la manera antigua, por habiendo decir y esperar - ¿y si no eran más que una pieza del rompecabezas de la tos. Bueno, realmente puedo hacer eso. Déjame ir bajo más bloques, haga clic en Hacer un bloque, y ahora me sale este ventana aquí. Voy a llamar a esta cosa de la tos. Voy a seguir adelante y haga clic en Aceptar. Y ahora fíjense, me sale una nueva partida pieza que está curvado en la parte superior. ¿Y qué voy a hacer con esto, estoy va a simplemente robar estos bloques. Voy a poner aquí. Y ahora, con estas tres piezas, no tengo implementado lo que voy a llamar a un función, o un procedimiento, o algunos de debes saber que como método. Las pequeñas diferencias entre las palabras. Pero por ahora, vamos a llamar a esta función. Esto es sólo una nueva pieza del rompecabezas. Ahora se implementa como este. Pero note que los arañazos nos ha dado un representación física de que toda bloquear por aquí. Así que ahora, puedo sólo tienes que arrastrar esto aquí, por ejemplo, repetir tres veces, y ¿qué va a pasar ahora, cuando juego este script, es sólo un programa se está ejecutando en un momento. Sólo hay uno cuando bandera verde hizo clic. Pero ese bloque púrpura llamada tos es contando con eficacia a los arañazos, cada vez que vea a esa pieza del rompecabezas, en realidad ejecutar estos pasos que yo pasar a aplicar manualmente. Así que es una especie de limpia. Pero ahora, supongo que me decidí, no lo hago quiero este gato sólo para toser. Quiero que él sea capaz estornudar también. Bueno, ¿cómo podemos ir sobre La implementación de estornudar? Bueno, yo podría muy bien hacer lo mismo. Podría hacer otro bloque. Yo podría llamar a este estornudo, haga clic en Aceptar. Entonces, aquí lo que pude en realidad haber, déjame duplicar este - y allí es donde se debe sentir como es probable que no estás haciendo algo en la mejor manera. Yo podría decir algo así como: achoo, durante un segundo. Espere un segundo. Ahora tengo un nuevo bloque llamado estornudo. Y, en efecto, ahí está. Pero esto, también, debe comenzar a sentir - quizás no es la primera semana de clase, pero por el segundo - sólo un poco redundante. Claramente, hay algo de redundancia aquí. Así que permítanme proponer, en cambio, que perfeccionar esta definición de la siguiente manera. Déjame ir a mi menú de archivo. Yo no voy a guardar esta versión. Voy a ir a uno de mis archivos prefabricados aquí. Y voy a seguir adelante y abrir la tos 2. ¡Vaya que era tos 2. Déjame ir adelante y abro la tos 3, que es el directorio de origen. Tos 3 y aviso - oh, yo dije la historia en el orden equivocado. Déjame recuperarme de esta historia. La historia que quería decirte termina con la tos 4 - ahí está. ¿Y qué si, en cambio, definir una pieza del rompecabezas más grande llamada definir, dicen palabra n veces. El estornudo es sólo, al parecer, en Scratch, achoo. Así lo expresamos como una palabra, simplemente porque esa es la restricción del programa. Y la tos es [TOS], pero la tos, C-O-T-G-H. Así que eso es sólo dos palabras diferentes que realizan, esencialmente, la misma cosa. Así que en realidad puedo hacer una nuevo bloque como este. No hice uso de esta opción de menú anterior. Pero al hacer clic en Hacer Block, usted puede elegir algunas opciones. Y se puede decir que este bloque realidad toma algunos insumos, de lo contrario conocido como argumentos, o parámetros, de modo que puede modificar el comportamiento de los su bloque. Así que lo que hice hace un momento era Llamé a este bloque de Say. Y entonces me dije, toma una entrada de cadena. Y ahora fíjense, por defecto, dice cadena 1. Una cadena es tan sólo una palabra, o una frase, para nuestros propósitos. Pero yo sólo voy a poner un poco de texto de marcador de posición allí, al igual que en un sitio web, cuando ves nombre de usuario, o contraseña, y luego desaparece cuando de empezar a escribir. Eso es todo lo que es. Y ahora me voy a añadir una entrada de número. Y voy a llamar a este n - pero eso es bastante arbitraria. Y a continuación, sólo una etiqueta, sólo para hacer este bloque un poco más de auto explicativa - veces, eso es lo que acabo de hacer. Y el resultado final es que me sale un bloque que tiene este aspecto. Y ahora noto, estoy usando un bloque de repetición. Pero en lugar de la codificación dura tres, yo soy arrastrar y soltar n en allí, así que puede parametrizar la función. Puedo hacer esta función haga algo un número diferente de veces sobre la base de ese valor. Y fíjense, por ejemplo, esto es lo que hice aquí, si arrastro palabra, puedo decir que no es un palabra codificada duro, pero lo que sea se pasa en un segundo. Mientras tanto, ¿cómo puedo volver a implementar tos? Yo en cambio defino la tos como diciendo tos n veces. Así que en resumen, estoy pasando por esta rápidamente, pero la idea básica es tan pronto como se empieza a ver en su programa que, espera un minuto, lo que he hecho algo como esto antes, encontrar los factores que algunos común funcionalidad? ¿Puedo descomponer lo que estoy haciendo en algunas ideas básicas? Eso es lo que estamos haciendo aquí. Y he apilan estas cosas, visualmente, en la parte superior de uno al otro porque es testimonio de esa idea de comenzando con el binario, va a ASCII, haciendo programas gráficos, tipo de capas de las ideas cada vez más complejas en uno encima del otro. La misma idea aquí. Empecé desde cero, la implementación de tos, tos luego se dio cuenta es realmente sólo decir algo. Así que déjame en vez poner en práctica las idea de decir algo. Y encima de eso, ¿puedo aplicar achoo o tos? Y podríamos hacer más, tales variantes todavía. Así que a partir de este principio básico, podemos empezar a hacer programas cada vez más complejos. Permítanme abro éste. De hecho, podemos tener múltiples sprites interactuar en la pantalla a la vez. Si entro en mi directorio de origen y agarrar una llamada Temas, recuerdan que una hilo es realmente la capacidad de dos secuencias de comandos para ejecutar lado a lado al mismo tiempo. Observe ahora, tienen tanto un sprite de aves y un sprite gato, ambos de los cuales tiene sus propios guiones. Así cuenta, cuando hago clic en el gato, me sale estos scripts. Cuando hago clic sobre el pájaro, Consigo estos scripts. Así que cada uno de estos tipos tiene sus propios programas. Cuando ahora hago clic en la bandera verde, el aviso que lo que hace este programa es tener el gato, increíblemente poco a poco, perseguir a las aves. Pero el gato tiene la ventaja de tener sido programado de tal manera que no importa donde el pájaro es, el gato va hacia él. Podemos jugar a ese juego mucho más rápido. Así que si estoy en el gato, notará que soy usando, digamos que mover una escalera. Vamos a echar a mudarse cinco pasos en un momento, por lo que los cinco puntos a la vez. Permítanme haga clic en Reproducir. [LION ROAR] DAVID MALAN: Muy bien, ahora podemos realmente dar al gato la ventaja. 10 pasos a la vez. [LION ROAR] DAVID MALAN: Muy bien, muy rápido, se pone un poco la ventaja para el gato. Pero voy a agito mi mano en algunos de los detalles. Pero la razón de que ese camino es comenzando un poco diferente cada vez es que me estoy haciendo un poco de aleatoriedad. En realidad estoy apuntando con el gato en una dirección diferente según el lugar donde me quiero que comience para que cada vez el juego, o la animación, es un poco diferente. Ahora, permítanme presentarles a uno otra construcción, aquí. Así que en este caso, tuvimos funciones. Hay también va a ser una pieza del rompecabezas conocido como una matriz o una lista, que le permite almacenar múltiples valores dentro de una variable. Vimos las discusiones, y ahora hay Eventos. Así que aquí está un evento usando estos dos tipos de aquí. Y si abro el archivo llamado Eventos a partir de ejemplos de la actualidad, lo haremos ver un programa que se ve un poco como esto. Y ahora note este tipo - por lo que noto que tengo el azul Muppet clic - que sólo hace lo siguiente. Él no tiene uno de esos verde bandera piezas de un rompecabezas. Él tiene una cuando recibo evento - por lo que algunas palabras arbitraria. Me acaba de escribir a cabo evento allí - que va a decir, Polo, durante dos segundos. Así que aquellos de ustedes que están familiarizados con este juego podría saber a dónde va esto. Si ahora hago clic en el Muppet naranja, su programa hace esto. Siempre, si la barra de espacio del teclado suprimida, él va a decir, Marco, durante dos segundos en la pantalla. Pero también va a utilizar este colombófilo bloque conocido como difusión. Él va a emitir cita Lo dijeron ellos, "event". Mientras tanto, el chico de color azul, el recuerdo, es escuchando, entre comillas, "event". Así que de alguna manera, ahora, podemos tener dos sprites que interactúan. Y cuando lleguemos a la programación web, más tarde en el término, como lo será este ser ventajoso tener su sitio web hacer algo en respuesta a, por ejemplo, un clic del teclado. Así que déjame ir adelante y pulsa la barra espaciadora. Chico de Orange dice Marco. El individuo azul dice Polo. Si lo hago de nuevo tipo de naranja dice Marco, azul chico dice polo. Así que vamos a echar un paso más allá. Esta vez, vamos a ir, probablemente, sólo unos pocos minutos más aquí. ¿Tenemos - lámpara de escritorio, vamos hacia abajo. Estás justo en el final. Aceptar, puede tanto subir. Tenemos las lámparas de escritorio para todos. Vamos. No sé si podemos mantener este gag ridículo hasta todo el semestre, sin embargo. Muy bien, vamos hacia abajo. Y mientras tanto, tenemos la siguiendo los ejemplos de arrancar, sólo para acelerar las cosas ahora, de tal manera que nos tener una manifestación de otro predecesor suyo utilizando el mismos bloques de construcción básicos. ¿Cómo te llamas? JOHN: John. DAVID MALAN: John. Encantado de que te. ¿Y? SETZ: Setz. DAVID MALAN: Setz, amable conmigo usted. John, si desea venir primero, se trata de un viejo juego de la escuela llamado Frogger. El teclado se utiliza para esto también. Y el objetivo es llegar al otro lado la calle y el agua. [MÚSICA Y SONIDO FROGGER JUEGOS] DAVID MALAN: Lo siento, no hay lámpara de escritorio para usted hoy. Muy bien, Setz, ¿verdad gustaría venir en un máximo? Muy bien, vamos a hacerlo de nuevo. SETZ: ¿Utilizo las flechas? DAVID MALAN: Sólo las teclas de flecha. Arriba, abajo, izquierda, derecha. [MÚSICA Y SONIDO FROGGER JUEGOS] DAVID MALAN: Los llamaremos accésits hoy, entonces, muy bien hecho. En este caso, para los dos, Juan y Setz. Felicitaciones, está bien. Así que de nuevo, ya que este juego se juega, pensar en lo que está pasando? Uno, claramente hay una gran cantidad de movimiento. Pero hemos visto cómo, con el gato y el ejemplo aves, cómo se puede hacer el ilusión del movimiento, con sólo mover un poco número de píxeles y otra vez. Y si usted tiene un bloque para siempre, usted podría tener estos coches haciendo esto para siempre. Tenemos la capacidad de tener algo de aleatoriedad. Así que este juego no tiene que ser exactamente lo mismo cada vez. Esos registros, los coches, pueden empezar a ligeramente diferentes para que el juego en sí es más interesante con cada juego. Y mientras tanto, hemos visto la capacidad para escuchar a la barra de espacio. Pero es evidente que, en Scratch, puede también escuchar para arriba, abajo, izquierda, derecha, y Realmente cualquier tecla del teclado. Y también se puede hacer otras cosas. Déjenme seguir adelante y volver a la versión web. Déjame ir a nuestra colección de ejemplos. Y bajo mi estudio, de vídeo que es, esencialmente, una en la carpeta scratch.mit.edu. Tenemos las versiones web de todos estos proyectos. Y vamos a ver si puedo conseguir mi ordenador a cooperar aquí. Esto está escrito por uno de nuestros amigos en el MIT, llamado Mover la mariposa. Y una vez que esto se abre, se trata de va a usar en realidad más de hardware de mi ordenador. Rasguño pasa a ser implementado con Flash. Flash puede hablar con su webcam, si usted tiene uno. Así que si sigo adelante y pantalla completa este aquí, haga clic en la bandera verde, el aviso ese mensaje de seguridad del flash es decir, es lo que quieres permitirá usar mi webcam? Normalmente, usted debe probablemente diría Denegar. Pero en este caso, vamos a decir lo permitan. Entonces yo voy a decir Chrome para permitir que esto también. Y ahora, en un momento, me ves, sí, yo. Y si mi mano sube - Tengo que no mover mi cabeza al mismo tiempo. También hay una reflexión en la pantalla. Vamos, ahí vamos - se puede mover en la pantalla porque también hay rompecabezas de piezas - oh, sé lo que es, es porque también ver la pantalla del proyector detrás de mí. Así que tenemos un poco de infinito algo pasa ahí. Muy bien, así que voy a jugar aquí. Eso es. Así también hay una pieza del rompecabezas que dice, cuando usted ve el movimiento por debajo de uno de los sprites, usted puede tener que ir arriba, abajo, izquierda, derecha o similares. Así que tenemos un poco de la realidad virtual pasando aquí también, todo dentro de la confines de mi navegador, simplemente Entre aquí usando mi webcam. ¿Cuál es entonces en el horizonte. El primer conjunto de problemas, como se verá, o el sitio web estará en línea más adelante esta noche en cs50.net, es bastante hay mucho que hacer para ser un final abierto. Y poner en práctica un proyecto de Scratch de interés para usted, un juego, una interacción, algo artístico, y el reto de utilizar cualquier número de estas piezas del rompecabezas. Y puede ser o bien interactivo de esta manera. O puede ser algo más deliberadamente hecho de contar una historia. Y, de hecho, ahí es donde vamos a terminar fuera hoy, con un último ejemplo. Déjame ir a los arañazos localmente. Déjenme seguir adelante y abrir esto, y juego un último programa escrito por uno de sus predecesores, a saber, que uno aquí. Bueno, suba el volumen para éste. [REPRODUCCIÓN DE MÚSICA] NARRADOR: En la próxima CS50, David invita a un voluntario en el escenario. DAVID MALAN: Para esta demostración, vamos a necesitar un voluntario. ¿Le gustaría que vamos hacia abajo? ¿Cómo te llamas? Cambiando de tema.