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.

C.2. Desarrollo completo de un programa <strong>en</strong> Turbo <strong>Pascal</strong> 515<br />

Figura C.4.<br />

A continuación recompilamos el programa y, al ejecutarlo, el depurador<br />

asume el control del programa.<br />

Para ejecutar el programa paso a paso, sin <strong>en</strong>trar <strong>en</strong> las llamadas a la función,<br />

elegimos la opción [F10] [Run] [Step over] o simplem<strong>en</strong>te pulsamos repetidam<strong>en</strong>te<br />

[F8], vi<strong>en</strong>do cómo las líneas del programa se van iluminando y ejecutando<br />

sucesivam<strong>en</strong>te. La pantalla alterna <strong>en</strong>tre la v<strong>en</strong>tana de edición y la de salida.<br />

Podemos ver que las llamadas recursivas a la función se resuelv<strong>en</strong> <strong>en</strong> un solo<br />

paso.<br />

Para ejecutar paso a paso, pero <strong>en</strong>trando <strong>en</strong> las llamadas a subprogramas,<br />

elegimos la opción [F10] [Run] [Trace into] o pulsamos repetidam<strong>en</strong>te [F7],<br />

vi<strong>en</strong>do cómo las líneas de la función se iluminan al irse ejecutando. En el ejemplo<br />

del factorial, la función se repite varias veces debido a las llamadas recursivas.<br />

Hay que t<strong>en</strong>er cuidado y no pasarse del final del programa, ya que <strong>en</strong> tal caso se<br />

vuelve a com<strong>en</strong>zar.<br />

La ejecución paso a paso ti<strong>en</strong>e su complem<strong>en</strong>to perfecto con la inspección de<br />

constantes, variables y parámetros, que nos permitirá examinar los valores que<br />

ti<strong>en</strong><strong>en</strong> estos objetos tras la ejecución de cada instrucción. Para ello hay que abrir<br />

una v<strong>en</strong>tana de inspección llamada Watches, <strong>en</strong> la que, <strong>en</strong> nuestro ejemplo,<br />

colocaremos los id<strong>en</strong>tificadores n y num. Hacemos [F10] [Debug] [Watch], con<br />

lo que se abre la v<strong>en</strong>tana, y después [F10] [Debug] [Add Watch] o simplem<strong>en</strong>te<br />

[Ctrl]+[F7], lo que permite introducir los id<strong>en</strong>tificadores que se dese<strong>en</strong>.<br />

Si se ejecuta el programa paso a paso, se verán los valores adoptados <strong>en</strong> cada<br />

mom<strong>en</strong>to por los objetos incluidos <strong>en</strong> la v<strong>en</strong>tana de inspección. En el ejemplo,<br />

al com<strong>en</strong>zar el programa tanto n como num son etiquetados como id<strong>en</strong>tificadores<br />

desconocidos (Unknown id<strong>en</strong>tifier), para cambiar posteriorm<strong>en</strong>te, adoptando<br />

n el valor introducido por el usuario, y reduciéndose num <strong>en</strong> cada llamada recursiva.<br />

En la figura C.4 vemos la apari<strong>en</strong>cia de la v<strong>en</strong>tana Watches <strong>en</strong> un punto<br />

intermedio del proceso, donde las sucesivas llamadas recursivas han ido reduci<strong>en</strong>do<br />

el valor del argum<strong>en</strong>to de la función hasta alcanzar el caso base.

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

Saved successfully!

Ooh no, something went wrong!