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

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

Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro

Apresentações semelhantes


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

1 Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro isabel@dcc.ic.uff.br

2 Linguagens de Programação Amarrações Qual é o efeito de uma declaração de tipo ? Qual é o efeito de uma declaração de procedimento ? Qual é o efeito de um comando de atribuição ?

3 Linguagens de Programação Amarrações Qual é o efeito de uma declaração de tipo ? Qual é o efeito de uma declaração de procedimento ? Qual é o efeito de um comando de atribuição ? Amarrar um identificador ao tipo! Amarrar um identificador a um comando! Amarrar uma variável a um valor! Amarração (ou binding) é uma associação entre entidades de programação.

4 Linguagens de Programação Amarrações Tempos de Amarração: Projeto da Lp Escolha dos símbolos e seus significados. Ex: * denota multiplicação em C. Implementação do Tradutor Decisões dependentes da máquina. Ex: Intervalo de inteiros em C. Compilação Amarrações estáticas. Ex: Variável e seu tipo em Pascal. Ligação Associações entre “pedaços” de códigos. Ex: Programa e função da biblioteca. Carga Associações entre variáveis estáticas e endereços de memória. Execução Associações entre variável e seu valor.

5 Linguagens de Programação Amarrações Tempos de Amarração: Projeto da Lp Escolha dos símbolos e seus significados. Ex: * denota multiplicação em C. Implementação do Tradutor Decisões dependentes da máquina. Ex: Intervalo de inteiros em C. Compilação Amarrações estáticas. Ex: Variável e seu tipo em Pascal. Ligação Associações entre “pedaços” de códigos. Ex: Programa e função da biblioteca. Carga Associações entre variáveis estáticas e endereços de memória. Execução Associações entre variável e seu valor. EstáticasEstáticas Dinâmica

6 Linguagens de Programação Ambiente (environment): É um conjunto de amarrações. Amarrações Program P; const z = 0; var c:char; Procedure Q; const c = 3.0; var b:boolean; begin... end; begin... end; z → 0 c → char q → procedimento z → 0 c → 3.0 q → procedimento b → boolean

7 Linguagens de Programação Escopo: região do programa onde a amarração é efetiva. O escopo permite a existência de variáveis diferentes com um mesmo nome no mesmo programa. Ex: i, cont, aux Amarrações Program P; const z = 0; var c:char; Procedure Q; const c = 3.0; var b:boolean; begin... end; begin... end; No escopo do principal, c → char No escopo de Q, c → 3.0

8 Linguagens de Programação Amarrações Exemplo? O efeito de um comando pode variar conforme o ambiente !

9 Linguagens de Programação Amarrações xx y z w x y z w x Bloco Monolítico Versões antigas de COBOL, BASIC Blocos Não Aninhados FORTRAN Blocos Aninhados Pascal, Algol Blocos: delimitam o escopo

10 Linguagens de Programação Amarrações x Bloco Monolítico Versões antigas de COBOL, BASIC Blocos: delimitam o escopo O escopo de cada declaração é todo programa Não se pode modularizar

11 Linguagens de Programação Amarrações Blocos: delimitam o escopo Só uma área global: identificadores visíveis a subprogramas que não os utilizam x y z w Blocos Não Aninhados FORTRAN

12 Linguagens de Programação Amarrações Blocos: delimitam o escopo Em C: aninha-se blocos, mas não funções x y z w x Blocos Aninhados Pascal, Algol Em Java: aninha-se classes e métodos em classes int a = 2; int main (void) { { int a = 1; printf("%d \n",a); } printf("%d \n",a); }

13 Linguagens de Programação Tempo de Vida  Escopo (estático) de Visibilidade const z=0; var c: char; procedure q; const c = 30; var b: boolean; begin... end begin... end Escopo Tempo de vida z c (char) q c (30) b Todo pgm principal Todo pgm q q q q q Amarrações Conceito estático ! Conceito dinâmico !

14 Linguagens de Programação Linguagens de Escopo Estático vs Linguagens de Escopo Dinâmico Amarrações A visibilidade dos nomes depende da estrutura das declarações A visibilidade dos nomes depende da ordem das chamadas Tempo de compilação !!! Tempo de execução !!! APL,SNOBOL4, logo PERL(possui mecanismos) PASCAL, C, JAVA,... escopo léxico

15 Linguagens de Programação Linguagens de Escopo Estático vs Linguagens de Escopo Dinâmico Amarrações Imprime 0 em escopo estático ! var x: integer; procedure F; begin writeln(x) end; procedure G; var x: integer; begin x := 1; F; end; begin x := 0; G end. Imprime 1 em escopo dinâmico ! Principal G F

16 Linguagens de Programação PERL Amarrações Imprime 0 em escopo estático ! $x = 0; sub f { return $x; } sub g { my $x = 1; return f(); } print g()."\n"; Principal G F $x = 0; sub f { return $x; } sub g { local $x = 1; return f(); } print g()."\n"; Imprime 1 em escopo dinâmico ! my: locais em escopo estático ! local: locais em escopo dinâmico !

17 Linguagens de Programação Linguagens de Escopo Estático vs Linguagens de Escopo Dinâmico Amarrações Erro em escopo estático: identificador inexistente ! procedure P; x: integer; begin Q end; procedure Q; begin x := 1 end; Sem erro em escopo dinâmico ! P Q

18 Linguagens de Programação Amarrações var i,j,num: integer; procedure mensagem; begin writeln('calculando o fatorial de ',i) end; function fatorial(i:integer): integer; begin if (i=1) then begin mensagem; fatorial := 1 end else fatorial := i*fatorial(i-1) end; begin num := 3; i := num; j := fatorial(i) end. Linguagem de Escopo Estático i,j,num i mensagem fatorial calculando o fatorial de 3 Mensagem impressa:

19 Linguagens de Programação Amarrações var i,j,num: integer; procedure mensagem; begin writeln('calculando o fatorial de ',i) end; function fatorial(i:integer): integer; begin if (i=1) then begin mensagem; fatorial := 1 end else fatorial := i*fatorial(i-1) end; begin num := 3; i := num; j := fatorial(i) end. Linguagem de Escopo Dinâmico (1) Principal (2) fatorial i de (1), j,num, mensagem, fatorial i de (2), j,num, mensagem fatorial (3) fatorial i de (3), j,num, mensagem, fatorial (4) Fatorial (5) mensagem i de (4), j,num, mensagem, fatorial i de (4), j,num, mensagem fatorial calculando o fatorial de 1 Mensagem impressa:

20 Linguagens de Programação Amarrações Organização de Memória para Linguagens de escopo estático Área para código: tamanho fixo, definido em tempo de compilação Área estática: Não há variação de tamanho nem de localização Pilha: Contém registros de ativação: toda informação necessária para execução de procedimentos ou blocos. Heap: Dados cujo tempo de vida é independente das regras de escopo da linguagem código estática pilha heap

21 Linguagens de Programação Amarrações Organização de Memória para Linguagens de escopo estático Registros de Ativação (RA)‏ Valores temporários Ex: temporárias para o cálculo de expressões. Área para dados locais Estado da máquina antes da chamada: PC e registradores. Elo dinâmico: acesso ao ambiente de chamada. Elo estático: acesso a nomes não locais. Parâmetros Valor de retorno


Carregar ppt "Linguagens de Programação Conceitos e Técnicas Amarrações Prof. Isabel Cafezeiro"

Apresentações semelhantes


Anúncios Google