Buscar

Exercício de apoio - Semana 2_ PROGRAMAÇÃO DE COMPUTADORES - ILP001

Prévia do material em texto

PROGRAMAÇÃO DE COMPUTADORES
Começando a Programar2
 
EXERCÍCIOS DE APOIO
Apenas para praticar. Não vale nota.
Determine o que será impresso (pelos comandos println()) após a execução das instruções a
seguir:
int a = 3; 
int b = 5; 
int c = 8; 
int d = a * (b + c * 3) - 7; 
int e = a - b - c; 
System.out.println(a+" "+b+" "+c+" "+d+" "+e); 
a = a + 1; 
b = (4 * a + 1) / 10; 
c = (4 * a + 1) % 10; 
System.out.println(a+" "+b+" "+c+" "+d+" "+e);
A saída do programa será:
3 5 8 80 -10 
4 1 7 80 -10
 
 
1.
Quais instruções Java a seguir contêm variáveis cujos valores são modificados?
 
a) A variável “p” é atualizada com o valor da expressão aritmética na direita.
d) (Veja livro-texto) A variável “value” é atualizada com o valor passado pelos usuários como
entrada.
 
 
2.
p = i + j + k + 7;a.
out.println(“variables whose values are modified”);b.
out.println(“a = 5”);c.
value = input.nextInt();d.
Dado que , quais das seguintes alternativas são instruções Java corretas para
esta equação?
3.
y = a * x * x * x + 7;a.
y = a * x * x * (x + 7);b.
y = (a * x) * x * (x + 7);c.
y = (a * x) * x * x + 7;d.
y = a * (x * x * x) + 7;e.
 
 
 
y = a * x * (x * x + 7);f.
Calcula corretamente.a.
Errado, pois calcula b.
Errado: mesmo problema de b.c.
Calcula corretamente.d.
Calcula corretamente.e.
Errado, pois calcula f.
Mostre, passo a passo, a ordem de avaliação dos operadores em cada uma das seguintes
instruções Java:
 
 
 
4.
x = 7 + 3 * 6 / 2 - 1;a.
x = 2 % 2 + 2 * 2 - 2 / 2;b.
x = (3 * 9 * (3 + (9 * 3 / (3))));c.
* e / têm maior precedência, mas a avaliação é feita da esquerda para a direita.
Portanto: 7 + 3 * 6 / 2 – 1 7 + 18/2 – 1 7 + 9 – 1 16 – 1 15
a.
*, / e % têm maior precedência, mas a avaliação é feita da esquerda para a direita.
Portanto: 2 % 2 + 2 * 2 - 2 / 2 0 + 2 * 2 - 2 / 2 0 + 4 - 2 / 2 0 + 4 - 2 / 2 0 +
4 – 1 4 – 1 3
b.
Aqui é importante notar os parênteses: 
(3 9 (3 + (9 3 / (3)))) => (3 9 (3 + (9 3 / 3))) => (3 9 
(3 + (27 / 3))) => (3 9 (3 + (9))) => (3 9 (3 + 9)) => (3 9 
(12)) => (3 9 12) => (27 * 12) => 324
c.
(TAREFA DIRIGIDA) Para treinar a construção de algoritmos em Java, vamos construir um
programa que sabe calcular o custo de peças no estilo Tangram
(https://pt.wikipedia.org/wiki/Tangram) . Para isso, precisamos calcular a área de diferentes
formas geométricas e também o custo que teriam as peças construídas com essas formas,
dependendo do tipo de material utilizado. Responda às questões seguintes. Caso tenha
dúvida em um item, veja o gabarito, e então tente fazer o item seguinte sem olhá-lo. Repita
até o final da atividade.
5.
Para começar, crie a classe CalculadorArea abaixo e salve o arquivo.
class CalculadorArea { 
public static void main(String[] args) { 
 System.out.println("Calculador de áreas."); 
} 
}
a.
https://pt.wikipedia.org/wiki/Tangram
“CalculadorArea.java”, pois deve ser o mesmo nome da classe com a extensão
“.java”.
NOTA: ao criar o arquivo com um nome qualquer, IDEs costumam já colocar dentro
dele uma classe com o mesmo nome.
Caso ainda tenha dúvidas baixe o arquivo CalculadorArea.java
(https://drive.google.com/file/d/1Y3tFSverqYTiUYe2pDtAW80k5iofhrrR/view?
usp=sharing)
 
 
Como deve ser o nome do arquivo?I.
Crie um primeiro método estático, areaQuadrado, para calcular a área de um
quadrado dado o tamanho do seu lado (uma variável do tipo double), em
centímetros, conforme o código abaixo.
public static double areaQuadrado(double lado) { 
return lado*lado; 
}
Math.pow(lado, 2); 
 
Assim, em vez de 
b.
Onde deve ser colocado o método AreaQuadrado no seu código?
Deve ser colocado dentro da classe CalculadorArea, mas fora do método
main. Por exemplo:
class CalculadorArea { 
 
public static double areaQuadrado (double lado) { 
 return lado*lado; 
} 
 
public static void main(String[] args) { 
 System.out.println("Calculador de áreas."); 
} 
}
 
 
I.
Modifique o seu main para imprimir a área de um quadrado com lado de
tamanho 2.5.
Basta incluir o seguinte comando no seu main:
System.out.println("Area quadrado com 2.5 cm de lado: " + areaQuadrado(2.5) + "cm
2");
 
 
II.
É possível usar o método Math.pow para implementar o cálculo da área do
quadrado. Como seria a chamada a esse método?
III.
https://drive.google.com/file/d/1Y3tFSverqYTiUYe2pDtAW80k5iofhrrR/view?usp=sharing
 
return lado*lado; 
 
Com essa modificação, teríamos 
 
return Math.pow(lado, 2);
 
 
Crie um segundo método estático, areaTrianguloReto, para calcular a área de um
triângulo reto cujos catetos têm a mesma medida (variável cateto, do tipo double),
em centímetros. Coloque esse método no seu código e imprima a área de um
retângulo reto de cateto 4 cm.
Basta incluir o método:
public static double areaTrianguloReto (double cateto) { 
 return cateto*cateto/2; 
} 
 No main, deve ser inserido o código para impressão do que foi pedido: 
System.out.println("Area triangulo reto com 4 cm de lado: " + areaTrianguloReto(4) + "cm2");
 
 
c.
Crie um terceiro método estático, areaParalelogramo, para calcular a área de um
paralelogramo dada a área da base e a altura (variáveis do tipo double), em
centímetros. Coloque esse método no seu código e imprima a área de um
paralelogramo com base 4 cm e altura 2.5.
Basta incluir o método:
public static double areaParalelogramo (double base, double altura) { 
 return base*altura; 
} 
 No main, deve ser inserido o código para impressão do que foi pedido: 
System.out.println("Area paralelogramo com base 4 cm e altura 2.5 cm: " + areaParalelogramo
(4, 2.5) + "cm2");
 
 
d.
Agora podemos calcular o custo de algumas peças.e.
Na sua classe, defina dois atributos static do tipo double: custoMetal e
custoPlastico, que correspondem ao custo por área de metal e plástico.
Vamos assumir que o custo por cm2 para metal é de 2.5 e que para plástico
é de 1.5. Obs.: como qualquer atributo, lembre-se de colocar essas variáveis
fora de qualquer método do programa.
Basta declarar na sua classe, fora de qualquer método:
double custoMetal = 2.5; //custo por cm2 de metal
double custoPlastico = 1.5; //custo por cm2 de plástico
 
 
I.
Calcule o custo de fazer um Tangram inteiramente de metal, nas dimensões
16 cm x 16 cm. Imprima o resultado.
double custoTrangram = custoMetal * areaQuadrado(16); //custo para tangram 16x16 de 
metal 
 
System.out.println("Custo tangram 16x16 cm2 em metal: " + custoTrangram);
 
 
II.
Calcule o custo total para produzir as seguintes peças de reposição de
Tangram: 3 triângulos de 5 cm de cateto cada, em plástico; 2 paralelogramos
de base 7.1 cm e altura 2.7 cm, em plástico; 1 quadrado de lado 4 cm, em
metal; e 1 triângulo de cateto 4 cm, também em metal. Imprima o resultado.
double areaPlastico = 3 * areaTrianguloReto(5) + 2 * areaParalelogramo(7.1, 2.7);
 //area de plástico 
 
double areaMetal = areaQuadrado(4) + areaTrianguloReto(4); //area de m
etal 
 
double custoTotal = custoPlastico*areaPlastico + custoMetal*areaMetal; //calcula o 
custo total 
 
System.out.println("Custo total de pecas de reposicao: " + custoTotal); //imprime c
usto total
 
 
III.
Adicione ao seu programa uma funcionalidade: ele solicita ao usuário que forneça os
valores de custo por área de borracha (variável do tipo double). Então, ele usa esses
valores para calcular o custo de um Tangram inteiramente de borracha, com
dimensões 10.5x10.5 cm. Para ler entrada do usuário, use a classe Scanner (veja
Seção 2.5 do livro-texto) e o método nextDouble().
Basta colocar no seu código o comando para pegar entrada do usuário.
1) No início do código, antes de declarar a classe CalculadorArea, insira o código:
import java.util.Scanner;
Em seguida, no seu main, coloque o código para efetivamente pedir ao usuário que
forneça o custo da borracha, guarde o valor passado em uma variável, e então faça
seus cálculos:
Scanner input = new Scanner(System.in); //cria scanner para ler dados do usuário 
 
System.out.println("Entre com o custo da borracha:");double custoBorracha = input.nextDouble(); // lê o número fornecido pelo usuário, no formato 
double 
 
double custoTrangramBorracha = custoBorracha * areaQuadrado(10.5); //custo para tangram 16x1
6 de metal 
f.
 
System.out.println("Custo tangram 10.5 x 10.5 cm2 em borracha: " + custoTrangramBorracha);
 
 
Escreva um método que converta um valor em real (recebido em um parâmetro) para dólar e
retorne o valor em dólar. A taxa de conversão real para dólar também será um parâmetro de
entrada desse método. O valor em real, a taxa de conversão e o valor em dólar deverão ser
do tipo float. 
 
Método simplista que resolve o problema: 
static float converteRealParaDolar(float valorReal, 
 float taxaDeConversao){ 
 return valorReal*taxaDeConversao; 
} 
Se, ao invés da taxa de conversão, o aluno tiver usado a cotação (valor em real de um dólar), 
o seguinte método resolverá o problema: 
static float converteRealParaDolar(float valorReal, 
 float cotacao){ 
 return valorReal/cotacao; 
}
 
 
6.
Escreva um método que determine quanto tempo leva para um corpo cair de determinada
altura a partir do repouso. Este método receberá como parâmetro um valor do tipo double
contendo a altura em centímetros em que o corpo está, e deverá retornar um valor do tipo
double contendo o tempo da queda em segundos. Considere que a força da gravidade é
igual a 9, 8m/s2. Use o método Math.sqrt()1 para obter a raiz quadrada. 
Exemplo de método que resolve o problema e implementação alternativa: 
 
static double tempoDeQueda(double alturaEmCentimetros){ 
 return Math.sqrt(2*alturaEmCentimetros/100/9.8); 
 } 
 
static double tempoDeQueda_Alternativo(int 
 alturaEmCentimetros){ 
 double alturaEmMetros = alturaEmCentimetros/100; 
 double gravidade = 9.8; 
 return Math.sqrt(2*alturaEmMetros/gravidade); 
 }
 
 
7.
A CBF resolveu cobrar uma multa para os jogadores que, no campeonato brasileiro,
receberem cartões amarelos e vermelhos. Dados quatro números inteiros, representando o
time, o número do jogador, o número de cartões amarelos e vermelhos do jogador, calcule o
valor da multa, escrevendo a resposta na tela. Considere que a multa por cartão amarelo é
de R$1000,20 e por cartão vermelho é de R$4523,75. 
Exemplos de solução: 
 
void valorDaMulta(int time, int jogador, int amarelos, 
8.
 int vermelhos) { 
 double multa = 1000.20*amarelos + 4523.75*vermelhos; 
 System.out.println("R$" + multa); 
 }
 
 
Escreva um aplicativo que solicite ao usuário inserir dois inteiros. Obtenha do usuário esses
números e imprima sua soma, produto, diferença e quociente (divisão). Utilize as técnicas
mostradas na Figura 2.7 do livro-texto. 
import java.util.Scanner; 
 
class Aritmetica { 
 
 public static void main(String[] args) { 
 
 Scanner input = new Scanner(System.in); //cria scanner para ler dados do usuário 
 
 System.out.println("Entre com dois numeros inteiros, separados por espaco: "); 
 
 
 
 int a = input.nextInt(); 
 
 int b = input.nextInt(); 
 
 
 
 System.out.println("Soma: " + (a + b)); 
 
 System.out.println("Produto: " + (a * b)); 
 
 System.out.println("Diferenca: " + (a - b)); 
 
 System.out.println("Quociente: " + (a / b)); 
 
 } 
 
}
 
 
9.
Escreva um aplicativo para separar os dígitos de um número inteiro de 5 dígitos. Para isso,
ele deve pedir que o usuário forneça um número consistindo em cinco dígitos, separar o
número em seus dígitos individuais e imprimir os dígitos separados uns dos outros por três
espaços. Por exemplo, se o usuário digitar o número 42339, o programa deve imprimir 4 2 
3 3 9. Dica: use o comando “a % b”, que dá o resto da divisão de a por b. 
import java.util.Scanner; 
 
 
 
public class Separador { 
 
10.
 
 
 public static void main(String[] args) { 
 
 Scanner input = new Scanner(System.in); //cria scanner para ler entrada do usuário 
 
 System.out.println("Entre com um numero de 5 digitos: "); 
 
 int num = input.nextInt(); //lê a entrada 
 
 
 
 System.out.println("Resultado: "); 
 
 System.out.print((num / 10000) + " "); //primeiro 
 
 System.out.print((num % 10000) / 1000 + " "); //segundo 
 
 System.out.print((num % 1000) / 100 + " "); //terceiro 
 
 System.out.print((num % 100) / 10 + " "); //quarto 
 
 System.out.print(num % 10 + " "); //quinto 
 
 } 
 
}
 
 
 
 
MOSTRAR GABARITO

Continue navegando