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.

7.3. Aspectos metodológicos 141<br />

Obsérvese el distinto matiz de cada ejemplo. Este matiz refleja la distinción,<br />

resaltada anteriorm<strong>en</strong>te, <strong>en</strong>tre los bucles DoWhile y DoUntil: para el estudio<br />

autodidacta es necesario estudiar al m<strong>en</strong>os una vez la lección, mi<strong>en</strong>tras que si se<br />

ati<strong>en</strong>de <strong>en</strong> clase 3 este paso puede no ser necesario.<br />

7.3.2 Diseño desc<strong>en</strong>d<strong>en</strong>te<br />

La técnica de programación de diseño desc<strong>en</strong>d<strong>en</strong>te que se com<strong>en</strong>ta <strong>en</strong> este<br />

apartado está basada <strong>en</strong> el empleo de refinami<strong>en</strong>tos sucesivos para la obt<strong>en</strong>ción<br />

de programas que resuelvan un cierto problema.<br />

En cierto modo, la técnica de refinami<strong>en</strong>to progresivo se puede comparar con<br />

la actitud de un escultor ante un bloque de mármol con el objetivo de obt<strong>en</strong>er un<br />

desnudo humano: para empezar, usando el cincel y el martillo grandes, procederá<br />

a esbozar sin mucho mirami<strong>en</strong>to una figura humanoide con cabeza, tronco y<br />

extremidades; posteriorm<strong>en</strong>te, y ya con útiles de precisión, com<strong>en</strong>zará la labor<br />

de refinami<strong>en</strong>to y la obt<strong>en</strong>ción de detalles específicos.<br />

En el diseño desc<strong>en</strong>d<strong>en</strong>te, se parte de una especificación <strong>en</strong> l<strong>en</strong>guaje natural<br />

del problema que se quiere resolver y, sucesivam<strong>en</strong>te, se va “depurando” poco<br />

a poco, perfilándose mejor las distintas partes del programa, apareci<strong>en</strong>do unos<br />

detalles acabados y otros a medio camino. El proceso de refinami<strong>en</strong>to continúa<br />

hasta que finalm<strong>en</strong>te se obti<strong>en</strong>e una versión <strong>en</strong> la que el nivel de detalle de los<br />

objetos y las acciones descritos puede expresarse de forma compr<strong>en</strong>sible por el<br />

computador.<br />

A continuación se muestran algunos ejemplos de refinami<strong>en</strong>to progresivo:<br />

Un ejemplo numérico: tablas de multiplicar<br />

Apliquemos la técnica de diseño desc<strong>en</strong>d<strong>en</strong>te al problema de escribir una<br />

tabla de multiplicar de tamaño n × n. Por ejemplo, para n = 10 t<strong>en</strong>dríamos<br />

1 2 3 · · · 10<br />

2 4 6 · · · 20<br />

3 6 9 · · · 30<br />

. . .<br />

. .. .<br />

10 20 30 · · · 100<br />

Una primera versión (burda) del programa podría ser<br />

Principio Leer n Construir Tabla nxn fin<br />

3 . . . y se dispone de un bu<strong>en</strong> profesor. . .

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

Saved successfully!

Ooh no, something went wrong!