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

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

1 Aula 4 Nomes, Vinculações, Tipos e Escopos Universidade do Vale do Rio dos Sinos

Apresentações semelhantes


Apresentação em tema: "1 Aula 4 Nomes, Vinculações, Tipos e Escopos Universidade do Vale do Rio dos Sinos"— Transcrição da apresentação:

1 1 Aula 4 Nomes, Vinculações, Tipos e Escopos Universidade do Vale do Rio dos Sinos

2 2 SUMÁRIO 1 – Introdução

3 3 SUMÁRIO 2 – Nomes

4 4 SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis

5 5 SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação

6 6 SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação 5 – Verificação de tipos

7 7 SUMÁRIO 1 – Introdução 2 – Nomes 3 – Variáveis 4 – Vinculação 5 – Verificação de tipos 6 – Tipificação forte

8 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 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 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 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 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 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 14 NOMES 1 – Formas de nomes: Distinção entre maiúsculas e minúsculas

15 15 NOMES 1 – Formas de nomes: Distinção entre maiúsculas e minúsculas 2 – Palavras especiais: Palavra Chave x Palavra Reservada

16 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 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 18 VARIÁVEIS 1 – Atributos: - Nome - Endereço - Valor - Tipo - Tempo de vida - Escopo

19 19 VARIÁVEIS 1 – Atributos: - Nome - Endereço - Valor - Tipo - Tempo de vida - Escopo 2 – Aliases

20 20 VARIÁVEIS 1 – Atributos: - Nome - Endereço - Valor - Tipo - Tempo de vida - Escopo 2 – Aliases 3 – Células de memória: - Físicas - Abstratas

21 21 VINCULAÇÃO 1 – Tipos - Estática: Tempo de compilação - Dinâmica: Tempo de execução

22 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 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 24 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: Definição (múltiplas) e verificação durante execução A := B + C; - Inferência de tipos

25 25 VINCULAÇÃO Modelo de memória em tempo de execucão Memória Baixa Memória Alta

26 26 Código Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

27 27 Código Dados Estáticos Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

28 28 Código Dados Estáticos Pilha Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

29 29 Código Dados Estáticos Pilha Heap Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

30 30 VINCULAÇÃO 3 – Vinculação de armazenamento - Alocação e desalocação de variáveis (pool de memória)

31 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 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 33 Código Dados Estáticos Pilha Heap Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

34 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 35 Código Dados Estáticos Pilha Heap Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

36 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) - Tipos estaticamente vinculados - Elaboração em tempo de execução - Acessadas por ponteiros (C) ou referências (Java)

37 37 Código Dados Estáticos Pilha Heap Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

38 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 39 Código Dados Estáticos Pilha Heap Memória Baixa Memória Alta VINCULAÇÃO Modelo de memória em tempo de execucão

40 40 TIPOS 1 – Verificação de tipos 2 – Tipificação forte 3 – Compatibilidade de tipos

41 41 TIPOS 1 – Verificação de tipos - 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 42 TIPOS 1 – Verificação de tipos - 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 43 TIPOS 1 – Verificação de tipos - 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 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 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; var x : integer; begin..x.. end; begin end;

46 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; var x : integer; begin..x.. end; begin end;

47 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; var x : integer; begin..x.. end; begin end;

48 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; var x : integer; begin..x.. end; begin end;

49 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; var x : integer; begin..x.. end; begin end;

50 50 ESCOPO 1 – 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

51 51 ESCOPO 1 – 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 if (list[i] < list[j]) { int temp; temp = list[i]; list[i] = list[j]; list[j] = temp; }

52 52 ESCOPO 1 – 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 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 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; var x : integer; begin... end; begin end;

55 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; var x : integer; begin... end; begin end; sub1 sub2

56 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; var x : integer; begin... end; begin end; sub1 big

57 57 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 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 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 59 COMPLEMENTO void printheader() { } void compute() { int sum; printheader(); } 1 – Escopo x Tempo de vida - Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas

60 60 COMPLEMENTO void printheader() { } void compute() { int sum; printheader(); } 1 – Escopo x Tempo de vida - Escopo estático => Espacial Tempo de vida => Temporal - C, C++ e Java => Especificador STATIC - Chamadas a subprogramas

61 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 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 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 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 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 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 67 EXERCÍCIOS 8 – Escopo estático x Escopo dinâmico. 9 – Escopo estático x Escopo dinâmico. 10 – Escopo estático x Escopo dinâmico. 11 – Escopo estático 12 – Blocos 13 – Escopo dinâmico 14 – Escopo dinâmico


Carregar ppt "1 Aula 4 Nomes, Vinculações, Tipos e Escopos Universidade do Vale do Rio dos Sinos"

Apresentações semelhantes


Anúncios Google