[Música] [ Música] ele [Aplausos] olá mundo, aqui é cs50 A introdução da Universidade de Harvard aos empreendimentos intelectuais da ciência da computação e à arte da programação lobo lobo Sinto muito, Dave, e quanto a nós, luzes arees que podemos ver no escuro nós somos foguetes apontados para o início, no início, somos bilhões de lindos corações e você, então nós, rio abaixo, longe demais, e quanto a Todos os T, você disse que você é a resposta, e quanto a nós, e quanto a todos os gr de Happy Ever After e sobre tudo e sobre [Música] tudo
bem, então Esta é a introdução da cs50 Harvard University aos empreendimentos intelectuais da ciência da computação e à arte da programação e este é o local e nossos agradecimentos aos nossos amigos do 3D Cowboys por trazer ele na aula hoje, talvez uma salva de palmas para nosso professor especial gu, meu nome é David M e na verdade eu mesmo fiz essa aula cs50 há alguns anos, mas quase não fiz e não fiz porque quando cheguei ao campus pela primeira vez Ano eu realmente gravitei em torno de coisas já familiares com as quais eu já estava
confortável, especificamente governo, e vim aqui pensando que iria me formar ou me concentrar em governo e foi só quando cheguei ao segundo ano, semestre de outono, que alguns amigos meus estavam vindo para esta aula chamada cs50, era muito preciso ter cuidado na época, pois era um campo desconhecido para muitos de nós, inclusive, mas eu meio que criei coragem Para ultrapassar o limite, sentar na primeira aula para fazer compras por assim dizer e fiquei viciado, descobri que pela primeira vez o dever de casa foi divertido e isso foi depois de me matricular apenas porque o professor
me deixou matricular, passar, reprovar ou sentar no set porque eu realmente não achava que conseguiria cortá-lo mas avançando para umas cinco segundas-feiras no final do semestre, na verdade mudei para uma nota de letras decidindo uau, isso é realmente algo para mim e digo isso porque Ciência da computação, o que eu não sabia sobre isso na época, é realmente um propósito muito geral maneira de pensar e maneira de resolver problemas e mesmo que esta seja a única aula de CS que você já fez, mesmo que este seja o único treinamento formal que você tem em programação
Pro, é uma habilidade prática, é tão aplicável a tantos outros campos das Artes, Humanidade ciências sociais Ciências Naturais e Além e certamente dentro do próprio campo de tronco que disse que muitas vezes vai Parecer algo assim isso é de nossos amigos do MIT na estrada que uh é um de seus hacks por meio do qual eles conectaram um hidrante a um bebedouro com uma pequena placa lá que diz que obter educação no MIT é como beber de uma mangueira de incêndio, o que significa que muitas vezes nesta aula também parecerá que há muita informação e
você não consegue absorver tudo, mas perceba que isso é esperado, Especialmente em uma aula introdutória, o objetivo é que muito disso pareça novo, mas com a prática, com o tempo, com anos, mesmo olhando para trás, você ficará ainda mais confortável com o material, mas você ' não foi feito para se sentir confortável ao longo do caminho, então deixe-me encorajá-lo, convidá-lo, esperar que você se sinta confortável, sentindo-se desconfortável ao longo do caminho, quer você tenha ou não experiência anterior em ciência da computação ou programação, na minha época, o Programa da aula era um pouco um pouco
diferente e realmente quando eu e todos os meus colegas saíamos da aula diríamos aos amigos que aprendemos a programar em C que é uma linguagem que nós mesmos ainda aprenderemos nesta aula mas isso foi tudo para linguagens mas hoje em dia como você veremos que exploraremos não apenas essa linguagem mais antiga chamada C, mas uma linguagem mais moderna chamada python, que é muito popular para ciência de dados e aplicativos da web e muito Mais, mas também apresentaremos a você outra linguagem chamada SQL ou SQL, que é específico especificamente para bancos de dados e sqls, um
tipo diferente de linguagem de programação que fornecerá diferentes maneiras de resolver problemas, diferentes blocos de construção para expressar problemas que você deseja resolver, apresentaremos a você no final do semestre, mas mais uma linguagem JavaScript frequentemente usada com linguagens de marcação chamadas HTML e CSS com a qual talvez você tenha alguma experiência se já criou sites, mas faremos isso porque muitos dos softwares atuais do mundo real são baseados na web ou em dispositivos móveis baseado, mas mesmo assim ele usa as mesmas linguagens como JavaScript e, portanto, no final do cs50 em particular, você não saberá como
programar em X, Y ou Z em si, mas ponto final, aprenderá como programar e, de fato, entre os objetivos desta aula é equipá-lo com um conjunto de Conceitos suficientes, habilidades práticas e experiência suficientes para que, depois do cs50 novamente, se você nunca fizer outra aula de CS, você possa aprender novos idiomas e não sentirá que não dependerá de uma aula para realmente apresentar a você cada uma dessas idéias e o que faremos nesta aula e realmente o que vamos começar a fazer hoje, bem, vamos aprender como resolver problemas e é isso que realmente ciência da
computação tem tudo a ver, Hoje vamos fazer algumas tarefas muito especificamente, aprenderemos como representar coisas simples como números, aprenderemos como representar letras de um alfabeto como o inglês, aprenderemos como representar cores vermelho verde azul e tudo mais, aprenderemos como representar imagens completas de maneira mais interessante que você pode ver na web ou em seu telefone, falaremos sobre a representação de vídeos e até mesmo arquivos de áudio, então só no final de hoje você Sairemos aqui com um novo modelo mental de como você pode representar toda a mídia e multimídia de hoje que consideramos naturais e
usamos mais todos os dias, mas também nos concentraremos hoje, em última análise, em como escrever algoritmos como passo a passo instruções passo a passo para resolver algum problema, implementando especificamente algoritmos com código e é isso que descobriremos que um algoritmo é apenas algo que você pode expressar em inglês ou em qualquer linguagem humana, mas o código É uma tradução disso para presumivelmente os zeros e uns que você tem provavelmente ouvi é tudo o que os computadores falam e se você está sentindo que isso é muito por hoje, se você está sentindo que isso é muito
para o semestre inteiro, perceba e sinta-se confortável em saber que 2 terços de vocês nunca fizeram um curso de ciência da computação antes então, mesmo que você pense como eu pensei há tantos anos, certamente meus amigos, as crianças que eu nem conhecia na classe, devem saber mais do que tenho Programado desde que eles tinham seis anos de idade, esse não é o caso, você estamos em muito boa companhia e dentro da aula você encontrará faixas diferentes por meio das tarefas de casa chamadas Conjuntos de problemas por meio das seções ou recitações, haverá faixas diferentes para
aqueles que estão menos confortáveis, mais confortáveis em algum lugar no meio e se você realmente não sabe por que está aqui hoje, teremos até seções para aqueles menos Confortáveis, onde você simplesmente não se sente necessariamente pronto para mergulhar no CS ou talvez se aprofundar de forma mais geral, mas nós o levaremos lá por meio de a estrutura de suporte do curso e está muito fundamentada nessa mentalidade, o que importa nesta aula não é tanto onde você termina em relação aos seus colegas de classe, mas onde você termina em relação a si mesmo quando começou, se
você tem ou não programação anterior ou experiência em CS, não vai Importar quando se trata de avaliação, quando se trata do resultado, seja uma nota ou uma nota satisfatória, eles gostam, vai depender de onde você está hoje neste que chamamos de semana zero, hum, versus o muito final do semestre, quando você terá construído algo grandioso em software, mas o cs50 também é caracterizado de forma bastante única por sua comunidade, sua cultura e ao longo do caminho você verá que sua experiência é pontuada por Muitos aspectos sociais e acadêmicos eventos semelhantes, almoços cs50, quase todas as
sextas-feiras, nos reuniremos em um restaurante próximo chamado Chang show, onde almoçaremos chineses juntos e quantos de vocês quiserem comparecer naquela semana poderão se juntar a nós, sentar e conversar casualmente com eu, os cursos, professores, amigos nossos, ex-alunos da indústria, também, um dia de quebra-cabeça cs50 que está chegando neste fim de semana será uma oportunidade, mesmo se você não tiver experiência anterior em CS, Apenas para resolver problemas, não quebra-cabeças, mas quebra-cabeças no sentido lógico, nós vamos entregar a vocês um pacote de quebra- cabeças, problemas lógicos ou enigmas ou algo parecido que vocês, como equipes, podem resolver
juntos e, no final, nós os orientaremos e ao longo do caminho não haverá apenas esses quebra-cabeças, mas pizza e prêmios e assim muito mais também, no final do semestre, teremos um hackathon cs50, no qual nos reuniremos por volta das 19h. uh, no Início do período de leitura e terminaremos por volta das 7h da manhã seguinte e será esta oportunidade de realmente se relacionar com seus colegas de classe, seu projeto Parceiros se você trabalhar em equipe em seu próprio projeto final, o que significa para ser a pedra angular do curso, algo que vocês mesmos constroem e
para o qual não fornecemos uma especificação, mas é uma espécie de sua conclusão final, para que quando você sair do cs50 você não precise mais do cs50, você não precisa de mim, você não ' Se você não precisa do seu TF, Você pode realmente escrever código e resolver problemas sozinho, então esta foto aqui é uma de nossas fotos anteriores, uh, do início da noite, as coisas ficam um pouco mais calmas quando chegamos por volta das 5h. enérgico para um IHOP próximo para comer panquecas por volta dessa época, mas é assim que a maioria das noites
tende a terminar para pelo menos alguns de seus colegas de classe antes, mas bem no final da aula é a chamada Feira cs50, uma exposição de todos os seus Projetos finais para amigos, alunos, professores e funcionários em todo o campus, onde você será convidado para um espaço como este, traga seu laptop, traga seu telefone, tudo o que você construiu e criou e nós apenas mostraremos isso por um pouco da tarde completa com música e amigos da indústria e doces e tudo o que faz, uh, reunir termos e fundos e você usará com muito orgulho, esperamos
que seja o seu. Peguei o cs50 afirmando com muita naturalidade o que Fiz há alguns anos que de fato isso foi um curso que eu mesmo fiz, então hoje vamos nos concentrar na ciência da computação, como é, bem, é realmente como o estudo da informação, mas na verdade é mais especificamente sobre a resolução de problemas usando certas idéias e técnicas com as quais você sairá do curso como tal resolução de problemas é uma tecnologia é um objetivo que será abordado por meio de algo chamado pensamento computacional, então pensamento computacional você pode Pensar de forma simplista
sobre isso como pensar como um computador, mas é realmente a aplicação de ideias que iremos mergulhar hoje e terminaremos daqui a algumas semanas que você pode aplicar em problemas deste campo quase qualquer outro mas de uma forma computacional que é muito metódica e muito cuidadosa e foi isso que o CS realmente fez por mim e faz por muita gente isso ajuda a limpar seus processos de pensamento, mesmo se você for para o mundo real E não fizer nada em tecnologia, você terá a capacidade, depois de aulas como essa, de se expressar um pouco mais corretamente,
com mais precisão e, geralmente, ter melhor controle de suas próprias ideias e sua linguagem então o que é resolução de problemas deixe-me propor que é assim é tão simples quanto podemos fazer com que as metas de hoje e as metas do semestre os problemas a serem resolvidos fiquem assim você tem alguma contribuição o problema a ser resolvido você tem uma meta é a saída como A solução também e então em algum lugar no meio está o molho secreto onde passaremos as próximas semanas descobrindo como podemos converter essas entradas em saídas, mas antes de podermos fazer
isso, todos nós meio que tenho que concordar sobre como representar essas entradas e saídas, seja em inglês ou em qualquer tipo de idioma, mas como eu estraguei antes, você provavelmente já chegou aqui com uma sensação geral de que sim, os computadores de alguma forma só falam ou Sabem zero e uns o assim- chamado de sistema binário, mas essa é apenas uma maneira de representar informações ainda mais simples do que o binário é unário, então se você já contou nos dedos nesta idade ou em qualquer idade anterior, esta é uma notação unária em que cada um
dos seus dígitos, seus dedos representam literalmente algum informação tomando frequência como 1 2 3 quatro cinco mas na sua mão humana até que ponto você consegue contar nesta Notação unária cinco estou ouvindo cinco seis ouvi um seis mas vou além e digo a resposta se você é esperto sobre isso, na verdade é 4, não exatamente 40, você deu um lance exagerado, mas 31 é o máximo que posso contar e isso porque se eu realmente e se você está pensando que isso é estranhamente doloroso agora, como será, mas esta é minha mão representando o número zero,
normalmente em unário, isso é 1 2 3 4 cinco, é claro, mas e se eu levar em conta a ordem em Que estou colocando meus dedos para cima e para baixo, então talvez ainda seja zero, talvez ainda seja um, mas talvez agora são dois, onde há apenas um segundo dedo levantado, não dois deles no total, talvez agora sejam três, talvez isso agora seja frequentemente ofensivo com apenas o dedo médio levantado, agora são cinco, agora são seis, agora são sete e minha mão apenas dói muito se eu tentar contar mais de sete, mas teoricamente porque cada
um dos meus dedos pode estar para baixo ou para cima e eu tenho Cinco deles, na verdade são 32 permutações possíveis para cima e para baixo, mas espere um minuto, dissemos 31, mas se você começar em zero você meio que tem que subtrair um do maior valor possível, então isso quer dizer que você e eu temos usado o unário porque é simples e dá conta do recado, mas se pensarmos na representação de maneira um pouco mais inteligente, podemos fazer exatamente o que os computadores fazem usando não o que os matemáticos chamam de Base um onde
o Dedo está lá ou não, mas a base dois e na base dois só precisamos de dois dígitos à nossa disposição e poderíamos chamar esses dígitos de um e dois de A e B preto ou branco como se só precisássemos de duas palavras para descrever duas informações, os computadores mantêm as coisas simples e assim como nós, humanos, começamos a contar 0 1 2 3 nos computadores, usamos zero e um e é isso, mas isso é por convenção, mas por que eles fazem isso bem? quando você usa a base 2, também conhecida como Binária, ele apenas
mapeia facilmente para o mundo real porque, no final das contas, o que todos nós fazemos se você tiver um laptop ou telefone ou qualquer dispositivo como você o conecta ao parede porque ela precisa de eletricidade em algum momento e se você tiver eletricidade ou não estiver bem, existem dois valores possíveis, ou está lá ou não, e como os computadores são dispositivos elétricos, é por isso que o binário é útil, é agradável e simples, ou a eletricidade é está lá ou Não, quando você conecta este dispositivo e tem todos esses elétrons ou o que quer que
seja fluindo, talvez se apenas nos agarrarmos a um pouco dessa eletricidade, possamos representar o que chamaremos de um e talvez se deixarmos ele se dissipa ou desaparece, isso é um zero, então liga e desliga Mapeia muito facilmente para essa ideia de apenas zeros e uns e se você já pensou nisso agora como dígitos binários, uh, implicando dois zero e um bem, se você já ouviu falar este termo agora bit significa apenas um Dígito binário um único bit é apenas um zero ou um mas poderíamos ter chamado essas coisas de qualquer coisa que quiséssemos agora como
é que este mapa fica claro para o mundo real bem, não podemos ver os pequenos interruptores dentro de nossos Mac PCS e nossos telefones que na verdade ligam ou desligam a eletricidade, armazenam eletricidade ou não, mas são chamados de transistores, eles têm milhões deles no hardware de hoje e estão ligados ou desligados como um interruptor ou uma Lâmpada, por exemplo, se não houver eletricidade, o interruptor está desligado, chamaríamos isso por convenção de zero, se você acionar o interruptor e ele realmente ligar, chamaríamos isso de ligado exatamente como poderíamos ter revertido, mas isso é exatamente como
o mundo decidiu padronizar e é isso, então você tem algo ligado ou desligado, um ou zero e isso é algo que conhecemos agora como um dígito binário ou bit, então, uma vez que tivermos esses valores, o que Sobre como podemos talvez representar bem as coisas, você sabe o que acontece, temos um monte de lâmpadas bem aqui, deixe-me pegar, ok, desculpe- me, deixe-me pegar a pequena estante de partitura aqui, deixe-me pegar algumas emprestadas essas lâmpadas e ver se não conseguimos deixar mais claro do que apenas minha mão o que está acontecendo aqui, então vou pegar duas
delas e vou colocá-las aqui e posso ligar ou desligar essas coisas agora então, se eu tiver dois bits, dois Interruptores, dois transistores, se você quiser, se eu for em frente e ligar este, estou representando o número em binário, talvez então apenas um agora, se eu estiver usando o unário, eu ligaria este aqui e termine com isso e isso é dois, mas não em binário binário, são as permutações quais estão ativadas e desativadas que importam, então o que agora estou representando aqui, talvez dois, então é quando coloco meu único dedo indicador para cima, mas mas quando
eu fiz isso com minha mão humana, Foi como representar o número três, como faço para representar o número quatro, sim, como se eu precisasse de outra lâmpada, então preciso de mais Hardware, por assim dizer, se eu ligar, se eu deixar esta, se eu ligar esta um neste aqui fora este agora eu tenho o número quatro e alguém me diz dizendo as palavras ligado e ligado e ligado ou ligado ou desligado ou ligado usando combinações de ligado desligado e ligado e desligado como faço para representar cinco da sua esquerda para você está certo, que tal Aqui,
fora, fora, eu ouvi e isso é exatamente certo e como eu represento talvez seis aqui fora, fora, não da esquerda para a direita, do outro lado, ok, então da direita para a esquerda, então eu acho vamos deixar este neste eu vou afirmar que representa agora uh uh seis e sete eu só vou, na verdade vai continuar agora se você está se perguntando onde essas pessoas estão surgindo essas combinações, na Verdade, há um sistema aqui, na verdade, é meio difícil para mim fazer isso ao contrário, mas acontece que na verdade, há um sistema que não é
tão estranho, na verdade, deixe-me propor isso, deixe-me propor que consideremos o que você e eu aprendemos em escola primária que era algo como o sistema de base 10 10, o que significa que você usa 10 dígitos diferentes, não dois 10, então como 0 1 2 3 4 5 6 7 8 9 o sistema de base 10 também conhecido como baralho decimal, implicando 10, então é isso que Você e eu use todos os dias, bem, vamos pensar em como representamos números em decimais da maneira humana normal, bem, aqui está um número, é qual número, claro, 123,
então todos nós apenas temos uma intuição para isso, obviamente, mas não é necessariamente 123, você está apenas atribuindo ou seja, para as posições desses dígitos, este é realmente o padrão 1 2 3, mas você imediatamente salta matematicamente para 123, mas por que as probabilidades Estão na escola primária, você aprende que o dígito mais à direita é a casa das unidades ou a coluna das unidades, esta é a casa dos 10 ou a coluna dos 10 esta é a casa das centenas e então por que isso é relevante, bem, isso é como fazer 100 * 1
+ 10 * 2 + 1 * 3 ou se multiplicarmos isso por 100 mais 20 mais 3 airo o número agora que acabamos de considerar concedido é 123, mas isso está na base 10, o chamado sistema decimal, em que cada um desses dígitos está em uma coluna diferente e Essas colunas são novamente unidades, dezenas de centenas, se continuarmos mil 10 e assim por diante, mas de onde vieram? aqui está a base se você se lembra dos expoentes e tudo isso é apenas 10 o 0o 10 o 1 10 os dois no infinito e agora e
se mudarmos a base de 10 0 a 9 para apenas dois dígitos 0o e um bem agora o matemática é fundamentalmente a mesma, mas são dois elevado a 0o 2 elevado a 1 2 elevado a dois, o que nos dá o lugar do um, o Lugar do dois e o lugar do quatro, agora, por que isso é relevante se você tem três lâmpadas ou três bits que são off off off o que eu fiz 4 * 0 mais 2 * 0 mais 1 * 0 é obviamente o número que você e eu conhecemos em decimal
como zero, mas isso representa o número que você e eu conhecemos, pois representa três quatro e só para ficar claro isso é por isso que quando peguei a lâmpada adicional afirmamos que agora eram quatro porque tínhamos ligado, desligado, ligado, Desligado, agora são cinco, agora são seis, agora são sete e se eu quisesse contar mais alto, qual seria o padrão de zeros e uns são para o número oito 1 0 0 0, então só precisamos de mais hardware, mais bits, então não foi arbitrário, mesmo que não fosse óbvio o que eu estava realmente fazendo ao ligar
e desligar essas lâmpadas, agora acontece que aqui nós estamos falando sobre como representar informações como números, mas Também poderíamos usar bits zeros e lâmpadas de uns para representar instruções também porque no final do dia é assim que todos os computadores processam algum tipo de informação de dados, seja arquivos ou números ou imagens ou vídeos ou algo parecido e você faz coisas com esses arquivos, como abri- los, imprimi-los, editá-los e coisas assim, então há essa noção de instruções como o que o computador pode realmente fazer e aposto que poderíamos inventar Com algum tipo de padrão de
zeros e uns ou lâmpadas equivalentes que dizem até mesmo ao local o que fazer, talvez subir ou descer, esquerda ou direita e certamente poderia fazer isso de forma autônoma usando vários sensores para manter as coisas seguras hoje usando Wi-Fi e enviando essas mesmas instruções, mas o que está acontecendo sem fio com nosso amigo Andrew aqui é essencialmente que ele está enviando instruções pontuais apenas codificadas sem fio de alguma forma como padrões de zeros e uns E o pessoal da Boston Dynamics que construiu este robô programado para reconhecer certos padrões como significando um certo padrão significando
para baixo, esquerda, direita e uma série de outras coisas, então, na verdade, venha aqui se você puder chegar ao ponto, ok, então o local, por exemplo, pode muito bem ter um padrão de zeros e uns que representa o local agitado, então ele poderia fazer isso e uma série de outros Movimentos também e talvez especialmente com sensores aqui e também um pouco de ajuda humana aqui por hoje e se formos em frente e fizermos algo, talvez façamos algumas perguntas, então vamos em frente e começaremos de forma simples local aqui, temos alguns trechos errados, certo, o que
isso representa, off [Música] correto, acho que meio que muito Cavalo, ok, obrigado, tudo bem, então uma salva de palmas para o lugar aqui, tudo bem, então veja o que se ligarmos, ok, desligaremos esse aqui, que tal ligá-lo para que desligue no local, qual é esse número da [música] é correto, legal, ok, que tal um floreio final, que tal no local em vez de desligar, ligar, vamos lá em frente e vá em frente, então pense em sua mente qual deve ser a resposta Certa em [Música] em ok e uma salva de palmas para o lugar também,
então isso quer dizer que não importa o quão sofisticado seja, obrigado, local, não importa quão sofisticado é o hardware ou software de hoje, ele realmente se resume a representar informações e instruções, e computadores, telefones e similares estão realmente operando nessas mesmas informações, sejam implementadas em Zeros e uns ou com qualquer outra coisa, tudo bem, então onde pode tomamos isso assim que tivermos esse sistema acordado para representar bem as informações, acontece que usar três bits, três zeros e uns de cada vez não é realmente tão útil e você e eu, mesmo em conversas, não costumamos dizer
a palavra bit, dizemos a palavra mordida e o que é uma mordida, se familiar, sim, são apenas oito bits, é apenas uma unidade de medida mais útil E acontece que é uma potência de dois 2 elevado a 3, o que apenas faz a matemática funcionar de maneira limpa, mas é apenas uma convenção para ter unidades de medida mais interessantes de bits individuais, então uma mordida tem oito bits, então, por exemplo, isso representa o uso de oito bits, oito lâmpadas, o número que você e eu sabemos é zero e essa mordida de todos os bits agora
você precisa fazer algumas coisas rápidas matemática representa qual número, então são todos uns oito no Total, que tal aqui no final, então é de fato 255 agora, esse não é o tipo de matemática que você precisa fazer em sua cabeça para uma aula como esta, mas você poderia, isso é o uns colocam 2os Quatro em 8 16 32 64 128 e como eles são todos iguais, você só precisa somar todos os valores dessas colunas e obterá 255, mas um pequeno truque mental também é que se você tiver oito bits e cada um deles podem ser
dois valores possíveis zero ou um que seja como duas possibilidades aqui tempo 2 * 2 * 2 * dois oito vezes então isso é 2 elevado a eth então talvez seja um pouco mais fácil fazer dois que é 256 ou mais fácil no sentido que você costumava fazer vendo esses números no CS que são 256, mas espere um minuto, como faço para conciliar isso com o seu 255, porque você começa do zero, então você meio que perde um no final, porque começamos a contar e representar o número como zero, todas as perguntas certas sobre como
nós representei apenas números ou, por exemplo, instruções para identificar até Agora quaisquer questões sobre binário, unário ou algo semelhante, não, tudo bem, então, não vendo nenhum, vamos deixar as coisas aumentarem um pouco, então como você representa as letras CU, obviamente, isso torna nossos dispositivos mais úteis, seja em Inglês ou qualquer outra língua humana, como poderíamos representar a letra A, por exemplo, se no final das contas todos os nossos computadores a que todos os nossos telefones têm acesso são eletricidade ou equivalentemente interruptores Ou metaforicamente pequenas lâmpadas dentro deles que podem ser intermitentemente, é isso, não há
mais blocos de construção para fornecer como poderíamos representar algo como a letra A, sim, que tal aqui, sim, atribuir perfeito para que pudéssemos atribuir a cada letra um número e poderíamos fazer isso de forma super simples, como se talvez zero fosse um e um é b ou talvez um seja a e dois seja B isso realmente não importa, desde que todos concordemos e todos usemos os Mesmos tipos de computadores em algum sentido, em última análise, bem, por várias razões, os humanos que projetaram este sistema, eles foram com o número 65, então hoje em dia, sempre
que seu computador mostra a letra maiúscula a na tela por baixo do capô, por assim dizer, ele está na verdade armazenando um padrão de zeros e uns que representa o número 65 e tende a usar sete bits ou normalmente oito bits total, mesmo que não precise de todos esses bits no total, então como Chegamos lá bem aqui, por exemplo, é o mesmo padrão, uh, aqui está aquele padrão de bits que representa 65 e por que verificamos rapidamente aqui, este é o lugar das unidades dois quatros 8 uh 16 30 a 64 casa ok então 64
+ 1 me dá 65, ou seja, aqui está como um computador usando alguns interruptores de luz, por assim dizer, representaria o número 65 e nossos Macs R PCS nossos telefones todos sabem disso, então sempre que eles veem isso em sua memória, por assim dizer, eles mostram uma letra A maiúscula na tela, então É isso que é um sistema conhecido como asy, o código padrão americano para intercâmbio de informações e o a é na verdade um operativo lá porque estamos apenas falando assim muito sobre as letras inglesas em nosso alfabeto e, na verdade, afirmei há pouco
que usamos apenas sete, talvez oito bits para representar as letras de um alfabeto, então, só para voltar para você, se me permite, quantas letras possíveis do alfabeto poderiam, quantas possíveis letras de qualquer alfabeto poderíamos Representar com oito bits 256 o número de 0 a 255 agora isso é mais do que suficiente para o inglês porque temos de a a z maiúsculo minúsculo um monte de números um monte de símbolos de pontuação, mas em muitos idiomas com acento caracteres são muitos caracteres asiáticos, isso não é memória ou bits suficientes para representar todos esses valores possíveis, então
precisamos fazer um pouco melhor do que perguntar, mas podemos construir em cima do que eles fizeram anos Atrás, então aqui está um gráfico de códigos aski é apenas um monte de colunas que nos mostram o mapeamento entre letras e números, então, por exemplo, aqui em cima está a letra maiúscula a 65 B maiúsculo 66 C maiúsculo 67 ponto ponto ponto uh 72 é H 73 é I e assim por diante, há alguns coisas estranhas aqui, como símbolos especiais sobre os quais aprenderemos com o tempo, mas há um mapeamento entre cada letra do alfabeto inglês e
algum número, assim como você propõe para letras maiúsculas e minúsculas, Por exemplo, se destacarmos apenas alguns deles para agora e digo que acabei de receber uma mensagem de texto ou um e-mail que, por baixo do capô, por assim dizer, se eu tiver a capacidade de ver quais interruptores estão ligados e desligados, recebi esta mensagem aqui primeiro e isso não é do que se trata CS, mas apenas uma curiosidade, alguém sabe que número isso representaria em decimal se este for o padrão binário como o de um, o lugar dois, o lugar 72 Está correto e, novamente,
não é tão interessante intelectualmente e esse não é o tipo de matemática que gastamos o dia todo um CS, um cientista da computação fazendo, mas está apenas seguindo o mesmo padrão, o que significa que pode parecer enigmático, mas, uh, conceitualmente, intelectualmente. Em última análise, é exatamente como fizemos antes, então sim, vou estragar o resto da matemática, é 72 73 33 agora alguém se lembra em sua mente qual mensagem acabamos de escrever, sim, então é na verdade Alto, Embora ninguém realmente tenha dito isso com entusiasmo, qual é o 33, se você percebeu, ok, então muitas pessoas
notam que sim, é um ponto de exclamação e isso é realmente perceptível, certo aqui 33 é o ponto de exclamação e isso é apenas algo que eventualmente pode penetrar, mas na maior parte, se você lembrar que A maiúsculo é 65, você pode descobrir pelo menos 25 outras respostas para esse tipo de pergunta, porque elas são todas contíguas assim então há o Ponto de exclamação Mas no final do dia podemos ter apenas esse mapeamento conhecido como asy e é como nossos telefones, computadores e dispositivos em geral armazenam informações, então pensamos em fazer, talvez, tirar um pouco
de pressão de mim aqui e poderíamos talvez inverter as coisas, que tal tentarmos aplicar esse conhecimento recém-adquirido se for realmente novo para você com sete voluntários, sete bits, se pudéssemos, ok, então sua mão desce primeiro, talvez Suas mãos aí, ok, três descem aqui, cerca de quatro e cinco, sim, desça, sim, de camisa preta, sim, que tal, deixe-me ir mais para trás, que tal no verde ali e que tal vocês sete aqui, tudo bem, desçam, desçam, mostrem nossa salva de palmas para nossos corajosos voluntários, tudo bem, então se você quiser ficar lado a lado aqui no
meio do Palco, primeiro de tudo, obrigado, vamos ver 1 2 3 4 5 6 sete perfeito, ok e vamos até lá este lugar aqui, se você gostaria de se apresentar, sou da turma Rachel Richie, ok e em que ano, alguma coisa sobre você, uh, primeiro ano concentrado em CS, ok, bem-vindo ao próximo palco, oi, sou Kang, também primeiro ano concentrado em CS, olá meu nome é LAM um R estudante do departamento de educação legal, ok próximo, oi, sou Jordan mler, me concentrando em Economia e talvez algum CS H, então oi, sou Natalia, primeiro ano e
quero fazer CS, oi, sou Kad, sou um primeiro ano e eu quero fazer CS, olá, sou Caleb e mais uma vez, primeiro ano me concentrando em CS, ok, maravilhoso, um padrão sim, obrigado, obrigado, então se você ainda não adivinhou, cada um desses voluntários representará um pouco de da esquerda para a direita ou da direita para a esquerda neste caso, então vamos ver Se você quer representar que tal o jogo dos dois Lugar, que tal a posição dos Quatro, o E's Lugar 16º Lugar 32s 64 e 128, embora espere, acho que estraguei tudo, precisávamos de 1/8
voluntário Acho que vocês sabem bem, acho que o local está bem, venham se vocês puderem dar um passo à frente e depois se aproximarem apenas para dar algum espaço ao local, para que o local represente o lugar daqueles agora, o que nossos voluntários têm nas costas de suas folhas de papel São pequenas instruções vamos soletrar uma palavra de três letras em inglês usando três mordidas da esquerda para a direita porque agora temos oito voluntários vou propor que você levante a mão se estiver supostamente representa um um ou você simplesmente fica parado sem levantar a mão
se pretende representar um zero e o que faremos com que o público faça é fazer contas rápidas para descobrir um dois três cada letra que número é qual letra é essa e Veremos que palavra finalmente soletrámos bem, então na primeira rodada você tem instruções no verso da folha que lhe dirão qual é o seu número se você for Zero, fique aí se você for um levante a mão, que número esses caras parecem representar 66, acho que 64 + 2, então 66, que é a letra, ok, então B, ok, então B, tudo bem, a segunda letra
será escrita soletrar [Música] tudo bem o que estamos soletrando agora, acho que está bem, sim, acho que você está bem agora, que número estamos soletrando 79, ouvi qual é a letra, oh, ok, então, sem dúvida, obrigado, localize um floreio final, então escrevemos a terceira letra, vá [Música] em frente, o que o número agora é Esse, eu ouvi aqui 87, que é W, o que, claro, significa arco, então se nossos voluntários pudessem incluir um lugar de arco, isso fará mais sentido, uh, na primeira semana, quando tivermos uma tarefa envolvendo uma certa pessoa do Nintendo World mas
temos um lindo presente de despedida para cada um de vocês, obrigado por se voluntariar, talvez você precise compartilhar com as pessoas próximas a vocês, ah, vamos lá, vamos lá, Muito obrigado, mais uma salva de palmas, se pudermos, para nossos voluntários, obrigado ok, tudo bem, então vamos ver se resolvemos agora o problema de representar as letras do alfabeto em inglês, sendo capaz de soletrar palavras como ba b w e se realmente tivermos caracteres acentuados e se tivermos outros uh glifos que queremos representar bem aqui, é claro, é um Teclado padrão do inglês dos EUA que muitos
de vocês podem ter, mas também há caracteres que você pode digitar com muito mais facilidade se tiver um teclado estrangeiro em relação aos EUA ou com certas teclas digitadas no seu próprio Mac PC e telefone, mas hoje em dia existe esse menu que provavelmente você usou nas últimas uma ou duas horas para enviar alguns emojis e Emojis, mesmo que pareçam imagens e na verdade sejam imagens na tela, são tecnicamente apenas Caracteres caracteres de um alfabeto emoji que usam um certo padrão de zeros e uns para representar cada um desses rostos, cada uma dessas pessoas e
lugares e coisas e acontece que uma das razões pelas quais temos tantos, uh, tantos muitos desses caracteres hoje em dia é porque agora usamos Unicode em vez de ASI, então Unicode é um supereto, por assim dizer, de ASI, o que significa que nós, humanos, percebemos há algum tempo que usar apenas Oito bits para representar letras do alfabeto certamente não é muito bom quando queremos representar outras línguas diferentes do inglês, então o Unicode não usa apenas oito bits, às vezes usa 16 bits por caractere, às vezes 24 bits por caractere e às vezes até 32 bits
por caractere, agora, por que esses números são apenas uma mordida, dois bytes três bytes ou quatro bytes e isso nos dá, alguém sabe que nos dá a capacidade de representar até 4 bilhões de Caracteres possíveis, porque se o mais longo tiver 32 bits, isso é 2 elevado a 32, o que se você fizer as contas, confie em mim é cerca de quatro bilhões, então são muitos caracteres e temos muito espaço para esses Emoji, mas não se trata apenas de se divertir pictoricamente na tela. A missão do unicode realmente é representar e preservar digitalmente todas as
línguas humanas passado, presente e futuro, então trata-se realmente de capturar todo o Tipo de conhecimento humano como o expressamos na linguagem, mas também de fornecer essa nova habilidade que foi usada, você sabe, séculos atrás também em escritos em paredes e pictogramas semelhantes através dos quais ainda podemos nos comunicar mesmo independentemente de nossa própria linguagem humana, então vamos reduzi-la hoje a apenas padrões de zeros e uns, mas o problema a ser resolvido é muito maior e muito além do próprio CS, então aqui está um padrão de zeros e uns usando Unicode então, mais de 8 bits
que representam um Emoji muito popular, o que pode ser uma dica, este é o Emoji mais popular do ano passado, pelo menos estatisticamente [Música] internacionalmente, isso ajuda, é aproximadamente esse número aqui, não, é esse aqui, então este é o Emoji mais popular pela maioria das medidas no ano passado, mas nem sempre é assim. Aqueles de vocês que têm um Mac ou iPhone Reconhecem este símbolo, talvez imediatamente, aqueles de vocês com dispositivos Android ou outras plataformas podem perceber que é a mesma ideia, mas é um pouco diferente e isso ocorre porque também os emojis no final
do dia apenas representam personagens, mas esses personagens podem ser desenhados podem ser pintados de maneiras diferentes e pessoas razoáveis irão interpretar de forma diferente este Emoji cujo nome oficial é rosto com lágrimas de alegria e, de fato, o Google interpreta isso de maneira um Pouco diferente da Apple versus Microsoft versus meta versus outras empresas também, então você quase pode pensar nessas diferentes empresas como tendo fontes diferentes para emoji e isso realmente começa a conectar as coisas ao mundo do texto e caracteres, então, só para você ver mais sobre isso em outra ocasião, descobrimos que emoji
e realmente caracteres em geral não usamos zeros e uns binários para representá-los porque ninguém, inclusive, vai Reconhecer o que é o que é apenas muita matemática não é interessante e até números decimais que eram como quatro bilhões ou algo como não me lembro qual número é qual, então representamos as coisas de forma um pouco mais compacta e isso também parece enigmático, mas este é um ponto de código Unicode ele usa outro sistema matematicamente chamado de base 16 ou hexadecimal mais sobre isso outra vez, mas é apenas uma maneira de representar números de forma ainda mais
Sucinta, escrevendo Menos na tela porque você está usando não apenas 0 a n como em decimal, mas está usando um até f também, algumas letras do alfabeto inglês entram em jogo, mas por enquanto isso é um pouco mais fácil de lembrar para as pessoas que se importam, uh, esse é o número que representa o rosto com lágrimas de alegria, mas e se quisermos personalizar emoji e isso é cada vez mais o caso aqui, por exemplo, são os cinco tons de pele que telefones, laptops e Desktops hoje em dia suportam, é baseado em algo chamado escala
Fitzpatrick, que essencialmente categoriza o tom de pele humano em seis ou, neste caso, cinco categorias diferentes, do mais claro ao mais escuro mas isso sugere que, uau, se quisermos representar pessoas com cinco tons de pele diferentes como esse, isso poderia aumentar significativamente quantos padrões únicos de zeros e uns precisamos para cada rosto possível, mas se pensarmos nisso De um ponto de vista de engenharia perspectiva, podemos realmente pensar no tom de pele como uma modificação de alguma cor padrão para melhor ou para pior e como se o amarelo fosse uma espécie de estilo padrão deao do
estilo Simpson, mas para modificá-lo para parecer mais genuinamente humano, do mais claro ao mais escuro, bem, talvez apenas usemos o mesmo padrão de bits para representar um polegar humano, por exemplo, polegar para cima ou polegar para baixo e então modificamos esse caractere para ser exibido com um tom de pele diferente, Por exemplo, aqui está o polegar para cima que você pode usar em várias plataformas e deixar deixe-me apenas estipular que este é o ponto de código Unicode que é o número que Macs PCS e telefones usam embaixo do capô para representar o polegar amarelo padrão
para cima, mas se você quiser dar um tom de pele médio, você ainda usa o mesmo número que mesmo padrão de zeros e uns ou interruptores sob o capô, mas você usa mais alguns interruptores que o computador ou telefone Interpretará como ah, você não quer ver o padrão e amarelo por causa desse segundo número que está na memória do computador em algum lugar que você quero que eu ajuste para ser o tom de pele mediano ou qualquer outro valor, então essa é uma espécie de solução de engenharia para este problema de apenas tentar representar diferentes
intervalos de emoji aqui, bem, e algo assim, há muito mais combinatória hoje em dia no seu teclado para Relacionamentos, por exemplo, então aqui está um casal com coração aqui, então o casal aqui, é claro, é representado aparentemente com este número aqui, mas é isso, mas se você quiser ser mais específico, como homem e mulher ou homem homem mulher mulher é o a mesma ideia, mas só precisamos nos expressar um pouco com um pouco mais de informação, por exemplo, a maneira como o pessoal do Unicode surgiu anos atrás para representar, por exemplo, uma mulher com um
coração e um homem Da esquerda para a direita estaria usando estes valores, então as coisas aumentaram rapidamente, mas apenas no sentido de que estamos usando mais bits, mais zeros e uns para representar mais expressivamente esta combinação específica, então este é o número em Unicode que representa a mulher à esquerda, este é o número que representa o homem à direita e este é o par de números que representa o coração no meio, às vezes vermelho, às vezes rosa, exibido Aqui como rosa, mas se quisermos mudar a combinação, por exemplo, para ser uh, digamos, mulher, uh, se
quisermos mudar a combinação para seja mulher mulher, observe que agora os números da esquerda e da direita correspondem ou se virarmos de volta para homem homem, estamos apenas usando números diferentes nas pontas novamente e, enquanto isso, se eu retroceder, há esses dois valores idênticos aqui, eles são chamados de zero marceneiros WID ou caracteres zge, é apenas um número especial que os humanos Reservam para dizer, cole o Emoji à esquerda, uh, ao Emoji à direita e assim por diante, então isso meio que conecta ideias dessa forma, então na verdade há muitos emojis hoje em dia que
são uma combinação de coisas diferentes, como coração em chamas, é tecnicamente a combinação de um emoji de coração e o emoji de fogo unidos numericamente desta forma, para que os cientistas da computação que inventam essas coisas sejam apenas capazes de reduzir as coisas a representações de tudo o que Temos à nossa disposição ou zeros e uns, então todos nós só precisamos concordar, em última análise, se somos o Google, a Microsoft ou algo semelhante, como vamos padronizar esse tipo de coisa como questões de informação e, em seguida, como os caracteres são representados em um computador, seja
em inglês ou em qualquer outro idioma sim, como é o quê, oh, o U plus é apenas uma convenção, então U plus representa um caractere Unicode especial que é um u com um sinal de Mais no meio e esta é apenas a convenção para dizer ei, ei, pessoal, aqui vem um número que representa um Unicode ponto de código o U e aquele não sinto muito o U e o Plus não têm significado matemático é apenas uma pista visual uh para as pessoas outras perguntas sobre como representar o texto desta forma, tudo bem, então e as
cores, já começamos a olhar bem as imagens como são essas imagens, sejam emojis ou qualquer outra coisa representada, uma das formas mais comuns É apenas com RGB vermelho, verde e azul, acontece que se apenas monitorarmos quanto vermelho deve estar na tela e quanto verde e quanto azul combinado que nos dá todas as cores do arco-íris, do branco ao preto e tudo mais, então como representamos uma quantidade de vermelho, verde e azul, francamente, apenas com três números diferentes e é assim que os computadores normalmente representam as cores de cada um dos os pontos na tela do
seu computador Ou telefone são chamados de pixels e cada ponto sob o capô tem três números associados a ele, então três números três números três números para cada pequeno ponto e esses três números juntos dizem quanto vermelho verde verde e azul deve o dispositivo ser exibido naquele local, por exemplo, se você tivesse um DOT na tela que dizia use tanto vermelho tanto verde tanto azul porque cada um desses números eu direi a você é uma mordida Ou oito bits, o que significa o o total de valores possíveis é de 0 a 255, deixe-me apenas estimar
que 72 parece uma quantidade média de vermelho porque está entre 0 e 255 73 é uma quantidade média de verde e 33 de azul é só um pouquinho, então se você combinar uma quantidade média de vermelho verde e um pouco de azul, alguém quer adivinhar que cor do arco-íris é essa, desculpe Marrom, então de perto é um pouco Mais amarelo do que marrom, mas se combinarmos, fica mais ou menos assim curiosidades sobre CS não são algo que eu mesmo seria capaz de observar, a menos que surgisse esse exemplo específico, mas espere um minuto, vimos esses
números antes de 72 73 33 representarem o que alguns minutos significavam alto, mas aqui estou afirmando não, não, não, isso significa amarelo, como você concilia isso bem no final do dia, isso é tudo, temos zeros e uns, Quer você pense neles como números, letras ou até mesmo cores agora, mas depende do contexto, então, se você você recebeu uma mensagem de texto ou um e-mail, as probabilidades são o padrão de zeros e uns que o computador está mostrando que você será interpretado como texto, porque esse é o objetivo de uma mensagem de texto ou de um
e-mail, se você abriu o Mac OS ou no aplicativo de calculadora do iOS ou Windows ou Android, o mesmo padrão de zeros e uns pode ser interpretado como números Para alguma adição ou subtração ou qualquer outra coisa se você abrir o mesmo padrão de zeros e uns no Photoshop como um programa gráfico em que eles serão interpretados esse contexto como cores, então o contexto é importante e, de fato, na próxima semana, quando você começar a escrever código naquela linguagem chamada C, a responsabilidade recairá sobre você, o programador, para dizer ao computador que interprete a seguinte
sequência de bits como um número, uma letra ou algo assim caso contrário, você não precisará Nem se preocupar com o que são os zeros e uns, mas precisará dar ao computador uma dica sobre que tipo de arquivo ou dado você está representando, para que isso nos forneça bits e você possa realmente ver esses esses pontos esses pixels na tela me deixam dar zoom e aqui temos só com esse Emoji que no final das contas é uma foto que alguém da Apple nesse caso desenhou e você pode ver se realmente deu zoom ou pegue seu telefone
ou TV e coloque-o bem perto do seu Rosto você verá todos esses pontos dependendo do hardware e cada um desses pontos esses quadrados estão armazenando 24 bits ou três bytes 24 bits 24 bits 24 bits e é por isso que ponto ponto ponto se você tiver uma fotografia, por exemplo, com 3 megabytes, o que equivale a 3 milhões de bytes, bem, é provável que haja 1 milhão de pixels porque você está usando três bytes por pixel para representar cada uma dessas cores, o que é uma simplificação exagerada mas é por isso que as imagens E
fotos estão ficando cada vez maiores hoje em dia, porque estamos jogando ainda mais pixels no arquivo de música, como você poderia representar música digitalmente usando apenas zeros e uns ou números, realmente qualquer Instinto, seja músico ou não, sim, sim, então nós poderia apenas representar notas por um número, então a é algum número e B e talvez sustenido ou bemol é algum outro número, mas a nota pode não ser Suficiente para alguns s sim, ah, ok, então uma nota ou um número para representar a própria nota, o som ou o tom, outro número para representar a
duração, como no contexto do piano, por exemplo, por quanto tempo o humano mantém a tecla pressionada e talvez eu possa pensar em um terço, como o volume, como o quão forte a pessoa tocou aquela nota tão minimamente com três números você poderia imaginar representar a música também e, de fato, isso pode muito bem ser o que os computadores estão fazendo quando você ouve o Som e o vídeo, como você poderia representar os vídeos também? olhei para algumas das letras miúdas 30 quadros por segundo FPS ou 29 quadros por segundo é quantas fotos estão voando pela
tela, mas isso é tudo que um arquivo de vídeo está em um computador, muitas fotos se movendo tão rapidamente na nossa frente que você e eu, nossos cérebros interpolam isso como sendo Movimento real e, na verdade, desde os filmes do ano passado, são como imagens que dão a ilusão de movimento, embora haja apenas cerca de 30 delas voando pela tela, então agora temos uma maneira de representar informações tanto como entrada quanto como saída, sejam números, letras, imagens, qualquer outra coisa, vamos agora nos concentrar no que está dentro daquela caixa preta, por assim dizer, onde temos
algoritmos, instruções passo a passo para resolver algum problema agora, o que quero dizer com Algoritmos ou passo a passo instruções passo a passo bem, talvez se transformássemos isso em código e é assim que conectaremos os pontos, em última análise, o código de hoje é apenas a implementação de algoritmos em computadores, um algoritmo pode ser algo que fazemos no mundo físico, o código é como implementamos isso exatamente a mesma ideia no contexto de um computador e aqui, por exemplo, está um aplicativo muito comum dentro de um computador para o seu contexto, é como a Versão iOS
do ícone e, normalmente, se você clicar nesse ícone, verá algo como tudo dos seus contatos aqui normalmente estão em ordem alfabética por nome ou sobrenome e seu telefone ou computador permite que você pesquise frequentemente o nome de alguém no topo e ele será preenchido automaticamente e será muito rápido, mas será muito danado rápido porque os programadores que implementaram esse aplicativo estão procurando alguém rapidamente para você agora eu posso fazer esse estilo da velha escola em que temos uma dessas coisas do ano passado, uma lista telefônica real, então em uma lista telefônica física como esta você
pode ter como mil páginas e em cada página há um monte de nomes e um monte de números e enquanto eu folheio isso eu poderia procurar por alguém específico, então suponha que eu queira ligar para John Harvard, cujo primeiro nome, claro, começa com J, bem, eu poderia basta virar página por página procurando por John Harvard e se ele não estiver lá eu continuo girando e girando então este é um algoritmo Estou percorrendo a lista telefônica uma página por vez está correto este algoritmo assumindo que estou olhando para baixo então sim Quero dizer, é meio estupidamente
lento, porque por que estou perdendo meu tempo com os A's e os B's e assim por diante? Eu provavelmente poderia dar uma mordida maior nisso, mas está correto e esse será um dos objetivos de escrever código. para, é claro, resolver o problema que Lhe interessa corretamente, então a correção nem é preciso dizer El, qual é o sentido de escrever o código ou Sol ou implementar o algoritmo, tudo bem, deixe-me pelo menos acelerar as coisas, em vez de uma página por vez, então 2 4 6 8 não ignore isso 10 12 uh 14 16 e assim
por diante é um pouco difícil de fazer fisicamente, mas parecia mais rápido, era duas vezes mais rápido teoricamente, mas está correto, então não, por que sim, sim, você pode, sim, posso sentir falta de John Harvard porque, Por acidente, ele pode ficar imprensado entre duas páginas, mas eu tenho que jogar o algoritmo fora, provavelmente não, quando eu chegar à seção K, que passa da seção J, eu poderia voltar pelo menos uma página pelo menos e apenas certifique-se de não passar por ele completamente, então isso é duas vezes mais rápido porque estou indo duas páginas por vez
mais uma etapa extra, então ainda é uma melhoria, então o pior caso do primeiro algoritmo se não for JN, mas Alguém cujo nome começa com z que pode me levar mil passos completos o segundo algoritmo é como 500 passos porque estou indo duas páginas por vez mais uma no caso de ter que voltar atrás, mas isso é no pior caso, mas a maior parte nós no ano passado e o que a Apple, o Google e outros estão realmente fazendo é em software ou aqui fisicamente, normalmente estamos indo mais ou menos para o meio, especialmente se
não houver nenhuma folha de dicas ao lado, como de A a Z, vou apenas Para vá para aproximadamente o meio e, ah, aqui não estou surpreendentemente na seção M, mas o que eu sei agora se esta é a seção m onde está John Harvard tão claramente à esquerda em ordem alfabética e então é aqui que podemos dar uma olhada muito maior resolver o problema, podemos realmente dividir e vencer esse problema, rasgando o problema ao meio, jogando metade dele fora, 500 páginas fora, deixando- me com um problema menor, com metade do tamanho que posso repetir agora,
então Vou mais ou menos aqui e agora Estou na seção E, então fui um pouco longe demais, mas o que eu sei agora se esta é a página E é onde está John, então agora ele está à direita, então posso novamente, espero que ele não esteja naquela página, posso rasgar o problema pela metade novamente, jogue fora aquelas 250 páginas e agora passei de mil para 500 para 250 páginas como agora estou mudando porque o primeiro algoritmo era uma página por vez, o segundo era dois, isso são centenas de páginas por vez tempo e se eu
for Mais ou menos novamente para o meio, mais ou menos para o meio, mais ou menos para o meio, espero encontrar John Harvard em uma página final, só posso fazer isso uma vez, mas uma página final, então isso meio que convida à pergunta que eu pensaria se o a lista telefônica tem cerca de mil páginas quantas vezes posso dividir o problema ao meio para chegar à última página, então é cerca de 10 e a matemática rápida é tipo 1.000 vai para 500 a 250 a 12 25 a 67 algo assim eventualmente, teremos que lidar Com
problemas de arredondamento, mas supondo que façamos as contas, são cerca de 10 fios de página e isso é muito mais rápido do que 1.000 páginas e ainda mais rápido do que 500 páginas, então é fundamentalmente melhor e, de fato, se eu finalmente chegar à página final, você sei que no mundo do software você veria algo como este John Harvard e seu número para o qual você pode ligar ou enviar uma mensagem de texto, mas é assim que agora temos nossa resposta muito parecida com a única página lá, Mas vamos considerar apenas eficiente o que realmente
é, então aqui está um gráfico muito áspero, amplo, com traços largos, então aqui está um gráfico XY, então aqui na horizontal estará o tamanho do problema e com isso quero dizer quantas páginas estamos tentando percorrer isso seria zero Páginas esta seriam muitas páginas quanto tempo leva para resolver o problema quanto tempo leva para encontrar John Harvard ou qualquer outra pessoa isso significa nenhum tempo isso significa muito Tempo então qual é a relação entre esses algoritmos bem o o primeiro é na verdade apenas uma linha reta se houver n páginas na lista telefônica, bem, afirmo que
é uma espécie de relacionamento um a um, porque se, como a Verizon ou a companhia telefônica, adicionar outra página no próximo ano, isso significa apenas que posso ter mais um passo a seguir ano também para encontrar John Harvard ou qualquer outra pessoa e, mas o segundo algoritmo também é uma linha reta, mas é menor, embora possa Não parecer óbvio e o que quero dizer com isso, deixe-me apenas desenhar algumas linhas temporárias se for quantas as páginas estão na lista telefônica ponto ponto ponto observe que leva muito tempo na linha vermelha para resolver o problema, mas
se eu usar o segundo algoritmo, levarei metade do tempo, mesmo que ambas sejam linhas retas, uma é estritamente menor que o outro, o que significa que é mais rápido, é melhor, mas o terceiro algoritmo tem uma Forma fundamentalmente diferente e se parece com algo assim e parece que vai achatar, achatar, achatar, mas isso nunca acontece, apenas sobe tão lentamente e o que isso significa é que se talvez Cambridge e Austin aqui em Massachusetts se fundirem no próximo ano, então passaremos de uma lista telefônica de uma página para uma lista telefônica de 2.000 páginas, o que
significa que se estivermos aqui este ano, estaremos aqui no próximo ano não é muito maior, mas seria muito maior Se estivéssemos usando os dois primeiros algoritmos, por que seriam necessários mil passos extras para encontrar alguém naquela lista telefônica combinada ou talvez mais 500 passos, mas para ser claro se estamos usando meu terceiro e último algoritmo, quantos passos a mais serão necessários no próximo ano, quando Cambridge e Altin se fundirem em uma lista telefônica de 2.000 páginas, apenas mais um passo, não é grande coisa, é mais um rasgo de página e é isso que queremos dizer,
em última análise, sobre não apenas escrever código ou implementação de algoritmos que estão Corretos, mas agora que são bem projetados ou eficientes especificamente e é isso que torna alguém um programador melhor talvez do que outra pessoa ou um solucionador de problemas melhor do que outra pessoa está adquirindo ao longo do tempo essas habilidades para que você possa resolver o problema é rápido e sujo, por assim dizer, mas se você tiver muitos dados, eventualmente, esteja na sua lista telefônica ou talvez no índice do site do Google, se você estiver pesquisando na web, você vai Querer tentar
pensar em como projetar algoritmos que se pareçam com isso matematicamente, isso é chamado de logaritmo e é log de base 2 porque estou tendo isso de novo e de novo, mas por enquanto só sei que é uma forma fundamentalmente mais rápida e diferente, então entre nossos objetivos em cs50, em última análise, não é apenas escrever e resolver problemas corretamente Mas, em última análise, cada vez mais eficientemente também quaisquer perguntas do que sobre essas ideias de eficiência e Projetar quaisquer perguntas aqui sim e voltar uma boa pergunta apenas para repetir um gráfico como este pode capturar
a precisão de a resposta curta do algoritmo não, por exemplo, se eu traçasse uma linha reta super baixa neste gráfico, o que implicaria que o algoritmo leva a mesma quantidade de tempo, não importa quantas páginas existam, meu algoritmo pode realmente ser apenas puxar uma página aleatória da lista telefônica, um passo e diga aqui está, mas isso não será necessariamente Preciso, a menos que eu tenha muita sorte, então o gráfico realmente fala apenas sobre eficiência e o design do algoritmo, não sobre a correção dele para analisar a correção que você precisa para usar, use outro uh
mecanismo Al juntos, ou seja, lógica outras questões agora sobre eficiência desta forma não está certo então com isso em mente vamos começar a traduzir isso para algum código real e de fato antes de olharmos hoje para uma linguagem de programação real, embora um Gráfico, vamos considerar algo chamado pseudocódigo, então o pseudocódigo não tem significado formal, geralmente você o escreve em inglês ou qualquer que seja sua linguagem humana, mas você escreve seus pensamentos de maneira sucinta, mas precisamente você tenta realmente transmitir seus pensamentos, não com um aceno da mão metaforicamente, mas passo a passo precisamente, então
o que quero dizer com isso aqui pode ser algum pseudocódigo representativo por meio do qual eu definitivamente descrevo esse terceiro e Último algoritmo de uma maneira que eu possa entregá-lo a você e você poderia fazer o mesmo em em casa ou eu poderia entregá-lo a alguém do Google e eles poderiam implementá-lo no Android ou eu poderia entregá-lo a alguém para a Apple e eles poderiam implementá-lo no iOS, então o primeiro passo que afirmo foi pegar a lista telefônica, o segundo passo estava aberto no meio da lista telefônica passo três olhar para a página como eu
fiz e agora as coisas ficam um pouco mais interessantes passo quatro se a pessoa estiver na página tenho que tomar uma Decisão presumivelmente o que devo fazer se John Harvard estiver na página que estou procurando então pare e provavelmente faça a ligação ou e-mail ou qualquer que seja o objetivo e então vou recuar visualmente alguns espaços apenas para deixar claro que você só deve fazer a linha cinco se a resposta à linha quatro for sim, caso contrário, não se preocupe, a próxima coisa que farei, linha seis, é considerar outra possibilidade, se a pessoa que estou
procurando estiver no início do Livro, o que eu quero fazer bem, eu poderia escrever, eu poderia descrever isso em Vou fazer isso de várias maneiras, como segue, aberto no meio da metade esquerda do livro, então aberto no meio da metade esquerda do livro e então o que vou fazer bem? meio que dividi o problema em algo menor, mas é fundamentalmente o mesmo problema, é apenas um número menor de páginas, então vou voltar à linha três e fazer isso de novo, Porque os problemas estão ficando cada vez menores, presumivelmente, caso contrário, se a pessoa O que
estou procurando está mais tarde no livro, aberto no meio da metade direita do livro e também voltando para a linha três, mas há uma quarta possibilidade e às vezes é a falha em perceber que há outros resultados possíveis que fazem os computadores travarem ou girarem bolas de praia ou algo semelhante se um programador não antecipar alguma situação qual é a quarta Situação possível ao procurar por John Harvard se eles não estiverem no livro e de fato eu posso chegar à última página e John Harvard nem sequer está esse é melhor eu lidar com isso e
dizer outra coisa como uma espécie de pegadinha, simplesmente desista de tudo junto e realmente muitas vezes os telefones do seu PC do Mac quando eles congelam ou giram novamente uma bola de praia ou algo parecido e coisas estranhas acontecem porque algum humano fez um erro estúpido e eles não perceberam que você poderia De alguma forma colocar seu telefone ou laptop em uma configuração que eles não previram, então vamos tentar lidar com isso aqui agora, esta é apenas uma maneira de escrever pseudocódigo que existe nenhuma maneira de fazer isso, todos nós nesta sala poderíamos criar um
pseudocódigo ligeiramente diferente, mas acho que você descobrirá que a característica são certos blocos de construção em todas as nossas respostas corretas aqui em amarelo são o que estamos a partir de hoje vamos começar a chamar funções, Tecnicamente falando, são como ações ou verbos que, literalmente, neste caso, como me diga o que fazer a seguir, teremos essas coisas como uma espécie de bifurcação condicional na estrada, por assim dizer, que me leve por esse caminho ou outro metaforicamente, então eu faço isso ou alguma outra coisa, mas como decido se quero seguir por aqui ou por aqui ou
por aqui ou por aqui Preciso fazer uma pergunta e na programação normalmente usaremos o que é chamado de booleano Expressões com o nome de mathemati bull e uma expressão booleana são essencialmente apenas uma pergunta com uma resposta sim não uma resposta verdadeira ou falsa uma resposta um ou zero não importa como você pensa sobre isso, mas tem duas respostas possíveis e então você pode meio que pense nisso como expressões com pontos de interrogação, embora eu não tenha desenhado essa pessoa na página pessoa antes no livro pessoa mais tarde no livro essas são expressões booleanas e
me dizem Se devo seguir por uma bifurcação ou outra na estrada e por último, há esse retorno à linha três em dois lugares diferentes que representa o que chamamos de loop, como algum tipo de ciclo que está fazendo algo repetidamente, agora, esses são apenas alguns blocos de construção aqui, funções condicionais, expressões booleanas, loops, mas você encontrará que eles são característicos de tantas linguagens diferentes, uma das quais veremos hoje, outra que Veremos na próxima semana e essas incluem, de fato, C e Python e outras linguagens ainda e é por isso que nos concentramos nessas Noções básicas
e fundamentais nestes primeiros dias, porque vamos vê- los repetidas vezes, mesmo que você sinta que aquela mangueira de incêndio está atingindo você em algum momento, isso lhe dará hoje, em última análise, mais recursos visuais nos quais você pode se agarrar para realmente escrever codificar, em última análise, em diferentes idiomas e resolver todos os tipos de problemas agora seríamos Negligentes em não trazer à tona o que está por trás de personagens como spot e chat GPT e outros softwares de inteligência artificial e acabamos chegando ao ponto da IA que estamos na verdade, vamos precisar de mais
blocos de construção do que apenas funções, loops e condicionais, não será tão simples, mas isso tem sido muito até agora, vamos prosseguir aqui e fazer uma pausa de cinco minutos e, quando retomarmos, daremos uma olhada não apenas na IA, mas também em uma linguagem específica Chamada scratch, então não há bolo ainda, mas voltaremos em cinco antes de voltarmos ao assunto. Eu só queria chamar um convidado especial que temos aqui hoje Além de identificar alguém que veio de mesmo mais longe e, de fato, se algum de vocês fez o curso aberto do cs50x, versão Weare da
aula, ou se interessou por ele nos últimos anos em algumas das comunidades sociais on-line do cs50, você pode ter tido suas perguntas respondidas por um certo humano Da Nova Zelândia e ela veio até aqui hoje para passar esta palestra conosco, esta é a própria Brenda Anderson do cs50, se você puder pedir o reconhecimento de todos nós [Aplausos] aqui não é muito, mas apenas um pequeno sinal de nosso agradecimento, Brenda ajudou realmente milhares de estudantes on-line nos últimos anos e, na verdade, sua própria filha tem sido a artista por trás do pato que está prestes a
aparecer no CS50 este ano e além, então obrigado a Brenda, tudo bem, então é difícil escapar de uma discussão sobre inteligência artificial hoje em dia, mas pensamos em usar isso como uma oportunidade para conectar alguns desses pensamentos porque, de fato, ao longo do semestre, não estaremos apenas falando sobre inteligência artificial AR ou IA, mas realmente usá-la de forma ainda mais construtiva para ajudá-lo a resolver problemas, ajudá-lo a ser desbloqueado quando você Bate em uma parede cognitivamente ou sintaticamente ao escrever o código e, de fato, não é por acaso que temos esse pato aqui se aproximando,
que é realmente a personificação do tipo de IA que você experimentará dentro cs50 em si este ano, então vamos falar sobre esse chamado chatbot que inspirou algumas daquelas manchetes com as quais começamos a aula que não estavam exatamente no nariz, então a aula ainda será ministrada por nós, humanos, mas ajudada por esse tipo de pato cs50 uma Espécie de chatbot agora, o que quero dizer com isso bem, acontece que quando se trata de implementar algo como uma inteligência artificial, ainda não temos todos os blocos de construção, certamente depois da semana zero de hoje para implementar
algo assim, mas Acho que podemos seguir nessa direção intelectualmente, por exemplo, se tentarmos implementar nosso próprio chatbot, algum programa de espaço de teste interativo que Fale conosco e responda a perguntas, poderíamos tentar pegar emprestadas algumas das ideias de hoje, já aquelas funções loops condicionais e muito mais e eu poderia escrever algo assim se estou escrevendo código ou pseudocódigo para um chatbot eu poderia programar o chatbot para fazer algo assim se o aluno disser olá para o chatbot então o chatbot deveria dizer olá de volta, caso contrário se o aluno se despede, bem, o chatbot deveria
se despedir de volta, caso contrário, se O aluno perguntar como você está, a caixa de bate-papo deve dizer que está bem, mas as coisas ficam um pouco mais difíceis quando você começa a fazer perguntas mais interessantes, como se o aluno perguntasse por que 111 em binário é sete em decimal agora você pode imaginar que temos apenas uma condicional com esta expressão booleana que programa o chatbot para apenas lhe dar a resposta e explicar em uma frase em inglês por que isso de fato é, mas e se você, o aluno, perguntar por que um0 é seis
em Decimal ou y 0 um0 é dois, quero dizer, você pode imaginar a explosão e a quantidade de código que teríamos que escrever para antecipar cada maldita pergunta que você possa fazer hoje e em todas as outras aulas, sem mencionar todas as conhecimento no universo, então certamente existem outras maneiras de implementar algoritmos que permitem que algo como um chatbot ou IA de maneira mais geral receba informações ainda como toda a Internet, toda a Web mundial, todas as páginas E conteúdo textual em que estão, mas deixá-lo descobrir como responder às nossas perguntas com base nesses tipos
de entradas, assumindo que as próprias entradas são precisas, então modelos de linguagem grandes é um termo sobre o qual você deve ter ouvido falar de Bandy nos últimos meses ou llms e um modelo de linguagem grande realmente é uma implementação em software de código que na verdade toma como entrada muitos e muitos idiomas, como o texto de muitas e muitas páginas da web, dicionários, enciclopédias, Wikipedia e similares, e meio que infere a partir dos padrões de palavras em inglês ou de qualquer linguagem humana o que um ser humano típico pode realmente dizer quando alguém faz
uma pergunta e algumas dessas perguntas são fáceis, provavelmente apenas na internet, sem mencionar a vida cotidiana, se alguém estender a mão e disser Oi, como vai você, as chances são de 90% de probabilidade de você dizer bem obrigado, como vai você, então aposto que poderíamos escrever um software que apenas infere o que Deveria dizer estatisticamente probabilisticamente com base nesses tipos de padrões on-line e é aí que o mundo está começando a ir quando se trata dos algoritmos mais sofisticados onde você e eu para os humanos, não tentamos antecipar todas as informações possíveis, em vez disso,
damos a eles uma entrada de propósito mais geral, como todo o conhecimento humano e, idealmente, apenas deixamos que ele descubra as coisas agora, ainda não chegamos lá e provavelmente você já ouviu falar de alucinações Ou apenas erros que esses grandes modelos de linguagem cometem, mas suas entradas são imperfeitas e às vezes há um pouco de aleatoriedade espalhada porque você não quer que a coisa diga sempre exatamente a mesma coisa, mesmo você e eu podemos dizer ah, eu não sou isso ótimo hoje 10% do tempo, então você precisa perturbar a saída de alguma forma, mas dentro
do cs50 e dentro deste mundo de grandes modelos de linguagem, temos essas ferramentas como chat PT e Bing chat e Outros e estipularemos isso para propósitos do cs50 a direção que estamos tomando este ano é que isso é o que está no plano de estudos ponto ponto ponto ponto que não será permitido será considerado não razoável usar software baseado em aib diferente do próprio cs50 então o objetivo aqui não é simplesmente retirar ferramentas que são claramente inevitáveis na minha opinião e claramente úteis e economizadores de produtividade, mas gostaríamos que houvesse algumas barreiras de proteção intelectual
sobre o quão Úteis esses bots de bate-papo são, porque, como você provavelmente verá se fizer uma pergunta nestes bate-papo Os bots já são muito bons e não apenas ajudam você a terminar seu pensamento atual, mas também lhe entregam seu segundo e terceiro pensamento e meio que fazem a tarefa para você, mas acho que, por meio de avisos, por assim dizer, seremos capazes de Coca-Cola um pouco de nossas próprias ferramentas sendo nós mesmos cientistas da computação em uma direção que você realmente considera o equilíbrio certo, além de Ter um bom tutor ao seu lado 247 que
não apenas lhe dá respostas, mas na verdade tenta levá-lo ao mesmo para que você realmente obtenha algo com a experiência e, idealmente, daqui a mais de 3 meses, essas rodinhas de treinamento também podem sair e você ainda será capaz de se manter sozinho, então será razoável usar o software baseado em IA do próprio cs50, que na verdade assumirá a forma de um pato cs50 que está disponível agora e o usaremos durante todo o semestre em Cs50. um aplicativo baseado na web que é bastante semelhante ao chat PT, mas que tem a personalidade de um professor
cs50 ou TF ou assistente de ensino ta que também se considera um pato e por razões que abordaremos em algumas semanas tempo, mas patos de borracha em particular são uma espécie de coisa na programação, mas falaremos mais sobre isso em pouco tempo, como você pode ver naquele que está na minha mesa, com isso dito também, permita- me chamar a própria Brenda Anderson do cs50, cuja filha Sophie gentilmente não apenas uh criou a primeira encarnação digital deste pato, mas também mais recentemente, uma vez que ele realmente fez mais do que grasnar, uh, um número aleatório de
vezes em resposta a perguntas agora foi virtualmente trazido à vida também, então tudo isso e muito mais nas próximas semanas, mas você descobrirei, em última análise, que o objetivo é realmente dar vida à disponibilidade de um tutor baseado em IA que você tenha acesso a um amigo ao Seu lado, uh, que ajudará a guiá-lo através de muitos desafios do curso ao longo do caminho e na verdade, já o lançamos no verão passado com alguns de seus antecessores na escola de verão de Harvard, um aluno escreveu no final do verão que este pato queria ter um
tutor pessoal, adoro como os AI Bots respondem a perguntas sem ego e sem julgamento em geral entreter até as perguntas mais estúpidas sem tratá-las como se Fossem estúpidas, como se poderia esperar, um nível desumano de paciência, então há realmente algo realmente lá, porque tantos professores quantos existem no cs50, os cursos preceptores ensinando bolsistas assistentes de ensino e assistentes de curso, somos tantos e só ficamos acordados algumas horas por dia e acho que vocês também descobrirão que estamos à beira de algo bastante notável nos próximos anos, onde isso vai acontecer Muito mais permitindo agora aprender o
material não apenas dentro dos limites de uma aula, mas também por conta própria e, como outro aluno disse no final do verão, uh com relação ao pato, amor, amor, amor, pato, somos amigos agora, então isso também espera, mas primeiro precisaremos começar com o básico e começamos hoje falando sobre binário e, caramba, aqui está de novo, então não podemos realmente chegar ao ponto de usar ou resolver ou implementar IA até que Entendamos isso e provavelmente a maioria de vocês não saberá à primeira vista o que este software faz, mas estes são os zeros e uns que
representam talvez o primeiro programa que qualquer programador escreve, o que agora é uma pista para alguns de vocês que se interessaram por código antes do que esse padrão de zeros e uns diz a um computador típico para fazer, alguém pode adivinhar que ele terá um olá, mundo, que é um dos primeiros programas que quase qualquer Programador escreve, caso você seja capaz de reconhecer esses zeros e uns eu reconheço esses zeros e uns como não, de jeito nenhum Acontece que eu sabia que eles são iguais e isso era uma espécie de pergunta importante, mas eles estão
representando dados e instruções, em última análise, dados como olá, vírgula wrld e uma instrução como imprimir isso dados para a tela sobre o que são esses padrões de zeros e uns, isso não é algo com que um cientista da computação Ou programador se preocupe, apenas estipulamos que ok, alguém em algum lugar sabe como fazer isso e provavelmente é alguém como a Intel quem fabrica o hardware dentro dele os computadores, mas você e eu, a partir de agora, já na semana zero, podemos começar a ver o binário de forma mais abstrata, não nos importamos com os
zeros e uns, só nos importamos que você possa usar zeros e uns para representar quantidades mais úteis, como números e letras cores e mais ainda, na próxima semana Será o código que realmente começaremos a escrever em um teclado e esta é aquela linguagem chamada C, é a mesma linguagem que eu mesmo aprendi anos atrás, quando peguei o cs50, quando tudo o que aprendemos na época era C, mas isso também tem algo enigmático e se você nunca programou antes, provavelmente pode entender tudo bem, estou supondo que o print F imprime olá, mundo, mas o que há
com o ponto e vírgula, as aspas, a barra invertida e as chaves, o hash include e Toda essa sintaxe estúpida, muito disso no início de qualquer aula é realmente uma distração, não é intelectualmente interessante, mas é o tipo de coisa estúpida que vai fazer você tropeçar com frequência, então hoje o que faremos é concentre-se não nos caracteres de sintaxe do teclado, mas nas ideias, porque o que realmente importa neste programa é que printf é uma função aqui para nossos propósitos e essa função é exibir informações na tela, todo o resto, como Veremos em breve, tem
valor e será compreendido por você em pouco tempo, mas por enquanto é uma distração, vamos nos concentrar nesses blocos de construção quando chegar a hora de escrever código, embora para os Curiosos, especialmente se você já programou antes, usaremos uma ferramenta gratuita e de código aberto muito popular chamada Visual Código de estúdio ou código vs, usaremos uma versão baseada em nuvem, pré-instalamos tudo o que você precisa na nuvem para que você não precise lidar com dores de cabeça, Como fazer seu Mac ou PC funcionar, você use em vez disso este URL cs50. deev, mas falaremos mais
sobre isso na próxima semana, na primeira semana, por enquanto usaremos outro editor baseado em nuvem chamado scratch e provavelmente alguns de vocês usam isso provavelmente já no ensino médio ou algo semelhante e foi bom criar o seu próprio arte, uh, animações, jogos, arte interativa ou algo parecido, mas vamos usá-lo hoje só um pouco e vamos usá-lo no primeiro dever de casa do curso, também conhecido como problema definido como zero, para Explorar agora algumas dessas mesmas ideias e entre os objetivos hoje para o O resto de hoje é não focar tanto no Scratch e nos detalhes
porque esta não é uma linguagem que você usará com frequência, mas para lhe dar representações muito visuais de ideias para que quando as coisas piorarem na próxima semana para ver o mais enigmático, são as mesmas ideias digitadas em vez de arrastadas e soltas, então com isso quero dizer que irei em frente e compartilharei em um momento A interface do usuário do scratch, mas o que é bom no scratch é que é assim que nós ' vamos implementar o mesmo programa hoje, são dois blocos ou peças de quebra-cabeça na tela e foram interconectados para dizer ao
computador para dizer olá, mundo na tela, a interface do usuário que estamos prestes a usar será geralmente semelhante a este é um editor baseado na web que você também pode baixá-lo localmente para usar offline e você verá que à esquerda aqui há Um monte de peças de quebra-cabeça ou blocos que são categorizados por cor e os azuis tendem a se relacionar com movimento, por exemplo, os roxos representam a aparência, o rosa representa os sons, o amarelo representa os eventos mais sobre isso, logo os laranja representam o controle e há variáveis de operadores, meus blocos e
até algumas extensões que podemos instalar também, para categorizar as coisas visualmente e colorido para que você possa encontrar o que Procura, mas vamos usar essas peças do quebra-cabeça para arrastá-las e soltá-las nesta área aqui e vamos conectá-las quando quisermos que elas façam algo que eles podem se sair bem por padrão, o scratch vem com este gato aqui também conhecido como Sprite Que é um personagem em um jogo ou em um contexto gráfico e este gato vive neste mundo bidimensional em que o gato pode subir, descer, esquerda, direita e você pode realmente mudar a fantasia do
Gato para ser Um cachorro ou um pássaro ou qualquer outra coisa, realmente é mais uma ideia do que um animal específico neste caso, mas o mundo em que o Scratch vive se parece com isso, é como um cartisiano plano com coordenadas x e coordenadas y e os números não importam muito fundamentalmente, exceto que quando você deseja que o gato ou qualquer personagem suba para a esquerda ou para a direita em alguma quantidade, é útil saber, por exemplo, que 0 0 é o meio 0 vírgula 0 para X Vírgula y até o fim é um valor
yv de 180 até o fim é menos 180 até a esquerda é -240 até a direita é 240 e geralmente você não vai tenho que me preocupar com os números, você vai usá-los relativamente, vá para a direita, vá para a esquerda, vá para cima ou para baixo, mas esse é apenas o mundo que o scratch vive aqui, então vamos usar o scratch aqui. Vou mudar para minha nuvem -editor baseado aqui, onde fui para scratch.mit.edu e cliquei em Criar para criar um projeto e isso me dá esta tela em branco aqui e vou fazer isso rapidamente
porque eu meio que sei o que estou procurando, mas parte do processo com o conjunto de problemas zero será apenas clicar e arrastar e rolar para ver quais blocos de construção existem, mas eu sei que em eventos há esta peça do quebra-cabeça aqui quando a bandeira verde clicou no porquê é que Germain, bem, se eu diminuir o zoom e voltar ao mundo do zero À direita aqui, observe que acima do mundo do zero há uma bandeira verde que significa ir e um sinal de pare vermelho que, claro, significa parar, então se eu arrastar esta peça
do quebra-cabeça em qualquer lugar no meio vai cair onde eu a coloquei, mas o que isso significa semanticamente é que quando alguém clica naquela chama verde FL eu quero arranhar o gato para fazer essa outra coisa bem, o que eu quero que isso faça, deixe-me ir abaixo de looks e looks aqui em roxo Tem algumas peças de quebra-cabeça como esta bem, posso dizer olá por alguns segundos ou posso simplesmente ir em frente e dizer olá, então vamos fazer isso, vou arrastar este bloco de dizer e perceber isso assim que conforme eu me aproximo o suficiente,
ele vai querer se conectar magneticamente para que eu possa soltá-lo e eles se encaixem automaticamente porque têm o formato certo, não preciso dizer Olá, ponto de exclamação, posso alterá-lo para o mais canônico olá mundo da vírgula, então Qualquer coisa neste oval branco é editável e você pode alterá-lo apenas como texto, se eu diminuir o zoom, deixe-me ir em frente e clicar na bandeira verde e pronto, este deve ser meu primeiro programa no zero, olá mundo, sem nenhuma das distrações de sintaxe ou caracteres estranhos na tela, acabou de fazer o que eu quero, tudo bem, deixe-me
ir em frente e clicar em parar aí e deixe-me torná-lo um pouco mais conectado ao que discutimos até agora, então esta peça do quebra-cabeça Aqui diz olá mundo representa que tipo de bloco de construção usando o vocabulário de hoje, então é uma função, então esses blocos roxos são funções, diga olá, mundo e deixe-me dar outra terminologia, esses ovais brancos que recebem entrada textual em geral, são chamados de parâmetros ou argumentos e eles personalizam o comportamento de uma função para que um parâmetro ou argumento personalize e modifique o comportamento padrão de uma Função como neste caso,
digamos da mesma forma no código C anterior que veremos na próxima semana a função print F recebeu uma frase entre aspas como Hello World da mesma forma como entrada, mas mais sobre isso no futuro, então como isso se conecta ao modelo mental que apresentamos anteriormente, bem, aqui está a solução de problemas como descrevi anteriormente, entradas para saídas com algoritmos ou código no meio, bem, o que nós o que tenho aqui é realmente uma entrada de hello world o Oval branco a função ou algoritmo que está entrando como entrada é o bloco say e qual é
a saída de usar o bloco say a função say é o efeito visual de ter o gato tem o pequeno balão de fala aparece acima de sua cabeça dizendo olá, mundo, então tudo o que fazemos de fato pode ser mapeado de volta àquela ideia muito simples de entradas e saídas, bem, vamos tornar isso um pouco mais interessante, embora seja um pouco chato apenas dizer olá, mundo o tempo todo hora, deixe- Me ir em frente e arrastar isso para longe e se você apenas arrastá-lo para a esquerda e soltá-lo, ele será excluído automaticamente, deixe-me detectar em
azul claro aqui e você verá que há um monte de blocos, um dos quais é um Pergunte, bloqueie uma função askk que solicitará alguma entrada ao eu humano, então deixe-me ir em frente e arrastá-la até aqui e ela se encaixa. Eu poderia mudar a pergunta, mas estou bem com essa pergunta, usaremos qual é o seu nome mas observe Que este bloco ask é um pouco especial, não será apenas exibido como um balão de fala na tela, na verdade retornará um valor e este é outro termo da arte hoje e em diante, um valor de retorno
é algum valor que pode ser devolvido a você conceitualmente a partir de uma função para que você possa fazer algo com ela, é como se a função ask ask pedisse o nome de alguém, escrevesse em um pedaço de papel e lhe entregasse o pedaço de papel, você pode fazer Qualquer coisa agora que você quero com esse nome e aqui está como você acessa o nome neste bloco especial chamado resposta, que novamente começaremos a chamar um valor de retorno, então se eu quiser dizer olá para alguém específico, farei isso, deixe-me diminuir o zoom, deixe eu volto
para a aparência e deixe-me voltar para dizer e vou mudar o bloco de dizer aqui para olá vírgula, então vou diminuir o zoom, bem, preciso de duas entradas, acho que tudo bem, vou pegar outro bloco say e Vou colocá-lo abaixo e eu poderia simplesmente digitar David, mas isso vai anular todo o sentido de me perguntar o nome e só vai funcionar para mim, então não quero fazer isso, então deixe-me voltar a sentir e notar que a forma é importante aqui, mesmo que não seja exatamente do mesmo tamanho, a forma importa e eu posso realmente arrastar
isso e alterar a entrada desta função de salvamento para qualquer que seja o valor de retorno daquele pedaço de papel que tem o nome da pessoa E cresce até preencher, mas agora temos um programa que acho que quando clico na bandeira verde, o relógio vai me perguntar qual é o seu nome e agora tenho espaço para digitar aqui, então vou digite DV ID Vou apertar enter e deve dizer olá Dave o que h Huh oh deixe-me talvez isso fosse talvez fosse H não funcionou da v d aqui vamos nós olá David H está faltando o
olá, mas estou bastante claro que temos um Olá bem aqui, então o que explica esse bug ou Erro, sim, exatamente, é apenas o que eu coloquei de outra maneira, meu Mac, meu PC é tão rápido que fez exatamente o que deveria, mas disse olá David tão rápido que não nem vejo que somos humanos, a parte mais lenta do quebra-cabeça, vejo o verdadeiro olá, então há algumas maneiras diferentes de consertar isso, como você sabe, poderíamos fazer com que ele dissesse olá por alguns segundos para que eu pudesse fazer isso, então deixe eu faço isso, posso desacoplá-los
Apenas arrastando e deixando-os ir para que fiquem magneticamente distantes, deixe-me ir em frente e arrastar este, diga olá por 2 segundos, vou mudar a gramática aqui para ser olá, vírgula novamente. vou desconectar esses dois, vou jogar fora o antigo que não quero usar e vou reconectá-lo para que agora tudo bem, ele diga olá por dois segundos e depois meu nome, espero, então deixe-me clicar em parar e iniciar daav ID, Digite ok, então é melhor, mas é meio mal implementado, tipo, vamos lá, eu só queria dizer olá, vírgula David, por que isso é tão difícil, bem,
talvez possamos realmente combiná-los de uma forma um pouco diferente e deixe-me propor isso, deixe- me realmente me livrar desses bloqueios novamente e deixe-me ir em frente e apenas dizer uma coisa, mas posso de alguma forma combinar isso para dizer olá, vírgula David, tudo de uma vez, bem, acontece que se eu usar os operadores que conheço por ter brincado com Isso antes, há uma peça do quebra-cabeça aqui chamada juntar e é um círculo ou é um oval, é um pouco grande, mas novamente crescerá até preencher e, por padrão, deseja juntar duas palavras maçã e banana, mas
opa, mas essas são apenas espaços reservados, então deixe-me ir em frente e arrastar isso sobre o padrão olá, deixe-me mudar a Apple para olá, espaço de vírgula e, em seguida, banana, deixe-me voltar à detecção, deixe-me pegar a resposta e arrastar e soltar, então agora observe que estou meio que Colocando minhas idéias em camadas e colocando de outra forma, a saída deste bloco de junção provavelmente irá juntar duas coisas maçã e banana ou olá vírgula David e então a saída de join se tornará a entrada para dizer tão esteticamente que parece melhor, ainda é correto, mas
é melhor então se eu digitar David e pressionar enter olá David, isso é o que um programa normal provavelmente não mostraria parte da frase e depois o resto da frase, É melhor assim, então vamos conectar isso agora para esta mesma peça do quebra-cabeça e esta metodologia, então aqui está a mesma peça do quebra-cabeça, pergunte como podemos encaixá-la neste fluxo de entrada e saída com algoritmos, bem, a entrada para essa peça do quebra-cabeça é algo como qual é o seu nome, ponto de interrogação, então o algoritmo ou o código sua implementação é este bloco ask e
espere para que o humano tenha um momento para digitar sua resposta na saída dessa função Recall é um valor de retorno que você não vê nada na tela por padrão porque ainda não usamos say, mas nós obtenha esse valor de retorno e deixe-me resolver tudo agora para que possamos juntar essas entradas, então aqui está esta peça do quebra-cabeça, deixe-me prosseguir e propor que as entradas agora para o bloco de junção sejam dois argumentos ou dois parâmetros, por assim dizer, olá e resposta, eles vão para aquela peça unida do quebra-cabeça cujo propósito na vida é retornar
uma Versão unida dela, deixe-me deslizar tudo isso logicamente agora, para que agora essa saída se torne a entrada para o bloco say e agora é por isso que o gato tem o balão de fala dizendo de uma vez, olá, vírgula David, então o que fizemos aqui foi compor a saída e, uh, de uma função para a entrada de outra e você pode pensar nisso de duas maneiras diferentes, à esquerda ou à direita, como eu fiz lá, nós ' é como empilhar essas coisas umas sobre as outras, mas no Final do dia, mesmo à medida que
a programação se torna cada vez mais poderosa para nós, são apenas entradas e saídas, entradas e saídas e, felizmente, com funcionalidade integrada de nossos amigos do MIT que scratch projetado, posso até fazer algo divertido como isso, posso ir até o botão de extensões na parte inferior e há muitas coisas sofisticadas que posso adicionar aqui, como texto para fala, então deixe-me ir em frente e escolher texto para fala, deixe-me ir em frente aqui e mude o Bloco say para roxo deixe-me me livrar do bloco SE e deixe-me pegar isso emprestado deixe-me pegar o bloco speak assim
e agora deixe-me arrastar e soltar este oval que vai crescer até preencher e acho que está prestes a seja um pouco mais interessante, deixe-me clicar em reproduzir agora e espero que não esteja muito alto DAV ID, digite olá David, ok, obrigado, obrigado, isso é uma barra baixa, deixe-me ir em frente e definir a voz também e agora você deve se lembrar de como começamos a aula Onde tínhamos uma voz robótica computadorizada, bem, não usamos o scratch na época, mas poderíamos mudar isso, uh, no scratch sozinho para ser um pouco diferente, então da um olá David,
ok, um pouco assustador, mas podemos brincar o dia todo com isso, mas o O ponto é que essas funções agora estão fazendo algo um pouco diferente, mas são apenas essas entradas e saídas, bem, vamos tornar o gato mais parecido com um gato, deixe-me ir em frente e jogar fora todas essas perguntas, Deixe-me ir até Sam e deixar eu vou em frente e arrasto o som de reprodução miau até terminar e aqui também vem com miau você pode adicionar seus próprios sons Lang e sons uh também, mas vou usar o miau padrão e aqui também espero
que isso não seja muito alto, vamos fazer o gato miar clicando em play, ok, é um pouco penetrante, mas é fofo e se eu quiser que o gato mie duas vezes, eu poderia jogar o jogo duas vezes, tudo bem, mas seria bom fazê-lo Miar automaticamente também ou três ou mais vezes para que você saiba o que eu poderia fazer, eu poderia simplesmente arrastar um segundo desses, na verdade, você poderia saber o que eu poderia apenas clicar com o botão direito ou clicar com o controle e duplicá-los, mas continuarei arrastando e soltando, há diferentes maneiras de
resolva os problemas e agora deixe-me clicar em reproduzir ok gato não parece muito feliz então poderíamos ficar sob controle poderíamos esperar um Segundo agora não há espaço mas vai se expandir para dar espaço para mim então deixe-me tentar isso e agora vai esperar 1 segundo entre [Música] tudo bem, deixe-me estipular que está correto se meu objetivo é fazer o gato miar três vezes, ele miar três vezes, mas de acordo com nossa discussão anterior sobre algoritmos e seu design, este não é o melhor design, ok, obrigado por brincar em Casa, sim, em que sentido isso não
é bem projetado, sim, você se repetiu, eu me repeti, o que na verdade, na programação, tende a não ser uma coisa boa, agora foi fácil, literalmente, quase recorri à cópia colar, o que me economiza tempo antecipadamente, mas imagine um cenário inventado agora, e se eu quiser esperar uns dois segundos, tudo bem, não é grande coisa, eu mudo aqui e mudo aqui, mas e se o programa For destinado para mim 10 vezes, então eu tenho que mudar aqui e aqui e aqui e aqui e aqui e eventualmente eu vou estragar tudo como se os humanos fossem
falíveis eu vou ignorar um deles uma vez que vai ser um segundo outro será dois e coisas estúpidas acontecerão, você está se preparando para o fracasso se projetar mal as coisas e então eu proporia que usássemos outro tipo de bloco de construção para resolver isso, sim, sim, para que pudéssemos usar um Loop e apenas escreva um código mínimo, mas para obter ainda mais funcionalidade, então deixe-me jogar fora a maioria desses blocos e vamos pegar esse bloco de repetição que ainda não usamos, mas está bem ali e como o nome sugere, isso me permitirá repetir algo
algumas vezes, deixe-me colocar essas duas peças do quebra-cabeça dentro, elas crescerão até preencher, deixe-me reconectá-las à bandeira verde, mudarei o padrão 10 para três e [Música] Agora está meio melhor, porque se agora você quero que ele mie mais vezes você muda de lugar se quiser que ele diminua a velocidade você muda de lugar não há espaço para erros e isso geralmente é uma coisa boa, mas você sabe que isso é bobo como se o arranhão vem com um gato, por que não O MIT não nos deu uma peça do quebra-cabeça chamada miau, por que estou
implementando a ideia de miar assim, me levou o que 1 2 3 quatro peças do quebra-cabeça, por que não há apenas uma Peça do quebra-cabeça que mia para mim, isso também podemos fazer em código, seja no zero ou C ou em outras linguagens também, vou abordar esses por esses uh Pink uh meus blocos aqui, onde posso criar minha própria peça do quebra-cabeça e vou chamar isso de literalmente miau e estou vá em frente e clique em ok e observe que ele me deu esse novo tipo de conector inicial, é uma peça inicial do quebra-cabeça que
nada passa acima dele, mas você pode colocar o que quiser abaixo dele e eu vou Seguir em frente e trapacear aqui Vou apenas pegar meu código existente, por assim dizer, este é o código que estou escrevendo, embora sejam peças de um quebra-cabeça e agora deixe-me apenas reivindicar e deixarei isso de lado, aqui agora é uma implementação de minha própria função bloco chamado miau, cujo propósito na vida é miar até terminar e depois esperar um segundo, mas o que é poderoso agora é notar no canto superior esquerdo, agora que fiz o bloco, posso usá-lo quantas vezes
quiser para poder agarrar esse Bloco de miau, arraste aqui e você sabe o que agora esse miau existe como uma ideia, posso abstrair dessa forma e vou arrastá-lo arbitrariamente até o fundo, não estou excluindo, estou apenas colocando-o fora da vista, fora de mente para que possamos nos concentrar agora nesta ideia e eu afirmo que esta implementação de miau é melhor porque é mais compacta ela faz o que diz e eu não me importo com os detalhes de implementação de meow então essa ideia de Abstração é algo que nós vou usar com frequência para abstrair algo
é simplificar não pense nos detalhes subjacentes da implementação apenas se preocupe com o que faz ou como é chamado alguém tem que se preocupar com os detalhes da implementação como eu há 30 segundos, mas aqui em diante eu não preciso me importar e então na verdade você e eu estamos usando a abstração que é zero porque não sei como colocar um balão de fala na tela não sei como Criar aquele som miau O MIT fez isso e eles já abstraíram essas peças de funcionalidade para nós, apenas nos dando essas peças do quebra-cabeça que vemos aqui,
para que o código funcione exatamente da mesma forma, mas está melhor projetado agora porque agora abstraiu a ideia de miar, mas aposto que posso melhorar isso ainda mais, posso me livrar completamente do bloco de repetição e deixar-me apenas dizer ao bloco miau quantas vezes miar Bem, deixe-me ir até o final e ver os detalhes da implementação, vou clicar com o botão direito ou clicar com controle sobre isso e vou editá-lo, então vou fazer uma alteração e não fiz isso antes, mas vou chamá-lo de miau como antes, vou adicionar uma entrada e só assim eu sei
o que diz, o que faz, vou adicionar a palavra vezes aqui e vou mudar este espaço reservado para uh n para n para número é o espaço reservado para usar sempre que quisermos Falar sobre um número em CS então agora observe que a peça do quebra-cabeça parece um pouco diferente, é preciso um argumento ou parâmetro chamado n que representa o número de vezes que você deseja que a coisa mie agora que ainda não faz isso, então deixe- me voltar ao meu outro código, deixe-me apenas desacople isso temporariamente, vou mover meu Loop para minha implementação de
miar, mas não quero mais um código rígido que literalmente escreva o número três, Vou pegar esse círculo oval e colocá-lo lá, então agora Eu generalizei a função, então agora ela miará quantas vezes quiser, zerando ao executar aquele Loop e agora com mais força, fora da vista, longe da mente, observe que meu código se tornou tão simples que minha função se chama miau, mia alguns várias vezes tudo o que tenho que fazer é digitar um número lá e ele simplesmente funciona e eu não me importo mais com os detalhes de implementação de nível inferior, por assim
dizer, Então aqui não é surpresa se eu digitar o número três, diminuir o zoom e clicar em [Música ] play ainda funciona muito bem, então qualquer dúvida sobre o que acabamos de fazer aqui ainda é apenas miar, mas isso não vem ao caso, é essa criação de nossas próprias funções, essa modularidade, essa abstração, essa será a ideia que continuará voltando para nós não, tudo bem, então vamos tornar isso um pouco mais felino, deixe-me jogar fora Todo esse código e vamos em frente, opa, deixe-me jogar fora esse código primeiro e depois o resto deste código e
deixe-me ir em frente e me dar outro bloco de bandeira verde e deixe-me ir em frente e vamos criar um gato que nos permita acariciá-lo movendo meu cursor sobre o gato e talvez ele goste disso então ele miará quando eu fizer isso então deixe-me ficar sob controle e deixe- me pegar isso se for condicional sobre o qual falamos como um bloco de construção antes, deixe-me ir para a detecção e Não usamos isso antes, mas aqui está um tipo estranho de forma diagonal que diz tocando o ponto de interrogação do ponteiro do mouse, então essa é
uma expressão booleana, então vou arrastá-lo e definitivamente é do tamanho errado, mas tem o formato certo, então crescerá até preencher e a pergunta que quero fazer é se o gato está tocando o ponteiro do mouse, então vá em frente e mie feliz, então deixe-me pegar o som do miado coloquei lá e então eu acho que quando eu clico na bandeira verde para iniciar o Programa e agora deixo o cursor o ponteiro do mouse tocar o gato que deveríamos ouvir, huh, huh, não parece estar funcionando, há um bug ou um erro nisso programa também o que
eu fiz de errado sim, não preciso especificar o Sprite explicitamente porque um detalhe que não discuti anteriormente no canto inferior direito da tela avisa que o gato já está selecionado, então este código está relacionado a esse gato, então seu seu instinto é bom Se tivéssemos dois ou mais Sprites, mas eu só tenho um, então estou coberto, outros pensamentos sim, ele só verifica uma vez, então clico na bandeira verde, o computador fez o que eu disse para fazer o Cur, o ponteiro do mouse não estava tocando o gato naquele momento porque estava tocando a bandeira verde,
então é claro que ele não miou, então qual talvez seja a solução aqui, qual peça do quebra-cabeça podemos adicionar bandeira, ok, ok, Solução interessante, então deixe-me ir em frente e sob controle, deixe-me pegar um Espere um segundo, vou mudar o um para cinco e agora vou clicar na bandeira verde, então aqui vamos nós, um 2 3 quatro cinco, caramba, tudo bem, isso era seu, não meu não funcionou, desculpe, talvez para sempre, então sua abordagem funcionaria, mas é um truque, se você quiser, eu teria que cronometrar perfeitamente para que o ponteiro do mouse o Tocasse ou,
inversamente, eu teria que arrastá-lo para lá e apenas deixe-o lá por 5 segundos e isso é um pouco estranho porque você não apenas toca em um gato e 5 segundos depois ele mia para você, provavelmente queremos que seja mais interativo, então eu gosto dessa ideia de um loop, certo por que não dizemos ao gato para sempre, uh, ouça o cursor, usando não repetir, mas para sempre, deixe-me mover isso aqui, então agora o gato Será avisado quando a bandeira verde for clicada, apenas para sempre, se tocar, se tocar, se tocando oh miau quando realmente tocado, então
agora, se eu diminuir o zoom e apertar o play, nada acontecerá, não preciso esperar nenhum segundo, mas quando toco na seção de fãs de gatos [Música] aqui, obrigado, então agora está funcionando muito bem então temos uma espécie de bug lógico, mas faz sentido se você pensar sobre o que Você disse ao computador para realmente fazer bem, vamos tornar as coisas ainda mais interessantes usando uma dessas extensões no canto inferior esquerdo, é assim que eu cheguei ao texto para fala mais cedo, deixe-me ir para a detecção de vídeo aqui também e posso, na verdade, vamos lá,
literalmente, o vídeo começou, deixe-me ir em frente e fazer isso, livre-se desse código e deixe-me sair do quadro quando o vídeo o movimento é maior do que bem, isso é cs50, então vamos digitar 50, Que é apenas uma medida de movimento, deixe-me tocar o som miau, ok e deixe-me parar e reiniciar, tudo bem, então aí está o gato Ok, funcionou gato um pouco insensível aí nós vai, na verdade, você sabe o que talvez seja, deixe-me colocar, uh, vamos mudar isso 20, meu Deus, tudo bem, vamos lá, tudo bem, vamos lá, então agora é um pouco
mais sensível às carícias usando a câmera, isso é meio estranho por exemplo, e se eu Começar a me mover loucamente como se ele fosse miar incessantemente, que é o que era H, pare bem quando estiver em dúvida, é quando você recarrega a página, tudo bem, então agora estamos de volta onde queríamos estar, mas onde podemos agora usamos esses tipos de blocos de construção como se estivéssemos fazendo pequenos programas, mas mesmo assim poderíamos nos transformar em um jogo inteiro, aposto que poderíamos conseguir um voluntário para aparecer, um Voluntário, todo mundo está olhando para baixo, ok no
final aqui desça, sim, todos aplausos para o nosso corajoso voluntário aqui, tudo bem, esses biscoitos do Super Mario estão em jogo para você, dependendo de como isso vai, então vou pedir que você venha aqui e com antecedência no site do scratch, temos alguns jogos pré-fabricados, uh, um deles escrito por um de seus antecessores, um ex-aluno, que eles implementaram esse tipo de Jogo de acertar uma toupeira, então o que você está prestes a ver é a câmera ligada em você e você está indo ver quatro toupeiras acima, abaixo, à esquerda e à direita e usando apenas
a cabeça para cima, para baixo, para a esquerda, para a direita, o objetivo é acertar uma toupeira para conseguir um ponto toda vez que sua cabeça tocar um desses Sprites, então você está prestes a ver as coisas ficarem muito interessantes muito rapidamente, mas usando esses blocos de construção, apenas aqueles blocos simples, mas com quatro Sprites, não quatro gatos, mas quatro toupeiras, neste caso, podemos realmente Transformá-los em jogos reais, então aqui vamos nós, iniciante, ok, ok, e só precisamos que você centralize sua cabeça [Música ] primeiro legal 10 [Música] segundos legal 2 segundos tudo bem uma
salva de palmas obrigado vocês querem se apresentar oi pessoal meu nome é vanilla Estou no primeiro ano e vou me formar em ciência da computação e economia prazer em conhecê-lo, aqui vamos nós, obrigado, então não vamos olhar o código daquele jogo real, ele foi escrito por um de seus antecessores e você pode vê-lo online se estiver curioso, mas você pode pensar agora com nossas funções condicionais Expressões Booleanas Loops como você poderia compor esse tipo de programa, então provavelmente havia um loop Que estava constantemente ouvindo esse tipo de conectividade ou era uma daquelas extensões que estava
esperando o movimento tocar um daqueles Sprites, observe que há esses números aqui em cima e ainda não falamos sobre isso, mas assim como na matemática, onde você pode ter variáveis X, Y e Z na programação, você pode criar variáveis usando outras peças do quebra-cabeça do zero que apenas controlam quantos segundos faltam que registra quantas Vezes a cabeça dela bateu em uma das toupeiras e assim você pode implementar a mecânica dos jogos usando blocos de construção muito simples, mas como construir algo que seja mais interessante e interativo assim, deixe-me prosseguir e trazer à tona por exemplo,
uma das primeiras coisas que escrevi anos atrás, quando estava na pós-graduação e o scratch tinha acabado de ser lançado, eu estava tendo uma aula no laboratório de mídia do mit e eles nos convidaram para um teste beta que consiste em testar o software Antes dele tornou-se parte do mundo e o jogo que fiz foi este aqui, deixe-me encontrar a versão certa da hora do Oscar, então a hora do Oscar é um jogo que me levou dezenas de horas, provavelmente no final foi um pouco viciante, mas deixe-me ir em frente e em tela cheia e não
vou jogar o jogo inteiro, mas parece algo assim onde o lixo está caindo do céu e posso clicar nele e arrastá-lo e percebo quando me aproximo, a tampa se abre Assim e se Eu deixo continuar caindo, ele entra e Oscar me dá um ponto e eu posso fazer isso de novo, lixo, se você realmente quer ver algo, lixo, tudo bem, aqui vem outra coisa que eu tenho, então agora há dois pedaços de lixo, ele está indo e vindo e indo e se pudermos diminuir o volume por apenas um momento, deixaremos mais lixo cair, mas seu
comentário anterior sobre um Sprite ou mais Sprites é o que estamos vendo aqui, Embora nossos exemplos até agora sejam apenas um gato, um ou dois peças de quebra-cabeça ou algumas peças de quebra-cabeça aqui é um Sprite aqui é outro Sprite aqui é outro Sprite e alternando entre elas no canto inferior direito posso apenas associar peças de quebra-cabeça diferentes com cada um desses Sprites agora que não comecei implementando todo este jogo e em apenas um momento, se pudermos aumentar um pouco o volume, veremos ainda mais lixo caindo, então É por isso que eu odeio essa música
agora, com mais de 10 horas ouvindo essa música no Loop apenas para acertar o timing, mas dá vida a todos esses Sprites diferentes e se você jogar de novo e de novo é sempre um pouco diferente porque estou usando um pouco de aleatoriedade para que esse jornal nem sempre caia de lá às vezes está aqui às vezes está aqui e aqui novamente temos a mecânica de um jogo onde as coisas estão sendo perturbadas um pouco aleatoriamente para manter as Coisas mais interessantes e deixe-me ir em frente, vamos lá, que tal aumentar um pouco o volume,
olhar para esse lixo do Restless, mais uma peça de lixo, então um relógio continua para sempre nesse tipo de jogo, mas vamos em frente e considere, deixe-me encerrar, deixe-me ir em frente e considere como fiz para implementar isso a partir do GetGo, então vou estipular, deixe- me abrir alguns de essas versões aqui que a primeira coisa que fiz foi praticamente implementar o palco Certo, eu estava meio que procrastinando, então dei uma olhada e encontrei o poste de luz da Vila Sésamo e gostei de arrastá-lo para o mundo e pronto, a versão um está pronta, não
não faço nada, mas pelo menos eu tinha o mundo planejado, ou seja, dei um pequeno passo em direção ao meu objetivo, então comecei a pensar, tudo bem, como faço para dar vida ao lixo, mesmo que isso não aconteça muito de qualquer outra coisa e então criei outro Sprite clicando no botão apropriado no Canto inferior direito e pensei bem, o que eu quero que esse lixo faça, eu quero que ele caia do céu e então o que eu fiz aqui estava o seguinte, se eu for para esse pedaço de lixo aqui ou realmente me desculpe, o
que eu realmente fiz primeiro foi que eu nem deixei o lixo cair, se eu jogar este jogo, o lixo simplesmente fica lá no ar, mas eu posso fazer isso eu posso arrastá-lo e como antes, ao tocar no outro Sprite, faço com que a tampa da lata de lixo suba, então como faço Isso, deixe-me clicar no Oscar lá embaixo, meu primeiro Sprite e aqui estão as peças do quebra-cabeça através das quais eu implementei essa ideia eu mudei a fantasia do Oscar, a aparência dele para ser apenas a número um, que eu era uma das imagens que
importei para o programa e então fiz isso para sempre, se o Oscar estiver tocando o ponteiro do mouse, mude a fantasia do Oscar para o número dois, caso contrário, mude de volta para um, então é uma animação super simples, estou apenas alternando entre uh, tampa para cima, tampa para baixo, tampa para cima, tampa para baixo, Mas parece interativo e se eu quisesse realmente deixar isso bonito, poderia ter cerca de 30 fantasias diferentes onde a tampa é levemente mais alto do que pareceria ainda mais com um filme ou movimento fluido, mas isso foi suficiente para realizar
o trabalho, o que significa que não tentei implementar todo o tempo do Oscar juntos, apenas dei um segundo passo em direção ao meu objetivo e então minha próxima versão da época do Oscar poderia ter sido mais ou menos Assim, onde agora o lixo, há mais coisas acontecendo aqui, vamos dar uma olhada em dois desses uh blocos de código, a primeira coisa que fiz foi ativar o modo arrastar para arrastável e tive um Google para descobrir isso porque, caso contrário, não me permitia arrastar o lixo durante o jogo, mas depois que descobri isso, digo ao lixo
para ir para uma coordenada X aleatória entre 0 e 240 da esquerda para a direita e depois para o local Y 180 porque eu sempre quero que o lixo caia do céu e Então o que eu faço? Eu disse ao lixo para mudar para sempre sua coordenada y, sua coordenada vertical por menos 1 negativo 1 negativo 1, como um pixel de cada vez, o que cria a ilusão disso caindo do céu, mas eu precisava fazer outra coisa e deixar-me rolar para cima, cada um dos seus Sprites pode ter vários programas, vários scripts, por assim dizer,
que não estão anexados um ao outro, eles acontecerão em paralelo para você, o segundo está dizendo isso para sempre, se o Lixo estiver tocando o Oscar, o que ele deveria fazer, vá para um local X e Y completamente diferente no topo, por que, bem, assim que eu arrastar o lixo sobre o Oscar, quero que ele desapareça como se estivesse indo para a lata e eu então quero que ele reapareça no topo para que mais lixo caia, então pensei sobre o que significaria para o lixo ir para a lata de lixo, bem, quem se importa com
o que realmente importa para o usuário humano é que ele simplesmente desaparece e se teletransporta para outro lugar E então essa é a ideia que implementei aqui, então se você puder transformar ideias intuitivas em apenas blocos de construção básicos como este, você pode começar a tornar as coisas muito mais interativas e, por último, se eu olhar para esta versão aqui, você verá que combinamos estes e então, de fato, se eu realmente for em frente e tocar isso agora, não apenas ele está caindo, eu posso deixá-lo cair em cima do Oscar e vê-lo desaparecer, mas percebo
que Oscar ainda não apareceu porque essa era a Quarta versão e depois a quinta versão e então adicionei a música irritante e assim por diante, mas meio que componho este programa passo a passo para atingir meu objetivo maior e isso será verdade para todo o código que você escreve, seja no zero ou C ou python, tentando criar, ou melhor, tentar reduzir suas idéias, sua Grande Visão a apenas pequenos passos de blocos de construção, para que você comece com a versão um e talvez envie a versão 10 ou 20, mas não tente implementar a versão 10
ou 20 no início, você dá esses passos incrementais, tudo bem, que tal um outro, bem, deixe-me propor isso, uh, deixe-me ir em frente e abrir três jogos que representam um que seus antecessores também implementaram, que se parece com algo assim na versão zero, suponha que eu queira implementar um jogo que simplesmente tenha esse tipo de mecânica. Estou tocando as teclas de seta do teclado para cima, para a esquerda e para a Direita e estou movendo o logotipo de Harvard, deixe-me aumentar um pouco o zoom, então se eu clicar no botão para cima Seta, o Escudo
de Harvard sobe se eu acertar a seta para baixo O Escudo desce se eu for totalmente para a esquerda, ele vai para a esquerda até atingir a parede e a mesma coisa à direita, então isso é como o início de um jogo ou um começo de um labirinto mais ou menos assim, bem, como posso implementar isso bem, deixe-me olhar dentro deste e há muita coisa acontecendo, mas, novamente, eu meio que tomei passos simples, Observe que tenho três Sprites em uma parede esquerda que é apenas um linha reta na parede direita que é uma linha reta
e apenas intuitivamente por que eu os implementei como Sprites por que eles precisam existir como entidades em si sim na frente sim eu quero que ele interaja com o escudo então preciso ser capaz de perguntar isso Expressão booleana como não tocar no ponteiro do mouse, mas tocar no escudo, por exemplo, um tipo diferente de sim, não, pergunta e então qual é O código para o escudo realmente funcionando bem, há muita duplicação e deixe-me focar na abstração primeiro aviso que tenho esta bandeira verde clicou Eu quero que o escudo fique no ponto morto 0 vírgula 0er
e então ouça para sempre o teclado do humano e sinta a parede, então decidi implementar minhas próprias peças de quebra-cabeça rosa que implementaram duas ideias separadas, uma apenas ouvir o teclado subir, descer, esquerda, direita e depois fazer alguma coisa e depois Sentir as paredes é essa ideia de qualquer coisa que eu suba, desça, esquerda ou direita, se eu tocar em uma parede, preciso parar de fazer o que quer que as teclas estejam me dizendo para fazer agora, se mergulharmos nesses detalhes de implementação ouça e sinta nossas abstrações peças personalizadas do quebra-cabeça vamos dar uma olhada
nos detalhes da implementação bem aqui está o teclado se a tecla Seta para cima for pressionada mude y por um se a tecla seta para baixo for pressionada mude y por menos 1 e você provavelmente poderá ver onde isso vai para a Direita, a seta para a direita é X por um para a esquerda, a seta para a esquerda é X por menos 1 e isso é tudo o que está envolvido com cima, baixo, esquerda, direita, mas espere um minuto, por que não há Loop nesta peça do quebra-cabeça do teclado? então funciona constantemente exatamente Eu
coloquei o loop na minha parte principal do meu programa no topo, então algo está me dizendo para continuar ouvindo de novo e de novo, então tem que estar em algum lugar, mas não precisa estar na Implementação real e por último que tal sentir bem as paredes se tocar na parede esquerda, que é apenas mais um Sprite, mudar X por um, ou seja, se estou tocando a parede esquerda, quero devolvê-la na outra direção e a mesma coisa à direita parede, se eu estiver tocando a parede direita, quero jogá-la de volta para a esquerda, o que efetivamente
significa que, mesmo que o humano esteja apertando a tecla, é como lutar com esse código, mas ele nunca Vai passar pela parede com base na matemática que vai para parar com isso, tudo bem, vamos adicionar algo mais à mistura, suponha que eu queira que o jogo mude para algo assim, onde Yale é algum tipo de bloqueio entre mim e como a saída, então algo dramático, você sabe, corrida aqui, ok Acabei de passar, mas o logotipo de Yale não parece estar fazendo muito, exceto saltando, então acho que há um loop, talvez uma condicional, como verificar essas
Paredes também, então vamos em frente e diminuir o zoom, ver por dentro, não vamos nos preocupar com Harbard, porque é praticamente o mesmo, vamos olhar para as peças do quebra-cabeça de Yale e com certeza ir para o meio 0 vírgula 0 ponto na direção 90, então aponte horizontalmente na grade e, se tocar na parede esquerda ou na parede direita, estou meio que trapaceando desta vez, mas de forma inteligente, apenas gire e faça 180 para que você efetivamente salte da parede, isso apenas reforçou meu código, não preciso Fazer o negativo ou o mais, apenas digo saltar
nesta forma de código, caso contrário, apenas mova-se constantemente um passo agora, se este é um jogo em que Yale deveria ser melhor e mais rápido, bem, vamos mudar de um para cinco, mover cinco pixels por vez, vamos 10 para frente e para trás, talvez 100 uhoh, então o que aconteceu é um bug o que podemos evitar simplesmente não fazendo isso, mas por que ele quebrou a parede, Sim, exatamente porque estou dando cem passos de cada vez, nunca toco o outro spray porque estou meio que passando por cima dele então nunca há um momento em que
eles estão realmente se tocando, então anteriormente eu estava apenas tendo sorte ao dar menos passos porque está gradualmente ultrapassando a parede, o que me dá tempo suficiente para detectar isso, então eu teria que mexer e ele lidar isso é um pouco diferente, então é um bug se for Muito rápido, mas pelo menos se eu mantiver isso lento e razoável, a matemática realmente funciona, desde que comece novamente no meio, bem, vamos fazer um floreio final aqui, por meio do qual, uh, vamos trazer o MIT na mistura certa, eles são superinteligentes, então talvez eles possam nos rastrear
e seguir aonde quer que eu vá, então como isso pode funcionar bem, então nada acontece ainda porque ainda não terminamos de compor o jogo e observe aqui, ok agora MIT está lutando como se estivesse Mudando para lá porque está indo logo acima, abaixo, acima e abaixo, então poderíamos consertar isso também, se quisermos, mas isso é apenas uma função da minha matemática, um pixel de cada vez, deixe-me abrir este aqui, veja por dentro e clique no MIT e você sabe que não é preciso muito para implementar o MIT, parece, então vá para uma posição aleatória para
sempre Aponte para o contorno do logotipo de Harvard, também conhecido como escudo e, em seguida, dê um passo, então se eu quisesse tornar o MIT ainda mais inteligente, ainda mais rápido, o que Fazer Eu mudo aqui, sim, mudo um passo para dois passos para dobrar sua velocidade ou cinco passos 10 passos ou 100 passos e o jogo vai acabar assim, mas isso é tudo o que é preciso para agora fazer esses tipos de elementos, então se você é um jogador de jogo em seu telefone ou consoles ou computador ou o que quer que seja, se
você pensar em quase qualquer jogo, provavelmente agora pode começar a pensar em como eles implementaram essas mecânicas, porque estão apenas sendo Reduzidas a funções condicionais, Loops, variáveis e similares neste caso, então vamos lá à frente aqui e talvez tenha um último voluntário, temos mais um saco de Oreos aqui, ok, isso foi super rápido, você quer subir, tudo bem, muito voluntário, vamos lá [Aplausos], tudo bem, deixe-me encontrar a versão completa disso que um de seus antecessores fez e deixe-me acertar, Ok, vamos lá, veremos algumas instruções na tela em apenas um momento e quando, uh, quando apertarmos
o play, você verá que as mecânicas estão todas combinadas agora em um jogo completo, mas primeiro uma introdução, está no ar, uh, oi a todos, eu sou Sam, uh, moro em Apple Coot, sou um calouro e sou do Nepal, tudo bem, bem-vindo ao palco, tudo bem, então vamos lá, sim, vamos à frente e clique na Bandeira verde Você não pode tocar Isso, você vê, a grade é apenas maior desta vez, não posso tocar tão bem, agora há aquele elemento de Yale [Música] que me faz dizer oh meu Senhor, obrigado por me abençoar quando uma mente
para e toyp se sente bem quando você sabe que está para baixo super [Música] terceiro, tudo começou em posições ligeiramente diferentes, Não posso tocar nisso, tudo bem, você sabe, não posso tocar neste olhe nos meus olhos, cara, esses mecs não podem ficar assim você sabe que você sai do seu lugar, pega e pega enquanto rola, segura p um pouco e deixa aqueles assim cair para trás, deixe- os saber que você é demais e isso é que eles não podem tocar bem, não há mais paredes, mas duas Minhas agora eles sabem que você está falando sobre
você está falando sobre um show que é H e singles apertados são tão rápidos em branco ou [ Música] toque você não pode tocar nisso, você não pode tocar nisso [Música] ah, quebre isso tudo bem, claro, lá vamos nós ni oh [Música] oh mais algumas vidas [Música] lá vamos nós lá vamos todos mais algumas [ Música] tenta quando a dança vai pegar o slide você está ficando [Música] estresse não pode tocar nisso olha, cara, não posso tocar nisso, tente mais uma vez, traga o sino de volta, tudo bem, uma salva de aplausos, no entanto, muito
bem, obrigado, Então como você deve ter notado se seus olhos começaram a vagar para as lâmpadas aqui, na verdade há 64 quatro destes lâmpadas e estou me perguntando se vocês dividem 64 por8, são oito btes de lâmpadas e agora temos algum Unicode em nosso vocabulário, então pode muito bem ser o caso de estarmos explicando algo no palco aqui para todos vocês desta vez, mas antes de encerrarmos para o bolo ser servido no transre, permita-me apresentar alguns dos Amigos humanos do cs50, uh, os crocodilos de Harvard e os argumentos de Radcliffe para nos dar isso emocionante
e isso é [Música] [ Aplausos] [Música] cs50 há uma certa pessoa com quem eu também estou e já que tudo está no cs50 eu tenho esse amigo para vocês dois três Quatro patinho de borracha você é aquele que você faz disse muito divertido patinho de borracha eu gosto muito de você patinho de borracha, você me faz sorrir e ajuda meu código a compilar patinho de borracha, você é meu melhor amigo, é verdade quando estou parado, suas habilidades de depuração me surpreendem quando estou no fim da linha, você acabou de quebrar minha códigos funcionando patinho de
borracha você é tão bom e eu tenho sorte que você é meu pato de borracha Você é meu melhor amigo é verdade você é meu melhor amigo é verdade patinho patinho de borracha eu gosto muito de você boa tarde cs50, somos os crocodilos de Harvard, o grupo AC capala mais antigo de Harvard, fundado em 1946, no histórico Casey Pudding Club, adoraríamos agradecer muito à equipe do cs50 e a David menen por nos fazer atuar aqui no Sanders Theatre e se você se apresenta, se gostar desta Apresentação, por favor, faça um teste para nós neste fim
de semana no farcus [Aplausos] [Música] [Aplausos] Hall, olá a todos, somos alguns dos argumentos de venda de Radcliff e também realizaremos audições neste fim de semana, você pode encontrar mais informações em nosso Instagram em Radcliff pitches agora, deixe-me contar um pouco sobre cerca de um ano atrás, quando eu estava sentado em seus assentos no meu Primeiro dia de palestra cs50 e é assim que eu estava [Música] sentindo que é o primeiro dia de aula e sou novo em código, isso é para mim, tantas pessoas ao redor, posso superar a carga de trabalho, mas é meu
sonho, tendo a me limitar ao inglês, não à ciência, mas meus amigos me disseram para tentar este ei, robô dançante cachorro, parece que você tem uma vida unida, acho que realmente preciso de Alguns conselhos, saiba que você está sentindo que isso é o certo no CS, seus amigos conseguirão, você será por isso, você terá, você ganhará queixo de cupcake e você sempre posso fazer essa aula tão triste isso é cs50 É [Aplausos] boom obrigado aos Crocs obrigado aos Arremessos o bolo agora está servido corte-os para dizer oi se quiser ou local de encontro até a
próxima [Aplausos] [ Música] [Música] tempo [Música]