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.

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

MultiplicaCifras<br />

LeerNumPos ProductoCifras<br />

Figura 8.6.<br />

QuitarUltimaCifra<br />

Veamos un ejemplo algo más complejo que el anterior para explicar esta<br />

estructura de bloques. El problema que se plantea consiste <strong>en</strong> multiplicar las<br />

cifras de un número positivo. Para ello, se hace la sigui<strong>en</strong>te descomposición:<br />

Obt<strong>en</strong>er un número <strong>en</strong>tero positivo numPosit;<br />

Calcular el producto p de las cifras de numPosit;<br />

Mostrar p.<br />

A su vez, Calcular el producto p de las cifras de numPosit podría descomponerse<br />

así:<br />

Repetir<br />

Tomar una cifra c de numPosit;<br />

Multiplicar por c el producto acumulado de las restantes cifras<br />

hasta que no qued<strong>en</strong> más cifras<br />

El programa consta de un procedimi<strong>en</strong>to LeerNumPos, que lee un número<br />

positivo distinto de cero y de una función ProductoCifras que calcula el producto<br />

de sus cifras. Para ello, la función dispone de un procedimi<strong>en</strong>to local<br />

QuitaUltimaCifra que, dado un número, elimina su última cifra y la devuelve<br />

junto con el número modificado. ProductoCifras llama repetidam<strong>en</strong>te<br />

a QuitaUltimaCifra obt<strong>en</strong>i<strong>en</strong>do las sucesivas cifras del número y calculando su<br />

producto. El número se va reduci<strong>en</strong>do hasta que no quedan más cifras, con lo que<br />

finalizan las repeticiones. En la figura 8.6 puede verse la estructura jerárquica<br />

del programa.<br />

Para difer<strong>en</strong>ciar los distintos ámbitos de visibilidad de los id<strong>en</strong>tificadores<br />

hemos rodeado con líneas los distintos bloques del programa <strong>en</strong> la figura 8.7.<br />

El programa utiliza una variable global numPosit, que es pasada como parámetro<br />

a los dos subprogramas, a LeerNumPos por refer<strong>en</strong>cia y a ProductoCifras

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

Saved successfully!

Ooh no, something went wrong!