09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

8.5.<br />

Ámbito y visibilidad de los id<strong>en</strong>tificadores 175<br />

procedure EscrDosDec(valor: real);<br />

{Efecto: escribe valor, con dos decimales}<br />

begin<br />

WriteLn(’El valor es: ’, valor:14:2)<br />

<strong>en</strong>d; {EscrDosDec}<br />

begin<br />

LeerGrados(a);<br />

t:= TanGrados(a);<br />

EscrDosDec(t)<br />

<strong>en</strong>d. {CalculoTang<strong>en</strong>te}<br />

Los id<strong>en</strong>tificadores declarados o definidos <strong>en</strong> el programa principal, como a<br />

y t, se d<strong>en</strong>ominan globales, y su ámbito es (son visibles <strong>en</strong>) todo el programa,<br />

incluso d<strong>en</strong>tro de los subprogramas (excepto si <strong>en</strong> éstos se declara una variable<br />

con el mismo id<strong>en</strong>tificador, la cual ocultaría a la variable global homónima, como<br />

se detalla <strong>en</strong> el apartado 8.5.2).<br />

Los id<strong>en</strong>tificadores declarados o definidos d<strong>en</strong>tro de subprogramas, como Pi<br />

y angRad y el id<strong>en</strong>tificador de la función TanGrados, y sus propios parámetros<br />

formales, como angSexa de TanGrados y valor de EscrDosDec, se d<strong>en</strong>ominan<br />

locales, sólo son válidos d<strong>en</strong>tro de los subprogramas a los que pert<strong>en</strong>ec<strong>en</strong> y, por<br />

tanto, no son reconocidos fuera de ellos (es decir, quedan ocultos al resto del<br />

programa).<br />

Si d<strong>en</strong>tro de un subprograma se define otro, se dice que los parámetros locales<br />

del subprograma superior se d<strong>en</strong>ominan no locales con respecto al subprograma<br />

subordinado y son visibles d<strong>en</strong>tro de ambos subprogramas.<br />

Los objetos globales se crean al ejecutarse el programa y permanec<strong>en</strong> definidos<br />

hasta que éste termina. En cambio, los objetos locales se crean <strong>en</strong> el<br />

mom<strong>en</strong>to de producirse la llamada al subprograma al que pert<strong>en</strong>ec<strong>en</strong> y se destruy<strong>en</strong><br />

al terminar éste. La gestión de los objetos locales suele efectuarse con<br />

una estructura de tipo pila (véase el capítulo 17 y el apartado 3.4 de [PAO94]),<br />

donde se introduc<strong>en</strong> los id<strong>en</strong>tificadores de los objetos y el espacio necesario para<br />

almac<strong>en</strong>ar sus valores cuando los haya, y de donde se extra<strong>en</strong> una vez que éste<br />

termina. El proceso de reserva y liberación de memoria para los objetos se<br />

prepara de forma automática por el compilador del l<strong>en</strong>guaje.<br />

8.5.2 Estructura de bloques<br />

De las definiciones anteriores se deduce que el programa principal, los procedimi<strong>en</strong>tos<br />

y funciones <strong>en</strong> él declarados, y los que a su vez pudieran declararse<br />

d<strong>en</strong>tro de ellos, constituy<strong>en</strong> un conjunto de bloques anidados que determinan el<br />

ámbito de validez de los id<strong>en</strong>tificadores.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!