Linguagens de Programação

Propaganda
Linguagens de Programação
Conceitos e Técnicas
Valores e Tipos de Dados
Prof. Isabel Cafezeiro
[email protected]
Linguagens de Programação
Valores &
tipos de
dados
Valor (dado)
É qualquer entidade que existe durante uma computação.
Pode ser avaliado,
armazenado,
incorporado em estrutura de dados,
passado como argumento,
retornado em função.
Linguagens de Programação
Valores &
tipos de
dados
Que tipos de valores suporta a linguagem
Pascal?
Números inteiros e reais,
caracteres,
seqüências de caracteres,
valores lógicos,
registros,
arrays,
ponteiros,
....
Linguagens de Programação
Valores &
tipos de
dados
Que tipos de valores suporta a linguagem
C?
Números inteiros e reais,
caracteres,
seqüências de caracteres,
valores lógicos,
registros,
arrays,
ponteiros,
....
... mas são simulados
através de outros
tipos de valores....
Linguagens de Programação
Valores &
tipos de
dados
O que vem a ser um tipo ?
É um conjunto de Valores.
Inteiros !
Reais !
Caracteres !
{ ... , -2 , -1 , 0 , 1 , 2 , ... }
{ ... , -2.0, ... , -1.3, ... , 0.0 , ... ,1.7, ... , 2.99 , ... }
{ 'a' , ... , 'z' , '1' , '2' , ... }
{ 0.0, ... ,1.5 , ... , 'a' , ... , 'z' , 1 , 2 , ... }
???
Linguagens de Programação
Valores &
tipos de
dados
O que vem a ser um tipo ?
É uma coleção de valores que têm alguma
propriedade em comum.
Coleção de valores que exibe comportamento uniforme nas
operações associadas ao tipo.
tipo = valores + operações
Linguagens de Programação
O que vem a ser um tipo ?
tipo = valores + operações
T1 = <C1,O1> e T2 = <C2,O2> ?
Valores &
tipos de
dados
... Vetores no plano real
(conceito algébrico) e
Números Complexos:
representação por pares
de reais...
... Diversas implementações
Se C1 = C2 e O1 ≠ O2 então T1 ≠ T2 ?
Se C1 ≠ C2 e O1 = O2 então T1 ≠ T2 ?
de inteiros em C: mesmas
operações....
Linguagens de Programação
Porquê tipos?
Em Matemática: tipos para evitar paradoxos
Teoria dos conjuntos:
Paradoxo de Russel
R={x|x∉x}
R∈R?
Valores &
tipos de
dados
Linguagens de Programação
Porquê tipos?
Em Computação:
Abstração: tipos ajudam a estruturar a solução do problema.
Tipos ajudam a compreender expressões indicando o
conjunto de valores que podem ser denotados por ela
Tipos ajudam a detectar erros: operações aplicadas a
valores impróprios
Tipos ajudam a gerar códigos eficientes: representação
adequada de valores
Valores &
tipos de
dados
Linguagens de Programação
Valores &
tipos de
dados
Em Computação:
Linguagens “sem tipos” (com um único tipo)
A informação a
respeito do tipo
está amarrada ao
valor, e não ao
identificador.
LISP
PERL
SELF
(define a 1)
Erro de execução!
(define b 'casa')
Em tempo de execução verifica-se
(+ a b)
que o valor que a e b guardam não
são compatíveis com a operação de
soma
Linguagens de Programação
Verificação Estática de Tipos
Tempo de compilação
erros detectados “cedo”
programa não executa se tiver erros de tipo
var i: integer;
a: char
begin
readln(i);
readln(a);
writeln(i+a);
end.
A informação a
respeito do tipo
está amarrada ao
identificador,
usualmente, pela
declaração de
variáveis.
erro de compilação!
Em tempo de compilação sabese que as variáveis i e a não
podem ser operadas com +
Valores &
tipos de
dados
Linguagens de Programação
Valores &
tipos de
dados
Verificação Dinâmica de Tipos
Tempo de execução
Erros eventualmente detectados na execução.
Todos os caminhos da execução devem ser testados para
garantir a ausência de erros
Suponha a não definido:
(if (= 1 1) 2 a)
(if (= 1 1) a 2)
Roda sem erro !
Dá erro de execução !
Linguagens de Programação
Valores &
tipos de
dados
Verificação Dinâmica de Tipos
(define segundo(lambda(l) (car (cdr l))))
(segundo ́(1 2 3))
(segundo ́( ́(1 2 3) (4 5 6)))
(segundo ́(“manga” “abacaxi” 5 6))
Lista de números
Lista de listas
Lista de strings e
números
Linguagens de Programação
Verificação de Tipos
estática:
eficiência
segurança
flexibilidade
segurança
flexibilidade
dinâmica:
eficiência
Valores &
tipos de
dados
Linguagens de Programação
Valores &
tipos de
dados
Valor do tipo:
o valor pertence ao conjunto de valores definido pelo tipo
Expressão do tipo:
o resultado da expressão pertence ao conjunto de valores definido
pelo tipo
Cardinalidade do tipo:
cardinalidade do conjunto de valores do tipo.
Linguagens de Programação
Valores &
tipos de
dados
Hierarquia de tipos:
Tipos
Atômicos
Compostos
Inteiros
Enumerados
Caracteres
Ponto Flutuantes
Booleanos
Decimais
Intervalos
Recursivos
Strings
Uniões
Conjuntos Potência
Mapeamentos
Ponteiros
Livres
Finitos
Disjuntas
Produtos Cartesianos
Funções
Linguagens de Programação
Valores &
tipos de
dados
Tipos Primitivos (Atômicos):
seus valores não podem ser decompostos em valores mais simples.
O conjunto de tipos primitivos costuma revelar o propósito da LP.
Linguagem de
aplicações
numéricas !!!
Tipos atômicos de FORTRAN:
inteiros
reais
complexos
...
Linguagens de Programação
Valores &
tipos de
dados
Tipos Primitivos (Atômicos):
seus valores não podem ser decompostos em valores mais simples.
Sofrem limitações diretas do hardware.
Sofrem diferenças entre implementações da mesma
linguagem
Inteiros em Pascal:
[-32768 .. 32767]
Inteiros em C++:
[-65536 .. 65536]
... em alguns compiladores !!!
Linguagens de Programação
Valores &
tipos de
dados
Tipos Primitivos (Atômicos):
seus valores não podem ser decompostos em valores mais simples.
Built in (embutidos)
Pré definidos na linguagem
Definidos
Definidos pelo programador
Discretos
Em correspondência direta com os inteiros
Linguagens de Programação
Built In em Pascal:
Atômicos
Reais
Inteiros
Caracteres
Enumerados
Booleanos
Intervalos
Valores &
tipos de
dados
Linguagens de Programação
Definidos em Pascal:
Atômicos
Reais
Inteiros
Caracteres
Enumerados
Booleanos
Intervalos
Valores &
tipos de
dados
Linguagens de Programação
Discretos em Pascal:
Valores &
tipos de
dados
Atômicos
Reais
Inteiros
Caracteres
Enumerados
Booleanos
Intervalos
Ótimos para
indexar arrays e
loops definidos!!!
Download