Você está na página 1de 6

Universidade F ederal do ABC

Disciplina: BC0505 Avaliao: Prtica Professor: Rogrio Neves

Estudante (nome):________________________________________________
Aproveitamento:

Matrcula: ______________________

Turma: _____

Sala: _____

Instrues para a prova (leia com ateno antes de comear): A) Coloque seu nome e demais informaes indicadas no cabealho acima e tambm na folha de respostas. B) A prova individual e sem consultas. C) A interpretao das questes faz parte da prova. D) O tempo de durao da prova de 90 minutos. E) Para responder as questes utilize, se achar necessrio, o NetBeans para testar seus cdigos. F) Escreva a resposta das questes na folha de resposta. E) Quando acabar de responder, entregue as folhas de questes e de respostas ao professor. F) proibido o uso de qualquer recurso de comunicao, como MSN, Intranet, Internet, iPhone, pager, etc. G) Para evitar transtornos, desligue seu celular. As provas so compostas de trs questes extradas da seguinte lista. Localize suas questes e veja solues. NOTA: Existem maneiras diferentes de resolver cada exerccio, estas so apenas algumas solues possveis.

Questes: 1. (3 pontos) A mdia da disciplina ser dada pela formula: m = (2 * P1 + 3 * P2 + 2 * Pp + 3 * Pj) / 10 Escreva um programa que, a partir das variveis de ponto flutuante P1, P2 (prova 1, 2), Pp (prova prtica) e Pj (projeto), calcule a mdia, exibindo como sada o conceito de A F, considerando os intervalos: 10 >= A >= 9 > B >= 7,5 > C >= 6 > D >= 4,5 > F >= 0 Copie o mtodo main para a folha de resposta. public static void main(String[] args) { float P1 = 5; float P2 = 10; float Pp = 10; float Pj = 0; float m = (2 * P1 + 3 * P2 + 2 * Pp + 3 *Pj) / 10; char c; if (m>=9) c = 'A'; else if (m>=7.5) c = 'B'; else if (m>=6) c = 'C'; else if (m>=4.5) c = 'D'; else c = 'F'; System.out.println("Conceito: " + c); } 1

2. (3 pontos) Escreva um programa em Java que pede para o usurio digitar um nmero e, dependo do nmero digitado, imprime uma das mensagens abaixo:
Nmero par e positivo Nmero par e positivo Nmero par e negativo Nmero par e negativo Valor nulo

Copie o mtodo main para a folha de resposta. public static void main(String[] args) { int num = new java.util.Scanner(System.in).nextInt(); String s; if (num==0) s = "Valor nulo"; else { s = "Nmero "; if (num%2==0) s+="par e "; else s+="impar e "; if (num>0) s +="positivo"; else s +="negativo"; } System.out.println(s); }

3. (3 pontos) Escreva um programa em que solicite ao usurio o peso e altura de uma pessoa e imprima na tela o valor do IMC = peso / (altura*altura) e estado de sade da pessoa, de acordo com a tabela abaixo:
IMC < 18,5 18,5 24,9 25,0 29,9 30,0 34,9 Classificao Magro Saudvel Sobrepeso Obeso

Copie o mtodo main para a folha de resposta. public static void main(String[] args) { System.out.print("Peso (kg): "); double peso = new java.util.Scanner(System.in).nextDouble(); System.out.print("Altura (m): "); double altura = new java.util.Scanner(System.in).nextDouble(); double imc = peso / (altura * altura); String s; if (imc < 18.5) s = "Magro"; else if (imc < 24.9) s = "Saudvel"; else if (imc < 29.9) s = "Sobrepeso"; else s = "Obeso"; System.out.printf ("IMC = %.2f, estado de sade: %s", imc, s); } 2

4.

(3 pontos) Considerando o seguinte programa: public static void main(String[] args) { int num1 = new java.util.Scanner(System.in).nextInt(); String num2 = ""; while (num1>1) { num2 = num1 % 2 + num2; num1 = num1/2; } if (num1>0) num2 = num1 + num2; System.out.println(num2); } a) Qual a sada quando a entrada so os dois ltimos dgitos do seu nmero de matrcula? b) Explique o que o programa faz.

a) 09 = 1001 b) O programa pega como entrada um inteiro, o divide por dois sucessivamente enquanto for > 1, concatenando o resto (0 ou 1) ao incio de uma String. Caso reste 1 no final, o valor tambm concatenado ao incio da String, finalmente o programa exibe a String contendo o nmero DECIMAL entrado (int num1) em BINRIO (String num2). 5. (3 pontos) Escreva um programa em Java que leia um nmero inteiro do teclado e imprima a soma dos dgitos que so mltiplos de 3. A sada do programa deve ser formatada de acordo com o exemplo abaixo: Digite um nmero: 23746 A soma dos dgitos mltiplos de 3 em 23746 9. Copie o mtodo main e para a folha de resposta. public static void main(String[] args) { long n = new java.util.Scanner(System.in).nextLong(), m = n, soma = 0, digito; while (n > 0) { digito = n % 10; n = n / 10; if (digito % 3 == 0) soma += digito; } System.out.printf( "A soma dos dgitos mltiplos de 3 em %d %d.", m, soma); } 6. (3 pontos) Fazer um algoritmo em Java que leia um nmero inteiro x e calcule o valor de T(x), sendo a funo T definida por T(x)=h(x)+g(x), onde:

Copie o mtodo main para a folha de resposta. public static void main(String[] args) { int x = new java.util.Scanner(System.in).nextInt(), h = x*x-16, f = h<0?1:h, g = f>0?0:x*x+16, t = h + g; System.out.println(t); } 7. (4 pontos) Escreva um programa em Java que calcule o valor de S, assim definido:

Copie o mtodo main e a sada para a folha de resposta. public static void main(String[] args) { double s = 0, a=0, b=1; while (a++<=99) s += a++/b++; System.out.println(s); } Sada: 95.5007946616706 Double! Lembre-se que int/int retorna int, ou Faa um programa em Java que calcule o valor de S, que assim definido:

public static void main(String[] args) { double s = 0, a=1, b=38; while (a<=37) s += (b-1)*b--/a++; System.out.println(s); } Sada: 4080.7507837037087 Double! Lembre-se que int/int retorna int 8. (4 pontos) O nmero pode ser aproximado atravs da srie de Gregory-Leibniz:

Faa um programa que calcule a srie at a milionsima interao (106), exibindo o resultado 4

na forma: System.out.printf(" Math: %18.16f \n Calc: %18.16f\n", Math.PI, pi); Copie o mtodo main e a sada para a folha de resposta. Dica: use Math.pow(a, b) para ab public static void main(String[] args) { double pi = 0, f = 0, k, n = Math.pow(10,6); for (k = 0; k <= n; k++) f += Math.pow(-1, k) / (2 * k + 1); pi = 4 * f; System.out.printf("Math: %18.16f\nCalc: %18.16f\n", Math.PI, pi); } Sada: Math: 3,1415926535897930 Calc: 3,1415936535887745 // Lembre-se que int/int = int, logo todos tem que ser double ou perde-se preciso 9. (4 pontos) O nmero pode ser aproximado atravs d produto de Wallis:

Faa um programa que calcule a srie at a milionsima interao (10 6), exibindo o resultado na forma: System.out.printf(" Math: %18.16f \n Calc: %18.16f\n", Math.PI, pi); public static void main(String[] args) { double pi = 0, f = 1, k, n = Math.pow(10,6); for (k = 1; k <= n; k++) { f *= 4 * k * k / (4 * k * k - 1); } pi = 2 * f; System.out.printf("Math: %18.16f\nCalc: %18.16f\n", Math.PI, pi); } Sada: Math: 3,1415926535897930 Calc: 3,1415918681921490 Lembre-se que int/int = int, logo todos tem que ser double ou perde-se preciso 10. (4 pontos) O nmero pode ser aproximado pela srie de Ramajuran, que dada pela Expresso:

Programe um algoritmo em Java para calcular o valor de para as primeiras 25 interaes e exiba no formato: System.out.printf(" Math: %18.16f \n Calc: %18.16f\n", Math.PI, pi); Copie o mtodo main e a sada para a folha de resposta. Para calcular o fatorial, use o mtodo abaixo public static double fat(double n) { return n>1?n*fat(n-1):1; } public static void main(String[] args) { double pi = 0, f = 0, n = 25; for (double k = 0; k <= n; k++) f += Math.pow(-1, k)*fat(6*k)*(13591409+545140134*k)/ (fat(3*k)*Math.pow(fat(k),3) * Math.pow(640320,3*k+3f/2)); pi = 1 / (f * 12); System.out.printf("Math: %18.16f\nCalc: %18.16f\n", Math.PI, pi); } public static double fat(double n) { return n>1?n*fat(n-1):1; } Lembre-se que int/int = int, logo todos tem que ser double ou perde-se preciso

Você também pode gostar