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.

10.2. Conceptos básicos 215<br />

Programa<br />

begin<br />

. . .<br />

llamada a<br />

subprograma<br />

. . .<br />

<strong>en</strong>d.<br />

Subprograma<br />

begin<br />

. . .<br />

llamada a<br />

subprograma<br />

. . .<br />

<strong>en</strong>d.<br />

Subprograma<br />

begin<br />

. . .<br />

. . .<br />

. . .<br />

<strong>en</strong>d.<br />

Figura 10.2. Esquema de llamadas de subprogramas.<br />

En el caso de un subprograma recursivo, cada llamada g<strong>en</strong>era un nuevo ejemplar<br />

del subprograma con sus correspondi<strong>en</strong>tes objetos locales. Podemos imaginar<br />

cada ejemplar como una copia del subprograma <strong>en</strong> ejecución. En este<br />

proceso (resumido <strong>en</strong> la figura 10.2) destacamos los sigui<strong>en</strong>tes detalles:<br />

• El subprograma comi<strong>en</strong>za a ejecutarse normalm<strong>en</strong>te y, al llegar a la llamada,<br />

se reserva espacio para una nueva copia de sus objetos locales y<br />

parámetros. Estos datos particulares de cada ejemplar g<strong>en</strong>erado se agrupan<br />

<strong>en</strong> la llamada tabla de activación del subprograma.<br />

• El nuevo ejemplar del subprograma pasa a ejecutarse sobre su tabla de<br />

activación, que se amontona sobre las de las llamadas recursivas anteriores<br />

formando la llamada pila recursiva (véase el apartado 17.2.3).<br />

• Este proceso termina cuando un ejemplar no g<strong>en</strong>era más llamadas recursivas<br />

por consistir sus argum<strong>en</strong>tos <strong>en</strong> casos básicos.<br />

Entonces, se libera el espacio reservado para la tabla de activación de ese<br />

ejemplar, reanudándose las instrucciones del subprograma anterior sobre<br />

la tabla p<strong>en</strong>última.<br />

• Este proceso de retorno finaliza con la llamada inicial.

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

Saved successfully!

Ooh no, something went wrong!