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.

76 Capítulo 5. Primeros programas completos<br />

Precondiciones, postcondiciones y especificaciones<br />

Otro inconv<strong>en</strong>i<strong>en</strong>te del seguimi<strong>en</strong>to descrito es que sólo nos permite examinar<br />

el funcionami<strong>en</strong>to de un programa para un juego de datos concreto, de donde no<br />

podemos concluir que un programa es correcto para cualquier juego de datos de<br />

<strong>en</strong>trada. Para examinar la corrección de un programa, debemos caracterizar <strong>en</strong><br />

g<strong>en</strong>eral los puntos delicados, aportando una descripción (más o m<strong>en</strong>os formal)<br />

del estado de los cómputos <strong>en</strong> ese punto.<br />

En g<strong>en</strong>eral, si tras la instrucción de lectura los valores de las variables x e y<br />

son x0 e y0 respectivam<strong>en</strong>te, t<strong>en</strong>emos:<br />

...;<br />

{x =?, y =?}<br />

Write(’Números: ’);<br />

ReadLn(x, y);<br />

{x = x0, y = y0}<br />

x:= x + y;<br />

{x = x0 + y0, y = y0}<br />

WriteLn(x,y);<br />

{x = x0 + y0, y = y0}<br />

y:= Sqr(x);<br />

{x = x0 + y0, y = (x0 + y0) 2 }<br />

WriteLn(x,y);<br />

{x = x0 + y0, y = (x0 + y0) 2 }<br />

...<br />

Los com<strong>en</strong>tarios insertados ahora constituy<strong>en</strong> afirmaciones sobre el estado de<br />

los cálculos <strong>en</strong> un mom<strong>en</strong>to dado, y ti<strong>en</strong><strong>en</strong> una función doble:<br />

• Nos permit<strong>en</strong> analizar con detalle el funcionami<strong>en</strong>to de un programa o un<br />

fragm<strong>en</strong>to de programa. Por ejemplo, consideremos el programa sigui<strong>en</strong>te,<br />

cuyo objeto consiste <strong>en</strong> intercambiar el valor de dos variables de tipo char<br />

<strong>en</strong>tre sí:<br />

Program Intercambio (input, output);<br />

var<br />

c1, c2: char; {los dos caracteres}<br />

begin<br />

Write (’Caracteres: ’);<br />

ReadLn(c1, c2);<br />

c1:= c2;<br />

c2:= c1;<br />

WriteLn (’Invertidos: ’, c1, c2)<br />

<strong>en</strong>d. {Intercambio}

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

Saved successfully!

Ooh no, something went wrong!