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

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

Transcript of Programação I Aula 5 (Instruções de Repetição) Prof. Gilberto Irajá Müller Última...

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