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.

6.4. Diseño y desarrollo de bucles 107<br />

Como ejemplo vamos a comprobar la corrección del fragm<strong>en</strong>to de código que<br />

altera los valores de las variables a, b y c según se indica:<br />

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

a:= a + b + c;<br />

b:= a - b;<br />

c:= a - c;<br />

a:= 2 * a - b - c<br />

{PostC.: a = Y + Z, b = X + Z, c = X + Y}<br />

Para la verificación de la secu<strong>en</strong>cia de instrucciones hemos de ir incluy<strong>en</strong>do<br />

aserciones que indiqu<strong>en</strong> el efecto de cada instrucción, tal como se pres<strong>en</strong>tó <strong>en</strong> el<br />

apartado 5.4:<br />

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

a:= a + b + c;<br />

{a = X+Y Z, b = Y, c = Z}<br />

b:= a - b;<br />

{a = X+Y+Z, b = (X+Y+Z) - Y = X+Z, c = Z}<br />

c:= a - c;<br />

{a = X+Y+Z, b = X+Z, c = (X+Y+Z) - Z = X+Y}<br />

a:= 2 * a - b - c<br />

{a = 2*(X+Y+Z) - (X+Z) - (X+Y) = Y+Z, b = X+Z, c = X+Y}<br />

{PostC.: a = Y+Z, b = X+Z, c = X+Y}<br />

En el desarrollo anterior se aprecia cómo, parti<strong>en</strong>do de la precondición, va cambiando<br />

el estado de las variables a, b y c hasta llegar a la postcondición.<br />

Uso correcto de una estructura de selección<br />

Las estructuras de selección incluy<strong>en</strong> dos tipos de instrucciones, if y case; <strong>en</strong><br />

ambos casos el proceso de verificación es el mismo: se ha de verificar cada una<br />

de las posibles opciones individualm<strong>en</strong>te, haci<strong>en</strong>do uso de la precondición y de<br />

la expresión que provoca la elección de tal opción.<br />

Puesto que la verificación se realiza de modo similar tanto para if como para<br />

case consideraremos sólo el sigui<strong>en</strong>te ejemplo, con el que se pret<strong>en</strong>de calcular el<br />

máximo de las variables a y b:<br />

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

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

m:= a<br />

else<br />

m:= b<br />

{PostC.: a = X, b = Y, m = max(X,Y)}

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

Saved successfully!

Ooh no, something went wrong!