



Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
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
1 / 5
Esta página não é visível na pré-visualização
Não perca as partes importantes!
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.
-^
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).
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)
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
-^
-^
-^
-^
-^
memória por variáveis de tipos diferentes
-^
tipo corrente de uma variável
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)
-^
-^
do programa, escondendo detalhes de codificação)
-^
-^
-^
-^
-^
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