SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
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 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
   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
   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
   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
   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
   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
   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
x: integer
procedure print_x()
begin
    print(x);
end                      Se o escopo for dinâmico
procedure p2
    x: integer;
                          o programa imprime 4
begin
    x= 4;                Se o escopo for estático, o
    print_x();
end
                          programa imprime 3
begin
    x = 3;
    p2();
end


                      Prof. Adriano Teixeira de Souza

Mais conteúdo relacionado

Mais procurados

Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaEduardo Oliveira
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoArthur Emanuel
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Karoline Tavares
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linuxPeslPinguim
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em JavaDenis L Presciliano
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosVictor Hazin da Rocha
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 

Mais procurados (20)

Ponteiros e Alocação Dinâmica
Ponteiros e Alocação DinâmicaPonteiros e Alocação Dinâmica
Ponteiros e Alocação Dinâmica
 
Introdução à linguagem python
Introdução à linguagem pythonIntrodução à linguagem python
Introdução à linguagem python
 
Java: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acessoJava: Encapsulamento e modificadores de acesso
Java: Encapsulamento e modificadores de acesso
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Comandos do linux
Comandos do linuxComandos do linux
Comandos do linux
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
Team Software Process (TSP)
Team Software Process (TSP)Team Software Process (TSP)
Team Software Process (TSP)
 
Programação Orientada a objetos em Java
Programação Orientada a objetos em JavaProgramação Orientada a objetos em Java
Programação Orientada a objetos em Java
 
Introdução a Sistemas Distribuídos
Introdução a Sistemas DistribuídosIntrodução a Sistemas Distribuídos
Introdução a Sistemas Distribuídos
 
Rational Unified Process (RUP)
Rational Unified Process (RUP)Rational Unified Process (RUP)
Rational Unified Process (RUP)
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
Diagrama de Classes
Diagrama de ClassesDiagrama de Classes
Diagrama de Classes
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Linguagem C - Vetores
Linguagem C - VetoresLinguagem C - Vetores
Linguagem C - Vetores
 

Destaque

Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoSidney Roberto
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativoTony Alexander Hild
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoJosé Meirelles
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaFabio Moura Pereira
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Ismar Silveira
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
Lista funcões e recursividade
Lista funcões e recursividadeLista funcões e recursividade
Lista funcões e recursividadeAnielli Lemes
 
Paradigma Educacional Emergente
Paradigma Educacional EmergenteParadigma Educacional Emergente
Paradigma Educacional EmergenteNorma Almeida
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Valmon Gaudencio
 

Destaque (16)

Amarração e escopo
Amarração e escopoAmarração e escopo
Amarração e escopo
 
Unidade04
Unidade04Unidade04
Unidade04
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Heap
HeapHeap
Heap
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Conceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de ProgramaçãoConceitos Iniciais de Linguagens de Programação
Conceitos Iniciais de Linguagens de Programação
 
Introdução ao paradigma imperativo
Introdução ao paradigma imperativoIntrodução ao paradigma imperativo
Introdução ao paradigma imperativo
 
Plp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliaçãoPlp aula-02-critérios de avaliação
Plp aula-02-critérios de avaliação
 
Programação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e ConcorrênciaProgramação Concorrente - Objetos e Concorrência
Programação Concorrente - Objetos e Concorrência
 
Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1Paradigmas de Linguagens de Programacao - Aula #1
Paradigmas de Linguagens de Programacao - Aula #1
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Lista funcões e recursividade
Lista funcões e recursividadeLista funcões e recursividade
Lista funcões e recursividade
 
Paradigma Educacional Emergente
Paradigma Educacional EmergenteParadigma Educacional Emergente
Paradigma Educacional Emergente
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Paradigmas de Linguagem
Paradigmas de LinguagemParadigmas de Linguagem
Paradigmas de Linguagem
 
Modelo de von neumann
Modelo de von neumannModelo de von neumann
Modelo de von neumann
 

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

Resumo vinculacao aula lp1 10 a
Resumo vinculacao   aula lp1 10 aResumo vinculacao   aula lp1 10 a
Resumo vinculacao aula lp1 10 aPedro Augusto
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisRodrigo Kiyoshi Saito
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptGiacomelliFerrarezzi
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoJessica Ribeiro
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPLeonardo Soares
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Sérgio Souza Costa
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRegina Macedo
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Modulo3_0_Apontamentos_1.pdf
Modulo3_0_Apontamentos_1.pdfModulo3_0_Apontamentos_1.pdf
Modulo3_0_Apontamentos_1.pdfssuser234cf7
 
Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2Flávio Lisboa
 

Semelhante a Paradigmas de Linguagens de Programação - Escopo estático/dinâmico (14)

Resumo vinculacao aula lp1 10 a
Resumo vinculacao   aula lp1 10 aResumo vinculacao   aula lp1 10 a
Resumo vinculacao aula lp1 10 a
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.pptApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
ApresentacaoProjetoManutencaoEvolucaoSoftware.ppt
 
Introdução a Linguagem de Programação
Introdução a Linguagem de ProgramaçãoIntrodução a Linguagem de Programação
Introdução a Linguagem de Programação
 
Introdução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHPIntrodução ao desenvolvimento com PHP
Introdução ao desenvolvimento com PHP
 
Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++Paradigma orientado a objetos - Caso de Estudo C++
Paradigma orientado a objetos - Caso de Estudo C++
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Padrões de Projeto (GoF)
Padrões de Projeto (GoF)Padrões de Projeto (GoF)
Padrões de Projeto (GoF)
 
Modulo3_0_Apontamentos_1.pdf
Modulo3_0_Apontamentos_1.pdfModulo3_0_Apontamentos_1.pdf
Modulo3_0_Apontamentos_1.pdf
 
Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2Gerenciando aspectos e eventos com Zend Framework 2
Gerenciando aspectos e eventos com Zend Framework 2
 
Artigo Transp Sw
Artigo Transp SwArtigo Transp Sw
Artigo Transp Sw
 

Mais de Adriano Teixeira de Souza

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 

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

  • 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. 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. 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. 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. 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. 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. 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. x: integer procedure print_x() begin print(x); end  Se o escopo for dinâmico procedure p2 x: integer; o programa imprime 4 begin x= 4;  Se o escopo for estático, o print_x(); end programa imprime 3 begin x = 3; p2(); end Prof. Adriano Teixeira de Souza