[MÚSICA DE JOGO] -Tudo Bem! -É CS50. -É CS50. -É CS50. [MUSIC - IGGY azaléia, "fancy"] -Meu Memória favorita do CS50 Foi quando eu fui para Quebra-Cabeça Dia. -Provavelmente Apenas o tempo passou a trabalhar na série de exercícios com os meus amigos e pessoas que Wold eventualmente tornar-se meus blockmates. -Meu Melhor memória de CS50 é o Hackathon. -The CS50 Hackathon. -Hackathon. -Hackathon. -Hackathon. -The Hackathon -Rob Bowden. Apenas tudo sobre ele. [MUSIC - IGGY azaléia, "fancy"] -Meu Memória favorita é quando eu estava no palco e fiz o papel de prestígio de um nó de [? no Linked?] [? Lista. ?] -Quando Todos nós temos espaço livre Dropbox e David era como, procure em seus lugares. E foi assim, espaço para todos! [MUSIC - IGGY azaléia, "fancy"] Conselho -Meu para qualquer estudante de entrada seria ser realmente trabalhar em P-sets com os amigos. Horas -Office é muito seu amigo. -Certifique Ao máximo a sua experiência e atender a tantas pessoas quanto possível. -Não Tenha medo de pedir ajuda. -Comece Os P-sets no início da semana. -I Acho que a maior coisa é tirar proveito de todos os recursos que CS50 tem. -Vá Para o horário de expediente no início da semana. -definitivamente Assistir aos shorts. -Não Procrastinar em seu P-sets. -Certifique-Se encontrar um grande grupo de pessoas para trabalhar na P-sets com. Você pode ter um monte de diversão e começar o trabalho feito em conjunto. Não sejas medo de empurrar-se. Vá para a edição de hackers às vezes. Coisas -Write no papel antes Você sempre toca seu computador. -CS50 É realmente grande em fornecendo maneiras de obter ajuda. -Meu Um conselho é dormir. Alguém já disse isso? O sono, com certeza. É fácil não fazer, mas você tem que fazê-lo, eu acho. -I Diria realmente estar preparado mentalmente porque você vai adorar. [MUSIC - IGGY azaléia, "fancy"] -É CS50. -É CS50. -É CS50. [MUSIC - IGGY azaléia, "fancy"] -É CS50. [Aplausos] DAVID J. MALAN: Então este é CS50 e este é o fim de semana 0. E isso era apenas um de pessoal do CS50 que esperam por você, não só em seções e as horas de expediente, mas, Além disso, neste fim de semana em CS50 enigma Day. Que, de novo, não é tudo sobre a programação. Na verdade, espera-se que você não terá que programar nada, mas sim resolver problemas usando inteligência e amigos ao seu lado. Nós estaremos unidos por alguns de nossos amigos da Facebook-- se você se registrar aqui-- que para os últimos anos, tem realmente sido escrito esses desafios com a gente. E assim, eles vão ser os únicos em última análise, em execução enigma Day. E assim, você será desafiado com precisão os tipos de coisas e os problemas que as pessoas em Facebook gosta de pensar. Então, que é amanhã. Registre-se no cs50.harvard.edu/register. Agora uma palavra sobre um casal de pessoal, em particular. Isso aqui é Ansel Duff, que é na verdade um dos co-autores destes binário lâmpadas que vimos na quarta-feira, além do CS50 próprio Dan Bradley. Ansel Duff também era um ex- calouro orientando meu 3 anos atrás e ele, na verdade, até mesmo construíram esta tribuna. Ele passou a fazer ciências da engenharia e muito mais. Agora, a foto dele aqui é realmente Ansel há 3 anos no CS50 Hackathon quando ele emprestou um de nossos balões, preso a seu laptop, e, para o próximo dia 12 um estranho horas, com foco em seu projeto final, pausas apenas para abrir sacos de doces no Hackathon. Mas ele continuou, mais recentemente, a passar este verão passado com a gente, desde CS50 para o seu pessoal, e Agora os estudantes neste semestre, tem a sua própria impressora 3D. E em poucas palavras a impressoras 3D é um dispositivo que parece bastante como este. Você preenchê-lo com um carretel de plástico que é derretido pelo dispositivo e você construir coisas literalmente do nada. Muito parecido com uma impressora jato de tinta, você começa cuspindo pontinhos de plástico que em conjunto formam a formar objectos inteiros. E assim Ansel por exemplo, mais cedo neste verão, tem um iPhone 5 e decidiu que ele realmente queria para sustentá-lo em sua mesa. Mas ele não queria sair e comprar algo da loja da Apple ou similar, para que ele sentou-se e começou a desenhar algo. Ele tomou algumas medidas como para a espessura e quão grande era seu iPhone, ele tirou esta imagem aqui, ele decidiu que queria para ter uma inclinação de 75 graus como ele estava olhando para ele em sua mesa lá. Ele então se virou isso, usando software, em um modelo 3D CAD que parecia um pouco algo como isto. E então ele passou, em última análise, na verdade, criá-lo. Então, na verdade, se algum de vocês aqui, talvez em uma linha que eu possa jogar para, ter an-- não temos gente com iPhone 5, e aqui temos mais dois. Agora, para não ficar atrás, CS50 própria Cheng Gong também estabelecido neste verão para construir algumas coisas e, na verdade, por motivos que ainda estão claro, tem sido lentamente imprimindo um exército de elefantes com articulando os braços e troncos. Um casal de que são realmente aqui se alguém iria agora como-- um elefante. Tudo certo,. mas o que Cheng também fez para nós é que ele muito gentilmente configurar uma câmera porque aquele elefante, acredite ou não, leva cerca de dois e um meia hora de imprimir. Mesmo o suporte iPhone levou uma hora e meia para imprimir. E o que Cheng foi em frente e fez foi constituída uma boa câmera na frente desta impressora 3D, filmado por uma hora e meio como o projeto do Ansel impresso. Nós revestiu alguns sexy música a ele, de modo para te dar esta a olhar a forma como a impressão 3D funciona. E mesmo que esta é, na verdade, em plástico, perceber que se trata de uma área de interesse acadêmico, há pessoas, entre los Jennifer Lewis aqui na Escola de Engenharia, que são, na verdade trabalhando em impressão 3D objetos de plástico. Mas mesmo, cada vez mais, materiais biológicos para resolver problemas fisiológicos para seres humanos. Mas aqui é um pouco algo do CS50. [LOUD MECÂNICA RUÍDOS] DAVID J. MALAN: Não soa qualquer coisa assim, na realidade, mas é muito mais frio para vê-lo a essa velocidade, e com esse som. Agora, na quarta-feira, como fizemos primeiro chegou aqui? Começamos a conversar sobre computador ciência e perguntou o que era. E é sobre uma série de coisas, e há tantas direções diferentes em que você pode ir depois de um curso como CS50. Na verdade, se você pegou um desses guias não oficiais CS para fora, o livreto que nós fornecemos, se você é pensando em tomar apenas CS50, ou talvez fazer um secundário, ou talvez até mesmo concentrando no CS, não folhear isso. E você vai ver um diagrama para o fim que mostra os muitos sentidos diferentes CS em que você pode ir para fora em. Mas por hoje, vamos nos concentrar, mais uma vez, em realmente uma das vistas fundamentais, talvez, onde você tem entradas para os problemas, você tem saídas problemas, e você tem algoritmos com a qual criar essas saídas desses insumos. E um exemplo deste tipo, era de Naturalmente, este livro de telefone aqui. E utilizou-se como um exemplo para ir através de um algoritmo que estava correta. E depois outro foi correto, mas um pouco mais rápido. E então um outro que estava um pouco mais dramático, mas fundamentalmente mais rápido. Certo, isso, livro de telefone alegou tinha cerca de 1.000 páginas. E quantas vezes eu tenho rasgar o livro de telefone pela metade para encontrar alguém como Mike Smith, máximo, em 1000 página do livro? Assim, 10 mais ou menos. E assim, uma vez rasguei essa coisa em metade, ou simplesmente, mais madura, dividida ao meio, só é 10 páginas em 1.000. E se você extrapolar, um pouco irreal para uma agenda telefônica, mas se este livro telefone tinha cerca de 4 bilhões de páginas em que, de forma tão completa pesado fisicamente, quantos vezes você dividir um 4 bilhões lista telefônica página pela metade? Então é na verdade 32, mais ou menos. E assim, apenas 32 vezes, fora de 4 bilhões de páginas, pode você encontrar alguém como Mike Smith. E isso é eficiência. Isso é um bom algoritmo, ouso dizer. Mas, então, mudou-se de que para tentar formalizar isso. E eu propus este código pseudocódigo. Código Pseudocódigo não é nada formal. Não é algo que você memorizar. É apenas algo que você expressa bastante intuitiva usando Inglês, ou qualquer linguagem de verdade, que transmite as suas ideias de forma sucinta. Mas o que é importante sobre código pseudocódigo é que você tentar antecipar todas as possíveis casos que possam acontecer. E, de fato, neste pseudocódigo código, havia realmente três casos cada vez que eu dividido o livro de telefone. Mike pode ser para a esquerda. Mike pode ser para a direita. Ou ele pode estar certo na página em que estou. Ou um quarto caso esquina, por assim dizer. Um cenário ruim pode ser um which-- o que está acontecendo? Mike não é só em o livro de telefone em todos. E quando os programas crash-- quando Mac e software para PC que vocês correr em seus computadores, por vezes, trava ou fecha inesperadamente, que geralmente significa que alguns programador, algum ser humano como você em breve, só asneira e cometido algum erro. Talvez não antecipar que talvez não há Mike Smith no livro de telefone. E se você realmente não escrevo código para lidar com situações como essa, geralmente imprevisível coisas podem acontecer. A máquina pode congelar. Ele pode reiniciar. O programa pode parar. E assim todas estas estupidezes que você pode que encontrou em sua real vida apenas usando computadores, será cada vez mais só explicada por essa intuição e essa compreensão do que é realmente está acontecendo debaixo do capô. Agora vamos tentar dar uma olhada em um problema mais geral. Ao invés de tomar atendimento em um lugar como este, o que seria muito lento para fazer um, dois, três, quatro. Ou talvez dois, quatro, seis, oito. Vamos nos concentrar, em vez disso, em como podemos formalizar o algoritmo do processo por que poderíamos ter atendimento. E ao longo do caminho, vamos começar aplicar alguma nomenclatura que usaremos hoje, quando, na verdade, começar a programar em uma linguagem. Então, eu dou-lhe agora, um vídeo quatro minutos que estamos juntos com nossos amigos de TED, a organização. Pelo qual nos forneceu um roteiro e trouxeram seus animadores de suportar, e realmente criou um 2D animação do que um algoritmo é. Se pudéssemos diminuir as luzes. [MÚSICA DE JOGO] NARRADOR: O que é um algoritmo? Em ciência da computação, um algoritmo é um conjunto instruções de resolver algum problema passo-a-passo. Tipicamente, os algoritmos são executado por computadores, mas nós seres humanos temos algoritmos também. Por exemplo, como é que você vai fazer sobre a contagem o número de pessoas em uma sala? Bem, se você é como eu, você provavelmente apontar em cada pessoa um de cada vez e contar-se a partir de zero. Um, dois, três, quatro, e assim por diante. Bem, isso é um algoritmo. Na verdade, vamos tentar expressá-lo um pouco mais formalmente no código pseudocódigo. Sintaxe Inglês-assim assemelha-se a uma linguagem de programação. Seja n igual a 0. Para cada pessoa, em quarto, definir n igual a n + 1. Como interpretar o pseudocódigo? Bem uma linha declara: por assim dizer, uma variável chamado n e inicializa seu valor para 0 Isso só significa que na início do nosso algoritmo, a coisa com a qual estamos contagem tem um valor de 0. Afinal, antes de começar a contar não ter contado nada ainda. Chamar essa variável n é apenas uma convenção. Eu poderia tê-lo chamado mais nada. Agora linha dois demarks o início de um ciclo, uma seqüência de passos que repetir um determinado número de vezes. Assim, no nosso exemplo, o passo que estamos tomada está contando as pessoas na sala. Sob linha dois é a linha três, que descreve exatamente como nós vamos sobre a contagem. O recuo que implica é linha de três que vai repetir. Assim, com o código de pseudocódigo é dizendo é que depois de iniciar a 0 para cada pessoa no quarto que vai aumentar n por 1 Agora é este algoritmo correto? Bem, vamos bater nele um pouco. Será que funciona se houver duas pessoas na sala? Vamos ver. Em uma linha de nós inicializar n a 0. Para cada uma das duas pessoas, nós então incrementar n em 1. Assim, na primeira viagem através do loop, nós atualizamos n 0-1. Na segunda viagem através desse mesmo loop, nós atualizamos n 1-2. E assim, por este algoritmo de final, n é 2, o qual na verdade, corresponde ao número de de pessoas na sala. Por enquanto, tudo bem. Que tal um caso canto embora? Suponha que existam 0 pessoas no quarto-- além de mim, quem é fazendo a contagem. Em uma linha, mais uma vez inicializar n a 0. Desta vez, porém, a linha se três não executar a todos uma vez que não há uma pessoa na sala. E assim permanece n 0, o que de fato corresponde o número de pessoas na sala. Muito simples, certo? Mas a contagem de pessoas, uma de cada vez é muito ineficiente, também, não? Certamente que podemos fazer melhor. Por que não contar duas pessoas de cada vez, em vez de contar um, dois, três, quatro, cinco, seis, sete, oito, e assim por diante. Por que não contar dois, quatro, seis, oito, e assim por diante? Ele ainda soa mais rápido. E certamente é. Vamos expressar essa otimização em código pseudocódigo. Seja n igual a 0. Para cada par de pessoas quarto, situado n igual a n + 2. Muito simples mudança, certo? Ao invés de contar com as pessoas, uma de cada vez, que em vez contá-los duas de cada vez. Este algoritmo de, assim, duas vezes mais rápido que o anterior. Mas será que é correto? Vamos ver. Será que funciona se houver duas pessoas na sala? Em uma linha, nós inicializar n a 0. Para que um par de pessoas, nós então incrementar n por 2. E assim por este algoritmo de final n é 2, o qual na verdade, corresponde ao número de de pessoas na sala. Suponhamos que existem próxima zero de pessoas na sala. Em uma linha de nós inicializar n a 0. Tal como anteriormente, a linha de três não executa tudo já que não há nenhum par de pessoas na sala, e assim permanece n 0. O que de fato corresponde ao número de pessoas na sala. Mas o que se há três pessoas na sala? Como é que este algoritmo de tarifa? Vamos ver, em uma linha, inicializamos n a 0. Para um par dessas pessoas, nós então incrementar n por 2. Mas e depois? Não existe outro completo par de pessoas na sala, de modo linha dois não mais se aplica. E assim até o final do presente algoritmo, n ainda é 2 o que não é correto. Na verdade, este algoritmo do dito ser buggy porque tem um erro. Vamos reparação com algum novo código de pseudocódigo. Seja n igual a 0. Para cada par de pessoas quarto, conjunto N igual a n + 2. Se uma pessoa permanece não pareado, definir N igual a n + 1. Para resolver este problema particular, temos introduzido na linha de quatro uma condição, de outro modo conhecido como um filiais, que apenas executa se há uma pessoa que não poderia emparelhar com outro. E agora, se há um, ou três, ou qualquer número ímpar de pessoas na sala, este algoritmo será agora contá-los. Podemos fazer ainda melhor? Bem, poderíamos contar em grupos de três, ou quatro, ou mesmo cinco anos e dez, mas, além disso, ele vai ficar um pouco difícil de apontar. No final do dia, se executado por computadores ou de seres humanos, algoritmos são apenas um conjunto de instruções com que para resolver os problemas. Estes foram apenas três. Que problema você faria resolver com um algoritmo? DAVID J. MALAN: Então, deliberadamente, um programa muito simples, um algoritmo muito simples, para alcançar algo muito simples, contando o número de pessoas na sala. Mas vamos desmembrar algum do representante apresenta aqui que são realmente vai ser útil mesmo quando execução mais complexo de software. Assim, por exemplo, nesta primeira linha, temos o que chamamos de variável, e da álgebra, você está familiarizada com x e y e z por vezes, e assim por diante. Mas, na programação, variáveis são ainda, no final do dia, muito semelhante ao que. Mas talvez seja mais simples para pensar de uma variável como apenas um recipiente. E, de fato, é um número de bits implementadas de alguma forma em seu disco rígido ou na memória do seu computador, mas mais sobre isso no futuro. É apenas um recipiente. E se você diz algo como vamos n igual a 0, bem, isso é como chamar esse vidro bowl aqui n, apenas um nome arbitrário, e colocar nada nela inicialmente. Então, o valor desta bowl agora é zero. E, claro, se você perceber numa linha subsequente, para efectivamente aumentar alguns linha de código, como nesta terceira linha aqui, em 1, isso é como dizer qual é o valor atual de n, é 0, mais 1, colocar algo como um de ping pong aqui. Agora o valor desta variável é simplesmente um. E você poderia muito rapidamente extrapolar, mas agora é 2, agora é 3, e assim por diante. Então, isso é tudo que uma variável é. É um pedaço de armazenamento para na verdade, armazenar alguns dados. Por agora é uma bola de pingue-pongue. Não é um número. Mas também pode ser um em palavras dicionário, como o verificador ortográfico Me referi na quarta-feira para um dos conjuntos de problemas do ano passado. Agora uma outra idéia chave, que da mesma forma é bastante intuitivo que eu teria a pretensão, que é de um laço. E o ciclo do processo contagem de todos É, evidentemente, fazer o mesmo coisa de novo e novamente-- qualquer um em um momento ou dois de cada vez. E você pode expressar isso em Inglês, ou pseudocódigo código, em qualquer número de maneiras, mas usando a preposição "para" é uma forma muito comum de se fazer isso. Para cada pessoa na sala, faça isso. Uma e outra vez. E o fato de que é recortado, linha de três, significa apenas que o você deveria fazer é o material que está recuado abaixo da linha de si dois. Apenas uma convenção humana, mas um comum como veremos em maior real linguagens de programação de nível. Agora pouco mais interessante é quando você chegar em um caso de canto. Por exemplo, um canto caso se quando há três pessoas, ou cinco, ou sete, ou qualquer número ímpar de pessoas na sala, porque fazendo isso por freios twos finalmente, porque o seu curso a falta de alguém, seja no início ou o fim dependendo de como você o faz. E assim, agora, eu tenho esse ramo, ou condição, se uma pessoa permanece, então vá em frente e lidar com isso um pessoa solitária que não conseguiu emparelhado com outra pessoa. Então, isso é o que chamaríamos uma condição, ou um galho. Código Agora pseudocódigo mais geralmente, podem ser escrita para resolver qualquer número de problemas. E o que eu pensei que ia fazer aqui é ter um momento convidar digamos CS50 da possuir Rob Bowden no palco a ser acompanhado por dois voluntários, que não têm idéia do que o aguarda. Uma mão desceu assim que eu disse isso. Que tal você na termina aqui, vamos lá para cima. E quanto mais distante de longe, que tal caminho na volta. Fila de trás, vamos lá para cima com as mãos para cima. Certo, e qual é o seu nome? ANITA: Anita. DAVID J. MALAN: Anita. Ok, prazer em conhecê-lo. Deixe-me apresentar-lhe Rob Bowden. Este é Anita. E qual é o seu nome? Kiersten: Kiersten DAVID J. MALAN: Irena. Irena, vamos lá para cima e atender Rob Bowden e Anita. Prazer em conhecê-lo. Kiersten: Prazer em conhecê-lo. DAVID J. MALAN: Tudo bem, Rob. ROB BOWDEN: Prazer em conhecê-lo. DAVID J. MALAN: Anita. Kiersten: Oi Anita. DAVID J. MALAN: E o seu várias centenas de colegas. Então, agora deixe-me ir em frente e puxe se apenas um simples programa aqui no Mac OS que vai me deixar realmente anotar algumas notas para baixo. E se vocês querem, cada um leva um posição em uma dessas escolas de lá, deixe-me ir em frente e começar uma lista de código de pseudocódigo, se você quiser. E o que eu quero fazer aqui, em última instância, é do tipo para você algumas instruções que o nosso membros da audiência são realmente vai recitar para nós. Deixe-me ir em frente e apenas mudar isso para uma lista numerada para coincidir com o que estávamos fazendo lá em cima. E o que eu vou fazer com sua ajuda, é escrever um programa em pseudocódigo, com o qual esses caras vão para implementar um amendoim manteiga e geléia sanduíche. Por isso, é talvez a propósito de mostrar algo que alguns de vocês pode ter visto na internet por apenas um breve momento chato. [MUSIC BUCKEWHEAT BOYS ", MANTEIGA DE AMENDOIM  Tempo da geléia "] DAVID J. MALAN: OK. Isso é o suficiente. Então aqui enquanto isso, eu tenho uma par de Google Glasses que vamos colocar no próprio Rob Bowden do CS50 de ver o mundo através de seus olhos. E nós vamos fazer o nosso melhor no post produção de realmente tecer a metragem do que Rob está vendo agora, para esta palestra real vídeo com nossos dois voluntários ao lado dele. Então o que eu vou fazer é, eu vou ser o datilógrafo. Nós temos o objetivo aqui de realmente escrever um programa com que fazer, em última análise, uma manteiga de amendoim e geléia sanduíche, mas estes três vão se comportar como se fossem computadores. E computadores, no final do dia, são na verdade dispositivos muito burro. Eles são super rápido, mas só eles podem fazer, literalmente, o que é dito. Você não pode simplesmente dizer fazer um amendoim manteiga e geléia sanduíche. Você tem que programá-los a fazer isso. Você tem que dizer-lhes com precisão o que fazer, menos as coisas vão muito e, esperançosamente, divertidamente errado. Assim, com o que disse, nós precisamos um call-out do público para o que deverá intensificar um ser, se o objetivo aqui é fazer um amendoim manteiga e geléia sanduíche. Sim? AUDIÊNCIA: [inaudível] o saco de pão. DAVID J. MALAN: Abra o saco de pão. Portanto, se os três competidores faria gostaria de continuar a fazer isso literalmente. Abra o saco de pão. [Audiência de riso] DAVID J. MALAN: Então, vamos trabalhar nisso. Tudo certo. Então, passo dois, how-- vamos dar mais este. Sim, na frente. AUDIÊNCIA: [inaudível] o pão. DAVID J. MALAN: O que é isso? AUDIÊNCIA: Retire o pão. DAVID J. MALAN: Retire o pão. Da mesma forma sucinta. Obrigado. [Aplausos] DAVID J. MALAN: É isso? OK, então o segundo passo é ir ser remover o pão. Tudo bem, alguém quer escreva-nos uma frase mais longa? Alguém mais? Um pouco mais [inaudível]. Não, nada agora. Sim? AUDIÊNCIA: Coloque dois fatias ao lado do outro. DAVID J. MALAN: Coloque dois fatias ao lado do outro. [Audiência de riso] DAVID J. MALAN: Coloque dois fatias ao lado do outro. Passo Quatro. Sim? AUDIÊNCIA: Leve o seu mão e coloque-o levemente na parte superior da tampa da manteiga de amendoim. [Audiência de riso] AUDIÊNCIA: [inaudível] ao lado da manteiga de amendoim. DAVID J. MALAN: O quê? Diga isso de novo. AUDIÊNCIA: Solte a tampa e colocar -o suavemente ao lado da manteiga de amendoim. DAVID J. MALAN: Coloque-o suavemente ao lado da manteiga de amendoim. OK, o progresso. Etapa cinco. Excelente. Sim? Pegue uma faca. DAVID J. MALAN: Pegue uma faca. OK, passo seis. Sim? AUDIÊNCIA: Segure a faca pelo cabo. DAVID J. MALAN: Segure faca pela alça. Segure a faca pelo cabo. Passo Sete. Sim? AUDIÊNCIA: Faca [inaudível] em amendoim manteiga e tão pouco para fora [inaudível]. DAVID J. MALAN: faca Coloque em-- I ouviu "faca colocar em manteiga de amendoim e ter tão pouco quanto for possível ". By the way, retire o papel primeiro. Tudo bem, passo nove. Passo nove. Passo nove. Nós realmente não tenho feito um sanduíche ainda. Sim? AUDIÊNCIA: Usando faca em manteiga de amendoim, aplicar manteiga de amendoim na referida pão. DAVID J. MALAN: Usando a faca na manteiga de amendoim, aplique manteiga de amendoim em disse pão. [Audiência de riso] DAVID J. MALAN: All passo certo 10. Passo 10. Sim? AUDIÊNCIA: Gosto de amendoim manteiga para garantir a qualidade. [Audiência de riso] DAVID J. MALAN: Passo 11. Passo 11. Passo 11. Venha. Sim? Bem ali. AUDIÊNCIA: Com cuidado, pegue a geléia. DAVID J. MALAN: Com cuidado, pegue a geléia. OK, e depois outra mão foi para cima. Logo atrás de você. Sim, em azul. AUDIÊNCIA: Tudo bem, remova tampa de [inaudível], sim, retire a tampa da geléia. [Audiência de riso] DAVID J. MALAN: A partir de geléia. Ha ha. [Audiência de riso] DAVID J. MALAN: E? AUDIÊNCIA: E mal varrer qualquer [inaudível]. [Audiência de riso] AUDIÊNCIA: É claro que, antes de [inaudível], retire o papel da geléia. DAVID J. MALAN: Remova o papel da geléia. Passo 14. Estamos quase lá. Sim? AUDIÊNCIA: Inverter o frasco de geléia antes de tudo cai. DAVID J. MALAN: Invert geléia garrafa antes de geléia cai. Passo 15. AUDIÊNCIA: Recoloque a tampa. DAVID J. MALAN: Recoloque a tampa. Passo 16. Sim? AUDIÊNCIA: [inaudível] DAVID J. MALAN: Diga isso de novo. AUDIÊNCIA: Pegue tampa fora de sua geléia. DAVID J. MALAN: Off seu gingado. Então realmente-- Oops. Venha. Recoloque a tampa. Coloque cap-- Você disse retire a tampa de geléia. Sinta-se como se estivéssemos em um pouco de um loop. Passo 17. Sim? AUDIÊNCIA: [inaudível] DAVID J. MALAN: Diga isso de novo. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Volte para step-- AUDIÊNCIA: [inaudível] DAVID J. MALAN: Remover cap de manteiga de amendoim. Sim? AUDIÊNCIA: Largue tudo o geléia com o pão. DAVID J. MALAN: Largue tudo a geléia com o pão. DAVID J. MALAN: Estamos quase lá. Passo 19. AUDIÊNCIA: Retire o excesso de geléia. DAVID J. MALAN: Haha, geléia. [Aplausos] DAVID J. MALAN: Por que não nós-- mais um passo para tomar esta casa. Mais um passo e, em seguida, vamos servir sanduíches. Sim? AUDIÊNCIA: [inaudível] DAVID J. MALAN: Embora qualquer sanduíche travessão Vamos remains-- isso-- comer. [Risos da platéia] DAVID J. MALAN: Tudo bem, obrigado aos nossos voluntários aqui. [Aplausos} DAVID J. MALAN: Temos algumas agradáveis presentes de despedida para cada um de vocês. A sua própria manteiga de amendoim, geléia, e pão para levar para casa. Obrigado. Kiersten: Obrigado. DAVID J. MALAN: [inaudível] bem-vindos. [Aplausos] DAVID J. MALAN: Então, isso é, Claro, um exemplo ridículo. Certo? Mas isso tipo de revelar como nós humanos basta ter clareza para concedido. E o fato de eu ter sido falando com outro ser humano, ele ou ela simplesmente sabe o que quer dizer. Os computadores não estão indo para saber o que você quer dizer, mesmo quando se utiliza, como estamos prestes a fazer hoje, programar algo em risco, uma drag e soltar, linguagem de estilo peça do puzzle. Mesmo projetado para jovens crianças, você tem ser tão explícita e tão literal com o que você quer que seu programa para fazer. Agora, em última análise, somos vai ser a programação não no código pseudocódigo Inglês como sintaxe, mas o código ou, mais propriamente, o código fonte. O código-fonte é apenas a maneira extravagante para o código que descreve você realmente escrever com um teclado que é não em Inglês, por si só. É em C ou Java ou C ++ ou algo assim, como veremos em breve. E, de fato, só para assustar um alguns de vocês, à primeira vista, este é um programa escrito em uma linguagem chamado C. Mas, para un-susto um pouco de você, você será completamente entender o que está acontecendo em vir na próxima segunda-feira quando trata de algo como isto. Francamente, isso é uma linguagem mais velho. É bastante misteriosa, mas é representativa de uma série de linguagens que nos dias de hoje tem um monte de parênteses e crespos chaves e aspas e vírgulas. E um monte de presente material sintática que não é em todos intelectualmente interessante. Na verdade, é uma distração absoluta a partir das idéias muito simples que estão nos olhando na cara. Este programa, como você pode apenas adivinhar, impressões a tela do computador de alguém as palavras "Olá mundo vírgula." É isso aí. Então, claramente, não há um monte de coisas que é ficando no caminho de alguma evidência lá, mas vai deslizar muito rapidamente distância e ser completamente intuitiva. Na verdade, o que nós vamos fazer hoje é destilar esta bastante complexo programa procura, que mais uma vez você vai chegar de compreender rapidamente, mas a algo muito mais simples. Vamos apenas dizer o que queremos dizer. Vamos desenhar uma imagem do que queremos dizer, por meio dessas peças de quebra-cabeça aqui. Portanto, esta é uma programação linguagem conhecido como zero. Ele foi desenvolvido pelo Laboratório de Mídia do MIT. E o que você verá no conjunto de problemas zero, , que será lançado hoje à noite, nós vamos ter que ir a este URL aqui scratch.mit.edu. E eles têm um web interface de base através da qual você vai escrever seu primeiro programa. Ou aqueles de vocês com prévia experiência, segundo seus programas, mas em um ambiente que é provavelmente um pouco desconhecido e que vai empurrá-lo para criar algo usando este ambiente muito visual. Agora, o que eu vou fazer aqui é abrir o programa em si. Ela existe não só como um navegador, mas também como um programa de download de modo que você pode realmente usá-lo se você não tiver acesso à internet. E eu vou fazer isso aqui, em Sanders, apenas no caso de o Wi-Fi não cooperar de super bem. E o que eu vou fazer é ponto fora algumas características deste programa. Então, para ficar claro, eu tenho apenas duas vezes cliquei no ícone no meu desktop, ou equivalentemente ido para scratch.mit.edu, e é puxado para cima nesta janela. Este é um ambiente de programação. É um pedaço de software que alguns dos nossos amigos do MIT escreveu que vamos nós e você escreve programas em uma linguagem chamada de rascunho. Agora, este passa a ser um gato que também é chamado risco e este é o mundo em que vive. Esta é a fase de, por assim dizer, que retângulo no canto superior esquerdo. E ele não tem que olhar como um gato. Você pode fazê-lo parecer como qualquer coisa e você pode ter muitos desses sprites, ou personagens, em um programa. Enquanto isso, aqui na extrema certo, é uma grande folha em branco. E é aí que, em um momento, vamos começar a programação arrastando e soltando estes quebra-cabeça gráfica peças que estão à direita aqui no meio. E há muito mais deles do que vamos passar um tempo aqui na sala de aula porque você vai descobrir que todos eles são bastante intuitiva. Mais uma vez, ele foi projetado para as crianças, mas nós usá-lo para provocar uma separação alguns daqueles idéias fundamentais de variáveis, loops, condições e, em breve, as coisas como funções e eventos e fios e outras coisas extravagantes vamos chegar ao pouco tempo para realmente criar algo a partir do zero. Trocadilhos. Agora, o que eu vou fazer aqui é clique em não o movimento, mas o controle. E este é apenas um categorização de aqui-- e vejo uma diferente cor conjunto de blocos. Mas notar algumas palavras familiares. "Se" e "else if" e "repetição". E você provavelmente pode adivinhar que é uma reminiscência do ramo, ou as condições que vimos, e até mesmo a construção de loop. Portanto, temos blocos semelhantes aqui. Mas o mais interessante é este aqui. Quando esta bandeira verde é clicado, isso, para aqueles com programação prévia experiência, é equivalente para uma função principal. Mas, para quem não conhece, esta é a parte do enigma que irá lançar toda a nossa programação. Significa literalmente quando eu vou, neste programa, e clique em um flag-- verde que você pode ver aqui no canto superior esquerdo da interface do usuário, assim que ver a bandeira verde ao lado do sinal vermelho? Quando clico isso, meu programa vai ser executado. Agora, eu vou fazer alguma coisa super simples com o Scratch. Eu estou indo para ir em frente e vá para o painel de olhares aqui, onde eu tenho um monte de peças do quebra-roxo, e eu estou indo para ir em frente e fazer algo super simples como, digamos. E note depois-- este texto na caixa branca é editable-- eu vou dizer "Olá mundo", assim como nós fez naquele textual versão de um momento atrás. E agora, se eu for e clique neste bandeira verde, eu já programado. Não é um particular programa interessante, mas eu fiz o computador fazer alguma coisa. Eu comecei um programa e fiz o que eu disse para fazer. Agora, eu posso continuar a arrastar e soltar mais e mais dessas peças do puzzle e eles vão bloquear, mas vamos bater um pouco de terminologia aqui que veremos recorrentes durante todo o curso, e realmente em toda a ciência da computação e programação em geral. Este "dizer" do bloco, em roxo, vamos apenas começar a chamar um comunicado. É como uma declaração de fato. Faça isso. Então, é uma categoria de instruções que você pode alimentar um computador como parte de um programa ou de um algoritmo. E para ser claro, você tem provavelmente tida como certa que você tem programas em seu computador. E eles são o tipo de algoritmos, mas uma programa é realmente um monte de algoritmos que alguns seres humanos, escreveu. Eles embalado para cima e eles venderam isso para que você, ou eles postado em um website para você baixar. Assim, um programa é apenas um todo monte de zeros e uns que, de alguma forma, os seres humanos criaram. E esses padrões de zeros e os representam coisas, em última análise, como "dizer Olá mundo" ou "o jogo esta música "ou" reproduzir este vídeo " ou "envie um e-mail." Mas vamos voltar em forma mais detalhes o que um programa é quando você, mesmo, escrevê-los. Aqui está outra statement-- "Espere um segundo." Eu não uso isso ainda, mas se eu quiser meu programa para fazer uma pausa por um momento fazer alguma coisa, eu posso dizer que para fazê-lo. Espere um segundo. Agora um outro poderia ser "reproduzir o som." Então, este é exclusivo para zero, tem a capacidade de reproduzir sons. Assim, uma declaração que pode utilização é, aqui, "reproduzir o som." Enquanto isso, a expressão booleana, por isso esta é uma palavra extravagante em homenagem a um cara chamado Mr. Bool, e isso é tudo sobre a questão. Verdadeiro ou false-- é o mouse para baixo? Uma expressão booleana é apenas alguma expressão em Inglês que é verdadeiro ou falso. Ligado ou desligado. Qualquer um ou zero. Você pode pensar nisso em qualquer número de maneiras, mas é verdadeiro ou essa falsa, em última instância. Assim, "do mouse para baixo ponto de interrogação" que seria uma expressão booleana. E você pode pensar nos outros, talvez. Por exemplo, "é o número esquerda menor que o número certo? " Isso também seria uma expressão booleana. "Menos de" é uma expressão booleana. Este, também, "pointer tocar mouse." Eu não sei por que eles chamou-o ponteiro do mouse. Significa apenas que, é o cursor, é o seta na tela, tocando o gato, por exemplo. Ou algum outro aspecto da tela. E é uma questão, mais uma vez, e que denota uma expressão booleana. Algo que você pode quero usar em uma condição. Então, nós vamos chegar a isso em apenas um momento. Você pode "e" coisas juntas. Então, se você quiser verificar se este é o caso e que é o caso, você pode usar um "e" bloco como este. E aqui está nessa condição. Observe a forma da pequena abertura no topo desta parte do enigma amarelo, É uma reminiscência da forma que acabamos de ver um momento atrás. Cada uma dessas expressões booleanas tem essas arestas pontiagudas no lado esquerdo e direito. E isso é porque as pessoas do MIT decidiu que por formatos de transporte visualmente, você pode tipo de ajudar as pessoas, estudantes e crianças, ao tipo de preencher os espaços em branco, literalmente. Agora que puzzle-- que abertura é um pouco pequeno, e, como veremos no programa, em risco, ela vai crescer para se adequar. Ele vai manter a sua forma, em última instância. Assim, uma condição lhe permite decidir "Eu deveria fazer alguma coisa ou não?" Uma expressão booleana é a questão real você está usando para decidir se eu vou para a esquerda ou eu ir para a direita quando me deparo com este chamado bifurcação na estrada? Você pode ter dois ramos. Se algo é verdade, fazer isso, mais ir por esse caminho, ou você pode simplesmente não fazer nada tudo, tal como este bloco implícita. Da mesma forma, pode aninhar essas coisas. Então, se você quer triplicar bifurcação na estrada, ou fazer isto ou isto ou aquilo, você pode apenas ninho essas coisas juntas. E isso começa a ficar um pouco feio, eventualmente, com certeza, mas a lógica continua a ser a mesma. Você pode literalmente ler este de cima para baixo e ele diz que o que means-- se este é verdade, fazer isso, mais se outra coisa. Um ciclo não fica mais simples em risco. Sempre faça o seguinte. Agora você não pode pensar que você pode fazer muito porque não há o espaço entre a parte superior e a parte inferior desta abertura peça do puzzle. Mas você vai ver Raspadinha vai crescer para atender o maior número de peças do puzzle como você quer enfiar lá dentro. Outro circuito pode ser expresso com repetições. Se você sabe de antemão ", I quero fazer algo 10 vezes ", você pode apenas dizer Raspadinha fazer alguma coisa 10 vezes. E, enquanto isso, podemos ter variáveis. Então aqui está arbitrária, é laranja, neste caso, e este é um rápido tour. Mais uma vez, você vai encontrar isso muito acessível uma vez que você começar a apontar e clicar. Eu nomeei minha variável n, mas eu poderia ter chamado ele o que eu quiser, e eu estou ajustando-lo aqui, em Neste exemplo arbitrária, a zero. Agora vendo um programa como o Olá mundo não é tão convincente, então vamos realmente abrir mão de algo que um ex-aluno fez. Deixe-me ir em frente e abrir-se, por exemplo, este aqui, para que eu adoraria ter um voluntário. Tudo bem, como sobre-- vamos mais longe. Sim, vamos lá para cima. Qual o seu nome? Abby: Abby. DAVID J. MALAN: Abby, vamos lá para cima. Então, você já jogou este jogo antes? Abby: No. DAVID J. MALAN: Tudo bem. David, prazer em conhecê-lo. Venha pra cá. E qual é a sua programação fundo, se for o caso. Abby: Eu aprendi algumas C ++. DAVID J. MALAN: Você aprendeu alguma C ++. E qual é o seu jogo tocando de fundo? Abby: Não muito. DAVID J. MALAN: OK, então vamos levar isso. Então aqui está como o jogo vai funcionar. Eu estou indo para ir em frente e clique na bandeira verde, que está aqui em cima no canto superior direito. Agora, o seu antecessor na classe deu-lhe algumas instruções aqui. E em apenas um momento, diz que "o espaço para começar." Então vá em frente e bateu a barra de espaço. JOGO DE COMPUTADOR: Pikachu. DAVID J. MALAN: E o objetivo é pegar a comida, como representado não à esquerda. E para [inaudível] [GAME MUSIC PLAYING] DAVID J. MALAN: Ohh, bem, Obrigado por jogar. Temos aqui um pouco separando presente para você. Temos CS50 bola anti-stress, Se você gostaria de escolher. Tudo bem, é bom conhecê-lo. Obrigado por terem vindo e desafiador. Portanto, temos mais bolas de stress, de modo vamos fazer mais um exemplo para motivar. Um voluntário? Tudo bem, que tal bem aqui na frente. Qual o seu nome? PHILLIP: Phillip. DAVID J. MALAN: Phillip. Venha, Phillip. Assim, Phillip vai ser desafiados com um outro jogo que um de seus antecessores escreveu como parte do conjunto de problemas zero, chamado O jogo mais difícil do Ivy. E nós vamos ver em apenas um momento o que se quer dizer com isso. Phillip, prazer em conhecê-lo. Qual é a sua formação? PHILLIP: Feito um monte de codificação. Feito um pouco de jogo, também. DAVID J. MALAN: OK. Tem um monte de jogos, também. E você já jogou este jogo antes? PHILLIP: Não David J. MALAN: Todos certo, então vamos lá. Eu estou indo para ir em frente e clicar na bandeira verde. [GAME MUSIC] [MUSIC MC HAMMER, "U NÃO PODE TOCAR ESTE"] PHILLIP: [inaudível] DAVID J. MALAN: [inaudível] PHILLIP: [inaudível] [Risos] [MUSIC MC HAMMER, "U NÃO PODE TOCAR ESTE"] DAVID J. MALAN: [inaudível] Arar através dele. PHILLIP: [inaudível] DAVID J. MALAN: Vá em frente. [MUSIC MC HAMMER, "U NÃO PODE TOCAR ESTE"] DAVID J. MALAN: Tudo bem. Parabéns. [Aplausos] DAVID J. MALAN: Vamos posto que em linha mais tarde, para que você pode procrastinar com ele também. Princeton vem logo em seguida, depois disso. Então agora vamos realmente proceder que começar do zero, por assim dizer, e realmente construir até podemos desmembrar algumas dessas idéias e chegar a algo ainda mais complexo no final. Eu vou por aqui e eu vou ir em frente e criar um novo arquivo. Então, novamente, o conjunto de problemas andará lo através de algumas destas etapas. Mas, tudo o que eu fiz foi ir para o menu Arquivo e eu disse "novo", tão parecido com Microsoft Word, ou qualquer outro programa como esse. E vamos em frente agora-- e nós implementado "Olá, mundo" um momento atrás, mas vamos fazer algo um pouco mais bonito. Eu estou indo para ir até eventos. E eu vou fazer ", quando bandeira verde clicado. " E então eu vou usar, digamos, um ramo. Então, eu vou usar um "se" condição. E note como assim que eu chegar perto para ele, ele quer se encaixam. Então, eu deixo ir e que se encaixe em conjunto. E agora eu posso fazer alguma coisa interessante. Se eu rolar por aqui, eu vou ver um monte de blocos. Se eu for a "data" - deixe-me zoom em-- há algo sobre variáveis. Se eu for para "movimento", você pode aparentemente mudar as coisas. Se eu for para "operadores" - oh, isso é interessante, Eu posso pegar um número aleatório. Então deixe-me fazer algo com apenas alguma probabilidade, apenas porque. Eu estou indo para ir em frente e arrastar esta parte do enigma, isto é que a menos de bloco, por isso é apenas "É esse número menor do que um?" Mas eu não quero um código rígido de um número porque que ser bastante inútil. Então eu vou para arrastar esta peça aqui, e perceba como ela se encaixe em, e agora deixe-me ir em frente e dizer "se o número que é escolhido aleatoriamente é menos de seis, faça o seguinte. " Agora, por menos de seis? Qual a probabilidade é isso de forma eficaz vai me dar, apenas intuitivamente? Cerca de 50%, certo? Se o número que de adivinhar aleatoriamente entre 1 e 10, é menos do que seis, claramente que é um, dois, três, quatro, ou cinco. E assim que vai me dar um 50% de probabilidade de que aconteça? Bem, vamos fazer algo parecido isso, "jogar miado de som." E notem, mais uma vez, a peça cresce para se ajustar, tanto tempo quanto as formas corresponder. Isso é que é importante. Deixai-me passar a arranhar aqui e clique em "jogo". Nada acontece. Isso é um bug? Não, não é necessário. Poderia ser apenas que a número maior foi escolhido. Então, vamos fazê-lo novamente. Nada. [Miau] DAVID J. MALAN: Aqui está. [Miau] DAVID J. MALAN: Mais uma vez. No. [Miando] DAVID J. MALAN: Então, se você tem sempre um jogo, é claro, onde o material está acontecendo de forma aleatória, como os bandidos estão vindo ou não chegando à tela, ou as coisas estão a cair ou não cair, isso é só porque algo super- simples como isso está acontecendo. Escolha um número aleatório, e se É menos do que algum valor, talvez fazer isso ou talvez fazer isso. Podemos incorporar que em uma condição. Vamos fazer algo diferente. Deixe-me jogar isso fora. Você pode se livrar de coisas por apenas arrastando-o para a esquerda e deixar ir. Deixe-me ir em frente e fazer um bloco para sempre e muito rapidamente fazer algo irritante. Deixe-me ir em frente e dizer "jogar miado de som." Mas eu não quero que isso seja muito chato, então deixe-me pegar neste bloco, "Espere um segundo", e aviso prévio não há mais espaço para isso. Mas se você for perto o suficiente, ele quer ir para lá. Então, eu deixo ir e vai crescer para encher o bloco. Então, agora, este é um loop. [Miando] DAVID J. MALAN: Eu sou literalmente fazer isso para sempre. Uma e outra vez. Isso não é apenas som natural. Deixe-me ir em frente e mudar esta não de um segundo, a dois segundo e pressione Enter. E o que é agradável sobre Scratch é que você pode programar de forma interativa. Faça uma mudança, talvez tecle Enter ou jogar de novo, e ele vai continuar. Bem, agora por que não podemos fazer algo um pouco mais bonito? Ao invés de fazer tudo a partir do zero, deixe-me ir em frente e abrir um avanço fez um, que eu pré-cozido, chamado de "acariciar o gato." E nós vamos postar todos esses arquivos on-line, e conjunto de problemas de zero irá dizer-lhe como acessá-los e abri-los. E note, isso é muito simples. Mas antes, me parece ter agarrado um bloco "para sempre", então eu tenho um loop. E então eu tenho um "se" condição. Eu tenho uma expressão booleana. Assim, em Inglês, apenas olhando para isso, especialmente se você nunca programado antes, apenas de forma intuitiva, o que é que isto vai fazer, este programa? [Audiência CHATTER] DAVID J. MALAN: Se você acariciar o gato, o gato vai miar, certo? Porque "para sempre desmarcando" é o ponteiro do mouse tocando o gato. Então, para ser claro, e eu não disse isso antes, todos estes quebra-cabeça peças eo script que nós os combinados em, por assim dizer, um script é sinônimo de programa, na verdade, pertence a este gato. E a razão porque é-- aviso como esse mesmo gato aqui é destacado, aqui você pode criar um segundo gato ou cão ou realmente qualquer coisa que você quer graficamente. Você pode importar algo de Photoshop, ou semelhante, e integrar alguma coisa se você quero fazê-lo para um projeto. E o que você vai encontrar, em última análise, é que você pode adicionar scripts, adicione quebra-cabeça peças, para caracteres individuais. Então, todos estes pertencem a este gato particular. Portanto, agora se eu ir em frente e jogar Neste programa, nada está acontecendo. Mas ele está sendo executado. O programa é neste loop para sempre, tipo de espera para que isso aconteça? [Audiência CHATTER] DAVID J. MALAN: Para acariciar o gato. Então, se eu mover o mouse em direção ele-- [Miando] DAVID J. MALAN: Então agora Estou acariciando o gato. Enquanto isso, nós podemos ter um ramo de casal. Deixe-me ir em frente e abrir se não acariciar o gato. Vamos postar essa linha também. Este é um pouco mais complexo, mas sem dizer você pode adivinhar, talvez, o que vai acontecer. [Miando] DAVID J. MALAN: Gato é miando, grand velhos tempos. Mas este programa é claro chamado "Não acariciar o gato," tão claramente, eu quero acariciar o gato. [RUJE] DAVID J. MALAN: Não acariciar o gato. Agora, vamos dar uma olhada em outro exemplo aqui. Este será chamada "Hi, Hi, Hi," por razões que será evidente, porque assim que eu executar este coisa-- [SEAL BARKING] DAVID J. MALAN: Muito fácil escrever programas de raspadinhas irritantes. [SEAL BARKING] DAVID J. MALAN: Agora não vamos em grande detalhe com todos estes, mas notar que há uma par de novos recursos aqui. Há uma variável, chamado de "mudo" e então há um monte de condições. E por agora, deixe-me apenas provocá-lo, dizendo: que se esse cara fica muito chato, Eu posso bater a barra de espaço e ele pára. Porque o papel a ser desempenhado pelo estes dois certificados é como se segue. Um deles está fazendo o latindo a cada poucos segundos. A outra está apenas esperando para mim para bater a barra de espaço. E se eu bater a barra de espaço, isso vai mudar o estado dessa variável, o valor desta variável, que é, aparentemente, chamado "silenciado" Eu não chamei algo chato como n, Chamei-lhe uma palavra em Inglês, "silenciado". De 1-0 ou 0-1. De verdadeiro para falso ou falso para verdadeiro. E para que você possa realmente ver agora, que você poderia ter dois scripts, dois programas em execução ao mesmo tempo, e ambos pode estar sentado em um loop fazendo alguma coisa. Esperando o ser humano fazer algo como bater a barra de espaço. [SEAL BARKING] DAVID J. MALAN: E agora ele está a caminho de novo. [SEAL BARKING] DAVID J. MALAN: Então, o que mais que podemos fazer com esses exemplos? Bem, vamos em frente e fazer uma exemplo, com contar carneiros. Nós vamos continuar esta ao longo das linhas aqui de-- vamos abrir o exemplo ovelhas. E aviso, bem como antes, este, felizmente, é um pouco menos chato. Uma vez eu bati jogar aqui-- Oh não, isso é irritante. Ele vai baa com alguma probabilidade. Vamos jogar isso de novo. [OVINOS BLEETING] David J. MALAN: A única diferença é nós mudamos o traje, por assim dizer, e vamos reduzir para metade e dizer o que esse número é real. Bem, vamos seguir em frente e dar um passo adiante. E deixe-me te provocar com Uma outra característica aqui. Vamos em frente e abrir um programa chamado Threads. Então, assim como você pode ter um sprite, tendo vários scripts, você pode ter dois sprites, um pássaro em um gato, cada um com seu próprio roteiro. E cada um deles pode operar simultaneamente. Se você já ouviu o palavra "multithreading" um computador é meio "multithreaded" ele pode fazer várias coisas ao mesmo tempo, e, de fato, isso pode arranhar. E agora notem a ave é uma espécie de idiota. É só fazer as coisas de forma aleatória, saltando para fora da tela. É evidente que o gato tenha sido programado ao tipo de ter que procuram capacidades em casa, em que o pássaro porque ele está sempre apontando para ele. Até que, finalmente, ele pega o pássaro real. Então eu não vou me debruçar sobre os detalhes aqui, mas você pode tipo de vislumbrar as mesmas formas, alguns "Se" condições, algumas variáveis, talvez alguns loops, são em última análise, fazendo a mesma coisa. Agora deixe-me ir em frente e abrir se algo completamente diferente, para provocar alguns de vocês, particularmente aqueles mais confortável, o que você pode realmente ver com isso. Eu estou indo para ir em frente e abrir Botão aqui. E este é um super programa simples de aparência, mas veja o que acontece quando I-- Veja o que acontece quando eu abrir essa versão dela, aqui no navegador, scratch.mit.edu. E quando eu clicar nesse grande e vermelho botão, observe o que acontece. Então, o que está acontecendo aqui? Na verdade, há muito mais complexidade acontecendo debaixo do capô, embora eu tenha implementado esta, ou, francamente, Dan Bradley implementou esta tão simples. Ele criou um quebra-cabeça personalizado Raspadinha parte, conhecida como uma extensão de arranhões, ele chamou de alternância. E o que faz é alternar envia uma mensagem através da internet. E que a própria mensagem parece um pouco enigmática. Mas isso, também, você compreender até o final do prazo. A mensagem que ele está realmente enviando parece um pouco algo como isto. É só texto. Cryptic. Você vai entender que no momento em que temos o problema de sete set. É só enviar uma mensagem de texto através da internet para um servidor. E esse servidor é, em última análise, conversando com essa lâmpada, que tem uma daquelas lâmpadas de fantasia em que ela, em si, está falando para o Wi-Fi na rede aqui, onde um dispositivo local para baixo aqui-- e, em última análise, é realmente transformando essa luz ligado e desligado. Mas podemos fazer mais coisas interessantes ainda. Observe o que Dan também fez por nós. Ele fez vários sprites, cada um dos que tem um roteiro à espera de um clique. E se eu clicar em vermelho, ele fica vermelho. Se eu ficar azul, ele vai azulado. Verde, amarelo, laranja. E tudo isso está acontecendo por vai sair para a internet, recuar aqui para o lâmpada, ligar e desligar. E se você pode acreditar ele-- e este é talvez um dos mais complexos Raspadinha projetos alguém tem implemented-- ele fez isso, com justiça, em um dia. E esse foi o desafio que jogou Dan quando vimos têm lâmpadas binários, temos zero, como podemos combiná-los? E, de fato, isso é absolutamente algo que qualquer um nesta sala poderia fazer por end-- semestre é ele lâmpadas binários reimplemented usando a mesma interface que era em nosso iPad na quarta-feira. De modo que agora, se eu realmente clique no sinal de mais aqui, nós temos um, dois, três. Eu posso bater o 16 e transformar isso em um. 128, e assim por diante. Agora se que por si só tem e soprado a sua mente, você poderia fazer coisas muito mais acessível, não envolvendo qualquer hardware certamente. Apenas as coisas na própria tela. E, de fato, o que mais estudantes acabar fazendo algum tipo de jogo, alguma obra artística, ou algum tipo de animação interativa. E eu vou dizer uma de nossas favoritos tem sido um presente. E eu pensei se nós poderia diminuir as luzes, vamos dar uma olhada neste último Projecto Scratch em conclusão. Mas o que você deve ter em mente, como Eu posso provocá-lo com um último detalhe, seccionamento começará na próxima semana. Horário de atendimento começará na próxima semana. Problema zero definido será postado CS50.harvard.edu ainda hoje. E você será recebido no conjunto de problemas de zero a própria Zamyla Chan do CS50, que orienta a maioria do nosso passo a passo. Estes são vídeos incorporados nos conjuntos de problemas que vai segurar a sua mão através de um lote da configuração inicial e através de muitos das possíveis decisões de design. Então, se você já teve essa emoção quando pegar uma lição de casa e se perguntando, por onde eu começo? Ela vai ter a resposta para você. E agora, um programa final de um de seus antecessores em resposta à pergunta "O que a raposa diz?" [MUSIC YLVIS, "O que a FOX DIZ?] YLVIS: (cantando) Cão passa trama. O gato vai miar. Pássaro vai tweet e mouse vai chiar. Cow vai moo. Sapo vai coaxar. E o elefante vai Toot. Patos dizer charlatão e peixe ir blub. E o selo vai ow ow ow, mas há um som que ninguém sabe, o que é que a raposa diz? E DAVID J. MALAN: Isso é tudo para CS50. Vamos vê-lo em Quebra-Dia e na segunda-feira. [Aplausos] [MUSIC YLVIS, "O Que Diz a FOX?"] NARRADOR: E agora profundo pensamentos, por Daven Farnham. Hoje eu fui atingido no cara com um livro de telefone. Confundindo, como eu estou em casa assistindo online.