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.