Mostrando postagens com marcador Loop. Mostrar todas as postagens
Mostrando postagens com marcador Loop. Mostrar todas as postagens

segunda-feira, 12 de novembro de 2012

Usando While e if para obter a sequência de fibonacci

Abaixo um exemplo de uso de while e if, o objetivo é obtermos a sequência de Fibonacci que seja menor que 100.


/**
 * @author marco.bidoia@gmail.com
 */
public class Fibonacci {

      public static void main(String[] args) {
           
            int fibonacci = 0;
            int nmenos1 = 1;
            int nmenos2 = 0;
           
            while (true) {
            fibonacci = nmenos1 + nmenos2;
            if (fibonacci > 100) {
                  break;
            }
            nmenos2 = nmenos1;
            nmenos1 = fibonacci;
            System.out.println(fibonacci);
            }

      }

}

O resultado é o seguinte:
1
2
3
5
8
13
21
34
55
89

segunda-feira, 7 de maio de 2012

Continue & Break



   Neste exemplo vemos qual a aplicação do "continue;" neste caso vamos fazer um for de 0 até 20 e quando o valor do "i" for maior que 10 e menor que 15 ele interrompe o ciclo e segue para a próxima execução. Aqui vemos a diferença entre o "continue;" e o "break;".
   O " continue;" passa para a próxima execução do " for ", enquanto o "break;" interrompe a execução do mesmo.

Exemplo com continue

/**
 * @author marco.bidoia@gmail.com
 */
public class ForComContinue {

      public static void main(String[] args) {
           
            for (int i = 0; i <=20; i++){
                  if (i > 10 && i < 15){
                        continue;
                  }
                  System.out.print(i + "-");
            }

      }

}

Resultado da execução acima:
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 15 - 16 - 17 - 18 - 19 - 20

  Vemos que a execução não nos trouxe os números 11, 12, 13, 14 que são maiores que 10 e menos que 15, ocontinue;"  não interrompe a execução apenas passa para o próximo laço de execução do "for".

  O mesmo exemplo só que agora usamos o "break;" em vez do "continue;".

/**
 * @author marco.bidoia@gmail.com
 */
public class ForComBreak {

      public static void main(String[] args) {
           
            for (int i = 0; i <=20; i++){
                  if (i > 10 && i < 15){
                        break;
                  }
                  System.out.print(i + "-");
            }

      }

}

Resultado da execução acima:
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10

  Neste caso vemos que quando ele encontrou um número que era maior que 10 e menor que 15 ele interrompe a execução imediatamente. 

  Com estes dois exemplos acima podemos ver a diferença entre o "continue;" e o "break;" que nos trouxeram resultados diferentes sendo utilizados em programas iguais.

sexta-feira, 4 de maio de 2012

Executando um "loop" com "break"


   Temos um "loop" que executa de 0 até 1000 e dentro dele temos uma condição que testa se o resto da divisão de "i" por 99 é igual a 0, se for ele acrescenta 1 a variável "numEncontrados".
   Quando a variável "numEncontrados" for igual ou maior que 5 a repetição é interrompida, para isso usamos o "break;" dentro do bloco de código da condição "if" 
   Quando usamos o "break;" o "loop" é interrompido imediatamente, já com o "continue;" apenas interrompemos a passagem atual do laço e passamos para a execução seguinte.


/**
 * @author marco.bidoia@gmail.com
 */
public class LoopComForAndBreak {

      public static void main(String[] args) {

            int numEncontradso = 0;
           
            for (int i = 0; i < 10000; i++) {
                 
                  if (i % 99 == 0) {
                 
                        System.out.println("Número divisivel por 99 é : " + i);
                        numEncontradso++;
                       
                  }
                 
                  if (numEncontradso >= 5){
                        System.out.println("Já encontrei 5 numeros");
                        break;
                  }
                       
            }

      }

}


O resultado da execução é:



Número divisivel por 99 é : 0
Número divisivel por 99 é : 99
Número divisivel por 99 é : 198
Número divisivel por 99 é : 297
Número divisivel por 99 é : 396
Já encontrei 5 números

   O "break;" seria bem útil se por exemplo estivéssemos procurando um determinado valor em uma lista, colocando um "break;" quando encontrarmos tal valor. 


quarta-feira, 25 de abril de 2012

Loop utilizando For

   Neste exemplo de laço utilizando o "for" fazemos a inicialização, teste de execução e o incremento da variável de controle já no inicio do código.
   Exemplo

     for (inicializacao; condicao; incremento){
        Codigo;
     }


   No caso abaixo a utilização do "for" é idêntica a que usamos no post anterior (Estrutura de repetição) onde usamos o "while" para realizarmos o "loop".


/**
 * @author marco.bidoia@gmail.com
 */

public class LoopComFor {

      public static void main(String[] args) {

            for (int i = 0; i < 10; i++){
                  System.out.println("O valor de i é: " + i);
            }

      }

}



O resultado da execução do programa é:

O valor de i é: 0
O valor de i é: 1
O valor de i é: 2
O valor de i é: 3
O valor de i é: 4
O valor de i é: 5
O valor de i é: 6
O valor de i é: 7
O valor de i é: 8
O valor de i é: 9



   Poderíamos também tratar o incremento dentro do código conforme exemplo:

for (int i = 0; i < 10;){
      System.out.println("O valor de i é: " + i);
      // Incremento da variável em outra parte do código
      i++;
}


   Neste caso o incremento da variável "i" é feito no bloco da execução e não na primeira linha onde se inicia o  laço "for", mas mesmo assim o resultado obtido é o mesmo.

terça-feira, 24 de abril de 2012

Estrutura de repetição

   Para demostrar uma estrutura de repetição vamos utilizar o "while" (enquanto), no primeiro exemplo o controle da execução é feito através da condição "loop < 10"  a variável "loop" é incrementada após cada execução do bloco.



/**
 * @author marco.bidoia@gmail.com
 */
public class LoopComWhile1 {

      public static void main(String[] args) {
           
            // Declarando a variável que controlara o while.
            int loop = 0;
            // Equanto o valor de loop for menor que 10 faça
            while (loop < 10){
                  System.out.println("O Valor de loop é: " + loop);
                  // Incrementa um valor na variável loop.
                  loop++;
            }

      }

}

O resultado da execução do programa é:

O Valor de loop é: 0
O Valor de loop é: 1
O Valor de loop é: 2
O Valor de loop é: 3
O Valor de loop é: 4
O Valor de loop é: 5
O Valor de loop é: 6
O Valor de loop é: 7
O Valor de loop é: 8
O Valor de loop é: 9



   Aqui temos outro exemplo de "loop" com "while", só que desta vez utilizamos uma forma diferente para controlar a execução do "while". Vamos controlar a execução com uma variável do tipo "boolean" chamada executar, o valor inicial da variável executar é "true" e a cada ciclo faremos uma verificação
"executar = loop < 10;" (que retorna um valor booleano) e enquanto o valor da variável "loop" for menor que 10 ela recebera "true" e continuara a execução. 


/**
 * @author marco.bidoia@gmail.com
 */
public class LoopComWhile2 {

      public static void main(String[] args) {
           
            // Declarando a variável que controlara o while.
            boolean executar = true;
            int loop = 0;
            // Equanto o valor da variável executar for true faça
            while (executar){
                  System.out.println("O Valor de loop é: " + loop);
                  // Incrementa um valor na variável loop.
                  loop++;
                  executar = loop < 10;
            }

      }

}


O resultado da execução do programa é:

O Valor de loop é: 0
O Valor de loop é: 1
O Valor de loop é: 2
O Valor de loop é: 3
O Valor de loop é: 4
O Valor de loop é: 5
O Valor de loop é: 6
O Valor de loop é: 7
O Valor de loop é: 8
O Valor de loop é: 9

   Nas duas execuções o resultado é o mesmo, a diferença é a forma que fazemos o controle de execução do laço.
   Quando trabalhamos com o laço de repetição "while" temos que tomar cuidado para ele não entrar em uma execução infinita, para isso temos que sempre garantir um controle de execução.
   No primeiro caso usamos a condição "loop < 10" e no segundo a "executar" que era controlado por uma condição interna idêntica a usada no primeiro exemplo que alterava o valor da variável "executar" para  "false"