Prática de Estrutura de Repetição: Enquanto-Faça
Introdução
Nesta etapa vamos praticar a estrutura de repetição Enquanto - Faça.
A estrutura geral do enquanto é a seguinte:
while(<condiçãoTeste>)
{
<comando 1>;
<comando 2>;
...
<comando n>;
}
Os comandos localizados dentro do bloco do while são executados enquanto a condição de teste for verdadeira. Quando a condição de teste falhar, os comandos que estiverem fora do bloco serão executados. Veja o fluxograma a seguir:
<Fluxograma>
Problema
Faça um programa que leia um número e calcule o seu fatorial.
Exemplos:
- 4! = 4 x 3 x 2 x 1 = 24
- 3! = 3 x 2 x 1 = 6
- 2! = 2 x 1 = 2
- 1! = 1
- 0! = 1
Solução
Podemos resolver este problema realizando sucessivas multiplicações do número com seus antecessores até o número 1.
1 - Abra um novo arquivo fonte
2 - Adicione as bibliotecas padrão
3 - Adicione a função principal
4 - Faça a entrada de dados: ler um número inteiror
5 - Neste ponto, usaremos uma estrutura while para executar sucessivas multiplicações e decrementar o número. Vamos traduzir o fluxograma da solução para código C usando a estrutura while(<condiçãoTeste>).
Fluxograma
<<Imagem fluxograma>>
Código C
6 - Delare uma variável para armazenar o resultado. Essa variável deve ser inicializada com valor 1.
int fatorial = 1;
7 - Adicione a estrutura de repetição while para executar enquanto o número a ser multiplicado não chegar a 1.
while(numero > 1)
{
//Coloque aqui o decremento da variável
//Coloque aqui a multiplicação
}
8 - Adicione o decremento da variável numero e a multiplicação dentro do bloco while
fatorial = fatorial * numero;
numero = numero - 1;
9 - Após o fim do bloco while, vamos mostrar o valor da variável fatorial na tela:
printf("Fatorial : %d\n", fatorial);
8 - Execute o código testando inclusive o fatorial de 0.
Chinês
Vamos analisar a execução do laço while(numero > 1) para uma entrada 4 usando o método chinês.
Iteração | numero > 1 | numero | fatorial |
1 | V | 4 | 4 |
2 | V | 3 | 12 |
3 | V | 2 | 24 |
4 | F | 1 | 24 |
Repare que a cada iteração, a variável numero vai decrementando de 1. Quando a variável numero atinge o valor 1, a condição numero > 1 torna-se falsa e o laço while(numero > 1) encerra a sua execução. Após isso, o comando printf é executado e o conteúdo da variável fatorial é mostrado na saída:
Fatorial: 24.
Simplificando o Código
Podemos simplificar um pouco os nossos programas utilizando as notações equivalentes abaixo:
1-
fatorial = fatorial * numero;
Equivale à:
fatorial *= numero;
2-
numero = numero - 1;
Equivale à:
numero--;
Modifique o seu código fazendo as substituições acima.