• Nenhum resultado encontrado

06-06ParLingProg(AssociaçõeseEscopo)

N/A
N/A
Protected

Academic year: 2021

Share "06-06ParLingProg(AssociaçõeseEscopo)"

Copied!
6
0
0

Texto

(1)

Paradigmas de

Linguagens de Programação

Associações e Escopo

(Bindings and Scope)‏

Rodrigo Rocha

[email protected] http://cin.ufpe.br/~rgcr

Universidade Federal da Paraíba – Campus IV (Rio Tinto – PB)‏

PLP – Associações e Escopo

00 - 30

Associações:

São vinculações de identificadores à entidades: Constantes

Variáveis Procedimentos Funções Tipos

Definidas pelo programador

É um conceito comum à todas as linguagens

Uma boa escolha de identificadores pode tornar o programa mais

legível.

PLP – Associações e Escopo

00 - 30

Associações e Ambientes A expressão n+1 usa o identificador n; A expressão f(n) usa os identificadores f e n.

Se um identificador ocorre em uma expressão, a expressão não pode

ser compreendida isoladamente.

PLP – Associações e Escopo

Associações e Ambientes

 Muitas Linguagens permitem que um mesmo identificador seja

declarado em diferentes partes do programa, possivelmente representando diferentes entidades.

A interpretação da expressão ou comando contendo este identificador

vai depender do lugar onde a expressão ou comando ocorre no programa.

Exemplo:

“m = n + 1” ou “print(m/2)”

PLP – Associações e Escopo

Associações e Ambientes

Uma declaração produz uma associação (binding) entre um identificador

e a entidade denotada

Exemplo: var n: integer

Um ambiente é um conjunto de associações

Cada expressão ou comando é interpretado em um ambiente particular Expressões e Comandos em diferentes locais de um programa podem

(2)

00 - 30 Exemplo de Associações Em Ada: n: constant Integer := 7; n : Integer; Em Java: class disciplinaPLP; String nome = “PLP”; Em C: int x; char letra; 00 - 30 Exemplo de Ambientes Em Ada Procedure p is z: constant Integer := 0; c: Character; Procedure q is c: constant Float := 3.0; b: Boolean begin ... end q; begin ... end p;

Quais ambientes do exemplo?

PLP – Associações e Escopo

00 - 30

Entidades Associáveis

 Uma entidade associável (ou denotável) é aquela que pode ser

associada a um identificador

 Em Pascal:

Valores primitivos e strings (em definições de constantes) Referências para variáveis

Função e Procedimento

Tipos  Em ML:

Valores primitivos, valores compostos, abstração de funções,

referência para variáveis (em definições de valores)

Tipos Exceções

PLP – Associações e Escopo

00 - 30 Entidades Associáveis Em C: Tipos Variáveis Funções Em Java Valores Variáveis locais Instâncias Métodos Classes pacotes.

PLP – Associações e Escopo

Escopo

Cada declaração possui um escopo que é o trecho de programa no qual

a declaração é efetiva

Uma Estrutura de bloco, ou simplesmente bloco é um grupo de

construções de programa que delimita o escopo das declarações nele contidas

Blocos podem ser aninhados

PLP – Associações e Escopo

Escopo Estrutura de Bloco

Um bloco é construir um programa que delimita o escopo de cada

declaração dentro dele.

Cada linguagem tem sua própria forma de blocos

Em C - {...}:

Corpos de função, arquivos de código e o programa como todo. Em Java - {...}:

Corpos de métodos, declarações de classe, pacotes e o programa

como todo.

Em Ada – begin ... end:

Corpos de procedimentos, pacotes, tarefas, objetos protegidos e o

(3)

00 - 30

Escopo Estrutura de Bloco

Em Python utiliza apenas a identação

– Exemplo: if n==5:

print 'n igual a 5' for cont in range (0,10):

print cont id = id+1 if id == 10:

Print “id igual a 10” else:

print 'a diferente de 5'

00 - 30

Estrutura de Blocos

A estrutura de blocos de uma linguagem de programação pode ser

classificada de três maneiras: Monolítica Plana Aninhada

PLP – Associações e Escopo

00 - 30 Estrutura de Blocos Monolítica

O escopo de todas declarações é todo o programa Exempo de linguagem, COBOL (antigas versões)

PLP – Associações e Escopo

00 - 30

Estrutura de Blocos Plana

O programa é dividido em vários blocos distintos Exemplo de linguagem Fortran

PLP – Associações e Escopo

Estrutura de Blocos Aninhados

Um program é dividido em vários blocos aninhados Exemplo de linguagens: Pascal, algol, C

PLP – Associações e Escopo

Escopo e Visibilidade

Identificadores podem ocorrer em dois diferentes contextos dentro de

um bloco:

Ocorrência de Declaração Exemplo: const n = 7

Ocorrência de Uso Exemplo: n + (n-1)

É possível declarar um mesmo identificador em blocos distintos (para linguagens com blocos planos e/ou aninhados)

Diferentes entidades poderão ser representados nos diferentes blocos

pelo mesmo identificador

(4)

00 - 30

Escopo e Visibilidade

Diferentes ocorrências de declaração para o mesmo identificador

Ocorrências de uso são dependentes do bloco onde elas

ocorrem.

00 - 30

Declarações

Declaração é a parte do programa cujo principal efeito é produzir

associações (bindings)

Pode ter outros efeitos Tipos de declarações: Declaração de Tipo Declaração de Variável Declarações Colaterais Declarações Sequenciais Declarações Recursivas

O termo Definição indica que a declaração é feita

PLP – Associações e Escopo

00 - 30

Declarações Definição

Definição é uma declaração cujo único efeito é produzir associações Exemplos:

Definição de constantes em Pascal Definição de procedimento Definição de função

Constantes em Pascal deve resultar em um valor primitivo const a = 5 const b = 'x'

PLP – Associações e Escopo

00 - 30 Declarações Definição de Tipo

Uma definição de tipo serve apenas para associar um identificador a

um tipo existente

Declaração de um novo tipo: é aquela declaração que cria um novo e

distinto tipo

Em ML, delcaração de tipos: datatype livro = li of string * int; datatype autor = au of string * int;

PLP – Associações e Escopo

Declarações

Declaração de Variável

Uma definição de variável serve apenas para associar um

identificador a uma variável existente

Declaração de uma nova variável: é aquela declaração que cria uma

nova e distinta variável

Em Pascal (declaração de variável): Var contador = Integer; Em Ada (definição de variável)

Pop : Integer renames populacao

PLP – Associações e Escopo

Declarações

Outras

Declarações de Constantes Declarações de Prodecimentos

(5)

00 - 30

Declarações

Declarações Compostas em:

Declarações colaterais Declarações sequenciais Declarações recursivas

00 - 30

Declarações

Declarações Compostas - Colaterais: Uma declaração colateral deve ser escrita da forma:

D1 e D2

D1 é independente de D2

As associações produzidas são combinadas Não são muito comuns

PLP – Associações e Escopo

00 - 30

Declarações

Declarações Compostas - Sequenciais:

Uma declaração sequencial deve ser escrita da forma D1; D2. D1 é seguida de D2

As associações produzidas em D1 podem ser usadas em D2. Em Pascal:

var contador: integer; procedure adiciona; Begin contador := contador + 1; end

PLP – Associações e Escopo

00 - 30 Declarações

Declarações Compostas - Recursivas:

Uma declaração recursiva usa as próprias declarações que ela produz Exemplo: Declaração de tipos recursivos e definições de funções e

procedimentos recursivos

PLP – Associações e Escopo

Blocos

Um comando bloco é uma forma de comado que contém uma

declaração local (ou um grupo de declarações) D e um subcomando C.

As associações produzidas por D são usadas somente durante a

execução de C.

PLP – Associações e Escopo

Blocos

Um comando expressão é uma forma de expressão que contém uma

declaração local (ou um grupo de declarações) D e um subexpressão C.

As associações produzidas por D são usadas somente durante a

(6)

00 - 30

Blocos

Comando Bloco em Java

if ( x > y ) { int z = x; x = y; y = z; } 00 - 30

Dúvidas?

Referências

Documentos relacionados

Fica estipulada multa de 10% (dez por cento) do valor do menor salário pago pela empresa, por empregado envolvido, vigente à época da infração pelo descumprimento de

Segundo a Portaria nº 793 de 2012, o componente Atenção Básica na Rede de Cuidados à Pessoa com Deficiência terá como pontos de atenção as Unidades Básicas de Saúde (UBS)

Assumindo que o método de determinação da quantidade de nitrogênio adotado pelo (INTEGRATED MODELLING OF GLOBAL ENVIRONMENTAL CHANGE, 2006) esteja correto, para

D e acordo com a RDC Anvisa nº 306/04 e a Reso- lução Conama nº 358/2005, são definidos como geradores de RSS – Resíduos de Serviços de Saúde todos os serviços

Fica estabelecido que no caso de não ser efetuado pela empresa o pagamento dos salários até o quinto dia útil do mês subseqüente ao vencido, bem como do 13º salário e

Relativamente ao implante convencional, e para o extensómetro colocada na face exterior da mandíbula, verificou-se um amortecimento (considerado aqui como a diferença relativa

Normalmente tem níveis diminuídos em células tumorais, inversamente à enzima que regula, a HDAC1.(19) O MiR-34a é mais um gene supressor tumoral, com uma expressão

A instalação de bibliotecas nos estabelecimentos do sistema prisional se faz necessário. Eu acho importante pra melhorar a vida do preso, mudar a cabeça dele, contribuir