79
Nomes,vincula¸c˜oeseescopos Linguagens de Programa¸c˜ ao Marco A L Barbosa cba Este trabalho est´ a licenciado com uma Licen¸ ca Creative Commons - Atribui¸c˜ ao-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Embed Size (px)

Citation preview

Page 1: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Nomes, vinculacoes e escopos

Linguagens de Programacao

Marco A L Barbosa

cbaEste trabalho esta licenciado com uma Licenca Creative Commons - Atribuicao-CompartilhaIgual 4.0 Internacional.

http://github.com/malbarbo/na-lp-copl

Page 2: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Conteudo

Introducao

Nomes

Variaveis

O conceito de vinculacao

Escopo

Escopo e tempo de vida

Ambientes de referenciamento

Constantes nomeadas

Referencias

Page 3: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Introducao

Page 4: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Introducao

I Linguagens imperativas sao baseadas na arquitetura de vonNeumann

I A variaveis sao uma abstracao das celulas de memoria

I InteirosI Array com 3 dimensoes

I As variaveis tem um conjunto de propriedades: tipo, valor,memoria, escopo, etc.

I Vamos estudar questoes sobre a semantica das variaveis

4 / 42

Page 5: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Nomes

Page 6: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Nomes

I Nomes ou identificadores sao associados a rotulos,subprogramas, variaveis, etc

I Questoes de projeto para os nomes

I Os nomes sao sensıveis ao caso?I As palavras especiais sao palavras reservadas ou palavras

chave?

6 / 42

Page 7: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Nomes

I Tamanho

I Limite pequeno para o tamanho do nome dificulta a leituraI Fortran 95: 31I C99: nomes internos, sem limites, mas apenas 63 sao

significativosI C99: nomes externos, 31I Ada: pelo menos 200I C++, Java, C#: sem limites

I Caracteres especiais

I PHP: nomes de variaveis precisam iniciar com $I Perl: inicia com um caractere especial que indica o tipo: $

escalar, @ array e % hashI Ruby: variaveis de instancia iniciam com @ e variaveis de classe

com @@I Avaliacao?

7 / 42

Page 8: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Nomes

I Tamanho

I Limite pequeno para o tamanho do nome dificulta a leituraI Fortran 95: 31I C99: nomes internos, sem limites, mas apenas 63 sao

significativosI C99: nomes externos, 31I Ada: pelo menos 200I C++, Java, C#: sem limites

I Caracteres especiais

I PHP: nomes de variaveis precisam iniciar com $I Perl: inicia com um caractere especial que indica o tipo: $

escalar, @ array e % hashI Ruby: variaveis de instancia iniciam com @ e variaveis de classe

com @@I Avaliacao?

7 / 42

Page 9: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

NomesI Sensıvel ao caso

I Desvantagem: nomes que parecem iguais sao diferentesI Nomes nas linguagens baseadas em C sao sensıveis ao casoI Outras linguagens nao saoI Nomes pre-definidos (bibliotecas) em Java e C# incluem

maiusculas e minusculas (bom ou ruim?)

I Palavras especiaisI Ajudam na legibilidade, sao usadas para separar clausulasI Uma palavra chave e uma palavra que tem um significado

especial em determinados contextosI Integer apple ; significado especial, tipo da variavelI Integer = 4I Dificulta a legibilidade

I Uma palavra reservada e uma palavra que nao pode serusada como um nome

I Muitas palavras reservadas podem restringir as opcoes denomes do programador

I Ex: Cobol tem 300 palavras reservadas

8 / 42

Page 10: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

NomesI Sensıvel ao caso

I Desvantagem: nomes que parecem iguais sao diferentesI Nomes nas linguagens baseadas em C sao sensıveis ao casoI Outras linguagens nao saoI Nomes pre-definidos (bibliotecas) em Java e C# incluem

maiusculas e minusculas (bom ou ruim?)

I Palavras especiaisI Ajudam na legibilidade, sao usadas para separar clausulasI Uma palavra chave e uma palavra que tem um significado

especial em determinados contextosI Integer apple ; significado especial, tipo da variavelI Integer = 4I Dificulta a legibilidade

I Uma palavra reservada e uma palavra que nao pode serusada como um nome

I Muitas palavras reservadas podem restringir as opcoes denomes do programador

I Ex: Cobol tem 300 palavras reservadas

8 / 42

Page 11: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Variaveis

Page 12: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Variaveis

I Abstracao de celula(s) de memoria

I Caracterizada como uma sextupla

I NomeI TipoI Endereco (l-value)I Valor (r-value)I Tempo de vidaI Escopo

10 / 42

Page 13: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Variaveis

I Nome

I Existem celulas de memoria (variaveis) que nao tem nome

I Endereco (l-value)

I E o endereco da memoria da maquina que a variavel estaassociada

I Uma variavel pode ter diferente enderecos ao longo daexecucao do programa

I Varias variavel podem ter o mesmo endereco (apelidos)

I Tipo

I Determina o intervalo de valores e as operacoes

I Valor (r-value)

I E o conteudo da celula (abstrata) de memoria associada com avariavel

I Celula fısica vs celula abstrata

11 / 42

Page 14: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

O conceito de vinculacao

Page 15: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

O conceito de vinculacao

I Associacao entre um atributo e uma entidade

I Momento da vinculacao (quando a vinculacao ocorre)

I Projeto da linguagemI Implementacao da linguagemI Tempo de compilacaoI Tempo de ligacaoI Tempo de carregamentoI Tempo de execucao

I Exemplo

int cont;

...

cont = cont + 1;

printf("contagem: %d\n", cont);

I Compreender quando as vinculacoes ocorrem e pre requisitopara entender a semantica de uma linguagem de programacao

13 / 42

Page 16: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

O conceito de vinculacao

I Associacao entre um atributo e uma entidade

I Momento da vinculacao (quando a vinculacao ocorre)

I Projeto da linguagemI Implementacao da linguagemI Tempo de compilacaoI Tempo de ligacaoI Tempo de carregamentoI Tempo de execucao

I Exemplo

int cont;

...

cont = cont + 1;

printf("contagem: %d\n", cont);

I Compreender quando as vinculacoes ocorrem e pre requisitopara entender a semantica de uma linguagem de programacao

13 / 42

Page 17: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

O conceito de vinculacao

I Associacao entre um atributo e uma entidade

I Momento da vinculacao (quando a vinculacao ocorre)

I Projeto da linguagemI Implementacao da linguagemI Tempo de compilacaoI Tempo de ligacaoI Tempo de carregamentoI Tempo de execucao

I Exemplo

int cont;

...

cont = cont + 1;

printf("contagem: %d\n", cont);

I Compreender quando as vinculacoes ocorrem e pre requisitopara entender a semantica de uma linguagem de programacao

13 / 42

Page 18: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de atributos a variaveis

I Vinculacao estatica

I ocorre antes da execucao do programa e permanece inalterada

I Vinculacao dinamica

I ocorre ou e altera durante a execucao do programa

14 / 42

Page 19: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao estatica de tipo

I Como o tipo e especificado?

I Declaracao explıcita

I int x

I Declaracao implıcita (atraves de convencao)

I Fortran: variaveis (que nao foram explicitamente declaradas)cujo o nome comeca com I, J, K, L, M, ou N sao inteiras, casocontrario, reais

I Perl: nome inicia com $, @ ou %I Facilita a escrita, mas prejudica a confiabilidade (nem tanto

no Perl)

15 / 42

Page 20: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao dinamica de tipo

I O tipo da variavel nao e especificada por uma declaracao enem e possıvel determinar o tipo pelo nome

I O tipo e vinculado quando um valor e atribuıdo a variavel

I list = [10.2, 3.5]; // exemplo ruimI list = 47; // isto deve ser evitado

I Vantagens

I FlexibilidadeI ExpressividadeI Facilidade de escrita

def max(x, y):

return x if x >= y else y

I Desvantagens

I Menos confiavel (a deteccao de erros de tipo pelo compilador ereduzida)

I Custo (checagem dinamica de tipo e interpretacao)I Dificuldade em criar um bom suporte nos editores

16 / 42

Page 21: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao dinamica de tipo

I O tipo da variavel nao e especificada por uma declaracao enem e possıvel determinar o tipo pelo nome

I O tipo e vinculado quando um valor e atribuıdo a variavel

I list = [10.2, 3.5]; // exemplo ruimI list = 47; // isto deve ser evitado

I Vantagens

I FlexibilidadeI ExpressividadeI Facilidade de escrita

def max(x, y):

return x if x >= y else y

I Desvantagens

I Menos confiavel (a deteccao de erros de tipo pelo compilador ereduzida)

I Custo (checagem dinamica de tipo e interpretacao)I Dificuldade em criar um bom suporte nos editores

16 / 42

Page 22: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao dinamica de tipo

I O tipo da variavel nao e especificada por uma declaracao enem e possıvel determinar o tipo pelo nome

I O tipo e vinculado quando um valor e atribuıdo a variavel

I list = [10.2, 3.5]; // exemplo ruimI list = 47; // isto deve ser evitado

I Vantagens

I FlexibilidadeI ExpressividadeI Facilidade de escrita

def max(x, y):

return x if x >= y else y

I Desvantagens

I Menos confiavel (a deteccao de erros de tipo pelo compilador ereduzida)

I Custo (checagem dinamica de tipo e interpretacao)I Dificuldade em criar um bom suporte nos editores

16 / 42

Page 23: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao dinamica de tipo

I O tipo da variavel nao e especificada por uma declaracao enem e possıvel determinar o tipo pelo nome

I O tipo e vinculado quando um valor e atribuıdo a variavel

I list = [10.2, 3.5]; // exemplo ruimI list = 47; // isto deve ser evitado

I Vantagens

I FlexibilidadeI ExpressividadeI Facilidade de escrita

def max(x, y):

return x if x >= y else y

I Desvantagens

I Menos confiavel (a deteccao de erros de tipo pelo compilador ereduzida)

I Custo (checagem dinamica de tipo e interpretacao)I Dificuldade em criar um bom suporte nos editores

16 / 42

Page 24: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao dinamica de tipo

I O tipo da variavel nao e especificada por uma declaracao enem e possıvel determinar o tipo pelo nome

I O tipo e vinculado quando um valor e atribuıdo a variavel

I list = [10.2, 3.5]; // exemplo ruimI list = 47; // isto deve ser evitado

I Vantagens

I FlexibilidadeI ExpressividadeI Facilidade de escrita

def max(x, y):

return x if x >= y else y

I Desvantagens

I Menos confiavel (a deteccao de erros de tipo pelo compilador ereduzida)

I Custo (checagem dinamica de tipo e interpretacao)I Dificuldade em criar um bom suporte nos editores

16 / 42

Page 25: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao estatica de tipo

I Inferencia de tipo: os tipos sao determinados pelo compiladora partir do contexto

I Exemplo ML:

fun vezes10(x) = 10 * x;

fun vezes10(x) = 10.0 * x;

fun quadrado(x) = x * x;

fun quadrado(x): int = x * x;

fun quadrado(x): real = x * x;

17 / 42

Page 26: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Alocacao: tomar uma celula de memoria de um conjunto dememoria disponıvel

I Desalocacao: devolver uma celula de memoria desvinculadaao conjunto de memoria disponıvel

I Tempo de vida: e o tempo durante o qual a variavel estavinculada a uma celula de memoria especıfica

I Classificacao segundo tempo de vida de variaveis escalares

I EstaticaI Dinamica na pilhaI Dinamica explıcita no heapI Dinamica implıcita no heap

18 / 42

Page 27: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Alocacao: tomar uma celula de memoria de um conjunto dememoria disponıvel

I Desalocacao: devolver uma celula de memoria desvinculadaao conjunto de memoria disponıvel

I Tempo de vida: e o tempo durante o qual a variavel estavinculada a uma celula de memoria especıfica

I Classificacao segundo tempo de vida de variaveis escalares

I EstaticaI Dinamica na pilhaI Dinamica explıcita no heapI Dinamica implıcita no heap

18 / 42

Page 28: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Estatica: vinculada a celula de memoria antes da execucao doprograma e permanece vinculada a mesma celula durante aexecucao

I Exemplos: Variaveis globais, variavel static dentro de umafuncao em C

I Vantagens: eficiencia, sensibilidade a historiaI Desvantagens: flexibilidade (nao suporta recursao), a mesma

memoria nao pode ser compartilhada por variaveis diferentes

I Dinamica na pilha: vinculada a celula de memoria quando asua declaracao e elaborada

I Exemplos: Variaveis locais em JavaI Vantagens: permite recursao e compartilhamento de memoriaI Desvantagens: Custo da alocacao e desalocacao, subprogramas

nao podem ser sensıvel ao contexto, acesso indireto

19 / 42

Page 29: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Estatica: vinculada a celula de memoria antes da execucao doprograma e permanece vinculada a mesma celula durante aexecucao

I Exemplos: Variaveis globais, variavel static dentro de umafuncao em C

I Vantagens: eficiencia, sensibilidade a historiaI Desvantagens: flexibilidade (nao suporta recursao), a mesma

memoria nao pode ser compartilhada por variaveis diferentes

I Dinamica na pilha: vinculada a celula de memoria quando asua declaracao e elaborada

I Exemplos: Variaveis locais em JavaI Vantagens: permite recursao e compartilhamento de memoriaI Desvantagens: Custo da alocacao e desalocacao, subprogramas

nao podem ser sensıvel ao contexto, acesso indireto

19 / 42

Page 30: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Estatica: vinculada a celula de memoria antes da execucao doprograma e permanece vinculada a mesma celula durante aexecucao

I Exemplos: Variaveis globais, variavel static dentro de umafuncao em C

I Vantagens: eficiencia, sensibilidade a historiaI Desvantagens: flexibilidade (nao suporta recursao), a mesma

memoria nao pode ser compartilhada por variaveis diferentes

I Dinamica na pilha: vinculada a celula de memoria quando asua declaracao e elaborada

I Exemplos: Variaveis locais em Java

I Vantagens: permite recursao e compartilhamento de memoriaI Desvantagens: Custo da alocacao e desalocacao, subprogramas

nao podem ser sensıvel ao contexto, acesso indireto

19 / 42

Page 31: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Estatica: vinculada a celula de memoria antes da execucao doprograma e permanece vinculada a mesma celula durante aexecucao

I Exemplos: Variaveis globais, variavel static dentro de umafuncao em C

I Vantagens: eficiencia, sensibilidade a historiaI Desvantagens: flexibilidade (nao suporta recursao), a mesma

memoria nao pode ser compartilhada por variaveis diferentes

I Dinamica na pilha: vinculada a celula de memoria quando asua declaracao e elaborada

I Exemplos: Variaveis locais em JavaI Vantagens: permite recursao e compartilhamento de memoriaI Desvantagens: Custo da alocacao e desalocacao, subprogramas

nao podem ser sensıvel ao contexto, acesso indireto

19 / 42

Page 32: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Dinamica explıcita no heap: alocada explicitamente peloprogramador, a alocacao acontece em tempo de execucao

I Exemplos: new em C++, malloc em C

I Vantagens: permite criacao de estruturas de dados dinamicasI Desvantagens: ineficiencia e difıcil utilizacao de ponteiros e

referencias

I Dinamica implıcita no heap: e vinculada a memoria do heapapenas quanto e atribuıda

I Exemplos: Javascript, Python, etcI Vantagens: flexibilidadeI Desvantagens: ineficiencia, todos os atributos sao dinamicos

20 / 42

Page 33: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Dinamica explıcita no heap: alocada explicitamente peloprogramador, a alocacao acontece em tempo de execucao

I Exemplos: new em C++, malloc em CI Vantagens: permite criacao de estruturas de dados dinamicasI Desvantagens: ineficiencia e difıcil utilizacao de ponteiros e

referencias

I Dinamica implıcita no heap: e vinculada a memoria do heapapenas quanto e atribuıda

I Exemplos: Javascript, Python, etcI Vantagens: flexibilidadeI Desvantagens: ineficiencia, todos os atributos sao dinamicos

20 / 42

Page 34: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Dinamica explıcita no heap: alocada explicitamente peloprogramador, a alocacao acontece em tempo de execucao

I Exemplos: new em C++, malloc em CI Vantagens: permite criacao de estruturas de dados dinamicasI Desvantagens: ineficiencia e difıcil utilizacao de ponteiros e

referencias

I Dinamica implıcita no heap: e vinculada a memoria do heapapenas quanto e atribuıda

I Exemplos: Javascript, Python, etc

I Vantagens: flexibilidadeI Desvantagens: ineficiencia, todos os atributos sao dinamicos

20 / 42

Page 35: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

I Dinamica explıcita no heap: alocada explicitamente peloprogramador, a alocacao acontece em tempo de execucao

I Exemplos: new em C++, malloc em CI Vantagens: permite criacao de estruturas de dados dinamicasI Desvantagens: ineficiencia e difıcil utilizacao de ponteiros e

referencias

I Dinamica implıcita no heap: e vinculada a memoria do heapapenas quanto e atribuıda

I Exemplos: Javascript, Python, etcI Vantagens: flexibilidadeI Desvantagens: ineficiencia, todos os atributos sao dinamicos

20 / 42

Page 36: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Vinculacao de memoria e tempo de vida

#include<stdlib.h>

int max = 100;

int main() {int i = 0;

while (i < max) {int *x = malloc(sizeof(int));

...

}}

21 / 42

Page 37: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo

Page 38: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo

I Escopo e o conjunto de expressoes em que uma variavel evisıvel

I Uma variavel nao local a um unidade de programa e umavariavel nao declarada nesta unidade mas acessıvel nela

I As regras de escopo de uma linguagens de programacaodeterminam como uma ocorrencia particular de um nome eassociado a uma variavel

I Escopo estaticoI Escopo dinamico

23 / 42

Page 39: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico

I Introduzido pelo Algol 60 como um metodo para associarnomes a variaveis nao locais

I Tambem chamado de escopo lexico (baseado no texto doprograma)

I Pode ser determinado em tempo de compilacao

I Um escopo estatico que aninha outro escopo e chamado deancestral estatico

I O ancestral estatico mais perto e chamado de pai estaticoI Metodo de busca: busca a declaracao, primeiro local, depois

no pai estatico, ate que o nome seja encontrado

I Usado pela maioria das linguagens

24 / 42

Page 40: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico - Exemplo de Adaprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? X de Big.

I A referencia a variavel X no corpo de Sub1 se refere a quevariavel? X de Sub1.

I Como a variavel X de Big pode ser referenciada em Sub1.Big.X

25 / 42

Page 41: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico - Exemplo de Adaprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel?

X de Big.I A referencia a variavel X no corpo de Sub1 se refere a que

variavel? X de Sub1.I Como a variavel X de Big pode ser referenciada em Sub1.

Big.X

25 / 42

Page 42: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico - Exemplo de Adaprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? X de Big.

I A referencia a variavel X no corpo de Sub1 se refere a quevariavel? X de Sub1.

I Como a variavel X de Big pode ser referenciada em Sub1.Big.X

25 / 42

Page 43: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico - Exemplo de Adaprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? X de Big.

I A referencia a variavel X no corpo de Sub1 se refere a quevariavel?

X de Sub1.I Como a variavel X de Big pode ser referenciada em Sub1.

Big.X

25 / 42

Page 44: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico - Exemplo de Adaprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? X de Big.

I A referencia a variavel X no corpo de Sub1 se refere a quevariavel? X de Sub1.

I Como a variavel X de Big pode ser referenciada em Sub1.Big.X

25 / 42

Page 45: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico - Exemplo de Adaprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? X de Big.

I A referencia a variavel X no corpo de Sub1 se refere a quevariavel? X de Sub1.

I Como a variavel X de Big pode ser referenciada em Sub1.

Big.X

25 / 42

Page 46: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico - Exemplo de Adaprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? X de Big.

I A referencia a variavel X no corpo de Sub1 se refere a quevariavel? X de Sub1.

I Como a variavel X de Big pode ser referenciada em Sub1.Big.X 25 / 42

Page 47: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico

I Variaveis podem ser ocultas em um escopo se houver umadeclaracao “mais” perto com o mesmo nome

I Algumas linguagens fornecem um mecanismo para acessarestas variaveis ocultas. Exemplo anterior do Ada

I Bloco e uma forma de criar escopo estatico dentro de umaunidade de programa.

Exemplo em C (nao permitido em Javae C# por usar o mesmo nome count)

void sub() {int count;

...

while ( ... ) {int count;

...

}}

26 / 42

Page 48: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico

I Variaveis podem ser ocultas em um escopo se houver umadeclaracao “mais” perto com o mesmo nome

I Algumas linguagens fornecem um mecanismo para acessarestas variaveis ocultas. Exemplo anterior do Ada

I Bloco e uma forma de criar escopo estatico dentro de umaunidade de programa. Exemplo em C (nao permitido em Javae C# por usar o mesmo nome count)

void sub() {int count;

...

while ( ... ) {int count;

...

}}

26 / 42

Page 49: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico

I Escopo global (variaveis declaras fora de funcoes)

I PHP: atraves da variavel $GLOBALS ou declarado o nomeglobal

I Python: variavel global pode ser referenciada, mas parareceber uma atribucao o nome tem que ser declarado global

27 / 42

Page 50: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico

I Avaliacao

I Funciona bem em muitas situacoesI Permite mais acesso do que e necessarioI Induz a criacao de variaveis globais

28 / 42

Page 51: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo estatico

I Avaliacao

I Funciona bem em muitas situacoesI Permite mais acesso do que e necessarioI Induz a criacao de variaveis globais

28 / 42

Page 52: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico

I Baseia-se na sequencia de chamadas a subprogramas e nao naestrutura textual (temporal vs espacial)

I Determinado em tempo de execucao

I As referencias as variaveis sao conectadas as declaracoesfazendo uma busca atraves da sequencia de chamadas desubprogramas

I Exemplos de linguagens: APL, SNOBOL4, primeiras versoesde Lisp, Perl, Common Lisp

29 / 42

Page 53: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico - Exemploprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? Depende da sequencia de chamadas de funcoes.

I Big chama Sub1 que chama Sub2? X de Sub1.

I Big chama Sub2? X de Big.

30 / 42

Page 54: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico - Exemploprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel?

Depende da sequencia de chamadas de funcoes.

I Big chama Sub1 que chama Sub2? X de Sub1.

I Big chama Sub2? X de Big.

30 / 42

Page 55: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico - Exemploprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? Depende da sequencia de chamadas de funcoes.

I Big chama Sub1 que chama Sub2? X de Sub1.

I Big chama Sub2? X de Big.

30 / 42

Page 56: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico - Exemploprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? Depende da sequencia de chamadas de funcoes.

I Big chama Sub1 que chama Sub2? X de Sub1.

I Big chama Sub2? X de Big.

30 / 42

Page 57: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico - Exemploprocedure Big is

X : Integer;

procedure Sub1 is

X : Integer;

begin

... X ...

end;

procedure Sub2 is

begin

... X ...

end;

begin

...

end;

I A referencia a variavel X no corpo de Sub2 se refere a quevariavel? Depende da sequencia de chamadas de funcoes.

I Big chama Sub1 que chama Sub2? X de Sub1.

I Big chama Sub2? X de Big.

30 / 42

Page 58: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico

I Avaliacao

I Vantagem sutil na passagem de parametros (exemplo?)I Quando um subprograma esta em execucao, suas variaveis sao

visıveis para todos os subprogramas chamados por eleI Dificuldade de leituraI Custo de acessoI Impossıvel fazer checagem do tipo das variaveis

31 / 42

Page 59: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo dinamico

I Avaliacao

I Vantagem sutil na passagem de parametros (exemplo?)I Quando um subprograma esta em execucao, suas variaveis sao

visıveis para todos os subprogramas chamados por eleI Dificuldade de leituraI Custo de acessoI Impossıvel fazer checagem do tipo das variaveis

31 / 42

Page 60: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo e tempo de vida

Page 61: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo e tempo de vida

I Escopo e tempo de vida estao relacionados, mas sao conceitosdiferentes

I Escopo (estatico) e espacialI Tempo de vida e temporal

I Qual e o tempo de vida e o escopo de um variavel local staticem C/C++?

I E no exemplo a seguir, qual e o tempo de vida e o escopo davariavel soma?

def imprime_cabecalho():

...

def calcula(a, b):

soma = a + b

imprime_cabecalho()

...

33 / 42

Page 62: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo e tempo de vida

I Escopo e tempo de vida estao relacionados, mas sao conceitosdiferentes

I Escopo (estatico) e espacialI Tempo de vida e temporal

I Qual e o tempo de vida e o escopo de um variavel local staticem C/C++?

I E no exemplo a seguir, qual e o tempo de vida e o escopo davariavel soma?

def imprime_cabecalho():

...

def calcula(a, b):

soma = a + b

imprime_cabecalho()

...

33 / 42

Page 63: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Escopo e tempo de vida

I Escopo e tempo de vida estao relacionados, mas sao conceitosdiferentes

I Escopo (estatico) e espacialI Tempo de vida e temporal

I Qual e o tempo de vida e o escopo de um variavel local staticem C/C++?

I E no exemplo a seguir, qual e o tempo de vida e o escopo davariavel soma?

def imprime_cabecalho():

...

def calcula(a, b):

soma = a + b

imprime_cabecalho()

...

33 / 42

Page 64: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamento

Page 65: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamento

I E o conjunto de variaveis visıveis em uma determinadaexpressao

I Nas linguagens com escopo estatico, sao as variaveis locaismais todas as variaveis visıveis de todos os escopos externos

I Nas linguagens com escopo dinamico, sao as variaveis locaismais todas as variaveis visıveis em todos os subprogramasativos

35 / 42

Page 66: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamento

procedure Exemplo is

A, B : Integer;

procedure Sub1 is

X, Y : Integer;

begin

... (1)

end

procedure Sub2 is

X : Integer;

procedure Sub3 is

X : Integer;

begin

... (2)

end

begin

... (3)

end

begin

... (4)

end

36 / 42

Page 67: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

I Considerando escopo estatico, quais os ambientes dereferenciamento nos pontos 1, 2 e 3?

I 1: X e Y de Sub1, A e B de Exemplo

I 2: X de Sub3, A e B de Exemplo

I 3: X de Sub2, A e B de Exemplo

37 / 42

Page 68: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

I Considerando escopo estatico, quais os ambientes dereferenciamento nos pontos 1, 2 e 3?

I 1: X e Y de Sub1, A e B de Exemplo

I 2: X de Sub3, A e B de Exemplo

I 3: X de Sub2, A e B de Exemplo

37 / 42

Page 69: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

I Considerando escopo estatico, quais os ambientes dereferenciamento nos pontos 1, 2 e 3?

I 1: X e Y de Sub1, A e B de Exemplo

I 2: X de Sub3, A e B de Exemplo

I 3: X de Sub2, A e B de Exemplo

37 / 42

Page 70: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

I Considerando escopo estatico, quais os ambientes dereferenciamento nos pontos 1, 2 e 3?

I 1: X e Y de Sub1, A e B de Exemplo

I 2: X de Sub3, A e B de Exemplo

I 3: X de Sub2, A e B de Exemplo

37 / 42

Page 71: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamentovoid sub1() {int a, b;

... (1)

}void sub2() {

int b, c;

... (2)

sub1();

}void main() {

int c, d;

... (3)

sub2();

}

I Considerando escopo dinamico, e a sequencia de chamadamain, sub2, sub1, quais os ambientes de referenciamento nospontos 1, 2 e 3?

I 1: a e b de sub1, c de sub2, d de mainI 2: b e c de sub2, d de mainI 3: c e d de main

38 / 42

Page 72: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamentovoid sub1() {int a, b;

... (1)

}void sub2() {

int b, c;

... (2)

sub1();

}void main() {

int c, d;

... (3)

sub2();

}

I Considerando escopo dinamico, e a sequencia de chamadamain, sub2, sub1, quais os ambientes de referenciamento nospontos 1, 2 e 3?

I 1: a e b de sub1, c de sub2, d de mainI 2: b e c de sub2, d de mainI 3: c e d de main

38 / 42

Page 73: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamentovoid sub1() {int a, b;

... (1)

}void sub2() {

int b, c;

... (2)

sub1();

}void main() {

int c, d;

... (3)

sub2();

}

I Considerando escopo dinamico, e a sequencia de chamadamain, sub2, sub1, quais os ambientes de referenciamento nospontos 1, 2 e 3?

I 1: a e b de sub1, c de sub2, d de main

I 2: b e c de sub2, d de mainI 3: c e d de main

38 / 42

Page 74: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamentovoid sub1() {int a, b;

... (1)

}void sub2() {

int b, c;

... (2)

sub1();

}void main() {

int c, d;

... (3)

sub2();

}

I Considerando escopo dinamico, e a sequencia de chamadamain, sub2, sub1, quais os ambientes de referenciamento nospontos 1, 2 e 3?

I 1: a e b de sub1, c de sub2, d de mainI 2: b e c de sub2, d de main

I 3: c e d de main

38 / 42

Page 75: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Ambientes de referenciamentovoid sub1() {int a, b;

... (1)

}void sub2() {

int b, c;

... (2)

sub1();

}void main() {

int c, d;

... (3)

sub2();

}

I Considerando escopo dinamico, e a sequencia de chamadamain, sub2, sub1, quais os ambientes de referenciamento nospontos 1, 2 e 3?

I 1: a e b de sub1, c de sub2, d de mainI 2: b e c de sub2, d de mainI 3: c e d de main 38 / 42

Page 76: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Constantes nomeadas

Page 77: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Constantes nomeadas

I Uma constante nomeada e uma variavel que o valor evinculado apenas uma vez

I Usado para parametrizar programas

I A vinculacao dos valores a constantes nomeadas pode serestaticas ou dinamicas

I Vantagens: legibilidade e facilidade de modificacao

40 / 42

Page 78: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Referencias

Page 79: Nomes, vincula˘c~oes e escopos - malbarbo.pro.brmalbarbo.pro.br/arquivos/2013/1028/05-nomes-vinculacoes-e-escopos.pdf · I Ex: Cobol tem 300 palavras reservadas 8/42. Vari aveis

Referencias

I Robert Sebesta, Concepts of programming languages, 9a

edicao. Capıtulo 5.

42 / 42