• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
6
0
0

Texto

(1)

Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal

Lista de exercícios 4 1. Dados

double x = 3; float y = 2f; int z = -1;

Qual o resultado de cada expressão abaixo?

a) x > ++y b) x > 0 && --y < 2

c) x++ > 0 && y >= 2 d) x > 0 || y < 2

e) x != z || (z == Math.abs(z) && x%y-1 == 0) f) ! (y == 3) g) !(y == 5) || ++z <= -1 && x + y > x – y

h) x == z || z == Math.abs(z) && x%y-1 == 0

2. Indique as expressões inválidas em Java e por quê. Para as válidas, indique o tipo e o resultado (use

os valores para x, y e z conforme o ex. 1).

a) x > z > 4 b) 2 * x + y

c) 2*(x+y)==2*x+y d) Math.round(x/y)+(x+y%5 == 2)

e) x||y f) Math.round(x/y)>0 && x+y%5 == 1

g) !z>0 || z>0 h) !(z>0)||z>0

3. O que será exibido na tela pelo trecho Java abaixo?

int m = 2; int n = 5; boolean b1 = false; boolean b2 = false; b1 = n > m; b2 = (m != n) && b1; System.out.println(b1 + " " + m + " " + b2 + " " + n); m = n – 2; b1 = ! b1; b2 = (m > n) || b1 && b2; System.out.println(b1 + " " + m + " " + b2 + " " + n);

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

5. Escreva um método em Java de nome MaiorNumero, que recebe quatro números inteiros e retorna o

valor do maior deles.

6. Escreva um método que recebe três números quaisquer e os exibe na tela em ordem crescente.

7. O método retira da classe material tem uma anomalia. Ele está permitindo retirar uma quantidade maior do que o saldo existente, deixando este saldo negativo. Corrija esse método, de modo a impedir uma retirada se a quantidade solicitada é maior que o saldo.

8. Rescreva o método aumentaSalario da classe Funcionario, que recebe três parâmetros (taxa1, taxa2

(2)

9. Nos trechos de programa abaixo A, B, C e D são expressões booleanas, e C1, C2, C3, C4, C5 e C6 são comandos. if (A) if (B){ C1; if (C){ C2; C3; } else C4; } else C5; C6; (I) if (A){ C1; if (B) C2; else if (C) C3; else if (D){ C4; C5; } else C6; } (II) Indique quais os comandos que serão executados se

a) A, B e C tiverem valor true?

b) A = true, B = false e C = true?

c) A = true, B = truee C = false?

d) A, B e C tiverem valor false?

a) Se todas as expressões booleanas foremtrue?

b) Se A =false, B =true, C=false, D =true?

c) Se A =true, B =false, C =false, D =true?

d) Se A =true, B =false, C =true, D =true?

10. Uma empresa resolve conceder o aumento anual de salário para seus funcionários no ano de 2012,

conforme a seguinte regra: 30% de aumento para quem ganha até 3 salários mínimos; para os demais, 30% sobre 3 salários mínimos, mais 20% sobre a parte que excede esse limite. Escreva um método de nome aumentaSalario2011 para a classe Funcionario que conceda o aumento conforme a regra acima indicada.

Para o valor do salário mínimo, você pode adotar um atributo constante (final)

de nomeSALARIO_MINIMOcom o valor do mesmo.

11. Uma loja estabeleceu as seguintes modalidades de pagamento para as suas vendas:

À vista (1 vez)... desconto de 2,5% sobre o preço de tabela; De 2 até 4 vezes ... preço de tabela, sem desconto ou acréscimo; De 5 até 10 vezes ... juros de 6% sobre o preço de tabela;

De 11 até 15 vezes ... juros de 13% sobre o preço de tabela.

Exemplo: preço de tabela = R$ 100,00, para pagamento em 8 vezes; preço total = 100,00 + 6,00 (6% de 100,00) = 106,00; cada parcela = 106,00 / 8 = R$ 13,25.

Escreva uma classe de nome Venda com os atributos preço de tabela, número de parcelas em que será paga a compra, preço total (após cálculo de descontos ou juros) e valor de cada parcela (preço total dividido pelo número de parcelas). a) Escreva um construtor que entra com o preço de tabela e o número de vezes em que será feito o pagamento.

b) Escreva um método para calcular o preço total e o valor de cada parcela, atualizando esses dois atributos.

(3)

12. A classe Aluno foi iniciada na lista 1 e continuou na lista 3. No momento ela deve estar com os seguintes atributos e métodos:

public class Aluno{ private String nome; private double grauA, grauB, grauC, mediaFinal;

public Aluno(String umNome){...}; //construtor de um parâmetro public void leNotas(){...}; //lê as 3 notas via teclado public void calculaMedia() {...}; //média aritmética simples public void calculaMedia(int p1, int p2, int p3) {...}

//média ponderada com pesos p1, p2 e p3 public void exibeDados(){...}; //mostra dados na tela

}

Acrescente os seguintes métodos:

a) calculaMediaPadraoUnisinos( ) – o cálculo é o mesmo adotado pela Unisinos: grau A x 0,33 + grau B x 0,67.

Se o aluno desejar, pode fazer o grau C para substituir o A ou o B na fórmula acima. Se o aluno não fez grau C, seu valor deverá constar como -1 e não há substituição. Se o aluno fez, o grau C terá um valor positivo entre 0 e 10. Neste caso, deverá ser obtido, via teclado, qual o grau que o aluno deseja substituir, "A", ou "B".

b) defineConceito( ), que devolve Aprovado com louvor, se a média final for superior a 9,0; Plenamente aprovado, para média final de 7,5 até 9,0; Simplesmente aprovado, se a média for de 6,0 a 7,4; e Reprovado, para média inferior a 6,0.

13. Acrescente à classe Aluno o seguinte atributo:private Data dataDeNascimento;

a) Sobrescreva um construtor para a classe Aluno com dois parâmetros, um do tipo String e o outro do tipo Data.

b) Escreva os métodos get e set para este novo atributo.

14. Pequena aplicação Java para uma academia de ginástica que mantém um cadastro de seus atletas. Para cada atleta a academia precisa saber o nome e registrar sua categoria, que é determinada pela seguinte tabela:

Idade Peso Categoria

até 12 anos - Infantil

13 a 16 anos até 40 kg acima de 40 kg Juvenil leve Juvenil pesado 17 a 24 anos até 45 kg de 45,001 a 60 kg acima de 60 kg Senior leve Senior médio Senior pesado

acima de 24 anos - Veterano

Crie a classe Atleta

Atributos privados: nome, peso e data de nascimento (este atributo deve ser do tipo Data - a classe Data aparece na lista de exercícios 3).

(4)

15. Crie uma classe Cliente com dois campos: nome e quantidade de pontos acumulados. A cada compra que faz, o cliente vai acumulando pontos, na razão de 1 ponto para cada Real de compra ou fração. Por exemplo, uma compra de R$ 118,35 gera 119 pontos para o cliente. Os pontos acumulados são usados para conceder descontos em novas compras, à razão de R$ 1,00 de desconto para cada 100 pontos, mas só é concedido desconto para quem já tem 500 pontos acumulados até a compra anterior. Por outro lado, o desconto não pode ultrapassar o valor da compra. Escreva os seguintes métodos:

- Construtor que atribui nome ao cliente e inicializa em 0 o seu saldo de pontos;

- Método de nome fazCompra que recebe o valor da compra que o cliente está efetuando

e retorna o novo valor da compra com o desconto aplicado em virtude do saldo de pontos que o cliente possuía antes de iniciar esta compra. Além disso, o método deve atualizar devidamente o saldo de pontos, abatendo o que foi consumido com o desconto e adicionando pontos correspondentes ao que o cliente está pagando na presente compra.

- Outros métodos que você achar necessários.

16. Crie uma classe de nome Carta para ser usada, mais adiante, na simulação de jogos de cartas. Cada carta tem um valor (1 a 13) e um naipe (1 a 4). Use constantes com nomes para nomear os 4 naipes. Além de um construtor que crie um objeto atribuindo valor e naipe, escreva os seguintes métodos:

a) obtemValor( ) – que retorna o valor da carta como ele costuma aparecer numa carta de baralho (A para o valor 1, J para o 11 (valete), Q para o 12 (dama), K para o 13 (Rei).

b) obtemNaipe( ) – que retorna a palavra Ouro, Copas, Paus ou Espada. c) desenhaCarta( ) – retorna um string que possui o valor e o naipe da carta.

17. Um ventilador analógico pode estar desligado (velocidade 0), em velocidade baixa (1) ou em velocidade alta (2). Para operá-lo, existe um controle deslizante.

0 1 2 Desl

Assim, estando desligado, ele só pode ir para veloc. 1; desta, pode ir para a 2 ou desligar; estando em 2, só pode diminuir para 1. Crie uma classe para simular o VentiladorAnalogico, com um atributo velocidade e três métodos:

+aumentaVelocidade (que incrementa 1 na velocidade) +diminuiVelocidade (que decrementa 1 na velocidade)

Os dois métodos acima devem validar a operação. Por exemplo, se a velocidade atual é 0, e o método diminuiVelocidade é chamado, não pode haver o decremento – neste caso, o método deve retornar false para indicar o insucesso da operação. Em caso de sucesso, o método deve retornar true.

+getVelocidade.

18. Agora, suponhamos que o ventilador tem um controle digital composto de três botões, de modo que de qualquer velocidade pode-se passar para qualquer outra.

0 1 2 Desl

(5)

19. Dado o código seguinte, diga se cadaifétrueoufalse. Fazer um diagrama descrevendo o que acontece na memória ajuda muito.

Circulo c1 = new Circulo(5); Circulo c2 = new Circulo(5); Circulo c3 = c1; Circulo c4; a) if (c1 == c2) ... b) if (c1 == c3) ... c) if (c2 == c3) ... d) if (c3 == null) ... e) if (c4 == null) ...

20. Repita o exercício para

String nome1 = "Mario";

String nome2 = new String("Mariana"); String nome3 = "MARIO";

a) if (nome1.equals(nome2)) ... b) if (nome1.compareTo(nome2) > 0) ... c) if (nome1.equals(nome3)) ... d) if (nome1.equalsIgnoreCase(nome3)) ... e) if (nome2 != null) ... Algumas respostas

1. a) false; b) true; c) true; d) true; e) true; f) true; g) true; h) false.

2. a) Inválida – deve ser escrita x > z && z > 4;b) expressão aritmética, 8.0; c) expressão booleana,

false;d) inválida; e) inválida, pois o operador ||não pode ser aplicado ao tipo double; f) expressão

booleana, false; g) inválida, pois o operador ! não pode ser aplicado ao tipo int; h) expressão

booleana, true.

3. true 2 true 5

false 3 false 5 4.

public String leNumero(){

double num = new Teclado().leDouble("Digite um número qualquer: "); if (num > 0) return "Positivo"; else if (num < 0) return "Negativo"; else return "Nulo"; } 5.

public int maiorNumero(int a, int b, int c, int d){ int max = a; if (b > max) max = b; if (c > max) max = c; if (d > max)

(6)

6.

public void ordenaCrescente(int a, int b, int c){ int salva; if (a > b || a > c){ salva = a; if (b > c){ a = c; c = salva;} else{a = b; b = salva;} } if (b > c){salva = b; b = c; c = salva; } System.out.println(a + " " + b + " " + c); } 8.

public void aumentaSalario(double taxa1, double taxa2, double limite){ // faz taxa1 ser a menor das duas taxas

if (taxa1 > taxa2){

double salva = taxa1; taxa1 = taxa 2;

taxa2 = salva; }

// calcula o novo salário e atualiza o respectivo atributo if (salario < limite)

aumentaSalario(taxa2); //chama sobrecarga else

aumentaSalario(taxa1); }

9. I) a) C1, C2, C3, C6; b) C5, C6; c) C1, C4, C6; d) C6.

10.

public class Funcionario{

final double SALARIO_MINIMO = 545.00; ....

public void aumentaSalario2011(){ if (salario <= 3 * SALARIO_MINIMO) salario += salario * 0.3;

else

salario += 3*SALARIO_MINIMO*0.3 + (salario-3*SALARIO_MINIMO)*0.2; }

... }

13. a)

public Aluno(String n, Data d){ nome = n;

dataDeNascimento = d;

//os outros atributos receberão o valor padrão, 0 }

b)

public Data getDataDeNascimento(){return dataDeNascimento;} public void setDataDeNascimento(Data d){

dataDeNascimento = d; }

19. a) false, porque c1 e c2 apontam para dois Circulos distintos (embora de mesmo raio neste

momento); b) true, pois c1 e c3 apontam para o mesmo objeto na memória; c) false, pelo mesmo motivo de (a); d) false, pois c3 armazena o endereço de um objeto; e) true – c4 só foi declarada,

Referências

Documentos relacionados

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron &amp; Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

O score de Framingham que estima o risco absoluto de um indivíduo desenvolver em dez anos DAC primária, clinicamente manifesta, utiliza variáveis clínicas e laboratoriais

4.5 Conclusões: Este trabalho mostrou um modelo criado para representar uma linha de transmissão monofásica através de uma cascata de circuitos π, cujos parâmetros longitudinais

O objetivo principal deste estudo de caso era verificar o grau de valorização da medicina popular de plantas entre o próprio povo, tendo por base uma comunidade com diferentes

É primeiramente no plano clínico que a noção de inconscien- te começa a se impor, antes que as dificuldades conceituais envolvi- das na sua formulação comecem a ser

A prova do ENADE/2011, aplicada aos estudantes da Área de Tecnologia em Redes de Computadores, com duração total de 4 horas, apresentou questões discursivas e de múltipla

Frondes fasciculadas, não adpressas ao substrato, levemente dimórficas; as estéreis com 16-27 cm de comprimento e 9,0-12 cm de largura; pecíolo com 6,0-10,0 cm de