Palestrante: eu son [inaudível]. E eu son un senior na Leverett House. Eu estudar ciencia da computación, e eu son un TF para CS50. Como un calouro, eu non tiña sequera un portátil ou un teléfono. Eu non tiña ningunha experiencia en programación. CS50 foi o curso máis memorable que Eu tomei en Harvard porque era unha loita, pero foi realmente un diversión loita á vez. E eu fixen unha morea de incrible, permanente amigos, e eu aprendín unha morea de verdade habilidades aplicables. Estou tan feliz que eu non deixei o meu falta de fondo ser unha escusa para me Non Tomé CS50. Eu son [inaudível]. Eu son un senior na Leverett House, clase de 2014. E tomei CS50. DAVID Malan: Entón iso é CS50. Isto é o fin de semana cero. E lembrar onde comezamos a última vez, Con estas lámpadas, que foron tan popular que fomos e compras un pouco máis hoxe. Entón eu creo que iso vai ser nosa cousa este ano - lámpadas de mesa se chegar no escenario, polo menos ata acabar. Pero usamos estes recordo, para introducir os conceptos básicos de representación de datos. Necesitabamos forma de comezar a representar información dentro dun ordenador. E o xeito máis sinxelo de facer iso era cun ingrediente, electricidade. E a cousa máis simple que pode facer electricidade é liga-lo e el apagado. Deixe o fluxo de electróns ou non. E usando estes dous estados básicos, fóra e sobre, ou falso e certo, ou cero e un, comezamos a ver que poderiamos construír En conta que, neste caso, coa luz lámpadas, máis números que só cero e un. Contamos tan elevada como sete, por exemplo, a última vez. Pero todos temos que facer é seguir xogando máis e máis lámpadas naquel problema e, en realidade, podemos representar que calquera número de nós podería posiblemente querer. Ben, nós trasladada rapidamente, a continuación, en Mércores a este byte de voluntarios. 8 bits é o que normalmente chamamos byte, entón aquí tivemos oito voluntarios o mércores que foron colectivamente representando oito bits. E cando as súas mans foron arriba, eles eran un. E cando as súas mans estaban abaixo, houbo un cero. E tivemos esas persoas subir de por de escenario? O que nós somos capaces de facer esta secuencia de bits? Para crear un alfabeto. Fomos capaces de construír enriba do que lección anterior aprenden e realmente comezar a facer máis interesante información que é, como mínimo, máis familiar para nós seres humanos. E iso vai ser un recorrente tema durante 50 anos, pero tamén ordenador ciencia máis xeral, esa idea de capas, en que, ao final do día, se realmente comezou a básico con un ordenador, si, é ceros e uns. E baixo que se só electricidade. Pero moi rapidamente comezar a tomar os detalles de baixo nivel para concedida e comezar a capa enriba do pasado traballou feito para que, en última instancia, por o final do semestre e, realmente, máis xeralmente como científicos da computación e os desenvolvedores, pode facer algúns realmente cousas poderosas, aproveitando o traballo que nós mesmos fixemos e tamén de pé sobre os ombreiros dos outros. Agora nós rapidamente trasladada o mércores a partir de só a necesidade de representar información de querer de facer algo con el. Entón, o que definimos un algoritmo como? Unha serie de instrucións. Entón, é unha serie de instrucións, un número de pasos que, un ser humano, ou un ordenador, máis tipicamente, sería realizar un despois do outro na orde para lograr algún obxectivo. E tivemos algunhas metas última vez, un dos cales foi a conta persoas na sala. E outro exemplo foi atopar Mike Smith nunha lista telefónica. Entón, ten que se lembrar que eu Rompín un teléfono libro á metade para este fin se atopar Mike Smith. O obxectivo deste visual foi a demostran, de novo, que foron literalmente rasgando este problema metade, polo medio, no medio, e moito rapidamente indo de como 1.000 páxinas só unha única páxina. Aqueles de vós que perdeu esta en Mércores, eu penso que estaba a reproducir algunhas imaxes do que perdeu. Imos dar un ollo. [REPRODUCIÓN] -Alí imos nós. 1500 páxinas, liña limpo e agradable, bágoa lexítimo. [FIN reprodución de vídeo] DAVID Malan: Así que foi mércores. Nós transición, con todo, o mércores agora de querer representar algoritmos dalgún modo algo estándar, e non só describindo os verbalmente, pero tentar expresar-las, por escrito, ou en unha pantalla de ordenador, para que puidésemos comezan a mellorar, e modificar eles, e, finalmente, en realidade analizar o quão correcto ou o quão rápido eles eran. Entón, nós introducimos esa noción de pseudocódigo que, en termos leigos, é o que? OK, palabras. Imos afondar un pouco máis do que iso. Inglés, con certeza, pero son para que fin? Palabras coas que crear ou para representar algoritmos. Polo tanto, non hai unha lingua coñecida como pseudocódigo no mundo. É que, en inglés, ou calquera que sexa a súa linguaxe falada é, usa unha especie de notación superficial para transmitir unha idea de forma moi sucinta. Pero imos ver que, seguramente cun Pseudocódigo inglés, e verifica-se a maioría das propias linguaxes de programación son derivados da propia inglés, veremos que hai algún defecto formas de representación e pseudocódigo tamén o código de programación. Entón, como comeza a ver mesmo o máis simple exemplos actuais, entender estes mesmos estándares se repitan a próxima semana. Entón pseudocódigo era algún tipo da lingua semellante unha linguaxe de programación. E o primeiro exemplo que vin visual escrita era un agasallo. Foi só un programa de tres pasos, o obxectivo dos cales foi a conta do número de persoas nun dormitorio para este vídeo na Mércores. Pero houbo algúns aspectos interesantes deste programa sinxelo. E iso será temas recurrentes. Polo tanto, para aqueles que non está familiarizado con esta, unha, nós introducimos unha variable. E, probabelmente, todos nesta sala é familiarizado con unha variable en contexto da álxebra. Pero aquí na programación, variables son, un, pode ser chamado de calquera cousa que queiramos. Estamos a usar n como un contador. Pero poderiamos usar o contador de palabras, ou, como podes ver, máis calquera frase que que pode gustar tanto tempo como é descritiva, pero é realmente só unha recipiente de almacenamento. É unha peza de memoria, un certo número de bits, e varía por ordenador, como moitos bits hai que compoñer esa variable. Pero podemos poñer valores nel. Ata agora, nós só poñer números. Pero podemos poñer palabras reais. Podemos poñer parágrafos. Podemos poñer imaxes - calquera cousa, en realidade, podemos representar con ceros e uns, que pode poñer en esta noción de nivel superior dunha variable. Entón, moi á fronte alí. E iso é unha liña. Pero moi rapidamente trasladou-se de unha liña para realmente facer algo con esa variable. E na liña de tres, actualizamos N Nós incrementado N. E poderíamos escribir este calquera número de formas. Pero quizais o máis evidente é só para dicir, establecer N igual a R é calquera que sexa máis 1. Entón, ese era o noso incremento. Non obstante, verificouse un ciclo. E este, tamén, é, probablemente, moi intuitivo. Un loop é só algo nun programa que pasa de novo e unha vez máis, algúns tipo de ciclo. E esta frase clave aquí, para cada un, é realmente moi común durante a maior parte linguaxes de programación, incluíndo os veremos no curso. Cada vez que ver a palabra, normalmente transmite a idea de que un loop, algo cíclico, está a piques de acontecer. Pero é importante ter en conta unha outro detalle sintática. O feito de terceira liña, hai realmente recuado por atinxir a barra de espazo algunhas veces é proposital. Por convención humana é tal que, cando está facendo algo de novo e de novo, de forma cíclica, como preconizado na liña dous, ten guión algo que pertenceu ao circuíto só para deixar claro que é liña de tres e non, por exemplo, A liña de catro ou cinco, se houbese liñas para, ou cinco, que son parte do que loops. Polo tanto, este recúo simple transmite a idea básica. Entón, nós aplicamos ese algoritmo, Agora, para algúns exemplos. E isto, tamén, o exemplo sinxelo no mundo real. Pero vai ser representante da como faría para probar a súa propios programas cada vez máis complexos. Intenta algunhas situacións, algúns representantes de insumos, e vexa se obter os resultados desexados. Polo tanto, este exemplo tiña dúas persoas sentado na sala do dormitorio. Á esquerda está o mesmo código pseudo. E esta é unha captura de pantalla do propio último paso da aplicación do presente algoritmo para estas entradas, onde existe dúas persoas na sala e, recordar, como percorrer liñas un, e dous, e tres, e dous e tres e feito - ata finais deste algoritmo tivemos realmente contaba os dous compañeiros que están no cuarto. Entón buscamos outro exemplo. E nós dixemos que se hai cero de persoas na sala? Este código aínda correcto? E de feito era. Acontece que a liña dous e, así, a liña de tres ou Non vai realizar. Eles non van acontecer en todos porque non só son aplicables se hai cero de persoas na sala. Pero non é un gran negocio. Liña dunha N inicializar a cero, así a pesar de só unha liña da presente programa, en realidade, acaba sendo útil, aínda produce a resposta correcta, como indicado pola laranxa cero no fondo. Pero, entón, decidimos que era tipo de algoritmo estúpido. Foi moi lento. Por suposto, eu podo facer dúas, catro, seis, oito, dez, cando conta de persoas nunha sala. Entón, nós tweaked o algoritmo, o pseudocódigo, para dicir, agora na liña dous, para cada par de persoas na sala, proceder a, na liña tres, incremento polos dous en cada iteración. Entón, que traballaría aquí para este par de persoas na sala. Pero entón, se comezar a pensar sobre isto, e non pasou moito para entender, agarde un minuto é vai romper, rompe en que caso sinxelo? Se hai tres persoas na sala, ou, máis xeralmente, cando hai unha número impar de persoas no cuarto, incluíndo un. Nós perderiamos a persoa aquí, porque non existen tales compañeiros. Entón, nós axiña abordada por vez introducindo o adicional construcións de programación ao código pseudo. Así, unha condición, que chamamos , Ou unha póla. E ten a intención de transmitir, visualmente, o idea de rama, unha bifurcación na estrada onde podes facelo ou quizais algo máis. E, de feito, estamos fronte a este problema, engadindo a liña 4, dicindo que, en realidade, a fin, se unha persoa permanece, entón vai adiante e conte-los especiais. Entón medio que caso especial los, de xeito para falar, de xeito que agora podemos xestionar tanto un número par de persoas e un número impar de persoas. Agora, hai moitas maneiras poderiamos ter expresado isto. E, francamente, eu podería ser aínda máis nit esixente cando el veu para a miña elección de Inglés para o pseudocódigo. Pero polo menos o espírito de a idea é transmitida. Se entregou este código por correo que non está no CS, ou nunca tomou CS, as probabilidades son de que eles poderían descubrir, dado tres persoas na sala, como contar as persoas con base sobre estas instruccións. E iso é todo o que realmente queremos acadar con pseudocódigo, dalgunha forma estandarizar como imos sobre representando ideas para que poidamos comezan a facer máis complicado cousa aínda. Entón iso nos leva, entón, hoxe, ao código real. Comezamos a programar hoxe, aínda nun ambiente agradable. E entón nós transición moi rapidamente para unha sintaxe máis misterioso, mais que que podes ver é fundamentalmente o mesmo que as ideas van ver manifestado con estoutra lingua hoxe. El só vai mirar un pouco diferente. Entón, en vez de só chamar este código, eu son vai ser un pouco máis preciso e dicir que, a partir de agora, cando se escribe unha programa, está escribindo o código fonte. É unha especie de como pseudocódigo. Pero imos ver, non é unha especie de frouxo cando se trata de escoller as palabras que usa. Cando sexa programar nunha linguaxe, ten para usar as palabras, as frases, a sintaxe, que outras persoas decidiron representar que a linguaxe particular. Entón pseudocodes é contigo. Unha linguaxe de programación real como C, como veremos, finalmente, é estandarizada por outras persoas. Entón, como é que imos escribir algún código fonte? Ben, eu estou indo a ir adiante e facelo. Eu estou indo a ir adiante e abrir unha xanela aquí. Máis sobre iso a próxima semana. Pero este é un dispositivo chamado o aparello CS50. Estou executando un programa no meu Mac, pero pode facer o mesmo nun ordenador Windows, que está dando me a ilusión de facer un diferente sistema operativo completamente seguro aquí nunha ventá no meu Mac Acaba completo aparece para que non realmente o VOS agora. Este é un sistema operativo chamado Linux. É moi popular. É moi rápido. É moi libre, o que fixo moi atractivo, sobre todo no mundo comercial. E para que ao final do semestre, cando usamos Linux algo programación para web e aloxamento de sitios e proxectos reais. Entón, agora, só sei que esta é unha área de traballo que significou a mirar vagamente familiar para Windows e Mac VOS. El só ten algúns nomes diferentes e iconas para as cousas. Pero esta é a así chamada CS50 aparello, unha máquina virtual que, partir da próxima semana, vostedes van executado dentro dunha fiestra en Mac ou PC. Para hoxe, vou abrir o máis simple dos programas. Chámase gedit. E este é só un editor gráfico. É unha especie de como Microsoft Word, pero sinxelo. É o tipo de texto como edición ou Bloc de Notas. É só un programa moi sinxelo, con que para escribir palabras na pantalla. É só así que pasa que si aforrar arquivos que eu creo cando este programa nunha extensión especial como. c, ao contrario de. doc ou. xls, ou calquera outra cousa está familiarizado con, podo realmente crear programas usando o mesmo esta simple editor de texto. Entón deixe-me facelo. Déixeme ir adiante e salva este presentar por primeira vez como hello.c. E, de novo, esta interface de usuario será chegar a ser familiar para vostede axiña. Pero, polo de agora, só estou escribindo nun nome de ficheiro. Vou gardalo no meu John Directorio home Harvard. E agora eu teño esta guía que indica Estou realmente edición un arquivo chamado hello.c. Entón, nada moi interesante aínda. E agora que vai ser moi enigmática. Vou ampliar, só polo que é máis visible. E eu vou comezar a escribir incluír stdio.h, int main, baleiro, aberto rizado cinta, un, dous, tres, catro espazos de retirada, f impresión, para imprimir algo formato, entre comiñas, "Ola, mundo" barra invertida, n, próximo cita, paréntese pechada, punto e coma, entrar retroceso, retroceso, retroceso, Retroceso, pechou rizado cinta - Teño programado. Todo ben que esta é unha super sinxelo programa, en realidade, o programa que Alguén comeza a programación con. E todo o que fai, por toda a súa complexidade, é imprimir o pantalla, difícil de adiviñar? Ola, mundo. Pero non é suficiente só escribir un programa. Polo tanto, este é o código. Este é o código fonte en unha linguaxe chamada c. El salvou actualmente en un arquivo chamado hello.c. Agora mire para o fondo da pantalla aquí. Máis sobre iso, unha vez máis, en próximas semanas. Pero iso é o que imos chamar unha fiestra de terminal. É un chiscar, negro e indicación baleiro. É unha especie de interface antiga escola un equipo que, xeralmente, non fai usar un rato ou outro elementos gráficos. El só usa o teclado. E podo escribir comandos en esta chiscando rápida. E para fins de hoxe, eu son só vai escribir o seguinte - Ola facer. E ese programa, faga, é só un programa que, no mundo real, estes días, teriamos un dobre clic en. Pero nesta interface para hoxe, estamos vai escribir o seu nome na ventá. Ola facer é, literalmente, vai a me facer un programa chamado Olá E vai facelo, observando a un ficheiro, só estándar, chamado hello.c. Vai asumir Eu quero un programa C por natureza, de como este ordenador está configurada. Entón, vai adiante e presione Intro. Eu vexo algunha saída enigmática, pero iso vai facer moi familiarizado antes de tempo. Isto aconteceu para executar un compilador, máis en que, nun momento, chamado Clang. Pero agora, eu teño só un palpebrar pedir. E podo ir adiante agora e escriba dot reducir, por razóns que non interesan, imos voltar á semana - Olá Entón, todo este esforzo, ata agora, só para escribir a máis simple de programas que, así que eu presione Intro, fai iso. Entón, eu escribín o meu primeiro programa. Entón, eu estou deliberadamente mofando neste programa moi sinxelo por un par de razóns. Un deles, é difícil estar animado sobre a toma de unha clase se este é o fin do xogo. Pero máis que iso, hai unha morea de distraccións aquí. A primeira vez que aprender a programar, para quen menos cómodo, e ata eu, de volta ao día, cando eu vin algo coma iso - pode tipo da cifra que, todo ben, este está nun Ola mundo da impresión. Pero hai tanta distracción. Hai moito sintaxe na pantalla que está no camiño de moi ideas simples, se non, simple,. Entón, o que imos facer hoxe é que estamos deixará de lado C e vir de volta para que o luns. E nós estamos indo a usar unha gráfica linguaxe de programación chamada arañazos. Isto é unha linguaxe de programación, que eu aludido o mércores, que vai para permitir facer o mesmo tipo de cousas pero pechar os ollos, para hoxe, para as chaves, as parénteses, o punto e coma, e todas estas estúpidas distraccións que quedan no camiño, en Neste primeiro día, dalgún básico, así ideas interesantes. Entón, para iso, eu vou de volta para o meu escritorio aquí e presentar-lle a alternativa de que programa, que vai buscar un peixe acender isto. É así que imos aplicar esta mesmo programa de hoxe - dous puzzle pezas que, cando conectados e premendo, vai dicir ao mundo, Ola mundo. Entón, imos realmente ir alí. Entón, eu estou indo a ir adiante e abrir unha sitio coñecido como scratch.mit.edu. E iso me vai levar este sitio. De antemán, eu teño rexistrado neste web e os primeiros problemas que ha oriente-lo a través de algúns destes pasos. Eu estou indo a ir adiante e prema na miña carpeta de cero aquí. E iso me vai amosar algúns proxectos que teño efectivamente creado anticipadamente. E verifícase que esta gráfica linguaxe de programación non é só ir para deixarnos programa arrastrando e soltando estas pezas de puzzle, vostede Nin sequera precisa de ningún software especial. Está todo embutido dentro dun navegador para que pode facelo, en teoría, en seus ordenadores agora, como algúns de vós Pode moi ben ser, sen necesidade software como o aparello CS50, o que virá a próxima semana. Entón, eu estou indo a ir ata a esquina superior aquí e prema en Crear. E nun momento en que eu estou indo a obter un espazo en branco pantalla a través da cal eu poida comezar programación neste vídeo contorno de programación. Pero esta vez, que vai ser moi, moito máis sinxelo do que realmente facelo. Entón, nun momento, cando o WiFi coopera, agora temos esta pantalla. Entón, un rápido paseo verbal, pero atrévome a dicir, Certamente cando mergullo no primeiro conxunto de problemas, vai creo que todo moi accesible e moi intuitiva. Pero imos pintar un cadro mental só por un momento. Entón, baixo este aviso dicindo save cambios, está a piques de ver nada. Este é un sprite. É un personaxe. E el vive o que imos chamar un escenario, este gran rectángulo branco en que pode ir cara arriba, abaixo, á esquerda, dereito, e facer, realmente, outros tipos de accións. Mentres tanto, no medio deste usuario interfaz, temos unha morea de pezas do puzzle. E vai ver que din cousas como mover 10 pasos, virou-se de 15 graos, punto nunha determinada dirección. Pero hai categorías de quarteirões ata aquí. Entón, se eu ir a aparencia, vai ver que hai outras pezas do puzzle que ao parecer, vai contar este cit para dicir Hola, para pensar, para amosar se, ocultar-se. Se eu baixar a Sounds, verifícase se hai formas de reproducir sons como Miau, parar todos os sons, tocar un tambor. Así, longa historia curta, hai un todo chea de pezas de puzzle que permiten que para dicir este gato, ou calquera número de outros personaxes, o que facer. Pero para facer todo isto acontecer necesitamos para comezar a programación. E esta gran caixa branca ou caixa gris, en á dereita, este é o lugar onde Vou realmente arrastrar e soltar as pezas do puzzle. Ese é o meu texto en branco fiestra equivalente. Entón, eu estou indo a ir adiante e prema Controlar o medio. Ou mellor, déixeme comezar baixo Eventos. Baixo base Eventos, verás unha algunhas cousas que son deliberadamente curvada na parte superior, de tal xeito que probablemente non entrelaçar no parte superior das pezas do puzzle. E iso é porque demarcar o inicio dun programa, o inicio dun guión, por así dicir. Entón, se eu ir adiante e arrastrar, cando verde bandeira premendo por aquí, e entón eu quere dicir que este gato algo en primeiro lugar. Entón, eu estou indo a ir en o panel parece. E eu estou indo a ir adiante e coller a dicir Hola bloque, e arrastrar e soltar, e solte para que automaticamente interliga alí. E, a continuación, entender que podo faga clic sobre o texto. E podo substitúe-lo a ser máis específicas como, por exemplo, Ola mundo. E agora temos o programa que eu reivindico equivale a máis do que moi programa arcano eu apliquei C en un momento atrás. Se pasar por riba agora ao lado esquerdo, ter en conta que hai un gran sinal de parada e unha bandeira verde grande. Déixeme achegar para maior claridade. E cando clic agora esta bandeira verde, probablemente pode adiviñar o que este primeiro programa agora vai facer. Polo tanto, hai, tamén, que estamos programando, pero Non estamos realmente encallar nalgúns deses sintático, detalles minuciosos. Pero imos tentar algo un pouco máis interesante. Deixe-me ir para a miña carpeta do risco aquí. E, de feito, déixeme entón déixeme abrir un programa separado aquí por só un momento, dar esa ventá, Abrir Arquivo, e eu estou indo a ir para hoxe directorio de orixe. Como sempre, vai atopar, hoxe e á fronte, que de todos os exemplos de hoxe son accesibles dentro páxina web do curso. E eu estou indo a ir adiante aquí e escoller se algo un pouco diferente. Este aquí, por que Necesito un voluntario. Quen quere ter unha lámpada de mesa hoxe? OK, e como a alguén un pouco - está no fin? Imos cara a abaixo. Agora quere participar, ou só dicir que comezar coa lámpada de mesa? Vanessa: [inaudível]. DAVID Malan: Aceptar. Excelente, o que é o que chama? Vanessa? David. Pracer en coñece lo. Entón imos para arriba e Vanessa vai para asumir o control da miña teclado por só un momento. E o que eu fixen aquí, só para o tempo de ben, como eu entender o WiFi foi un pouco lento, risco, o contorno de programación que estamos utilizando, tamén se pode descargar e executado no seu ordenador local. Entón o que eu fixen antes da charla, en Se isto ocorre, é que eu baixei todos os ficheiros que estamos a piques de xogar con para que se poidan executar un pouco máis rapidamente aquí no meu portátil. É por iso que agora estou a ver unha interface específica-Mac. Entón, eu estou indo a ir adiante e abrir un agasallo. Eu estou indo a ir adiante agora e pantalla completa da fiestra. E, como verás, podemos moi rapidamente, como este estudante fixo, dun seus antecesores, ir do Ola mundo para unha moito máis atractivo aplicación. Entón, aquí están as instrucións. Ah, e nós temos unha outra cousa. Eu penso que sería divertido, xa que, normalmente, estaremos filmando As cámaras deste xeito. Eu penso que sería divertido se, Vanessa, poderiamos ver o mundo a través dos seus ollos. Polo tanto, temos aquí algúns cristais de Google. [Suspiros asombrado] DAVID Malan: Nós só estará dando distancia de mesa lámpadas hoxe. [Risas] Entón déixeme suxestión iso. Todo ben, entón tocar iso. OK, Vidro, gravar un vídeo. Todo ben, Vanessa? Agora, como un aparte que non ten nada facer co scratch, se ollar lixeiramente cara arriba e á dereita, vai ver o vidro literal, e ten que ver unha pequena fiestra rectangular. Verás todos os seus compañeiros sendo filmado agora? Si Vanessa: si. DAVID Malan: Aceptar. Entón, iso é bo. Imos publicar esta película despois. Polo momento, volva a súa atención á pantalla aquí. E o que o seu antecesor fixo é poñer algunhas instruccións da pantalla só usando un programa de pintura. Entón vai, nun momento, preme a barra de espazo para comezar. E, a continuación, algunhas pezas do puzzle van para comezar a mover-se na pantalla. E quere bater as teclas de frecha, só como en DDR real, segundo coas cousas aliñados con esas frechas. Vanessa: Aceptar. DAVID Malan: Vostede xogar este antes. Vanessa: Yeah. DAVID Malan: Todo ben, Vanessa, dalle levala aínda. [Music - KAYNE WEST, "Stronger"] [Aplausos] DAVID Malan: Entón, imos agora dar un paso diso. Entón, claramente, iso é o fin do xogo. O xogo final non é Ola mundo. Pero non ten que necesariamente facer cousas que son tan interactivo. Tamén pode facer animación. Así, por exemplo, outro da súa sucesores fixeron este programa, que conta unha historia de máis de el aplicou un xogo. Entón deixe-me ir adiante e abrir aquí un programa na nosa mesmo directorio de orixe a partir de hoxe. Esta chamada, e imos comezar con unha historia de amor cookie. E para non facelo tamén académico, pero, como ve este, creo que a aínda que quen simple conceptos de programación con quen falamos sobre ata agora - variables e loops, e as condicións, que o seu antecesor, probablemente, usar só para aplicar algunhas das as visualizacións. Ve aquí. Entón, eu darlle unha historia de amor cookie. [Music - GREEN DAY, "festivo"] [CRASH] [MUSIC - as tartarugas, 'Happy Together "] DAVID Malan: Todo ben, entón non hai, tivemos unha historia de amor cookie. Pero, mesmo alí - [Aplausos] DAVID Malan: Todo ben, ata alí, pensar, como os corazóns pasou de a parte inferior cara á parte superior da pantalla, houbo realmente un pouco de aleatoriedade suceder. E, de feito, imos ver que, aínda no sinxelo de ambientes, como o Cero, como en C, pode xerar números aleatorios, ou a ilusión números aleatorios, de xeito que o xogo é un pouco máis interesante do que podería se tivese absolutamente codificado todo. No movemento que ve, non hai algún tipo de resposta. Tan pronto o home de xenxibre toca a muller do pan, ela parece afastarse. E así, de feito, pode aplicar, en a maioría das linguaxes de programación, a noción de eventos, en que se unha man toca por outra banda, que pode provocar algunha do seu código fonte realmente realizar. Podes escoitar para tal as cousas na pantalla. Entón, imos dar un rápido paseo, entón, algúns dos bloques de construción que podemos utilizar para alcanzar algúns deses obxectivos. Entón aquí está o que imos a partir de agora chamar un comunicado. A declaración pasa a ser vermello en Cero, un pouco máis ou menos así, pero iso é arbitrario. A afirmación é só unha peza do puzzle ou, máis xeralmente, unha instrución, que di ao ordenador para facer algo, unha declaración. Entón, aquí está un exemplo simple. Diga Ola mundo. Outro podería ser esperar un segundo. Polo tanto, esta parte do enigma, que é apoiado en perigo, imos deixar o seu caracteres pausa para algúns número de segundos. Isto, tamén, é só unha declaración. Aquí ao lado, temos un outro máis un interesante xogo de son miado, e unha pequena frecha significa que en risco, este é un menú desplegable. Así, pode descargar sons. Pode gravar sons e facer outra cousas divertido en cero. E que, tamén, aínda que, ao final do día, é só unha declaración. Pero agora imos introducir unha máis interesante peza, que coñecido como un Expresión booleana. Capital B, en homenaxe un suxeito chamado bool. E unha expresión booleana é só un parte do enigma, ou, máis xeralmente, a peza de información que se verdadeira ou falsa - un ou cero, si ou non. Por iso, é só un destes dous opostos. Así, unha tal expresión booleana en mundo do scratch parece que ese azul Puzzle Piece. E está a facer unha pregunta, rato para abaixo, e que pode ser, de Por suposto, verdadeiro ou falso. Así, con esta peza de puzzle en perigo, ben, vai ser capaz de detectar se un descifrar o rato é, de feito, ser presionado pola interacción humana co seu programa. Este é un pouco máis abstracto, pero estas dúas caixas brancas son só para números. Así, pode facer cousas como esta é número menor que os outros? E se é así, risco vai comportarse dunha forma ou doutra. Este é un pouco máis gráfica. É, o Sprite, se o gato, polo exemplo, é realmente tocando o punteiro do rato. Entón, se a cabeza pequena frecha está paira sobre o gato, entón este peza do puzzle pode avaliar a true. Será verdade, caso en que, se usar esta expresión booleana, como veremos ver nun momento, nun sector, pode quere facelo, ou pode facelo, tanto como se tivésemos unha condición que marcada, hai unha última persoa no cuarto? Se é así, engade un. En caso contrario, non se preocupe máis. Así, unha expresión booleana tamén se pode e-ed xuntos ou ou-xuntos ed. Así, pode combinar expresións booleanas e dicir iso e iso debe ser certo para a cousa toda para ser verdade. E aquí está un exemplo do mundo máis real. Se xa usou CS50 Cursos de facer curso compras, estas caixas de verificación alí, onde se comprobe que a caixa ó lado aos cursos, que van dicir, si, só me amosar cursos para os que o valor Q é 4.5 ou superior. Se desmarque-a, non, non preocupar con iso. Ou do mesmo xeito, á dereita, non fai Conflito con cursos que estou tendo, iso é certo ou falso. É só unha expresión booleana. Entón todo este tempo, cando xa usou sitios con caixas de verificación, que é só alternando o equivalente a un valor booleano expresión conexionado e apagado. Entón, de que forma usa isto? Ben, en scratch, veremos nun momento que existen condicións que semellante a esta. E ese é o tipo de corda, porque moi como en pseudocódigo, nos recuado o tipo de pezas de puzzle en forma de U, a media que nada dentro do dito U é vai realizar, ou non, dependendo de onde é. Entón, se a expresión booleana, entón todo o que está dentro será executado. Mentres tanto, hai un bloque if / else. Entón se quere un sector que este ou daquela maneira, risco dános isto. E por esa lóxica, agora, a pesar de que peza do puzzle é claramente moi pequeno para calzar outra cousa dentro del, as pezas do puzzle de cero, son só vai medrar. Cando arrastrar e soltar sobre algo, ela só vai medrar para caber todo o que é que estás a facer. Así, podemos ter dúas desas cousas e facer un fork de tres vías na estrada para que quere facer isto, ou aquilo, ou esa outra cousa só aninhando los dese modo. Claro que, se fai iso tamén moito, comeza a estar feo. Pero nese momento, está, de feito, probablemente non programación moi ben. E, de xeito que será recurrente tema, tamén, que de estilo. Que ben realmente formatear o seu código? Ou como ben vostede proxecto seu código? Pero máis sobre iso no futuro. E agora temos loops. Hai un loop para sempre agradable en Scratch que literalmente quere dicir que - facer todo o que está dentro desta nova e de novo, e de novo. Pode ser máis concreto e dicir: faga o seguinte cousa 10 veces. Tamén pode usar variables. Pode chegar a calquera nome no que pouco caer abaixo e dicir, me dea un variable chamada n e establecer é igual a un valor. E entón pode ter funcións. Pero máis sobre aqueles en só un momento. Déixeme volver á miña Acoitelado interface. E déixeme ir adiante neste momento. E imos adiante e abrir, digamos, un exemplo de - iso é un pouco máis interesante. Déixeme ir adiante, e, de feito, déixeme facelo só. Eu non teño abrir un agasallo. Déixeme ir a Arquivo, Novo. Eu estou indo a ir a eventos. Eu estou indo a ir cando bandeira verde premendo, e eu estou indo a ir a son. E eu estou indo a arrastrar e soltar esta peza do puzzle, xogar Meow son. El trabas xuntos. E agora, se eu premer na bandeira verde - [Meow SOUND] DAVID Malan: Adorable. OK, entón agora imos facer algo un pouco máis lóxico só para demostrar que podemos, por agora. Eu estou indo para desbloquear iso este cara. Eu estou indo a ir a control. E eu vou ir unha enfermidade. Entón, se algo, entón. Entón é así que mira alí. Entón eu teño unha expresión booleana. E déixeme ir adiante e dicir: déixeme ir os operadores. Vou facer algo un pouco mathy, só por diversión. Eu estou indo a ir aquí e dicir que si algo que é menor que calquera outra cousa, dalle facer algo. Entón, agora, vostede sabe, un bloque ao azar. Entón, teña en conta como, se eu pasar o rato sobre este cousa aquí, que se encaixará alí. Entón, agora, o aviso previo, eu estou empezando a facer algo xa máis loxicamente interesante. Se un número aleatorio entre 1 e 10 é menor que, digamos seis. Se eu escoller seis, que, esencialmente, medios, faga o seguinte con 50% probabilidade. É como xogar unha moeda. Agora, podo facer algo condicional. E ese algo eu vou facer é xogar o son. Entón, agora, cando clic na pantalla bandeira, é como xogar unha moeda. [Meow SOUND] DAVID Malan: Foi cabezas ou outros enfeites alí. Imos facelo de novo. [Meow SOUND] DAVID Malan: Heads novo. [Meow SOUND] DAVID Malan: Heads novo. Ufa, Aceptar. Colas ese tempo. Así, o 50% do tempo, se facemos iso infinitamente longo, teremos un 50% de miados e 50% silencios. Polo tanto, hai só un edificio básico bloque que nos permite facelo. Pero este é o tipo de tediosa que eu teño para manter a premer nese botón. Entón, imos simplemente arrastrar e xogar todos os que están lonxe. Se arrastrou para o medio, simplemente eliminar-se. Déixeme ir ata controlar. Deixe-me ir para sempre. E esta vez, eu vou facer minorly algo irritante. [Risas] DAVID Malan: E déixeme ir adiante e facer o control. Agarde un segundo, só así non é moi irritante. [Meow SOUND] DAVID Malan: Isto non é natural. Aceptar. [Meow SOUND] DAVID Malan: E teña en conta o que está, bo sobre o risco, para aqueles de vostedes que ter experiencia previa de programación, vostede Non é necesario para iniciar e parar. Non ten que compilar. Acaba de cambiar, eo programa pode adaptar-se dinamicamente. Entón, iso está quedando un algo interesante. Pero imos dar un paso adiante. Déixeme ir adiante e conseguir librar dese programa. [Meow SOUND] DAVID Malan: Isto é o que imos chamar a un erro en perigo. Non debería seguir facendo ese son. Entón, nós imos dicirlle a parar. Todo ben, entón agora eu estou indo a ir - Vou deixar MIT sei. Nós imos pasar por riba aquí para sempre. E agora, quero facer algo unha e outra vez. Eu estou indo a ir a Control. E imos ver, eu estou indo a arrastrar miña condición se alí. Entón agora entender a lóxica. Cando a bandeira verde é premendo, facer algo para sempre, pero só faino algo, se esta outra cousa é verdade. Eu estou indo a ir, imos dicir, sentindo. E eu estou indo a ir adiante e elixir tocar e solta-lo alí. Esa é unha expresión booleana. E agora, notar, neste caída menú, hai algúns valores predefinidos. Entón eu podo dicir, está tocando o bordo da pantalla? Ou está tocando o punteiro do rato, a frecha na pantalla? Entón, eu vou facelo. E se é así, entón eu vou adiante e xogar Meow son. Entón agora eu medio que teño a inicio dun xogo - un xogo encantador. [Meow SOUND] DAVID Malan: OK, unha encantador, xogo de buggy. Déixeme agardar, imos dicir, un segundo alí. Agora xogar de novo, premendo en a bandeira verde. [Meow SOUND] DAVID Malan: Entón agora é como acariñar un gato. [Meow SOUND] DAVID Malan: Todo ben, agora iso que eu facía antes. Moi tarde, faise unha especie de fácil de facer cousas estúpidas. Entón deixe-me entrar aquí. Digamos que se acariñar o gato. Imos agora abrir Non acariñar o gato. Agora, se xogarmos un regalo, podes imaxinar, se está mirando para a pantalla - [Meow SOUND] DAVID Malan: Agora, se eu acariciar o gato [Roar LION'S] DAVID Malan: Entón, en realidade, non acariñar o gato nese caso. Entón, agora só temos un exemplo dunha sector que vai en dúas direccións. Agora, deixe-me ir adiante e abrir outra aquí. Esta, tamén, entre a fonte ficheiros de código ao día. Entón déixeme volver á miña Orixe directorio e entrar, imos escoller este cara aquí e mira o que é diferente. Guau, todo ben, entón agora está quedando un pouco máis complexa. E antes de ver o que este cara fai, imos tratar de inferir, a partir do programa no lado dereito. E agora scratch permite claramente nos ten varios scripts, múltiples programas asociados a un duende, cun personaxe, e, ao parecer, ambos están indo a realizar en sintonía. Porque ambos os programas comeza con ao verde bandeira click, este é insinuando un tema máis avanzado, con que algúns de vostedes poden estar familiarizado, coñecido como Threading, ou multi-Threading. Acontece que, longa historia curta, ordenadores hoxe pode esencialmente facer múltiple cousas á vez. Ou pode facer unha cousa de cada vez para rápido que nin entende que está realmente facendo un cousa de cada vez. Pero, polo de agora, imos supor que ambos estes programas van realizar a á vez. E noten, ambos teñen sempre puzzle Pieces. Así, ambos están indo a seguir funcionando ata que eu bati o sinal vermello. Entón, o que van facer? Na parte esquerda, eu son aparentemente declarar unha variable chamada silenciado. Entón, eu non chamalo algo así como aburrido como N. Chamei-mudo esta tempo para transmitir un significado. Eu define-lo igual a cero. Imos pensar que, como falso, ou imos pensar niso como False. Agora, para sempre facer o seguinte. Se a barra de espazo do teclado é presionado, entón se mudo igual a cero, a continuación, cambiar mudo a igual un. Else, establecer silenciado a cero. Entón, loxicamente, a pesar de que é un todo chea de pezas de puzzle que é só dicindo que, cando eu bater a barra de espazo, o que debo facer para a variable chamado silenciado? Mudala de un a cero, ou cero a un. Isto é todo. Entón, é como conectar un interruptor de luz activado ou desactivado e lembrando, cun variable, o que eu fixen iso. Mentres tanto, no lado dereito, en termos xenéricos, cal é o propósito de o script do lado dereito? ALUMNO: Para reproducir o son do león do mar. DAVID Malan: Para reproducir son Sea Lion, se non está mudo, por natureza desta variable. Entón, nós estamos compartindo estado, por así dicir, intercambio de información entre estes dous scripts, pois, notar aquí, estamos sempre facendo o seguinte. Se mudo é cero, polo que, se non é silenciado - se silenciado é falsa, entón xogar este son do león de mar. E pensa consigo mesmo, ola, ola, ola, para de dous segundos, esperar un momento, e entón prema aquí. Entón, se nós imos agora aquí á esquerda, de onde é este cara, e bateu o bandeira verde, [SEA LION SOUND] DAVID Malan: En que punto este queda moi aburrido? Por iso só vai durar para sempre. Entón, ás veces, loops infinitos, por así dicir, son deliberadas. Pero, neste caso, como I preme a barra de espazo, el deixa. Agora o programa non parou. El aínda está en execución nestes loops. Pero se eu tivera a barra de espazo novo - [SEA LION SOUND] DAVID Malan: El vai pegar de onde parou. Polo tanto, non hai unha forma de facer algo de novo e de novo, pero, que tempo, só condicional. Pois ben, xa que estamos nese sentido de facer cousas de novo e de novo, déixeme entrar noutro exemplo diso aquí. Este chamaremos contar carneirinhos. E teña en conta o que este cara fai. En realidade, é un pouco máis parecido ao pseudocódigo xogamos coa Mércores, no que el define algunhas balcón, pensar é como N de novo, para cero, sempre que fai a continuación. Di que o valor do contador a un en segundo lugar, agarda un segundo, e logo modifica o contador a unha. E, neste contexto, que só significa increméntase. Así, el engade un a el. Polo tanto, esta é literalmente - non é así o que pensamos como contar ovellas. É a ovella facendo a conta, para sempre, por riba de cero. Así, podemos facer cousas semellantes alí, loxicamente. Pero agora imos tratar de limpar algunhas destas cousas. Déixeme ir adiante agora nunha simple exemplo, onde o noso gato está indo só para comezar a tossir. Todo ben, entón aquí temos tose 0 - científicos da computación comezar conta de 0. Polo tanto, este gato é só ir a tos por tres veces. E aquí está como eu apliquei iso. Cando a bandeira verde é premendo, tose, esperar, tose, espera, tose, agarde. E eu fixen iso só arrastrando e soltando pezas do puzzle. Ou se comezar a xogar co scratch, podes ver que realmente pode pezas duplicar para que poida facer as cousas máis rápido, sen arrastrar e soltando ad nauseum. Pero non estamos no mellor camiño aquí. Porque como podo facelo tossir por cuarta vez? Ben, eu podería clasificar de baixar aquí. Podería duplicar e logo, pega este aí. Como podo facelo tossir por quinta vez? Ben, copia e pega novo. Ou arrastrar e soltar de novo. E moi rapidamente, este programa comeza para realmente redundante, moi longo, pero realmente desinteressante. Pero hai unha forma de limpar isto. Cal é o xeito máis obvia para borrar isto? OK, entón nós realmente realmente pode ir fóra e, cando bater o espazo bar, telo tossir. Pero se eu queira facer algo repetido lembre que temos un control constrúe. Déixeme pasar esta fóra do Así, ir baixo control. Déixeme só facer unha repetición, dicir, tres veces. E agora déixeme roubar destas pezas de puzzle. Déixeme aproveitar iso aquí. Déixeme xogar estes afastado completamente. E agora, eu teño unha mellor programa deseñado. Por que? Se eu queira cambiar o número de veces Este gato tose, todo o que teño para facer é cambiar unha variable ou un valor, no canto de tres, ou catro, ou cinco ou seis. Ou eu podería facer algo de forma condicional, mesmo, co espazo bar se eu quixese. Polo tanto, este é un principio xeral. Unha vez que comezar a copiar e pegar o código, se está en risco, ou en C, está facendo algo mal, o máis probable. Ou, polo menos, unha vez que superou algúns número razoable de copias e carpetas, probablemente está facendo algo mal. Pero vostede sabe o que? Realmente non me gusta diso. Este non é o deseño máis limpo. Gustaríame que houbese unha parte do enigma chamado tossir, porque entón eu non faría Ten que aplicar iso mesmo, a moda antiga, por tendo dicir, e esperar - e se eles eran só unha peza do puzzle tose. Ben, podo realmente facer iso. Déixeme ir con máis bloques, prema Fai un bloque, e agora eu teño ese fiestra aquí. Vou chamar esa cousa de tose. Eu estou indo a ir adiante e prema en Aceptar. E agora, o aviso previo, eu recibín unha nova partida peza que está curvada na parte superior. E o que eu vou facer con iso, eu son vai roubar estes bloques. Vou poñer-los aquí. E agora, con estas tres partes, eu teño aplicado o que vou chamar a un función ou un procedemento, ou algúns dos pode coñece-lo como un método. Pequenas diferenzas entre as palabras. Pero, polo de agora, imos só chamar iso dunha función. Esta é só unha nova peza do puzzle. Agora que é aplicado como esta. Pero teña en conta que cero nos deu un representación física de que toda bloquear aquí. Entón, agora, podo simplemente arrastrar esta aquí, dicir, repita tres veces, e o que vai pasar agora, cando eu xogar Nese guión, é só un programa está en execución ao mesmo tempo. Hai só un cando bandeira verde premendo. Pero este bloque vermello chamado tose é efectivamente dicindo cero, cada vez que ver que parte do enigma, de feito realizar estes pasos que pasar para aplicar manualmente. Entón, este é o tipo de ordenado. Pero agora, creo que eu decidir, eu non quero ese gato só a tossir. Eu quero que sexa capaz desprezable tamén. Ben, como poderiamos ir sobre implantación espirro? Ben, eu podería moi ben facer o mesmo. Podería facer outro bloque. Podería chamar este espirro, prema en Aceptar. Entón, aquí eu podería realmente ter, déixeme duplicar este - e alí é onde ten que sentir como probablemente non está facendo algo en o mellor camiño. Podería dicir algo así como: achoo, por un segundo. Espera un segundo. Agora eu teño un novo bloque chamado espirro. E, de feito, non é. Pero iso, tamén, debe comezar a sentir - talvez non a primeira semana de clase, pero polo segundo - só un pouco redundante. Claramente, hai algunha redundancia aquí. Entón deixe-me propor, no seu lugar, que refinar esta definición como segue. Deixe-me ir ao meu menú Arquivo. Eu non estou indo a gardar esta versión. Eu estou indo a ir en un dos meus arquivos Premade aquí. E eu estou indo a ir adiante e abrir tose 2. Berros que era tose 2. Déixeme ir adiante e abrir tose 3, que é este directorio de orixe. Tos 3 e teña en conta - Oh, eu dixen a historia na orde incorrecto. Déixeme recuperar desta historia. A historia que eu quería che dicir remata con tose 4 - aí está. E que se eu, no seu lugar, establecer a maior parte do enigma chamado establecer, diga a palabra n veces. Espirro é só aparentemente en perigo, achoo. Así, expresalo como unha palabra, só porque esa é a restrición do programa. E a tose é [tose], pero a tose, C-O-L-G-H. Entón, iso é só dous palabras distintas facendo, esencialmente, o mesmo. Entón, podo realmente facer unha novo bloque como esta. Eu non uso esta opción de menú anterior. Pero cando clic en Crear Block, pode escoller algunhas opcións. E pode dicir que este bloque efectivamente leva algúns insumos, se non, coñecido como argumentos ou parámetros, de xeito que se pode modificar o comportamento de seu bloque. Entón o que eu fixen hai pouco se Liguei para este bloque Say. E entón eu dixo, hai que unha entrada de cadea. E agora entender, por defecto, di unha corda. A corda é só unha palabra, ou un frase, para os nosos propósitos. Pero eu só vou poñer algúns texto de espazo reservado alí, así como nun sitio, cando ve nome de usuario, ou contrasinal e, a continuación, el desaparece cando comeza a escribir. Isto é todo o que existe. E agora vou engadir unha entrada de número. E eu vou chamar a este n - pero iso é moi arbitraria. E despois é só unha etiqueta, só para facer este bloque algo máis de auto- explicativo - veces, é o que eu fixen. E o resultado final é que eu teño un bloque que se parece con isto. E agora entender, está a usar un bloque de repetición. Pero en vez de difícil codificación tres, eu son arrastrando e soltando n alí, entón eu pode parametrizar a función. Eu podo facer esta función facer algo un número diferente de veces baseados en dese valor. E teña en conta, por exemplo, que é o que eu fixen aquí, se eu arrastrar palabra, podo dicir que non é un palabra codificado, pero o que é pasada para un segundo. Mentres tanto, como fago para re-aplicar tossir? Eu en vez establecer a tose como dicindo tose n veces. Así, en breve, estou pasando por iso rápido, pero a idea básica é así como comeza a ver no seu programa que, agarde un minuto, eu fixen algo moi parecido a isto antes, podo Fatorar algúns común función? Podo descompoñer o que estou facendo nalgunhas ideas básicas? Isto é o que estamos facendo aquí. E eu teño apiñados estas cousas, visualmente, encima da outra porque iso é proba de que idea comezando co binario, indo a ASCII facer programas gráficos, tipo de capas ideas cada vez máis complexas en parte superior da outra. A mesma idea aquí. Comecei de cero, aplicando tose, tose, así que entender é realmente só dicir algo. Entón deixe-me no canto aplicar o noción de dicir algo. E encima diso, podo aplicar achoo, ou tose? E poderíamos facer máis, tales variantes aínda. Así, a partir deste principio básico, podemos empezar a facer cada vez máis complexos programas. Déixeme abrir un agasallo. Podemos realmente ter varios sprites interactuar na pantalla ao mesmo tempo. Se eu vou para o meu directorio de orixe e incorporarse un chamado Threads, lembre que unha liña é realmente moi a capacidade de dous scripts para executar lado a banda, á vez. Teña en conta o momento, teñen ambos un Sprite de aves e un Sprite do gato, sendo que ambos teñen os seus propios scripts. Así, o aviso previo, cando clic no gato, eu recibín estes scripts. Cando premo sobre a ligazón paxaro, Eu recibín estes scripts. Así, cada un destes faces ten os seus propios programas. Cando premo agora a bandeira verde, teña en conta que o que este programa fai é teño o gato, incrible lentamente, perseguir o paxaro. Pero o gato ten a vantaxe de ter foi programado de tal xeito que non importa onde o paxaro é, o gato vai cara a el. Podemos xogar este xogo moito máis rápido. Entón, se eu estou no gato, entender que eu son usar, digamos mover unha pasos. Imos telo moverse en cinco etapas cada vez, a cinco puntos de unha vez. Déixeme clic en xogar. [Roar LION'S] DAVID Malan: Todo ben, agora podemos realmente dar o gato a vantaxe. 10 pasos de cada vez. [Roar LION'S] DAVID Malan: Todo ben, entón moi rápido, faise unha pequena vantaxe ao gato. Pero eu vou acenar coa man no algúns dos detalles. Pero a razón que ese camiño é comezando un pouco diferente de cada vez é que eu estou facendo un pouco de aleatoriedade. En realidade, estou apuntando o gato nun dirección diferente dependendo de onde eu quero que comece a fin de que cada vez o xogo, ou a animación, é un pouco diferente. Agora, deixe-me presentar un outra construción aquí. Polo tanto, neste caso, tivemos funcións. Hai tamén vai ser unha peza de puzzle coñecida como unha matriz ou unha lista, que permite almacenar varios valores dentro dunha variable. Vimos threads, e agora hai Events. Entón aquí está un evento mediante eses dúas caras aquí. E se eu abrir o ficheiro chamado Eventos dende exemplos de hoxe, imos ver un programa que parece algo como isto. E agora entende este cara - para entender que eu teño o azul Muppet premendo - el só fai o seguinte. El non ten un deses verdes pezas do puzzle bandeira. Ten un cando recibir evento - entón algunha palabra arbitraria. Eu escriba o evento alí - que vai dicir, Polo, durante dous segundos. Así, aqueles de vostedes que está familiarizado con este xogo pode saber onde isto vai dar. Se eu agora prema no Muppet laranxa, o programa fai iso. Para sempre, se a barra de espazo do teclado suprimida, que vai dicir, Marco, por dous segundos en pantalla. Pero tamén vai usar isto máis sofisticado bloquear coñecido como broadcast. Vai transmitir Cita pecha comiñas, "evento". Mentres tanto, a cara azul, aviso, é escoitando entre comiñas, "evento". Entón, dalgunha forma, agora, podemos ter dous sprites interactuar. E cando chegamos á programación web, ao final do prazo, do mesmo xeito que vai ser vantaxoso ter a súa web facer algo en resposta a, por exemplo, un clic do teclado. Entón deixe-me ir adiante e preme a barra de espazo. Laranxa cara di Marco. Azul cara di Polo. Se eu fai cara de novo laranxa di Marco, azul cara di polo. Entón, imos dar un paso adiante. Esta vez, iremos probablemente só uns minutos aquí. Será que temos - lámpada de mesa, imos alí abaixo. Está certo ao final. OK, pode tanto vir cara arriba. Temos luminarias para todos. Imos. Non sei se podemos manter esta mordaza ridículo up todo o tempo, con todo. Todo ben, imos alí abaixo. E nese medio tempo, temos a seguindo exemplos para puxar arriba, só para acelerar as cousas agora, de tal forma que ten unha manifestación doutra predecesor de vostedes usando o mesmos bloques básicos de construción. Cal é o seu nome? JOHN: John. DAVID Malan: John. Bo para min ti. E? SETZ: Setz. DAVID Malan: Setz, bo para min. John, se quere vir en primeiro lugar, este é un vello xogo de escola chamado Frogger. Pode utilizar o teclado para iso tamén. E o obxectivo é atravesar na rúa e auga. [Frogger MÚSICA E reproduce o son] DAVID Malan: Sinto moito, non lámpada de mesa para ti hoxe. Todo ben, Setz, non é quere vir enriba? Todo ben, imos facelo de novo. SETZ: Será que usa as frechas? DAVID Malan: Só as teclas de frecha. Arriba, abaixo, esquerda, dereita. [Frogger MÚSICA E reproduce o son] DAVID Malan: Imos chamalos consolo premios hoxe, entón, moi ben feito. Aquí, para ambos, John e Setz. Parabéns, todo ben. Entón, de novo, como este xogo ten, pensar sobre o que está pasando? Un deles, hai claramente unha gran cantidade de movemento. Pero vimos como, co gato eo paxaro exemplo, como pode facer o ilusión de movemento movendo só algúns número de píxeles e outra vez. E se ten un bloque para sempre, podería ter estes coches facendo isto para sempre. Temos a capacidade de Ten algunha aleatoriedade. Polo tanto, este xogo non ten que ser exactamente o mesmo á vez. Estes rexistros, os coches, pode comezar en tempos lixeiramente diferentes, para que o xogo en si é máis interesante con cada xogo. E mentres tanto, vimos a posibilidade para escoitar a barra de espazo. Pero é evidente que, en risco, pode tamén escoitar para arriba, abaixo, esquerda, dereita, e Realmente calquera tecla no teclado. E tamén pode facer algunhas outras cousas. Deixe-me ir adiante e atrás para a versión web. Déixeme ir á nosa colección de exemplos aquí. E no meu estudio, o vídeo que é, esencialmente, un cartafol en scratch.mit.edu. Temos as versións web dos todos estes proxectos. E imos ver se podo pegar meu ordenador para cooperar aquí. É escrito por un dos nosos amigos no MIT, chamado Move o Butterfly. E xa que este se abre, este é vai realmente usar máis de hardware do meu ordenador. Arañazos pasa a ser aplicado con Flash. Flash pode falar coa súa webcam, se ten un. Entón, se eu ir adiante e pantalla completa este aquí, prema na bandeira verde, o aviso que a mensaxe de seguridade do flash está dicindo, quere permitir utilizar miña webcam? Normalmente, ten que probablemente diría Denegar. Pero neste caso, imos dicir permitir. Entón eu vou dicir Chrome para que este tamén. E agora, en só un momento, me ver, si, me. E se a miña man sobe - Teño que cambiar a miña non cabeza á vez. Hai tamén unha reflexión na pantalla. Imos, alí imos nós - podes movela na pantalla, xa que hai tamén pezas de puzzle - Oh, vostede sabe o que é, é porque tamén ver a pantalla do proxector detrás de min. Entón temos un pouco de infinito algo suceder alí. Todo ben, entón eu vou xogar aquí. Alí imos nós. Polo tanto, hai tamén unha peza do puzzle que di que, cando ve o movemento baixo un dos sprites, podes telo ir arriba, abaixo, esquerda, dereita ou afíns. Entón temos un pouco de realidade virtual pasando aquí, ben, todo dentro do confíns do meu navegador, só aquí, a usar miña webcam. Entón, cal é, a continuación, no horizonte. O primeiro conxunto de problemas, como vai ver, ou o sitio vai estar en liña máis tarde onte á noite na cs50.net, é moi moi será aberta. E aplicar un proxecto Scratch de interese para vostede, un xogo, unha interacción, algo artístico, e Reto-se a utilizar calquera número destas pezas de puzzle. E iso pode ser interactivo deste xeito. Ou pode ser algo máis deliberadamente feito para contar unha historia. E, de feito, que é onde imos rematar fóra hoxe, cun exemplo final. Deixe-me ir en perigo no lugar. Déixeme ir adiante e abrir iso e xogar un último programa escrito por un dos seus antecesores, é dicir, que aquí. Bo, aumentar o volume para un regalo. [Música tocando] Narrador: Na seguinte CS50, David convida un voluntario no escenario. DAVID Malan: Para esta demostración, imos ter un voluntario. Quere vir abaixo? Cal é o seu nome? Seguindo adiante.