Академический Документы
Профессиональный Документы
Культура Документы
2. Procedimento 2.1. Crie um novo projeto no NetBeans para este exerccio (Sugesto: Dados1) contendo uma classe principal para teste (sugesto: Teste). 2.2. No mtodo main, crie duas variveis de cada tipo primitivo do Java: byte, short, int, long, float, double, char e boolean; public static void main(String[] args) { java.util.Scanner sc = new java.util.Scanner(System.in); byte byte1, byte2; short short1, short2; int int1, int2; long long1, long2; float float1, float2; double double1, double2; char char1, char2; boolean A, B; ... } 2.3. Adicione linhas para exibir cada uma das variveis criadas usando o mtodo printf, seguindo o exemplo abaixo: ... System.out.printf("Variaveis byte: %d e %d\n", byte1, byte2); /* "String ", parmetros Mascara dos parmetros ... Complete para os demais tipos de acordo com a tabela abaixo 1
Usando a mascara para formatar dados, sempre comeando com %: %d decimal inteiro %u inteiro positivo %f real formato xxx.yyyyyy %E real cientfico x.yyyyyyE+zzz %c caractere %X %d em hexadecimal maisculo %s String %x %d em hexadecimal minsculo %b booleano %o %d em octal Modificadores: %[-][+][0-N][.0-9][lL][dxXuofeEgGcs] || | | | | | || | | | | +- formato (veja tabela acima) || | | | +----- modificador long, ignorado || | | +----------- nmero de casas decimais aps o . || | +---------------- largura do campo (N caracteres) || +------------------- mostra + para nmeros positivos |+---------------------- alinha a esq. +----------------------- inicia formatao */ 2.4. Tente executar o cdigo e veja que uma mensagem de erro exibida dizendo que a varivel pode no ter sido inicializada (repare que as variveis esto sublinhadas pelo NetBeans). Algumas maneiras de se inicializar variveis no Java so: Na prpria declarao, adicionando um = e o valor inicial aps o nome da varivel; Antes da primeira utilizao, atribuindo-se um valor qualquer com uma declarao do tipo varivel = <valor>; Lendo um valor do console atravs de um objeto java.util.Scanner, utilizando o mtodo apropriado para cada tipo (nextInt, nextFloat, etc.). Lendo dados da interface visual (a ser visto futuramente).
Veja os exemplos abaixo e inicialize todas as variveis com valores apropriados, apresentados na Tabela I, em seguida tente executar novamente o programa. short short1 = 100, short2 = 200; // na prpria declarao byte1 = -2; byte2 = 3 ; // depois da declarao float1 = sc.nextFloat(); // o programa aguardar entrada de dado ... Tabela I Tipos de variveis em Java Tipo do valor Tamanho Valor Valores (bits) Padro 8 0 inteiros com sinal -128 a 127 16 0 inteiros com sinal -32768 a 32767 32 0 inteiros com sinal -2147483648 a 2147483647 64 0 inteiros com sinal -263 a 263-1 ponto flutuante p. simples ~ (+/-) 1.4e-46 a 3.47e+38, 32 0.0 norma IEEE 754-1985 (+/-) infitito, NaN (no numrico) ponto flutuante p. dupla, ~ (+/-) 4.94e-324 a 1.798e+308 64 0.0 norma IEEE 754-1985 (+/-) infitito, NaN (no numrico) 16 \u0000 Caractere Unicode \u0000 a \uFFFF 1 false verdadeiro ou falso true ou false 2
Tipo de dado byte short int long float double char boolean
2.5. No mesmo programa, adicione ao final as seguintes instrues e observe os resultados ao tentar executar: ... short1 = byte1; short2 = int2; int1 = short1; int2= double2; float1 = int1; float2 = double2; System.out.printf("Variaveis short: %d e %d\n", short1, short2); System.out.printf("Variaveis inteiras: %d e %d\n", int1, int2); System.out.printf("Variaveis float: %f e %f\n", float1, float2); O Java avisa da possvel perda de preciso, enquanto o NetBeans sublinha as ocorrncias. 2.6. Type casting permite alterar o formato numrico antes da atribuio a outra varivel de tipo diferente. Empregando type casting, como no exemplo, tente novamente. short2 = (short)int2; int2= (int)double2; float2 = (float)double2; 2.7. Execute as seguintes operaes e exiba os resultados com printf. int resultado1 = (int1+short1+byte1)*3; System.out.printf("Resultado: %d\n", resultado1); int resultado2 = (int)(double1+float1)%5; System.out.printf("Resultado: %d\n", resultado2); double resultado3 = (int1+short1+byte1)/9; System.out.printf("Resultado: %f\n", resultado3); 2.8. Note que houve perda de preciso no resultado3, zerando a parte fracionria (XX.00000). Como corrigir o problema? 2.9. Utilize as duas variveis booleanas, A e B, para verificar os operadores lgicos apresentados nas tabelas abaixo. A = false, B= true; // Alterne os valores e verifique as System.out.printf("%b && %b = %b\n", A, B, A && B); // A System.out.printf("%b || %b = %b\n", A, B, A || B); // A System.out.printf("%b ^ %b = %b\n", A, B, A ^ B); // A System.out.printf("%b == %b = %b\n", A, B, A == B); // A System.out.printf("%b != %b = %b\n", A, B, A != B); // A tabelas e B ou B Xou B = B ? B ? T T F
&& F T
F F F
T F T
|| F T
F F T
T T T
^ F T
F F T
2.10. Finalmente vamos utilizar uma varivel to tipo String para formatar a sada do item 2.3 em uma tabela com largura de coluna fixa. Siga o exemplo abaixo para as demais linhas. 3
String tipo = "short"; System.out.printf("%7s: tipo = "int"; System.out.printf("%7s: tipo = "float"; System.out.printf("%7s: tipo = "double"; System.out.printf("%7s: tipo = "char"; System.out.printf("%7s: tipo = "boolean"; System.out.printf("%7s:
%6d %6d\n", tipo, short1, short2); %6d %6d\n", tipo, int1, int2); %6.1f %6.1f\n", tipo, float1, float2); %6.1f %6.1f\n", tipo, double1, double2); %6c %6c\n", tipo, char1, char2); %6b %6b\n", tipo, char1, char2);
2.11. Dados numricos de diversos tipos podem ser usados para montar a String, estes so automaticamente convertidos para texto usando o formato padro: System.out.printf("\nVariveis\n"); System.out.printf("char: %c e %c\n", char1, char2); System.out.printf("int: %d e %d\n", int1, int2); System.out.printf("float: %f e %f\n", float1, float2); // Pode ser exibido alternativamente da forma String string1 = "\nVariveis\nchar: " + char1 + " e " + char2 + "\nint: " + int1 + " e " + int2 + "\nfloat: " + float1 + " e " + float2; System.out.printf("String: %s\n", string1); 2.12. Para podermos definir o formato numrico a ser exibido na String, utilizamos o mtodo format da classe String, como segue: String string2 = String.format("\nVariveis" + "\n%7s:%6c e %6c" + "\n%7s:%6d e %6d" + "\n%7s:%6.1f e %6.1f" + "\n%7s:%6.1f e %6.1f", "char", char1, char2, "int", int1, int2, "float", float1, float2, "double", double1, double2 ); System.out.println(string2); 3. Questes 3.1. Utilizando seu programa, descreva o que acontece quando atribumos valores fora dos limites apresentados na Tabela I para cada tipo de varivel. 3.2. Qual a regra geral quando atribumos o valor de uma varivel de um tipo a outro? Quando devemos usar Type cast? 3.3. Ocorre arredondamento ao passarmos uma varivel de preciso maior para uma de preciso menor, digamos de double para int? 3.4. O que ocorre quando removermos os parnteses das operaes realizadas no item 2.7? Como resolver o problema de perda de preciso no resultado3? 4
3.5. O que acontece na operao double trezQuartos = 3/4? Por que? Como corrigir? 3.6. Qual a diferena entre os operadores lgicos ^ (ou exclusivo) e != (diferente) para variveis booleanas? 4. Exerccio para casa 4.1. Faa um programa para calcular a rea da circunferncia para um dado raio, a partir da frmula: rea = Math.PI * raio * raio. O programa deve exibir a mensagem Digite um nmero e utilizar a classe Scanner para ler um nmero de preciso dupla (double), exibindo o resultado na forma: System.out.printf("A rea do circulo de raio %f %f\n", raio, area); 4.2. Utilizando o mtodo printf, escreva um programa denominado Tabela que imprima uma tabela de preos emduas colunas, sendo que a primeira coluna com vinte (20) caracteres de largura e a segunda com dez (10)caracteres de largura. Na primeira linha devem ser impressas as palavras item e preo alinhado direitanas suas respectivas colunas. Nas prximas cinco linhas escreva itens e o respectivo preo, de algum tipo deproduto de supermercado ou de lanchonete. Tanto o item quanto o preo dever ser alinhado direita na suarespectiva coluna. O preo dever ter preciso de duas casas decimais. 4.3. A nota final de um aluno composta por: 2 provas com peso 3 (cada uma), 1 trabalho com peso 2 e 2 listas de exerccios com peso 1 (cada uma). Escreva um programa para calcular a mdia final do aluno. Faa a entrada de dados utilizando a classe Scanner do Java. Adicionalmente, o programa deve apresentar na janela Output, as notas parciais do aluno em linhas diferentes e na ltima linha a seguinte mensagem A mdia do aluno Y (onde Y o resultado). Imprima o valor da mdia utilizando sada formatada. 4.4. Escreva um programa que leia dois nmeros inteiros usando a classe Scanner, base e altura, e calcule a rea de um retngulo. No resultado, o programa deve apresentar o ttulo Calculo da rea de um Retngulo, e na linha de baixo apresentar o calculo realizado e o resultado do valor calculado, utilizando sada formatada.