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.3. Metodología de la programación de TADs 443<br />

interface<br />

uses Otras unidades necesarias;<br />

Declaraciones de constantes, tipos, y variables necesarios<br />

para definir el tipo abstracto<br />

Encabezami<strong>en</strong>tos de las operaciones del tipo abstracto de datos<br />

implem<strong>en</strong>tation<br />

uses Otras unidades necesarias;<br />

Información privada, incluy<strong>en</strong>do las implem<strong>en</strong>taciones de las<br />

operaciones del tipo abstracto de datos y de los tipos participantes,<br />

así como las constantes, tipos y variables necesarios para<br />

definir éstos, y las operaciones privadas<br />

begin<br />

Código de iniciación, si es preciso<br />

<strong>en</strong>d. {TipoAbstractoDeDatos}<br />

19.3.3 Corrección de tipos abstractos de datos<br />

La verificación de un tipo abstracto de datos debe hacerse a dos niveles:<br />

En primer lugar, se debe estudiar si la implem<strong>en</strong>tación de las difer<strong>en</strong>tes operaciones<br />

satisface la especificación, bi<strong>en</strong> mediante una verificación a posteriori,<br />

o bi<strong>en</strong> a través de una derivación correcta de programas (<strong>en</strong> los términos pres<strong>en</strong>tados<br />

<strong>en</strong> el apartado 5.4) parti<strong>en</strong>do de la especificación y desarrollando las<br />

operaciones de acuerdo con ésta. Sigui<strong>en</strong>do esta segunda opción, por ejemplo,<br />

para la operación AnnadirElemConj, se partiría de la especificación<br />

{Efecto: conj:= conj ∪ [elem]}<br />

y se llegaría al código<br />

procedure AnnadirElemConj (elem: tElem; var conj: tConj);<br />

var<br />

parar, {indica el fin de la búsqueda, <strong>en</strong> la lista}<br />

insertar: boolean; {por si elem ya está <strong>en</strong> la lista}<br />

auxBuscar, auxInsertar: tConj;<br />

begin<br />

auxBuscar:= conj;<br />

parar:= False;<br />

repeat<br />

if auxBuscar^.sig = nil th<strong>en</strong> begin

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

Saved successfully!

Ooh no, something went wrong!