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. “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. 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árioque 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.