Buscar

sem04_t2-t3_tipos_de_dados

Prévia do material em texto

AULA TEÓRICA 4 
 
Tema 2. Introdução a programação em Java (JVM, JDK) (cont.) 
Ø  Tipos de dados básicos (primitivos): 
u  representação de números inteiros; 
u  representação de números decimais; 
u  representação de valores lógicos. 
u  representação de caracteres. 
Ø  Classe String. 
Ø  Expressões. 
Ø  Operadores de incrementação e de decrementação unária de 
variáveis. 
Ø  Classe Math. 
Ø  Conversões do tipo 
Ø  Expressões lógicas 
Tema 3. Instruções básicas de entrada e saída 
1	
  
Tipos de dados básicos (primitivos) 
 
Um tipo de dados é definido pela gama de valores que pode 
representar e pelas operações que sobre eles se podem 
efectuar. 
 
Java permite tratar 8 tipos de dados predefinidos: 
–  boolean, 
–  char, 
–  byte, 
–  short, 
–  int, 
–  long, 
–  float, 
–  double. 
 
2	
  
	
   
Representação de números inteiros 
A representação de números inteiros é assegurada pelos 
seguintes tipos: 
 
Tipo Memória Menor valor Maior valor 
 ocupada 
byte 8 bits -128 127 
short 16 bits -32 768 32 767 
int 32 bits -2 147 483 648 (-231) 2 147 483 647 (231-1) 
long 64 bits -263 (263-1) 
 
Para alem de representação decimal, os números podem 
também ser representados nas bases octal e hexadecimal. Para 
isso usam-se prefixos: 0 – para octal e 0x para hexadecimal. 
 
Por exemplo: int peso = 0x12a; 
 
 
3	
  
	
   
Representação de números decimais 
A representação de números decimais é assegurada pelos 
seguintes tipos: 
 
Tipo Memória Menor valor Maior valor 
 ocupada 
float	
  	
  	
  	
  	
  	
  	
  	
  32 bits -3.4 x 1038 3.4 x 1038 
double 	
  	
  	
  64 bits -1.7 x 10308 1.7 x 10308 
 
Os valores reais podem ser representados usando a notação 
decimal (por ex. 34.054) ou a notação exponencial (por ex. 
2.5E-6 que representa o número 2,5 x 10-6). 
 
Em qualquer dos casos, o número pode ser seguido das letras f 
(ou F) ou d (ou D) indicando que se pretende o seu 
armazenamento como float ou como double. A ausência de 
indicação implica que o número seja considerado como double. 
 
4	
  
 
Representação de valores lógicos 
 
 
O tipo boolean é um tipo de dados para guardar valores 
lógicos, nomeadamente true (verdade) e false (falso). 
 
Tipo Memória ocupada Valores 
boolean 1 bit true	
  ou	
  false 
 
	
  Instrução de atribuição 
 
A atribuição permite armazenar um valor numa variável. Esse valor 
pode ser fornecido directamente ou resultar do cálculo de uma 
expressão. 
 
 
 int alunos = 80; 
 alunos= 2 * alunos; 
 5	
  
	
   
Representação de caracteres 
O tipo char é usado para guardar caracteres individuais que 
são representados internamente no computador pelos seus 
códigos ASCII. A declaração de variáveis deste tipo é feita da 
seguinte forma: 
 char letra; ou char letra = 'a'; 
 
O uso de caracteres é feito entre apóstrofos ' '. Por exemplo: 
 letra = 'M'; 
 
Uma vez que as variáveis do tipo char armazenam códigos, que 
são números, é possível fazer algum tipo de aritmética com 
estes var iáveis , nomeadamente incrementações e 
decrementações. 
 
Tipo Memória ocupada Valores 
char	
   16 bits Qualquer caracter pertencente ao Unicode 
6	
  
7	
  
!
Classe String 
 
A classe String é uma das classes predefinidas da Java e serve para 
manipular cadeias de caracteres. 
 
Declaração de uma variável do tipo String 
 
Para criar declarar uma variável da classe String pode usar uma instrução 
na forma abreviada: 
 
 String frase = "Programar aprende-se programando"; 
	
  
Métodos da classe String 
	
  
Existem vários métodos que permitam manipular dados do tipo String e 
que vão ser aprendidos mais tarde. 
 
8	
  
Expressões 
Uma expressão é uma sequência de operadores e de valores. 
A linguagem Java tem definido um conjunto de operadores, 
aritméticos e lógicos, que permitem a construção de 
expressões. 
 Operador Prioridade Operação 
 * 1 Multiplicação 
 / 1 Divisão 
 % 1 Resto da divisão 
 + 2 Adição 
 - 2 Subtração 
M Operador divisão apresenta comportamentos diferentes em 
função do tipo de operandos a que é aplicado. No caso de 
algum dos operandos ser real (float ou double), o 
resultado será também um número real. Por exemplo: 
 double x = 10/4.0; //x ← 2.5 9	
  
M No entanto, se ambos os operadores forem inteiros, o 
resultado será também um inteiro, pelo que a parte 
fraccionária do resultado é desprezada. Assim, 
 int y = 10/4; //y ← 2 
 
O operador % permite calcular o resto de uma divisão. Por 
exemplo: 
int z = 13 % 4; //z ← 1 
Ainda que este operador seja geralmente mais útil para calcular 
o resto de divisões inteiras, o Java permite também a sua 
utilização com operandos reais. Por exemplo: 
double f = 8.6 % 2.0; //f ← 0.6 
 
Operadores de incrementação e de decrementação unária 
de variáveis 
++ (soma 1 ao seu operando) 
-- (subtrai 1 ao seu operando) 
 10	
  
Exemplo: 
 conta++; //pós-incremento 
 conta--; //pós-decremento 
 
ou ainda: 
 ++conta; //pré-incremento 
 --conta; //pre-decrimento 
 
A distinção entre as duas formas destes operadores, antes ou 
depois do operando, só é relevante quando fazem parte de uma 
expressão maior. 
Por exemplo, supondo que a variável num tem o valor 7, a 
expressão x = ++num; incrementa o valor de num (para 8) 
e depois atribui-o a x (por isso x passa a ter o valor 8). 
 
Se for x = num++; primeiro é feita a atribuição de num a x 
(x fica com o valor 7) e só depois é que é feita a incrementação 
de num. 
 
11	
  
Java fornece vários operadores de atribuição (+=, -=, *=, /=) 
para abreviar expressões de atribuição. Por exemplo, podemos 
abreviar a instrução 
 c = c + 3; como c += 3; 
 
O operador += adiciona o valor da expressão à direita do 
operador ao valor da variável à esquerda do operador, e 
armazena o resultado na variável à esquerda do operador. 
 
Suponha: int c = 3, d = 5, e = 4, f = 5; 
 
Operador de Expressão de Explicação Atribui 
 += c += 7 c = c+7 10 a c 
 -= d -= 4 d = d-4 1 a d 
 *= e *= 5 e = e*5 20 a e 
 /= f /= 3 f = f/3 1 a f 
 
 
12	
  
 Classe Math 
 
O JDK (Java Development Kit) inclui um largo conjunto de 
classes e métodos que podem ser utilizados para variados fins. 
 
Os métodos pré-programados da classe Math permitem realizar 
certos cálculos matemáticos comuns. 
 
Por exemplo, Math.random() gere um número aleatório entre 
0 e 1, Math.sin(a) calcula o seno de um ângulo. É 
aconselhável a consulta da documentação do JDK para obter 
uma lista completa de metodos existentes no Math. 
 . . . . 
int base = 3, expoente = 4; 
double resultado = Math.pow(base,expoente); 
 . . . 
13	
  
Conversões de tipo 
O tipo do resultado de uma expressão aritmética depende do 
tipo dos seus operandos. Se todos eles forem do mesmo tipo, o 
resultado será também desse tipo. No caso contrário devem ser 
feitas as conversões de tipo. 
Algumas são feitas automaticamente e de modo a que não haja 
perda de informação, pelo que nem todas as transformações 
são possíveis. 
A cadeia de conversão automática do compilador é a seguinte: 
 
 byte > short > int > long > float > double 
 
int var_int = 10, result_int; 
double var_double = 5.9, result_double; 
result_double = var_int + var_double; 
result_int = var_int + var_double; 
result_int = (int) (var_int + var_double); 
 
 
14	
  
Expressões lógicas 
Existem tambem operadores relacionais e operadores lógicos. Estes 
operadores permitem a construção de expressões que têm como 
resultado um valor lógico, true ou false. 
 
Operadores relacionais: >, <, >=, <=, == (igual a), != (diferente de) 
Operadores lógicos: && (conjunção), || (disjunção), ! (negação) 
O operador && tem dois operandos e devolve true apenas seambos 
os operadores forem true, caso contrário devolve false. 
 
 
 
 
 
 
A operação de negação recebe apenas um operando lógico e inverte 
o seu valor. 
É comum que os operandos utilizados pelos operadores lógicos 
resultem de expressões que envolvem operadores relacionais. 
 Qual é o resultado de expressão (10 > 5 && 4 != 3) ? 
 
A B A && B A | | B 
F F F F 
F T F T 
T F F T 
T T T T 
 
15	
  
Tema 3. Instruções básicas de entrada e saída 
 
As instruções de entrada servem para obter valores do exterior 
do programa, por exemplo, do teclado. 
 
Quando um computador executa um programa, chegará a 
resultados e que o utilizador desejará visualizar. Para isso são 
necessários instruções de saída de dados. 
 
Saída de dados (para ecrã) 
 
A escrita para o ecrã pode ser feita utilizando os métodos 
(subprogramas) print ou println existentes na System.out, 
que é conhecido como objecto de saída padrão. 
 
16	
  
 
Para que possa ser escrita uma mensagem no ecrã, estes 
subprogramas devem receber como parâmetro (argumento) a 
mensagem a escrever, por exemplo: 
 . . . . 
 System.out.print ("Bom dia! "); 
 byte dias = 30; 
 Sytem.out.print("Abril tem "+dias+" dias"); 
 . . . . 
Entrada de dados 
 
A linguagem de Java foi concebida essencialmente para o 
desenvolvimento de aplicações para execução em ambientes 
gráficos, onde a entrada de dados é assegurada por diálogos 
especializados. 
 
A leitura de dados a partir do teclado é complexa para ser 
explicada detalhadamente numa fase introdutória da 
aprendizagem da programação. Mais tarde voltaremos a este 
assunto. Vamos ver algumas formas de leitura. 
 
 
 
17	
  
Exemplo1 de leitura do teclado e visualização de um número inteiro (utilizando caixas 
de diálogo pré-definidas) : 
import javax.swing.JOptionPane; 
public class ExemploLeituraTeclado1 
{ public static void main(String[] args) 
 { int num = Integer.parseInt(JOptionPane.showInputDialog 
 ("Introduza um numero inteiro:")); 
 JOptionPane.showMessageDialog(null,"O numero introduzido foi:"+ 
 num); 
 } 
} 
Exemplo2 de leitura do teclado e visualização na consola de um número inteiro: 
import java.io.*; 
public class ExemploLeituraTeclado2 
{ public static void main (String[] args) throws IOException 
 { BufferedReader x = 
 new BufferedReader(new InputStreamReader(System.in)); 
 int num; 
 System.out.println("Introduza um numero inteiro: "); 
 num = Integer.parseInt(x.readLine()); 
 System.out.println("O numero introduzido foi: "+num); 
 } 
} 
18	
  
Referência bibliográfica: 
 
António José Mendes; Maria José Marcelino. 
“Fundamentos de programação em Java 2”. FCA. 2002. 
 
Carriço, José; Carriço, António. 
"Computadores, Tecnologias e sistemas de Informação- O Núcleo de Sistema“. 
Centro de Tecnologias de Informação Ltd. Lisboa. 1997 
 
Carriço, José; Carriço, António. 
"Computadores, Tecnologias e sistemas de Informação- Periféricos, Internet e multimédia“. 
Centro de Tecnologias de Informação Ltd. Lisboa. 1997. 
 
Carriço, José; Carriço, António. 
"Computadores, Tecnologias e sistemas de Informação- Tecnologias de Software“. 
Centro de Tecnologias de Informação Ltd. Lisboa.1997. 
 
Elliot Koffman; Ursula Wolz. 
“Problem Solving with Java”. 1999. 
 
John R. Hubbard. 
“Theory and problems of programming with Java”. Schaum’s Outline series. McGraw-Hill. 
 
H. Deitel; P. Deitel. 
“Java, como programar”. 4 edição. 2003. Bookman. 
 
Rui Rossi dos Santos. 
“Programando em Java 2– Teoria e aplicações”. Axcel Books. 2004 
19	
  
TPC 
 
Escrever um programa em Java para resolução dos seguintes 
problemas: 
 
Ø  permitir visualizar no ecrã mensagem de boas vindas. 
 
Ø  declarar dois valores: 10,75 e 300,1. Achar o produto deles e 
visualizar o resultado na tela acompanhando pela respectiva 
mensagem. 
 
Ø  cálcular área de um círculo. 
 
Ø  calcular o valor corresponde a idade introduzida em dias, 
horas e semanas. 
20

Mais conteúdos dessa disciplina