A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro

Apresentações semelhantes


Apresentação em tema: "Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro"— Transcrição da apresentação:

1 Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br

2 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos Permite verificar quando um tipo pode ser utilizado diretamente no lugar de outro sem conversões!!! Necessária em situações de: passagens de parâmetros, atribuições,... dentre outras.

3 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos Necessária em situações de: passagens de parâmetros, atribuições,... dentre outras. type complexo = record re,im: real end; ponto = record x,y: real end; function F (w: complexo): boolean; begin w.re := 10.0; w.im := 20.0; F := true; end; var c: complexo; p: ponto; begin p.x := 1.0; p.y := 2.0; if F (p) then writeln('OK!'); end. Necessária em situações de:

4 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos Necessária em situações de: passagens de parâmetros, atribuições,... dentre outras. type complexo = record re,im: real end; ponto = record x,y: real end; function F (w: complexo): boolean; begin w.re := 10.0; w.im := 20.0; F := true; end; var c: complexo; p: ponto; begin p.x := 1.0; p.y := 2.0; if F (p) then writeln('OK!'); end. Necessária em situações de: Erro em Pascal!!! Tipos incompatíveis!!!

5 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos Necessária em situações de: passagens de parâmetros, atribuições,... dentre outras. Necessária em situações de: type complexo = record re,im: real end; ponto = record x,y: real end; var c: complexo; p: ponto; begin p.x := 1.0; p.y := 2.0; c := p; end.

6 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos Necessária em situações de: passagens de parâmetros, atribuições,... dentre outras. Necessária em situações de: type complexo = record re,im: real end; ponto = record x,y: real end; var c: complexo; p: ponto; begin p.x := 1.0; p.y := 2.0; c := p; end. Erro em Pascal!!! Tipos incompatíveis!!!

7 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos (em linguagens de tipagem estática) Nominal T ≡ T’ sse possuem o mesmo nome Estrutural T e T’ são primitivos: T ≡ T’ sse T = T’ T = A x B e T’= A’ x B’: T ≡ T’ sse A ≡ A’ e B ≡ B’ T = A + B e T’= A’ + B’: T ≡ T’ sse A ≡ A’ e B ≡ B’ T = A → B e T’= A’ → B’: T ≡ T’ sse A ≡ A’ e B ≡ B’

8 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos (em linguagens de tipagem estática) typedef float quilometros; typedef float milhas; main() { milhas m = 200.0; quilometros q = 300.0; m = q; } Sem erro!!! Equivalência estrutural Quando a criação do tipo é anterior ao o enunciado de declaração, a equivalência costuma ser estrutural

9 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos (em linguagens de tipagem estática) typedef struct {float x;} quilometros; typedef struct {float y;} milhas; main() { milhas m; quilometros q; m = q; } Erro!!! Equivalência nominal ! Quando o tipo é criado no próprio enunciado de declaração, a equivalência costuma ser nominal

10 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos (em linguagens de tipagem estática) typedef float quilometros; typedef float milhas; main() { milhas m = 200.0; quilometros q = 300.0; m = q; } Sem erro!!! Equivalência estrutural typedef struct {float x;} quilometros; typedef struct {float y;} milhas; main() { milhas m; quilometros q; m = q; } Erro!!! Equivalência nominal ! É necessário avaliar caso a caso na mesma linguagem !!!

11 Linguagens de Programação Valores & tipos de dados Equivalência de Tipos (em linguagens de tipagem estática) Nominal manutenibilidade flexibilidade Estrutural manutenibilidade flexibilidade

12 Linguagens de Programação Valores & tipos de dados Type Completeness Principle Nenhuma operação deveria ser arbitrariamente restringida no tipo de seus operandos Qualquer restrição só se justifica em termos da aplicação à qual se destina ou do conceito que a operação representa !!

13 Linguagens de Programação Valores & tipos de dados Type Completeness Principle Nenhuma operação deveria ser arbitrariamente restringida no tipo de seus operandos Porque que as funções em Pascal não podem retornar/receber vetores ou registros diretamente? Porque que os procedimentos em Pascal não podem ser usados como componentes de outros valores ou atribuídos? Para não causar dificuldades na implementação da linguagem? Para não causar incoerências com a definição matemática de função?


Carregar ppt "Linguagens de Programação Conceitos e Técnicas Valores e Tipos de Dados Prof. Isabel Cafezeiro"

Apresentações semelhantes


Anúncios Google