tipos de dados paradigmas de programação prof. gláucya carreiro boechat [email protected]
TRANSCRIPT
![Page 2: Tipos de Dados Paradigmas de Programação Prof. Gláucya Carreiro Boechat glaucyacboechat@gmail.com](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc141497959413d8df53a/html5/thumbnails/23.jpg)
Outros Tipos especiais
Vetores (array com uma dimensão)
Matrizes (array com n dimensões)
Ponteiros
Referências
Registros (estruturas)