1 / 23

Tipos de Dados

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

lauren
Télécharger la présentation

Tipos de Dados

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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.

  5. 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

  6. Tipos de Dados Primitivos: • Ponto Flutuante • Formato: • Precisão Única • Precisão Dupla

  7. 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

  8. 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

  9. 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?

  10. Opções • Operações típicas: • Atribuição e cópia • Comparação (=, >, etc.) • Concatenação • Referências a subcadeias

  11. 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

  12. 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

  13. 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?

  14. Implementação de Cadeias de Caracteres • 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

  15. Implementação de Cadeias de Caracteres • Descritor em Tempo de Compilação para cadeias estáticas

  16. Semântica Axiomática: • Instruções de atribuição • Descritor em tempo de execução para cadeias dinâmicas limitadas

  17. 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

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

  19. Enumerações • Exemplo Pascal type tipocor = {vermelho, azul, amarelo, verde}; var cor : tipo cor; cor := verde; if (cor > amarelo)

  20. Enumerações • Avaliação • Vantagens em termos de legibilidade • Não é necessário codificar uma cor comoum 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

  21. 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;

  22. 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

  23. Outros Tipos especiais • Vetores (array com uma dimensão) • Matrizes (array com n dimensões) • Ponteiros • Referências • Registros (estruturas)

More Related