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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

180 Capítulo 8. Procedimi<strong>en</strong>tos y funciones<br />

begin<br />

LeerNumPos(numero);<br />

WriteLn (’El producto de las cifras de ’, numero,’ vale ’,<br />

ProductoCifras(numero))<br />

<strong>en</strong>d. {MultiplicaCifras}<br />

Si nos situamos d<strong>en</strong>tro de LeerNumPos, la variable global numero, que <strong>en</strong><br />

principio está definida <strong>en</strong> todo el programa, no es accesible, porque es ocultada<br />

por el parámetro formal numero de LeerNumPos que es local.<br />

Por el mismo motivo, si nos situamos <strong>en</strong> QuitaUltimaCifra, el parámetro<br />

formal numero de ProductoCifras, que <strong>en</strong> principio estaría definido d<strong>en</strong>tro de<br />

QuitaUltimaCifra por ser no local a dicho procedimi<strong>en</strong>to, no es accesible, al ser<br />

ocultado por su parámetro formal numero, que es local.<br />

A veces se difer<strong>en</strong>cia <strong>en</strong>tre los bloques <strong>en</strong> que un id<strong>en</strong>tificador podría ser<br />

válido si no hubiera otros id<strong>en</strong>tificadores con el mismo nombre, lo que se conoce<br />

como alcance del id<strong>en</strong>tificador, de los bloques <strong>en</strong> que verdaderam<strong>en</strong>te el id<strong>en</strong>tificador<br />

es accesible, al existir otros con el mismo nombre, lo que se d<strong>en</strong>omina<br />

visibilidad del id<strong>en</strong>tificador.<br />

En el ejemplo anterior, los subprogramas LeerNumPos, ProductoCifras y<br />

QuitaUltimaCifra están d<strong>en</strong>tro del alcance de la variable global numero y sin<br />

embargo no pert<strong>en</strong>ec<strong>en</strong> a su visibilidad.<br />

En resum<strong>en</strong>, para saber a qué id<strong>en</strong>tificador nos referimos <strong>en</strong> cada caso y si<br />

su utilización es correcta, <strong>en</strong>unciamos las sigui<strong>en</strong>tes reglas de ámbito:<br />

1. No se puede declarar un id<strong>en</strong>tificador más de una vez <strong>en</strong> el mismo bloque,<br />

pero sí <strong>en</strong> bloques difer<strong>en</strong>tes aunque uno esté anidado <strong>en</strong> otro. Ambos<br />

id<strong>en</strong>tificadores repres<strong>en</strong>tan dos objetos distintos.<br />

2. Para saber a qué objeto se refiere un cierto id<strong>en</strong>tificador, hay que buscar<br />

el bloque más interior que cont<strong>en</strong>ga su declaración.<br />

3. Un id<strong>en</strong>tificador sólo se puede utilizar <strong>en</strong> el bloque <strong>en</strong> que se ha declarado<br />

y <strong>en</strong> los que están cont<strong>en</strong>idos <strong>en</strong> éste. 7<br />

7 Es conv<strong>en</strong>i<strong>en</strong>te destacar que, como consecu<strong>en</strong>cia inmediata de esta regla, el id<strong>en</strong>tificador de<br />

un subprograma es visible <strong>en</strong> su propio cuerpo de instrucciones. Por consigui<strong>en</strong>te, <strong>en</strong> cualesquiera<br />

de sus instrucciones pued<strong>en</strong> estar cont<strong>en</strong>idas llamadas del subprograma a sí mismo. Si esto ocurre,<br />

el subprograma se llama recursivo. Este tipo de subprogramas se estudia <strong>en</strong> profundidad <strong>en</strong> el<br />

capítulo 10.

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

Saved successfully!

Ooh no, something went wrong!