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
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++



SNOBOL4 (uma linguagem de manipulação de
cadeias)


Não primitivo
Usam vetores char e uma biblioteca de funções que
oferecem operações (string.h)
Primitivo
Java

Primitivo através da classe String
Opções de Tamanho

Estático


Tamanho dinâmico limitado: C e C++


COBOL, FORTRAN 90, Pascal, Ada e Java classe String
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?
Implementação de Cadeias de Caracteres

Tamanho estático


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



descritor em tempo de compilação
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

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 Pascal
type 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 Ada
type 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)
Download

tipos de dados primitivos