Java para Iniciantes #8 Continue & Break

Hoje vamos estudar as Funções continuebreak.

Continue:

Como visto no post comando for, while e do while é possível fazer laços, com condições para que se repita comandos, através de condições.
E  pode ser também que você queira sair do laço depois de obtido um resultado.

Para explicar melhor vou mostrar um programinha básico e sem graça só pra testar.

Nele eu quero apenas exibir o primeiro valor que após somado ao contador seja maior que o valor do contador.

public class contbre {
	public static void main (String [] args){
		int aux=1;
		//variável de armazenamento do número
		//a ser obtido
		for(int conte=1; conte <;10; conte++){
		//condição para contador, conte será
		//usado na soma
			if(conte>=aux){
			// condição if pra verificar se aux é
			// menor ou igual a conte
				aux = conte+aux;
				//soma do contador mais
				//numero que quero obter
				continue;
			}
			System.out.println(aux);
			//imprime o valor encontrado
			break;
			/** acima o break é a interrupção
			* do laço para que não continue
			* a fazer os cálculos e imprimir os
			*  outros resultados
			* pois esse não é o objetivo
			*/
		}
	}
}

Faça o um teste, com o código acima rode uma vez sem o continue
Rode outra vez sem o break
O resultado com certeza será outro ^^’

Vamos mostrar outro outro exemplo mais simples e comum também só com o continue.

Nele vamos usar um laço do tipo while um contador e um if
Onde o objetivo será imprimir números impares.

Para saber quando um número é impar ou não, de modo que seja usável como condição, é preciso fazer uma divisão, e pegar o resto dela;

Por exemplo:

3/2 resulta 1,2
mas queremos seu primeiro resto então
esse resultado será 1 resto 1

4/2
resulta em 2 resto 0

5/2
resulta em 2 resto 1

6/2
resulta em 2 resto 0

Nota-se que acima só resulta em 0 os números pares qual não queremos imprimir.
Agora é só fazer uma condição para isso.

Vamos usar o if para fazer essa comparação, onde se o resto da divisão for 0 é preciso voltar a linha do laço.

E como foi visto no post sobre Operadores Java o % é que devolve o resultado da divisão.

Em português estruturado o programa ficará assim:

?View Code PORTUGOL
var
	i = inteiro;{declara a variável de controle}
inicio
	i=-1;{atribui -1 para início da variável}
	repita(i<25)
		{condição do laço, definindo quantidade 
		de repetição ocorrerá}
		i <-- i+i;{soma +1 a variável i}
		se (i %2 = 0) então 
			{testa se resultado da divisão é 0
			caso seja então será um número par
			vamos te adicionar mais uma unidade}
			continue;;
			{quando chega neste ponto
			o algorítimo é jogado para o fim deste
 			laço onde ele retorna para cima e 
			testa novamente de onde parou
			no comando repita
			}
 
		fimse;
		escreva (i);{escreve os números impares
 
	fimrepita;
fim.

Agora é só transferir isso para java.
Veja como fica:

public class contin{
	public static void main(String[] args){
		int i = -1;
		//declara a variável de controle e
		//atribui -1 para início da variável
		while(i < 25){
		//condição do laço, definindo quantidade 
		//de repetição ocorrerá
			i++;   //soma +1 a variável i}  
			if(i % 2 == 0){
			//testa se resultado da divisão é 0
			//caso seja então será um número par
			//vamos te adicionar mais uma unidade
				continue;
			//quando chega neste ponto
			//o algorítimo é jogado para o fim deste
			//laço onde ele retorna para cima e 
			//testa novamente de onde parou
			//no comando while
			}
			System.out.println(i); 
			//imprime os números impares
		} 
	}
}

Ainda podemos melhorar isso podemos colocar rótulos ou seja, você pode indicar qual laço vai voltar seu programa.

Vamos ver um exemplo rotulado nele darei um nome qualquer a um laço, no caso o laço mais externo.

Usando dois laços for farei com que exiba quando eu tiver duas variáveis iguais:

public class rotuloconti {
	/**
	 * testando o rotulo com continue
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		int x, y;
		retorno: for(x=1; x<50 ; x++){
			// para criar o rótulo basta colocar um nome qualquer 
			// seguido de dois pontos antes do laço 
			for (y = 1; y < 50; y++) {
				if (x==y){
					System.out.println("x: "+x+" y: "+y);
					continue retorno;
					/**
					 * quando o programa chega em continue
					 * ele volta pro rótulo criado denominado aqui 
					 * de retorno
					 */ 
				}
			}		
		}		
	}
}

Agora veja um exemplo de rotulo usando o comando break, nele farei com que meu programa pare ao ter a variável x e y igual a 25:

public class rotulobreak {
	/**
	 * testando o continue
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		int x, y;
		volta: for(x=1; x<50 ; x++){
			// para criar o rótulo basta colocar um nome qualquer 
			// seguido de dois pontos antes do laço 
			for (y = 1; y < 50; y++) {
				if (x==25 && y==25){
					System.out.println("x: "+x+" y: "+y);
					break volta;
					/**
					 * quando o programa chega em break
					 * ele volta pro rótulo criado denominado aqui 
					 * de volta e para o laço neste ponto 
					 */ 
				}
			}		
		}		
	}
}

Bom é bem fácil de utilizar o continue e o break só dependerá da sua necessidade, sabendo utilizar pode facilitar bastante o processos com os laços.

Bom até o próximo post.

Downloads:

Java SDK

Veja Também:

Sem Respostas »

Nenhum comentário ainda.

RSS feed para comentários sobre este post. TrackBack URL

Deixe um comentário