Linguagens de Programação Conceitos e Técnicas. Valores e Tipos de Dados

Documentos relacionados
Valores e Tipos de Dados Prof. Hudson Costa

Linguagens de Programação Conceitos e Técnicas. Valores e Tipos de Dados Prof. Tiago Alves de Oliveira

Linguagens de Programação Tipos de Dados

Linguagens de Programação 3 Valores e Tipos de Dados

Paradigmas de Linguagens

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

Linguagens de Programação Conceitos e Técnicas. Amarrações

1. Estrutura de Dados

Conceitos c++ Prof. Demétrios Coutinho INFORMÁTICA BÁSICA

Linguagens de Programação Conceitos e Técnicas. Expressões e Comandos Prof. Tiago Alves de Oliveira

Linguagens de Programação Conceitos e Técnicas. Expressões e Comandos

Paradigmas de Linguagens de Programação. Tipos de Dados

Conceitos de Linguagens de Programação

AULA 3 Alocação dinâmica de memória: Ponteiros

Linguagens de Programação Conceitos e Técnicas. Amarrações Prof. Tiago Alves de Oliveira

Paradigmas de Linguagem de Programação. Paradigma Imperativo

Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011

Algoritmos e Estruturas de Dados I

Trabalho Linguagem e Programação de Compiladores

ALOCAÇÃO DINÂMICA DE MEMÓRIA

Seqüências. George Darmiton da Cunha Cavalcanti CIn - UFPE

3 Cadeias de Caracteres

Programação Estruturada

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

Linguagens de Programação. Tipos. Carlos Bazilio

Paradigmas de Linguagem de. Programação Profª. Roberta B Tôrres de programação referem-se a:

Tipos de Dados. George Darmiton da Cunha Cavalcanti

Tipos. O Conceito de Tipo

Espaço de Tipos. Amarração Tipo. Amarração Valor. Amarração Localização. Amarração Nome. Objeto de Dado

Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS

Introdução. Paradigmas de Linguagens. Introdução. Tipos de Dados Primitivos. Prof. Ms. Luiz Alberto Contato:

02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?

Linguagens de Programação 2 Amarrações

Nomes, vinculações e escopos

Nomes, vinculações e escopos

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

LINGUAGENS DE PROGRAMAÇÃO: NOÇÕES PRELIMINARES

Capítulo 6. Tipos de Dados

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Java possui 4 tipos de dados. Estes tipos de dados são divididos em: boolean, character, integer e float.

Conceitos básicos de programação

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Programação Orientada a Objeto Java

Programação científica C++

3. Linguagem de Programação C

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Estudos de Linguagens de Programação - Revisão

Tipos Abstratos de Dados (TAD)

Linguagem C Princípios Básicos (parte 1)

Linguagens e Paradigmas de Programação

Mais sobre Ponteiros em C

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Estrutura de Dados Conceitos Iniciais

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Algoritmos e Estruturas de dados

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

Orientação a Objetos

Algoritmos II prof. Daniel Oliveira

Módulo Lógica Programação com aplicações em Java. Projeto khouse Profissionalizante Profª Larissa Brandão

2. Tipos Abstratos de Dados

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

Projetando um Computador

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

Variáveis. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Laboratório de Programação 02

9. Tipos Abstratos de Dados

Paradigmas de Programação

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Listas: nós de cabeçalho, listas não homogêneas, listas generalizadas. SCC-502 Algoritmos e Estruturas de Dados I

Prova Modelo. Nome: Número:

4. Estruturas Fundamentais de Programação em C

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Métodos Computacionais. Tipos Estruturados

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

Lista de Erratas. 1) Exemplo 2.13 (Página 36): há um espaço em branco após a virgula que está sendo atribuída. Como está no livro:

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Representação de Dados Arrays e Structs

Nomes, Amarração, Verificação de Tipos, e Escopo

MC102 Algoritmos e programação de computadores Aula 3: Variáveis

Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória

Orientação a Objetos e Java

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

- Mapa de memória de um processo - Ponteiros

Do alto-nível ao assembly

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Bits e operações. Sistemas de Computação

Avaliação e Desempenho Aula 1 - Simulação

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Algoritmos e Programação

Variáveis, Comandos de Atribuição e Comando de Entrada e Saída

Transcrição:

Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados

Conceituação Um valor é uma entidade que existe durante uma computação Valor (= Dado) 3 2.5 'a' Paulo 0x1F 026 Valores e Tipos de Dados Linguagens de Programação 2

Conceituação Um tipo de dado é um conjunto cujos valores exibem comportamento uniforme nas operações associadas ao tipo Possuem cardinalidade Tipo (de dado) { true, 25, 'b', azul } não corresponde a um tipo { true, false } corresponde a um tipo Valores e Tipos de Dados Linguagens de Programação 3

Importância de um sistema de tipos Durante(a(escrita(e(a(depuração,(adquiri(um(grande( respeito(pela(expressividade(do(sistema(de(8pos(de( Simula(e(pela(capacidade(do(seu(compilador(de(capturar( erros(de(8pos.(observei(que(erros(de(8pos(quase( invariavelmente(refle8am(um(erro(tolo(de(programação( ou(uma(falha(conceitual(no(projeto.([...](em(contraste,( 8nha(descoberto(que(o(sistema(de(8pos(de(Pascal(era(pior( do(que(inú8l( (uma(camisagdegforça(que(causava(mais( problemas(do(que(soluções,(forçandogme(a(entortar(meus( projetos([...]( Stroustrup,(criador(do(C++([T&N]( Valores e Tipos de Dados Linguagens de Programação 4

Tipos Primitivos Não podem ser decompostos em valores mais simples Costumam ser definidos na implementação da LP Sofrem influência direta do hardware (ex.: int em C, diferente em plataformas diferentes) Podem indicar o propósito da linguagem (ex.: COMPLEX em Fortran) Valores e Tipos de Dados Linguagens de Programação 5

Tipo Inteiro Corresponde a um intervalo do conjunto dos números inteiros Vários tipos inteiros numa mesma LP Normalmente, intervalos são definidos na implementação do compilador Em JAVA, o intervalo de cada tipo inteiro é estabelecido na definição da própria LP Valores e Tipos de Dados Linguagens de Programação 6

Tipos Inteiros em JAVA Tipo Tamanho (bits) Intervalo Início Fim byte 8-128 127 short 16-32768 32767 int 32-2.147.483.648 2.147.483.647 long 64-9223372036854775808 9223372036854775807 Valores e Tipos de Dados Linguagens de Programação 7

Tipo Caractere Armazenados como códigos numéricos Tabelas EBCDIC, ASCII e UNICODE PASCAL e MODULA 2 oferecem o tipo char Em C, o tipo primitivo char é classificado como um tipo inteiro char d; char *p, *q; d = 'a' + 3; while (*p) *q++ = *p++; Valores e Tipos de Dados Linguagens de Programação 8

Tipo Booleano Tipo mais simples Possui apenas dois valores C não possui o tipo de dado booleano, mas qualquer expressão numérica pode ser usada como condicional Valores zero verdadeiro Valores = zero falso Abordagem de C pode provocar erros if (c += 1) x = 10; JAVA inclui o tipo de dado boolean Valores e Tipos de Dados Linguagens de Programação 9

Tipo Decimal Armazena um número fixo de dígitos decimais COBOL possui 0000 0010 0010 0011 0011 0000 1000 0110 0111 1001 1000 0011 sinal 4 bytes 7 casas inteiras 1 sinal 2 bytes 4 casas decimais Vantagem: precisão; Desvantagem: reduzido intervalo de valores, desperdício de memória. Valores e Tipos de Dados Linguagens de Programação 10

Tipo Ponto Flutuante O tipo primitivo ponto flutuante modela os números reais LPs normalmente incluem dois tipos de ponto flutuante: float e double expoente fração Padrão IEEE 754 - Precisão Simples bit de sinal 8 bits 23 bits expoente fração bit de sinal 11 bits 52 bits Padrão IEEE 754 - Precisão Dupla Valores e Tipos de Dados Linguagens de Programação 11

Tipo Enumerado PASCAL, ADA, C e C++ permitem que o programador defina novos tipos primitivos através da enumeração de identificadores dos valores do novo tipo enum mes_letivo { mar, abr, mai, jun, ago, set, out, nov }; enum mes_letivo m1, m2; Possuem correspondência direta com intervalos de tipos inteiros e podem ser usados para indexar vetores e para contadores de repetições Aumentam a legibilidade e confiabilidade do código Java não suportava tipos enumerados até a versão 5 Valores e Tipos de Dados Linguagens de Programação 12

Tipo Intervalo de Inteiros Em PASCAL e ADA, também é possível definir tipos intervalo de inteiros type meses = 1.. 12; Tipos intervalos herdam as operações dos inteiros Valores e Tipos de Dados Linguagens de Programação 13

Tipos Compostos Tipos compostos são aqueles que podem ser criados a partir de tipos mais simples registros, vetores, listas, arquivos Entendidos em termos dos conceitos produto cartesiano, uniões, mapeamentos, conjuntos potência e tipos recursivos Cardinalidade número de valores distintos que fazem parte do tipo Valores e Tipos de Dados Linguagens de Programação 14

Produto Cartesiano Combinação de valores de tipos diferentes em tuplas x= a b c d e S T (b,c) (b,d) (b,e) (a,c) (a,d) (a,e) S x T Valores e Tipos de Dados Linguagens de Programação 15

Produto Cartesiano São produtos cartesiano os registros de PASCAL, MODULA 2, ADA e COBOL e as estruturas de C struct nome { } char primeiro [20]; char meio [10]; char sobrenome [20]; struct empregado { struct nome nfunc; float salario; } emp; Valores e Tipos de Dados Linguagens de Programação 16

Produto Cartesiano Uso de seletores emp.nfunc.meio Inicialização em C struct data { int d, m, a; }; struct data d = { 7, 9, 1999 }; Em LPs orientadas a objetos, produtos cartesianos são definidos a partir do conceito de classe JAVA só tem class Cardinalidade #(S1 x S2 x... x Sn) = #S1x #S2x...x #Sn Valores e Tipos de Dados Linguagens de Programação 17

Uniões Consiste na união de valores de tipos distintos para formar um novo tipo de dados a b c b c d a b c d S T S + T Valores e Tipos de Dados Linguagens de Programação 18

Uniões Uniões Livres Pode haver interseção entre o conjunto de valores dos tipos que formam a união EQUIVALENCE de Fortran e union de C Há possibilidade de violação no sistema de tipos union medida { }; int centimetros; float metros; union medida medicao; float altura; medicao.centimetros=180; altura = medicao.metros; printf("\n altura : %f metros\n", f); Valores e Tipos de Dados Linguagens de Programação 19

Uniões Uniões Disjuntas não há interseção entre o conjunto de valores dos tipos que formam a união registros variantes de PASCAL, MODULA 2 e ADA e a union de ALGOL 68 TYPE Representacao = (decimal, fracionaria); Numero = RECORD CASE Tag: Representacao OF decimal: (val: REAL); fracionaria: (numerador, denominador: INTEGER); END; Cardinalidade #(S 1 + S 2 +... + S n ) = #S 1 + #S 2... + #S n Valores e Tipos de Dados Linguagens de Programação 20

Mapeamentos Tipos de dados cujo conjunto de valores corresponde a todos os possíveis mapeamentos de um tipo de dados S em outro T u a u a b b v S c T v S c T Cardinalidade: #(S T) = (#T) #S Valores e Tipos de Dados Linguagens de Programação 21

Mapeamentos Finitos O conjunto domínio é finito Vetores e matrizes array S OF T; (S T) A: array [1.50] of char; A: ([1,50] char) a z d r s f h w o 1 2 3 4 5 47 48 49 50 O conjunto índice deve ser finito e discreto Verificação de Índices em C e JAVA int v[7]; V[13] = 198; Valores e Tipos de Dados Linguagens de Programação 22

Categorias de Vetores Categoria de Vetor Tamanho Tempo de Definição Alocação Local de Alocação Exemplos Estáticos Fixo Compilação Estática Base FORTRAN 77 Semi- Estáticos Semi- Dinâmicos Fixo Compilação Dinâmica Pilha PASCAL, C, MODULA 2 Fixo Execução Dinâmica Pilha ALGOL 68, ADA, C Dinâmicos Variável Execução Dinâmica Monte APL, PERL Valores e Tipos de Dados Linguagens de Programação 23

Categorias de Vetores Estáticos (C) void f () { static int x[10]; } Semi-Estáticos (C) void f () { int x[10]; } Semidinâmicos (Padrão ISO - 1999) void f (int n) { } int x[n]; Dinâmicos (APL) A (2 3 4) A (2 3 4 15 ) Valores e Tipos de Dados Linguagens de Programação 24

Vetores Dinâmicos Podem ser implementados em C, C++ e JAVA através do monte Necessário alocar nova memória e copiar conteúdo quando vetor aumenta de tamanho É encargo do programador controlar alocação e cópia. Em C e C++, o programador deve controlar desalocação também. Isso torna a programação mais complexa e suscetível a erros Valores e Tipos de Dados Linguagens de Programação 25

Vetores Multidimensionais Elementos são acessados através da aplicação de fórmulas posição mat [i] [j] = endereço de mat [0][0] + i tamanho da linha + j tamanho do elemento = endereço de mat [0][0] + (i número de colunas + j) tamanho do elemento Valores e Tipos de Dados Linguagens de Programação 26

Vetores Multidimensionais Em JAVA vetores multidimensionais são vetores unidimensionais cujos elementos são outros vetores int [] [] a = new int [5] []; for (int i = 0; i < a.length; i++) { } a [i] = new int [i + 1]; O mesmo efeito pode ser obtido em C com o uso de ponteiros para ponteiros Valores e Tipos de Dados Linguagens de Programação 27

Vetores Multidimensionais Cardinalidade int mat [5][4]; Conjunto de valores {0,, 4} x {0,, 3} int (#int) # ({0,, 4} x {0,.., 3}) = (#int) (# {0,, 4} x #{0,.., 3}) = (#int) 5 x 4 = (#int) 20 Valores e Tipos de Dados Linguagens de Programação 28

Mapeamentos Através de Funções Uma função implementa um mapeamento S T através de um algoritmo O conjunto S não necessita ser finito O conjunto de valores do tipo mapeamento S T são todas as funções que mapeiam o conjunto S no conjunto T Valores do mapeamento [int boolean] em JAVA boolean positivo (int n) { } return n > 0; Outros valores do mapeamento: palindromo, impar, par, primo Valores e Tipos de Dados Linguagens de Programação 29

Mapeamentos Através de Funções C utiliza o conceito de ponteiros para manipular endereços de funções como valores int impar (int n){ return n%2; } int negativo (int n) { return n < 0; } int multiplo7 (int n) { return!(n%7); } int conta (int x[], int n, int (*p) (int) ) { int j, s = 0; for (j = 0; j < n; j++) if ( (*p) (x[j]) ) s++; return s; } Valores e Tipos de Dados Linguagens de Programação 30

Mapeamentos Através de Funções main() { } int vet [10]; printf ("%d\n", conta (vet, 10, impar)); printf ("%d\n", conta (vet, 10, negativo)); printf ("%d\n", conta (vet, 10, multiplo7)); JAVA não trata funções (métodos) como valores Pode-se empregar algoritmos diferentes para implementar um mesmo mapeamento Algumas vezes, vetores e funções podem ser usados para implementar o mesmo mapeamento finito Valores e Tipos de Dados Linguagens de Programação 31

Conjuntos Potência Tipos de dados cujo conjunto de valores corresponde a todos os possíveis subconjuntos que podem ser definidos a partir de um tipo base S ϕs = {s s S} a b c S {} {a} {b} {c} {a, b} {a, c} {b, c} {a, b, c} ϕs Valores e Tipos de Dados Linguagens de Programação 32

Cardinalidade #ϕs = 2 #S Operações básicas Pertinência Contém Está contido União Diferença Diferença simétrica Interseção Conjuntos Potência Valores e Tipos de Dados Linguagens de Programação 33

Conjuntos Potência Poucas LPs oferecem. Muitas vezes de forma restrita PASCAL (somente discretos, primitivos e pequenos): TYPE Carros = (corsa, palio, gol); ConjuntoCarros = SET OF Carros; VAR Carro: Carros; CarrosPequenos: ConjuntoCarros; BEGIN Carro:= corsa; CarrosPequenos := [palio, gol]; /*atribuicao*/ CarrosPequenos:= CarrosPequenos + [corsa]; /*uniao*/ Valores e Tipos de Dados Linguagens de Programação 34

Conjuntos Potência CarrosPequenos:= CarrosPequenos * [gol]; if Carro in CarrosPequenos THEN if CarrosPequenos >= [gol, corsa] THEN /*intersecao*/ /*pertinencia*/ /*contem*/ Restrições de PASCAL visam permitir implementação eficiente VAR S: SET OF [ 'a.. 'h' ]; BEGIN S := ['a', 'c', 'h'] + ['d']; END; ['a', 'c','d', 'h' ] ['a', 'c', 'h' ] [ 'd' ] S 1 0 1 1 0 0 0 1 = 1 0 1 0 0 0 0 1 OR 0 0 0 1 0 0 0 0 Valores e Tipos de Dados Linguagens de Programação 35

Tipos Recursivos Tipos recursivos são tipos de dados cujos valores são compostos por valores do mesmo tipo R ::= < parte inicial > R < parte final > Tipo Lista ::= Tipo Lista Vazia (Tipo Elemento x Tipo Lista) A cardinalidade de um tipo recursivo é infinita Isto é verdade mesmo quando o tipo do elemento da lista é finito O conjunto de valores do tipo listas é infinitamente grande (não podendo ser enumerado) embora toda lista individual seja finita Valores e Tipos de Dados Linguagens de Programação 36

Tipos Recursivos Tipos recursivos podem ser definidos a partir de ponteiros ou diretamente Em C struct no { int elem; struct no* prox; }; Em C++ class no { int elem; no* prox; }; Em JAVA class no { int elem; no prox; }; Valores e Tipos de Dados Linguagens de Programação 37

Tipos Ponteiros Não se restringe a implementação de tipos recursivos embora seja seu uso principal Ponteiro é um conceito de baixo nível relacionado com a arquitetura dos computadores O conjunto de valores de um tipo ponteiro são os endereços de memória e o valor nil Considerados o goto das estruturas de dados Valores e Tipos de Dados Linguagens de Programação 38

Tipos Ponteiros #define nil 0 typedef struct no* listaint; struct no { int cabeca; listaint cauda; }; listaint anexa (int cb, listaint cd) { listaint l; l = (listaint) malloc (sizeof (struct no)); l->cabeca = cb; l->cauda = cd; return l; } Valores e Tipos de Dados Linguagens de Programação 39

Tipos Ponteiros void imprime (listaint l) { printf("\nlista: "); while (l) { printf("%d ",l->cabeca); l = l->cauda; } } main() { listaint palindromos, soma10, aux; palindromos = anexa(343, anexa(262, anexa(181, nil))); soma10 = anexa(1234, palindromos); imprime (palindromos); imprime (soma10); Valores e Tipos de Dados Linguagens de Programação 40

Tipos Ponteiros } aux = palindromos ->cauda; palindromos ->cauda = palindromos ->cauda->cauda; free(aux); imprime (palindromos); imprime (soma10); Atribuição int *p, *q, r; // dois ponteiros para int e um int q = &r; // atribui endereco de r a q p = q; // atribui endereco armazenado em q a p Alocação int* p = (int*) malloc (sizeof(int)); Valores e Tipos de Dados Linguagens de Programação 41

Tipos Ponteiros Desalocação free(p); Derreferenciamento implícito INTEGER, POINTER :: PTR PTR = 10 PTR = PTR + 10 Derreferenciamento explícito int *p; *p = 10; *p = *p + 10; Valores e Tipos de Dados Linguagens de Programação 42

Tipos Ponteiros Aritmética (C) p++; ++p; p = p + 1; p--; --p; p = p - 3; Indexação (C) x = p[3]; Valores e Tipos de Dados Linguagens de Programação 43

Ponteiros Genéricos Podem apontar para qualquer tipo int f, g; void* p; f = 10; p = &f; g = *p; // erro: ilegal derreferenciar ponteiro p/ void Servem para criação de funções genéricas para gerenciar memória Servem para criação de estruturas de dados heterogêneas (aquelas cujos elementos são de tipos distintos) Valores e Tipos de Dados Linguagens de Programação 44

Problemas Com Ponteiros Baixa Legibilidade p->cauda = q; Inspeção simples não permite determinar qual estrutura está sendo atualizada e qual o efeito Possibilitam violar o sistema de tipos int i, j = 10; int* p = &j; // p aponta para a variavel inteira j p++; // p pode nao apontar mais para um inteiro i = *p + 5; // valor imprevisivel atribuido a i Valores e Tipos de Dados Linguagens de Programação 45

Problemas Com Ponteiros Objetos Pendentes int* p = (int*) malloc (10*sizeof(int)); int* q = (int*) malloc (5*sizeof(int)); p = q; // area apontada por p torna-se inacessivel Provoca vazamento de memória Referências Pendentes int* p = (int*) malloc(10*sizeof(int)); int* q = p; free(p); // q aponta agora para area de memoria desalocada int* p; *p = 0; Valores e Tipos de Dados Linguagens de Programação 46

Problemas Com Ponteiros Referências Pendentes main() { int *p, x; x = 10; if (x) { int i; p = &i; } // p continua apontando para i, que nao existe mais } Valores e Tipos de Dados Linguagens de Programação 47

Tipo Referência O conjunto de valores desse tipo é formado pelos endereços das células de memória Todas as variáveis que não são de tipos primitivos em JAVA são do tipo referência int res = 0; int& ref = res; // ref passa a referenciar res ref = 100; // res passa a valer 100 Valores e Tipos de Dados Linguagens de Programação 48

Tipo String Valores correspondem a uma seqüência de caracteres Não existe consenso sobre como devem ser tratadas Podem ser consideradas tipos primitivos, mapeamentos finitos ou tipo recursivo lista Três formas comuns de implementação Estática (Cobol) Semi-Estática (C, Pascal) Dinâmica (Perl, APL, Snobol) Valores e Tipos de Dados Linguagens de Programação 49

Hierarquia de Tipos Tipos Primitivos Compostos Inteiros Enumerados Recursivos Strings Caracteres Ponto Flutuantes Uniões Conjuntos Potência Booleanos Decimais Mapeamentos Produtos Cartesianos Intervalos Ponteiros Finitos Funções Livres Disjuntas Valores e Tipos de Dados Linguagens de Programação 50

Conclusões Ver os tipos oferecidos por uma LP é um dos primeiros passos no seu estudo; Valores possíveis, como são armazenados, operações disponíveis, etc. Quais tipos podem ser combinados para formar novos tipos; Apresentamos uma classificação abstrata, que pode ser usada para estudar qualquer LP. Valores e Tipos de Dados Linguagens de Programação 51