PLP_slides - Pré P1 - Schneider
53 pág.

PLP_slides - Pré P1 - Schneider


DisciplinaProgramação I20.499 materiais239.738 seguidores
Pré-visualização3 páginas
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Paradigmas de Linguagens de Programação
Tipos de Dados
Cristiano Lehrer
http://www.ybadoo.com.br/
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Introdução (1/2)
\u25cf 1956:
\u25cf FORTRAN I
\u2013 INTEGER, REAL, arrays.
\u25cf 1983:
\u25cf ADA
\u2013 Usuário pode criar um único tipo para cada categoria de variáveis no espaço 
de problemas e deixar o sistema verificar os tipos.
\u25cf É conveniente pensar nas variáveis em termos de descritores:
\u25cf Um descritor é o conjunto dos atributos de uma variável.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Introdução (2/2)
\u25cf Questões de projeto para todos os tipos de dados:
\u25cf Qual é a sintaxe de referência a variáveis?
\u25cf Que operadores são definidos e como eles são especificados?
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos de Dados Primitivos
\u25cf Tipos de dados não definidos em termos de outros do mesmo nome 
são chamados tipos de dados primitivos:
\u25cf Tipo numérico:
\u2013 Inteiro.
\u2013 Ponto flutuante.
\u2013 Decimal.
\u25cf Tipo lógico.
\u25cf Tipo caractere.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Numérico \u2013 Inteiro
\u25cf Quase sempre uma reflexão exata do hardware, de modo que o 
mapeamento é trivial:
\u25cf C \u2192 seis tipos diferentes de inteiros:
\u2013 int, short int, long int, unsigned int, unsigned short int, unsigned long int
\u25cf Java \u2192 quatro tipos diferentes de inteiros:
\u2013 byte, short, int e long
\u25cf Representação de números negativos:
\u25cf Complemento de dois:
\u2013 Conveniente para as operações de adição e subtração.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Numérico \u2013 Ponto Flutuante (1/2)
\u25cf Modela números reais, mas somente como aproximações:
\u25cf Linguagens para uso científico suportam ao menos dois tipos de ponto 
flutuante, algumas vezes mais:
\u2013 float e double.
\u25cf Em geral, uma reflexão exata do hardware, mas não sempre.
\u25cf Algumas linguagens permitem a especificação da precisão no código:
\u2013 ADA.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Numérico \u2013 Ponto Flutuante (2/2)
Formatos de ponto flutuante IEEE: (a) precisão simples, (b) precisão dupla.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Numérico \u2013 Decimal
\u25cf Para aplicações de sistemas comerciais:
\u25cf Armazena um número fixo de dígitos decimais, com o ponto decimal em 
uma posição fixa no valor.
\u25cf Vantagem:
\u2013 Capacidade de armazenar, com precisão, valores decimais.
\u25cf Desvantagens:
\u2013 Faixa de valores é restrita porque não se permite nenhum expoente.
\u2013 Representação dos mesmos na memória é um desperdício:
\u25cf Binary Coded Decimal (BCD) \u2013 strings de dígitos decimais.
\u25cf Exemplos de linguagens:
\u2013 COBOL.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Lógico
\u25cf Sua faixa de valores tem somente dois elementos:
\u25cf Um para verdadeiro e um para falso.
\u25cf Foram introduzidos no ALGOL 60 e têm sido incluídos na maioria das 
linguagens a partir de então.
\u25cf Exceção popular é o C, que utiliza expressões numéricas.
\u25cf Poderia ser implementada como bits, mas usualmente como bytes.
\u25cf Vantagem: 
\u25cf Legibilidade.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Caractere
\u25cf Armazenados como codificações numéricas:
\u25cf ASCII:
\u2013 American Standard Code for Information Interchange.
\u2013 Codificação em oito bits.
\u25cf UNICODE:
\u2013 Codificação em dezesseis bits.
\u2013 Suporte para a maioria das linguagens naturais internacionais.
\u2013 O Java foi a primeira linguagem a introduzir o conjunto de caracteres 
UNICODE.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos String de Caracteres (1/6)
\u25cf Um tipo string de caracteres é aquele cujos valores consistem em 
seqüencias de caracteres:
\u25cf Questões de projeto:
\u2013 É um tipo primitivo ou apenas um tipo especial de array?
\u2013 O tamanho dos objetos é estático ou dinâmico?
\u25cf Operações:
\u2013 Atribuição.
\u2013 Comparação.
\u2013 Concatenação.
\u2013 Referência a substrings.
\u2013 Casamento de padrões (pattern matching).
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos String de Caracteres (2/6)
\u25cf Exemplos em linguagens de programação:
\u25cf ADA:
\u2013 STRING é um tipo que é predefinido como um array unidimensional de 
elementos CHARACTER.
\u2013 Referência a substrings, concatenação, operadores relacionais e atribuição 
são oferecidos aos tipos STRING.
\u25cf C e C++:
\u2013 Usam arrays de char para armazenar strings de caracteres.
\u2013 Biblioteca string.h fornece uma coleção de operações sobre strings.
\u25cf Java:
\u2013 String é um objeto responsável pela representação e operações sobre 
strings.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos String de Caracteres (3/6)
\u25cf Opções de tamanho da string:
\u25cf string de tamanho estático:
\u2013 O tamanho da string é especificado na declaração.
\u2013 FORTRAN 77, COBOL, PASCAL e ADA.
\u25cf string de tamanho dinâmico limitado:
\u2013 O tamanho máximo da string é especificado na declaração.
\u2013 C e C++.
\u25cf string de tamanho dinâmico:
\u2013 Exige o overhead da alocação e desalocação dinâmica do armazenamento.
\u2013 SNOBOL4 e PERL.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos String de Caracteres (4/6)
\u25cf Avaliação:
\u25cf Ajudam a redigibilidade.
\u25cf Como um tipo primitivo com tamanho estático, eles são fáceis de 
implementar \u2013 então porque não?
\u25cf Tamanho dinâmico é bom, mas vale a pena (custo)?
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos String de Caracteres (5/6)
\u25cf Implementação:
\u25cf Tamanho estático:
\u2013 Descrição em tempo de compilação.
\u25cf Tamanho dinâmico limitado:
\u2013 Pode necessitar uma descrição em tempo de execução para tamanho:
\u25cf Não em C e C++, onde o final de um string é marcado com o caractere nulo.
\u25cf Tamanho dinâmico:
\u2013 Necessita de uma descrição em tempo de execução.
\u2013 Alocação é o maior problema da implementação.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos String de Caracteres (6/6)
Descritor em tempo de compilação
(compile­time) para strings estáticas.
Descritor em tempo de compilação (compile­time)
para strings dinâmicas limitadas.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipos Ordinais
\u25cf Um tipo ordinal é aquele cuja faixa de valores possíveis pode ser 
facilmente associada ao conjunto dos números inteiros positivos:
\u25cf Tipo enumeração.
\u25cf Tipo subfaixa.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Enumeração (1/2)
\u25cf Um tipo enumeração é aquele em que todos os valores possíveis, 
os quais se tornam constantes simbólicas, são enumerados na 
definição:
\u25cf Questão de projeto:
\u2013 Uma constante simbólica deveria ser possível estar em mais de uma 
definição de tipo?
\u25cf Exemplo em ADA:
\u2013 type DIAS is (Seg, Ter, Qua, Qui, Sex, Sab, Dom);
\u25cf C e C++:
\u2013 Podem ser usadas como índices de arrays, como variáveis num for, 
seletores em um case.
\u25cf Java:
\u2013 Os tipos enum do C e C++ não estão incluídos.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Enumeração (2/2)
\u25cf Avaliação:
\u25cf Auxiliam a legibilidade:
\u2013 Não é necessário codificar uma cor como um número.
\u25cf Auxiliam a confiabilidade:
\u2013 Compilador pode verificar operações e faixa de valores.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/
Tipo Subfaixa
\u25cf Um tipo subfaixa é uma subsequencia de um ordinal:
\u25cf Exemplo em Pascal:
\u2013 type maiuscula = 'A'..'Z';
\u2013 type indice = 1..100;
\u25cf Avaliação de tipo sub-faixa:
\u2013 Auxilia a legibilidade.
\u2013 Confiabilidade:
\u25cf Aumenta pois atribuição de valores fora da faixa é detectada como erro de 
execução.
Tipos de Dados
Paradigmas de Linguagens de Programação
http://www.ybadoo.com.br/