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

Tipos

Caractersticas dos tipos  Um tipo de dados identifica um conjunto de valores (o conjunto suporte do tipo) e um conjunto de operaes que esto disponveis sobre esses valores. Estes valores podem ser assumidos por uma varivel ou expresso ou, ainda, gerados por uma funo  O tipo do valor representado por uma constante, varivel ou expresso determinado pela sua forma ou declarao, no sendo necessrio calcular o valor para determinar o seu tipo  Cada operador ou funo tem argumentos de um dado tipo e produz resultados de um determinado tipo
Tipos de Dados Primitivos e Strings 1 Tipos de Dados Primitivos e Strings 2

Tipos de Dados Primitivos e Strings

Tipos
Utilizao dos tipos  o programador utiliza a informao dos tipos para determinar quais as operaes que pode efectuar com o tipo  a mquina utiliza a informao dos tipos em duas fases distintas h durante a traduo para a linguagem mquina verifica a legalidade e a compatibilidade das instrues do programa h durante a execuo do programa utiliza a informao referente ao tipo para interpretar as suas representaes internas

Tipos
Ao caracterizarmos um tipo de informao iremos especificar:  a gama de valores  as operaes que tm como argumentos elementos do tipo e que produzem resultados deste tipo  as operaes que relacionam os elementos desse tipo com os elementos de outros tipos O modo de tipificar a informao e os diferentes tipos de informao permitidos variam de linguagem para linguagem As linguagens de programao fornecem certos tipos bsicos e a capacidade de definir certos tipos estruturados. O Java possui 8 tipos bsicos (primitivos ou pr-definidos).

Tipos de Dados Primitivos e Strings

Tipos de Dados Primitivos e Strings

Tipos Tipos pr-definidos do Java:


Nome do Tipo byte short int long float double char boolean Tipo de Valor inteiro inteiro inteiro inteiro real - vrgula flutuante real - vrgula flutuante nico caracter (Unicode) true ou false
A Declarao de Variveis O que uma varivel?

Variveis

O nome de uma localizao para armazenar dados  um contentor (uma caixa) que guarda um valor, valor esse que pode ser lido e alterado Cada varivel tem um tipo associado  por exemplo pode guardar apenas inteiros, apenas reais ou apenas caracteres

Associa um nome a um espao de memria, especifica o tipo de dados que ele ir conter e o mbito da varivel Todas as variveis num programa tm de ser declaradas antes de serem usadas O nome das variveis obedece s regras dos identificadores

Tipos de Dados Primitivos e Strings

Tipos de Dados Primitivos e Strings

Variveis
A declarao (acesso, tipo, etc) de uma varivel dividida em trs partes:

Variveis
A atribuio de valores s variveis nome_de_variavel=expresso; No tem o mesmo significado que em lgebra Significa calcular o valor da expresso do lado direito e atribui-lo varivel do lado esquerdo. O operador l-se toma o valor de Pode haver variveis em ambos os lados do sinal de igual: conta = 10;//atribui a conta o valor 10 conta = conta - 1;// decrementa conta

modificadores tipo lista_de_identificadores;


 modificadores: definem o acesso, no so obrigatrios
h h

public, private, protected static, transient, synchronized, final


(e.g. public, private, protected , static, transient, synchronized, final)

utilizar uma ordem na declarao dos modificadores

 tipo: define o tipo do(s) identificador(es)  lista de identificadores: sequncia de identificadores separados por vrgulas Por exemplo, para criar trs variveis do tipo inteiro para armazenar o nmero de caixas, nmero de unidades por caixa e o total de unidades:

 novo valor conta = 10 - 1 = 9

int numeroCaixas, unidadesCaixa, totalUnidades;


Tipos de Dados Primitivos e Strings 7 Tipos de Dados Primitivos e Strings 8

Variveis
Atribuio de valores iniciais s variveis (inicializao)

Variveis
Alterao do valor de uma varivel

Podemos atribuir valores iniciais quando as variveis so declaradas: //estas variveis no so inicializadas //e tm valores desconhecidos int numeroCaixas, unidadesCaixa, totalUnidades; //estas so inicializadas a 0 quando declaradas int numeroCaixas = 0; int unidadesCaixa = 0; int totalUnidades = 0; int conta = 10;//cria e inicializa conta a 10 A utilizao de uma varivel no inicializada d um erro de compilao. boa prtica inicializar sempre as variveis no momento da sua declarao.
Tipos de Dados Primitivos e Strings 9

O valor alterado atribuindo-se um valor diferente em alguma parte do programa Pode ser calculado custa de outros valores: totalUnidades = numeroCaixas * unidadesCaixa; ou lido do teclado: totalUnidades = SavitchIn.readLineInt();

Tipos de Dados Primitivos e Strings

10

Expresses

Expresses
Exemplo Supondo que, inicialmente, x tem o valor 9,5, n o valor 10, p verdadeiro e q falso, tem-se
Formula 3x Expresso em Java 3*x n/2 Valor 28,5 5

Uma expresso uma formula ou regra de computao que produz um valor ou resultado Cada expresso de um determinado tipo O modo de escrever frmulas nas linguagens de programao ligeiramente diferente daquele utilizado em matemtica

n 2 100 n 80,5 + x pq
(x5)

(100-n)/(80.5+x) p&q !(x<=5)

1,0 falso verdadeiro

Tipos de Dados Primitivos e Strings

11

Tipos de Dados Primitivos e Strings

12

Tipos em Java
Tipos Classes mais complexos compostos de outros tipos (primitivos ou classes) dados e mtodos Exemplos: SavitchIn String Boolean, Character, Byte, Short, Integer, Long, Float, Double

Tipos de Dados Primitivos

Tipos de dados primitivos os tipos mais simples no podem ser decompostos em outros tipos somente valores Exemplos: int - inteiro double - reais char - caracteres

Nome do Tipo byte short int long

Tipo de Valor inteiro inteiro inteiro inteiro

Memria usada 1 byte 2 bytes 4 bytes 8 bytes

Limite de Valores -128 a 127 -32768 a 32767 -2,147,483,648 a 2,147,483,647 -9,223,372,036,854,775,808 a 9,223,374,036,854,775,808 +/- 3.4028 x 10+38 a +/- 1.4023 x 0-45 +/- 1.767 x 10+308 a +/- 4.940 x 0-324

float

real - vrgula flutuante

4 bytes

double

real - vrgula flutuante

8 bytes

char boolean

nico caracter (Unicode) true ou false

2 bytes 1 bit

todos os caracteres Unicode no aplicvel

Tipos de Dados Primitivos e Strings

13

Tipos de Dados Primitivos e Strings

14

Tipos de dados primitivos - char


O tipo char armazena um nico caracter. Os valores deste tipo aparecem entre plicas Por exemplo: char resposta = `y`; System.out.println(resposta);  imprime no cran a letra y Os caracteres so armazenados como inteiros de acordo com um cdigo especial Cada caracter (letra, nmero, sinal de pontuao, espao, tabulador) tem atribudo um cdigo constitudo por um inteiro  os cdigos so diferentes para as maisculas e minsculas (e.g. 97 o cdigo de a e 65 o cdigo de A)

Tipos de dados primitivos - char


Os cdigos mais comuns so o ASCII (American Standard Code for Information Interchange) e o Unicode que um extenso do primeiro O Unicode inclui todos os caracteres que existem num teclado normal, vrios caracteres grficos e caracteres de controlo como, por exemplo, tab, line feed, return. A linguagem Java usa o Unicode Podemos fazer operaes com os cdigos. Exemplo: char caracter=a; caracter= caracter+1; a varivel caracter contem agora o valor b

Tipos de Dados Primitivos e Strings

15

Tipos de Dados Primitivos e Strings

16

Tipos de dados primitivos - boolean


descreve valores lgicos. literais associados: true e false valor inicial : false Operadores relacionais em Java
Operador == != > >= < <= Significado igual a diferente de maior que maior ou igual a menor que menor ou igual a

Tabelas de verdade para os operadores &&, || e !

Operadores lgicos (booleanos)


Operador Significado &, && e |, || ou ! no

&& (e)
Valor de A true true false false Valor de B true false true false A && B true false false false Valor de A true true false false Valor de A !A false true

|| (ou)
Valor de B true false true false A || B true true true false

Para os operadores && e || a avaliao pra sempre que o valor verdade da expresso pode ser estabelecido (short-circuit evaluation) Usa-se os operadores & e | para forar a avaliao completa da expresso booleana

! (no)
Tipos de Dados Primitivos e Strings

true false

Tipos de Dados Primitivos e Strings

17

18

Exemplos
Exemplo 1:
int idade=18; int idade=70 ; idade=14; boolean Menor=idade<18; boolean Reformado=idade>=65; boolean Inactivo=Menor || Reformado; boolean Activo=! Menor && ! Reformado;

Tipos de dados primitivos - Tipos numricos


Inteiros byte, short, int e long

literais:  [+|-] {dgitos decimais} para a representao decimal (base 10)  L(ou l) o sufixo para a representao long  0 o prefixo para a representao octal (base 8)  0x (ou 0X) o prefixo para a representao hexadecimal (base 16)  Todos os seguintes nmeros tm o mesmo valor: 29 035 0x1D 29L

 A expresso Reformado na penltima linha avaliada?  e a expresso Reformado na ltima linha? Exemplo 2:
if ((total > 0) && ((notaFicha / total * 100) > 60)) System.out.println(Bom trabalho); else System.out.println(Trabalhe mais.);

 se total > 0 falso, ento a expresso completa no pode ser verdade porque a conjuno s verdade quando ambos os operandos o forem. Assim no ser avaliada a segunda parte da expresso.
Tipos de Dados Primitivos e Strings 19 Tipos de Dados Primitivos e Strings 20

Tipos de dados primitivos - Tipos nmericos


float e double podem ser representados na notao usual ou na notao cientfica literais:  [+|-] {dgitos decimais}.[{dgitos decimais}[e|E]] {dgitos decimais}  F(ou f) o sufixo para a representao float  D(ou d) o sufixo para a representao double (assumido por defeito)  Todos os seguintes nmeros tm o mesmo valor: 18.0  double (+0.0)  float (+0.0f) as constantes em vrgula flutuante so do tipo double por defeito uma constante double no pode ser atribuda directamente a uma varivel float mesmo se o valor double pertence ao domnio vlido para float
Tipos de Dados Primitivos e Strings 21

Operadores aritmticos e de atribuio


Operadores aritmticos
Operador + * / % Significado adio subtraco multiplicao diviso (inteira, se ambos os argumentos o forem) resto da diviso inteira

Reais:

1.8e1

.18E2

representao do zero:

Se algum dos operadores real a diviso ( / ) real, se forem ambos inteiros a diviso inteira. O operador % tambm pode ser utilizado entre reais. Exemplos  resto1 = 15%7; // tem como resultado 1  resto2 = 16.2%4.0; // tem como resultado 0.2  quociente1=15/2; // tem como resultado 7  quociente2=15.0/2.0; // tem como resultado 7.5
Tipos de Dados Primitivos e Strings 22

Operadores aritmticos e de atribuio


Operadores de atribuio especiais var <op>= expresso;  equivalente a: var = var <op> (expresso);  var - nome da varivel  <op> { +, -, *, /, %} Exemplos:  quantidade += 5;

Operadores de incremento (++) e de decremento (--)


uma notao abreviada para as operaes aritmticas de incremento (adicionar uma unidade ) e de decremento (subtrair uma unidade) a variveis do tipo inteiro os operadores ++ ou -- podem aparecer antes (prefixo) ou depois do nome da varivel (sufixo) var <op> ou <op> var onde
h h

//quantidade = quantidade + 5;

<op> ++ ou -var o nome da varivel incrementa o valor conta= conta + incrementa o valor conta= conta + decrementa o valor conta= conta decrementa o valor conta= conta 1 1 1 1 antes de o usar depois de o usar antes de o usar depois de o usar
24

 quantidade *= 1+taxa; //quantidade=quantidade*(1+taxa);

++conta conta++ --conta conta-Tipos de Dados Primitivos e Strings 23 Tipos de Dados Primitivos e Strings

Operadores de incremento e de decremento -Exemplo


Exemplo: Considere a seguinte declarao de variveis: int n = 3; int m = 4; int resultado; Qual ser o valor de resultado aps a execuo de cada uma das instrues? (a) resultado = ++m; (b) resultado = m++; (c) resultado = n * ++m; (d) resultado = n * m++; (e) resultado = n * --m; (f) resultado = n * m--;

Converso de tipos numricos (Casting)

Converso de tipos numricos (converso implcita) Relao de ordem entre os tipos


byte short int long float double

Podemos atribuir tipos menores a tipos maiores, mas no vice-versa

Tipos de Dados Primitivos e Strings

25

Tipos de Dados Primitivos e Strings

26

Converso de tipos numricos -Exemplos


Exemplo 1:

Converso de tipos numricos -Exemplos


Exemplo 2:

double x; int n = 5; x = n;

o valor retornado por n convertido a um double, e ento atribudo a x  x contm 5.000 (de acordo com a preciso possvel dos nmeros em vrgula flutuante) Chama-se converso implcita (implicit casting) porque feita automaticamente No h alterao do tipo da varivel n

double a; int n = 2; float x = 5.1; double y = 1.33; a = (n * x)/y;

o valor n e x so automaticamente convertidos para o tipo double antes de serem efectuadas a multiplicao e a diviso - converso implcita

Tipos de Dados Primitivos e Strings

27

Tipos de Dados Primitivos e Strings

28

Converso de tipos numricos - Converso explcita (explicit casting) A converso explcita altera o tipo de dados da varivel para um nico uso precede-se o nome da varivel com o novo tipo de dados entre parnteses: (tipo_de_dados) nomeVariavel  o tipo alterado para tipo_de_dados durante a converso, no se alterando o tipo original da varivel Exemplo: int n; double x = 2.0; n = (int)x;  o valor de x convertido de double para int antes da atribuio do valor a n
Tipos de Dados Primitivos e Strings 29

Converso de tipos numricos - Converso explcita


A converso explicita obrigatria na atribuio de um tipo de ordem superior a um de ordem inferior  Incorrecto: converso implcita a um tipo de ordem inferior int n; double x = 2.1; n = x;//operao ilegal em Java  ilegal uma vez que x do tipo double, n do tipo int e o tipo double de ordem superior ao tipo int.  Correcto: converso explicita a um tipo de ordem inferior int n; double x = 2.1; n = (int)x;// operao legal em Java Na converso de nmeros em vrgula flutuante para nmeros inteiros, a parte decimal truncada
Tipos de Dados Primitivos e Strings 30

Converso do tipo char para int

Caracteres especiais - Escape sequence


Tm de ser precedidos pelo smbolo \

Converter um valor do tipo char para int produz o valor ASCII/Unicode correspondente Por exemplo, qual ser o resultado?

char caracter = `y`; System.out.println(caracter); System.out.println((int)caracter);


Resposta: a letra y na primeira linha seguida do cdigo ASCII de y (letra minscula) na linha seguinte: >y >89 >
Tipos de Dados Primitivos e Strings 31

Lista de caracteres especiais: \" aspa \' plica \\ barra (backslash) \b recua um espao (backspace) \n muda de linha (new line) \r recua para o incio da linha corrente (carriage return) \t avana para a prxima posio tabuladora (tab) Para escrever a frase: A vida "bela". fazemos: System.out.println("A vida \"bela\".");
Tipos de Dados Primitivos e Strings 32

Precedncia dos operadores


A ordem de avaliao dos vrios operadores numa expresso feita de acordo com a precedncia dos operadores: aqueles com maior precedncia so avaliados primeiro Se os operadores forem do mesmo nvel de precedncia ento a expresso avaliada da esquerda para a direita Podemos forar a precedncia atravs do uso de parntesis No devemos sobrecarregar a expresso com parnteses quando a precedncia obvia
Expresso matemtica 1 tempo+3massa taxa2 + variao
Tipos de Dados Primitivos e Strings

Precedncia dos operadores


Tabela de precedncia de alguns dos operadores mais comuns: Precedncia
14 13 12 11 9 8 7 6 5 4 3 2 1

Operador
++ -- + - ! (tipo) * / % + < <= > >= == != & ^ | && || ?: = += -= /= %=

Tipo
(unrios) converso aritmticos aritmticos relacionais relacionais lgico lgico lgico lgico lgico condicional atribuio

Java com todos os parnteses 1/(tempo+(3*massa)) (taxa*taxa)+variacao

Java tirando partido das precedncias (aconselhado) 1/(tempo+3*massa) taxa*taxa+variacao


33

Tipos de Dados Primitivos e Strings

34

Definio de Constantes
Em programao, designa-se por constante toda a grandeza que no varia durante a execuo de um programa. As linguagens de programao permitem dar s constantes nomes simblicos (os quais correspondem a identificadores), e utilizar esses nomes simblicos, em vez das prprias constantes, sempre que seja necessrio utilizar o valor de cada uma delas, ou seja, permitem a criao de uma designao para o valor das constantes. Vantagens em relao referncia directa ao seu valor:  O valor de uma constante geralmente no fornece qualquer sugesto sobre o significado ou finalidade da constante. A utilizao de nomes simblicos para designar constantes permite atribuir nomes significativos a constantes, portanto aumentar a facilidade de leitura e compreenso do programa.  Evitam-se alteraes acidentais.  Caso no sejam utilizados nomes simblicos para constantes, a alterao do valor de uma constante, num programa, pode ser bastante difcil.
Tipos de Dados Primitivos e Strings 35

Definio de Constantes
Declarao de constantes: public static final tipo nome=valor;

 public opcional e significa que no h qualquer restrio quanto a onde a constante pode ser usada  static o seu uso ser explicado mais tarde  final no permite que o programa altere o valor Exemplo: static final double PI= 3.14159;

Tipos de Dados Primitivos e Strings

36

Cadeias de caracteres: a classe String


Uma string uma sequncia de caracteres A classe String usada para armazenar sequncias de caracteres Possui mtodos para manipular strings Literais String: um ou mais caracteres entre aspas (duplas) Exemplos:

A classe String
ndice dos caracteres numa string
O ndice de um caracter numa string um inteiro que indica a posio do caracter e comea em 0 para o primeiro caracter Alguns mtodos da classe String:  chartAt(posio) - retorna o caracter que se encontra no ndice posio  substring(inicio, fim) - retorna o substring compreendido entre a posio inicio e fim  substring(inicio) - retorna o substring desde a posio inicio at posio final da string  lenght() - retorna o comprimento do string  indexOf(A_String)- retorna a posio da primeira ocorrncia do string A_String no objecto String. Retorna -1 se A_string no for encontrado  ...

char charVariavel= `a`;//declarao de caracteres(plica) String stringVariavel= "a";//declarao de strings(aspas) String frase = "Ol, Mundo"; Quando efectuamos a declarao: String frase; estamos a declarar o nome de um objecto da classe String, e sendo um objecto possui mtodos

Tipos de Dados Primitivos e Strings

37

Tipos de Dados Primitivos e Strings

38

A classe String
Por exemplo:

A concatenao de Strings
O operador + para Strings: String nome = "Antnio"; String cumprimento = "Ol,"; System.out.println(cumprimento + nome + "." + "Bem vindo");  imprime no cran : >Ol,Antnio.Bem vindo >  necessrio colocar espaos para que aparea correcto:
System.out.println(cumprimento+ " " + nome + "." + Bem vindo");

String cumprimento = "Bom dia a todos"; cumprimento.charAt(0)retorna o caracter B cumprimento.charAt(2) retorna o caracter m cumprimento.substring(4,7)retorna o substring dia cumprimento.lenght() retorna o valor 15
B 0 o 1 m 2 3 d 4 i 5 a 6 7 a 8 9 t 10 o 11 d 12 o 13 s 14

 imprime no cran : >Ol, Antnio. Bem vindo >


Tipos de Dados Primitivos e Strings 39 Tipos de Dados Primitivos e Strings 40

A classe String - Exemplo de um programa


public class StringDemo { public static void main(String[] args) { String sentence = "Text processing is hard!"; int position; position = sentence.indexOf("hard"); System.out.println(sentence); System.out.println("012345678901234567890123"); System.out.println("The word \"hard\" starts at index " + position); sentence = sentence.substring(0, position) + "easy!"; System.out.println("The changed string is:"); System.out.println(sentence); } } * exemplo retirado de W. Savitch, Java An Introduction to Computer Science &
Programming,1999
Tipos de Dados Primitivos e Strings 41

Comparao de Strings
O operador == no funciona da mesma forma para objectos String  quando == usado para testar objectos, testa se o endereo de memria dos dois objectos o mesmo Usam-se os mtodos  equals(A_String) - sensvel s maisculas e minsculas ou  equalsIgnoreCase(A_String)- no sensvel s maisculas e minsculas para testar se duas strings (sequncias de caracteres) so iguais Exemplo: String s1 = Mundo; String s2; s2 = SavitchIn.readLine(); / /s1.equals(s2) retorna true se o utilizador introduzir Mundo e / /false caso contrrio
Tipos de Dados Primitivos e Strings 42

Input/Output nos programas

Classes de Input/Output
com o Java:
Temos usado dois mtodos de output de uma classe que disponvel automaticamente

O teclado , geralmente, o dispositivo normal para o input O cran , geralmente, o dispositivo normal para output As classes so usadas para Input/Output Algumas classes esto sempre disponibilizadas pelo java, outras no

System.out.println() System.out.print() No entanto, o Java no tem classes de input disponveis automaticamente. Estas tm de ser acrescentadas  SavitchIn uma classe especialmente escrita para o input do teclado  Le outra classe especialmente escrita para o input do teclado Exemplos de mtodos da classe SavitchIn: SavitchIn.readLine() - l uma linha de texto e retorna a linha como um valor string SavitchIn.readLineInt()- l e retorna um nmero inteiro. SavitchIn.readLineDouble() SavitchIn.readLineBoolean() SavitchIn.readChar() Exemplos de mtodos da classe Le: Le.umInt() Le.umDouble()

Tipos de Dados Primitivos e Strings

43

Tipos de Dados Primitivos e Strings

44

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