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.

7.4. Refinami<strong>en</strong>to correcto de programas 147<br />

desarrollo: 5 <strong>en</strong> la definición rigurosa de los subalgoritmos (<strong>en</strong>cargados de resolver<br />

problemas parciales) y <strong>en</strong> el correcto <strong>en</strong>samblaje (estructurado) de los mismos.<br />

Concretaremos estas ideas con un ejemplo detallado. Después de estudiarlo,<br />

recom<strong>en</strong>damos releer los dos párrafos anteriores.<br />

7.4.1 Un ejemplo detallado<br />

Se plantea resolver el sigui<strong>en</strong>te problema: dado el natural N, deseamos averiguar<br />

si es un cuadrado perfecto o no; esto es, si existe un natural k tal que<br />

k 2 = N.<br />

Dejando de lado la solución trivial,<br />

Sqr(Round(SqRt(N))) = N<br />

operaremos buscando el número natural k (si existe) tal que k 2 = N, o parando<br />

la búsqueda cuando sepamos con seguridad que no existe tal número k.<br />

Las dos soluciones que explicamos a continuación se basan <strong>en</strong> buscar el<br />

mínimo k ∈ IN tal que k 2 ≥ N. Llamemos m a esa cantidad,<br />

m = mín {k ∈ IN tal que k 2 ≥ N}<br />

que existe con seguridad para cualquier N ∈ IN y es único. Entonces, se puede<br />

asegurar que<br />

• Todo natural k < m verifica que k 2 < N<br />

• Todo natural k > m verifica que k 2 > N<br />

Por lo tanto, hay dos posibilidades:<br />

• Que m 2 = N, <strong>en</strong> cuyo caso N sí es un cuadrado perfecto.<br />

• Que m 2 > N, <strong>en</strong> cuyo caso N no es un cuadrado perfecto.<br />

En otros términos, t<strong>en</strong>emos <strong>en</strong> un nivel de refinami<strong>en</strong>to intermedio:<br />

var<br />

n, {Dato}<br />

m : integer; {Número buscado}<br />

...<br />

ReadLn(n); {Sup. n>=0}<br />

Buscar el número m descrito<br />

5 En vez de razonar (verificar), a posteriori, la corrección de un programa ya desarrollado.

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

Saved successfully!

Ooh no, something went wrong!