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.

15.1. <strong>Algoritmos</strong> de búsqueda <strong>en</strong> arrays 303<br />

variaciones a otras estructuras secu<strong>en</strong>ciales, como, por ejemplo, a los archivos<br />

(véase el apartado 15.3).<br />

El primer nivel <strong>en</strong> el diseño de la función BusquedaSec puede ser:<br />

ind:= 0;<br />

Buscar elem <strong>en</strong> v;<br />

Devolver el resultado de la función<br />

Refinando Buscar elem <strong>en</strong> v, se ti<strong>en</strong>e:<br />

repetir<br />

ind:= ind + 1<br />

hasta que v[ind] = elem o ind = n<br />

Por último, refinando Devolver el resultado de la función se obti<strong>en</strong>e:<br />

si v[ind] = elem <strong>en</strong>tonces<br />

BusquedaSec:= ind<br />

si no<br />

BusquedaSec:= 0<br />

Una posible implem<strong>en</strong>tación de la funciónBusquedaSec sigui<strong>en</strong>do el esquema<br />

de este algoritmo secu<strong>en</strong>cial es:<br />

function BusquedaSec(v: tVector; elem: tElem): tIntervalo;<br />

{Dev. 0 (si elem no está <strong>en</strong> v) ó i (si v[i] = elem)}<br />

var<br />

i: tIntervalo;<br />

begin<br />

i:= 0; {se inicia el contador}<br />

repeat<br />

{Inv.: ∀ j, 0 ≤ j ≤ i ⇒ v[j] = elem}<br />

i:= i + 1<br />

until (v[i] = elem) or (i = N);<br />

{v[i] = elem<br />

if v[i] = elem th<strong>en</strong> {se ha <strong>en</strong>contrado el elem<strong>en</strong>to elem}<br />

BusquedaSec:= i<br />

else<br />

BusquedaSec:= 0<br />

<strong>en</strong>d; {BusquedaSec}

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

Saved successfully!

Ooh no, something went wrong!