Sei sulla pagina 1di 13

Tipo de dado Origem: Wikipdia, a enciclopdia livre.

seco no cita nenhuma fonte ou referncia, o que compromete suacredibilidade (desde setembro de 2010). Por favor, melhore este artigo providenciando fontes fiveis e independentes, inserindo-as no corpo do texto por meio de notas de rodap. Encontre fontes: Google notcias, livros, acadmico Scirus. Veja como referenciar e citar as fontes.

Em cincia da computao tipos de variveis ou dados uma combinao de valores e de operaes que uma varivel pode executar, o que pode variar conforme o sistema operacional e a linguagem de computador. So utilizados para indicar ao compilador ou interpretador as converses necessrias para obter os valores em memria durante a construo do programa. Por outro lado, ajudam tambm oprogramador a detectar eventuais erros (maioritariamente sintticos). Dependendo da linguagem de programao, o tipo de um dado verificado diferentemente, de acordo com a anlise lxica, sinttica esemntica do compilador ou interpretador da linguagem. Os tipos tm geralmente associaes com valores na memria ou com objetos(para uma linguagem orientada a objeto) ou variveis. ndice 1 Tipo esttico e dinmico 2 Tipo forte e fraco 3 Tipo primitivo e composto 4 Ver tambm Tipo esttico e dinmico A verificao do tipo de um dado feita de forma esttica em tempo de compilao ou de forma dinmica em tempo de execuo. Em C,C++, Java e Haskell os tipos so estticos, em Scheme, Lisp, Smalltalk, Perl, PHP, Visual Basic, Ruby e Python so dinmicos. Em C uma definio esttica do tipo de uma variveis ficaria assim: printf ("O tipo char ocupa %d bytes\n", sizeof(char)); Tipo forte e fraco

Linguagens implementadas com tipos de dados fortes, tais como Java e Pascal, exigem que o tipo de dado de um valor seja do mesmo tipo da varivel ao qual este valor ser atribudo. Exemplo: (Sintaxe genrica) 1. Declarar Variveis 2. TEXTO nome 3. INTEIRO idade 4. 5. Atribuies 6. nome = "Fulano" 7. idade = "13" Ocorrer um erro ao compilar a linha 7, pois o valor "13" precisa ser convertido para o tipo de dado INTEIRO. Em linguagens com tipos de dados fracos, tais como PHP e VBScript, a converso no se faz necessria, sendo realizada implicitamente pelo compilador ou interpretador. Tipo primitivo e composto Um tipo primitivo (tambm conhecido por nativo ou bsico) fornecido por uma linguagem de programao como um bloco de construo bsico. Dependendo da implementao da linguagem, os tipos primitivos podem ou no possuir correspondncia direta com objetos namemria. Um tipo composto pode ser construdo em uma linguagem de programao a partir de tipos primitivos e de outros tipos compostos, em um processo chamado composio. Em C, cadeias de caracteres so tipos compostos, enquanto em dialetos modernos de Basic e em JavaScript esse tipo nativo da linguagem. Tipos primitivos tpicos incluem caracter, inteiro (representa um sub-conjunto dos nmeros inteiros, com largura dependente do sistema; pode possuir sinal ou no), ponto flutuante (representa o conjunto dos nmeros reais), booleano (lgica booleana, verdadeiro ou falso) e algum tipo de referncia (como ponteiro ou handles). Tipos primitivos mais sofisticados incluem tuplas, listas ligadas, nmeros complexos, nmeros racionais e tabela hash, presente sobretudo em linguagens funcionais. Espera-se que operaes envolvendo tipos primitivos sejam as construes mais rpidas da linguagem. Por exemplo, a adio de inteiros pode ser feita com somente uma instruo de mquina, e mesmo algumas CPUs oferecem instrues especficas para processar sequncias de caracteres com uma nica instruo. A maioria das linguagens no permite que o

comportamento de um tipo nativo seja modificado por programas. Como exceo, Smalltalk permite que tipos nativos sejam estendidos, adicionando-se operaes e tambm redefinindo operaes nativas. Uma estrutura em C e C++ um tipo composto de um conjunto determinado de campos e membros. O tamanho total da estrutura para o tipo composto corresponde a soma dos requerimentos de cada campo da estrutura, alm de um possvel espao para alinhamento de bits. Por exemplo: struct Conta { int numero; char *nome; char *sobrenome; float balanco; }; define um tipo composto chamado Conta. A partir de uma varivel minhaConta do tipo acima, pode-se acessar o nmero da conta atravs de minhaConta.numero.

O trabalho com computadores, desde os mais simples como escrever mensagens na tela, at os mais complexos como resolver equaes ou desenhar imagens tridimensionais em animao, consiste essencialmente em manipulao de dados. Os dados representados em um computador podem ser nmeros, caracteres ou simples valores. A linguagem Java oferece diversos tipos tipos de dados com os quais podemos trabalhar. Este captulo cobrir os tipos de dados mais importantes. Na verdade h basicamente duas categorias em que se encaixam os tipos de dados: tipos primitivos e tipos de referncias. Os tipos primitivos correspondem a dados mais simples ou escalares e sero abordados em detalhe no que segue, enquanto os tipos de referncias consistem em arrays, classes e interfaces. Estes sero vistos em captulos subseqntes. Eis uma viso geral dos tipos que sero abordados neste captulo: Tipo Descrio

boolean Pode assumir o valor true ou o valor false Caractere em notao Unicode de 16 bits. Serve para a armazenagem de dados alfanumricos. Tambm pode ser usado como um dado inteiro com valores na faixa entre 0 e 65535. Inteiro de 8 bits em notao de complemento de dois. Pode assumir valores entre 27=-128 e 27-1=127. Inteiro de 16 bits em notao de complemento de dois. Os valores possvels cobrem a faixa de -2-15=-32.768 a 215-1=32.767 Inteiro de 32 bits em notao de complemento de dois. Pode assumir valores entre 231=2.147.483.648 e 231-1=2.147.483.647. Inteiro de 64 bits em notao de complemento de dois. Pode assumir valores entre 263 e 263-1. Representa nmeros em notao de ponto flutuante normalizada em preciso simples de 32 bits em conformidade com a norma IEEE 754-1985. O menor valor positivo represntvel por esse tipo 1.40239846e-46 e o maior 3.40282347e+38 Representa nmeros em notao de ponto flutuante normalizada em preciso dupla de 64 bits em conformidade com a norma IEEE 754-1985. O menor valor positivo representvel 4.94065645841246544e-324 e o maior 1.7976931348623157e+308

char

byte

short

int

long

float

double

Ao contrrio do que acontece com outras linguagens de programao, as caractersticas dos tipos de dados listados acima idependem da plataforma em que o programa dever ser executado. Dessa forma, os tipos de dados primitivos so realmente nicos e garantem a capacidade de intercmbio de informaes entre diversos tipos de computadores, aliviando o programador da preocupao e da rdua tarefa de converter dados em formatos apropriados para a portagem. Tipo Boolean Este o tipo de dado mais simples encontrado em Java. Uma varivelbooleana pode assumir apenas um entre dois valores: true ou false. Algumas operaes possveis em Java como a<=b, x>y, etc tm como resultado um valor booleano, que pode ser armazenado para uso futuro em variveis booleanas. Estas operaes so chamadas operaes lgicas. As variveis booleanas so tipicamente empregadas para sinalizar alguma condio ou a ocorrncia de algum evento em um programa Java. Por exemplo: boolean fim_do_arquivo = false; a declarao de uma varivel do tipo boolean, cujo nome fim_do_arquivo. O valor false direita do sinal "=" indica que a varivel recebe esse valor como valor inicial. Sem essa especificao o valor de uma varivel impredicvel, podendo ser qualquer um dos valores possveis para seu tipo (neste caso trueou false). Aproveitando o ensejo, h nessa linha a essncia da declarao de qualquer varivel em Java: Informar o tipo de dado que deseja declarar (boolean) Informar o nome que ser usado para batizar a varivel (fim_do_arquivo) Atribuir varivel um valor inicial (= false) Terminar a declarao com um ponto-e-vrgula ";". Uma palavra sobre identificadores Na declarao acima usamos o nome fim_do_arquivo para designar a varivel. Um nome de varivel, assim como nome de um mtodo, classe, rtulo e dezenas de outros itens lexicogrficos, constitui o que chamado umidentificador. Uma vez criado, um identificador representa sempre o mesmo objeto a ele associado, em qualquer contexto em que seja empregado. As seguintes regras regem a criao de identificadores: O primeiro caracter de um identificador deve ser uma letra. Os demais caracteres podem ser quaisquer seqncias de numerais e letras No apenas os numerais e letras latinas podem ser empregadas, como tambm letras de quaisquer outro alfabeto

Devido a razes histricas, o underscore "_" e o sinal de dolar "$" so considerados letras e podem ser usados nos identificadores Assim como em outras linguagens, como C e C++, os identificadores distinguem o tipo de caixa das letras, isto , as maisculas so consideradas distintas das minsculas. Isso significa quefim_de_arquivo um identificador diferente de Fim_De_Arquivo Os identificadores no podem ser palavras chave, como: class, for,while, public, etc Tipos de dados inteiros Os tipos de dados primitivos byte, int, char, short e long constituem tipos de dados inteiros. Isso porque variveis desses tipos podem conter um valor numrico inteiro dentro da faixa estabelecida para cada tipo indiivdual. Por exemplo, um byte pode conter um inteiro entre 128 e 127, enquanto um shortpode conter um valor entre -32.768 e 32.767. J o tipo long suficiente para contar todos os mosquitos do Pantanal Matogrossense. H diversas razes para se utilizar um ou outro dos tipos inteiros em uma aplicao. Em geral, no sensato declarar todas as variveis inteiras do programa como long. Raramente os programas necessitam trabalhar com dados inteiros que permitam fazer uso da mxima capacidade de armazenagem de um long. Alm disso, variveis grandes consomem mais memria do que variveis menores, como short. Obs: Se alguma operao aritmtica cria um resultado que excede um dos limites estabelecidos para o tipo inteiro empregado, no h qualquer indicao de erro para avisar sobre essa ocorrncia. Ao invs disso, um complemento de dois do valor obtido ser o resultado. Por exemplo, se a varivel for do tipo byte, ocorrem os seguintes resultados: 127+1 = -128, 127+9=-120 e 127+127=-2. Entretanto, uma excesso do tipo ArithmeticException levantada caso ocorra uma diviso por zero. As excesses e seus mecanismos sero abordados no Captulo 8. Vejamos o seguinte cdigo: public class Arith { public static void main(String args[]) { byte a = 127; short b = 32767; int c = 2147483647; long d = 9223372036854775807L; int e = 0; a += 1;

b += 1; c += 1; d += 1; System.out.println("Valor de a = " + a); System.out.println("Valor de b = " + b); System.out.println("Valor de c = " + c); System.out.println("Valor de d = " + d); d /= e; // Vai dar erro porque e = 0 } } com seu respectivo resultado de execuo: C:\Usr\Waldeck>java Arith Valor de a = -128 Valor de b = -32768 Valor de c = -2147483648 Valor de d = -9223372036854775808 java.lang.ArithmeticException: / by zero at Arith.main(Arith.java:18)

C:\Usr\Waldeck> Seguem abaixo alguns exemplos de declaraes de variveis de tipo inteiro: byte Contador = 1; int AnguloEmGraus = -45; char Indice = 6; A diferena entre essas declaraes e a declarao de dados booleanos vista acima est no tipo de dado especificado e no valor atribudo a cada varivel. Operaes com inteiros

Podemos realizar uma srie de operaes com os dados do tipo inteiro. A tabela seguinte mostra uma lista completa.

Operao =, +=, -=, *=, /=, %= ==, != <, <=, >, >= +, +, -, *, /, %

Descrio

Operadores de atribuio

Operadores de igualdade e diferena Operadores de desigualdade Operadores unrios Adio, subtrao, multiplicao, diviso e mdulo Operadores de atribuio com adio, subtrao, multiplicao, diviso e mdulo Incremento e decremento Operadores de deslocamento de bits Operadores de atribuio com deslocamento de bits Operador lgico de negao Operadores lgicos E, OU e OU-exclusivo Operadores de atribuio com operao lgica E, OU e OU-exclusivo

+=, -=, *=, /=, %=

++, -<<, >>, >>> <<=, >>=, >>>= ~ &, |, ^ &=, |=, ^=

Muitos das operaes que aparecem na lista acima so familiares e praticamente no requerem explicao. H outros, porm, que pode ser um tanto quanto ambguos. o caso dos operadores de atribuio aritmticos. Estes consistem de atalhos para atribuir um novo valor a uma varivel onde esse novo valor depende do valor anterior l armazenado. Por exemplo: += adiciona um valor ao valor antigo de uma varivel e a soma passa a ser o novo valor. Esse padro tambm obedecido para as operaes -=, *=, /= e %=. Temos assim as seguintes correspondncias:

x += 5 x=x+5 x -= y x=x-y

x *= 2 x = x * 2 z /= 4 etc. Os operadores de incremento e decremento referem-se a apenas uma varivel (logo so chamados de unrios). Por exemplo, o operador de incremento soma um ao operando conforme o exemplo: x++; uma maneira muito mais concisa de se escrever x = x + 1. Mas no s, esses operadores se comportam de modo diferente quando seguem ou precedem o nome de uma varivel. Se o operador precede o nome da varivel, ento o incremento (ou decremento) ocorre antes que o valor da varivel seja tomado para a expresso aritmtica. No seguinte exemplo, o valor das variveis x e y ser 6: int x = 5; int y = ++x; Porm, no prximo exemplo o valor de x ser 6 enquando que o valor de y ser 5: int x = 5; int y = x++; Vejamos alguns exemplos de declaraes e de utilizaes de operaes envolvendo tipos inteiros: byte j = 60; short k = 24; int l = 30; long m = 12L; long resuldato = 0L; z=z/4

resultado += j; resultado += k;

// resultado = 60 (0 mais 60) // resultado = 84 (60 mais 24)

resultado /= m; resultado -= l;

// resultado = 7 (84 dividido por 12) // resultado = -23(7 menos 30)

resultado = -resultado; // resultado = 23 ( -(-23) ) resultado = %= m; Tipo caracter Uma varivel do tipo char armazena um caractere Unicode. Um caractere Unicode um caractere de 16 bits, sendo que de 0 a 225 correspondem aos caracteres do cdigo ASCII (a tabela ASCII uma tabela padronizada internacionalmente de associaes entre caractere e a sua representao numrica no computador). Uma constante do tipo caractere representada colocando-se entre apstrofos, ou pelo valor numrico correspondente na tabela Unicode (ou ASCII), ou ainda, pela sequncia '\x' onde x especifica o caractere a ser referido. Esta especificao de sequncia de escape obedece s mesmas convenes do C/C++. Por exemplo: 'a', 'f', '\n', etc, so constantes do tipo char. Tipos de ponto flutuante Em Java, existem duas categorias de de variveis de ponto flutuante: floatarmazena valores numricos em ponto flutuante de preciso simples e doublede preciso dupla. Ambas seguem norma: IEEE Standard for Binary Floating Point Arithmetic, ANSI/IEEE Std. 754-1985 (IEEE, New York). O fato de obedecer a essa norma que torna os tipos de dados aceitos pela linguagem Java to portveis. Esses dados sero aceitos por qualquer plataforma, independendo do tipo desistema operacional e do fabricante do computador. A representao dos valores em ponto flutuante pode ser feita usando a notao decimal (exemplo: -24.321) ou a notao cientfica (exemplo: 2.52E-31). Alm dos possveis valores numricos que uma varivel de ponto flutuante pode assumir h tambm os seguintes: menos infinito mais infinito zero NAN - not a number Estes so requeridos pela norma. O mais infinito usado, por exemplo, ao somarmos 1 ao maior valor possivelmente representvel por esse sistema. Muitas das operaes realizveis com inteiros (porm no todas) tm anlogas para nmeros de ponto flutuante. Eis um resumo: Operao Descrio // resultado = 11 (resto de 23 div. 12)

=, +=, -=, *=, /= Operadores de atribuio ==, != <, <=, >, >= +, +, -, *, / +=, -=, *=, /= ++, -Operadores de igualdade e diferena Operadores de desigualdade Sinais unrios Adio, subtrao, multiplicao e diviso Operadores de atribuio com adio, subtrao, multiplicao e diviso Operadores unrios de incremento e decremento

Tipos de Dados Primitivos


A cada varivel est associado um Tipo de Dados. O tipo de dados define quais os valores que a varivel pode conter. Se, por exemplo, dissermos que uma varivel do tipo Inteiro, no poderemos l colocar um valor Real ou um Caracter. Antes de comearmos a utilizar uma varivel, temos que declarar qual o seu tipo. Tal feito do seguinte modo: : Tipo; Neste caso estamos a declarar que a varivel var, do tipo Tipo. Se tivermos vrias variveis do mesmo tipo podemos junta-las numa s declarao: , var2, var3: Tipo; Ao declararmos o tipo de dados de uma varivel, estamos a definir, no s, o tipo de valores que esta pode conter, mas tambm quais as operaes que com elas podemos realizar. Para j vamos considerar os seguintes tipos de dados:

INT REAL CAR BOOL STR

Tipo de Dados INT o Operadores Aritmticos o Funes Tipo de Dados REAL o Operadores Aritmticos o Funes Tipo de Dados CAR o Funes Tipo de Dados BOOL Tipo de Dados STR

Potrebbero piacerti anche