[REPRODUÇÃO DE VÍDEO] -A Triunfo de matemática e habilidade mecânica é esta nova grande automática calculadora na Universidade de Harvard. Intrincados problemas em matemática colocar através da máquina sob forma codificada, na fita com precisão são resolvidos em um diminuta fração do tempo necessário para o cálculo humano. Projetado para agilizar todas as formas de pesquisa matemática e científica, o cérebro mecânico gigante vai trabalhar para Marinha dos Estados Unidos até o final da guerra. [FIM DE REPRODUÇÃO] David J. MALAN: Este, é CS50. O passado era um mágico lugar, mas se você já perguntou o que esse dispositivo é em Harvard Science Center, é de facto parte do Harvard Mark I, e é em exposição lá agora nos últimos muitos anos. E o que você verá incorporado no conjunto de problemas um é um olhar por trás das cenas em que esse dispositivo fez, e faz, Professor de Harry Lewis, que está em o departamento de ciência da computação aqui. Assim, mais do que em um pouco. Mas hoje nós começamos a transição desde a semana passada para esta, e nós vamos trazer menção de uma fotografia aqui isso é realmente muito famoso. Alguém sabe o que esta aqui está na tela? Pelo menos de acordo com o mito. Sim. AUDIÊNCIA: O primeiro vírus. DAVID J. MALAN: Então foi supostamente o primeiro bug real em um computador. Agora, na realidade, a palavra erro, por um erro em um programa, tem estado conosco por algum tempo do mundo físico, e este foi um dos primeiros vezes documentados em que alguém realmente arrancou uma grande traça fora do Mark Computador II, colocá-lo na pasta, e depois gravamos como o primeiro bug conhecido ter sido realmente encontrado fisicamente. Assim, portanto, foi inserido que em lore de hoje. Tudo, desde a última semana está disponível online. Em recursos particulares que você pode não necessariamente observar, especialmente se vir aqui pessoalmente. Assim, um dos companheiros de ensino cada ano faz um conjunto canônico de notas, assim você não precisa manter sua cabeça para baixo, tentando transcrever mais nada que poderia acontecer aqui na sala de aula. Assim, perceber que aqueles assim-chamada [? Scribd?] Notas estão on-line, certamente os slides e código-fonte que usamos em sala de aula. Tornamos transcrições de texto integral disponível também. Então, se você me lembro vagamente alguns prazo, e quer procurá-lo um pouco mais facilmente, perceber que todos de que é pesquisável on-line. Bem como instruções passo a passo, bem. Na verdade, hoje nós começamos a olhar para uma linguagem de programação de baixo nível, logo a ser conhecido por nós como C, e é muito fácil a sorte de se perder depois de apenas alguns momentos do tempo, e, em seguida, tipo de maravilha como nós realmente comecei a um pouco mais exemplo complexa desde as mais simples. E assim nós vamos perceber cereja escolher durante a aula de alguma dos exemplos representativos, mas perceber que muito mais é também disponível on-line para que você possa trabalhar através dele no seu próprio ritmo, no entanto, você está mais confortável. Mas paramos com programas que eram apenas isso. Então eu clicar a bandeira verde, e o que este programa faz? Diz: Olá, mundo. Faz o gato dizer Olá em seu pequeno mundo na parte superior esquerda de interface do usuário do zero. Mas começamos a introduzir algumas terminologias na semana passada. E assim, coisas como esta que chamou o quê? O que poderia ser o termo genérico para isso? Sim. Um método ou uma declaração. Claro, é uma ação. Faz isto. E ainda havia outras formas para zero, além destes chamados declaração, eles também foram coisas como esta, que nós chamamos o quê? Sim. Assim, um loop. E, neste caso, essa coisa repetições, obviamente, 10 vezes. Há um bloco para sempre. Há um par de outros. E hoje vamos ver como traduzir isso para um mundo mais moderno, se quiserem, mesmo que seja vai parecer à primeira vista a ser muito mais misterioso. Mas aqueles eram de fato laços. E então nós temos coisas como este, que tinha essa forma, e essencialmente perguntas. E nos referimos a elas como o quê? AUDIÊNCIA: expressão booleana. DAVID J. MALAN: Yeah. Expressão booleana. Algo que é verdadeiro ou falso, sim ou não, um ou zero, no entanto, você quer ver o mundo. Mas nós chamamos aqueles booleana expressões, e ligá-los em condições, ou ramos. E no mundo de Zero, tudo bem travas em termos de sua forma, se faz sentido lógico fazê-lo, mas você não tem que parar em apenas fazendo uma coisa condicionalmente, você pode ter uma proverbial bifurcação na estrada e fazer isto ou aquilo se a condição é verdadeira ou não. E então, como você vai ver, se você não tiver, Você pode até mesmo ninho esses blocos. Assim arranhões cresce para preencher as formas que você pode querer inserir-lo, assim você pode realmente expressar mais qualquer lógica que você pode querer fazer. Agora algumas palavras de anúncio para tanto aqui como New Haven. Então corte começa hoje. O URL para isso é no curso de website, para aqueles não familiarizados. Seções será um oportunidade de se reunir em um ambiente muito mais intimista do que [? Sanders?] Permite, com 10 a 20 com um colegas ensinando companheiro em diferentes faixas, e ritmos diferentes, se assim o desejarem. Na verdade as ofertas de cursos seções diferentes para aqueles menos confortável, mais confortável, e em algum lugar no meio, eo papel de ouro aqui, é não há uma definição formal, mas se você é menos confortável, você meio que conhecemos. Você está um pouco sobre o intrépido idéia de entrar a pé, talvez, de volta na sala de aula, ou mostrar até uma seção no meio. Se você já esteve programação desde que você foram seis anos de idade, mais confortável, talvez para você. E se é um tipo de lance-up, isso é exatamente o que o in-between está destinado a ser. Agora, entretanto, para uma classe deste tamanho, ela nos leva algum tempo para seção todos, por isso temos chamado, seções de super, chegando este fim de semana e início da próxima semana, então dê uma olhada no site do curso para aqueles que estão naturalmente ampla, e também filmou para aqueles que não pode fazê-los. E seções si vai começar na semana três dos CS50 índice zero. Problema já está definido 0 no site do curso. E perceber que você tem nove dias de atraso neste semestre. Portanto, esta é uma atualização do passado ano, quando tivemos cinco dias de atraso. Então, se você está se perguntando, temos nove conjuntos de problemas. Você tem nove dias de atraso, cada um dos quais você só pode gastar um por semana no. Isso faz de forma eficaz todos o problema define devido sexta-feira, mas o objetivo é colocar um pouco pouco de pressão psicológica em você para tentar obter coisas em na quinta-feira porque como você vai descobrir logo, para melhor ou para pior, a maioria tudo no mundo do software acaba levando mais tempo do que se antecipa. Por isso, considero-o uma espécie de oportunidade de ajudar mesmo para direcionar quinta-feira, mas ter conforto em que, sim, tudo é devido sexta-feira. E se você submetê-los em Quinta-feira, que é maravilhoso. Não há pontos de bônus ou extras crédito para cumprir este prazo. Era para ser apenas uma muleta. E o horário de expediente, tanto aqui e em New Haven, em pessoa, se você gostaria de reunir-se com qualquer um dos nossos cursos ensinando bolsistas e CAs de assistência. Tudo certo. Então, agora, vamos fazer isso mais real. E por um momento que vai começar para obter um pouco mais misterioso, mas muito rapidamente na sexta-feira e próxima semana estaremos capaz de fazer muito mais do que poderíamos até agora no Scratch. Então, nós introduzimos último código semana, embora pictórica. Foi peças do puzzle. E nós formalizado que é algo chamado código-fonte, mas que se parecia? Bem, ele parecia um pouco algo assim. E, de fato, apenas para o tipo de provocá onde podemos ir com este. Eu estou indo para ir em frente e abrir uma janela aqui, e eu só vou escolher Novo arquivo. E eu estou indo para salvar este arquivo como algo como Olá ponto c. Mais sobre isso escolha de palavras apenas um momento. E é assim que alguém poderia vai escrever sobre um programa. Incluir padrão I / O ponto h, int main vazio, em seguida, abra chaveta, perto chaveta, printf Olá mundo vírgula, barra invertida n, ponto e vírgula, Salvar feito. ESTÁ BEM. Eu escrevi meu primeiro programa, mas vai para ser incrivelmente desapontados porque quando eu, na verdade, executar este programa, é claro, pela primeira escritura fazer Olá, e, em seguida, dot cortar Olá, e nós vamos passar por isso com muito mais detalhes em um momento, isso é tudo que ele faz. Não abrirem as janelas. Ele não faz nada particularmente extravagante. Tudo que faz é o que eu disse para ele fazer, mas como é que vamos chegar a isso? E como é que vamos construir em cima disso? Bem, vamos introduzir algumas diferentes conceitos aqui. Então um, que estamos prestes a começar usando um programa chamado compilador. Existe um compilador para Mac OS, Windows, Linux, qualquer número de sistemas operacionais, e em breve iremos apresentá-lo ao ambiente que iremos utilizar, mas um compilador é apenas um general prazo para uma peça de software que leva o código fonte e produz o código objeto da mesma. Em outras palavras, se tem como entrada a sua fonte código, algo como o que eu digitei, em última análise, produz o código objeto. E código-objeto é realmente apenas uma maneira elegante de dizer ele produz de zero e um de. Em outras palavras, a fonte código, mesmo que seja vai olhar um pouco misterioso, e um pouco menos amigável do que zero, à primeira vista, é, pelo menos, algo que nós, seres humanos podem entender. É o tipo de parece e soa como Inglês mesmo que seja muito sucinta. Considerando que a programação do zero e em one, como nossos antecessores tinha que fazer, alguns anos atrás, não era um particularmente divertido desafio. E, no entanto, este é o que o computador ainda entende. Então compilador fica-nos a partir de código-fonte do código-objeto. É como abrir um arquivo com o compilador, e quando você salvá-lo, você obter esses zeros e uns. Então, vamos ver como fazer que em apenas um momento. Mas vamos agora tentar fornecer um ponte entre a semana passada e esta, de modo que mesmo como nós ficam penduradas em coisas como chaves, e-vírgulas e parênteses, e todos estes intelectualmente interessante aspectos da programação, que muito compreensivelmente tropeçar pessoas se logo no início, perceber que todas as ideias Hoje em dia, são o mesmo que na última. Então passado, vimos este exemplo aqui, o programa Olá Mundo. Bem, a partir de hoje, se quisermos para implementar esse mesmo programa, ele vai olhar um pouco algo como isto. E nós vamos explicar em pouco tempo o que int, e principal, e vazio, e tudo isso é, mas pelo menos eu vejo aqui já o familiar Olá Mundo. Enquanto isso, coisas como função, digamos Olá, é muito simplesmente vai ser um declaração muito simples como este. Printf Olá mundo, com alguns cita, com uma barra invertida, com um ponto e vírgula, mas mais de que para vir. Loops, por sua vez, este é um circuito que, é claro, diz Olá mundo para sempre, e este está indo olhar um pouco mais estranho do que no passado, mas se eu disser algo como, ao mesmo tempo verdadeiro, I pode então imprimir Olá, mundo novo e de novo e de novo e de novo. E então, como você pode tipo de começar a inferir aqui, esta convenção de usar chaves é amável de como abraçar o linha recuada de código lá. A linha printf de código muito parecido a peça do puzzle amarelo em cima. Então, não vamos dizer para sempre, vamos dizer enquanto verdadeiro, mas vamos ver por que isso acontece em apenas um pouco. Enquanto isso, se temos um loop como este, onde você repetir algo finito número de vezes, este também é vai demorar um pouco para se acostumar para, mas vai dizer para int i recebe zero, i inferior a 10, i ++, e, em seguida, novamente printf. Mas não vai ser padrões. E para aqueles que estão familiarizados com AP Ciência da Computação, ou Java, ou qualquer número de outras línguas, quase todas estas construções até agora deve olhar principalmente familiar. Então variável. Então aqui está um simples trecho risco que define uma variável chamada contador a zero, e, em seguida, para sempre, diz o contador, e em seguida, ela muda o contador a uma. Assim que começa com zero, e, em seguida, um, dois, três. Bem, como podemos introduzir que, em essa nova linguagem um pouco semelhante? Int contador é igual a zero, enquanto verdadeiro, que é que mesmo idéia de antes de fazer algo para sempre, e eu estou indo só para printf. E agora ele está ficando um pouco estranho, i por cento, mas mais sobre isso para vir, mas essas idéias são exatamente os mesmos. Nós apenas agora têm que aderir a a sintaxe que o computador está vai exigir de nós. Expressão booleana, algo como sx menor que y, ou x menos do que Y, e y inferior a z. Vai parecer um pouco algo assim, com parênteses apenas como em matemática para uma boa medida para apenas assegurar que a ordem das operações é como pretendemos. E agora, condições. Então, se x menos de y, digamos x é menor de Y, o resto, se x for maior do que Y, dizer que x é maior do que Y, caso contrário logicamente, x tem de ser igual a y. Então você pode implementar algo assim em risco, ou você pode implementar que nesta sintaxe. E, novamente, as chaves são uma espécie de dando-nos a mesma forma como o quebra-cabeça peças, mas a sintaxe, agora, é talvez começando a seguir alguns padrões. Então, o que isso nos dê aqui? Então, nós estamos de volta, em seguida, no nosso programa principal. Vamos realmente, agora, fazer algo com ele. Assim, neste primeiro linha vemos incluem afiada, E / S padrão, dot h, e em seguida, algum ângulo esquisito suportes abaixo disso. int main vazio, e depois printf Olá mundo. Então, basta dar um passo. Alguém que nunca programou antes, explicar, pelo menos, uma dessas linhas. Usando talvez alguns de o jargão da semana passada. O que é printf, por exemplo? Sim. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Yeah. É uma função, ou uma declaração, da terminologia da semana passada. E é uma ação que está fazendo alguma coisa. Agora esta função, ou esta declaração, faz que parecem ter algum tipo de entrada? E em que sentido faz isso parecem ter entrada, em caso afirmativo? Entrada, o que quero dizer com isso? Sim. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Yeah. Então Raspe fora algumas peças do puzzle onde você pode parametrizar isso. Você poderia dizer que a repetição bloquear quantas vezes para repetir, de modo que era uma entrada de tipos, e apenas como zero teve um pouco de espaço reservado branco para o número que você digitar, nós também usar neste parênteses mundo texto para nos dar essa forma circular em que podemos ligar o nosso contributo. Afinal, dezenas de anos atrás quando esta linguagem, chamado C, foi inventado ninguém antecipou que é um de nós, estes, alguns anos depois, estaríamos deseja uma função que diz Olá. Certo? Seria bom se houvesse uma parte do enigma, ou algumas palavras-chave, que é chamado Olá, que literalmente apenas diz Olá. Mas nós não precisamos disso. Nós podemos ter algo muito mais baixo nível, como uma impressão genérico comando, que leva entrada, e imprime o que quer que nós queremos. Então, observe agora o padrão que vai começar a emergir. Parêntese aberto, perto parêntese é aparentemente abraçando a entrada, e então eu vejo duplo cita em ambas as extremidades. Há ainda barra invertida estranho n, mas espero que agora você pode começar a visualizar, pelo menos, que printf está tomando em alguma forma de entrada. Não tão amigável quanto Arranhar, mas é apenas como ter ligado algum valor lá. Tudo bem, agora vamos realmente fazer algo com isso. Então, alguns de vocês podem saber a partir de ter comprado a classe antes, conversou com os amigos, que, para muitos anos nós usamos algo chamado o aparelho CS50. Este foi um termo que descreve uma tecnologia chamado de máquina virtual, o qual é um pedaço de software que a sua antecessores iria baixar off o site do curso gratuitamente. Eles também poderiam baixar um pedaço livre de software chamada de hypervisor, algo chamado como VMware, ou VirtualBox, ou qualquer número de outras ferramentas, e em seu Mac ou PC ou qualquer computador que tivemos no ano passado e no ano passado, eles dobraria clique em um ícone para executar este software chamado de hypervisor. E, em seguida, no interior do referido programa que abriria o aparelho CS50. E o efeito que era se um predecessor de vocês foi rodando Mac OS ou O Windows, ele ou ela, em seguida, posteriormente, teve uma nova janela em seu tela em execução ambiente de CS50. Assim, uma máquina virtual permite que você execute um sistema operacional dentro de outro, e isso é exatamente o que fizemos. Durante a maior parte do que claro usar um sistema operacional chamado Linux, especificamente Ubuntu Linux, e isso é uma maneira muito agradável no ano passado de certificando-se de que todos no curso só tinha o mesmo ambiente. E você pode usar qualquer tipo de computador que você realmente quer. Entre as desvantagens, porém, foram foi como dois gigabytes Para baixar essa coisa. Não necessariamente trabalhar bem em super- pessoas cujos computadores que talvez única tinha um show ou mais de RAM, ou não muitas gigahertz de velocidade da CPU, e por isso este ano, para esta e outras razões, temos sido transição a este ambiente. O chamado CS50 IDE, que é baseado em software open source, e uma plataforma suportada que uma empresa chamada Cloud9 apoia na Europa, que permite-nos ter, essencialmente, que mesmo ambiente como na exacta ano passado, mas no assim chamado nuvem. Então, qual é a nuvem? Você provavelmente clicou seu ícone no seu Mac ou PC. O que é a nuvem? Sim? Um pouco mais alto. Sim. É apenas um monte de computadores em outro lugar que armazenam dados e execução software e semelhantes. Então, é realmente apenas para a palavra de jure de descrever [? alugados?] computadores que vivem em casa. Que você, você mesmo, não necessariamente possui. Então, quando seus dados, ou o seu programas, estão na nuvem, isso apenas significa que é em alguém computadores de outras pessoas em outros lugares, e não, muito provavelmente, no seu laptop ou desktop físico. E é isso que CS50 IDE é agora. A partir de agora você vai para um certo URL que irá apresentá-lo para, em conjunto de problemas 1, no final deste semana, que irá, em seguida, após o login, dar-lhe esse ambiente. E muito scratch como tinha uma Alguns painéis de diferentes envolvidas, o mesmo acontece com IDE do CS50 temos exatamente aquele. Na parte superior esquerda aqui, você está vai ver um navegador de arquivos familiar. Então, qualquer um dos arquivos que você colocado neste ambiente está indo só para ser listado lá. Arquivos e pastas. No canto superior direito aqui, você vai ver um lugar onde você pode realmente escrever seu código. Inicialmente em C, no final do prazo em PHP e JavaScript, e, talvez, para a final projetos, Ruby ou Python ou Java ou qualquer número de línguas são suportado nesse ambiente. Não é de todo amarrado especificamente para CS50. E, em seguida, no canto inferior aqui, especialmente para aqueles mais confortável, você tem algo chamado uma janela de terminal. E esta janela de terminal permite que você execute qualquer comando que você queremos neste ambiente de nuvem. Ele permite que você instale qualquer software adicional que você quer porque você chamado raiz ou de administrador privilégios. Portanto, em outras palavras, embora esta em última análise é hospedado na nuvem, e mesmo que nós temos simplificado que, até certo ponto por padrão, literalmente, introduzindo, graças a Dan Armendariz, e Dino, e Dan Bradley na equipe do CS50 sobre o passado muitos meses, um menos confortável Modo que esconde um monte de distrações inicialmente confusos. Tudo existe para representam um sistema de computador típico que você pode usar no mundo real. Então, o que tudo isso significa, e o que podemos realmente fazer com ele? Vamos realmente dar uma olhada em um programa. Então, eu estou indo para abrir o ambiente real aqui, que é apenas a nossa Chrome navegador, o que poderia ser o Firefox, poderia ser o Internet Explorer, ou algum outro navegador também. É cheio rastreados aqui para o momento. E eu quero realmente provocá além o que este programa era. Então, vamos dar uma olhada, por zoom em até topo, pelo o que eu fiz, e como eu cheguei aqui. Então aqui está aqueles exata mesmas linhas de código. Portanto, esta é a declaração, como você mencionou anteriormente. A função que diz Olá. As chaves, sobre linha de quatro e seis linha, presumivelmente tipo de envelope essa linha para associá-lo com a essência do meu programa. Então, na verdade, esta palavra-chave principal, que está lá em cima na linha três, você pode pensar que como o equivalente de que, quando clicado bandeira verde, bloquear no Scratch. Então, isso é tudo o que temos aqui, é quando bandeira verde clicado, impressão, ou dizer, Ola mundo. Mas vamos dar um palpite, agora, o que esta primeira linha, mais misterioso, é. Afiado incluem, aberto angular suporte, E / S padrão dot h, fechar suporte angular. O que é que talvez fazendo, especialmente se você já programou antes de qualquer outra língua. Sim? AUDIÊNCIA: [inaudível] DAVID J. MALAN: Yeah. Exatamente. Então, isso é dando-lhe acesso a um biblioteca, por assim dizer, de funções. E uma biblioteca de funções é funções que outra pessoa escreveu, quer recentemente ou há muito tempo, de modo que você não tem que reinventar a roda. Por exemplo, nós não tem que saber, em 2015, como escrever código que puts um personagem na tela. Outra pessoa que tem figurado com a função printf para que eu possa classificar de resumo longe do que, ou camada no topo de sua código, e agora apenas tomar por certo que qualquer programa que eu escrever pode imprimir algo na tela. Portanto, esta primeira linha lá na primeira etapa inclui o chamado ficheiro de cabeçalho para a biblioteca padrão. Então veja, a língua em que estamos trabalhando agora tinha uma biblioteca padrão com muitas funções. Printf é um deles, e que a primeira linha de código significa me dar acesso a essas funções, para que eu não tem que reinventar a roda. Agora vamos para a parte inferior da janela e fazer exatamente o que eu fiz antes. Um momento atrás, quando eu era zunindo através do código, digitando-o para fora pela primeira vez, I muito rapidamente digitado, faça Olá. O que foi aquilo que você diria? O que eu estava fazendo? Sim? Esqueçe. Está certo. Sim. AUDIÊNCIA: compilá-lo. DAVID J. MALAN: Yeah. Foi apenas compilá-lo. Certo? Mesmo se isso é completamente desconhecido para você, é muito Inglês como. Certamente não é zeros e uns, então eu ainda precisa executá-lo através do que os chamados programa, um compilador, que vai para levá-lo como entrada e produzir saída. E, pelo menos, por agora, em Neste ambiente Linux, mas este não é um pré-requisito, este é apenas onde nós vamos começar, você geralmente interagir com sistemas de computador como este por uma linha de comando chamada. Assim, com um piscar pronto e seu teclado, e não tanto o mouse, e não tanto janelas e ícones e menus, em vez tudo é textual. E mesmo que este se sente, à primeira vista, talvez, como um passo para trás, é realmente um muito mais maneira poderosa e expressiva do controlo de um computador especialmente como você, mesmo, tornar-se mais confortável de menos. Ele vai permitir que você faça um monte mais coisas do que apenas o Microsoft ou a Apple permite que você faça com seu sistema operacional gráfico. Então, quando eu pressione Enter, agora, nada acontece neste momento porque aparentemente o Olá programa está atualizado. E qual foi o comando Corri depois disso? Dot cortar Olá, e Olá mundo. Agora vamos dar um passo voltar para apenas um momento. Acontece que fazer Olá é apenas um forma simplificada de compilar um programa. Vamos apenas introduzir um pedaço de jargão, mas, em seguida, se afastar a partir dele, já que não é tudo o que interessante para fins de hoje. O compilador vamos começar a usar Clang é chamado, para a linguagem C. E este é um programa que é executado apenas como fizemos na linha de comando lá. E assim se eu quiser compilar um programa que eu ter escrito em um arquivo chamado Olá dot c, eu literalmente basta digitar clang Olá c inserir. O engraçado é que, por razões históricas, se eu não especificar o nome do programa que eu quero para a saída, se não o fizer especificar um nome de arquivo para esses zeros e uns, muito estranho Convenção foi adoptada anos atrás onde ele sentiu uma espécie de boa resposta no momento, bem, vamos apenas arbitrariamente chamar a primeiro programa que compilar um ponto fora. Um vem em primeiro lugar no alfabeto. Fora, é a saída. Então, vamos chamar o programa por padrão um ponto fora. E isso é bom, porque se eu quiser executar o programa neste texto base ambiente, eu só digitar dot cortar um ponto fora entrar. E ele seria executado exatamente como antes. Então vamos ver o que realmente rápido. Então, se eu voltar para o meu código-fonte no IDE CS50, e eu, em vez fazer isso, clang Olá berço c entrar, aviso nada parece acontecer, mas quase sempre Neste ambiente Linux, quando nada de ruim parece acontecer, que significa algo de bom realmente aconteceu. Se você não ver um erro mensagem, tudo é provavelmente bem. E, de fato, se eu faço agora dot cortar um ponto a entrar, eu executar o meu mesmo programa. Eu ainda tenho o programa Olá de mais cedo, porque, na verdade, é vai ser muito melhor apenas escreva fazer, em vez de se lembrar estes encantamentos de comandos, mas vamos ver como nós pode melhorar esse, no entanto. Então, este é o comando para compilar o código. Este é o comando a ser executado o código compilado posteriormente. Como posso especificar um nome de arquivo? Bem, vamos apenas introduzir mais um pedaço de jargão. Quando você está neste ambiente baseado em texto, você vai querer especificar coisas chamadas argumentos de linha de comando. Que é apenas uma maneira elegante de dizer, Ou seja, no prompt ajustar o comportamento de qualquer programa que você está executando. Então, especificamente o programa que eu sou em execução, digitando o nome do clang, é chamado o programa Clang. Portanto, esta é a velha escola ou equivalente a um clique duplo no Microsoft Word ou ícone de algum programa. Estou em vez apenas digitando o seu nome, mas nesta versão do comando, Em seguida, tenho o traço espaço Olá espaço Olá ponto c. Assim, mesmo se você nunca desempenhado neste mundo antes, apenas dar um palpite que O traço o Olá fazer? Ou o que é dizer clang que fazer? Sim. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Yeah. Ele apenas define a saída do arquivo a ser Olá, em vez do mais tolo um ponto fora. E, de fato, vamos tentar isso. Então, se eu agora fazer, em primeiro lugar vamos fazer isso, r m Olá. Isso é remover. E vai dizer remove Olá arquivo regular, que é desnecessariamente arcano, mas apenas meios que você quer excluir o arquivo, e eu digite y para sim. E note, se você estivesse olhando para cima à esquerda, o fez desaparecer de lá de cima. Deixe-me agora fazer clang traço o, e Eu estou indo para ir em frente e fazer Olá, em todos os tampões, Olá ponto c. Agora, se eu fizer barra dot Olá, o que você esperaria? Talvez seja a maiúsculas e minúsculas. Talvez não seja. Vamos ver. Não existe tal arquivo ou diretório. E nós podemos tipo de trapacear só de olhar para cima à esquerda. O que eu fiz, obviamente, salvar o programa como? Todas as tampas Olá. Então, na verdade, o que está acontecendo para fazer a diferença. Então, agora Olá mundo está de volta. Agora, isso é tudo muito bem e bom, e todos muito de entorpecimento mental, a sorte de se atolar em estes detalhes, mas compreendê-los é bom. Digitando estes cada vez mais encantamentos longos não vai ser particularmente divertimento, assim que as pessoas no mundo inventou outro programa, há alguns anos, chamado fazer, que pura e simplesmente permite que você digite make, o nome do programa você quer fazer, e fazer é inteligente na medida em que ele vai olhar em a pasta atual, também conhecido como diretório, e se você tem um arquivo Olá chamado ponto c, que é o arquivo ele irá compilar para você em um programa chamado Olá. Portanto, é uma maneira muito mais simples de fazendo os comandos mais enigmáticas que fizemos anteriormente. E temos pré-configurado CS50 IDE de saber que ele deve fazer o traço e um número de outras bandeiras, ou argumentos de linha de comando, que veremos em breve. Mas vamos agora realmente fazer algo mais interessante. Apenas digitando Olá mundo todo o tempo não é tão atraente. Então deixe-me ir em frente e mudança este programa e dizer: Olá David. Agora eu estou indo para ir para baixo aqui. Eu estou indo para ir em frente e fazem Olá. E mais uma vez, agora você está vendo fazer é mostrar-lhe o mais longo seqüência de comandos que é fazendo, porque nós temos pré-configurado dessa maneira, mas nós não precisa se preocupar por enquanto o que está fazendo diferente do que é compilando dot cortar Olá, Olá mundo. O que está errado? Sim. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Sim. Então, erro noobie. Eu observo isso é super sutil, mas o asterisco aqui, na guia, Significa apenas que você não salvou-lo, e navegadores e outros programas fazer isso às vezes. Assim, o controle s ou comando s deve salvá-lo. Agora, deixe-me ir em frente e re-executar o programa. Recompilados. Certo, por isso é um processo de várias etapas. Nenhum dos quais é particularmente complexo, mas a qualquer momento que alterar o arquivo, precisamos mudar a resultante zeros e uns, e Slash dot Olá. Uau. Então isso é muito underwhelming que acabamos impresso isso. Vamos tornar as coisas um pouco mais dinâmico, agora. Bem se vê, que gosta Zero, C suporta variáveis. E acontece que se você quiser ter uma variável que armazena, não um número como nós tipicamente fez com o Scratch, mas como uma palavra, ou uma frase ou um nome, você pode especificar uma variável para ser do tipo string. Então, vamos ver mais de estes em apenas um momento, mas verifica-se que C, e um monte de línguas como ele, têm tipos muito específicos de variáveis. Não é só gosta de álgebra, onde você receber um x, uma y, z e e esses são apenas sempre números, em uma linguagem de programação você pode armazenar números, você pode armazenar caracteres individuais, você pode armazenar palavras inteiras, você poderia armazenar imagens inteiras, arquivos de som integrais, e similar. Então, precisamos especificar o que o tipo de variável é nosso. E, por convenção, eu vou ligar para o meu s variáveis ​​só porque ele é sucinto, e s significa string. E então eu estou indo para armazenar dentro desta variável, assim como com o Scratch quando eu uso o bloco set, Vou usar o operador de atribuição em C, que bem o suficiente é o igual assinar, mas o sinal de igual faz isso. Ela se move alguma coisa da direita para o lado esquerdo da expressão. Então, o que eu fiz, para ser claro em linha de cinco, é que eu declarou uma variável. Eu disse ao computador, dá-me memória para uma variável, chame-s, e saber de antemão que eu vou estar colocando uma corda nele. E uma string é apenas um sequência de caracteres. É uma palavra ou uma frase, ou parágrafo, mas é uma sequência de caracteres. Não é números. O seqüência de caracteres que eu vou ser colocando em que variável? Bem, aparentemente, citá unquote, "Hannah". Agora, observe o padrão que está emergindo. Há uma expressão mão esquerda. Há uma expressão mão direita, separados pelo sinal de igual. E apenas dar um palpite, se desconhecido, no entanto, com o que o ponto e vírgula é fazendo. O que é que presumivelmente fazendo por nós? Sim? AUDIÊNCIA: [inaudível] DAVID J. MALAN: Yeah. É só que encerra o line. Certo? Os computadores querem estar sem rodeios disse, literalmente, o que fazer. Tal como a manteiga de amendoim e exemplo sanduíche de geléia, se você não especificar exatamente o que você pretende, ele pode ser deixado ao julgamento ou erro. O ponto e vírgula significa, é isso para este comando. Tem de ser super precisa, e é uma coisa muito fácil de sair fora. Então agora este programa não parece estar se comportando de maneira diferente até que eu torná-lo mais dinâmico. Então ao invés de disco poderia minha própria citar, deixe-me colocar um valor do espaço reservado. E verifica-se que, e eu sei disso de ter lido a documentação, e utilizada para a função anos, que printf foi projetado para ser dinâmico. Você não tem que saber com antecedência o que palavras você quer colocar nele. Em vez disso você pode ter um espaço reservado, como por cento s, que vai contar a computador, colocar uma corda aqui. Que seqüência queremos colocar lá? Will se que entre estes parênteses, que se lembrar, demarcar a entrada para uma função, se você tiver vírgula lista de coisas separadas aqui, nós realmente passar em múltiplos entradas para uma função. Então, basta um pouco de risco blocos, você talvez não ter jogado com eles por seus projetos ainda ou em todos, alguns blocos de raspadinhas tem duas entradas. Duas caixas brancas que você pode digitar números ou palavras em. Então, para não ter funções como C printf que pode levar duas entradas. E, novamente, este vírgula é separá-los. Assim, em Inglês, novamente, mesmo se você nunca programou antes, pelo que printf lógica é uma função, leva duas entradas, uma das quais é um espaço reservado, o que você espera printf vai fazer com essa entrada? Vai dizer Olá Hannah, eu espero. Então, para fazer isso, precisamos salvá-lo. Eu estou indo para afastar. Eu vou voltar para baixo aqui e dizer, fazer Olá entrar. Oh. Alguma coisa está errada, e, na verdade, este é muito grande. Tenho seis linhas de código e como 12 linhas de erros. Então, estamos ansiosos para isso. Então, o que está acontecendo aqui? Portanto, a melhor regra de ouro aqui, especialmente quando você está começando, não se distrair com o material na parte inferior. Na verdade, eu muito deliberadamente apenas rolou para cima porque muitas vezes, um computador é tudo o que não brilhante de um dispositivo. Vai ficar confuso. Se ele vê uma coisa que ele não entende, pode confundir outros linhas de código como incorretas, mesmo que eles são perfeitamente bem. Assim, você sempre quer trabalhar de cima para baixo através dos erros. E é certo que este é Super arcano no momento. Erro, o uso de não declarado seqüência de identificador. Será que eu quero dizer no padrão? Não, eu quis dizer string. E ele está apontando para, talvez seja um erro de digitação. Mais ou menos como, verificação ortográfica em um maneira muito geeky, mas a razão aqui, e você saberá que este apenas pela prática, é que verifica-se que cadeia não existe em C. Na verdade, C é um idioma em particular de idade, e é muito baixo nível, e não faz um monte de recursos que você pode ter crescido com se você tem, na verdade, programado em Java, como alguns de vocês têm, mas você pode ensiná-lo coisas novas. E, de fato, temos feito isso CS50, embora até o final do semestre, todas essas rodinhas terá sido retirado, o que fazemos nestes primeiro par de semanas inicialmente é também temos você incluir CS50 dot h. Que é um arquivo de cabeçalho. Mais sobre isso no futuro. É um arquivo que contém funções que nós escrevemos para você. E entre essas funções é funções para aproveitar entrada do usuário, como cordas, e números, e números reais, e muito mais. Mas também tem alguns atalhos. Ele define um valor booleano como um tipo de dados. C não tem verdadeiro ou falso. Mas podemos dar-lhe a noção de verdadeiro ou falso através desta biblioteca. E também não tem uma seqüência construído em até incluir esta linha. Então esta linha de código diz o compilador, hey, Clang, olhar neste arquivo para um todo monte de código que CS50 tem escrito para que qualquer pessoa que use este arquivo pode tomar para concedido a recursos eles adicionaram. Então, agora deixe-me ir em frente e limpar a tela, e se curioso Só estou dizendo controle l cada vez para limpar a tela, ou você pode digitar clara. Eu só estou indo para ir em frente agora e Tipo de fazer Olá, e está tudo bem. Ainda uma saída arcano, mas não é uma mensagem errada. Ora, se faço dot cortar Olá, e como um de lado, corte de ponto é desconhecido para a maioria. Significa apenas que, meio ponto o diretório atual. Então, se você já usou DOS ou Linux, ou Unix você poderia ter feito algo como cd dot dot, onde dot dot significa ir para trás em tempo, ou ir para trás, ou mais acima em seu diretório. Dot significa apenas olhar em o diretório atual. Eu quero Olá, o que está bem aqui. E, de fato, agora ele diz Olá Hannah. E se eu mudar isso de novo a Maria, recompilar faria Olá, Slash dot Olá, o programa continua a mudar. Mas isso ainda é uma programa muito estúpido. Se eu quiser enviar este programa, ou dá-lo a um amigo, ou dá-la a Maria ou Hannah para que o assunto, isso é bom. Eu posso personalizá-lo para ambos, mas nunca vai ser dinâmico. Eles não podem alterá-lo depois que ele é compilado dentro daqueles zeros e uns. Então, o que nós fizemos algo mais inteligente? E se, em vez de hard-codificação no programa o nome dessa pessoa, E se nós apenas obter a seqüência de caracteres sob demanda? Portanto, em outras palavras, deixe-me fazer isso. Eu estou indo para recompilar este programa. E deixe-me fazer zoom na parte inferior agora. Faça Olá barra dot Olá. Agora nada está acontecendo. Podemos obter um voluntário rápida para fazer algo acontecer? Vamos lá para cima. Qual o seu nome? PANCHO: Pancho. DAVID J. MALAN: Pacho? Vamos lá para cima. Uma vez que você se levanta aqui, este é vai ser muito decepcionante, mas é mais interessante do que eu escrever o mesmo. Se você quiser ir em frente e digite sua nome, eu fiz este programa apenas para você. Basta digitar o seu nome. Enter. Maravilhoso. Tudo bem, muito obrigado. PANCHO: Thank you very much. DAVID J. MALAN: OK. [Aplausos] Isso foi muito gentil. Aqui vai você. O que nós fizemos? Portanto, finalmente, pelo menos, fez este programa dinâmico. Agora ainda é, certamente, por underwhelming design, mas finalmente temos a capacidade agora a escrever código de antecedência, muito como os autores do printf, e, em seguida, dinamicamente adaptar com base na entrada somos entregues, quer pelo programador, ou pelo ser humano que é, na verdade, interagir com o programa. Então, vamos tentar agora, na verdade, para fazer algumas outras construções e ver se nós não podemos fazer os programas -se mais sofisticada. Então, vamos em frente e em vez de escrevendo isso a partir do zero, Eu estou indo para ir para hoje código fonte, e tudo isto está disponível no curso de site, e você pode arrastar e soltá-lo em seu próprio ambiente sexta-feira, uma vez vir problema 1 conjunto dá-lhe a instruções, ou você pode fazê-lo na linha de comando como bem, mas mais para vir no jogo 1 p. Vamos ver o que está neste programa aqui chamado, somador ponto c. Agora eu já comentou -lo, mas o que há de novo? À primeira vista, o que linha de código é absolutamente novo? Provavelmente não fundamentalmente estranho agora. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Sim, assim int x é igual a obter n. Nós nunca vimos nada disso antes, mas é provavelmente int o símbolo para que tipo de variável, [? de?] um número inteiro. Assim, int por inteiro. Ele está apenas sendo mais sucinto. x é apenas arbitrária. X e Y e Z são ainda bastante razoável para números, mas geralmente nós vamos usar palavras uma vez nossos programas se tornam mais complexas. Obter int, é claro, muito parecido com corda get, é provavelmente vai obter um int do usuário, e, em seguida, vamos fazer a mesma coisa com y. E, aparentemente, embora esta última linha, 24, parece mais complexo, ele vai dizer a soma deste e que é essa outra coisa. E notem por cento i provavelmente denota o quê? Que papel por cento i aparentemente servir? É apenas espaços reservados. Certo? S por cento foi para corda, i por cento é para inteiro. Não vai ser por cento f para valor de ponto flutuante que é apenas um número com um ponto decimal. Em outras palavras, um número real. Então vamos realmente compilar este programar rápido real e fazem víbora. Whoops. Boa oportunidade. Então, observe aqui, todo esse tempo meu usuário nome para essa conta é jharvard. Estou em CS50 IDE, aka IDE50. E agora aqui em azul, é uma menção, mas do meio ambiente, de onde eu sou. E, de fato, se eu aumentar até o topo aqui, repare que eu tenho uma IDE50 e eu vejo esta palavra, se você tipo de virar a cabeça para o lado, espaço de trabalho. Em poucas palavras, o fato de que Eu estou vendo til barra de espaço de trabalho significa que no presente texto ambiente de comando com base, Eu estou no equivalente de texto este gráfica pasta aqui. Então, quando eu faço barra dot víbora, ele está dizendo nenhuma regra para tornar alvo parada víbora. Eu não sei o que isso significa, mas é ruim por algum motivo. Não existe tal arquivo ou diretório é ainda mais claro. Onde está, então? Com base em onde eu cliquei para abrir o arquivo antes. Onde poderia estar? É provavelmente na fonte um w, para a quarta- e eu posso vê-lo, de fato, se eu abrir isso. Há somador de ponto C, mas em Neste ambiente baseado em texto, novamente, eu tenho que ser super explícito. Se eu quiser alterar os diretórios em fonte de uma quarta-feira, eu preciso digitar, cd fonte espaço um Quarta-feira e entra agora meus prompt muda para me dar uma dica visual que Estou, na verdade, em outro lugar no meu ambiente, mas agora eu posso fazem víbora, parece funcionar, dot cortar víbora, me dar um inteiro. Uma. Dois. A soma de um e dois é três. Mas se eu não cooperar, vamos ver o que chegar int faz. Dê-me um inteiro. Não. Tente novamente. ESTÁ BEM. Bem. 50. 50. Tudo certo. Por isso, finalmente coopera. E isso é parte do funcionalidade que estas funções pode ter construído em para você. Então, dentro da implementação de obter int, o que de programação construir desde a semana passada é, provavelmente, lá para obrigar este comportamento de repetição, repetir, repetir? Sim, há, provavelmente, algum tipo de loop. Vai olhar sintaticamente diferente a partir de blocos de raspadinhas, mas isso é de fato o que está dentro do arquivo. E em algumas semanas nós vamos realmente olhar para a biblioteca CS50 como o que está dentro, mas há um loop impor exatamente isso. Vamos jogar um pouco bobo jogo aqui com este arquivo. Condition Zero ponto c. Nós apenas estamos indo em geral começar a contar em zero. E eu manter a rolagem passado algum do material na parte superior. Em azul aqui, com toda demarcada destas estrelas e as barras, aqueles de vocês que programar antes, o que é isso? Por que continuamos a ignorar sobre ele? O quê? AUDIÊNCIA: É um comentário. DAVID J. MALAN: Yeah. É só um comentário. Este é um comentário para o ser humano ler, que, no nosso caso, diz-nos que o nome do arquivo é, quem o escreveu, eo que ele faz, de modo que você não tem para ler o código para saber o que este arquivo é tudo. É apenas uma descrição, mas funcionalmente é irrelevante. E eu posso até mesmo excluí-lo meu arquivo e ele não tem impacto. As linhas são estes suculentos primeiro dois aqui, agora. void main int é o equivalente da nossa bandeira verde quando clicado, então vamos deixar que seja para hoje, e nós vamos voltar, eventualmente, sobre o que int e vazio são, mas agora, perceber o que eu fiz aqui também, você também pode, se você tem um em linha comentar, se você tiver um que você quer compartilhar sobre uma determinada linha de código, convenção em C é fazer barra slash, e, em seguida, algumas palavras sucintas, não uma frase completa, geralmente não um parágrafo, que apenas explica para você, ou seu TF, ou outros leitores ou colegas, o que o código está fazendo. Então ao invés de ter que olhar para isso e inferir a partir de linhas nove e 10, o que é esta fazendo, na linha oito Acabei de dar um comentário a pedir ao usuário para um número inteiro, então eu não tenho que pensar muito sobre o que linhas nove e 10 são. Eu só sei que isso é o que coletivamente eles estão fazendo. Como? Bem, aqui está o prompt. Aqui é a obtenção do int. E com base na anterior comportamento, parece que get int é inteligente o suficiente para se certificar de que o humano coopera e dá-lhe um inteiro. Mas agora vemos isso. E esta é uma reminiscência do Scratch. Eu estou dizendo que eu sou analisando a entrada do usuário, mas um pouco imprecisa. E isso aparentemente em C é como expressamos uma se mais, de uma sucursal, uma bifurcação na estrada, mas eu dizer um pouco imprecisa. Qual é o erro neste programa? Sobre ainda mais para trás? Sim. AUDIÊNCIA: [inaudível] zero. DAVID J. MALAN: Yeah. Então, se eu digitar zero, vamos considerar exatamente nesse caso caso, ou canto, Se você for. Então, se eu digitar zero, qual dos blocos vai aparentemente agarrá-lo? O caso ou a pessoa? A outra coisa, e ele vai dizer, você escolheu um número negativo. E, de fato, zero não é suposto para ser positiva ou negativa, e de modo que seria erroneamente. Isso seria um erro. Então, como podemos corrigir isso? Alguém que nunca tenha programado antes? Você quer-- AUDIÊNCIA: [inaudível] DAVID J. MALAN: Retraindo? AUDIÊNCIA: [inaudível] DAVID J. MALAN: Oh, você tem? Alguém que nunca tenha programado antes. Quer tentar sua mão em este, com a camisa vermelha? Vamos lá para cima. Oh yeah, vamos lá para cima, se você não se importa. Por isso, nunca ter programado antes, o que é seu nome? LAUREN: Lauren. DAVID J. MALAN: Lauren, tudo bem. Então corrigir esse bug para nós. Você não vi C, presumivelmente, e, provavelmente, nenhum outro idioma. Então corrigir esse programa para nós. Prazer em conhecê-ya. Sem pressão. LAUREN: Yeah. DAVID J. MALAN: Mas, novamente, se este gamble correr conforme o planejado, o takeaway aqui vai ser, apenas uma vez, para iniciar a notar padrões e deduzir sintaxe existente de que outra forma você pode expressar mesmo, sem trocadilhos, a fim para capturar algum cenário adicional. Então, nós estamos dizendo else if. printf, bom. E observe com CS50 IDE e IDE frankly-- significa Integrado Ambiente de desenvolvimento. É apenas uma maneira elegante de dizer um programa que ajuda você programa. Ele faz coisas como usuário amigável quando você digitar um parêntese, ele dá-lhe automaticamente o outro. A presunção é que você é eventualmente vai querer escrever que, e ele também faz isso com aspas. Então, eu gosto linha 23. 99% do caminho até lá. Alguém quer dialogar com uma dica? Ouvi ponto e vírgula da platéia. Boa. Assim que termina que. E agora, eu só tenho um pouco consternação com a linha 21. Como queremos expressar isso? Que pergunta queremos de pedir, que você acha? Então anteriormente que fez a pergunta, se n for maior do que zero, fazer isso. Else, fazer isso. Então, precisamos escolher um pergunta a fazer aqui. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Good. Assim, se n for igual a zero. Excelente. Então, vamos fazer uma pausa aqui. Muito obrigado por esta enfrentando. Deixe-me dar-lhe um pouco merecida bola de stress, talvez não. Então, nós estamos quase lá. Na verdade, Lauren, se você não mente, deixe-me fazer uma emenda aqui, apenas para ser mais consistente, mesmo com o que vimos em risco, o que eu quero fazer com linhas 21 e 24, apenas com base novamente sobre como nós fizemos isso em risco, talvez? AUDIÊNCIA: Mova-se. DAVID J. MALAN: Sim, movê-lo para cima. Assim, a condição mais, a terceira, ou quarto, quinto ou, ou ramo final, deve realmente vir depois, e isso é só por convenção, só porque se você quiser. Então, eu preciso fazer este ajuste. E eu preciso para colocar o meu chaveta de volta aqui. E agora, este programa irá compilar. Estamos tão perto, mas não há um erro muito, muito sutil. Vamos ver o que acontece. Primeiro, deixe-me ir em frente e diminuir o zoom. Eu estou indo para ir em frente e digite make condição zero. Oh, eu menti. Agora, o compilador é realmente muito inteligente. E eu realmente não entendo é mensagem de erro. Usando o resultado de uma atribuição como condição sem parênteses, aparentemente é má. Mas o quê isso significa? Bem novamente, procurando por padrões no código que vimos antes, o que é linha 17, na verdade, fazendo, embora Lauren destina ligeiramente de outra forma? Sim. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Yeah. Então lembre-se o sinal de igual, aparentemente como nós usei isso antes, não é igual. A sua atribuição, da direita para a esquerda. Assim a linha 17 no momento é uma condição, e é execução de código dentro dos parênteses, mas quando esse código é executado, o que está acontecendo com o valor de zero? O que está a acontecer para o valor de n? Tornando-se zero. Portanto, se se tornar n é zero, e de novo, como por na semana passada, nós geralmente dizem que o zero é falsa e uma é verdadeira, ou sim é um e não é zero. Assim, o verdadeiro eo falso, e um 0. Se n a partir de linha 17 tem sido dado o valor 0, é zero verdadeiro? Não. Por definição, zero é falso. Essa é a convenção que estamos vai agarrar-se a seguir em frente. O mesmo acontecerá com as linhas 18, 19 e 20 sempre aplique agora, logicamente? Eles não podem. Por isso, a pergunta mas não com bastante precisão, e você não sabe isso, a menos você já viu isso, a solução em C é quando você quer expressar igualdade, você diz iguais iguais. Então, o sinal de igual já foi usado para cima por cessão, da direita para a esquerda. É igual a é igual a meio iguais. E se você realmente quer que sua mente para ser dobrado, em JavaScript e PHP, há igual iguais, o que é igual significar algo completamente diferente, mas nós vamos chegar a isso em pouco tempo. Portanto, esta é uma solução simples, mas perceber super fácil de fazer esse erro, e depois perguntam e luta para minutos, se não uma hora, porque é o meu código não execução como eu pretendo? É porque você não disse ele exatamente o que você quis dizer. Assim que foi quase perfeito, e foi ótimo que nós tropeçamos por estes dois pouco coisas, porque agora se corrigi-los, e eu faço condição de zero dot cortar condição zero, Eu gostaria um número inteiro, por favor. Vamos ver. Não. Vai me obrigar a fazê-lo. Então, 42. Eu escolhi um número positivo. Então, agora como faço para provar este programa correto? Se você é um matemático, você não pode realmente provar isso por tentativa e erro, certo? Você pode prova não apenas por exemplo, mas pelo menos como um programador que não estamos vai tentar provar por enquanto que esta é realmente correto, mas eu provavelmente deveria testar alguns casos representativos. Eu testei 42. Eu podia testar 43. Eu podia testar 44. Teste 45. Certo? Mas eu poderia fazer isso um tempo muito longo. O que seria um pouco mais casos interessantes de tentar? AUDIÊNCIA: [inaudível] zero. DAVID J. MALAN: Então zero. Certamente. E bom, temos que ter isso, desta vez, graças ao novo código de Lauren. O que é mais um bom caso para tentar? AUDIÊNCIA: uma negativa. DAVID J. MALAN: uma negativa, e talvez algo um pouco maior, então talvez negativo 42, mas, em geral, quando testar seus programas avançar, você está vai querer pensar para si mesmo, como o que são os casos fundamentais diferentes. E ouso dizer que um caso negativo, um caso positivo, e um caso de zero praticamente rodadas estes para fora. Vamos olhar para uma variante deste embora. Condições um. Esta é uma solução correcta aqui, de modo que você vai ver dois e on-line, se você caminhar através da orientações, a vontade geral incrementar estes passo a passo até que obter exatamente a abordagem certa. E se a gente queria perguntar duas perguntas ao mesmo tempo? Deixe-me abrir esta vez. Non-switch, por razões vamos ver outra vez. O que há de novo sintaticamente aqui? Atualmente estou jogando um jogo onde o computador está dizendo me, dá-me um número inteiro entre um e 10, e então eu estou julgando a entrada do usuário. Em Inglês, com base em o código que você vê aqui em azul, o que é este programa está fazendo? AUDIÊNCIA: [inaudível] colhidos um número grande ou pequeno. DAVID J. MALAN: Yeah. É só se pronunciarão Eu escolhi um grande, ou médio, ou um número pequeno com base em uma muito definição arbitrária de pequeno, médio, e grande aqui, mas aviso prévio a sintaxe que é novo é este. Não há menos de int ou igual a sinal, ou maior do que ou igual a assinar, onde é uma sobre a outra, que você pode expressar em como o Microsoft Word. Assim, em uma linguagem de programação você normalmente apenas fazer dois personagens, um após o outro. E o que isso provavelmente representam, comercial e comercial. AUDIÊNCIA: [inaudível] DAVID J. MALAN: Yeah. Significa apenas que e porque Acontece que os autores do C utilizado um único e comercial, que você pode pensar seria perfeito para a noção e de, já é usado para cima, E comercial e comercial, na verdade, tão capta o caso que realmente quer. Então, vamos agora tropeçar em duas coisas. Deixe-me ir em frente e abrir uma. Algo que é um pouco preocupante. Imprecisão ponto c. Deixe-me apresentar duas coisas aqui. Um, aviso que podemos fazer matemática, como apenas como antes, quando fizemos sinal de adição de dois números, X e Y. O que é este programa, aparentemente fazendo? Eu não tenho comentou ainda, e eu tenho apresentado por cento f, mas eu rapidamente disse anteriormente por cento f significa ponto flutuante valor, que é o número real. Algo com um decimal pontos, que não é um número inteiro. O que você acha que este programa é tentando me mostrar na tela? Sim? AUDIÊNCIA: O resultado de um sobre 10. DAVID J. MALAN: Yeah. Qual é o resultado de um dividido por 10. Certo, porque todos vocês têm, provavelmente, crescido sabendo que um mais de 10 é o que? Sim, é apenas 1/10 ou 0,1. Certo? Então, vamos ver o que isto realmente é. Então deixe-me ir em frente e salvar este. Deixe-me ir para baixo aqui. Faça barra imprecisão dot imprecisão, e aviso prévio, também, em um ambiente Linux, você não tem que digitar a imprecisão e levá o dia inteiro. Geralmente, se você pressionar Tab, ele vai terminar o seu pensamento para você, com base nas palavras que sejam disponível no diretório atual. ESTÁ BEM. Então, você estava certo. Uma dividido por 10 é, de facto, 0,1. Mas eu sou um pouco curioso. E acontece que printf suporta alguns recursos através do qual você pode especificar mais de o número padrão de pontos decimais. Então, se eu quero ver 10 decimal Os pontos que eu posso fazer por cento, para o símbolo de espaço reservado, dot 10 para, dá-me 10 pontos decimais, e, em seguida, ainda de ponto flutuante valor, e, como um aparte, o que é essa barra invertida n aparentemente continuamos usando? Acontece que é uma símbolo para uma nova linha. É a maneira muito explícita de dizer ao computador, mover o cursor para a próxima linha depois que você fez. E vamos ver o que acontece quando nós não fazemos isso. Deixe-me fazer recompilar imprecisão. Agora dot cortar imprecisão. ESTÁ BEM. Ainda direita. Uma dividido por 10. Agora eu estou ficando um pouco curioso, no entanto. E se eu olhar 20 decimal salienta, recompilar, reprise, e como um aparte para velocidade, você também pode usar seu cima e para baixo setas para rolar através de sua história, assim você não tem que manter redigitar esses comandos, digite. Huh. Eu não aprendi que na escola. Tudo bem, então deixem-me ver como 29 lugares fora. Talvez seja apenas um acaso. Talvez o meu computador está agindo de forma estranha. Isso não é uma coisa, certo? Ele está fazendo algo de forma determinística. Então faça imprecisão. OK, isso é confuso. Então, o que está acontecendo? Então, aparentemente, o seu professor foi deitado para você todo esse tempo para razões que veremos em breve. Mas vamos terminar com um outro programa. Esta é uma pequena programas alguém escreveu há alguns anos, e é realmente parte de um concurso. Ninguém realmente escreve código como este, e se o fizer, este é um problema estilìstica. Mas as pessoas fazem isso para exigir direitos. Para escrever o mais confuso programa que procura no entanto, faz algo interessante. E a nota eu pensei que ia sair em hoje, antes de Colton joga nós aqui fora, é para executar este programa, que, mesmo em apenas usando C neste texto-base meio ambiente, nós, isto dá. Droga. [Risos] Estar por. [Inaudível] c traço l m. Você vai ver a mágica encantamento que veremos em breve. [Inaudível] Tudo bem. E agora você pode até mesmo fazer coisas como esta. É isso aí. Para CS50 nós, vai vê-lo na sexta-feira. [Música tocando] [Aplausos]