Quando é interessante usar o do…while e o switch?
O Java possui um artifício chamado labeled loops; pesquise sobre eles.
O que acontece se você tentar dividir um número inteiro por 0? E por 0.0?
[quote=Luciano Angelo Guimarães]Quando é interessante usar o do…while e o switch?
O Java possui um artifício chamado labeled loops; pesquise sobre eles.
O que acontece se você tentar dividir um número inteiro por 0? E por 0.0?[/quote]
Não fazemos lição de casa.
É pra mim pesquisar sobre labeled loops?
Do while, quase nunca. O ideal é deixar o código inline, que fica mais rápido e legível. Essa otimização é chamada de loop unrolling:
E deve ser usada sempre que possível.
Do contrário dos loops, o switch deve ser usado em todas as situações possíveis, especialmente, removendo o polimorfismo. O polimorfismo não deixa claro que método está sendo chamado, do contrário do switch, que deixa o código explícito.
Compare, aqui não sei o que está sendo chamado:
Aqui sim:
switch (arquivo.tipoCalculo()) {
case MEDIA:
//Faz o calculo da média
case MEDIA_PONDERADA:
//Faz a média ponderada
}
Labeled loops são formas de dar nomes aos loops. Assim o código não fica impessoal:
pedrinho:
for (int i = 0; i < 10; i++) {
marcelo:
for (int i = 10; i < 100; i++) {
break pedrinho; //Marcelo vai quebrar pedrinho na saída.
}
}
Labeled loops não são recomendados já que estimulam o uso de do while e for, como vimos, graças ao padrão unrolled loops, não são recomendados.
Quanto menor o divisor, maior o resultado. Exemplo:
1 / 5 = 0.2
1 / 10 = 0.1
1 / 0.1 = 10
1 / 0.05 = 20
Portanto, se você dividir um número por 0.0, vai obter um número extremamente grande de resultado, capaz de resolver problemas como a fome no mundo, ou a falta d’agua em Mariana. Divisão por zero é a VERSÃO COMPUTACIONAL DO MILAGRE DA DIVISÃO DOS PEIXES! ;D
Só tem um detalhe. Esse número não pode ser o próprio 0. O número 0/0 cria um vortex cósmico, capaz de engolir o universo. Programadores de Fukushima fizeram isso na Usina Nuclear, e olha o desastre que deu.