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