DAVID J. MALAN: Então este é CS50. E isso foi o próprio Colton Ogden do CS50, por mais de quem é a música que você pode download em soundcloud.com/cs50. Então, hoje vamos nos concentrar ainda mais sobre a arte da programação. E tomamos onde paramos na semana passada, com foco em zero, o que foi isso linguagem de programação gráfica. E levar as coisas a um nível inferior, usando uma programação mais tradicional linguagem conhecida como C. Mas ao longo do caminho, percebendo que as mesmas idéias que falou na sexta-feira deverá repetir-se não só no presente linguagem C, mas na maior parte todos os outros que olhamos para este semestre. Então chamamos essa coisa aqui o que da última vez? Este é representante de um comunicado. Por isso, chamou este comunicado. E ele faz alguma coisa. É uma instrução que um computador ou arranhão pode executar. E a partir de agora, vamos também começar chamando algo assim uma função, por razões veremos em breve. Enquanto isso, vimos coisas como esta. E estes são geralmente conhecido como o que construir? AUDIÊNCIA: Loop. DAVID J. MALAN: Então um loop. Assim, bastante simples. É, literalmente, faz o que diz. E em risco, se você quiser empinar mais peças do quebra-lá, a peça vai crescer para se encaixar. E vamos ver no que C nós podemos fazer a mesma coisa. Outro tipo de circuito, embora, em risco pode ser para sempre, ou há qualquer número de outras abordagens. Mas vamos dar uma mais olhar generalista, com um rosto que é provável bastante familiar, em laços mais geral. Mark Zuckerberg: Uma coisa que computadores é realmente bom é comandos de repetição. Como uma pessoa, você pegaria realmente entediado, se você tinha que fazer a mesma coisa muitas vezes em uma fileira. Mas um computador pode fazer a mesma coisa milhões ou até bilhões de vezes, e não se cansar, e ser capaz para realizar essa vontade muito bem. Assim, por exemplo, se eu queria desejar a todos no Facebook um feliz aniversário enviando um e-mail, ele pode me levar mais de um século para escrever, na verdade, fora todos esses e-mails para todos. Mas, com apenas algumas linhas de código, eu posso ter um sistema de enviar um e-mail para todos no Facebook desejando lhes um feliz aniversário. Então é isso que laços são e por que eles são valiosos e algo que os computadores podem fazer muito bem. DAVID J. MALAN: Então, se você foi o destinatário de alguns dos CS50 e do Espaço de Dropbox de tarde, que na verdade é precisamente o que nós fazer, usando o código bem assim. Nós essencialmente ter um grande planilha em que pessoas foram entrando seu nomes e endereços de e-mail. E nós escrevemos um pouco de código que podem interagir sobre esses endereços e cuspir endereços exclusivos em Caso alguém submetido várias vezes. E depois disso, enviamos uma automatizada e-mail do bot do CS50, incluindo o código do cupom. Agora nós também analisaram Nesta construção da última vez. E este é um especial exemplo do que? Então, sim, uma expressão booleana. E a forma se entende para capturar isso também. Todas essas questões do formar verdadeiras ou falsas em risco vai parecer um pouco algo como isto. E chamamos isso de uma expressão booleana. Isso é de fato verdadeiro ou falso, sim ou não. É uma maneira de responder a uma pergunta. E Enquanto isso, você pode usar estes booleana expressões dentro de construções como estes, que de Claro que são condições ou ramos, proverbial garfos na estrada. E eles podem olhar não só como este, mas eles também podem ter elses que lhes estão associados. E você pode realmente ter uma de três vias bifurcação na estrada ou um quatro garfos na estrada, simplesmente por nidificação destas coisas, como você verá em risco se você não tiver já. E, como você pode fazer em C também. Vamos dar mais generalista olhar para um alumnist, assim, que pode apresentar uma abordagem diferente para essas coisas chamadas condições. BILL GATES: As pessoas fazem decisões todos os dias. Por exemplo, antes de ir para fora de você meio que temos uma instrução if que diz: Se está chovendo, então eu Preciso ter minha jaqueta. E os computadores são surpreendentes, uma vez que decidir esses tipos de declarações, que se pode executar de forma fiável essas coisas a uma velocidade inacreditável. E assim, um programa de computador realmente é um pouco de matemática e alguns if onde a decisão seja feito. DAVID J. MALAN: Assim como você deve saber, que era pessoas como Bill Gates, Paul Allen, e outros que realmente deu início à chamado computador pessoal revolução, há alguns anos. Eu pensei, antes de mergulhar em alguns administrivia, nós relacionar um conto do Albuquerque, New Mexico Museum of Natural History e ciência, onde alguns dos Bill Gates e primeiras histórias de Paul Allen são contadas como temos agora PCs de hoje e Macs e muito mais. Para isso, porém, precisamos de dois voluntários que têm muito boas vozes de narração para ler um roteiro em voz alta. Tudo bem, que tal em voltar para lá. Vamos lá para cima. E que tal na frente aqui. Vamos lá para baixo. Tomem seus lugares aqui. Como vocês vêm para cima, um casal de avisos administrativos. seccionamento, o processo de escolha de uma secção, vai iniciar este De quarta a sexta-feira. Mais sobre isso no próximo Quarta-feira em palestra. Super seções, entretanto, são algo que nós oferecemos na próxima semana em que toda a classe é convidado para participar de escala bastante grande seções, uma mais confortável, um menos confortável. E vamos anunciar as indicações de que, assim, no final desta semana. Seções Enquanto isso, si, vai começar na terceira semana do curso, o grau zero, o que significa que esses são um par de semanas fora. Então não se preocupe. Você ainda não perdeu qualquer coisa nesse sentido. Enquanto isso, entretanto, se você tiver dúvidas administrativamente, enviar e-mail mim e Devon e Gabe e Rob neste endereço aqui. Finalmente, conjuntos de problemas 0 é, é claro, para fora. Você deve ter notado que no site do curso. Deve fornecer-lhe todas as respostas para as perguntas você pode ter ao longo do caminho para começando com o conjunto de problemas. Mas se você se encontrar precisando de uma mão amiga, por todos os meios assistir o horário de expediente, Segunda, terça, quarta, quinta desta semana, à noite em quatro salas de jantar. Veja que URL lá pelas indicações de onde o horário de expediente será. Agora vamos conhecer o nosso dois convidados aqui hoje. Qual o seu nome? JAY PAUL: Jay Paul. DAVID J. MALAN: Jay Paul, prazer em conhecê-lo. HIKARI: Hikari. DAVID J. MALAN: Hikari? HIKARI: Hikari. DAVID J. MALAN: Hikari. Prazer em conhecê-lo bem. Jay Paul e Hikari têm em frente nestes música se dois roteiros que eu impressos esta manhã a partir do Novo México Museu de História Natural e da Ciência. E o que eu pensava Eu faria na sobrecarga é acompanhar a sua recitação do roteiro e esta história com algumas imagens visuais, sem surpresas. E o que eu tenho feito com antecedência é prehighlight em seu roteiro o que você deve ler, eo que você deve ler. E nós vamos essencialmente parágrafos apenas alternativos. Por isso, é muito parecido com que você pode ter feito na aula de Inglês. Isso é realmente obrigar o público a acreditar em seu conto aqui. Devemos nós? Assim, a história aqui é que temos uma BASIC, e começa em Cambridge. JAY PAUL: Era inverno de 1974, em Cambridge, Massachusetts onde os invernos podem ser frios. Um barbudo, de cabelos compridos abandono da faculdade chamado Paul Allen foi drudging através de Harvard Square, absorto em seus pensamentos. Sua principal preocupação naqueles dias era como conseguir seu amigo, Bill Gates, a abandonar a escola e ir no negócio com ele. HIKARI: Os dois já tinham ido através de uma série de empreendimentos comerciais juntos, com início às Lakeside escola em Seattle, onde foram pagos em tempo de computador livres para testar um computador PDP-10 a uma hora local partilha empresa. O plano mais recente havia sido a parar escola e formar uma empresa de software. Allen tinha deixado Washington Universidade Estadual. Mas, no último minuto, Portões decidiu ficar com Harvard. JAY PAUL: Naquele dia, cruzando Harvard Square, Allen viu a janeiro de 1975 da Popular Electronics com o título de parada terra, Kit Primeiro minicomputador do mundo para rivalizar Modelos Comerciais. Sob a manchete era uma imagem de uma pequena caixa enfeitadas com luzes e interruptores. Foi chamado o MITS Altair 8800. E Allen sabia que isso era o que ele estava procurando. HIKARI: Dias de discussão seguiu. Allen e Gates entendeu a importância do Altair. Tinham falado muitas vezes sobre microprocessadores e estavam esperando para ver o que seria feito com eles. Agora havia um kit de minicomputador em capa da eletrônica popular. Aparentemente, não tinha ainda software. Eles imaginaram uma nação de programadores descendo sobre MITS. E assim eles chamaram Ed Roberts, o chefe da empresa, alegando ter uma versão do Linguagem de programação BASIC quase pronto para o Altair. Eles não o fez. E Roberts deve ter sabido que não. Ele estava ficando 10 chamadas por dia a partir de pessoas que tinham um BASIC quase pronto. E sua resposta estoque era ", a primeira pessoa que aparece com um trabalho BASIC recebe o contrato. " JAY PAUL: Gates e Allen nunca tinha visto um Altair. Eles nunca tinham visto o Intel microprocessador 8080 no coração do Altair. Mas um par de anos mais cedo Allen tinha escrito um programa em um computador mainframe que emulado a operação de um Intel anterior microprocessador. E desta vez eles faria a mesma coisa. HIKARI: Com um processador Intel 8080 Manual ao seu lado, Allen sentou-se em um Harvard PDP-10 computador e escreveu o emulador e software ferramentas necessárias para fazer a programação. Enquanto isso, Gates, parou de ir às aulas e se dedicou para projetar o BASIC, usando cada truque ele sabia que para obter o tamanho abaixo de 4 kilobytes. JAY PAULO: Fora de Albuquerque, Ed Roberts recebeu um telefonema de Gates pedindo detalhes sobre como o Altair tratadas rotinas específicas. Ninguém nunca tinha perguntado isso antes. E Roberts começou a se interessar. HIKARI: Com o desenvolvimento ferramentas eo projeto pronto, Gates e Allen escreveu o código no PDP-10, alistar outro estudante de Harvard, Monte Davidoff, para escrever rotinas de matemática. Depois de uma noite final programação, Allen entrou num avião para entregar sua BASIC para o MITS. Passou o avião enfrentar preocupante. E de volta em Cambridge Gates estava preocupando. Eles testaram seus BASIC e ele tinha trabalhado no emulador. Mas e se o emulador estava errado? JAY PAUL: Quando o avião aproximou Albuquerque, Allen percebeu que sua BASIC, agora perfeitamente contido em um pequeno rolo de fita de papel perfurado, que será inútil sem um separado programa, chamado de carregador, que diria o Altair como ler a ser uma fita de papel introduzidos na máquina de teletipo. Tirou o notebook e rapidamente rabiscou um programa gerenciador de em linguagem Assembly, então manualmente trasladado para nos 1s e 0s Altair entenderia. HIKARI: Allen estava esperando um , pouco, empresa de alta tecnologia limpa executado por homens de terno. Assim, ele ficou surpreso quando encontrou Roberts ele no aeroporto parecendo um rancho mão. Roberts também foi surpreendido. Quando ele soltou a Harvard programador em um hotel caro, Allen teve de confessar que ele não podia pagar o quarto. JAY Paulo: MITS, em si, foi localizado em um shopping center empoeirado. Dentro de um desordenado bancada era um Altair carregado com 5 kilobytes de memória e ligado por um cabo a um teletipo. Roberts e Engenheiro-Chefe, Bill Yates, esperou ansiosamente como Allen alternado seu carregador programa para o Altair. O teletipo começou chugging que puxou a fita de papel através do leitor de cassetes. Levou 15 minutos talvez para carregar o programa. Em seguida, o teletipo impresso abruptamente um prompt de memória, em seguida, uma linha de pronto, e Allen começou a digitar Comandos de alguns testes. Para espanto de todos, o software trabalhado. Houve erros, é claro. Mas o principal era que funcionava. HIKARI: Mais tarde, em seu caminho para uma $ 3,00 almoço no Pancho, uma vespa voou na janela da picape caminhão e picado Allen no braço. Mas naquele momento nada poderia estragar o clima. O Altair agora teve sua BASIC, o primeiro software comercial para uma casa computador, feita por Paul Allen e Bill Gates, fazendo negócios como Microsoft. DAVID J. MALAN: Muitos graças aos nossos dois leitores. [Aplausos] DAVID J. MALAN: Agora você tem a sua escolha, antes de sair, de um brilhante ou um brilho no dark-- oh, espere um segundo, wait-- brilhante e um brilho no escuro elefante da própria Cheng Gong do CS50. HIKARI: Ah, obrigado. David J. MALAN: Todos certo, muito obrigado. [Aplausos] DAVID J. MALAN: Então verdadeira história. Isto é para dizer que todos estes máquinas e a facilidade com a qual usá-los agora e tomar por certo, muito começou aqui, a poucos passos deste teatro real. E hoje, se você não foi, este é Maxwell Dworkin, o computador ciências edifício, também ao virar da esquina. E no segundo andar deste prédio não pendurar três páginas a partir do código-fonte original que Bill Gates e Paul Allen escreveu. Na verdade, se você usar zoom em que você pode ver não só seus nomes no Tipo de original, mas também suas assinaturas que adornavam a Alguns anos atrás, quando visitou pela última vez. Mas o que era particularmente atraente sobre isso é o que se propôs a fazer era escrever um programa que permitir que outras pessoas a escrever seus próprios programas. Na época tudo o que havia com esta máquina Altair feita pela MITS. E tudo o que precisava era uma maneira de tornando mais fácil para amadores e pessoas gostam de nós nesta sala para realmente programa que sem compreender necessariamente Código Assembly, ou máquina código, ou Deus me livre, 0s e 1s. Nós, programadores, como aqueles nesta sala, nós quero ser capaz de expressar nós mesmos muito mais como código pseudo mesmo que seja um pouco mais nit exigente do que falamos na semana passada. Não quero escrever um código como este, que Paul Allen e Bill Gates fez. Nós, ao contrário, quero escrever um código que parece um pouco mais amigável. Agora, esta é uma linguagem conhecida como BASIC. E os números de linha não são o que você usar simplesmente numerar as linhas de código que você está escrevendo. Não precisa nem fazer isso nos dias de hoje. Mas você pode ver aqui como print "Olá, mundo" seria, de fato, presumivelmente, imprimir apenas isso. E então o que Bill e Paul fez foi capacitar as pessoas para escrever um código como este em vez de-- se você der uma olhada no ciência da computação wall-- código como este. Na verdade, CS50 recentemente teve a oportunidade sentar-se com o professor Harry Lewis no departamento de Ciência da Computação, que realmente ensinou Bill Portões há alguns anos, e está aqui diante de esses três páginas de trechos. Vamos dar uma olhada. HARRY LEWIS: O que você tem aqui é um perfil de uma peça inicial de software escrito por Bill Gates e Paul Allen, fundadores da Microsoft. Assim, o código é interessante por duas razões. Em primeiro lugar, transformou-se O primeiro produto da Microsoft, que era um intérprete para a linguagem de programação BASIC. E em segundo lugar, esta foi uma das primeiras tentativas para criar um intérprete de modo ordinário pessoas poderiam usar computadores pessoais. Então Bill Gates era um graduação em Harvard. Comecei a ensinar em Harvard em 1974. Isto foi feito em 1975. Assim foi no início de sua carreira e no início da minha carreira. Eu realmente ensinou Bill em um curso em torno deste tempo. Paul Allen não era um Harvard estudante, mas ele tinha sido uma escola colega de classe de Bill Gates. Se você vir e olhar no perfil, você vai realmente encontrar uma terceira nome, Monte Davidoff, que era colega de classe de Gates aqui em Harvard. OK, então aqui está um interessante comentário aqui. Ele diz: "Em 4K pode excluir raiz quadrada mas para loops ainda deve funcionar. " OK, então o que significa que há que duas maneiras de compilar este programa. Um era para ser executado em uma versão deste computador Altair que apenas tinha 4K palavras de memória, 4096 palavras de memória. Mas a versão teve grande 8K. E então o que isto diz é que na versão 4K você tinha que excluir alguns código para torná-lo apto. E uma das coisas que seriam excluídos seria a rotina de raiz quadrada. Mas, aparentemente, a loops ainda deve trabalhar, mesmo quando você está compilando para baixo para apenas a versão 4K do computador. DAVID J. MALAN: Então um dos temas, como veremos em ciência da computação, É essa noção de estratificação e abstração, e realmente estar sobre os ombros de pessoas que vieram antes de nós, não ao contrário de alguns do Bill Gates e Paul Allen narrativa aqui. E o que isto significa é que hoje podemos tomar para certo que as coisas são, na verdade, mais fácil para nós para escrever código. De fato código, como dissemos na sexta-feira, é mais tecnicamente conhecido como código fonte. E é este Inglês como sintaxe que é mais adequado e mais bem definida do que algo como pseudo-código, para que não há nenhuma definição formal. E hoje o que vamos focar é o código-fonte que se parece com isso, que reconhecidamente, à primeira vista parece completamente enigmática. E, francamente, é uma maneira mais esteticamente complexo do que o programa subjacente é. Todo este programa faz, recall, é o que podemos dizer? Ele só imprime "Olá mundo". E, no entanto olhar para todas as coisas que precisamos para envolver essa frase muito simples. Mas em pouco tempo todos estas linhas e mais vai fazer muito mais sentido para você. E o fluxo é como se segue. O que precisamos à nossa disposição é tomar código, como fonte código que acabamos de ver. E precisamos de um novo programa para executá-lo completamente. Precisamos de algoritmos que podem converter o código fonte, assim, em código objeto, 0s e 1s. Em outras palavras, o que vamos aprender hoje é como fazer isso, escrever código-fonte em cima, passá-lo como entrada para um especial programa conhecido como um compilador, e nós vamos produzir código objeto. Que é apenas uma maneira elegante de dizendo que vai levar alguma coisa que se parece com isso, passá-lo em um programa chamado compilador, produzir código objeto que se parece com isso. Portanto, estas são literalmente os padrões de 0s e 1s que são compreendidas por um Intel computador nos dias de hoje, que, se interpretado pela CPU, os cérebros no interior de um computador, vai, literalmente, imprimir, simplesmente, "Olá mundo". Agora não há maneira mais 0s e 1s do que você seria de esperar pode ser necessário para isso. Mas isso é porque estamos construindo em uma boa dose de complexidade que podemos doravante tomar para concedido. Em outras palavras, um monte de pessoas inteligentes nos deram um monte de ferramentas legais e um poderoso software com o qual agora pode fazer projetos de nossa própria. Então, vamos começar. Considerando última sexta-feira, e Conjunto de Problemas para 0, esta semana, você estará jogando em um mundo que se parece com isso. A partir de hoje e para o problema Conjunto 1 na próxima semana, o código vai parecer um pouco mais enigmático, mas funcionalmente é vai ser o mesmo. Assim, o aviso prévio, superior é zero, inferior é C. Francamente Raspadinha é muito mais user amigável e acessível. Mas se você agora comparar visualmente superior ao inferior, há uma espécie de 1-1 a correspondência entre o peças do puzzle e da linguagem estamos prestes a jogar. Em particular, dizer, o quebra-cabeça azul pedaço em cima, aparentemente é equivalente ao que palavra-chave ou frase especial nesta língua chamado C? AUDIÊNCIA: printf. DAVID J. MALAN: printf. Isso significa que a impressão formatada. E isso é apenas uma fantasia maneira de dizer printf em C vai ser uma declaração ou uma função que imprime algo na tela. O que é impresso na tela? Tudo o que você diga a ele para dentro de citações, dentro de parênteses. Então, novamente, é certo, há um monte de coisas que você tem que ter em mente, parênteses, aspas, ponto e vírgula, e tudo isto. Mas tudo isso é uma espécie do lado do ponto. O takeaway interessante para agora é que o bloco digamos em risco é praticamente equivalente a a instrução printf em C. Enquanto isso, a peça de quebra-cabeça amarela em cima, quando a bandeira verde clicado, é provavelmente equivalente o que palavra-chave aqui? AUDIÊNCIA: Main. DAVID J. MALAN: Então principal. Talvez int, talvez vazio. Mas tipo principal de sons como é importante, e de fato é. Então, quando a bandeira verde clicado é, novamente, a peça de quebra-cabeça que começa uma todo o programa de Notas. Mas vamos agora começar a chamar que o principal, esta função conhecida como principal. Agora, entretanto, nós vamos generalizar esta como se segue. Podemos chamar dizer uma função. E isso pode parecer especificamente como este. Bem, o que dizer de laços? Se quisermos iniciar a conversão ou traduzindo mais em risco para C, esta coisa aqui, aparentemente, apenas diz: "Olá, mundo" para sempre. Então, se você associar estes scripts com um gato em risco, ele só vai continuar a dizer em algum tipo de bolha dos desenhos animados, "Olá mundo, Olá mundo, Olá mundo ", ad nauseum, para sempre. Se quisermos fazer algo semelhante no C, que vai olhar um pouco enigmática. Mas podemos conseguir o mesmo resulta, como veremos eventualmente descobrir, com sintaxe como esta. Eu vou usar printf novamente, porque no fim do dia Quero imprimir "Olá mundo". E eu estou aparentemente usando um palavra-chave que não é para sempre. É, em vez da palavra tempo. Mas apenas semanticamente em Inglês, enquanto que o tipo de sugere algum tipo de laço ou ciclo. Então, que passa a ser a palavra-chave que usa C. E, embora verdadeiro, por que enquanto verdade significa efetivamente para sempre? Bem, embora, como veremos em breve apreciar tudo o mais, tem este parênteses ao lado dele onde você pode colocar uma expressão booleana. E enquanto esse expressão é verdadeira, este código, como é indicado entre estes dois chaves como vamos chamá-los, vai apenas manter funcionando novamente e novamente. Tanto é verdade. Assim, enquanto os verdadeiros meios apenas fazer isso para sempre. É quase um estúpido construir para se expressar. Mas lá não era para sempre palavra-chave em C. Houve tempo. E havia uma forma muito simples Expressão booleana como verdade. E assim, este, vamos ver, obtém o mesmo resultado. De que outra forma você pode implementar um loop? Bem, em risco que você pode codificar um número específico de iterações no loop aqui. E isso é exatamente o que nós pode fazer nesta versão de C, pelo que temos uma chamada para o circuito. E o loop for aqui vai a iteração, um tanto enigmaticamente, do valor 0 em cima a, mas menor do que 10. Agora variáveis ​​em zero. Você pode não ter tido ocasião para usá-los. Mas qual é o ponto, em geral, de uma variável que nós dissemos na semana passada? O que é isso? Audiência: pontos. DAVID J. MALAN: Para apontar? Oh, aponta. OK, mantendo o controle de pontos, por exemplo, num jogo. Ou, mais geralmente fazendo que com a variável? Qual é a utilidade deles? AUDIÊNCIA: Memória. DAVID J. MALAN: Sim, então memória. É para guardar alguma coisa. E o tipo de bobagem que eu visual utilizado última vez foi como esta tigela de vidro. E se quiséssemos armazenar algo dentro de uma variável, por exemplo, no momento da valor é porque há seis São seis bolas de ping pong em aqui. É apenas algum tipo de armazenamento recipiente que debaixo do capô é implementado mediante bits, 0s e 1s, no entanto, um computador passa a fazer isso. Assim, em risco, se nós quer ter uma variável, podemos usar um bloco de laranja assim. Vamos chamar esse contador neste caso particular. Eu inicializado para 0. E o que eu então fazer? Para sempre, dizem balcão, que se você joga com isso em risco, você só verá zero. O gato ou o que você colocar em traje ele vai falar o número em questão. Mudança de contador 1 é como incrementar em 1. E assim é que isto vai contar com o que então? De 0 até o infinito, ou até quebras de raspadinhas, ou até que tipo de perder o interesse em assistir quão alto ele pode realmente contar. Então, como podemos converter isso em C? Vai parecer um pouco enigmática. Mas, novamente, se você olhar para cada destas linhas individualmente que tipo de programação em geral. Então, aparentemente int vai tem algum significado especial em C. Vamos ver isso de novo. Como um aparte, significa inteiro. Então, isso significa apenas número. Então esse é o tipo de tigela de vidro que eu quero, um que pode armazenar números, não executar ping pong bolas. E eu vou usar o sinal de igual não para atribuir-lhe um valor de 0. Então, isso é completamente como conjunto contador a 0, mas em C. Enquanto isso, embora verdadeira, que era equivalente, é claro, para sempre, mesmo que seja um pouco enigmática, e, em seguida, dentro das chaves. E você pode pensar nessas chaves, qual você pode digitar no teclado, como realmente ser como a curvatura em destes blocos circulares amarelos em zero. Ela abrange várias linhas de código. Printf está recebendo uma pouco assustador, porque agora eu ver não só cita entre parênteses. Mas o que mais há de novo sintaticamente neste exemplo? Há um por cento d. E então barra invertida n está lá. Fizemos ver que antes, mesmo embora eu não mencioná-lo. Depois, há uma vírgula. E depois há um contador. Mas vamos ver em apenas um momento em que este é apenas uma forma padrão de dizer uma impressão "Número decimal", citação, fecha aspas, um número decimal. Mas eu vou te dizer mais tarde o que esse número decimal é. Assim, o fato de que há uma vírgula nesta linha ditado printf, significa ir em frente e impressão um número decimal. Ah, e por falar nisso, o número é qualquer que seja o valor dessa variável é. E assim, para tornar isso mais claro, vamos ver um exemplo em pouco tempo, envolvendo exatamente printf no contexto dos programas de reais C. Agora é só para embrulhar alguns destas construções. Expressões booleanas, você pode não ter ocasião para usá-los em seu programa mas você pode muito bem, especialmente se utilizando condições. E assim estes dois exemplos de Raspe dizer, se x é menor que y, ou, se x é menor que y e y é menos de z, como podemos traduzir isso? Bem, em C é apenas vai ficar assim. Um pouco enigmático, mais parênteses, alguns ampersands estranho, mas fundamentalmente as idéias são tão simples como eles estão no mundo da peça do puzzle. Estamos apenas verificando se algo é menor do que qualquer outra coisa. Que tal condições? Em poucas palavras em Inglês, o que isso pedaço de código do risco que você diria? AUDIÊNCIA: Compara dois números. DAVID J. MALAN: Compara dois números, e, se x é menor que y ele diz tanto. Se x for maior do que y ele diz tanto quanto, senão Se x é igual a y que diz tanto. Agora onde x e y vem? Quem sabe. Este pedaço do Scratch código está fora de contexto. Mas o que queremos fazer agora é traduzir isso por apenas um momento para ver. Então, como você se sentir confortável esta semana no Conjunto de Problemas 0 jogando neste mundo no lado esquerdo, perceber que as idéias não estão mudando esta semana ou no próximo ou além. Estamos indo simplesmente para começar a escrever coisas de um modo diferente com o nosso teclado em vez do nosso mouse. Portanto, se x é menor que y e há alguns parênteses lá, então há algumas chaves de novo para o tipo de encapsular assim como as peças do puzzle amarelo fazer. E eu estou indo para printf x é menor que y e assim por diante. O que é agradável sobre C, como você pode ver aqui, é que você não obter este assentamento, do assentamento, assentamento que é necessariamente vai empurrar o seu código para a direita. Em vez disso você pode ter tudo lineup ordenadamente assim. Mas isso é apenas uma estética detalhe veremos novamente em pouco tempo. Tudo certo. Isso nos traz de volta ao este programa olhar enigmático. Vamos realmente escrever algum código. Agora, como é que você vai escrever o código? Todos esses anos que você possuiu um Mac ou PC, desktop ou laptop, você realmente tinha a capacidade para começar a escrever código de programação. Mas você provavelmente está faltando um tipo especial de programa. Você certamente pode escrever código. Mas você não pode, necessariamente, fora da caixa, converter o código-fonte em código objeto, 0s e 1s sem o que no seu computador? AUDIÊNCIA: Compiler. DAVID J. MALAN: Então, um compilador, certo. Agora, a maioria de vocês provavelmente não possui um compilador, nunca ter baixado um compilador. Mas você vai ver que você pode baixá-lo como a maioria qualquer outra peça de software. No mundo do Mac OS, você pode baixar ou já baixou algo chamado Xcode ou GCC ou Clang. Se você vem do Mundo Windows que você pode ter feito o download do Visual Studio, Visual Basic, ambientes como esse. Há dezenas de compiladores estes dias que você pode usar. Mas o curto do que aqui é que seria uma dor e, francamente, um tecnológico pesadelo para centenas de pessoas com diferentes configurações do computador para todos configurar suas máquinas exatamente da mesma maneira para que todos nós possamos estar na mesma página. Então, o que nós, em vez disso, fazer em CS50 é nós damos-lhe um ambiente normal, uma Ambiente Linux que é vai parecer um pouco algo como isto. Você vai ver mais disso no Conjunto de Problemas 1 especificação que será disponibilizada online nesta noite de sexta. E o que isso significa é que, doravante vão ser capazes de baixar e instalar um programa chamado o CS50 Appliance. E você vai fazer o download e instalar outro programa chamado um hypervisor, que é apenas uma maneira extravagante de conseguir isso. Se você possui um Mac ou PC ou um Computador Linux ou em um computador Solaris, ou qualquer que seja louco operacional sistema que está sendo executado, você vai baixar um programa chamado de hypervisor que é vai executar o CS50 Appliance no seu computador não importa o que seu sistema operacional é. Um hipervisor em outras palavras converte nosso material para qualquer língua, o que quer que suas instruções próprio computador entende. Portanto, esta é uma estratificação. E mais uma vez, este é o tipo da temática em computador ciência, o edifício em cima das coisas. Você pode ter o Windows. Você pode ter o Mac OS. Mas a partir da próxima semana você está vai ter baixado um software gratuito chamado de hypervisor. Você vai ter baixado um pedaço de software chamado de CS50 Appliance. Isso vai funcionar no hypervisor, que vai rodar em seu computador. E o resultado final é que todos nós ter uma simples janela como esta no seu Mac ou PC que nos dá a ilusão de tudo executando o mesmo sistema operacional, sem qualquer outra impacto no seu computador. E você pode tela cheia isto e, essencialmente, se comportam como se você estiver executando uma sistema operacional chamado Linux, que é o que o CS50 Appliance é baseado. Então, vamos realmente usar este agora escrever um programa. Você pode escrever um programa usando o Microsoft Word. Você pode escrever um programa usando o TextEdit, ou bloco de notas, ou WordPad, ou praticamente qualquer palavra programa de processamento que você já usou. Mas a realidade é que você não deve utilizar realmente qualquer um desses programas. Você certamente não deve usar algo como o Microsoft Word, que tem virado e negrito e itálico, e fontes maiores e fontes menores, porque o computador não se preocupam com nada disso. Todo o computador está vai interessa é Inglês como instruções escritas em C. Então, o que nós vamos fazer dentro do Appliance CS50 é usar um programa livremente disponível, e é pré-instalado neste aparelho, chamado Gedit. E Gedit é apenas um super simples editor de texto como o TextEdit do Mac OS, como o Notepad do Windows que vai olhar um pouco algo como isto. Então, vamos realmente não olhar slides desta. Mas vamos realmente entrar em o próprio ambiente. Eu estou indo para ir em frente e Conecte-se, nesta outra janela, ao meu CS50 Appliance, que eu tenho pré-instalado no meu laptop aqui. Observe que, como o Windows e Mac OS, ele tem alguns menus. Como o Windows coloca lá em baixo, em vez do Mac OS, o que o coloca lá em baixo. Mas a realidade é que é todo o tipo do mesmo. E aqui é um todo bando de software. Há Dropbox. Há um monte de acessórios, programas gráficos que vamos usar mais tarde no prazo de conjuntos de problemas. Há um navegador construído na que este é um verdadeiro computador completo no interior de um computador. Mas eu vou clicar neste mais à esquerda ícone branco aqui, que é o ícone para Gedit. E isso vai abrir uma janela que tem três painéis de que, um lado esquerdo, um topo, e uma parte inferior. Agora é em um presente superior direito que Eu vou realmente escrever algum código. Então, vamos fazer isso ,. Eu estou indo para ir em File, Save. E você não pode nunca ter visto esta janela específica antes. Mas isto é como Mac OS ou Windows. É apenas uma janela com todas as pastas que eu tenho dentro deste computador. E eu estou indo para salvar o arquivo como ola.c. E eu estou indo para ir em frente e clique em Salvar. E agora percebe que eu tenho um guia no canto superior esquerdo chamado ola.c. Então, provavelmente, muito familiarizados, mesmo que você não tenha utilizado este programa específico antes. E agora estou indo para digitar os sequência críptica de comandos que vimos há pouco. Incluir, eu standard / O.h. Mais sobre isso em breve. Void main Int, encaracolado aberto cinta, fechou chaveta. E então lá dentro eu acho que é onde tivemos "Olá mundo", ponto e vírgula. E agora salvar. Portanto, este é um programa escrito em C, escrito, por conseguinte, no código de fonte. Mas eu não posso simplesmente executar este programa. Eu meio que quero dobrar clicar em um ícone algum lugar, mas nenhum ícone existe outro que o arquivo de código-fonte. O que, novamente, é o processo que agora Eu preciso executar esse arquivo através de? AUDIÊNCIA: Compiler. DAVID J. MALAN: Então um compilador. Assim, em diferentes computadores você fazer isso de diferentes maneiras. Mas o que temos feito aqui em o Appliance CS50 que é representante de como você pode fazer isso em muitos sistemas diferentes, é que eu vou simplesmente executar um comando chamado make. E o make é literalmente vai fazer isso. Faça-me um programa. Então faça vai executar um compilador para mim. E o nome do programa Eu quero fazer é Olá. Agora, fazer um programa. E fazer é inteligente o suficiente para perceber que, se eu digo fazer Olá, ele vai procurar automaticamente para um ficheiro chamado ola.c apenas porque essa é a forma como está configurado. Então, quando eu agora pressione Enter aqui, este linha enigmática louco acabou de ser executado. E confiem em mim, antes de longo, dentro de poucos dias, você vai entender o que todos de que os meios sem sentido. Mas, por enquanto, só sei que fazer execução desencadeada de um compilador. Por outras palavras, encontrou um compilador no meu computador que é pré-instalado no aparelho CS50 que nós vamos entregar para você em Conjunto de Problemas 1. E em seguida, levou ola.c como de entrada, e, aparentemente produzido 0s e 1s como saída. E, por padrão, o que ele faz é salva esses 0s e 1s em um arquivo chamado Olá. E embora esta sintaxe também pode ser novidade para você, simplesmente dizendo dot Olá cortar vai ser a meios pelos quais eu executar este programa. Por agora e para, pelo menos, um par semanas, quase todos os programas escrevemos vão estar em janelas de texto preto e branco. No ratinhos, não clicar, sem janelas, sem ícones. Vamos mantê-lo simples e concentrar-se nas ideias subjacentes inicialmente, antes de chegarmos a algo nível mais elevado, por exemplo, como o jogo pausa que nós falamos sobre na primeira aula na semana passada. Então, quando eu pressione Enter aqui, é equivalente em um texto único ambiente dobrar clicar em um ícone chamado Olá. O que você espera vontade acontecer quando eu pressione Enter em seguida? AUDIÊNCIA: Ele vai imprimir "Olá mundo". DAVID J. MALAN: Esperemos ele irá imprimir "Olá mundo". E de fato o fez. Agora que houve algum sintaxe enigmática aqui. Vamos rebobinar para apenas um momento e ver se Não é possível iniciar inferir apenas por mexer, tentar e falhar, quanto ao que está acontecendo aqui. E se eu me livrar da barra invertida n? Agora, alguns de vocês que tenho programado antes, provavelmente, saber instantaneamente o que isso significa. Mas para aqueles de vocês que tenho nunca programou antes, pelo menos pensar a si mesmo o que está acontecendo a mudar quando eu executar novamente este programa? Então, eu vou voltar para o meu janelinha preto e branco, que é a janela em que Posso compilar este. Vou recompilar Olá. Nós vamos ver a mesma seqüência de comandos crípticos. E eu vou fazer barra dot Olá. E agora alguém, se você, que nunca programou antes, o que pode ser diferente desta vez? Sim. AUDIÊNCIA: Ela não vai parar impressão "Olá mundo". DAVID J. MALAN: Vai para-- arrependido? AUDIÊNCIA: Ela não vai parar de imprimi-lo? DAVID J. MALAN: não vai parar de imprimir "Olá mundo". Então, não é uma má idéia. Outras idéias? Sim. AUDIÊNCIA: mensagem de erro? DAVID J. MALAN: Erro mensagem, OK, pode ser. O que mais? AUDIÊNCIA: Pode imprimir o suporte com o ponto e vírgula também? DAVID J. MALAN: Pode imprimir o suporte com o ponto e vírgula também. Então talvez essa barra invertida então é alguma tipo de terminous isso é importante. Quaisquer outros pensamentos? Assim, todas as boas idéias. E, na verdade, vai ser uma mensagem de erro. Isso é provavelmente mais provável ser a resposta em geral para as próximas semanas quando aprendemos a código aqui. Mas, por enquanto lembre-se de que os computadores apenas faça o que você diga a eles para fazer. Muito parecido com o de amendoim ridículo manteiga e geléia exemplo. Nossos computadores humanos só deveriam para fazer o que você disse para eles fazerem. Portanto, neste caso, se você não diga o computador para mover esse cursor piscando à linha seguinte, ele não vai fazê-lo. Então, quando eu executar este programa Agora, observe a diferença. Parece um bug. É um bug estética, talvez. Mas o que é diferente sobre este de saída em relação ao último obviamente? Sim. AUDIÊNCIA: Não fez uma nova linha. DAVID J. MALAN: Ele não fez uma nova linha. Agora, aqueles de vocês que tem páginas da web talvez feitas antes, você pode saber do BR tag ou a marca de parágrafo, muito semelhante em espírito. Um navegador da Web vão ignorá-lo até que você diga a ele exatamente o que fazer. Da mesma forma, é uma linguagem como C apenas vai fazer o que você diga a ele para fazer. Assim, o motivo que todos estes exemplos, até agora, temos uma espécie de casualmente tinha essa barra invertida lá dentro, que é o meio pelo qual você se expressa como um caractere de nova linha, por assim dizer. E você pode tipo de apreciar, talvez, que esta seria uma espécie de idiota se nada mais. Se eu quisesse uma nova linha, apenas pressionar Enter e, em seguida, tipo de massacrar o código assim realmente não deve esfregar-lhe o caminho certo. E mesmo se você não fizer isso realmente importa neste momento, você vai perceber que este não é particularmente boa parte de vista de código. E assim que o mundo anos atrás é decidido que quando você quer colocar o cursor para uma nova linha explicitamente, você deve dizer explicitamente nova linha, barra invertida n. E há alguma outra símbolos assim. Mas por enquanto vamos apenas concentrar em barra invertida n. Agora vamos fazer o programa um pouco mais interessante. Eu estou indo para ir em frente e desta vez abrir um novo arquivo. Vou guardá-lo como Olá-1.c. E apenas por diversão, eu vou ir colocá-lo em minha pasta Dropbox. Como você verá na CS50 documentação para o aparelho, ainda esta semana para o problema Conjunto 1, vamos incentivar você usar Dropbox ou algum serviço equivalente, porque, então, todo o seu código de vai ser feito automaticamente. E é por isso que eu tenho ido para essa pasta aqui. E agora eu vou escrever um programa um pouco diferente. Incluir, eu standard / O.h, void main int. E então aqui printf, Olá mundo, que é exatamente a mesma de antes. Mas agora eu quero imprimir algo isso é um pouco diferente. Eu quero imprimir, dizer: "Olá, David." Tudo bem, então, obviamente, deveria esperemos ser o caso de que se eu recompilar Neste programa, executá-lo novamente, ele vai dizer "Olá, David." Mas e se eu quiser introduzir este tipo de variável, a noção de um recipiente que está acontecendo para armazenar D-a-v-i-d e não é difícil de código que em meu programa. Bem, o que se eu começar fazer algo assim? String s, por isso esta é uma variável. Se você quer uma corda, A.K.A. uma palavra ou uma frase. Uma seqüência de caracteres é o que nós na programação chamar uma string. Nós apenas estamos indo para genericamente chamada ele é, porque ele é um bom nome simples. Mas eu poderia chamá-lo de nada. Eu vou dizer iguais string s entre aspas, "David", ponto e vírgula. E agora eu quero inserir D-a-v-i-d para o que eu sou impressão. E antes que vimos um teaser em a tela de uma sintaxe especial que nos permitiu substituto em um valor. Qual foi o especial símbolo alguns slides atrás? Assim por cento. Na época, era por cento d para o número decimal. Isso não parece realmente relevante aqui. Acontece que há outro símbolo de porcentagem, que representa a percentagem de s, que se encontra para um espaço reservado para a string. Então, agora, de forma muito simples, eu sou indo para ir fazer Olá-1, porque este arquivo é chamado Olá-1.c, e pressione Enter. E eu estraguei tudo. O que está acontecendo? Bem, aqui é onde nós temos que começar a Compreendo que estamos neste comando ambiente de linha, isto texto único ambiente. Não há clicando em ícones como pastas agora. E relembre um momento atrás. Em que pasta que eu disse Eu estava guardando meu código? Então a pasta Dropbox. Poderia ter sido chamado de qualquer coisa. Mas ele passa a ser chamado Dropbox. Então, eu de alguma forma precisa clicar duas vezes no essa pasta Dropbox, a fim de obter para ele e chegar a minha código chamado Olá-1.c. Na verdade, deixe-me ir em frente e minimizar Nesta janela por um momento. Assim como o Windows e Mac OS, existem pastas no Linux. Existem pastas na CS50 Appliance. É só agora estamos confinando nos a este ambiente texto. Mas se eu clicar duas vezes no Dropbox, notar que há é o arquivo que eu quero para compilar. Mas eu preciso esta em preto e branco janela de terminal, por assim dizer. Mas eu preciso, portanto, para se deslocar para essa pasta ou diretório. Então, um pouco misterioso, mas você vai se acostumar com isso também. No mundo do Linux, que por sua vez é o operacional sistema que está sendo executado dentro do CS50 Appliance, há um comando chamado CD. O que significa que eu posso fazer CD, espaço, Dropbox. CD, altere o diretório. Certo. De volta ao dia em que as pessoas eram inventando computadores e operando sistemas como esse, eles queriam digite o menor número de teclas digitadas possível. Assim, a maneira mais fácil de dizer diretório mudança foi CD. Então, se eu bater CD, espaço Dropbox, perceber o que mudou aqui. Dentro dos parênteses o aparelho é uma espécie de me agradando e lembrando-me onde estou. Assim, a pasta aberta é Dropbox. Se eu agora digite ls para lista, novamente sucinta, porque as pessoas não queriam escreva de volta no dia l-i-s-t. Então, eles, em vez tornou sl. Enter. Repare que eu ver duas coisas, Olá-1.c, e então essa coisa enigmática, fonte 1m. Isso é apenas minha maneira de dizer código-fonte para a semana 1 segunda-feira. Isso é uma pasta que eu baixei do Site da CS50 que fiz hoje cedo e basta colocá-lo no aparelho com antecedência. Mas, por enquanto a única coisa que interessa é fazer este programa. Então, quando eu digitar make Olá-1, Enter. Caramba. Algo deu errado. Então, vamos brincar com este apart. E, infelizmente, este é o lugar onde as coisas ficar um pouco estressante no início, pelo menos se você tiver Nunca programado antes. Meu Deus. Eu escrevi um programa de duas linhas e Eu tenho quatro linhas de erros. Então, o que está acontecendo aqui. Em primeiro lugar sempre rolar para trás e encontrar a primeira mensagem de erro, porque muitas vezes apenas compiladores se confundem com o que você e eu. Compiladores são muito burro. Eles só vou fazer o que você dizer-lhes o que fazer. E se você confundi-los, eles são apenas vai tipo de vomitar suas mãos e talvez lançar mais mensagens de erro que são realmente relevantes. Então, vamos olhar para o primeiro. Super enigmática em primeiro lugar. Mas aviso, aqui está o nome do arquivo em que eu estraguei tudo aparentemente. Colon 5, cólon 5 significa apenas em linha 5 no quinto personagem. Então quinta coluna de caracteres, se quiserem, de erro. Uso de seqüência de identificador não declarado. Você quis dizer padrão n? Não, eu quis dizer string. E então, é uma espécie de copiando e colando o que eu digitei para realmente chamar a minha atenção para onde eu estraguei tudo. Então, por algum motivo C, ou, pelo menos, o compilador não compreende a seqüência de palavras. E isso é porque nós o fizemos acima. Então cadeia não existir em C. O CS50 faz, para as primeiras semanas só da classe, é nós fornecemos alguma formação rodas, por assim dizer. E nós colocamos essas rodinhas dentro de um arquivo especial chamado CS50.h. Portanto, este é o segundo de dois arquivos nomes que aparentemente terminam em ponto h. Vamos rebobinar. Printf é uma declaração ou função que, aparentemente, imprime algo para a tela. Mas você não me viu implementar printf, certo. Alguém anos atrás implementado printf. Em que arquivo se você apostar que ele ou ela colocou a implementação para printf, o código para printf? Em um arquivo chamado padrão I / O.h. Na verdade, é provavelmente em dois arquivos, eu standard / O.h, que significa cabeçalho arquivo, e eu standard / O.c, que significa o código-fonte C. Que ele ou ela, há alguns anos se jogou o código que eles escreveram para o arquivo para que pessoas como nós anos mais tarde, pode incluí-lo, por assim dizer, em nossos próprios programas. E, de fato, é o que o sinal de libra seguido da palavra incluem faz. Ele olha para o disco rígido local, encontra o arquivo chamado padrão I / O.h, e, em seguida, de forma eficaz e cópias cola-lo dentro do meu próprio arquivo. Então agora o meu programa sabe como imprimir a tela. Então, por essa lógica, onde é definido corda? AUDIÊNCIA: CS50.h. DAVID J. MALAN: CS50.h. E, de fato, é isso que nós, o pessoal do núcleo, têm feito. Nós inventou alguns tipos de dados, por assim dizer, como uma corda, além de que você obter de graça, como um int. E vamos ver os outros como um char para um personagem e um pouco mais. Dentro de CS50.h aparentemente é pelo menos alguma menção de string. Então, agora deixe-me ir em frente e make reprise Olá-1. Vou aumentar o zoom novamente e cruzar os dedos. Agora por ter feito uma mudar Eu fixo a maioria das coisas. Mas dane-se. Mais por cento do que os argumentos dados. O que eu fiz de errado desta vez? Por isso, ainda é bastante enigmática. Mas este erro está na linha 7 e 21 caracteres. Então, vamos olhar para cima aqui. É um pouco sutil. Mas se você pensar sobre o que as idéias fundamentais aqui são, talvez possamos provocar este apart. Assim printf é o nome da função. Parênteses, até o momento, é assim como o que colocamos em torno as coisas que estamos passando como entradas para uma função. Tudo bem, apenas um convenção humana arbitrária. Use parênteses. Dentro desses parênteses temos vindo a colocar aspas duplas, e, em seguida, uma string como "Olá mundo". Mas nesse exemplo anterior muito brevemente fez olharmos com o Scratch. E nós tivemos o percentual d, o que mais estava dentro destes parênteses que eu chamei verbalmente? Sim. AUDIÊNCIA: Então é o que você está tomando [Inaudível] dentro [inaudível] o que estes [inaudível]? DAVID J. MALAN: Exatamente. Então tivemos a porcentagem d. Mas depois tivemos perto citação, vírgula, contador. Certo. Nós especificamos o que queremos fazer como o espaço reservado. Então o que eu vou fazer aqui é vírgula, o que você quer que eu coloque? AUDIÊNCIA: S. DAVID J. MALAN: S, porque s neste caso é o nome do recipiente de armazenamento. É o nome da taça de vidro. Enquanto antes era contador em que exemplo simples arranhão nós olhamos. Então, agora, tendo feito dois alterações, deixe-me aproximar e tentar mais uma vez compilar este programa. Agora eu vejo que a linha enigmática. Mas isso é realmente o nome do compilador. Tinido é o nome do compilador. Faça apenas está me salvando a dor de cabeça de sempre digitando o comando longo louca para fora. Portanto, agora se eu cortar ponto Olá-1, Eu veria "Olá, David." Muito abaixo do esperado, porém, certo? Poderíamos ter feito esta muito mais simplesmente sem falar sobre variáveis e CS50.h e tudo isso. Então, vamos torná-lo um pouco mais interessante. Além CS50.h, ter coisas como cordas declarada, a biblioteca CS50 também tem algumas funções. Então, assim como anos atrás, alguém escreveu printf e colocá-lo no padrão I / O.h e algum outro arquivo. Nós, a equipe CS50, escreveu uma função chamado nextchar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, e colocamos aqueles dentro de um arquivo chamado CS50.h e CS50.c. E nós colocá-los dentro do CS50 Appliance. E as pessoas também podem baixá-los on-line se quer colocá-los em seu próprios computadores também. O que significa dizer que criamos funções que obter a entrada do usuário. Eu não sei o que todos desses tipos de dados são. GetInt é meio simples, como obter um número inteiro de alguma forma do utilizador. E GetString é, provavelmente, como get uma palavra ou uma frase do usuário. Então vamos focar nisso. E eu vou voltar para o aparelho e eu estou indo para ir em frente e salve este arquivo como, digamos Olá ele-2.c como minha segunda versão. E vamos fazer algumas mudanças. Desta vez, em vez de difícil codificação David, que torna incrivelmente consistente mas o programa abaixo do esperado, e se eu, em vez fazer GetString? Agora note GetString tem um parêntese de abertura, parêntesis fechado, porque ele não precisa de qualquer entrada. Ele só vai pegar uma string do usuário. E agora uma palavra em outra sintaxe. Semicolons apenas terminar uma linha de código. Você não precisa de todos os lugares. Mas isso só significa que eu sou feito com esta linha de código. Deixe-me passar para outro declaração ou função. Corda declara uma variável. Cadeia é como dizer dá-me uma tigela, por favor. E deixe-me colocar uma corda nele. E agora o sinal de igual. Qual é o sinal de igual essencialmente equivalente a? AUDIÊNCIA: Atribuir. DAVID J. MALAN: Sim, atribuindo um valor. Então, se eu, por exemplo, chamada esta função GetString, e vamos ver em um momento que é vai solicitar ao usuário uma string. Isso é como me deixar em seguida, escrever D--a-v i-d sobre um pedaço de papel. E quando eu digo cadeia s é igual a GetString, igual não significa realmente igual em programação C. Significa atribuir da direita lado para o lado esquerdo. Então eu comecei uma string. E o sinal de igual significa colocá-la no armazenamento recipiente chamado s. E Em seguida, passe esta off para printf para realmente fazer a sua coisa. Assim, o resultado final, então vai a olhar um pouco diferente. Vamos fazem Olá-2. Ou poderia trabalhar. Você está acompanhando. Faça Olá-2 funcionou. Dot cortar Olá-2, Enter. Eu pareço ter um infinito loop ou algo assim. Não está acontecendo nada. Por quê? AUDIÊNCIA: Está fazendo um loop infinito. DAVID J. MALAN: É um loop infinito. É uma espécie de me esperando para realmente fornecê-lo com algumas entradas. Então deixe-me ir em frente e escrever em David, e pressione Enter. E agora ele diz "Olá, David." Se eu executá-lo novamente. Vamos digitar Rob, "Olá, Rob." Agora este é o pior interface com o usuário de sempre. O usuário é aparentemente deveria saber o que fazer. Mas não importa. Usando estes mesmo edifício blocos assim como no risco, podemos resolver esse problema e dizer algo como o seu nome, por favor, cólon, espaço, fechado citação, perto parêntese, ponto e vírgula. Então, um monte de novo disparate com a sintaxe. Mas repare que eu acabei de adicionar um parte do enigma acima desta e acima deste. Portanto, agora se eu executar novamente este, Olá-2, Enter. Espere um minuto. O que está errado? Não está se comportando de forma diferente. Sim. AUDIÊNCIA: você não executar make novamente. DAVID J. MALAN: Eu não fiz executar make de novo, certo. Então eu mudei de código-fonte. Mas, novamente, não há esse fluxo. O código-fonte através do compilador dá Você é novo código objeto, ou 0s e 1s. Então eu preciso realmente make reprise Olá-2 Enter. OK, algo parece ter acontecido. Dot cortar Olá-2. Seu nome, por favor. E para ser claro agora, porque é que o cursor na mesma linha? Exatamente. Eu não coloquei a barra invertida n-se aqui no meu código. Então agora eu posso escrever algo como Daven, Enter. Eu posso executá-lo novamente e digite algo como Gabe, Enter, e nós temos um programa diferente de novo e de novo e de novo. Agora, em última análise, vamos precisar utilizar algumas capacidades diferentes. Precisamos introduzir em última análise, alguns condições de fazer as coisas condicionalmente. Talvez laços para que possamos fazer coisas repetidas vezes. Talvez seria bom se nós poderia implementar as nossas próprias funções, como podemos implementar nosso próprio printf ou a nossa própria versão do GetString GetFlow e, em última análise, porque mesmo usando este ambiente de linha de comando que podemos fazer até o mais visualmente interessante de coisas. De fato, em conclusão, deixe-me fazer isso. Eu estou indo para ir em frente e fechar essas janelas e abrir esse ícone aqui, que é apenas uma maior versão do que incorporado janela de terminal. Então Gedit tem não só o lugar para o meu código, mas também construído em uma janela de terminal, o janela preto e branco onde eu possa correr comandos. Aconteceu de eu abrir uma versão maior desta. E agora eu estou indo para ir para a pasta que eu já colocar com antecedência no site do curso. E eu estou indo para ir em frente e abrir um arquivo chamado thadgavin.c, que foi escrito por outra pessoa. E se olharmos para isso, este não é o tipo de código vamos estar escrevendo desde O objetivo deste código era escrever a mais bonita procurando o código que ele ou ela poderia, independentemente de terem ou não outro ser humano jamais poderia compreender este código. Na verdade, todos os anos há é o que é chamado de um concurso C ofuscado, que é para geeks reais que escrevem código que ninguém mais pode ler, mas que faz algo ou realmente simples ou realmente incrível. E nós pensamos Concluímos com este olhar em algo que é bastante surpreendente você pode ter visto antes. Mas vamos terminar nesta nota, corte de ponto, thadgavin. Isso, então, é o que espera. Isso é tudo para CS50. Vamos vê-lo na quarta-feira. [MÚSICA DE JOGO]