Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Aula 4 Nomes, Vinculações, Tipos e Escopos
Universidade do Vale do Rio dos Sinos Aula 4 Nomes, Vinculações, Tipos e Escopos < Página da Disciplina > <Endereço do Professor >
2
SUMÁRIO 1 – Introdução
3
SUMÁRIO 1 – Introdução 2 – Nomes
4
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis
5
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
6
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos
7
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos 6 – Tipificação forte
8
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos 6 – Tipificação forte 7 – Compatibilidade de tipos
9
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos 6 – Tipificação forte 7 – Compatibilidade de tipos 8 – Escopo
10
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos 6 – Tipificação forte 7 – Compatibilidade de tipos 8 – Escopo 9 –Escopo e tempo de vida
11
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos 6 – Tipificação forte 7 – Compatibilidade de tipos 8 – Escopo 9 –Escopo e tempo de vida 10 – Ambientes de referenciamento
12
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos 6 – Tipificação forte 7 – Compatibilidade de tipos 8 – Escopo 9 –Escopo e tempo de vida 10 – Ambientes de referenciamento 11 – Constantes nomeadas
13
SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação
5 – Verificação de tipos 6 – Tipificação forte 7 – Compatibilidade de tipos 8 – Escopo 9 –Escopo e tempo de vida 10 – Ambientes de referenciamento 11 – Constantes nomeadas 12 – Inicialização de variáveis
14
NOMES 1 – Formas de nomes: Distinção entre maiúsculas e minúsculas
15
NOMES 1 – Formas de nomes: Distinção entre maiúsculas e minúsculas
2 – Palavras especiais: Palavra Chave x Palavra Reservada
16
NOMES 1 – Formas de nomes: Distinção entre maiúsculas e minúsculas
2 – Palavras especiais: Palavra Chave x Palavra Reservada => FORTRAN INTEGER REAL REAL INTEGER
17
NOMES 1 – Formas de nomes: Distinção entre maiúsculas e minúsculas
2 – Palavras especiais: Palavra Chave x Palavra Reservada => FORTRAN INTEGER REAL REAL INTEGER => PL/1 if then then then = else; else else = then;
18
VARIÁVEIS 1 – Atributos: - Nome - Endereço - Valor - Tipo
- Tempo de vida - Escopo
19
VARIÁVEIS 1 – Atributos: 2 – Aliases - Nome - Endereço - Valor - Tipo
- Tempo de vida - Escopo 2 – Aliases
20
VARIÁVEIS 1 – Atributos: 2 – Aliases 3 – Células de memória: - Físicas
- Nome - Endereço - Valor - Tipo - Tempo de vida - Escopo 2 – Aliases 3 – Células de memória: - Físicas - Abstratas
21
VINCULAÇÃO 1 – Tipos - Estática: Tempo de compilação
- Dinâmica: Tempo de execução
22
VINCULAÇÃO 1 – Tipos - Estática: Tempo de compilação
- Dinâmica: Tempo de execução 2 – Vinculação de tipos - Estática: Declaração explícita ou implícita - Dinâmica: - Inferência de tipos
23
VINCULAÇÃO 1 – Tipos - Estática: Tempo de compilação
- Dinâmica: Tempo de execução 2 – Vinculação de tipos - Estática: Declaração explícita ou implícita Declaração explícita: Instrução do programa Declaração implícita: Baseada em uma convenção Primeira ocorrência estabelece o tipo - Dinâmica: - Inferência de tipos
24
VINCULAÇÃO A := B + C; 1 – Tipos - Estática: Tempo de compilação
- Dinâmica: Tempo de execução 2 – Vinculação de tipos - Estática: Declaração explícita ou implícita Declaração explícita: Instrução do programa Declaração implícita: Baseada em uma convenção Primeira ocorrência estabelece o tipo - Dinâmica: Definição (múltiplas) e verificação durante execução A := B + C; - Inferência de tipos
25
VINCULAÇÃO Modelo de memória em tempo de execucão Memória Baixa
Alta
26
VINCULAÇÃO Código Modelo de memória em tempo de execucão Memória Baixa
Alta
27
VINCULAÇÃO Código Modelo de memória em tempo de execucão Dados
Baixa Código Dados Estáticos Memória Alta
28
VINCULAÇÃO Código Modelo de memória em tempo de execucão Dados
Baixa Código Dados Estáticos Pilha Memória Alta
29
VINCULAÇÃO Código Modelo de memória em tempo de execucão Dados
Baixa Código Dados Estáticos Pilha Memória Alta Heap
30
VINCULAÇÃO 3 – Vinculação de armazenamento
- Alocação e desalocação de variáveis (pool de memória)
31
VINCULAÇÃO 3 – Vinculação de armazenamento
- Alocação e desalocação de variáveis (pool de memória) - Tempo de vida de uma variável
32
VINCULAÇÃO 3 – Vinculação de armazenamento
- Alocação e desalocação de variáveis (pool de memória) - Tempo de vida de uma variável - Categorias de armazenamento de variáveis escalares - Variáveis Estáticas: Globais e STATICs
33
VINCULAÇÃO Código Modelo de memória em tempo de execucão Dados
Baixa Código Dados Estáticos Pilha Memória Alta Heap
34
VINCULAÇÃO 3 – Vinculação de armazenamento
- Alocação e desalocação de variáveis (pool de memória) - Tempo de vida de uma variável - Categorias de armazenamento de variáveis escalares - Variáveis Estáticas: Globais e STATICs - Variáveis Stack-Dinâmicas (RAs): - Tipos estaticamente vinculados - Elaboração em tempo de execução
35
VINCULAÇÃO Código Modelo de memória em tempo de execucão Dados
Baixa Código Dados Estáticos Pilha Memória Alta Heap
36
VINCULAÇÃO 3 – Vinculação de armazenamento
- Alocação e desalocação de variáveis (pool de memória) - Tempo de vida de uma variável - Categorias de armazenamento de variáveis escalares - Variáveis Estáticas: Globais e STATICs - Variáveis Stack-Dinâmicas (RAs): - Tipos estaticamente vinculados - Elaboração em tempo de execução - Variáveis Heap-Dinâmicas Explícitas - Instruções explícitas (alocação / desalocação) - Garbage Collection (Java) - Acessadas por ponteiros (C) ou referências (Java)
37
VINCULAÇÃO Código Modelo de memória em tempo de execucão Dados
Baixa Código Dados Estáticos Pilha Memória Alta Heap
38
VINCULAÇÃO 3 – Vinculação de armazenamento
- Variáveis Estáticas: Globais e STATICs - Variáveis Stack-Dinâmicas (RAs) - Variáveis Heap-Dinâmicas Explícitas - Variáveis Heap-Dinâmicas Implícitas - Vinculadas ao armazenamento na atribuição - Todos os atributos são vinculados na atribuição
39
VINCULAÇÃO Código Modelo de memória em tempo de execucão Dados
Baixa Código Dados Estáticos Pilha Memória Alta Heap
40
TIPOS 1 – Verificação de tipos 2 – Tipificação forte
3 – Compatibilidade de tipos
41
TIPOS 1 – Verificação de tipos 2 – Tipificação forte
- Estática ou dinâmica - Coerção - Relação entre verificação e vinculação - Quantos antes, melhor 2 – Tipificação forte 3 – Compatibilidade de tipos
42
TIPOS 1 – Verificação de tipos 2 – Tipificação forte
- Estática ou dinâmica - Coerção - Relação entre verificação e vinculação - Quantos antes, melhor 2 – Tipificação forte - Erros de tipo sempre são detectados - Enfraquecida pela coerção 3 – Compatibilidade de tipos
43
TIPOS 1 – Verificação de tipos 2 – Tipificação forte
- Estática ou dinâmica - Coerção - Relação entre verificação e vinculação - Quantos antes, melhor 2 – Tipificação forte - Erros de tipo sempre são detectados - Enfraquecida pela coerção 3 – Compatibilidade de tipos - Compatibilidade de nome e de estrutura - Discussão sobre Pascal, C, C++ e Java
44
ESCOPO 1 – Escopo estático
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas
45
ESCOPO 1 – Escopo estático
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2;
46
ESCOPO 1 – Escopo estático
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2;
47
ESCOPO 1 – Escopo estático
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2;
48
ESCOPO 1 – Escopo estático
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2;
49
ESCOPO 1 – Escopo estático
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2;
50
ESCOPO 1 – Escopo estático 2 – Blocos
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas 2 – Blocos - Variáveis stack-dinâmicas - Blocos não baseado em procedimentos: Pascal, C e Java
51
ESCOPO 1 – Escopo estático 2 – Blocos
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas 2 – Blocos - Variáveis stack-dinâmicas - Blocos não baseado em procedimentos: Pascal, C e Java if (list[i] < list[j]) { int temp; temp = list[i]; list[i] = list[j]; list[j] = temp; }
52
ESCOPO 1 – Escopo estático 2 – Blocos 3 – Avaliação do escopo estático
- Hierarquia de escopos: Pascal, C, C++ e Java - Pai estático e Ancestrais estáticos - Declarações ocultas 2 – Blocos - Variáveis stack-dinâmicas - Blocos não baseado em procedimentos: Pascal, C e Java 3 – Avaliação do escopo estático - Demasiada visibilidade (variáveis e procedimentos) - Variáveis globais
53
ESCOPO 4 – Escopo dinâmico - Baseado na seqüência de chamadas
- Escopo determinado em tempo de execução - Pai dinâmico e Ancestrais dinâmicos
54
ESCOPO 4 – Escopo dinâmico - Baseado na seqüência de chamadas
- Escopo determinado em tempo de execução - Pai dinâmico e Ancestrais dinâmicos procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2; ...
55
ESCOPO 4 – Escopo dinâmico - Baseado na seqüência de chamadas
- Escopo determinado em tempo de execução - Pai dinâmico e Ancestrais dinâmicos procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2; ... sub2 sub1
56
ESCOPO 4 – Escopo dinâmico - Baseado na seqüência de chamadas
- Escopo determinado em tempo de execução - Pai dinâmico e Ancestrais dinâmicos procedure big; var x : integer; procedure sub1; begin ..x.. end; procedure sub2; ... big sub1
57
ESCOPO 4 – Escopo dinâmico 5 – Avaliação do escopo dinâmico
- Baseado na seqüência de chamadas - Escopo determinado em tempo de execução - Pai dinâmico e Ancestrais dinâmicos 5 – Avaliação do escopo dinâmico - Incapacidade de realizar análise estática de tipos - Confusão no significado das referências (documentação) - Eficiência no acesso é menor do que escopo estático
58
COMPLEMENTO 1 – Escopo x Tempo de vida
- Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas
59
COMPLEMENTO 1 – Escopo x Tempo de vida
- Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas void printheader() { } void compute() int sum; printheader();
60
COMPLEMENTO 1 – Escopo x Tempo de vida
- Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas void printheader() { } void compute() int sum; printheader();
61
COMPLEMENTO 1 – Escopo x Tempo de vida
- Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas 2 – Ambientes de referenciamento - Subprograma ativo - Escopo dinâmico: Locais + Subprogramas ativos
62
COMPLEMENTO 1 – Escopo x Tempo de vida
- Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas 2 – Ambientes de referenciamento - Subprograma ativo - Escopo dinâmico: Locais + Subprogramas ativos 3 – Constantes nomeadas
63
COMPLEMENTO 1 – Escopo x Tempo de vida
- Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas 2 – Ambientes de referenciamento - Subprograma ativo - Escopo dinâmico: Locais + Subprogramas ativos 3 – Constantes nomeadas 4 – Inicializacão de variáveis
64
EXERCÍCIOS 2 – Algumas linguagens de programação são sem tipos.
Quais são as vantagens e desvantagens evidentes de não se ter tipos em uma linguagem?
65
EXERCÍCIOS 2 – Algumas linguagens de programação são sem tipos.
Quais são as vantagens e desvantagens evidentes de não se ter tipos em uma linguagem? 5 – A vinculação dinâmica de tipos está estreitamente relacionada com as variáveis heap-dinâmicas. Explique essa relação.
66
EXERCÍCIOS 2 – Algumas linguagens de programação são sem tipos.
Quais são as vantagens e desvantagens evidentes de não se ter tipos em uma linguagem? 5 – A vinculação dinâmica de tipos está estreitamente relacionada com as variáveis heap-dinâmicas. Explique essa relação. 6 – Descreve uma situação onde uma variável sensível à história em um subprograma é útil.
67
EXERCÍCIOS 8 – Escopo estático x Escopo dinâmico.
12 – Blocos 13 – Escopo dinâmico 14 – Escopo dinâmico
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.