Gramática do Java e programação 4
Objetivo desta aula:
Apresentar os comandos de repetição.
links citados durante a aula
Especificação da linguagem Java
Tutorial sobre while e do..while
Introdução
Estes comandos fazem um teste e repetem o bloco de comando enquanto o teste resultar verdadeiro.
A sintaxe de while é:
while (<expr>) {
// bloco de código a repetir enquanto <expr> seja verdadeiro
}
A sintaxe de do..while é:
do {
// bloco de código a repetir enquanto <expr> seja verdadeiro
} while (<expr>);
As duas construções são quase idênticas. Como a execução é sequencial, o primeiro testa e executa, logo, se o teste na primeira construção resultar false - ele não executa nenhuma vez. Na segunda executa e depois testa, logo, executará ao menos uma vez.
Em geral <expr> contém ao menos uma variável que tem seu valor mudado dentro do bloco de código.
Exemplos
System.out.println ("Iniciando loop");
int i=0;
while (i<10) {
System.outlprintln (i);
i++; // operação de pós-incremento equivale a i=i+1;
}
System.out.println ("Iniciando loop");
int i=0;
do {
System.out.println (i);
i++;
} while (i<10);
O passo do incremento pode ser qualquer, inclusive pode ser um decremento, a condição não precisa ser uma contagem, por exemplo:
System.out.println ("Iniciando loop");
double num=5521;
do {
int r=num%2;
num=num/2;
System.out.print (r);
} while (num>0);
O comando for
for (<exprInit>;<exprTeste>;<exprInc>) {
// bloco de código a repetir
}
Equivale a:
<exprInit>;
while (<exprTeste>) {
// bloco de código a repetir
<exprInc>;
}
Comandos aninhados
Todos esses comandos podem ser usados dentro dos blocos de código que são repetidos, resultando em blocos aninhados. Por exemplo:
class Conta {
public static void main (String[] args) {
int d0, d1;
for (d1=0;d1<10;d1++) { // quantas vezes esta linha é executada?
for (d0=0;d0<10;d0++) {
System.out.println (d1 + " " + d0); // quantas vezes esta linha é executada?
}
}
}
}
Exercicios
Imagine um tabuleiro de batalha naval onde as coordenadas (linha e coluna) sejam dados como d0 e d1 conforme o código em "comandos aninhados". O tabuleiro é 10x10. O código acima percorre o tabuleiro todo? Qual é a direção do percurso? Escreva o código para percorrer o tabuleiro em zigue-zague na horizontal e na vertical.
Escreva o código com mesmo funcionamento usando while e do..while
A soma dos termos da sequência harmônica alternante (-1)^(i+1)/i para i indo de 1 a infinito resulta em ln(2), aproximadamente 0.7. Escreva o código que calcula essa série até o termo i=100. Note que a conta tem que ser feita usando tipo double.
A soma dos termos da sequência (-1)^i/(2*i+1) para i indo de 1 a infinito resulta em pi/4, aproximadamente 0.8. Escreva o código que calcula essa série até o termo i=100. Note que a conta tem que ser feita usando tipo double.
Observações: série é o nome dado à soma dos termos de uma sequência. Se precisar de mais informação, comece pela Wikipedia.
Nenhum comentário:
Postar um comentário