Skip to content

Latest commit

 

History

History
97 lines (80 loc) · 2.72 KB

sistema.org

File metadata and controls

97 lines (80 loc) · 2.72 KB

Sistema de Tipos

1 Sistema de Tipos

Hardware

  • Inexistência de semântica de tipos para memória
  • Linguagens Assembly refletem esta escolha

\pause Linguagens de alto nível quase sempre associam tipos

  • Informação de contexto de variáveis
  • Checagem de erros

\pause Sistema de Tipos

  • Mecanismo para definir tipos e associar às construções
    • Tipo de uma variável
    • Tipo de uma função
    • Tipo de um literal
  • \pause Conjunto de regras sobre os tipos da linguagem
    • Equivalência
    • Compatibilidade
    • Inferência

\pause Discussão: Um sistema de tipos é essencial no projeto? \small \url{www.dlugosz.com/Perl6/web/typesystem-summary.html}

2 Domínio de valores

A um determinado tipo, temos os valores possíveis

\pause Domínio

  • Representa um conjunto (infinito e contínuo) de valores
    Exemplos: números inteiros, reais, complexos

\pause Problema: computador tem elementos discretos

  • Várias formas de discretizar um domínio contínuo
  • Alternativas
    • Padronizar a representação
    • Usar descritores de dados
  • Representação finita

3 Tipos de Dados – Definição

Possuem representação finita

\pause Dependem da forma de implementação

  • Caracteres: ASCII, UTF8, ISO-8859?
  • Inteiros: quantos bytes?
  • Reais: quantos bytes para mantissa e expoente?

\pause Associados a um conjunto de operações válidas

4 Tipos de Dados versus Domínio de valores

Problema de contínuo versus discreto

Adotar domínios simplificados

\pause Tipos Primitivos

float /* domínio discretizado dos reais */
int /* domínio dos inteiros */

\pause Tipos Definidos pelo usuário

  • Enumeração – novo domínio, valores específicos
    enum Estacao { Primavera, Verao, Outono, Inverno };
        
  • \pause Restrição – especificam um subdomínio
    mandato = 2000..2005
        

5 Como descrever um tipo?

Definir seu nome – \texttt{bool}

Definir seu domínio de valores – lógicos

Definir operações válidas

  • Aritméticas – não há para bool
  • Conjuntos – negação, conjunção, disjunção
  • Relacionais – igualdade, ordem

Definir forma de representação – \texttt{true}, \texttt{false}

Definir espaço ocupado – 1 bit ou 1 byte?