[REPRODUCIENDO MÚSICA] Esto es CS50-- Harvard La introducción de la Universidad a lo intelectual empresas de ciencias de la computación y la técnica de la programación. Y mi nombre es David Malan, y Estaba pensando esta mañana, que ha sido asombrosamente 20 años hoy desde la última vez senté en el que ustedes hacen ahora. Era 1996. Yo era un estudiante de segundo año, y yo estaba tomando CS50 por primera vez. Y ni siquiera me había reunido el valor tomar yo mismo el primer año, en parte debido al tiempo. la informática para mí Era un poco como, meh. Yo era un poco de un geek de crecimiento arriba, pero no lo hice de verdad tener ningún intelectual interés en lo que parecía ser sólo un montón de la gente todo el tiempo de programación. Y yo tenía miedo de ser honesto. El curso y la informática más generalmente tenido y en cierta medida, todavía tiene esta reputación de un campo de ten cuidado, aunque sólo sea porque muchos de nosotros no están familiarizados con ella y no está seguro de ello. Y realmente no fue hasta que buscaras esta clase de segundo año que fall-- e incluso entonces, sólo matriculé porque el professor-- uno de mis primeros mentores, Brian Kernighan ahora en Princeton-- me permitió tomar el pase de clase falle. Y, de hecho, es por eso Hoy nos permita y anime estudiantes para tomar esta clase se sentaron / unsat. Y sólo entonces, por la final del semestre No me daba cuenta como, wow, esto No era un campo tan poco familiar. De hecho, esta fue una muy enriquecedor campo, y más emocionante, especialmente más adelante, mientras tomaba cursos de Arte Dramático y América 101 A y luego, eventualmente la arqueología de postgrado, ¿realmente empezar a ver el intersecciones de este campo, ordenador la ciencia, con las humanidades, ciencias naturales, las artes, la medicina, y similares. Y eso es lo que es tan bueno de la informática en última instancia, como esperamos que primero ver-- es su aplicabilidad a estos otros campos, y cómo se puede tomar algo de hoy y el semestre de ideas y habilidades prácticas de nuevo a su propio dominio, y, de hecho explorar esta intersección de las artes liberales y las ciencias. Así el 73% de que, si la última año es una indicación, nunca han tomado un curso de CS antes. Así que si, como yo, eres sintiendo un poco miedo, o francamente no estás entendemos para qué estás incluso en este caso. Tal vez sólo algunos seguido amigos a través de Sanders ahora mismo. Eso es totalmente bien. El objetivo aquí es para enganchar usted y asegurarles que si miras a la izquierda y a la derecha, vas a ver con los compañeros de clase tan poco o mucha experiencia que usted mismo pueda tener. Y, de hecho, vamos a compartir algunas estadísticas más tarde hoy en cuanto a lo de la demografía la clase tienen la apariencia típica. Y como añade reassurance-- y esto nos ¿Quiere decir desde que tomé durante el curso algunos años ago-- en programa del curso es esto- que lo que en última instancia materia en este curso no es tanto dónde terminan arriba en relación con sus compañeros de clase, pero donde en semana 11, el final de la semestre, terminan con relación a sí mismo en la semana 0, lo que es donde estamos hoy aquí. Y esto es lo que me di cuenta hace todos esos años. Y sé que un montón de clases dicen esto, pero es especialmente cierto en la informática. Al final de la día, este campo es desconocida, ya que era para mí y podría ser para usted, es realmente sólo de la resolución de problemas. Y, como tal, tiene esto aplicabilidad a conseguir otros campos. Y de hecho, si lo intentamos para destilar lo que esto significa, esta es la resolución de problemas en su esencia, me atrevería a decir. Hay input-- así que lo que se es que estamos tratando de resolver. No hay salida, que es de esperar la solución a ese problema. Y entonces, como lo haríamos decir en informática, hay este cuadro negro en el media que no necesariamente tienen que preocuparse por la forma en que funciona. Usted mismo podría eventualmente poner en práctica lo que hay dentro de esa caja. Sin embargo, para los propósitos de la actualidad y más en general, en la vida, todo lo que importa es que estos problemas se resuelven. Y lo que es este curso en última instancia, sobre el que se explora la intersección de estas entradas y salidas, y estos llamados algoritmos, como pronto veremos, que implementan lo que es debajo hay, el capó. Pero estas entradas y éstos outputs-- lo que significa realmente? Bueno, al final del día, necesitamos alguna manera de representar la información. Esto es especialmente cierto en un ordenador, la cual es tan elegante y complejo, ya que podría parecer, es un dispositivo bastante tonto. Se necesita electricity-- ya sea de un cable o una batería como input-- y entonces se produce alguna respuestas preprogramados en la pantalla. Pero ¿cómo podemos obtener a partir de principio a fin allí? Pues bien, ¿qué es un problema a resolver? Bueno, tal vez podríamos, por lo el inicio de un semestre, tratar de tomar la asistencia en una habitación como esta. Por lo que podría hacer como una, dos, tres. O tal vez, si lo hiciera al tipo de seguimiento myself-- de hacer un seguimiento de las cosas-- Podría correr rápidamente de los dedos. Así que yo podría hacer hash de una marks-- persona, dos, tres, cuatro, cinco, seis, siete ocho. Y todos nosotros tenemos probablemente hecho esto, ya sea en sus manos o en un trozo de papel. Y esto es en realidad algo que se llama notation-- unario donde si sólo tiene una letra en su alfabeto, uno o hachís marca en este caso, para cada de entrada que desea contar, que necesita para acabar con uno de estos letters-- una de estas marcas. Todo bien. Eso es todo bien y bueno y no tan complicado. Pero las computadoras no son todos que mucho más complicado. De hecho, la mayoría de ustedes probablemente saber incluso si no tienes realmente considera lo que esto significa, que ordenadores sólo entienden ceros y ones-- el llamado sistema binario. Los seres humanos, por el contrario, son tan mucho más sofisticado en la medida en tal como la entendemos ceros a través de nueves. Pero incluso si binario es, en primera vista, no todo lo que conoce, Resulta que es igual que los sistemas y las ideas que ya conocen. Así, por ejemplo, considere esto. Esto es sólo una secuencia de símbolos. Y todos ustedes, cuando mirando a ella, probablemente pensar en nada 123-- realmente interesante allí. Pero ¿por qué es este número, 123? Estos son sólo glifos en la screen-- sólo patrones que alguien podría haber dibujado o escrito. Pero si usted es como yo, Probablemente recuerde desde la escuela primaria que hay una especie de columnas o lugares aquí. Hay lugar y el de la el lugar de diez y el lugar de los ciento. Y la razón por la que esto es 123 y no sólo un patrón de tres símbolos es porque, por supuesto, si tener un uno en el lugar de las centenas, se hacen las cuentas de 100 veces uno, y luego dos en lugar de las decenas. Así que eso es 10 veces 2, y luego tres en lugar de las unidades y eso es 1 Tiempos 3. Y cuando se agrega a todos los de arriba, de Por supuesto, se obtiene el 100 más 20 más 3. Así que empezamos con sólo un patrón symbols-- de un alphabet-- pero luego hemos mapeado en sentido que por medio de estas columnas. Pues bien, resulta que las computadoras no son realmente tan diferente de ti y de mí. Pero en lugar de utilizar potencias de 10, así speak-- 1, 10, 100, 1000, 10,000 lugar y así forth-- que realmente sólo tiene que utilizar los poderes de 2-- por lo que uno, 2, 4, y luego si ponemos más dígitos, 8, 16, 32, 64, 128, y así sucesivamente. Y así es como un ordenador representaría el número 0, al igual que los humanos. 0, 0, 0-- y que es fácil adivinar ¿Qué patrón de ceros y unos, si sólo puede un ordenador 0 hablar o lo 1-- patrón se va a representar los números de los seres humanos conocen como 1? Yeah-- 0, 0, 1. Todo bien. Por lo que 0, 0, 1 es la forma en que representamos 1, por lo que podría estar inclinado a continuación, para representar el número 2, si usted tiene el lugar de los cuatro y el lugar de los dos como un solo lugar, se podría decir, bueno, si tuviéramos un 1 en lugar de las unidades, y ahora queremos contar hasta 2, es posible que hacer esto y dejar que se trata de un cero. Pero por supuesto esto no es cómo el sistema decimal funciona bien. Si pones un dígito en tanto de esas columnas, usted tiene que hacer la aritmética. Entonces, ¿qué número me hizo accidentalmente acaba de representar? Así que es 3, ya que 2 veces 1 más 1 1 veces, por supuesto, nos da tres. Así que esto sería dos. El bit especie de lanza, por así decirlo, como 0 se convierte en un ser, al igual que un niño de 9 papeles más y se convierte en un 0 cuando transporte la 1. Esto entonces sería de tres por supuesto. Four-- otra cosa interesante sucede, donde los ruedan sobre y transporta la 1, por así decirlo. Así que esto, por supuesto, es 4. Pero si el avance rápido ahora, ¿cuál es el mayor número que va siendo que una computadora puede representar? Así que es sólo siete en este caso, ¿verdad? Debido a que tiene un uno en el cuatro, uno de los dos, un uno en uno. Así que eso es 4 más 2 más 1. Así que le da siete. Y, en efecto, que lo haría parecer a primera vista que los ordenadores pueden contar no más que esto. Pero esto por supuesto no es cierto. ¿Qué hacen los humanos cuando queremos contar más allá de como 999? Sólo llevar a la una y acaba añadir un cuarto dígito a la izquierda. Y así, de hecho, hemos podido. Podríamos tener un ocho de lugar y el lugar de la 16ª, y el lugar de una de 32, 64, y 128-- simplemente puede seguir adelante hasta el infinito. Por lo que estos ceros y ones-- el llamado system-- binario son lo que lo haría un científico de la computación en general, llamar a un bit o dígito binario. Pero ahora, ¿cómo conseguir que desde el concepto o los gráficos de estas cosas a un equipo real? Parece que estamos saltarse un paso aquí. Bueno, la única entrada al final del día, a mi ordenador portátil aquí Es este flujo de electricidad. Incluso si ha pasado un largo tiempo desde que has pensado o nunca pensado ¿Cómo funciona la electricidad, no hay electrones que fluyen en o hacia fuera, y eso es mi tipo de entrada. Así que si eso es todo lo que somos recibiendo como entrada aquí, ¿qué podemos hacer con esa información? Bueno, podríamos pensar en un cero como sólo una ausencia de electricidad. Nada es flowinw, nada es en movimiento, no pasa nada. Eso es sólo el valor por defecto Estado-- cero. Pero si no hay electricidad que fluye, ¿por qué no acabamos de forma arbitraria, sino a nivel mundial consistentemente, llame que un uno. Por lo tanto, simplemente por tener ningún poder, tenemos, sí potencia de un cero, tenemos una, sí el poder uno-- ningún poder. Y de esa forma, el uso de algo más físico o electrónico empezamos a poner en práctica esta noción de algo que es ya sea uno o un cero. De hecho, podríamos hacerlo aquí. No aquí, tengo tres, pero ocho focos de luz, cada uno de los cuales tiene su propio interruptor. Y por lo que si quería representar el número siete aquí, Yo podría activar estas tres bombillas. Y, en efecto, en el interior de mi equipo es de millones, miles de millones de cosas que son simplemente menor que, llamados transistores, interruptores, que acaba de encender y apagar. Así que estos son relativamente big-- interruptores big-- dentro de mi laptop-- son muchos, muchos, muchos, muchos más interruptores. Pero lo único que hacen es exactamente eso-- convertir algo en, convertir algo fuera. Y, como tal, un ordenador puede representar, con esos millones o billones de los transistores, los lotes y un montón de ceros y unos. Y hay otros equipos que todavía le permite almacenar información a largo plazo, de modo que cuando se tire de la enchufe, que no se pierda. Pero esa es una historia para otro día. Entonces, ¿qué podemos hacer con estos bits? Podríamos sólo para tomar la presión de me-- es que alguien puede querer venir aquí y ofrecer una demostración? Vi por primera vez este lado. ¿Cuál es tu nombre? MADAY: Maday. DAVID MALAN: Maday, vamos arriba. Encantada de conocerte. MADAY: Gusto en conocerte. DAVID MALAN: Ven esta manera. No voy a tener al labio para arriba. Todo bien. Así que aquí tenemos, notice-- uno, dos-- editaremos que out-- uno, dos, cuatro, ocho, 16, 32, 64, 128. Esto es deliberado. Hay ocho bits aquí-- binario de ceros y unos digits--. Y un poco es una unidad útil de measure-- no es tan útil una unidad de medida sobre sí misma. Por lo general, usted quiere al menos ocho de estas cosas, también denominado un byte. Así que tenemos un byte de bits aquí. Así que si queríamos que desafiar con, por ejemplo, explicando, en binario, este valor aquí-- 42. ¿Quieres tomar una puñalada en eso? MADAY: [inaudible]. DAVID MALAN: Sí, sólo empujar el pequeños interruptores blancos delante. Y quiere deletrear cabo de 42 años, y en juego Es esta tensión CS50 bola si usted consigue esto. Todo bien. Por lo que tiene 32. Vamos a necesitar 42. Así que es un ocho, así que eso es 40. Y excelente-- muy bien hecho. Gracias. [APLAUSOS] Todo bien. Así que tenemos una bola de la tensión más. Vamos a hacer esto una vez más si puede. Otro voluntario? La bola libre de estrés, bola de la tensión libre. DE ACUERDO. Aquí en el medio, ¿quieres bajar? Todo bien. Lo sé. Aquí vamos. Así que los números aquí-- vamos hacia abajo. ¿Cuál es su nombre? Davey: Davey. DAVID MALAN: Davey. DE ACUERDO. Vamos arriba, Davey. Encantada de conocerte. Y lo que vamos a tener que spell-- si pudiera quedarse allí por sólo una moment-- es el número 50. Pero, pero, pero, pero, pero, estos son imanes de la escuela primaria por una razón. Ha hecho un poco más difícil, ¿de acuerdo? Todavía hay ocho. Todo bien. Entonces, ¿qué tenemos allí? Tenemos 32. Bonito. 32 más el 16 nos da 48-- tan cerca. Y maravillosa. Felicitaciones a Davey también. [APLAUSOS] Todo bien. Por lo que podemos hacer esto todo el día, y que no recibe todo lo que mucho más interesante y más difícil. Pero eso es realmente el point-- es la forma relativamente simple que es, al final del día, lo que es una computadora hace para almacenar información, para almacenar entradas y en última instancia almacenar o representar esas salidas. Pero los números por sí solos no son tan interesante. Así que los seres humanos, hace unos años, decidido, ¿sabes qué? Sería bueno si las computadoras no eran sólo calculadoras para la aritmética operaciones, pero en realidad se podría hacer cosas como procesamiento de textos, o correo electrónico, o encarnaciones más modernos de este tipo de tecnologías. Y así el mundo decidió arbitrariamente, sino universalmente, que si se desea almacenar la capital letra A en un ordenador, ¿sabes qué? Vamos a todos de acuerdo para almacenar un patrón de ceros y ones-- bits-- que en última instancia representa el número decimal 65. Sólo tendremos que todos estamos de acuerdo en eso. 66 representaría B, 67 representaría C, y hay montones de otros patrones de ceros y unos, o números subyacentes, que representaría otras cartas fijas. Así que si usted tipo de mental absorber esto por un momento, Deliberadamente poner un medio I, donde H a 72 y es 73. Si un equipo a continuación, en el contexto de un procesador de texto o un correo electrónico, reveló debajo de la campana tener estos patrones de patrón bits-- de bits que representan 72, a continuación 73, a continuación, 33-- lo que esto podría significar en ese programa? Así hola, y luego algo. Nosotros no necesariamente sabemos, pero de hecho 33-- no en el gráfico antes les hablé era simplemente un signo de exclamación. Así fue 72 H, 73 es I, 33 sucede ser un punto de exclamación todavía. Pero eso es todo bien y bueno, y, de hecho, hoy en día, en lugar de sólo tiene que utilizar siete u ocho bits, gracias a algo llamado Unicode en oposición a ASCII vuelta en el día, en realidad podemos representar aún más personajes interesantes que sólo éstos Inglés originales sesgada letras. Pero también podemos representar incluso cosas más ordenadas como los colores. Si alguna vez has escuchado el acrónimo RGB, rojo, verde, azul, que sólo significa que un ordenador normalmente utiliza tres conjuntos de bits-- cierto número de bits que representan un número para la cantidad de rojo que desee, otro conjunto de bits para la cantidad de verde que desee, y otro grupo de número la cantidad de azul que desea. Por lo que un gran número significa un montón de , Número pequeño de color rojo significa que no hay rojo. Y por lo que estos son una especie de los valores medios aquí. Así que me da un poco de rojo, dame un poco verde, y me da un poco de azul. Y si se mezclan los tres tonos del color juntos, en este caso, se obtiene esta sombra turbia de color amarillo o marrón. Pero este modelo de ocho más ocho más eight-- de modo 24 bits-- de izquierda a derecha, es como un ordenador representaría ese color en particular. Ahora bien, esto es sólo un punto en una pantalla. Si se mira muy de cerca a su TV de su ordenador, verá puntos o píxeles. Y si usted tiene toda una red de píxeles, horizontal y verticalmente, Tiene imágenes. Y a continuación, si se toma una imagen y luego lavar a sí mismo mostrar otra imagen, otra imagen, otra imagen, otra imagen, muy rápido, que por supuesto tiene películas. Y así notar al punto de partida. Empezamos con estos ceros y unos. Se trabajó a partir de ahí a decimal números, la forma en que ellos representan. Ahora tenemos letras del alfabeto. Pero en otros contextos esperan, podemos utilizar unos cuantos más bits y representar colores. Tan pronto como usted tiene la capacidad para representar los colores, usted tiene la capacidad de representar fotografías y gifs animados y otros tales personajes en la pantalla. Y cuando usted tiene un montón de imágenes que vuelan por el ser humano a la vez, parece que las imágenes en movimiento, y para que pueda obtener videos también. Así, utilizando estos mismos primitivas simples que hacen tener la forma de representar en última instancia, todas estas formas de medios de comunicación. Y hemos resumieron nuevo y otra vez y otra vez, hasta que llegar desde el nivel más bajo a este nivel más alto. Lo que nos da este idea general de la abstracción. Pero empezamos aquí. Aquí ahora, podríamos representar en un ordenador nuestras entradas con ceros y unos, nuestras salidas en ceros y unos, pero lo que pasa dentro de la caja? Ahí es donde la computadora la ciencia se pone interesante. Eso es donde realmente llevar su propia mente a cargar para resolver problemas. Ahora podemos estipular, por la resto del semestre, sí. Sé cómo funciona binarios. Recuerdo como ASCII o Unicode-- la asignación a letters-- obras. Y sin duda se destaca la razón de que nos podría representar rojo y verde y azul, y representan multimedia también. Pero esta es la materia interesante. Esto es lo que hace que alguien capaz de resolver los problemas. Y uno de esos problemas nos gusta hacer, de hecho, se está llevando a la asistencia, o haciendo esto algorítmicamente. Y de nuevo, podría hacer esto. Yo podría hacer una, dos, tres, cuatro cinco, seis, siete, ocho y nueve. Y pude escribirlo hacia abajo para realizar un seguimiento de la misma. Pero eso es sólo la forma en que lo haría representar la información. O podría hacer esto faster-- dos, cuatro, seis, ocho, diez, 12, 14, 16, 18, 20, 22-- se siente como dos veces tan rápido pero sigue siendo va a tomar un montón de tiempo. Pero resulta que, sin embargo, si aprovechamos resource-- otros ordenadores y, de hecho en estos días tienen varias CPU o el cerebro. Resulta que las computadoras pueden hacer muchas cosas a la vez, y de hecho, en esta sala, podría representar exactamente esto. Así que es un poco de vista social torpe, pero si lo haría con mi humor por sólo un proceso de tres pasos, y mucho Me pregunto a cada uno en su lugar allí sólo de ponerse de pie por un momento. Levántate. Así piensa a sí mismo, el número de uno-- para que todos en esta sala, excepto la gente que no lo hicieron oblige, están pensando en el número uno. De modo que sea su número en este momento. Esta es la primera etapa, o como una científico de la computación o un programador normalmente lo haría, vamos para empezar a contar desde cero. Si el número más pequeño que podamos representar con esas bombillas es cero, por lo que les deja solo fuera poco, puede ser que también acaba empezará a contar a partir cero es lugar de uno. Y lo que es lo Los informáticos. Así que paso a cero, ponerse de pie y pensar en el número uno. El siguiente paso es esto- par con alguien de pie y añadir sus números. Maravilloso. Así que en este momento en el tiempo, literalmente, todos los participantes está pensando en el número 2, excepto para una persona extraña si tenemos un número impar de personas en la habitación. Y ahora el tercer paso aquí va a esto- ser uno de vosotros debe sentarse. Uno de vosotros debe sentarse, y si usted está todavía en pie, volver al paso uno. Todo bien. Todo bien. Por lo que cada vez más personas debe estar sentado abajo. Observe que esto ha inducido un loop-- algún tipo de ciclo. Algunos de ustedes debe haber pegado con torpeza, yendo y viniendo entre el paso uno y dos, uno y dos, uno y dos. Está bien. Nuestro primer error. Nos ocuparemos de eso. Todo bien. Voy a tratar de impulsar las cosas. En teoría, sólo una persona está de pie como todo el mundo sigue emparejarse. Pero permítanme acelerar las cosas con la gente que sigue en pie. ¿Qué número está pensando? 46. DE ACUERDO. Vaya por delante y sentarse. Ustedes se mantienen en pie. Que todavía está de pie? ¿Qué número está pensando? DE ACUERDO. Así que vamos a volver a usted. ¿En la espalda? ¿Que es eso? 22. Aceptar a alguien más top-- sí? 34. DE ACUERDO. Por aquí en mi derecha- aquí arriba? 132, muy agradable. 22? DE ACUERDO. Y que todavía está de pie? ¿Aqui? 46, muy agradable. 72. No puedo detener mucho más tiempo. ¿Sí? 30, agradable. ¿Aqui? 23? 23. Y creo que eso es todo el mundo excepto ustedes, no hay presión. Oh espera. 28? Sólo ocho. DE ACUERDO. Sólo ocho. ¿Aquí abajo? 30. 23. 24. 18. Este es el peor ejecución de este algoritmo nunca. DE ACUERDO. Así que cualquier otra persona? ¿Alguien mas? DE ACUERDO. Uno mas. ¿dieciséis? DE ACUERDO. dieciséis. Todo bien. Así que si no me he perdido a nadie en el resplandor aquí, cuando pulso Intro, vamos a ver, de forma algorítmica, el número total de personas en Sanders. Porque, de nuevo, es como si todo el mundo como te sentabas, pasado su número fuera a otra persona, a otra persona, a otra persona, por lo que, en teoría, Al final, sólo una incómoda persona debe dejarse de pie. Pero eso está bien. Aceleramos las cosas manualmente. Es especialmente difícil de ver en este espacio particular. Y el número total de personas creemos que hay aquí es 546. El número total me entregaron por los becarios de enseñanza, quién lo hizo el viejo de manera lenta la escuela, era de 820. [Risas] [APLAUSOS] Está bien. Por lo que seguramente entonces, hay estos insectos. Y eso está bien. Y por lo que pensar de nuevo en este la primera vez que algo se escribe no necesariamente tiene que funcionar. Esto me ha pasado aquí también. Pero ahora vamos a considerar cómo podría aplicar esta misma idea a algo que podría haber visto antes, lo cual es esta vieja tecnología de la escuela aquí-- una libreta de teléfonos muy grande. Y supongamos que esta libreta de teléfonos tiene 1.000 páginas y 1.000 nombres y los números alfabéticamente dentro de ella. Bueno, podríamos tipo de aplicar un similares idea para este problema muy físico, simplemente usando mí. Yo sólo tipo de trampa mediante el aprovechamiento de todos ustedes con montones y montones de diferentes CPUs o cerebros ejecutar algún algoritmo. Pero si es sólo poco viejo yo, todavía puedo aprovechar esa misma esencia de una idea de dividir y conquistar ese problema una y otra vez, por lo que la mitad de ustedes, la mitad de ustedes, la mitad de ustedes, la mitad de ustedes, teóricamente mantenerse sentado, hasta que nos fuimos, en teoría, con una sola persona. Así que en esta vieja escuela la tecnología, como no lo hacemos necesita esta map-- este La tecnología de la vieja escuela, podríamos empezar a buscar a alguien como Mike Smith, una página a la vez. Y veo que no, Mike no está aquí. Todavía estoy en la sección A. Con el tiempo, me parece a mí mismo en la sección B. Y esto es un algorithm-- paso a paso la instrucción. Comience en la página de inicio y uno a la vez, buscar Mike Smith. ¿Es esta correct-- este algoritmo o método? Sí, es correcto. Si Mike está aquí, con el tiempo Voy a llegar a él. Pero no es eficiente. Es obvio que es muy lento. Así que se puede aprovechar la twosies mismas se aproximan. Puedo hacer una especie de dos, cuatro, seis, ocho, 10, 12. Es dos veces más rápido. Voy a llegar a Mike más rápido si está allí. ¿Es correcto? Sí, pero no oí un poco--. Ahora oí un no. Sí. Hay un insecto potencialmente. Tal vez Mike consigue simplemente por accidente intercalada entre dos páginas, porque yo estoy volando a través esta dos a la vez. Así, al menos, necesitamos un poco de tipo de solución condicional. Necesito decir, hey, si golpeo a alguien cuya nombre comienza con una T en lugar de una S, Será mejor doble vuelta al menos una página. Así que con errores al principio, pero puede arreglar. Pero ninguno de nosotros va a buscar Mike Smith a través de un teléfono de 1.000 páginas reservar una página a la vez. ¿Qué es una persona normal va a hacer? Vas a ir a la década de S, si sabía dónde estaba el del S. Usted puede ir más o menos a la mitad o ligeramente sesgado hacia el final. Y miro aquí y Estoy en la sección M. Pero qué sabes sobre este problema ahora, que no necesariamente saber antes con todos nosotros simplemente contando a nosotros mismos equivalentemente? Bueno, Mike va claramente estar en esta parte del libro si está aquí en absoluto porque está ordenada. Y por lo que puede muy dramatically-- [Jadeando] Lo sé. [APLAUSOS] En realidad es muy fácil si lo hace en la espina dorsal allí. Pero a continuación, puede tirar la mitad del problema de distancia. Ahora, me quedo con el mismo problema-- Mike Smith en encontrar un teléfono book-- pero ahora la guía telefónica comienza a M y va a la Z, pero es la mitad de grande. Pero esto es lo que es impresionante. Al igual que en la teoría, chicos, cuando que todos se sentaron sólo la mitad a la vez, el problema tiene la mitad del tamaño, la mitad de grande, una y otra vez. Por lo tanto se ha convertido en el problema de la mismo problema, pero la mitad de grande. Ahora se trata de un problema de 250 páginas. Tan pronto como me di cuenta, oh, estoy en la sección T accidentalmente. He ido demasiado lejos. Puedo tirar que la mitad de la guía telefónica de distancia. Ahora, estoy abajo a una trimestre del problema. Y se puede repetir, repetir, repetir hasta que, en teoría, estás la izquierda con una sola página. Y si Mike es en esa página, Ahora puedo resolver este problema. Pero la rapidez con lo soluciono? En el primer caso, me tomó como tal vez 1.000 pasos para encontrar Mike Smith. Podría haber tomado me-- Cogí la guía telefónica y empecé a buscar una página a la vez, y Mike podría ser de 1.000 páginas más adelante. Segundo enfoque tal vez me lleva 500 pasos, porque yo estoy volando a través de dos en dos. Y el tercer enfoque, sin embargo, es especialmente potente. Pero vamos a considerar lo que en realidad hizo con este tercer enfoque. Voy a tener lo que llamaré sólo estos declaraciones aquí, uno a la vez. Recoger una guía de teléfonos. Abrir a la mitad de la guía telefónica. Mira nombres. Y entonces las cosas se ponen un poco intelectualmente más interesante, si sigue sencilla. Si Smith se encuentra entre la nombres en esa página actual, a continuación, hacer algo de forma condicional. Es como un tenedor en la carretera. Llame a Mike. Si Mike es uno de los nombres en esa página, llamado Mike. Pero sólo lo hacen si la línea línea de cuatro árbol, si se quiere, es cierto. La respuesta a esa pregunta es sí. Porque si Smith es más temprano en el book-- en otras palabras, si estoy en la sección H y estoy buscando a alguien para la izquierda, a continuación, lo que debe hacer es algo muy similar. Entonces debería abrir a la mitad de la mitad izquierda del libro. Así que ir a la izquierda, y luego vuelva al paso dos. Mire los nombres allí. Así, en otras palabras, hacer lo mismo, pero en un problema que se ha reducido a la mitad. ¿Sabes qué más? Si Smith es tarde en el libro sobre la base de la página que estoy mirando, abierto a la mitad de la la mitad derecha del libro y luego volver de nuevo al paso dos, else-- hay una cuarta posibilidad aquí. Mike ya sea aquí o hacia la izquierda o hacia la derecha o no. Y aquí es mejor que consideramos esto. Y de hecho, si usted ha tenido alguna vez el equipo acaba de estrellarse en usted, que es a veces, pero no siempre, el resultado de sólo un programador humano no darse cuenta, oh disparar, hay En realidad este cuarto escenario. Y si usted no escribe código para manejar ese escenario, a veces no se sabe lo que el equipo puede hacer. Y de hecho un programa podría bloquearse. Pero en este caso, pensé sobre él, y le dije, de lo contrario dejar de fumar, porque esa es la cuarta escenario lógica posible. Ahora, vamos a añadir algo de vocabulario, así que puede empezar a girar alrededor de los términos que son por lo demás bastante intuitiva. Todas las cosas que acabamos de resaltado en amarillo aquí, Sólo voy a la funciones o procedimientos. Son sólo tipo de acciones. Así que recoger, abierto a, mira a, llamar, abierta, abierta, quit-- estos son sólo las acciones, o lo llamarlos de manera más formal, funciones. Mientras tanto, ahora en amarillo, He destacado cosas que- vamos a empezar a llamar ellos condiciones o ramas. Estos son los puntos de decisión donde usted puede ir por este camino, de esta manera, o alguna otra dirección todavía. Así que los habrá condiciones. Y ahora éste es un poco más elegante. Vamos a llamar a estas preguntas Las expresiones booleanas, después de que alguien con un apellido Bool. Y una expresión booleana es sólo algo eso es verdadero o falso, sí o no. Por lo que es la pregunta cuya respuesta se preocuparse, de manera que en una condición hacer una vuelta en decisión conseguir una respuesta, y luego ir a la izquierda oa la derecha, o algo más en conjunto. Y a continuación, por último, estos líneas aquí-- se remontan al paso dos, volver al paso que podría dos-- poner en práctica esta idea de diferentes maneras. Y a continuación, los que tengáis experiencia en programación podría haber hecho o se puede imaginar haciendo esto de manera diferente. Sin embargo, para los propósitos de la actualidad, es sólo la idea que importa. Esta es la inducción de lo que llamaremos general un loop-- algún tipo de ciclo, porque me está haciendo hacer algo nuevo. Así que ahora, vamos a considerar lo bueno que este algoritmo es. Es correcto. Si Mike está en el libro, que es una de los cuatro scenarios-- una y otra vez y otra vez, lo encontraremos. Pero lo bueno es? Bueno, no tenemos ser demasiado formal aquí. Pero vamos a trazar algo, X e Y, para conseguir un sentido de la forma de este problema. En el eje x es aquí el tamaño de mi problema. Y un eje Y aquí será el momento de resolver. Así que tal vez este es el número de páginas. Tal vez esto es cuestión de segundos o La página de turns-- lo que sea. Sin embargo desea contar es lo que esta imagen representará. Y ese primer algoritmo, voy para describir simplemente como una línea recta. Si hay n páginas en la guía telefónica, entonces Me podría tomar hasta como n pasos para encontrar Mike. Si Verizon o la compañía telefónica añade una página más el próximo año, me podría tomar una más step-- una unidad más de tiempo para encontrar Mike. Así que no sólo esta relación uno a uno. Es una pendiente recta. Mientras tanto, ese segundo algorithm-- si estoy ir de dos en dos en dos tiempo--, cuatro, seis, ocho, o double-- pasando por las páginas dos veces a la vez, de dos en dos, aún así es la línea recta. Ahora hay de uno a dos relación, pero un poco más bajo. Así que si hay esta cantidad de páginas en la tabla de aquí en amarillo, que me podría aprovechar esta muchos pasos o segundos, de lo contrario, me va a tomar el doble que en la línea roja. Pero la línea verde es la comida para llevar real. Esto es lo que generalmente llamar a un registro de logorithm-- de n, donde n es el número de páginas. Pero es la forma lo que importa hoy en día, porque no tenemos para pensar en el trazado de puntos. Piense en un escenario extremo. Supongamos Verizon duplica la mañana número de páginas de ese directorio, de 1.000 a 2.000. En el primer algoritmo, I podría perder un extra de 1.000 pasos en busca de Mike, sólo porque Verizon duplicó el tamaño del libro. El segundo algorithm-- que podría llevarme un extra de 500 pasos. 1.000 páginas más, que van de dos en dos tiempo-- 500 pasos más para encontrar Mike. Pero eso tercera algoritmo es una especie de mágico. Verizon duplica el número de páginas de 1.000 a 2.000, Pero, ¿cuántos más pasos hace que me llevan a buscar a Mike? Es sólo uno, porque sólo puedo rasgar el directorio telefónico una vez más de un problema de 2000 página a un 1.000 problema de la página, y listo. Me he tomado un bocado masiva fuera de él. Y si vas realmente extremo, suponer que la guía telefónica compañía tenía algo loco como un directorio telefónico de 4 mil millones página. Así la cantidad de pasos que puede tomar para encontrar Mike Smith en un 4 mil millones La página de la guía telefónica? Es un número grande, pero sólo 4 millones de dólares para 2 mil millones a 1000 millones a la 500 millones, 250 millones-- todavía suena como grandes números, pero soy muy rápidamente llegar a valores más pequeños. Y de hecho, si no hago la matemáticas derecho, sólo puedo dividir 4 mil millones por aproximadamente 32 veces antes Me pongo a sólo uno. Así que si ese libro de teléfono eran 4 miles de millones de páginas, no es gran cosa. Al cabo de unos segundos, tal vez 32 segundo, que podrían dividir por la mitad y, finalmente, encontrar o Mike la conclusión de que él no está allí. Y esa es la esencia de una algorithm-- un buen algoritmo. Y eso es una de las objetivos de una clase como esta, está tratando de averiguar cómo puedo resolver el problema no sólo correctamente, como siempre supe cómo hacerlo uno página a la tiempo-- pero correctamente y bien. ¿Cómo diseño buena soluciones a los problemas? Así que tomemos un momento aquí y darle un sentido ahora de CS50 el curso itself-- introducir miembros del personal de algunos de golf. Justo antes de las 2:00, vamos a tomar un breve descanso de manera que aquellos de ustedes que se puede ir de compras pato y tomar una mirar a alguna otra clase y ver el resto de esta línea. Pero por ahora, voy a presentar CS50, la propia clase, y sobre todo lo que es nuevo. Por lo que la primavera pasada, nos pasado un poco de tiempo-- El personal del curso y yo-- pensar acerca de qué es lo que queremos que sea CS50, y volver a la primera principios, por así decirlo, considerar qué es lo que queremos este curso para que parezca y sea al igual que para sus estudiantes. Y por lo que verá en el problema establecer un nivel cero, una invitación para echar un vistazo a esa URL que resume algunas de las motivaciones detrás de la siguiendo las características de caída de 2016. Así como puede haber recogido Del TL: DR folleto, el programa de hoy, así como de el catálogo de cursos, este año en CS50, solo se espera que asistan hoy-- por lo trabajo bien done-- y la última conferencia el 21 de noviembre. Y de nada, pero no se espera que asistir a las conferencias en el medio, porque lo que estamos haciendo este año, está disparando en tiempo real el material del curso. Así que todo se quedará actual e incorporado lo mejor que can-- eventos actuales y conversaciones que la gente podría estar teniendo en la industria de la mundo, pero hacer que el material disponible, como resultado, incluso antes les hablé completo con las transcripciones de texto completo y capacidad de búsqueda y enlaces a otros recursos. Y, de hecho, hemos sido reclamando algún tiempo y que hacemos ahora creemos esto, que podemos crear, digitalmente, una mayor inmersión, una más convincente experiencia educativa, en contraposición para reunir aquí unas 23 veces en persona, escuchar a alguien como yo hablar simplemente de la informática, en oposición a participar más activamente. Por lo que verá en el curso del plan de estudios un boceto del semestre aquí, junto con conferencias cuando se ser filmado, a la que estás bienvenidos, pero no se espera, y cuando se ser lanzado el sitio web del curso. Y lo que haremos aquí en Los miércoles a partir la próxima semana, es mucho más íntimamente, con la única aquellas personas que quieran participar, es una llamada a pie a través, donde yo y cabezas del curso en realidad hacer las cosas un poco más íntimo aquí abajo, en la orquesta sección, todavía tiene algo de tecnología y caminar a través de la conjunto de problemas de la semana en curso, y le ofrecen principalmente: si entre los menos comfortable-- tanto más orientación que es posible que desee o necesitará para el desafío de la semana. Y del mismo modo, para los que no pueden asistir a los de la persona, no es gran cosa. No serán conducidos de manera similar por uno de los altos funcionarios de la asignatura, Zamalya, la misma oportunidad incrustado en el problema configura a sí mismos. Problema establece este año será lanzado el viernes y ya no lo hacen siete días más tarde, pero 10 días tarde-- deliberadamente superposición con cada problema establecer, a fin de acomodar mejor, esperamos, flujo y reflujo en horarios de los estudiantes, especialmente cuando los exámenes parciales o atletismo o académicos o extracurriculares tienden a aparecer y desaparecer en especial de mitad de semestre. Eso te dará un poco más discreción en cuanto a si usted delante cargar su semana con CS50 o la carga de nuevo que en el fin de semana siguiente en su lugar. Así que mira al programa del curso aquí para la programación del mismo. Y se dará cuenta también entre los cambios este año, para aquellos más familiarizados con programación en el pasado, vamos a empezar el semestre como lo haremos hoy en Scratch, centrarse especialmente en la lengua llamada C, y luego no la transición a PHP, sino a un lenguaje llamado Python hacia el final del semestre en el contexto de la programación web, junto con SQL y JavaScript, HTML, CSS, y aún más. Y en respuesta a una pregunta más frecuente, es de hecho el caso que el CS no es tan temible como una vez pensó que era, pero es tanto trabajo ya que había oído que podría ser. Pero este es el ejemplo que aquí están algunos estadísticas de la caída 2015 alumnado, por lo que las líneas azules horizontales representar el número medio de horas reportado. Y verá un promedio de seis a 10 a 12-- tal vez 16 o así, y así sucesivamente, pero con alta varianza para ser claros. Y así se da cuenta de que no sólo hay estudiantes más cómodo y menos cómodo en el curso, pero un soporte correspondiente estructura para conseguir esos estudiantes hasta el semestre con éxito. En efecto, en respuesta a una pregunta más frecuente, debe CS50 se toma como primer año? Absolutamente. Y, de hecho, me arrepiento no haber encontrado el camino o encontrado un nuevo campo ese primer año también. Y se debe tomar con CS50 otros cursos, como sin duda bien-- y los consejos generales que podríamos dar a los estudiantes, que es probablemente CS50 no el tipo de clase o clase de introducción que usted debe tomar con tres otra u otras cuatro clases de p-set. Pero si usted está tomando otros dos p-set clases, algo más, y CS50, absolutamente manejable. He tenido muchos estudiantes en el pasado hecho con bastante éxito. Y para llegar hacia ese la línea de meta con éxito, ¿El curso tiene las Categorías-- diferentes pistas para los estudiantes menos cómodo, más cómodo, y en algún lugar en el medio, por lo que en el curso de Conjunto primer problema, se le pedirá que describes. Y si usted está entre los menos cómoda, que es el tipo de cosa que acaba bien sabe. Y, de hecho, que ha sido el crecimiento demográfico en CS50 desde hace unos años. Desde la última caída de ejemplo, el 58% de la clase se describe a sí mismos como entre los que menos cómodo, con un 9% entre los más cómoda, y luego los otros estudiantes allí en rojo describen a sí mismos como en algún punto intermedio. Y verá aquí los temas en general y el horario de las secciones, todas las cuales se ofrecen en persona, en en tiempo real, con el curso de increíble personal de becarios de enseñanza y los asistentes del curso, algunos de los cuales va a coincidir en un momento. Secciones sí mismos, como se verá, la voluntad será los lunes y martes y miércoles, a fin de permitir a bucear después de participar en, si así lo elegir, en el curso de dar una conferencia a principios de esa semana. Y después de horas de oficina, los cuales Ciertamente, con cada año que pasa, no han sido menos de una luchar por el curso. Y este año, no estamos planeando Sólo en el cargo uno horas-- en uno oportunidades de ayuda para estudiantes los miércoles los jueves y los domingos, el último de los estar en la tarde por el diseño para reducir algo de la tensión que se invariablemente surge con la noche p-settting con un plazo looming-- sino que también se ofrecerán horas de oficina los lunes y martes y Los miércoles y los viernes y sábados, Gracias a nuestros amigos de HSA. CS50 tiene ahora su propio espacio para estudiantes y personal CS50, 67 en lo alto calle Mount Auburn, allí mismo, en Harvard Square. La visión de los cuales es que CS50 de TFS y las CA durante toda la semana, más o menos en la mayor parte días, estarán allí para acompañarlo. Así que si usted tiene un cierto pregunta en un p-set o te sientes un poco bloqueada o un poco confundido, y diablos, tienes una hora o media hora entre las clases, especialmente en el square-- puede usted entrar y echar a esa pregunta respondió de tener esa confusión clarified-- muy en el espíritu, usted está familiarizado, de la matemáticas propio centro de las preguntas de matemáticas del departamento, pero casi todo el día por [? Gcal?] Que vamos a publicar en línea. Tutoría también está disponible para aquellos estudiantes, libremente desde el curso de personal propio si lo desea más íntimo de uno a uno, o únicamente dos o tres compañeros de clase, trabajando con uno de los miembros del personal del curso. Y, de hecho, estos aquí son sólo algunos de los miembros del personal del curso, algunos de los cuales podrás reunirse en un momento. De hecho, la propia CS50 compañero de la enseñanza cabeza, y el curso de la cabeza ayudante, y el preceptor, podría llegar en un máximo, permitir ellos decir hola. [APLAUSOS] ALTAVOZ 1: [inaudible]. [APLAUSOS] ALTAVOZ 2: [inaudible]. [APLAUSOS] ALTAVOZ 3: [inaudible]. [APLAUSOS] DAVID MALAN: Y nos permiten llevar a bordo dos de CS50 de la mayoría el personal directivo, Rob y Zamayla también. [APLAUSOS] De hecho, tanto Rob y Zamayla han estado con nosotros durante tanto tiempo, que yo era capaz para entrar en los archivos del CS50 y encontrar este mismo SD metraje de ellos participando en sí mismos escenarios hace algunos años. ROB: [inaudible]. [APLAUSOS] ZAMAYLA: [inaudible] [APLAUSOS] DAVID MALAN: Gracias. Así que además de éstos los miembros del equipo aquí, CS50 cuenta con un equipo de casi 100 todos los miembros del personal, de los cuales estará disponible para las secciones y las horas de oficina y mucho más. Y como dice Rob también, esto es la reforma más significativa de CS50 en los 10 años que He estado en [inaudible]. [Inaudible] centrado especialmente en la provisión de una estructura de soporte, el recorte de distancia una gran cantidad de el grueso que ha sido acumulado en 10 años desarrollos de iterativos en los boletines de problemas del curso. Así que este año, no sólo en clase, pero también en la forma del problema del curso conjuntos, que deben descubrir propuestas ser más ágil, condensador de ajuste, tanto más manejable que en los últimos años, a medida que arrojar algo del equipaje que es desarrollado por naturaleza de año en evolución tras año y la iteración. Por lo que el nuevo y mejorado comienza hoy. Te encontrarás con un poco más de la El personal del curso en el [inaudible] a las 2:30, donde se sirve, como una tradición, la torta. Hay un poco más de la torta que eso, pero usted Erin se reúnen y Tobias y otros aún. Y te voy a dar un recorrido antes de oír de algunos de los otros miembros del personal en la clase, de lo que espera también. De hecho, siempre empezamos de CS50 semestre el próximo sábado, con lo que se llama CS50 Puzzle día. No tiene nada que ver con ciencias de la computación per se, pero con aproximadamente problema resolver de manera más general. Y si así lo desea participar, por algunas de las invitaciones, que podría haber visto puerta caído o en el escenario aquí, que es una oportunidad en equipos de dos o tres o cuatro, para participar por los rompecabezas y pizzas y los premios y más-- este sábado, Estén atentos para más. Encontrará también que cada Viernes, a fuego y hielo, trae una CS50 Gran cantidad de los estudiantes para el almuerzo, para hacer un gran la clase se sienta más íntimo, y, en general reunirá ex alumnos y amigos de la industria para hablar de lo que han estado haciendo desde que se graduó. Del mismo modo, este año, se nos inaugurar el primer CS50 50 contest-- codificación de una mitad de semestre oportunidad para que todos en una opción en la base, para tener una desafío de ingenio contra sus compañeros de clase, de nuevo en equipos de dos o tres o cuatro, utilizando sólo que la programación conocedores de que, a continuación tienes bajo el cinturón después de sólo seis o siete semanas de la clase, y participar en este tipo de competencia online-- si desea perfeccionar su propia habilidades aún más en ese desafío. Al final del semestre es el llamado CS50 Hackathon-- una oportunidad que comienza a las 7:00 PM termina a las 7:00 de la mañana, y en el camino Son 12 horas de la noche en la que a bucear en proyecto-- final del curso la oportunidad de diseñar y aplicar la mayor parte de nada de interés a usted con su enseñanza la guía del compañero. Alrededor de las 9:00 AM de que normalmente sirven pizza, la 1:00 AM, Philippe, y los pocos de nosotros que todavía están despiertos a las 5:00 de la mañana, son de transporte, ordenó el traslado por la camino a IHOP para el desayuno. Y luego unos días más tarde es el llamado CS50 fare-- un fin de semestre en la exposición celebración de cuán lejos tantos CS50 de estudiantes han venido de la semana cero hasta el final a la semana, y teniendo en cuenta que el 73% de las personas compañeros y la suya este año han Nunca tomado una clase de CS antes. De hecho, para enfatizar tanto, aquí es una pocas caras más del personal del CS50. ALTAVOZ 4: [inaudible]. ALTAVOZ 5: [inaudible]. ALTAVOZ 6: [inaudible]. ALTAVOZ 7: [inaudible]. ALTAVOZ 8: [inaudible] ALTAVOZ 9: [inaudible]. ALTAVOZ 4: [inaudible]. ALTAVOZ 10: [inaudible]. ALTAVOZ 11: [inaudible]. ALTAVOZ 12: [inaudible]. El altavoz 13: [inaudible] ALTAVOZ 14: [inaudible]. El altavoz 13: [inaudible]. ALTAVOZ 15: [inaudible] ALTAVOZ 16: [inaudible]. ALTAVOZ 11: [inaudible] ALTAVOZ 5: [inaudible]. DAVID MALAN: Algunos del equipo son ellos mismos haciendo compras clases. Pero si los miembros CS50 del personal están aquí, podría llegar en un máximo de un momento. TFS del CS50 y AC y [? el personal?] miembros aquí-- estos son sólo algunos del faces-- uno de los cuales acaba sierra, y unos pocos otro-- y algunos otros todavía. ¿Por qué no vamos adelante y permitimos ustedes un descanso de cinco minutos. Si necesita pato a clases de taller, eso está bien. Y en cinco minutos, vamos a reanudar, echar un vistazo a la primera Scratch-- de nuestro lenguaje de programación, conocer el personal del curso aquí un poco más, y se centran en última instancia, el problema planteado cero. Así que estaremos de vuelta en cinco minutos. [APLAUSOS] Todo bien. Así que estamos de vuelta. Y en nuestro restante tiempo de hoy en día, el objetivo es para nivelar el campo de juego en cuanto a la terminología, en términos de algunas ideas. Debido a que de hecho, como por algunas de las tablas anteriores, no va a haber una serie de niveles de experiencia en la clase, algunos de cuyos alumnos tienen tomado algo de programación antes, algunos de los cuales no tienen. Y así, con este primer problema establecer y con esta primera lengua tenemos la oportunidad de empezar a dar por sentado después de hoy algo de vocabulario y la idea común. Y lo haremos a través de Las Lenguas primera del curso además de C y Python y JavaScript y SQL y HTML y CSS, nos centraremos inicialmente y sólo por un problema asigna el valor cero en este lenguaje gráfico, llamado Scratch, desarrollado por el MIT Media Lab por el camino, para ayudar estudiantes y niños, especialmente expresarse algorithmically-- de una forma más consistente con lo que podríamos llamar el pensamiento computacional. Y es una lengua útil porque muy rápidamente la próxima semana en la semana uno, Por qué hacemos la transición a una mayor lenguaje tradicional y arcano llamado C, que es puramente textual. Sólo se utiliza en su teclado Para escribir instrucciones como estos en la pantalla. Pero incluso si usted nunca ha visto un lenguaje de programación antes, en tan sólo echar un vistazo a esto, todo sea críptico, que es fácil adivinar que Probablemente imprime Hello World. Pero hay una gran cantidad de sobrecarga sintáctica allí. No es raro el hash símbolo o etiqueta de hash encima de la tapa. Hay los paréntesis angulares, algunos paréntesis, corchetes, semi-colon-- sólo hay tanto visual sintaxis que se interpone en el camino. Empezamos el curso con De cero a fin de obtener pasado todos los intelectualmente distracciones, sin interés y centrarse en las ideas. De hecho, esto podría ser antes. Esto, por esto, la semana será después. Esto, en esta gráfica Rasguño de la lengua, es cómo se llevaría a cabo ese mismo program-- un programa que cuando se ejecuta, Simplemente dice hola mundo. Y lo que es bueno de Scratch es que es esta programación gráfica entorno que utiliza las piezas del rompecabezas o bloques, que sólo se ensamblan por acoplamiento si tiene sentido lógico para hacerlo. Y con los arañazos se puede desarrollar animaciones y juegos interactivos y el arte, y cualquier número de cosas que se puede imaginar en su propia mente, y ponerlas en práctica simplemente arrastrar y soltar las piezas del rompecabezas. Y, de hecho, vamos a tener la capacidad para expresar algunas de las mismas ideas que acabo de mencionar un momento hace en el contexto de Mike Smith y buscando cosas que un teléfono book-- que las funciones, sólo las acciones, cosas como bucles que hacen cosas una y otra vez, variables, que es algo que vamos a introducir, pero es conocida tal vez de algebra-- sólo una especie de marcador de posición para almacenar un valor que podría necesitará expresiones booleanas tarde--, donde aquellos que sí no o verdadero falsas preguntas de antes. Las condiciones son esas bifurcaciones en el road-- aquellas ramas por así decirlo. Y luego hay algunos más elegante características que veremos aún hoy en día, llamados matrices y las discusiones y eventos, que a continuación Volveremos a lo largo tiempo en diferentes idiomas. Pero los arañazos nos permite para explorar todos estos. Así que aquí en Scratch, este púrpura bloque es una función de lo que es típicamente va a parecer. Esta pieza de rompecabezas de color púrpura que tiene algún palabra como por ejemplo, que es la acción, y entonces podría tener una argumento o una parameter-- alguna manera del tipo de personalización lo que hace que el bloque por lo que no está predeterminado por MIT lo que dice este bloque de color púrpura. De hecho, se verá en una momento en que soy capaz de escribir las palabras como hola mundo, o hola David, o hola Zamayla, o lo que quiera, en el argumento a ese rompecabezas piece-- la caja blanca ahí. Mientras tanto, si quiero un bucle, vamos a ver que hay piezas de un rompecabezas que mirar un poco de color naranja como este. Y su forma tipo de sugiere que algo que sucede una y otra vez en un ciclo. Así que si yo envuelvo un bloque saludar mundo con un bloque para siempre en Scratch, que sólo va a seguir diciendo hola mundo para siempre, literalmente. Mientras tanto, hay otro tipo de bucle en Scratch que vamos a ver-- una repetición block-- donde, si se saber de antemano cuántas veces quiere que el bucle para ejecutar un número finito de veces en que fact-- puede especificar que escribiendo en una serie o incluso enchufar en una variable, como X o Y, como veremos. De hecho, al igual que las variables i en este caso, que es un nombre común para una variable entera que simplemente almacena una number-- un número entero podría ser, utilizar este bloque de naranja aquí para establecer una variable igual a cero i. He aquí un ejemplo en el verde de un expresión booleana en Scratch. A pesar de que esto parece una matemáticas fórmula, las desigualdades matemáticas como este Realmente son expresiones booleanas. Esto es verdadero o falso. I es menos de 50. Es un sí o un no o respuesta verdadera o falsa. Y que llamaremos general esas expresiones booleanas. Y no tiene por qué ser 50. Puede ser x menor que y, mayor que y, igual a Y- cualquier número de otra podrían hacer preguntas. Ahora, a primera vista, esto puede parecer De repente bastante audaz aquí, y lo es. Pero el concepto racional, es bastante familiar de antes. Si x es menor que y, que, por ejemplo como mucho. Porque si x es mayor que y, a continuación, decir lo mismo. Otro decir de x es igual a y. Así que tenemos un ejemplo no de una tercera scenario-- la única possibility-- tercera x es o bien mayor que, menor que, o igual a. Así que tenemos un tenedor de tres vías en la carretera. Y notar lo que es rasguño fresco aquí--, al parecer, tiene sólo un rompecabezas pieza, en este caso, en si el bloque más. Y sin embargo, eso parecería implicar que se puede sólo tienen un tenedor de dos vías en la carretera. Puede ir hacia la izquierda o hacia la derecha, pero ¿qué pasa con ese tercer escenario? ¿Qué pasa si x es igual a y? No es gran cosa. Tomar una pieza del rompecabezas, puesto otra dentro de ella para crear el equivalente semántico de si, de lo contrario si, else-- y ahora tener su tenedor de tres vías en la carretera. Y como veremos, la piezas del rompecabezas de cero se puede estirar y crecer, por lo como de meter más cosas en ellos. Usted no tiene que ajustarse todo a su tamaño predeterminado. Esto es algo que vamos a pronto verá que se llama una matriz. Es como un películas-- alguna forma de el almacenamiento de varias piezas de información en una variable, no sólo un número. Estos veremos un representante de algo que se llama multi-threading. De hecho, la totalidad de su Mac y PC en estos días soporte multi-threading, lo que significa que puede, literalmente, hacer varias cosas a la vez. Usted puede tener Microsoft Word en el primer plano, trabajando en algún ensayo. Es posible que tenga un navegador en la apertura de fondo G-mail o Facebook o similares. El ordenador puede hacer varias cosas hoy en día, ya que es multi-hilo, y los programas que están en en en particular también son multi-hilo. Hay cosas que se llaman eventos como bien en el mundo de los arañazos, y luego hay una manera también, para hacer nuestras propias piezas del rompecabezas a medida, si las cosas en realidad no existe de antemano. Así que vamos a motivar a esto de la siguiente manera. Hace algunos años, cuando descubrió por primera vez Scratch, cuando yo era en realidad una estudiante de doctorado en el MIT, nos nosotros mismos se encargaron de hacer los deberes. Y implemented-- lo que, en retrospectiva, Fue una decisión muy mala porque es la canción más irritante en el mundo para escuchar durante ocho horas mientras trabaja en su homework-- pero algo había llamado Oscar Tiempo, que es tal vez una canción familiar. CS50s poseen Jordan Hayashi, una de nuestro personal más altos, ha actualizado para 2015 y Ahora el año 2016, ya de vuelta en el día, Tenía todo lo que acaba de ir en un cubo de basura de Oscar. Ahora apoyamos el reciclaje y el compostaje. Sin embargo, para pintar el cuadro de lo que podemos hacer aquí y para motivar a algunos de los ejemplos de nivel inferior, podríamos conseguir otro voluntario que acaba de llegar en un máximo y jugar mi primera tarea nunca? Vamos arriba. ¿Cuál es tu nombre? HENRY: Henry. DAVID MALAN: Henry, vamos arriba. Vamos arriba. La cabeza de cualquier manera, y se verá en un momento, Voy a seguir adelante y golpear la bandera verde en la parte superior derecha esquina, lo que significa ir. El icono de la muestra pequeña parada va a decir basta, y eso es cuando se inicia y detener el programa. Encantada de conocerte. Todo bien. Así que vamos a ver las instrucciones en la pantalla en un momento. Y sólo por jugar este juego para unos pocos seconds-- confía en mí, no vamos a querer jugar todo el camino a la end-- se quiere tener una idea de lo que hace el programa. Y más que sólo se centran en Henry ser bueno o malo en este juego, el enfoque y cómo se implementa por mí inicialmente y luego por Jordan. En otras palabras, ¿dónde están las variables? ¿Dónde están los bucles? ¿Dónde están las funciones? Y ya veremos si no vemos los que debajo de la campana. Basta con hacer clic y arrastrar la basura a la bandeja adecuada. [REPRODUCIENDO MÚSICA] Todo bien. Eso es muy bueno. ¿Por qué no nos detenemos ahí. Gracias. Felicitaciones a Henry. Gracias. [APLAUSOS] Imagínese que la depuración del programa. Si hay un problema de dos en el song-- pero hasta minutos lo que está pasando aquí realmente? Tan complicado como podría comenzará a parecerse conseguir a través del tiempo, de hecho más y más cosas comenzaron a caer, lo interesante de este tipo de ejemplo-- y vamos a ver unos cuantos otros- es que si mirar más allá de la complejidad o la sofisticación del juego, hay un edificio muy sencillo bloques que play-- todos los cuales, si los destilar a las bloques de construcción, son muy accesibles y aplicables en sí mismos. Por ejemplo, es pasado algún tiempo, pero estoy bastante seguro de lo que inicialmente hice cuando haciendo de este juego por primera vez Yo estaba completamente como demorado. No me concentro en absoluto en el la lógica o las piezas del rompecabezas, Me concentré en los gráficos y el hallazgo el poste de la calle y el bote de basura y todo eso. Pero esos eran necesarios ingredientes en un principio. Y una vez que he terminado de dilatar y trazar el marco general, Decidí, me dejaron de hacer uno pedazo de basura caída del cielo. Y veremos los arañazos apoya cosas llamadas sprites-- caracteres que pueden tener diferentes trajes en lo que se ve diferente. Y por lo que poner un cubo de basura vestuario en uno de esos sprites. Y yo sólo necesitaba a caer del cielo. Y así resulta que, Scratch, como la mayoría de los lenguajes de programación, utilizando números aleatorios o números aleatorios técnicamente pseudocódigo, de manera que arrastrando y dejando caer algunas piezas de un rompecabezas, Yo era capaz de tener la basura venido de la izquierda en un primer momento. Y entonces la próxima vez que cayó, desde la derecha y luego desde la mitad. Y todo el juego no era sólo tener la basura que cae del cielo. No se podía apuntar a ella o haga clic en él. No se podía abrir el bote de basura. No se podía hacer nada. Pero fue un paso de bebé hacia mi última visión. Y después de eso, en realidad implementado algún tipo de detección de modo que si se hizo clic y arrastre en la pieza de basura sobre el cubo de la basura, Oscar tapa sería abrir y cerrar. No pasaría nada a la basura, pero al menos la tapa sería abrir y cerrar. Así que a continuación, comprobar, paso dos de dos. Y esto es lo que va a ser clave tanto problema asigna el valor cero y en la programación de manera más general, es tomar estos pequeños pasos muy deliberados. Debido a que no sólo se le permite sentir sinceramente logrado mucho más quickly-- es la Lo peor en el mundo para tratar de poner en práctica todas Oscar Tiempo, a continuación, horas más tarde golpeó la bandera verde, y nada funciona como se esperaba porque donde se puede incluso comenzar a depurar o de solucionar ese programa? Es simplemente abrumadora. Y así, erigiéndose en esta idea de tomar pasos de bebé steps-- nuevo y la construcción de otra vez-- algo que es, al final, realmente impresionante y complejo, pero en un principio, no es tan es así. De hecho, vamos a hacer esto. Déjame ir por delante y- rascarse existe en la web en Scratch.MIT.edu, y se le dijo que otro tanto en el problema establecer cero, el pliego de condiciones de que ya está en el sitio web del CS50. Pero esto es lo que es rascarse. Y no hay realmente solo tres áreas principales. En la parte superior izquierda hay es la etapa llamada. Se trata de Scratch. El traje por defecto es un gato. Y este es el mundo rectangular que se puede move-- arriba, abajo, izquierda, derecho y algunas otras cosas. A mediados aquí están nuestras categorías o nuestros palets de piezas de un rompecabezas, y colores diferentes significar cosas diferentes. Y si hurgar, verá cosas como bucles y condiciones y las variables y otros ingredientes. Y entonces aquí es el área de scripts. Aquí es donde puede arrastrar y soltar esas piezas del rompecabezas para hacer las cosas. Así que vamos a hacer una cosa de tal. Déjame ir por delante y- y sé donde está. Así que voy a hacer clic inmediatamente en donde sé que las cosas están listos para ser, pero señalando y haciendo clic en y hurgando son inevitables. Por eso, cuando hace clic en bandera verde, ¿Qué quiero hacer? Voy a hacer esto. Voy a arrastrar este rompecabezas de color púrpura pieza, saluda durante dos segundos, y deja que el zoom. Y voy a cambiar esta a ser lo que yo quiero que ser-- hola mundo durante dos segundos está muy bien. Ahora, voy a hacer clic en el bandera verde, o si realmente quiero, Puedo pantalla completa y luego volver. Se acaba de mantener todo en una sola ventana. hola mundo flag-- verde. Todo bien. No todo lo que interesante. Así que permítanme seguir adelante y hacer esto. Déjame intentarlo otra. Cuando la bandera verde clicked-- vamos hacer algo como un sonido. Y notar que de la caja de forma gratuita se obtiene un sonido de gato, como es el sprite predeterminado. Así que ahora déjame ir adelante y golpear la bandera verde ahora. [Meowing] Aw. Eso es adorable. Estoy programando. Entonces, ¿qué he hecho? Este es el equivalente de un programa. Es obvio que es super simple. En realidad no tomar todo lo que mucho esfuerzo y el MIT hicieron la mayor parte de la obra, pero os he llamado una función. He utilizado una función. He hecho un poco de acción, utilizando sólo que una pieza del rompecabezas de color púrpura. Bueno, si yo quiero hacer maullidos tres en una fila? Déjame seguir adelante y hacer dos y tres. Y notar que cuando se coloque cerca de una pieza del rompecabezas, aparece una pequeña línea blanca tipo de magnéticamente, y se encajará juntos cuando se suelta. Vamos a ver lo que pasa aquí. [Meowing] Hay un insecto. Sólo oigo un maullido. ¿Por qué podría ser? ¿Sí? Sí. En realidad, no oír, a fin pero eso es una buena intuición. Todos ellos están jugando al mismo tiempo. ¿Por qué? Pues bien, el ordenador es sólo va para hacer lo que diga que haga. Así que si usted dice, el juego de sonido, reproducir sonido, sonido, pero no le dice a jugar hasta haya terminado, el juego hasta que haya terminado, que va a soplar a través de el programa muy rápido y no sólo lo que se diga que haga. Así que realmente se necesita para arreglar esto en un par de maneras. Yo sólo podía hacer esto, deshacerse de este. Permítanme tratar este otro rompecabezas piece-- jugar maullido sonido hasta que esté hecho, a continuación, arrastre tres de estos y haga clic en Reproducir. [Meowing] En realidad no es very-- gracias usted-- muy natural. Así que ¿por qué no dejar que yo-- me vaya a controlar aquí. Bonito. Espera un segundo, y ahora déjame volver a los sonidos, y el sonido de juego hasta que esté hecho, y luego voy a buscar espere un segundo. Y entonces déjame ir a buscar uno más sólida, y aquí vamos. [Meowing] Un poco más natural, pero esto no es muy eficiente. Como estaba aburriendo, ser todos en pocas palabras, al hacer clic ida y vuelta y realmente duplicar mi trabajo-- más o menos copiar y pegar. De hecho, si yo controlo clic o se hace clic derecho, Me podría haber copiado y pegado. ¿Cuál sería una mejor construir usar? ¿Qué idea de antes? Sí, por lo que un bucle. Y de hecho, si nos clavaban alrededor, podríamos encontrar exactamente eso. Déjame ir a eventos o mejor dicho control. Así que yo no repeat-- quiero que sea 10 veces. Eso va a ser molesto rápidamente. Pero voy a repetir tres veces. Déjame volver al sonido y reproducir el sonido hasta que se hace. Déjame volver al Control y sólo tiene que esperar un segundo. Y el aviso, es posible que creo que no encaja, pero de nuevo, si se deja que magnéticamente broche de presión en su lugar, que crecerá para llenar. ¿Qué se juega ahora? [Meowing] DE ACUERDO. Bonito. Y esto es lo que se llamaría un programa que también es correcto. Se maulló tres veces bastante naturalmente, pero es mejor diseñado. Estoy usando menos redundancia. No copiar y pegar cualquier cosa. Acabo de utilizar una idea mejor. Ahora, esto todavía no es tan interesante con arañazos no hacer cualquier cosa. Así que vamos a hacer algo más en su lugar. Vamos a hacer algo para siempre. ¿Y sabes qué? El movimiento parece interesante. Tengamos que se mueva 10 pasos y pulsar el botón Reproducir ahora. DE ACUERDO. Así que podemos tipo de arrastre traerlo de vuelta, y él sigue siendo correr porque él está haciendo esto para siempre. Así que el bucle está haciendo lo que está diciendo que hacer, pero esto no es tan interesante. Hagámoslo. Permítanme añadir un bloque de control, y utilizar una de esas condiciones por primera vez. Por lo que va a pasar 10 steps-- 10 puntos, 10 píxeles en la screen-- a continuación, se va a hacer esta pregunta. Si algo es cierto, y luego hacer algo dentro de este bloque. Así que resulta de detección tiene su totalidad manojo de expressions-- booleana preguntas del sí no o verdadero falsa form-- dejarme hacer esto. Si touching-- y luego está este pequeño menú desplegable. Puedo parametrizar ella. Si tocar la edge-- vamos hacer algo así. Así que si tocar edge-- déjeme volver al movimiento. ¿Y por qué no nos dar la vuelta 180 grados? Todo bien. Así que siempre, mover 10 pasos. Si usted está tocando el borde, un giro de 180 grados. Y ese no es el final del programa porque estás en un bloque para siempre, así que va a ir una y otra una y otra y otra vez. Así que vamos a ver qué pasa. DE ACUERDO. Un poco con errores, pero un poco de fresco. Y podemos añadir a esto algunas cosas tontas que no son todo lo que intelectualmente interesante. Pero si llegamos a esta pequeña micrófono button-- ay. Déjame limpiar esto. Permítanme como mejorar este decían en la televisión. Limpiar eso, Guardar y ahora sube a los guiones. Y ahora, déjame ir a sonar. Déjenme darles un nombre. Voy a llamar a este ay. Y ahora jugar ay sonido. Observe que aparece en el pequeño menú desplegable. Veamos. [AY] [Risas] Pero podemos cambiar su camiseta sobre la marcha. Podemos ser dos veces tan molesto. [AY] O si lo hacemos como 1.000 pasos a la vez-- DE ACUERDO. Así que vamos a dejar que uno solo. Así que de nuevo, el edificio I blocks-- comenzado con algo muy simple, y luego he añadido una característica, añadido una característica, una característica añadida. Y ya no tiene que preocuparse por la forma en la primera de estas características se puso en práctica a medida que continúo cosas a la capa en la parte superior. Así que, de hecho, me deja hacer otra aquí. Déjame ir adelante y abrir un archivo que Traje de antemano, llamado ovejas. Por lo tanto, tiene un poco diferente personaje que se parece a esto. Y vamos a ver si no puedo hacer algo utilizando un contador en este caso-- una variable llamada. Voy a seguir adelante y bajo fuere el caso: voy a buscar una bandera verde ha hecho clic. Entonces déjame ir a los datos, que sé desde simplemente jugando antes, es donde las variables son. Y voy a seguir adelante y arrastrar este. Así que una variable llamada contador, y Voy a inicializar a cero. Puedo llamarlo cualquier cosa-- xo Y o z-- pero en la programación, llamar a algo en un semánticamente forma útil, como contador, que describe lo que es, se trata de una mucho más fácil de leer su código más tarde. Déjame seguir adelante y conseguir un bloque para siempre aquí. Y me dejó ir a las miradas página y hacer un bloque de Say. Pero lo bueno de las variables es lo no tiene que sólo tiene que escribir algo como hola mundo, que ya hemos hecho, yo puedo ir a su lugar de Datos y arrastre mi variables, e incluso aunque la forma no bastante parecer que debe ajustarse, que crecerá para llenar. Y sólo voy a decir el contador para una spoiler-- second-- que va a contar. Diremos que durante un segundo. A continuación, voy a ir y hágalo esperar durante un segundo, por lo que no cuenta demasiado rápido. Y a continuación, por último, cambiar contador por uno-- en otras palabras, incrementar el contador por uno un valor adicional y hacer esto para siempre. Así las ovejas también, como una programador, cuenta desde 0. Y si esperamos lo suficiente, que va a hacer esto para siempre. Pero eso no es del todo cierto, porque de hecho, como vamos a descubrir en la semana uno, enteros y las computadoras, más en general, técnicamente sólo tienen un finite-- así, más bien, cuando los ordenadores que representan números enteros, sólo tienen un número finito de bits. Esas bombillas allí sólo puede contar tan alto antes de que esté fuera de las bombillas. Y un ordenador también, Sólo tiene tanta memoria, Sólo tiene tantos transistores, por lo que sólo puede contar tan alto. Así resulta que las ovejas, Creo, puede contar hasta 2 mil millones o algo bastante grande. Por lo que no vamos a esperar a que esto suceda. Pero con el tiempo algunos errores sucederá que puede tener un mundo muy real ramificaciones. Pero más allá de las ovejas, que simplemente introduce una variable. Vamos a seguir adelante y abrir algo que hice con antelación aquí se llama Pet el Cat-- Acariciar al gato por aquí. Y note aquí es unos pocos bloques, pero cuando la bandera verde se hace clic, siempre haciendo lo siguiente. Si va a tocar el ratón pointer-- por lo que el cursor en la pantalla, el juego arrow-- maullido sonido y luego esperar dos segundos. Y justo hacer esto para siempre. Sólo tiene que esperar constantemente para ver si el pointer-- si el gato está en contacto con el puntero. Así que pulsar el botón Reproducir. Nada esta pasando. Pero a medida que muevo el cursor sobre el gato, [Meowing] Y si me mudo a la basura, no acariciar el gato más. Así que un poco de lógica condicional anidado dentro de un bucle. ¿Qué hay de este ejemplo, deliberadamente No se llama acariciar al gato? ¿Qué es esto va a hacer? [Meowing] ¿Por qué no acariciar al gato? [Meowing] DE ACUERDO. Así que este es un ejemplo de un caso de otra cosa. Es un punto de decisión y porque está sentado en el bucle, los dos están siendo marcada. ¿Es esto cierto? ¿Es esto cierto? ¿Es esto cierto? ¿Es esto cierto? Y, finalmente, una de los que se va a aplicar y lo que se escucha ya sea el maullido o el rugido del león en ese caso. Bueno, vamos a hacer un poco más de uno de lujo que hice con antelación demasiado-- hilos. Así que un hilo es sólo uno cosa que una computadora puede hacer. Así, un programa multi-roscado es un programa que puede hacer varias cosas a la vez. Y todos estos ejemplos hasta ahora han tenido sólo una secuencia de comandos, por lo que speak-- un programa como este aquí. Pero nótese que este programa tiene dos sprites, dos caracteres. Uno de ellos es un pájaro. Uno de ellos es un gato. Y darse cuenta cuando hago clic en estas abajo izquierda, cada uno tiene sus propias secuencias de comandos o programas asociados con ellos. Y ambas cosas programas, aviso, comienzo con la bandera cuando está verde clicked-- vamos a ver el cat-- cuando se hace clic en bandera verde. Y así, de hecho, cuando me golpeó el juego ahora, dos cosas van a suceder a la vez. El gato y el pájaro son a la vez va a funcionar a la vez para crear este efecto. Y se puede imaginar lo que está pasando. Hay un lazo y el pájaro y el gato están en un bucle. El ave se acaba rebotando como Que era antes cuando dije ay. Pero el gato tiene claramente una ventaja. Hay otro bloque de detección señala que el gato deliberadamente al pájaro en este caso aquí. Así que podríamos desmenuzar, mirando a través de esos bloques, lo que está sucediendo. Pero el ingrediente clave aquí es uno. El pájaro, por lo que este juego no es por completo o boring-- este animation-- comienza a una dirección aleatoria. Y el equipo se está recuperando un número entre 90 y 180 en esencia, por lo que es un poco animación diferente cada vez. Y luego notar aquí, si el gato está en contacto con el ave, a continuación, reproducir el león de cuatro sound-- el rugido. Pero mientras tanto en el ave de paleta, tenemos este. Para siempre, si no se toca el gato, simplemente mantenerse en movimiento tres pasos. Y entonces aquí es otra pieza del rompecabezas. Si se encuentra en el borde, rebotar. Por lo que el ave es sólo un poco ocupándose de su propio negocio, simplemente volar alrededor y rebotando, y es realmente el gato que tenía la lógica condicional para determinar si se había alcanzado el ave. Todo bien. Así que vamos a hacer otra aquí, éste se llama hi hi hi. Y esta de aquí sólo hace esto en un bucle infinito. Pero notice-- ¿Cómo detenemos este programa muy molesto? Pulsa la barra espaciadora. Porque si lo hago, program-- la mano izquierda notará que está en constante listening-- es el espacio de prensa tecla. Si pulsa la barra espaciadora, y si es así, ¿qué hacer? Se hace una técnica muy común. Se establece una variable igual a algún valor. Pero cambia ese valor. [? Así apariencia?] basado en el I shape-- tener una variable que escribió con antelación llamada Silenciado, que se limita a decir sí o no. Se silencia el sonido o no? ¿Verdadero o falso? Y el aviso, lo que digo esto- si silenciado es cero, a continuación, cambiar a uno, otro conjunto de silencio a cero. Así que sólo tapa el valor de cero a uno. Podría tener que cambiar done-- de dos a tres y una y cincuenta y siete o cuatro a cinco o cuatro a seis. Pero no importa lo que los números que utilizo, siempre que sigo cambiándolo lo contrario. Y la mayoría lo haría cualquier programador solo elegir cero y uno-- falso y verdadero, apagado y en-- para representar a este. Y esto todavía está en marcha. Si lo golpeo la barra espaciadora de nuevo [SELLO SONIDOS] El programa todavía se está ejecutando. Debido a que hay este otro script que dice, siempre haga lo siguiente. Si la variable es igual a silenciado zero-- por lo que si usted no está silenciado es la lógica-- si es falsa o no, a continuación, reproducir el sonido, porque usted no está silenciado. Usted debe reproducir el sonido y luego pensar hi hi hi durante dos segundos y luego esperar, y hacerlo una y otra y otra vez. Y así, de esta manera tenemos una forma de a-- personas para los programas para interactuar. Y no tienen que ser como fecha como otros. De hecho, asomando around-- sin juego de palabras intended-- alguien gasta una enorme cantidad de tiempo en el Internet implementación PokemonGo en Scratch. Incluso le geolocates en Cambridge o Allston aquí. Así que si quieres ver lo que la gente demasiado puede hacer es esto- menú muy elegante. Haga clic en aquí. Este soy yo con mis teclas de flecha ahora. Voy a ir después de esto. Hacer clic. Y ahora hace clic en el Pokeball. Es decir, yo creo que eres se supone que haga clic en el Pokeball. Todo bien. Así que lo hice. Puedo ir por aquí. Y esta persona implementado algunos más PokéBalls más de tres aquí-- PokéBalls. Vamos a publicar un enlace a esta en línea para que pueda jugar. Pero notificación no es sólo algunos bloques de construcción básicos. Se parece mucho más elegante, y lo es. Esto es impresionante y más de lo que lo haría normalmente esperar, sin duda para un problema de ajuste a cero. No tengo ni idea de cuánto tiempo esta persona pasó en línea. Pero todo es sólo un bucle. Hay un juego de sonido. Hay una especie de bucle la escucha de si estoy golpear la flecha hacia arriba o hacia abajo el flecha oa la izquierda ya la derecha, y luego, si es así, se está moviendo que cierto número de píxeles. Y luego, si hago clic en otro elemento sprite, hay algún tipo de condición si existe. Sí, esto se está poniendo demasiado intenso. Vamos a parar. Es todos esos bloques de construcción básicos. No hay otros ingredientes distintos que las que hemos visto ya. Y sin embargo, aquí, déjame hacer un último conjunto de ejemplos que pinta un cuadro demasiado de lo que se puede hacer aquí. He aquí un programa muy simple que simplemente hace esto- la tos, la tos, la tos. Se basa exclusivamente en lo hemos visto hasta ahora, ¿dónde está la obvia oportunidad para mejora. Este programa es correcto. Se tose tres veces, que es lo que pretendía. Pero está bien aplicada. Está mal diseñado. ¿Por qué? Sí. No es un bucle. Y no es tanto que no es un bucle, es que hay una gran cantidad de redundancia. No se copia y se código pegado, por así decirlo. Y la solución probablemente es de hecho un bucle. Así que déjame ir por delante y mejorar en este aspecto. Y voy a arrastrar estos por aquí. Déjame seguir adelante y conseguir una repetición bloque, cambie esto a tres. Voy a tirar a la basura algunos de esos bloques. Y se dará cuenta de que es bastante intuitiva. Usted arrastrar y soltar y cosas aparecen y desaparecen con el tiempo. Y yo sólo puedo arrastrar esto aquí, y ahora tengo aún una versión más limpia. ¿Pero sabes que? Hay esta oportunidad ahora para abstraction-- para empezar a definir un nuevo vocabulario que el MIT no anticipó. Hay esperar y repetir y siempre y si, pero lo que si quiero introducir la palabra tos como un bloque? ¿Y si quiero una pieza del rompecabezas cuyo propósito en la vida es la tos? Bueno, vamos a ver esta versión aquí, el cual hice como sigue. Por arte de magia, he creado esta pieza del rompecabezas aquí, el cual los arañazos le permite hacer. Y, en efecto C y Python y JavaScript son va a permitir hacer esto también. Puede crear su propia piezas que llama con lo que quiere. En este caso, la tos se siente como una definición razonable. Y luego, con estas piezas abajo aquí se puede definir lo que significa. Me arrastre o las caídas de esta gama de colores más aquí-- blocks-- esta gran púrpura bloque, donde he escrito en la tos como el nombre de mi nueva pieza del rompecabezas. Y entonces yo estoy diciendo cada vez que un usuario llama a esta nueva pieza del rompecabezas de la tos, hacer algo que decir y una espera. Y así hasta aquí en mi bloque de repetición, Yo sólo puedo toser tres veces. Y yo diría, sobre todo Si ahora se oculta este detalle. A quién le importa cómo se implementa la tos? Todo lo que importa como programador que pueda toser. No me importa cómo decir es implementado. Yo sólo importa que la gato puede decir algo. Que pueda abstraer ese detalle y sólo se centran en lo que está en la pantalla aquí. Pero puedo llevar esto un paso más allá. Tenga en cuenta que aquí, tengo implementado el bucle tres veces. Pero lo que si en vez agarro esta versión? ¿Y si en vez en esta versión aquí, Acabo de cambiar mi pieza del rompecabezas para tomar un argumento y la entrada en sí mismo? Y que la entrada puede ser igual número tres. Así que ahora, si yo escribo un programa y quiero que el gato para la tos, De hecho, me puedo decir el rompecabezas piece cuántas veces al toser, porque en el fondo aquí, un colombófilo versión de estas piezas del rompecabezas de encargo me permite especificar que tos toma realidad un input-- toma un argumento como este. ¿Y sabes qué? Tal vez me doy cuenta, espera un minuto. La tos es el same-- es fundamentalmente la misma idea que el estornudo. Es sólo una diferente palabra en la pantalla. Que pueda abstraer y aplicando esta versión final de un tos, que a primera vista es mucho más compleja que mira. Pero Tenga en cuenta lo que he hecho. Tengo ahora generalized-- genericized realmente-- esta pieza del rompecabezas a llamarse decir palabra n veces. Y ahora tengo dos nuevas piezas del rompecabezas aquí abajo definir la tos n veces. ¿Y qué hace la función de la tos? ¿Qué hace mi pieza del rompecabezas de encargo? Simplemente llama al bloque digamos, pasando por la palabra que quiero decir, pasando en el número de veces que quiero decir. Porque ahora puedo poner en práctica estornudar, simplemente diciendo achoo, en este caso, un número de veces. Y, entonces, capas y capas. Y de nuevo, la clave aquí no es la forma en que he implementado, pero el hecho que si yo sólo, literalmente, moverlos fuera de la pantalla, mira que si no simples bastante mi programa ahora se ve. Porque hace lo que dice, he abstraído lejos de lo que es dentro de esa caja negro. que pasa a ser una caja púrpura aquí, pero he obstruida de distancia lo que hay dentro porque no me importa cómo funciona. Yo sólo importa ahora que funciona. Y, en efecto, en el problema asigna el valor cero, esto es exactamente el tipo de estratificación de las ideas Vas tener la oportunidad de explorar. Es exactamente la oportunidad de aplicar técnicas de resolución de problemas, a lo que es, probablemente, una ambiente desconocido. Y si no se ha programado antes o programada antes, usted encontrará que hay un poco algo en este entorno para todo el mundo. Y con conjunto de problemas uno en el plazo de una semana, vamos a realizar la transición de centrarse en un lenguaje de alto nivel llamado C-- o más bien una menor lenguaje de alto nivel llamado C-- eso es aún más poderosa, aunque es un poco más críptica a primera vista. Y se dará cuenta por TL de hoy: DR, que este problema tiene un set más corto ventana de tiempo que los futuros, simplemente porque debería buscar que sea relativamente accesible. Y no hay que preocuparse si agregar la clase de retraso. Trataremos que en poco tiempo. Y antes de levantar la sesión para la torta, vamos a terminar con sólo una mirada de dos minutos a lo que le espera aquí en CS50. [REPRODUCIENDO MÚSICA] Todo bien. Eso es todo por CS50. Te veremos pronto. Torta ahora se sirve. [REPRODUCIENDO MÚSICA] ALTAVOZ 17: ¿Ha oído de un año sabático, jefe? ALTAVOZ 18: Tal vez hay más bajo el capó.