[REPRODUCIÓN DE VIDEO] [CAR PORTA pechando] [CAR MOTOR DE PARTIDA] [Música tocando] -Mover Dereita xunto en busca de bos momentos e boas novas. Con bos amigos que non pode perder. -Este Podería ser un hábito. Imos bate -Opportunity só estender a man e agarralo. -Si! -xunto Imos nab-lo. -Imos Camiñar engate, autobús ou taxi amarelo-lo. -Dammit. -Estamos En movemento o tempo. -Footloose E extravagante. -Getting Alí é a metade da diversión. Veña compartir comigo. -Estamos En movemento o tempo. -Estamos Indo para compartir a carga. -Nós Non precisa dun mapa para obter este concerto na estrada. Ei Fozzy, quero que Xire á esquerda se chegar a unha bifurcación na estrada. Si, señor. Xire á esquerda na bifurcación na estrada. Xire á esquerda. -Eu Non creo niso. -Cruising Dereita xunto atopamos as luces na estrada. -E O seu camiño ou o meu camiño. -Entón Confiar na miña navegación. Estrelas -Movie con coches chamativos e da vida coa capota inclinada. -Estamos Atacando os grandes montes. -Si, Tempestade é certo. Se é nevar? Non, eu non penso así. -Mover Dereita xunto. -Footloose E extravagante. -Vostede É preparado para o gran momento. -É Preparado para min? -Mover Dereita xunto. Seguindo adiante. Seguindo adiante. Seguindo adiante. -Eu Creo que é mellor encostar. Si, señor. [FIN DE REPRODUCIÓN] [Aplausos] David J. Malan: Este é CS50. E este é o fin de semana 0, pero o inicio dunha fermosa amizade. Estamos tan animado para ser aquí na Universidade de Yale por primeira vez coa nosa SCAZ amigo, e Jason e Andy. Todos os 40 do TF da do CS50 e CA está aquí en Yale. E todos vostedes. E, de feito, probablemente é hora a-- [Aplausos] Así, aínda que a maioría das conferencias estará realmente en Cambridge deste ano, a realidade é que por deseño, e moi deliberadamente en CS50, Creo que estamos chegando ao punto tecnoloxicamente, e pedagoxicamente, onde pode ser un de Ensino Superior experiencia de se involucrar con algunha de material en liña do curso. En realidade, o reality-- e eu creo este philosophically-- é que as charlas non son particularmente medios eficaces para a entrega información relativamente complexo. Certamente máis de hora ademais de longos períodos de tempo. E, de feito cada poucos minutes-- Recordo en college-- vostede zona fóra por un momento, perda algún tema complexo, e se foi moi bonito para os próximos 45 minutos. E a realidade é que se está aquí en New Haven ou Cambridge ou máis aló, a sinxeleza de a capacidade de facer unha pausa e avance rápido, rebobinar, Ligazón para relacionado Recursos, transcricións de busca de texto completo e similares é unha oportunidade que Atrévome a dicir para os nosos alumnos en liña ben ademais de New Haven, ofrécelles unha oportunidade para realmente entender o Material conceptual que introducir en conferencias tanto mellor. Pero en definitiva, CS50, é a experiencia dos estudantes caracterízase por iso, moito máis por conxuntos de problemas do curso, ou proxectos de programación semanal, o seccións do curso liderado polo ensino bolseiros, as horas de expediente nocturno liderado por os asistentes do curso e do ensino bolseiros e, de feito, tales eventos como CS50 enigma Día, Hack a Thon do CS50, CS50 o Fair, xantares semanais, e moito máis. E así se está aquí en Nova Haven, ou sintonizar de lonxe, hoxe, en Cambridge, e imos velo de novo en breve, a realidade é que isto é unha ea mesma clase. E estamos tan animado para estar aquí todos xuntos hoxe. E así, a finais do semestre, sexa aquí ou lonxe, así espero que vista orgullosa, feliz, e quizais cun pouco de alivio, camisa que dá testemuño para ti tomar CS50. Entón, de onde paramos o mércores? Nós demos un ollo pensamento computacional. E iso é o que nós cara destilada ciencia da computación ata, polo menos, por agora. Pero nós destilada que pouco máis na polo menos tres elementos compoñentes. Insumos, entón o que é o problema que estamos intentando resolver? As saídas, o que é a responder estamos esperando para comezar? E a representación de alí. E non imos vivir aquí en despois en binario, ou incluso ASCII, e similares tanto, pero si levar para concedida que podemos representar esta información, porque as partes máis interesante destes problemas non son só o entradas e saídas, pero os algoritmos que van a resolver estes problemas. E pode lembrar de o outro día que tomou un moi tradicional concepto de ollar alguén nun moi grande libro de teléfono, ou máis xeralmente dixitalmente nos días de hoxe, só un conxunto moi grande de datos. A lista de contactos realmente grande, con moitos nomes por orde alfabética. E entendemos que mentres eu podería abordar este problema simplemente usando un lineal approach-- páxina por páxina, ou mesmo dous de nun tempo-- entendemos que o algorithm-- máis intuitiva só unha especie de dividir e conquistar o problema de novo, e de novo, e reducir á metade de novo --- con cada tempo deunos este resultado verde. E é moito máis plana porque suxire que, aínda que este problema fica cada vez maior, como é o caso nos días de hoxe con datos conxuntos e reality-- Facebook e Google resultados de investigación e como-- fai noso algoritmo realizar a mesma eficacia aqueles con maiores picaduras como o fixo, aínda coas pequenas mordidas. Agora que levanta a cuestión, o que podemos resolver efectivamente semellante con este tipo de intuición? Este tipo de división e conquista? Ben, nós poderíamos facer algo como este aquí hoxe. Poderiamos atención. Entón, talvez como 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11-- non vai ser todo o que eficiente. Entón, agarde, escola primaria. 2, 4, 6, 8, 10, 12, 14, 16, 18 e así por diante. Pero poderiamos facer algo mellor? Eu estou seguro que eu non podo facelo por min mesmo. Entón, se vai humor nos para só un momento, trouxo connosco un algoritmo que é só teño tres etapas, pero non se require-- non mente-- todos levantarse, se o faría. Así, con todo de nós agora de pé, paso un deste algoritmo é o seguinte. Levante-se e asignar Se o número 1. Entón, neste momento, literalmente todo nesta sala esperemos que está a pensar en si mesmos, con todo sen xeito, o número 1. Agora paso dous deste algoritmo é vai implicar o seguinte. Paso dous, vincular con alguén de pé, engadir o seu número xuntos, e adoptar a suma como o seu novo número. Verificación de sanidade rápida. O número é todo o mundo a pensar agora? Entón 2, agás, quizais, por unha banda, torpe persoa, solitario. Se temos un número impar de persoas na sala. Así, unha persoa pode ser o número un, todo ben. Pero o paso tres aquí, un de que ten que sentir-se. O outro debe volver á etapa dous, e repetir, se faría. Entón, se aínda de pé, ten que ser entre os que volver á etapa dous. Continúe indo. Algunhas persoas aínda en pé. Entón, se aínda de pé, vincular-se con alguén. Todo ben, diminuíndo para abaixo. Algunhas persoas aínda en pé. Vou axudar en caso necesario. Teña en conta que do takeaway clave aquí é como moito máis rápido do que se trata me conta. Entón imos ver. Podo axudar. Entón, o número son aínda está a pensar? Audiencia: Eu son a 44. DAVID J. Malan: 44, entón dalle sentar. O número que está a pensar? Audiencia: 74. DAVID J. Malan: 74. Todo ben, vai adiante e sentar. Quen máis aínda está de pé? 86. E é que ninguén aínda está de pé? Cara a un número? Oín 67. E, a continuación, na parte superior? 32. Calquera outra persoa aínda está de pé e pensar nun número? Oh, ola. Desculpe. Volvo xa. 42. Alguén? Audiencia: 47. DAVID J. Malan: 47. Ten máis alguén aínda de pé que non foi contado? Así, o número final de persoas nunha sala que ten 497 asentos é-- todos os que son filled-- é 390. Entón, iso é gran. En breve, discutir a noción dun erro nun programa de ordenador. Pero imos volver para que en pouco tempo. Pero, en teoría, o que pode acontecer só agora? Así, aínda que houbese tres grandes pasos para este algoritmo, cada un destes era só unha especie de unha gran operación. E había esta ciclicidade a el en que, se aínda estaban de pé, Vostede mantivo pasando de paso 3-2, paso 3-2, paso 3-2. Pero o que continuou a suceder en cada iteración? Cada ciclo deste loop? O que estaba a suceder noutros lugares na sala? Non só o mesmo, pero o que ocorría coa metade de vós? Sentado. E así alí mentiras ese insight, moi parecido ao exemplo do libro de teléfono, en que, se a metade de vostedes son sentando-se cada vez máis, o problema está comezando con quizais 400 persoas, a continuación, para 200 persoas, de 100 persoas, logo 50 persoas, e así por diante. E, así, reducir gradualmente en teoría para só unha persoa, pensando no valor total de todos. Agora a realidade, algunhas dinámicas sociais, e algúns erros aritméticos pode contribuír a este erro final. Pero, en teoría, mentres aínda estaba contando distancia, tendo varias decenas pasos, ou centos de pasos para contar-vos, para contar unha sala chea de 500 ou máis persoas debería ter moito menos pasos, porque só pode dividirse 500 e 1/2 tantas veces. E así como co teléfono reservar exemplo o outro día, se temos algo logarítmica por así dicir, polo cal se fósemos todos operar ao unísono, e ignorando o erros de suma, que sería de nós alcanzar exactamente este tipo de tempo de execución? Agora, para ser xusto, tipo de erro, en que aproveitado outro recurso. Tendo en conta que non é máis que un de min, I aproveitado centos de ti. Pero pódese dicir que para ser un exemplo de procesamento paralelo, ou un estado de arte moi en voga onde os ordenadores estes días teñen múltiples CPUs, ou máis Tecnicamente, máis múltiples núcleos, e pode realmente facer múltiple cousas á vez, moi parecido contigo todo o que estamos facendo alí, en paralelo. Pero lembre que o que nós Tamén fixo o mércores foi intentar capturar esa intuición e formalizar-lo no código. Algo así como pseudo-código. E, de feito, e eu espero que perdoar, é como 80 graos en aquí. Entón eu vou levar este off para só un pouco. O que eu penso que ía facer é transición agora a unha aplicación na que volvemos a involucrar o público, pero escribir un programa en inglés como sintaxe, coa que a solucionar este problema aquí. [REPRODUCIÓN DE VIDEO] Tempo da marmelada de manteiga de cacahuete -É. A manteiga de cacahuete Tempo de marmelada. A manteiga de cacahuete Tempo de marmelada. Way ya! Way ya! Way ya! Way ya! Agora hai que vaia! Alí vai vostede! Alí vai vostede! Alí vai vostede! Manteiga de cacahuete marmelada! Manteiga de cacahuete marmelada! Manteiga de cacahuete marmelada! Manteiga de cacahuete marmelada! Cacahuete, manteiga de cacahuete marmelada! Manteiga de cacahuete marmelada! Marmelada de cacahuete manteiga cun taco de béisbol. [FIN DE REPRODUCIÓN] DAVID J. Malan: -que vídeo, pero é un pouco viciante, se non un pouco aburrido. Pero para facelo, eu penso que estariamos facer é tentar escribir un programa en conxunto, para o que necesitamos tres voluntarios. Ten que ser cómodo na cámara e internet. Sam, imos cara arriba. Camisa roxa, aquí, imos cara arriba. E a partir de aquí, déixeme ir un pouco máis atrás. Carmesim e camisas azuis, imos cara arriba. Perfecto. Veña agora. Imos cara arriba, imos cara arriba. E cal é o seu nome? Erica. David, pracer en coñece-lo. Se desexa aproveitar esta sede aquí. Este é Sam. Cal é o seu nome? Antonio. Antonio, pracer en coñece-lo. Erica e Sam, se quere ter un asento aquí. O que nós vimos preparados con, como eses caras están descubrindo, é os ingredientes cos que facer un bocadillos de manteiga de cacahuete e marmelada. Agora, isto pode ser algo que se toma moito para concedida. Pero demos cada dos nosos tres voluntarios aqui-- dous voluntarios e Sam aquí, un nacións de pan cada un prato, un coitelo, un pote de marmelada ou compota, e un pote de manteiga de cacahuete. E o obxectivo agora é na man será para estes tres para facer unha manteiga de cacahuete e bocadillos de marmelada. Pero o que imos facer é esperar o audience-- desde todos vostedes certamente sabe como facer este tan ben en reality-- van proporcionar a instrucións paso a paso. O pseudo-código, se quere. Entón, eu vou desempeñar o papel escriba aquí. E eu teño unha pequena lista de cousas a facer, e así como cada un, un de cada vez, chama un potencial instrucional, eu vou anota-la, repetir-la cando é necesario. E entón vostedes van facer a manteiga de cacahuete e marmelada bocadillos só facendo o que se di. Entón, pense de si mesmos como ordenadores. Só podes facer o que dixo. Non suposicións, non hai dúbidas. Só ten que facer iso. Entón, quen quere arriscar a primeira instrución para facer un bocadillos PBJ? Na terraza hai. Audiencia: Abre o saco de pan. DAVID J. Malan: Abre a saco de pan, se quere. Entón imos ver. Imos facer unha iteración, e obter un pouco máis precisa. Boa forma de comezar aínda. Paso dous, alguén máis. Agora ninguén quere ser voluntario. Paso dous, na fronte. Audiencia: Abre o interior saco de pan tamén. DAVID J. Malan: Abre a saco interior do pan ben. Gran, estamos aprendendo. Un pouco máis preciso. Imos comezar este traballo. Si, na camisa verde. Audiencia: [inaudível] DAVID J. Malan: Franxas de pan. Elimina coidadosamente dúas franxas de pan. Iso é bo. Paso catro, outra persoa? Por aquí, si? Audiencia: [inaudível] DAVID J. Malan: Pon o pan no prato. Paso Cinco? Paso cinco, si? Audiencia: [inaudível] DAVID J. Malan: Na parte superior de-- oh, man. Pon a man encima da manteiga de cacahuete. Isto é o que eu vou? Audiencia: É, e desapertar. DAVID J. Malan: correo dicilo de novo. Audiencia: [inaudível] DAVID J. Malan: E poñer o tapa á beira da manteiga de cacahuete. Levemente poñer a man no parte superior de manteiga de cacahuete, e desapertar, e poñer a tapa á beira da manteiga de cacahuete. OK, etapa seis. Paso seis, outra persoa. Si? Audiencia: [inaudível] DAVID J. Malan: Diga iso de novo. Audiencia: Repita o paso cinco novo. DAVID J. Malan: E repita o paso cinco de novo, que vai crear un pouco de un problema Agora, se nós estamos facendo isto paso a paso. Entón agora imos voltar á etapa cinco. Levemente poñer a man na parte superior de manteiga de cacahuete e desapertar e engada a cubrir á beira da manteiga de cacahuete. A continuación, Manteña a manteiga de cacahuete e repita o paso cinco novo. Entón, imos substituír esa loop infinito, se quere. Paso sete, outra persoa. Si, na parte de atrás. Audiencia: [inaudível] DAVID J. Malan: top -En doutro. Audiencia: [inaudível] DAVID J. Malan: No Por outra banda, por outra superior. Quere só chegar aquí? Como podo finalizar a instrución? Qué é o resto da instrución? Audiencia: Ignorando esa parte. DAVID J. Malan: Ignorando esa parte. Imos comezar de novo. Paso sete. Audiencia: [inaudível] DAVID J. Malan: Manteña con opóndose hand-- iso é bo. Este é realmente bo. Audiencia: [inaudível] DAVID J. Malan: E jar-- plástico Audiencia: [inaudível] DAVID J. Malan: E twist-- Audiencia: [inaudível] DAVID J. Malan: Por dous segundos. Basta abrir o pote de manteiga de cacahuete. Eu espero que perdoar. Entón imos supor que chegamos alí. Abre o bote de manteiga de cacahuete. [Aplausos] DAVID J. Malan: Paso oito, imos aínda. Paso oito, si, na parte de atrás. Audiencia: [inaudível] DAVID J. Malan: Good. Paso nove, si? Audiencia: [inaudível] DAVID J. Malan: --out de o pote de manteiga de cacahuete. Correo e que? Audiencia: [inaudível] DAVID J. Malan: E poñer coitelo de volta en manteiga de cacahuete. Paso dez. Paso dez. Audiencia: [inaudível] DAVID J. Malan: Pon o coitelo para fóra, e, a continuación, elimina o selo. Niza. Fóra da manteiga de cacahuete. Todo ben, paso 11. Audiencia: [inaudível] DAVID J. Malan: OK, gris ordenador siga ordenador azul ou vermello. Bo. [Aplausos] DAVID J. Malan: Traia connosco para casa. Máis algunhas etapas. Cal é o próximo? Os pasos 12. Paso 12. Si? Audiencia: Pon unha das franxas de pan delicada nunha das súas mans. DAVID J. Malan: Unha das súas mans. E entón, o paso 13. Si? Audiencia: [inaudível] DAVID J. Malan: Porción -En de pan. Bo. Moi bo. Paso 14, si. Audiencia: Desfacer a etapa 13. DAVID J. Malan: Desfacer a etapa 13. Imos pasar á marmelada. É un programa 100- paso, pero estamos estaban na etapa 15. Si. Audiencia: [inaudível] DAVID J. Malan: 7 a 13 empregando a marmelada, porque aqueles correu tan ben. Repita os pasos 7 a 13, utilizando a xelea. Así, comprender a metade inferior da bote da marmelada cunha man enriba. Por outra banda do outro top, ignorando esta parte, coller coas mans opostas, a tapa do bote de plástico e no fondo, e torcer por dous segundos. A continuación, abra o bote da marmelada. E, finalmente, imos tratar darnos algo comestible. Paso 16. Entón, por que non deixar lo alí. Moitas grazas a nosos tres voluntarios. [Aplausos] Temos algo CS50 bola de estrés para ti. Estaba indo a ser un bocadillos mas-- entón o que foi o punto de, ademais de ter un pouco de diversión co algoritmo? Pero a realidade é que, mesmo cando está programando un ordenador, precisa para ser super necesitas. Tan complexa e intimidante como o seu propio ordenador podería moi ben ser para ti, polo menos cando algo dá mal, a realidade é que é un moi burro dispositivo que foi inventado por nós, seres humanos, e só pode facer un subconxunto do que fazer-- ás veces certamente faster-- pero non sabe como facer suposicións. El non sabe como ser en a mesma lonxitude de onda, como vostede. El só vai facer precisamente o que diga a el. E vai ser alcanzado, quizais, como comezamos escribir código real co conxuntos de problemas primeiras e máis aló, o quão doado é facer un presuposto como un ser humano, e non anticipar eu teño para xestionar Nese caso, é que se de canto, por así dicir, que podería moi ben xurdir, por exemplo, Sam tivo a única jar squeezable de marmelada, mentres todos tiña algúns frascos de vidro como ben. Entón, antes de volver a nosa a atención sobre algúns código real, permita-me presentar o cabezas de curso aquí en Yale. Os nosos amigos SCAZ, Andy, e Jason para vir e dicir Hola. [Aplausos] SCAZ: Nós perdemos Jason temporalmente. Ola de novo, todo o mundo. O meu nome é SCAZ. Teño ensino na Universidade de Yale desde 2001. E cando eu non estou ensinando, miña investigación é na área da robótica e intelixencia artificial. E o anuncio de que teño hoxe é que a partir dun par de semanas, estaremos levando algún material suplementario para CS50 para falar sobre o software de intelixencia. Nós imos falar sobre como lugares como Netflix e Hulu pode recomendar películas que pode querer asistir. Onde nós imos falar sobre como coches-condutor menos realmente funcionar. E nós imos ser capaces de fundamentar isto nos conceptos que está a aprender nesta clase de hoxe. Porque todas estas cousas son construído sobre a mesma base. E iso é o que este serie vai explotar. Entón, eu estou realmente mirando ansioso para ver máis de ti todo, e vai chegar a ver máis desde todos moi pronto. Permítanme, a continuación, introducir Jason. JASON: Hola a todos. O meu nome é Jason. Eu, por desgraza, foi para Harvard como unha graduación. Isto vai cortar fóra do fluxo real. E agora eu estou aquí como profesor de o departamento de ciencia da computación. E eu estou axudando funcionar o curso con SCAZ, David e Andy. Andy: Hey guys. Andy do meu nome. Estou realmente a única Yale estudante no escenario no momento. [Aplausos] Estou en Berkeley College, orixinalmente de Solon, Ohio. E eu era unha desas nenos onde, cando eu vin para Yale, Realmente penso que eu nunca faría ten que ollar para un número cada vez máis. E entón eu entender que precisaba ciencia e QR créditos para posgrao. E así miña primavera calouro, eu tirei unha clase, un CS, introdución CS clase aquí en Yale. Eu era como, é dicir como realmente moi legal. E mentres eu realmente acabou declarando como un dos principais asuntos globais, as habilidades Eu aprendín no CS e programación son así aplicables a calquera campo escolle facer. Eo equipo aquí en Yale, fomos tan duro no traballo para prepararse para vós. E estamos ansiosos para vê- todo na sección e de oficina horas. Entón, si. [Aplausos] DAVID J. Malan: Grazas. Entón, só tes que antes da clase comezou, tivemos unha oportunidade para andar en torno ao campus cun teléfono e tomar algúns selfies en forma de vídeo de verdade miña primeira xira do campus de Yale aquí. E entón pensamos que ía compartir un duro corte de exactamente isto como SCAZ e Andy e Jason levoume ao redor do campus. [REPRODUCIÓN DE VIDEO] [Sirens] -David. -Ben-Benvida a Yale. -Bom Para velo. -nice Para velo. -Podemos Ir nunha xira? -Imos Facer un paseo. -road Turnê. -Este Sinal foi hai moito tempo. -Whah, CS50. -Hurry! Vai, vai, vai, vai. Ten que [inaudível] Harkness Tower. -E Vimos que algunhas veces. [Aplausos] -Olla Para fóra á bicicleta! Ahh! Ola Frank. -Cal É para arriba, rapaces? -Como Está? -Bom Para velo. -Welcome Para o vídeo. Non actúe moi animado. -Eu Amo Silliman. Ahh! -El Foi preto de tres horas desde Jason tiña sorbete e Nutella. Entón temos que deixar de volta ao Silliman para un pouco. -Non É mesmo [inaudível] con todo, só o feito de que teñen aquí é tan incrible. Cara, non hai Nutella en cada comida. -Houve O ano pasado tamén. -Si. -Diga Moito sobre Yale ata agora. Pero eu agora que TD alí. E que se considera fóra do campus. -Aquí Temos arquitectura gótica. O moi coñecido. Temos unha arquitectura máis gótico. E construción, arquitectura máis gótico. Ola. Este é o lugar onde estamos tendo o horario de oficina Martes a xoves en Hogwarts, como [inaudível]. -Está Ben. Isto é todo para o paseo. Estamos en Yale University de Law School, onde A charla de hoxe está a piques de ter lugar. Imos cabeza. [FIN DE REPRODUCIÓN] DAVID J. Malan: E que nos trae aquí agora. Entón, ata agora, temos sido centrados en pseudo-código, o que é esa sintaxe Inglés-like. Non ten ningunha especificación prescrita. É só usa un linguaxe intuitiva se quero explicar o que quere facer. Pero imos comezar agora a transición ao código, como a maioría da xente diría. Pero, máis precisamente, algo coñecido como código fonte. Esta é a linguaxe que os humanos escribir que os ordenadores ultimately-- posiblemente despois dun certo número de steps-- finalmente entende a fin de saber como facer algo. Que viu un reflexo de este quizais o mércores. Este é un exemplo que incrible, underwhelming cando se executa simplemente di "Ola mundo". E está escrito nunha linguaxe chamada C, que é sintaticamente moi semellante para unha morea de outras linguas que pode non saber, pero pode ter oído falar de como Java, e C ++ e Python e Ruby, e similares, e, de feito, imos gastar moito do semestre usando C, e, a continuación, preto do fin do semestre, construíndo sobre el, e introdución de calquera número de outras linguas. Entre eles PHP e JavaScript, unha linguaxe de base de datos chamado SQL. Pero con C, o que nós imos ter ese entendemento desde abaixo exactamente como os ordenadores funcionan, o que pode facer con eles, e como pode resolver problemas todo o máis eficazmente por este estratificación que discutir o mércores, e en pé sobre os ombreiros dos outros. Pero máis sobre iso máis para vir. Hoxe miramos para un ambiente máis simple, pero unha fundamentalmente idéntico ambiente coñecido como Scratch, nosos amigos no MIT Media Lab. Este é un gráfico linguaxe de programación, risco, a través do cal pode arrastrar e soltar cousas que parecer pezas do puzzle que única interlock faise sentido lóxico ou programática para facelo. Pero só pode permitir manter unha conversa sobre todo da mesma programación fundamentos que algúns de vós xa debería saber, que moitos de vostedes quizais non sabe algo sen ter que se atol, francamente, no intelectualmente sintaxe desinteressante do punto e coma, e parénteses, e cita, e semellantes. Todos os cales, a principios diante, son unha distracción para o que son interesantes e ideas xenuinamente útiles. Entón, imos dar unha rápida mirar para o ambiente aquí, para que vostede sabe o que o espera. E, de feito, entre os xogos que pode xogar son algúns programas escritos por propios ex-alumnos do CS50. Un deles, eu mesmo, eu vou ser un agasallo escrita na escola de posgrao para min. Se eu puidese tomar un voluntario que está disposto a xogar un xogo por primeira vez. Claro. Imos cara arriba. Cal é o seu nome? Audiencia: Angela. DAVID J. Malan: Angela, imos cara arriba. Entón Raspadinha foi para fóra por algúns anos. E cando estaba na facultade, Estaba cruz rexistradas no MIT, tendo profesor de Mitchel Resnick de curso sobre tecnoloxías educativas. E nós estabamos entre os primeiros estudantes do mundo para realmente beta Risco de proba. E o meu proxecto era o que Angela xa ofreceu graciosamente a peza chamada Oscartime. Entón, eu estou indo a ir adiante e dobre clic na icona aquí. Abrirá unha programación ambiente que pronto imos mergullo. Eu estou indo a full-screen Lo para Angela, aquí. Eu estou indo a bater o verde bandeira en só un momento. E a continuación, un lote enteiro de lixo vai caer do ceo. E vai usar o rato aquí realmente arrastrar e soltar o lixo en latas de lixo de Oscar. Entón, se quere ir adiante e prema a bandeira verde, o xogo vai comezar. [Música tocando] Oh, eu amo lixo. Algo sucia ou Sombrío ou empoeirados. Algo irregular ou podre, é oxidado. Si, eu amo lixo. Se realmente quere ver algo inútil, mire para isto. Teño aquí unha zapatilla iso é esfarrapado e desgastado. É todo cheo de buratos detén e os lazos son rasgadas. Un agasallo da miña nai o día en que nacín. Eu adoro iso, porque it's-- DAVID J. Malan: --green estes días só estar xogando todo no lixo. E así que un dos Fez-- propio equipo do CS50 Jordan, que pode atender today-- ten, de feito, actualizado este para tempos de hoxe. E entón permitan-me a abrir un remix en vez de Angela. E nós imos xogar iso en vez de algúns momentos onde agora está terá que decidir entre si xogar algo no lixo, ou reciclar-lo ou compostaxe-lo. Polo tanto, hai un pouco de presión sobre vostede para obter este dereito na fronte da súa 392 a 497 compañeiros aquí no hall, se o faría. [REPRODUCIÓN DE VIDEO] [Música tocando] Oh Eu amo lixo. Algo sucia ou Sombrío ou empoeirados. Algo irregular ou podre ou enferrujado. Si, eu amo lixo. Se realmente quere ver algo inútil, mire para isto. Teño aquí unha zapatilla iso é esfarrapado e desgastado. É todo cheo de buratos e os lazos son rasgadas. Un agasallo da miña nai o día en que nacín. Eu quero iso porque é lixo. Oh, eu amo lixo. Algo sucia ou Sombrío, ou empoeirados. Algo irregular ou podre ou enferrujado. Si, eu amo lixo. Aquí está máis algunhas cousas podres. Teño aquí algúns newspaper-- [FIN DE REPRODUCIÓN] DAVID J. Malan: --are realmente compostáveis. Pero gracias a nosa voluntario, Angela. Temos unha bola de estrés para ti aquí tamén. Entón, grazas. Entón, este foi escrito por min. Pero agora, un por un ex-alumno real que aplicou este, que é un xogo. Todo nesta lingua chamada Cero, que veremos en breve pelar as capas de. Pero se tivésemos como-- como sobre outro voluntario? Dereita. Imos cara arriba. Cal é o seu nome? Glance? Tiro. Tiro, imos alí cara arriba. Pracer en coñece lo. Veña deste xeito. Entón este pode ter un tema familiar para algúns de vós. Pero vai ver tamén que pode haber interaccións, en que podería realmente ser a papel do personaxe movendo arredor. Pracer en coñece lo. David. Eu doulle, Pikachu. Instrucións quere sobre para vir na pantalla. Pero en definitiva, vai quere incorporarse o material saborosa, e evitar as bombas e outras cousas. Cos cursores enteiramente. Entón bateu a barra de espazo. -Pikachu. DAVID J. Malan: Catch as cousas á esquerda, non incorporarse as cousas á dereita. [Música tocando] Así, unha última aquí. Se puidésemos ter unha máis voluntario aquí. Pensamos en recrear algo de-- no shirt-- amarelo desde mércores. Cal é o seu nome? Mary, veña ata Mary. E lembro o mércores introducimos a noción de par, e lámpadas binarios. Este é de feito un momento implantación dese mesmo interface que tivemos no iPad coa luz lámpadas, pero aquí rendeu dixital. E en vez de facer un estrés ball-- bo coñecer ti, David. Trouxo algúns luz lámpadas de Cambridge. Se pode, premendo sobre os lámpadas para transformalo los dentro e fóra, vir cara arriba co binario representación de dicir 256. E vai ver no medio, a conta actual. De xeito que un está conectado. Así, o bit máis á esquerda está activada. MARIA: Si, [inaudível] DAVID J. Malan: Ben, polo que temos apenas-- oh. Polo tanto, esta é a columna 128. Entón, nós estamos ata 128. Temos chegar a 256. E pode xogar en e fóra, non é gran cousa. Ou pode bater que 128 máis veces, se queres. Todo ben, bo. 24. Si, achegando. Máis preto! Oh, cal é o problema, entón? Entón, cal é o problema? Entón, o que necesitamos resolver este problema? Entón, necesitamos outro bocado. E iso é perfectamente razoable, en realidade, non? Se desexa contar dende o número 1 a 2 a 3 a 4 a 5, 6, 7, 8, 9 para realmente pasar a 10, é Vai ter un bit adicional. Entón imos realmente rebobinar aquí, e vir cara arriba com-- que foi obviamente deseñado para ser un set up. Non pode facer 256 con só unha lámpada. Así como sobre simplemente o número 50? Número 50. Excelente. Un gran aplauso para Maria e dela tamén. Grazas. Polo tanto, este topic-- intencional como foi-- que vai realmente volver a ocorrer. O maior valor que pode representar con oito bits, ou un byte, é de feito 256. Pero non se comezar contando desde 0, coma nós parecen seguir facendo por todos os bits off. Pero agora imos mergullo na subxacente implantación deste ambiente, e provocar unha separación de algunhas destas ideas. Entón, nun momento en que está a piques de ver unha algúns fundamentos de programación diferentes. A primeira das cales nós chamaremos comunicado. Tipo de verbos, se quere. Accións. Cousas que deben ser feitas. E nun momento en que podes ver bloques que algo así. Diga "Ola mundo", por exemplo. Ou esperar un segundo. Ou xogar Meow son. E de feito o ambiente no que nós imos estar facendo iso chámase risco. E se eu puxar arriba sen risco pre-carga de calquera código real, imos ter un rápido ollar para este interface de usuario, por así dicir. Os controis cos que nos relacionamos. Na esquina superior esquerda do aquí pantalla, por baixo dos menús, temos a fase, por así dicir. Entón Scratch é o que imos chamar Sprite. É un personaxe. E, pode ser controlada pola escribir programas contra el. E vai ser capaz de subir e baixar e á esquerda e á dereita neste ambiente, non só movendo o rato, pero de forma programática. Podo dicirlle andar á dereita, a pé esquerda, arriba, abaixo ou similares. E podo presentar outro sprites ou caracteres ben. De feito, na parte inferior aquí é onde podes ver a lista de sprites. Polo momento, eu só teño un, pero podo crear máis, e eles van aparecer exactamente alí abaixo. Entón, se recuar por un momento, como Oscartime-- por exemplo, Oscar, na parte esquerda, o lixo pode, era un Sprite. E a cousa no medio, o Caixa de Reciclaxe, foi outro Sprite. E o composto bin foi outro Sprite. E cada peza de lixo ou materiais reciclables que foi caendo do ceo é tamén un Sprite, cada un dos cales foi programado individualmente. Como programar? Ben, aquí á dereita banda é a área de scripts. E é aí onde podemos arrastrar e soltar pezas do puzzle. Unha semana, que vai ser onde nós equivalentemente escribir código con máis de un teclado, pero a hoxe vai ser arrastrando e soltando pezas do puzzle, o paletas para os que poden todos pode atopar aquí no medio. Efectivamente, no medio aquí hai un grupo enteiro das categorías de puzzle pezas ou bloques. Un está relacionado ao movemento, ollar, son, unha pluma indo para arriba e abaixo, de datos, control de eventos. Non é así seguro aínda o que todo isto significa, pero vai ver que eles teñen foron ben categorizadas. E para escribir un programa en Cero, imos facer exactamente isto. Vou comezar baixo Eventos e arrastra este aquí. Cando a bandeira verde premendo. Agora, por que un? Ben lembrar que os nosos voluntarios veu á tona, a cousa que eu primeiro ou o que fixen foi facer clic nese verde bandeira na esquina superior dereita. E iso só significa que iniciar o programa. Así, cando este evento ocorre, o que quero facer? Eu estou indo a ir baixo Looks, e eu vou facer "dicir Hola." E eu vou cambiar isto e dicir algo así como "Ola Yale." E agora eu estou indo a zoom fóra, prema na bandeira verde, e listo, eu escribín un programa. Non é todo o que emocionante aínda, pero esta é exactamente onde cada daqueles autor comezou, ambos con Pikachu, eo lámpadas binarios e Oscartime, e tantos outros exemplos. Comeza super sinxelo, e entón comeza a capa, e engadir recursos e funcións. Entón, cales son esas capas vai consistir? Así, ademais de declaracións, imos tamén ten cousas que son pouco máis fancily chamado Boolean Expressions, despois de alguén chamado bool. E unha expresión booleana é simplemente un expresión que é verdadeira ou falsa, si ou non, 1 ou 0. Calquera opostos polares así. É certa ou non. Pero nós tamén estamos indo a ver Os que pode ter esta aparencia. Así, por exemplo, é o rato para abaixo? Son unha especie de preguntas, se quere. O rato é ou abaixo, verdade ou non é, falsa. 1 ou 0, se quixeren, tende a ser o mapeamento. Certo é 1, falsa é 0. Ben que sobre menos que iso? Ou ben, iso é menos que iso? Isto é unha cuestión de sorte. E se pór dous números alí, sexa x será menor que ou Y igual a y, ou maior que Y, pero este bloque veremos, é só vai responder á pregunta, este é menos que iso? Tamén pode ver algo como isto. Tocando punteiros de rato. Así, en cero, pode pedir a cuestión, é o Sprite tocar o punteiro do rato? Noutras palabras, é o que paira cursor sobre a tapa, ou o equivalente? Imos ver as cousas anding xuntos. Podes facer dúas preguntas, e asegúrese de que ambos darlle si ou certas respostas antes tomar a decisión de facer algo. Pero entón como tomar decisións? Ben, temos estas condicions. E vimos isto na nosa exemplo do libro de teléfono. Mirando cara á esquerda ou axeitado para Mike Smith. E na condición, facer algo potencialmente unha expresión booleana é certa. E, de feito, teña en conta as formas agora. Hai ese espazo reservado agora sobre a sobrecarga onde podemos fit-- se eu recuar unha slide-- que forma. Non é o mesmo tamaño. E, de feito, vai ver que Cero redimensiona as cousas de forma dinámica encaixar pezas de puzzle, pero o forma é que é importante. Esa cousa parece que, e de feito é aproximadamente a mesma forma que debe caber dentro. E se queremos facer algo un ou outro camiño, se é entón, temos este puzzle peza en risco tamén. Agora supoñamos que quería facer if, else, ou outra cousa. Noutras palabras, un garfo de tres vías no camiño. Ben, o que pode facer só mirando para iso? Podo tomar esta parte do enigma, e non parece encaixar, pero, de novo, vai Raspadinha o re-size moi ben para nós. Podería comezar a capa isto xuntos. Entón agora eu teño unha de tres vías fork se iso é verdade, facelo. Else if esa outra cousa é verdade, ir por este camiño, entón ir esta outra forma. E en The Muppet da película, o bifurcación na estrada, por así dicir, entre Yale ou Stanford, estaba exactamente aquel, só dúas condicións. Ou ir por este camiño, senón ir por ese camiño. Ben, loops tamén existen na programación. E usamos estes xa en clase e no código pseudocódigo, e, por suposto, aqueles Programas de raspadinhas para sempre. Cero ten esa peza do puzzle que só vai deixar que facer algo para sempre. E ás veces quere facer algo para sempre. Non é necesariamente un erro, é porque quere un reloxo para continuar, ou un xogo para seguir xogando. Ou pode especificar un número finito de pasos, como acontece con este bloque de repetición aquí, que repetirá algo 10 veces. Podemos definir variables, veremos en breve. E con variables, semellante en espírito a álxebra, como x ou y, ou z. É algo simbólico que pode almacenar algún valor, algunha peza de información, que pode querer para lembrar para máis tarde. Mellor exemplo diso pode ser un xogo onde ten unha puntuación, como en Pikachu. Cantos anacos de bolo e outros enfeites colleu? Ben, isto pode ser unha variable chamado puntuación que comeza en 0. E, a continuación, cada vez que pego un parte de bolo ou doces, ou similares, é incrementado. El engádese a un de cada vez. E tendas para que unha variable dun peza de información como esta. Despois, hai arrays, e nós viremos de volta para estes nunha semana ou dúas veces, pero unha matriz é como unha especie de inventario ou unha mochila, dentro de que pode poñer as cousas virtuais. El permite que almacenar máis dunha peza de información. E iso pode ser útil no xogo, é tipo de sendeirismo arredor incorporarse cousas. E quizais quere manter todos estes anacos de bolo arredor, e non só comer Los un despois do outro. E despois hai unha columbófilo construción imos vir a chamadas funcións ou procesos. E aínda que imos máis rápido aquí, imos ver que estes son moi solución natural para problemas que imos atopar. Como os nosos programas comezan quedando maior imos comezar a notar patróns en o código que estamos escribindo, as pezas do puzzle que estamos arrastrando e soltando. E así que entender-se a facer algo novo e de novo, ou peor aínda copia e programación colando código que escribiu, isto pode ser un oportunidade de fatorar o que quere que manteña copia e pegar, e colocando- en algo chamado "función". Pero máis sobre aqueles en gran máis detalles antes de tempo. E despois hai aínda recursos máis extravagantes. Para aqueles de vostedes máis cómodo, ou tomar APCS ou equivalente, Cero, en realidade, soporta cousas como fíos e eventos e moito máis. Entón, entende que ten un límite máximo bastante elevado, aínda que sexa tamén moi amplamente accesible para as persoas que nunca programou antes. Entón, en realidade, imos dar un ollo nun programa simple ou dous. Xa mirou como nós pode dicir Ola co Scratch. Deixe-me ir adiante e abrir unha programiña máis interesante que escribín con antelación. E este seu chamado Pet a Cat. Todos estes programas serán dispoñible na páxina web da CS50. De feito, xa está aí. Entón podes descargar eles, e xogar con eles, e con Conxunto de problemas 0, o que é tamén na páxina web do curso, vostede Recoméndaselle camiñar por estes. E ademais, temos unha número de vídeos pé-through en liña en que eu e O equipo de CS50 verdadeiramente camiñar a través de cada un destes exemplos a unha moito máis ritmo máis lento, unha forwardable moi rápido, ou ritmo rewindable, de modo que pode andar a través destes no seu lecer tamén. Entón aquí está o cero á esquerda. Aquí está o programa á dereita que eu xa prefabricados. Entón deixe-me facer zoom sobre o tema. E podería alguén en inglés, sabendo o que sabe, só a partir de agora como de como funciona a Raspadinha, especie de dicir nunha frase en inglés ou sentenza, o que fai deste programa, ao parecer, facer? Si, na camisa laranxa. Audiencia: [inaudível] DAVID J. Malan: Si, o seu cursor está en risco o gato, tocar un son miando. Pero teña en conta como nos expresamos iso. Hai aparentemente un loop de alí, para sempre. E despois hai unha condición, a expresión se. E colectivamente, o que os quere dicir? Isto significa que este programa só está sempre correndo, e iso sempre esperando e observando e escoitando para eu movo o rato sobre o gato. Xa que cada vez que fago isto, como vostede propón, que vai facer iso. Déixeme comezar o programa. Nada parece ser pasando, pero teña en conta como que destacaron agora nunha liña amarela. Isto significa só que está correndo. E porque hai un forever loop, que aínda está en execución. Entón deixe-me ir meu cursor sobre Raspadinha. [Meow] [Meow] E se eu movelo fóra, [Meow] Agora, para, mais o programa de aínda en execución. [Meow] E así, encantador. [Meow] Entón, imos abrir un pouco máis avanzado exemplo chamado Non pet o gato. E agora imos ver o que acontece aquí. [Meow] miar. Entón é un pouco sobre piloto automático, se quere. --pet o gato. Eu me pregunta por que. [ROAR] [Meow] Entón, como funciona isto? Ben, pode tipo de razón polo que intuitivamente, quizais. Pero imos ollar para o código real. Entón, de novo, cando a bandeira verde é premendo, facelo para sempre. O que quere facer para sempre? Ben, se tocar rato punteiro, a continuación, xoga un son que está aparentemente chamado Lion 5, que está dentro deste proxecto, máis xogar miado de son, e entón esperar dous segundos, para que non está miando sen parar. De feito, pode comezar moi rápido para irritar-se e os seus compañeiros de cuarto. Imos eliminar este bloque. E entender o que é agradable sobre Raspadinha. As cousas simplemente tipo de arrastre e soltar e intertravamento. Entón, de novo, ela crece para cubrir o que quere. Pero se eu eliminar iso, e, a continuación, xogo da batida, [COMPUTER blip SOUND] -É Tipo de tropezar en si, porque é literalmente facendo o que estou dicindo. Está dicindo para sempre xogar ese son, pero Non estou dándolle a oportunidade de rematar. E para que sería un erro. E é por iso que tivemos esta cousa aquí agora. Entón imos realmente comezar a partir scratch-- especie de xogo de palabras lixeiramente intended-- en que temos agora o movemento gato. Entón, eu vou facelo en tempo real. Eu estou indo a facer zoom aquí, só para me fale sobre eventos. E bandeira verde premendo. E hai outras formas para iniciar os scripts. Estamos indo para mantelo simple aquí. E agora eu estou indo a ir adiante e ir baixo control. E, de novo, se esquecer de onde as cousas están, basta con premer en torno, e, finalmente, atopalos de novo. Entón, quero sempre facer o que? Quero usar o bloque de movemento Sei que hai, mover 10 pasos. Entón, imos ver que pasa aquí se eu xogar este xogo. Afortunadamente non ir lonxe de máis. Podo aínda tipo de agarralo lo polo rabo e puxa-lo de volta. Pero o programa aínda está en execución, polo que é tipo de loitar contra min. Pero sería moito legal se eu condicional solucionar isto no código. Porque este é não-- de feito, este é realmente non un xogo divertido para calquera persoa de calquera idade. Entón, imos tentar corrixir isto ter algún tipo de condicións. Entón, eu estou indo a ir en virtude De control e, a continuación, se. Gústame esta idea. Entón, despois de mover 10 pasos, se-- déixeme sentir onde eu son. Eu estou indo a ir baixo Sensing, e entón parece que podo ir aquí. remar para os xogos de forma. Tamaño non fai, pero é vai medrar para cubrir. E agora este é un pequeno menú. E agora rato pointer-- non quere o rato, quero a bordo. Entón Scratch é intelixente dabondo para saber cando un Sprite está tocando a bordo. O que quero que realmente fai? Deixe-me ir adiante e cambiar movemento. Vostede sabe o que? Eu estou indo a telo virar. Así, a 15 graos non é realmente me vai axudar. Quero que Xire se e ir por outro camiño. Entón, imos ver que pasa aquí, se eu acertar Xoga agora. OK, unha especie de idiota mirando, pero está facendo exactamente o que eu dixen. E está xirando todo o sprite. Agora non é que podo fixar iso. E eu non sabía como para solucionar isto en primeiro lugar. Eu medio que tiven que futz arredor e ver o mellor xeito de facelo. Pero se eu for a-- vexamos, movemento. Oh, eu atope este. De feito, de axuste da rotación Style. Esquerda, dereita, ou non xire, ou todos arredor. E parece que é o que quero. E eu vou poñer este non é o meu loop, porque eu non teño definir o modelo de rotación múltiples veces. Vou poñelas na parte superior de este programa para ser definido de novo, e, a continuación, lembra. E agora eu vou tentar iso de novo. Deixe-me deixar o programa. E agora que fixa ese erro. Entón, eu estou mellorando de forma iterativa enriba deste. O programa está a recibir un pouco máis complexa e maior, pero eu estou tomando pasos de bebé por así dicir, e pequenas mordidas fóra do problema para obtelo cada vez mellor. Pero iso, tamén, é unha especie de coxo. Vostede sabe o que? Será que pedir a alguén cun realmente bo, voz asustado quere vir cara arriba? Alguén cunha voz. Uh, si. Imos cara arriba. Coa camisa verde. Así, verifícase aí é outra diversión cousas, estética e sons parecidos. Aquí está o miado. Eu prema no separador Sons. [Meow] Hai o miado. [Meow] [Meow] [Meow] --actually algo marca da nosa propia aquí. Entón, imos facer exactamente isto. En vez de usar este son gato, imos dalle aquí, e cal é o seu nome? Nick, pracer en coñece-lo. É David. Entón, nun momento, eu vou para acertar o botón Record. E se pode só berrar para o portátil, "ouch", como se só orientado á parede, que será moi apreciado. 1, 2. NICK: Ouch! DAVID J. Malan: Awesome. E agora pode facer un pouco de edición aquí. Vai se librar das partes tranquilos. E eu creo que iso é bo. Moitas grazas. NICK: Pracer. DAVID J. Malan: Teño só renomeou "ouch" pero agora eu vou volver meus scripts. E noten hai de feito son aquí. E eu estou indo a ir adiante e reproducir o son ouch, e eu vou facer iso está tocando só nos bordos. E entón eu vou telo virar. Entón, imos ver que pasa aquí. Imos pantalla completa. [REPRODUCIÓN DE VIDEO] -Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! Ouch! [FIN DE REPRODUCIÓN] DAVID J. Malan: Entón entender que estamos quedando un pouco de sorte. Eu estou indo a telo de movemento como 100 chanzos de cada vez. O efecto do que agora vai para ser-- [COMPUTADOR glitch SOUND] Entón, dentro da razón. Así, a oportunidade de refinar esta aínda máis se realmente queremos. Entón agora imos introducir outro concepto. Para me deixar ir nunha chamada Contando ovellas e uso algo chamado dunha variable. Este é un carneiro pequeno encantador, e I cambiou o seu traxe por así dicir. Así, aínda que o estándar é unha gato, pode subir, pode debuxar, pode facer calquera número de caracteres no seu sprite. Aquí está o programa que se vai facer o que en inglés? Baseado novo en exactamente o que sabe agora. O que este programa fai? Si, vai contar. Un número cada vez. Temos visto ten este contador set. Non sei o que é iso, pero quizais sexa unha variable. É só un recipiente, x ou y. Pero o contador de palabras é máis descritivo que x ou y do matemático. Así, podemos usar palabras en inglés para as cousas. Para sempre, só significa seguir facendo iso. Diga balcón. Agora que proviña iso? Ben, resulta que contador é unha variable. Polo tanto, é só un puzzle peza que eu creei con antelación. E aínda que isto ocorre non ser igual aquí, normalmente diría algo así como Ola aquí. Tamén pode arrastrar unha variable de xeito que é o que se está dixo. Entón eu esperar por un segundo, eu cambiar o contador por un, incrementa-lo engadindo un. Así que o efecto neto é esta ovella conta encantador. Aínda que está contando a si mesmo. Agora é moi rápido se ve aburrido porque vai facelo verdadeiramente para sempre, pero iso é o que o O proxecto de programa prescribe. Imos agora tratar outro exemplo que utiliza unha variable. Este chamado Hi Hi Hi, que non queda aburrido rapidamente. Agora este ten dous scripts. E entón, de novo, estamos dando pasos de bebé. Comezamos con algo super pequeno, engade a el, engadido a el. Agora quero facer algo aínda máis dinámico, entón eu quero estar escoitando para dúas cousas diferentes á vez. Así, á esquerda, cando bandeira verde é premendo, Eu definir unha variable que escribín con antelación chamado silenciado. E eu arbitrariamente definir como 0. Entón Raspadinha non ten certa e falso, pero ten 0 e 1. Entón eu podo achegar esa mesma idea. E, a continuación, sempre, se a barra de espazo é presionado, a continuación, estableza a variable a 0. Ou arrepentido. O espazo é presionada, e se silenciado, a variable, é 0, a continuación, definir silenciado a 1, máis silenciado definir a 0. Isto parece unha especie de como estamos só facendo e desfacendo traballo. Pero o que é o efecto? Cada vez que eu bater a barra de espazo, o que pasa co meu variable silenciado chamado, loxicamente? Tipo de queda invertida. Cambia de 0 a 1, ou 1-0. Por iso, tomou a poucas cuadras para expresar iso, pero todo Eu estou facendo está alternando o estado de esta variable de 0 ou 1, ou 0 ou 1 cada vez que eu bater a barra de espazo. Agora aquí, o que está facendo isto? Para sempre, se silenciado é 0, polo que se silenciado é falsa. Entón, se non está silenciado, é a Semántica alí, xogar león mar son, e pensar hi hi hi para dous segundo, agarde dous segundos. Entón, observe agora estes guións son efectivamente indo para executar en paralelo para que se poida estar escoitando a acción, o outro para tomar unha decisión con base nesa acción. E pode facelo para sempre. [LEÓN DE MAR Barking] [LEÓN DE MAR Barking] Vai facelo para sempre e [LEÓN DE MAR Barking] como eu acaba de facer. E agora que aínda está en execución pero eu teño "silenciado" o xogo. [LEÓN DE MAR Barking] E iso é todo isto cara fai agora tamén. Imos abrir outro exemplo aquí. Déixeme entrar Eventos, e agora este encantador tamén. Pero teña en conta que ten dous sprites. Polo tanto, non só dous scripts con un Sprite, pero dous sprites. E se eu premer sobre o individuo azul como eu xa ten, eu vexo que como un programa Se aquí que, literalmente, só di este, cando recibir un evento, dicir "Polo" por dous segundos. Entón, se xa xogou en unha piscina, o xogo Marco Polo, se o script laranxa cara é calquera indicación, aparentemente cada vez que eu bater a barra de espazo, o que é a cara laranxa vai facer? El vai dicir "Marco". E entón que é un novo bloque. Non vimos isto antes, pero difundir un acontecemento. E eu podería chamalo nada evento que queremos. Nós imos voltar a este quizais antes de tempo. Pero a transmitir un evento é un xeito para unha entidade gráfica para falar con outro por esencialmente unha mensaxe de pasalo. Non é unha mensaxe que ve. Non é algo visual. É unha especie de un mensaje do ordenador que o outro cara está agardando as. Porque, en realidade, a cara azul, recordo non ten bandeira verde cando premendo. En vez diso, ten, cando recibir un evento. Cando se entregou esta nota en clase, por así dicir, debe dicir "Polo". E así, o efecto neto é que cando eu bateu a bandeira verde, nada acontece. Pero cando bati a barra de espazo, el di "Marco", el responde con "Polo". Pero a única entidade gráfica que eu son interactuar con é o laranxa. Polo tanto, esta é unha forma de tipo de pasar mensaxes entre sprites e te-los comunicar un co outro. Agora imos ollar a unha última un aquí chamados segmentos. E entender iso por xoga-lo. Entón, estas son dúas sprites. O paxaro é especie de voar arredor. Está saltando. Non hai "ouch" pero mesma idea. Pero o gato parece moi intelixente. Qué é o gato aparentemente facendo? E esperar por el. Qué é o gato aparentemente facendo? Non é só ir. Está seguindo o paxaro. E así, ao parecer, hai un xeito cunha combinación de bloques de aquí- e imos ollar para o gato rápido real. Para sempre, se tocar paxaro, a continuación, xoga o son Lion 4, o que quere que sexa. Ouvimo-lo unha vez. Se non, apuntan paxaro, e dar un paso. Agora, o feito de que é un paso é o que dá o paxaro un pouco de vantaxe inicialmente, pero en vez facer esta 10, por exemplo, tan que cada iteración do bucle de que é movendo 10 pasos de tempo. Entón, máis espazo. Imos ver que pasa a continuación. [LION ROAR] Non todo o que moito mellor. Entón agora imos tratar de mellorar sobre estes un pouco de forma iterativa, e volver para que noción dunha función. E, de feito un dos fundamentais takeaways do deseño de clase. Non só escribir programas que funcionen e que son correctos, pero están ben deseñados. E deseño é moito máis subjetivo, e vai estar mellor para el ao longo do tempo. Pero imos dar algúns pasos de bebé na dirección comezando cun programa que funciona, absolutamente, pero non é moi bo. Non é moi ben escrito. Entón aquí está un programa que fai isto. Tos, tose, tose. O que o programa se parece? Parece correcto para min. É dicir sofá por un segundo, el espera. A continuación, el di que de novo, el espera. A continuación, el di que de novo, el espera. E, a continuación, o programa implicitamente remata, porque non hai loop. Pero por que este é un programa mal escrito? Aínda que nunca programado antes? Como, o que esfrega o forma incorrecta, se cadra aquí? Si? Audiencia: [inaudível] DAVID J. Malan: Exactamente. Está repetindo Se unha e outra vez. E, literalmente, Copiei e colei dous deses bloques de novo e de novo. E iso é o tipo de sanidade comprobar que ten que facer. Agarde un minuto. Debo realmente estar facendo iso? Entón o que é iso o que está a solución obvia, quizais? Ter algún tipo de loop. E eu non lembro ben que a peza do puzzle é, pero se eu ollar para o próxima iteración aquí, de feito, non hai só o loop para sempre, hai algúns repetir varias veces. E así eu especifiquei tres. E agora entender o que máis axustado, como moito máis sucinta este programa é. E nun certo sentido, como moito máis sostible. Se eu queira cambiar a palabra de tose a outra cousa, como achoo, como se estivese espirros. Entón eu mudalo nun lugar, e non tres. Polo tanto, esta xa se sente como un pouco mellor deseño. Déixeme tose vez aberto 2, o noso terceiro exemplo. Observe como un científico da computación, Comezar a contar a 0, tipicamente. Agora, iso parece un pouco asustado no en primeiro lugar, pero o efecto é o mesmo. Tos, tose, tose. Pero o que parece ser fundamentalmente nova na parte superior do programa? Eu eliminar a palabra. Eu eliminar a espera. E o que eu teño conectado no seu canto? Unha función. Un bloque de tose. Quero dicir, a verdade, paréceme tipo de un idiota se eu non fixese só comezar co bloque que é aparentemente chamado "tose", se iso é todo o que quero que faga. Pero iso non existe no scratch. En vez eu fun a unha no paleta chamada máis bloques aquí, e eu arrastrar esta gran cousa roxa aquí que me permite definir unha función. É, esencialmente, déixame crear o meu propio puzzle peza que pode ser chamado de calquera cousa que eu quere, que pode facer o que queira, pero dálle un nome. Tanto me dá unha nova, parte do enigma vermello que agora fai todo o que eu diga a el para facer. Polo tanto, esta peza roxa aquí corresponde a este aquí. E o que fai? Di tose por un segundo, e entón el espera. E agora eu teño a sorte de creado miña propia parte do enigma feito a pedido, de xeito que se comporta exactamente do mesmo xeito. Entón eu podo seguir facendo iso. E, de feito, non vai ser máis e máis oportunidades para a modularização, e para capas, complexidade enriba do outro. Pero esa idea básica, de feito en problema, dixo 0. O que vai ser reto que facer é facer a descarga do risco, ou só usalo na web, e só divertirse con el. Nós imos dar-lle un conxunto de necesidades, tendo un son, e un certo número de pezas do puzzle. Pero vai facer exactamente isto. E vai entender que está indo quere dar algúns pasos de bebé, inicialmente, ata que o seu programa recibe máis e máis complexa. Pero tendo en conta que é o mellor maneira que eu podería facelo? Pode evitar este instinto quizais, para copiar e pegar? Pero antes do Conxunto de problemas 0, e antes de pechar, penso que ía levar ata un máis voluntario se puidésemos, para un programa final que é quizais o máis montaxe de todo, dado lugar de hoxe. Imos cara a abaixo. Si. Si. Cal é o seu nome? Uh-oh. Iso é OK. Ambos veñen abaixo. E eu teño que tratar con isto de algunha maneira dentro dese próximos dez segundos. Entón veña abaixo. Imos cara a abaixo. Déixeme vir aquí enriba. Imos alí. Todo ben. Imos ver aquí. Entón, observe ben rápido aquí, se desexa vir enriba. Nós imos facer dúas roldas de agasallo. E cal é o seu nome? Sabrina: Sabrina. DAVID J. Malan: Sabrina e? Ying GEI: Ying Gee. DAVID J. Malan: Ying Gee. Pracer en coñece-los. David. Así, o noso último exemplo é aquí O xogo máis difícil do chamado Ivy. E por que non temos que facer Nivel 1 e Nivel 2 fai. E imos ver como lonxe ademais de que realmente ir. Escrito por un estudante o ano pasado, remixada por min de xeito que este ía sobre ben en New Haven. E douvos un xogo que vai involucrar movendo as frechas para arriba e abaixo, e quedando Yale para a liña de chegada. Aquí imos nós. [REPRODUCIÓN DE VIDEO] [MUSIC - NFL ON FOX música tema] [MUSIC - MC Hammer, "U PODE NON TOQUE  ESTE "] -u Non pode tocar iso. U non pode tocar neste. Non pode tocar nisto. Meu, meu, meu, a miña música me bate tan duro, faime dicir, oh, meu señor. Grazas por me bendicir cun mente para rimar e dous pés hype. Isto é bo cando vostede sabe que está abaixo. A homeboy narcótico super do Oaktown. E eu son coñecido como tal e esta unha batida uh, non pode tocar. Eu dixen que homeboy U non pode tocar neste. Si, é así que nós estamos vivindo e vostede sabe U non pode tocar neste. Olle nos meus ollos, cara. U non pode tocar neste. Yo, déixeme rebentar as letras de funky. U non pode tocar neste. Novos patadas e pantalóns frescas. Lle gusta diso e vostede sabe que quere bailar. Entón, saír do seu asento e estar unha nena mosca e incorporarse este ritmo. Mentres está rodando en espera bombear un pouco bit e que saiban o que está pasando. Así. Así. Frío nunha misión tan tire de volta. Deixe-os saber que é máis e este é un movemento uh non pode tocar. Eu, eu dixen que U non pode tocar neste. Por que parado alí home? U non pode tocar neste. Eu, soar na escola campá, otários. U non pode tocar neste. Déame unha canción, un ritmo tornando- suar é iso que eu estou dándolles agora. Eles saben que cando fala sobre o Martelo fala sobre un show que é sensacionalistas. E cantantes son axustado suando así paso-los un micrófono. Ou unha cinta para saber o que que vai tomar e agora vai queimar as cartas. Lexítimos tanto traballo duro ou así como pode saír. Porque sabe que U non pode tocar neste. U non pode tocar neste. Rompe-lo para abaixo. Pare. Tempo do martelo. Vaia co fluxo nunha rolda se non pode moverse para este entón probablemente están mortos. Entón balance súa man no o aire [inaudível] É dicir, para unha danza ao gañador iso e está indo para obter máis fino. Move desprace o garupa só para un minuto, imos todos facer a colisión. Si. U non pode tocar neste. U non pode tocar neste. É mellor que sensacionalismo neno U non pode tocar neste. Anel de volta da escola campá in. Rompe-lo para abaixo. Pare. Tempo do martelo DAVID J. Malan: Isto é todo para CS50! Moitas grazas por unirse a nós! Vexo vostede por aí. [FIN DE REPRODUCIÓN] [REPRODUCIÓN DE VIDEO] [MUSIC - "Seinfeld" música-tema] Ei David. Ei, David. Como vai isto? -Bom Traballo, hoxe. -Entón Xa penso sobre o que vai facer para as bromas fóra? Non, eu non teño nada. -O Se-- o que se esta é a broma? -Como, Desembalar carrinhos? Uh-huh. Vostede sabe, é sobre nada. -Entón Gústalle, ningunha historia, ningún conflito, ningunha resolución. Non estou entendendo. Sobre o que é entón? -Nada. -Entón Temos a broma é sobre nada, e non temos actores. Quen vai estar nesa? -Non, Non, non. Quero dicir, eu vou estar nel. -Vostede Vai estar nel? -Si! A xente está sempre dicindo me que eu son un personaxe. Ben, quero dicir, é verdade. Pero quen máis vai estar nel? Non pode simplemente ser ti. -Vostede Vai estar nel, Gavin, Dan, Dan, Colton, Z'Myla, Alysse, Doug, David, todo o mundo. -Entón É sobre todo, e todo o mundo está nel? -absolutamente Nada. -Isto É ridículo.