25
Controle de Execução: Iteração 1 Laboratório de Programação Dr. Italo Santiago Vega Curso de Graduação Ciência da Computação Pontifícia Universidade de São Paulo Copyright © 1998-2004, Italo S. Vega Copyright c 1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 1 - pucsp.brdcc-lp/2004/c22/pucsp-lp-c22-2004-10-slide.pdf · Controle de Execução: Iteração 16 Tarefa 10.3.5 Crie os objetos s:Intervalo e

  • Upload
    dohanh

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

Controle de Execução: Iteração 1

Laboratório de Programação

Dr. Italo Santiago Vega

Curso de GraduaçãoCiência da Computação

Pontifícia Universidade de São PauloCopyright © 1998-2004, Italo S. Vega

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 1-1

Semana Data Tópico

1 2004-02-18 Apresentação: algoritmo e computação. Bibliografia básica.Critérios de Avaliação.

2 2004-02-25 Recesso: Carnaval3 2004-03-03 Organização de programas. Ambiente de programação (Java).4 2004-03-10 BlueJ: apresentação e computação com objetos.5 2004-03-17 Variáveis e valores. Expressões com operações aritméticas.6 2004-03-24 Representação de computações. Entrada e saída. Seleção sim-

ples.7 2004-03-31 Seleção dupla.8 2004-04-07 Seleção múltipla.

I 9 2004-04-14 Repetição.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 2

Conteúdo

1 Repetição de Rotas 3

2 Repetição com Contador 5

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 3

1 Repetição de Rotas

A bifurcação de uma rota também pode ser utilizada para representar o caso onde um

determinado trecho deve serrepetido. Duas estruturas de repetição de passos

computacionais são comumente encontradas nos programas: repetição comcontadore

repetição comsentinela.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 4

Repetição com contador A estrutura de repetição com contador descreve um padrão

de execução de rotas onde um determinado trecho é repetidon vezes. O valor de uma

variável especial, conhecida porvariável-contador, ou simplesmente contador, é

sucessivamente comparado comn; quando o valor do contador se iguala an, a

repetição é encerrada. Desta forma, acondição de paradada repetição é denotada por

uma expressão (lógica ou relacional) envolvendo o valor do contador.

Repetição com sentinela A estrutura de repetição com sentinela descreve um padrão

de execução de rotas onde a repetição de um trecho é controlada por uma condição

estabelecida sobre umvalor-sentinela. A condição de parada da repetição é denotada

por uma expressão (lógica ou relacional) envolvendo o sentinela.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 5

2 Repetição com Contador

Um típico mapa de execução representando a repetição de uma seqüência de passos de

computação controlada por uma expressão envolvendo o valor de uma

variável-contador é mostrado na Figura a seguir.

a

i ← 0

bi++

[ i < n ] 2) Condição de entrada no ciclo.

c

1) Valor inicial do contador:

3) Atualização do contador:

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 6

O trecho do mapa correspondente à seqüência de passos a serem repetidos também é

conhecido porciclo. No caso da Figura anterior, ocorremdentrodo ciclo:

• (i) a avaliação da condição de entrada no ciclo, envolvendo o valor do contadori ;caso o valor do contador não tenha atingido o total de repetições:

• (ii) execução do passo de computação identificado porb, e

• (iii) atualização do valor do contadori .

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 7

Em relação à variável-contador, três pontos importantes são destacados neste mapa:

abbbbbbbbbbbbbbbbbcddddddddddddd

1) Definição do valor inicial da

variável-contadori : neste caso, o valor

inicial do contadori é definido comozero.

2) Condição de entrada no ciclo: “valor do

contador menor do que o valor limite

(denotado porn)”.

3) Atualização do contadori : neste caso,

incrementa-se o valor dei em uma unidade.

eeeeeeeeeeeeefggggggggggggggggghCopyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 8

No caso do mapa proposto, tem-se:

// trecho que passa por a

for( int i = 0; i < n; i++ ) {

// trecho que passa por b

}

// trecho que passa por c

Total de repetições do ciclo Em função destes elementos, pode-se determinar a

quantidade de repetições do trecho que cruza o passob. No caso deste mapa, supondo

n >= 0, o trecho será repetidon vezes.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 9

Exemplo 10.1 A escrita do valor"b" no monitor do computador por três vezes, pode

ser representada pelo mapa apresentado na Figura a seguir.

i ← 0

System.out.println( “b” )i++

[ i < 3 ]

main

1) Valor inicial do contador:

2) Condição de entrada no ciclo.

3) Atualização do contador:

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 10

Em termos de Java, o método poderia ser escrito como:

public class Repetidor {

public void repetirB {

for( int i = 0; i < 3; i++ ) {

System.out.println( "b" );

}

}

}

Esta codificação faz uso da variável-contadori , que inicia o ciclo com valor0.

Quando o valor desta variável for igual a3, o ciclo de passos é encerrado e a

computação termina. O ciclo contém dois passos: (1) apresentação do valor’b’ e (2)

incremento do valor da variável-contadori . ¨

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 11

Exercício 10.1 REPETIÇÃO SIMPLES

Tarefa 10.1.1 Crie o projeto ex10.1.

Tarefa 10.1.2 Crie a classeRepetidor , conforme mostrado no exemplo

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 12

Exercício 10.2 SOMATÓRIA DE n NÚMEROS Considere o problema de

calcular a soma dos primeirosn números, onde o valor den é estabelecido pelo

usuário no início da execução da computação:Σi : 1..n = 1+2+ ...+n.

Tarefa 10.2.1 Proponha um mapa contendo os passos de uma computação que

resulte no cálculo desta somatória de números.

Tarefa 10.2.2 Refaça o mapa proposto acrescentando os contextosIntervalo e

Somatoria :

• Intervalo – contém uma variáveln que armazena o limite superior do

intervalo.

• Somatoria – oferece o métodocalcular():int , que retorna a somatória

dos números do intervalo1.. s.n , sendos uma referência para um objeto da

classeIntervalo .

Tarefa 10.2.3 Crie o projeto ex10.2.

Tarefa 10.2.4 Crie as classesIntervalo eSomatoria , conforme o mapa de

execução elaborado anteriormente.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 13

Tarefa 10.2.5 Crie os objetoss:Intervalo e f:Somatoria . Façaf se referir

ao objetos . Envie a mensagems.mudarSuperior(10) seguida da mensagem

f.calcular() . O resultado correspondeΣi : 1..10= 1+2+ ...+10?

Tarefa 10.2.6 Preencha a seguinte tabela com a ajuda do programa:

n Somatória

20

30

100

Tarefa 10.2.7 Qual o resultado da computação quandon =−10? Como você

analisa tal situação?

Tarefa 10.2.8 Altere o mapa de modo a mostrar, também, a média destes primeiros

n números. Estes passos devem estar no contextoSomatoria .

Tarefa 10.2.9 Altere a implementação em Java, de modo a obter-se o efeito descrito

por este novo mapa. Quais os resultados da aplicação quando o usuário digita10para o

valor den? São os mesmos valores mostrados na execução da tarefa anterior?

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 14

Tarefa 10.2.10 Qual mensagem é emitida pelo compilador sobre a variável-contador

i , caso o método de cálculo da média contenha:

// Passos iniciais

for( int i = 1; i <= s.n; i++ ) {

// Acumulo a somatória do i-ésimo número

// na variável "somatoria".

}

// Mostro o total da somatória

System.out.println( "Media= " + (somatoria/i) );

// Passos complementares

Qual alteração faria este trecho de código compilar e produzir o resultado correto?

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 15

Exercício 10.3 SOMATÓRIA DOS NÚMEROS DE UM INTERVALO Considere oproblema de calcular a soma dos números de um intervalo:Σi : inferior ..superior = inferior +(inferior +1)...+ superior , supondoinferior ≤ superior .

Tarefa 10.3.1 Proponha um mapa contendo os passos de uma computação queresulte no cálculo desta somatória de números.

Tarefa 10.3.2 Refaça o mapa proposto acrescentando os contextosIntervalo eSomatoria :

• Intervalo – armazena nas variáveisinferior:int esuperior:int oslimites do intervalo de inteiros a serem processados.

• Somatoria – oferece o métodocalcular():int , que retorna a somatóriados números do intervalos.inferior .. s.superior , sendos umareferência para um objeto da classeIntervalo .

Tarefa 10.3.3 Crie o projeto ex10.3.

Tarefa 10.3.4 Crie as classesIntervalo eSomatoria , conforme o mapa deexecução elaborado anteriormente.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 16

Tarefa 10.3.5 Crie os objetoss:Intervalo e f:Somatoria . Façaf se referir

ao objetos . Envie a mensagems.mudarInferior(1) , seguida de

s.mudarSuperior(10) , seguida da mensagemf.calcular() . O resultado

correspondeΣi : 1..10= 1+2+ ...+10?

Tarefa 10.3.6 Preencha a seguinte tabela com a ajuda do programa:

inferior superior Somatória

1 10

5 10

−5 6

6 −5

Tarefa 10.3.7 Altere o mapa de modo a mostrar, também, amédiados números de

um particular intervalo.

Tarefa 10.3.8 Altere a implementação em Java, de modo a obter-se o efeito descrito

por este novo mapa.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 17

Tarefa 10.3.9 Preencha a seguinte tabela com a ajuda do programa:

inferior superior Média

1 10

5 10

−5 6

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 18

Exercício 10.4 INVESTIMENTO Um investidor fez um investimento de

$1000,00, com retorno de5%aa. O saldo do investimento no final don-ésimo ano

pode ser calculado por:

q = p(1+ i)n

onde:

• q é o saldo no final do anon

• p é o investimento inicial

• i é a taxa de retorno anual

• n é o total de anos do investimento

Tarefa 10.4.1 Assumindo que todo o retorno é reinvestido no final de cada ano,

proponha um mapa de execução que calcule e mostre o saldo em conta no final de cada

ano, durante os primeirosn anos.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 19

Tarefa 10.4.2 Refaça o mapa proposto acrescentando os contextos

AplicacaoFinaceira e Investidor :

• Investidor – armazena na variávelp:double o valor do investimento, e na

variáveln, o total de anos do investimento. A armazenagem deve ser feita pela

execução do métodoaplicar(novoP:double, novoN:double):void .

• AplicacaoFinaceira – oferece o métodocalcular():double , que

retorna o valor do saldoi.p ao final doi.n anos de investimento, supondo quei

é uma referência para um objeto da classeInvestidor . A taxa de retorno,

necessária para o cálculo do saldo, deve ser armazenada na variáveli:double .

Tarefa 10.4.3 Crie o projeto ex10.4.

Tarefa 10.4.4 Crie as classesInvestidor eAplicacaoFinaceira ,

conforme o mapa de execução elaborado anteriormente.

OBS:xy pode ser calculado, em Java, com:Math.pow(x,y) .

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 20

Tarefa 10.4.5 Crie os objetosze:Investidor ea:AplicacaoFinanceira .

Façaa] se referir ao objeto [[ze . Envie a mensagem

ze.aplicar(1000.00, 10) , seguida dea.calcular() . Qual o resultado

obtido?

Tarefa 10.4.6 Preencha a seguinte tabela:

p n i q

$100.0 1 1%

$1000.0 2 5%

$−100.0 1 1%

$100.0 −2 5%

Faça uma análise dos resultados obtidos.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 21

Exercício 10.5 PADRÕES DEDESENHO Para cada um dos seguintes padrões

de estrelas, proponha ummapa de execução, contextos de execuçãoapropriados e a

respectivaimplementação em Java, de modo que os padrões sejam apresentados no

monitor do computador. (Inspirado em Lewis & Loftus,Java Software Solutions:

Foundations of Program Design, 2001, Addison-Wesley.)

Tarefa 10.5.1

*********

********

*******

******

*****

****

***

**

*

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 22

Tarefa 10.5.2*

**

***

****

*****

******

*******

********

*********

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 23

Tarefa 10.5.3*

***

*****

*******

*********

*******

*****

***

*

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004

Controle de Execução: Iteração 23-1

Semana Data Tópico

1 2004-02-18 Apresentação: algoritmo e computação. Bibliografia básica.Critérios de Avaliação.

2 2004-02-25 Recesso: Carnaval3 2004-03-03 Organização de programas. Ambiente de programação (Java).4 2004-03-10 BlueJ: apresentação e computação com objetos.5 2004-03-17 Variáveis e valores. Expressões com operações aritméticas.6 2004-03-24 Representação de computações. Entrada e saída. Seleção sim-

ples.7 2004-03-31 Seleção dupla.8 2004-04-07 Seleção múltipla.

I 9 2004-04-14 Repetição.

Copyright c©1998-2004, Dr. Italo S. Vega Abril de 2004