Os loops são utilizados para executar um conjunto de instruções várias vezes baseando-se sempre em uma condição que decidirá se continua repetindo ou não. Vejamos os tipos que existem.
Loop While
while (expressao) {sentencas}
As instruções dentro das chaves se executam enquanto a expressão for verdadeira.
i=5;
while ( i > 0 ) {i --;}
// as chaves aqui podiam ter sido omitidas, visto
// que so existe uma sentenca.
System.out.println("Agora i vale 0");
Loop For
É um loop mais "fixo", permite executar o conjunto de sentenças um número determinado de vezes fixado ao princípio do loop e funciona, portanto como um contador. Sua expressão geral seria como a que segue:
for (iniciacao, expressaoBooleana, incremento) {conjuntoDeSentencas;}
for (int i= 0; i <10; i++){
System.out.println("o valor de i eh: " + i);
}
Este exemplo nos mostraria pela tela dez linhas nos dizendo o valor crescente de 'i' de zero a nove.
Loop do while
É igual ao loop while anteriormente visto, só que agora se avalia a expressão ao final do loop, portanto esse conjunto de sentenças se executa pelo menos uma vez:
i=5;
do
{i --;} // as chaves aqui podem ser omitidas visto
while ( i > 0 ) // que so existe uma sentenca.
Este exemplo similar ao anterior para o loop while se diferencia no que executa uma vez mais as sentenças em seu corpo visto que comprova a condição posteriormente.
Sentenças Break, Continue e Return
Antes falamos da sentença Break com as bifurcações switch. Pois bem, esta sentença tem um valor mais amplo. A sentença break nos permite sairmos do bloco de sentenças (fechado entre chaves) ou do loop que estamos executando, sem executar as sentenças que restam para o final ou as restantes repetições do loop. Por exemplo:
i=5;
do{
i --;
if (i == 3) break;
} while ( i > 0 )
// Neste exemplo quando i tiver o valor 3
// se abandonará o loop.
A sentença Continue só é válida para loops, serve para não executar as sentenças que restam para a finalização de uma repetição desse loop, continuando depois com as seguintes repetições do loop. Por exemplo:
i=5;
do{
if (i == 3) continue;
i --;
}while ( i > 0 )
// Neste exemplo quando i tiver o valor 3
// se abandonará a repetição e portanto o
// loop não terá fim visto que não se
// executaria a sentença de decremento.
Tanto a sentença continue como break podem ser utilizadas com etiquetas para poder discriminar os loops que querem afetar no caso de que se encontre um loop aninhado. Por exemplo:
Loop1:
for (int i=0; i<10; i++){
loop2:
for (int j=0; i<10; j++){
if (j==5) {break loop2;}
}
} // quando j chega a 5 o loop2 deixa de
// executar-se até a seguinte repeticao
// dol bloco1
Por último vemos a sentença return. Esta sentença nos permite finalizar também um conjunto de sentenças, com a peculiaridade esta vez de que também finaliza o método ou função no qual se encontre. No caso de que queiramos devolver um valor desde essa função ou método, devemos coloca-lo a seguir de return. Por exemplo:
void funcaoExemplo(){
int i=0;
while (i < 100){ //esta absurda funcao nos devolve
i++; //ao chamar o valor 100 como
} //podemos comprovar
return i;
}
Bloque Try - Catch - Finally
Trata-se de umas sentenças de controle relacionadas com o tratamento de exceções, não tem nada a ver com as estruturas de controle de loop, vistas nesse artigo, salvo porque é também uma estrutura de controle. Será comentada a seguir, embora seja vista com exemplos mais adiante.
O tratamento de exceções se utiliza para detectar erros quando se executam nossos programas e trata-los do modo que nós quisermos. Os erros caçados por um sistema de tratamento de exceções não bloqueiam o programa e o manejo de exceções nos permite fazer coisas quando esses erros ocorrem.
Por agora só é bom saber que existem, já as veremos em outro momento.