Gostou do nosso conteúdo? Te ajudou?
Nos ajude também! Faça um PIX, de qualquer valor:
programacao.progressiva@gmail.com
Mostrando postagens com marcador Laço WHILE. Mostrar todas as postagens
Mostrando postagens com marcador Laço WHILE. Mostrar todas as postagens

Instruções BREAK e CONTINUE em Laços

Neste tutorial de JS, vamos aprender sobre as instruções BREAK e CONTINUE, o que são, para que servem e como utilizá-las em laços.

Instrução break em Laços


Já estudamos a instrução break no teste condicional SWITCH, e vimos que ela serve para interromper o que viria depois da instrução.

Em laços, como FOR, WHILE e DO WHILE, é a mesma coisa.

Do inglês quebrar, a instrução break quando usava em um laço, faz ele parar imediatamente.

Não importa em qual iteração esteja, se no começo, meio ou fim do looping, se o JS encontra um break ele simplesmente acaba com o laço, não executa mais e segue no código.

Exemplo de uso da instrução break

Crie um script em JS que imprime numa página HTML todos os números de 1 até o primeiro número que múltiplo de 11 e 13 ao mesmo tempo.

Veja bem, não sabemos que número é esse, então não sabemos até onde nosso laço vai rodar.
O que devemos fazer é com que o laço tenha seu teste sempre verdadeiro

Código HTML:


<!DOCTYPE html>
<html>
 <head>
    <title>Apostila JavaScript Progressivo</title>
    <script type="text/javascript" src="script.js"></script>
 </head>
 <body>
	<button onclick="teste()">Buscar</button><br />
	Resultado: <div id="resposta">
 </body>
</html>

Código .js:

function teste(){
  var resposta = document.getElementById('resposta');
  var texto='';

  for(var count=1 ; true ; count++){
  	if(count%11==0 && count%13==0){
  		texto+=count;
  		break;
  	}
  	else
  		texto+=count+"-";
  }

  resposta.innerHTML = texto;
}

Script funcionando:


Resultado:


Note que colocamos um true no teste condicional do laço FOR. Isso faz com que o loop ocorra indefinidamente, até encontrar o número 143, que é o primeiro que é simultaneamente múltiplo de 11 e 13.

Se não encontra esse número, cai no ELSE que vai colocando os números na string texto.
Quando ele encontra, adiciona ele na string texto, ou seja é o último número, e simplesmente termina o laço FOR.

Instrução continue em Laços

Assim como o break, o continue também é uma instrução que altera o fluxo de um laço.
Porém, ele não encerra o laço e sim a iteração.

Ou seja, quando o JS se depara com o continue, ele termina aquele loop específico e continuar a rodar normalmente o laço. É como se a iteração estivesse chegado ao fim, mas sem executar o que vem abaixo do continue.

Exemplo de uso da instrução continue

Crie um script que exiba em uma página HTML todos os números inteiros de 1 até 100, exceto os múltiplos de 4.

A solução é bem simples. Basta pegar um laço FOR, fazer ele ir de 1 até 100.
Em cada valor, testamos se ele é múltiplo de 4.

Se for, damos um continue, e nada ocorre.
Se não for, adicionamos o número na string que vamos exibir na página.



Código HTML:
<!DOCTYPE html>
<html>
 <head>
    <title>Apostila JavaScript Progressivo</title>
    <script type="text/javascript" src="script.js"></script>
 </head>
 <body>
	<button onclick="teste()">Exibir</button><br />
	Resultado: <div id="resposta">
 </body>
</html>
script.js:
function teste(){
  var resposta = document.getElementById('resposta');
  var texto='';

  for(var count=1 ; count<=100 ; count++){
  	if(count%4==0)
  		continue;
  	else
  		texto+=count+"-";
  }

  resposta.innerHTML = texto;
}
Script funcionando:


Resultado:


O Loop DO WHILE em JavaScript

Neste tutorial de laços, vamos apresentar o último loop: o do ... while.

Loop DO ... WHILE: O que é? Como usar ?

Como o nome pode sugerir, ele tem algo a ver com o laço WHILE.

No loop while ocorria o seguinte: primeiro era realizado um teste condicional, e somente se este fosse verdadeiro é que o JS entrava no looping.

Com o laço DO WHILE isso vai ser diferente.
Vamos ver como declarar o do while:

do{
  [codigo];
  [codigo];
  [codigo];
}while(teste);

Primeiro abrimos o laço com o comando do.
Do, em inglês, é fazer.

Então, o código que vem em seguida é executado.
Ao final dele, é realizado o teste condicional.

Se este teste for TRUE, o código depois do do é executado novamente, e assim segue, enquanto o teste não for FALSE.

Exemplo de uso do loop DO WHILE

Laços do while são muito usados para exibir menu, pedir dados, senhas...
Vamos criar um script que pede uma senha ao usuário.

Se a senha estiver correta, ele entra no sistema.
Se estiver errada, avisa e pede a senha novamente.

Veja o código HTML:

<!DOCTYPE html>
<html>
 <head>
   <title>Apostila JavaScript Progressivo</title>
   <script type="text/javascript" src="script.js"></script>
 </head>
 <body>
  <button onclick="entrar()">Entrar</button><br />
 </body>
</html>

script.js:

function entrar(){
  var senha = '';

  do{
   senha = prompt("Digite sua senha: ");

   if(senha=='2112js')
    alert("Entrando no sistema...");
   else
    alert("Senha invalida, tente novamente!");
  }while(senha !='2112js');
}

Resultado:



Funciona assim: ao clicar no botão Entrar, invocamos a função entrar() do JavaScript.

A senha digitada vai ser armazenada na variável senha.
Aí vamos pro do.

Lá nele, usando um prompt, pedimos a senha pro usuário.
Se ela for 2112js, aparece a mensagem de entrada no sistema.

Se não for, de senha inválida.

Isso vai acontecer indefinidamente, até o usuário digitar a senha corretamente, pois o teste condicional é: senha != '2112js'

Em outras palavras, isso quer dizer: 'usuário, enquanto a senha digitada não for a correta, vou ficar pedindo e testando, pedindo e testando...só paro quando digitar a senha correta.'

Leia em inglês: do ... while
Ou seja: faça, execute esse código, enquanto isso for verdade.

Note uma coisa importante: ele executa o código pelo menos uma vez!
Isso não acontece no laço WHILE.

Pro código rodar em WHILE, primeiro o teste tem que ser verdadeiro, senão nem entra.

Como Verificar se o Número é Primo em JavaScript

Nesta aula de nosso curso de JavaScript, vamos aprender como verificar se um número é primo ou não, bem como achar números primos em qualquer intervalo.

Números Primos na Matemática

Na Matemática, dizemos que um número é primo (de uma maneira mais simplificada), se ele for divisível somente por 1 e por ele mesmo.

Ou seja, se você dividir ele por outro número que não seja 1 nem ele mesmo, vai dar quebrado.

O 7, por exemplo, só podemos dividir por 1 ou por 7.
O 11 também, só podemos dividir por 1 e ele mesmo.

Exemplo de números primos até 100: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97...

O 4, por exemplo, não é primo. Podemos dividir por 1, por 2 e por 4.
O 6 também não, pois é divisível por 2 e por 3, além de ser divisível por 1 e ele mesmo, o seis.

Testar se o número é primo em JS

Crie um script em JS que diz se um número fornecido pelo usuário é primo ou não.

Vamos pedir um número ao usuário e armazenar na variável numero.
Depois, vamos fazer uma variável de contadora, a count, que vai assumir todos os valores de 1 até numero, dentro de um laço FOR.

Vamos usar também uma variável chamada divisores, que é inicializada com 0 e ela vai armazenar a quantidade de divisores do número fornecido pelos usuários.

Cada vez que encontrarmos um divisor (resto da divisão de numero por 1, 2, 3, 4, ...), incrementamos a divisores. Ao final do laço, se ela for igual a 2, é primo.
Se for maior que 2, não é primo.

Código HTML:
<!DOCTYPE html>
<html>
 <head>
   <title>Apostila JavaScript Progressivo</title>
   <script type="text/javascript" src="script.js"></script>
 </head>
 <body>
   Número para teste: <input id="num" type="number" /> <br />
   <button onclick="primo()">Testar</button><br />
   Resultado: <div id="resposta">
 </body>
</html>
script.js:
function primo(){
  var numero = parseInt(document.getElementById('num').value);
  var resposta = document.getElementById('resposta');
  var divisores=0;

  for(var count=1 ; count<=numero ; count++)
   if(numero % count == 0)
   	divisores++;
  
  if(divisores==2)
  	resposta.innerHTML='É primo';
  else
  	resposta.innerHTML='Não é primo';
}

Resultado:

Número para teste:

Resultado:




Exibir todos os primos em um intervalo

Agora vamos mais além.
O usuário vai fornecer dois números, o inicio e o fim, e nosso script vai mostrar TODOS os primos dentro desse intervalo!

Usaremos uma técnica chamada: aninhamento, pois vamos aninhar um laço FOR dentro de outro.
Ou seja, vai ter um FOR dentro de outro laço FOR.

O primeiro laço FOR faz com que a variável count receba todos os valores de inicio até fim.
Assim que entra no primeiro laço, precisamos colocar a variável divisores como 0.

Em cada valor desse de count, vamos testar se ele é primo.
Para isso, usamos o código do exemplo anterior.
Ou seja, vamos pegar o resto da divisão entre count e 1, 2, 3, ..., count.

Se ao final desse laço interno a variável divisores for igual a 2, é porque tal número é primo, e adicionamos essa informação na string texto.

Findado ambos laços, mandamos essa string para a página HTML, via propriedade innerHTML da div resposta.

Código HTML:
<!DOCTYPE html>
<html>
 <head>
   <title>Apostila JavaScript Progressivo</title>
   <script type="text/javascript" src="script.js"></script>
 </head>
 <body>
   Inicio do intervalo: <input id="inicio" type="number" /> <br />
   Fim do intervalo   : <input id="fim" type="number" /> <br />
   <button onclick="primo()">Testar</button><br />
Resultado: <div id="resposta">
 </body>
</html>
script.js:
function primo(){
  var inicio = parseInt(document.getElementById('inicio').value);
  var fim = parseInt(document.getElementById('fim').value);
  var resposta = document.getElementById('resposta');
  var texto='';
  var divisores;

  for(var count=inicio ; count<=fim ; count++){
  	divisores=0;
  	for(var aux=1 ; aux<=count ; aux++)
  		if(count % aux == 0)
  			divisores++;

  	if(divisores==2)
  		texto += count + '<br />';
  }

  resposta.innerHTML = texto;
}
Resultado:


Inicio do intervalo:
Fim do intervalo :

Resultado:


Sequência de Fibonacci em JavaScript

Neste tutorial de JS, vamos aprender como gerar a sequência, e qualquer termo, da série de Fibonacci, usando laços FOR e WHILE em JavaScript.

A Sequência de Fibonacci


Assim como a PA (Progressão Aritmética), é uma sequência de números, formada por uma regras bem simples.

O primeiro número da série é 0.
O segundo é 1.

A partir daí, o próximo termo é sempre a soma dos dois anteriores. Logo:
Terceiro termo = 0 + 1 = 1
Quarto termo   = 1 + 1 = 2
Quinto termo   = 1 + 2 = 3
Sexto termo     = 2 + 3 = 5
Sétimo termo   = 3 + 5 = 8
Oitavo termo   = 5 + 8 = 13
...

Ela é de extrema importância na Matemática e aparece de maneira assustadora na Natureza, vale a pena uma pesquisa!

Série de Fibonacci em JavaScript

Crie um script que pede ao usuário um termo qualquer da série de Fibonacci e ele exiba tal termo.

O termo que o usuário quer ver será armazenado na variável termo, o número da sequência em numero. Além disso, temos que ter duas outras variáveis, que vão armazenar os dois últimos números da sequência: a ultimo e a penultimo.

Primeiro, precisamos tratar o caso que a pessoa digite termo 1 ou 2.
Nesse caso, basta fazer termo-1 .
Se ela tiver digitado 1, retorna 0. Se tiver digitado 2, retorna o valor 1.

Acima do termo 2, vamos entrar no laço for.
O próximo termo da sequência é:
numero = ultimo + penultimo

Agora, precisamos atualizar os valores de ultimo e penultimo:
penultimo = ultimo;
ultimo = numero


Veja como ficou:
Código HTML:
<!DOCTYPE html>
<html>
 <head>
   <title>Apostila JavaScript Progressivo</title>
   <script type="text/javascript" src="script.js"></script>
 </head>
 <body>
   Exibir até o termo: <input id="numero" type="number"> <br />
   <button onclick="fibonacci()">Exibir</button><br />
   <div id='resposta'></div>
 </body>
</html>
Código JavaScript:
function fibonacci(){
  var termo = parseInt(document.getElementById('numero').value);
  var resposta = document.getElementById('resposta');
  var penultimo=0, ultimo=1;
  var numero;

  if(termo<=2)
   numero = termo-1;
  else
   for(var count=3 ; count<=termo ; count++){
    numero = ultimo + penultimo;
    penultimo = ultimo;
    ultimo = numero;
   }

  resposta.innerHTML=numero;
}
Resultado:


Exibir o termo:




Fibonacci com laço WHILE

function fibonacci(){
  var termo = parseInt(document.getElementById('numero').value);
  var resposta = document.getElementById('resposta');
  var penultimo=0, ultimo=1;
  var numero;

  if(termo<=2)
   numero = termo-1;
  else{
   count=3;
   while(count<=termo){
    numero= ultimo + penultimo;
    penultimo = ultimo;
    ultimo=numero;
    count++;
   }
  }

  resposta.innerHTML=numero;
}


Exercício de JavaScript

Agora, em vez de exibir o termo, faça um script que printe na página todos os números da sequência de Fibonacci, até o termo escolhido pelo usuário.

Código: na apostila!
Resultado:

Exibir até o termo:



Fatorial com laços WHILE e FOR em JavaScript

Neste tutorial de JS, vamos te ensinar a calcular o fatorial de qualquer número, usando apenas o laço FOR ou o laço WHILE, em JavaScript.

Fatorial na Matemática


Em Matemática, dizemos que um número natural N é fatorial quando ele é representado por N! e vale:
N! = N * (N-1) * (N-2) * ... * 3 * 2 * 1

Ou seja, para saber quanto vale x! basta multiplicar x por x-1, depois por x-2, depois por x-3...até chegar na multiplicação por 2 e por 1.

Por exemplo:
5! = 5 x 4 x 3 x 2 x 1 = 120
6! = 6 x 5 x 4 x 3 x 2 x 1 = 720
7! = 7 x 6 x 5 x 4 x 3 x 2 x 1 = 5040


Calcular Fatorial usando Laço FOR

Inicialmente, pedimos ao usuário um número inteiro positivo, maior ou igual a 1 e armazenamos na variável numero.

Depois, inicializamos uma variável resultado com o número 1.
Agora, basta multiplicar resultado por 1, depois por 2, depois por 3...depois por (numero-1) até multiplicar por numero.

Veja como fica.




Código HTML:
<!DOCTYPE html>
<html>
 <head>
   <title>Apostila JavaScript Progressivo</title>
   <script type="text/javascript" src="script.js"></script>
 </head>
 <body>
   Fatorial de: <input id="numero" type="number"> <br />
   <button onclick="fatorial()">Exibir</button><br />
   Resposta: <div id='resposta'></div>
 </body>
</html>
Código script.js:
function fatorial(){
  var numero = parseInt(document.getElementById('numero').value);
  var resposta = document.getElementById('resposta');
  var resultado=1;

  for(var count=1 ; count<=numero ; count++)
   resultado *= count;

  resposta.innerHTML =resultado;
}
Teste:

Fatorial de:

Resposta:


Fatorial com Laço WHILE

Veja se consegue entender o código do cálculo de um número fatorial usando o laço WHILE.
É basicamente a mesma coisa do FOR, mas temos que criar e inicializar a variável antes do laço e dentro dele temos que fazer o incremento.

script.js:



function fatorial(){
  var numero = parseInt(document.getElementById('numero').value);
  var resposta = document.getElementById('resposta');
  var resultado=1;
  var count=1;

  while(count<=numero){
   resultado *= count;
   count++;
  }

  resposta.innerHTML =resultado;
}
Resultado:

Fatorial de:

Resposta: