Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat...

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

Transcript of Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat...

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)