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.

15.4. Mezcla y ord<strong>en</strong>ación de archivos secu<strong>en</strong>ciales 325<br />

while not EoF(aux1) and not EoF(aux2) do<br />

if aux1^ < aux2^ th<strong>en</strong> begin<br />

arch^:= aux1^;<br />

Put(arch);<br />

Get(aux1)<br />

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

else begin<br />

arch^:= aux2^;<br />

Put(arch);<br />

Get(aux2)<br />

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

while not EoF(aux1) do begin<br />

{Se copia <strong>en</strong> arch el resto de aux1, si es necesario}<br />

arch^:= aux1^;<br />

Put(arch);<br />

Get(aux1)<br />

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

while not EoF(aux2) do begin<br />

{Se copia <strong>en</strong> arch el resto de aux2, <strong>en</strong> caso necesario}<br />

arch^:= aux2^;<br />

Put(arch);<br />

Get(aux2)<br />

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

Close(arch);<br />

Close(aux1);<br />

Close(aux2)<br />

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

Como puede apreciarse el procedimi<strong>en</strong>toMezcla que se propone utiliza el cursor<br />

de archivo, lo que no está permitido <strong>en</strong> Turbo <strong>Pascal</strong> (véase el apartado B.9).<br />

Para poder utilizar dicho procedimi<strong>en</strong>to <strong>en</strong> Turbo <strong>Pascal</strong> hay que modificarlo,<br />

utilizando <strong>en</strong> su lugar el procedimi<strong>en</strong>to Mezcla que se detalla seguidam<strong>en</strong>te.<br />

El nuevo procedimi<strong>en</strong>to Mezcla dispone, a su vez, de dos procedimi<strong>en</strong>tos<br />

anidados: el primero, llamado LeerElemDetectandoFin, comprueba si se ha<br />

alcanzado el final del archivo, y <strong>en</strong> caso contrario lee una compon<strong>en</strong>te del archivo.<br />

El segundo, PasarElemDetectando, escribe una compon<strong>en</strong>te dada <strong>en</strong> el archivo<br />

de destino, y utiliza el procedimi<strong>en</strong>to LeerElemDetectandoFin para obt<strong>en</strong>er<br />

una nueva compon<strong>en</strong>te. A continuación se muestra el procedimi<strong>en</strong>to Mezcla<br />

modificado:<br />

procedure Mezcla(var aux1, aux2, arch: tArchivo);<br />

{Efecto: arch := mezcla ord<strong>en</strong>ada de aux1 y aux2}<br />

var<br />

c1,c2: tCompon<strong>en</strong>te;<br />

finArch1, finArch2: boolean;

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

Saved successfully!

Ooh no, something went wrong!