• Nenhum resultado encontrado

Estruturas de Repetição

N/A
N/A
Protected

Academic year: 2022

Share "Estruturas de Repetição "

Copied!
37
0
0

Texto

(1)

Introdução à Programação

Estruturas de Repetição

(2)

Repetição de Comandos…

int somatorio(int n) { int soma = 0;

int valor = 0;

Faz esta seqüência de comandos n

vezes

= n

i

i

0

int valor = 0;

soma = soma + valor;

valor++;

soma = soma + valor;

valor++;

soma = soma + valor;

...

}

vezes

E haja

copy&paste!

(3)

Tópicos da Aula

Hoje, aprenderemos a usar estruturas de repetição para programas mais complexos

Necessidade de estruturas de repetição Apresentação do conceito de laço (loop) O comando for

O comando while O comando while

O comando do-while

Diferenças entre os comandos de repetição

Veremos também, como podemos alterar o fluxo de laços

Comandos break e continue

(4)

Necessidade de Estruturas de Repetição

Na resolução de problemas em programação, freqüentemente, precisamos repetir uma mesma seqüência de comandos várias vezes Na maioria dos casos, não sabemos de antemão quantas vezes a seqüência de comandos será repetida

comandos será repetida

A linguagem de programação deve fornecer uma estrutura (comando) que permita a execução repetida de mesma seqüência de comandos

Evita esforço do programador

Permite que o programador não tenha que saber quantas vezes o comando será executado

(5)

Estruturas de Repetição

Permite repetir diversas vezes um comando ou seqüência de comandos

Cada repetição de um comando ou seqüência de comandos é denominada de iteração

São geralmente conhecidos como loops(laços) Da mesma forma que comandos condicionais, são controladas por expressões booleanas

Java oferece 3 tipos de estruturas(comandos) de repetição:

O laço for O laço while

(6)

O Comando for

for (int i = 0; i < valor; i = i+1) corpo

Executa corpo um número específico de vezes: valor vezes

vezes: valor vezes

Neste exemplo, na primeira execução de corpo, o valor de i é 0

O valor de i é incrementado após cada execução de corpo

i pode ser acessada dentro de corpo, e deixa de existir após a execução do for

(7)

A Forma Geral do Comando for

inicialização e incremento podem ser praticamente quaisquer comandos

for(inicialização;condição;incremento) corpo

ser praticamente quaisquer comandos

condição pode ser qualquer condição booleana

inicialização deve inicializar a variável do for

incremento deve incrementar a variável

(8)

Fluxo de Controle do Laço for

condição avaliada inicialização

comando

truetruetrue true

incremento

false false false false

(9)

Examinando o Comando for

A A A

A inicialização é executada uma s é executada uma sé executada uma s

é executada uma só vezó vezó vezó vez antes do laço começar antes do laço começar antes do laço começar antes do laço começar

O O O

O comando éééé executado até que executado até que executado até que executado até que condição se tornar se tornar se tornar se tornar falsefalsefalsefalse

for ( inicialização ; condição ; incremento ) comando;

O O

O O incremento é executado ao fim de é executado ao fim de é executado ao fim de é executado ao fim de cada iteração

cada iteração cada iteração cada iteração

Cabeçalho do for

(10)

Entendendo o Comando for

int somatorio(int n) { int soma = 0;

for (int valor = 0; valor <= n; valor++) soma = soma + valor;

Variável

valor é inicializada com 0

soma = soma + valor;

return soma;

}

A cada iteração, valor é

incrementado em 1

Comando será realizado

enquanto valor for menor que ou igual a n

(11)

Entendendo o Comando for

int somatorio(int n) { int soma = 0;

for (int valor = 0; valor <= n; valor++) soma = soma + valor;

Se n for

menor do que 0, não

se executa o corpo do for

soma = soma + valor;

return soma;

} A variável

valor é

declarada na inicialização e só é acessível dentro do

corpo do for É executado

depois do for

(12)

Entendendo o Comando for

int somatorio(int n) { int soma = 0;

int valor;

MiniJavaSystem s;

s = new MiniJavaSystem();

for (valor = 0; valor <= n; valor++){

soma = soma + valor;

valor pode ser declarada fora do laço

soma = soma + valor;

s.println(“Soma Parcial:”+soma);

}

s.println(“Soma Total:”+soma) return soma;

}

Corpo do for pode ser

composto por bloco de

comandos

(13)

Modificando o Incremento do for

int somatorio(int n) { int soma = 0;

MiniJavaSystem s;

s = new MiniJavaSystem();

for (int valor = n; valor>= 0; valor--){

soma = soma + valor;

s.println(“Soma Parcial:”+soma);

valor agora é decrementado

s.println(“Soma Parcial:”+soma);

}

s.println(“Soma Total:”+soma) return soma;

}

(14)

Modificando o Incremento do for

int somatorioPares(int n) { int soma = 0;

int valor;

MiniJavaSystem s;

s = new MiniJavaSystem();

for (valor = 0; valor <= n; valor = valor + 2){

soma = soma + valor;

s.println(“Soma Parcial:”+soma);

s.println(“Soma Parcial:”+soma);

}

s.println(“Soma Total:”+soma) return soma;

}

valor agora é incrementado em 2

Pode-se colocar qualquer tipo de expressão na parte de incremento do comando for

(15)

Variações do Comando for

Cada expressão no cabeçalho de um laço for loop é opcional

Se a inicialização é omitida, nenhuma inicialização é feita

Se a condição é omitida, a condição é considerada sempre true e o laço continua para sempre (laço infinito)

Se o incremento é omitido, nenhuma operação é realizada ao final da iteração do

(16)

O Comando for sem Condição, etc.

for(;;valor++) corpo

for(;valor < n; valor++) corpo

Repetição infinita:

cuidado

corpo

for(;;) corpo

cuidado!

(17)

O comando while

Executa corpo várias vezes até que a while (expressãoBooleana)

corpo

Executa corpo várias vezes até que a avaliação da expressão retorne false

A expressão é avaliada de novo após cada execução de corpo

Não executa corpo nenhuma vez, se de início a avaliação da expressão retorna false

(18)

Fluxo de Controle do Laço while

condição avaliada

comando

truetruetrue

true falsefalsefalsefalse

(19)

int somatorio(int n) { int soma = 0;

int valor = 0;

while ( valor <= n ){

soma = soma + valor;

valor++;

Entendendo o comando while

Se n for

negativo, não se executa o corpo do while

valor++;

}

return soma;

}

do while

É executado quando o

while termina, quando a

(20)

int somatorio(int n) { int soma = 0;

int valor = 0;

while ( valor <= n ){

soma = soma + valor;

valor++;

Entendendo o comando while

Inicialização da variável de

controle é feita fora do laço

while valor++;

}

return soma;

} Incremento da variável

de controle é feita no corpo do laço while

(21)

int somatorio(int n) { int soma = 0;

int valor = 0;

while ( valor <= n ){

soma = soma + valor;

}

Laço Infinito com o Comando while

}

return soma;

}

Se valor não é

incrementado, este

comando será executado infinitas vezes

(22)

O Comando for e o Comando while

for(inicialização;condição;incremento) corpo

inicialização;

while(condição) { corpo;

incremento;

} equivale a ...

(23)

O Comando for e o Comando while

for(;;) corpo

while(true) { corpo;

} equivale a ...

(24)

do {

corpo

} while(expressaoBooleana)

O Comando do-while

Executa corpo, pelo menos uma vez, até que a avaliação da expressão retorne false A expressão é avaliada de novo após cada execução de corpo

(25)

true truetrue true

condição condição condição condição comando comando comando comando

Fluxo de Controle do Laço do-while

condição condição condição condição avaliada avaliadaavaliada avaliada

false false false false

(26)

int somatorio(int n) { int soma = 0;

int valor = 0;

do {

soma = soma + valor;

valor++;

Entendendo o comando do-while

Se n for

negativo, o corpo do do-while é executado pelo valor++;

} while ( valor <= n ) return soma;

}

executado pelo menos uma vez

26

É executado quando o do-while termina,

quando a expressão for false

Comportamento alterado: cuidado!

(27)

do {

corpo

} while(expressaoBooleana)

Os Comandos do-while e while

Equivalente a ...

corpo;

while(expressaoBooleana) corpo;

Equivalente a ...

(28)

Laços Aninhados

Laços podem ser aninhados da mesma forma que comandos condicionais

O corpo de um laço pode conter outro laço

Para cada iteração do laço externo, o laço Para cada iteração do laço externo, o laço interno é completamente executado

(29)

Laços Aninhados

int somatorioDoSomatorio(int n, int vezes) { int soma = 0, somatorio =0;

for (int valExt = 0; valExt < vezes; valExt++ ){

int valInt = 0;

while (valInt <= n) {

soma = soma + valInt;

valInt++;

valInt++;

}

somatorio = somatorio + soma;

}

return somatorio;

} A cada iteração do for,

o laço while é executado

(30)

Considerações sobre Laços

Os 3 tipos de laços são funcionalmente equivalentes

Portanto podem ser usados indiscriminadamente

O laço for é geralmente usado quando se sabe de antemão o número de vezes que sabe de antemão o número de vezes que queremos repetir um comando

Os laços for e while são executados 0 ou muitas vezes

O laço do-while é executado 1 ou muitas vezes

(31)

O Comando break

Forma Geral do comando break

Tem dois usos distintos

Para forçar o término de um laço de repetição (do-while, for ou while)

break;

ou while)

Para terminar um case do comando switch

Quando o comando break é encontrado dentro de um laço de repetição:

instrução é imediatamente finalizada

próxima instrução após a estrutura de repetição é executada

Deve ser usado com cautela

Reduz legibilidade

(32)

O Comando break

int somatorio(int n) { int soma = 0;

int valor;

MiniJavaSystem s;

s = new MiniJavaSystem();

for (valor = 0; ; valor++){

soma = soma + valor;

Este comando não será executado quando

valor = = n

soma = soma + valor;

if (valor == n) break;

s.println(“Soma Parcial:”+soma);

}

s.println(“Soma Total:”+soma) return soma;

}

(33)

O Comando continue

Termina a execução da iteração atual de um loop (for,while,do-while) e volta ao

continue

Forma Geral do comando continue

loop (for,while,do-while) e volta ao começo deste loop

Todos os comandos que seriam executados após o continue são descartados

(34)

Comando de Desvio - continue

Para os comandos while e do-while, o continue causa:

a realização imediata do teste da condição correspondente

continuidade do processo de repetição dependendo do resultado do teste

do resultado do teste

Para o comando for , o continue causa:

incremento da variável de controle do laço de repetição

execução do teste para verificação da condição

continuidade do processo de repetição dependendo do resultado do teste

(35)

O Comando continue

void imprimeNumerosAteCinco() { int valor;

MiniJavaSystem s;

s = new MiniJavaSystem();

for (valor = 0; valor <= 5; valor++){

if (valor == 4) continue;

continue;

s.print(valor + “ ”);

} }

Controle pula para o incremento e este comando não será executado quando

valor = = 4

A saída deste método será: 0 1 2 3 5

(36)

O Comando continue

void imprimeNumerosAteCinco() { int valor = 0;

MiniJavaSystem s;

s = new MiniJavaSystem();

while (valor <= 5){

if (valor == 4) continue;

continue;

s.print(valor + “ ”);

valor++;

} }

Controle pula para o teste e método tem execução infinita quando valor = = 4

36

A saída deste método será: 0 1 2 3 ...

laço infinito

(37)

Resumindo ...

Estruturas de Repetição

Necessidade de estruturas de repetição Conceito de laço (loop)

Tipos de laço em Java O comando for

O comando while O comando while

O comando do-while

Laços Aninhados

Diferenças entre os comandos de repetição

Comandos para alterar o fluxo de laços

break e continue

Referências

Documentos relacionados

– A expressão será true se a referência for do tipo de uma classe ou subclasse testada e false, caso contrário – Só pode ser usado com valores de tipo de referência – Só

Quais duas letras são colocadas no final de adjetivos curtos (com apenas 1

PREFEITURA MUNICIPAL DE ALBERTINA - MG. PRIMEIRO Termo Aditivo. Contratante: MUNICÍPIO DE ALBERTINA. Contratada: PNEU BOM EIRELI EPP, Aquisição de pneus,

Será devolvido ’true’ se a função existir e a expressão for válida, caso contrário será devolvido ’false’.

Sunny Cool Normal False Yes Rainy Mild Normal False Yes Sunny Mild Normal True Yes Overcast Mild High True Yes Overcast Hot Normal False Yes.. Rainy Mild High

A estrutura do roteiro em um produto hipermidiático exige a percepção de mais dois mo- mentos além da descrição das imagens e do áudio, especificamente: o design de interface

Não é recomendado true e false são variáveis

Portanto, uma Tru, ou True Ortofoto não mais se trata de um rearranjo de pixels de uma imagem, mas sim, da mosaicagem, patchwork, ou uma “colcha de retalhos” com a inserção