1 00:00:00,000 --> 00:00:11,120 2 00:00:11,120 --> 00:00:12,590 >> Palestrante: eu sou [inaudível]. 3 00:00:12,590 --> 00:00:14,820 E eu sou um sénior na Leverett House. 4 00:00:14,820 --> 00:00:18,700 Eu estudar ciência da computação, e eu sou um TF para CS50. 5 00:00:18,700 --> 00:00:21,640 Como um calouro, eu não tinha sequer um laptop ou um smartphone. 6 00:00:21,640 --> 00:00:23,550 Eu não tinha nenhuma experiência em programação. 7 00:00:23,550 --> 00:00:29,690 CS50 foi o curso mais memorável que Eu tomei em Harvard porque era 8 00:00:29,690 --> 00:00:32,960 uma luta, mas foi realmente um diversão luta ao mesmo tempo. 9 00:00:32,960 --> 00:00:37,670 E eu fiz um monte de incrível, permanente amigos, e eu aprendi um monte de realmente 10 00:00:37,670 --> 00:00:38,830 habilidades aplicáveis. 11 00:00:38,830 --> 00:00:43,480 Estou tão feliz que eu não deixei o meu falta de fundo ser uma desculpa para me 12 00:00:43,480 --> 00:00:44,840 Não tome CS50. 13 00:00:44,840 --> 00:00:46,220 Eu sou [inaudível]. 14 00:00:46,220 --> 00:00:48,910 Eu sou um sénior na Leverett House, classe de 2014. 15 00:00:48,910 --> 00:00:51,670 E tomei CS50. 16 00:00:51,670 --> 00:00:52,380 >> DAVID MALAN: Então isso é CS50. 17 00:00:52,380 --> 00:00:54,400 Isto é o fim de semana zero. 18 00:00:54,400 --> 00:00:58,500 E lembrar onde começamos a última vez, Com estas lâmpadas, que foram 19 00:00:58,500 --> 00:01:01,420 tão popular que fomos e comprei um pouco mais hoje. 20 00:01:01,420 --> 00:01:03,790 Então eu acho que isso vai ser nossa coisa este ano - 21 00:01:03,790 --> 00:01:07,230 lâmpadas de mesa se você chegar no palco, pelo menos até acabar. 22 00:01:07,230 --> 00:01:11,570 >> Mas nós usamos estes recordação, para introduzir os conceitos básicos de representação de dados. 23 00:01:11,570 --> 00:01:15,640 Precisávamos maneira de começar a representar informação dentro de um computador. 24 00:01:15,640 --> 00:01:18,650 E a maneira mais simples de fazer isso era com um ingrediente, eletricidade. 25 00:01:18,650 --> 00:01:21,760 E a coisa mais simples que você pode fazer com eletricidade é ligá-lo e ele desligado. 26 00:01:21,760 --> 00:01:23,520 Deixe o fluxo de elétrons ou não. 27 00:01:23,520 --> 00:01:27,930 E usando esses dois estados básicos, fora e sobre, ou falso e verdadeiro, ou zero e 28 00:01:27,930 --> 00:01:31,290 um, começamos a ver que poderíamos construir -se, neste caso, com a luz 29 00:01:31,290 --> 00:01:33,720 lâmpadas, mais números do que apenas zero e um. 30 00:01:33,720 --> 00:01:36,160 Contámos tão elevada quanto sete, por exemplo, a última vez. 31 00:01:36,160 --> 00:01:38,840 Mas todos nós temos que fazer é continuar jogando mais e mais lâmpadas naquele 32 00:01:38,840 --> 00:01:41,820 problema e, na verdade, podemos representar que qualquer número de nós 33 00:01:41,820 --> 00:01:42,970 poderia possivelmente querer. 34 00:01:42,970 --> 00:01:47,230 >> Bem, nós transferida rapidamente, em seguida, em Quarta a este byte de voluntários. 35 00:01:47,230 --> 00:01:52,040 8 bits é o que geralmente chamamos de byte, então aqui nós tivemos oito voluntários 36 00:01:52,040 --> 00:01:54,900 na quarta-feira que foram coletivamente representando oito bits. 37 00:01:54,900 --> 00:01:56,750 E quando suas mãos foram acima, eles eram um. 38 00:01:56,750 --> 00:01:58,530 E quando as suas mãos estavam para baixo, houve um zero. 39 00:01:58,530 --> 00:02:01,970 E nós tivemos essas pessoas subir sobre o porquê de palco? 40 00:02:01,970 --> 00:02:06,530 O que nós somos capazes de fazer com esta seqüência de bits? 41 00:02:06,530 --> 00:02:07,510 >> Para criar um alfabeto. 42 00:02:07,510 --> 00:02:11,550 Fomos capazes de construir em cima do que lição anterior aprendemos e realmente 43 00:02:11,550 --> 00:02:14,200 começar a fazer mais interessante informação que é, no mínimo, mais 44 00:02:14,200 --> 00:02:15,330 familiar para nós seres humanos. 45 00:02:15,330 --> 00:02:18,360 E isso vai ser um recorrente tema durante 50 anos, mas também computador 46 00:02:18,360 --> 00:02:21,470 ciência mais geral, essa idéia de camadas, em que, no final do 47 00:02:21,470 --> 00:02:24,820 dia, se você realmente começou a básico com um computador, sim, 48 00:02:24,820 --> 00:02:25,760 é zeros e uns. 49 00:02:25,760 --> 00:02:27,480 E sob que é apenas eletricidade. 50 00:02:27,480 --> 00:02:30,840 Mas muito rapidamente começar a tomar os detalhes de baixo nível para concedido 51 00:02:30,840 --> 00:02:35,600 e começar a camada em cima do passado trabalhou feito para que, em última instância, por 52 00:02:35,600 --> 00:02:38,610 o final do semestre e, realmente, mais geralmente como cientistas da computação 53 00:02:38,610 --> 00:02:42,790 e os programadores, pode fazer alguns realmente coisas poderosas, aproveitando o trabalho 54 00:02:42,790 --> 00:02:46,620 que nós mesmos temos feito e também de pé sobre os ombros dos outros. 55 00:02:46,620 --> 00:02:49,300 >> Agora nós rapidamente transferida na quarta-feira a partir de apenas a necessidade de 56 00:02:49,300 --> 00:02:52,080 representar informações de querer de fazer alguma coisa com ele. 57 00:02:52,080 --> 00:02:54,170 Então, o que nós definimos um algoritmo como? 58 00:02:54,170 --> 00:02:57,340 59 00:02:57,340 --> 00:02:58,900 Uma série de instruções. 60 00:02:58,900 --> 00:03:03,380 Então, é uma série de instruções, um número de passos que você, um ser humano, ou 61 00:03:03,380 --> 00:03:07,160 um computador, mais tipicamente, seria executar um após o outro na ordem 62 00:03:07,160 --> 00:03:08,100 para alcançar algum objetivo. 63 00:03:08,100 --> 00:03:11,360 E nós tivemos algumas metas última vez, um dos quais foi a contagem 64 00:03:11,360 --> 00:03:12,250 pessoas na sala. 65 00:03:12,250 --> 00:03:15,560 E um outro exemplo foi encontrar Mike Smith em uma lista telefônica. 66 00:03:15,560 --> 00:03:19,750 >> Então, você deve se lembrar que eu rasguei um telefone livro pela metade para este fim se 67 00:03:19,750 --> 00:03:21,280 encontrar Mike Smith. 68 00:03:21,280 --> 00:03:24,000 O objetivo desse visual foi a demonstram, novamente, que foram 69 00:03:24,000 --> 00:03:27,770 literalmente rasgando este problema metade, ao meio, no meio, e muito 70 00:03:27,770 --> 00:03:31,750 rapidamente indo de como 1.000 páginas apenas uma única página. 71 00:03:31,750 --> 00:03:34,860 Aqueles de vocês que perdeu esta em Quarta-feira, eu pensei que iria reproduzir 72 00:03:34,860 --> 00:03:36,820 algumas imagens do que você perdeu. 73 00:03:36,820 --> 00:03:38,914 Vamos dar uma olhada. 74 00:03:38,914 --> 00:03:40,906 >> [REPRODUÇÃO] 75 00:03:40,906 --> 00:03:55,360 76 00:03:55,360 --> 00:03:55,990 >> -Lá vamos nós. 77 00:03:55,990 --> 00:04:01,432 1500 páginas, linha limpo e agradável, lágrima legítimo. 78 00:04:01,432 --> 00:04:02,850 >> [FIM REPRODUÇÃO DE VÍDEO] 79 00:04:02,850 --> 00:04:05,230 >> DAVID MALAN: Assim que foi quarta-feira. 80 00:04:05,230 --> 00:04:09,150 Nós transição, porém, na quarta-feira agora de querer representar algoritmos 81 00:04:09,150 --> 00:04:12,410 de algum modo pouco padrão, e não apenas descrevendo-os verbalmente, mas 82 00:04:12,410 --> 00:04:16,290 tentar expressá-las, por escrito, ou em uma tela de computador, para que pudéssemos 83 00:04:16,290 --> 00:04:19,170 começam a melhorar, e modificar eles, e, eventualmente, na verdade 84 00:04:19,170 --> 00:04:21,160 analisar o quão correto ou o quão rápido eles eram. 85 00:04:21,160 --> 00:04:23,360 >> Então, nós introduzimos essa noção de pseudocódigo que, em 86 00:04:23,360 --> 00:04:26,410 termos leigos, é o quê? 87 00:04:26,410 --> 00:04:26,930 OK, palavras. 88 00:04:26,930 --> 00:04:28,730 Vamos aprofundar um pouco mais do que isso. 89 00:04:28,730 --> 00:04:32,540 Inglês, com certeza, mas são para que fim? 90 00:04:32,540 --> 00:04:35,180 Palavras com as quais criar ou para representar algoritmos. 91 00:04:35,180 --> 00:04:38,380 Portanto, não há uma língua conhecida como pseudocódigo no mundo. 92 00:04:38,380 --> 00:04:41,110 É que você, em Inglês, ou qualquer que seja sua linguagem falada é, use 93 00:04:41,110 --> 00:04:44,930 uma espécie de notação superficial para transmitir uma idéia de forma muito sucinta. 94 00:04:44,930 --> 00:04:47,930 Mas vamos ver que, certamente com um Pseudocódigo Inglês, e verifica-se 95 00:04:47,930 --> 00:04:51,700 a maioria das próprias linguagens de programação são derivados da própria Inglês, 96 00:04:51,700 --> 00:04:55,750 veremos que há algum padrão formas de representação e pseudocódigo 97 00:04:55,750 --> 00:04:57,150 também o código de programação. 98 00:04:57,150 --> 00:05:00,200 Então, como você começa a ver mesmo o mais simples exemplos atuais, perceber estes 99 00:05:00,200 --> 00:05:02,160 mesmos padrões se repitam na próxima semana. 100 00:05:02,160 --> 00:05:04,710 >> Então pseudocódigo era algum tipo da língua semelhante 101 00:05:04,710 --> 00:05:06,170 uma linguagem de programação. 102 00:05:06,170 --> 00:05:09,260 E o primeiro exemplo que vi visualmente escrita era um presente. 103 00:05:09,260 --> 00:05:12,870 Foi apenas um programa de três passos, o objectivo dos quais foi a contagem do número 104 00:05:12,870 --> 00:05:15,650 de pessoas em um dormitório para esse vídeo na quarta-feira. 105 00:05:15,650 --> 00:05:19,040 Mas houve alguns aspectos interessantes deste programa simples. 106 00:05:19,040 --> 00:05:20,320 >> E isso vai ser temas recorrentes. 107 00:05:20,320 --> 00:05:22,930 Portanto, para aqueles que não estão familiarizados com este, um, nós introduzimos uma variável. 108 00:05:22,930 --> 00:05:25,650 E, provavelmente, todos nesta sala é familiarizado com uma variável no 109 00:05:25,650 --> 00:05:27,250 contexto da álgebra. 110 00:05:27,250 --> 00:05:31,190 Mas aqui na programação, variáveis são, um, pode ser 111 00:05:31,190 --> 00:05:32,220 chamado de qualquer coisa que nós queremos. 112 00:05:32,220 --> 00:05:33,620 Estamos usando n como um contador. 113 00:05:33,620 --> 00:05:37,490 Mas poderíamos usar o contador de palavras, ou, como você verá, mais qualquer frase que 114 00:05:37,490 --> 00:05:40,240 que você pode gostar tanto tempo como é descritiva, mas é realmente apenas uma 115 00:05:40,240 --> 00:05:41,250 recipiente de armazenamento. 116 00:05:41,250 --> 00:05:44,170 É um pedaço de memória, um certo número de bits, e varia por computador, como 117 00:05:44,170 --> 00:05:47,020 muitos bits há que compor essa variável. 118 00:05:47,020 --> 00:05:48,450 >> Mas podemos colocar valores nele. 119 00:05:48,450 --> 00:05:50,740 Até agora, nós só colocar números. 120 00:05:50,740 --> 00:05:52,290 Mas podemos colocar palavras reais. 121 00:05:52,290 --> 00:05:53,420 Nós podemos colocar parágrafos. 122 00:05:53,420 --> 00:05:54,560 Podemos colocar imagens - 123 00:05:54,560 --> 00:05:57,860 qualquer coisa, realmente, podemos representar com zeros e uns, que pode colocar em 124 00:05:57,860 --> 00:05:59,820 esta noção de nível superior de uma variável. 125 00:05:59,820 --> 00:06:01,350 >> Então, muito para a frente lá. 126 00:06:01,350 --> 00:06:02,210 E isso é uma linha. 127 00:06:02,210 --> 00:06:05,340 Mas muito rapidamente transferiu-se de uma linha para realmente fazer 128 00:06:05,340 --> 00:06:06,600 algo com essa variável. 129 00:06:06,600 --> 00:06:10,330 E na linha de três, atualizamos N. Nós incrementado N. E nós poderíamos escrever este 130 00:06:10,330 --> 00:06:11,330 qualquer número de maneiras. 131 00:06:11,330 --> 00:06:14,460 Mas talvez o mais óbvio é só para dizer, definir N igual a 132 00:06:14,460 --> 00:06:16,440 N é qualquer que seja mais 1. 133 00:06:16,440 --> 00:06:17,740 Então, esse era o nosso incremento. 134 00:06:17,740 --> 00:06:18,740 >> Entretanto, verificou-se um ciclo. 135 00:06:18,740 --> 00:06:20,720 E este, também, é, provavelmente, bastante intuitivo. 136 00:06:20,720 --> 00:06:24,250 Um loop é apenas algo em um programa que acontece de novo e mais uma vez, alguns 137 00:06:24,250 --> 00:06:25,190 tipo de ciclo. 138 00:06:25,190 --> 00:06:29,300 E esta frase-chave aqui, para cada um, é realmente muito comum durante a maior parte 139 00:06:29,300 --> 00:06:32,300 linguagens de programação, incluindo os veremos no curso. 140 00:06:32,300 --> 00:06:35,850 Toda vez que você ver a palavra, ele normalmente transmite a idéia de que um 141 00:06:35,850 --> 00:06:38,410 loop, algo cíclico, está prestes a acontecer. 142 00:06:38,410 --> 00:06:40,980 >> Mas é importante notar uma outro detalhe sintática. 143 00:06:40,980 --> 00:06:44,660 O fato de terceira linha, há realmente recuado por ter atingido a 144 00:06:44,660 --> 00:06:46,920 barra de espaço algumas vezes é proposital. 145 00:06:46,920 --> 00:06:49,870 Porque convenção humana é tal que, quando você está fazendo algo de novo e 146 00:06:49,870 --> 00:06:54,860 de novo, de forma cíclica, tal como preconizado na linha dois, você travessão qualquer coisa que pertenceu 147 00:06:54,860 --> 00:06:58,880 ao circuito apenas para deixar claro que é linha de três e não, por exemplo, 148 00:06:58,880 --> 00:07:01,910 A linha de quatro ou cinco, se houvesse linhas para, ou cinco, que são 149 00:07:01,910 --> 00:07:03,010 parte do que loops. 150 00:07:03,010 --> 00:07:07,340 Portanto, este recuo simples transmite a idéia básica. 151 00:07:07,340 --> 00:07:09,390 >> Então, nós aplicamos esse algoritmo, Agora, para alguns exemplos. 152 00:07:09,390 --> 00:07:12,620 E isto, também, o exemplo simples no mundo real. 153 00:07:12,620 --> 00:07:15,440 Mas vai ser representante da como você faria para testar a sua 154 00:07:15,440 --> 00:07:17,500 próprios programas cada vez mais complexos. 155 00:07:17,500 --> 00:07:21,050 Você tenta algumas situações, alguns representantes de insumos, e veja se você 156 00:07:21,050 --> 00:07:22,180 obter os resultados desejados. 157 00:07:22,180 --> 00:07:25,090 >> Portanto, este exemplo tinha duas pessoas sentado na sala do dormitório. 158 00:07:25,090 --> 00:07:27,170 À esquerda está o mesmo código pseudo. 159 00:07:27,170 --> 00:07:30,800 E esta é uma captura de tela do próprio último passo da aplicação do presente 160 00:07:30,800 --> 00:07:35,270 algoritmo para essas entradas, onde existe duas pessoas na sala e, 161 00:07:35,270 --> 00:07:39,190 lembrar, como percorrer linhas um, e dois, e três, e dois 162 00:07:39,190 --> 00:07:41,000 e três e feito - 163 00:07:41,000 --> 00:07:44,870 até o final desse algoritmo, tivemos realmente contava os dois companheiros que estão 164 00:07:44,870 --> 00:07:45,360 no quarto. 165 00:07:45,360 --> 00:07:47,190 >> Então procuramos outro exemplo. 166 00:07:47,190 --> 00:07:48,990 E nós dissemos que se houver zero de pessoas na sala? 167 00:07:48,990 --> 00:07:50,490 É este código ainda correto? 168 00:07:50,490 --> 00:07:51,305 E de fato era. 169 00:07:51,305 --> 00:07:55,240 Acontece que a linha dois e, assim, a linha de três ou 170 00:07:55,240 --> 00:07:56,620 não vai executar. 171 00:07:56,620 --> 00:07:59,790 Eles não vão acontecer em todos porque eles não são apenas aplicáveis ​​se 172 00:07:59,790 --> 00:08:01,210 há zero de pessoas na sala. 173 00:08:01,210 --> 00:08:02,300 >> Mas não é um grande negócio. 174 00:08:02,300 --> 00:08:06,620 Linha de uma N inicializado para zero, assim apesar de apenas uma linha da presente 175 00:08:06,620 --> 00:08:10,930 programa, na verdade, acaba sendo útil, ainda produz a resposta correta, como 176 00:08:10,930 --> 00:08:13,780 indicado pela laranja zero no fundo. 177 00:08:13,780 --> 00:08:16,300 Mas, então, decidimos que era tipo de algoritmo estúpido. 178 00:08:16,300 --> 00:08:17,060 Foi muito lento. 179 00:08:17,060 --> 00:08:19,720 Certamente, eu posso fazer duas, quatro, seis, oito, dez, quando 180 00:08:19,720 --> 00:08:20,990 contagem de pessoas em uma sala. 181 00:08:20,990 --> 00:08:25,030 >> Então, nós tweaked o algoritmo, o pseudocódigo, para dizer, agora na linha dois, 182 00:08:25,030 --> 00:08:29,710 para cada par de pessoas na sala, proceder para, na linha três, incremento 183 00:08:29,710 --> 00:08:32,200 pelos dois em cada iteração. 184 00:08:32,200 --> 00:08:35,530 Então, que teria trabalhado aqui para este par de pessoas na sala. 185 00:08:35,530 --> 00:08:38,530 >> Mas então, se você começar a pensar sobre isto, e não demorou muito para 186 00:08:38,530 --> 00:08:40,710 perceber, espere um minuto é vai quebrar, quebra 187 00:08:40,710 --> 00:08:42,679 em que caso simples? 188 00:08:42,679 --> 00:08:45,500 Se há três pessoas na sala, ou, mais geralmente, quando há uma 189 00:08:45,500 --> 00:08:47,660 número ímpar de pessoas no quarto, incluindo um. 190 00:08:47,660 --> 00:08:50,390 Nós perderíamos essa pessoa aqui, porque não existem tais pares. 191 00:08:50,390 --> 00:08:58,510 Então, nós rapidamente abordada por vez introduzindo o adicional 192 00:08:58,510 --> 00:09:02,560 construções de programação ao código pseudo. 193 00:09:02,560 --> 00:09:04,955 >> Assim, uma condição, que chamamos , ou um galho. 194 00:09:04,955 --> 00:09:08,420 E tem a intenção de transmitir, visualmente, o idéia de ramo, uma bifurcação na estrada 195 00:09:08,420 --> 00:09:11,080 onde você pode fazer isso ou, talvez, algo mais. 196 00:09:11,080 --> 00:09:15,750 E, de fato, estamos face a este problema, adicionando a linha 4, dizendo que, na verdade, a 197 00:09:15,750 --> 00:09:20,820 o fim, se uma pessoa permanece, então vá em frente e conte-los especiais. 198 00:09:20,820 --> 00:09:24,460 Então você meio que caso especial los, de modo para falar, de modo que agora podemos lidar com 199 00:09:24,460 --> 00:09:27,810 tanto um número par de pessoas e um número ímpar de pessoas. 200 00:09:27,810 --> 00:09:30,260 >> Agora, existem várias maneiras poderíamos ter expressado isso. 201 00:09:30,260 --> 00:09:33,590 E, francamente, eu poderia ter sido ainda mais nit exigente quando ele veio para a minha escolha de 202 00:09:33,590 --> 00:09:35,040 Inglês para o pseudocódigo. 203 00:09:35,040 --> 00:09:36,970 Mas pelo menos o espírito de a idéia é transmitida. 204 00:09:36,970 --> 00:09:40,725 Se você entregou esse código para um amigo que não está no CS, ou nunca tomou 205 00:09:40,725 --> 00:09:44,560 CS, as probabilidades são de que eles poderiam descobrir, dado três pessoas na sala, como 206 00:09:44,560 --> 00:09:46,870 contar as pessoas com base sobre estas instruções. 207 00:09:46,870 --> 00:09:49,920 E isso é tudo que realmente queremos alcançar com pseudocódigo, de alguma forma 208 00:09:49,920 --> 00:09:54,300 padronizar como vamos sobre representando idéias para que possamos 209 00:09:54,300 --> 00:09:56,670 começam a fazer mais complicado coisa ainda. 210 00:09:56,670 --> 00:09:58,845 >> Então isso nos leva então, de hoje, ao código real. 211 00:09:58,845 --> 00:10:01,950 Começamos a programar hoje, embora em um ambiente amigável. 212 00:10:01,950 --> 00:10:05,940 E então nós transição muito rapidamente para uma sintaxe mais misterioso, mas que 213 00:10:05,940 --> 00:10:10,340 que você verá é fundamentalmente o mesmo que as idéias vão ver manifestado com 214 00:10:10,340 --> 00:10:11,990 esta outra língua hoje. 215 00:10:11,990 --> 00:10:13,920 Ele só vai olhar um pouco diferente. 216 00:10:13,920 --> 00:10:16,590 >> Então, ao invés de apenas chamar esse código, eu sou vai ser um pouco mais preciso 217 00:10:16,590 --> 00:10:20,170 e dizer que, doravante, quando se escreve uma programa, você está escrevendo código fonte. 218 00:10:20,170 --> 00:10:21,990 É uma espécie de como pseudocódigo. 219 00:10:21,990 --> 00:10:26,540 Mas vamos ver, não é uma espécie de frouxo quando se trata de escolher as palavras 220 00:10:26,540 --> 00:10:27,310 que você usa. 221 00:10:27,310 --> 00:10:31,300 Quando for programar em uma linguagem, você tem para usar as palavras, as frases, 222 00:10:31,300 --> 00:10:36,020 a sintaxe, que outras pessoas decidiram representar 223 00:10:36,020 --> 00:10:37,240 que a linguagem particular. 224 00:10:37,240 --> 00:10:38,510 Então pseudocodes é com você. 225 00:10:38,510 --> 00:10:42,330 Uma linguagem de programação real como C, como vamos ver, eventualmente, é 226 00:10:42,330 --> 00:10:43,590 padronizada por outras pessoas. 227 00:10:43,590 --> 00:10:45,590 >> Então, como é que vamos escrever algum código fonte? 228 00:10:45,590 --> 00:10:46,810 Bem, eu estou indo para ir em frente e fazer isso. 229 00:10:46,810 --> 00:10:49,100 Eu estou indo para ir em frente e abrir uma janela aqui. 230 00:10:49,100 --> 00:10:50,210 Mais sobre isso na próxima semana. 231 00:10:50,210 --> 00:10:52,300 Mas este é um dispositivo chamado o aparelho CS50. 232 00:10:52,300 --> 00:10:55,480 Estou executando um software no meu Mac, mas você pode fazer a mesma coisa 233 00:10:55,480 --> 00:11:00,580 em um computador Windows, que está a dar me a ilusão de executar um diferente 234 00:11:00,580 --> 00:11:03,700 sistema operacional completamente certo aqui em uma janela no meu Mac. 235 00:11:03,700 --> 00:11:06,790 Acabei completo exibido para que você não realmente ver o Mac OS agora. 236 00:11:06,790 --> 00:11:08,340 >> Este é um sistema operativo chamado Linux. 237 00:11:08,340 --> 00:11:09,300 É muito popular. 238 00:11:09,300 --> 00:11:10,120 É muito rápido. 239 00:11:10,120 --> 00:11:12,950 É muito livre, o que tornou muito atraente, especialmente no 240 00:11:12,950 --> 00:11:13,970 mundo comercial. 241 00:11:13,970 --> 00:11:17,200 E mais para que no final do semestre, quando usamos Linux um pouco 242 00:11:17,200 --> 00:11:21,230 programação para web e hospedagem de sites e projetos reais. 243 00:11:21,230 --> 00:11:24,910 Então, agora, só sei que esta é uma área de trabalho que significou a olhar vagamente 244 00:11:24,910 --> 00:11:26,750 familiar para Windows e Mac OS. 245 00:11:26,750 --> 00:11:29,110 Ele só tem alguns nomes diferentes e ícones para as coisas. 246 00:11:29,110 --> 00:11:32,510 Mas esta é a assim chamada CS50 aparelho, uma máquina virtual que, 247 00:11:32,510 --> 00:11:35,310 partir da próxima semana, vocês vão executado dentro de uma janela em 248 00:11:35,310 --> 00:11:36,960 seu Mac ou PC. 249 00:11:36,960 --> 00:11:39,760 >> Para hoje, eu vou abrir o mais simples dos programas. 250 00:11:39,760 --> 00:11:41,110 É chamado gedit. 251 00:11:41,110 --> 00:11:42,565 E este é apenas um editor gráfico. 252 00:11:42,565 --> 00:11:44,695 É uma espécie de como o Microsoft Word, mas simples. 253 00:11:44,695 --> 00:11:47,110 É o tipo de texto como edição ou notepad. 254 00:11:47,110 --> 00:11:50,280 É apenas um programa muito simples, com que para escrever palavras na tela. 255 00:11:50,280 --> 00:11:54,510 É só assim que acontece que se eu economizar arquivos que eu crio quando este programa 256 00:11:54,510 --> 00:11:59,860 em uma extensão especial como. c, ao invés de. doc ou. xls, ou qualquer outra coisa 257 00:11:59,860 --> 00:12:04,190 você está familiarizado com, eu posso realmente criar programas usando o mesmo esta simples 258 00:12:04,190 --> 00:12:05,130 editor de texto. 259 00:12:05,130 --> 00:12:05,770 >> Então deixe-me fazer isso. 260 00:12:05,770 --> 00:12:09,330 Deixe-me ir em frente e salve este apresentar pela primeira vez como hello.c. 261 00:12:09,330 --> 00:12:12,350 E, novamente, essa interface de usuário será tornar-se familiar para você rapidamente. 262 00:12:12,350 --> 00:12:14,160 Mas, por enquanto, só estou digitando em um nome de arquivo. 263 00:12:14,160 --> 00:12:17,410 Vou guardá-lo em meu John Diretório home Harvard. 264 00:12:17,410 --> 00:12:20,810 E agora eu tenho este guia que indica Estou realmente edição 265 00:12:20,810 --> 00:12:23,070 um arquivo chamado hello.c. 266 00:12:23,070 --> 00:12:24,510 Então, nada de muito interessante ainda. 267 00:12:24,510 --> 00:12:26,000 >> E agora ele vai ficar muito enigmática. 268 00:12:26,000 --> 00:12:28,370 Eu vou ampliar, apenas por isso é mais visível. 269 00:12:28,370 --> 00:12:35,780 E eu vou começar a escrever incluir stdio.h, int main, vazio, aberto encaracolado 270 00:12:35,780 --> 00:12:40,140 cinta, um, dois, três, quatro espaços de recuo, f impressão, para impressão 271 00:12:40,140 --> 00:12:44,450 algo formatado, entre aspas, "Olá, mundo" barra invertida, n, próximo 272 00:12:44,450 --> 00:12:49,640 citação, parêntese fechado, ponto e vírgula, entrar retrocesso, retrocesso, retrocesso, 273 00:12:49,640 --> 00:12:52,310 backspace, fechou encaracolado cinta - 274 00:12:52,310 --> 00:12:53,350 Tenho programado. 275 00:12:53,350 --> 00:12:57,380 >> Tudo bem que esta é uma super simples programa, na verdade, o programa que 276 00:12:57,380 --> 00:12:59,070 Alguém começa a programação com. 277 00:12:59,070 --> 00:13:02,300 E tudo o que faz, por toda a sua complexidade, é imprimir no 278 00:13:02,300 --> 00:13:04,160 tela, adivinhem? 279 00:13:04,160 --> 00:13:04,910 Olá, mundo. 280 00:13:04,910 --> 00:13:07,500 Mas não é suficiente apenas escrever um programa. 281 00:13:07,500 --> 00:13:08,155 Portanto, este é o código. 282 00:13:08,155 --> 00:13:11,300 Este é o código-fonte em uma linguagem chamada c. 283 00:13:11,300 --> 00:13:14,380 Ele salvou atualmente em um arquivo chamado hello.c. 284 00:13:14,380 --> 00:13:16,180 >> Agora olhe para o fundo da tela aqui. 285 00:13:16,180 --> 00:13:17,890 Mais sobre isso, mais uma vez, em próximas semanas. 286 00:13:17,890 --> 00:13:19,570 Mas isso é o que vamos chamar uma janela de terminal. 287 00:13:19,570 --> 00:13:21,290 É um piscar, preto e indicação branco. 288 00:13:21,290 --> 00:13:24,390 É uma espécie de interface antiga escola um computador que, geralmente, não faz 289 00:13:24,390 --> 00:13:27,050 usar um mouse ou outro elementos gráficos. 290 00:13:27,050 --> 00:13:28,320 Ele só usa o teclado. 291 00:13:28,320 --> 00:13:30,970 E eu posso digitar comandos em esta piscando rápida. 292 00:13:30,970 --> 00:13:33,820 >> E para fins de hoje, eu sou apenas vai digitar o seguinte - 293 00:13:33,820 --> 00:13:35,610 Olá fazer. 294 00:13:35,610 --> 00:13:39,370 E esse programa, faça, é apenas um programa que, no mundo real, estes 295 00:13:39,370 --> 00:13:40,690 dias, teríamos um duplo clique em. 296 00:13:40,690 --> 00:13:44,580 Mas nesta interface para hoje, estamos vai digitar o seu nome neste prompt. 297 00:13:44,580 --> 00:13:47,980 Olá fazer é, literalmente, indo para me fazer um programa chamado Olá. 298 00:13:47,980 --> 00:13:51,360 E vai fazê-lo, observando para um arquivo, apenas 299 00:13:51,360 --> 00:13:53,460 padrão, chamado hello.c. 300 00:13:53,460 --> 00:13:57,260 Vai assumir Eu quero um programa C por natureza, de como este computador 301 00:13:57,260 --> 00:13:58,230 é configurada. 302 00:13:58,230 --> 00:13:59,550 >> Então, vá em frente e aperte enter. 303 00:13:59,550 --> 00:14:02,050 Eu vejo alguma saída enigmática, mas isso vai se tornar muito 304 00:14:02,050 --> 00:14:03,330 familiarizado antes do tempo. 305 00:14:03,330 --> 00:14:06,870 Isso aconteceu para executar um compilador, mais em que, em um momento, chamado Clang. 306 00:14:06,870 --> 00:14:09,080 Mas agora, eu tenho apenas mais um piscar pedir. 307 00:14:09,080 --> 00:14:13,060 E eu posso ir em frente agora e digite dot reduzir, por razões que não interessam, vamos 308 00:14:13,060 --> 00:14:14,730 voltar para a próxima semana - 309 00:14:14,730 --> 00:14:15,910 Olá. 310 00:14:15,910 --> 00:14:19,650 >> Então, todo esse esforço, até agora, apenas para escrever a mais simples de programas que, 311 00:14:19,650 --> 00:14:22,640 assim que eu aperte Enter, faz isso. 312 00:14:22,640 --> 00:14:24,510 Então, eu escrevi meu primeiro programa. 313 00:14:24,510 --> 00:14:27,500 Então, eu estou deliberadamente zombando neste programa muito simples 314 00:14:27,500 --> 00:14:28,540 por um par de razões. 315 00:14:28,540 --> 00:14:31,990 Um deles, é difícil ficar animado sobre a tomada de uma classe se 316 00:14:31,990 --> 00:14:33,430 este é o fim do jogo. 317 00:14:33,430 --> 00:14:37,100 >> Mas mais do que isso, há uma monte de distrações aqui. 318 00:14:37,100 --> 00:14:40,640 A primeira vez que você aprender a programar, para aqueles que menos confortável, e 319 00:14:40,640 --> 00:14:43,410 até eu, de volta ao dia, quando eu vi algo parecido com isso - você pode tipo 320 00:14:43,410 --> 00:14:46,500 da figura que, tudo bem, este está em um Olá mundo da impressão. 321 00:14:46,500 --> 00:14:47,860 Mas há tanta distração. 322 00:14:47,860 --> 00:14:52,110 Há muito sintaxe na tela que fica no caminho de muito 323 00:14:52,110 --> 00:14:54,170 idéias simples, caso contrário, simples,. 324 00:14:54,170 --> 00:14:56,700 >> Então, o que vamos fazer hoje é que estamos vai deixar de lado C e vir 325 00:14:56,700 --> 00:14:57,630 de volta para que na segunda-feira. 326 00:14:57,630 --> 00:15:00,860 E nós estamos indo para usar uma gráfica linguagem de programação chamada arranhões. 327 00:15:00,860 --> 00:15:04,470 Isto é uma linguagem de programação, que eu aludido na quarta-feira, que vai 328 00:15:04,470 --> 00:15:08,870 para nos permitir fazer o mesmo tipo de coisa mas fechar os olhos, para hoje, 329 00:15:08,870 --> 00:15:12,270 para as chaves, os parênteses, o ponto e vírgula, e todas estas estúpidas 330 00:15:12,270 --> 00:15:15,680 distrações que ficam no caminho, em Neste primeiro dia, de algum básico, bem 331 00:15:15,680 --> 00:15:17,230 idéias interessantes. 332 00:15:17,230 --> 00:15:21,350 >> Então, para esse fim, eu vou de volta para o meu desktop aqui e 333 00:15:21,350 --> 00:15:25,890 apresentar-lhe a alternativa de que programa, que vai procurar um 334 00:15:25,890 --> 00:15:30,790 coisinha acender isso. 335 00:15:30,790 --> 00:15:33,930 É assim que vamos implementar essa mesmo programa de hoje - dois quebra-cabeça 336 00:15:33,930 --> 00:15:37,710 peças que, quando interligados e clicado, vai dizer para o mundo, 337 00:15:37,710 --> 00:15:39,000 Olá mundo. 338 00:15:39,000 --> 00:15:41,200 >> Então, vamos realmente ir lá. 339 00:15:41,200 --> 00:15:44,965 Então, eu estou indo para ir em frente e abrir uma site conhecido como scratch.mit.edu. 340 00:15:44,965 --> 00:15:47,980 341 00:15:47,980 --> 00:15:52,040 E isso vai me levar este site aqui. 342 00:15:52,040 --> 00:15:54,660 De antemão, eu tenho registrado neste website e os primeiros problemas que 343 00:15:54,660 --> 00:15:55,910 irá orientá-lo através de alguns destes passos. 344 00:15:55,910 --> 00:15:58,930 Eu estou indo para ir em frente e clique na minha pasta do zero aqui. 345 00:15:58,930 --> 00:16:00,720 >> E isso vai me mostrar alguns projetos que eu tenho 346 00:16:00,720 --> 00:16:02,570 efectivamente criado antecipadamente. 347 00:16:02,570 --> 00:16:05,860 E verifica-se que esta gráfica linguagem de programação não é só ir 348 00:16:05,860 --> 00:16:08,480 para nos deixar programa arrastando e soltando essas peças de quebra-cabeça, você 349 00:16:08,480 --> 00:16:09,730 Nem sequer precisa de um software especial. 350 00:16:09,730 --> 00:16:13,190 Está tudo embutido dentro de um navegador para que você pode fazer isso, em teoria, em 351 00:16:13,190 --> 00:16:16,810 seus computadores agora, como alguns de vocês Pode muito bem ser, sem necessidade 352 00:16:16,810 --> 00:16:19,870 software como o aparelho CS50, o que virá na próxima semana. 353 00:16:19,870 --> 00:16:24,200 >> Então, eu estou indo para ir até o canto superior aqui e clique em Criar. 354 00:16:24,200 --> 00:16:27,840 E em um momento em que eu estou indo para obter um espaço em branco tela através da qual eu possa começar 355 00:16:27,840 --> 00:16:30,380 programação neste gráfica ambiente de programação. 356 00:16:30,380 --> 00:16:36,140 Mas desta vez, ele vai ser muito, muito mais simples do que realmente fazê-lo. 357 00:16:36,140 --> 00:16:41,560 Então, em um momento, quando o Wi-Fi coopera, agora temos esta tela. 358 00:16:41,560 --> 00:16:44,870 Então, um rápido passeio verbal, mas ouso dizer, Certamente quando você mergulhar no 359 00:16:44,870 --> 00:16:46,840 primeiro conjunto de problemas, você vai acho isso tudo muito 360 00:16:46,840 --> 00:16:48,315 acessível e bastante intuitiva. 361 00:16:48,315 --> 00:16:50,900 Mas vamos pintar um quadro mental apenas por um momento. 362 00:16:50,900 --> 00:16:54,620 >> Então, sob este aviso dizendo save mudanças, você está prestes a ver nada. 363 00:16:54,620 --> 00:16:55,570 Este é um sprite. 364 00:16:55,570 --> 00:16:56,630 É um personagem. 365 00:16:56,630 --> 00:17:00,740 E ele vive o que vamos chamar um palco, este grande retângulo branco em 366 00:17:00,740 --> 00:17:03,120 que ele pode mover para cima, para baixo, para a esquerda, direito, e fazer, realmente, 367 00:17:03,120 --> 00:17:04,670 outros tipos de ações. 368 00:17:04,670 --> 00:17:08,780 >> Enquanto isso, no meio deste usuário interface, temos um monte de 369 00:17:08,780 --> 00:17:09,750 peças do puzzle. 370 00:17:09,750 --> 00:17:14,060 E você vai ver que eles dizem coisas como movimentar 10 passos, virou-se de 15 graus, 371 00:17:14,060 --> 00:17:15,550 ponto em uma determinada direção. 372 00:17:15,550 --> 00:17:17,910 Mas há categorias de quarteirões até aqui. 373 00:17:17,910 --> 00:17:21,410 Então, se eu ir para aparência, você vai ver que há outras peças do puzzle que 374 00:17:21,410 --> 00:17:25,530 aparentemente, vai contar este cit para dizer Olá, para pensar, para mostrar 375 00:17:25,530 --> 00:17:26,780 se, esconder-se. 376 00:17:26,780 --> 00:17:30,830 Se eu descer para Sounds, verifica-se há maneiras de reproduzir sons como miau, 377 00:17:30,830 --> 00:17:32,670 parar todos os sons, tocar um tambor. 378 00:17:32,670 --> 00:17:36,530 >> Assim, longa história curta, há um todo monte de peças de quebra-cabeça que permitem que você 379 00:17:36,530 --> 00:17:40,920 para dizer este gato, ou qualquer número de outros personagens, o que fazer. 380 00:17:40,920 --> 00:17:43,850 Mas para fazer tudo isso acontecer você precisamos para iniciar a programação. 381 00:17:43,850 --> 00:17:48,090 E esta grande caixa branca ou caixa cinza, em do lado direito, este é o lugar onde 382 00:17:48,090 --> 00:17:50,170 Vou realmente arrastar e soltar as peças do puzzle. 383 00:17:50,170 --> 00:17:54,320 Esse é o meu texto em branco janela equivalente. 384 00:17:54,320 --> 00:17:57,070 >> Então, eu estou indo para ir em frente e clique Controlar no meio. 385 00:17:57,070 --> 00:17:58,540 Ou melhor, deixe-me começar sob Eventos. 386 00:17:58,540 --> 00:18:01,530 Sob banco Eventos, você verá uma algumas coisas que são deliberadamente 387 00:18:01,530 --> 00:18:05,240 curvada na parte superior, de tal maneira que eles provavelmente não entrelaçar no 388 00:18:05,240 --> 00:18:06,710 topo das peças do puzzle. 389 00:18:06,710 --> 00:18:10,160 E isso é porque eles demarcar o início de um programa, o início de um 390 00:18:10,160 --> 00:18:11,910 script, por assim dizer. 391 00:18:11,910 --> 00:18:16,290 Então, se eu ir em frente e arrastar, quando verde bandeira clicado por aqui, e então eu 392 00:18:16,290 --> 00:18:18,060 quer dizer que este gato algo em primeiro lugar. 393 00:18:18,060 --> 00:18:20,510 Então, eu estou indo para ir em o painel parece. 394 00:18:20,510 --> 00:18:24,060 E eu estou indo para ir em frente e agarrar a dizer Olá bloco, e arrastar e soltar, 395 00:18:24,060 --> 00:18:27,220 e solte para que ele automaticamente interliga lá. 396 00:18:27,220 --> 00:18:28,640 >> E, em seguida, perceber que posso clique sobre o texto. 397 00:18:28,640 --> 00:18:31,960 E eu posso substituí-lo a ser mais específicas como, por exemplo, Olá mundo. 398 00:18:31,960 --> 00:18:36,340 E agora temos o programa que eu reivindico é equivalente a mais do que muito 399 00:18:36,340 --> 00:18:39,670 programa arcano eu implementei C em um momento atrás. 400 00:18:39,670 --> 00:18:43,130 >> Se eu passar por cima agora para o lado esquerdo, notar que há um grande sinal de parada 401 00:18:43,130 --> 00:18:44,520 e uma bandeira verde grande. 402 00:18:44,520 --> 00:18:46,390 Deixe-me aproximar para maior clareza. 403 00:18:46,390 --> 00:18:49,390 E quando eu clico agora esta bandeira verde, você provavelmente pode adivinhar o que esta primeira 404 00:18:49,390 --> 00:18:51,920 programa agora vai fazer. 405 00:18:51,920 --> 00:18:55,420 Portanto, há, também, que estamos programando, mas não estamos realmente encalhar 406 00:18:55,420 --> 00:18:58,980 em alguns desses sintático, detalhes minuciosos. 407 00:18:58,980 --> 00:19:01,120 >> Mas vamos tentar algo um pouco mais interessante. 408 00:19:01,120 --> 00:19:04,840 Deixe-me ir para a minha pasta do risco aqui. 409 00:19:04,840 --> 00:19:10,210 E, na verdade, deixe-me então deixe-me abrir um programa separado aqui por apenas um 410 00:19:10,210 --> 00:19:17,830 momento, maximizar essa janela, Abrir Arquivo, e eu estou indo para ir para hoje 411 00:19:17,830 --> 00:19:18,620 diretório de origem. 412 00:19:18,620 --> 00:19:21,660 Como sempre, você vai encontrar, hoje e para a frente, que de todos os exemplos de hoje 413 00:19:21,660 --> 00:19:25,225 são acessíveis dentro de site do curso. 414 00:19:25,225 --> 00:19:31,170 >> E eu estou indo para ir em frente aqui e escolher se algo um pouco diferente. 415 00:19:31,170 --> 00:19:33,970 Este aqui, por que Preciso de um voluntário. 416 00:19:33,970 --> 00:19:36,850 Quem gostaria de ter uma lâmpada de mesa hoje? 417 00:19:36,850 --> 00:19:40,600 OK, e quanto a alguém um pouco - você está no fim? 418 00:19:40,600 --> 00:19:42,124 Vamos lá para baixo. 419 00:19:42,124 --> 00:19:47,230 Agora, gostaria de participar, ou apenas dizer que começar com a lâmpada de mesa? 420 00:19:47,230 --> 00:19:48,190 >> VANESSA: [inaudível]. 421 00:19:48,190 --> 00:19:48,465 >> DAVID MALAN: OK. 422 00:19:48,465 --> 00:19:49,610 Excelente, o que é que você chama? 423 00:19:49,610 --> 00:19:49,990 Vanessa? 424 00:19:49,990 --> 00:19:50,570 David. 425 00:19:50,570 --> 00:19:51,390 Prazer em conhecê lo. 426 00:19:51,390 --> 00:19:53,840 Então vamos lá para cima e Vanessa vai para assumir o controle da minha 427 00:19:53,840 --> 00:19:55,490 teclado por apenas um momento. 428 00:19:55,490 --> 00:19:57,850 E o que eu fiz aqui, apenas para o tempo de bem, como eu percebi o 429 00:19:57,850 --> 00:20:01,070 Wi-Fi foi um pouco lento, risco, o ambiente de programação que estamos 430 00:20:01,070 --> 00:20:04,110 utilizando, também pode ser baixado e executado em seu computador local. 431 00:20:04,110 --> 00:20:06,360 Então o que eu fiz antes da palestra, em Caso isso aconteça, é que eu baixei 432 00:20:06,360 --> 00:20:09,120 todos os arquivos que estamos prestes a jogar com para que eles possam rodar um pouco mais 433 00:20:09,120 --> 00:20:10,840 rapidamente aqui no meu laptop. 434 00:20:10,840 --> 00:20:13,460 É por isso que agora eu estou vendo uma interface específica-Mac. 435 00:20:13,460 --> 00:20:15,510 >> Então, eu estou indo para ir em frente e abrir um presente. 436 00:20:15,510 --> 00:20:18,400 Eu estou indo para ir em frente agora e tela cheia da janela. 437 00:20:18,400 --> 00:20:21,740 E, como você verá, nós podemos muito rapidamente, como esse estudante fez, de um 438 00:20:21,740 --> 00:20:26,360 seus antecessores, ir do Olá mundo para uma muito mais atraente 439 00:20:26,360 --> 00:20:27,020 aplicação. 440 00:20:27,020 --> 00:20:28,180 Então, aqui estão as instruções. 441 00:20:28,180 --> 00:20:29,500 Oh, e nós temos uma outra coisa. 442 00:20:29,500 --> 00:20:31,640 Eu pensei que seria divertido, uma vez que, normalmente, estaremos filmando 443 00:20:31,640 --> 00:20:32,440 As câmeras desta forma. 444 00:20:32,440 --> 00:20:34,100 Eu pensei que seria divertido se, Vanessa, poderíamos ver o mundo 445 00:20:34,100 --> 00:20:35,120 através de seus olhos. 446 00:20:35,120 --> 00:20:36,670 Portanto, temos aqui alguns vidros do Google. 447 00:20:36,670 --> 00:20:39,290 >> [Suspiros espantado] 448 00:20:39,290 --> 00:20:41,610 >> DAVID MALAN: Nós só estará dando distância de mesa lâmpadas hoje. 449 00:20:41,610 --> 00:20:43,530 >> [Risos] 450 00:20:43,530 --> 00:20:45,260 >> Então deixe-me sugestão isso. 451 00:20:45,260 --> 00:20:49,340 Tudo bem, então tocar isso. 452 00:20:49,340 --> 00:20:51,910 OK, Vidro, gravar um vídeo. 453 00:20:51,910 --> 00:20:55,700 454 00:20:55,700 --> 00:20:56,950 Tudo bem, Vanessa? 455 00:20:56,950 --> 00:21:00,940 456 00:21:00,940 --> 00:21:05,560 Agora, como um aparte que não tem nada fazer com o Scratch, se você olhar 457 00:21:05,560 --> 00:21:08,540 ligeiramente para cima e para a direita, você vai ver o vidro literal, e você deve 458 00:21:08,540 --> 00:21:09,650 ver uma pequena janela retangular. 459 00:21:09,650 --> 00:21:11,500 Você verá todos os seus colegas sendo filmado agora? 460 00:21:11,500 --> 00:21:11,840 Sim. 461 00:21:11,840 --> 00:21:12,340 >> VANESSA: sim. 462 00:21:12,340 --> 00:21:12,920 >> DAVID MALAN: OK. 463 00:21:12,920 --> 00:21:15,170 Então, isso é bom. 464 00:21:15,170 --> 00:21:16,660 Vamos lançar este filme depois. 465 00:21:16,660 --> 00:21:18,460 Por enquanto, volte sua atenção para a tela aqui. 466 00:21:18,460 --> 00:21:20,990 E o que o seu antecessor fez é colocar algumas instruções na tela 467 00:21:20,990 --> 00:21:22,670 apenas usando um programa de pintura. 468 00:21:22,670 --> 00:21:25,040 Então você vai, em um momento, pressione a barra de espaço para começar. 469 00:21:25,040 --> 00:21:27,790 E, em seguida, algumas peças do puzzle vão para começar a mover-se na tela. 470 00:21:27,790 --> 00:21:30,900 E você quer bater as teclas de seta, apenas como em DDR real, de acordo 471 00:21:30,900 --> 00:21:32,740 com as coisas alinhando com essas setas. 472 00:21:32,740 --> 00:21:33,020 >> VANESSA: OK. 473 00:21:33,020 --> 00:21:33,800 >> DAVID MALAN: Você jogar este antes. 474 00:21:33,800 --> 00:21:34,140 >> VANESSA: Yeah. 475 00:21:34,140 --> 00:21:37,330 >> DAVID MALAN: Tudo bem, Vanessa, vá em frente e levá-la embora. 476 00:21:37,330 --> 00:22:53,082 >> [MUSIC - KAYNE WEST, "Stronger"] 477 00:22:53,082 --> 00:22:57,080 >> [Aplausos] 478 00:22:57,080 --> 00:22:59,750 >> DAVID MALAN: Então, vamos agora dar um passo disso. 479 00:22:59,750 --> 00:23:01,230 Então, claramente, isso é o fim do jogo. 480 00:23:01,230 --> 00:23:02,880 O jogo final não é Olá mundo. 481 00:23:02,880 --> 00:23:05,520 Mas você não tem que necessariamente fazer coisas que são tão interativo. 482 00:23:05,520 --> 00:23:06,810 Você também pode fazer animação. 483 00:23:06,810 --> 00:23:10,790 Assim, por exemplo, outro de sua sucessores fizeram este programa, 484 00:23:10,790 --> 00:23:14,100 que conta uma história de mais de ele implementou um jogo. 485 00:23:14,100 --> 00:23:19,180 Então deixe-me ir em frente e abrir aqui um programa em nossa mesmo diretório de origem 486 00:23:19,180 --> 00:23:20,300 a partir de hoje. 487 00:23:20,300 --> 00:23:26,990 Esta chamada, e vamos começar com uma história de amor cookie. 488 00:23:26,990 --> 00:23:30,750 >> E para não fazer isso também acadêmico, mas, como você vê este, acho que a 489 00:23:30,750 --> 00:23:34,030 mesmo que daqueles simples conceitos de programação com quem falamos 490 00:23:34,030 --> 00:23:34,630 sobre até agora - 491 00:23:34,630 --> 00:23:39,250 variáveis ​​e loops, e as condições, que seu antecessor, provavelmente, usar apenas 492 00:23:39,250 --> 00:23:41,090 para implementar algumas das as visualizações. 493 00:23:41,090 --> 00:23:41,760 Você vê aqui. 494 00:23:41,760 --> 00:23:44,118 Então, eu dar-lhe uma história de amor cookie. 495 00:23:44,118 --> 00:24:06,030 >> [MUSIC - GREEN DAY, "feriado"] 496 00:24:06,030 --> 00:24:08,022 >> [CRASH] 497 00:24:08,022 --> 00:24:09,272 >> [MUSIC - as tartarugas, 'Happy Together "] 498 00:24:09,272 --> 00:24:58,328 499 00:24:58,328 --> 00:25:00,560 >> DAVID MALAN: Tudo bem, então não há, tivemos uma história de amor cookie. 500 00:25:00,560 --> 00:25:01,360 Mas, mesmo lá - 501 00:25:01,360 --> 00:25:01,755 >> [Aplausos] 502 00:25:01,755 --> 00:25:08,110 >> DAVID MALAN: Tudo bem, até lá, pensar, como aqueles corações passou de 503 00:25:08,110 --> 00:25:10,410 a parte inferior para a parte superior da tela, houve realmente um pouco de 504 00:25:10,410 --> 00:25:11,440 aleatoriedade acontecendo. 505 00:25:11,440 --> 00:25:14,150 E, de fato, vamos ver que, mesmo no simples de ambientes, como o 506 00:25:14,150 --> 00:25:18,180 Zero, como em C, pode gerar números aleatórios, ou a ilusão de 507 00:25:18,180 --> 00:25:21,110 números aleatórios, de modo que o jogo é um pouco mais interessante do que poderia 508 00:25:21,110 --> 00:25:23,390 se você tivesse absolutamente codificado tudo. 509 00:25:23,390 --> 00:25:26,360 >> No movimento que você vê, não há algum tipo de resposta. 510 00:25:26,360 --> 00:25:28,840 Tão logo o homem de gengibre toca a mulher do pão, ela 511 00:25:28,840 --> 00:25:30,000 parece afastar-se. 512 00:25:30,000 --> 00:25:33,580 E assim, de fato, você pode implementar, em a maioria das linguagens de programação, a noção 513 00:25:33,580 --> 00:25:38,680 de eventos, em que se uma mão toca por outro lado, que pode provocar alguma 514 00:25:38,680 --> 00:25:41,270 de seu código-fonte realmente executar. 515 00:25:41,270 --> 00:25:43,740 Você pode ouvir para tal as coisas na tela. 516 00:25:43,740 --> 00:25:47,310 >> Então, vamos dar um rápido passeio, então, alguns dos blocos de construção que podemos usar 517 00:25:47,310 --> 00:25:48,790 para atingir alguns desses objetivos. 518 00:25:48,790 --> 00:25:51,630 Então aqui está o que vamos doravante chamar um comunicado. 519 00:25:51,630 --> 00:25:55,030 A declaração passa a ser roxo em Zero, um pouco mais ou menos assim, 520 00:25:55,030 --> 00:25:56,120 mas isso é arbitrário. 521 00:25:56,120 --> 00:26:00,140 A afirmação é apenas uma peça do puzzle ou, mais geralmente, uma instrução, que 522 00:26:00,140 --> 00:26:03,370 diz ao computador para fazer alguma coisa, uma declaração. 523 00:26:03,370 --> 00:26:04,680 >> Então, aqui está um exemplo simples. 524 00:26:04,680 --> 00:26:05,930 Diga Olá mundo. 525 00:26:05,930 --> 00:26:08,180 Outro poderia ser esperar um segundo. 526 00:26:08,180 --> 00:26:10,840 Portanto, esta parte do enigma, que é apoiado em risco, vamos deixar o seu 527 00:26:10,840 --> 00:26:13,050 caracteres pausa para alguns número de segundos. 528 00:26:13,050 --> 00:26:15,330 Isto, também, é apenas uma declaração. 529 00:26:15,330 --> 00:26:18,640 >> Aqui ao lado, temos um outro mais um interessante jogo de som miado, e 530 00:26:18,640 --> 00:26:21,480 uma pequena seta significa que em risco, este é um menu drop-down. 531 00:26:21,480 --> 00:26:22,590 Assim, você pode importar sons. 532 00:26:22,590 --> 00:26:25,095 Você pode gravar sons e fazer outra coisas divertidas em zero. 533 00:26:25,095 --> 00:26:28,450 E que, também, embora, no final do dia, é apenas uma declaração. 534 00:26:28,450 --> 00:26:31,250 Mas agora vamos introduzir uma mais interessante peça, que conhecido como um 535 00:26:31,250 --> 00:26:32,630 Expressão booleana. 536 00:26:32,630 --> 00:26:35,180 Capital B, em homenagem um sujeito chamado Bool. 537 00:26:35,180 --> 00:26:39,500 >> E uma expressão booleana é apenas um parte do enigma, ou, mais geralmente, a 538 00:26:39,500 --> 00:26:42,980 pedaço de informação que é verdadeira ou falsa - 539 00:26:42,980 --> 00:26:45,830 um ou zero, sim ou não. 540 00:26:45,830 --> 00:26:48,420 Por isso, é apenas um daqueles dois opostos. 541 00:26:48,420 --> 00:26:52,840 Assim, uma tal expressão booleana no mundo do Scratch parece que esse azul 542 00:26:52,840 --> 00:26:53,560 Puzzle Piece. 543 00:26:53,560 --> 00:26:56,735 E está fazendo uma pergunta, rato para baixo, e que pode ser, de 544 00:26:56,735 --> 00:26:58,430 Claro, verdadeiro ou falso. 545 00:26:58,430 --> 00:27:01,710 Assim, com esta peça de quebra-cabeça em risco, bem, você vai ser capaz de detectar se um 546 00:27:01,710 --> 00:27:05,490 decifrar se o mouse é, de fato, sendo pressionado pela interação humana 547 00:27:05,490 --> 00:27:06,550 com o seu programa. 548 00:27:06,550 --> 00:27:08,860 >> Este é um pouco mais abstrato, mas estas duas caixas brancas 549 00:27:08,860 --> 00:27:09,740 são apenas para números. 550 00:27:09,740 --> 00:27:12,950 Assim, você pode fazer coisas como esta é número menor do que os outros? 551 00:27:12,950 --> 00:27:16,180 E se assim for, risco vai se comportar uma forma ou de outra. 552 00:27:16,180 --> 00:27:17,505 Este é um pouco mais gráfica. 553 00:27:17,505 --> 00:27:21,840 É, se o sprite, se o gato, por exemplo, é realmente tocando o 554 00:27:21,840 --> 00:27:22,510 ponteiro do mouse. 555 00:27:22,510 --> 00:27:25,780 Então, se a cabeça pequena seta está pairando sobre o gato, então esta 556 00:27:25,780 --> 00:27:28,030 peça do puzzle irá avaliar para true. 557 00:27:28,030 --> 00:27:31,870 Será verdade, caso em que, se usar esta expressão booleana, como veremos 558 00:27:31,870 --> 00:27:36,340 ver em um momento, em um ramo, você pode quer fazer isso, ou você pode fazer isso, 559 00:27:36,340 --> 00:27:39,940 tanto como se tivéssemos uma condição que marcada, há mais uma última pessoa 560 00:27:39,940 --> 00:27:40,460 no quarto? 561 00:27:40,460 --> 00:27:42,070 Se assim for, adicione um. 562 00:27:42,070 --> 00:27:44,430 Caso contrário, não se preocupe mais. 563 00:27:44,430 --> 00:27:48,650 >> Assim, uma expressão booleana também pode ser e-ed juntos ou ou-juntos ed. 564 00:27:48,650 --> 00:27:53,120 Assim, você pode combinar expressões booleanas e dizer isso e isso deve ser verdadeiro para 565 00:27:53,120 --> 00:27:54,710 a coisa toda para ser verdade. 566 00:27:54,710 --> 00:27:56,520 E aqui está um exemplo do mundo mais real. 567 00:27:56,520 --> 00:28:00,060 Se você já usou CS50 Cursos de fazer curso compras, essas caixas de seleção 568 00:28:00,060 --> 00:28:03,520 lá, onde se verifique que a caixa ao lado aos cursos, que vão dizer, sim, 569 00:28:03,520 --> 00:28:07,860 só me mostrar cursos para os quais o valor Q é 4.5 ou superior. 570 00:28:07,860 --> 00:28:10,610 Se você desmarque-a, não, não preocupar com isso. 571 00:28:10,610 --> 00:28:13,910 Ou da mesma forma, à direita, não faz Conflito com cursos que estou tendo, 572 00:28:13,910 --> 00:28:15,650 isso é verdadeiro ou falso. 573 00:28:15,650 --> 00:28:16,715 É apenas uma expressão booleana. 574 00:28:16,715 --> 00:28:20,080 Então todo esse tempo, quando você já usou sites com caixas de seleção, você é apenas 575 00:28:20,080 --> 00:28:23,570 alternando o equivalente a um valor booleano expressão ligado e desligado. 576 00:28:23,570 --> 00:28:25,270 >> Então, de que forma você usa isso? 577 00:28:25,270 --> 00:28:28,820 Bem, em Scratch, veremos em um momento que existem condições que 578 00:28:28,820 --> 00:28:29,560 semelhante a este. 579 00:28:29,560 --> 00:28:33,130 E esse é o tipo de sensata, porque muito como em pseudocódigo, nós recuado 580 00:28:33,130 --> 00:28:38,550 o tipo de peças de quebra-cabeça em forma de U, a média que nada dentro do referido U é 581 00:28:38,550 --> 00:28:41,390 vai executar, ou não, dependendo de onde ele é. 582 00:28:41,390 --> 00:28:45,310 Então, se a expressão booleana, então tudo o que está dentro vai ser executado. 583 00:28:45,310 --> 00:28:46,800 >> Enquanto isso, há um bloco if / else. 584 00:28:46,800 --> 00:28:50,320 Então se você quer um ramo que vai este ou daquela maneira, risco nos dá isso. 585 00:28:50,320 --> 00:28:54,500 E por essa lógica, agora, apesar de que peça do puzzle é claramente muito pequeno 586 00:28:54,500 --> 00:28:57,400 para calçar outra coisa dentro dele, as peças do puzzle do zero, eles são 587 00:28:57,400 --> 00:28:58,150 só vai crescer. 588 00:28:58,150 --> 00:29:01,370 Quando você arrastar e soltar sobre algo, ela só vai crescer para caber tudo o que 589 00:29:01,370 --> 00:29:02,510 é que você está tentando fazer. 590 00:29:02,510 --> 00:29:07,230 >> Assim, podemos ter duas dessas coisas e fazer um garfo de três vias na estrada para 591 00:29:07,230 --> 00:29:11,300 que você quer fazer isso, ou aquilo, ou essa outra coisa apenas aninhando-los 592 00:29:11,300 --> 00:29:12,070 desse modo. 593 00:29:12,070 --> 00:29:14,370 Claro que, se você fizer isso também muito, ele começa a ficar feio. 594 00:29:14,370 --> 00:29:17,660 Mas nesse ponto, você está, na verdade, provavelmente não programação muito bem. 595 00:29:17,660 --> 00:29:20,490 E, de modo que será recorrente tema, também, que de estilo. 596 00:29:20,490 --> 00:29:22,790 Quão bem realmente formatar o seu código? 597 00:29:22,790 --> 00:29:24,580 Ou como bem você projetar seu código? 598 00:29:24,580 --> 00:29:26,430 Mas mais sobre isso no futuro. 599 00:29:26,430 --> 00:29:27,470 >> E agora temos loops. 600 00:29:27,470 --> 00:29:30,310 Há um loop para sempre agradável em Scratch que literalmente significa que - fazer 601 00:29:30,310 --> 00:29:32,710 tudo o que está dentro deste novo e de novo, e de novo. 602 00:29:32,710 --> 00:29:35,880 Você pode ser mais concreto e dizer: faça o seguinte coisa 10 vezes. 603 00:29:35,880 --> 00:29:37,620 Você também pode usar variáveis. 604 00:29:37,620 --> 00:29:40,260 Você pode chegar a qualquer nome em que pouco cair para baixo e dizer, me dê um 605 00:29:40,260 --> 00:29:43,190 variável chamada n e definir é igual a algum valor. 606 00:29:43,190 --> 00:29:44,910 E então você pode ter funções. 607 00:29:44,910 --> 00:29:46,850 Mas mais sobre aqueles em apenas um momento. 608 00:29:46,850 --> 00:29:49,140 >> Deixe-me voltar para a minha Raspe interface. 609 00:29:49,140 --> 00:29:50,970 E deixe-me ir em frente neste momento. 610 00:29:50,970 --> 00:29:56,660 E vamos em frente e abrir, digamos, um exemplo de - 611 00:29:56,660 --> 00:29:58,740 isso é um pouco mais interessante. 612 00:29:58,740 --> 00:30:00,750 Deixe-me ir em frente, e, na verdade, deixe-me fazer isso sozinho. 613 00:30:00,750 --> 00:30:01,960 Eu não preciso de abrir um presente. 614 00:30:01,960 --> 00:30:03,390 Deixe-me ir para Arquivo, Novo. 615 00:30:03,390 --> 00:30:04,740 Eu estou indo para ir a eventos. 616 00:30:04,740 --> 00:30:08,460 Eu estou indo para ir quando bandeira verde clicado, e eu estou indo para ir para som. 617 00:30:08,460 --> 00:30:11,590 E eu estou indo para arrastar e soltar este peça do puzzle, jogar meow som. 618 00:30:11,590 --> 00:30:12,580 Ele travas juntos. 619 00:30:12,580 --> 00:30:14,327 E agora, se eu clicar na bandeira verde - 620 00:30:14,327 --> 00:30:16,260 >> [MEOW SOUND] 621 00:30:16,260 --> 00:30:17,500 >> DAVID MALAN: Adorable. 622 00:30:17,500 --> 00:30:21,560 OK, então agora vamos fazer algo um pouco mais lógico apenas para demonstrar que 623 00:30:21,560 --> 00:30:22,760 podemos, por agora. 624 00:30:22,760 --> 00:30:25,550 Eu estou indo para destravar isso esse cara. 625 00:30:25,550 --> 00:30:27,000 Eu estou indo para ir para controle. 626 00:30:27,000 --> 00:30:28,770 E eu vou pegar uma doença. 627 00:30:28,770 --> 00:30:30,600 Então, se alguma coisa, então. 628 00:30:30,600 --> 00:30:32,020 Então é assim que ele olha lá. 629 00:30:32,020 --> 00:30:33,890 Então eu preciso de uma expressão booleana. 630 00:30:33,890 --> 00:30:38,130 E deixe-me ir em frente e dizer: deixe-me ir para os operadores. 631 00:30:38,130 --> 00:30:40,270 Eu vou fazer algo um pouco mathy, apenas por diversão. 632 00:30:40,270 --> 00:30:43,600 Eu estou indo para ir aqui e dizer que, se algo que é menor do que qualquer outra coisa, 633 00:30:43,600 --> 00:30:45,030 vá em frente e fazer alguma coisa. 634 00:30:45,030 --> 00:30:46,890 Então, agora, você sabe, um bloco ao acaso. 635 00:30:46,890 --> 00:30:51,620 Então, observe como, se eu passar o mouse sobre este coisa aqui, que se encaixará lá. 636 00:30:51,620 --> 00:30:54,090 >> Então, agora, o aviso prévio, eu estou começando a fazer algo já mais logicamente 637 00:30:54,090 --> 00:30:54,650 interessante. 638 00:30:54,650 --> 00:30:59,720 Se um número aleatório entre 1 e 10 é menor do que, digamos seis. 639 00:30:59,720 --> 00:31:03,670 Se eu escolher seis, que, essencialmente, meios, faça o seguinte com 50% 640 00:31:03,670 --> 00:31:03,980 probabilidade. 641 00:31:03,980 --> 00:31:05,460 É como jogar uma moeda. 642 00:31:05,460 --> 00:31:07,330 Agora, eu posso fazer algo condicionalmente. 643 00:31:07,330 --> 00:31:10,800 E esse algo eu vou fazer é jogar o som. 644 00:31:10,800 --> 00:31:14,280 Então, agora, quando eu clico na tela bandeira, é como jogar uma moeda. 645 00:31:14,280 --> 00:31:14,610 >> [MEOW SOUND] 646 00:31:14,610 --> 00:31:17,160 >> DAVID MALAN: Foi cabeças ou outros enfeites lá. 647 00:31:17,160 --> 00:31:17,920 Vamos fazê-lo novamente. 648 00:31:17,920 --> 00:31:18,860 >> [MEOW SOUND] 649 00:31:18,860 --> 00:31:19,790 >> DAVID MALAN: Heads novamente. 650 00:31:19,790 --> 00:31:20,280 >> [MEOW SOUND] 651 00:31:20,280 --> 00:31:21,500 >> DAVID MALAN: Heads novamente. 652 00:31:21,500 --> 00:31:22,631 Ufa, OK. 653 00:31:22,631 --> 00:31:24,720 Caudas esse tempo. 654 00:31:24,720 --> 00:31:29,545 Assim, 50% do tempo, se fizermos isso infinitamente longo, teremos 50% de miados 655 00:31:29,545 --> 00:31:32,180 e 50% silêncios. 656 00:31:32,180 --> 00:31:34,850 Portanto, há, apenas um edifício básico bloco que nos permite fazer isso. 657 00:31:34,850 --> 00:31:37,710 Mas este é o tipo de tedioso que eu tenho para manter a clicar nesse botão. 658 00:31:37,710 --> 00:31:39,810 Então, vamos simplesmente arrastar e jogar todos os que estão longe. 659 00:31:39,810 --> 00:31:42,270 Se você arrastou para o meio, eles simplesmente apagar-se. 660 00:31:42,270 --> 00:31:43,760 >> Deixe-me ir até controlar. 661 00:31:43,760 --> 00:31:46,060 Deixe-me ir para sempre. 662 00:31:46,060 --> 00:31:49,952 E desta vez, eu vou fazer minorly algo irritante. 663 00:31:49,952 --> 00:31:51,560 >> [Risos] 664 00:31:51,560 --> 00:31:53,370 >> DAVID MALAN: E deixe-me ir em frente e fazer o controle. 665 00:31:53,370 --> 00:31:57,260 Espere um segundo, só assim não é muito irritante. 666 00:31:57,260 --> 00:31:59,870 >> [MEOW SOUND] 667 00:31:59,870 --> 00:32:00,970 >> DAVID MALAN: Isso não é natural. 668 00:32:00,970 --> 00:32:01,861 OK. 669 00:32:01,861 --> 00:32:04,510 >> [MEOW SOUND] 670 00:32:04,510 --> 00:32:06,406 >> DAVID MALAN: E observe o que está, bom sobre o risco, para aqueles de vocês que 671 00:32:06,406 --> 00:32:09,210 ter experiência prévia de programação, você Não é necessário para iniciar e parar. 672 00:32:09,210 --> 00:32:10,060 Você não precisa compilar. 673 00:32:10,060 --> 00:32:13,210 Você acabou de mudar, eo programa irá adaptar-se dinamicamente. 674 00:32:13,210 --> 00:32:14,620 Então, isso está ficando um pouco interessante. 675 00:32:14,620 --> 00:32:16,930 Mas vamos dar um passo adiante. 676 00:32:16,930 --> 00:32:19,760 Deixe-me ir em frente e conseguir livrar desse programa. 677 00:32:19,760 --> 00:32:23,300 >> [MEOW SOUND] 678 00:32:23,300 --> 00:32:25,520 >> DAVID MALAN: Isso é o que vamos chamar um bug em risco. 679 00:32:25,520 --> 00:32:26,770 Ele não deveria continuar fazendo esse som. 680 00:32:26,770 --> 00:32:28,340 Então, nós vamos dizer-lhe para parar. 681 00:32:28,340 --> 00:32:30,435 Tudo bem, então agora eu estou indo para ir para - 682 00:32:30,435 --> 00:32:32,180 Vou deixar MIT sei. 683 00:32:32,180 --> 00:32:35,160 Nós vamos passar por cima aqui para sempre. 684 00:32:35,160 --> 00:32:37,240 E agora, eu quero fazer alguma coisa uma e outra vez. 685 00:32:37,240 --> 00:32:38,760 Eu estou indo para ir para Controle. 686 00:32:38,760 --> 00:32:41,570 >> E vamos ver, eu estou indo para arrastar minha condição se lá. 687 00:32:41,570 --> 00:32:42,850 Então agora perceber a lógica. 688 00:32:42,850 --> 00:32:46,430 Quando a bandeira verde é clicado, fazer algo para sempre, mas só faça isso 689 00:32:46,430 --> 00:32:48,890 alguma coisa, se essa outra coisa é verdade. 690 00:32:48,890 --> 00:32:51,480 Eu estou indo para ir, vamos dizer, sentindo. 691 00:32:51,480 --> 00:32:54,430 E eu estou indo para ir em frente e escolher tocar e soltá-lo lá. 692 00:32:54,430 --> 00:32:55,930 Essa é uma expressão booleana. 693 00:32:55,930 --> 00:32:57,740 >> E agora, notar, neste queda menu, há 694 00:32:57,740 --> 00:32:59,050 alguns valores pré-definidos. 695 00:32:59,050 --> 00:33:00,910 Então eu posso dizer, você está tocando a borda da tela? 696 00:33:00,910 --> 00:33:03,900 Ou você está tocando o ponteiro do mouse, a seta na tela? 697 00:33:03,900 --> 00:33:04,620 Então, eu vou fazer isso. 698 00:33:04,620 --> 00:33:08,770 E se assim for, então eu vou em frente e jogar meow som. 699 00:33:08,770 --> 00:33:11,250 Então agora eu meio que tenho a início de um jogo - 700 00:33:11,250 --> 00:33:13,110 um jogo adorável. 701 00:33:13,110 --> 00:33:14,060 >> [MEOW SOUND] 702 00:33:14,060 --> 00:33:17,250 >> DAVID MALAN: OK, uma adorável, jogo de buggy. 703 00:33:17,250 --> 00:33:20,770 Deixe-me esperar, vamos dizer, um segundo ali. 704 00:33:20,770 --> 00:33:24,910 Agora jogar novamente, clicando em a bandeira verde. 705 00:33:24,910 --> 00:33:27,860 >> [MEOW SOUND] 706 00:33:27,860 --> 00:33:30,460 >> DAVID MALAN: Então agora é como acariciar um gato. 707 00:33:30,460 --> 00:33:31,850 >> [MEOW SOUND] 708 00:33:31,850 --> 00:33:34,460 >> DAVID MALAN: Tudo bem, agora isso que eu fazia antes. 709 00:33:34,460 --> 00:33:39,250 Muito tarde, torna-se uma espécie de fácil de fazer coisas estúpidas. 710 00:33:39,250 --> 00:33:40,240 Então deixe-me entrar aqui. 711 00:33:40,240 --> 00:33:43,720 Vamos dizer que foi acariciar o gato. 712 00:33:43,720 --> 00:33:46,600 Vamos agora abrir Não acariciar o gato. 713 00:33:46,600 --> 00:33:48,330 Agora, se jogarmos um presente, você pode imaginar, se você estiver 714 00:33:48,330 --> 00:33:49,650 olhando para a tela - 715 00:33:49,650 --> 00:33:51,090 >> [MEOW SOUND] 716 00:33:51,090 --> 00:33:52,170 >> DAVID MALAN: Agora, se eu acariciar o gato 717 00:33:52,170 --> 00:33:55,420 >> [ROAR LION'S] 718 00:33:55,420 --> 00:33:57,260 >> DAVID MALAN: Então, na verdade, não acariciar o gato nesse caso. 719 00:33:57,260 --> 00:34:01,350 Então, agora só temos um exemplo de uma ramo que vai em duas direções. 720 00:34:01,350 --> 00:34:03,130 Agora, deixe-me ir em frente e abrir uma outra aqui. 721 00:34:03,130 --> 00:34:07,120 Esta, também, entre a fonte arquivos de código para o dia. 722 00:34:07,120 --> 00:34:13,199 Então deixe-me voltar para a minha Fonte diretório e entrar, vamos escolher 723 00:34:13,199 --> 00:34:15,610 esse cara aqui e veja o que é diferente. 724 00:34:15,610 --> 00:34:17,449 >> Uau, tudo bem, então agora ele está ficando um pouco mais complexa. 725 00:34:17,449 --> 00:34:21,300 E antes de ver o que esse cara faz, vamos tentar inferir, a partir do programa 726 00:34:21,300 --> 00:34:22,219 no lado direito. 727 00:34:22,219 --> 00:34:25,590 E agora scratch permite claramente nos tem vários scripts, múltiplos 728 00:34:25,590 --> 00:34:29,730 programas associados a um duende, com um personagem, e, aparentemente, 729 00:34:29,730 --> 00:34:31,760 ambos estão indo para executar em sintonia. 730 00:34:31,760 --> 00:34:35,570 Porque ambos os programas começa com ao verde bandeira cliques, este é 731 00:34:35,570 --> 00:34:38,650 insinuando um tópico mais avançado, com que alguns de vocês podem estar familiarizados, 732 00:34:38,650 --> 00:34:40,580 conhecido como threading, ou multi-threading. 733 00:34:40,580 --> 00:34:44,400 >> Acontece que, longa história curta, computadores hoje pode essencialmente fazer múltipla 734 00:34:44,400 --> 00:34:45,270 as coisas de uma vez. 735 00:34:45,270 --> 00:34:48,659 Ou pode fazer uma coisa de cada vez para rápido que você nem percebe que 736 00:34:48,659 --> 00:34:50,150 ele está realmente fazendo um coisa de cada vez. 737 00:34:50,150 --> 00:34:53,320 Mas, por enquanto, vamos supor que ambos estes programas vão executar a 738 00:34:53,320 --> 00:34:54,310 ao mesmo tempo. 739 00:34:54,310 --> 00:34:57,350 E notem, ambos têm sempre Puzzle Pieces. 740 00:34:57,350 --> 00:35:01,270 Assim, ambos estão indo para continuar funcionando até que eu bati o sinal vermelho. 741 00:35:01,270 --> 00:35:02,100 >> Então, o que eles vão fazer? 742 00:35:02,100 --> 00:35:06,030 No lado esquerdo, eu sou aparentemente declarar uma variável chamada silenciado. 743 00:35:06,030 --> 00:35:09,030 Então, eu não chamá-lo de algo como chato como N. Chamei-mudo esta 744 00:35:09,030 --> 00:35:10,240 tempo para transmitir um significado. 745 00:35:10,240 --> 00:35:11,780 Eu defini-lo igual a zero. 746 00:35:11,780 --> 00:35:16,200 Vamos pensar que, como falso, ou vamos pensar nisso como False. 747 00:35:16,200 --> 00:35:17,490 >> Agora, para sempre fazer o seguinte. 748 00:35:17,490 --> 00:35:23,280 Se a barra de espaço do teclado é pressionado, então se mudo igual a zero, 749 00:35:23,280 --> 00:35:25,930 em seguida, mudar mudo para igual um. 750 00:35:25,930 --> 00:35:27,580 Else, definir silenciado a zero. 751 00:35:27,580 --> 00:35:30,530 Então, logicamente, apesar de que é um todo monte de peças de quebra-cabeça que é 752 00:35:30,530 --> 00:35:33,160 apenas dizendo que, quando eu bater a barra de espaço, o que devo fazer para a variável 753 00:35:33,160 --> 00:35:34,750 chamado silenciado? 754 00:35:34,750 --> 00:35:37,170 Mudá-la de um a zero, ou zero a um. 755 00:35:37,170 --> 00:35:37,840 Isto é tudo. 756 00:35:37,840 --> 00:35:40,740 Então, é como ligar um interruptor de luz ligado ou desligado e lembrando, com um 757 00:35:40,740 --> 00:35:42,330 variável, o que eu fiz isso. 758 00:35:42,330 --> 00:35:45,990 >> Enquanto isso, do lado direito, em termos genéricos, qual é o propósito de 759 00:35:45,990 --> 00:35:47,547 o script do lado direito? 760 00:35:47,547 --> 00:35:48,860 >> ALUNO: Para reproduzir o som do leão do mar. 761 00:35:48,860 --> 00:35:52,500 >> DAVID MALAN: Para reproduzir som Sea Lion, se ele não está mudo, por 762 00:35:52,500 --> 00:35:53,480 natureza dessa variável. 763 00:35:53,480 --> 00:35:57,360 Então, nós estamos compartilhando estado, por assim dizer, compartilhamento de informações entre estes dois 764 00:35:57,360 --> 00:36:00,540 os scripts, pois, notar aqui, estamos sempre fazendo o seguinte. 765 00:36:00,540 --> 00:36:04,620 Se mudo é zero, por isso, se não é silenciado - se silenciado é falsa, então jogar 766 00:36:04,620 --> 00:36:05,980 este som do leão de mar. 767 00:36:05,980 --> 00:36:09,930 E pensa consigo mesmo, oi, oi, oi, para de dois segundos, esperar um momento, e então 768 00:36:09,930 --> 00:36:11,140 clique aqui. 769 00:36:11,140 --> 00:36:15,150 Então, se nós vamos agora aqui à esquerda, de onde é esse cara, e bateu o 770 00:36:15,150 --> 00:36:16,662 bandeira verde, 771 00:36:16,662 --> 00:36:30,260 >> [SEA LION SOUND] 772 00:36:30,260 --> 00:36:31,910 >> DAVID MALAN: Em que ponto este ficar muito chato? 773 00:36:31,910 --> 00:36:33,440 Porque isso só vai durar para sempre. 774 00:36:33,440 --> 00:36:36,490 Então, às vezes, loops infinitos, por assim dizer, são deliberadas. 775 00:36:36,490 --> 00:36:41,140 Mas, neste caso, assim como I pressione a barra de espaço, ele pára. 776 00:36:41,140 --> 00:36:42,800 Agora o programa não parou. 777 00:36:42,800 --> 00:36:44,760 Ele ainda está em execução nestes loops. 778 00:36:44,760 --> 00:36:46,540 Mas se eu tiver a barra de espaço novamente - 779 00:36:46,540 --> 00:36:47,851 >> [SEA LION SOUND] 780 00:36:47,851 --> 00:36:49,650 >> DAVID MALAN: Ele vai pegar de onde ele parou. 781 00:36:49,650 --> 00:36:53,240 Portanto, não há uma maneira de fazer algo de novo e de novo, mas, que 782 00:36:53,240 --> 00:36:54,920 tempo, só condicionalmente. 783 00:36:54,920 --> 00:36:58,940 Bem, já que estamos nesse sentido de fazer coisas de novo e de novo, deixe-me 784 00:36:58,940 --> 00:37:01,370 entrar em outro exemplo disso aqui. 785 00:37:01,370 --> 00:37:04,370 Este chamaremos contar carneirinhos. 786 00:37:04,370 --> 00:37:05,710 >> E observe o que esse cara faz. 787 00:37:05,710 --> 00:37:08,540 Na verdade, é um pouco mais parecido com o pseudocódigo jogamos com a 788 00:37:08,540 --> 00:37:12,230 Quarta-feira, em que ele define algumas balcão, pensar é como N novamente, para 789 00:37:12,230 --> 00:37:14,030 zero, sempre que ele faz a seguir. 790 00:37:14,030 --> 00:37:17,960 Ele diz que o valor do contador para um em segundo lugar, aguarda um segundo, e em seguida, 791 00:37:17,960 --> 00:37:19,430 altera o contador a uma. 792 00:37:19,430 --> 00:37:21,570 E, neste contexto, que só significa incrementa. 793 00:37:21,570 --> 00:37:23,250 Assim, ele adiciona um a ele. 794 00:37:23,250 --> 00:37:25,830 Portanto, esta é literalmente - 795 00:37:25,830 --> 00:37:27,890 não é bem o que pensamos como contar carneiros. 796 00:37:27,890 --> 00:37:33,120 É a ovelha fazendo a contagem, para sempre, acima de zero. 797 00:37:33,120 --> 00:37:35,560 >> Assim, podemos fazer coisas semelhantes lá, logicamente. 798 00:37:35,560 --> 00:37:37,750 Mas agora vamos tentar limpar algumas dessas coisas. 799 00:37:37,750 --> 00:37:43,440 Deixe-me ir em frente agora em uma simples exemplo, onde o nosso gato está indo só para 800 00:37:43,440 --> 00:37:44,750 começar a tossir. 801 00:37:44,750 --> 00:37:48,830 Tudo bem, então aqui temos tosse 0 - 802 00:37:48,830 --> 00:37:50,685 cientistas da computação começar contagem de 0. 803 00:37:50,685 --> 00:37:53,480 Portanto, este gato é só ir a tosse por três vezes. 804 00:37:53,480 --> 00:37:54,890 E aqui está como eu implementei isso. 805 00:37:54,890 --> 00:38:00,130 Quando a bandeira verde é clicado, tosse, esperar, tosse, espere, tosse, espere. 806 00:38:00,130 --> 00:38:02,470 E eu fiz isso apenas arrastando e soltando peças do puzzle. 807 00:38:02,470 --> 00:38:04,740 Ou se você começar a mexer com o Scratch, você verá que você pode realmente 808 00:38:04,740 --> 00:38:08,620 peças duplicar para que você possa fazer as coisas mais rapidamente, sem arrastar 809 00:38:08,620 --> 00:38:10,310 e soltando ad nauseum. 810 00:38:10,310 --> 00:38:12,680 >> Mas não estamos no melhor caminho aqui. 811 00:38:12,680 --> 00:38:15,210 Porque como posso fazê-lo tossir pela quarta vez? 812 00:38:15,210 --> 00:38:16,790 Bem, eu poderia classificar de descer aqui. 813 00:38:16,790 --> 00:38:19,420 Eu poderia duplicar e, em seguida, cole este aí. 814 00:38:19,420 --> 00:38:21,740 Como posso fazê-lo tossir pela quinta vez? 815 00:38:21,740 --> 00:38:23,230 Bem, copie e cole novamente. 816 00:38:23,230 --> 00:38:24,210 Ou arrastar e soltar novamente. 817 00:38:24,210 --> 00:38:26,920 E muito rapidamente, este programa começa para obter realmente redundante, 818 00:38:26,920 --> 00:38:28,880 muito longo, mas realmente desinteressante. 819 00:38:28,880 --> 00:38:30,120 Mas há uma maneira de limpar isso. 820 00:38:30,120 --> 00:38:33,680 Qual é a maneira mais óbvia para limpar isso? 821 00:38:33,680 --> 00:38:36,280 >> OK, então nós realmente pode realmente ir fora e, quando você bater o espaço 822 00:38:36,280 --> 00:38:37,070 bar, tê-lo tossir. 823 00:38:37,070 --> 00:38:40,150 Mas se eu quiser fazer algo repetidamente, lembre-se que nós temos 824 00:38:40,150 --> 00:38:41,310 algum controle constrói. 825 00:38:41,310 --> 00:38:43,800 Deixe-me passar esta fora do Assim, ir sob controle. 826 00:38:43,800 --> 00:38:47,340 Deixe-me só fazer uma repetição, dizer, três vezes. 827 00:38:47,340 --> 00:38:49,410 E agora deixe-me roubar dessas peças de quebra-cabeça. 828 00:38:49,410 --> 00:38:50,980 Deixe-me tirar isso aqui. 829 00:38:50,980 --> 00:38:52,400 Deixe-me jogar estes afastado completamente. 830 00:38:52,400 --> 00:38:55,400 >> E agora, eu tenho uma melhor programa concebido. 831 00:38:55,400 --> 00:38:55,920 Por quê? 832 00:38:55,920 --> 00:39:00,540 Se eu quiser alterar o número de vezes Este gato tosse, tudo o que tenho para 833 00:39:00,540 --> 00:39:05,640 fazer é mudar uma variável ou um valor, em vez de três, ou quatro, ou 834 00:39:05,640 --> 00:39:06,700 cinco ou seis. 835 00:39:06,700 --> 00:39:09,060 Ou eu poderia fazer algo de forma condicional, mesmo, com o espaço 836 00:39:09,060 --> 00:39:10,320 bar se eu quisesse. 837 00:39:10,320 --> 00:39:11,780 >> Portanto, este é um princípio geral. 838 00:39:11,780 --> 00:39:14,950 Uma vez que você começar a copiar e colar o código, se está em risco, ou em 839 00:39:14,950 --> 00:39:18,340 C, você está fazendo algo errado, o mais provável. 840 00:39:18,340 --> 00:39:21,950 Ou, pelo menos, uma vez que você superou alguns número razoável de cópias e 841 00:39:21,950 --> 00:39:24,610 pastas, você provavelmente está fazendo algo errado. 842 00:39:24,610 --> 00:39:26,740 >> Mas você sabe o quê? 843 00:39:26,740 --> 00:39:27,590 Eu realmente não gosto disso. 844 00:39:27,590 --> 00:39:28,980 Este não é o desenho mais limpo. 845 00:39:28,980 --> 00:39:32,860 Eu gostaria que houvesse uma parte do enigma chamado tossir, porque então eu não faria 846 00:39:32,860 --> 00:39:36,100 tem que implementar isso mesmo, a moda antiga, por 847 00:39:36,100 --> 00:39:38,220 tendo dizer, e esperar - 848 00:39:38,220 --> 00:39:40,320 e se eles eram apenas uma peça do puzzle tosse. 849 00:39:40,320 --> 00:39:41,330 >> Bem, eu posso realmente fazer isso. 850 00:39:41,330 --> 00:39:45,010 Deixe-me ir com mais blocos, clique em Faça um bloco, e agora eu tenho esse 851 00:39:45,010 --> 00:39:45,610 janela aqui. 852 00:39:45,610 --> 00:39:47,540 Eu vou chamar essa coisa de tosse. 853 00:39:47,540 --> 00:39:49,400 Eu estou indo para ir em frente e clique em OK. 854 00:39:49,400 --> 00:39:53,150 E agora, o aviso prévio, eu recebo uma nova partida peça que está curvada na parte superior. 855 00:39:53,150 --> 00:39:56,590 E o que eu vou fazer com isso, eu sou vai roubar esses blocos. 856 00:39:56,590 --> 00:39:57,800 Vou colocá-los aqui. 857 00:39:57,800 --> 00:40:00,490 >> E agora, com essas três partes, eu tenho implementado o que eu vou chamar um 858 00:40:00,490 --> 00:40:03,530 função ou um procedimento, ou alguns dos você pode conhecê-lo como um método. 859 00:40:03,530 --> 00:40:05,050 Pequenas diferenças entre as palavras. 860 00:40:05,050 --> 00:40:06,950 Mas, por enquanto, vamos apenas chamar isso de uma função. 861 00:40:06,950 --> 00:40:08,750 Esta é apenas uma nova peça do puzzle. 862 00:40:08,750 --> 00:40:11,000 Agora ele é implementado como esta. 863 00:40:11,000 --> 00:40:15,170 >> Mas note que zero nos deu um representação física de que toda 864 00:40:15,170 --> 00:40:16,570 bloquear aqui. 865 00:40:16,570 --> 00:40:21,930 Então, agora, eu posso simplesmente arrastar esta aqui, dizer, repita três vezes, e 866 00:40:21,930 --> 00:40:26,420 o que vai acontecer agora, quando eu jogar Nesse script, é apenas um programa 867 00:40:26,420 --> 00:40:27,500 está em execução ao mesmo tempo. 868 00:40:27,500 --> 00:40:29,880 Há apenas um quando bandeira verde clicado. 869 00:40:29,880 --> 00:40:34,010 Mas esse bloco roxo chamado tosse é efetivamente dizendo zero, cada 870 00:40:34,010 --> 00:40:38,160 vez que você ver que parte do enigma, na verdade executar estes passos que 871 00:40:38,160 --> 00:40:40,420 acontecer para implementar manualmente. 872 00:40:40,420 --> 00:40:41,410 >> Então, esse é o tipo de arrumado. 873 00:40:41,410 --> 00:40:44,650 Mas agora, acho que eu decidi, eu não quero esse gato só a tossir. 874 00:40:44,650 --> 00:40:46,660 Eu quero que ele seja capaz desprezível também. 875 00:40:46,660 --> 00:40:48,905 Bem, como poderíamos ir sobre implementação espirro? 876 00:40:48,905 --> 00:40:51,310 Bem, eu poderia muito bem fazer a mesma coisa. 877 00:40:51,310 --> 00:40:52,690 Eu poderia fazer um outro bloco. 878 00:40:52,690 --> 00:40:55,940 Eu poderia chamar este espirro, clique em OK. 879 00:40:55,940 --> 00:40:59,250 >> Então, aqui eu poderia realmente ter, deixe-me duplicar este - 880 00:40:59,250 --> 00:41:02,850 e lá é onde você deve se sentir como você provavelmente não está fazendo algo em 881 00:41:02,850 --> 00:41:03,780 o melhor caminho. 882 00:41:03,780 --> 00:41:06,670 Eu poderia dizer algo como: achoo, por um segundo. 883 00:41:06,670 --> 00:41:07,440 Espere um segundo. 884 00:41:07,440 --> 00:41:08,715 Agora eu tenho um novo bloco chamado espirro. 885 00:41:08,715 --> 00:41:10,210 E, de fato, não é. 886 00:41:10,210 --> 00:41:14,010 >> Mas isso, também, deve começar a sentir - talvez não na primeira semana de aula, mas 887 00:41:14,010 --> 00:41:15,730 pelo segundo - apenas um pouco redundante. 888 00:41:15,730 --> 00:41:17,800 Claramente, há alguma redundância aqui. 889 00:41:17,800 --> 00:41:22,090 Então deixe-me propor, em vez disso, que refinar esta definição como se segue. 890 00:41:22,090 --> 00:41:24,820 >> Deixe-me ir para o meu menu Arquivo. 891 00:41:24,820 --> 00:41:26,090 Eu não estou indo para salvar esta versão. 892 00:41:26,090 --> 00:41:29,080 Eu estou indo para ir em um dos meus arquivos premade aqui. 893 00:41:29,080 --> 00:41:31,190 E eu estou indo para ir em frente e abrir tosse 2. 894 00:41:31,190 --> 00:41:32,220 Gritos que era tosse 2. 895 00:41:32,220 --> 00:41:36,900 Deixe-me ir em frente e abrir tosse 3, que é este diretório de origem. 896 00:41:36,900 --> 00:41:42,450 Tosse 3 e observe - oh, eu disse a história na ordem errada. 897 00:41:42,450 --> 00:41:45,030 Deixe-me recuperar desta história. 898 00:41:45,030 --> 00:41:48,990 >> A história que eu queria te dizer termina com tosse 4 - 899 00:41:48,990 --> 00:41:50,270 aí está. 900 00:41:50,270 --> 00:41:54,380 E daí se eu, em vez disso, definir a maior parte do enigma chamado 901 00:41:54,380 --> 00:41:57,250 definir, diga a palavra n vezes. 902 00:41:57,250 --> 00:41:59,930 Espirro é apenas, aparentemente, em risco, achoo. 903 00:41:59,930 --> 00:42:01,680 Assim, expressá-lo como uma palavra, apenas porque essa é a 904 00:42:01,680 --> 00:42:02,750 restrição do programa. 905 00:42:02,750 --> 00:42:07,860 E a tosse é [TOSSE], mas a tosse, C-O-L-G-H. Então, isso é apenas dois 906 00:42:07,860 --> 00:42:10,820 palavras diferentes fazendo, essencialmente, a mesma coisa. 907 00:42:10,820 --> 00:42:12,820 >> Então, eu posso realmente fazer uma novo bloco como esta. 908 00:42:12,820 --> 00:42:14,220 Eu não uso essa opção de menu anterior. 909 00:42:14,220 --> 00:42:16,960 Mas quando você clique em Criar Block, você pode escolher algumas opções. 910 00:42:16,960 --> 00:42:20,900 E você pode dizer que este bloco efetivamente leva alguns insumos, caso contrário, 911 00:42:20,900 --> 00:42:24,710 conhecido como argumentos ou parâmetros, de modo que você pode modificar o comportamento de 912 00:42:24,710 --> 00:42:25,520 seu bloco. 913 00:42:25,520 --> 00:42:28,780 >> Então o que eu fiz há pouco foi Liguei para este bloco Say. 914 00:42:28,780 --> 00:42:30,880 E então eu disse, é preciso uma entrada de string. 915 00:42:30,880 --> 00:42:32,810 E agora perceber, por padrão, diz uma corda. 916 00:42:32,810 --> 00:42:35,440 A corda é apenas uma palavra, ou um frase, para os nossos propósitos. 917 00:42:35,440 --> 00:42:37,810 Mas eu só vou colocar alguns texto de espaço reservado lá, assim como em um 918 00:42:37,810 --> 00:42:40,620 site, quando você vê nome de utilizador, ou senha e, em seguida, ele desaparece quando 919 00:42:40,620 --> 00:42:41,550 você começa a digitar. 920 00:42:41,550 --> 00:42:42,720 Isso é tudo que existe. 921 00:42:42,720 --> 00:42:44,590 >> E agora eu vou adicionar uma entrada de número. 922 00:42:44,590 --> 00:42:47,180 E eu vou ligar para este n - mas isso é muito arbitrária. 923 00:42:47,180 --> 00:42:49,510 E depois é só um rótulo, apenas para fazer este bloco um pouco mais de auto- 924 00:42:49,510 --> 00:42:50,570 explicativo - 925 00:42:50,570 --> 00:42:53,010 vezes, é o que eu fiz. 926 00:42:53,010 --> 00:42:56,540 E o resultado final é que eu tenho um bloco que se parece com isso. 927 00:42:56,540 --> 00:42:58,880 >> E agora perceber, eu estou usando um bloco de repetição. 928 00:42:58,880 --> 00:43:03,480 Mas ao invés de difícil codificação três, eu sou arrastando e soltando n lá, então eu 929 00:43:03,480 --> 00:43:05,530 pode parametrizar a função. 930 00:43:05,530 --> 00:43:08,590 Eu posso fazer esta função fazer algo um número diferente de vezes baseados em 931 00:43:08,590 --> 00:43:09,410 desse valor. 932 00:43:09,410 --> 00:43:14,270 >> E observe, por exemplo, isso é o que eu fiz aqui, se eu arrastar palavra, posso dizer que não é um 933 00:43:14,270 --> 00:43:17,860 palavra codificado, mas o que é passada para um segundo. 934 00:43:17,860 --> 00:43:20,200 Enquanto isso, como faço para re-implementar tossir? 935 00:43:20,200 --> 00:43:26,980 Eu em vez definir a tosse como dizendo tosse n vezes. 936 00:43:26,980 --> 00:43:30,480 >> Assim, em breve, estou passando por isso rapidamente, mas a ideia básica é assim 937 00:43:30,480 --> 00:43:32,750 como você começa a ver em seu programa que, espere um minuto, eu fiz 938 00:43:32,750 --> 00:43:36,610 algo muito parecido com isso antes, posso fatorar alguns comum 939 00:43:36,610 --> 00:43:37,090 funcionalidade? 940 00:43:37,090 --> 00:43:41,090 Posso decompor o que estou fazendo em algumas idéias básicas? 941 00:43:41,090 --> 00:43:42,070 Isso é o que estamos fazendo aqui. 942 00:43:42,070 --> 00:43:44,830 E eu tenho empilhados essas coisas, visualmente, em cima da outra 943 00:43:44,830 --> 00:43:47,710 porque isso é prova de que idéia de começando com o binário, indo para ASCII 944 00:43:47,710 --> 00:43:51,530 fazer programas gráficos, tipo de camadas idéias cada vez mais complexas em 945 00:43:51,530 --> 00:43:52,570 topo da outra. 946 00:43:52,570 --> 00:43:53,730 >> A mesma idéia aqui. 947 00:43:53,730 --> 00:43:56,870 Comecei do zero, implementando tosse, tosse, então percebi é 948 00:43:56,870 --> 00:43:58,540 realmente apenas dizer alguma coisa. 949 00:43:58,540 --> 00:44:01,630 Então deixe-me em vez implementar o noção de dizer alguma coisa. 950 00:44:01,630 --> 00:44:05,200 E em cima disso, posso implementar achoo, ou tosse? 951 00:44:05,200 --> 00:44:07,990 E nós poderíamos fazer mais, tais variantes ainda. 952 00:44:07,990 --> 00:44:10,400 >> Assim, a partir desse princípio básico, podemos começar a fazer 953 00:44:10,400 --> 00:44:12,180 cada vez mais complexos programas. 954 00:44:12,180 --> 00:44:14,100 Deixe-me abrir um presente. 955 00:44:14,100 --> 00:44:18,020 Nós podemos realmente ter vários sprites interagindo na tela ao mesmo tempo. 956 00:44:18,020 --> 00:44:23,470 Se eu vou para o meu diretório de origem e pegar um chamado Threads, lembre-se que uma 957 00:44:23,470 --> 00:44:26,920 linha é realmente muito a capacidade de dois scripts para executar lado a 958 00:44:26,920 --> 00:44:28,350 lado, ao mesmo tempo. 959 00:44:28,350 --> 00:44:34,490 >> Observe agora, têm ambos um sprite de aves e um sprite do gato, sendo que ambos têm 960 00:44:34,490 --> 00:44:35,270 seus próprios scripts. 961 00:44:35,270 --> 00:44:37,690 Assim, o aviso prévio, quando eu clico no gato, eu recebo esses scripts. 962 00:44:37,690 --> 00:44:39,830 Quando clico no pássaro, Eu recebo esses scripts. 963 00:44:39,830 --> 00:44:42,070 Assim, cada um desses caras tem seus próprios programas. 964 00:44:42,070 --> 00:44:46,680 Quando clico agora a bandeira verde, observe que o que este programa faz é 965 00:44:46,680 --> 00:44:54,090 tenho o gato, incrivelmente lentamente, perseguir o pássaro. 966 00:44:54,090 --> 00:44:57,120 Mas o gato tem a vantagem de ter foi programado de tal maneira 967 00:44:57,120 --> 00:45:00,540 que não importa onde o pássaro é, o gato vai em direção a ele. 968 00:45:00,540 --> 00:45:02,150 >> Nós podemos jogar esse jogo muito mais rápido. 969 00:45:02,150 --> 00:45:07,750 Então, se eu estou no gato, perceber que eu sou usando, digamos mover uma passos. 970 00:45:07,750 --> 00:45:11,680 Vamos tê-lo mover-se em cinco etapas cada vez, para cinco pontos de uma vez. 971 00:45:11,680 --> 00:45:13,580 Deixe-me clica em jogar. 972 00:45:13,580 --> 00:45:14,490 >> [ROAR LION'S] 973 00:45:14,490 --> 00:45:17,170 >> DAVID MALAN: Tudo bem, agora podemos realmente dar o gato a vantagem. 974 00:45:17,170 --> 00:45:18,600 10 passos de cada vez. 975 00:45:18,600 --> 00:45:20,120 >> [ROAR LION'S] 976 00:45:20,120 --> 00:45:22,770 >> DAVID MALAN: Tudo bem, então muito rapidamente, torna-se uma pequena vantagem 977 00:45:22,770 --> 00:45:23,280 para o gato. 978 00:45:23,280 --> 00:45:25,310 Mas eu vou acenar com a mão no alguns dos detalhes. 979 00:45:25,310 --> 00:45:28,240 Mas a razão que esse caminho é começando um pouco diferente de cada vez 980 00:45:28,240 --> 00:45:29,700 é que eu estou fazendo um pouco de aleatoriedade. 981 00:45:29,700 --> 00:45:33,700 Na verdade, estou apontando o gato em um direção diferente dependendo de onde eu 982 00:45:33,700 --> 00:45:38,710 quero que ele comece a fim de que cada vez o jogo, ou a animação, é um 983 00:45:38,710 --> 00:45:39,760 pouco diferente. 984 00:45:39,760 --> 00:45:41,950 >> Agora, deixe-me apresentar um outra construção aqui. 985 00:45:41,950 --> 00:45:43,860 Portanto, neste caso, tivemos funções. 986 00:45:43,860 --> 00:45:46,950 Há também vai ser uma peça de quebra-cabeça conhecida como uma matriz ou uma lista, 987 00:45:46,950 --> 00:45:50,980 que permite armazenar vários valores dentro de uma variável. 988 00:45:50,980 --> 00:45:53,410 Vimos threads, e agora há Events. 989 00:45:53,410 --> 00:45:56,330 >> Então aqui está um evento usando esses dois caras aqui. 990 00:45:56,330 --> 00:46:02,490 E se eu abrir o arquivo chamado Eventos a partir de exemplos de hoje, vamos 991 00:46:02,490 --> 00:46:06,940 ver um programa que parece um pouco como isso. 992 00:46:06,940 --> 00:46:09,630 E agora percebe esse cara - 993 00:46:09,630 --> 00:46:11,620 para perceber que eu tenho o azul Muppet clicado - 994 00:46:11,620 --> 00:46:12,990 ele só faz o seguinte. 995 00:46:12,990 --> 00:46:15,540 Ele não tem um daqueles verdes peças do puzzle bandeira. 996 00:46:15,540 --> 00:46:18,620 Ele tem um quando eu receber evento - 997 00:46:18,620 --> 00:46:19,970 então alguma palavra arbitrária. 998 00:46:19,970 --> 00:46:21,590 Eu digitei o evento lá - 999 00:46:21,590 --> 00:46:23,740 ele vai dizer, Polo, durante dois segundos. 1000 00:46:23,740 --> 00:46:25,800 >> Assim, aqueles de vocês que estão familiarizados com este jogo pode saber 1001 00:46:25,800 --> 00:46:26,460 onde isso vai dar. 1002 00:46:26,460 --> 00:46:29,800 Se eu agora clique no Muppet laranja, o programa faz isso. 1003 00:46:29,800 --> 00:46:35,020 Para sempre, se a barra de espaço do teclado suprimida, ele vai dizer, Marco, 1004 00:46:35,020 --> 00:46:36,580 por dois segundos na tela. 1005 00:46:36,580 --> 00:46:39,590 Mas ele também vai usar isso mais sofisticado bloquear conhecido como broadcast. 1006 00:46:39,590 --> 00:46:42,270 Ele vai transmitir Citação fecha aspas, "evento". 1007 00:46:42,270 --> 00:46:47,540 >> Enquanto isso, o cara azul, aviso, é escutando entre aspas, "evento". 1008 00:46:47,540 --> 00:46:50,760 Então, de alguma forma, agora, podemos ter dois sprites interagindo. 1009 00:46:50,760 --> 00:46:53,790 E quando chegarmos à programação web, no final do prazo, da mesma forma isso vai 1010 00:46:53,790 --> 00:46:58,320 ser vantajoso ter o seu site fazer algo em resposta a, por 1011 00:46:58,320 --> 00:47:00,130 exemplo, um clique do teclado. 1012 00:47:00,130 --> 00:47:02,120 >> Então deixe-me ir em frente e pressione a barra de espaço. 1013 00:47:02,120 --> 00:47:04,020 Laranja cara diz Marco. 1014 00:47:04,020 --> 00:47:05,840 Azul cara diz Polo. 1015 00:47:05,840 --> 00:47:10,780 Se eu fizer cara de novo laranja diz Marco, azul cara diz polo. 1016 00:47:10,780 --> 00:47:14,130 Então, vamos dar um passo adiante. 1017 00:47:14,130 --> 00:47:18,790 Desta vez, iremos, provavelmente, apenas mais alguns minutos aqui. 1018 00:47:18,790 --> 00:47:19,904 Será que temos - 1019 00:47:19,904 --> 00:47:22,380 lâmpada de mesa, vamos lá para baixo. 1020 00:47:22,380 --> 00:47:24,500 Você está certo no final. 1021 00:47:24,500 --> 00:47:25,740 OK, você pode tanto vir para cima. 1022 00:47:25,740 --> 00:47:26,990 Temos luminárias para todos. 1023 00:47:26,990 --> 00:47:28,360 Vamos. 1024 00:47:28,360 --> 00:47:30,090 Eu não sei se podemos manter esta mordaça ridículo up 1025 00:47:30,090 --> 00:47:32,035 todo o semestre, no entanto. 1026 00:47:32,035 --> 00:47:33,530 Tudo bem, vamos lá para baixo. 1027 00:47:33,530 --> 00:47:40,260 >> E nesse meio tempo, temos a seguindo exemplos para puxar para cima, só para 1028 00:47:40,260 --> 00:47:45,370 acelerar as coisas agora, de tal forma que tem uma manifestação de outra 1029 00:47:45,370 --> 00:47:48,360 predecessor de vocês usando o mesmos blocos básicos de construção. 1030 00:47:48,360 --> 00:47:48,975 Qual é o seu nome? 1031 00:47:48,975 --> 00:47:49,240 >> JOHN: John. 1032 00:47:49,240 --> 00:47:49,770 >> DAVID MALAN: John. 1033 00:47:49,770 --> 00:47:50,400 Bom para mim você. 1034 00:47:50,400 --> 00:47:50,650 E? 1035 00:47:50,650 --> 00:47:51,250 >> SETZ: Setz. 1036 00:47:51,250 --> 00:47:53,130 >> DAVID MALAN: Setz, bom para mim você. 1037 00:47:53,130 --> 00:47:54,820 John, se você gostaria de vir em primeiro lugar, este é um velho 1038 00:47:54,820 --> 00:47:55,910 jogo de escola chamado Frogger. 1039 00:47:55,910 --> 00:47:57,530 Você pode usar o teclado para isso também. 1040 00:47:57,530 --> 00:48:02,425 E o objetivo é atravessar na rua e água. 1041 00:48:02,425 --> 00:48:12,700 >> [FROGGER MÚSICA E reproduz o som] 1042 00:48:12,700 --> 00:48:14,970 >> DAVID MALAN: Sinto muito, não lâmpada de mesa para você hoje. 1043 00:48:14,970 --> 00:48:19,110 Tudo bem, Setz, não é gostaria de vir em cima? 1044 00:48:19,110 --> 00:48:20,890 Tudo bem, vamos fazê-lo novamente. 1045 00:48:20,890 --> 00:48:21,430 >> SETZ: Será que eu use as setas? 1046 00:48:21,430 --> 00:48:22,360 >> DAVID MALAN: Apenas as teclas de seta. 1047 00:48:22,360 --> 00:48:23,624 Cima, baixo, esquerda, direita. 1048 00:48:23,624 --> 00:48:35,700 >> [FROGGER MÚSICA E reproduz o som] 1049 00:48:35,700 --> 00:48:37,880 >> DAVID MALAN: Vamos chamá-los consolação prêmios hoje, 1050 00:48:37,880 --> 00:48:38,950 então, muito bem feito. 1051 00:48:38,950 --> 00:48:40,690 Aqui, para ambos, John e Setz. 1052 00:48:40,690 --> 00:48:41,940 Parabéns, tudo bem. 1053 00:48:41,940 --> 00:48:46,720 1054 00:48:46,720 --> 00:48:50,620 Então, novamente, como este jogo tem, pensar sobre o que está acontecendo? 1055 00:48:50,620 --> 00:48:52,060 >> Um deles, há claramente um monte de movimento. 1056 00:48:52,060 --> 00:48:55,220 Mas vimos como, com o gato eo pássaro exemplo, como você pode fazer o 1057 00:48:55,220 --> 00:48:58,350 ilusão de movimento movendo apenas alguns número de pixels e outra vez. 1058 00:48:58,350 --> 00:49:00,280 E se você tem um bloco para sempre, você poderia ter estes 1059 00:49:00,280 --> 00:49:02,120 carros fazendo isso para sempre. 1060 00:49:02,120 --> 00:49:03,720 Temos a capacidade de tem alguma aleatoriedade. 1061 00:49:03,720 --> 00:49:06,310 Portanto, este jogo não tem que ser exatamente o mesmo de cada vez. 1062 00:49:06,310 --> 00:49:09,940 Esses registros, os carros, pode começar em tempos ligeiramente diferentes, para que o 1063 00:49:09,940 --> 00:49:12,690 jogo em si é mais interessante com cada jogo. 1064 00:49:12,690 --> 00:49:15,320 >> E Enquanto isso, vimos a capacidade para ouvir a barra de espaço. 1065 00:49:15,320 --> 00:49:18,830 Mas é evidente que, em risco, pode também ouvir para cima, baixo, esquerda, direita, e 1066 00:49:18,830 --> 00:49:20,760 realmente qualquer tecla no teclado. 1067 00:49:20,760 --> 00:49:22,200 E você também pode fazer algumas outras coisas. 1068 00:49:22,200 --> 00:49:24,660 Deixe-me ir à frente e voltar para a versão web. 1069 00:49:24,660 --> 00:49:30,280 >> Deixe-me ir para a nossa coleção de exemplos aqui. 1070 00:49:30,280 --> 00:49:36,120 E em meu estúdio, o vídeo que é, essencialmente, uma pasta em 1071 00:49:36,120 --> 00:49:37,780 scratch.mit.edu. 1072 00:49:37,780 --> 00:49:39,710 Temos as versões web das todos esses projetos. 1073 00:49:39,710 --> 00:49:42,530 E vamos ver se eu posso pegar meu computador para cooperar aqui. 1074 00:49:42,530 --> 00:49:47,180 Isto é escrito por um dos nossos amigos no MIT, chamado Move o Butterfly. 1075 00:49:47,180 --> 00:49:50,250 >> E uma vez que este se abre, este é vai realmente usar mais de 1076 00:49:50,250 --> 00:49:51,430 hardware do meu computador. 1077 00:49:51,430 --> 00:49:53,325 Arranhões passa a ser implementado com Flash. 1078 00:49:53,325 --> 00:49:56,250 Flash pode falar com sua webcam, se você tiver um. 1079 00:49:56,250 --> 00:50:00,210 Então, se eu ir em frente e tela cheia este aqui, clique na bandeira verde, o aviso 1080 00:50:00,210 --> 00:50:02,530 que a mensagem de segurança do flash está dizendo, você quer 1081 00:50:02,530 --> 00:50:04,210 permitir usar minha webcam? 1082 00:50:04,210 --> 00:50:05,510 >> Normalmente, você deve provavelmente diria Negar. 1083 00:50:05,510 --> 00:50:07,180 Mas neste caso, vamos dizer permitir. 1084 00:50:07,180 --> 00:50:10,430 Então eu vou dizer Chrome para permitir que este também. 1085 00:50:10,430 --> 00:50:15,010 E agora, em apenas um momento, você me ver, sim, me. 1086 00:50:15,010 --> 00:50:18,154 E se a minha mão sobe - 1087 00:50:18,154 --> 00:50:20,390 Tenho que mudar a minha não cabeça ao mesmo tempo. 1088 00:50:20,390 --> 00:50:21,740 Há também uma reflexão no ecrã. 1089 00:50:21,740 --> 00:50:23,480 Vamos, lá vamos nós - 1090 00:50:23,480 --> 00:50:27,616 você pode movê-la na tela, pois há também peças de quebra-cabeça - oh, você 1091 00:50:27,616 --> 00:50:31,640 sabe o que é, é porque você também ver a tela do projetor atrás de mim. 1092 00:50:31,640 --> 00:50:33,870 Então nós temos um pouco de infinito coisa acontecendo lá. 1093 00:50:33,870 --> 00:50:36,470 >> Tudo bem, então eu vou jogar aqui. 1094 00:50:36,470 --> 00:50:37,220 Lá vamos nós. 1095 00:50:37,220 --> 00:50:41,310 Portanto, há também uma peça do puzzle que diz que, quando você vê o movimento abaixo 1096 00:50:41,310 --> 00:50:45,470 um dos sprites, você pode tê-lo ir cima, baixo, esquerda, direita ou afins. 1097 00:50:45,470 --> 00:50:48,950 Então nós temos um pouco de realidade virtual acontecendo aqui, bem, tudo dentro do 1098 00:50:48,950 --> 00:50:52,570 confins do meu navegador, apenas aqui, usando minha webcam. 1099 00:50:52,570 --> 00:50:53,980 Então, qual é, em seguida, no horizonte. 1100 00:50:53,980 --> 00:50:58,350 O primeiro conjunto de problemas, como você vai ver, ou o site vai ficar online mais tarde 1101 00:50:58,350 --> 00:51:01,100 hoje à noite no cs50.net, é bastante muito vai ser em aberto. 1102 00:51:01,100 --> 00:51:04,410 E implementar um projecto Scratch de interesse para você, um jogo, uma 1103 00:51:04,410 --> 00:51:08,350 interação, algo artístico, e desafie-se a usar qualquer número 1104 00:51:08,350 --> 00:51:09,660 dessas peças de quebra-cabeça. 1105 00:51:09,660 --> 00:51:11,580 E isso pode ser interativo desta forma. 1106 00:51:11,580 --> 00:51:15,470 Ou pode ser algo mais deliberadamente feito para contar uma história. 1107 00:51:15,470 --> 00:51:19,200 >> E, de fato, que é onde vamos terminar fora hoje, com um exemplo final. 1108 00:51:19,200 --> 00:51:21,290 Deixe-me ir em risco no local. 1109 00:51:21,290 --> 00:51:25,300 Deixe-me ir em frente e abrir isso e jogar um último programa escrito por um 1110 00:51:25,300 --> 00:51:29,795 de seus antecessores, ou seja, que aqui. 1111 00:51:29,795 --> 00:51:32,960 1112 00:51:32,960 --> 00:51:35,938 Bom, aumentar o volume para um presente. 1113 00:51:35,938 --> 00:52:53,770 >> [Música tocando] 1114 00:52:53,770 --> 00:52:57,255 >> Narrador: Na próxima CS50, David convida um voluntário no palco. 1115 00:52:57,255 --> 00:52:58,636 >> DAVID MALAN: Para esta demonstração, vamos precisar de um voluntário. 1116 00:52:58,636 --> 00:53:01,050 Gostaria de vir para baixo? 1117 00:53:01,050 --> 00:53:02,300 Qual é o seu nome? 1118 00:53:02,300 --> 00:53:05,320 1119 00:53:05,320 --> 00:53:06,570 Seguindo em frente. 1120 00:53:06,570 --> 00:53:08,394