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.

8.7. Desarrollo correcto de subprogramas 185<br />

{ prodAcum = n!}<br />

Fac:= prodAcum<br />

{F ac = n!}<br />

<strong>en</strong>d; {Fac}<br />

❡❡ <br />

En el caso de que <strong>en</strong> el código de nuestro subprograma aparezcan llamadas<br />

a otros subprogramas, la verificación dep<strong>en</strong>derá, naturalm<strong>en</strong>te, de la<br />

corrección de éstos. Nuestra tarea <strong>en</strong> este caso consistirá <strong>en</strong> comprobar que<br />

esas llamadas son correctas de la forma que se detallará a continuación. En<br />

el caso particular de que las llamadas sean al mismo subprograma (subprogramas<br />

recursivos) habrá que recurrir a técnicas de verificación específicas<br />

que serán explicadas <strong>en</strong> el capítulo 10.<br />

Además, para cada subprograma especificaremos su interfaz de una forma<br />

semi-formal. Para ello explicitaremos al principio de cada subprograma una precondición<br />

que describa lo que precisa el subprograma para una ejecución correcta<br />

y una postcondición que indique los efectos que producirá. Así, <strong>en</strong> nuestro<br />

ejemplo: 8<br />

function Fac(n: integer): integer;<br />

{PreC.: 0 ≤ n ≤ 7 y n ≤ MaxInt}<br />

{Devuelve n!}<br />

var<br />

i, prodAcum: integer;<br />

begin<br />

prodAcum:= 1;<br />

{Inv.: i ≤ n y prodAcum = i! }<br />

for i:= 2 to n do<br />

prodAcum:= prodAcum * i;<br />

{prodAcum = n!}<br />

Fac:= prodAcum<br />

{F ac = n!}<br />

<strong>en</strong>d; {Fac}<br />

Más precisam<strong>en</strong>te consideraremos que la precondición de un subprograma es<br />

una descripción informal de los requisitos que se deb<strong>en</strong> cumplir para su correcto<br />

funcionami<strong>en</strong>to. La postcondición es una descripción más o m<strong>en</strong>os formal del<br />

resultado o del comportami<strong>en</strong>to del subprograma.<br />

La línea que proponemos es, pues, incluir las precondiciones y postcondiciones<br />

como parte de la docum<strong>en</strong>tación del subprograma. Visto desde un punto más<br />

formal, consideraremos que la especificación del subprograma está formada por<br />

8 n debe ser m<strong>en</strong>or que 8 para que n! ≤ MaxInt, ya que 8! = 40320 > MaxInt.

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

Saved successfully!

Ooh no, something went wrong!