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.

430 Capítulo 19. Tipos abstractos de datos<br />

19.2.1 Desarrollo de programas con tipos concretos de datos<br />

Una vez detallado este nivel de refinami<strong>en</strong>to, se ti<strong>en</strong>e que tomar una decisión<br />

sobre el modo de repres<strong>en</strong>tar los conjuntos. Las posibilidades son múltiples: con<br />

el tipo set <strong>en</strong> <strong>Pascal</strong>, con listas <strong>en</strong>lazadas, etc.<br />

En este apartado se pres<strong>en</strong>ta una implem<strong>en</strong>tación del diseño anterior, repres<strong>en</strong>tando<br />

un conjunto de <strong>en</strong>teros <strong>en</strong> una lista <strong>en</strong>lazada con cabecera, con los<br />

elem<strong>en</strong>tos ord<strong>en</strong>ados asc<strong>en</strong>d<strong>en</strong>tem<strong>en</strong>te y sin repeticiones. Desde el nivel de refinami<strong>en</strong>to<br />

alcanzado <strong>en</strong> el apartado anterior se puede pasar directam<strong>en</strong>te a la<br />

implem<strong>en</strong>tación:<br />

Program CribaEratost<strong>en</strong>es (input, output);<br />

{PreC.: input = [un <strong>en</strong>tero, >=2]}<br />

type<br />

tConjunto = ^tNodoEnt;<br />

tNodoEnt = record<br />

elem: integer;<br />

sig: tConjunto<br />

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

var<br />

cota, e, coef: integer;<br />

conjunto, aux, puntPrimo, auxElim: tConjunto;<br />

begin<br />

{Leer cota:}<br />

Write(’Cota: ’);<br />

ReadLn(cota);<br />

{G<strong>en</strong>erar el conjunto inicial, [2, ..., cota]:}<br />

New(conjunto);<br />

aux:= conjunto;<br />

for e:= 2 to cota do begin<br />

New(aux^.sig);<br />

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

aux^.elem:= e<br />

<strong>en</strong>d; {for i}<br />

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

{Eliminar los números no primos del conjunto:}<br />

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

repeat<br />

e:= puntPrimo^.elem;<br />

coef:= 2; aux:= puntPrimo;<br />

while (e * coef

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

Saved successfully!

Ooh no, something went wrong!