Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Tipos de Verificação e Compatibilidade em Programação de Computadores, Notas de aula de Estática

Este documento aborda os conceitos de verificação de tipos e compatibilidade de tipos em programação de computadores. Ele discute as atividades de verificação estática e dinâmica, os operadores e operandos, a coerção de tipos, erros de tipo, unions, tipagem forte e a compatibilidade de nome e estrutura. Além disso, ele menciona a importância de subprogramas na abstração de processos.

Tipologia: Notas de aula

2022

Compartilhado em 07/11/2022

Sel_Brasileira
Sel_Brasileira 🇧🇷

4.7

(96)

227 documentos

1 / 5

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Verificação de Tipo
Atividade que certifica que os operandos de um operador são de
tipos compatíveis.
São considerados operadores e operandos:
operadores usuais (aritméticos, relacionais, etc)
subprogramas (operadores) e parâmetros (operandos)
atribuição (operador) e variavel / expressão (operandos)
Os tipos de operandos são compatíveis com um operador se:
são aceitos pelo operador ou
podem ser convertidos implicitamente pelo compilador (coerção)
Erro de tipo: aplicação de um operador a um operando de tipo não
apropriado.
Verificação de tipo estática
Feita antes da execução
Amarração de tipo estática permite quase sempre a verificação de
tipo estática
Vantagem da detecção de erros em tempo de compilação: quanto
antes e erro for encontrado, menor o custo.
Desvantagem: redução da flexibilidade para o programador
Verificação de tipo deve ser dinâmica quando a mesma posição de
memória pode armazenar valores de tipos diferentes em momentos
diferentes durante a execução (record variante, union, equivalence).
Verificação de tipo dinâmica
Feita durante a execução do programa.
Amarração de tipo dinâmica exige verificação de tipo dinâmica.
Amarração de tipo dinâmica – o tipo da variável é definido
durante a execução, por um comando de atribuição
Exemplo: APL
List <- 10.5 5.3 4.1 0.0 (list é um array do tipo float)
List <- 38 (list é um inteiro escalar)
Unions
A verificação de tipo dinâmica também deve ser
feita quando a mesma posição de memória
pode armazenar valores de tipos diferentes em
momentos diferentes durante a execução
Ada e Pascal : record variante
FORTRAN: EQUIVALENCE
C, C++ : unions
pf3
pf4
pf5

Pré-visualização parcial do texto

Baixe Tipos de Verificação e Compatibilidade em Programação de Computadores e outras Notas de aula em PDF para Estática, somente na Docsity!

Verificação de Tipo

•^

Atividade que certifica que os operandos de um operador são detipos compatíveis.

-^

São considerados operadores e operandos:–

operadores usuais (aritméticos, relacionais, etc)– subprogramas (operadores) e parâmetros (operandos)– atribuição (operador) e variavel / expressão (operandos)

-^

Os tipos de operandos são compatíveis com um operador se:–

são aceitos pelo operador ou– podem ser convertidos implicitamente pelo compilador (coerção)

-^

Erro de tipo: aplicação de um operador a um operando de tipo nãoapropriado.

Verificação de tipo estática

-^

Feita antes da execução

-^

Amarração de tipo estática permite quase sempre a verificação detipo estática

-^

Vantagem da detecção de erros em tempo de compilação: quantoantes e erro for encontrado, menor o custo.

-^

Desvantagem: redução da flexibilidade para o programador

-^

Verificação de tipo deve ser dinâmica quando a mesma posição dememória pode armazenar valores de tipos diferentes em momentosdiferentes durante a execução (record variante, union, equivalence).

Verificação de tipo dinâmica

•^

Feita durante a execução do programa.

-^

Amarração de tipo dinâmica exige verificação de tipo dinâmica.

-^

Amarração de tipo dinâmica – o tipo da variável é definidodurante a execução, por um comando de atribuição

-^

Exemplo: APLList <- 10.5 5.3 4.1 0.0 (list é um array do tipo float)List <- 38 (list é um inteiro escalar)

Unions

•^

A verificação de tipo dinâmica também deve serfeita quando a mesma posição de memóriapode armazenar valores de tipos diferentes emmomentos diferentes durante a execução

•^

Ada e Pascal : record variante

•^

FORTRAN: EQUIVALENCE

•^

C, C++ : unions

Exemplo – record variante (Pascal)^ type

shape = (circle, triangle, rectangle);colors = (red, green blue);figure =^ record

filled: boolean;color: colors; case

form : shape

of

circle: (diameter : real);triangle: (leftside : integer;

rightside : integer;angle : real);

rectangle : (side1 : integer;

side2 : integer)

end;

var

myfigure : figure;

filled

collor

form (discriminante)

triangle

circle

rectangle

Tipagem forte

-^

Tanto na verificação de tipo estática quanto nadinâmica, alguns erros não podem ser encontrados.

-^

A capacidade da linguagem de sempre detectarerros está relacionada ao conceito de tipagem forte.

-^

Uma linguagem é considerada

fortemente tipada

se erros de tipo podem sempre ser detectados.

-^

Isso exige que os tipos de todos os operandospossam ser determinados, em tempo de compilaçãoou de execução.

-^

FORTRAN não é fortemente tipada– não faz verificação de tipo entre parâmetros formais e reais– EQUIVALENCE permite acesso a mesma posição de

memória por variáveis de tipos diferentes

-^

Pascal é quase fortemente tipada– record variante permite omissão do tag que armazena o

tipo corrente de uma variável

Equivalência por declaração•

As regras de compatibilidade das linguagens são muitoasvezes definidas combinando os dois métodos.

-^

Compatibilidade por estrutura é mais usada, exceto emalgumas situações específicas, como a equivalência pordeclaração:typetype1 = array [1..10] of integer;type2 = type1;

-^

Se um tipo é definido com o nome de outro tipo, os dois sãocompatíveis, mas não são compatíveis por nome.

•^

C usa equivalência estrutural para quase todos os tipos, excetotipos estruturados (record, unions)

-^

Para os tipos estruturados usa equivalência por declaração.

-^

C++ usa equivalência de nome (typedef não define um novo tipo,apenas define um novo nome para um tipo existente).

-^

Linguagens OO (C++, JAVA) devem definir regras para implementarcompatibilidade entre objetos e sua relação com o mecanismo deherança (discutido no item de POO)

Subprogramas

-^

Duas formas de abstração são possíveis emlinguagens de programação: abstração de processoe abstração de dados.

-^

Abstração de processos: aparece na forma desubprogramas, que permitem:– o reuso de código– economia de tempo e de memória.– facilitar a leitura do programa (permite ver a estrutura lógica

do programa, escondendo detalhes de codificação)

Características dos subprogramas

estudados

-^

Cada subprograma tem um único ponto de entrada

-^

A unidade chamadora é suspensa durante aexecução da unidade chamada – existe um únicosubprograma em execução a cada momento

-^

O controle sempre retorna a unidade chamadoraquando acaba a execução da unidade chamada

-^

Outras formas de subprogramas:– corotinas– unidades concorrentes

-^

Métodos de POO: semelhantes aossubprogramas

-^

Principais diferenças:– forma de chamada– associação com classes e objetos

-^

Semelhanças:– Passagem de parâmetros– Variáveis locais