sexta-feira, 24 de abril de 2009

Escopo em Sub Programas

Os objetos declarados dentro de subprogramas podem ter o mesmo nome que objetos declarados fora deste. Podemos ter também subprogramas declarados dentro de subprogramas. Chamamos isto de aninhamento de subprogramas. A normal que define qual objeto é utilizado em dada circunstância é o escopo. Daí surgem os objetos globais e objetos locais.
Objetos Globais
Quando tempos um programa principal, M, e um subprograma, S, declarado dentro de M, diz-se que S pode acessar qualquer construção de M. Essas construções podem ser tipos, objetos, nomes de subprogramas e outras unidades.
Objetos Locais
Dentro de S podemos ter também objetos declarados. Diz-se que estes objetos são locais a S. S, por seu turno, pode ter um subprograma, F, dentro de sua região declarativa. Neste caso, os objetos declarados dentro de F são locais a F, isto é, S não tem acesso a eles, da mesma forma que M não tem acesso aos objetos de S. Temos ainda o caso de um objeto, digamos A, se declarado em M e F. Quando a é referencia após sua declaração em F, o objeto utilizado é o que pertence a F e não a M ou S. Objetos locais têm prioridade sobre objetos globais. Se A for referenciado dentro de S, o objeto utilizado será o declarado em M.
Nível
Para descrever a posição de um subprograma dentro de outro, utiliza-se o termo nível. O programa principal tem nível 0; um ou mais subprogramas codificados na região declarativa do programa principal tem nível 1, e assim por diante. Subprogramas declarados em uma mesma região declarativa têm o mesmo nível. Quando maior for o nível de um subprograma, maior será o grau de aninhamento do programa.

Nenhum comentário:

Postar um comentário