E aí pessoal! Eu acabei de aprender a usar o while e do while, mas não consegui entender qual a diferença entre eles e quando devo usar um e quando devo usar o outro e tal. Se alguém puder me ajudar aí eu agradeço. Abraços.
Ola cara, beleza?
Vamos lá. Quando se usa o “while”, você garante que, antes mesmo de rodar o código que está dentro da estrutura de repetição, exista uma verificação para entrar - dentro do parênteses. Já no caso do “do…while” não. O código vai rodar ao menos uma vez e, ao final, há uma verificação para ver se deve rodar novamente.
Esssa é a grande diferença, agora só aplicar dependendo da situação.
[code]
Integer num = 0;
do {
System.out.println(“Código que será executado antes da condição ser satisfeita.”);
System.out.println(“O que resulta em um loop infinito.”);
} while (num < 10);
while (num > 10) {
System.out.println("Código que será executado apenas se a condição for satisfeita.");
}[/code]
Aaah entendi agora, muito obrigado.Acho que com a prática eu vou pegando a manha e só mais uma pergunta, qual dos dois eu utilizo mais?
Depende do caso, como o colega disse, se voce quiser validar antes da execução do bloco use o while, se quiser rodar o bloco e depois validar, use o do while.
Em relaçao aos laços de repetição prefiro sempre o while
Na maioria dos casos você irá utilizar o while, não é muito comum utilizar o do while nem recomendado, isso para esses dois comandos de repetição. Mas tudo depende de cada situação.
Meu professor de lógica (quando eu estava iniciando em algoritmo) passou três estruturas de repetição (para, enquanto e faca enquanto) em uma só aula, justamente para que nenhum aluno se apegasse a determinada estrutura e não achasse utilidade para as outras. Mesmo assim só com o treino você consegue ver qual utilizar eficazmente.
Em geral a estrutura para (for) acaba (na maioria das vezes) sendo mais eficaz, mas como estamos falando de enquanto (while) e faça enquanto (do while) segue um exemplo de um menu com do while (para mostrar uma de suas utilidades)
do{
escreva("Escolha: 1-somar 2-subtrair 3- multiplicar 4-dividir 9-sair");
leia(opcao);
switch(opcao){
case 1:
//somar
break;
case 2:
//subtrair
break;
case 3:
//multiplicar
break;
case 4:
//dividir
break;
default:
//opção invalida
}
while(opcao!=9);