Eu sempre digo nas aulas que não existe apenas uma forma de resolver o mesmo problema. Hoje vamos ver isso na prática fazendo uma nova versão do algoritmo para calcular o fatorial de um número em Portugol.
Como estamos falando em algoritmos, sabemos que não existe apenas uma maneira de se resolver um problema. Para mostrai isso, apresento a seguir uma segunda versão do algoritmo para o fatorial em portugol.
A primeira parte é exatamente igual, garantindo que seja digitado um valor maior que 0. A segunda parte possui algumas diferenças.
A primeira diferença é que, como o fatorial de 1 é 1, não há necessidade de nenhuma multiplicação. Então testamos se x é igual a 1. Se for, imprimimos 1 e finalizamos o algoritmo.
Caso x seja maior que 1, fat recebe x e x é decrementado em uma unidade. A partir daí iniciamos as multiplicações até que x chegue em 1.
O último passo é imprimir o resultado que estará na variável fat.
programa{ funcao inicio(){ inteiro x, fat, copiaX faca{ escreva("Digite um valor maior que zero: ") leia(x) }enquanto(x < 1) se(x == 1){ escreva("O fatorial de 1 é 1!\n") } senao{ copiaX = x fat = x x = x - 1 enquanto(x > 1){ fat = fat * x x-- } escreva("O fatorial de ", copiaX, " é: ", fat) } } }