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.

108 Capítulo 6. Instrucciones estructuradas<br />

Para verificar este fragm<strong>en</strong>to se estudiará separadam<strong>en</strong>te cada una de las dos<br />

ramas (la th<strong>en</strong> y la else)<br />

{PreC.: a = X, b = Y}<br />

if a >= b th<strong>en</strong><br />

{a = X, b = Y y X >= Y }<br />

m:= a<br />

{a = X, b = Y, X >= Y y m = X = máx(X,Y)}<br />

else<br />

{a = X, b = Y y X < Y}<br />

m:= b<br />

{a = X, b = Y, X < Y y m = Y = máx(X,Y)}<br />

{Postc.: a = X, b = Y y m = máx(X,Y)}<br />

Se observa que cada una de las ramas verifica la postcondición, con lo cual<br />

la selección descrita es correcta.<br />

Uso correcto de estructuras iterativas<br />

Después de conocer las instrucciones de <strong>Pascal</strong> que permit<strong>en</strong> codificar bucles,<br />

<strong>en</strong> particular tras estudiar los distintos ejemplos incluidos, se puede t<strong>en</strong>er la<br />

s<strong>en</strong>sación de que construir bucles correctam<strong>en</strong>te necesita grandes dosis de inspiración,<br />

ya que un bucle escrito a la ligera puede dar más o m<strong>en</strong>os vueltas de lo<br />

necesario, no det<strong>en</strong>erse nunca o, cuando lo hace, dar un resultado incorrecto.<br />

En este apartado se pret<strong>en</strong>de demostrar que no es necesario apelar a las<br />

musas para escribir bucles correctos, ya que basta con diseñar el bucle mediante<br />

una metodología adecuada que se pres<strong>en</strong>ta a continuación.<br />

Como primer ejemplo se considerará el algoritmo de la división <strong>en</strong>tera mediante<br />

restas sucesivas; este algoritmo se esboza a continuación mediante un<br />

s<strong>en</strong>cillo ejemplo:<br />

Para hallar el coci<strong>en</strong>te de la división de 7 <strong>en</strong>tre 2 hay que ver cuántas veces<br />

“cabe” 2 d<strong>en</strong>tro de 7 (<strong>en</strong> este caso 7 = 2 + 2 + 2 + 1 con lo que el coci<strong>en</strong>te será<br />

3 y el resto 1) y, para ello, a 7 (el divid<strong>en</strong>do) se le va restando 2 (el divisor)<br />

repetidam<strong>en</strong>te hasta que se obt<strong>en</strong>ga un número m<strong>en</strong>or que 2 (el divisor); este<br />

número será el resto de la división, y el número de repeticiones realizadas será<br />

el coci<strong>en</strong>te.<br />

No es conv<strong>en</strong>i<strong>en</strong>te com<strong>en</strong>zar a escribir directam<strong>en</strong>te el bucle, aun habi<strong>en</strong>do<br />

compr<strong>en</strong>dido perfectam<strong>en</strong>te cómo trabaja el algoritmo. Antes convi<strong>en</strong>e meditar<br />

qué tipo de bucle usar, especificar las variables mínimas necesarias, expresar el<br />

resultado deseado <strong>en</strong> términos de variables declaradas y especificar qué se espera<br />

que el bucle realice <strong>en</strong> cada repetición.

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

Saved successfully!

Ooh no, something went wrong!