tipos de dados
DESCRIPTION
Tipos de Dados. Paradigmas de Programação Prof. Gláucya Carreiro Boechat [email protected]. Introdução. Um tipo de dado define uma coleção de dados e um conjunto de operações pré-definidas sobre esses dados Um descritor é um conjunto de atributos de uma variável - PowerPoint PPT PresentationTRANSCRIPT
Introdução
Um tipo de dado define uma coleção de dados e um conjunto de operações pré-definidas sobre esses dados
Um descritor é um conjunto de atributos de uma variável
Um objeto representa uma instância de um tipo de dado abstrato definido pelo usuário
Tipos de Dados Primitivos
Tipos de dados não-definidos em termos de outros tipos são chamados tipos de dados primitivos
Praticamente todas as linguagens de programação oferecem um conjunto de tipos de dados primitivos
Tipos de Dados Primitivos
Inteiro Quase sempre um reflexo da plataforma utilizada
(hardware e/ou SO)
Muitos computadores suportam diferentes tamanhos para inteiros Em Java, diferentes tamanhos para inteiros
byte, short, int, long
Existem vários tipos de números inteiros numa linguagem: inteiro com/sem sinal, inteiro base decimal, inteiro base binária, precisão simples, etc.
Tipos de Dados Primitivos
Ponto Flutuante Modelam os números reais, mas são
aproximações
Linguagens para fins científicos suportam pelo menos dois tipos ponto flutuante (float e double)
IEEE Floating-Point Standard 754
Tipos de Dados Primitivos:
Ponto Flutuante Formato:
a) Precisão Única
b) Precisão Dupla
Tipos de Dados Primitivos
Booleano Mais simples de todos
Faixa de valores Dois elementos: um para “true” zero para “false”
Pode ser implementado como bits, mas geralmente são como bytes Vantagem: legibilidade
Tipos de Dados Primitivos
Caracter Armazenados como codificações numéricas
O código mais usado: ASCII
Uma alternativa, codificação de 16-bit: Unicode Inclui caracteres da maioria das linguagens naturais Usado em Java C# e JavaScript também suportam Unicode
Tipos cadeia de caracteres
Valores consistem em seqüências de caracteres
Questões de projeto: É um tipo primitivo ou apenas um tipo especial de
vetores de caracteres? As cadeias devem ter tamanho estático ou
dinâmico?
Opções
Operações típicas:
Atribuição e cópia
Comparação (=, >, etc.)
Concatenação
Referências a subcadeias
Aplicação em Linguagens
C e C++ Não primitivo Usam vetores char e uma biblioteca de funções que
oferecem operações (string.h) SNOBOL4 (uma linguagem de manipulação de
cadeias) Primitivo
Java Primitivo através da classe String
Opções de Tamanho
Estático COBOL, FORTRAN 90, Pascal, Ada e Java classe String
Tamanho dinâmico limitado: C e C++ Um caractere especial é usado para indicar o final da
cadeia, em vez de manter seu tamanho
Dinâmico (sem máximo): SNOBOL4, Perl, JavaScript
Cadeias de Caracteres Avaliação
São importantes para a capacidade de escrita de uma linguagem
Como um tipo primitivo com tamanho estático, não é caro Por que não usá-las?
Tamanho dinâmico é mais flexível Mas o custo compensa?
Tamanho estático descritor em tempo de compilação
Tamanho dinâmico limitado Podem exigir um descritor em tempo de execução para
armazenar tanto o tamanho máximo como o tamanho atual (mas não em C e C++)
Tamanho dinâmico Exigem um descritor em tempo de execução Exigem um gerenciamento de armazenagem mais
complexo Alocação e desalocação
Implementação de Cadeias de Caracteres
Implementação de Cadeias de Caracteres Descritor em Tempo de Compilação para
cadeias estáticas
Semântica Axiomática:
Instruções de atribuição Descritor em tempo de execução para cadeias
dinâmicas limitadas
Tipos Ordinários definidos pelo Usuário
Um tipo ordinário é aquele cuja faixa de valores possíveis pode ser associada ao conjunto dos números inteiros positivos Tipos Enumeração Tipos Subfaixa
Exemplos de tipos ordinários em Java integer char boolean
Enumerações
Todos os valores possíveis, os quais se tornam constantes simbólicas, são enumerados na definição
Exemplo C# enum days {mon, tue, wed, thu, fri, sat, sun};
Enumerações
Exemplo Pascaltype tipocor = {vermelho, azul, amarelo, verde};
var cor : tipo cor;
cor := verde;
if (cor > amarelo)
Enumerações
Avaliação Vantagens em termos de legibilidade
Não é necessário codificar uma cor como um número
Vantagens em termos de confiabilidade Operações (não permite adicionar cores) Nenhum variável de enumeração será assinalada para
valores fora de sua faixa
Subfaixa
É uma subsequência de um ordinal Exemplo: 12..18 é uma subfaixa dos inteiros
Projeto em Adatype Days is (mon, tue, wed, thu, fri, sat, sun);
subtype Weekdays is Days range mon..fri;
subtype Index is Integer range 1..100;
Day1: Days;
Day2: Weekday;
Day2 := Day1;
Subfaixa
Avaliação Legibilidade
Informam ao leitor que as variáveis podem armazenar apenas uma faixa de valores
Confiabilidade A atribuição de um valor a uma variável fora de sua
faixa pode ser detectado pelo compilador como sendo um erro
Outros Tipos especiais
Vetores (array com uma dimensão)
Matrizes (array com n dimensões)
Ponteiros
Referências
Registros (estruturas)