• Nenhum resultado encontrado

Laboratório de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Laboratório de Programação"

Copied!
21
0
0

Texto

(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

(2)

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: Carnaval

3 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.

(3)

Conteúdo

1 Seleção Entre Duas Rotas 3

(4)

1

Seleção Entre Duas Rotas

A bifurcação de uma rota também pode ser utilizada para representar o caso onde há a necessidade de se escolher uma dentre duas seqüências de responsabilidades de

interesse. A escolha pode ser representada por uma condição associada a cada ramo da bifurcação. Este padrão estrutural de mapas é mostrado na Figura a seguir.

[ condição = false ]

a

[ condição = true ]

b

A bifurcação da rota é

guardada por uma condição. Se a sua avaliação produzir o valor true, desvia para um trecho distinto do caso da produção de false.

Cada ramo da bifurcação encontra-se associado a uma expressão que representa a

condição. Quando a condição é válida, prossegue-se a computação por um ramo da

(5)

No caso do mapa da Figura a seguir, se o valor produzido pela avaliação da expressão for o valor true, a computação seguirá a rota que cruza a responsabilidade a.

Entretanto, se a condição for inválida, a computação seguirá o outro ramo da bifurcação, cruzando a responsabilidade b.

O diagrama sintático para a descrição de computações com seleção dupla é:

CmdSelecao if ² ± ¯ °( ² ± ¯ °Condicao ) ² ± ¯ °Comando else ² ± ¯ °Comando

Tais estruturas podem ser programadas segundo o padrão:

if( <condição> == true ) {

// seqüência de passos quando a condição for true

}

else {

// seqüência de passos quando a condição for false

(6)

Exercício 8.1

SELEÇÃO DE DUAS ROTAS

Tarefa 8.1.1 Crie o projeto ex8.1.

Tarefa 8.1.2 Crie a classe Tanque da seguinte forma:

public class Tanque { public int nivel;

public void obterNivel( int novo ) {

nivel = novo; }

}

Tarefa 8.1.3 Crie a classe Detetor da seguinte forma:

public class Detetor { public Tanque t;

public void detetar() {

String msg = "";

int dado = t.nivel; if( dado > 5 ) {

msg = "Acima do limite"; }

else {

(7)

} }

public void mostrar( String resultado ) {

System.out.println( resultado ); }

}

Tarefa 8.1.4 Crie os objetos d:Detetor e t:Tanque. Com mensagens apropriadas enviadas para estes objetos, preencha a seguinte tabela:

dado Monitor 4

5

6

Tarefa 8.1.5 O mapa de execução mostrado na Figura a seguir procura descrever computações realizadas por objetos das classes Tanque e Detetor.

(8)

obterNivel( ) [ dado > 5 ] mostrar( msg ) “Normal” “Acima do limite” dado:Int msg:String nivel:Int

A seqüência de responsabilidades do mapa corresponde à seqüência de ações descritas pelo código Java anteriormente proposto? Justifique a sua resposta.

Tarefa 8.1.6 Refaça o mapa da Figura a seguir, acrescentando os contextos

(9)

Exercício 8.2

ELSE PERDIDO (Adaptado de Deitel & Deitel, ex. 4.21, p. 153.) Considere a seguinte Aplicacao no diretório ex8.2:

public class Aplicacao { public int x;

public void mudarX( int novo ) {

x = novo; }

public int y;

public void mudarY( int novo ) {

y = novo; } public void f() { if( x < 10 ) if( y > 10 ) System.out.println( "*****" ); else System.out.println( "#####" ); System.out.println( "$$$$$" ); } }

Tarefa 8.2.1 Elabore um mapa de execução para a seqüência de responsabilidades produzida por esta aplicação. Suponha que os valores das variáveis x e y sejam

(10)

definidos antes do passo f().

Tarefa 8.2.2 Qual o resultado da execução desta aplicação quando x for igual a 9 e

y for igual a 11?

Tarefa 8.2.3 Qual o resultado da execução desta aplicação quando x for igual a 11 e

y for igual a 9?

Tarefa 8.2.4 Crie o projeto ex8.2.

Tarefa 8.2.5 Codifique a aplicação e verifique os resultados da sua execução.

Tarefa 8.2.6 Altere a lógica da computação de modo que, quando y <= 10, a aplicação mostre "#####" e "$$$$$".

(11)

Exercício 8.3

AVALIAÇÃO DE PESO Considere o problema de transformar o peso e a altura de um paciente em uma de três mensagens:

"Paciente com pouco peso" "Paciente com peso normal" "Paciente com muito peso"

O resultado deve ser gerado a partir de três informações numéricas: (i) o peso do paciente em kg, (ii) a altura do paciente em metros, e (iii) o código do sexo ( 0 para homens, 1 para mulheres).

Pode-se assumir que o peso “ideal” de um paciente é proporcional a sua altura, e que as mensagens de subpeso ou sobrepeso nao devem aparecer, a não ser em casos nos quais o peso do paciente difere do peso ideal por mais do que 10%.

Tarefa 8.3.1 Proponha um mapa de execução destacando passos importantes de uma computação que produza os resultados solicitados.

Tarefa 8.3.2 Organize os passos em contextos de execução apropriados. Considere, no mínimo, a existência do contexto p:Paciente para a execução de passos da

(12)

Tarefa 8.3.3 Crie o projeto ex8.3.

Tarefa 8.3.4 Codifique o mapa anteriormente elaborado.

Tarefa 8.3.5 Preencha a tabela com a ajuda do seu programa:

Peso Altura Sexo Mensagem

50 kg 1, 55 m 1 60 kg 1, 75 m 1 80 kg 1, 80 m 0 65 kg 1, 80 m 1 130 kg 1, 60 m 0

(13)

Exercício 8.4

ANÁLISE DE UM ATLETA Baseado na no ritmo cardíaco de um atleta (medido em batimentos por minuto), deseja-se produzir um número da seguinte forma: (i) se o ritmo é menor do que 60, deve-se retornar -1; (ii) se o ritmo é maior do que 80, retorna-se 1; (iii) senão retorna-se 0.

Uma outra necessidade, é transformar a gordura de uma atleta, representada como uma percentagem do seu peso, em um de três inteiros: (i) se a percentagem de gordura for inferior a 10%, deve-se retornar -1; (ii) se for maior do que 20%, retorna-se 1; (iii) senão retorna-se 0.

Tarefa 8.4.1 Proponha um mapa de execução destacando passos importantes de uma computação que produza os resultados solicitados.

Tarefa 8.4.2 Organize os passos em contextos de execução apropriados. Considere, no mínimo, a existência do contexto a:Atleta para a execução de passos da

computação.

Tarefa 8.4.3 Crie o projeto ex8.4.

Tarefa 8.4.4 Codifique o mapa anteriormente elaborado.

(14)

Ritmo Gordura Resultado Ritmo Resultado Gordura 60 bpm 5% m 65 bpm 10% m 70 bpm 15% m 80 bpm 20% m 90 bpm 25% m

(15)

Exercício 8.5

SITUAÇÃO DE UM ALUNO COM RECUPERAÇÃO A situação final de um aluno depende das notas obtidas nas provas P1 e P2. Com base nestas notas, a sua média é calculada pela fórmula:

MF = (P1 + P2)/2

A situação final do aluno será “APROVADO”, caso o valor de MF seja maior ou igual a 5.

Se o aluno não foi aprovado, ele faz uma prova de recuperação PR. A média a ser utilizada para determinar a situação do aluno neste caso é:

MFR = 0, 3MF + 0, 7PR

A situação do aluno, neste caso, será “APROVADO”, se MFR for maior do que 5; senão, será “REPROVADO”.

Tarefa 8.5.1 Proponha um mapa de execução onde se garanta uma seqüência de responsabilidades que apresente a situação final de um aluno.

(16)

p:Professor e a:Aluno. Proponha uma distribuição “razoável” dos passos da computação.

Tarefa 8.5.3 Crie o projeto ex8.5.

Tarefa 8.5.4 Escreva as classes que implementam o mapa elaborado na tarefa anterior.

Tarefa 8.5.5 Execute a aplicação e preencha a seguinte tabela:

P1 P2 PR MF MFR Situação 6 4 -3 7 -5 5 -3 2 7 3 2 4

(17)

Exercício 8.6

COMPARAÇÃO DE NÚMEROS O jogo “careta” tem a seguinte regra: em 10% das jogadas, se o número inteiro gerado pelo computador for menor do que o indicado pelo jogador, o computador ganha. Caso contrário, o jogador ganha. (A biblioteca Java oferece um mecanismo para gerar números inteiros aleatoriamente. Importe a classse java.util.Random. Crie um objeto desta classe. Ao enviar a mensagem nextInt(), este objeto retorna o próximo inteiro da seqüência aleatória.) Tarefa 8.6.1 Proponha um mapa de execução destacando passos importantes de uma computação que reproduza este jogo computacionalmente. Se o jogador for vitorioso, deve-se mostrar :); senão, deve-se mostrar :(.

Tarefa 8.6.2 Organize os passos em contextos de execução apropriados. Considere, no mínimo, a existência dos contextos j:Jogador e c:Computador para a

execução de passos da computação. Distribua os passos “convenientemente” entre

estes contextos. Suponha que j apresente uma variável aposta:int que armazene o

número apostado pelo jogador. Também acrescente a variável aleatorio:int em

c, que armazena o valor gerado aleatoriamente. Tarefa 8.6.3 Crie o projeto ex8.6.

(18)
(19)

Exercício 8.7

CONTA DE CRÉDITO Desenvolva uma aplicação em Java que determine se a conta de crédito de um cliente em um supermercado excedeu ou não o seu limite. Para cada cliente, são conhecidos:

• Número da conta

• Saldo no início do mês

• Total das compras realizadas no mês

• Total de bônus oferecidos ao cliente como prêmio • Limite de crédito da conta

A aplicação deverá obter cada uma destas informações como inteiros, calcular o novo saldo da conta (=saldo inicial + compras - bônus), mostrar o novo saldo, e determinar se este novo saldo excede o limite de crédito do cliente. Para os clientes que excederam o limite, a aplicação deverá mostrar a mensagem: “Limite de crédito excedido”.

a) Elabore um mapa de execução representando as diferentes seqüências de

responsabilidades desta aplicação.

(20)

tela.

c) Escreva as classes que implementam o mapa elaborado na tarefa anterior no

(21)

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: Carnaval

3 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.

Referências

Documentos relacionados

Apesar dos esforços para reduzir os níveis de emissão de poluentes ao longo das últimas décadas na região da cidade de Cubatão, as concentrações dos poluentes

F REQUÊNCIAS PRÓPRIAS E MODOS DE VIBRAÇÃO ( MÉTODO ANALÍTICO ) ... O RIENTAÇÃO PELAS EQUAÇÕES DE PROPAGAÇÃO DE VIBRAÇÕES ... P REVISÃO DOS VALORES MÁXIMOS DE PPV ...

Neste estudo foram estipulados os seguintes objec- tivos: (a) identifi car as dimensões do desenvolvimento vocacional (convicção vocacional, cooperação vocacio- nal,

3 O presente artigo tem como objetivo expor as melhorias nas praticas e ferramentas de recrutamento e seleção, visando explorar o capital intelectual para

Prestadores Prestadores Ciclo de Debates Ciclo de Debates GV Sa GV Sa ú ú de de 18.outubro.2006 18.outubro.2006 1. Aç ções SulAm ões SulAmé érica rica - - Curto/Mé

A pesquisa pode ser caracterizada como exploratória e experimental em uma primeira etapa (estudo piloto), na qual foram geradas hipóteses e um conjunto de observáveis, variáveis

8- Bruno não percebeu (verbo perceber, no Pretérito Perfeito do Indicativo) o que ela queria (verbo querer, no Pretérito Imperfeito do Indicativo) dizer e, por isso, fez

Vai dizer-me que estamos arruinados ou que se vai separar da mãe, ou que vou ter dois irmãos gémeos (10), ou que este ano não podemos ir de férias, porque o avô está com uma