Buscar

05 - PI - Sistemas de Tipos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas	
  de	
  Tipos	
  
Renata	
  Carvalho	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Polimor0ismo	
  de	
  Inclusão	
  
•  Polimorfismo	
  de	
  inclusão	
  é	
  um	
  sistema	
  de	
  Fpo	
  
no	
  qual	
  um	
  Fpo	
  pode	
  ter	
  subFpos,	
  que	
  
herdam	
  as	
  operações	
  daquele	
  Fpo	
  
•  Tipos	
  e	
  subFpos	
  
•  Um	
  Fpo	
  T	
  é	
  um	
  conjunto	
  de	
  valores	
  equipado	
  com	
  
operações	
  
•  Um	
  subFpo	
  de	
  T	
  é	
  um	
  subconjunto	
  dos	
  valores	
  de	
  T	
  
equipado	
  com	
  as	
  mesmas	
  operações	
  de	
  T	
  
•  Todo	
  valor	
  do	
  subFpo	
  também	
  é	
  valor	
  do	
  Fpo	
  T,	
  podendo	
  
ser	
  usado	
  no	
  contexto	
  onde	
  um	
  valor	
  do	
  Fpo	
  T	
  é	
  esperado	
  
•  O	
  conceito	
  de	
  subFpos	
  é	
  uma	
  ideia	
  úFl	
  e	
  comum	
  em	
  
programação	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Polimor0ismo	
  de	
  Inclusão	
  
•  Em	
  linguagens	
  de	
  programação	
  que	
  suportam	
  
subFpos,	
  não	
  é	
  possível	
  estabelecer	
  univocamente	
  
o	
  subFpo	
  de	
  um	
  valor	
  
•  Propriedades	
  gerais	
  dos	
  subFpos	
  
•  Condição	
  necessária	
  para	
  S	
  ser	
  um	
  subFpo	
  de	
  T:S⊆T 
•  O tipo T é equipado com operações que são aplicáveis a 
todos os valores do tipo T 
•  Todas essas operações também serão aplicáveis aos 
valores do subtipo S – S herda as operações de T	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Polimor0ismo	
  de	
  Inclusão	
  
•  CompaFbilidade	
  de	
  Fpos	
  na	
  presença	
  de	
  subFpos	
  
•  V	
  :=	
  E	
  
•  T1	
  é	
  compaWvel	
  com	
  T2	
  se	
  e	
  somente	
  se	
  T1	
  e	
  T2	
  têm	
  
valores	
  em	
  comum	
  
•  Ou	
  T1	
  é	
  um	
  subFpo	
  de	
  T2	
  ou	
  T2	
  é	
  um	
  subFpo	
  de	
  T1	
  ou	
  T1	
  e	
  T2	
  
são	
  subFpos	
  de	
  outro	
  Fpo	
  qualquer	
  
•  Casos	
  de	
  interesse	
  quando	
  T1	
  e	
  T2	
  são	
  compaWveis	
  
•  T1	
  é	
  um	
  subFpo	
  de	
  T2:	
  T1	
  pode	
  ser	
  usado	
  com	
  segurança	
  num	
  
contexto	
  onde	
  um	
  valor	
  de	
  T2	
  é	
  esperado	
  –	
  não	
  precisa	
  de	
  
verificação	
  em	
  tempo	
  de	
  execução	
  
•  T1	
  não	
  é	
  subFpo	
  de	
  T2:	
  valores	
  do	
  Fpo	
  T1	
  somente	
  podem	
  ser	
  
usados	
  após	
  verificação	
  em	
  tempo	
  de	
  execução	
  para	
  
determinar	
  se	
  ele	
  também	
  é	
  um	
  valor	
  do	
  Fpo	
  T2	
  
tipo = T1 tipo = T2 
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  Parametrizados	
  
•  Um	
  Fpo	
  parametrizado	
  é	
  um	
  Fpo	
  que	
  toma	
  
outros	
  Fpos	
  como	
  parâmetros	
  
•  Pode-­‐se	
  imaginar	
  o	
  τ[]como	
  um	
  Fpo	
  
parametrizado	
  de	
  C,	
  que	
  pode	
  ser	
  especializado	
  
num	
  Fpo	
  ordinário,	
  como	
  char[],	
  ou	
  float[],	
  ou	
  
float[][],	
  pela	
  subsFtuição	
  da	
  variável	
  τ	
  por	
  um	
  Fpo	
  
real	
  
•  Todas	
  as	
  linguagens	
  se	
  programação	
  têm	
  Fpos	
  
parametrizados	
  pré-­‐definidos	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Tipos	
  Parametrizados	
  
•  Exercício	
  
•  Escreva	
  uma	
  função/procedimento	
  para	
  
“concatenar”	
  dois	
  arrays.	
  
•  UFlize	
  o	
  Fpo	
  parametrizado	
  τ[]	
  
•  Pode	
  ser	
  um	
  pseudo-­‐código	
  
•  Exemplo:	
  
•  τ1[]	
  =	
  {0,	
  1,	
  2,	
  3,	
  4};	
  
•  τ2[]	
  =	
  {9,	
  8,	
  7};	
  
•  resultado	
  =	
  {0,	
  1,	
  2,	
  3,	
  4,	
  9,	
  8,	
  7}	
   Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sobrecarga	
  
•  Um	
  idenFficador	
  está	
  sobrecarregado	
  se	
  ele	
  
denota	
  dois	
  ou	
  mais	
  procedimentos	
  num	
  
mesmo	
  escopo	
  
•  Aceitável	
  apenas	
  quando	
  a	
  chamada	
  do	
  
procedimento	
  pode	
  ser	
  feita	
  sem	
  ambiguidade	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sobrecarga	
  
•  Exemplo	
  de	
  funções	
  sobrecarregadas	
  em	
  C	
  
•  O	
  operador	
  “–”	
  em	
  C	
  denota	
  simultaneamente	
  
quatro	
  funções	
  pré-­‐definidas	
  
•  Negação	
  de	
  inteiros	
  (função	
  com	
  Fpo	
  Integer	
  à	
  Integer)	
  
•  Negação	
  de	
  ponto-­‐flutuante	
  (função	
  com	
  Fpo	
  Float	
  à	
  
Float)	
  
•  Subtração	
  de	
  inteiro	
  (função	
  com	
  Fpo	
  Integer	
  x	
  Integer	
  à	
  
Integer)	
  
•  Subtração	
  de	
  ponto-­‐flutuante	
  (função	
  com	
  Fpo	
  Float	
  x	
  
Float	
  à	
  Float)	
  
•  Nota-­‐se	
  que	
  não	
  há	
  ambiguidade,	
  pois	
  o	
  número	
  e	
  
os	
  Fpos	
  dos	
  operandos	
  determinam	
  a	
  função	
  a	
  
chamar	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Sobrecarga	
  
•  Suponha	
  um	
  idenFficador	
  F	
  denotando	
  
simultaneamente	
  funções	
  f1: S1 → T1 e f2: S2 → T2 
•  Sobrecarga	
  independente	
  de	
  contexto:	
  requer	
  que	
  S1	
  e	
  
S2	
  sejam	
  não	
  equivalentes	
  
•  A	
  função	
  a	
  ser	
  chamada	
  sempre	
  pode	
  ser	
  univocamente	
  
idenFficada	
  pelo	
  Fpo	
  do	
  parâmetro	
  real	
  
•  Sobrecarga	
  dependente	
  de	
  contexto:	
  requer	
  apenas	
  que	
  
S1	
  e	
  S2	
  sejam	
  não	
  equivalentes	
  ou	
  que	
  T1	
  e	
  T2	
  sejam	
  não	
  
equivalente	
  
•  Quando	
  S1	
  e	
  S2	
  são	
  equivalentes,	
  o	
  contexto	
  onde	
  o	
  F	
  é	
  
uFlizado	
  deve	
  ser	
  levado	
  em	
  conta	
  para	
  idenFficar	
  a	
  função	
  a	
  
ser	
  chamada	
  
•  Possibilita	
  a	
  formulação	
  de	
  expressões	
  nas	
  quais	
  a	
  função	
  a	
  
ser	
  chamada	
  não	
  pode	
  ser	
  determinada	
  univocamente	
  –	
  tais	
  
construções	
  ambíguas	
  devem	
  ser	
  proibidas	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Conversão	
  de	
  Tipos	
  
•  Uma	
  conversão	
  de	
  Fposé	
  um	
  mapeamento	
  de	
  
valores	
  de	
  um	
  Fpo	
  para	
  valores	
  
correspondentes	
  de	
  outro	
  Fpo	
  
•  Exemplos:	
  
•  Mapeamento	
  natural	
  de	
  números	
  inteiros	
  para	
  reais	
  
•  {...,	
  -­‐2	
  à	
  -­‐2.0,	
  -­‐1	
  à	
  -­‐1.0,	
  0	
  à	
  0.0,	
  +1	
  à	
  +1.0,	
  +2	
  à	
  +2.0,	
  ...}	
  
•  O	
  truncamento	
  e	
  o	
  arredondamento	
  são	
  opções	
  de	
  
conversão	
  de	
  Fpos	
  de	
  real	
  para	
  inteiros	
  
•  Mapeamento	
  de	
  caracteres	
  para	
  strings	
  de	
  tamanho	
  1	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Conversão	
  de	
  Tipos	
  
•  Conversões	
  de	
  Fpos	
  podem	
  ser	
  mapeamentos	
  
totais	
  
•  Caracteres	
  para	
  códigos	
  de	
  caracteres,	
  inteiros	
  para	
  
reais,	
  ...	
  
•  Conversão	
  de	
  Fpos	
  podem	
  ser	
  mapeamentos	
  
parciais	
  
•  Reais	
  para	
  inteiros,	
  ...	
  
•  Mapeamentos	
  parciais	
  podem	
  provocar	
  falhas	
  em	
  
programas	
   Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos	
  
UNICAP	
  –	
  UNIVERSIDADE	
  CATÓLICA	
  DE	
  PERNAMBUCO	
   Renata	
  Carvalho	
  
Conversão	
  de	
  Tipos	
  
•  Conversões	
  de	
  Fpos	
  podem	
  ser	
  explícitas	
  ou	
  
implícitas	
  
•  Um	
  cast	
  é	
  uma	
  conversão	
  de	
  Fpos	
  explícita	
  
•  Em	
  C,	
  um	
  cast	
  tem	
  a	
  forma	
  (T)E	
  
•  Uma	
  coerção	
  é	
  uma	
  conversão	
  de	
  Fpos	
  implícita,	
  
realizada	
  automaFcamente	
  sempre	
  que	
  o	
  contexto	
  
sintáFco	
  exigir	
  
•  Considere	
  a	
  expressão	
  E	
  no	
  contexto	
  do	
  Fpo	
  T	
  
	
  
Polimorfismo	
  de	
  
Inclusão	
  
Tipos	
  
Parametrizados	
  
Sobrecarga	
  
Conversão	
  de	
  
Tipos

Outros materiais