sábado, 5 de setembro de 2009

Laços(Loops), Controle de Loops

Oque é um laço?
É uma interação contínua(no bloco_de_codigo) através da expressão_booleana que é feita enquanto ela for true. Como se fossem varios if em seguida, loop = laço.
*Lembre-se que a escrita de instruções é feita somente no bloco_de_codigo


Loop while:


while
(
expressao_booleana){

bloco_de_codigo

}// Fim do bloco_de_codigo

*boolean_expression
- É a junção de operadores Relacionais e Condicionais ou uma variavel booleana, qualquer expressão que resulte em um booleano. Essa expressão é avaliada antes de toda interação com o bloco_de_codigo novamente

*bloco_de_codigo
- Um conjunto de instruções que são feitas após a avaliação da boolean_expression

- É um laço de nenhuma ou mais interações, e a avaliação da boolean_expression é feita antes do bloco_de_codigo de cada interação.

Vejamos como é um loop:


Clique na imagem para ampliar
Alinhamento de blocos while(É um while dentro do outro):

while(expressao_booleana1){

bloco_de_codigo1

while(
expressao_booleana2){

bloco_de_codigo2

}//fim do laço interno

bloco_de_codigo1

}//fim do laço externo

*bloco_de_codigo1 - São blocos de código referentes ao laço externo
*bloco_de_codigo2 - São blocos de código referentes ao laço interno

Após a interação do primeiro laço, ele aguarda o segundo(interno) terminar para poder prosseguir.
Vejamos oque acontece:

Clique na imagem para ampliar


Constutor do laço for:

Trabalha do mesmo jeito que o loop while, So que o loop for é usado para um predefinido numero de vezes de interação, ele também é um laço de nenhum ou mais vezes mais é centralizado na estrutura de valores que pode ter, vejamos sua declaração:


for(inicializacao[,inicializacao] ; expressao_booleana ; update[,update]){

bloco_de_codigo

}

*inicializacao[,inicializacao] - Inicializa variaveis que serão usadas atraveś do laço, é Usada somente a primeira vez que o laço é processado, mais de uma inicialização deve ser separada por vírgula.
*expressao_booleana - É a junção de Operadores Relacionais e/ou Condicionais que gerem um valor boolean como resultado, é avaliado após cada interação do loop
*update[,update] - É a parte do update das variáveis, É executada depois do bloco_de_codigo porem antes da expressao_booleana. Separe os updates por vírgula.
*bloco_de_codigo - São linhas de instrução que são executadas após cada interação do loop, se o resultado da expressao_booleana for true.

É um loop de nenhuma ou mais interações e, a expressao_booleana é processada antes do bloco_de_codigo


Loops for alinhados(ou seja for dentro de for):

for(inicializacao[,inicializacao] ; expressao_booleana ; update[,update]){

bloco_de_codigo1

for(inicializacao[,inicializacao] ; expressao_booleana ; update[,update]){

bloco_de_codigo2

}//fim do for interno

bloco_de_codigo1

}//fim do for externo

É a mesma coisa que while por isso não colocarei o desenho.



Constutor do laço do/while:
É uma interação de uma ou mais vezes, a boolean_expression é processada após o bloco_de_codigo.Nesse loop o bloco_de_codigo é processado ao menos uma vez.

do
{

bloco_de_codigo


}while(boolean_expression);


*bloco_de_codigo -
O conjunto de instruções que serão processadas, SÂO PROCESSADAS AO MENOS UM VEZ.
*boolean_expression -
É a junção de Operadores Relacionais e/ou Condicionais que gerem um valor boolean como resultado, é avaliado após cada interação do loop.
- O ponto e virgula(;) é obrigatório. while(boolean_expression); é Obrigatório.


Vejamos como fica:




Clique na imagem para ampliar






Alinhando do/while:

do{

bloco_de_codigo1

do{

bloco_de_codigo2

}while(boolean_expression2);

bloco_de_codigo1

}while(boolean_expression1);


Controle de Loop:


- break; -> Sai prematuramente de um loop, de um bloco rotulado ou de um switch
- continue; -> Pula a instrução e manda para a avaliação do boolean_expression

Exemplos:

do{
x++;

if(x ==2)
continue;

System.out.println(x);

}while(expressao_booleana);

Todas as instruções acima, e break podem ser usados para controle de LAÇOS Alinhados.




Como Nomear Laços Alinhados?
Cria-se um label para o laço, um label é criado através de:

identificador:

Como usar controle de Loop com Alinhamento?

instrução label;




Exemplo:

deFora: //Isso é um Label
do{

bloco_de_codigo

do{

if(condicao)
break deFora; //instrução label; Faz com que o loop externo termine, conclusivamente o //interno tambem

}while(boolean_expression);

bloco_de_codigo

}while(boolean_expression);

Podem ser qualquer das instruções de controle de laço, continue,break.




É hora da revisão:
- Loop while,É um laço de nenhuma ou mais interações, e a avaliação da boolean_expression é feita antes do bloco_de_codigo de cada interação.

- Loop for, É um laço de nenhuma ou mais interações, e a avaliação da boolean_expression é feita antes do bloco_de_codigo de cada interação, o update é feito após cada interação.

- Loop do/while, É um laço de UMA ou mais interações, e a avaliação da boolean_expression é feita depois do bloco_de_codigo de cada interação


- O ponto e virgula(;) após o while do, - do while - ... while(boolean_expression); é Obrigatório.

Quando usar eles?
-> while - Nenhuma ou mais interações e eu não sei a quantidade certa que poderá haver de interações

-> do/while - Uma ou mais interações e eu não sei a quantidade certa que poderá haver de interações(o bloco_de_codigo é executado ao menos uma vez)

-> for - Nenhuma ou mais interações e eu sei a quantidade certa que havera de interações, Consigo montar uma estrutura.

- Criando Label posso dar nomes a laços Alinhados(ou seja laços dentro de laços) somente coloque o nome antes da declaração do laço e depois dois pontos(isso é chamado de label em java ou seja, identificador: )

- Apos criado o label do laço(identificador: antes do Loop) você pode de dentro do laço interno terminar o laço externo, usando:
instrução label;

Onde instrução é a instrução que você usará no laço, pode ser: break,continue
Onde label é o nome que você deu a seu laço.

- A escrita de instruções só pode ser feita aonde esta escritod bloco_de_codigo isso quer dizer:

if(expressao_booleana){

//bloco_de_codigo

}

int y = 0;

else{

//bloco_de_codigo

}

Isso da erro de compilação, a declaração de y, (int y = 0;) So pode ser feita dentro do bloco_de_codigo.


Curiosidade:
- Em bytecode um laço é um "conjunto de ifs"

Bom Somente isso de loop Hoje!!!
CYA DUDES!!

Nenhum comentário:

Postar um comentário