Baixe o app para aproveitar ainda mais
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
Compartilhar