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.

190 Capítulo 9. <strong>Programación</strong> con subprogramas<br />

que constituyeran unidades lógicas del programa. Una parte era cargada <strong>en</strong> memoria<br />

y ejecutada, almac<strong>en</strong>ándose los resultados o soluciones parciales obt<strong>en</strong>idos.<br />

A continuación, otra parte era cargada y ejecutada, accedi<strong>en</strong>do a los resultados<br />

parciales, y así sucesivam<strong>en</strong>te hasta alcanzar la solución final. Esta forma de<br />

operar, conocida como segm<strong>en</strong>tación o memoria virtual segm<strong>en</strong>tada (véase el<br />

apartado 4.2.6 de [PAO94]), repres<strong>en</strong>ta una primera aplicación del concepto de<br />

modularidad.<br />

A partir de los años set<strong>en</strong>ta, se habla de un nuevo concepto de modularidad<br />

que no deriva de las limitaciones de memoria, sino de la creci<strong>en</strong>te ext<strong>en</strong>sión de<br />

los programas, lo que dificulta su desarrollo, depuración y mant<strong>en</strong>imi<strong>en</strong>to. En<br />

efecto, las necesidades creci<strong>en</strong>tes de los usuarios g<strong>en</strong>eran programas cada vez<br />

más ext<strong>en</strong>sos y por lo tanto más difíciles de compr<strong>en</strong>der. Por ello, es aconsejable<br />

dividirlos <strong>en</strong> partes para resolverlos <strong>en</strong> vez de int<strong>en</strong>tar hacerlo <strong>en</strong> su totalidad, de<br />

una forma monolítica. En este s<strong>en</strong>tido se pronuncian diversos estudios empíricos<br />

realizados sobre la capacidad humana para resolver problemas.<br />

Este nuevo concepto de programación con subprogramas, que es el vig<strong>en</strong>te <strong>en</strong><br />

nuestros días, complem<strong>en</strong>ta las técnicas de programación estructurada y está relacionado<br />

estrecham<strong>en</strong>te con las técnicas de diseño desc<strong>en</strong>d<strong>en</strong>te y de refinami<strong>en</strong>tos<br />

sucesivos. En resum<strong>en</strong>, la idea es<strong>en</strong>cial de la programación con subprogramas<br />

se puede expresar así:<br />

Una forma de resolver algorítmicam<strong>en</strong>te un problema complejo consiste<br />

<strong>en</strong> descomponerlo <strong>en</strong> problemas más s<strong>en</strong>cillos, bi<strong>en</strong> especificados<br />

e indep<strong>en</strong>di<strong>en</strong>tes <strong>en</strong>tre sí, diseñar por separado los subalgoritmos correspondi<strong>en</strong>tes<br />

a estos subproblemas y <strong>en</strong>lazarlos correctam<strong>en</strong>te mediante<br />

llamadas a los mismos.<br />

La programación con subprogramas pres<strong>en</strong>ta dos aspectos inseparables: la<br />

descomposición de un programa <strong>en</strong> partes, formadas por acciones y datos. En<br />

este capítulo vamos a estudiar el primero de esos aspectos: la descomposición de<br />

las acciones involucradas <strong>en</strong> un programa <strong>en</strong> otras más s<strong>en</strong>cillas, que <strong>en</strong> <strong>Pascal</strong> se<br />

realiza mediante los subprogramas y su estructura de bloques. El aspecto de los<br />

datos se abordará después de estudiar la definición de tipos por el programador,<br />

completándose <strong>en</strong>tonces el concepto de programación con subprogramas y su<br />

aplicación a la construcción de tipos abstractos de datos (véase el capítulo 19).<br />

9.2 Un ejemplo de refer<strong>en</strong>cia<br />

Supongamos que tratamos de hacer un programa para sumar dos fracciones<br />

repres<strong>en</strong>tadas cada una por su numerador y su d<strong>en</strong>ominador, ambos <strong>en</strong>teros.<br />

Veamos una posible descomposición:

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

Saved successfully!

Ooh no, something went wrong!