Você não está conectado. Conecte-se ou registre-se

[Javascript] Criando uma calculadora fatorial

Ver o tópico anterior Ver o tópico seguinte Ir para baixo  Mensagem [Página 1 de 1]

waghcwb

waghcwb
Novato
Olá pessoal,

Estava aqui pensando e me recordei de um episódio um tanto quando inusitado que aconteceu enquanto eu estava na escola..
Foi bastante tempo atrás, e eu recebi uma prova onde deveria calcular o fatorial de alguns números...

Em meu celular sempre tive um programa onde posso digitar HTML, CSS e Javascript e interpretar ele pelo celular mesmo..

Como eu não podia perder tempo naquelas contas na prova eu resolvi usar meu aplicativo e criei uma função que calculava os fatoriais para mim..

E hoje resolvi compartilhar com a galera, não só esse código, vou postar outros em breve também...

Tutorial

Antes de se fazer qualquer lógica antes é preciso entender como funciona para se calcular o fatorial de algum número, resumindo tudo para vocês seria o seguinte, você pega um número por exemplo o 10, e multiplica ele 10 vezes sempre acrescentando +1 ao cálculo, por exemplo:
10! (10 fatorial) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1

Se você jogarem isso no console ou mesmo fazer a conta na calculadora vão obter: 3628800

Mas e se o número for muito grande? Vamos ter que digitar 1 por 1?

É ai que entra a malandragem [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Vamos usar a função
while
para fazer o efeito, while significa enquanto, ou seja, enquanto uma condição for verdadeira, por favor, execute algo para mim:
Código:
while( /* essa condição é verdadeira? */ ){
    //então executa essa código para mim, por favor
}  

Mas para o nosso caso, qual condição precisamos verificar se é verdadeira ou não?
Bom, no caso precisamos criar uma variável e atribuir um valor fixo a ela, geralmente se começa em 0, mas como ja sabemos o valor de 0, vou começar pelo 1

Código:
var i = 1;

Vamos aproveitar que ja estamos nas variáveis e criar outra variável para ser incrementada junto com a variável
i

Código:
var i = 1,
    fat = 1;

Agora temos um valor para incrementar, e o fatorial para multiplicar..

Agora para finalizar as variáveis, precisamos de um número que será o que vamos calcular, vamos usar o mesmo exemplo passado no inicio, será o 10
Código:
var i = 1,
    fat = 1,
    n = 10;

Bom agora vamos definir nosso
while


Como vamos incrementar nossa variável
i
de 1 em 1, vamos usar ela para verificar se o nosso loop ja chegou ao 10 para evitar um loop infinito:

Código:
var i = 1,
    fat = 1,
    n = 10;
    
    while( i <= n ){
        //por favor Javascript, faça isso para mim...
    }

O que falamos para o Javascript no código acima é,
"Por favor Javascript, enquanto a variável
i
for menor ou igual a variável
n
, faça algo para mim.."

Ta mas, faça o que? Precisamos passar uma lógica ao nosso laço, vamos lá:
Código:
var i = 1,
    fat = 1,
    n = 10;
    
    while( i <= n ){
        var fat = fat * i;
            i += 1;
    }

Essa é a lógica para calcular nosso fatorial, veja a cada vez que o
while
percorre o loop nós multiplicamos o fatorial pela variável
i
e então adicionamos +1 ao
i
para que na próxima vez que ele percorrer o loop ele seja incrementado..

Ta e agora?

Bom, como todo valor que é retornado a nós, precisamos mostrar isso em algum lugar certo? Vou usar um
alert
como exemplo..
Código:
var i = 1,
    fat = 1,
    n = 10;
    
    while( i <= n ){
        var fat = fat * i;
            i += 1;
    }
    alert(fat);

Tecnicamente nossa calcular ja funciona, mas vamos melhorar ela mais ainda?

O que pode ser melhorado?

Bom, vamos começar por esse 10, eu não quero que ele sejá constante, não quero que ele seja fixo, ou seja vamos deixar o usuário inserir esse valor para nós! Como é apenas um código para demonstrar o efeito, vamos usar um
prompt


Código:
var i = 1,
    fat = 1,
    n = prompt('Por favor, digite o número que deseja calcular o fatorial:');
    
    while( i <= n ){
        var fat = fat * i;
            i += 1;
    }
    alert(fat);

Pronto, agora nosso usuário ja pode digitar o número que ele deseja calcular o fatorial, agora só para melhorar um pouquinho vou mudar o texto de nosso
alert

Código:
var i = 1,
    fat = 1,
    n = prompt('Por favor, digite o número que deseja calcular o fatorial:');
    
    while( i <= n ){
        var fat = fat * i;
            i += 1;
    }
    alert('O fatorial de ' + n + ' é ' + fat);

Show de bola né galera? Viram como em poucas linhas de código conseguimos calcular funções bem avançadas? É por isso que existem os computadores, nós podemos fazer eles pensarem por nós, e não precisamos ficar quebrando a cabeça [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Isso mostra que programação pode te ajudar até mesmo na escola [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Lembrando, eu não te ensinei isso, ok? rs [Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Abraços, e até breve...



Última edição por waghcwb em Sex 4 Jul 2014 - 19:23, editado 1 vez(es)

Helix

Helix
Legend
Esse @waghcwb é de mais como é que alguém que está na escola e depois se lembra de uma coisa dessas!!
E o mais interessante é que é tudo feito de raiz e nada copiado por alguém, é de dar o valor.
Segura ai meu "Curtir" Razz

http://www.rewtec.com

Moonshine

Moonshine
Warez
e segura o meu tambem cada vez fico com mais inveja de não saber tanto de programaçao ou mesmo nada  Sad 

Conteúdo patrocinado


Ver o tópico anterior Ver o tópico seguinte Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos