Por isso, é o meu maior prazer para recebê-lo aqui hoje
para a primeira palestra de, bem, Introdução
a Computação e Programação.
Também conhecida como CS50 ou bem, CPSC 100, oficialmente aqui em Yale.
>> Portanto, não poderia estar mais animado para recebê-lo todos aqui.
Meu nome é Patrick Rebeschini.
Eu sou o instrutor principal para a classe.
Eu estou aqui representando um grupo de cerca de 60 membros da equipe
que irá trabalhar com você ao longo do semestre.
Este número é quase 60 nós.
No entanto, ao longo da extraordinária nível de compromissos
que dedicou a este classe, faz CS50 da classe
na Universidade de Yale que oferece o maior nível de apoio
para tudo de você.
E nós não poderíamos estar mais orgulhosos de oferecendo esta classe aqui novamente.
>> Na verdade, como você vai experimentar, CS50 é muito mais do que uma classe.
É uma comunidade.
E você fará parte logo desta comunidade.
Este é o segundo ano que Yale está oferecendo esta classe.
Estamos construindo na extrema o sucesso do ano passado, onde
pela primeira vez, aqui nesta universidade,
assistente de graduação de aprendizagem foram adoptadas em salas de aula.
Tudo começou com esta classe no ano passado.
>> Então, como você sabe, a classe é ensinado em conjunto com a Universidade de Harvard.
Para ensinar este curso estamos relying-- pudermos
contar com a grande experiência de David Malan e a equipe de Harvard.
Então David tem sido ensino CS50 para o bem, 10 anos agora.
E todos os anos ele tem sido empurrando os limites
e melhorando a experiência de sala de aula.
Mais uma vez, nós não poderíamos estar mais felizes de continuar esta colaboração com eles.
>> Na verdade, um dos a maioria das peças interessantes,
Eu vou dizer de executar essa classe agora, tanto em Harvard e aqui em Yale,
é o realmente incrível fertilização cruzada
de ideias, que visa melhorar a experiência de aprendizagem para todos vocês.
Assim, como resultado desta extensa colaboração entre os dois
universidade, CS50 tem o orgulho de anunciar a nova versão deste ano
com mudanças perceptíveis.
David tudo vai nos dizer sobre eles agora.
Então please-- este ser disse, por favor se juntar a mim
e bem-vindo a fazer um grande aplauso
para acolher David e equipe de Harvard aqui em Yale.
>> [Aplausos]
>> DAVID MALAN: Obrigado.
Obrigado.
Este é CS50, Harvard University de ea introdução da Universidade de Yale
ao intelectual empresas de informática
e a arte da programação.
E o que isso significa é que este curso Em última análise, é sobre a resolução de problemas.
Na verdade, muitos de vocês podem têm de sair do ensino médio
ou ter passado os últimos dois anos perguntando o que alguns de seus amigos
fez no ano passado ou em outras classes.
E, no entanto, a realidade é, não importa o que nós
fazer no final do dia nesta classe, ele vai ser sobre a resolução de problemas.
>> E, como tal, talvez levá alguma tranquilidade no fato
que 73% dos estudantes que tomar esta classe, tanto aqui
em Yale, bem como em Harvard, nunca tomou uma classe CS antes.
Então, se você está sentado aqui em o público hoje perguntando
por que você está sentado aqui na audiência de hoje,
ou talvez você só seguido juntamente com alguns amigos,
ou talvez você tenha sido um pouco curioso sobre o que
ciência da computação e programação é, perceber
que a maioria de seus colegas para à esquerda e à direita de você
são muito nessa mesma demográfica.
>> E, de fato, se olharmos as estatísticas últimos anos
dentro do corpo do estudante de CS50, tanto aqui e em Harvard, 58% dos alunos
descrevem-se como menos confortável.
9% é mais confortável.
E, em seguida, 33% está em algum lugar no meio.
E não há nenhuma definição formal do que estes baldes significa.
Você meio que sabe que você é menos confortável se você estiver.
Você está se sentindo um pouco desconfortável com talvez estar na classe.
Você não tem certeza se um computador aula de ciências é, em última instância para você,
e perceber que você é em muito boa companhia.
E, de fato a classificação, ea avaliação,
eo feedback, e tudo isso estrutura de apoio na classe
em última análise é muito individualizada.
Mais do que a maioria qualquer outra classe de design.
E, de fato, o que, em última instância matérias desta classe não é
tanto onde você termina -se em relação aos outros,
mas onde, na semana 11 ou passado, e em relação a si mesmo na semana
0 aqui a nossa primeira.
Então, o que isso significa?
Bem, isto significa aqueles de 73% de estudantes no ano passado, que nunca tinham tomado
uma classe CS antes, pela início do semestre eles
foram brincar em um idioma chamado de risco, que nós mesmos
vai ver aqui hoje.
E por a extremidade do semestre tivessem ido
através de toda esta lista de desafios.
Começando com uma linguagem chamada C.
Implementação, o que é à primeira vista, indo
a ser um pouco de um desafio para alguns, mas bastante gratificante, uma vez que
obter Super Mario saltando cima e para baixo uma pirâmide
implementada, ainda que, com apenas algo chamado de arte ASCII.
Implementando última ano-- o que os alunos do último ano, em seguida,
que depois disso foi implementar o seu cifra de César própria e cifra de Vigenère.
Assim, algoritmos de criptografia com o qual você poderia
informações corrida e depois desembaralhar informação para enviar mensagens secretas.
O jogo de 15.
Se você se lembrar de infância ou algum favor de partido,
esse joguinho de plástico onde você se move os números para cima, baixo, esquerda e direita
para tentar obtê-los em ordem, realmente implementar esse jogo
e resolvendo a lógica necessária lá.
E, então, se envolveu em forense no ano passado.
>> Assim, por meio do semestre, estudantes que nunca tiveram
usaram seus teclados para este fim antes,
estavam escrevendo software para recuperar, por assim dizer,
JPEGs ou fotografias que tínhamos acidentalmente
excluída de um digitais cartão de memória de uma câmera.
Recuperando mensagens secretas de dentro de uma imagem bitmap,
e outros tais tipos de gráficos também.
>> Em seguida, transferida para dar toda a classe um dicionário.
Apenas um arquivo de texto muito grande com 150.000 palavras em inglês.
E todo mundo foi contestada de alguma forma ler, por assim dizer,
essas palavras na memória.
Na memória do computador.
E, em seguida, responder a perguntas da forma, esta é uma palavra?
Será esta uma palavra?
Realmente apenas implementando um corretor ortográfico.
E, em seguida, desafiando uns aos a outra com uma grande board--
um quadro de líderes para ver quem poderia usar a menor quantidade de memória,
na menor quantidade de tempo para na verdade, a verificação ortográfica de documentos grandes.
>> Nós transferida de seguida, para implementar os próprio servidor web.
Portanto, não fazer páginas web em idiomas como HTML e CSS, se você está familiarizado.
Mas realmente implementar que o servidor
escuta na internet para solicitações de navegadores
e, em seguida, responder a esses pedidos.
Em seguida, implementar a nossa própria e-comércio, como site, onde
estudantes poderiam comprar e vender ações.
Desenho em tempo quase real cotações de ações do Yahoo Finance.
E permitindo que os alunos a ver como sua carteira desenvolve.
E então, finalmente, um mash up do Google News e Google
Mapas qual os alunos pelo prazo de termos fim
tinha a capacidade de clicar, e rodada, e pesquisa em um mapa do Google.
E depois ver todos os artigos de notícias que
são proximal a essas áreas particulares.
Então, realmente vai de zero a 60.
>> E ao longo do caminho com o que tínhamos no ano passado chamado, adições de hackers.
Que levantar a barra ainda mais para aqueles de vocês
que poderia muito bem ter um bom quantidade de experiência de estar em que 9%
de mais confortável.
Então perceber que há um limite muito alto
mesmo dentro daqueles desafios para os alunos
vindo de um fundo diferente.
Porque no final de o dia, estamos em última análise,
focado muito simplesmente sobre este assunto.
>> Mas o que faz este Quer dizer, a resolução de problemas?
Então, vamos propor que nós destilar-lo como este.
Assim, a resolução de problemas é realmente apenas este tipo de imagem.
Então você tem entradas para algum problema, algo que você realmente quer resolver.
O objetivo é obter resultados, uma solução para esse problema.
E, em seguida, no meio é o que vamos chamar uma caixa preta.
Você não precisa necessariamente saber ou mesmo importo com o que está dentro dessa caixa preta.
Tudo o que sei é que, quando você alimenta de entrada para ele,
você espera obter uma saída ou uma solução a partir dele.
E enquanto hoje nós olharemos tanto em entradas e saídas,
nós vamos longo prazo, e sobre o longo de todo o semestre,
se concentrar no que está dentro dessa caixa.
>> E é aí que vai mentir algo chamado algoritmos.
Instruções passo a passo para na verdade resolução de alguns problemas.
Mas o que é um exemplo de alguns insumos?
Então, talvez uma coisa simples na início de cada ano escolar, alguém
pode querer dar atendimento.
Assim, poderíamos fazer um, dois, três, quatro, cinco, seis,
e como eu iria manter a par de tais informações.
Eu só pode ir um, dois, três, quatro, cinco, seis.
E usar apenas uma espécie de um dígito.
>> Ou eu poderia realmente gravar isso um pouco mais longo prazo.
E como faço para representar todos os seres humanos neste quarto?
Bem, eu poderia fazer algo assim, OK.
Eu vejo uma pessoa.
Tudo certo.
Eu vejo uma outra pessoa, um terceira pessoa, e assim por diante.
Mas ninguém conta as pessoas como este.
Então, literalmente, a maioria de nós se estivermos mesmo indo para desenhar alguma coisa,
são, provavelmente, indo para ir um dois três quatro,
talvez um pouco extravagante, cinco, seis, sete, oito, nove, dez e assim por diante.
>> E isso é realmente uma sistema chamado unário.
Uno, como uno implicando um, onde você só tem uma letra do alfabeto.
Você só tem esta marca hash.
E eu, para a eficiência, acabou de desenhar estas marcas de hash, em última instância
como linhas retas.
Mas eu poderia ter tirado deles como pequenas figuras da vara.
Onde representam uma pessoa, uma entrada,
Eu apenas desenhar uma vara figura ou uma marca hash.
Mas isso não é tudo o que expressivo.
>> Se tudo o que tenho são essas de hash marcas, vamos figuras da vara sozinho,
como eu poderia representar algo como o número 15?
Ou 15 pessoas na sala?
Eu poderia ter de fazer algo como 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15.
Ele só não escala muito bem.
Como as entradas de obter grandes, nós precisa de um sistema melhor do que este.
>> E verifica-se que o sistema que os computadores usam
não é assim tão diferente a partir do que você e eu sabemos.
Na verdade, a maioria das pessoas nesta sala, mesmo se você está entre os menos
confortável, não necessariamente sabem como o seu Mac ou PC realmente funciona,
você provavelmente pelo menos ouviu falar, que debaixo do capô são 0 e 1..
O chamado sistema binário.
Então, na verdade, os computadores têm mais de apenas marcas de hash em seu vocabulário,
mas não tanto de um vocabulário, como nós, seres humanos.
>> Na verdade, nós, humanos, não use binário.
Bi o que significa 2, 0 e 1.
Mas decimal, deca significando 10, de 0 a 9.
Portanto, temos muito mais expressiva capacidades em nosso mundo humano normal.
Mas eu diria que estes sistemas, binário e decimal, e tudo
entre e para além dela, estão realmente tudo muito familiar.
Por exemplo, considere Neste exemplo aqui, 123.
Então, isso realmente é, é claro, um número que conhecemos como 123.
Mas tudo o que acabou de desenhar era apenas isso padrão de símbolos, glifos por assim dizer.
Tipo de formas na placa em giz.
>> Mas porque é que nós imediatamente e intuitivamente entender isso como 123?
Bem, se você fosse como me na escola,
você provavelmente aprendeu que este é o 1s coluna, isto é a coluna 10s,
esta é a coluna 100s.
E por que é útil?
Bem, é simples aritmética agora fazer para começar a partir de um padrão de símbolos
a um número entendemos intuitivamente.
É o que, 100 vezes 1, e, em seguida, 10 vezes 2 e 1 vezes 3,
que, naturalmente, é apenas 100, e esta é de 20, e este é três.
E por isso, se somarmos os together-- ah.
Então é aí que reside o tipo de raciocínio por trás porque este conjunto de símbolos
significa algo real e numérica.
>> Bem, os computadores fazem exatamente a mesma coisa, mas eles só podem contar tão alto quanto um.
Considerando que eu era capaz de contar além de três.
E, na verdade, se eu continuasse eu vou poderia ir tão alto como nove neste sistema.
Computadores só tem zeros e os de seu alfabeto.
>> Então, o que isso significa?
Bem, isso significa apenas que se um computador quer representar, dizem que o número 0,
talvez usando três de caráteres três letras do alfabeto, por assim dizer,
que é como um computador representa 0.
Então, nem tudo o que assustador até agora.
É exatamente o que nós, seres humanos faria.
E, de fato, a maioria de nós só faria ignorar os zeros à esquerda de qualquer maneira.
>> Um computador, se quiser para armazenar o número 1,
Acontece que vai fazer isso.
E um computador para armazenar o número 2 não é
vai fazer o sistema unário, que aludi anteriormente.
É realmente vai fazer isso.
E este é, provavelmente, onde o padrão começa
para tornar-se menos óbvio para a maioria das pessoas.
Isso é 2, isto é 3.
Curiosamente, esta é agora 4.
E agora ele realmente faz parecem ser, talvez, enigmático,
mas não é, se considerarmos o binário realmente significa.
Significa que você tem dois letras do seu alfabeto.
Assim, dois caracteres possíveis para cada espaço reservado.
>> Então isso realmente significa que estamos indo precisar de um lugar 1s ou 2s lugar,
um lugar 4s e depois 8, e 16, 32, e 64.
E qual é a diferença lá?
Como estes são 1, 2, 4, 8, 16, 32, 64.
E antes que nós tivemos 110, 100.000, 10.000.
Qual é a semelhança lá?
E o que é o padrão?
Sim.
ALUNO: potências de 2 em vez de potências de 10.
DAVID MALAN: Yeah.
Potências de 2 em vez de potências de 10.
E então se eu queria manter indo, 8, 16s e assim forth--
mas agora se você tem este tipo de pista, agora o sistema binário
é realmente muito simples.
Porque é que este padrão de 0 do no mundo dos computadores 0?
Bem porque é 4 vezes 0, 2 tempos 0, 1 vezes 0 e você começa 0.
>> Por que este é o número 1?
Mesmo raciocínio, mas agora nós tem um 1 na coluna 1.
Por que isso é 2?
Temos um 1 na coluna 2s.
E então como eu represento dizer, o número 7 em binário?
Diga mais alto.
>> ALUNO: Três 1s.
>> DAVID MALAN: Três 1s.
Então, 1, 1, 1, porque só precisamos 4 mais 2 mais 1 me dá 7.
Tudo certo.
Então, a partir daí, como vamos representam 8 com 3 espaços reservados?
Sim.
>> ALUNO: 1, 0, 0, 0.
>> DAVID MALAN: Sim 1, 0, 0, 0.
E, no entanto, talvez, eu meio de tecnicamente precisa
para adicionar outro espaço reservado para o conselho.
Se eu quiser para caber que eu de fato precisa fazer algo parecido com isto.
Então, eu realmente preciso usar agora a coluna de 8s, e isso é bom.
Mas o curioso é na computação que isso vai nos custar alguma coisa.
Você precisa de mais memória RAM em seu computador agora.
Você precisa de mais memória porque você precisa de algo
físico para armazenar esse bit adicional, por assim dizer.
dígitos binários.
E, de fato tudo o que aconteceu aqui, como o sistema decimal,
se continuarmos a adição de números cima e para cima e para cima, vamos para 5-6 a 7-8
é como carregar a 1, literalmente.
E então tudo o resto vai voltar para baixo a zero.
>> Mas como é que vamos realmente representam estas coisas fisicamente em um computador?
Bem, no final do dia, a única entrada física de ir para o meu computador
aqui é o cabo de alimentação, de modo eletricidade ou elétrons da parede.
E assim como faço para começar a partir de algo físico como que para realmente
representando uma idéia como esta vez.
>> Bem, o que poderíamos fazer?
Poderíamos considerar que, tudo bem, talvez se a eletricidade está fluindo
Eu poderia armazená-lo e segurá-lo.
E se eu estou me segurando a alguma electricidade,
que só vai arbitrariamente representam um 1.
E se eu puxar o plugue e não há nada lá,
você sabe que só vai para representar arbitrariamente a 0.
>> Então, se algo está lá, 1.
Se nada está lá, 0.
Ou você pode fazer isso um pouco mais visual.
Aqui é um 0.
Não há nada acontecendo interessante em cerca de parte de trás do meu telefone.
Mas se eu permitir que um pouco pouco de eletricidade flua,
mesmo que seja um pouco claros aqui, minha lanterna continuou.
Então, eu estou armazenar uma carga e ergo, este telefone agora representa um 1.
Então 0 1.
>> Assim, com um iPhone quão alto posso contar com este tipo de abordagem?
Quero dizer a 1.
Não é tudo o que atraente.
Então, o que mais poderíamos fazer?
Bem, vamos ver, tem alguém na sua telefone agora que eu poderia pedir?
Qualquer pessoa que tenha um telefone com uma lanterna construído em?
Posso pegar emprestado?
Eu não preciso de desbloqueio.
Tudo certo.
Obrigado.
Deixe-me pedir isso.
Tudo certo.
Então, se eu agora vá para cima e aqui, o que estou representando agora?
Sim.
Portanto, é um três porque isso é no coluna de 1s, este é na coluna 2s.
Então 1 mais 2 é 3.
E então se nós tentar obter realmente creative-- oh, obrigado.
Muito preventivo.
Tudo certo.
Agora tenho três iPhones.
Tudo certo.
>> E agora isto-- eu não vou fazer mais longe do que isso.
O que estou representando agora?
Apenas setes.
Mas eu precisava fisicamente mais memória neste caso.
Mas isso é tudo o que é.
Você pode pensar que está acontecendo on-- obrigado você-- dentro do seu telefone
como sendo apenas um interruptor que é sendo ligada e desligada.
>> E se você nunca ouviu falar a palavra transistor.
Ou se você já ouviu o comercialização falar Intel dentro,
que está falando com o tipo de hardware que está dentro do seu computador.
Intel faz CPUs, unidades de processamento central,
que são como os cérebros dentro do seu computador.
E estas CPUs e coisas que eles estão conectados
ter lotes e lotes de pequenos comutadores.
Milhões, bilhões de switches que tanto pode ser ligado ou desligado.
>> Então, computadores, felizmente, como os nossos Macs e PCs,
pode contar muito maior do que 7 ou 8 porque eles têm muito mais do que três
ou quatro bits.
Muito mais do que o equivalente ao três lanternas que tivemos apenas.
Mas agora isso começa a ficar muito desinteressante rapidamente.
Se eu agora quero realmente ser capaz para fazer algo mais interessante,
Eu quero ser capaz de saltar para algo como isto.
>> Então ASCII, não é realmente um útil sigla, mas American Standard Code
Information Interchange.
Significa apenas que, alguns anos atrás, os humanos decidiram,
Você sabe o que, nós queremos ser capazes de fazer mais com computadores do que apenas números.
Nós não queremos que eles apenas ser calculadoras caros,
nós gostaríamos de ser capaz de fazer coisas como processamento de texto, ainda que de forma muito simples.
Mais tarde, tivemos de e-mail e outras mídias.
>> E assim o mundo decidiu há alguns anos atrás de acordo com este sistema ASCII,
Você sabe o que?
Em certos tipos de programas a qualquer momento você
ver o equivalente do número 65, como o padrão de bits.
E nós poderíamos fazer o matemática aqui no quadro.
O padrão de bits que representam 65.
Não pense nisso como 65 em decimal.
Pense nisso como arbitrariamente, mas globalmente, de forma consistente como a capital
UMA.
E então o mundo decidido, você sabe o quê?
Vamos dar um outro padrão de bits.
E se alguma vez ver a número 66, vamos
assumir que esse é o de capital B. Avançando para H
e eu, se você ver 72 ou 73, que deve ser um H e um I, respectivamente.
E assim, desde que o conjunto mundo concorda com isso.
De modo que quando você recebe um e-mail ou você teria um arquivo em um stick USB,
ou algo parecido isso-- quando você vê que o padrão de bits,
você sabe que ele deve ser este carta ou alguma outra letra.
>> Mas é contexto específico, certo.
Um programa de e-mail pode interpretar estas coisas como personagens,
mas uma calculadora gráfica ou calculadora pode representar ou interpretar
estas coisas, é claro, tal como letras.
>> Assim, com o que disse, pouco rápida revisão.
Este é talvez um de três caracteres e-mail que foi enviado para mim.
Debaixo do capô está tudo em 0s e 1s, mas não me importo.
Nós vamos começar a abstrair acima dos 0s e 1s para letras.
E se eu ver um padrão de 0s e 1s que realmente representam 72, dica, dica, 73,
e depois 33, qual é a mensagem?
>> Estudante: [inaudível]
DAVID MALAN: Então, se você pensa para trás apenas um momento atrás, HI
foi a mensagem que eu estava tentando comunicar aqui porque H é de 72,
I é de 73, e agora 33-- você não faria necessariamente saber isso com antecedência,
mas acontece que se você realmente ver mais do gráfico e do sistema
que a humanidade acordado anos atrás, é apenas um ponto de exclamação.
E, de fato, não há um padrão de símbolos e números para cada personagem
que você pode ter em seu teclado.
>> Tudo certo.
Vamos abstrato mais.
Se não queremos apenas ter coisas como números e letras,
nós realmente deseja implementar gráficos.
Bem, se você já ouviu a sigla RGB.
É uma espécie de datada agora, mas ainda é tipo de lá.
RGB é vermelho, verde, azul.
E é apenas um sistema de de dizer, você sabe o quê,
vamos usar três conjuntos de bits.
Um conjunto de 8 bits, um outro conjunto de 8 bits, e um outro conjunto de 8 bits.
E vamos usar esses bits para armazenar o quanto nós vermelho
quer na nossa tela, quanto verde que queremos em nossa tela,
e quanto azul queremos em nossa tela.
E isto significa apenas que se você ter um lot-- um número grande para o vermelho,
isso significa que me dar um monte de vermelho.
Se você tem um número grande para verde, dá-me um monte de verde.
E se você tiver apenas um pouco de azul ou um pequeno número como 33,
dá-me um pouco de azul.
E se acontecer de você combinar os três magnitudes, por assim dizer,
você começa isto-- você mal pode ver em o projetor aqui, mas este obscuro
tom de amarelo ou marrom.
>> Mas isto é dizer, usando esse padrão de 8 plus 8 plus plus 8--
esse padrão de 24 bits É assim que um computador faria
armazenar esse tom de amarelo em um pontinho um pixel na tela.
Então, nós fomos de 0s e 1s para decimal números por letras do alfabeto.
Ou mais interessante, pontos coloridos.
>> Bem, o que, naturalmente, em seguida, vem a seguir?
Bem, o que é uma imagem que você ver em Facebook ou entrar em um e-mail?
Ou semelhante?
Qual é a definição tecnicamente de uma imagem?
Sim.
O que é uma imagem composta de se olhar muito perto em sua tela?
Sim.
É apenas um monte de pixels.
Na verdade, se você levar o seu laptop talvez mais tarde,
e olhar muito de perto a ele-- dependendo
sobre como caro o laptop é e como de alta qualidade da tela é,
você pode muito bem ver todas os pequenos pontos na tela.
>> E esses pontos ou pixels, que significa que há
24 bits que representam cada pixel naquela fotografia que você vê no Facebook,
ou que você acabou de tirar em seu iPhone recentemente.
E então é assim que obtemos a coisas como gráficos.
Bem, o que é um vídeo?
Um vídeo é apenas um conjunto de gráficos voando pela tela novamente
e novamente e novamente.
E assim vídeos realmente, são apenas padrões de bits representando grades, linhas
e colunas de pontos, voando a imagem da tela,
depois de imagem, conforme a imagem, a.k.a.
As imagens em movimento.
Então é isso para entradas e saídas.
>> Tudo o que temos agora é uma pressuposto de que, você
sabe o que, se queremos um computador para representar informações,
temos um sistema para fazê-lo.
Nós podemos fazê-lo com 0s e 1S no final do dia.
Mas podemos abstrair, de modo para falar, em cima do que
de modo a representar mais coisas interessantes.
E daqui em diante em CS50 e, em ciência da computação de modo mais geral,
agora estamos firmes sobre os ombros de todas as pessoas que
vieram antes de nós, que descobriu isso.
E agora apenas supor que os computadores pode representar entradas e saídas.
>> Mas agora vamos realmente fazer algo com eles.
Assim, um algoritmo é apenas um conjunto de instruções, passo a passo,
para resolver algum problema.
E o que pode um problema de tal ser.
Portanto, esta é uma velha escola tecnologia, um livro de telefone.
E dentro de um livro de telefone é um Toda monte de nomes e números.
E esses nomes são geralmente classificados em ordem alfabética.
>> Então, se eu queria encontrar alguém em este livro telefone como Mike Smith,
o que é um ser humano típico vai fazer?
Bem, você pode simplesmente abrir -lo, olhar para a primeira página.
Não vejo Mike Smith.
Vire-se para a segunda página, Não vejo Mike Smith.
E apenas manter indo e indo.
esta abordagem passo a passo é a correta?
Sim.
É uma espécie de idiota, certo.
É ineficiente, certo.
Porque vai demorar uma eternidade para chegar a Mike, mas ele está correto.
Porque se Mike é aqui I vai realmente encontrá-lo.
>> Assim que é um pouco mais pessoa razoável vai fazer?
Eles ainda podem abrir para a frente, e talvez voar através do livro de telefone
duas páginas de cada vez.
Dois, quatro, seis, oito.
Eu não posso realmente fisicamente fazê-lo muito bem.
Mas, em teoria, este deve ser duas vezes mais rápido, duas páginas de cada vez.
Este algoritmo é correto?
>> Estudante: [inaudível]
DAVID MALAN: Não necessariamente.
Boa.
Por que essa advertência?
>> ALUNO: Porque ele poderia estar em uma das páginas que você está saltando.
DAVID MALAN: Yeah.
Assim, mesmo se eu ficar cada vez mais perto.
E se ele é apenas acidentalmente, por má sorte, ensanduichada entre as duas páginas
que eu estou voando sobre?
Então, precisamos de uma correção para isso.
Nós realmente precisa em seguida, dizer, espere um minuto,
talvez se nós ir longe demais, talvez se bater a seção de T,
para T vem depois de Smith, então devemos pelo menos o dobro de volta pelo menos uma página.
Assim fixável, mas há Há um problema condicional.
Portanto, é duas vezes mais rápido, mas você pode tem que dobrar para trás apenas um pouco.
Mas ninguém em seu quarto, mesmo se você realmente não usar telefone livros mais,
vai começar no início.
O que você vai fazer à procura de Mike Smith?
Você está indo para ir mais ou menos para o S do.
Ou se você realmente não tem a folha de fraude no papel,
você está indo para ir, pelo menos, aproximadamente ao meio.
E certamente não para a capa do livro.
Você vai olhar para baixo.
E matematicamente você provavelmente vai ver a secção M, que
é mais ou menos no meio.
E então você vai perceber, o que é verdade?
Onde está Mike?
>> Estudante: [inaudível]
DAVID MALAN: Yeah.
Então, ele está deste lado.
E então o que você pode fazer?
Bem, figurativa e literalmente você pode rasgar o problema pela metade uma vez?
E depois saber que você pode jogar esta metade do problema de distância.
E agora ficamos com fundamentalmente o mesmo problema, mas é metade do tamanho.
E agora, qual é a um conjunto de instruções?
Qual é o algoritmo para encontrar Mike Smith?
É exatamente a mesma coisa.
>> Agora, este passa a ser o M secção e esta é a secção Z,
mas fundamental fórmula é ainda o mesmo.
Ir aproximadamente ao meio, olhar para baixo, oh, danado.
Agora estou na seção T, Eu tenho ido longe demais.
Mas também aqui pode você aplicar a mesma lógica.
metade lance do problema de distância e agora estamos
deixou com um problema que é um quarto do tamanho.
E podemos repetir, e podemos repetir, e podemos repetir até que, teoricamente,
há apenas uma página à esquerda na que Mike é ou não é.
>> Assim que é tão poderosa sobre esta idéia?
Quero dizer, afinal, é bastante intuitiva.
Ninguém vai começar no início do livro de telefone
e virar 1.000 páginas para encontrar Mike Smith.
A maioria das pessoas nesta sala vai para fazer mais ou menos esse tipo de algoritmo
poupar para o rasgar.
>> E então por que fazemos isso?
Bem, considere a eficiência.
Considere apenas quanto melhor este algoritmo foi por dividi-lo
em suas partes componentes.
Então o que eu primeiro fazer?
Peguei o livro de telefone.
E um cientista da computação, e um programador,
de modo mais geral que parece, vai para começar a contar tudo a 0.
>> Por quê?
Bem, é um pouco estranho que nós, humanos, contam, em geral,
a partir de um.
Porque o que é o menor número podemos representam claramente baseado
mesmo em nossa matemática antiga escola primária?
Bem, foi 0, se é em decimal ou binário.
E assim que você vai ver no mundo da computação e programação,
especificamente, começamos contando tudo, desde 0.
>> Então eu peguei o livro etapa telefone 0.
Eu estou indo para abrir a meio do livro de telefone.
E isso é de fato um expressão do que eu fiz.
E então o segundo passo foi olhar para os nomes.
Etapa três é um pouco diferente conceptualmente.
Eu estou me perguntando uma pergunta.
Se Smith está entre os nomes, Vou tomar uma decisão.
Se ele está entre os nomes, então eu vou ligar para Mike.
E eu vou tomar uma decisão com base nessa informação.
>> No entanto, se não, se é Smith anteriormente no livro para a esquerda,
Vou abrir para o meio da metade esquerda do livro.
E então aqui está a inteligência, Vou voltar para a etapa dois.
Vou tipo de estar em meus próprios ombros
e apenas repetir o passado trabalho que fiz.
Mas o trabalho que me resta é menos, e menos, e menos.
Mas ele ainda está indo para o trabalho.
Mas se Mike, em vez disso, é mais tarde no livro para a direita,
Vou abrir para o meio da metade direita do livro,
em seguida, voltar para a etapa dois.
>> Mas há realmente um quarto cenário.
Mike, quer aqui, ou aqui, ou aqui, ou-
>> ALUNO: Não há.
DAVID MALAN: Não há.
E, de fato, se não prevemos Neste quarto e último cenário
nosso programa pode ser buggy ou falho de alguma forma.
Else, saia no caso em que não encontramos Mike em tudo.
E, de fato, se você observar sempre o computador de suspensão, ou todos
de uma palavra súbita ou alguma outra programa só é encerrado inesperadamente,
e às vezes te erro mensagem é literalmente isso.
Este programa fechar inesperadamente.
Pode ser para qualquer número de razões.
Mas às vezes é algo tão simples como isso.
O programador humano que escreveu que software
não percebeu que, oh, há uma diante coisa que pode realmente acontecer.
E se você não escrever código para capturar esse quarto cenário,
é realmente inesperado, por vezes, o que o computador pode realmente fazer.
Agora vamos chamar um Algumas dessas coisas.
Então em amarelo aqui, eu têm termos realçados
que, doravante, nós somos apenas vai chamar funções.
Funções no mundo da programação são como ações,
declarações de ações.
Então pegue, aberto a, olhar a, chamada, aberto, aberto, saia.
Isso é uma função, um procedimento, uma ação, qualquer número de sinônimos
iria funcionar tão bem.
Agora, quais são essas coisas agora, em amarelo?
Se outra pessoa, se mais, se mais, estes são o que
vamos chamá condições em programação,
ou filiais, a decisão aponta, se você quiser.
Mas como você sabe qual garfo no caminho a tomar, por assim dizer?
Precisamos destacar os termos à direita
lá, as quais são sim, não há dúvida.
Estes verdadeiros falsos perguntas.
Smith entre os nomes?
Smith no início do livro?
Smith mais tarde no livro?
Estas são perguntas para qual há um sim, ou não,
ou equivalentemente verdadeira ou falsa, ou equivalentemente, um ou zero resposta.
>> E, entretanto, há apenas uma última peça.
Este aqui tem que tipo de efeito?
Querendo ou não você programar antes, como você
descrever o passo sete e 10 estão fazendo?
O que você disse?
ALUNO: Um passo recursiva.
DAVID MALAN: Um passo recursiva.
Sim, essencialmente.
É tecnicamente iterativa aqui se você está familiarizado.
Mas vamos voltar a isso.
Mas está fazendo algo claramente.
Novamente, é induzir uma ciclo, um ciclo, certo.
Você vai literalmente de volta a alguma etapa anterior.
E assim, de fato, isso vai implementar algum tipo de ciclo.
Mas você não vai conseguir preso neste sem parar, certo.
Porque se você está constantemente verificando é Mike aqui, ou para a esquerda, ou não aqui,
eventualmente, ele não vai estar lá.
E você pode simplesmente parar completamente como por essa última linha.
>> Então é isso para vocabulário.
E isso era o que faria geralmente chamar código pseudocódigo.
Não é uma linguagem real.
É apenas muito concisa Inglês, mas ele se comunica o ponto.
Não há nenhuma estrutura formal aqui.
Você só usá-lo de alguns palavras, mas palavras como claros
como você pode se comunicar a sua ideia.
>> Agora, como boa é que o algoritmo e quanto melhor é?
Bem, não temos para entrar no especificidades de números ou nada
como aquilo.
Mas podemos olhar para o moldar desta solução.
Então, se nós apenas desenhar alguma trama xy aqui no eixo horizontal aqui.
Vamos chamar o tamanho do problema.
E um cientista da computação seria normalmente usam n como a variável aqui.
Então n páginas, ou n pessoas na sala, ou seja o que for que você está tentando contar.
>> E, em seguida, sobre o eixo vertical no esquerda, que seria o tempo para resolver.
Então, quantos segundos o faz leve-me para encontrar Mike Smith?
Ou quantos passos que é preciso?
Quantas voltas página leva?
Então, isso é quanto custa me no tempo para resolver um problema.
E nós pode desenhar o primeiro algoritmos de inclinação, se quiserem,
como apenas esta linha reta em vermelho.
E eu vou chamá-lo n.
>> Por que n?
Por que é apenas um presente para um relacionamento?
Bem, se Verizon ou qualquer que seja empresa de telefonia
acrescenta mais uma página para o livro de telefone no próximo ano,
que pode empurrar um Mike mais um passo mais perto do fim,
dependendo de onde essa página é.
E assim o efeito só poderia a de adicionar mais um segundo.
Ou mais uma página virada.
Uma proporção 00:59.
>> Em contrapartida, o segundo algoritmo.
Quanto mais rápido foi que intuitivamente?
Onde eu fui duas páginas de cada vez?
Sim.
>> Estudante: [inaudível]
>> DAVID MALAN: Yeah.
Por isso, vai ser duas vezes mais rápido.
E nós gostaria de chamar isso aqui dependendo da escala.
Ainda é uma linha reta, mas menor do que a linha vermelha.
Porque, por algum número de páginas, se leva
isto muitas etapas com o primeiro algoritmo,
que vai levá-lo a metade como muitos passos com o segundo.
E assim, a linha amarela descrevendo o segundo algoritmo
é apenas vai ser abaixo dela.
>> Mas o que é realmente poderoso é pensar sobre a terceira e última,
e surpreendentemente mais intuitiva algoritmo, que tem esta forma.
Tecnicamente nós chamaríamos esta uma curva logarítmica.
Log base 2 de n neste caso.
Mas isso realmente não importa.
O que importa realmente é o fundamental forma diferente que tem.
E você pode considerar o quão muito mais curto esta linha realmente
é no longo prazo.
Ele está constantemente a aumentar.
Ele não achatar perfeitamente.
Mas ela cresce sempre muito mais lentamente como o problema se torna maior e maior.
E você pode pensar desta way-- se Verizon não apenas
adicionar uma página no próximo ano, mas duplos o número de páginas do livro de telefone,
o primeiro algoritmo pode tomar o dobro de passos.
Se é de 1.000 páginas esta ano, 2.000 páginas no próximo ano,
Mike pode ser que muito mais longe.
Portanto, é de 1.000 medidas adicionais para encontrá-lo.
O segundo algoritmo pode ser apenas mais 500
passos para encontrá-lo porque mais uma vez, Estou voando por ele dois de cada vez.
>> Mas o que sobre o terceiro algoritmo?
Se Verizon duplica a tamanho da lista telefónica
próximo ano de 1000 a 2000 páginas, quantos mais passos
é o meu terceiro algoritmo vai levar?
Sim, é apenas um.
E essa é a idéia poderosa.
Você pode tomar 1.000 páginas mordida fora desse problema de uma só vez.
E agora, se você considerar um cenário de bobo,
mas que tipo de fala ao poder deste tipo de intuition--
Se um livro de telefone teve, como, quatro bilhões páginas, se sente como um problema muito grande.
E, de fato, pode me levar de quatro bilhões de page
volta-se para encontrar Mike Smith naquela caso com o primeiro algoritmo.
Mas quantos passos seria ele tomar no terceiro algoritmo
para encontrar Mike entre os quatro bilhão de pedaços de papel?
Então, quatro bilhões de você rasga ao meio.
Você obter dois bilhões.
Em seguida, um bilhão, em seguida, 500 milhões, 250 milhões, 125 milhões-- mas
Parece que este é vai demorar um pouco.
Eu poderia precisar de 32 dedos contar-se que a alta.
Mas é de facto como poucos como 32 lágrimas página.
Você pode ir de quatro bilhões para uma página divisória
o número original de Páginas na metade 32 vezes
até que você é deixado com só que uma única página.
>> Agora, é claro, eu estou enganando aqui.
Não é que estamos apenas sendo sorte de estúpida inteiramente com os dois primeiros
algoritmos.
Eu estou traindo de alguma forma, ou realmente estou aproveitando uma suposição.
O que era verdade sobre o livro de telefone na sua forma original que permitiu
eu mesmo usar esse terceiro algoritmo?
Sim?
AUDIÊNCIA: Foi em ordem alfabética.
DAVID MALAN: Foi alfabetizado, certo?
Se fosse apenas de forma aleatória fim, isto é um desperdício
de tempo, toda essa conversa.
Eu tenho que olhar para cada A página se estiver em ordem aleatória
para encontrar Mike Smith antes de eu pode-se concluir que ele está lá ou não.
E assim o que canto ter cortado é que eu tenho
que assumiu outra pessoa em Neste caso fez o trabalho para mim.
E para que, finalmente, convida a questão, bem, espere um minuto.
Como você classificar 1.000 páginas de nomes e números?
Isso é realmente uma pessoa diferente problema, algo
vamos voltar no futuro.
Mas quando você pensa sobre sites como Facebook e Google para o Gmail
e coisas como o do Google índices próprios de busca,
quando você tem milhões ou bilhões de pedaços de dados armazenados nos dias de hoje,
searching-- e para não mencionar classificando essas problems--
é em última análise, um desafio em si mesmo.
E, de fato, este é, então, apenas um desses desafios
que vamos estar olhando.
>> Então agora vamos ter um momento e vejam o CS50
-se e dar-lhe uma sensação de que está na loja neste semestre.
Na verdade, se você não tiver, não dê uma olhada neste URL.
E, como Patrick aludiu para, este ano estamos
fazendo um investimento significativo tudo quanto mais em apoio do curso
estrutura em termos de agências de viagens eo CAs, o horário de expediente,
secções disponibilidade, e materiais digitais on-line, também.
Na verdade, em termos de o curso de palestra, que estamos aqui hoje.
E as expectativas deste ano oficialmente do curso
são assistir aos dias de hoje, do curso última palestra, e um campo de
mais ou menos no meio do semestre com cada palestra entre
disponibilizados em geral numa sexta à tarde
on-line, tanto para estudantes de Yale e estudantes de Harvard este ano.
Com efeito, um dos mudanças fundamentais é
que estamos adotando no Harvard um paradigma muito
como fizemos aqui última ano e agora este ano,
para que da mesma forma, nós ainda filme mais de palestras do curso em Cambridge
mas torná-los disponíveis mais cedo do que temos no passado
de modo que aqueles de você-- se você gostaria de, por exemplo,
obter uma vantagem inicial sobre os materiais no primeiro fim de semana em vez
que o segundo fim de semana, você terá acesso a esses tipos de materiais,
pesquisável, incorporável, hyperlinkable aos recursos relacionados toda a anterior.
Em termos de temas, para dar-lhe um senso de trajectory-- do curso
e alguns isso pode ser jargão para agora, mas não por muito tempo, a certeza.
Vamos começar hoje, em última análise, com olhar para uma programação
linguagem chamada zero.
Nós vamos fazer a transição depois na próxima semana para algo chamado C
e, em seguida, olhando para outro edifício blocos para resolver problemas,
coisas chamadas matrizes e algoritmos, como podemos usar a memória para a nossa vantagem
e desvantagens, e coisas como estruturas de dados,
e, em seguida, em direção ao fim da cauda da classe olhando para a aprendizagem de máquina
e olhando para outro linguagem chamada Python,
como a web funciona, como a internet mais geralmente funciona, protocolos como HTTP,
linguagens para bancos de dados como SQL, JavaScript para a web,
e, finalmente, amarrando conjuntamente todos esses.
>> E assim, de fato, na final do dia, você
não vai aprender nesta classe zero ou C ou Python ou SQL ou JavaScript.
Você, ao contrário, mais geralmente aprendem ciência da computação e as fundações
do mesmo, e você vai aprender a programar
em qualquer número de estes línguas ao longo do caminho.
Assim, na verdade, um dos objectivos do curso no final
é tirar tudo do curso de rodinhas por aquelas semanas finais
para que, após isso, você pode retornar à sua própria fields--
se isso é ou não ciência da computação
ou engenharia, no natural ciências, artes, humanidades, ou beyond--
e trazer um pouco dessa As ideias de curso e este campo de
idéias e práticas habilidades para o seu próprio domínio
a fim de resolver problemas no seu interior.
>> O que vamos fazer aqui, entretanto, na maioria das quintas-feiras a partir de hoje
é com cabeças do curso conducente o que vamos chamar de orientações
de conjuntos de problemas do curso.
Assim, cada semana quando ter um conjunto de problemas, vamos
estar andando através de uma localização assim desafios do curso,
oferecendo-lhe algumas dicas e truques e técnicas de design.
Mas se você não é capaz para fazer aqueles em pessoa,
realizar esses mesmos recursos serão incorporados
por um do curso de assistentes de ensino
no problema define-se, como bem.
>> O problema define este ano, ao contrário no ano passado, com base no feedback,
ainda será lançado em sextas-feiras.
Mas em vez de ser devido a subsequente sexta-feira,
dando assim você apenas sete dias, será efectivamente devido 10 dias mais tarde.
E, de fato, isto significa que eles vão se sobrepor por um fim de semana.
Mas esperamos que este ano especialmente este será
permitir que os alunos para melhor acomodar fluxo e refluxo em suas agendas,
se é ou acadêmicos extracurriculars ou atletismo
ou a estação de meio termo.
Você pode front-load ou back-load sua semana focando CS50 base
na carga curso real seu próprio semana.
>> O problema coloca-se cobrirá uma variedade de línguas,
porém vamos nos concentrar predominantemente no início em C
antes de se concentrar em seguida em maior nível, mais linguagens web-centric.
E, em seguida, um par de FAQs aqui-- você deve tomar uma classe como CS50
como um primeiro ano?
Então, com certeza.
E, de fato, não é necessariamente algo
você deve adiar até que você tenha cortado os dentes em outros tipos de classes.
Mas em vez disso, considere que, para muitos alunos,
eu incluído para trás no dia, este é um campo muito estranho,
especialmente se você nunca o fez tomar uma CSA AP
ou algo parecido na escola.
Mas percebemos que no início, se é este curso
ou algum outro curso introdutório, agora é realmente o melhor tempo,
Eu acho que, para encontrar algum novo caminho ou algum novo interesse acadêmico, bem.
E, em seguida, levando com outra courses-- Portanto, uma das principais diferenças aqui
contra Harvard é que só tomar quatro cursos por semestre
em Harvard, por algum motivo.
E vocês realmente puxar off alguns 36 cursos no total
ao longo de seus quatro anos, o que significa geralmente quatro ou cinco
classes.
E eu acho que é bastante justo dizer e assumem CS50, pelo projeto, é
provavelmente não o tipo de classe que você deve normalmente
levar com quatro outros cursos para um total de cinco
Série de Exercícios porque são por design bastante intensivo.
Na verdade, eu também aprendi esta de volta no dia.
Eu não descrever CS50 e ciência da computação, programação
como muito difícil que é apenas demorado.
Não é o tipo de coisa onde após o jantar,
pode voltar para seu dormitório sala, sentar e começar
centrando-se na pset pensando, tudo bem,
Eu vou bater este para fora hoje à noite e, em seguida, movimento
no meu próximo assunto no dia seguinte.
Às vezes você apenas bater em uma parede.
Você tem erros em seu código.
Você não precisa necessariamente saber como resolver algum problema.
E uma das principais características do programação para mim até hoje
é que você só tipo de necessidade de tomar um passo para trás, às vezes, dormir com ela
ou pensar sobre ele durante o curso de uma corrida ou alguma outra atividade,
e, em seguida, voltar a ele fresco.
E você só precisa destas janelas de tempo.
>> E, de fato, é por isso que nós temos alongou a quantidade de tempo
disponível para os conjuntos de problemas este ano e também, por que URL
Eu coloquei anteriormente como a que há de novo neste semestre,
aparado o problema define para que eles são fundamentalmente não menos rigorosa,
e os tópicos não são menos, mas há muito menos matéria frente,
muito menos trabalho braçal que você precisa fazer na frente de cada conjunto de problemas,
como você verá, antes que você possa mergulhar de fato na carne dele.
Assim, perceber que esses e outros mudanças estão no horizonte
para melhor acomodar os alunos, mas em última análise para se certificar
que os tópicos são de facto o mais alto possível.
Assim, enquanto mais trabalho do que pode estar em uma classe típica,
esperamos que os retornos para você e os takeaways para você
e as habilidades e idéias com o qual você sair
são ainda mais atraente como um resultado.
E para que você obtenha há-- e este é uma das principais lições,
como Patrick aludiu earlier-- é estrutura de apoio do curso.
Assim, não só CS50 tem um dos as maiores equipes do curso no campus.
Ele também tem um do mais de graduação.
Na verdade, CS50 último ano Foi a primeira classe
ter uma equipe de graduação de ensino.
E a prova disso sucesso fazer agora muitos outros cursos dentro de Yale CS
tem que, como bem.
E para estudantes, especificamente, farão estes ATs e assistentes do curso
apoiando ser um inteiro rede de recursos de suporte,
entre eles secções ou recitações, oportunidades semanais
ter discussões mais íntimos e opiniões de material de abordagem selectiva
para diferentes faixas, para estudantes menos confortável, mais confortável,
ou algures no meio.
Estes irão seguir a disponibilidade de as palestras de vários dias a cada semana
às segundas e terças-feiras.
E então escritório horas-- one-on-one oportunidades
para a ajuda do CAs curso e TAs será às quartas-feiras e quintas-feiras
e domingos, às múltipla vezes, todos os quais
serão publicadas no site do curso, ainda mais do que no ano passado, também.
>> Mas o que é fundamental para CS50, se não reconhecidamente um pouco incomum,
é a cultura do curso que nós tentamos cultivar,
tanto em Cambridge, durante muitos anos e agora mais recentemente em New Haven.
E, de fato, chegando neste Sábado, se você ainda não ouviu,
é o Dia CS50 enigma, que tem nada a ver com ciência da computação
mas é totalmente projetado para enviar uma mensagem que a informática é
sobre a resolução de problemas.
E, de fato, se você gostaria de parceiro com um ou dois ou três amigos
e formar uma equipe para CS50 Quebra-dia, dê uma olhada
aos anúncios que estão no caminho para fora.
E três horas de pizza e puzzles e prêmios aguardam.
E, de fato, para o primeira vez este ano,
ela não será realizada em conjunto com Harvard.
Ele vai estar aqui de forma independente em Yale.
Portanto, mantenha-se atento para aqueles que se você não tem.
A maioria toda sexta-feira no semestre é que vamos tentar fazer uma grande classe
sentir-se pequeno e trazer cerca de 50 alunos para almoçar com o pessoal do curso,
com ex-alunos, amigos da indústria para falar
sobre como é a vida depois de um classe como CS50 e ao longo dos verões
e após a graduação.
Portanto, mantenha-se atento para convites a isso.
Pela primeira vez já este ano nós
realizar a primeira vez CS50 codificação competição, um opt-in opcional oportunidade
meio do semestre, depois de tudo de nós já teve cerca de seis ou sete semanas de programação
no C sob suas correias para competir, se você assim choose-- novamente
em teams-- tentando resolver tantos desafios
como você pode em programação com amigos de vocês contra os outros.
>> E em direção à cauda do semestre o faremos charter alguns autocarros,
realmente passar algum tempo em Cambridge, se você
gostaria de se juntar a nós, para o chamada CS50 hackathon.
No 19:00 nós vamos começar.
Por volta de 21:00, teremos pizza.
Por volta de 01h00, teremos burritos.
E ninguém ainda acordado na ônibus carona para casa por volta das 5:00 AM,
vamos parar para panquecas no IHOP no caminho casa--
uma oportunidade de 12 horas para mergulhar -se com colegas e funcionários
no projeto final do curso, que é uma oportunidade
para ir muito além do conjuntos de problemas do curso
e elaborar e implementar mais qualquer coisa de interesse para você,
que será finalmente caracterizado aqui em Commons.
A primeira feira já CS50 foi o último ano, uma exposição de final de semestre
ou celebração do que todos na classe tinha realizado,
especialmente aqueles, mais uma vez, que passou de nada para algo, de zero a 60,
ter nenhum conhecimento prévio e exibindo, em última análise,
algo para toda a campus e, se on-line, o mundo ver, também.
>> Agora, estas aqui são apenas alguns dos TAs e CAs que faz CS50 possível.
Permita-me convidar qualquer desses funcionários
que estão aqui para chegar no palco, bem como cabeças do curso,
oferecer algumas palavras de inspiração, bem.
>> ANDI: Oi, pessoal.
Vocês podem me ouvir?
Obrigado por se juntar a nós nesta adorável, quinta-feira chuvosa tarde.
Meu nome é Andi.
Eu sou um júnior em Berkeley.
E junto com Stelios e Verão, que será o seu ensinamento três cabeças
assistentes para este próximo ano.
Então, eu acho, demonstração de hands-- quantos de vocês
não têm a intenção de ser um CS grande nem realmente mergulhar profundamente
em ciência da computação como um importante aqui?
Impressionante.
Isso é brilhante.
>> Então, eu sou realmente um dos assuntos globais e ciência cognitiva major.
Eu literalmente veio a Yale com a intenção
de nunca ter que olhar para uma número cada vez mais na minha vida.
Quando vim para Yale, este foi algo que nunca estava no meu radar.
Eu queria aprender sobre poesia.
Eu queria aprender sobre assuntos Internacionais.
Eu queria aprender sobre desenhos em aquarela.
Sim, nós oferecemos uma classe em desenhos de aquarela.
>> Mas eu nunca realmente estava interessado em qualquer coisa STEM relacionado.
Mas, então, quanto mais velho eu ficava, mais eu percebi
que todos os campos realmente em algum sentido emprega ciência da computação,
ou se não ciência da computação, computação.
Na verdade, para o meu mundial projeto de capeamento assuntos,
estamos usando análise de dados para analisar ataques terroristas
para Boko Haram na Nigéria.
E assim como você pode ver, independentemente do que importante você acaba perseguindo
ou o que os seus interesses aqui em Yale são, de programação e as fundações
de tudo o que habilidades são super útil.
E CS50 realmente está bem equipado para tipo de emprestar um monte de seus recursos
para você, independentemente do como você está confortável
ou como você está interessado na prossecução da classe.
>> Verão vai falar um pouco pouco sobre o que vocês estão
vai aprender sobre este ano.
VERÃO: Oi, todo mundo.
Estou Verão Wu.
Eu sou um júnior em Morse.
E eu realmente começou como um estudante CS50 mim.
Assim, três anos atrás, eu estava em um ano sabático.
Eu nunca tinha tido um CS classe na escola,
mas eu pensei que, no meu tempo livre, que seria legal para aprender a codificar.
Então eu fiz uma pesquisa rápida no Google, olhou para o que estava disponível on-line,
e vi este vídeo com os muppets e DJs e sites legal.
Eu estava tipo, eu quero aprender a fazer isso.
>> Então eu fiz o curso, e eu apenas caiu no amor com ele.
Mas eu me lembro de estar tão ciumento do crianças que puderam assistir à maratona hacker,
participar do Dia do quebra-cabeça, participar de escritório horas, começar a ajuda de agências de viagens em pessoa.
E assim eu nunca imaginei que eu teria a chance
estar aqui envolvido em o curso que começou primeiramente
me interessado em computador ciência e é a razão pela qual
Eu sou uma ciência da computação importante hoje.
Então, eu vou avisá-lo, esta classe vai esticá-lo.
Ele vai desafiá-lo.
Mas também vai ensinar-lhe como fazer as coisas
que você nunca imaginou que pudesse.
>> STELIOS: Oi, todo mundo.
Meu nome é Stelios.
Eu sou um júnior em Branford College e um dos principais CS.
Eu também sou de Atenas, Grécia.
Eu estou realmente ansioso para atender a todos vocês,
conversando com você na seção, pelo o horário de expediente, em almoços de sexta-feira.
Estou muito animado, porque nós colocamos muito esforço
para criar um suporte único estrutura para todos vocês
para tornar a sua experiência com o curso o melhor possível.
E eu espero que, embora a maioria dos você provavelmente não ter tomado um CS
Claro antes, eu espero que isso seja CS50 para você é o que acende o interesse
a prosseguir computador ciência no futuro,
como tem feito com tão muitas pessoas no passado.
Então, obrigado por ser aqui, animado para vê-lo.
Jason Hirschhorn.
JASON HIRSCHHORN: Oi, pessoal.
Meu nome é Jason Hirschhorn.
Eu vivo em Silliman.
E eu fui para Harvard como uma graduação e se formou em estudos sociais
e minored em ciência da computação.
E um dos meus papéis principais aqui é apoiar essa equipe maravilhosa
como eles apoiá-lo todo.
Na verdade, este não é de todos eles.
Há 55 alunos de graduação e graduados aqui para apoiá-lo todo.
E ouso dizer que um dos melhores partes do curso para você
tudo está começando a trabalhar com -los, conhecê-los,
começando a vê-los, tanto em CS50 e fora do CS50 este semestre
e para muitos semestres para vir.
Portanto, esperamos que você vai tomar a Claro, porque espero que você
começa a interagir com o equipe maravilhosa que temos no palco.
>> Orador: Bem, deixe-me terminar dizendo que vai ser divertido.
DAVID MALAN: Bem, Graças a toda a nossa equipe.
Permitam-me que diminua as luzes e permitir um pouco mais de nossa equipe,
ambos de Cambridge e New Haven, para dizer Olá como arquivar esses caras.
E depois disso é que vamos fazer a transição para o primeiro dos nossos compromissos de programação
com este linguagem chamada zero.
Assim, graças à equipe.
Vamos diminuir as luzes e ouvir de alguns outros.
>> [Aplausos]
>> [REPRODUÇÃO DE VÍDEO]
>> -A Missão do CS50 é fazer você mais confortável com uma maneira totalmente nova
de pensar, essa mentalidade computacional.
-Ele Fez ciência da computação interessante, que
é algo que eu realmente não percebi foi possível até eu levei a classe.
-Eu Era como, whoa.
Estou realmente traduzir meus pensamentos em um computador agora.
>> -Mesmo Se você não tem qualquer fundo em ciência da computação ou de qualquer experiência,
esta é realmente a classe para você.
>> -Então Eu definitivamente quero meus alunos para apenas
ficar animado sobre a ciência da computação.
Não apenas a programação, mas pensar como um cientista da computação
é realmente o que eu quero tentar ensinar meu primeiro.
>> -CS50 É difícil e gratificante.
>> -Uma experiência.
>> -Extravaganza.
>> -É Nos trazendo para o próximo nível.
>> [REPRODUÇÃO DE MÚSICA]
>> -As TFs são, penso eu, o Força Vital do curso.
>> -Estou Animado para ter meus alunos eu estou ajudando
tem que aha momento para perceber o que eles estão realmente tentando
fazer, para descobrir como fazer um pset.
>> -CS50 É definitivamente um curso difícil.
Mas ao contrário de qualquer outro curso realmente em Yale,
ele tem um tão grande, comunidade de apoio.
-Você Absolutamente não precisa saber nada
sobre a codificação de poder para fazer o curso.
-É Incrível ver o quão longe as pessoas vêm em um semestre.
>> -Você Não estavam sozinhos sentado em seu quarto aprender a código,
mas era mais do que apenas uma classe.
Foi uma experiência.
-A Melhor maneira de aprender conceitos e para processá-los é de ensinar os outros.
>> -O Que é a divisão de telefone?
>> [REPRODUÇÃO DE MÚSICA]
>> -E Este é CS50.
>> [REPRODUÇÃO DE MÚSICA]
>> -Este É CS50.
>> -Tenho um problema?
Rasgá-lo ao meio.
>> [REPRODUÇÃO DE MÚSICA]
>> Jogá-lo fora.
>> DAVID MALAN: Tudo bem.
Então, vamos tackle-- em um pouco bit, aliás, é
sido essa tradição para alguma razão para 10 anos
para servir o bolo na iniciar e o fim do CS50.
Então, esperando por você no final do Hoje em dia, para além de programas de estudo,
será um pedaço de bolo, bem como, e equipe do curso de dizer Olá.
Mas agora, vamos transição para o primeira das nossas línguas, onde
nós vamos passar realmente apenas uma semana e um conjunto de problemas neste domínio, zero.
E você vai encontrar se você tiver programado antes, muitos
das ideias e do possibilidades são familiares para você.
Mas você vai descobrir que é divertido ao longo do caminho
para descobrir exatamente como traduzir algumas das idéias que você já conhece
a este ambiente específico realmente impressionar a sua família
e amigos com o seu trabalho, o que pode ir online, se assim o desejarem, depois.
>> E se você não tem experiência prévia e são
entre a maioria dos alunos menos confortáveis,
perceber que muitas das ideias que apenas explorado com as coisas reality--
como livros de telefone e atendimento e assim por forth-- traduzir
bastante bem a um computador, mas não se você usar,
inicialmente, uma linguagem como esta.
Portanto, este é um programa escrito em uma linguagem chamada C.
E nós vamos gastar um pouco de tempo em C, em última análise.
Mas as probabilidades são, isso vai parecer um pouco criptográficas para você à primeira vista.
Na verdade, há um monte de estranho sintaxe, parênteses, colchetes,
chaves, citações e ponto e vírgula.
E, de fato, se você mergulhar programação pela primeira vez
olhando e tentando criar coisas assim, honestamente, você fica tão atolada
tantas vezes em apenas estúpido minúcia que não tem nada
intelectualmente interessante sobre ele.
>> Mas imagine se você pudesse criar este mesmo program-- que,
como você pode tipo de inferir, provavelmente imprime "Olá, mundo" forma ou de outra.
Nós podemos destilar essa mesma ideia em apenas duas peças do puzzle, se você quiser.
De facto, é interessante arranhões porque é esta linguagem gráfica.
Você pode arrastar e soltar esses peças do puzzle que só interlock
se faz sentido lógico para fazê-lo.
E assim, em risco, que em breve vai ver, este é
Como você poderia implementar essa mesma programa, com apenas duas peças do puzzle
que praticamente fazer o que eles dizem.
>> Mas vamos ver em apenas um momento que alguns dos blocos de construção que aludimos
anteriormente e um pouco mais são tudo o que em última análise, vão constituir
alguns dos nossos primeiros programas.
Nós vamos ter coisas como funções no apenas
ações que fazem algo, como dizer Olá, mundo.
Nós vamos ter loops, coisas que induzem ciclos
novo e de novo, assim como nós fez há pouco com a pesquisa
para Mike Smith.
Variáveis, como na álgebra, se você tem x ou y, que podem armazenar um número.
Bem, em um programa, você pode realmente armazenar mais do que apenas números.
Você pode armazenar palavras e frases e gráficos e outras coisas ainda.
expressões booleanas, apenas perguntas-- sim ou não, verdadeiro ou falso.
Condições, para tomar decisões com base nessas respostas sim / não.
>> E coisas, em seguida, mais extravagantes como array e tópicos e eventos
e qualquer número de outras características, mas todos os quais
mapear muito bem a muito blocos amigáveis ​​como este.
Esta vai ser uma função, um parte do enigma roxo que apenas diz
o que seu nome é-- neste caso, dizem.
E, em seguida, muitas vezes, não há uma caixa branca que você
pode digitar ou arraste algum valor em.
E isso é o que é geralmente chamado de um argumento ou um parâmetro.
É uma maneira de alterar a comportamento padrão de um enigma
peça ou uma função para que ele faz algo personalizado para você gosto de dizer,
Olá, mundo ou Olá, Andy ou Olá, Jason ou alguma outra frase em seu lugar.
>> Se você quer dizer que um lot-- literalmente sempre--
você pode tomar um outro parte do enigma chamado para sempre
e apenas imprensado o dois juntos como este.
E esse ciclo, como a imagem sugere, significa apenas dizer Olá, mundo para sempre,
de novo e de novo e de novo.
Ou, se você só quer fazê-lo um número finito de vezes, como 50 vezes,
lá vai ser um outro quebra-cabeça peça para isso-- repetir 50 vezes.
>> Enquanto isso, se você quiser ter uma variável
nesta língua estamos prestes a jogar com,
você pode usar um bloco de laranja como este.
E esta variável I arbitrariamente chamado i para inteiro.
E eu só defini-lo igual a 0.
E talvez por isso eu, neste case-- este variable--
representa pontuação de alguém em um jogo.
Você começa no zero, e cada vez que você fazer um gol ou algo parecido,
você recebe um ponto adicional.
>> Você pode fazer perguntas em risco.
Se arrastar e soltar quebra-cabeça peças em um momento como este,
você pode fazer perguntas como, bem, é i menos de 50?
Talvez você precisa de 50 pontos para vencer.
E assim que este seria a pergunta que você ia perguntar.
Ou, mais geralmente, você poderia dizer é x menos de y,
onde há duas variáveis ​​envolvidas?
Agora, este é um monte maior à primeira vista,
mas realmente não tudo o que mais complexo.
>> Esta é apenas uma combinação de condições e variáveis
e expressões booleanas para perguntar três perguntas-- x é menor que y?
Se assim for, digamos assim.
Digamos, x é inferior a y.
Logo, se x é maior do que Y, o resto X deve ser igual a y.
E que com Mike Smith, havia quatro cenários, aqui
no mundo dos números, x ou é inferior a, maior do que, ou igual a.
Tudo o que temos são três garfos na estrada.
E depois há mais extravagante peças do puzzle como este
para coisas como matrizes, onde estamos vai ser capaz de armazenar informação.
Vamos ver blocos que permitem -nos a implementar vários segmentos,
Outra característica que vamos usar e então também algo chamado eventos.
Mas antes de chegar a esse ponto e criar ainda,
em última análise, o nosso próprio costume partes do enigma, vamos
realmente abrir o próprio programa.
>> Portanto, esta é zero.
Está disponível em scratch.mit.edu.
E você é bem-vindo para jogar agora ou mais tarde, também.
Isto acontece por ser a versão offline.
Para as pessoas que não o fazem necessariamente tem grande internet,
você pode baixar a mesmo software, bem.
E não há realmente apenas três componentes para este software.
No canto superior esquerdo da a tela é o tipo de estágio
que zero, que por padrão se parece com um gato, vive dentro.
Ele pode mover para cima, baixo, esquerda e direita e fazer qualquer número de outras coisas,
e pode olhar para qualquer número de formas baseadas sobre os trajes que você atribui a ele.
Mas isso é o que vamos chamar um sprite, uma espécie de personagem.
E você pode ter múltiplos caracteres, como veremos em breve.
>> No meio estão agora todos estes quebra-cabeça peças e estas categorias ou paletes
dos mesmos.
Então, agora, eu cliquei em Movimento.
E assim eu estou vendo todo o movimento relacionados com peças do puzzle ou blocos,
assim funções que têm a ver com ir para cima,
para baixo, para a esquerda ou para a direita ou alguma outra operação.
Mas se eu cliquei em Looks, você podia ver coisas como o bloco digamos
que vimos apenas um momento atrás.
E se eu clicar no controle, você verá coisas como a repetição ea sempre
e se o bloco que vimos um momento atrás.
>> E assim você vai encontrar que vamos arranhar
a superfície de alguns dos quebra-cabeça pedaços juntos,
mas é tudo bastante intuitiva e apontar e clicar.
Com efeito, foi concebido arranhões para os estudantes mais jovens
para ajudar a dar-lhes uma saída para o pensamento criativo.
E ainda assim maravilhosamente, é uma pedra maravilhosa stepping
exatamente as idéias que vamos explorar em C e Python e JavaScript,
também.
>> Do lado da mão direita, finalmente, aqui este é, a assim chamada zona de scripts.
E esta é apenas a tela em branco com que você começa a escrever um programa.
E eu vou exatamente isso.
Agora, acontece que eu sei onde as coisas são porque eu fiz isso algumas vezes.
Mas eu sei que, sob a categoria Events,
há essa aqui-- bloco quando a bandeira verde clicado.
E observe se eu diminuir o zoom e volta aqui no palco,
vidas scratch dentro desta pequeno mundo rectangular,
no topo de que é um verde bandeira e um sinal vermelho.
Então vá e parar, respectivamente.
>> E então o que eu quero fazer quando a bandeira verde é clicado?
Bem, deixe-me ir para o que parece categoria.
E deixe-me ir em frente e arrastar e soltar isso.
E note, logo que ele fica perto, eles são tipo de magnético.
Então, se eu agora deixar ir, que ele se encaixe em conjunto agradável e limpa.
E eu estou indo para ir em frente e dizer algo como Olá, mundo
durante dois segundos.
Deixe-me diminuir o zoom e clique agora bandeira verde, e dizer: Olá, mundo.
Tudo certo.
Então, isso é tudo muito bem e bom.
Nem tudo o que emocionante.
Vamos torná-lo um pouco mais bonito.
E eu sei que em antecedência, risco acontece
para vir com algumas coisas fofas como este.
Então, jogar miado de som até feito.
Então, vamos fazer isso.
>> [MIAU]
>> Aw, isso é adorável.
E se eu clicar nele novamente--
>> [MIAU]
>> E de novo.
>> [MIAU]
>> Mas eu continuo tendo de reanimar zero.
Mas eu posso fazer melhor do que este.
Por que eu não basta arrastar três destes.
E agora é três vezes mais adorável.
>> [Miando]
>> OK, na verdade, é um pouco assustador.
Então, precisamos de algo entre lá.
Se eu for a de controle, parece que há realmente um bloco de espera.
E assim perceber se eu passar o mouse sobre há-- e deixe-me fazer esta um pouco maior.
Se eu passar o mouse, ele vai para encaixar no lugar.
Então, espere um segundo, espere um segundo.
Vamos bater bandeira verde novamente.
>> [Miando]
>> OK, um pouco mais natural, mas não muito eficiente.
Então, isso é correto se o meu programa de meta foi meow três vezes.
Mas não é muito bem concebido.
Eu meio que cortar alguns cantos.
Eu tenho um pouco preguiçoso.
O que se sente como-- o que me parece ter feito mal, que você diria?
Sim?
Sim, no meio.
AUDIÊNCIA: Usado mais memória do que o necessário para
porque você está usando tantos linha diferente.
DAVID MALAN: Sim, por isso mais linhas.
E não seria necessariamente memória, embora possa ser visto como aquela forma.
Mas é definitely-- há redundância.
E eu literalmente tipo de arrastado e deixou cair as mesmas coisas.
E se você tipo de extrapolate-- se não é óbvio aqui-- bem, como seria
Eu meow 30 vezes?
Gostaria de arrastar e soltar, como, mais 30 pares de peças do puzzle.
E, certamente, há uma maneira melhor.
E temos visto uma maneira melhor.
O que intuitivamente seria ser o melhor caminho?
Sim, basta usar um loop.
Não copiar e colar.
E, de fato, a qualquer momento presente semestre, se você começar
encontrando-se arrastando e soltando, ou realmente copiando e colando,
perigoso hábito de entrar, porque este não é apenas muito fácil de manter.
Por exemplo, se eu quero mudar o som para outra coisa,
Eu tenho que mudá-lo agora, em três locais, em vez de apenas um.
Uma vez que, de facto, se eu quebrar este away-- estou
indo só para dissociar-lo assim.
Deixe-me pegar um bloco de repetição e clique em três, digite três,
jogue alguns destes afastado por apenas deixar ir.
E, em seguida, perceber que Não parece que ele se encaixa,
mas magneticamente, ele vai não só encaixar no lugar
mas crescer para se ajustar à forma.
Então, isso é bom.
E agora se eu clicar jogo.
>> [Miando]
Muito agradável.
Tudo certo.
E agora é muito fácil mudar, também, porque eu só posso
alterar um número em um só lugar.
Mas isso, também, não é tudo o que interessante.
Vamos realmente ter Zero não miar, mas se mover.
Deixe-me ir para o Movimento e mover 10 passos dentro de-- gritos, deixe-me corrigir isso.
Deixe-me tê-lo mover 10 steps-- na verdade, vamos não repetir.
Deixe-me pegar um bloco de controle, e faça o seguinte para sempre.
Para sempre, mover 10 passos.
E clique em Executar.
>> ESTÁ BEM.
Então, felizmente, ele pára.
Caso contrário, as crianças se ficar muito chateado quando eles tipo de perder o seu gato.
Mas pelo menos eu pode arrastar -lo de volta para a tela.
Mas isso não é tudo o que grande de um jogo ou animação.
Seria bom se talvez ele saltou para fora da borda.
Então, o que fazemos?
O constructo que precisamos ter Raspe decidir saltar, você acha que,
mesmo se você nunca visto zero antes?
Sim, na parte de trás.
AUDIÊNCIA: Você precisa de um Se bloco ou if-then.
DAVID MALAN: Sim, por isso, alguns tipo de bloco if ou if-then.
Então, na verdade, temos um desses aqui.
Então se-- então deixe-me começar livrar do movimento.
Deixe-me fazer zoom por isso é maior.
Assim como sobre isso.
Para sempre, se Sensing-- nós não temos visto isso antes.
Eu preciso de uma expressão booleana.
E verifica-se se tocar o quê?
Se tocar a borda, o que eu quero fazer?
Bem, se eu voltar para a Câmara, Acontece que, oh, eu posso virar.
Deixe-me arrastar esta aqui.
Por que eu não vá em frente e virar 180 graus?
>> E agora, deixe-me mover-se no final.
Eu poderia colocar o movimento na o início ou o fim.
Mas, logicamente, cada vez que eu passar, eu pretende verificar, estou tocando a borda?
Eu estou tocando a borda?
Assim que, logicamente, eu me viro em caso afirmativo.
Então, vamos bater o jogo.
>> ESTÁ BEM.
Por isso é um pouco de buggy, por assim dizer.
E um erro é apenas um erro em um programa de computador.
Mas pelo menos ele está trabalhando.
E, de fato, eu posso ir aqui.
E deixe-me torná-lo não 10 passos de cada tempo, mas isso é tudo animação é.
Isso tudo é um desenho animado ou mesmo um filme é.
Deixe-me mover 20 passos de cada vez.
Então, 20 vezes como muitas coisas estão acontecendo uma vez ou duas vezes mais, neste caso.
E ele está se movendo mais rápido.
Deixe-me mudar para 30.
100.
1000.
E está indo muito rápido.
E isso é-- sim, OK.
>> Então, agora nós estamos apenas brincando com ele.
OK, então buggy.
Mas podemos arrastá-lo para fora do caminho aqui.
Mas podemos fazer mais divertido com isso, também.
Como cerca de isto-- ele está de cabeça para baixo.
Mas acontece Scratch-- e não há, na verdade,
Eu tenho que assumem, não acadêmica valor para o que eu estou prestes a fazer.
Mas se eu abrir o microfone, vamos detê-lo e fazer algo assim.
Ouch!
>> [RIR]
>> Isso foi adorável.
Obrigado.
Agora, isso é o que a minha voz Parece que quando eu gritar ouch.
Eu não acho que pegamos o seu riso.
Isso está ok.
Deixe-me salve como "ai".
Vamos guardá-lo como "ai".
E agora vamos voltar para Scripts.
E agora eu need-- vamos ver, Sound.
Oh, jogar ouch som.
Então, se eu estou tocando a borda, deixe-me primeira ouch jogo, e depois virar.
E agora vamos colocá-lo no meio.
>> [Dizer "ai"]
>> Duas vezes mais rápido.
>> ESTÁ BEM.
Mas é literalmente fazendo o que estou dizendo.
Por isso, é de fato correta, é apenas um pouco chato rapidamente.
Então vamos acrescentar algo mais interessante a este.
Deixe-me realmente abrir um que eu feitas com antecedência,
apropriadamente chamado Pet o Gato, que faz isso.
Aqui está o script aqui.
O que é que isto vai fazer em termos ingleses?
O que é isso projetado para fazer?
Sim, vamos some-- sim?
>> AUDIÊNCIA: Quando você acariciar o gato, ele mia.
DAVID MALAN: Sim, por isso, quando você acariciar o gato, ele vai miar.
Portanto, em outras palavras, há agora um loop para sempre ainda, combinado
com uma condição, combinada com uma expressão booleana,
combinado com um par de funções, o efeito
de que, uma vez que eu toco este programa, não é nada
acontece até que eu mover o cursor cada vez mais perto e mais perto e-
>> [MIAU]
Então é como acariciar o gato.
[MIAU]
Apenas uma vez que você realmente mova o cursor sobre ele.
Agora, eu também instigou não pet o gato, que faz isso em vez.
>> [Miando]
>> Então, ele está apenas constantemente miando.
>> [Miando]
>> Mas se eu ficar muito close--
>> [Miando]
>> [RUGIDO]
>> Então, como isso funciona?
Agora eu só tenho um Bidirecional bifurcação na estrada.
Se tocar ponteiro do mouse, em seguida, reproduzir o som leão.
Else apenas reproduzir o som meow, e depois esperar três segundos para
que é uma espécie de fazer muito tranquilamente.
Tudo certo.
Então essa é a combinação mais algumas ideias fixas.
Vamos dar uma olhada neste exemplo Eu chicoteado até chamadas threads.
E este é fundamentalmente diferente, já que aproveita
uma característica de muitas linguagem de programação chamada
tópicos, a capacidade de um programa de literalmente fazer duas coisas ao mesmo tempo.
Na verdade, estes dias se você estiver usando Google Docs ou o Microsoft Word,
e seu documento está constantemente sendo verificadas ortograficamente, mesmo que você type-- ou você
pressione Ctrl-P ou Control-P e algo de impressão,
está imprimindo enquanto você continuar a escrever.
Programas de hoje pode realmente fazer múltipla coisas ao mesmo tempo, assim como em risco
Aqui.
>> Então, aqui, tenho duas sprites agora, um pássaro e um gato.
E se eu clicar em cada um dos Os caracteres em um de cada vez,
Vejo agora o pássaro de roteiros na direita superior.
Agora eu vejo o gato.
Pássaro, gato.
Então, cada um deles tem seu próprio script.
Mas o aviso prévio, o que parte do enigma que ambos começar?
Quando a bandeira verde clicado.
E pássaro, quando a bandeira verde clicado.
Então, quando eu clique na bandeira verde, ambos os scripts ou programas
vão correr em paralelo.
E você notará que o pássaro é apenas estupidamente saltando para fora da borda.
O gato claramente foi programado com uma vantagem estratégica.
E--
>> [RUGIDO]
Tudo certo.
Assim o gato pegou o pássaro neste caso.
Por que é que?
Bem, primeiro edital só temos o pássaro apenas descuidadamente indo
para este local inicial, e em seguida, sempre,
se não tocar o gato, basta mover.
E se você está na borda, saltar.
E apenas mover.
E se você está na borda, saltar.
Mas o gato, enquanto isso, tem alguma lógica adicional
que diz isto-- primeira, só assim que este não é completamente tendenciosa
contra o pássaro, perceber que eu tenho usou uma peça do puzzle verde lá
que realmente escolhe um número aleatório.
Uma característica de muitas línguas é dar você números aleatórios ou pseudo-aleatórios.
Portanto, neste caso, o gato inicialmente escolhe um número aleatório entre, como,
90 graus e 180 graus, essencialmente, de modo
que há um pouco de variância.
E, em seguida, para sempre, se tocar o pássaro, reproduzir o som leão.
Caso contrário, basta apontar para o pássaro.
Apontam para o pássaro.
Apontam para a ave, que é um parte do enigma em si mesmo neste caso.
Bem, nós podemos fazer uma outra coisa aqui.
Deixe-me abrir o programa eventos aqui.
E aqui temos novamente dois sprites, que se parecem com estes dois bonecos aqui.
E o que é interessante aqui é isso.
O cara laranja tem isso conjunto de peças do puzzle aqui.
Sempre fazer o following-- Se a barra de espaço é pressionado,
em seguida, dizer, Marco, e em seguida, transmitir um evento.
E enquanto isso, o cara azul tem aqui isto-- quando receber o evento,
dizem Polo.
Assim, verifica-se em risco e em outras línguas,
existem maneiras para dois programas ou dois scripts, neste caso,
a intercomunicação de modo que quando eu pressione a barra de espaço, ele diz Marco.
E o outro ouve que, por assim falar, e diz Polo em resposta.
Assim, você pode escrever programas que realmente interagir desta maneira.
E se eu fizer isso uma vez, Eu até posso adicionar variáveis,
apenas usando um sprite no presente caso.
Este é especialmente irritante.
>> [BARKING SEAL]
>> Agora, observe no lado direito temos alguma lógica adicional aqui.
Como faço para parar este selo de latir?
>> [BARKING SEAL]
>> Parece que na mão direita lado é o que há de tocar o som.
Mas é só jogar um soar se o que é verdade?
Se um laranja variable-- block-- silenciado é zero.
Como faço para mudar silenciado para ser 1, ou seja verdadeiro, fazer este silenciado?
Aparentemente, o outro roteiro, eu posso pressione a barra de espaço, e agora ele pára.
Assim, podemos ter esta intercomunicação através de scripts, assim,
por apenas compartilhar uma variável do outro lado os dois como este.
Agora, isso não é tudo o que interessante.
Vamos ir em frente e fazer isso e combinar muitas dessas ideias com este programa
Aqui.
Antes de fazer isso, porém, Como cerca de um voluntário?
Deixe-me tirar a pressão de mim porque eu realmente não
joga este jogo.
Vamos ter alguém que não tenha visto antes.
Você tem que ser confortável vindo no palco aqui, diante das câmeras.
OK, vamos lá para cima.
Muito valente.
Qual o seu nome?
>> IDRIS: Idris.
DAVID MALAN: Desculpe?
IDRIS: Idris.
DAVID MALAN: Idris, prazer em conhecê-lo.
Vamos lá para cima.
E agora, em seu próprio celular telefone, você joga Pokemon ir?
>> IDRIS: No.
DAVID MALAN: Sério?
IDRIS: Yeah.
DAVID MALAN: OK.
Tudo certo.
Bem, prazer em conhecê-lo.
Venha aqui.
Eu também não.
Então, vamos descobrir juntos como jogar este, que alguém realmente
fui e implementado em risco alterando o gato para essencialmente
personagens diferentes todos juntos.
E se eu fullscreen isso aqui, vamos
para ver o seguinte jogo juntos.
Ainda carregando, ainda que carrega.
Vamos.
Deixe-me fazer isso.
Vamos.
Este jogo é tão grande que ele caiu.
Espera.
Tente isto mais uma vez.
Vamos.
Tudo certo.
>> Aqui vamos nós.
ESTÁ BEM.
bandeira verde.
Então, vamos lá.
>> [REPRODUÇÃO DE MÚSICA]
>> Escolha o nível médio aqui.
Clique no indivíduo azul lá.
Tudo certo.
E você pode usar a seta keys-- cima, baixo, esquerda, direita.
Agora, vamos considerar como fazemos isto-- e depois ir depois que o personagem lá.
Sim.
E agora, clique nele com o mouse.
Oh sim.
Mover.
Onde está a flecha?
Aqui está.
Então clique lá.
Sim.
Tudo certo.
Então, agora, eu disse que você tem uma Pokébola, que, se clicar nele, ele vai fazer isso.
Muito bom.
Na prática por hoje, encontrado esta versão do jogo de
na verdade, não é muito difícil.
Então, se você quer ir de novo aqui, caminhar até esta Pokébola.
E, em seguida, ir tomar um direito.
Experimente clicar sobre ela.
Oh, na verdade, isso é a loja, aparentemente.
OK tão perto disso.
Nunca fiz isso antes.
Talvez ir até esta coisa aqui.
Oh, lá vai.
Espere, há uma lá.
Oh, não há outra.
ESTÁ BEM.
Baixa.
Sim, clique em.
>> OK, isso é muito bonito.
OK, muito bem feito.
Este jogo não é muito difícil.
ESTÁ BEM.
Parabéns.
Aqui, temos uma CS50 bola de stress para você.
Mas considere por um momento que alguns dos tópicos estão lá.
Mais fácil do que o jogo real, aparentemente.
Mas todos temos em curso aqui é um personagem
que provavelmente tem algum tipo do circuito associado com ele.
Não é um gato.
É esse personagem em seu lugar.
E esse ciclo é apenas constantemente dizendo, se seta para cima pressionado,
se seta para baixo pressionada, se seta para a esquerda ou para a direita pressionado
arrow pressionado, mover para cima ou para baixo ou para a esquerda ou para a direita.
Ou se há uma outra parte do enigma lá que diz ao tocar outro sprite,
ao tocar um dos personagens a Pokébola, se tocar,
em seguida, fazer isso.
>> Assim, todas as idéias que temos vindo a utilizar até agora realmente
pode apenas ser aplicado nesse particular contexto para jogar este jogo, também.
Deixe-me ir em frente e puxe -se um outro aqui, na verdade.
Deixe-me ir em frente e puxe -se, digamos, isso.
Isso é algo que remixado.
Feito por um dos nossos estudantes em Cambridge,
e então eu passei e mudou praticamente todas as instâncias de Harvard
para Yale este tempo.
Será que alguém gostaria de competir contra os Ivies
aqui em outra acumulação de todas essas idéias?
Venha, sim.
Qual o seu nome?
>> DINA: Dina.
>> DAVID MALAN: Adina?
>> DINA: Dina.
>> DAVID MALAN: Dina, vamos lá para baixo.
Tudo bem, Dina.
Portanto, este jogo fica mais mais difícil, porque neste jogo,
há variáveis ​​que estão sendo utilizados, bem que estão constantemente a manter o controle
de que nível você está no jogo.
Tão bom te conhecer.
Vem por aqui.
E assim, o objetivo aqui é classificar de fazer o seu caminho através de um labirinto
que este estudante implementado.
>> E só para definir o cenário, cada destas imagens na tela
é a sua própria sprite, o seu próprio carácter.
Então, esses foram por gatos padrão, mas o estudante mudou-los
para os diversos logotipos heras aqui.
E então você verá que apenas usando condições e loops
e as funções e muito mais, você tem isso.
>> [REPRODUÇÃO DE MÚSICA]
[MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Sim, ok.
Sim, continue.
Primeiro é muito fácil nível.
Você apenas tem que ir lá.
Mas, novamente, considere, este é apenas um loop de ouvir a seta keys--
cima baixo esquerda direita.
E agora um bloco de detecção.
Muito agradável.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Muito agradável.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Muito agradável.
Muito fácil, carmesim.
Tudo certo.
Levels-- uh-oh.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> E, novamente, nestes três cristas de Harvard,
você só tem lógica dizendo se na borda, salto.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> OK, o que você está fazendo é mais interessante do que isso.
Muito agradável.
Uh-oh.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
Eu acho que você tem que sacrificar-se.
[MUSIC - MC Hammer, "U não pode tocar ESTA"]
Rápido!
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
Agradável.
Isso está ok.
Você vai buscá-la.
Sim sim!
Muito agradável.
>> [APLAUSO]
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Agradável!
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
Entendi.
Vamos!
Segundo ao último nível.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Tudo certo.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
Sim.
Bom uso de variáveis ​​aqui.
[MUSIC - MC Hammer, "U não pode tocar ESTA"]
Sim.
[MUSIC - MC Hammer, "U não pode tocar ESTA"]
Agradável.
[MUSIC - MC Hammer, "U não pode tocar ESTA"]
Está certo.
Temos de chegar ao fim.
Lá.
Oh!
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Pode executar tarde hoje, mas que vai valer a pena.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Você pode fazê-lo!
sim!
>> [APLAUSO]
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Este é realmente difícil.
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Vamos dar-lhe mais duas vidas.
Consegues fazê-lo?
>> [MUSIC - MC Hammer, "U não pode tocar ESTA"]
>> Tudo certo.
Como sobre uma grande rodada de aplausos, no entanto.
Você chegou ao segundo ao último nível.
Obrigado.
>> [Aplausos]
>> Portanto, esta é apenas para dizer o quanto você pode fazer com estes tipos de coisas.
E perceber, também, que quando peças do puzzle não exist--
e, na verdade, isso vai ser um das potências com o primeiro problema
conjuntos e é beyond-- realmente criar o seu próprio.
E este é apenas um trecho de um dos exemplos
você vai ser capaz de jogar com online, onde
se você não ter construído em risco algo como uma peça de quebra-cabeça da tosse,
você pode realmente fazer isso sozinho.
>> E então tudo isso e muito mais espera.
E só para pintar uma final foto de fato o que é
à frente na loja para a classe para você, baseado em algumas fotos de colegas
passado, permitam-me que diminua as luzes uma última vez e mostrar-lhe CS50.
>> [REPRODUÇÃO DE MÚSICA]
>> Tudo certo.
Isso é tudo para CS50.
O bolo é agora servido.
>> [REPRODUÇÃO DE MÚSICA]