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.

19.2. Un ejemplo completo 431<br />

aux^.sig:= auxElim;<br />

coef:= coef + 1<br />

<strong>en</strong>d {else if}<br />

else if aux^.sig^.elem > coef * e th<strong>en</strong><br />

coef:= coef + 1<br />

<strong>en</strong>d; {while}<br />

puntPrimo:= puntPrimo^.sig<br />

until (e >= Sqrt(cota)) or (puntPrimo = nil);<br />

{Escribir los números del conjunto:}<br />

aux:= conjunto^.sig;<br />

while aux nil do begin<br />

Write(aux^.elem:4);<br />

aux:= aux^.sig<br />

<strong>en</strong>d; {while}<br />

WriteLn<br />

<strong>en</strong>d. {CribaEratost<strong>en</strong>es}<br />

Queda claro que a partir del mom<strong>en</strong>to <strong>en</strong> que se ha adoptado esta repres<strong>en</strong>tación,<br />

quedan mezclados los detalles relativos al algoritmo (Criba de Eratóst<strong>en</strong>es)<br />

con los relativos a la repres<strong>en</strong>tación (lista <strong>en</strong>lazada . . . ) y manipulación de los<br />

conjuntos de <strong>en</strong>teros. Este <strong>en</strong>foque acarrea una serie de inconv<strong>en</strong>i<strong>en</strong>tes, como<br />

son:<br />

• El código obt<strong>en</strong>ido es complejo, y, <strong>en</strong> consecu<strong>en</strong>cia, se dificulta su corrección<br />

y verificación.<br />

• El mant<strong>en</strong>imi<strong>en</strong>to del programa es innecesariam<strong>en</strong>te costoso: si, por ejemplo,<br />

se decidiese cambiar la estructura dinámica lineal por una de manejo<br />

más efici<strong>en</strong>te, como podrían ser los árboles binarios de búsqueda, se debería<br />

rehacer la totalidad del programa. Dicho de otro modo, es muy difícil<br />

aislar cambios o correcciones.<br />

• En el caso <strong>en</strong> que se necesitas<strong>en</strong> conjuntos sin restricciones de cardinal<br />

<strong>en</strong> otros programas, sería necesario volver a implem<strong>en</strong>tar <strong>en</strong> éstos todas<br />

las tareas necesarias para su manipulación. En otras palabras, no hay<br />

posibilidad de reutilizar código.<br />

Estos inconv<strong>en</strong>i<strong>en</strong>tes son los que se pret<strong>en</strong>de superar con los tipos abstractos<br />

de datos.<br />

19.2.2 Desarrollo de programas con tipos abstractos de datos<br />

Una forma de solucionar los problemas <strong>en</strong>unciados anteriorm<strong>en</strong>te es el empleo<br />

de la abstracción de datos. Así, se definirá un tipo abstracto de datos, <strong>en</strong>t<strong>en</strong>dido

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

Saved successfully!

Ooh no, something went wrong!