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)
}
}
}
