ZAMYLA CHAN: É um-me, Zamyla. Hoje, nós estamos indo para implementar Mario, onde traçamos Mario uma pirâmide cheia para ele pular. Vamos quebrar o sub-tarefas para esse problema. Em primeiro lugar, queremos pedir ao utilizador para a altura da pirâmide. E então nós queremos ter certeza de que a referida entrada é válida. E então nós vamos Para desenhar a pirâmide. Então, vamos falar sobre o que levou e validação de entrada do usuário. Pode parecer algo como este, um loop do-while que solicita que o usuário para um inteiros e, em seguida, apenas repete Se esse inteiro é inválido. Então, o que esta condição seja? Para isso, vamos voltar com a especificação. Bem, a especificação diz-nos que qualquer válidos altura vai situar-se entre 0 e 23, inclusivo. Então, em seguida, isso significa que qualquer inválido altura vai ser menor do que 0 ou mais do que 23. Portanto, agora que temos esta informação, vamos projetar a nossa condição. Mas precisamos ter cuidado, porque agora temos dois Booleans que deseja avaliar. Aqui eu tenho desde que você com uma mesa de verdade. Isto permite-nos levar de dois Booleans, Boolean um e dois. E podemos avaliar tanto bool1 e bool2 ou bool1 ou bool2. Então, qual é a diferença entre AND e OR? Bem, bool1 e bool2 vai avaliar a verdade se e somente se os Booleanos são verdadeiras, Considerando que o ou operação será verdadeiro se qualquer um dos os Booleans ou ambas são verdadeiras. Então, com isso em mente, veja se você pode descobrir o que a condição adequada para o loop do-while para um n inválida vai ser. Com isso, temos solicitado e validado o usuário para a altura da pirâmide que eles querem. Então, agora, cabe a nós para desenhar a pirâmide. A pirâmide total para este problema vai olhar um pouco como este, onde nós temos uma pirâmide esquerda, alguma lacuna, e depois uma pirâmide direita. Então, vamos decompô-lo um pouco. Se eu ir para o meu editor de texto, aqui eu tenho elaborado nos uma pirâmide alinhado à esquerda. Mas isso não vai fazer. O que nós queremos fazer é que nós queremos criar uma pirâmide alinhado à direita em primeiro lugar. Então, para fazer isso, para apenas empurrar meus hashes ao longo do lado, Eu só vou colocar alguns caracteres entre elas, apenas esses pontos. Então eu vou colocar dois no próxima linha, e um nessa linha. E aqui eu tenho um pirâmide alinhado à direita. Depois disso, eu vou voltar para a linha superior e colocar na brecha, que é, por especificação, dois espaços. Então eu vou para preencher o outro lado da pirâmide. Eu estou indo para ir para a segunda linha, escrever dois espaços para a abertura e, em seguida, dois hashes. Voltar para a terceira fila, dois lugares para o fosso e três hashes. E no final, dois lugares para o fosso e quatro hashes. Então, isso é o que um completo pirâmide será semelhante. Claro, não queremos Estes pontos no caminho. Então, nós estamos indo para substituí-los pontos, colocando alguns espaços no. Uma, duas, três na primeira linha. Um, dois no segundo. E um na terceira linha. Então é isso que nós faríamos se nós queria apenas fazer uma pirâmide completa, dizer, no nosso editor de texto. Portanto, vamos ter isso, compreender os padrões, e convertê-lo sobre a alguns pseudocódigo. Para cada linha da pirâmide, queremos para imprimir a pirâmide para a esquerda e em seguida a abertura e, em seguida, a pirâmide direita. Para a pirâmide esquerda, nós imprimimos a quantidade necessária de espaços, seguido pelos hashes. Em seguida, imprimir o fosso, que está a apenas dois espaços cada vez. E na pirâmide direita, nós imprimimos o número necessário de hashes. Para a segunda fila, realizamos exatamente o mesmo processo. Nós imprimir os espaços para a esquerda pirâmide, a quantidade necessária de hashes, a lacuna, dois espaços e em seguida, os hashes de pirâmide direita. Vamos abordar o padrão para a esquerda pirâmide. Se eu tivesse, para fins deste exemplo, uma altura de oito solicitado pelo usuário, então a minha primeira linha teria um haxixe e sete espaços. Minha segunda linha teria dois hashes, seis espaços. Terceira fila, três hashes, cinco espaços. Você provavelmente pode fazer isso -se para uma altura de oito e determinar para cada linha quantas hashes e quantos espaços você precisa. Mas o que nós queremos fazer é queremos abstrato-lo. Então eu lhe pergunto para qualquer enésima linha, quantas hashes e quantos espaços que precisamos? Agora, como você determinar o padrão de como muitas hashes e quantos espaços você precisa para qualquer linha enésima para uma dada altura, lembre-se que ter cuidado de como você está indexando. O que quero dizer com isto é que em todos os dias vida a maioria de nós começar a contagem por um. Então, a primeira linha seria o número um. E a segunda ordem seria fileira número de dois, assim por diante e assim por diante. Mas em ciência da computação e CS50, estamos zero indexado. Então, nós realmente começar a contar do zero. Então, a primeira linha seria ser número da linha zero. E a segunda fila Seria número da linha um. Então, se eu tinha uma altura de oito para minha pirâmide, em seguida, o último valor de n na verdade seria de sete e não oito. Portanto, tenha cuidado com isso. E estar ciente quando você está determinando seu padrão se o seu zero indexado ou um indexados ESTÁ BEM. Portanto, agora que temos a padrão para a pirâmide esquerda, precisamos determinar o padrão para a abertura. Felizmente, isso é muito fácil. É apenas sempre dois espaços. Então agora vamos para o padrão correto. A primeira linha terá um hash. A segunda linha, dois. Terceira fila, três. Assim por diante e assim por diante. Então, novamente, determinar para qualquer abstract n e qualquer altura quantas hash e como muitos espaços cada linha deve ter. ESTÁ BEM. Então, nós sabemos que, para cada um de nós fileira precisa para conduzir algum processo. Como fazemos isso? Bem, nós usamos a para construção de loop, composta de uma inicialização, uma condição, e uma actualização. Para laços podem ser utilizados repetir os processos. Então, digamos que eu quero dizer Olá, mundo 50 vezes, então a minha loop seria algo parecido com este, onde Eu inicializar meu variável para zero. A condição é que i seja inferior a 50. E, em seguida, a actualização é que ele incrementos em um cada vez. Então, o que isso iria fazer seria imprimir Olá, mundo 50 vezes em uma fileira. Agora, digamos que eu queria fazer uma iteração ao longo da altura da pirâmide. Em seguida, em vez de codificação duro algum valor na condição, Eu só uso a altura variável. Então, o que isto vai fazer é iterate ao longo da altura cada linha. E eu posso fazer algo dentro do corpo do referido circuito. O que nós queremos fazer no interior do corpo do loop? Bem, como indicado antes, nós queremos para imprimir os espaços e os hashes para a pirâmide esquerda e, em seguida, imprima dois espaços e, em seguida, imprimir os hashes. Então, nós já descobriu isso. Assim, podemos começar a preencher em nosso programa muito mais. Aqui eu tenho um externa para loop que itera sobre cada linha na pirâmide. E dentro daquele corpo eu vou para imprimir espaços repetidamente, hash repetidamente, e, em seguida, a abertura, e depois hashes para a pirâmide direita, e, em seguida, finalmente, uma nova linha para iniciar a próxima linha. Com isso, temos solicitado o usuário para a entrada. Temos a certeza de que é válido. E então, temos traçada a pirâmide. Então, Mario pode com sucesso subir a pirâmide. Meu nome é Zamyla. E este é CS50.