tipos de dados paradigmas de programação prof. gláucya carreiro boechat [email protected]

23
Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat [email protected]

Upload: internet

Post on 19-Apr-2015

115 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Tipos de Dados

Paradigmas de Programação

Prof. Gláucya Carreiro Boechat

[email protected]

Page 2: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 3: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 4: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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.

Page 5: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 6: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Tipos de Dados Primitivos:

Ponto Flutuante Formato:

a) Precisão Única

b) Precisão Dupla

Page 7: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 8: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 9: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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?

Page 10: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Opções

Operações típicas:

Atribuição e cópia

Comparação (=, >, etc.)

Concatenação

Referências a subcadeias

Page 11: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 12: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 13: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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?

Page 14: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 15: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Implementação de Cadeias de Caracteres Descritor em Tempo de Compilação para

cadeias estáticas

Page 16: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Semântica Axiomática:

Instruções de atribuição Descritor em tempo de execução para cadeias

dinâmicas limitadas

Page 17: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 18: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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};

Page 19: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Enumerações

Exemplo Pascaltype tipocor = {vermelho, azul, amarelo, verde};

var cor : tipo cor;

cor := verde;

if (cor > amarelo)

Page 20: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 21: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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;

Page 22: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

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

Page 23: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com

Outros Tipos especiais

Vetores (array com uma dimensão)

Matrizes (array com n dimensões)

Ponteiros

Referências

Registros (estruturas)