Prof. Adriano Teixeira de Souza
   O escopo de uma variável é a faixa de    comandos em que a mesma é visível    ◦ Uma variável é visível em um comando s...
   As regras de escopo de uma linguagem    determinam:    ◦ como uma ocorrência de um nome é associada a      uma variáve...
   A vinculação do tipo de dados de uma    variável pode ser especificada de forma    estática ou dinâmica.    ◦ Vinculaç...
   Em LPs com escopo estático (ou léxico), o    escopo é determinado através da estrutura    textual do programa.   Em L...
   Usando escopo estático, a vinculação de um    nome no ambiente é determinada pelo seguinte    algoritmo:    ◦ i) Se o ...
   Pode-se informalmente dizer que o trecho de    código onde um nome é visível é o bloco    onde foi declarado e todos o...
   Usando escopo dinâmico, a vinculação válida    para um nome é a criada mais recentemente    durante a execução do prog...
x: integerprocedure print_x()begin    print(x);end                      Se o escopo for dinâmicoprocedure p2    x: intege...
Próximos SlideShares
Carregando em…5
×

Paradigmas de Linguagens de Programação - Escopo estático/dinâmico

7.918 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
7.918
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
98
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Paradigmas de Linguagens de Programação - Escopo estático/dinâmico

  1. 1. Prof. Adriano Teixeira de Souza
  2. 2.  O escopo de uma variável é a faixa de comandos em que a mesma é visível ◦ Uma variável é visível em um comando se puder ser referenciada naquele comando ◦ Uma variável é local a uma unidade de programa se foi declarada nela ◦ Uma variável é não-local a uma unidade de programa se for visível mas não tiver sido declarada nela Prof. Adriano Teixeira de Souza
  3. 3.  As regras de escopo de uma linguagem determinam: ◦ como uma ocorrência de um nome é associada a uma variável ◦ como referências a variáveis declaradas fora da unidade em execução são associadas a suas declarações Escopo pode ser: ◦ estático ◦ dinâmico Prof. Adriano Teixeira de Souza
  4. 4.  A vinculação do tipo de dados de uma variável pode ser especificada de forma estática ou dinâmica. ◦ Vinculação estática: quando a vinculação ocorrer antes do tempo de execução e permanecer inalterada durante todo o tempo de execução do programa. ◦ Vinculação dinâmica: quando a vinculação ocorre durante a execução ou é alterada durante a execução do programa. Prof. Adriano Teixeira de Souza
  5. 5.  Em LPs com escopo estático (ou léxico), o escopo é determinado através da estrutura textual do programa. Em LPs com escopo dinâmico, o escopo é determinado através da linha de execução do programa, sendo dependente portanto da ordem de execução das rotinas. Prof. Adriano Teixeira de Souza
  6. 6.  Usando escopo estático, a vinculação de um nome no ambiente é determinada pelo seguinte algoritmo: ◦ i) Se o nome foi declarado no bloco em execução, aquela vinculação será usada. Caso contrário, ◦ ii) Se o nome não foi declarado no bloco em execução, ele deve ser buscado nos blocos que o envolvem, do imediatamente envolvente até o mais distante. Se todos os blocos envolventes tiverem sido verificados e a declaração não encontrada, ◦ iii) Se o nome está no ambiente global, aquela vinculação será usada, caso contrário não há vinculação para aquele nome no ambiente. Prof. Adriano Teixeira de Souza
  7. 7.  Pode-se informalmente dizer que o trecho de código onde um nome é visível é o bloco onde foi declarado e todos os blocos aninhados dentro dele, e por este motivo muitas vezes usa-se “escopo léxico” como sinônimo de “escopo estático”. Prof. Adriano Teixeira de Souza
  8. 8.  Usando escopo dinâmico, a vinculação válida para um nome é a criada mais recentemente durante a execução do programa. Baseado em sequências de chamadas de unidades de programas, não no leiaute textual. Referências a variáveis estão conectadas a declarações através da busca invertida através da sequência de chamadas de subprogramas. Prof. Adriano Teixeira de Souza
  9. 9. x: integerprocedure print_x()begin print(x);end  Se o escopo for dinâmicoprocedure p2 x: integer; o programa imprime 4begin x= 4;  Se o escopo for estático, o print_x();end programa imprime 3begin x = 3; p2();end Prof. Adriano Teixeira de Souza

×