ZAMYLA CHAN: É uma me, Zamyla. Hoje em Mario, vamos ser desenhar a metade da pirâmide para Mario para subir. Então vamos falar sobre a nossa to-do de para este problema. Nós vamos querer para solicitar e validar o usuário para uma entrada válida de como alta que querem pirâmide de Mario para ser. E então, vamos desenhá-la. Então, vamos começar com sugestões e validando o usuário para a sua entrada. Podemos fazer uso da Função CS50 Biblioteca obter int que vai garantir que o usuário insere um número inteiro. Quaisquer números inteiros positivos, negativos inteiros, o número 0 são todos jogo justo. Caso contrário, o usuário será solicitado a repetir até que a entrada de um número inteiro válido. Agora, embora get int faz uma grande parte do trabalho para nós no sentido de garantir que o do usuário nos dá um número inteiro, ainda precisamos aplicar algum restrições adicionais sobre isso. Afinal, não podemos ter Mario escalada meia pirâmide de altura negativo de 12. Além de que, o especificação problema diz que só podemos permitir que Mario para subir uma pirâmide de alturas entre 0 e 23. OK, o que significa que precisamos para alertar o utilizador continuamente para nos dar uma válida número e só continuam uma vez que eles nos deram uma altura válida. Como fazemos isso? Bem, processos contínuos nos dar a ideia de fazer algo loops-- repetitivamente. Um circuito em C como um tempo loop que vai continuamente executar o corpo do laço enquanto a condição dada é avaliada como verdadeira. Assim que essa condição avaliada como falsa, o programa irá prosseguir para o que vem depois disso. Assim, enquanto loops são uma forma de garantindo que continuamente solicitar ao usuário para uma entrada válida. E uma vez que eles nos dão uma entrada válida, vamos avançar para o que vem a seguir. Sabemos que vamos pedir o usuário para a entrada de pelo menos uma vez. Então, agora chegamos a uma irmã do enquanto loop, que é o loop Do While. Faça while irá executar o corpo do laço, pelo menos, uma vez. Assim, sem a verificação da condição, ele executará o corpo do laço. E, em seguida, verificar a condição para ver se ele precisa se repetir. Isto vem a calhar quando estamos validando a entrada do usuário. Sabemos que vamos para pedir-lhes pelo menos uma vez. Assim, um loop Do While pode algo parecido com isto. Nós temos um número inteiro n. E dentro do fazer enquanto loop, nós imediatamente pedir ao utilizador para um número inteiro. Se n é inválido, então vamos levá-los de novo e de novo e de novo até que eles nos dar essa inteiro válido. Finalmente, uma vez que n é uma entrada válida, vamos avance para o resto do nosso programa. Então, vamos voltar para a especificação e verificação que as condições para uma entrada válida vai ser. As alturas válidos vão situar-se entre 0 e 23, inclusive. alturas de modo inválidos vão ser inferior a 0 ou mais do que 23. Então lembre-se de projetar sua condição com cuidado, sabendo que a condição para o do loop while deve ser ao mesmo tempo n é inválido. Agora, isso não vai ser um expressão booleana simples e única. Nós vamos ter que combinar duas expressões diferentes para fazer toda a nossa condição. Então vamos apenas olhar para uma tabela verdade eu tenho já lhe deu a dica de que estamos vai ser lidar com dois Booleans. Então aqui está uma tabela de verdade onde eu ter dois Booleans-- booleana 1 e 2. Portanto, temos a opção de avaliar bool1 e bool2 ou bool1 ou bool2. E só será verdadeiro se ambos Booleans avaliar a verdade, ao passo que todos os ou será verdade, desde que um de os dois Booleans avaliada como verdadeira. OK, então dê um momento, pausar este vídeo e digerir esta tabela verdade. Eu estarei bem aqui esperando. Quando você voltar, ver se você pode juntar uma expressão booleana para o seu condição de n ser uma entrada inválida. Portanto, agora que temos entrada do usuário válido, vamos vá em frente e falar sobre como nós pode desenhar a metade da pirâmide. Aqui neste editor de texto simples, Eu desenhei um alinhado à esquerda pirâmide. Mas sabemos que precisamos de nossa pirâmide para ser alinhado à direita. Então, como eu poderia fazer isso? Bem, eu poderia tentar empurrar tudo para o lado por apenas colocar um pouco caracteres no meio. E, em seguida, para o próximo linha, eu vou colocar mais alguns personagens para empurrá-lo junto, e further-- assim por diante e assim por forth-- até que eu tenha a pirâmide alinhado à direita. Então nós temos uma pirâmide align direito, mas ele não parece tão grande com os pontos. Mas ainda queremos sustentam que o espaçamento agradável. Então eu vou literalmente inserir alguns espaços. Em vez de três pontos, eu vou colocar um, dois, três espaços. Na segunda linha. Vou colocar um, dois espaços. E no penúltimo linha, apenas um espaço. E aqui eu tenho uma pirâmide alinhado à direita. De fazer o exemplo no texto editor, temos uma ideia para o padrão que usaremos para desenhar a metade da pirâmide. Para cada linha, o que fizemos é que digitar alguns espaços, e, em seguida digitada alguns hashes, e depois digitado a tecla Enter, que é a criação de uma nova linha. Portanto, agora que temos que, vamos um passo adiante e encontrar um padrão. Então eu vou dizer, para o interesse deste exemplo, estamos a lidar com uma altura de 8. A primeira linha vai ter dois hashes que segue sete espaços. Os second-- três hashes, seis espaços. Terceiros row-- quatro hashes, cinco spaces-- assim por diante e assim por diante até chegarmos à linha NTH. Assim, pois, peço-vos para a linha NTH, quantas hashes vamos ter e quantos espaços? Então, cabe a você a descobrir uma fórmula para representar o número de hashes e quantas são necessárias para espaços a linha NTH quando você tem alguma altura. Agora, quando você estiver descobrir isso, ter cuidado como você está indexando. O que quero dizer com isto é que na vida quotidiana de todos nós começar a contar, geralmente por 1. Mas, em CS50 e em ciência da computação Em geral, são 0 indexado. Assim, a primeira fileira seria N de 0, em oposição a um. Tenha cuidado com isso quando você está tentando descobrir o seu padrão. Então agora vamos voltar a ser como vamos chamar a nossa pirâmide. Para cada linha, nós vamos querer imprimir os espaços, imprimir os hashes, e, em seguida, imprimir uma nova linha. A dica aqui é o palavra "para" todas as linhas. Em C, que tem uma construção chamado de um loop for, que é composto por um inicialização, uma condição, uma actualização, e o corpo do laço. Digamos que eu queria dizer, Olá mundo, 50 vezes, meus para circuito seria algo parecido com isso. I inicializar o meu inteiro a 0. A condição é que é menos do que 50. E então minha actualização é apenas incrementando I por um de cada vez. Nós também podemos usar para loops para repetir as coisas. Observe aqui como nós não tem codificado um número, mas sim colocada a variável altura em vez disso sobre a condição. Então o que eu estou fazendo aqui é que estou a iteração sobre cada linha da pirâmide. Eu posso fazer algo para cada remar no interior do corpo do meu loop. O que estamos fazendo dentro o corpo do loop? Bem, como já dissemos, estamos imprimindo espaços e nós estamos imprimindo hashes e nós estamos imprimindo uma nova linha. Assim, a minha externa para o laço será parecido com este. Eu iterar sobre cada linha da pirâmide, usando, Neste caso, a altura como a variável que armazena a altura da pirâmide. Dentro do corpo daquele loop, eu sou vai imprimir espaços repetidamente, de impressão os hashes repetidamente e, em seguida, imprimir uma nova linha. Então, agora, usando todos os conceitos que Eu já falei sobre nesta walk-through, você deve ser capaz de levar o do usuário para entrada, validam se as entradas, e depois tirar a meia pirâmide. Meu nome é Zamyla, e este é CS50.