Oi, Hugo! Tudo certo?
Agradeço a paciência em aguardar um retorno.
Legal ver que você está praticando e desenvolvendo programas além do que é proposto na aula! Isso é super importante para fixar o conhecimento. Pesquisar funcionalidades e soluções, como você fez com a exit()
, é algo cotidiano na vida de uma pessoa dev. As tecnologias evoluem muito rapidamente e novos problemas sempre estão surgindo - assim como novas soluções. Parabéns por sua dedicação :)
Fiz algumas alterações no seu código. Ficou assim:
<meta charset="UTF-8">
<script>
function pula() {
document.write("<br>");
}
function mostra(frase) {
document.write(frase);
pula();
}
var numero = parseInt(prompt("Escolha um número. Ele será multiplicado por ele mesmo até ser maior que 1 milhão. Depois lhe falará qual foi o resultado e quantas vezes ele multiplicou por ele mesmo."));
if (isNaN(numero)) {
alert("Isso nem é um número cara... tenta novamente.");
} else if (numero == 1) {
alert("1 vezes 1 é 1 animal.");
mostra("Impossível continuar por que 1 vezes 1 é igual 1 e nunca chegará à 1 milhão. Reinicie e tente novamente.");
} else if (numero == 0) {
alert("Assim não rola, né?")
mostra("Acho que você precisa lembrar alguns conceitos básicos de matemática. 0 não multiplica!")
} else {
var n = numero;
var quantas = 0
while (numero <= 1000000) {
mostra(numero + " vezes " + n);
numero = numero * n;
quantas = quantas + 1;
}
mostra("O resultado final foi o número : " + numero);
mostra("O número que você escolheu foi multiplicado " + quantas + " vezes até passar de 1 milhão.");
}
mostra("Pressione: Ctrl + R");
</script>
Tenho alguns comentários sobre as modificações:
Por boa prática, é importante se atentar ao uso do ponto e vírgula ao final dos comandos. Mesmo que, nessa etapa do aprendizado, o programa funcione normalmente com ou sem esse indicativo, chegará um momento em que alguns comandos podem não ser executados. Adquirir esse hábito desde o início da sua jornada como dev pode te economizar muitos bugs, no futuro.
Adicionei também uma condição para testar se o número inserido é 0. Sem ter recebido instruções sobre como prosseguir caso isso ocorra, o programa segue esse comando:
if (numero != 1) {
while (numero <= 1000000) {
mostra(numero + " vezes " + N);
numero = (numero * N);
quantas = (quantas + 1);
Por nunca chegar ao milhão, o while
não é encerrado. Assim, o navegador trava num loop infinito.
Perceba que para agregar todas as condições, utilizei a estrutura condicional else if
. Assim, o código ficou mais organizado. As estruturas são essas:
if
- se: realiza um teste lógico. Retorna verdadeiro ou falso.else if
- senão se: realiza um teste lógico. Retorna verdadeiro ou falso. Surge a partir da resposta false
de condições anteriores. Não existe um limite, é possível utilizar quantos forem necessários.else
- senão: não realiza teste lógico. Apenas é executado se nenhuma das condições anteriores forem atendidas.
Como várias condições foram postas dentro de uma única verificação, não faz sentido que else
seja utilizado tantas vezes. As condições podem estar aninhadas em um único grupo, com apenas um if
inicial.
Também alterei a variável N
para n
- é convenção que as variáveis comecem com letra minúscula.
O último ponto modificado no código é a exclusão da função exit()
. No seu caso, a função cumpriu bem seu papel em finalizar todo o programa. Não houve problema, já que o próximo passo sugerido seria reiniciar a página e, assim, começar o programa novamente. Entretanto, o uso da função exit()
pode ser imprudente em programas mais complexos.
Até esse momento do curso, os programas são síncronos - ou seja: um comando é executado logo após o outro, e o uso que você fez da função teve o resultado esperado. Como exit()
encerra toda a execução do programa, algumas funções podem deixar de ser executadas quando estivermos trabalhando em um programa assíncrono.
Espero ter ajudado! Se ficar alguma dúvida, estarei por aqui.
Abraços e bons estudos
Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.