LUCAS FREITAS: OK, eu acho agora estamos ao vivo. Bem-vindo ao CS50 Supersection. Estamos menos confortável. Meu nome é Lucas Freitas. Sou um CS50 Cabeça TFs. Este é Lauren. LAUREN CARVALHO: Oi, eu sou Lauren. Eu também sou chefe TF para CS50. LUCAS FREITAS: Hoje nós apenas estamos indo para dar uma visão geral de tudo o que você caras aprenderam em uma semana, espero que para dar a vocês uma boa sentido para o que você deve saber para definir um problema. Anúncios apenas um casal. Primeiro de tudo, o horário de expediente. Horário de atendimento estão acontecendo de segunda-feira a quinta-feira em diferentes casas em Annenberg cada dia. Eles são um recurso muito bom para você caras que estão por vir e fazer perguntas, e falar com TFs e até troca idéias com outros alunos. Então não se esqueça de usar esse recurso em seu favor. A segunda coisa é o CS50 Appliance. Para o último [inaudível] Vocês não tem que realmente ter um aparelho. Você acabou de fazer tudo em seu computador pessoal. Mas para este problema, você realmente tem ter uma máquina virtual, por isso não Certifique-se de baixar o CS50 Appliance e configurá-lo. E a terceira coisa é ter a certeza de iniciar o conjunto de problemas o mais rápido possível apenas porque é muito mais fácil encontrar ajudar quando você está no no início da semana. Porque as pessoas tendem a esperar até que o último segundo para iniciar o conjunto de problemas, e, em seguida, você vai para o horário de expediente, e há um monte de gente. Onde se você ir na segunda-feira, você vai para ver que você pode falar para TFS praticamente durante toda a noite, e eles vão ser mais do que prazer em ajudá-lo. LAUREN CARVALHO: Posso parar por apenas um segundo? Toda a gente foi capaz de baixar o CS50 Appliance? As pessoas têm tentado? LUCAS FREITAS: Para baixar, pelo forma, você pode obter instruções de cs50.net/appliance. LAUREN CARVALHO: Certo. E ele faz demorar um pouco para o nosso administradores de sistemas para que você obtenha uma licença chave, de modo que se inscrever para o avaliação gratuita em primeiro lugar. Dessa forma, você vai tê-lo por 30 dias, e depois esperar por sua chave de licença que deve dar-lhe a você por um ano. LUCAS FREITAS: Primeiro de tudo, vamos falar um pouco sobre o CS50 Appliance. O CS50 Appliance é realmente um virtuais máquina que você vai executado em seu próprio computador, que é basicamente executando outro computador dentro de seu próprio computador. O que é muito legal. E, na verdade, ele é usado em todos os lugares. As pessoas que a tecnologia iria saber que isto é usado o tempo todo. você? Pode ter vários computadores em um único dispositivo. Vamos realmente dar uma olhada no Appliance. Quando você vai para o aparelho após registrar, você vai ter que colocar o seu nome e login para Harvard de modo que você pode obter todos os cadastrados. Você vai ver basicamente apenas um papel de parede, e, em seguida, Home and Trash, e, em seguida, esses pequenos ícones. Este três ícones são realmente o mais coisas importantes que você pode ter em O seu aparelho. O primeiro é o gedit, que é um texto editor, como o bloco de notas ou como qualquer tipo de editor de texto. É apenas algo que usamos para escrever código e, em seguida, fazer coisas com ele. A segunda coisa que nós temos aqui é Chrome. Então, se você precisar usar a internet no aparelho, que é o que você pode usar. E a terceira coisa é o terminal, que é realmente muito doce. As pessoas geralmente são uma espécie de medo de o terminal, porque é este mesmo aplicação à moda antiga, em que você basicamente só digitar tudo com seu teclado. Não há muita interação com o mouse. Mas, na verdade, o terminal faz coisas muito boas. Primeiro de tudo, vamos apenas passar por alguns comandos que você pode utilizar no terminal. LAUREN CARVALHO: E sinta-se livre para parar nos se você tiver alguma dúvida. LUCAS FREITAS: Yeah. Assim, o primeiro comando que temos para o terminal é ls. ls significa, basicamente, lista tudo, tudo os arquivos e todos os diretores, que eu tenho no lugar que eu estou em. Então, se eu fizer ls aqui, eu vou ver que eu tenho alguns diretórios. Eu tenho o desktop, as transferências, os registos e os vhosts. Essas são em azul, porque eles são todos os diretórios. Então você tem alguns outros arquivos. Você tem como Olá e hello.c, que são apenas arquivos, e eles estão em cores diferentes. Portanto, este é um comando muito importante apenas você pode ver quais são os arquivos e diretórios que você tem no diretório que você está no terminal. Quando você vê jharvard @ aparelho e em seguida, o pequeno símbolo de lá, o til, isso apenas significa que essa é a diretório que você está no momento. LAUREN CARVALHO: Então digitando ls é quase como clicar na pasta que está listado ali mesmo, na Mostra você todo o conteúdo que estão dentro dessa pasta. AUDIÊNCIA: Existe texto após o ola.c? LAUREN CARVALHO: Ah, você não pode ver isso, porque é azul. LUCAS FREITAS: Diz toras e VHosts. LAUREN CARVALHO: Esses são apenas outras pastas. Sinto muito, é realmente difícil de ver. Talvez se apagou as luzes? Colton, você quer tentar e encontrar o interruptor de luz? Desculpe por isso. Eu não penso nisso. LUCAS FREITAS: Mas é basicamente - sim, se pudesse - LAUREN CARVALHO: Zoom em sua tela. LUCAS FREITAS: Eu não têm essa característica. LAUREN CARVALHO: [inaudível]. OK. Bem, há apenas um monte de recursos naturais luz nesta sala também. LUCAS FREITAS: Vamos supor que há dois outros diretórios lá. LAUREN CARVALHO: Basta ter connosco. Esta é a única parte que você vai estar a olhar para o terminal. LUCAS FREITAS: O próximo comando é basicamente talvez você queira organizar seus arquivos - por exemplo, todos os seus arquivos em um C diretório, mas você não tem um diretório apenas para arquivos C ainda. Basicamente você pode criar um diretório utilizando o terminal, bem como, o que é a mesma coisa que o botão direito e dizendo Nova Pasta. O comando é fazer diretório, que é mkdir, então basicamente "fazer" e "Diretório". E então você pode colocar o nome do diretório. Vamos dizer que eu queria ser chamado, Eu não sei, vamos dizer pset1 Fazer isso, acabei de criar um diretório. Vamos verificar se ele está lá. Então, se eu fizer ls, e agora vejo logs e então pset1 e VHosts. Então, eu tenho o novo diretório lá. E, depois que você tem um novo diretório, talvez você deseja navegar para ele, para que o próximo comando deste cd, que apenas significa, basicamente, ir a um diretório específico. Então, se eu quiser ir para pset1, Eu posso apenas fazer cd pset1. LAUREN CARVALHO: cd significa mudança diretório, [inaudível] capaz de lembre-se que. LUCAS FREITAS: E agora você vê que em vez de apenas ter jharvard aparelho, tenho jharvard aparelho, e depois pset1, porque está mostrando me onde estou neste computador. Agora, se eu quiser voltar para a diretório que foi antes de este, eu pode fazer um ponto cd ponto, o que significa apenas ir para o diretório que eu era antes, como o pai deste diretório, basicamente. E agora eu vejo que eu sou volta para jharvard. A próxima coisa que eu posso fazer isso é rm, que é remover o arquivo. Por exemplo, vamos primeiro fazer ls para ver o que eu tenho aqui. Tenho Olá e hello.c. Vamos dizer que eu queira removê-los. Eu posso fazer rm Olá. Vai dizer "remover arquivo regular Olá? "E eu digo" sim ". E agora, se eu ls fazer, eu vejo que é não está mais lá. Se eu tentar usar rm para um diretório, porém, isso não vai para deixá-lo fazer qualquer coisa. Vai dizer, hey, você Não é possível remover um diretório. Portanto, temos esta outra vir chamado rmdir, que apenas significa, basicamente, remover o diretório. Posso, por exemplo, remover pset1. E se eu fizer ls, eu não tem mais. Qualquer dúvida sobre isso? Não? Sim? AUDIÊNCIA: É importante que você deixe um espaço depois - sempre que começar a escrever algo em? LUCAS FREITAS: Yeah. Se eu fizer como CD eo diretório, Eu tenho que colocar um espaço. O espaço que você está falando? LAUREN CARVALHO: O espaço entre cd e [inaudível]. LUCAS FREITAS: Sim, você vai ter que colocar os espaços porque é o cd comando e, em seguida, a próxima seqüência que você tipo é basicamente o diretório. Então, é como um argumento. Sim? AUDIÊNCIA: Quando você lista, todos aqueles são diretórios diferentes, certo? LUCAS FREITAS: Sim, eles estão no diretório. AUDIÊNCIA: Qual é a diferença entre os diretórios? LUCAS FREITAS: Eles são apenas diferentes pastas. Diretório é uma pasta em seu computador. AUDIÊNCIA: Abrir pasta. LUCAS FREITAS: Sim, é apenas uma pasta aberta. LAUREN CARVALHO: aqui, os que estão em azul são reais diretórios que você pode entrar e em seguida, ver um monte de coisas que são dentro disso, o que é lamentável porque você não pode ler o aqueles em azul. E os em branco são apenas arquivos que estão dentro do diretório atual. LUCAS FREITAS: Então diretórios são pastas. Os outros são arquivos. AUDIÊNCIA: Qual é o comando para redefini-la ou para limpá-la? LUCAS FREITAS: Para limpar? LAUREN CARVALHO: Para limpar? LUCAS FREITAS: Eu acho que que é "clara". É. Então você acabou de digitar claro se sua tela é muito bagunçado. Alguma outra pergunta? E você vai aprender um monte de outras comandos apenas naturalmente durante o semestre, porque eles são muito úteis. Então, agora vamos falar sobre a compilação. Nós conversamos sobre pseudocódigo e código-fonte e código-objeto. E há um monte de códigos, e talvez Vocês estão confusos sobre isso. Vamos falar um pouco sobre o que acontece quando você está escrevendo um programa, e você compilá-lo, e torna-se um arquivo executável. Essas são todas as palavras que vocês provavelmente já ouviu falar, e talvez você não esteja realmente certo o que está acontecendo. Digamos, por exemplo, que eu quero escrever um programa que diz "Olá". O primeira coisa que vem em sua mente é você meio que tentar pensar em como você está vai fazer isso em sua mente, e provavelmente você está pensando em Inglês ou outra língua, como naturais língua, provavelmente. E então você pensa, bem, se eu quiser, por exemplo, escrever um programa que diz "Olá", eu iria iniciar um programa, Vou imprimir Olá, e então eu vou sair do programa. Este é pseudocódigo. Isto é basicamente só você está tentando chegar a uma seqüência de eventos que você vai fazer para ser capaz de escrever um programa. Então você tem o código-fonte, e o código de fonte não precisa ser especificamente em C. Estamos falando sobre o código-fonte em C, porque isso é a língua que está aprendendo, mas é claro código pode ser praticamente qualquer linguagem de programação que você tem. Mais tarde, no semestre, você vai para aprender outros idiomas. Isso é também o código-fonte. Por exemplo, aqui, esta é a minha fonte código, e então eu estou incluindo um biblioteca, e então eu começo principal, e, em seguida, imprimir. E Laura vai falar um pouco pouco sobre tudo isso. Portanto, este é o código fonte. E o que é o código de objeto? O objeto é um monte de zeros e queridos, basicamente. O que acontece é que você tem inicialmente pseudocódigo, que é tudo em Inglês. E eu quero dizer, você entende isso. Provavelmente seus amigos entender lo, ea maioria das pessoas entender a idéia. Mas os computadores são realmente mudo, e eles não entendem Inglês, então você ter traduzir isso em alguma coisa, geralmente traduzido em alguns linguagem de programação. E você pode pensar em uma programação linguagem como como uma espécie de linguagem que informe o seu computador como de falar e de entender. Você está basicamente escrevendo algo em uma linguagem que ambos você e seu computador entende. Esse é o código fonte. Então, indo forma pseudocódigo a fonte código, é até você. É basicamente você está fazendo o seu programa. Mas o problema é que o computador nem sequer entender a linguagem de programação. Ele não entende código fonte de todo. Na verdade, só entende zeros e uns. Então nós temos esta coisa muito mágica chamada um compilador, que basicamente é vai ser a fonte de chamada que você escreveu em uma linguagem tanto a você e seu computador falar, e agora você está vai transformar isso em zeros e uns. Então, basicamente o que o compilador faz é ele recebe o código fonte, neste caso C, ele vai transformá-lo em zeros e aqueles que o computador entende e pode fazer uma arquivo executável fora dele. Será que isso faz sentido? Você pode apenas pensar no compilador como algum tipo de tradutor que esteja ajudá-lo a explicar para o computador exatamente o que é suposto fazer. Mas como faço para compilar. Vamos voltar para o aparelho, e vamos dizer que eu estou fazendo esse programa. Primeiro vou criar um diretório aqui, e eu vou chamá-lo "Prática". Agora vou para navegar para o diretório, por isso, a prática cd. Agora eu estou dentro de prática. Agora eu quero começar gedit, então como é que eu faço isso? I ou pode clicar aqui, ou eu posso apenas literalmente digitar "gedit", e que vai para abrir para mim. Agora eu vou escrever o meu programa, de modo exatamente o que eu escrevi no slide. Estou declarando uma biblioteca. Estou fazendo int main, nula. E agora eu estou fazendo printf, Olá. Agora estou indo para salvar este. Deixe-me colocar em prática, e Vou chamar essa hello.c. Então, agora ele está salvo. Se eu quiser compilá-lo, eu realmente pode fazê-lo em dois lugares diferentes. Ou eu posso fazê-lo em uma janela de terminal, por isso esta grande, ou você pode usar gedit que realmente tem um janela de terminal aqui. Assim, você pode muito convenientemente apenas fazer seu código, e então você pode simplesmente digitar tudo o que aqui, e tentar compilá-lo. Então, como faço para compilar o código? A maneira mais fácil que temos é usando fazer, o que é uma função que vai, basicamente, a compilar o código. Você apenas tem que dizer fazer Olá, assim "Fazer" eo nome do programa. Opa. Isso é estranho. LAUREN CARVALHO: Você pode [inaudível]? LUCAS FREITAS: Desculpe. Eu não salvá-lo no diretório certo. Venha para a prática, e agora salvá-lo como hello.c. Sinto muito. Agora ele está salvo. Deixe-me só fazer ls e ser certeza de que ele está aqui. OK, agora é aqui. Portanto, agora se eu fizer Olá, ele cospe um monte de coisas, mas depois só dá me uma outra linha para o terminal, que significa que foi bem sucedida. Portanto, agora se eu fizer um ls novamente, eu realmente ver este arquivo em verde, que é a arquivo executável. E então se eu quiser para executá-lo, tudo o que Eu tenho que fazer é barra dot Olá. Vai dizer Olá bem aqui, então é exatamente o que eu estou pedindo a ele. Não é mais uma forma de compilar, que está usando bumbum. Clang é apenas um compilador que nós temos, e é um pouco mais detalhado para compilá-lo. Mas ele funciona muito bem. Então, se eu fizer bumbum, e depois-o, em seguida, o nome que eu quero dar para o arquivo executável, então vamos dizer que "Olá". E, em seguida, o arquivo que eu quero para compilar, hello.c. Ele também vai compilar. E você tem o arquivo aqui, e Eu posso apenas executá-lo também. Assim, ambos funcionam. Será que isso faz sentido? Alguma pergunta? AUDIÊNCIA: Você pode zoom daqui a pouco? LUCAS FREITAS: Desculpe? AUDIÊNCIA: Zoom in? LAUREN CARVALHO: Eu acho que você pode apenas comandar plus. LUCAS FREITAS: Comanda o quê? LAUREN CARVALHO: Command plus. LUCAS FREITAS: Não. LAUREN CARVALHO: Ah, isso não é indo para o trabalho, porque - é porque nós definir a resolução por isso. LUCAS FREITAS: Eu não acho que podemos zoom in Sim, não podemos ampliar. Você tem outra pergunta? Desculpe. AUDIÊNCIA: Você pode repetir bumbum? LUCAS FREITAS: O bumbum? Clang é a mesma coisa que fazer, mas o diferença é que primeiro eu vou escrever tinido, que é o comando, então eu vou fazer -0, tudo, o que é apenas o que nós vamos aprender mais tarde, como uma bandeira. Então, só acho que você sempre tem que colocar-o. E então, em primeiro lugar, você vai colocar o nome do arquivo executável, basicamente o arquivo que você está vai criar. Então eu posso dizer, por exemplo, e hello2 em seguida, o arquivo que eu quero para compilar, que é o arquivo c.. Então, isso é hello.c. Será que isso faz sentido? AUDIÊNCIA: Olá quê? O que é isso? LUCAS FREITAS: Hello.c. E se eu compilá-lo, e se Eu ls, eu também tenho um hello2 que eu só compilado. E se eu tentar executá-lo, ele vai fazer exatamente a mesma coisa que Olá, basta imprimir Olá. AUDIÊNCIA: Como é para o make você pode colocar hello.c depois? LUCAS FREITAS: No make, você não tem que colocar o. c. No make, você acabou de dizer o nome do programa. Você não tem que dizer. C. Mas para bumbum, você deve. AUDIÊNCIA: Com clang você também tem que adicionar o [inaudível] LAUREN CARVALHO: Yeah. Então, você também tem que biblioteca. LUCAS FREITAS: Sim, isso é algo vamos usar mais tarde. Isso é chamado de ligação, e eu acho que nós somos vamos falar sobre isso mais tarde. Outra pergunta? AUDIÊNCIA: Você coloca um tinido barra dot? LUCAS FREITAS: Não. A barra de ponto é apenas para abrir o arquivo executável. Então bumbum, você acabou de escrever "bumbum", e então o se você deseja abrir o arquivo executável que você acabou de compilado, então você dot corte e do nome. Será que isso faz sentido? AUDIÊNCIA: Se você fosse apenas mudança [Inaudível] para Olá mundo, não é tem que recompilar? LUCAS FREITAS: Yeah. se eu quero dizer, por exemplo ", Olá lá, "Eu só pode salvá-lo agora, e eu apenas compilá-lo novamente. Então deixe-me fazer um make Olá. E se eu fizer Olá, ele vai dizer "Olá". Faz sentido? Alguma outra pergunta? AUDIÊNCIA: Você tem de incluir o padrão I / O para coordenar o trabalho? LUCAS FREITAS: Yeah. O padrão de I / O é basicamente a biblioteca que tem um implementação de printf. Assim que coisa certa no superior inclui stdio. Isso é, incluindo uma biblioteca basicamente tem um monte de diferente ferramentas que você pode usar. um? Deles é que printf é uma função que, basicamente, impressão mensagens na tela. Alguma outra pergunta? Não? OK. Então, agora vamos falar sobre - LAUREN CARVALHO: Vamos apenas ir para o guia de estilo. Você quer apenas encontrá-lo aqui? LUCAS FREITAS: Então nós vamos para falar sobre o estilo. LAUREN CARVALHO: Oh, David não terminou. OK. Por que não vamos voltar a estilo bem no final? Tem sido realmente atualizada enquanto falamos. LUCAS FREITAS: Yeah. Vamos caminho para David para concluir isso. LAUREN CARVALHO: Pode vamos mudar de fato? Então, eu espero que todos tem sido desfrutando de risco. Infelizmente, é hora de afastar-se dessa - infelizmente é hora de se afastar a partir desses blocos de programação bonitas para C. Mas, felizmente, todo o programação constrói que você tem vindo a trabalhar com em Scratch são diretamente traduzíveis para C, e estamos vai começar a aprender sobre alguns deles agora. Vamos primeiro falar sobre as condições de em expressões booleanas. Este está sendo executado em reserva energia da bateria. LUCAS FREITAS: Como é que não está funcionando? OK. Você vai lá, eu estou indo para obter o - LAUREN CARVALHO: Então, as condições são importantes porque nos permitem introduzir lógica em nossos programas. Aqui está um exemplo de uma condição dentro de um programa C. Vamos observar como este - Portanto, esta condição bloco aqui, este instrução printf não executará a menos que a condição dentro do parênteses, n maior do que 0, avaliada como verdadeira. Agora, todas as condições dentro f declarações são expressões booleanas o que significa que há são apenas duas opções. Eles nem poderia avaliar a verdade, ou eles podem avaliar como falsa. Então, aqui, o que faz sentido, certo? n maior que 0, significa que ele é um positivo número, o que significa que ele imprime out "você escolheu um número positivo." Há muitas expressões booleanas que pode formar o estado de uma declaração de inicialização. Temos a menos de. Isto é menos do que ou igual a. Este é apenas um engraçado [inaudível]. Se quiser que o printf a ocorrer se for maior do que ou igual a 0, então você escolheria isso. Assim, a igualdade só acrescenta direita após o sinal de maior que. Igual igual, o que é diferente do apenas um sinal de igual, igual igual na verdade, significa que tudo o que de no lado esquerdo desta é o mesmo que o que está no lado direito desta onde um sinal de igual é o quê? O que é apenas um sinal de igualdade? Cessão. LUCAS FREITAS: Quem disse isso? Isso é doce? Oh, não. Desculpe. Desculpe. Você quer chegar doces. Oh, OK! Três pessoas ficam doces! LAUREN CARVALHO: Então este aqui é o operador estrondo anterior o sinal de igual, o que é não igual. Então, se isso foi dentro do meu estado, o corpo da condição seria executar somente se o que estiver em a esquerda não é o mesmo que o que está no lado direito. Eu também posso ter apenas o ponto de exclamação. Na verdade, vamos ver em um recurso deslizar como isso seria usado. LUCAS FREITAS: Alguma pergunta? Não? LAUREN CARVALHO: Nós podemos combiná-las Expressões booleanas para a construção de mais instruções condicionais complicados. Então, aqui, se o que estiver à esquerda lado das barras duplas ou tudo o que está no lado direito da as barras duplas avaliada como verdadeira, então vamos imprimir inválido. E então, aqui em baixo, se qualquer de no lado esquerdo dos dois ampersands e qualquer de à direita lado dos dois e comercial avaliada como verdadeira, então vamos imprimir válido. As barras duplas são chamadas de lógica Operador OR os ampersands duplos são chamado o operador lógico AND. Sim? AUDIÊNCIA: São aqueles apenas minúsculas l's? LAUREN CARVALHO: Não. Eles são, na verdade - você sabe a reação, como acima de sua tecla Return? Você vê isso? LUCAS FREITAS: É realmente um bar. LAUREN CARVALHO: É, na verdade, apenas dois bares. AUDIÊNCIA: Você pode usar o igual para igual cordas? LUCAS FREITAS: Não. Nós vamos aprender mais tarde algo sobre isso. LAUREN CARVALHO: Há uma função que você pode usar. Mas você não tem que preocupam-se que apenas ainda. E se eu dar a este programa o número 5? O que irá imprimir? AUDIÊNCIA: [inaudível] válido. LAUREN CARVALHO: Válido? É. Eu não sei quem começou isso. [Risos] LAUREN CARVALHO: Isso é meio assustador [inaudível]. AUDIÊNCIA: Então o casal e, isso apenas significa que e? LAUREN CARVALHO: Yeah. Assim, o número 5 é tanto maior do que 0 e menor do que 100. AUDIÊNCIA: Por que seria um? LAUREN CARVALHO: um comercial é realmente algo diferente, e é um operador bit a bit, o que você vai aprender sobre mais tarde. Mas é algo que realmente funciona com os bits de um determinado número. LUCAS FREITAS: Só acho que eles não tem que se preocupar com isso por enquanto. LAUREN CARVALHO: Eu acho que é, provavelmente, chegando na próxima semana. LUCAS FREITAS: Alguma outra pergunta? Não? LAUREN CARVALHO: Então nós vimos que um ele bloquear pode ficar sozinho, mas pode também ser combinado com outra pessoa e bloco. Portanto, neste caso, se n for maior do que 0, vamos imprimir "Você escolheu um número positivo. "else, ou seja, se for 0 ou se é menos que 0, vamos imprimir, "Você escolheu um número negativo." O interessante aqui é que estes são exclusivas uma da outra. Nunca vai ser um caso em que esta e esta tanto pode imprimir. Tenho certeza que você trabalhou com o if / else caixa em risco, por isso deve ser bastante familiar. Sim? AUDIÊNCIA: Será que precisamos de espaço entre Cont n igual GetInt então no espaço if? Como usamos uma linha de [inaudível] LAUREN CARVALHO: Ah, o espaço aqui? AUDIÊNCIA: Como aquele, mas o dobro do espaço. Não, ir para cima. Sobe. LUCAS FREITAS: Apenas a linha? AUDIÊNCIA: Yeah. LUCAS FREITAS: Apenas a linha em branco? AUDIÊNCIA: Yeah. LAUREN CARVALHO: Linha em branco? Não. Isso é apenas uma coisa estilística. LUCAS FREITAS: É como às vezes você acabou de pular algumas linhas assim que o código não se parece com um enorme bloco de texto. LAUREN CARVALHO: Eu acho que o que aconteceu era que tínhamos um comentário aqui, mas eu levou-o para fora de modo que vocês teriam para pensar sobre o código, em vez do que apenas ler o meu comentário. Em geral, o espaçamento não vai realmente afectar a forma como o programa é executado. É mais uma coisa estilística. E quando temos a guia de estilo atualizado e pronto para ir até o final de supersection, vamos falar sobre isso mais. Há algo de errado com este programa, certo? Porque 0 não é realmente um número negativo. Então, vamos ver se podemos resolver isso. Você provavelmente pode imaginar com isso, diz, certo? Se n for maior que 0, nós imprimimos ", Você escolheu um número positivo. "Então mais se n for menor que 0 ", você escolheu um número negativo. "else:" Você pegou 0. " Agora, o interessante é que isso pode durar para sempre. Você pode ter um bloco if, else if um bloco, outro bloco else if, else if, else if, else if, else, basicamente contanto que você quiser. E quando construído como este, estes são todos que vão ser exclusiva de cada outro. Sim? AUDIÊNCIA: Então, por que você não pode apenas usar outro, se em vez de [inaudível]? LAUREN CARVALHO: Neste caso, sim eu poderia utilizar outro se, e seria absolutamente bem, porque o condições em si são exclusiva de cada outro. Mas, se as condições não foram exclusivos uns dos outros, isto iria forçá-los a nunca tanto avaliar, se isso faz sentido. AUDIÊNCIA: Nesse caso, poderíamos ninho o segundo, se no primeiro caso? LAUREN CARVALHO: Se - o que você quer dizer? AUDIÊNCIA: Se as duas condições não são mutuamente excludentes? LAUREN CARVALHO: Se as condições não são mutuamente excludentes? Mas você quer apenas um deles para correr? AUDIÊNCIA: Você quer apenas se em vez de outra pessoa. LAUREN CARVALHO: Yeah. Há sempre vai ser lotes de maneiras que você pode fazer isso. Você pode definitivamente ninho deles. E você vai ver em um futuro slide que você pode ter vários ifs, apenas um após o outro. Mas esta é uma maneira de logicamente organizar o fluxo de seu programa. LUCAS FREITAS: E há mais uma coisa, é que você perguntou sobre a colocação de se e, em seguida, uma outra se. Isso funciona perfeitamente, mas é ruim projeto, porque, basicamente, se você verifique primeiro se, e você percebe que o número é maior que 0, é pode simplesmente terminar o programa. Você não tem que verificar se é menor do que 0, certo? Mas se você se se, ele vai verificar ambos, enquanto que, se eu faço se outra pessoa é, ele vai verificar se que é maior do que 0. Se for, ele não vai sequer olhar nas outras linhas do código. Então você está basicamente verificando-lo como duas vezes desnecessariamente, então é por isso que fazer se else if. Alguma outra pergunta? AUDIÊNCIA: Então a funcionalidade do outro, se é o mesmo que se fosse apenas se? LAUREN CARVALHO: Não. Você está realmente indo para ver no meu próximo deslizar um exemplo em que ele pode ser diferente. Neste caso, é quase o mesmo. Então, aqui, nós temos um exemplo de múltipla if, eo funcionalidade não é a mesma como se eu tivesse acabado de dizer se mais, se mais, se outra coisa. Vamos pensar sobre o que iria imprimir se eu digitar o número 95 para este programa. AUDIÊNCIA: [inaudível] LAUREN CARVALHO: E então? AUDIÊNCIA: [inaudível] LAUREN CARVALHO: Yeah. Portanto, neste caso, essas condições são não excluem mutuamente um do outro. E porque não há nada que impeça essa condição de avaliar se esta um já tem, eles são apenas tudo vai imprimir. Então como eu poderia resolver isso? AUDIÊNCIA: else ifs? LAUREN CARVALHO: Você pode usar else ifs. Eu poderia mudar a ordem desses, certo? Se eu fiz isso primeiro? Bem, na verdade, não. Isso não funcionaria por 95. LUCAS FREITAS: Não, apenas os else ifs. LAUREN CARVALHO: O else ifs teria fixado isso. Será que esclarecer a confusão entre ifs e mais ifs? AUDIÊNCIA: Eu só queria te perguntar, se Usou else if, que iria parar? LAUREN CARVALHO: Certo. Então, só que desta primeira. Se eu digitar o número 95, só que desta teria impresso, e nunca teria progredido para o resto. LUCAS FREITAS: Apenas tipo de pensar lo como se isso acontecer, faça isso. O resto é como se não, cheque para isso, e, em seguida, fazer isso. Então, como eles são todos mutuamente exclusivo. Você não pode entrar em dois sobre aqueles. AUDIÊNCIA: Você pode usar uma lógica E para essa situação? LAUREN CARVALHO: Yeah. Essa é outra maneira que pudéssemos ter corrigido este problema. Estamos poderia ter definido varia, certo? Então, eu poderia ter dito, se n é maior do que 90 e menos do que - bem, eu acho que isso não faz muito importa, mas aqui eu poderia ter dito se n é superior a 80 e inferior a 90. Mais do que 70, menos do que 80. Isso também teria funcionado. [Risos] LUCAS FREITAS: Ela está com medo. LAUREN CARVALHO: Não tenha medo. LUCAS FREITAS: Não é que estará errada. É que é desnecessariamente detalhado. Como em ciência da computação, deve-se ser tão simples quanto possível contanto você tem a funcionalidade. Você quer o doce? AUDIÊNCIA: Não precisa. LAUREN CARVALHO: Você está assustando todos, Lucas. LUCAS FREITAS: Desculpe. LAUREN CARVALHO: David também mencionou estes instrução switch em sala de aula. Basicamente o que está acontecendo é o interruptor declaração leva uma variável. Neste caso, nós estamos levando um número inteiro. Se o inteiro for 1, vamos imprimir ", você escolheu uma pequena número. "Se o inteiro é 1," Você escolheu um número médio. "Se o inteiro é 3 ", você escolheu um alto número. "E eu também tinha um caso padrão aqui em baixo, mas ele não está mostrando se, o que é muito ruim. Basicamente, este é apenas outra sintaxe. Poderíamos ter implementado este exato mesma coisa com o caso e else if declarações. Mas quando há muitos diferente condições e os lotes de diferentes variações sobre o que você quer fazer para cada entrada, esta é uma opção. Por isso, é apenas uma boa sintaxe saber. Sim? AUDIÊNCIA: Por que não há uma barra invertida n na primeira? LAUREN CARVALHO: Para lá em cima? Não há nenhuma barra invertida n lá em cima porque o GetInt - se você tentar fazer isso, ele vai dar-lhe esta pergunta. Dê-me um número inteiro entre 1 e 3. E se eu colocar a reação n, seria leve-me para a próxima linha, mas eu só queria que eles digite o número inteiro logo após os dois pontos. Você poderia ter colocado a reação n. Não é um grande negócio. Sim? AUDIÊNCIA: Para este código, é este caso, é que por causa é o primeiro caso? Porque - LAUREN CARVALHO: Não, não, não. Portanto, esta é me dar um inteiro entre 1 e 3. Se n é 1, imprimo isso. Se eu tivesse perguntado para as cartas, eu poderia ter disse me dê uma letra entre A e C. Então, isso seria caso A. AUDIÊNCIA: [inaudível]. O caso seria apenas [inaudível] LAUREN CARVALHO: Sim, certo. Sim? AUDIÊNCIA: E se você queria ter mais de uma expressão relacional? Então, ao invés de dizer n igual a 1, [inaudível] n é superior a 1, no primeiro caso? LAUREN CARVALHO: Na verdade, se eu não fizer definir alguns destes casos, este seria ser levar para baixo. Então, na verdade, talvez isso não é o que você está pedindo. LUCAS FREITAS: Eu acho que ela está perguntando se caso n foi maior que 0, caso menos do que 0. LAUREN CARVALHO: Talvez o interruptor declaração não é realmente o que você quer para utilizar neste caso. LUCAS FREITAS: A instrução switch é Apenas para o valor, então você está verificando de o valor é como isso ou aquilo. Então você não pode realmente colocar condições. AUDIÊNCIA: E se a pessoa tipos com [inaudível]? LAUREN CARVALHO: Isso teria sido meu caso padrão, que infelizmente você não pode ver. LUCAS FREITAS: [inaudível] fazê-los ver. LAUREN CARVALHO: Na verdade, Você sabe o que? Vamos apenas estudar 50, e eu vou apenas ampliar as lâminas sobre estudo 50, porque este é apenas irritante. Então deixe-me realmente ir para estado. Isso só vai demorar um pouco. Tudo bem. Então, eu sinto muito. Pelo menos agora nós vamos ser capazes de ver tudo sem ele cortando. Tudo bem. Então, se eles colocaram em um 10, que seria padrão aqui ao meu caso padrão, e eu seria apenas imprimir inválido porque eu pediu-lhes para entrar um inteiro entre 1 e 3. Alguma outra pergunta? Sim? AUDIÊNCIA: Vamos dizer que para o caso de um, caso três, digamos que você queria que fosse todo o mesma coisa, então você escolheu um número isso não é um número médio. Nesse caso, seria redundante? Será que você apenas muda o texto em ambos os deles, ou haveria alguma redundância? Existe alguma maneira de combinar [Inaudível]? LAUREN CARVALHO: Há maneiras de combiná-los, mas eu acredito que você pode só combinar os adjacentes. Então, se eu não definir nada para o caso de dois, isso seria aplicam-se a ambos os casos. Oh, se eu não colocar qualquer coisa para o caso um, isso aplica-se tanto caso um e dois. Se isso faz sentido. AUDIÊNCIA: Você pode repetir esse? LUCAS FREITAS: OK. Se você fez, basicamente, como, você tem a mesma coisa, mas você não colocar qualquer coisa aqui, você seria tanto para caso um ou dois casos, fazer isso. Certo? E esta pausa significa que se você chegar neste caso, basta sair. Então é isso que o freio significa. Então, se eu só fiz isso, você olha, é caso um, e você teria apenas que fazer isso. Se fosse caso duas, que também faria apenas vir aqui e fazer isso. AUDIÊNCIA: Mas você pode fazê-lo? Se há algo para caso dois [inaudível] LAUREN CARVALHO: Eu não acredito você pode fazer isso. Eu não acho que você pode pular ao redor. Você pode fazer isso, Rob? Acho que não. AUDIÊNCIA: Então, apenas um número pode ir atrás de um caso, certo? Não pode haver um caso, vírgula, dois? LUCAS FREITAS: Não, você não pode. Você definitivamente não pode. LAUREN CARVALHO: Eu quero dizer, o ponto é esta é uma opção, e isso não pode se encaixam no seu caso de uso, por isso, então você usaria a se condições. AUDIÊNCIA: Então, por que você faria isso? O switch? LAUREN CARVALHO: Eu usaria esse Se você tem muito definido - Na verdade, Lucas, é que você está bloqueando. LUCAS FREITAS: Oh, desculpe. LAUREN CARVALHO: Se você tem muito comportamentos definidos que você deseja para cada entrada, isso pode ser um pouco mais conciso do que escrever para fora uma instrução if para cada um. AUDIÊNCIA: O que faz o quebrar dizer de novo? LAUREN CARVALHO: A ruptura significa parar. Lembre-se, se eu não tivesse essa pausa aqui, teríamos acabado de cair para baixo para o caso seguinte. LUCAS FREITAS: Quebra significa para obter fora da instrução switch. Porque se é um, eu quero imprimir este e sair. Eu não quero para verificar qualquer outra coisa. AUDIÊNCIA: Você não quer imprimir mais nada. LUCAS FREITAS: Yeah. Porque é mutuamente exclusivos. AUDIÊNCIA: E será que isso só proceder para o caso seguinte, se o primeiro caso não é verdade? Ou será que testar todos os casos ao mesmo tempo? LUCAS FREITAS: Não, verifica sequencialmente. Sequencialmente, sim. Só mais uma pergunta, então nós temos que seguir em frente, para que possamos cobrir tudo. Sim? AUDIÊNCIA: Assim, para o caso, poderia ter feito algo além de apenas um? Você poderia dar-lhe um alcance? LUCAS FREITAS: Não. LAUREN CARVALHO: Eu não acho que você pode dar um intervalo. LUCAS FREITAS: Você não pode você não pode dar-lhe um intervalo. AUDIÊNCIA: O caso é específico [Inaudível]. LUCAS FREITAS: Mudar é uma espécie de valores. Você está fazendo coisas diferentes, dependendo em um valor, um valor específico. Você não pode fazer intervalo, você não pode fazer mais nada. É apenas mais uma ferramenta para ver. LAUREN CARVALHO: A maioria das pessoas não usam trocar declarações muito na CS50, mas está lá. Tudo bem. Portanto, a próxima coisa que vamos falar sobre o operador ternário. Este é apenas um outro tipo de condicional. Basicamente o que está acontecendo aqui é que eu sou pedindo um número inteiro, e, se n é superior a 100, eu estou indo para imprimir "Alto". Se não for, eu vou imprimir "baixo". Então o que ele está fazendo é a condição é aqui entre parênteses, e você pode tipo de pensar a questão como eu estou perguntando se isso é verdade ou não. Se for verdade, eu vou fazer isso primeiro coisa, e se isso não é verdade, eu sou vai fazer esta segunda coisa. Qualquer dúvida sobre o operador ternário? LUCAS FREITAS: Só quero observar a partir de David é que sempre que você tem um condição - LAUREN CARVALHO: Eu acho que o David de assistindo através da transmissão ao vivo. LUCAS FREITAS: Ele está fazendo fluxo de vida agora. Assim, sempre que você tem uma condição, você é deveria colocar chaves, assim como nós temos em um interruptor declaração aqui. Temos chaves aqui. Para quaisquer condições, você está deveria também colocar isso. LAUREN CARVALHO: Você vai ver isso no guia de estilo. Nós realmente não tem o guia de estilo agora. Eu acho que David ainda está funcionando. LUCAS FREITAS: Ele disse que é só trabalhar agora. LAUREN CARVALHO: Ah, é trabalhando agora? OK. Então, aparentemente, este ano, no estilo guiar, mesmo se você tiver apenas uma linha, você tem que colocar os chaves pol Você não precisa necessariamente para o funcionalidade do programa. E talvez devêssemos fazer uma pausa depois as condições e ir direto com o guia de estilo para limpar algumas dessas coisas? LUCAS FREITAS: Yeah. Você tem uma pergunta? AUDIÊNCIA: Não, eu vou esperar até o guia de estilo. AUDIÊNCIA: Você poderia voltar ao operador ternário? LAUREN CARVALHO: ternário, sim. LUCAS FREITAS: Operador ternário é basicamente uma declaração se mais, mas em vez de ter que tem as duas linhas de verificar se um e depois o outra coisa, você só tem uma linha. Então, basicamente, se eu quiser dar uma string um valor de alta ou baixa, e I quer fazer um elevado se n for maior do que 100 ou baixo, se é menor, o que posso fazer é esse [inaudível] a corda vai ser, e então eu perguntar o programa é n maior que 100? Então é por isso que eu tenho essa expressão em parênteses e depois o ponto de interrogação. Eu estou pedindo é maior que 100? Se for, ele vai ser alto. Se não for, vai ser baixa. Então, basicamente, o que você acha que você perguntar uma pergunta, então você coloca entre parênteses a condição. Então você colocar o ponto de interrogação porque você está perguntando isso. E se isso for verdade, ele vai ser no primeiro valor [inaudível] aqui. Se não for, eu vou colocar o valor que é depois dos dois pontos. Será que faz sentido? É também algo que é como um ferramenta em C, mas você não tem que especificamente usá-lo. Mas as pessoas geralmente gostam de CS que porque ele só salva linhas. LAUREN CARVALHO: É muito elegante. Ele faz muito em apenas uma declaração. AUDIÊNCIA: Então o sinal de porcentagem é apenas independentemente dos resultados obtidos em a linha anterior? LAUREN CARVALHO: Oh, eu sinto muito. Este sinal de porcentagem é realmente um espaço reservado para este s. Em uma instrução printf, você tem esta corda aqui, que é o que vai imprimir, mas você não pode simplesmente colocar isso é lá dentro. Caso contrário, ele iria imprimir os s, literalmente. Então nós colocamos um por cento aqui para manter este lugar realizada por qualquer vem depois da vírgula. Assim, por uma corda, você tem cento s. Para um inteiro, por cento i. Para um float, por cento f. Você vai ver aqueles como nós ver mais exemplos. Mas talvez você devesse falar sobre o guia de estilo para um pouco de tempo, agora que é para cima. LUCAS FREITAS: Se você vai para cs50.net/style, você vai ver o guia de estilo. Para conjuntos de problemas, a sua pontuação para o conjunto de problemas é composto por escopo, o que basicamente significa que se você fez tudo as partes do conjunto de problemas ou se você tentou alguma coisa. A segunda coisa é a correção, que meios é o seu programa fazendo o que deveria estar fazendo, ou não tem bugs, ou é não fazer o que que é suposto fazer. A terceira coisa é o projeto, o que significa Você está implementando esta bem, ou são Você está usando declarações desnecessárias? Assim, por exemplo, se você deseja repetir um número 10 vezes, você está escrevendo um loop ou você está apenas fazendo 10 vezes a mesma declaração, apenas fazendo copiar e colar. Assim projeto é para isso. E, finalmente, você tem estilo. Estilo é como julgar se o seu código é legível e tipo de bonito. Ela só significa basicamente é o seu código legível? Será que alguém que estava à procura são seu código ser capaz de entender o que que está fazendo? Será que ela tem comentários e assim por diante? Vamos falar sobre o estilo que você deveria usar. A primeira coisa é comentários. Comentários são muito importantes para o seu código, porque às vezes você está fazendo seu programa, e você sabe exatamente o que você quer fazer assim que você acabou de começar codificação, basta digitar um monte de C. Mas se alguém está olhando são você código, eles não vão ser capazes de compreendê-lo, porque eles não sabem as coisas que estão na sua cabeça, como o pesudocode, talvez por isso eles vão têm dificuldade de entender o que o código está fazendo. Assim comentários são realmente úteis para explicar para alguém que está olhando seu código o que está fazendo, e na verdade, até mesmo para você, eles são muito úteis. Como você vai para a Série de Exercícios mais duras e difíceis, você vai ver que o código fica mais longos, e, em seguida, os comentários são realmente importante para que você lembre-se que cada parte de seu programa faz. Para colocar um comentário, você pode apenas fazer uma slash slash e em seguida, escrever um comentário. E toda a linha é parte de um comentário, e tudo o que você escrever, não vai ser usado para o seu código. É basicamente como o compilador vai ignorar isso. Será que isso faz sentido? AUDIÊNCIA: O que você faz de novo para escrever um comentário? LUCAS FREITAS: Este? A barra barra? Sempre que você digitar barra barra, seja qual for é nessa linha não vai para ser considerado como C. Sim? AUDIÊNCIA: Assim, após o comentário, você só entrar e começar uma nova linha? LUCAS FREITAS: Sim, exatamente. LAUREN CARVALHO: A barra barra é para comentários única linha. LUCAS FREITAS: Por exemplo, aqui nós temos - deixe-me aproximar - por exemplo, aqui eu estou declarando uma bóia, mas talvez se você apenas colocar este em seu código, como você não tem idéia o que isso está fazendo, como na verdade alguém que está olhando para este código vai ser, tipo, o que o diabos está acontecendo? Se você colocar um comentário dizendo que "converter Fahrenheit para Celsius, faz muito mais sentido. Você é, tipo, OK, você está fazendo uma conversão. Será que isso faz sentido? Portanto, é apenas algo que ajuda as pessoas pronto seu código e também fazer Você seria capaz de organizar seu código melhor. A segunda coisa é que você pode fazer Comentários de várias linhas, por isso tem um comentar para um grupo de linhas. Em vez de ter que colocar barra barra, os comentários de primeira linha, barra barra, a segunda linha, e assim por diante, é pode usar a estrela barra. A maneira que você faz isso é que, para o primeira linha do comentário, você está vai fazer uma estrela estrela barra, assim sem mais nem menos. Assim como aqui temos o início de um programa, você costuma colocar quem você são, o que este programa faz, e coisas assim. É como uma espécie de cabeçalho para o programa. Mais uma vez, não é algo que um compilador vai se preocupam, mas é importante para você saber o que esta programa faz ou para outras pessoas para saber o que o programa está fazendo. Então você cortar star star, e então o última linha que você vai fazer estrela cortar para poder fechar esse comentário. Então, basicamente, para todas as outras linhas, você pode apenas escrever o que quer, e isso tudo vai ser ignorado. E também, assim como o estilo, você vê que cada uma das linhas tem uma estrela, e todos as estrelas estão alinhadas. Estas são coisas importantes para que o código parece bem. Parece bom? Agora, as condições. O que David estava dizendo que deveríamos realmente colocar nos slides, é que quando você tem qualquer tipo de if ou qualquer tipo de condições, você deve usar chaves para mostrar que isso é o que ia acontecer quando você tem a condição. Tecnicamente, quando você tem uma condição e, em seguida, a próxima linha é apenas um linha, você não tem tecnicamente para colocar as chaves. Basicamente o compilador entenderia de qualquer maneira, como implícito. Mas para CS50, pedimos a vocês para colocar as chaves apenas para que o seu código é mais organizada e mais legível. Porque esse código fica mais tempo se não têm chaves e tal. Fica realmente confuso. LAUREN CARVALHO: Isso é exatamente o que David apenas destacou em meus slides anteriores. Ele definitivamente funciona sem o crespo suspensórios, mas por razões estilísticas vamos pedir que você colocar aqueles dentro E quando você começar a correr style50, que é uma espécie de cheque para 50 estilo, ele irá lembrá-lo de fazer isso. LUCAS FREITAS: E outra coisa é lembre-se de colocar as chaves junto em cada linha. Então você faz, por exemplo, l's. Vá para a próxima linha, abra o crespo cinta, depois de ir para a próxima linha. Recuo, que é quatro espaços. Então você escreve o que quer, em seguida, outra linha, e fechar a chaveta. Então não se esqueça que tanto os cacheados chaves estão em diferentes linhas. AUDIÊNCIA: Então, se esse código tinha como 10 else ifs, este deve ser de 10 conjuntos de suportes? LUCAS FREITAS: Sim, para cada um deles. É. Assim, se, mais se, e assim por diante. AUDIÊNCIA: Você pode não pressione Tab para recuar? LUCAS FREITAS: Nós estamos pedindo para você caras para usar quatro espaços. Alguns editores de texto guia traduzir como quatro espaços automaticamente. gedit não acontecer, então você tem que fazer espaço espaço espaço espaço. Isto também é algo que alguns programadores só fazer guias, alguns programadores só fazem quatro espaços, e algumas outras pessoas até mesmo fazer dois ou três espaços. É que aqui estamos pedindo vocês para fazer quatro espaços. AUDIÊNCIA: Há quase definitivamente Tem que ser um caminho para a gedit automaticamente [inaudível]. Como não [inaudível] faz isso. LUCAS FREITAS: Yeah. Eu acho que você pode ir a Configurações. AUDIÊNCIA: Já faz tudo isso. LUCAS FREITAS: Já faz? OK. Então, basta ter certeza de que você tem quatro espaços. AUDIÊNCIA: Nós temos que colocar o crespo suportes em loops também? LUCAS FREITAS: Sim. LAUREN CARVALHO: Sempre que o seu encapsulamento de um bloco de código, apenas Por favor use as chaves. E antes que você pense que estamos apenas sendo sticklers sobre este sem uma boa razão, se vocês não ir para obter estágios de tecnologia em grandes empresas, eles vão te dar um guia de estilo, e eles vão te dizer isso é o que o seu código precisa ser parecida. E mesmo que você aprendeu a um código como este, talvez em seu estágio você vai ter que fazer alguma coisa completamente diferente. Eles esperam que você se conformar ao seu estilo. LUCAS FREITAS: E mais uma coisa é que você percebe como eu tenho como x, espaço, menos espaço, 0? Sempre que você tem um operador - ele pode ser como mais, menos, vezes, menos, maior, qualquer que seja operador - você tem que colocar um espaço no lado esquerdo e à direita do operador. LAUREN CARVALHO: Esses são chamados operandos binários. Apenas certifique-se sempre espaço os seus operandos binários. LUCAS FREITAS: Este é não um operando binário. LAUREN CARVALHO: Isso é porque é preciso dois. LUCAS FREITAS: Ah, sim. OK, os switches. Primeiro, você tem que ver que, assim como em uma instrução se, ou então, você tem para colocar a chaveta em sua própria linha e sob a chaveta aqui. Note-se que existe um único espaço após a ligação, assim como em if e else tivemos um único espaço entre isso e os parênteses. Então, você tem que colocar isso. E não há espaço para a direita depois de cada dos parênteses ou antes do final dos parênteses. Então você vê que é tudo em conjunto, e também gosto aqui. Sim? LAUREN CARVALHO: Eu acho que precisamos seguir em frente. LUCAS FREITAS: Então, isso faz parte do guia de estilo que você tem para CS50. Certifique-se de ir para cs50.net/style e dar uma olhada nisso. Estes são todos muito importantes para a sua pontuação estilo. Deixe-me voltar para o comunicado. LAUREN CARVALHO: Eu prefiro basta usar style50. Nós apenas estamos indo para ir direto para laços. Tudo bem. Então, vamos voltar para o conteúdo, agora que passamos ao longo do guia de estilo. Loops, você já viu-los em risco, e vamos falar sobre eles em C. Em um loop for, há três porções à declaração deste loop. Você tem a sua inicialização em que você definir suas variáveis. Você tem a sua condição, que são verificação para ver se algo é verdadeiro ou falso e se a loop deve continuar. E você tem a sua atualização, o que está atualizando suas variáveis. Vamos dar uma rápida olhada em algumas Código C deste loop for em ação. O que está acontecendo é aqui no inicialização, estamos definindo i para 0. Na condição estamos verificando se i é inferior a 10. E na atualização estamos incrementando i. Então, o que irá resultar da esse loop? LUCAS Freitas: Na verdade, antes de tudo, Vocês sabem o que eu + + é? AUDIÊNCIA: Aumento em 1. LUCAS FREITAS: Aumento de 1, sim. Portanto, esta é a mesma coisa que fazendo i é igual a i + 1. E note que não temos um espaço entre o eu eo + +. Então, vocês sabem o que isso vai fazer? Alguém pode me dizer? E talvez conseguir alguns doces por causa disso? AUDIÊNCIA: [inaudível] LUCAS FREITAS: OK. [Inaudível] todo mundo mostrar mais tarde [inaudível]. Sim, ele vai mostrar "Este CS50 é "10 vezes. LAUREN CARVALHO: Eu acho que foi no título do slide. LUCAS FREITAS: Ah, sim. [Risos] LUCAS FREITAS: Isso ajuda. LAUREN CARVALHO: Então, essas são para loops. Nós vamos ver mais alguns exemplos de loops mais tarde. Mas vamos realmente ter um olhar para o segundo tipo de circuito que você vai encontrar em C, e é chamado o loop while. Em um loop while, você tem só tenho uma condição. A condição é verificada no começando, e se essa condição avaliada como verdadeira, então o código dentro o corpo do bloco, enquanto será executado. E o código continuará executar, enquanto que condição permanecer verdadeira. Aqui está um exemplo de um loop while em C. Vamos definir a contagem de 10 a começar. Enquanto a contagem for maior do que 0, vamos continuar a imprimir este variável aqui. Nós vamos diminuir contagem e em seguida, verificar novamente a condição. Imprimir, decremento, cheque a condição de novo. Aqui temos um exemplo que se refere a sua pergunta anterior. Tivemos a porcentagem s quando estávamos imprimir uma string, e agora que estamos imprimindo um int, temos um por cento i como o nosso espaço reservado em seu lugar. As cartas devem ser todos bastante intuitivo, é para a corda, eu para int. Portanto, se esse código é executado, você deve contagem regressiva 10-0, imprimindo cada inteiro. LUCAS FREITAS: E você pode pensar no por cento, uma vez que se sente como um espaço em branco espaço, e, em seguida, você está colocando esta aqui variável em que o espaço em branco. Assim, por exemplo, aqui vou ter apenas um espaço em branco, e então eu estou colocando o contar ali mesmo, o valor da contagem. Será que isso faz sentido? Eu poderia apenas fazer como printf e, em seguida, cita, contam? Será que isso funciona? AUDIÊNCIA: Não. LUCAS FREITAS: Não, porque ele vai realmente imprimir a palavra "contar" em vez de imprimir o valor. Isto é como você faz imprimir os valores para a variável em vez de apenas o nome da variável. Alguma pergunta? AUDIÊNCIA: Por que você usa para como uma oposição ao tempo? LAUREN CARVALHO: Eu usaria um para loop se eu sei exatamente quantos iterações que eu quero meu loop para executar. Neste caso, não importa, porque, Quer dizer, eu estava apenas tentando pensar em um realmente simples exemplo para este slide. Mas vamos dizer que você quer algo manter-se ir embora - LUCAS FREITAS: Por exemplo, você está pedindo para a entrada até que a pessoa dá-lhe a entrada à direita. Assim como quando a entrada não é OK, continuo a perguntar para ele. Ou como quando você estiver pais não dão dinheiro, continuo a perguntar para ele. [Risos] LAUREN CARVALHO: Você não sabe como muitas vezes você vai ter que fazê-lo. LUCAS FREITAS: Porque você não faz sei quantas vezes isso é vai continuar. LAUREN CARVALHO: Mas em um loop for, você precisa saber quantas vezes. Sim? AUDIÊNCIA: Só para esclarecer, o percentual diz que isso é algo sobre a acontecer, nos is para o número inteiro, ea barra invertida n - LAUREN CARVALHO: Meios? Quem sabe o que a barra invertida n significa? Nova linha, sim. Exatamente. LUCAS FREITAS: Você pode pensar de n como nova linha. LAUREN CARVALHO: Nice. AUDIÊNCIA: O que é que a contagem traço traço [inaudível]? LUCAS FREITAS: Contagem menos negativo é a mesma coisa que plus plus, mas em vez de aumentar, está diminuindo em 1. LAUREN CARVALHO: Qualquer mais enquanto questões de loop? Não? Oh, nós deveríamos ter ignorado isso. Este é um do loop while. Muito semelhante a um loop while, exceto em Neste caso, verifique a condição após o código no corpo do loop é executado uma vez. Por isso, executar o código primeiro, não importa o quê. Então, verifique o estado, execute novamente se a condição for verdadeira. Você vai encontrar-se com isso quando você está pedindo a entrada do usuário. Porque você sempre vai ter que perguntar uma vez, e, em seguida, dependendo do que a entrada do usuário é, você pode ter que Reprompt e perguntar novamente e novamente se a entrada não era o que você esperava que fosse. AUDIÊNCIA: Então, é como uma forma para as pessoas a preencher. LAUREN CARVALHO: Sim, exatamente. Você vai encontrar, penso eu, em seu primeiro Pset, você vai ter que usar um loop fazer bem para coletar entrada do usuário. AUDIÊNCIA: Dependendo da situação, seus loops, enquanto tendem a correr mais frequentemente do que enquanto loops, como por uma ou outra coisa? LAUREN CARVALHO: Se é o exato - LUCAS FREITAS: Eles devem sempre ser executado a quantidade exata de vezes que você quero que ele seja executado. Como usamos fazer enquanto, porque nós realmente queria ter a entrada de pelo menos uma vez. Em loops tempo, às vezes você não quer para executá-lo em tudo, se não é o caso de executar. Por isso, depende do projeto. Quero dizer, você pode fazer enquanto uso ou enquanto o tempo que o seu código faz isso que é suposto fazer. LAUREN CARVALHO: Mas eu faço acho que a resposta à sua pergunta é provavelmente sim. Vamos dizer que a condição era falsa. Em um caso, seria executado uma vez, e outro caso ele seria executado zero vezes. Então, sim. Mais alguma pergunta? Sim? AUDIÊNCIA: Pode a condição de ser um laço loop for em termos de uma outra variável que [inaudível]. LAUREN CARVALHO: Sim, pode ser qualquer coisa. Provavelmente para as Série de Exercícios começo, você não terá de encontrar esse caso, mas definitivamente ele pode ser qualquer coisa. LUCAS FREITAS: Eu acho que estamos a fazer aqui. LAUREN CARVALHO: somos? Não? LUCAS FREITAS: Loops? É. LAUREN CARVALHO: Não devemos ser. Oh, estamos a fazer com loops. OK. Na verdade, porque nós temos falado tão muito, vamos de fato todos navegar sobre a study.cs50.net/conditions. E você está indo para navegar para baixo para os problemas widgets. Bem, na verdade, ao passo que as pessoas estão ficando esta configuração, o Estudo CS50 é vai ser uma ferramenta que seus TFs vontade usar para se preparar para as seções e que Vocês podem usar se você perder seções. Vai conter um monte de slides, algumas dicas e truques para cada tema, e alguns problemas práticos com soluções. Por que nem todo mundo basta dar uma olhada para este problema aqui. Me desculpe, eu deveria ter lembrado pessoas para trazer laptops hoje. Mas se você não tem um laptop, isso é OK. Você pode apenas anotar isso para baixo em uma pedaço de papel ou olhar por cima o ombro de seu vizinho. Vamos tentar escrever um programa que solicita ao usuário para dar um palpite, o número médio de filhos por família unidade nos Estados Unidos. Esse número é 2, a propósito, como você pode ver a partir destes exemplos. Queremos imprimir número médio de filhos por família em os EUA, então nós quer o que? Queremos coletar entrada a partir do utilizador. E, em seguida, dependendo do que o usuário de entrada é, você está indo para imprimir ou isso é correto ou isso é incorreto. E a primeira coisa que você vai Veja, se você clicar na pequena seta no a parte inferior da ferramenta é um problema local para anotar alguns pseudocódigo. Então você não está programando ainda. Você só está recebendo o seu idéias em ordem. Alguém quer ajudar Lucas venha com o direito pseudocódigo para este problema? LUCAS FREITAS: Qual é a primeira coisa que provavelmente deve fazer aqui? O que vocês acham? AUDIÊNCIA: [inaudível] LUCAS FREITAS: Sim, OK. Então, de impressão. Basta dizer a impressão que essa média número de pessoas? OK. Imprimir pergunta, vamos dizer. Depois de imprimir a esta pergunta, o que devo fazer? AUDIÊNCIA: Obter entrada. LUCAS FREITAS: Obter entrada. Mais alguma coisa? AUDIÊNCIA: Condition. LUCAS FREITAS: Condition. LAUREN CARVALHO: O que é que condição vai ser? AUDIÊNCIA: O número de [inaudível]. LAUREN CARVALHO: Certo. LUCAS FREITAS: Então o que é que eu vou o check-in a condição? AUDIÊNCIA: Se é igual a 2. LAUREN CARVALHO: Se é igual a 2. Exatamente. LUCAS FREITAS: Há algo de outra coisa que eu deveria fazer? AUDIÊNCIA: Contagem. LUCAS FREITAS: Então, se é igual a 2, digamos - deixe-me escrever se a entrada é igual a a 2, então o que eu vou fazer é imprimir correta. E depois o resto, eu vou para imprimir incorreta. Mais alguma coisa? Não? LAUREN CARVALHO: Então você pode clicar no - que todo mundo tem esse baixo? LUCAS FREITAS: Será que faz sentido? Então, agora vamos tentar este código. LAUREN CARVALHO: Se você clicar no pouco seta, ele realmente salva seu pseudocódigo, que é realmente emocionante. E você pode fazer aqueles comentários em se você quer apenas para se lembrar de o que fazer. LUCAS FREITAS: Então, por exemplo, primeiro Vou imprimir a pergunta, então como é que eu vou fazer isso, na verdade? printf. Então printf, ea questão é média número de filhos por família em os EUA. Então eu vou ficar entrada do usuário. Então, como posso fazer isso? AUDIÊNCIA: Obter Int. LAUREN CARVALHO: GetInt. LUCAS FREITAS: OK. Então, primeiro declarar, certo? int, vamos chamá-lo n é igual a GetInt. E agora a condição. Então deixe-me dizer que eu vou para cá resposta cheque. Então, em primeiro lugar, se a entrada, que é N, é igual a - como é que eu vou escrever isso? AUDIÊNCIA: Igual igual. LUCAS FREITAS: Perfeito. Então n. E note que eu faço um espaço, é igual, é igual, o espaço, é verdade. E agora o que devo fazer? Algo muito importante para o estilo. As chaves. E então eu vou imprimir. Como faço para imprimir? printf. AUDIÊNCIA: Poderia ser capitalizados? LUCAS FREITAS: Não. É suposto estar em minúsculas. Então, isso é correto. Será que isso é suficiente para o printf declaração, ou estou faltando alguma coisa? AUDIÊNCIA: Nova linha. LUCAS FREITAS: Nova linha, sim. E agora outra coisa. AUDIÊNCIA: Existe um espaço após o printf, ou não? LAUREN CARVALHO: Devemos verificar o guia de estilo. AUDIÊNCIA: Não deve ser. LUCAS FREITAS: Não deve ser, OK. Então, o resto, printf, "Isso está incorreto." LAUREN CARVALHO: Oops, suas citações. LUCAS FREITAS: OK. Mais alguma coisa? Será que uma boa aparência? LAUREN CARVALHO: Vamos tentar? LUCAS FREITAS: Sim, vamos executá-lo. Portanto, é a compilação, e Parece que ele funciona. Vamos tentar dois filhos. Isso é correto. E agora vamos executar de novo, mas agora, em vez de colocar duas crianças, vamos dizer que eu vou colocar como cinco. Isso é incorreto. Assim, parece que ele funciona. LAUREN CARVALHO: Por que você não mostrar-lhes o que acontece se você colocar algo estranho, como algumas letras. LUCAS FREITAS: Ah, sim. Vamos também verificar isso. E se o usuário está tentando bagunça com o seu programa, e eles só escrever, eu não sei dois. Vai dizer repetição. LAUREN CARVALHO: Então GetInt está pedindo-lhes para tentar novamente. Nós não temos que cuidar do que nós mesmos. LUCAS FREITAS: Yeah. Então, a menos que eu realmente colocar um número, é vai continuar me pedindo para tentar novamente. AUDIÊNCIA: Como você se executá-lo? LUCAS FREITAS: Basta clicar este botão estrela. LAUREN CARVALHO: Você deve subir. Lá você vai. LUCAS FREITAS: A estrela botão direito lá. Sim? AUDIÊNCIA: Será que pedir [inaudível] com números decimais também? LAUREN CARVALHO: Eu acredito que sim. LUCAS FREITAS: Se ele faz o que? LAUREN CARVALHO: Se eles tipo em um número decimal, eu acho ele vai pedir. LUCAS FREITAS: Vamos ver. LAUREN CARVALHO: Porque não é um int. LUCAS FREITAS: Yeah. LAUREN CARVALHO: Então, não é um int, Seja Int irá pedir-lhe para tentar novamente. AUDIÊNCIA: Então, onde nesse código seria a casa decimal que solicita ao usuário que ele tem que entrar um inteiro especificamente? Lauren CARVALHO: GetInt é realmente fazendo isso para nós. AUDIÊNCIA: Não, quero dizer, se quiséssemos para entrar [inaudível] LUCAS FREITAS: Você pode dizer como média número de crianças em os EUA. Eu não sei. Podemos dizer, por exemplo, "Por favor, introduzir um número inteiro. " LAUREN CARVALHO: Um inteiro igual ao número médio. Quero dizer, é apenas como você palavra, certo? LUCAS FREITAS: Yeah. Isto não faz parte de codificação, na verdade. É mais como tudo o que você vai querer escrever em seu programa. AUDIÊNCIA: Como teríamos executá-lo se estava realmente em gedit [inaudível]. Em vez de pressionar o jogo? LUCAS FREITAS: Vamos primeiro compilá-lo. Podemos fazê-lo, fazendo make eo nome do arquivo. E, em seguida, executá-lo, vamos fazer corte de ponto e o nome do programa. AUDIÊNCIA: Eu acho que o que eu quis dizer foi se queríamos que o programa para responder a seu, entrada inválida incorreta, você não deve colocar em - LUCAS FREITAS: Nós não será capaz de fazer isso porque o código esta diz repetir trata de Get Int, que é um função que já é implementado para nós através da biblioteca CS50, e desde ele já está implementado lá, nós não pode simplesmente [inaudível]. LAUREN CARVALHO: Se você não usar GetInt, então você pode fazer isso. LUCAS FREITAS: Yeah. Mas se você estiver usando GetInt, você não pode. Alguma outra pergunta? AUDIÊNCIA: Você poderia ter ido com como GetFloat e, em seguida, ser capaz de colocar lo em um decimal? LUCAS FREITAS: Yeah. AUDIÊNCIA: OK. Então você só poderia entrada flutuar A é igual - LAUREN CARVALHO: Yeah. Exatamente o mesmo, exceto um flutuar em vez de um int. LUCAS FREITAS: Basta colocá-lo aqui e, em seguida, GetFloat lá. AUDIÊNCIA: Como você vai ver ou ter visto - LAUREN CARVALHO: temos não chegou lá ainda. AUDIÊNCIA: - fazendo com desigualdade flutuadores não [inaudível] AUDIÊNCIA: O que as vírgulas significam? LAUREN CARVALHO: O ponto e vírgula apenas significa que esta declaração seja completa, e nós estamos indo para ir para o próximo slide. AUDIÊNCIA: Então é necessário todas as vezes? LAUREN CARVALHO: Yeah. Bem, OK, então não para essas condições, porque eles são encapsular algo. Então, basicamente, se algo está causando que você crie uma chaveta bloco, não coloque um ponto e vírgula no final. LUCAS FREITAS: Mas tudo outra coisa, sim. Quando você termina um comunicado, colocar o ponto e vírgula. E se você esquecer ponto e vírgula, a compilador vai ficar com raiva de você, e você vai ter para tentar consertá-lo. LAUREN CARVALHO: Se eu colocar um ponto e vírgula aqui, que iria parar com isso, e eu nunca iria começar a executar o que é no interior, por sinal. Portanto, é um daqueles erros comuns. AUDIÊNCIA: Sempre execução. LAUREN CARVALHO: Yeah. Neste caso, teríamos sempre executar o que está dentro. AUDIÊNCIA: Seu estilo [inaudível] anexar que para você, pensei. LAUREN CARVALHO: Ah, isso é verdade. AUDIÊNCIA: [inaudível] único coisa de linha [inaudível] AUDIÊNCIA: Sim? AUDIÊNCIA: Você pode ter várias insumos em uma linha? Então, como você pode pedir que os usuários para imprimir duas coisas? LAUREN CARVALHO: Não usar - LUCAS FREITAS: Não. Vamos dizer que eu também quero para obter este número inteiro m. Eu tenho que fazê-lo em uma linha diferente. AUDIÊNCIA: Se você fosse para executar que, como [inaudível]? Seria imprimir o prompt lá [inaudível] e então você entre com um e - LAUREN CARVALHO: Bem, executá-lo. Quero dizer, não há nada nos impede de apenas executá-lo e ver o que iria acontecer. LUCAS FREITAS: Eu acho que é vai reclama para nós porque não estamos usando - LAUREN CARVALHO: Oops. LUCAS FREITAS: Ele queixou-se a nós para a direita agora, porque nós não estamos usando este variável, mas se eu tivesse, por exemplo, n é igual é igual a, e m é igual igual a, então o que será acontecer neste caso? O que este programa faz? AUDIÊNCIA: Eu só estou querendo saber como seria - LAUREN CARVALHO: Ela só quer saber como fica como, penso eu, certo? Por isso, levou um deles, e, em seguida, que levou o segundo. Acho que devemos seguir em frente, porque temos mais uma Apresentação de slides para ir antes - você quer puxar para cima de matemática? LUCAS FREITAS: Sim, de matemática. LAUREN CARVALHO: Dar me apenas um segundo. Há alguns numérica diferente variáveis ​​em dados numéricos em C. C podem ser classificadas em diferentes tipos, e estes são os que você vai ver com mais freqüência. E int é um número inteiro. Você não pode ter nenhum decimais. No aparelho, é preciso 32 bits para armazenar um int. Uma flutuação pode ter decimais. Ele também leva 32 bits para armazenar uma bóia no Appliance. A dupla é um número com um decimal ponto que tem 64 bits para armazená-lo, o que significa que você pode apenas ter maior precisão, porque você pode ter mais - o que você chama isso? LUCAS FREITAS: Sim, isso é muito mais. LAUREN CARVALHO: Mais lugares depois do ponto decimal. E há muito tempo é um número inteiro que leva 64 bits para ela ferida no Appliance. LUCAS FREITAS: Então ele pode ser maior do que inteiros podem ser. LAUREN CARVALHO: A coisa sobre dados tipos em C é que eles dizem o que tipo de dados que você pode armazenar em sua variável. Dizem-lhe como você pode usar esta variável no seu programa. É muito importante para apenas acompanhar de que tipo de dados você está usando, e se você precisa fazer para converter de um tipo de dados para outro, certifique-se de que você sabe exatamente o que acontece quando essa fundição ocorre. E você vai ver um exemplo mais tarde sobre nestas lâminas de erro que pode ocorrer. Vamos dar uma olhada em algumas de matemática em C e pensar com muito cuidado, eu acho, sobre o que está acontecendo quando esta matemática está ocorrendo. Na primeira linha, o que é acontecendo quando eu declaro x? AUDIÊNCIA: Você está permitindo que x para ser alguma coisa? LAUREN CARVALHO: Yeah. Bem, eu estou realmente fazendo a operação sistema de 32 bits de memória, certo? Em que posso armazenar um int, e Eu vou ligar para o que int x. LUCAS FREITAS: ir Basicamente na memória e encontrar um lugar que tem 32 bits e ditado, hey, eu quero que esse espaço, e ele vai ser chamado x. Então você é apenas praticamente descoberta uma caixa em sua memória para armazenar valores para x. LAUREN CARVALHO: E então eu inicializar x, o que significa que eu só armazenar o valor de 2 naquele lugar, que pedaço de memória, que pedimos operacional sistema para. E aqui o que estamos fazendo é na verdade estamos declarando e inicializar y em uma linha, em vez de em duas linhas, como fizemos até aqui, que também é um perfeitamente bem, estamos adicionando 1 para x, e nós estamos armazenando que valor em y. LUCAS FREITAS: Então, basicamente o que este linha faz, ele encontra agora uma caixa para y, e, em seguida, o seu valor, a única coisa que você vai colocar dentro da caixa, é vai ser o valor de x mais 1. Por isso, tem essa caixa para y. Ela recebe o valor de x, parece aqui, e ver que é 2. Colocá-lo lá, mais 1, então coloca uma 3 lá. Será que isso faz sentido? Então y seria 2 neste caso. LAUREN CARVALHO: Tudo bem, legal. Vimos alguns disso, então vamos agora pensar sobre a divisão em C. Aqui eu sou declarar e inicializar um float chamada resposta e dividindo 1 por 10, e então eu estou imprimindo a resposta com duas casas decimais. E note aqui, na minha declaração printf, quando eu quiser imprimir algo para dois casas decimais,% .2 f é o que eu quero usar. Assim, o ponto 2 é apenas dizer Eu preciso de dois lugares após a decimal impresso. Agora, o que vai acontecer se eu executar esse código? Alguém tem uma idéia? O que imprimir? LUCAS FREITAS: Quais são nós esperando para começar. LAUREN CARVALHO: O que fazer queremos, em primeiro lugar? LUCAS FREITAS: [inaudível] LAUREN CARVALHO: 0,1, sim. Mas o que vai imprimir? AUDIÊNCIA: [inaudível] LAUREN CARVALHO: Bem, não, na verdade. Isto é o que eu estava falando sobre o porquê você precisa manter o controle muito cuidadoso de seus tipos de dados. Então, que tipo de dados é isso? É um int, certo? Não há nenhuma casa decimal. 10 também é um int. Não há nenhuma casa decimal. Se eu dividir um int por um int, recebo uma int que não é de 0,1, porque ints não pode ter casas decimais, mas apenas 0. Porque um int apenas trunca fora das casas decimais. LUCAS FREITAS: Então sempre que você fizer operações com inteiros, você vai obter um int como resposta. Então, basicamente, o que o computador está a fazer, é se divide por 1 10, e fica 0,1. Mas, então, é como se, espere, este é deve ser um número inteiro, então você apenas ignorar a 0,1, por isso é agora apenas 0. LAUREN CARVALHO: Então, quando eu imprimir este fora, eu recebo 0,00 em vez de 0,10. LUCAS FREITAS: Será que faz sentido? LAUREN CARVALHO: Isso é meio de pena, certo? LUCAS FREITAS: Então, como podemos resolver isso? LAUREN CARVALHO: Vamos tentar corrigir isso. Aqui está um exemplo de onde eu sou realmente lançar a 1 e de 10 a flutua. Então, agora, um não é mais um int. 1 é um float. By the way, esta é apenas a sintaxe para quando você quer para lançar a partir de um Tipo de dados para outro. Você pode simplesmente colocar o tipo de dados em parênteses e tem que apenas preceder o valor que você está lançando. Então, aqui, eu estou dividindo um carro alegórico por uma bóia para obter uma resposta float. E sim, esta seria, em fato imprimir 0,10. Será que isso faz sentido? LUCAS FREITAS: Então tipo casting é apenas a conversão de um tipo para outro. Assim flutuar 1 é realmente 1,000. Não é exatamente isso, mas é algo com casas decimais que é, na verdade, um. Será que isso faz sentido? Sim? AUDIÊNCIA: E se você fez resposta flutuador é igual a 1,0 dividido por 10? LAUREN CARVALHO: Você está realmente acontecendo ver que no próximo slide. Isso é realmente o nosso muito próximo slide. Esta é realmente uma mais agradável do que digite casting, eu acho. Assim, estes dois são apenas carros alegóricos natureza do facto de eles têm casas decimais. Sim? AUDIÊNCIA: E se você fez [inaudível] dividido por 10? LAUREN CARVALHO: Na verdade uma bóia dividido por um int na verdade, dá-lhe uma flutuar, de modo que iria funcionar bem. Espere, que todo mundo entende isso? Porque é que isto vai ser realmente uma grande negócio em Pset1, na verdade. Sim? AUDIÊNCIA: Você poderia apenas rapidamente passar por cima da parte vermelha? LAUREN CARVALHO: A parte vermelha, sim. Lucas, você quer? LUCAS FREITAS: OK. Então lembre-se que o percentual é um espaço reservado. É como um espaço em branco. Então, vamos tentar entender tudo que está acontecendo aqui. Percentual significa que é um espaço reservado. Então você tem a f, o que significa que esse espaço reservado é para um float. A última coisa que nós temos aqui é uma 0,2, o que significa que eu quero ter dois casas decimais para a bóia. Se eu tivesse% f, que ele vai colocar um monte de casas decimais. Então eu só posso colocar 0,2 ou 0,1 ou 0,5, ou o que quer, e vai colocar isso número de casas decimais. A única coisa é que se você colocar como .100 Ou .1,000, não é, na verdade, vai colocar todas essas casas decimais porque não tem memória suficiente ter essa precisão. Alguma outra pergunta? Sim? AUDIÊNCIA: Então flutuar apenas permite você ir além inteiros? LUCAS FREITAS: Sim. LAUREN CARVALHO: Bem, uma bóia apenas permite que você tenha casas decimais. LUCAS FREITAS: Significa apenas que você agora pode ter números decimais. AUDIÊNCIA: Por que nós sempre usar inteiros? LUCAS FREITAS: Por que você usa números inteiros? Talvez se você está contando de 0 a 10, você quer usar realmente um inteiro. Você não precisa usar um float. Em algumas situações, você não tem que efectivamente - LAUREN CARVALHO: Talvez você Não quero decimais. LUCAS FREITAS: Talvez você não quer usar um float. LAUREN CARVALHO: A outra coisa é, lembre-se, tanto colocar uma bóia e um int ter 32 bits para armazená-los, e talvez você não quer desperdiçar bits no casas decimais. LUCAS FREITAS: Yeah. Assim como, basta pensar sobre isso. Você tem 32 bits, tanto para um int e um float. Para um int, todos os 32 bits ir para a parte inteira. Se você usar um carro alegórico com 32 bits, você ter parte dessa memória que está sendo usado para o número, para o número inteiro, e outro ser utilizado para o casas decimais. Então isso significa que você não pode chegar a números muito grandes com flutuadores porque o flutuador já está usando um monte de memória para as casas decimais. Sim? AUDIÊNCIA: Essa primeira resposta, exatamente o que ele está fazendo? É a definição do valor do flutuador igual ao espaço reservado para que você possa recuperá-lo na próxima linha? Diz flutuar resposta. LUCAS FREITAS: Yeah. Então, a resposta flutuar significa que você está recebendo agora um pouco balde na memória que tem um float, e isso vai para ser chamado resposta. Então é isso que faz flutuar resposta. E então você diz que dentro de isso, você está indo para colocar o resultado deste. Então você vai fazer 1,0 dividido por 10.0, você recebe 0,1, e, em seguida, você coloca que dentro de resposta. LAUREN CARVALHO: Então, em uma linha, estamos declarar e inicializar este flutuador chamado resposta. LUCAS FREITAS: Curiosamente, embora Esta é apenas uma linha, que está fazendo várias operações. É apenas uma forma de deixar C você usa menos código. É a mesma coisa que o ternário operador, como você pode apenas fazer uma [Inaudível] em uma linha. Ele está realmente fazendo a mesma coisa que fazendo resposta float, ponto e vírgula, e então resposta é igual a esta, mas em vez de fazendo você fazer duas linhas para que, é como um atalho. Sim? AUDIÊNCIA: Então, se você executou isso, seria de 0,10? LUCAS FREITAS: Sim. Sim? AUDIÊNCIA: É realmente responder código, ou é apenas o nome? LAUREN CARVALHO: Este é, na verdade, o código. Isso é o que vamos para nomear nossa variável. AUDIÊNCIA: Então é só um nome [inaudível]. LAUREN CARVALHO: Yeah. Eu poderia ter dito float x é igual a 1.0. LUCAS FREITAS: A coisa é que o nome da variável é algo que você usa. É importante para você. Para o programa atual, a única coisa o que importa é o valor que você tem dentro do balde. A razão pela qual você tem variáveis ​​e nomes de variáveis ​​é assim que você sabe o que você está lidando, como que tipo de dados você está acesso de cada vez. Mas para o próprio código, se você chamar ele responde ou pergunta ou qualquer coisa, muito bonito, não importa. Não importa. Contanto que você for consistente em todos os ocorrência e assim que você chamá-lo outra coisa. Sim? AUDIÊNCIA: Faça as variáveis ir além da função? Como se você fosse criar um suporte [Inaudível], você poderia apenas [Inaudível] responder de novo? LAUREN CARVALHO: Não. AUDIÊNCIA: [inaudível] LAUREN CARVALHO: Não. Isso seria fora do escopo desta variável particular. E na verdade, esse é o tipo de interessante, porque quando temos coisas como loops ou estes se condições, se você declarar uma variável dentro de um outro conjunto de chaves, realmente só existe dentro dessas chaves. AUDIÊNCIA: Uma última nota sobre os carros alegóricos [inaudível]. Por que você nunca quer usar ints? Esta é mais uma nota lateral que nada, mas o computador é significativamente melhor em lidar com ints do que é flutuadores de manuseio. É como uma ordem de magnitude mais rápido. Então, se nós apenas manuseados somente carros alegóricos, as coisas seriam muito mais lento. LAUREN CARVALHO: Na verdade, não parece a ser um problema com os flutuadores. LUCAS FREITAS: Kind of a razão para disso, você pode pensar, é como em binário você pode representar inteiros colocando 0 e 1 do. LAUREN CARVALHO: Isso é a próxima coisa. LUCAS FREITAS: OK. Incrível. LAUREN CARVALHO: Apenas mantenha esse pensamento. LUCAS FREITAS: OK, eu vou dizer-lhe mais tarde. LAUREN CARVALHO: Antes de chegarmos ao que Lucas estava dizendo, o operador precedência. Este é o senso comum. Vocês têm feito isso bastante. Assim, apenas se algo está entre parênteses, isso vai acontecer primeiro. É a multiplicação tem precedência mais além, subtração, coisas desse tipo. Então, na verdade, apenas alguém quiser me diga o número um, na verdade, avalia? AUDIÊNCIA: 27. LAUREN CARVALHO: 27? É. LUCAS FREITAS: Deixe-me dar doces para as pessoas. LAUREN CARVALHO: Tudo bem. E sobre o número dois? E sobre o número dois? AUDIÊNCIA: 22. LAUREN CARVALHO: 22, sim. Eu não sei quem começou isso. Número três? AUDIÊNCIA: 10. LAUREN CARVALHO: 10, sim. Legal. Assim módulo. Lucas, você quer explicar modulo? LUCAS FREITAS: Modulo é este operador que é, na verdade, muito útil para uma monte de problemas. Se eu fizer 55 módulo 10, o que faz isso vamos dizer que eu quero dividir 55 por 10. O que eu ganho? Ela se sente como se eu estou realmente apenas fazendo a divisão, o que é o primeira vez que eu tenho o número inteiro? AUDIÊNCIA: 5. LUCAS FREITAS: 5. E, em seguida, o restante é de 5, certo? Então, é como 5 vezes 10 mais 5. Basicamente, o módulo faz, ele tenta dividir esse número por este, e ele vê o que é o resto da divisão. LAUREN CARVALHO: Então é só devolve o resto. Assim, o número um é o quê? 5. Número dois? AUDIÊNCIA: 3. LAUREN CARVALHO: 3. Número três? 0. E quatro é 1. Exatamente. LUCAS FREITAS: Simples, não é? LAUREN CARVALHO: Por que não vamos pular esta só porque nós realmente não tenho tempo, e as pessoas parecem entender. Então aqui está o que Lucas era apenas falando. LUCAS FREITAS: Outra razão pela qual eu usaria inteiros em vez de flutuadores é flutuadores que são muito imprecisas. E por que são imprecisas? David disse que para representar um inteiro, por exemplo, usamos 0 e 1, certo? E então você basicamente fazer o multiplicação, fazer todos aqueles operações de saber o número decimal você tem em vez do binário. O que acontece agora se eu tentar para colocar os pontos decimais? Na verdade, por exemplo, se eu tiver o número como 3,33333? Parece que mais de 3 10. Como é que eu vou guardar todo o 3 É que eu tenho depois disso? É realmente difícil, certo? Você não pode simplesmente dizer ao computador, hey, eu tenho um 3, e então você fazer isso para sempre. Na verdade, o computador não é inteligente o suficiente para isso. Então, basicamente, todo o seu computador faz é que tenta colocar o maior número de dígitos como ele pode até a memória que você tem. Então, vamos dizer que ele vai dizer 3.3333, e é isso. Portanto, não é capaz de realmente expressar precisamente o que é bóia. LAUREN CARVALHO: Nós temos um número finito de bits, o que significa que não cada número decimal vai ser capaz de ser representado com precisão. E assim, neste exemplo, se estivermos imprimir 0,1, agora estamos impressão fora 20 lugares. LUCAS FREITAS: Assim como eu estava dizendo vocês, você pode colocar qualquer número. Mas, se você acabou de fazer os dois lugares, você deseja obter 0,10, mas se você colocar 20 lugares, ele vai te mostrar um monte 's de porque isso é o que você pode colocar na memória, certo? Mas aqui, até o 0, e depois é só colocá-lo um monte de números aleatórios. Este é tipo como alguns - LAUREN CARVALHO: Isso é porque nós somos não é capaz de representar este decimal precisamente com o número de bits que têm. LUCAS FREITAS: E então o computador é basicamente dando-lhe um número de lixo. Este não é, na verdade, o valor do número. AUDIÊNCIA: É o mais perto que ele pode ficar [inaudível] usando o [inaudível]. LAUREN CARVALHO: Então, a implicação isso é que vamos dizer que em vez de sendo 0.100014, seja qual for, e se fosse 0,0999 - Bem, OK. Vamos fingir que a resposta real para isso foi 0,9999999. Isso é muito próximo de 1, mas não é exatamente 1. É 0,99999. Isso significa que, se eu tomar essa 0,999, e eu o lancei para um int, eu recebo 0. Eu não entendo 1. LUCAS FREITAS: Porque lembre-se, fundição de float para int, você só ignorar todas as casas decimais. Você simplesmente ignorá-los. Não há tal coisa como o arredondamento para cima ou correr para baixo quando você estereotipado. Na verdade, não é esta função que faz o arredondamento, o que é muito importante, mas você só acho que quando você faz typecasting, é apenas vai apagar tudo. Assim, mesmo se você tiver 0,99999, vai apenas para dar 0 se typecast [Inaudível] um número inteiro. LAUREN CARVALHO: Então, basta ser realmente consciente ponto de flutuante em precisão, especialmente quando você começa utilizar flutuadores em Pset1. Mas a caminhada através deveria avisá-lo de que tão bem. LUCAS FREITAS: E na verdade, é realmente difícil, por exemplo, se eu fiz resposta flutuador 1 é igual a 1,0 sobre 10, e depois flutuar resposta 2 é igual a 10,0 sobre 100,0. Eles são o mesmo número, certo? 0,1, certo? 1 mais de 10 ou 10 mais de 100. Mas agora, se eu tentar ver a igualdade, como se a resposta 1 é igual a responder 2, talvez ele não está realmente acontecendo ser a mesma coisa. Assim carros alegóricos são do tipo assim. Eles são como fazer a igualdade.