1 00:00:00,000 --> 00:00:15,059 >> [REPRODUÇÃO DE MÚSICA] 2 00:00:15,059 --> 00:00:19,170 >> Este é CS50-- Harvard introdução da universidade 3 00:00:19,170 --> 00:00:22,070 ao intelectual empresas de informática 4 00:00:22,070 --> 00:00:23,800 e a arte da programação. 5 00:00:23,800 --> 00:00:27,020 E o meu nome é David Malan, e Eu só estava pensando nesta manhã, 6 00:00:27,020 --> 00:00:33,120 tem sido surpreendentemente 20 anos hoje desde a última vez se sentou em que vocês fazem agora. 7 00:00:33,120 --> 00:00:33,840 >> Foi 1996. 8 00:00:33,840 --> 00:00:37,550 Eu estava no segundo ano, e eu estava tomando CS50 pela primeira vez. 9 00:00:37,550 --> 00:00:40,890 E eu ainda não tinha chegado até o nervo para levá-lo a mim mesmo primeiro ano, 10 00:00:40,890 --> 00:00:42,500 em parte por causa do tempo. 11 00:00:42,500 --> 00:00:44,782 ciência da computação para mim era uma espécie de gosto, meh. 12 00:00:44,782 --> 00:00:46,990 Eu estava um pouco de um geek que cresce -se, mas eu realmente não 13 00:00:46,990 --> 00:00:49,180 ter qualquer intelectual interesse em o que parecia 14 00:00:49,180 --> 00:00:51,920 para ser apenas um monte de pessoas programando o tempo todo. 15 00:00:51,920 --> 00:00:53,904 >> E eu estava com medo de ser honesto. 16 00:00:53,904 --> 00:00:56,820 O curso e ciência da computação mais geralmente tinham e, em certa medida, 17 00:00:56,820 --> 00:01:01,230 ainda tem essa reputação de um campo para cuidado, mesmo porque tantos de nós 18 00:01:01,230 --> 00:01:04,410 não estão familiarizados com ele e não tem certeza disso. 19 00:01:04,410 --> 00:01:08,480 E realmente não foi até que eu comprei esta classe que segundo ano fall-- 20 00:01:08,480 --> 00:01:10,880 e, mesmo assim, eu só inscritos porque o professor-- 21 00:01:10,880 --> 00:01:13,950 um dos meus primeiros mentores, Brian Kernighan agora em Princeton-- 22 00:01:13,950 --> 00:01:15,700 me permitiu tirar o passe classe falhar. 23 00:01:15,700 --> 00:01:18,020 E, de fato, é por isso hoje nós permitir e encorajar 24 00:01:18,020 --> 00:01:20,030 os alunos a tomar esta classe se sentou / unsat. 25 00:01:20,030 --> 00:01:22,040 >> E só então, pela final do semestre 26 00:01:22,040 --> 00:01:24,870 me dei conta de como, uau, isso não era um campo tão desconhecido. 27 00:01:24,870 --> 00:01:26,850 Na verdade, este foi um muito estimulante campo, 28 00:01:26,850 --> 00:01:28,970 e mais excitante, especialmente mais tarde, 29 00:01:28,970 --> 00:01:32,809 como eu fez cursos de Artes Dramáticas 101 e latino-A 30 00:01:32,809 --> 00:01:34,600 e, eventualmente, arqueologia escola do graduado, 31 00:01:34,600 --> 00:01:37,860 eu realmente começar a ver a intersecções deste campo, computador 32 00:01:37,860 --> 00:01:41,979 ciência, com as ciências humanas, ciências naturais, artes, medicina, 33 00:01:41,979 --> 00:01:42,520 e similar. 34 00:01:42,520 --> 00:01:44,420 E é isso que é tão interessante sobre ciência da computação 35 00:01:44,420 --> 00:01:46,930 em última instância, como nós esperamos que você vai see-- é a sua aplicabilidade 36 00:01:46,930 --> 00:01:50,280 a esses outros campos, e como você pode tomar um pouco do hoje e do semestre de 37 00:01:50,280 --> 00:01:53,070 idéias e habilidades práticas de volta para o seu próprio domínio, 38 00:01:53,070 --> 00:01:58,200 e realmente explorar esta intersecção das artes liberais e ciências. 39 00:01:58,200 --> 00:02:02,690 >> Assim, 73% de você, se a última ano é qualquer indicação, 40 00:02:02,690 --> 00:02:04,390 nunca tomou um curso de CS antes. 41 00:02:04,390 --> 00:02:06,389 Então, se, como eu, você está sentindo um pouco 42 00:02:06,389 --> 00:02:09,190 medo, ou francamente você não está realmente certo porque você está mesmo aqui. 43 00:02:09,190 --> 00:02:11,510 Talvez você apenas seguiu alguns amigos para Sanders agora mesmo. 44 00:02:11,510 --> 00:02:12,490 Isso é totalmente bem. 45 00:02:12,490 --> 00:02:15,059 O objetivo aqui é ligar você e para tranquilizá-lo 46 00:02:15,059 --> 00:02:17,100 que se você olhar para a esquerda e para a direita, 47 00:02:17,100 --> 00:02:21,480 você vai ver colegas com tão pouco ou muita experiência 48 00:02:21,480 --> 00:02:22,890 que você mesmo possa ter. 49 00:02:22,890 --> 00:02:25,280 E, de fato, vamos compartilhar algumas estatísticas mais tarde hoje 50 00:02:25,280 --> 00:02:28,120 quanto ao que a demografia de a classe normalmente se parecem. 51 00:02:28,120 --> 00:02:31,440 >> E como adicionado reassurance-- e isso nós quero dizer desde que assumi o curso 52 00:02:31,440 --> 00:02:33,252 alguns anos em ago-- syllabus do curso 53 00:02:33,252 --> 00:02:35,460 é isto-- que o que em última análise, assuntos neste curso 54 00:02:35,460 --> 00:02:38,040 não é tanto onde você termina -se em relação aos seus colegas, 55 00:02:38,040 --> 00:02:43,110 mas onde na semana 11, a fim de a semestre, acabam em relação ao mesmo 56 00:02:43,110 --> 00:02:46,280 na semana 0, que é onde estamos aqui hoje. 57 00:02:46,280 --> 00:02:48,704 E é isso que eu percebi todos esses anos atrás. 58 00:02:48,704 --> 00:02:50,620 E eu conheço um monte de aulas de dizer isto, mas é 59 00:02:50,620 --> 00:02:52,450 especialmente verdade em ciência da computação. 60 00:02:52,450 --> 00:02:55,320 No final do dia, este campo não é familiar como foi para mim 61 00:02:55,320 --> 00:02:58,590 e pode ser para você, é realmente apenas sobre a resolução de problemas. 62 00:02:58,590 --> 00:03:01,324 E como tal, não têm este aplicabilidade para obter outros campos. 63 00:03:01,324 --> 00:03:03,490 E, de fato, se tentássemos para destilar o que isso significa, 64 00:03:03,490 --> 00:03:06,897 esta é a resolução de problemas em sua essência, ouso dizer. 65 00:03:06,897 --> 00:03:09,480 Há input-- assim que for é que você está tentando resolver. 66 00:03:09,480 --> 00:03:12,264 Não há saída, que é esperançosamente a solução para esse problema. 67 00:03:12,264 --> 00:03:14,180 E então, como seria dizer em ciência da computação, 68 00:03:14,180 --> 00:03:17,310 há essa caixa preta no média que você não necessariamente 69 00:03:17,310 --> 00:03:19,450 tem que se preocupam com a forma como funciona. 70 00:03:19,450 --> 00:03:22,230 Você mesmo, eventualmente, pode implementar o que está dentro dessa caixa. 71 00:03:22,230 --> 00:03:25,194 Mas para fins de hoje e mais geralmente na vida, tudo o que importa 72 00:03:25,194 --> 00:03:26,610 é que estes problemas são resolvidos. 73 00:03:26,610 --> 00:03:29,340 >> E o que esta disciplina é em última análise, sobre está explorando 74 00:03:29,340 --> 00:03:31,700 a interseção de estas entradas e saídas, 75 00:03:31,700 --> 00:03:34,410 e os chamados algoritmos, como veremos em breve, 76 00:03:34,410 --> 00:03:37,450 que implementam o que é embaixo lá, o capô. 77 00:03:37,450 --> 00:03:40,487 Mas estas entradas e estes outputs-- o que isso realmente significa? 78 00:03:40,487 --> 00:03:43,570 Bem, no final do dia, precisamos alguma forma de representar informações. 79 00:03:43,570 --> 00:03:46,660 Isto é especialmente verdadeiro em um computador, que tão extravagante e complexa, uma vez que 80 00:03:46,660 --> 00:03:48,160 pode parecer, é um dispositivo muito burro. 81 00:03:48,160 --> 00:03:52,240 Leva electricity-- se a partir de um cabo ou uma bateria como input-- 82 00:03:52,240 --> 00:03:55,820 e, em seguida, que produz algum respostas pré-programados na tela. 83 00:03:55,820 --> 00:03:57,970 >> Mas como é que vamos começar a partir de do início ao fim lá? 84 00:03:57,970 --> 00:03:59,470 Bem, o que é um problema a ser resolvido? 85 00:03:59,470 --> 00:04:01,050 Bem, talvez nós pode, em do início de qualquer semestre, 86 00:04:01,050 --> 00:04:02,841 tentar levar atendimento em uma sala como esta. 87 00:04:02,841 --> 00:04:04,750 Então eu poderia fazer como um, dois, três. 88 00:04:04,750 --> 00:04:07,060 Ou talvez, se eu fiz isso a sorte de acompanhar 89 00:04:07,060 --> 00:04:10,560 de myself-- manter o controle de coisas- Eu poderia rapidamente ficar sem dedos. 90 00:04:10,560 --> 00:04:14,650 Então, eu só poderia fazer hash de um marks-- pessoa, dois, três, quatro, cinco, seis, 91 00:04:14,650 --> 00:04:15,431 sete oito. 92 00:04:15,431 --> 00:04:17,930 E todos nós temos, provavelmente, feito isso, seja em suas mãos 93 00:04:17,930 --> 00:04:19,680 ou sobre um pedaço de papel. 94 00:04:19,680 --> 00:04:22,140 E isso é realmente apenas algo chamado notation-- unário 95 00:04:22,140 --> 00:04:26,130 onde se você só tem uma letra no seu alfabeto, um ou haxixe 96 00:04:26,130 --> 00:04:29,440 marca neste caso, para cada entrada que deseja contar, 97 00:04:29,440 --> 00:04:32,330 você precisa colocar para baixo uma delas letters-- uma dessas marcas. 98 00:04:32,330 --> 00:04:32,510 >> Tudo certo. 99 00:04:32,510 --> 00:04:34,790 Isso é tudo muito bem e bom e não tão complicado. 100 00:04:34,790 --> 00:04:37,800 Mas os computadores não são todos que muito mais complicada. 101 00:04:37,800 --> 00:04:40,770 Na verdade, a maioria de vocês provavelmente sei mesmo se você não tenho realmente 102 00:04:40,770 --> 00:04:44,080 considerou que isso significa, que computadores só entendem zeros 103 00:04:44,080 --> 00:04:45,870 e ones-- o chamado sistema binário. 104 00:04:45,870 --> 00:04:49,390 Nós, seres humanos, por contraste, são tão muito mais sofisticado na medida 105 00:04:49,390 --> 00:04:51,770 tal como a entendemos zeros através de noves. 106 00:04:51,770 --> 00:04:55,740 >> Mas mesmo se binário é, em primeiro lugar vista, não tão familiarizado, 107 00:04:55,740 --> 00:05:00,330 verifica-se que é como os sistemas e as idéias que nós já sabemos. 108 00:05:00,330 --> 00:05:02,420 Assim, por exemplo, considerar isso. 109 00:05:02,420 --> 00:05:03,896 Esta é apenas uma sequência de símbolos. 110 00:05:03,896 --> 00:05:05,770 E todos vocês, quando olhando para ele, provavelmente, 111 00:05:05,770 --> 00:05:09,380 acho 123-- nada realmente interessante lá. 112 00:05:09,380 --> 00:05:11,940 Mas por que é esse número, 123? 113 00:05:11,940 --> 00:05:14,440 Estes são apenas glyphs em o screen-- apenas padrões 114 00:05:14,440 --> 00:05:16,387 que alguém poderia ter desenhado ou digitado. 115 00:05:16,387 --> 00:05:18,970 Mas se você é como eu, você provavelmente se lembra da escola primária 116 00:05:18,970 --> 00:05:21,610 que há uma espécie de colunas ou lugares aqui. 117 00:05:21,610 --> 00:05:25,340 Não há lugar eo do um lugar ten e local a centenas de. 118 00:05:25,340 --> 00:05:29,820 E a razão que este é 123 e não apenas um padrão de três símbolos 119 00:05:29,820 --> 00:05:33,090 é porque, é claro, se têm uma em casa das centenas, 120 00:05:33,090 --> 00:05:36,610 você fizer as contas de 100 vezes um, e em seguida, dois no lugar dos dez. 121 00:05:36,610 --> 00:05:41,390 Então, isso é 10 vezes 2, e, em seguida, de três em o lugar do um e que é 1 vezes 3. 122 00:05:41,390 --> 00:05:45,670 E quando você adiciona todos aqueles acima, de Claro, você tem 100 mais 20 mais 3. 123 00:05:45,670 --> 00:05:48,220 >> Então começamos com apenas um padrão de symbols-- um alphabet-- 124 00:05:48,220 --> 00:05:51,670 mas, em seguida, mapeamos significado para que por meio destas colunas. 125 00:05:51,670 --> 00:05:54,450 Bem, verifica-se que computadores não são realmente 126 00:05:54,450 --> 00:05:56,300 tão diferente de você e eu. 127 00:05:56,300 --> 00:06:01,840 Mas em vez de usar potências de 10, de modo a speak-- 1, 10, 100, 1000, 128 00:06:01,840 --> 00:06:04,330 10.000 lugar e assim forth-- eles realmente 129 00:06:04,330 --> 00:06:08,930 basta usar poderes de 2-- assim uma, duas, quatro, e em seguida 130 00:06:08,930 --> 00:06:12,810 se colocarmos mais dígitos, 8, 16, 32, 64, 128, e assim por diante. 131 00:06:12,810 --> 00:06:16,050 E assim isto é como um computador representaria o número 0, 132 00:06:16,050 --> 00:06:17,300 Assim como nós seres humanos. 133 00:06:17,300 --> 00:06:21,660 >> 0, 0, 0-- e você provavelmente pode adivinhar o padrão de zeros e uns, 134 00:06:21,660 --> 00:06:24,610 se um computador só pode falar 0 ou 1-- o 135 00:06:24,610 --> 00:06:29,110 padrão vai representar o número que nós seres humanos sabem como 1? 136 00:06:29,110 --> 00:06:30,590 Yeah-- 0, 0, 1. 137 00:06:30,590 --> 00:06:31,090 Tudo certo. 138 00:06:31,090 --> 00:06:35,900 Assim, 0, 0, 1 é como nós representamos 1, de modo que você pode estar inclinado em seguida, 139 00:06:35,900 --> 00:06:39,510 para representar o número 2, se tiver lugar a quatro do local e os dois de 140 00:06:39,510 --> 00:06:48,290 como a um lugar, você pode dizer, bem, se tivéssemos um 1 no lugar do um, 141 00:06:48,290 --> 00:06:50,430 e agora queremos contam-se a 2, você pode 142 00:06:50,430 --> 00:06:53,310 fazer isso e deixar que este é um zero. 143 00:06:53,310 --> 00:06:56,397 Mas é claro que isso não é assim o sistema decimal funciona tanto. 144 00:06:56,397 --> 00:06:58,230 Se você colocar um dígito ambas as colunas, 145 00:06:58,230 --> 00:06:59,563 você tem que fazer a aritmética. 146 00:06:59,563 --> 00:07:01,930 Então, o número fez I acidentalmente apenas representam? 147 00:07:01,930 --> 00:07:06,710 >> Então é 3, porque 2 vezes 1 mais 1 1 vezes, é claro, dá-nos três. 148 00:07:06,710 --> 00:07:08,340 Portanto, este seria dois. 149 00:07:08,340 --> 00:07:12,730 O bit tipo de aletas, por assim dizer, como 0 torna-se um, muito parecido com um 9 papéis mais 150 00:07:12,730 --> 00:07:14,840 e se torna um 0 quando você levar a 1. 151 00:07:14,840 --> 00:07:16,510 Este seria, então, três claro. 152 00:07:16,510 --> 00:07:20,170 Four-- outra coisa interessante acontece, onde os rolar 153 00:07:20,170 --> 00:07:21,750 e transportar a 1, por assim dizer. 154 00:07:21,750 --> 00:07:23,320 Então, isso, claro, é de 4. 155 00:07:23,320 --> 00:07:25,160 >> Mas se você avanço rápido agora, Qual é o maior número vai 156 00:07:25,160 --> 00:07:26,660 ser um computador que pode representar? 157 00:07:26,660 --> 00:07:30,420 158 00:07:30,420 --> 00:07:32,380 Então é só sete neste caso, certo? 159 00:07:32,380 --> 00:07:35,570 Porque você tem uma em quatro, um em dois, um a um, em uma. 160 00:07:35,570 --> 00:07:36,900 Então, isso é 4 mais 2 mais 1. 161 00:07:36,900 --> 00:07:37,972 Assim que lhe dá sete. 162 00:07:37,972 --> 00:07:39,680 E, de fato, seria parecer à primeira vista 163 00:07:39,680 --> 00:07:43,750 que os computadores podem contar não superior a esta. 164 00:07:43,750 --> 00:07:45,210 >> Mas isso, claro, não é verdade. 165 00:07:45,210 --> 00:07:48,243 O que nós humanos fazemos quando quiser a contagem mais elevada do que como 999? 166 00:07:48,243 --> 00:07:51,000 167 00:07:51,000 --> 00:07:53,900 Basta levar a um e apenas adicionar um quarto dígito para a esquerda. 168 00:07:53,900 --> 00:07:55,070 E assim, na verdade nós poderíamos. 169 00:07:55,070 --> 00:07:57,900 Poderíamos ter um oito de lugar e um lugar de um dia 16, 170 00:07:57,900 --> 00:08:02,000 e lugar a 32 de, 64, 128-- e você pode apenas manter em curso até ao infinito. 171 00:08:02,000 --> 00:08:04,640 Então, esses zeros e ones-- o chamado binário system-- 172 00:08:04,640 --> 00:08:10,290 são o que um cientista da computação seria geralmente chamamos um pouco, ou dígito binário. 173 00:08:10,290 --> 00:08:13,590 >> Mas agora, como é que vamos começar a partir do conceito ou os gráficos destas coisas 174 00:08:13,590 --> 00:08:14,620 a um computador real? 175 00:08:14,620 --> 00:08:17,170 Parece que estamos a pular uma etapa aqui. 176 00:08:17,170 --> 00:08:20,210 Bem, a única entrada no final do dia, para o meu laptop aqui 177 00:08:20,210 --> 00:08:22,060 é este fluxo de electricidade. 178 00:08:22,060 --> 00:08:24,560 Mesmo se ele tem sido um longo tempo desde que você pensou sobre 179 00:08:24,560 --> 00:08:26,580 ou nunca pensou em como a eletricidade funciona, 180 00:08:26,580 --> 00:08:30,909 há elétrons que fluem dentro ou para fora, e esse é o meu tipo de entrada. 181 00:08:30,909 --> 00:08:34,659 >> Então, se isso é tudo o que nós somos recebendo como entrada aqui, 182 00:08:34,659 --> 00:08:36,830 o que podemos fazer com essa informação? 183 00:08:36,830 --> 00:08:40,040 Bem, poderíamos pensar em um zero como apenas uma ausência de electricidade. 184 00:08:40,040 --> 00:08:42,540 Nada é flowinw, nada é em movimento, nada está acontecendo. 185 00:08:42,540 --> 00:08:44,690 Isso é apenas o padrão state-- zero. 186 00:08:44,690 --> 00:08:48,200 Mas se há eletricidade fluindo, por que nós não apenas arbitrariamente, mas globalmente 187 00:08:48,200 --> 00:08:50,250 consistentemente, chama isso de um. 188 00:08:50,250 --> 00:08:54,760 >> Então, simplesmente por ter nenhum poder, temos um zero, sim poder, 189 00:08:54,760 --> 00:08:57,520 temos uma um-- nenhum poder, sim poder. 190 00:08:57,520 --> 00:09:01,520 E dessa forma, usando algo mais físico ou eletrônico 191 00:09:01,520 --> 00:09:05,340 começamos a implementar essa noção de algo, quer ser um ou um zero. 192 00:09:05,340 --> 00:09:07,230 Na verdade, poderíamos apenas fazê-lo aqui. 193 00:09:07,230 --> 00:09:10,590 não aqui, eu tenho três, mas oito lâmpadas, cada uma das quais 194 00:09:10,590 --> 00:09:11,810 tem a sua própria chave. 195 00:09:11,810 --> 00:09:15,760 >> E então se eu queria representar o número sete aqui, 196 00:09:15,760 --> 00:09:18,510 Eu poderia ligar estes três lâmpadas. 197 00:09:18,510 --> 00:09:21,470 E, de fato, dentro de meu computador é de milhões, 198 00:09:21,470 --> 00:09:25,650 bilhões de coisas que são apenas menor do que, chamados transistores, 199 00:09:25,650 --> 00:09:27,330 switches, que você acabou de ligar e desligar. 200 00:09:27,330 --> 00:09:30,420 Então, essas são big-- relativamente interruptores big-- dentro da minha laptop-- 201 00:09:30,420 --> 00:09:32,150 muitos, muitos, muitos, muitos mais interruptores. 202 00:09:32,150 --> 00:09:35,160 Mas todos eles fazem é exatamente isso-- transformar algo, ligue algo fora. 203 00:09:35,160 --> 00:09:38,076 E, como tal, um computador pode representar, com os milhões ou bilhões 204 00:09:38,076 --> 00:09:40,480 de transistores, lotes e lotes de zeros e uns. 205 00:09:40,480 --> 00:09:43,160 E não há outro hardware ainda que permite armazenar informações de longo prazo, 206 00:09:43,160 --> 00:09:45,243 de modo que quando você puxa o ligar, você não perdê-lo. 207 00:09:45,243 --> 00:09:46,900 Mas isso é uma história para outro dia. 208 00:09:46,900 --> 00:09:51,170 >> Então o que podemos fazer com esses bits? 209 00:09:51,170 --> 00:09:54,309 Poderíamos apenas para tirar a pressão fora de me-- 210 00:09:54,309 --> 00:09:56,600 pode alguém quer vir até aqui e oferecer uma demo? 211 00:09:56,600 --> 00:09:57,516 Eu vi isso em primeira mão. 212 00:09:57,516 --> 00:09:58,709 Qual o seu nome? 213 00:09:58,709 --> 00:09:59,250 Maday: Maday. 214 00:09:59,250 --> 00:10:00,542 DAVID MALAN: Maday, vamos lá para cima. 215 00:10:00,542 --> 00:10:01,250 Prazer em conhecê-lo. 216 00:10:01,250 --> 00:10:02,390 Maday: Prazer em conhecê-lo. 217 00:10:02,390 --> 00:10:02,930 >> DAVID MALAN: Vem por aqui. 218 00:10:02,930 --> 00:10:04,182 Eu não terão de lip-lo. 219 00:10:04,182 --> 00:10:04,682 Tudo certo. 220 00:10:04,682 --> 00:10:11,090 Então, aqui, temos, notice-- um, dois-- vamos editar esse out-- um, dois, quatro, 221 00:10:11,090 --> 00:10:13,350 oito, 16, 32, 64, 128. 222 00:10:13,350 --> 00:10:14,220 Isso é deliberado. 223 00:10:14,220 --> 00:10:17,370 Há oito bits aqui-- binário zeros digits-- e uns. 224 00:10:17,370 --> 00:10:21,460 E é um pouco útil uma unidade de measure-- não é tão útil uma unidade de medida 225 00:10:21,460 --> 00:10:21,999 sobre si própria. 226 00:10:21,999 --> 00:10:24,290 Normalmente você quer, pelo menos, oito dessas coisas, a.k.a. 227 00:10:24,290 --> 00:10:24,790 um byte. 228 00:10:24,790 --> 00:10:26,230 Portanto, temos um byte de bits aqui. 229 00:10:26,230 --> 00:10:31,130 >> Então, se nós queria desafiá-lo com, por exemplo, soletrando, em binário, 230 00:10:31,130 --> 00:10:33,230 este valor aqui-- 42. 231 00:10:33,230 --> 00:10:35,140 Quer tomar uma facada em que? 232 00:10:35,140 --> 00:10:36,034 >> Maday: [inaudível]. 233 00:10:36,034 --> 00:10:38,700 DAVID MALAN: Sim, basta apertar o pequenos interruptores brancos na frente. 234 00:10:38,700 --> 00:10:41,290 E você deseja soletrar a 42, e para ganhar 235 00:10:41,290 --> 00:10:44,061 é esse estresse CS50 bola, se você conseguir isso. 236 00:10:44,061 --> 00:10:44,560 Tudo certo. 237 00:10:44,560 --> 00:10:46,420 Então você tem 32. 238 00:10:46,420 --> 00:10:48,430 Nós vamos precisar de 42. 239 00:10:48,430 --> 00:10:51,410 Então, isso é um oito, de modo que é 40. 240 00:10:51,410 --> 00:10:54,160 E excelente-- muito bem feito. 241 00:10:54,160 --> 00:10:55,186 Obrigado. 242 00:10:55,186 --> 00:10:58,790 >> [Aplausos] 243 00:10:58,790 --> 00:10:59,290 Tudo certo. 244 00:10:59,290 --> 00:11:00,623 Portanto, temos mais uma bola anti-stress. 245 00:11:00,623 --> 00:11:03,595 Vamos fazer isso mais uma vez, se pudermos. 246 00:11:03,595 --> 00:11:05,368 Um outro voluntário? 247 00:11:05,368 --> 00:11:07,970 bola sem stress, bola sem stress. 248 00:11:07,970 --> 00:11:08,470 ESTÁ BEM. 249 00:11:08,470 --> 00:11:11,640 Durante aqui no meio, quer descer? 250 00:11:11,640 --> 00:11:14,100 Tudo certo. 251 00:11:14,100 --> 00:11:15,552 Eu sei. 252 00:11:15,552 --> 00:11:16,360 Aqui vamos nós. 253 00:11:16,360 --> 00:11:20,818 >> Assim, os números aqui-- vamos lá para baixo. 254 00:11:20,818 --> 00:11:21,567 Qual é o seu nome? 255 00:11:21,567 --> 00:11:21,984 >> Davey: Davey. 256 00:11:21,984 --> 00:11:22,820 >> DAVID MALAN: Davey. 257 00:11:22,820 --> 00:11:23,320 ESTÁ BEM. 258 00:11:23,320 --> 00:11:24,810 Vamos lá para cima, Davey. 259 00:11:24,810 --> 00:11:25,890 Prazer em conhecê-lo. 260 00:11:25,890 --> 00:11:28,639 E o que nós vamos ter você spell-- se você poderia ficar lá 261 00:11:28,639 --> 00:11:32,810 para apenas um moment-- é o número 50. 262 00:11:32,810 --> 00:11:36,293 Mas, mas, mas, mas, mas, estes são escola primária ímãs por uma razão. 263 00:11:36,293 --> 00:11:39,370 264 00:11:39,370 --> 00:11:43,327 Ficou um pouco mais difícil, certo? 265 00:11:43,327 --> 00:11:44,160 Ainda há oito. 266 00:11:44,160 --> 00:11:46,820 267 00:11:46,820 --> 00:11:47,320 Tudo certo. 268 00:11:47,320 --> 00:11:48,486 Então o que temos lá? 269 00:11:48,486 --> 00:11:51,356 Temos 32. 270 00:11:51,356 --> 00:11:54,344 Agradável. 271 00:11:54,344 --> 00:11:58,610 32 mais 16 nos dá 48-- tão perto. 272 00:11:58,610 --> 00:12:00,390 E maravilhoso. 273 00:12:00,390 --> 00:12:02,831 Parabéns a Davey bem. 274 00:12:02,831 --> 00:12:05,720 >> [Aplausos] 275 00:12:05,720 --> 00:12:06,516 >> Tudo certo. 276 00:12:06,516 --> 00:12:09,390 Assim, podemos fazer isso durante todo o dia, e ele não fica tudo muito mais 277 00:12:09,390 --> 00:12:10,800 interessante e mais desafiador. 278 00:12:10,800 --> 00:12:13,250 Mas isso é realmente o ponto-- É assim relativamente simples 279 00:12:13,250 --> 00:12:16,930 é, no final do dia, o que é um computador faz para armazenar informações, 280 00:12:16,930 --> 00:12:21,740 para armazenar as entradas e finalmente armazenar ou representar essas saídas. 281 00:12:21,740 --> 00:12:23,750 Mas números por si só não são tudo o que interessante. 282 00:12:23,750 --> 00:12:26,069 >> Assim, os seres humanos, há alguns anos, decidido, você sabe o quê? 283 00:12:26,069 --> 00:12:27,860 Seria bom se computadores não eram apenas 284 00:12:27,860 --> 00:12:31,030 calculadoras para a aritmética operações, mas, na verdade, poderia 285 00:12:31,030 --> 00:12:35,209 fazer coisas como processamento de texto, ou e-mail, ou encarnações mais modernos 286 00:12:35,209 --> 00:12:36,500 desses tipos de tecnologias. 287 00:12:36,500 --> 00:12:40,680 E assim o mundo decidiu arbitrariamente, mas universalmente, 288 00:12:40,680 --> 00:12:44,380 que se você deseja armazenar a capital letra A em um computador, você sabe o quê? 289 00:12:44,380 --> 00:12:47,730 Vamos apenas todos concordam para armazenar algum padrão de zeros e ones-- 290 00:12:47,730 --> 00:12:52,422 bits-- que em última análise representa o número decimal 65. 291 00:12:52,422 --> 00:12:53,630 Vamos todos concordam com isso. 292 00:12:53,630 --> 00:12:56,620 >> 66 representaria B, 67 representaria C, 293 00:12:56,620 --> 00:13:00,210 e não há cachos de outros padrões de zeros e uns, ou os números subjacentes, 294 00:13:00,210 --> 00:13:02,224 que representaria outras letras estáticas. 295 00:13:02,224 --> 00:13:04,390 Então, se você tipo de mentalmente absorver isso por um momento, 296 00:13:04,390 --> 00:13:10,900 Eu deliberadamente colocar-se de A a I, onde H a 72 e I é de 73. 297 00:13:10,900 --> 00:13:15,830 Se um computador, em seguida, no contexto de um programa de processamento de texto ou um e-mail, 298 00:13:15,830 --> 00:13:19,620 revelado por baixo do capuz ter esses padrões de padrão bits-- 299 00:13:19,620 --> 00:13:22,500 de bits representando 72, depois 73, depois 33-- 300 00:13:22,500 --> 00:13:26,640 o que poderia esta mágica nesse programa? 301 00:13:26,640 --> 00:13:28,150 >> Então, oi, e depois alguma coisa. 302 00:13:28,150 --> 00:13:31,460 Nós não necessariamente sabem, mas na verdade, 33-- não no gráfico earlier-- 303 00:13:31,460 --> 00:13:33,170 era simplesmente um ponto de exclamação. 304 00:13:33,170 --> 00:13:38,870 Então 72 foi H, 73 é I, 33 acontece para ser um ponto de exclamação ainda. 305 00:13:38,870 --> 00:13:41,719 Mas isso é tudo muito bem e bom, e, de facto, hoje em dia, em vez de 306 00:13:41,719 --> 00:13:43,760 usar apenas sete ou oito bits, graças a algo 307 00:13:43,760 --> 00:13:46,530 chamado Unicode em oposição para ASCII de volta ao dia, 308 00:13:46,530 --> 00:13:50,010 nós realmente pode representar ainda mais personagens interessantes do que apenas 309 00:13:50,010 --> 00:13:52,980 estes original em Inglês tendenciosa letras. 310 00:13:52,980 --> 00:13:56,030 Mas também pode representar até mesmo coisas mais puro como cores. 311 00:13:56,030 --> 00:13:59,750 >> Se você já ouviu a sigla RGB, vermelho, verde, azul, que 312 00:13:59,750 --> 00:14:03,510 Significa apenas que um computador geralmente usa três conjuntos de bits-- 313 00:14:03,510 --> 00:14:06,760 algum número de bits que representam um número para a quantidade de vermelho que você quer, 314 00:14:06,760 --> 00:14:08,940 outro conjunto de bits para quanto verde que você quer, 315 00:14:08,940 --> 00:14:11,430 e outro número definido para a quantidade de azul que você deseja. 316 00:14:11,430 --> 00:14:14,457 Assim, um grande número significa lotes de vermelho número, pequeno não significa nenhum vermelho. 317 00:14:14,457 --> 00:14:16,290 E assim estes são o tipo dos valores médios aqui. 318 00:14:16,290 --> 00:14:20,180 >> Então me dê um pouco de vermelho, me dê um pouco verde, e me dar um pouco de azul. 319 00:14:20,180 --> 00:14:24,260 E se você misturar essas três máscaras de cor em conjunto, neste caso, 320 00:14:24,260 --> 00:14:26,850 você receber essa sombra escura de amarelo ou marrom. 321 00:14:26,850 --> 00:14:32,330 Mas esse padrão de oito mais oito mais eight-- assim 24 bits-- 322 00:14:32,330 --> 00:14:36,550 esquerda para a direita, é como um computador representaria essa cor particular. 323 00:14:36,550 --> 00:14:38,090 Agora, este é apenas um ponto em uma tela. 324 00:14:38,090 --> 00:14:42,230 Se você olhar muito de perto o seu televisor seu computador, você verá pontos ou pixels. 325 00:14:42,230 --> 00:14:45,420 E se você tem uma grade inteira de pixels, horizontalmente e verticalmente, 326 00:14:45,420 --> 00:14:46,630 você tem imagens. 327 00:14:46,630 --> 00:14:49,029 E então se você tomar uma imagem e, em seguida, lavagem 328 00:14:49,029 --> 00:14:52,070 mostrar-se outra imagem, uma outra imagem, outra imagem, outra imagem, 329 00:14:52,070 --> 00:14:54,760 muito rápido, você naturalmente têm filmes. 330 00:14:54,760 --> 00:14:56,109 >> E assim perceber onde começamos. 331 00:14:56,109 --> 00:14:57,650 Começamos com esses zeros e uns. 332 00:14:57,650 --> 00:15:00,570 Nós trabalhamos de lá para decimal números, como podemos representá-los. 333 00:15:00,570 --> 00:15:02,070 Agora temos letras do alfabeto. 334 00:15:02,070 --> 00:15:05,664 Mas em outros contextos esperar, podemos usar mais alguns bocados e representam as cores. 335 00:15:05,664 --> 00:15:07,830 Assim que você tem a capacidade de representar as cores, 336 00:15:07,830 --> 00:15:11,200 você tem a capacidade de representar fotografias e gifs animados 337 00:15:11,200 --> 00:15:13,780 e outros tais personagens na tela. 338 00:15:13,780 --> 00:15:17,160 E quando você tem um monte de imagens voando pelo ser humano de uma só vez, 339 00:15:17,160 --> 00:15:21,480 parece que imagens em movimento, e de modo a obter vídeos também. 340 00:15:21,480 --> 00:15:23,460 >> Então, usando estes muito primitivas simples nós 341 00:15:23,460 --> 00:15:28,070 tem a forma de representar em última análise, todas estas formas de mídia. 342 00:15:28,070 --> 00:15:30,450 E nós captada novamente e de novo e de novo, até que 343 00:15:30,450 --> 00:15:33,467 começar a partir do nível mais baixo a esse nível mais elevado. 344 00:15:33,467 --> 00:15:35,550 De modo que nos dá essa ideia geral de abstração. 345 00:15:35,550 --> 00:15:36,990 Mas nós começamos aqui. 346 00:15:36,990 --> 00:15:38,790 >> Aqui, agora, poderíamos representam em um computador 347 00:15:38,790 --> 00:15:41,920 nossos entradas com zeros e uns, nossas saídas em zeros e uns, 348 00:15:41,920 --> 00:15:43,640 mas o que se passa dentro da caixa? 349 00:15:43,640 --> 00:15:46,080 É aí que computador ciência fica interessante. 350 00:15:46,080 --> 00:15:49,770 É aí que você realmente trazer o seu mentes próprias de suportar para resolver problemas. 351 00:15:49,770 --> 00:15:52,590 agora podemos prever, para o resto do semestre, sim. 352 00:15:52,590 --> 00:15:53,870 Eu sei como funciona o binários. 353 00:15:53,870 --> 00:15:57,942 Lembro-me como ASCII ou Unicode-- o mapeamento para letters-- obras. 354 00:15:57,942 --> 00:15:59,650 E isso certamente se para raciocinar que nós 355 00:15:59,650 --> 00:16:03,470 poderia representar vermelho e verde e azul, e representam multimídia também. 356 00:16:03,470 --> 00:16:05,390 Mas esta é a coisa interessante. 357 00:16:05,390 --> 00:16:09,790 Isto é o que faz alguém capaz de resolver os problemas. 358 00:16:09,790 --> 00:16:11,980 >> E um tal problema que gostamos de fazer, de fato, 359 00:16:11,980 --> 00:16:15,345 está levando atendimento, ou fazer isso através de algoritmos. 360 00:16:15,345 --> 00:16:16,470 E novamente, eu poderia fazer isso. 361 00:16:16,470 --> 00:16:19,580 Eu poderia fazer um, dois, três, quatro cinco, seis, sete, oito e nove. 362 00:16:19,580 --> 00:16:21,520 E eu poderia escrevê-lo para baixo para manter o controle do mesmo. 363 00:16:21,520 --> 00:16:23,769 Mas isso é apenas como eu faria representam as informações. 364 00:16:23,769 --> 00:16:27,550 Ou eu poderia fazer isso faster-- dois, quatro, seis, oito, dez, 12, 14, 16, 18, 20, 365 00:16:27,550 --> 00:16:30,380 22-- parece que o dobro tão rápido, mas ainda é 366 00:16:30,380 --> 00:16:32,050 vai levar um monte de tempo. 367 00:16:32,050 --> 00:16:35,990 >> Mas acontece que, se alavancar ainda outros computadores resource-- e de fato 368 00:16:35,990 --> 00:16:38,940 estes dias têm múltiplas CPUs ou cérebros. 369 00:16:38,940 --> 00:16:41,970 Acontece que computadores podem fazer muitas coisas ao mesmo tempo, 370 00:16:41,970 --> 00:16:44,460 e, na verdade, nós, nesta sala, pode representar exatamente isso. 371 00:16:44,460 --> 00:16:47,130 >> Portanto, é um pouco socialmente estranho, mas se você faria humor me 372 00:16:47,130 --> 00:16:51,550 por apenas um processo de três etapas, vamos me pedir a todos no lugar há apenas 373 00:16:51,550 --> 00:16:54,640 a levantar-se por um momento. 374 00:16:54,640 --> 00:16:57,380 Levante-se. 375 00:16:57,380 --> 00:17:01,580 Então, pensar a si mesmo, o número de um-- para que todos nesta sala, 376 00:17:01,580 --> 00:17:05,010 exceto as pessoas que não fizeram oblige, estão pensando número um. 377 00:17:05,010 --> 00:17:06,510 Então esse é o seu número no momento. 378 00:17:06,510 --> 00:17:09,399 Este é o primeiro passo, ou como uma cientista da computação ou um programador 379 00:17:09,399 --> 00:17:11,827 normalmente faria, vamos para começar a contar do zero. 380 00:17:11,827 --> 00:17:14,410 Se o menor número que pudermos representar com essas lâmpadas 381 00:17:14,410 --> 00:17:17,410 é zero, por apenas deixando- tudo isso, assim como eu poderia apenas 382 00:17:17,410 --> 00:17:19,271 começar a contar a partir de zero é, em vez de um. 383 00:17:19,271 --> 00:17:21,020 E é isso que Cientistas de computador. 384 00:17:21,020 --> 00:17:23,750 Então, passo zero, levantar-se e pensar no número um. 385 00:17:23,750 --> 00:17:26,339 O próximo passo é isto-- par fora com alguém de pé 386 00:17:26,339 --> 00:17:27,660 e adicionar os seus números. 387 00:17:27,660 --> 00:17:30,660 388 00:17:30,660 --> 00:17:32,850 Maravilhoso. 389 00:17:32,850 --> 00:17:37,640 >> Portanto, neste momento no tempo, literalmente todos os participantes 390 00:17:37,640 --> 00:17:41,930 está pensando do número 2, com excepção para uma pessoa estranha se tivermos 391 00:17:41,930 --> 00:17:43,450 um número ímpar de pessoas na sala. 392 00:17:43,450 --> 00:17:50,640 E agora o terceiro passo aqui vai ser isto-- um de vós deve sentar-se. 393 00:17:50,640 --> 00:17:54,490 Um de vocês deve sentar-se, e se você ainda está de pé, 394 00:17:54,490 --> 00:17:56,590 volte ao passo um. 395 00:17:56,590 --> 00:18:44,799 396 00:18:44,799 --> 00:18:45,790 Tudo certo. 397 00:18:45,790 --> 00:19:00,760 398 00:19:00,760 --> 00:19:01,650 Tudo certo. 399 00:19:01,650 --> 00:19:03,880 Assim, mais e mais pessoas deveria estar sentado para baixo. 400 00:19:03,880 --> 00:19:08,280 Note que este tem induzido um loop-- algum tipo de ciclo. 401 00:19:08,280 --> 00:19:11,983 Alguns de vocês devem estar sem jeito preso, indo e voltando entre o primeiro passo 402 00:19:11,983 --> 00:19:14,180 e dois, um e dois, um e dois. 403 00:19:14,180 --> 00:19:21,190 404 00:19:21,190 --> 00:19:21,810 Isso está ok. 405 00:19:21,810 --> 00:19:22,630 O nosso primeiro erro. 406 00:19:22,630 --> 00:19:24,740 Nós vamos lidar com isso. 407 00:19:24,740 --> 00:19:25,320 Tudo certo. 408 00:19:25,320 --> 00:19:27,370 Deixe-me tentar estimular as coisas. 409 00:19:27,370 --> 00:19:31,454 >> Em teoria, apenas uma pessoa está de pé como todos continua a par fora. 410 00:19:31,454 --> 00:19:33,870 Mas deixe-me apressar as coisas com o povo ainda está de pé. 411 00:19:33,870 --> 00:19:35,480 Que número você está pensando? 412 00:19:35,480 --> 00:19:36,070 46. 413 00:19:36,070 --> 00:19:36,570 ESTÁ BEM. 414 00:19:36,570 --> 00:19:37,820 Vá em frente e sentar-se. 415 00:19:37,820 --> 00:19:39,190 Vocês ainda estão de pé. 416 00:19:39,190 --> 00:19:42,130 Que ainda está de pé? 417 00:19:42,130 --> 00:19:45,240 Que número você está pensando? 418 00:19:45,240 --> 00:19:46,160 ESTÁ BEM. 419 00:19:46,160 --> 00:19:47,900 >> Então, vamos voltar para você. 420 00:19:47,900 --> 00:19:49,630 Na volta? 421 00:19:49,630 --> 00:19:50,790 O que é isso? 422 00:19:50,790 --> 00:19:53,100 22. 423 00:19:53,100 --> 00:19:56,540 OK alguém se top-- sim? 424 00:19:56,540 --> 00:19:57,720 34. 425 00:19:57,720 --> 00:19:58,300 ESTÁ BEM. 426 00:19:58,300 --> 00:20:02,780 Aqui no meu direita-- aqui em cima? 427 00:20:02,780 --> 00:20:06,820 132, muito bom. 428 00:20:06,820 --> 00:20:08,380 22? 429 00:20:08,380 --> 00:20:08,990 >> ESTÁ BEM. 430 00:20:08,990 --> 00:20:10,031 E que ainda está de pé? 431 00:20:10,031 --> 00:20:11,000 Por aqui? 432 00:20:11,000 --> 00:20:14,520 46, muito agradável. 433 00:20:14,520 --> 00:20:16,890 72. 434 00:20:16,890 --> 00:20:18,220 Eu não posso parar por muito mais tempo. 435 00:20:18,220 --> 00:20:20,520 Sim? 436 00:20:20,520 --> 00:20:22,490 30, agradável. 437 00:20:22,490 --> 00:20:24,120 Por aqui? 438 00:20:24,120 --> 00:20:26,200 23? 439 00:20:26,200 --> 00:20:27,270 23. 440 00:20:27,270 --> 00:20:30,920 >> E eu acho que isso é todos exceto vocês, nenhuma pressão. 441 00:20:30,920 --> 00:20:32,860 Oh espere. 442 00:20:32,860 --> 00:20:33,360 28? 443 00:20:33,360 --> 00:20:37,500 444 00:20:37,500 --> 00:20:38,281 Apenas oito. 445 00:20:38,281 --> 00:20:38,780 ESTÁ BEM. 446 00:20:38,780 --> 00:20:41,030 Apenas oito. 447 00:20:41,030 --> 00:20:42,580 Aqui embaixo? 448 00:20:42,580 --> 00:20:44,570 30. 449 00:20:44,570 --> 00:20:47,344 23. 450 00:20:47,344 --> 00:20:47,843 24. 451 00:20:47,843 --> 00:20:50,810 452 00:20:50,810 --> 00:20:52,310 18. 453 00:20:52,310 --> 00:20:54,690 Este é o pior implementação deste algoritmo nunca. 454 00:20:54,690 --> 00:20:55,190 ESTÁ BEM. 455 00:20:55,190 --> 00:20:59,760 Então, mais alguém? 456 00:20:59,760 --> 00:21:00,421 Alguém mais? 457 00:21:00,421 --> 00:21:00,920 ESTÁ BEM. 458 00:21:00,920 --> 00:21:03,300 Mais um. 459 00:21:03,300 --> 00:21:04,400 16? 460 00:21:04,400 --> 00:21:04,900 ESTÁ BEM. 461 00:21:04,900 --> 00:21:05,510 16. 462 00:21:05,510 --> 00:21:06,010 Tudo certo. 463 00:21:06,010 --> 00:21:09,070 Então, se eu não perdi ninguém em o brilho aqui, quando eu pressione Enter, 464 00:21:09,070 --> 00:21:13,091 vamos ver, através de algoritmos, o número total de pessoas em Sanders. 465 00:21:13,091 --> 00:21:16,340 Porque mais uma vez, é como se todos como você sentou-se, passou o seu número off 466 00:21:16,340 --> 00:21:19,215 a outra pessoa, a outra pessoa, a outra pessoa, de modo que, em teoria, 467 00:21:19,215 --> 00:21:22,304 No final, apenas um estranho pessoa deve ficar de pé. 468 00:21:22,304 --> 00:21:22,970 Mas isso é bom. 469 00:21:22,970 --> 00:21:24,290 Nós acelerou as coisas manualmente. 470 00:21:24,290 --> 00:21:27,590 É especialmente difícil de ver neste espaço particular. 471 00:21:27,590 --> 00:21:34,200 >> E o número total de pessoas acreditamos que há aqui é 546. 472 00:21:34,200 --> 00:21:37,330 O número total I foi entregue pelos companheiros de ensino, 473 00:21:37,330 --> 00:21:40,660 quem fez isso o velho forma lenta escola, era 820. 474 00:21:40,660 --> 00:21:43,660 >> [RINDO] 475 00:21:43,660 --> 00:21:47,170 >> [Aplausos] 476 00:21:47,170 --> 00:21:48,670 >> Isso está ok. 477 00:21:48,670 --> 00:21:50,740 Assim, certamente, em seguida, existem esses bugs. 478 00:21:50,740 --> 00:21:51,460 E isso é bom. 479 00:21:51,460 --> 00:21:53,810 E assim acho que volta nesta a primeira vez que algo 480 00:21:53,810 --> 00:21:55,420 você escreve não necessariamente funcionar. 481 00:21:55,420 --> 00:21:57,620 Isto aconteceu-me aqui também. 482 00:21:57,620 --> 00:22:00,844 Mas vamos agora considerar como podemos aplicar esta mesma ideia para algo 483 00:22:00,844 --> 00:22:03,760 você pode ter visto antes, o que É esta tecnologia antiga escola aqui-- 484 00:22:03,760 --> 00:22:05,130 um livro de telefone realmente grande. 485 00:22:05,130 --> 00:22:09,380 E suponha que este livro de telefone tem 1.000 páginas e 1.000 nomes 486 00:22:09,380 --> 00:22:11,360 e os números em ordem alfabética dentro dele. 487 00:22:11,360 --> 00:22:14,860 >> Bem, nós poderíamos tipo de aplicar um semelhante ideia para este problema muito físico, 488 00:22:14,860 --> 00:22:16,270 apenas me usando. 489 00:22:16,270 --> 00:22:18,810 Eu só tipo de enganado aproveitando tudo de você 490 00:22:18,810 --> 00:22:23,240 com lotes e lotes de CPUs diferentes ou cérebros executar algum algoritmo. 491 00:22:23,240 --> 00:22:25,440 Mas se é apenas pouco velho mim, eu ainda puder 492 00:22:25,440 --> 00:22:29,630 aproveitar essa mesma essência de uma idéia de dividir e conquistar esse problema 493 00:22:29,630 --> 00:22:32,970 uma e outra vez, em que metade de vocês, metade de vocês, metade de vocês, metade de vocês, 494 00:22:32,970 --> 00:22:35,830 teoricamente manteve sentado, até que foram embora, teoricamente, 495 00:22:35,830 --> 00:22:36,990 com apenas uma pessoa. 496 00:22:36,990 --> 00:22:39,810 >> Portanto, neste velha escola technology-- nós não 497 00:22:39,810 --> 00:22:43,030 precisa deste map-- este tecnologia da velha escola, 498 00:22:43,030 --> 00:22:47,300 podemos começar a olhar para alguém como Mike Smith, uma página de cada vez. 499 00:22:47,300 --> 00:22:49,410 E eu vejo que não, Mike não está aqui. 500 00:22:49,410 --> 00:22:51,110 Eu ainda estou na secção A. 501 00:22:51,110 --> 00:22:53,900 Eventualmente, eu acho me na seção B. 502 00:22:53,900 --> 00:22:56,910 E esta é uma algorithm-- passo-a-passo instrução. 503 00:22:56,910 --> 00:22:59,890 Comece na página de início e um de cada vez, olhar para Mike Smith. 504 00:22:59,890 --> 00:23:03,410 É este correct-- este algoritmo ou abordagem? 505 00:23:03,410 --> 00:23:04,550 >> Sim, é correto. 506 00:23:04,550 --> 00:23:06,840 Se Mike está aqui, eventualmente, Vou chegar até ele. 507 00:23:06,840 --> 00:23:08,139 Mas não é eficiente. 508 00:23:08,139 --> 00:23:09,180 É óbvio que é muito lento. 509 00:23:09,180 --> 00:23:11,340 Para que eu possa alavancar o mesmos twosies aproximar. 510 00:23:11,340 --> 00:23:15,350 Eu posso fazer uma espécie de dois, quatro, seis, oito, 10, 12. 511 00:23:15,350 --> 00:23:16,330 É duas vezes mais rápido. 512 00:23:16,330 --> 00:23:18,290 Eu vou chegar a Mike mais rápido se ele está lá. 513 00:23:18,290 --> 00:23:20,770 Está correto? 514 00:23:20,770 --> 00:23:22,320 Sim, mas eu ouvi um não little--. 515 00:23:22,320 --> 00:23:24,200 Agora eu ouvi um não. 516 00:23:24,200 --> 00:23:24,700 Sim. 517 00:23:24,700 --> 00:23:26,190 Há um bug potencialmente. 518 00:23:26,190 --> 00:23:29,374 Talvez Mike fica apenas acidentalmente ensanduichada entre duas páginas, 519 00:23:29,374 --> 00:23:31,290 porque eu estou voando através este dois de cada vez. 520 00:23:31,290 --> 00:23:33,580 Assim, pelo menos precisamos de algum tipo de correção condicional. 521 00:23:33,580 --> 00:23:35,330 Eu preciso dizer, hey, se eu acertar alguém cuja 522 00:23:35,330 --> 00:23:39,190 nome começa com um T em vez de um S, É melhor eu dupla volta pelo menos uma página. 523 00:23:39,190 --> 00:23:40,767 Então, de buggy no início, mas solucionáveis. 524 00:23:40,767 --> 00:23:43,850 Mas nenhum de nós estão indo para procurar Mike Smith através de um telefone com 1.000 páginas 525 00:23:43,850 --> 00:23:45,290 reservar uma página de cada vez. 526 00:23:45,290 --> 00:23:48,486 O que é uma pessoa normal vai fazer? 527 00:23:48,486 --> 00:23:50,860 Você está indo para ir para o S do, se você sabia onde o S do. 528 00:23:50,860 --> 00:23:54,230 Você pode ir mais ou menos para o meio ou ligeiramente inclinado para o final. 529 00:23:54,230 --> 00:23:56,850 E eu olho para baixo aqui e Estou na seção M. 530 00:23:56,850 --> 00:23:58,952 Mas o que você sabe sobre este problema agora, 531 00:23:58,952 --> 00:24:02,160 que não necessariamente saber antes com todos nós apenas contando-nos 532 00:24:02,160 --> 00:24:03,030 equivalentemente? 533 00:24:03,030 --> 00:24:06,010 Bem, Mike vai claramente estar nesta metade do livro 534 00:24:06,010 --> 00:24:07,920 se ele está aqui em tudo, porque ele é classificado. 535 00:24:07,920 --> 00:24:10,160 >> E assim você pode muito dramatically-- 536 00:24:10,160 --> 00:24:11,250 >> [Ofegante] 537 00:24:11,250 --> 00:24:12,300 >> Eu sei. 538 00:24:12,300 --> 00:24:16,940 >> [Aplausos] 539 00:24:16,940 --> 00:24:19,450 >> É realmente muito fácil se você fazê-lo na espinha lá. 540 00:24:19,450 --> 00:24:22,070 Mas você pode em seguida, jogá metade do problema de distância. 541 00:24:22,070 --> 00:24:25,950 Agora, eu estou à esquerda com a mesma problema-- encontrar Mike Smith em um telefone book-- 542 00:24:25,950 --> 00:24:29,610 mas agora o livro de telefone começa em M e vai até Z, mas é metade do tamanho. 543 00:24:29,610 --> 00:24:30,890 >> Mas isso é o que é impressionante. 544 00:24:30,890 --> 00:24:34,170 Assim como na teoria, rapazes, quando todos vocês sentou-se apenas a metade de cada vez, 545 00:24:34,170 --> 00:24:37,150 o problema tem metade do tamanho, metade do tamanho, uma e outra vez. 546 00:24:37,150 --> 00:24:40,260 Então, tem esse problema se tornar o mesmo problema, mas metade do tamanho. 547 00:24:40,260 --> 00:24:42,670 Agora é um problema de 250 páginas. 548 00:24:42,670 --> 00:24:45,340 Assim que eu percebo, oh, eu sou na seção T acidentalmente. 549 00:24:45,340 --> 00:24:46,590 Eu tenho ido longe demais. 550 00:24:46,590 --> 00:24:48,500 Eu posso jogar que metade do livro de telefone de distância. 551 00:24:48,500 --> 00:24:50,410 Agora, eu estou disposto a um trimestre do problema. 552 00:24:50,410 --> 00:24:53,910 >> E você pode repetir, repetir, repetir até que, em teoria, você está 553 00:24:53,910 --> 00:24:55,460 deixou com apenas uma página. 554 00:24:55,460 --> 00:24:59,010 E se Mike está nessa página, agora eu posso resolver este problema. 555 00:24:59,010 --> 00:25:00,810 Mas a rapidez com que eu resolver isso? 556 00:25:00,810 --> 00:25:05,420 No primeiro caso, ele me levou como talvez 1.000 passos para encontrar Mike Smith. 557 00:25:05,420 --> 00:25:09,260 Ele poderia ter tomado me-- Peguei o livro de telefone 558 00:25:09,260 --> 00:25:11,440 e eu comecei a olhar uma página de cada vez, 559 00:25:11,440 --> 00:25:13,480 e Mike poderiam ser 1.000 páginas mais tarde. 560 00:25:13,480 --> 00:25:16,020 >> Segunda abordagem, talvez me leva 500 passos, 561 00:25:16,020 --> 00:25:17,960 porque eu estou voando através de dois de cada vez. 562 00:25:17,960 --> 00:25:21,082 E a terceira abordagem, porém, é especialmente poderosa. 563 00:25:21,082 --> 00:25:23,790 Mas vamos considerar o que realmente fez com que essa terceira via. 564 00:25:23,790 --> 00:25:27,590 Eu vou ter o que eu vou chamar apenas estes demonstrações aqui, um de cada vez. 565 00:25:27,590 --> 00:25:28,560 Pegar um livro de telefone. 566 00:25:28,560 --> 00:25:30,130 Abra para o meio do livro de telefone. 567 00:25:30,130 --> 00:25:31,419 Olhe para nomes. 568 00:25:31,419 --> 00:25:33,960 E então as coisas ficam um pouco intelectualmente mais interessante, 569 00:25:33,960 --> 00:25:35,170 se ainda simples. 570 00:25:35,170 --> 00:25:38,350 Se Smith está entre os nomes nessa página atual, 571 00:25:38,350 --> 00:25:40,170 em seguida, fazer algo condicionalmente. 572 00:25:40,170 --> 00:25:41,840 É como uma bifurcação na estrada. 573 00:25:41,840 --> 00:25:42,660 Ligue para Mike. 574 00:25:42,660 --> 00:25:44,930 Se Mike está entre os nomes nessa página, chamado Mike. 575 00:25:44,930 --> 00:25:49,720 Mas só faça linha quatro se a linha árvore, se você, é verdade. 576 00:25:49,720 --> 00:25:51,590 A resposta a essa pergunta é sim. 577 00:25:51,590 --> 00:25:55,520 >> Else if Smith é no início do book-- em outras palavras, se eu estiver na seção M 578 00:25:55,520 --> 00:25:58,540 e eu estou procurando alguém para a esquerda, então o que devo fazer 579 00:25:58,540 --> 00:26:00,300 é algo muito semelhante. 580 00:26:00,300 --> 00:26:03,440 Então eu deveria abrir para o meio da metade esquerda do livro. 581 00:26:03,440 --> 00:26:07,930 Então vá para a esquerda e, em seguida volte para a etapa dois. 582 00:26:07,930 --> 00:26:09,290 Olhe para os nomes lá. 583 00:26:09,290 --> 00:26:12,779 >> Portanto, em outras palavras, fazer a mesma coisa, mas em um problema que tem sido reduzida para metade. 584 00:26:12,779 --> 00:26:13,570 Sabe o que mais? 585 00:26:13,570 --> 00:26:16,470 Se Smith é mais tarde no livro com base na página que eu estou olhando, 586 00:26:16,470 --> 00:26:18,790 aberta para o meio da metade direita do livro 587 00:26:18,790 --> 00:26:22,050 e, em seguida, voltar novamente a etapa dois, else-- 588 00:26:22,050 --> 00:26:24,000 há uma quarta possibilidade aqui. 589 00:26:24,000 --> 00:26:28,830 Mike aqui ou para a esquerda ou para a direita ou não existe. 590 00:26:28,830 --> 00:26:30,570 E aqui é melhor considerar isso. 591 00:26:30,570 --> 00:26:33,360 E, na verdade, se você já teve seu computador apenas bater em você, 592 00:26:33,360 --> 00:26:36,822 que é, por vezes, mas não sempre, a resultado de apenas um programador humano não 593 00:26:36,822 --> 00:26:39,280 percebendo, oh disparar, há realmente este quarto cenário. 594 00:26:39,280 --> 00:26:41,650 E se você não escrever o código para lidar com esse cenário, 595 00:26:41,650 --> 00:26:43,220 às vezes você não sabe o que o computador pode fazer. 596 00:26:43,220 --> 00:26:44,770 E, de fato um programa pode falhar. 597 00:26:44,770 --> 00:26:47,550 >> Mas, neste caso, eu pensei sobre ele, e eu disse, senão sair, 598 00:26:47,550 --> 00:26:49,850 porque essa é a quarta lógica cenário possível. 599 00:26:49,850 --> 00:26:51,950 Agora, vamos adicionar algum vocabulário para que 600 00:26:51,950 --> 00:26:55,320 pode começar a atirar em torno de termos que são de outra maneira muito intuitiva. 601 00:26:55,320 --> 00:26:57,870 Todas as coisas que eu apenas destacadas em amarelo aqui, 602 00:26:57,870 --> 00:27:00,140 Eu estou indo só para o funções ou procedimentos. 603 00:27:00,140 --> 00:27:01,590 Eles são apenas um tipo de acções. 604 00:27:01,590 --> 00:27:04,900 Então pegue, aberto a, olhar a, chamada, aberto, aberto, 605 00:27:04,900 --> 00:27:09,170 quit-- estes são apenas ações, ou nós vamos chamá-los de maneira mais formal, funções. 606 00:27:09,170 --> 00:27:11,410 >> Enquanto isso, agora em amarelo, Eu destacou as coisas 607 00:27:11,410 --> 00:27:14,084 isso-- vamos começar a chamar -lhes condições ou ramos. 608 00:27:14,084 --> 00:27:16,750 Estes são os pontos de decisão onde que você pode ir por este caminho, desta forma, 609 00:27:16,750 --> 00:27:18,100 ou alguma outra direcção ainda. 610 00:27:18,100 --> 00:27:19,430 Portanto, aqueles estarão condições. 611 00:27:19,430 --> 00:27:20,930 E agora esta é um pouco amador. 612 00:27:20,930 --> 00:27:24,600 Vamos chamar essas perguntas expressões booleanas, 613 00:27:24,600 --> 00:27:26,530 depois que alguém com um apelido Bool. 614 00:27:26,530 --> 00:27:28,340 >> E uma expressão booleana é apenas algo 615 00:27:28,340 --> 00:27:30,290 isso é verdadeiro ou falso, sim ou não. 616 00:27:30,290 --> 00:27:35,870 Portanto, é a pergunta cuja resposta você se preocupam, de modo a em uma condição 617 00:27:35,870 --> 00:27:39,210 fazer uma decision-- voltar uma resposta, e depois ir para a esquerda ou direita, ou algo 618 00:27:39,210 --> 00:27:40,450 outra coisa completamente. 619 00:27:40,450 --> 00:27:42,860 >> E, em seguida, por último, estes linhas aqui-- voltar 620 00:27:42,860 --> 00:27:44,737 a etapa dois, volte ao passo que poderia dois-- 621 00:27:44,737 --> 00:27:46,320 implementar esta ideia de maneiras diferentes. 622 00:27:46,320 --> 00:27:49,028 E então aqueles de vocês com experiência em programação poderia ter feito 623 00:27:49,028 --> 00:27:50,670 ou pode imaginar fazendo isso de forma diferente. 624 00:27:50,670 --> 00:27:53,170 Mas para fins de hoje, é apenas a idéia que importa. 625 00:27:53,170 --> 00:27:55,400 Isto é o que induzir vamos geralmente chamamos 626 00:27:55,400 --> 00:28:00,110 um loop-- algum tipo de ciclo, porque isto está me fazendo fazer algo novo. 627 00:28:00,110 --> 00:28:03,340 >> Então, agora, vamos considerar apenas como é bom este algoritmo é. 628 00:28:03,340 --> 00:28:03,899 Está certo. 629 00:28:03,899 --> 00:28:06,940 Se Mike no livro, é um dos os quatro scenarios-- novo e de novo 630 00:28:06,940 --> 00:28:08,023 e novamente, vamos encontrá-lo. 631 00:28:08,023 --> 00:28:08,890 Mas como é que é bom? 632 00:28:08,890 --> 00:28:10,150 Bem, não temos ser demasiado formal aqui. 633 00:28:10,150 --> 00:28:12,066 Mas vamos traçar algo, x e y, para obter 634 00:28:12,066 --> 00:28:14,470 um sentido da forma deste problema. 635 00:28:14,470 --> 00:28:17,160 >> No eixo dos x é aqui o tamanho do meu problema. 636 00:28:17,160 --> 00:28:20,256 E um eixo y aqui será o tempo para resolver. 637 00:28:20,256 --> 00:28:21,630 Então, talvez este é o número de páginas. 638 00:28:21,630 --> 00:28:24,400 Talvez esta seja segundos ou A página turns-- o que quer. 639 00:28:24,400 --> 00:28:27,290 No entanto, você quer contar é o que esta imagem vai representar. 640 00:28:27,290 --> 00:28:30,630 E que primeiro algoritmo, eu vou para descrever como apenas uma linha reta. 641 00:28:30,630 --> 00:28:33,120 Se há n páginas o livro de telefone, então ele 642 00:28:33,120 --> 00:28:36,010 pode me levar como muitos como n passos para encontrar Mike. 643 00:28:36,010 --> 00:28:38,930 Se Verizon ou a empresa de telefonia acrescenta mais uma página no próximo ano, 644 00:28:38,930 --> 00:28:42,170 isso pode levar-me mais uma step-- mais uma unidade de tempo para encontrar Mike. 645 00:28:42,170 --> 00:28:44,230 Portanto, há apenas isso 12:59 ratio. 646 00:28:44,230 --> 00:28:45,970 É um declive linha reta. 647 00:28:45,970 --> 00:28:49,110 >> Enquanto isso, que a segunda algorithm-- se eu sou 648 00:28:49,110 --> 00:28:51,570 indo de dois em dois dois tempo--, quatro, seis, oito, ou double-- 649 00:28:51,570 --> 00:28:54,550 passando as páginas duas vezes de cada vez, duas de cada vez, 650 00:28:54,550 --> 00:28:55,710 ainda é linear. 651 00:28:55,710 --> 00:28:58,720 Há agora um 1-2 ratio, mas um pouco mais baixa. 652 00:28:58,720 --> 00:29:02,240 Portanto, se há isso muitas páginas no gráfico aqui em amarelo, 653 00:29:02,240 --> 00:29:04,800 que possa me aproveitar esta muitos passos ou segundos, 654 00:29:04,800 --> 00:29:07,980 caso contrário ele vai me levar o dobro na linha vermelha. 655 00:29:07,980 --> 00:29:10,190 >> Mas a linha verde é o takeaway real. 656 00:29:10,190 --> 00:29:12,290 Isto é o que geralmente chamar um log logorithm-- 657 00:29:12,290 --> 00:29:13,840 de n, onde n é o número de páginas. 658 00:29:13,840 --> 00:29:16,450 Mas é a forma que importa hoje, porque não temos 659 00:29:16,450 --> 00:29:17,950 para sequer pensar em plotar pontos. 660 00:29:17,950 --> 00:29:19,830 >> Pense em um cenário extremo. 661 00:29:19,830 --> 00:29:23,070 Suponha Verizon amanhã dobra o número de páginas em que o livro de telefone, 662 00:29:23,070 --> 00:29:24,900 de 1.000 a 2.000. 663 00:29:24,900 --> 00:29:28,440 No primeiro algoritmo, I pode perder um extra de 1000 664 00:29:28,440 --> 00:29:32,080 etapas à procura de Mike, só porque Verizon duplicou o tamanho do livro. 665 00:29:32,080 --> 00:29:34,740 A segunda algorithm-- que poderia leve-me um extra de 500 passos. 666 00:29:34,740 --> 00:29:38,370 mais de 1.000 páginas, eu vou de dois em dois tempo-- mais 500 passos para encontrar Mike. 667 00:29:38,370 --> 00:29:41,020 >> Mas esse terceiro algoritmo é uma espécie de mágica. 668 00:29:41,020 --> 00:29:44,270 Verizon duplica o número de páginas de 1000 a 2000, 669 00:29:44,270 --> 00:29:47,730 Mas quantos mais passos faz ele me levar para procurar Mike? 670 00:29:47,730 --> 00:29:51,220 É apenas um, porque eu posso apenas rasgar o livro de telefone mais uma vez 671 00:29:51,220 --> 00:29:55,280 de um problema de 2.000 página a um 1.000 problema página, e pronto. 672 00:29:55,280 --> 00:29:57,030 Eu tomei uma mordida enorme fora dele. 673 00:29:57,030 --> 00:29:59,405 >> E se você for realmente extremo, supor que o livro de telefone 674 00:29:59,405 --> 00:30:03,600 empresa tinha algo louco como um livro de telefone 4 bilhões página. 675 00:30:03,600 --> 00:30:07,020 Bem quantos passos que pode demorar para encontrar Mike Smith num 4000000000 676 00:30:07,020 --> 00:30:09,990 livro de telefone página? 677 00:30:09,990 --> 00:30:16,450 É um grande número, mas apenas 4 bilhões para 2000-1000 milhões para 500 milhões, 678 00:30:16,450 --> 00:30:18,720 250 milhões-- ainda soa como grandes números, 679 00:30:18,720 --> 00:30:20,980 mas eu sou muito rapidamente chegando a valores menores. 680 00:30:20,980 --> 00:30:24,790 >> E, na verdade, se eu fizer as contas direito, só posso dividir 4 bilhões 681 00:30:24,790 --> 00:30:28,750 por cerca de 32 vezes antes Eu descer para apenas um. 682 00:30:28,750 --> 00:30:31,640 Portanto, se esse livro de telefone foram 4 bilhão de páginas, não é grande coisa. 683 00:30:31,640 --> 00:30:35,270 Dentro de poucos segundos, talvez 32 segundo, eu poderia dividi-lo ao meio 684 00:30:35,270 --> 00:30:39,560 e, eventualmente, encontrar Mike ou concluir que ele não está lá. 685 00:30:39,560 --> 00:30:42,219 E essa é a essência de um algorithm-- um bom algoritmo. 686 00:30:42,219 --> 00:30:44,260 E isso é uma das objetivos de uma classe como este, 687 00:30:44,260 --> 00:30:47,350 está tentando descobrir como faço resolver o problema não apenas correctamente, 688 00:30:47,350 --> 00:30:52,360 como eu sempre sabia como fazê-lo um página de cada vez-- mas corretamente e bem. 689 00:30:52,360 --> 00:30:55,034 Como eu crio boa soluções para os problemas? 690 00:30:55,034 --> 00:30:57,200 Portanto, vamos ter um momento aqui e dar-lhe um sentido agora 691 00:30:57,200 --> 00:31:00,260 de CS50 o curso itself-- introduzir membros da equipe a poucos curso. 692 00:31:00,260 --> 00:31:02,010 Pouco antes de 02:00, nós vamos fazer uma pequena pausa 693 00:31:02,010 --> 00:31:03,520 de modo que aqueles de vocês que estão comprando pode 694 00:31:03,520 --> 00:31:05,130 duck para fora e dar uma olhar para alguma outra classe 695 00:31:05,130 --> 00:31:06,580 e assistir o resto deste online. 696 00:31:06,580 --> 00:31:09,250 Mas, por agora, deixe-me apresentar CS50, a classe em si, 697 00:31:09,250 --> 00:31:11,330 e, particularmente, o que é novo. 698 00:31:11,330 --> 00:31:13,960 >> Assim, a mola passado, nós passei um pouco de tempo-- 699 00:31:13,960 --> 00:31:17,911 o pessoal do curso e eu- pensar sobre o que é que queremos CS50 a ser, 700 00:31:17,911 --> 00:31:19,910 e voltar para a primeira princípios, por assim dizer, 701 00:31:19,910 --> 00:31:22,760 a considerar o que é que queremos este curso para parecer e ser 702 00:31:22,760 --> 00:31:23,740 como por seus alunos. 703 00:31:23,740 --> 00:31:26,480 E então você verá no problema definir a zero, bem como, um convite 704 00:31:26,480 --> 00:31:28,780 para dar uma olhada no que URL que resume 705 00:31:28,780 --> 00:31:33,270 algumas das motivações por trás do seguintes características de queda de 2016. 706 00:31:33,270 --> 00:31:35,570 >> Então, como você pode ter recolhido do TL: apostila DR, 707 00:31:35,570 --> 00:31:39,060 o programa de hoje, bem como de o catálogo de cursos, este ano, em CS50, 708 00:31:39,060 --> 00:31:42,540 você é esperado apenas para participar today-- assim trabalho bem done-- 709 00:31:42,540 --> 00:31:45,960 ea última palestra em 21 de novembro. 710 00:31:45,960 --> 00:31:49,150 E você é bem-vindo, mas não se espera que assistir a essas palestras no meio, 711 00:31:49,150 --> 00:31:51,180 porque o que estamos fazendo este ano, está atirando 712 00:31:51,180 --> 00:31:52,661 em tempo real o material do curso. 713 00:31:52,661 --> 00:31:54,660 Então, tudo vai ficar corrente e incorporada 714 00:31:54,660 --> 00:31:57,410 o melhor que can-- eventos atuais e conversas que pessoas podem 715 00:31:57,410 --> 00:32:00,400 ter na indústria no mundo, mas fazendo que o material 716 00:32:00,400 --> 00:32:03,892 disponível, como um resultado, mesmo earlier-- completo com transcrições de texto completo 717 00:32:03,892 --> 00:32:05,850 e pesquisa e a links para outros recursos. 718 00:32:05,850 --> 00:32:07,930 >> E, de fato, temos sido reivindicando por algum tempo 719 00:32:07,930 --> 00:32:10,830 e nós agora acreditar, que podemos criar, digitalmente, 720 00:32:10,830 --> 00:32:15,170 um mais envolvente, a mais atraente experiência educacional, em oposição 721 00:32:15,170 --> 00:32:19,110 para se reunindo aqui cerca de 23 vezes em pessoa, ouvindo alguém como eu 722 00:32:19,110 --> 00:32:22,925 simplesmente falar sobre ciência da computação, em oposição ao envolvimento de forma mais activa. 723 00:32:22,925 --> 00:32:25,800 Então você verá no currículo do curso um esboço do semestre aqui, 724 00:32:25,800 --> 00:32:27,840 juntamente com quando palestras ser filmado, para o qual você está 725 00:32:27,840 --> 00:32:29,710 bem-vindo, mas não esperava, e quando eles vão 726 00:32:29,710 --> 00:32:31,640 ser lançado no site do curso. 727 00:32:31,640 --> 00:32:34,300 >> E o que vamos fazer aqui na Quartas-feiras a partir da próxima semana, 728 00:32:34,300 --> 00:32:37,362 é muito mais intimamente, com apenas aquelas pessoas que querem participar, 729 00:32:37,362 --> 00:32:39,820 é um chamado caminhada através, onde eu e as cabeças do curso 730 00:32:39,820 --> 00:32:41,730 vai realmente fazer as coisas um pouco mais íntima 731 00:32:41,730 --> 00:32:44,313 aqui em baixo na orquestra seção, ainda têm alguma tecnologia 732 00:32:44,313 --> 00:32:46,365 e percorrer o conjunto de problemas semana em curso, 733 00:32:46,365 --> 00:32:50,020 e oferecer-lhe particularly-- se entre Os menos comfortable-- ainda mais 734 00:32:50,020 --> 00:32:52,790 orientação que você pode querer ou precisa para o desafio da semana. 735 00:32:52,790 --> 00:32:55,820 E da mesma forma, para aqueles que não podem assistir aqueles em pessoa, não é grande coisa. 736 00:32:55,820 --> 00:32:58,486 Não será semelhante conduzido por um dos quadros superiores do curso, 737 00:32:58,486 --> 00:33:02,650 Zamalya, a mesma oportunidade incorporado no problema define-se. 738 00:33:02,650 --> 00:33:04,960 >> Problema define este ano será lançado em sextas-feiras 739 00:33:04,960 --> 00:33:08,080 e já não fazem sete dias depois, mas 10 dias later-- deliberadamente 740 00:33:08,080 --> 00:33:10,910 sobreposição com cada problema definido, de modo a melhor acomodar, 741 00:33:10,910 --> 00:33:13,050 esperamos, fluxo e refluxo em horários de estudantes, 742 00:33:13,050 --> 00:33:16,550 especialmente quando midterms ou atletismo ou acadêmicos ou extracurriculars 743 00:33:16,550 --> 00:33:18,465 tendem a ir e vir especialmente na metade do semestre. 744 00:33:18,465 --> 00:33:21,340 Isso deve lhe dar um pouco mais critério para saber se você frente 745 00:33:21,340 --> 00:33:25,690 carregar o seu semana com CS50 ou carga de volta -lo no fim de semana seguinte em vez disso. 746 00:33:25,690 --> 00:33:28,817 Então olhe para syllabus do curso aqui para a programação da mesma. 747 00:33:28,817 --> 00:33:30,900 E você vai notar também entre as mudanças este ano, 748 00:33:30,900 --> 00:33:34,082 para aqueles mais familiarizados com programação no passado, 749 00:33:34,082 --> 00:33:36,290 vamos começar o semestre como vamos hoje em risco, 750 00:33:36,290 --> 00:33:39,730 concentrar especialmente na linguagem chamado C, e depois não transição 751 00:33:39,730 --> 00:33:43,430 para PHP, mas para uma linguagem chamada Python para o fim do semestre 752 00:33:43,430 --> 00:33:46,565 no contexto de programação web, juntamente com SQL e JavaScript, 753 00:33:46,565 --> 00:33:48,930 HTML, CSS, e ainda mais. 754 00:33:48,930 --> 00:33:51,790 >> E, em resposta a um FAQ, que é realmente o caso 755 00:33:51,790 --> 00:33:55,520 que o CS não é tão assustador como eu uma vez pensei que era, mas é tanto trabalho 756 00:33:55,520 --> 00:33:57,280 como eu tinha ouvido falar que poderia ser. 757 00:33:57,280 --> 00:34:03,210 Mas esta é a palavra que aqui estão alguns estatísticas do outono de 2015 corpo discente, 758 00:34:03,210 --> 00:34:06,460 em que as linhas azuis horizontais representa o número médio de hora 759 00:34:06,460 --> 00:34:06,960 relatado. 760 00:34:06,960 --> 00:34:10,570 E você vai ver uma média de seis a 10 a 16 12-- talvez 761 00:34:10,570 --> 00:34:14,580 ou assim e assim por diante, mas com alta variância para ser claro. 762 00:34:14,580 --> 00:34:18,570 E assim perceber que não há apenas alunos mais confortável e menos 763 00:34:18,570 --> 00:34:22,150 confortável no curso, mas um suporte correspondente 764 00:34:22,150 --> 00:34:25,699 estrutura para obter esses alunos por meio do semestre com sucesso. 765 00:34:25,699 --> 00:34:29,409 >> Com efeito, em resposta a uma FAQ, deve você tomar CS50 como um primeiro ano? 766 00:34:29,409 --> 00:34:30,139 Absolutamente. 767 00:34:30,139 --> 00:34:32,690 E, na verdade, eu me arrependo Não tendo encontrado meu caminho 768 00:34:32,690 --> 00:34:35,170 ou encontrado um novo campo que o primeiro ano também. 769 00:34:35,170 --> 00:34:39,149 E você deve tomar CS50 com outros cursos, certamente como bem-- 770 00:34:39,149 --> 00:34:41,940 e o conselho geral poderíamos dar aos alunos, que CS50 é provavelmente 771 00:34:41,940 --> 00:34:44,929 não o tipo de classe ou classe de introdução que você deve tomar com três 772 00:34:44,929 --> 00:34:47,199 Outro ou outros quatro classes de set-p. 773 00:34:47,199 --> 00:34:50,583 Mas se você está tomando dois outros p-set aulas, outra coisa, e CS50, 774 00:34:50,583 --> 00:34:51,499 absolutamente controlável. 775 00:34:51,499 --> 00:34:54,900 Eu tive muitos alunos na passado feito isso com bastante sucesso. 776 00:34:54,900 --> 00:34:57,490 >> E para chegar em direção a esse terminar linha com sucesso, 777 00:34:57,490 --> 00:35:00,260 O curso tem sections-- diferentes faixas para estudantes 778 00:35:00,260 --> 00:35:03,100 menos confortável, mais confortável, e em algum lugar no meio, 779 00:35:03,100 --> 00:35:04,850 pelo que no decurso da primeiro conjunto de problemas, 780 00:35:04,850 --> 00:35:06,360 você será solicitado a descrever a si mesmo. 781 00:35:06,360 --> 00:35:09,151 E se você está entre os menos confortável, é o tipo de coisa 782 00:35:09,151 --> 00:35:10,420 que você acabou de vez sei. 783 00:35:10,420 --> 00:35:13,010 E, de fato, essa tem sido a crescimento demográfico no CS50 784 00:35:13,010 --> 00:35:14,090 há muito poucos anos. 785 00:35:14,090 --> 00:35:17,680 >> A partir do final do ano passado para exemplo, 58% da classe 786 00:35:17,680 --> 00:35:20,560 descreveram-se como entre aqueles menos confortável, 787 00:35:20,560 --> 00:35:23,210 com 9% entre aqueles mais confortável, e, em seguida, 788 00:35:23,210 --> 00:35:25,900 os outros alunos lá em vermelho se descrevem 789 00:35:25,900 --> 00:35:27,890 como algures no meio. 790 00:35:27,890 --> 00:35:31,980 E você vai ver aqui os tópicos geral e programação de secções, todos os quais 791 00:35:31,980 --> 00:35:34,820 são oferecidos em pessoa, em tempo real, com o curso de 792 00:35:34,820 --> 00:35:38,320 incrível equipe de bolsistas de ensino e os assistentes do curso, alguns dos quais 793 00:35:38,320 --> 00:35:39,660 você vai encontrar em apenas um momento. 794 00:35:39,660 --> 00:35:42,993 >> Secções si, como você verá, a vontade ser segundas-feiras e terças-feiras e quartas-feiras, 795 00:35:42,993 --> 00:35:45,910 de modo a permitir-lhe mergulhar em depois de se engajar, se assim 796 00:35:45,910 --> 00:35:48,110 escolher, no decurso do palestra no início daquela semana. 797 00:35:48,110 --> 00:35:51,420 E depois do expediente, que Certamente, a cada ano que passa, 798 00:35:51,420 --> 00:35:54,110 não foram menos de um desafiar para o curso. 799 00:35:54,110 --> 00:35:57,040 E este ano, não estamos planejando apenas para exercer o cargo horas-- um 800 00:35:57,040 --> 00:36:00,300 em um oportunidades de ajuda para alunos às quartas-feiras às quintas-feiras 801 00:36:00,300 --> 00:36:03,790 e aos domingos, a última destas sendo na parte da tarde por design 802 00:36:03,790 --> 00:36:06,910 para reduzir algum do esforço que invariavelmente surge com tarde da noite 803 00:36:06,910 --> 00:36:10,180 p-settting com um prazo looming-- mas também será oferecido o horário de expediente 804 00:36:10,180 --> 00:36:14,920 às segundas e terças-feiras e Quartas e sextas-feiras e sábados, 805 00:36:14,920 --> 00:36:17,080 graças aos nossos amigos no HSA. 806 00:36:17,080 --> 00:36:20,330 >> CS50 agora tem seu próprio espaço para estudantes e pessoal CS50, 807 00:36:20,330 --> 00:36:23,070 no topo de 67 Mount Auburn Street, ali mesmo na Harvard Square. 808 00:36:23,070 --> 00:36:26,340 A visão para o que é que CS50 de TFs e CAS ao longo da semana, 809 00:36:26,340 --> 00:36:29,052 praticamente durante a maior dias, vai estar lá para o apoio. 810 00:36:29,052 --> 00:36:30,760 Então, se você tem algum pergunta em um p-set 811 00:36:30,760 --> 00:36:33,093 ou se você estiver sentindo um pouco bloqueadas ou um pouco confuso, 812 00:36:33,093 --> 00:36:35,640 e diabos, você tem uma hora ou meia hora entre as classes, 813 00:36:35,640 --> 00:36:38,920 especialmente no square-- você pode pop e ter essa pergunta respondida 814 00:36:38,920 --> 00:36:41,720 de ter essa confusão clarified-- muito no espírito, 815 00:36:41,720 --> 00:36:45,490 você está familiarizado, da matemática próprio centro de perguntas de matemática do departamento, 816 00:36:45,490 --> 00:36:49,300 mas praticamente todo o dia por [? Gcal?] Que colocaremos online. 817 00:36:49,300 --> 00:36:52,400 >> Explicações também está disponível para aqueles estudantes, livremente do curso de 818 00:36:52,400 --> 00:36:54,750 próprio pessoal se você gostaria mais íntima um em um, 819 00:36:54,750 --> 00:36:58,940 ou dois ou três colegas de classe única, trabalhando com um dos membros da equipe do curso. 820 00:36:58,940 --> 00:37:02,320 E, de fato, estas aqui são apenas alguns dos membros da equipe do curso, 821 00:37:02,320 --> 00:37:04,120 alguns dos quais você vai reunir-se em apenas um momento. 822 00:37:04,120 --> 00:37:07,440 Na verdade, CS50 própria cabeça de ensino companheiro, 823 00:37:07,440 --> 00:37:09,790 e claro cabeça assistente e preceptor, 824 00:37:09,790 --> 00:37:12,998 poderia vir em cima, permitem -los para dizer Olá. 825 00:37:12,998 --> 00:37:22,498 >> [Aplausos] 826 00:37:22,498 --> 00:37:23,456 COLUNA 1: [inaudível]. 827 00:37:23,456 --> 00:37:51,842 828 00:37:51,842 --> 00:37:57,856 >> [Aplausos] 829 00:37:57,856 --> 00:37:58,814 COLUNA 2: [inaudível]. 830 00:37:58,814 --> 00:38:17,240 831 00:38:17,240 --> 00:38:27,238 >> [Aplausos] 832 00:38:27,238 --> 00:38:28,196 COLUNA 3: [inaudível]. 833 00:38:28,196 --> 00:38:58,951 834 00:38:58,951 --> 00:39:03,120 >> [Aplausos] 835 00:39:03,120 --> 00:39:06,740 >> DAVID MALAN: E nos permitem trazer a bordo dois dos CS50 da maioria 836 00:39:06,740 --> 00:39:09,730 altos funcionários, Rob e Zamayla também. 837 00:39:09,730 --> 00:39:15,120 >> [Aplausos] 838 00:39:15,120 --> 00:39:17,226 >> Com efeito, tanto Rob e Zamayla têm estado conosco 839 00:39:17,226 --> 00:39:19,940 por tanto tempo, que eu era capaz para entrar em arquivos do CS50 840 00:39:19,940 --> 00:39:22,470 e acho isso muito SD metragem deles participando 841 00:39:22,470 --> 00:39:25,402 no palco-se há alguns anos. 842 00:39:25,402 --> 00:39:26,110 ROB: [inaudível]. 843 00:39:26,110 --> 00:39:53,660 844 00:39:53,660 --> 00:39:59,247 >> [Aplausos] 845 00:39:59,247 --> 00:40:00,080 ZAMAYLA: [inaudível] 846 00:40:00,080 --> 00:40:50,888 847 00:40:50,888 --> 00:40:52,467 >> [Aplausos] 848 00:40:52,467 --> 00:40:53,425 DAVID MALAN: Obrigado. 849 00:40:53,425 --> 00:40:56,160 850 00:40:56,160 --> 00:40:58,030 Assim, para além destas os membros da equipe aqui, 851 00:40:58,030 --> 00:41:01,662 CS50 tem uma equipe de quase 100 os funcionários, os quais 852 00:41:01,662 --> 00:41:04,370 estará disponível para secções e horas de escritório e muito mais. 853 00:41:04,370 --> 00:41:06,920 E, como Rob diz também, este é a revisão mais significativa 854 00:41:06,920 --> 00:41:09,534 de CS50 nos 10 anos que Eu estive no [inaudível]. 855 00:41:09,534 --> 00:41:12,200 [Inaudível] focado especialmente no fornecimento de uma estrutura de suporte, 856 00:41:12,200 --> 00:41:14,050 aparar fora um monte de a maior que tem sido 857 00:41:14,050 --> 00:41:16,870 acumulada em 10 anos desenvolvimentos de iterativos 858 00:41:16,870 --> 00:41:18,120 em conjuntos de problemas do curso. 859 00:41:18,120 --> 00:41:21,470 >> Portanto, este ano, não só em sala de aula, mas também sob a forma do problema do curso 860 00:41:21,470 --> 00:41:24,800 conjuntos, você deve encontrar as coisas para ser mais racionalizado, trimmer, muito 861 00:41:24,800 --> 00:41:26,700 mais manejável do que no ano passado, como nós 862 00:41:26,700 --> 00:41:31,330 lançar alguma da bagagem que é desenvolvido pela natureza do ano em evolução 863 00:41:31,330 --> 00:41:32,970 após ano e iteração. 864 00:41:32,970 --> 00:41:35,110 Assim, o novo e melhorado começa hoje. 865 00:41:35,110 --> 00:41:37,860 >> Você vai conhecer um pouco mais da equipe fora do curso no [inaudível] 866 00:41:37,860 --> 00:41:40,186 às 2:30, onde servimos, como uma tradição, bolo. 867 00:41:40,186 --> 00:41:42,060 Há um pouco mais bolo do que isso, mas você vai 868 00:41:42,060 --> 00:41:44,690 meet Erin e Tobias e outros ainda. 869 00:41:44,690 --> 00:41:46,470 E deixe-me dar-lhe um passeio antes de ouvir 870 00:41:46,470 --> 00:41:49,600 de alguns dos outros membros da equipe na classe, do que espera também. 871 00:41:49,600 --> 00:41:52,730 Na verdade, nós sempre começar CS50 de semestre no próximo sábado, 872 00:41:52,730 --> 00:41:54,330 com o que é chamado de Dia CS50 Puzzle. 873 00:41:54,330 --> 00:41:56,710 >> Não tem nada a ver com ciência da computação, por si só, 874 00:41:56,710 --> 00:41:58,669 mas com cerca de problema resolvendo de forma mais geral. 875 00:41:58,669 --> 00:42:01,210 E, se assim optar por participar, por alguns dos convites, 876 00:42:01,210 --> 00:42:03,460 você pode ter visto porta caiu ou na fase aqui, 877 00:42:03,460 --> 00:42:05,830 é uma oportunidade em equipes de dois ou três ou quatro, 878 00:42:05,830 --> 00:42:10,680 para participar de puzzles e pizza e prêmios e more-- neste sábado, 879 00:42:10,680 --> 00:42:12,560 Fique ligado para mais. 880 00:42:12,560 --> 00:42:15,082 >> Você encontrará também que todos os Sexta-feira, em Fire and Ice, 881 00:42:15,082 --> 00:42:16,790 O CS50 trazer um todo grupo de estudantes 882 00:42:16,790 --> 00:42:19,100 para o almoço, para fazer um grande classe se sentir mais íntimo, 883 00:42:19,100 --> 00:42:21,820 e, geralmente, aproximar ex-alunos e amigos da indústria 884 00:42:21,820 --> 00:42:24,710 para falar sobre o que eles têm sido até desde a graduação. 885 00:42:24,710 --> 00:42:27,820 Da mesma forma, este ano, será que inaugurar a primeira CS50 50 886 00:42:27,820 --> 00:42:31,390 codificação contest-- a meio do semestre oportunidade de permitir que todos 887 00:42:31,390 --> 00:42:35,430 em uma opção na base, para ter um desafio de juízo contra os colegas, 888 00:42:35,430 --> 00:42:39,250 novamente em equipes de dois, três ou quatro, usando apenas que a programação 889 00:42:39,250 --> 00:42:41,920 savvy que você então tem sob o cinto depois de apenas seis ou sete 890 00:42:41,920 --> 00:42:44,710 semanas da classe, e participando neste tipo de competição 891 00:42:44,710 --> 00:42:50,261 online-- se você gostaria de aprimorar o seu próprio habilidades ainda mais nesse desafio. 892 00:42:50,261 --> 00:42:52,760 No final do semestre é o chamado CS50 Hackathon-- 893 00:42:52,760 --> 00:42:56,970 uma oportunidade que começa às 7:00 PM termina às 07h00, e ao longo do caminho 894 00:42:56,970 --> 00:43:01,900 São 12 horas da noite em que a mergulhar em project-- final da Claro 895 00:43:01,900 --> 00:43:04,820 uma oportunidade para projetar e implementar a maioria qualquer coisa de interesse 896 00:43:04,820 --> 00:43:06,980 para você com seu ensino a orientação de colegas. 897 00:43:06,980 --> 00:43:09,600 Por volta de 09:00 nós normalmente servem pizza, 1:00 AM, 898 00:43:09,600 --> 00:43:13,210 Philippe de, e os poucos de nós que ainda estão acordados às 5:00 AM, 899 00:43:13,210 --> 00:43:16,310 são shuttle bussed para baixo da estrada para IHOP no café da manhã. 900 00:43:16,310 --> 00:43:19,340 >> E depois de alguns dias mais tarde é o chamado CS50 fare-- 901 00:43:19,340 --> 00:43:23,450 um fim de exposição semestre em celebração de quão longe tantos 902 00:43:23,450 --> 00:43:28,200 de CS50 estudantes vieram de semana de zero até a semana passada, 903 00:43:28,200 --> 00:43:32,610 e tendo em conta que 73% daqueles colegas e seu este ano 904 00:43:32,610 --> 00:43:34,840 Nunca feito um curso de CS antes. 905 00:43:34,840 --> 00:43:39,226 Na verdade, para enfatizar tanto, aqui É mais alguns rostos do pessoal do CS50. 906 00:43:39,226 --> 00:43:40,184 COLUNA 4: [inaudível]. 907 00:43:40,184 --> 00:43:45,909 908 00:43:45,909 --> 00:43:46,867 COLUNA 5: [inaudível]. 909 00:43:46,867 --> 00:43:51,332 910 00:43:51,332 --> 00:43:52,290 COLUNA 6: [inaudível]. 911 00:43:52,290 --> 00:43:55,276 912 00:43:55,276 --> 00:43:56,234 COLUNA 7: [inaudível]. 913 00:43:56,234 --> 00:44:01,727 914 00:44:01,727 --> 00:44:02,643 COLUNA 8: [inaudível] 915 00:44:02,643 --> 00:44:10,066 916 00:44:10,066 --> 00:44:11,024 COLUNA 9: [inaudível]. 917 00:44:11,024 --> 00:44:14,475 918 00:44:14,475 --> 00:44:15,461 >> COLUNA 4: [inaudível]. 919 00:44:15,461 --> 00:44:16,461 >> COLUNA 10: [inaudível]. 920 00:44:16,461 --> 00:44:21,456 921 00:44:21,456 --> 00:44:23,438 COLUNA 11: [inaudível]. 922 00:44:23,438 --> 00:44:24,438 COLUNA 12: [inaudível]. 923 00:44:24,438 --> 00:44:30,438 924 00:44:30,438 --> 00:44:31,396 COLUNA 13: [inaudível] 925 00:44:31,396 --> 00:44:37,360 926 00:44:37,360 --> 00:44:40,342 >> COLUNA 14: [inaudível]. 927 00:44:40,342 --> 00:44:42,863 >> COLUNA 13: [inaudível]. 928 00:44:42,863 --> 00:44:43,821 COLUNA 15: [inaudível] 929 00:44:43,821 --> 00:44:48,785 930 00:44:48,785 --> 00:44:49,785 COLUNA 16: [inaudível]. 931 00:44:49,785 --> 00:44:53,761 932 00:44:53,761 --> 00:44:55,252 >> COLUNA 11: [inaudível] 933 00:44:55,252 --> 00:44:57,773 934 00:44:57,773 --> 00:44:58,731 COLUNA 5: [inaudível]. 935 00:44:58,731 --> 00:45:11,250 936 00:45:11,250 --> 00:45:15,130 DAVID MALAN: Alguns da equipe são eles próprios compras classes. 937 00:45:15,130 --> 00:45:17,760 Mas se esses membros do pessoal CS50 está aqui, 938 00:45:17,760 --> 00:45:19,230 poderia vir em cima por apenas um momento. 939 00:45:19,230 --> 00:45:23,450 TFs do CS50 e CAs e [? funcionários ?] membros aqui-- estes são apenas alguns 940 00:45:23,450 --> 00:45:28,880 do faces-- um dos quais você só vi, e alguns outro-- e alguns outros 941 00:45:28,880 --> 00:45:30,020 ainda. 942 00:45:30,020 --> 00:45:33,242 Por que não podemos ir em frente e permitir vocês uma pausa de cinco minutos. 943 00:45:33,242 --> 00:45:35,450 Se você precisa de pato para aulas de loja, tudo bem. 944 00:45:35,450 --> 00:45:38,900 E em cinco minutos, vamos retomar, tendo um olhar para o primeiro Scratch-- 945 00:45:38,900 --> 00:45:42,420 da nossa linguagem de programação, atender o pessoal do curso aqui um pouco mais, 946 00:45:42,420 --> 00:45:45,020 e em última análise, concentrar no conjunto de problemas zero. 947 00:45:45,020 --> 00:45:46,710 Então, vamos estar de volta em cinco minutos. 1 00:45:46,864 --> 00:45:47,370 >> Tudo certo. 2 00:45:47,370 --> 00:45:48,590 Então, estamos de volta. 3 00:45:48,590 --> 00:45:51,330 E no nosso restantes vez hoje, o objetivo 4 00:45:51,330 --> 00:45:54,320 é nivelar o campo de jogo em termos de alguma terminologia, 5 00:45:54,320 --> 00:45:55,297 em termos de algumas idéias. 6 00:45:55,297 --> 00:45:57,380 Uma vez que, de facto, conforme alguns dos gráficos anteriores, 7 00:45:57,380 --> 00:46:00,130 lá vai ser uma série de níveis de experiência na classe, 8 00:46:00,130 --> 00:46:03,210 alguns de cujos alunos têm tomado alguma programação antes, 9 00:46:03,210 --> 00:46:04,200 alguns dos quais não têm. 10 00:46:04,200 --> 00:46:07,430 E assim, com este primeiro problema e definir com este primeiro idioma 11 00:46:07,430 --> 00:46:10,830 temos uma oportunidade para começar a tomar para concedido a partir de hoje 12 00:46:10,830 --> 00:46:12,960 algum vocabulário ea idéia comum. 13 00:46:12,960 --> 00:46:15,590 >> E nós vamos fazer isso por meio de primeira languages-- do curso 14 00:46:15,590 --> 00:46:21,070 Além de C e Python e JavaScript e SQL e HTML e CSS, 15 00:46:21,070 --> 00:46:24,450 vamos nos concentrar inicialmente e apenas para o problema de definir a zero 16 00:46:24,450 --> 00:46:28,160 nesta linguagem gráfica, chamada Zero, desenvolvido pelo Laboratório de Mídia do MIT 17 00:46:28,160 --> 00:46:30,880 abaixo da estrada, para ajudar estudantes e crianças especialmente 18 00:46:30,880 --> 00:46:35,070 expressar-se algorithmically-- de um modo mais consistente com o que 19 00:46:35,070 --> 00:46:37,300 podemos chamar de pensamento computacional. 20 00:46:37,300 --> 00:46:40,985 >> E é uma língua útil porque muito rapidamente na próxima semana em uma semana, 21 00:46:40,985 --> 00:46:44,360 é que vamos fazer a transição para uma forma mais linguagem tradicional e misteriosa chamada 22 00:46:44,360 --> 00:46:46,370 C, que é puramente textual. 23 00:46:46,370 --> 00:46:48,930 Você só pode usar o teclado na Para escrever instruções 24 00:46:48,930 --> 00:46:50,230 como estes na tela. 25 00:46:50,230 --> 00:46:52,840 Mas mesmo se você nunca viu uma linguagem de programação antes, 26 00:46:52,840 --> 00:46:55,170 em apenas olhando para isso, todos seja enigmático, 27 00:46:55,170 --> 00:47:00,010 você provavelmente pode adivinhar que provavelmente imprime Olá Mundo. 28 00:47:00,010 --> 00:47:02,050 Mas há um monte de sobrecarga sintática lá. 29 00:47:02,050 --> 00:47:05,770 Não é o hash estranho símbolo ou de hash tag em cima. 30 00:47:05,770 --> 00:47:08,900 Há o ângulo entre parênteses, alguns parênteses, colchetes, semi-colon-- 31 00:47:08,900 --> 00:47:11,880 há tanta coisa visuais sintaxe que fica no caminho. 32 00:47:11,880 --> 00:47:13,940 Começamos o curso com Zero de modo a obter 33 00:47:13,940 --> 00:47:17,600 passado todos os intelectualmente distrações desinteressantes, 34 00:47:17,600 --> 00:47:20,290 e concentrar-se nas ideias. 35 00:47:20,290 --> 00:47:22,540 >> Na verdade, isso pode ser antes. 36 00:47:22,540 --> 00:47:24,830 Este, por isso, a semana será depois. 37 00:47:24,830 --> 00:47:26,760 Isto, neste gráfico Risco linguagem, 38 00:47:26,760 --> 00:47:29,870 é como você poderia implementar essa mesma program-- um programa que, quando executado, 39 00:47:29,870 --> 00:47:31,340 simplesmente diz Olá mundo. 40 00:47:31,340 --> 00:47:34,740 E o que é agradável sobre Scratch é que é esta programação gráfica 41 00:47:34,740 --> 00:47:38,780 ambiente que usa peças do puzzle ou blocos, que só em conjunto interbloquear 42 00:47:38,780 --> 00:47:40,440 se faz sentido lógico para fazê-lo. 43 00:47:40,440 --> 00:47:43,810 E com o Scratch você pode desenvolver animações e jogos interativos 44 00:47:43,810 --> 00:47:47,270 e arte, e qualquer número de coisas que que você pode imaginar em sua própria mente, 45 00:47:47,270 --> 00:47:51,200 e implementá-las simplesmente arrastando e soltando peças do puzzle. 46 00:47:51,200 --> 00:47:54,265 >> E, de fato, teremos a capacidade para expressar algumas das mesmas ideias 47 00:47:54,265 --> 00:47:56,890 que eu acabei de mencionar um momento atrás no contexto de Mike Smith 48 00:47:56,890 --> 00:48:00,670 e pesquisar as coisas um telefone book-- como funções, apenas a ações, 49 00:48:00,670 --> 00:48:03,070 coisas como loops que fazer coisas de novo e de novo, 50 00:48:03,070 --> 00:48:05,170 variáveis, que é algo que vamos apresentar, 51 00:48:05,170 --> 00:48:08,086 mas é familiarizado talvez a partir de algebra-- apenas algum tipo de espaço reservado 52 00:48:08,086 --> 00:48:10,840 para armazenar algum valor que você pode precisa expressões booleanas later--, 53 00:48:10,840 --> 00:48:13,720 onde aqueles sim não ou verdadeiro falsas questões de antes. 54 00:48:13,720 --> 00:48:17,117 As condições são aqueles garfos na road-- os ramos por assim dizer. 55 00:48:17,117 --> 00:48:19,700 E depois há alguns columbófilo características que veremos ainda hoje, 56 00:48:19,700 --> 00:48:22,850 chamados de matrizes e fios e eventos, que vamos, em seguida, voltar mais 57 00:48:22,850 --> 00:48:24,460 tempo em diferentes idiomas. 58 00:48:24,460 --> 00:48:26,790 Mas zero nos permite para explorar todos estes. 59 00:48:26,790 --> 00:48:30,779 Então, aqui em zero, este roxo bloco é o que uma função é tipicamente 60 00:48:30,779 --> 00:48:31,570 vai parecer. 61 00:48:31,570 --> 00:48:35,620 Esta peça de quebra-cabeça roxa que tem algum palavra como por exemplo, que é a ação, 62 00:48:35,620 --> 00:48:38,490 e em seguida, ele pode ter um argumento ou um parameter-- alguma forma 63 00:48:38,490 --> 00:48:41,140 do tipo de personalização o que o bloco faz 64 00:48:41,140 --> 00:48:45,182 de modo que não está pré-determinada pela MIT o que este bloco roxo diz. 65 00:48:45,182 --> 00:48:47,390 Na verdade, você verá em um momento que eu sou capaz de escrever 66 00:48:47,390 --> 00:48:49,931 as palavras como Olá mundo, ou Olá David, ou Olá Zamayla, 67 00:48:49,931 --> 00:48:53,750 ou o que eu quero, no argumento para esse enigma piece-- a caixa branca 68 00:48:53,750 --> 00:48:54,251 há. 69 00:48:54,251 --> 00:48:57,166 Enquanto isso, se eu quero um loop, vamos ver que não há peças do puzzle que 70 00:48:57,166 --> 00:48:58,640 olhar um pouco de laranja como este. 71 00:48:58,640 --> 00:49:01,690 E a sua forma de tipo que sugere algo acontece uma e outra vez 72 00:49:01,690 --> 00:49:02,680 em um ciclo. 73 00:49:02,680 --> 00:49:06,800 >> Então, se eu quebrar um bloco mundo dizer Olá com um bloco para sempre em risco, 74 00:49:06,800 --> 00:49:10,307 ele só vai continuar a dizer Olá mundo para sempre, literalmente. 75 00:49:10,307 --> 00:49:12,390 Enquanto isso, não há outra tipo de loop em risco 76 00:49:12,390 --> 00:49:14,348 que vamos see-- uma repetição block-- onde, se você 77 00:49:14,348 --> 00:49:17,940 saber com antecedência quantas vezes você quer que o loop para executar 78 00:49:17,940 --> 00:49:21,850 um número finito de vezes em fact-- você pode especificar que, digitando um número 79 00:49:21,850 --> 00:49:25,380 ou até mesmo ligar uma variável, como x ou y, como veremos. 80 00:49:25,380 --> 00:49:27,690 >> Na verdade, variáveis ​​como I neste caso, que 81 00:49:27,690 --> 00:49:30,109 é um nome comum para uma variável inteira que 82 00:49:30,109 --> 00:49:31,900 apenas armazena uma number-- um inteiro pode ser, 83 00:49:31,900 --> 00:49:35,470 usar este bloco de laranja aqui para definir uma variável como eu a zero. 84 00:49:35,470 --> 00:49:38,900 Aqui está um exemplo no verde de um expressão booleana em risco. 85 00:49:38,900 --> 00:49:43,700 Mesmo que esta parece ser uma matemática fórmula, as desigualdades de matemática como este 86 00:49:43,700 --> 00:49:45,320 realmente são expressões booleanas. 87 00:49:45,320 --> 00:49:46,570 Isto é verdadeiro ou falso. 88 00:49:46,570 --> 00:49:48,300 I é inferior a 50. 89 00:49:48,300 --> 00:49:51,815 É tanto uma resposta sim ou não ou resposta verdadeira ou falsa. 90 00:49:51,815 --> 00:49:53,940 E nós vamos geralmente chamamos essas expressões booleana. 91 00:49:53,940 --> 00:49:55,148 E não tem que ser 50. 92 00:49:55,148 --> 00:49:57,970 Pode ser x menos do que Y, maior do que Y, igual a y-- 93 00:49:57,970 --> 00:50:00,020 qualquer número de outras perguntas podem ser feitas. 94 00:50:00,020 --> 00:50:03,250 >> Agora, à primeira vista, isso pode parecer de repente bastante ousada aqui, e é. 95 00:50:03,250 --> 00:50:06,540 Mas o conceito sábio, é bastante familiar de antes. 96 00:50:06,540 --> 00:50:09,370 Se x é menor que y, do que dizer o mesmo. 97 00:50:09,370 --> 00:50:12,230 Senão, se x é maior de y, em seguida, dizer o mesmo. 98 00:50:12,230 --> 00:50:14,260 Outro dizer de x é igual a y. 99 00:50:14,260 --> 00:50:17,220 Portanto, temos um exemplo Há de uma terceira scenario-- 100 00:50:17,220 --> 00:50:20,600 a única terceira possibility-- x é ou maior do que, menos de, ou igual a. 101 00:50:20,600 --> 00:50:22,420 Portanto, temos um garfo de três vias na estrada. 102 00:50:22,420 --> 00:50:26,290 >> E perceber o que é legal zero aqui--, ao que parece, tem apenas um quebra-cabeça 103 00:50:26,290 --> 00:50:28,840 peça, neste caso, em se bloco else. 104 00:50:28,840 --> 00:50:32,090 E, no entanto, que parece implicar que você pode só tem um garfo de duas vias no caminho. 105 00:50:32,090 --> 00:50:34,631 Você pode ir para a esquerda ou para a direita, mas que sobre esse terceiro cenário? 106 00:50:34,631 --> 00:50:35,760 E se x é igual a y? 107 00:50:35,760 --> 00:50:36,500 Nada demais. 108 00:50:36,500 --> 00:50:39,640 Pegue uma peça de quebra-cabeça, colocou uma outra dentro dele 109 00:50:39,640 --> 00:50:45,759 para criar o equivalente semântico de if, else se, else-- e agora você 110 00:50:45,759 --> 00:50:47,300 tem o seu garfo de três vias na estrada. 111 00:50:47,300 --> 00:50:49,091 E, como veremos, o peças de quebra-cabeça do zero 112 00:50:49,091 --> 00:50:51,820 pode ser esticado e crescer, assim como empinar mais coisas neles. 113 00:50:51,820 --> 00:50:54,420 Você não tem que se encaixam tudo em seu tamanho padrão. 114 00:50:54,420 --> 00:50:56,690 >> Isso é algo que vai ver em breve é ​​chamada uma matriz. 115 00:50:56,690 --> 00:51:00,880 É como um lista-- alguma forma de armazenamento de múltiplas peças de informação 116 00:51:00,880 --> 00:51:02,886 em uma variável, não apenas um número. 117 00:51:02,886 --> 00:51:05,760 Estes vamos ver um representante da algo chamado multi-threading. 118 00:51:05,760 --> 00:51:08,280 Na verdade, todo o seu Macs e PCs estes dias 119 00:51:08,280 --> 00:51:10,810 suporte multi-threading, que significa que você pode literalmente 120 00:51:10,810 --> 00:51:12,390 fazer várias coisas ao mesmo tempo. 121 00:51:12,390 --> 00:51:15,390 Você pode ter o Microsoft Word para cima no primeiro plano, trabalhando em algum ensaio. 122 00:51:15,390 --> 00:51:17,160 Você pode ter um navegador na abertura de fundo 123 00:51:17,160 --> 00:51:18,720 G-mail ou Facebook ou similar. 124 00:51:18,720 --> 00:51:22,730 Seu computador pode fazer várias coisas hoje porque é multi-threaded, 125 00:51:22,730 --> 00:51:26,390 e os programas que estão em em particular também são multi-threaded. 126 00:51:26,390 --> 00:51:28,970 >> Há coisas chamadas eventos como bem no mundo do Scratch, 127 00:51:28,970 --> 00:51:32,640 e depois há uma maneira também, para fazer nossas próprias peças do puzzle costume se as coisas 128 00:51:32,640 --> 00:51:34,810 na verdade não existem com antecedência. 129 00:51:34,810 --> 00:51:38,260 Então, vamos motivar isso da seguinte forma. 130 00:51:38,260 --> 00:51:40,580 Alguns anos atrás, quando eu descoberto pela primeira vez Scratch 131 00:51:40,580 --> 00:51:43,530 quando eu era na verdade um estudante de graduação no MIT, nós 132 00:51:43,530 --> 00:51:45,640 nos foram incumbidos de fazer a lição de casa. 133 00:51:45,640 --> 00:51:47,614 E eu implemented-- que, em retrospecto, 134 00:51:47,614 --> 00:51:50,780 Foi uma decisão muito pobre porque é a música mais irritante do mundo 135 00:51:50,780 --> 00:51:53,321 para ouvir durante oito horas enquanto trabalhava em seu homework-- 136 00:51:53,321 --> 00:51:57,180 mas algo que eu tinha chamado Oscar Time, que é, talvez, uma canção familiar. 137 00:51:57,180 --> 00:51:59,820 >> CS50s possui Jordan Hayashi, um dos nossos funcionários mais seniores, 138 00:51:59,820 --> 00:52:03,920 elevou-o para 2015 e agora 2016, uma vez de volta ao dia, 139 00:52:03,920 --> 00:52:06,610 Eu tinha tudo indo só em lata de lixo do Oscar. 140 00:52:06,610 --> 00:52:09,320 Agora vamos apoiar a reciclagem e compostagem. 141 00:52:09,320 --> 00:52:12,050 >> Mas, para pintar o quadro do que podemos fazer aqui 142 00:52:12,050 --> 00:52:14,130 e motivar alguns dos os exemplos de nível mais baixo, 143 00:52:14,130 --> 00:52:16,400 poderíamos obter um outro voluntário para apenas vêm-se 144 00:52:16,400 --> 00:52:18,331 e jogar o meu primeiro lição de casa sempre? 145 00:52:18,331 --> 00:52:18,830 Vamos lá para cima. 146 00:52:18,830 --> 00:52:19,250 Qual o seu nome? 147 00:52:19,250 --> 00:52:20,030 >> HENRY: Henry. 148 00:52:20,030 --> 00:52:22,660 >> DAVID MALAN: Henry, vamos lá para cima. 149 00:52:22,660 --> 00:52:24,190 Vamos lá para cima. 150 00:52:24,190 --> 00:52:27,070 Cabeça de qualquer forma, e você verá em um momento, 151 00:52:27,070 --> 00:52:29,870 Eu estou indo para ir em frente e bateu no bandeira verde na mão superior direito 152 00:52:29,870 --> 00:52:31,100 canto, o que significa ir. 153 00:52:31,100 --> 00:52:33,320 O ícone de sinal pequena parada vai dizer stop, 154 00:52:33,320 --> 00:52:35,490 e isso é quando você começa e parar o programa. 155 00:52:35,490 --> 00:52:36,450 Prazer em conhecê-lo. 156 00:52:36,450 --> 00:52:36,950 Tudo certo. 157 00:52:36,950 --> 00:52:39,100 Então, nós estamos indo para ver as instruções na tela em apenas um momento. 158 00:52:39,100 --> 00:52:41,450 E apenas por jogar este jogo para alguns seconds-- confia em mim, 159 00:52:41,450 --> 00:52:43,670 nós não vamos querer jogar todo o caminho para o end-- você vai 160 00:52:43,670 --> 00:52:45,470 ter uma noção do que o programa faz. 161 00:52:45,470 --> 00:52:49,170 E mais do que apenas se concentrar em Henry sendo bom ou ruim nesse jogo, foco 162 00:52:49,170 --> 00:52:52,600 E como foi implementado por mim inicialmente e depois por Jordan. 163 00:52:52,600 --> 00:52:54,640 Em outras palavras, onde estão as variáveis? 164 00:52:54,640 --> 00:52:55,520 Onde estão os loops? 165 00:52:55,520 --> 00:52:56,520 Onde estão as funções? 166 00:52:56,520 --> 00:53:00,700 E vamos ver se nós não vemos aqueles debaixo do capô. 167 00:53:00,700 --> 00:53:03,660 >> Basta clicar e arrastar o lixo para a bandeja apropriada. 168 00:53:03,660 --> 00:54:02,100 >> [REPRODUÇÃO DE MÚSICA] 169 00:54:02,100 --> 00:54:02,600 Tudo certo. 170 00:54:02,600 --> 00:54:03,160 Isso é muito bom. 171 00:54:03,160 --> 00:54:04,286 Por que não podemos pará-lo lá. 172 00:54:04,286 --> 00:54:04,786 Obrigado. 173 00:54:04,786 --> 00:54:05,830 Parabéns a Henry. 174 00:54:05,830 --> 00:54:07,002 Obrigado. 175 00:54:07,002 --> 00:54:10,690 >> [Aplausos] 176 00:54:10,690 --> 00:54:12,450 >> Basta imaginar a depuração esse programa. 177 00:54:12,450 --> 00:54:15,880 Se há um problema de dois minutos de song-- mas tão 178 00:54:15,880 --> 00:54:17,430 o que está acontecendo aqui realmente? 179 00:54:17,430 --> 00:54:20,900 Tão complicado como pôde começam a parecer para chegar ao longo do tempo, 180 00:54:20,900 --> 00:54:22,910 na verdade, mais e mais coisas começaram a cair, 181 00:54:22,910 --> 00:54:25,370 o que é interessante sobre este tipo de example-- 182 00:54:25,370 --> 00:54:27,270 e vamos ver algumas outros- é ​​que se você 183 00:54:27,270 --> 00:54:30,416 olhar o passado a complexidade ou a sofisticação do jogo, 184 00:54:30,416 --> 00:54:33,040 há um edifício muito simples blocos que play-- todos os quais, 185 00:54:33,040 --> 00:54:35,840 se você destilar-los àqueles blocos de construção, são muito acessíveis 186 00:54:35,840 --> 00:54:37,401 e implementável para si mesmos. 187 00:54:37,401 --> 00:54:39,150 Por exemplo, é Já faz algum tempo, mas estou 188 00:54:39,150 --> 00:54:42,900 certeza que eu inicialmente fez quando tornando este jogo pela primeira vez 189 00:54:42,900 --> 00:54:44,787 eu estava completamente como procrastinado. 190 00:54:44,787 --> 00:54:47,120 Eu não focar em tudo na a lógica ou as peças do puzzle, 191 00:54:47,120 --> 00:54:50,810 Eu me concentrei nos gráficos e descoberta o poste de rua e a lata de lixo 192 00:54:50,810 --> 00:54:51,540 e tudo isso. 193 00:54:51,540 --> 00:54:53,456 Mas aqueles eram necessárias ingredientes em primeiro lugar. 194 00:54:53,456 --> 00:54:57,220 E uma vez que eu terminei de procrastinar e que define o quadro geral, 195 00:54:57,220 --> 00:55:00,337 Eu decidi, deixe-me fazer uma pedaço de queda lixo do céu. 196 00:55:00,337 --> 00:55:02,170 E vamos ver Raspadinha suporta coisas chamadas 197 00:55:02,170 --> 00:55:06,386 caracteres que podem sprites-- têm diferentes trajes em que eles 198 00:55:06,386 --> 00:55:07,010 parece diferente. 199 00:55:07,010 --> 00:55:09,660 >> E por isso eu coloquei uma lata de lixo traje em uma tal entidade gráfica. 200 00:55:09,660 --> 00:55:12,007 E eu só precisava a cair do céu. 201 00:55:12,007 --> 00:55:14,590 E assim ele sair, risco, como a maioria das linguagens de programação, 202 00:55:14,590 --> 00:55:18,099 suporta números aleatórios ou números aleatórios tecnicamente pseudocódigo, 203 00:55:18,099 --> 00:55:20,390 de modo que, arrastando e deixando cair algumas peças do puzzle, 204 00:55:20,390 --> 00:55:22,890 Eu era capaz de ter o lixo vêm da esquerda em primeiro lugar. 205 00:55:22,890 --> 00:55:25,580 E então a próxima vez que ele caiu, de a direita e, em seguida, a partir do meio. 206 00:55:25,580 --> 00:55:28,060 E todo o jogo que era apenas tem lixo que cai do céu. 207 00:55:28,060 --> 00:55:29,770 Você não pode apontar para ele ou clique sobre ele. 208 00:55:29,770 --> 00:55:31,103 Você não podia abrir a lata de lixo. 209 00:55:31,103 --> 00:55:32,160 Você não podia fazer nada. 210 00:55:32,160 --> 00:55:34,450 Mas foi um passo de bebê em direção a minha visão final. 211 00:55:34,450 --> 00:55:36,720 >> E depois disso, eu realmente implementado algum tipo 212 00:55:36,720 --> 00:55:41,230 de detecção de modo que se você clicou e arraste sobre o pedaço de lixo 213 00:55:41,230 --> 00:55:44,350 sobre a lata de lixo, Oscar de tampa iria abrir e fechar. 214 00:55:44,350 --> 00:55:47,650 Nada aconteceria para o lixo, mas pelo menos a tampa iria abrir e fechar. 215 00:55:47,650 --> 00:55:49,642 Então, em seguida, verificar, passo dois de dois. 216 00:55:49,642 --> 00:55:52,100 E é isso que vai ser chave em ambos conjunto de problemas de zero 217 00:55:52,100 --> 00:55:55,970 e na programação de um modo mais geral, é a tomar estes pequenos passos muito deliberados. 218 00:55:55,970 --> 00:55:59,390 Porque não só permitem que você sinto honestamente conseguido muito mais 219 00:55:59,390 --> 00:56:01,250 quickly-- é o pior coisa do mundo 220 00:56:01,250 --> 00:56:06,149 para tentar implementar todas Oscar Time, em seguida, horas depois bateu a bandeira verde, 221 00:56:06,149 --> 00:56:08,440 e nada funciona como esperado porque onde você mesmo 222 00:56:08,440 --> 00:56:11,150 começar a depuração ou para solucionar esse programa? 223 00:56:11,150 --> 00:56:12,470 É apenas esmagadora. 224 00:56:12,470 --> 00:56:16,792 >> E assim realmente abraçar essa idéia de dar passos de bebê steps-- novamente 225 00:56:16,792 --> 00:56:19,000 e novamente-- edificação algo que é, no final, 226 00:56:19,000 --> 00:56:23,672 realmente impressionante e complexo, mas em primeiro lugar, não é quase tão grande assim. 227 00:56:23,672 --> 00:56:24,630 Na verdade, vamos fazer isso. 228 00:56:24,630 --> 00:56:28,989 Deixe-me ir em frente e- Raspe si existe na web em Scratch.MIT.edu, 229 00:56:28,989 --> 00:56:30,780 e você vai ser dito como muito novo no problema 230 00:56:30,780 --> 00:56:34,200 definir zero, a especificação para que já está no site do CS50. 231 00:56:34,200 --> 00:56:35,725 >> Mas isso é o que Raspe em si é. 232 00:56:35,725 --> 00:56:38,210 E não há realmente apenas três áreas principais. 233 00:56:38,210 --> 00:56:40,980 No canto superior esquerdo existe é a fase de chamada. 234 00:56:40,980 --> 00:56:41,810 Este é zero. 235 00:56:41,810 --> 00:56:43,710 O traje padrão é um gato. 236 00:56:43,710 --> 00:56:46,950 E este é o mundo rectangular em que você pode move-- cima, para baixo, para a esquerda 237 00:56:46,950 --> 00:56:48,130 direito e algumas outras coisas. 238 00:56:48,130 --> 00:56:51,839 No meio aqui estão as nossas categorias ou os nossos paletes de peças do puzzle, 239 00:56:51,839 --> 00:56:53,630 e cores diferentes significar coisas diferentes. 240 00:56:53,630 --> 00:56:56,520 E se você picar ao redor, você verá coisas como loops e condições 241 00:56:56,520 --> 00:56:58,160 e variáveis ​​e outros ingredientes. 242 00:56:58,160 --> 00:57:00,060 >> E então aqui é a área de scripts. 243 00:57:00,060 --> 00:57:03,020 Este é o lugar onde eu possa arrastar e soltar essas peças do puzzle para fazer as coisas. 244 00:57:03,020 --> 00:57:04,690 Então vamos fazer uma coisa dessas. 245 00:57:04,690 --> 00:57:06,630 Deixe-me ir em frente e- e eu sei onde ele está. 246 00:57:06,630 --> 00:57:10,110 Então, eu vou imediatamente clique em onde eu sei que as coisas estão prontas para ser, 247 00:57:10,110 --> 00:57:13,140 mas apontando e clicando e bisbilhotando são inevitáveis. 248 00:57:13,140 --> 00:57:15,320 Então, quando a bandeira verde clicado, o que eu quero fazer? 249 00:57:15,320 --> 00:57:17,100 Eu vou fazer isso. 250 00:57:17,100 --> 00:57:20,699 Eu estou indo para arrastar esse quebra-cabeça roxo peça, dizer Olá por dois segundos, 251 00:57:20,699 --> 00:57:21,490 e deixe-me fazer zoom. 252 00:57:21,490 --> 00:57:23,865 >> E eu vou mudar isso para ser o que eu quero que ele ser-- 253 00:57:23,865 --> 00:57:26,471 Olá mundo por dois segundos é bom. 254 00:57:26,471 --> 00:57:28,970 Agora, eu vou clique no bandeira verde, ou se eu realmente quero, 255 00:57:28,970 --> 00:57:31,820 Posso tela cheia lo e depois voltar. 256 00:57:31,820 --> 00:57:34,060 Ele só vai manter tudo em uma janela. 257 00:57:34,060 --> 00:57:36,141 Verde Olá mundo flag--. 258 00:57:36,141 --> 00:57:36,640 Tudo certo. 259 00:57:36,640 --> 00:57:38,789 Nem tudo o que interessante. 260 00:57:38,789 --> 00:57:40,080 Então deixe-me ir em frente e fazer isso. 261 00:57:40,080 --> 00:57:41,038 Deixe-me tentar outro. 262 00:57:41,038 --> 00:57:44,740 Quando a bandeira verde clicked-- vamos fazer algo parecido com um som. 263 00:57:44,740 --> 00:57:46,880 E note que, de a caixa de graça que você começa 264 00:57:46,880 --> 00:57:49,910 um som de gato, como é o sprite padrão. 265 00:57:49,910 --> 00:57:52,380 Então, agora deixe-me ir em frente e bateu a bandeira verde agora. 266 00:57:52,380 --> 00:57:53,224 >> [Miando] 267 00:57:53,224 --> 00:57:54,490 >> Aw. 268 00:57:54,490 --> 00:57:55,370 Isso é adorável. 269 00:57:55,370 --> 00:57:57,040 Eu estou programando. 270 00:57:57,040 --> 00:57:58,550 Então o que foi que eu fiz? 271 00:57:58,550 --> 00:58:00,430 Isto é o equivalente de um programa. 272 00:58:00,430 --> 00:58:01,600 É óbvio que é super simples. 273 00:58:01,600 --> 00:58:05,300 Realmente não tomar tanto assim esforço e MIT fez a maior parte do trabalho, 274 00:58:05,300 --> 00:58:07,890 mas eu tenho chamado de função. 275 00:58:07,890 --> 00:58:08,940 Eu tenho usado uma função. 276 00:58:08,940 --> 00:58:12,480 Eu fiz um pouco de ação, usando apenas que uma parte do enigma roxo. 277 00:58:12,480 --> 00:58:15,960 >> Bem, se eu quero fazer três miados em uma fileira? 278 00:58:15,960 --> 00:58:18,570 Deixe-me ir em frente e fazer dois e três. 279 00:58:18,570 --> 00:58:20,910 E observe que quando você pairar nas proximidades de uma parte do enigma, 280 00:58:20,910 --> 00:58:22,970 um pouco de linha branca aparece tipo de magneticamente, 281 00:58:22,970 --> 00:58:25,190 e ela se encaixará juntos quando você deixar ir. 282 00:58:25,190 --> 00:58:26,600 Vamos ver o que acontece aqui. 283 00:58:26,600 --> 00:58:27,920 >> [Miando] 284 00:58:27,920 --> 00:58:32,390 285 00:58:32,390 --> 00:58:34,510 >> Há um bug. 286 00:58:34,510 --> 00:58:35,650 Eu só ouvir um miado. 287 00:58:35,650 --> 00:58:37,440 Por que poderia ser? 288 00:58:37,440 --> 00:58:39,001 Sim? 289 00:58:39,001 --> 00:58:39,500 Sim. 290 00:58:39,500 --> 00:58:41,650 Nós realmente não ouvi-lo, mas isso é boa intuição. 291 00:58:41,650 --> 00:58:43,400 Eles estão todos tocando ao mesmo tempo. 292 00:58:43,400 --> 00:58:44,000 Por quê? 293 00:58:44,000 --> 00:58:46,587 Bem, o computador é só ir para fazer o que você diga a ele para fazer. 294 00:58:46,587 --> 00:58:48,670 Então, se você diz, som jogo, reproduzir o som, reproduzir o som, 295 00:58:48,670 --> 00:58:52,887 mas você não diga a ele para jogar até estiver pronto, jogar até que você está feito, 296 00:58:52,887 --> 00:58:54,970 ele vai soprar através o programa muito rápido 297 00:58:54,970 --> 00:58:56,830 e não apenas o que você diga a ele para fazer. 298 00:58:56,830 --> 00:58:59,040 >> Então, eu realmente precisa corrigir isso em um par de formas. 299 00:58:59,040 --> 00:59:00,623 Eu poderia apenas fazer isso, se livrar dessa. 300 00:59:00,623 --> 00:59:04,180 Deixe-me tentar este outro quebra-cabeça piece-- jogar miado de som até feito, 301 00:59:04,180 --> 00:59:07,072 em seguida, arraste três estes e clique em Reproduzir. 302 00:59:07,072 --> 00:59:09,430 >> [Miando] 303 00:59:09,430 --> 00:59:13,350 >> Não é realmente very-- obrigado você-- muito natural. 304 00:59:13,350 --> 00:59:16,590 Então por que não deixá-eu- me ir para controlar aqui. 305 00:59:16,590 --> 00:59:17,090 Agradável. 306 00:59:17,090 --> 00:59:22,230 Espere um segundo, e agora deixe-me voltar a sons e som jogo até feito, 307 00:59:22,230 --> 00:59:24,620 e, em seguida, deixe-me esperar um segundo. 308 00:59:24,620 --> 00:59:28,692 E, em seguida, deixe-me ir e obter um mais de som, e aqui vamos nós. 309 00:59:28,692 --> 00:59:31,350 >> [Miando] 310 00:59:31,350 --> 00:59:35,930 >> Um pouco mais natural, mas Isto não é muito eficiente. 311 00:59:35,930 --> 00:59:39,830 Como eu estava ficando entediado, ser todos -lo brevemente, clicando frente e para trás 312 00:59:39,830 --> 00:59:42,724 e realmente duplicar o meu trabalho-- praticamente copiar e colar. 313 00:59:42,724 --> 00:59:44,640 Na verdade, se eu controlo clicado ou direito clicado, 314 00:59:44,640 --> 00:59:46,500 Eu poderia ter apenas copiado e colado. 315 00:59:46,500 --> 00:59:49,870 O que seria uma melhor construção de usar? 316 00:59:49,870 --> 00:59:51,090 Que ideia de antes? 317 00:59:51,090 --> 00:59:51,990 >> É, portanto, um loop. 318 00:59:51,990 --> 00:59:54,580 E, de fato, se remexia, podemos encontrar exatamente isso. 319 00:59:54,580 --> 00:59:57,730 Deixe-me ir a eventos ou melhor controle. 320 00:59:57,730 --> 00:59:59,650 Então repeat-- eu não quer que seja 10 vezes. 321 00:59:59,650 --> 01:00:01,370 Isso vai ficar chato rapidamente. 322 01:00:01,370 --> 01:00:03,380 Mas vou repetir três vezes. 323 01:00:03,380 --> 01:00:06,355 Deixe-me voltar ao som e reproduzir o som até que seja feito. 324 01:00:06,355 --> 01:00:08,480 Deixe-me voltar para Controle e apenas esperar um segundo. 325 01:00:08,480 --> 01:00:10,271 E observem, você pode acho que não se encaixa, 326 01:00:10,271 --> 01:00:13,520 mas novamente se magneticamente você deixá-lo encaixe no lugar, ela vai crescer para preencher. 327 01:00:13,520 --> 01:00:14,971 O que é que jogar agora? 328 01:00:14,971 --> 01:00:18,500 >> [Miando] 329 01:00:18,500 --> 01:00:19,000 ESTÁ BEM. 330 01:00:19,000 --> 01:00:19,660 Agradável. 331 01:00:19,660 --> 01:00:22,540 E isso é o que seria chamado um programa que também é correto. 332 01:00:22,540 --> 01:00:27,590 Ele miou três vezes bastante naturalmente, mas é melhor concebido. 333 01:00:27,590 --> 01:00:29,580 Estou usando menos redundância. 334 01:00:29,580 --> 01:00:30,970 Eu não copiar e colar qualquer coisa. 335 01:00:30,970 --> 01:00:32,470 Eu apenas usei uma idéia melhor. 336 01:00:32,470 --> 01:00:35,340 >> Agora, isso ainda não é tudo o que interessante com o Scratch não fazer 337 01:00:35,340 --> 01:00:35,930 qualquer coisa. 338 01:00:35,930 --> 01:00:37,388 Então, vamos fazer outra coisa em seu lugar. 339 01:00:37,388 --> 01:00:38,670 Vamos fazer algo para sempre. 340 01:00:38,670 --> 01:00:39,420 E sabe de uma coisa? 341 01:00:39,420 --> 01:00:40,470 Movimento parece interessante. 342 01:00:40,470 --> 01:00:45,760 Vamos tê-lo mover-se 10 passos e bateu jogar agora. 343 01:00:45,760 --> 01:00:46,570 >> ESTÁ BEM. 344 01:00:46,570 --> 01:00:49,300 Bem podemos tipo de arrasto -lo de volta, e ele ainda está 345 01:00:49,300 --> 01:00:51,250 correr, porque ele está fazendo isso para sempre. 346 01:00:51,250 --> 01:00:53,150 Assim, o circuito está fazendo o que está dizendo para fazer, 347 01:00:53,150 --> 01:00:54,650 mas isso não é tudo o que interessante. 348 01:00:54,650 --> 01:00:55,310 Vamos fazer isso. 349 01:00:55,310 --> 01:00:59,870 Deixe-me acrescentar um bloco de controle, e utilizar uma destas condições para a primeira vez. 350 01:00:59,870 --> 01:01:03,119 >> Por isso, vai para mover 10 steps-- 10 pontos, 10 pixels na screen-- 351 01:01:03,119 --> 01:01:04,660 em seguida, ele vai fazer esta pergunta. 352 01:01:04,660 --> 01:01:09,340 Se algo é verdadeiro, em seguida, fazer algo dentro deste bloco. 353 01:01:09,340 --> 01:01:13,060 Então não é que a detecção tem um todo bando de expressions-- booleana 354 01:01:13,060 --> 01:01:16,580 questões do sim não ou verdadeiro false form-- deixe-me fazer isso. 355 01:01:16,580 --> 01:01:19,260 >> Se touching-- e então há este pequeno menu suspenso. 356 01:01:19,260 --> 01:01:20,410 I pode parametrizar isso. 357 01:01:20,410 --> 01:01:23,010 Se tocar na edge-- vamos fazer algo assim. 358 01:01:23,010 --> 01:01:27,310 Então, se tocar edge-- deixe-me voltar ao movimento. 359 01:01:27,310 --> 01:01:32,281 E por que nós não apenas virar 180 graus? 360 01:01:32,281 --> 01:01:32,780 Tudo certo. 361 01:01:32,780 --> 01:01:35,070 Então, para sempre, mover 10 passos. 362 01:01:35,070 --> 01:01:37,670 Se você está tocando o borda, girar 180 graus. 363 01:01:37,670 --> 01:01:39,720 E isso não é o fim do programa porque você está em um bloco para sempre, 364 01:01:39,720 --> 01:01:42,053 por isso vai para ir novamente e de novo e de novo e de novo. 365 01:01:42,053 --> 01:01:43,980 Então, vamos ver o que acontece. 366 01:01:43,980 --> 01:01:44,785 ESTÁ BEM. 367 01:01:44,785 --> 01:01:48,270 Um pouco de buggy, mas legal. 368 01:01:48,270 --> 01:01:51,710 >> E podemos acrescentar a isto algumas coisas tolas que não são todos que intelectualmente 369 01:01:51,710 --> 01:01:52,270 interessante. 370 01:01:52,270 --> 01:01:57,210 Mas se nós batemos este pequeno microfone button-- ouch. 371 01:01:57,210 --> 01:01:58,480 Deixe-me limpar isso. 372 01:01:58,480 --> 01:02:01,540 Deixe-me melhorar isso como eles diriam na TV. 373 01:02:01,540 --> 01:02:05,400 Limpar isso, Salvar e agora vá até scripts. 374 01:02:05,400 --> 01:02:07,500 >> E agora, deixe-me ir ao som. 375 01:02:07,500 --> 01:02:09,002 Deixe-me dar-lhe um nome. 376 01:02:09,002 --> 01:02:12,440 Vou chamar este ouch. 377 01:02:12,440 --> 01:02:13,840 E agora jogar ouch som. 378 01:02:13,840 --> 01:02:16,520 Repare que aparece no pouco menu suspenso. 379 01:02:16,520 --> 01:02:17,612 Vamos ver. 380 01:02:17,612 --> 01:02:20,444 >> [AI] 381 01:02:20,444 --> 01:02:24,377 >> [RINDO] 382 01:02:24,377 --> 01:02:25,835 Mas podemos mudar t seu na mosca. 383 01:02:25,835 --> 01:02:28,106 Podemos ser duas vezes mais irritante. 384 01:02:28,106 --> 01:02:31,760 >> [AI] 385 01:02:31,760 --> 01:02:35,332 >> Ou se nós torná-lo como 1.000 degraus de cada vez-- 386 01:02:35,332 --> 01:02:39,900 387 01:02:39,900 --> 01:02:40,670 >> ESTÁ BEM. 388 01:02:40,670 --> 01:02:42,295 Então, nós estamos indo para deixar que um só. 389 01:02:42,295 --> 01:02:45,290 Então, novamente, a construção de blocks-- I começou com algo super simples, 390 01:02:45,290 --> 01:02:47,930 e então eu adicionei um recurso, adicionou um recurso, adicionou um recurso. 391 01:02:47,930 --> 01:02:50,721 E eu já não precisa se preocupar com como a primeira dessas características 392 01:02:50,721 --> 01:02:53,690 foi implementado como eu continuar a camada coisas em cima. 393 01:02:53,690 --> 01:02:55,430 Então, na verdade, deixe-me fazer um outro aqui. 394 01:02:55,430 --> 01:03:00,580 Deixe-me ir em frente e abrir um arquivo que Eu trouxe de antecedência, chamado Sheep. 395 01:03:00,580 --> 01:03:03,970 >> Então, ele tem um pouco diferente personagem que se parece com isso. 396 01:03:03,970 --> 01:03:07,370 E deixe-me ver se eu não puder fazer algo usando um contador 397 01:03:07,370 --> 01:03:09,310 neste case-- uma variável chamada. 398 01:03:09,310 --> 01:03:15,540 Eu estou indo para ir em frente e sob Events-- deixe-me ver uma bandeira verde clicado. 399 01:03:15,540 --> 01:03:19,030 Então deixe-me ir para dados, que eu sei de brincar um pouco antes, 400 01:03:19,030 --> 01:03:20,214 é onde as variáveis ​​são. 401 01:03:20,214 --> 01:03:21,880 E eu estou indo para ir em frente e arrastar esta. 402 01:03:21,880 --> 01:03:25,144 >> Assim, uma variável chamada contador, e Eu estou indo para inicializar a zero. 403 01:03:25,144 --> 01:03:27,560 Posso chamá-lo anything-- x ou y ou z-- mas na programação, 404 01:03:27,560 --> 01:03:30,410 chamando algo em um semanticamente forma útil, como contador, 405 01:03:30,410 --> 01:03:34,540 que descreve o que é, é um muito mais fácil de ler o seu código mais tarde. 406 01:03:34,540 --> 01:03:37,460 Deixe-me ir em frente e obter uma bloquear sempre aqui. 407 01:03:37,460 --> 01:03:41,289 E deixe-me ir para a aparência página e fazer um bloco Say. 408 01:03:41,289 --> 01:03:44,330 Mas o que é legal sobre variáveis ​​é I Não é necessário apenas digitar algo 409 01:03:44,330 --> 01:03:47,850 como Olá mundo, que nós já feito, eu posso em vez de ir para Data 410 01:03:47,850 --> 01:03:50,690 e arraste minha variável, e mesmo embora a forma não bastante 411 01:03:50,690 --> 01:03:53,000 olha como ele deve se encaixar, ela vai crescer para preencher. 412 01:03:53,000 --> 01:03:58,396 E eu vou apenas dizer que o contador para um spoiler-- second-- ele vai contar. 413 01:03:58,396 --> 01:04:00,380 Vamos dizer que por um segundo. 414 01:04:00,380 --> 01:04:02,840 Então eu estou indo para ir e tê-lo esperar por um segundo, 415 01:04:02,840 --> 01:04:04,650 por isso não conta muito rápido. 416 01:04:04,650 --> 01:04:08,430 E, em seguida, por último, contra alterar por um-- em outras palavras, 417 01:04:08,430 --> 01:04:13,520 incrementar o contador por um valor adicional e fazer isso para sempre. 418 01:04:13,520 --> 01:04:16,129 >> Assim, as ovelhas também, como um programador, conta de 0. 419 01:04:16,129 --> 01:04:20,350 420 01:04:20,350 --> 01:04:23,740 E se esperarmos o tempo suficiente, ele vai fazer isso para sempre. 421 01:04:23,740 --> 01:04:27,740 Mas isso não é exatamente verdade, porque de fato, como vamos descobrir em uma semana, 422 01:04:27,740 --> 01:04:31,871 inteiros e computadores de modo mais geral, tecnicamente têm apenas uma finite-- bem, 423 01:04:31,871 --> 01:04:33,829 em vez computadores, quando eles representam números inteiros, 424 01:04:33,829 --> 01:04:35,670 só tem um número finito de bits. 425 01:04:35,670 --> 01:04:37,860 Essas lâmpadas lá só pode contar tão alto 426 01:04:37,860 --> 01:04:39,239 antes que você está fora de lâmpadas. 427 01:04:39,239 --> 01:04:41,590 E também um computador, só tem tanta memória, 428 01:04:41,590 --> 01:04:44,640 só tem tantas transistores, por isso só pode contar tão alto. 429 01:04:44,640 --> 01:04:47,409 >> Assim, verifica-se que as ovelhas, Eu penso, pode contar até 2 bilhões 430 01:04:47,409 --> 01:04:48,409 ou algo muito grande. 431 01:04:48,409 --> 01:04:50,325 Então, nós não vamos esperar para que isso aconteça. 432 01:04:50,325 --> 01:04:54,850 Mas, eventualmente, algum bug vai acontecer que pode ter um mundo muito real 433 01:04:54,850 --> 01:04:55,970 ramificações. 434 01:04:55,970 --> 01:04:58,861 Mas, além das ovelhas, que apenas introduz uma variável. 435 01:04:58,861 --> 01:05:01,110 Vamos em frente e abrir algo que eu fiz com antecedência 436 01:05:01,110 --> 01:05:07,430 aqui chamado Pet o Cat-- Acariciar o gato aqui. 437 01:05:07,430 --> 01:05:10,420 E observar aqui é pouco blocos, mas quando a bandeira verde 438 01:05:10,420 --> 01:05:12,474 clicado, sempre fazendo o seguinte. 439 01:05:12,474 --> 01:05:15,265 Se você está tocando o mouse pointer-- de modo que o cursor no ecrã, 440 01:05:15,265 --> 01:05:18,529 o miado de som jogo arrow-- e depois esperar dois segundos. 441 01:05:18,529 --> 01:05:19,570 E apenas fazer isso para sempre. 442 01:05:19,570 --> 01:05:22,619 Basta esperar constantemente para ver se o pointer-- 443 01:05:22,619 --> 01:05:24,710 se o gato está tocando o ponteiro. 444 01:05:24,710 --> 01:05:26,060 >> Então eu bati jogo. 445 01:05:26,060 --> 01:05:26,920 Não está acontecendo nada. 446 01:05:26,920 --> 01:05:28,980 Mas como eu mover o cursor sobre o gato, 447 01:05:28,980 --> 01:05:31,960 >> [Miando] 448 01:05:31,960 --> 01:05:34,750 >> E se eu afastá-lo, não acariciando mais o gato. 449 01:05:34,750 --> 01:05:38,090 Então, alguma lógica condicional aninhada dentro de um loop. 450 01:05:38,090 --> 01:05:43,070 Como sobre este exemplo, deliberadamente chamado Não pet o gato? 451 01:05:43,070 --> 01:05:45,253 O que é que isto vai fazer? 452 01:05:45,253 --> 01:05:47,880 >> [Miando] 453 01:05:47,880 --> 01:05:50,215 >> Por que você não deve brincar com o gato? 454 01:05:50,215 --> 01:05:59,440 >> [Miando] 455 01:05:59,440 --> 01:06:00,699 >> ESTÁ BEM. 456 01:06:00,699 --> 01:06:03,880 Portanto, este é um exemplo de um caso mais. 457 01:06:03,880 --> 01:06:06,482 É um ponto de decisão e porque ele está sentado no circuito, 458 01:06:06,482 --> 01:06:07,690 ambos estão sendo verificados. 459 01:06:07,690 --> 01:06:08,280 Isso é verdade? 460 01:06:08,280 --> 01:06:08,760 Isso é verdade? 461 01:06:08,760 --> 01:06:09,250 Isso é verdade? 462 01:06:09,250 --> 01:06:09,791 Isso é verdade? 463 01:06:09,791 --> 01:06:11,880 E, eventualmente, um de aqueles vai aplicar 464 01:06:11,880 --> 01:06:16,480 e assim pode ouvir o miado ou o rugido do leão, nesse caso. 465 01:06:16,480 --> 01:06:21,400 >> Bem, vamos fazer um pouco mais extravagante que eu feitas com antecedência demasiado-- threads. 466 01:06:21,400 --> 01:06:25,210 Assim, um fio é apenas um coisa que um computador pode fazer. 467 01:06:25,210 --> 01:06:29,349 Assim, um programa multi-threaded é um programa que pode fazer várias coisas ao mesmo tempo. 468 01:06:29,349 --> 01:06:31,140 E todos esses exemplos até agora têm tido 469 01:06:31,140 --> 01:06:35,980 apenas um script, então a speak-- um programa como este aqui em cima. 470 01:06:35,980 --> 01:06:38,810 Mas observe este programa tem dois sprites, dois caracteres. 471 01:06:38,810 --> 01:06:40,020 Um deles é um pássaro. 472 01:06:40,020 --> 01:06:40,870 Um deles é um gato. 473 01:06:40,870 --> 01:06:45,080 >> E note quando eu clicar sobre estes para baixo esquerda, cada um deles tem seus próprios scripts 474 01:06:45,080 --> 01:06:47,120 ou programas associados a eles. 475 01:06:47,120 --> 01:06:49,420 E ambos os programas, aviso prévio, início 476 01:06:49,420 --> 01:06:52,600 com clicked-- bandeira quando verde vamos olhar para a cat-- 477 01:06:52,600 --> 01:06:54,030 quando a bandeira verde clicado. 478 01:06:54,030 --> 01:06:58,220 E assim, na verdade, quando eu bati o jogo agora, duas coisas vão acontecer ao mesmo tempo. 479 01:06:58,220 --> 01:07:01,750 O gato eo pássaro são ambos vai operar simultaneamente 480 01:07:01,750 --> 01:07:03,815 para criar esse efeito. 481 01:07:03,815 --> 01:07:05,440 E você pode imaginar o que está acontecendo. 482 01:07:05,440 --> 01:07:08,340 Há um loop e o pássaro e que o gato está em um loop. 483 01:07:08,340 --> 01:07:11,270 O pássaro é apenas saltando como Eu era antes quando eu disse ouch. 484 01:07:11,270 --> 01:07:13,040 Mas o gato tem claramente uma vantagem. 485 01:07:13,040 --> 01:07:16,040 Há um outro bloco de detecção que aponta o gato deliberadamente 486 01:07:16,040 --> 01:07:19,836 ao pássaro, neste caso aqui. 487 01:07:19,836 --> 01:07:22,960 Assim, poderíamos provocar uma separação, olhando através desses blocos, o que está acontecendo. 488 01:07:22,960 --> 01:07:25,460 Mas o ingrediente chave aqui é um deles. 489 01:07:25,460 --> 01:07:28,520 A ave, de modo que este jogo não é completamente boring-- ou este animation-- 490 01:07:28,520 --> 01:07:30,060 começa numa direcção aleatória. 491 01:07:30,060 --> 01:07:32,890 E o computador é escolher um número entre 90 e 180 492 01:07:32,890 --> 01:07:36,110 essencialmente, de modo que é um pouco animação diferente de cada vez. 493 01:07:36,110 --> 01:07:39,480 >> E, em seguida, observar aqui, se o gato está tocando o pássaro, em seguida, 494 01:07:39,480 --> 01:07:42,030 jogar o leão quatro sound-- o rugido. 495 01:07:42,030 --> 01:07:46,330 Mas, enquanto isso na ave de paleta, temos isso. 496 01:07:46,330 --> 01:07:49,229 Para sempre, se não tocar o gato, apenas manter em movimento três etapas. 497 01:07:49,229 --> 01:07:50,770 E então aqui está outra peça do puzzle. 498 01:07:50,770 --> 01:07:52,030 Se você é na borda, saltar. 499 01:07:52,030 --> 01:07:54,840 Então, o pássaro é apenas uma espécie de cuidando de seu próprio negócio, 500 01:07:54,840 --> 01:07:57,330 apenas voando ao redor e saltando, e é realmente 501 01:07:57,330 --> 01:08:01,780 o gato que tinha a lógica condicional para determinar se ele tinha pego o pássaro. 502 01:08:01,780 --> 01:08:02,280 Tudo certo. 503 01:08:02,280 --> 01:08:08,800 Então vamos fazer um outro aqui, esta sendo chamado Hi Hi Hi. 504 01:08:08,800 --> 01:08:15,100 E este aqui só faz isso em um loop para sempre. 505 01:08:15,100 --> 01:08:18,925 Mas notice-- como é que vamos parar este programa muito chato? 506 01:08:18,925 --> 01:08:21,600 507 01:08:21,600 --> 01:08:22,640 Bata a barra de espaço. 508 01:08:22,640 --> 01:08:27,990 Porque se eu fizer isso, o program-- mão esquerda 509 01:08:27,990 --> 01:08:31,550 notar que é constantemente listening-- é o pressione a tecla espaço. 510 01:08:31,550 --> 01:08:34,090 Se a barra de espaço pressionada, e se assim for, o que ele faz? 511 01:08:34,090 --> 01:08:35,980 Ele faz uma técnica muito comum. 512 01:08:35,980 --> 01:08:38,590 Ele define uma variável igual a algum valor. 513 01:08:38,590 --> 01:08:39,741 Mas ele alterna esse valor. 514 01:08:39,741 --> 01:08:41,490 [? Assim aparência?] com base no I shape-- 515 01:08:41,490 --> 01:08:43,160 tem uma variável que eu escreveu previamente chamado 516 01:08:43,160 --> 01:08:44,770 Silenciado, que apenas diz sim ou não. 517 01:08:44,770 --> 01:08:45,880 É o som mudo ou não? 518 01:08:45,880 --> 01:08:46,990 Verdadeiro ou falso? 519 01:08:46,990 --> 01:08:51,580 E notem, eu estou dizendo isto-- se silenciado é zero, então mudar para um, 520 01:08:51,580 --> 01:08:53,840 else definir mudo-a para zero. 521 01:08:53,840 --> 01:08:55,540 Então, basta virar o valor de zero a um. 522 01:08:55,540 --> 01:08:58,320 Eu poderia ter done-- alterá-lo de dois para três e 3-2 523 01:08:58,320 --> 01:09:00,162 ou 4:56 ou 5:56. 524 01:09:00,162 --> 01:09:01,870 Mas isso não importa o que os números que eu uso, 525 01:09:01,870 --> 01:09:04,090 enquanto eu continuo mudando-se o oposto. 526 01:09:04,090 --> 01:09:07,290 >> E o mais qualquer programador seria apenas escolher zero e um-- falso e verdadeiro, 527 01:09:07,290 --> 01:09:09,510 off e on-- para representar este. 528 01:09:09,510 --> 01:09:10,930 E isso ainda está em execução. 529 01:09:10,930 --> 01:09:12,190 Se eu acertar a barra de espaço novamente 530 01:09:12,190 --> 01:09:13,590 >> [SEAL sons] 531 01:09:13,590 --> 01:09:15,440 >> O programa ainda está em execução. 532 01:09:15,440 --> 01:09:18,400 Porque não há esse outro script que diz que, para sempre fazer o seguinte. 533 01:09:18,400 --> 01:09:21,390 534 01:09:21,390 --> 01:09:24,770 Se a variável silenciado é igual zero-- por isso, se você não está silenciado 535 01:09:24,770 --> 01:09:29,609 é o logic-- se é falsa ou não, em seguida, reproduzir o som, 536 01:09:29,609 --> 01:09:30,650 porque você não está silenciado. 537 01:09:30,650 --> 01:09:33,358 Você deve reproduzir o som e, em seguida, acho oi oi oi por dois segundos 538 01:09:33,358 --> 01:09:35,790 e depois esperar, e fazê-lo de novo e de novo e de novo. 539 01:09:35,790 --> 01:09:40,760 >> E assim, desta forma temos um caminho para pessoas a-- para programas para interagir. 540 01:09:40,760 --> 01:09:43,120 E eles não tem que ser como datada como os outros. 541 01:09:43,120 --> 01:09:46,280 Na verdade, cutucando circundar-- sem trocadilho intended-- 542 01:09:46,280 --> 01:09:49,250 alguém passou uma enorme quantidade de tempo na internet execução 543 01:09:49,250 --> 01:09:51,580 PokemonGo em risco. 544 01:09:51,580 --> 01:09:55,440 Ele ainda geolocates-lo em Cambridge ou Allston aqui. 545 01:09:55,440 --> 01:10:03,120 Então, se você quer ver também o que as pessoas pode fazer é isto-- menu muito extravagante. 546 01:10:03,120 --> 01:10:04,780 Clique aqui. 547 01:10:04,780 --> 01:10:07,430 >> Esse sou eu com as minhas chaves de seta agora. 548 01:10:07,430 --> 01:10:09,446 Eu estou indo para ir depois disso. 549 01:10:09,446 --> 01:10:09,946 Clique. 550 01:10:09,946 --> 01:10:12,949 551 01:10:12,949 --> 01:10:14,240 E agora você clique no Pokéball. 552 01:10:14,240 --> 01:10:17,130 553 01:10:17,130 --> 01:10:20,260 Quer dizer, eu acho que você é suposto clique no Pokéball. 554 01:10:20,260 --> 01:10:20,760 Tudo certo. 555 01:10:20,760 --> 01:10:22,680 Então eu fiz isso. 556 01:10:22,680 --> 01:10:23,950 Eu posso passar por cima aqui. 557 01:10:23,950 --> 01:10:27,790 E essa pessoa implementado um pouco mais Pokeballs mais aqui-- três pokeballs. 558 01:10:27,790 --> 01:10:29,950 >> Vamos postar um link para esta on-line para que você possa jogar. 559 01:10:29,950 --> 01:10:32,364 Mas aviso há apenas alguns blocos de construção básicos. 560 01:10:32,364 --> 01:10:33,780 Ela se parece muito mais sofisticado, e é. 561 01:10:33,780 --> 01:10:35,905 Isto é impressionante e mais do que seria normalmente 562 01:10:35,905 --> 01:10:37,740 esperar, certamente para conjunto de problemas zero. 563 01:10:37,740 --> 01:10:40,809 Eu não tenho nenhuma idéia de quanto tempo essa pessoa passou online. 564 01:10:40,809 --> 01:10:41,850 Mas é tudo apenas um loop. 565 01:10:41,850 --> 01:10:43,180 Há um jogo de som. 566 01:10:43,180 --> 01:10:44,850 Há algum tipo de circuito ouvir para se estou 567 01:10:44,850 --> 01:10:47,558 bater a seta para cima ou para baixo a flecha ou à esquerda e à direita, 568 01:10:47,558 --> 01:10:49,834 e, em seguida, se assim for, ele está se movendo -lhe algum número de pixels. 569 01:10:49,834 --> 01:10:51,750 E então se eu clicar em outro sprite, há 570 01:10:51,750 --> 01:10:53,390 algum tipo de condição if lá. 571 01:10:53,390 --> 01:10:54,806 Sim, isso está ficando muito intensa. 572 01:10:54,806 --> 01:10:56,100 Nós vamos parar. 573 01:10:56,100 --> 01:10:57,750 É todos os blocos básicos de construção. 574 01:10:57,750 --> 01:11:01,530 Não há outros outros ingredientes do que os que já olhou para já. 575 01:11:01,530 --> 01:11:04,670 >> No entanto, aqui, deixe-me fazer um conjunto final de exemplos 576 01:11:04,670 --> 01:11:06,960 que pinta um quadro muito do que você pode fazer aqui. 577 01:11:06,960 --> 01:11:10,481 Aqui está um programa muito simples que só faz isto-- tosse, tosse, tosse. 578 01:11:10,481 --> 01:11:12,480 E com base apenas no que nós olhamos até agora, 579 01:11:12,480 --> 01:11:14,570 onde está o óbvio oportunidade de melhoria. 580 01:11:14,570 --> 01:11:15,570 Este programa está correto. 581 01:11:15,570 --> 01:11:17,980 Ele tosse por três vezes, que é o que eu pretendia. 582 01:11:17,980 --> 01:11:19,650 Mas está mal implementado. 583 01:11:19,650 --> 01:11:20,600 É mal projetado. 584 01:11:20,600 --> 01:11:22,000 Por quê? 585 01:11:22,000 --> 01:11:22,500 Sim. 586 01:11:22,500 --> 01:11:23,230 Não é um loop. 587 01:11:23,230 --> 01:11:24,610 E não é tanto que não é um loop, 588 01:11:24,610 --> 01:11:26,400 é que há um monte de redundância. 589 01:11:26,400 --> 01:11:28,830 Não é copiado e código colado, por assim dizer. 590 01:11:28,830 --> 01:11:31,830 E a solução, provavelmente é de fato um loop. 591 01:11:31,830 --> 01:11:34,350 Então deixe-me ir em frente e melhorar em cima disso. 592 01:11:34,350 --> 01:11:36,250 E eu vou arrastá-los para cá. 593 01:11:36,250 --> 01:11:39,986 Deixe-me ir em frente e conseguir uma repetição bloco, mudar isso para três. 594 01:11:39,986 --> 01:11:41,860 Eu estou indo para jogar fora alguns desses blocos. 595 01:11:41,860 --> 01:11:43,150 >> E você verá que é bastante intuitivo. 596 01:11:43,150 --> 01:11:45,691 Você arrastar e soltar e coisas aparecem e desaparecem eventualmente. 597 01:11:45,691 --> 01:11:49,170 E eu posso simplesmente arrastar este aqui, e agora eu tenho uma versão mais limpa ainda. 598 01:11:49,170 --> 01:11:50,730 Mas você sabe o que? 599 01:11:50,730 --> 01:11:52,940 Há esta oportunidade -se agora para abstraction-- 600 01:11:52,940 --> 01:11:56,350 para começar a definir um novo vocabulário que o MIT não antecipar. 601 01:11:56,350 --> 01:11:59,110 Há esperar e repita e para sempre e se, 602 01:11:59,110 --> 01:12:02,590 mas o que se eu quiser introduzir a palavra tosse como um bloco? 603 01:12:02,590 --> 01:12:06,230 E se eu quiser uma peça do puzzle cujo propósito na vida é a tosse? 604 01:12:06,230 --> 01:12:10,720 >> Bem, vamos olhar para esta versão aqui, o que eu fiz como segue. 605 01:12:10,720 --> 01:12:13,579 Magicamente, eu criei esse quebra-cabeça pedaço aqui, 606 01:12:13,579 --> 01:12:14,870 que zero permite que você faça. 607 01:12:14,870 --> 01:12:16,787 E, de fato C e Python e JavaScript são 608 01:12:16,787 --> 01:12:18,370 vai permitir que você faça isso também. 609 01:12:18,370 --> 01:12:21,830 Você pode criar seu próprio costume peças que você chama o que você quer. 610 01:12:21,830 --> 01:12:24,890 Neste caso, tosse sente como uma definição razoável. 611 01:12:24,890 --> 01:12:27,880 E, em seguida, com estas peças para baixo aqui você pode definir o que significa. 612 01:12:27,880 --> 01:12:30,290 >> Eu arrastado e caiu de esta paleta aqui-- mais 613 01:12:30,290 --> 01:12:33,500 blocks-- este grande roxo bloco, onde eu digitei na tosse 614 01:12:33,500 --> 01:12:35,290 como o nome da minha nova peça do puzzle. 615 01:12:35,290 --> 01:12:39,920 E então eu estou dizendo sempre que um usuário chama essa nova peça tosse quebra-cabeça, 616 01:12:39,920 --> 01:12:41,770 fazer uma palavra a dizer e uma espera. 617 01:12:41,770 --> 01:12:46,160 E assim até aqui no meu bloco de repetição, Eu posso apenas tossir três vezes. 618 01:12:46,160 --> 01:12:49,972 >> E eu diria, especialmente Se agora você esconder esse detalhe. 619 01:12:49,972 --> 01:12:51,430 Quem se importa como tosse é implementado? 620 01:12:51,430 --> 01:12:54,390 Tudo que me importa como programador que eu posso tossir. 621 01:12:54,390 --> 01:12:56,280 Eu não me importo como dizes é implementado. 622 01:12:56,280 --> 01:12:58,620 Eu só me importo que o gato pode dizer alguma coisa. 623 01:12:58,620 --> 01:13:02,720 Eu puder abstrair esse detalhe e incidir apenas sobre o que está na tela aqui. 624 01:13:02,720 --> 01:13:04,400 Mas posso dar um passo mais longe. 625 01:13:04,400 --> 01:13:08,070 >> Observe que aqui, eu tenho implementou o circuito três vezes. 626 01:13:08,070 --> 01:13:11,560 Mas e se ao invés disso eu agarrar esta versão? 627 01:13:11,560 --> 01:13:14,640 E se, em vez nesta versão aqui, 628 01:13:14,640 --> 01:13:18,730 Eu só mudar a minha peça do puzzle para tomar um argumento e de entrada em si mesmo? 629 01:13:18,730 --> 01:13:21,100 E essa entrada pode ser um número como três. 630 01:13:21,100 --> 01:13:24,580 Então, agora, se eu estou escrevendo um programa e eu quero o gato a tossir, 631 01:13:24,580 --> 01:13:28,270 Eu posso realmente dizer o quebra-cabeça peça quantas vezes a tossir, 632 01:13:28,270 --> 01:13:31,990 porque na parte inferior aqui, um columbófilo versão destas peças do puzzle personalizado 633 01:13:31,990 --> 01:13:34,500 permite-me especificar que tosse realmente leva 634 01:13:34,500 --> 01:13:36,951 um input-- leva um argumento como este. 635 01:13:36,951 --> 01:13:37,700 E sabe de uma coisa? 636 01:13:37,700 --> 01:13:38,890 Talvez eu percebo, espere um minuto. 637 01:13:38,890 --> 01:13:40,680 A tosse é o same-- é fundamentalmente 638 01:13:40,680 --> 01:13:42,120 a mesma ideia como espirros. 639 01:13:42,120 --> 01:13:44,040 É apenas um diferente palavra na tela. 640 01:13:44,040 --> 01:13:46,550 Eu puder abstrair mais e implementar 641 01:13:46,550 --> 01:13:48,750 esta versão final de um tosse, que à primeira vista 642 01:13:48,750 --> 01:13:50,660 é muito mais complexa procura. 643 01:13:50,660 --> 01:13:52,140 Mas observe o que eu fiz. 644 01:13:52,140 --> 01:13:55,930 Eu tenho agora generalized-- genericized realmente-- esta peça de quebra-cabeça 645 01:13:55,930 --> 01:13:59,900 a ser chamado dizer palavra n vezes. 646 01:13:59,900 --> 01:14:04,410 >> E agora eu tenho duas novas peças do puzzle aqui definir tosse n vezes. 647 01:14:04,410 --> 01:14:06,790 E o que faz a função de tosse fazer? 648 01:14:06,790 --> 01:14:08,420 O que o meu costume fazer parte do enigma? 649 01:14:08,420 --> 01:14:11,996 Ele apenas chama o bloco digamos, passando a palavra que eu quero dizer, 650 01:14:11,996 --> 01:14:13,870 passando o número de vezes que eu quero dizer. 651 01:14:13,870 --> 01:14:18,210 Porque agora eu posso implementar espirro, simplesmente dizendo achoo, 652 01:14:18,210 --> 01:14:20,320 neste caso, um determinado número de vezes. 653 01:14:20,320 --> 01:14:22,360 >> E por isso estou camadas e camadas. 654 01:14:22,360 --> 01:14:25,690 E, novamente, a chave aqui não é como eu implementado, mas o fato 655 01:14:25,690 --> 01:14:28,070 que se eu apenas literalmente movê-los para fora da tela, 656 01:14:28,070 --> 01:14:31,280 veja como simples, se não muito meu programa agora parece. 657 01:14:31,280 --> 01:14:33,930 Porque ele faz o que diz, eu abstraído 658 01:14:33,930 --> 01:14:37,640 o que estiver dentro dessa caixa preta. ele passa a ser uma caixa roxa aqui, 659 01:14:37,640 --> 01:14:41,430 mas eu obstruída fora o que está dentro porque eu não me importo como ele funciona. 660 01:14:41,430 --> 01:14:43,650 Eu só me importo agora que ele funciona. 661 01:14:43,650 --> 01:14:46,375 >> E, de fato, no problema definir zero, isto é exatamente 662 01:14:46,375 --> 01:14:49,250 o tipo de sobreposição de idéias que você vai têm a oportunidade de explorar. 663 01:14:49,250 --> 01:14:53,510 É exatamente a oportunidade de aplicar técnicas de resolução de problemas, 664 01:14:53,510 --> 01:14:55,550 para o que é, provavelmente, um ambiente desconhecido. 665 01:14:55,550 --> 01:14:57,890 E se você não tenha programado antes ou programado antes, 666 01:14:57,890 --> 01:14:59,500 você vai descobrir que há um pouco de algo 667 01:14:59,500 --> 01:15:00,874 neste ambiente para todos. 668 01:15:00,874 --> 01:15:02,770 E com conjunto de problemas um em uma semana, 669 01:15:02,770 --> 01:15:06,630 vamos ser transferida para focando em uma linguagem de alto nível chamada 670 01:15:06,630 --> 01:15:09,290 C-- ou melhor, um menor linguagem de nível chamada 671 01:15:09,290 --> 01:15:11,347 C-- que é ainda mais poderoso, mesmo que seja 672 01:15:11,347 --> 01:15:12,930 um pouco mais enigmática à primeira vista. 673 01:15:12,930 --> 01:15:16,740 >> E você vai perceber por TL de hoje: DR, que este problema definido tem um menor 674 01:15:16,740 --> 01:15:19,880 a janela de tempo do que os do futuro, basta porque você deve achar que é bastante 675 01:15:19,880 --> 01:15:20,420 acessível. 676 01:15:20,420 --> 01:15:22,211 E não se preocupe se você adicionar a classe tarde. 677 01:15:22,211 --> 01:15:23,920 Nós vamos resolver isso antes do tempo. 678 01:15:23,920 --> 01:15:28,480 E antes de suspender os trabalhos por bolo, vamos terminar com apenas um olhar de dois minutos 679 01:15:28,480 --> 01:15:30,500 pelo que o espera aqui no CS50. 680 01:15:30,500 --> 01:15:40,950 681 01:15:40,950 --> 01:17:20,803 [REPRODUÇÃO DE MÚSICA] 682 01:17:20,803 --> 01:17:21,302 Tudo certo. 683 01:17:21,302 --> 01:17:22,690 Isso é tudo para CS50. 684 01:17:22,690 --> 01:17:23,650 Vamos vê-lo em breve. 685 01:17:23,650 --> 01:17:25,526 O bolo é agora servido. 686 01:17:25,526 --> 01:17:28,998 687 01:17:28,998 --> 01:18:14,267 [REPRODUÇÃO DE MÚSICA] 688 01:18:14,267 --> 01:18:16,350 COLUNA 17: Você já ouviu falar de um ano sabático, chefe? 689 01:18:16,350 --> 01:18:29,490 690 01:18:29,490 --> 01:18:31,920 COLUNA 18: Talvez haja mais sob o capô. 691 01:18:31,920 --> 01:18:38,279