Вы находитесь на странице: 1из 5

Universidade Federal do ABC Disciplina: Processamento da Informao (BC-0505) Assunto: Dados, variveis, operadores e precedncia

Roteiro 1: Dados, variveis, operadores e precedncia


1. Introduo
Nesta prtica vamos nos familiarizar com algumas formas de declarar, inicializar e operar variveis de diversos tipos. Tambm aplicaremos alguns conceitos vistos na teoria sobre dados, operadores e ordem de precedncia. Vale relembrar: Dados: valores utilizados em um programa que, aps seu processamento, geram alguma informao. Podem ser classificados, de acordo com suas transformaes ao longo do programa, como variveis ou constantes. Ainda podem ser classificados de acordo com o tipo da informao, como texto (char, String), inteiro (byte, short, int ou long), real (float ou double), lgico (boolean) e o tipo construdo (que ser visto posteriormente). Operadores: representam expresses de clculo (aritmticos), de comparao (relacionais), de condio (lgicos) e de atribuio. Precedncia: quando uma expresso envolve mais de um operador, sua avaliao segue uma ordem chamada ordem de precedncia, que define a ordem de execuo dos operadores (veja referncia nos slides de Introd. Prog. Java com NetBeans.pdf).

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.

Вам также может понравиться