Quando uma sub-rotina é chamada, o fluxo de execução normal entra em uma espécie de pausa, a sub-rotina é executada, então o fluxo normal deve retornar à execução. Para que não haja problemas com os valores e as variáveis em uso, o compilador separa o escopo de cada variável, ou seja, o local onde são acessíveis ou não. TOKUMOTO, Ronie C. Paradigmas de Linguagem de Programação. Maringá-Pr.: Unicesumar, 2016 (adaptado). Analisando o algoritmo abaixo, identifique as variáveis locais e globais, explique qual é a diferença de variáveis locais e globais e indique quantas variáveis estão armazenadas na memória no momento em que o procedimento está sendo executado. Algoritmo "semnome" procedimento p1 var x: inteiro y: inteiro inicio x <- 5 y <- 6 z <- 7 fimprocedimento var x: inteiro z: inteiro inicio p1 fimalgoritmo
Respostas
Resposta:
Com base nesta explicação podemos concluir facilmente que no momento que o procedimento "p1" está sendo executado temos alocadas:
x (local), y (local), x (global), y (global).
Ou seja, 4 variáveis, do tipo inteiro, no total.
Explicação:
Varíavel global está acessível em qualquer parte do códgio, enquanto o programa estiver em execução ela terá memória alocada pra ela.
Varáivel local está acessível apenas dentro do procedimento no qual ela foi declarado, logo ela somente ocupa espaço de memória quando este procedimento é executado, ao fim da execução do mesmo, esta varíavel é liberada da memória e os valores não são mantidos.
Quando há variáveis globais com o mesmo nome que as varíaveis locais, as locais tem precedência, isto é, no algoritimo "semnome" temos como exemplo a varíavel X.
Esta varíavel é global, porém temos uma variável com o mesmo nome dentro do procedimento "p1", isto significa que quando o procedimento "p1" estiver em execução ele irá considerar a varíavel local e não fará qualquer alteração no dado da varíavel global.