[MÚSICA DE JOGO] 

DAVID MALAN: Tudo bem essa é CS50 e este é o fim de uma semana. Então, eu gostaria de apresentar a minha ex- orientando, Andel Duff, que não só faz iPhone 5 está, assim como este púlpito, ele também faz carros. ANSEL DUFF: Como vai, pessoal? Eu só quero dizer-lhe um pouco pouco sobre Formula SAE, da qual eu sou o capitão. É uma equipe do MIT. Eu só quero te dizer vocês um pouco sobre isso e esperamos gerar algum interesse. 

Então deixe-me passar por um algumas coisas sobre a nossa equipe. Então, nós estamos completamente funcionamento do estudante, em que todos do desenho membros, simular teste, e fabricante de um subsistema do carro. Nós temos nossa própria oficina mecânica e garagens, e N52-- ou muito, N51-- que é o mesmo edifício como o Museu da Ciência MIT. E nós somos o povo que dirigir o carro. Há uma competição nacional no inicio do verão, e depois há menor tiroteio competições ao longo do ano. E, então, fazer o treinamento de motorista dias para receber novos membros familiarizado. 

Nossos dias são de construção em Sábados onze horas - oito horas. O almoço eo jantar estão cuidando de, a partir de Bertucci e Beantown respectivamente. Temos uma reunião semanal e seminário, que é um curso de créditos. O que é novo a partir deste semestre, e também será para o próximo semestre, assim você pode cruzar-reg por isso. E depois temos a concepção, loja, e dias de CAD durante a semana, Considerando que os membros de forma autónoma Peças CAD, da ordem et cetera. 

Assim, para elétrica engenharia na equipe temos o nosso motor, sistema de alta tensão, que é executado em uma nominal 300 volts, que inclui motores, reguladores de motor, e baterias. Então, temos um baixo sistema de tensão, o qual é executado a 12 volts, que inclui controles, PODE nós, o cérebro caixa, e no painel de instrumentos. No que diz CS vai, o que fazemos tem manutenção do site que precisamos fazer para eventos, a adesão mudanças, novas imagens e material de PR. E depois temos o código que controla a carro para o nosso controle de tração, lançamento controle, controle painel, vetorização de torque, e sistemas de travagem regenerativa, que executar normalmente em MATLAB, Simulink e LabView. 

Diga-lhe um pouco sobre o carro. Portanto, é de cerca de 500 quilos. É regras limitados a 85 quilowatts. Tem 2 EMRAX 207 motores na para trás, um para cada roda traseira. Tem baterias custom-built a partir de células A123 bolsa prismáticos, num total de 300 volts e 5,6 quilowatts-hora. E é de acionamento direto com uma relação 2,64-1 unidade. Aqui estão algumas fotos que tomou dele em competição. Aqui está o cone de volta, nariz, e aqui estão os motores, os grandes discos pretos debaixo da mens et manus. Aqui está um slide que eu puxei fora do nosso sistema de competição. E esta é apenas a comparação de nosso carro para um par de carros disponíveis no mercado, como a KTM XBOW, Ariel Atom, e Caterha M 7-280. Se você estiver familiarizado com o preço, poder puxar peso, dólares por cavalos de potência, dólares por binário, e nosso carro sopra-los todos para fora da água. Se você tiver alguma dúvida, anote este endereço de e-mail. Atire nos um email para fsae@mit.edu. 

Estamos felizes em falar sobre qualquer coisa que você gostaria. Estudantes de Harvard são do tipo da minoria na equipe. Se você tiver alguma dúvida sobre que faça disparar um e-mail, feliz de falar, e eu vou a cabeça de volta para David. Obrigado. Eu aprecio isso, pessoal. [Aplausos] 

DAVID MALAN: Ansel passou o verão trabalhar com a gente aqui no campus em CS50 neste verão. E, além de trabalhar em coisas como as lâmpadas de binários, na verdade ele realmente abriu nossa eyes-- ea minha em particular-- para o que realmente a intersecção de não de hardware e software pode ser. Na verdade, um monte de coisas que ele só excursionou-lo através de, em última análise criado em software, e, em seguida, em última análise, fabricado no mundo real em hardware. Então, se você estiver interessado em explorar naquele cruzamento, talvez levar até esse grupo. 

Agora, entretanto, aqueles de vocês que são fãs de tecnologia, e os produtos da Apple em especial saber que há eram um casal de anúncios ontem. Mas nós pensamos em mostrar você que saiu alguns dias antes que você pode não ter visto. 

JORGEN EGHAMMER: Você sabe, uma vez em algum tempo algo vem que muda a forma como vivemos. Um dispositivo tão simples e intuitivo usá-lo se sente quase familiar. Apresentando 2015 Catálogo IKEA. Não é um livro digital ou um e-book, é um livro-book. 

A primeira coisa a notar é nenhuma cabos, nem mesmo um cabo de alimentação. O Catálogo IKEA 2015 vem totalmente carregada, ea duração da bateria é eterna. A interface é de 7,5 por 8 polegadas, mas pode se expandir para 15 por 8 polegadas. A navegação é baseada em toque tátil tecnologia que você pode realmente sentir. 

Conteúdo vem pré-instalado via 328 páginas de alta definição de inspirar idéias de decoração para casa. Para iniciar a navegação, basta tocar e arrastar. Direita para a esquerda para mover para a frente, esquerda para a direita para se mover para trás. 

Observe outra coisa? Está certo. Sem lag. Cada página cristalina cargas instantaneamente, não importa o quão rápido você rolar. Se você quiser ter uma visão geral, apenas segure-o na palma da sua mão, e usando apenas o polegar, Velocidade navegar pelo conteúdo. 

Se você encontrar algo que você deseja salvar para mais tarde, você pode simplesmente marcar. E mesmo se você fechar o aplicativo, você pode facilmente encontrar o marcador novamente. Incrível. 

[Risos] [Aplausos] Então, isso nos leva a o fim de semana um. Alguns anúncios agora. Assim, o corte está agora em progresso. Ir para este URL aqui em algum momento entre hoje e sexta-feira ao meio-dia realmente especificar se você está entre aqueles menos confortável, mais confortável, ou algures no meio. 

Este é tipicamente um daqueles coisas que você só tipo de saber. E, de fato, aqueles que são menos confortável provavelmente sabe tanto, aqueles de vocês que são mais confortável saber tanto, e, novamente, se você não tem certeza de que daqueles baldes você cair você está provavelmente em algum lugar no meio. Mas a certeza de que você pode trocar depois de algumas semanas se for necessário. 

Enquanto isso, para a próxima semana nós não começarmos secções por si só, mas seções super, que estão abertas a todos os alunos. No próximo domingo em um local para ser anunciado no site do curso teremos um para os menos confortáveis, , bem como para uma os mais confortável. E aqueles em algum lugar entre pode escolher qual dos dois, ou ambos, se você quiser, para sentar-in on. E o foco daqueles será, em última análise em C, que nós vamos continuar a nossa conversa de hoje. 

Problema definir 0, entretanto, é espero que em suas mãos. Oficialmente devido amanhã, Quinta-feira, ao meio-dia. A menos que você ganhar dinheiro com um de seus cinco dias de atraso, que traria até sexta-feira ao meio-dia. Conjunto de problemas 1 entretanto será publicado no site do curso. E esta será a nossa primeira incursão como uma classe em C. E esse conjunto de problemas de especificação irá orientá-lo por meio de um monte de a mecânica do que Começamos a conversar sobre na segunda-feira, e vamos continuar a falar sobre hoje. C, Linux, o CS50 aparelho, tudo isso esperam por você na especificação. 

Horário de atendimento entretanto estão em andamento, na sala de jantar de graduação. Confronto esta URL aqui para ver o agendar para hoje à noite e amanhã, Se você gostaria de participar. Perguntas Entretanto, para que você têm a oportunidade de fazer perguntas de forma assíncrona, 24/7, percebe que você é não se limitando a seções e escritório horas, mas sim esta ferramenta aqui, CS50 Discutir nesse URL será o de curso on-line software BBS, através do qual você pode fazer perguntas de colegas e também pessoal. Portanto, tenha em mente que o recurso também. Enquanto isso, uma tradição começa nesta sexta-feira. Como você deve ter vislumbrado a partir de vídeo teaser da quarta-feira passada, temos uma tradição mais toda sexta-feira durante o mandato de levar cerca de 50 alunos e funcionários de um restaurante local chamado Fogo e gelo, em que estamos tipicamente acompanhado por alguns ex-alunos ou amigos da indústria geralmente para aspirar para fazer uma grande classe sentir menor. Portanto, é um almoço completamente casual. Um grupo de nós, a equipe especialmente, vai jogar cadeiras musicais e conversar com os alunos sobre 50, a vida fora de 50, vida no futuro, o mundo real, Eu estou falando sobre as oportunidades de emprego com os amigos na indústria. 

Então, se você gostaria de se juntar a nós nesta sexta-feira, a cabeça a esta URL aqui. O espaço é limitado, mas vamos fazer isso recorrentemente ao longo do prazo. Chefe lá para cs50.harvard.edu/rsvp. E se você não entrar em desta vez, não se preocupe. Vamos fazê-lo novamente em Nas próximas semanas também. 

Portanto, esta é a imagem pintamos na semana passada, e você já deve ter sido meter na até agora. Mas vamos tentar ligar isso agora para o que vamos fazer hoje e daí em diante. Posso ter um voluntário? Tudo bem, ou vários. E aqui na final, com a camisa azul. Vamos para cima, qual o seu nome? ALANA: Alana. DAVID MALAN: Alana. Então Alana, por apenas um moment-- bom conhecer você-- vai desempenhar o papel desta função aqui. O bloco roxo temos chamado, até agora, uma função. Então o que eu estou indo para ir frente aqui e oferecer Alana é um pouco tag nome, para fazer claro qual o papel que você está jogando. 

Então você deve ser o bloco digamos. Se você quiser ir em frente e colocar isso no. E nós vamos manter esta super simples. Se o objetivo em questão é simplesmente agora a implementar com Alana, este chamado dizer bloco, aqui está como ele vai funcionar. Eu have-- vamos chamá-lo um argumento ou parâmetro, é realmente apenas uma folha de papel em branco. E é branco ao tipo de ser uma reminiscência da caixa branca na qual você pode escrever palavras. 

Enquanto isso, eu estou indo para ir aqui. Eu estou indo para ir em frente e escrever H-E G L-O--vírgula mundo. E agora eu, como diz o programador, não realmente sabe dizer alguma coisa. Eu posso vir acima com as palavras, mas eu não necessariamente sei como me expressar verbalmente ou na tela. E assim que eu vou a fazer é levar esta peça de funcionalidades, cuja input-- ou argumento, como vamos chamá-lo, Eu tenho escrito sobre este pedaço de paper-- e eu estou indo para terceirizar. 

E, na verdade esse é o papel que funciona de uma linguagem de programação pode jogar. Algo parecido com a palavra bloco pode ser terceirizado para alguém que realmente sabe o que ela ou ele está falando. Então, se você vai passar por cima aqui só por um momento, Vou passar esta entrada Alana, e pedir que você diz isso de entrada. 

ALANA: Olá, mundo. DAVID MALAN: É isso. Assim que existe uma função. Agora nós podemos tomá-lo um pouco mais, podemos dar um passo adiante aqui. Porque isso era claramente abaixo do esperado. Então, vamos agora converter isso em algo um pouco mais sofisticado. 

Então, isso, claro, é a nossa versão C. Portanto, agora se você quiser ter que um fora, que tag nome fora, e vamos ter que colocar em um novo nome. Mas, fundamentalmente, você está interpretando o mesmo papel, isso só acontece a ser chamado printf agora. 

O artigo é, é claro, vai provavelmente ser-- tal como é underwhelming-- vai ser o seguinte. Você agora é o printf função. Eu sou o chamador ou a programador, que quer ficar sobre os ombros de pessoas no passado como você, que já descobri como para realmente escrever algo. E assim, neste momento, em vez de dizer que vamos realmente usar nossa tela aqui. Então, se você gostaria de intensificar aqui, eu vou para passar novamente esta como entrada para meu amigo printf. Se você pudesse ir em frente e imprimir isso na tela, simplesmente desenhando com o dedo sobre o ecrã preto. Excelente. Tudo bem, então um monte de suspense para como que ia jogar fora. 

Então agora vamos levar as coisas até um entalhe final, se pudéssemos, como se segue. Portanto, este é um programa C como se disse da última vez. E isso só faz o que você fez, imprime na tela, Olá, mundo. Mesmo que não haja claramente um monte material de distração lá em cima. Mas vamos levar as coisas acima de um entalhe e introduzir esta versão, que recordam foi a terceira versão acabamos com a última vez. 

E agora não há clareza dois usos de printf. Há duas chamadas para Alana neste caso para printf, mas há também uma chamada a outra função. O que é que a função claramente? GetString. 

Podemos conseguir mais um voluntário? OK, vamos lá para cima. Qual o seu nome? 

JAVIER: Javier. 

DAVID MALAN: Javier, vamos lá para cima. Assim, o papel de Javier é em este pedaço de papel. O que eu vou chamar genericamente s. Agora, esta é uma variável, é do tipo string, como se depreende pelo que a segunda linha do meio aí. E eu gostaria que você para ir buscar-me uma corda. Especificamente cabeça para baixo para a orquestra seção e obter-me o nome de alguém, e voltar com uma variável que contém esse valor. Ele pode ser quem você quiser. 

Aqui vamos nós. Tudo bem, Javier é escrevendo o nome. Tudo certo. Todos nós podemos provavelmente imaginar como isso vai jogar fora. Nós talvez esteja belaboring o ponto de que uma função está fazendo, mas mesmo assim muito obrigado. 

Então Javier voltou esta cadeia aqui, o que, não consigo ver, Jonathan é a string que temos obtido. Então, agora que eu estou indo realmente para fornecer a Alana embora é algo um pouco diferente. Porque nesta versão do programa, em primeiro lugar, há o seu nome. Assim, o primeiro argumento Eu preciso fornecer Alana com vai ser literalmente o seu nome. Tudo bem, tão simples como isso Eu iria entregar isso a você. E enquanto eu escrevo o próximo argumento, se você quer ir em frente e escrever este na placa, vamos em frente e fazer o último exemplo aqui para fazer limpar o que está em última análise, tem que acontecer. Então diga o seu nome, escrevê-lo em direção ao topo se você não se importa, apenas para que temos espaço para uma segunda linha. Porque a última coisa que eu vou agora fornecer-lhe não uma, mas dois pedaços de papel. 

Tudo certo. H-L-L-L-S vírgula e, em seguida, uma linha em branco. Então o que eu estou prestes a entregar Alana agora é algo um pouco diferente. Não só ela está recebendo este, onde preencher o vazio representa que percent-- qual foi o espaço reservado estamos usando? Sim, então por cento s. Enquanto isso, eu vou passar ela em um segundo argumento, que é precisamente o que Javier recuperado a partir de Jonathan. 

Então deixe-me dar-lhe os dois. Se você gostaria de, vá em frente e imprimir o efeito. O que está acontecendo em última análise, agora é, Alana novamente está fazendo o papel de printf. Javier estava jogando o papel de GetString. Então essa será a sua lembrança. E, finalmente, o que está acontecendo, apesar de este hello-- sim ir em frente e vírgula. ALANA: Recebi este ainda ou não? DAVID MALAN: Sim, você recebeu os dois ao mesmo tempo. Assim, a idéia é que você agora pode virar a página para lidar com o segundo destas duas entradas. Portanto, esta é apenas a martelar a apontam que, enquanto Alana executado esta linha verde aqui, e então Javier fez isso para nós e voltar para me algo vamos chamá-s, mas foi realmente apenas aquele pedaço de papel de seu próprio. E agora Alana fez esta terceira linha. 

E apesar de tudo isso parece tão incrivelmente enigmática talvez à primeira vista, é realmente É tão simples como isso. Passando entradas ao redor, obter resultados, quer sendo entregue fisicamente para trás alguma coisa, ou vendo um efeito colateral desse jeito. Algo visualmente escrito na tela. Então, vamos em frente e agradecer Alana e Javier, que estava aqui embaixo, para se juntar a nós aqui em cima. 

[Aplausos] 

Então agora vamos tomar como certo o quão simples tudo isso poderia ser. E vamos continuar a verdade fazer alguma coisa no código atual. Então, na tela aqui está um screenshot do assim chamado aparelho CS50. E se você tivesse que no, como um 02:00 de quarta-feira à tarde, explicar para algum amigo CS50 que o aparelho é, como você definiria em uma frase? Qualquer uma frase? Sim? ALUNO: É como um programa que faz com que o computador de todos rodar com o mesmo sistema. DAVID MALAN: Good! É um programa que permite que todo mundo computador para executar com o mesmo sistema. É uma espécie de seu próprio exemplar de uma operação sistema que passa a ser chamado Ubuntu Linux. E ele é executado de forma eficaz dentro de uma janela em seu próprio Mac ou PC, para que este caminho certo para fora do portão Na 1 ª semana, todos aqui na classe tem acesso às mesmas ferramentas, a mesma configuração, e não há nenhuma curva de aprendizagem específica a um Mac ou um PC em particular. 

Agora abrimos, dentro do CS50 aparelho na segunda-feira, aqui neste programa. Acontece a ser chamado gedit. Mas isso é realmente apenas um editor gráfico. É algo como o bloco de notas ou texto Editar no Windows ou Mac OS, respectivamente. E eu propus que houve realmente três peças importantes para esta tela. A parte superior é onde você iria escrever seu código. E é aí que passamos grande parte do nosso três exemplos na aula de segunda-feira. O fundo chamamos o que, esta janela preta, certo? 

ALUNO: Compiler? 

DAVID MALAN: Compiler nós acessado por meio dessa janela. Mas de modo geral. Sim, era apenas uma janela de terminal. Este é um termo antigo que era apenas descreve essencialmente um piscar rápida, que anos atrás costumava ser em um desses grandes monitores CRT estilo. Mas hoje em dia é uma espécie de virtual no software. E as janelas de terminal nos permitirá digitar comandos. É uma espécie de versão simplificada da interface do usuário ou interface do usuário. Não é uma gráfica interface do usuário ou GUI, é uma interface baseada em texto ou uma interface de linha de comando. 

E de fato é aí que, em última instância Eu era capaz de escrever algum código. Uma vez que eu tinha escrito algum código, porém, lembro que eu usei este comando. E, como o nome tipo de sugere, esta me permite fazer uma programa chamado Olá. Mas o que ele realmente está fazendo? Bem make estava tomando meu entrada, o meu código-fonte, e convertê-lo para o que, em última análise,? 

Código objeto. E código objeto é apenas uma fantasia maneira de dizer zeros e uns. E, em seguida, uma vez que eu queria para executar esse código objeto, Uma vez eu quis passar como entrada os zeros e uns em meu computador de cérebro, o chamado CPU ou a unidade de processamento central, Eu tinha que executar o programa. Mas não foi um simples na segunda-feira como apenas um duplo clique algum ícone. O que em vez que eu tenho que fazer, a fim de executar um programa? 

O que foi segundo comando? Estou ouvindo um pouco de barras? Sim, sim? 

ALUNO: Dot corte e o nome do programa. DAVID MALAN: Exatamente. Dot barra eo nome do programa. Agora o que isso significa? Bem dot é apenas uma maneira misteriosa de dizer diretório atual. Seja qual for a pasta que você está é como referenciado, é representado como ponto. A barra é apenas o que você já viu no Mac OS e Windows há anos, é um separador entre um diretório ou pasta e do resto de algum nome. No Windows isso acontece para ir para trás, em Linux e Mac OS acontece a ir para a frente. Mas é apenas o separador, por isso é apenas um detalhe sintático desinteressante. 

A parte suculenta do curso é o nome do programa, Olá. E é isso que fazem criou para nós. É emitido o arquivo para nós. Mas como chegamos a esse ponto? Vamos agora pedir ao pergunta, o que foi realmente acontecendo aqui, pelo menos com relação a alguma desta sintaxe? 

Assim, em uma frase mais ou menos, como é que vamos explicar afastado Nesta primeira linha que é destacadas em verde? O que foi que a primeira linha fazendo, no que diz respeito ao meu programa? Sim? 

Estudante: [inaudível]. DAVID MALAN: Diga isso de novo? ALUNO: Incluindo e download funções passadas [inaudível]. DAVID MALAN: Good. Incluindo, eu não vou dizer o download, mas digamos incluindo funções que as pessoas ter escrito no passado. E essas funções são implementadas em algum lugar no meu computador. Alguém escreveu um arquivo anos atrás, e esse arquivo está em algum lugar dentro do CS50 aparelho, ou no meu disco rígido de modo mais geral. E assim, esta linha é essencialmente dizendo: ir encontrar esse arquivo, E / S padrão dot h, e copiar e colar o seu conteúdo aqui no topo do meu arquivo para que eu não tenho que fazer isso manualmente mim. 

E entre as peças mais suculentas dentro de que arquivo que dizia ser o que função? Qual a função que nós dissemos foi declarado ou mencionado em E / S padrão dot h provavelmente? Printf, certo? Nós não escrevemos sobre printf Segunda-feira, ele só existiu. Muito parecido com Alana acabou em cima do palco e ela só existia e sabia como desenhar algo na tela, de modo que printf existir durante muitos anos. E assim é assim que acessá-lo. Agora, se vamos passar aqui, principal era que análogo disse para a peça de quebra-cabeça chamado quando clicado bandeira verde no mundo do Scratch. É apenas uma espécie de nome padrão que os seres humanos Decidiu representaria o padrão ponto de entrada para um programa. O pedaço de código de programação que é executado pela primeira vez. 

Enquanto isso, estas chaves são como o tipo de formato curvo de muitas dessas peças arranhar amarelas. Eles tipo de encapsular um conjunto bando de instruções juntos. Por isso, apenas uma espécie de ligação entre as algumas funcionalidades relacionadas. printf, claro, é uma função que imprime na tela, como acabamos de fazer. 

E esses parênteses? Como você define-- Mesmo que você tenha nunca programou antes, mas apenas com base agora um aumento espero que a intuição, o que são os parênteses fazendo por nós aqui? Ou o que eles estão ao redor? Sim? 

ALUNO: Eles estão dizendo que você vai imprimir com printf. 

DAVID MALAN: Sim, eles estão dizendo que você vai imprimir com printf. Ou, mais geralmente, eles são em torno das entradas para a função. Então, você quase pode pensar desses parênteses como sendo o metal clipe nesta área de transferência. É o que está segurando, é o que é vai ser usado para fornecer argumentos para a função, em que Neste caso é chamado de printf. 

Assim, em geral, quase qualquer vez que chamar uma função, vamos ver um par de parênteses. Talvez com alguma coisa nele, como agora, talvez nada nele. Mas é aí que você colocaria as entradas ou os chamados argumentos a uma função. 

Aqui está um tal argumento. Eu destacou tudo entre as aspas, pois verifica-se neste linguagem chamada C, quando pretender representar uma string-- que é uma palavra ou uma frase ou até mesmo uma paragraph-- você tem que cercá-la com aspas duplas. Não citações simples, aspas duplas. E isso é exatamente o que eu fiz aqui. 

Enquanto isso, há um mal-cheiroso símbolo para o fim ali. A barra invertida n. O que nós dizemos que representou? Sim? 

ALUNO: A nova linha. 

DAVID MALAN: Nova linha. Certo, você não geralmente pressione Enter quando você deseja que o programa para cuspir uma nova linha. Em vez disso você diga a ele explicitamente com esta peça reconhecidamente arcano de sintaxe, barra invertida n, que você quer uma nova linha para ir lá. Finalmente, o ponto e vírgula. Nós realmente não falar muito sobre isso, e, de longe, esta será a ruína de alguns de sua existência para o primeiro problema definido, quando você apenas não percebeu você esqueceu algo tão estúpido como um ponto e vírgula. E geralmente colocando-a não vai resolver esse problema. Mas o que ele está fazendo para nós, você diria? 

Estudante: [inaudível]. 

DAVID MALAN: Desculpe? 

Estudante: [inaudível]. DAVID MALAN: Finalizando um comunicado. É mais ou menos como o período em o fim de uma frase Inglês, Considerando que, neste idioma C está terminando um comunicado. Uma instrução de programação código que você apenas quer dizer, Eu estou satisfeito com isso. Agora note que é o único aqui. Então você não quer entrar em o hábito de colocar pontos e vírgulas após cada parêntese fechado. Por exemplo não há nenhum ao lado de anular, e nós vamos voltar no futuro para o meio vazio. Mas neste caso o printf é uma função, ou uma declaração de que está sendo usado, e por isso queremos ter que terminal no final do mesmo. 

E eu estou intencionalmente pegando no C. E francamente um monte de linguagens como C, C ++ Java, JavaScript, e qualquer número de outras línguas tem um monte delas tipo de detalhes sintáticos. Isso, certamente, se você é novo para programação pode realmente te enganar. E você vai, marcar meu palavras, alguns de vocês vão ter essa experiência em horário de expediente ou tarde à noite trabalhando em algum p-set, onde seu programa maldita só não compila, ele não é executado, você tem nenhuma idéia o que está errado, parece completamente logicamente correta para você. E é porque você se esqueceu algo como bater um ponto e vírgula no final da linha de alguns. 

Mas estes são os tipos de coisas que você é vai aprender imediatamente para ver. E, na verdade estas são as coisas que e TF da do CA tem foi uma espécie de treinamento para ver muito mais rapidamente do que você. E assim, esta é apenas a dizer, como você mergulho no conjunto de problemas 1, especialmente, não se sente frustrado por isso. Assim que tipo de aclimatar para o mundo, você começar a ver coisas que você não pode ver à primeira vista, esta primeira semana. 

Assim, o código fonte é algo parecido. Nós queremos passá-lo para o chamado compilador. E isso compilador como dissemos fornece saída conhecido como código objeto, o chamado zeros e uns. Mas a partir daí, o que isso nos dá? Bem, isso nos dá esses padrões. E mais uma vez o seu computador, o Intel inside, entende esses padrões de zeros e uns. E às vezes o padrão representa um número decimal real como vimos na semana passada, por vezes, representa uma carta como vimos na semana passada, por vezes, representa uma instrução, como imprimir algo na tela. 

Então printf para instance-- mas sim, deixe-me voltar atrás. Temos vindo a tomar para concedido que esses zeros e uns são produzido por este comando make. Mas make não é um compilador. Fazer não é a coisa no meio que está produzindo os zeros e uns. Prefere fazer é apenas um muito convenientemente programa chamado cujo propósito na vida é, essencialmente, para descobrir como compilar o seu programa. E nós usá-lo nessas primeiras semanas, porque só nos salva um monte de problemas. 

Mas o que fazer é realmente fazendo quando você compilar Olá, é, como se disse da última vez, é olhando em seu disco rígido ou na pasta atual, para arquivo chamado que, aparentemente? Hello.c, certo? Isso é apenas uma espécie de convenção. É arbitrário, mas essa é a maneira como as coisas são. Faça, se você acabou de especificar o nome de um programa que ainda não existe, ele vai olhar para o código-fonte em um arquivo, por padrão significa ola.c. E se ele encontrar, ótimo. Vai converter essa fonte código em código objeto para você. 

Mas cada vez que eu pressione Enter depois de executar o make Olá, Você se lembra de ver uma última vez bastante longo e seqüência enigmática de outras letras brancas e caracteres na tela? Bem, isso foi o comando real, o compilador real, que estava sendo executado. Assim, o compilador real, vamos usar a maioria dos do semestre é algo chamado clang. Alguns de vocês podem ter usado Visual Studio antes, ou GCC, ou qualquer número de outros compiladores. Usaremos clang. 

E clang nos permite realmente converter que o código fonte do código-objeto. O que isso realmente significa na prática? Bem, deixe-me entrar em um dos minhas pastas de última hora. Dentro do aparelho CS50. E deixe-me ir em frente e criar esta mesmo arquivo, incluem padrão I / O ponto h. Void main Int. E nós vamos voltar no futuro como ao que int meios e que significa vazio. Mas, por agora, vamos fazer Olá barra invertida mundo n, Assim como fizemos no tabuleiro. 

Deixe-me salvar este arquivo chamado ola.c. E agora, se eu quiser compilar este Eu could-- me deixe zoom prazo em-- Olá fazer entrar. E esta foi novamente essa linha muito enigmática. Mas agora, pelo menos, uma palavra provavelmente salta em você. Clang é nessa linha que vimos antes. Agora há um monte de outras coisas francamente que vamos agitar as mãos no para hoje. Mas há alguns subconjuntos, alguns personagens aqui que são de interesse. Mas eu estou indo para ir em frente e fazer isso. Eu estou indo para primeira corrida Olá, só para provar que este está a funcionar como era segunda-feira. Mas agora eu vou excluir o programa. E assim como nós tivemos estes nomes curtos última vez, o comando para a remoção algo é rm, remover entrar. Você está indo para obter algum questões bastante enigmática. Difícil de acreditar que você pode fazer mesmo esta pergunta difícil de entender. Mas remover Olá arquivo regular apenas meios quer apagar Olá. 

E eu posso ir em frente e digite y para sim, Enter, e agora ela se foi. O que isso significa agora, se eu limpar minha tela, é que, em vez de que faz você hello-- Sabe, eu estou ficando bom nisso. Eu estou indo para executar o compilador mim. Eu não preciso de algum programa para descobrir o que meu arquivo é chamado. Escrevi ola.c, I sabe o que é chamado, Estou claramente capaz de digitar isso. Então, eu estou indo para a frente e não clang ola.c Enter. 

Parece funcionar. E não há nenhuma saída adicional, porque clang é o compilador. É o que está convertendo a código-fonte para zeros e uns. Então, se eu faço agora dot reduzir Olá Enter, hm. Nova mensagem de erro hoje. Então bash é apenas o nome do piscar prompt que estamos usando. Isso é uma simplificação grosseira, mas por enquanto isso é tudo o que é, é o prompt piscando. E é por isso que ele está gritando com a gente. 

Nenhum arquivo ou diretório é um pouco mais simples. Mas, certamente, eu fiz esse código objeto. Mas o problema é que, se eu digitar o comando para listar o conteúdo deste diretório, que é o que? ls para lista. Há um monte de coisas aqui, alguns dos quais vieram com o aparelho, como a minha pasta Desktop, Download pasta, pasta Dropbox, e todos essas coisas. Mas o que é interessante é ola.c, que Eu criei um momento atrás, com gedit. E o que é o mais estranho olhando nome aqui, talvez que não fez veja última hora em tudo? 

a.out, certo? Então, de volta ao dia, ele foi decidido que apenas quando você compilar um programa , pela primeira vez, e você não especificar o nome de um arquivo, vamos chamá-lo a. E a.out significa apenas que esta foi a saída do compilador. Portanto, é um nome horrível para um programa. Mas por essa lógica, ponto para cortar diretório atual, cortar a.out, deve dizer que há, de fato, Olá meu programa mundial. Agora um pouco aquecer exercício também. Se eu quiser mudar o nome desta arquivo, acontece que você mover um arquivo de um nome para outro. A.out Então mv, e então eu pode chamá-lo Olá Enter. Portanto, este é um comando Linux. DOS tinha isso há alguns anos, O Windows tem uma janela de terminal de algum tipo que parece assim, Linux e Mac computadores têm este prompt piscando. Mesmo que a maioria de nós provavelmente raramente, ou nunca, usá-lo. 

Mas o que eu tenho feito é executar um programa, cujo nome é mv, e eu tenho desde que com dois argumentos, por assim dizer. Duas entradas. a.out é o nome original. Olá é o novo nome. Então, se eu agora fazer corte de ponto Olá, Enter, o que existe. E se eu fizer dot a.out barra, o que você espera que eu deveria ver? 

Bash, não existe tal arquivo ou diretório. Porque eu só renomeou. Então, isso leva um pouco de tempo para se acostumar. Mas o conjunto de problemas 1 especificação será verdadeiramente segurar sua mão algumas dessas minúcia. Porque este é um completo distração intelectual do mais interessante idéias em mãos, que é, na verdade, criando algo fora do código. Mas vamos fazer uma modificação agora a este programa. 

Lembre-se que da última vez que fiz algo assim, printf, diga seu nome. E, de fato nós só fez isso na tela grande por lá. E então eu fiz string s fica GetString parêntese aberto, perto parêntese. E paren apenas taquigrafia notação de parênteses. Então não GetString tomar quaisquer argumentos? Não há entradas Não, mas precisa dos parênteses, porque é isso que demarca a convocação de uma função. 

Então, eu estou indo para ir em frente e tentar executar o compilador sobre este programa agora. Clang ola.c, porque eu não alterou o seu nome para agora. E eu tenho um monte de erros. Vamos diminuir o zoom aqui. Se eu rolar para cima novamente, como eu disse da última vez, para o primeiro, mesmo erro que eu tenho a última vez. Na linha 6 do ola.c eu tive uma seqüência de identificador não declarado, eu quero dizer padrão em? Eu não. Porque o erro já fiz nesta programa, se você se lembra da última vez? Sim, precisamos da chamado rodinhas que nós vamos usar apenas por algumas semanas. Mas eu preciso especificar que também, em algum lugar dentro do aparelho, é um arquivo que nós escrevemos apenas alguns anos atrás. Dentro dos quais são funções como aparentemente GetString. Portanto, agora se eu voltar aqui, aumentar o zoom, e re-executar clang ola.c. Droga, outro erro. Mas nós não vimos isso antes. 

Essa é um pouco mais esotérico para descobrir. Mas esta é deliberadamente no ecrã, porque queria contar essa história. Quando você compila ola.c, assim como a imagem de antes sugerido, você está convertendo apenas que código-fonte para zeros e uns. Agora a equipe CS50 há alguns anos escreveu CS50.h, e um arquivo correspondente, CS50.c. E nós, há alguns anos atrás, compilou os arquivos em um arquivo que acontece para ser chamado CS50.o. 

Ou ele pode ser renomeado uma algumas coisas diferentes. Mas isso é uma maneira simples de pensar sobre isso. Então, nós compilamos CS50 da biblioteca em zeros e uns. Mas em nenhum lugar que eu especificada que eu quero juntar os zeros e aqueles para minha Olá mundo programa com os zeros e uns que o pessoal CS50 criei há alguns anos atrás em um programa completo. Tudo o que eu especificado por escrito ola.c clang é compilar ola.c. 

Eu não contei para clang link nos zeros e uns que o pessoal CS50 criado para você há algum tempo. Por isso é fácil de resolver, traço l para link, CS50. E nós vamos voltar a ver esta em pouco tempo uma e outra vez. Mas observe agora não houve queixas. Portanto, agora se eu corro barra dot Olá, agora ele está trabalhando. Apesar de que é um pouco enganosa desde que eu apenas recriou o arquivo? a.out. 

Então deixe-me recuar por um momento. O programa que acaba de compilar tem as três linhas de código. Quando eu corri Olá mundo, Olá um momento atrás, eu não vi o seu nome. E isso é porque eu corri o versão antiga do programa. Mas se eu, de fato, executar dot a.out barra Entre, diga o seu nome, Rob, Olá, mundo. Hm. Isso é um tipo de bug. Provavelmente queria dizer Rob, certo? Então, qual é a correção aqui no código. Estudante: [inaudível]. DAVID MALAN: Exatamente. Então eu só preciso fazer essa emenda definitiva por isso que eu estou passando em um espaço reservado, como um preencher o vazio, como fizemos há pouco. Mas por cento s é agora que preencher o vazio. Então finalmente vamos revelar uma última detalhe para que não há mágica. Eu estou indo para ir em frente e se livrar de hellow. Eu estou indo para ir em frente e se livrar de a.out. Então agora eu tenho nenhum programa, apenas o meu código fonte. E eu estou indo para executar um um pouco mais de comando, clang traço o Olá ola.c traço LCS50. 

Agora isso está começando a sorte de ir por um ouvido e sai pelo outro, talvez. Mas apenas desmembrar o que este está fazendo. Clang é o compilador, LCS50 traço deliberadamente no final faz o que em uma frase? Links para a biblioteca CS50. Agarra os zeros e aqueles que a equipe fez e abarrota-los em meu próprio programa. Assim, a última questão em apreço é, o que é o traço Olá provavelmente fazendo, mesmo se você nunca visto esta sintaxe antes? 

Produzir um programa que é não nomeou o a.out padrão. Pelo contrário, é chamado Olá. Portanto, agora não há a.out. Não existe tal arquivo ou diretório, porque eu disse explicitamente chamar este programa Olá, de modo que Agora eu posso digitar um nome como esse e tê-lo se comportar. 

Agora, francamente, menino é que desinteressante para ter para lembrar de todos que minúcia pouco, certo? Então, vamos em frente e se livrar Olá novamente. E vamos agora voltar a um mundo em que basta dizer Olá fazer. Mas essa é a mágica que fazer está fazendo por você, que é o tédio que que está fazendo para você. E, como nossos programas e problemas se tornam mais complexos, fazer vai realmente ser seu amigo. Porque não muito tempo a partir de agora nós vamos ter programas que são escritos não com um arquivo, mas vários arquivos, e fazer irá automatizar o processo de compilando tudo isso para nós juntos. 

Então agora imprimir. printf está dentro desse arquivo, padrão I / O ponto h, que já vimos antes, mas há mais para printf do que isso. Não há barra invertida n, mas há também um monte de outras seqüências de escape. E sequência de escape é apenas um maneira elegante de dizer algo que começa com uma barra invertida, não uma barra, uma barra invertida e faz alguma coisa especial. E não vou me debruçar sobre a maioria destes, mas porque é que há barra invertida aspas duplas, que você acha? Por que há essa seqüência estranha de caracteres, aspas duplas barra invertida, por que pode que pode ser útil? Estudante: [inaudível]. DAVID MALAN: Exatamente, certo? Pense de volta para o nosso programa Olá mundo que temos visto algumas vezes agora, cada vez que vimos que Olá mundo programa tivemos aspas dentro de que é Olá vírgula barra invertida mundo n. Mas pensar a si mesmo, E se você realmente queria imprimir uma aspas? Seu primeiro instinto pode ser, eu não sei sabe por que eu poderia querer fazer-- aqui, que pode ser um pouco passiva agressivo, Olá amigo. Podemos querer fazer algo assim. 

Mas por que isso agora é problemático? Ignorando as aspas curvas de lado que keynote fez por nós automaticamente. Por isso é problemático? 

Exatamente. Porque nós temos como 4 aspas. Bem, o primeiro provavelmente continua com a segunda, e talvez a uma quarta continua com a terceira, ou, eu quero dizer que eu não tenho certeza, nem é o computador vai ser. Computadores novamente, compiladores mais uma vez, são bastante idiota. Eles só vou fazer o que você dizer-lhes o que fazer. E se você não é inequívoco que provavelmente vai lançar um erro. 

Se você não é inequívoca quanto à forma de fazer uma manteiga de amendoim e geléia sanduíche coisas estranhas poderiam chegar. É a mesma idéia. Agora basta dizer que há algumas outras seqüências de escape, mas nós vamos chegar a aqueles antes do tempo. Essencialmente, estas fuga seqüências representam algo que você pode não ser capaz muito facilmente no teclado, sem confundir o computador. 

Agora, entretanto, temos espaços reservados no printf. Por cento d, que também pode ser escrito em quase todos os casos por cento i, é um espaço reservado para que tipo de dados? Que tipo de valor? Um número decimal. Então, na verdade nós vamos começar usando por cento i porque é um pouco mais simples, como um número inteiro. I por cento. Um inteiro que passa a ser decimal. 

Porcentagem s já disse foi um espaço reservado para a string. Que é apenas uma palavra, uma frase, um parágrafo, um ensaio, qualquer que seja. É uma seqüência de personagens de algum tempo. E veremos em breve alguns destes outros. Mas por cento c é para uma única personagem. Porcentagem f é para um número de ponto flutuante, como um número real que tem um ponto decimal na mesma, que é claro que não um inteiro. E não há um todo monte de outras pessoas também. 

Enquanto isso, na C, e em muitas línguas, temos diferentes tipos de dados. Diferentes tipos de bacias de vidro se você quiser. A taça que eu usei última vez foi para as bolas de pingue-pongue, mas também podemos armazenar diferente valores como caracteres e strings e inteiros em um recipiente, como uma variável, e C tem estes. Char é o tipo de dados, o tipo de variável, no qual você pode armazenar um caractere. Float é um tipo de variável em que você pode armazenar um número real. 

Int é, naturalmente, para um int. E, em vez ridiculamente nomeado um longo é o lugar onde você pode armazenar essencialmente um número muito longo, mesmo com mais dígitos, em seguida, uma típico loja pode int. Mas vamos voltar a isso em pouco tempo. 

Em CS50 dot h enquanto isso o outro arquivo de cabeçalho que vimos um casal vezes em uso, há dois outros tipos de dados que não existem em C normalmente. Um deles é de cordas, e vamos ver no algumas semanas que linhas realmente estão debaixo do capô. E é bool. E um bool é uma variável que só pode assumir certos valores. E apenas com base na última semana explicação do Scratch, e, mais recentemente, C, o que você imaginar são os dois valores possíveis para algum recipiente que é do tipo bool? 

Sim e não. Um e zero. Verdadeiro ou falso. E, de fato, é o último que tende ser convencional em uma programação linguagem, dizendo algo como verdadeiro ou falso. 

Enquanto isso, a biblioteca CS50 vem com um monte de funcionalidade que o pessoal escreveu para você, além de apenas recebendo uma string. Nós escrevemos em funções de avanço que pode obter um número inteiro a partir do utilizador, obter um único personagem, obter uma bóia, que é apenas um número com ponto decimal. Obter um longo tempo, realmente grande valor para o usuário. Por isso, só vi isso em ação na forma de GetString. Mas através destas funções em breve será capaz de escrever programas que recebem a entrada do usuário. 

Enquanto isso considero este programa, e considerar como podemos agora começar a adicionar a com novas construções. Um rápido tour rápido e depois veremos em algum escrever algum programas manualmente nós mesmos. A partir de agora, se quisermos aplicar uma condição, ele não vai olhar como um bom pedaço de quebra-cabeça bonito. Vai parecer um pouco mais misteriosa. Mas esta é a canônica estrutura de uma condição em C. 

A palavra se, dois parênteses, no interior dos quais vai ser algum tipo de expressão booleana. Agora a barra barra no meio, isto é no momento mais ou menos como espaço reservado código pseudocódigo. Mas, mais propriamente, qualquer linha de código em C que começa com slash slash é um comentário. 

É como uma nota que você pode colocar em um ensaio, impresso em papel. É uma nota para si mesmo. Não tem nenhum funcional impacto sobre o programa. É uma espécie de lembrete, é a sua própria documentação sobre o que está acontecendo. Então faça isso no momento é uma espécie de espaço reservado para o que está dentro dessas chaves eventualmente, vai fazer alguma coisa. 

Enquanto isso, você tem dois garfos na estrada, uma outra se construir como este. Você pode, se, elseif, else. Agora é importante notar, especialmente se você tiver sido pesquisando por aí recursos on-line para fora da curiosidade, ou se você pegar um do curso de livros recomendados sobre C, você vai ver que os seres humanos têm muitas de diferentes preferências de como de se expressar em código. Algumas pessoas gostam de colocar o chaves como eu fiz aqui. Algumas pessoas gostam de colocar o encaracolado suspensórios, por exemplo, aqui em cima. 

Algumas pessoas gostam de colocar a elses aqui em cima e, em seguida, este aqui. Não há qualquer número de maneiras de escrever código, e nenhum deles tem razão per se. Embora há alguns que são muito errado. Mas existem no-- se este for em última análise, um debate muito religioso. De fato, um dos mais irritantes coisas sobre ciência da computação é como opinativo cientistas da computação pode ser. E você vai encontrar ao longo do tempo que até mesmo a desenvolver preferências pessoais sobre a forma como o código deve olhar. 

Não apenas se comportam, e não apenas criar uma saída, mas como se deve olhar esteticamente. Então, o que vamos fazer é orientá-lo ao longo o caminho para, pelo menos por agora, CS50 um estilo padrão que pelo menos mantém as coisas uniforme e fácil de ler. Mas mais sobre os distinções antes do tempo. 

Uma expressão booleana em C, se você quis dizer se essa condição for verdadeira e esta é outra condição verdadeiro, você não escrever a palavra e, como você faria em Inglês. Você sim usar e comercial e comercial, por razões que vou voltar. Se você quiser dizer ou você usar dois barras verticais, que em um teclado americano é geralmente acima do Enter próxima chave para a barra invertida. E isso apenas significa que se esta condição este ou outra condição é verdadeira fazer isso. 

Enquanto isso há essa coisa louca, que você vai ter ocasião usar de vez em quando. Mas é apenas uma alternativa maneira de se expressar. Este, por agora, vamos estipular, é apenas uma outra maneira divertida de expressar se, elseif, elseif, elseif, elseif. É só formatado em termos de casos, onde você literalmente enumerar os valores que você pode querer verificar. 

Enquanto isso laços. Vimos uma comparação de Raspe com um laço. E eu vou acenar minha mão em o que cada uma dessas coisas significa. Mas note que um loop será muito muitas vezes começam com a palavra-chave para. Ou será que vai começar com a palavra-chave quando. Ou será que vai começar com a palavra-chave fazer, e terminam com a palavra-chave ao mesmo tempo. 

Mas o que estamos prestes a ver é as coisas mais como este. Aqui está, em geral, em C, como você pode declarar uma variável e dar-lhe um valor. Em C não basta, como em risco, você só dizer-me dar uma variável chamada alguma coisa. Você tem que dizer C, e dizer seu compilador, mais especificamente, que tipo de valor você quero colocar na tigela de vidro. 

É um inteiro? Se assim for, você tem que literalmente dizer int e depois o nome da variável, em seguida, um ponto e vírgula. Se você em vez queria corda e chamado É como eu fiz o meu código aqui hoje, você diria vírgula string s. Uma vez que você quiser dar-lhe um valor então você pode usar o sinal de igual, também conhecida como a operador de atribuição. E perceba como cada destas linhas de código tem o ponto e vírgula no final do mesmo. 

Mas, francamente, isso só parece um pouco feio. Por que eu não posso dizer para o computador, dar me uma variável e inicializá-lo para zero. Ou seja, dá-me uma tigela de vidro vazio. Enquanto você puder. E assim uma das juízo chama você tem que fazer durante o tempo estilìstica é, você escreve seu código como este, ou você tipo de limpá-lo e impressionar pessoas por escrever duas linhas como apenas um. E isto seria considerado em geral, uma forma mais elegante de escrever o seu código estilisticamente. 

Funções estamos naturalmente visto. Eles vão ter este formato. O nome de uma função, alguns parênteses, e depois talvez alguns coisas dentro. Ou você pode ver os usos de múltiplas funções lado a lado, como algo parecido com isto. Agora como uma tangente, faz essa piada agora faz sentido? 

[Risos] Isso não significa que é engraçado, mas não, talvez, fazer um pouco mais de sentido. Então agora vamos entrar na Aparelho CS50 por um momento. E deixe-me abrir uma provocação aqui. 

E, de fato uma das razões para a introdução de catálogo IKEA e piscando a imagem do iPhone um pouco atrás era, na verdade, o laço em conjunto fato de que apenas alguns anos atrás, em 2007, este pedaço de código foi liberada, o que foi um dos primeiros implementação de uma parte do software que faz o que é chamado de jailbreaking. Para quem não conhece, o jailbreak algo como um telefone ou um iPhone significa, essencialmente, figurando como fazer as coisas com que a empresa quem fez isso não tinha a intenção. Como você quer instalar determinado software que não é na loja de aplicativos, jailbreaking o telefone que você faz coisas como essa e muito mais. Mas o que era diversão em 2007-- e houve dezenas de versões diferentes essas coisas, desde então, em todos os tipos de languages-- é que este programa aqui, chamado iUnlock, foi realmente escrito em C. E assim eu puxado para cima o código-fonte para isso, apenas para o tipo de mostrar alguns dos as semelhanças com as construções estamos discutindo até agora. Agora há muito mais complexidade aqui do que já vimos em sala de aula. Deixe-me ir para cima um pouco aqui. 

Mas note bem these-- notamos alguns coisas-- mas observar estas linhas aqui, incluindo o padrão I / O ponto h. E tudo-- linha 24, por favor-- notar E / S padrão dot h e um monte de outros arquivos que aparentemente outras pessoas ter escrito. E, se deslocar para baixo esta, pouco arbitrária, Repare que eu não sei como escrever tudo isto ainda me necessariamente, mas não há se. Então, aparentemente, isso tem uma filial. 

E se eu rolar para baixo um pouco ainda há um outro caso. Se eu rolar para cima, eu acho que em torno da linha 100 que eu vi para. Então, eu não estou muito certo como isso funciona ainda, mas isso é um loop que vai deixe-me iterar um determinado número de vezes. E se eu percorrer todo o caminho para o fundo Eu vejo que há uma funcionar aqui chamado principal, e alguns créditos adicionais para seu prazer da leitura. 

Portanto, esta é apenas a dizer-- e colocaremos esta linha entre a fonte do curso código hoje-- que mesmo alguns destes dispositivos que nós tomamos para concedido, no final do dia você ainda está usando essas construções básicas que nós já foi introduzindo até agora. Isso é o suficiente daquele. Tudo bem, então agora vamos realmente construir algo. 

Vamos além algo como ola.c, e abrir isto, vamos escrever este programa aqui. Eu estou indo para ir em frente e escrever um programa chamado adder.c, cujo propósito na vida vai ser como a minha primeira calculadora super simples que acrescenta um par de números. Não porque é um disco problema, mas porque permite-me agora amarrar juntos algumas coisas. Então, eu estou indo para ir em frente e incluem E / S padrão dot h e CS50 ponto h. Eu vou dizer void main int. E novamente no futuro vamos voltar a ele em neste contexto e meio vazios. 

E agora eu vou dizer uma coisa como printf, dá-me um inteiro. E agora na minha segunda linha, como faço para me expressar tal que eu quero declarar uma variável que vai armazenar um int? Literalmente, o que eu escreva, se eu quiser criar uma variável que armazena um int que você diria? int a igual getInt. Claro, assim que funciona. E apenas para consistência com o código que você ver on-line, deixe-me mudar isso para x, só porque x é um nome comum variável de usar, pelo menos em álgebra. Agora deixe-me ir em frente e fazer printf novamente. Dê-me outro inteiro. E agora eu vou tipo de aprender com esse padrão, Eu vou dizer int y começa a getInt. 

E nós não usei GetInt antes, mas apenas como GetString vai e pega uma corda, como Javier fez da platéia, similarmente faz GetInt começar a piscar o prompt. E efetivamente espera para o usuário para dar-lhe um número inteiro, digitando-o e pressionar Enter. Agora finalmente eu vou fazer esta, a soma printf de-- e me deixe agora-- fantasia i por cento e cento i está presente i Ponto de Exclamação barra invertida n. E o que você acha que eu vou colocar agora como as entradas adicionais para printf? 

Eu não quero dizer literalmente entre aspas x. Quero classe em x e então, e agora vamos começar a fantasia e vamos supor nós podemos fazer o que queremos. O que você quer dizer em seguida? x mais y. E, de fato, que vai funcionar. É minimamente linguagens de programação fazer entender a aritmética básica, e por isso deve de fato funcionam. 

Então deixe-me ir em frente e fazem víbora em minha janela preto e branco aqui em baixo, Enter. Linha críptica mas nenhum erro mensagem, então isso é bom. Dot cortar víbora, me dê um número inteiro, 1. Dê-me outro inteiro, 2. A soma de 1 e 2 é 3. 

Tudo bem, então uma bem simples programa, mas o que está feito? Ele me permitiu usar uma função chamar aqui, chamar uma outra função aqui, duas chamadas para GetInt, um terceira chamada para printf, e em seguida, usando esses espaços reservados. Portanto, é um pouco mais sofisticado do que da última vez. Mas e se eu quiser ficar um pouco mais extravagante? 

Deixe-me ir em frente e fazer isso agora. Deixe-me ir em frente e criar um novo arquivo chamado condições zero. E eu estou indo para salvar algum tempo para as aulas de amor e basta colar em que código como um ponto de partida. E agora eu só vou colocar algo novo aqui no meio. Então printf Eu gostaria de um número inteiro por favor. E todo este código está disponível no site do curso, você não precisa digitá-lo todo para fora em sala de aula, se você preferir não. int, e agora eu vou utilizar, em vez de x e y, Eu vou usar n, que é provavelmente o nome mais comum para um número inteiro de um programa de computador. E agora eu quero fazer um pouco julgamento aqui. Vou ver se n é maior que 0, então Eu vou dizer gritos printf--, printf-- você escolheu um número positivo, ponto de exclamação barra invertida n. Feche essa. Mais eu vou imprimir printf você escolheu um número negativo. 

Agora, antes de gritar comigo, vamos executar este programa. Deixe-me ir para baixo aqui. E como faço para compilar um programa chamado condições traço 0? Faça condições traço 0. Tipo de um nome estúpido, mas-- caramba. OK, bom momento de ensino. Por que que quebrar? 

O que eu acidentalmente chamar este arquivo? Você pode tipo de inferir a partir da guia aqui. Portanto, não é ruim que eu fez isso, porque esta vai acontecer, talvez, para alguns de vocês. Então eu chamei minha acidentalmente 0 código fonte condição. Mas o meu código fonte por convenção deve estar em um arquivo chamado condição 0 traço c, ou seja lá o ponto c. 

Então deixe-me corrigir isso. Assim como o Microsoft Word que eu posso ir para cima para Salvar como e fazer condição 0 ponto c. Agora é só para ser arrumado eu sou indo para a frente e remova condição 0, o que foi a minha versão antiga. E agora vamos fazer fazer condição 0, Enter. OK, parece bom. 

Condição 0, Enter. Eu gostaria de um número inteiro, por favor, 50, você escolheu um número positivo. Agora, que tal negativa de 50? Você escolheu um número negativo. Que tal agora, 0. Certeza que 0 não é negativo. 

Portanto, este é um tipo de erro lógico. Como faço para corrigir isso? Else se n for menor que 0, faça isso, senão podemos ter uma de três vias filial aqui, printf você escolheu 0. Portanto, agora se eu executar novamente este programa, depois de compilá-lo novamente com o make, e agora executar novamente condição 0, o que eu vou ver aqui é 0 me dá essa saída. Então para onde estamos indo com isso? 

Bem, é muito fácil perder de vista da floresta para as árvores. E assim nos permitem concluir com esse vídeo de 2 minutos e meia em última análise, que é um pouco de um anúncio do Google, mas que realmente é a prova que mesmo utilizando estes construção básico blocos que podem finalmente fazer uma vez nós temos um pouco de programação esclarecido sob nossos cintos. 

[MÚSICA DE JOGO] 

SAROO BRIERLEY (narração): Foi há 26 anos, e eu estava prestes a completar 5. Chegamos à estação de trem e embarcamos nosso trem juntos. Meu irmão acabou de dizer que eu vou ficar aqui, e eu vou voltar. E eu pensei, bem, você sabe, Eu poderia muito bem apenas ir dormir e ele só vai me acordar. E quando eu acordei a próxima dia, o conjunto de carro estava vazio em um trem desgovernado, um fantasma trem me levar Eu não sei onde. 

Eu fui adotado para a Austrália, para uma família australiana. E a mãe tinha decorado minha sala com o mapa da Índia, que ela colocou ao lado de minha cama. Eu acordei todas as manhãs vendo esse mapa, e, portanto, que tipo de mantidas as memórias vivas. As pessoas diziam: você é tentando encontrar uma agulha em um palheiro, Saroo você nunca vai encontrá-lo. 

Eu teria brilhou dos lugares que eu costumava ir, os flashes de minha família enfrenta. Havia a imagem de minha mãe, sentar-se com as pernas cruzadas, apenas observando-a chorar. A vida é tão difícil. Esse era o meu tesouro. E eu estava olhando para o Google Map e percebi que não é o Google Earth também. Em um mundo onde você pode aumentar o zoom, Eu comecei a ter todos esses pensamentos e quais as possibilidades que isso poderia fazer por mim. Eu disse a mim mesmo, você sabe, você tem tem todas aquelas memórias fotográficas e marcos de onde você é, e Você sabe o que a cidade se parece. Esta poderia ser uma aplicação que você pode usar para encontrar o seu caminho de volta. 

Eu pensei, bem, eu vou colocar uma ponto na estação de trem de Calcutá, e uma linha de raio, você sabe, que você deve estar procurando em torno desta área. Eu meio que me deparei estes trilhos do trem. E eu comecei a segui-la, e Cheguei a uma estação de trem que refletia a mesma imagem que estava em minhas memórias. Tudo combinado. Eu apenas pensei que sim, eu sei para onde estou indo. Eu só vou deixar o mapa que eu tenho na minha cabeça guia-me e levar-me de volta para minha cidade natal. 

Cheguei à porta do a casa em que eu nasci. E andava cerca de 15 metros em torno do canto, havia três senhoras em pé fora, adjacentes uns aos outros. E o do meio deu um passo adiante, e Eu apenas pensei, esta é a sua mãe. Ela veio para a frente, ela me abraçou, e estávamos lá por cerca de cinco minutos. 

Ela pegou minha mão e ela me levou para a casa e pegou o telefone, onde ela tocou a minha irmã e meu irmão dizer que, você sabe, teu irmão tem apenas de repente apareceu como um fantasma. E então a família estava reunida novamente. Tudo é tudo de bom, Eu ajudei a minha mãe para fora, ela não tem que ser escravizado. Ela pode viver o resto de sua vida em paz. 

Foi uma agulha num palheiro, mas a agulha estava lá. Tudo está lá. Tudo o que temos no mundo é, ao toque de um botão. Mas você tem que ter a vontade ea a determinação de querer. 

[MÚSICA DE JOGO] DAVID MALAN: Maravilhosamente depoimento doce apenas o que você pode agora fazer com a tecnologia. Vamos vê-lo na próxima semana.