28
Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Embed Size (px)

Citation preview

Page 1: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Programação IAula 5

(Instruções de Repetição)

Prof. Gilberto Irajá MüllerProf. Gilberto Irajá Müller

Última atualização 24/3/2009

Page 2: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• As instruções de repetição permitem fazer com

que a execução de uma instrução (simples ou composta) seja repetida diversas vezes. Em Java existem três modalidades: while, for e do.

Page 3: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• while

Permite repetir uma instrução ou um bloco, enquanto uma dada condição se mantiver verdadeira.

Sintaxe:while (condição)

instrução;ou

while (condição) {instrução1;instrução2;

}

Page 4: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Inicialmente a condição é avaliada. Se der

resultado true (verdadeiro), a instrução é executada e a condição volta a ser avaliada. Enquanto a condição for true (verdadeira), esse processo se repete. Quando a condição for false, o controle saltará para a primeira instrução após o laço while.

Page 5: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Exemplo 5.1:

int i = 1;while (i <= 5)

System.out.println(i++);

Qual será a saída?

Page 6: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Exemplo 5.2:

Teclado t = new Teclado();double d = 0;int i = 1;while (i <= 5) {

d = t.leDouble();if (d > 0)

System.out.println(Math.pow(d, 2));i++;

}

Page 7: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• for

Permite repetir um ou vários comandos, dentro de um intervalo de valores, do início ao fim desse intervalo.

Sintaxe:for(expressão inicial; condição; expressão incremento)instrução;ou

for(expressão inicial; condição; expressão incremento){instrução 1;instrução 2;

}

Page 8: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• A instrução for equivale a uma instrução while

do tipo:while (condição) {

instrução;expressão incremento;

}

Page 9: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Exemplo 5.3:

for(int i = 1; i < 6; i++)System.out.println(i);

Qual é a saída do código acima?

Utilize o for para o exemplo 5.2.

Page 10: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• for com múltiplos componentes

Pode-se ter mais de uma expressão inicial, desde que separadas por vírgula. Esta construção não permite a declaração das variáveis de tipos de diferentes dentro do for.

Exemplo 5.4:int i = 0;double d = 0;for (i = 1, d = 10; i <= 5; i++ , d -=0.5)

System.out.println(i + " " + d);

QUAL É A SAÍDA DO CÓDIGO ACIMA?

Page 11: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Laços for aninhados

Acontece quando temos um for dentro do corpo de outro for.

Exemplo 5.5:for (int i = 1; i<=5; i++) {

for (int j = 1; j<=i; j++)System.out.print("* ");

System.out.println(“”);}

QUAL É A SAÍDA DO CÓDIGO ACIMA?

Page 12: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• do (...while)

É uma versão do laço while-do, mas difere porque a condição é testada no fim do laço, enquanto no while o teste ocorre no início do laço. Assim, o laço while pode executar zero vezes, enquanto o do executa pelo menos uma vez.

Page 13: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Sintaxe:

doinstrução;

while (condição);ou

do {instrução1;instrução2;

} while (condição);

Enquanto a condição for verdadeira (true), o laço será executado.

Page 14: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Exemplo 5.6:

int idade;Teclado t = new Teclado();do

idade = t.leInt("Informe a idade: ");while (idade <= 0);

Faça o exemplo 5.4 com a instrução do/while

Page 15: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Variáveis Locais

Há situações em que necessitamos usar uma variável auxiliar dentro de um método, que não pode ser uma variável de instância (atributo), nem um parâmetro.

• Podemos declarar variáveis locais que serão conhecidas somente dentro do método. Quando o método terminar seu processamento, a variável desaparecerá. É o caso das variáveis usadas nos exemplos anteriores para controlar as repetições.

Page 16: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Exemplo 5.7:

int i = 0;double salario = 500.0;

• Se declararmos uma variável dentro do for, ela não será reconhecida fora do laço for. Perceba a diferença entre os dois trechos a seguir:

Page 17: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetiçãodouble d = 0;for (d = 10; d > 0; d -= 0.5)

System.out.println(d);System.out.println (d);

for (double d = 10; d > 0; d -= 0.5)System.out.println(d);

System.out.println (d);

A variável “d” foi declarada fora do “for”. Portanto, terá vida útil nas instruções seguintes.

A variável “d” foi declarada dentro do “for”. Portanto, terá vida útil somente dentro do “for”.

A instrução ocasionará ERRO, pois não existe a variável “d”.

Page 18: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Escopo de Variáveis

O escopo de uma variável é o espaço do programa em que a referida variável é reconhecida. Java restringe o escopo da variável ao bloco onde foi declarada. Assim, quanto ao escopo, as variáveis se dividem em:• Atributo privado – seu escopo é a classe toda• Parâmetro – seu escopo é o método ou o construtor

onde foi declarado• Variável local – seu escopo é o método, ou o construtor,

ou o for/while/do, ou o bloco de código onde foi declarada

Page 19: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Vida útil das variáveis

É o espaço de tempo que vai da alocação de memória para a variável até a sua eliminação (liberação deste espaço de memória), durante a execução de um programa:• Atributo – alocação quando o objeto é instanciado e

eliminação quando o objeto é destruído• Parâmetro – alocação quando o método ou construtor

onde foi declarado é chamado e eliminação quando o método ou construtor termina sua execução

• Variável local – alocação quando o método, construtor, for/while/do ou bloco de código onde ela foi declarada inicia a execução e eliminação ao término desta execução

Page 20: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Contadores e Acumuladores

O método a seguir lê do teclado diversas idades de pessoas parando quando for lida uma idade negativa ou nula. O método calcula e devolve a média das idades lidas, ou zero, se nenhuma idade positiva for lida.

Page 21: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetiçãopublic int calculaMediaIdades() {

// soma, conta e idade são variáveis locaisint soma = 0;int cont = 0;Teclado t = new Teclado();int idade = t.leInt("Digite uma idade(0 interrompe): ");while (idade > 0){

soma = soma + idade;cont++;idade = t.leInt("Digite uma idade(0 interrompe): ");

}if (cont > 0) // este teste é para evitar a divisão por zero

return soma / cont;else

return 0;}

Page 22: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Instruções de Repetição• Qual é a variável “contador”?

• Qual é a variável “acumulador”?

• Um contador executa uma tarefa de contagem de alguma grandeza (no caso, idades válidas digitadas).

• Um acumulador executa uma tarefa de soma de alguma grandeza (no caso, idades válidas digitadas).

• Um contador recebe incrementos constantes.• Um acumulador recebe incrementos variáveis.

Page 23: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Métodos• Exercício 5.8

Escreva um método Java que recebe a altura n e devolve um String com o seguinte triângulo (use o caractere de escape \n para indicar o salto de linha):12 23 3 34 4 4 4etc...

Dica: Tem dois for

Page 24: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Métodos• Exercício 5.9

Escreva um método que calcula o fatorial de um determinado valor inteiro. Passe como parâmetro esse valor inteiro!Dica: Tem for

Page 25: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Métodos• Exercício 5.10

Escreva um método que lê via teclado 8 números reais positivos e retorna o valor do maior deles. Validar os dados de entrada, pedindo outro número sempre que o usuário digitar um valor nulo ou negativo.Dica: Tem while, for e if

Page 26: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Métodos• Exercício 5.11

Escreva um método em Java de nome max, que recebe quatro números inteiros e retorna o valor do maior deles.

Dica: Tem if

Page 27: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Métodos• Exercício 5.12

Escreva um método em Java que lê do teclado um número qualquer e retorna a palavra Positivo, Negativo ou Nulo, conforme o caso.

Dica: Tem if... else if...

Page 28: Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última atualização 24/3/2009

Métodos• Referências bibliográficas

• http://inf.unisinos.br/~anibal• http://www.google.com.br