Los avatares para el juego dramático en entornos virtuales
Tema 2. teoría y práctica de derivación de asignaciones representado
1. 2.3. Derivaci´n de algoritmos
o
Metodolog´ de la Programaci´n
ıa o
Tema 2. Teor´ y pr´ctica de derivaci´n de asignaciones representado
ıa a o
A
usando LTEX
Igor Ruiz-Agundez1
DeustoTech Computing, Deusto Institute of Technology, University of Deusto
1 http://paginaspersonales.deusto.es/igor.ira/
2. 2.3. Derivaci´n de algoritmos
o
Teor´ 2.3.1. Derivaci´n de asignaciones
ıa o
Pr´ctica Ejemplo 2. Intercambio de valores
a
Discusi´n Feed-back
o
3. 2.3. Derivaci´n de algoritmos
o
Teor´ 2.3.1. Derivaci´n de asignaciones
ıa o
Pr´ctica Ejemplo 2. Intercambio de valores
a
Discusi´n Feed-back
o
4. 2.3. Derivaci´n de algoritmos
o
Teor´ 2.3.1. Derivaci´n de asignaciones
ıa o
Pr´ctica Ejemplo 2. Intercambio de valores
a
Discusi´n Feed-back
o
5. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
An´lisis de la postcondici´n
a o
Los resultados a obtener influyen en el dise˜o mucho m´s que los datos
n a
de los que se dispone.
Es por eso por lo que el an´lisis de la postcondici´n es un buen m´todo
a o e
para desarrollar algoritmos.
6. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Heur´ısticas derivadas del an´lisis
a Podr´ satisfacerse mediante
ıas
de las postcondici´n
o Puede intentarse
Si en la postcondici´n
o satisfacerlas mediante
aparecen igualdades entre asignaciones simples o
variables del programa y m´ltiples.
u
expresiones.
7. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Heur´ısticas derivadas del an´lisis
a Podr´ satisfacerse mediante
ıas
de las postcondici´n
o Hay varias maneras de
Si aparecen disyunciones. satisfacer la postcondici´n.
o
Puede intentarse dise˜ando
n
una alternativa, cada una
de cuyas ramas obtenga la
postcondici´n a base de
o
satisfacer una de las
disyunciones.
8. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Heur´ısticas derivadas del an´lisis
a Podr´ satisfacerse mediante
ıas
de las postcondici´n
o Puede considerarse cada
Si aparecen conjunciones. una de ellas aisladamente e
intentar satisfacerlas por
separado.
Es posible que al intentar
satisfacer una de ellas la
otra se haga imposible de
satisfacer.
Se puede crear alternativas
en las cuales algunas
conjunciones se satisfacen
mediante la instrucci´n
o
protegida.
Las dem´s constan en la
a
protecci´n.
o
9. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Heur´ısticas derivadas del an´lisis
a Podr´ satisfacerse mediante
ıas
de las postcondici´n
o El empleo de “prueba y
Estas indicaciones no error”.
evitan...
10. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Requisitos
Hay que indicar en la especificaci´n qu´ variables pueden cambiar de
o e
valor y cu´les no.
a
Estrategia a seguir Ejemplo
La construcci´n de un
o {Prec}
programa parte {Post}
necesariamente de un par
de asertos que constituyen
su especificaci´n, por
o
ejemplo Prec y Post.
11. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Estrategia a seguir Ejemplo
Es com´n en el proceso de
u {Prec}
derivaci´n de los programas
o ?
pensar en una instrucci´n I
o
I
que nos podr´ ayudar a
ıa
establecer la postcondici´n
o {Post}
y situarla como ultima
´
instrucci´n del programa.
o
12. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Estrategia a seguir Ejemplo
En este caso habr´ que
ıa {Prec}
continuar el proceso hacia ?
arriba, calculando el aserto
{B}
B que deber´ cumplirse
ıa
antes de la instrucci´n
o I
dise˜ada para que la
n {Post}
ejecuci´n de I lleve al
o
cumplimiento de Post.
13. 2.3. Derivaci´n de algoritmos
o
2.3.1. Derivaci´n de asignaciones
o
Teor´
ıa
Estrategia a seguir Ejemplo
A partir de este momento el {Prec}
objetivo ser´ derivar un
ıa ?
programa cuyas
{B}
precondici´n y
o
postcondici´n fueran Prec y
o I
B. El proceso se repite {Post}
hasta que la precondici´n
o
calculada para determinada
instrucci´n coincida con
o
Prec, la precondici´n de la
o
especificaci´n inicial.
o
14. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Enunciado
Se pide
Derivar la siguiente especificaci´n que realiza un intercambio de valores.
o
Especificaci´n
o
var x, y : nat
{Prec : x = X ∧ y = Y }
{Post : x = Y ∧ y = X }
15. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
An´lisis de la postcondici´n
a o
La postcondici´n es una conjunci´n de dos igualdades.
o o
Opciones
Considerarse cada una de ellas aisladamente e intentar satisfacerlas
por separado. Pero es posible que al intentar satisfacer una de ellas
la otra se haga imposible de satisfacer.
Crear alternativas en las cuales algunas conjunciones se satisfacen
mediante la instrucci´n protegida y las dem´s constan en la
o a
protecci´n.
o
16. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Primera aproximaci´n
o
Podr´
ıamos pensar en una asignaci´n m´ltiple.
o u
Instrucciones
{Prec : x = X ∧ y = Y }
< x, y >:=< y , x >
{Post : x = Y ∧ y = X }
17. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Primera aproximaci´n
o
Podr´
ıamos pensar en una asignaci´n m´ltiple.
o u
Instrucciones
{Prec : x = X ∧ y = Y }
< x, y >:=< y , x >
{Post : x = Y ∧ y = X }
Reflexi´n
o
Sin embargo, la postcondici´n es una conjunci´n de dos igualdades.
o o
Tienen que cumplirse ambas simult´neamente. Adem´s, no puede
a a
verificarse.
18. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Segunda aproximaci´n
o
Intentamos con una asignaci´n sobre la variable y . No podemos acceder
o
al valor inicial de X .
Instrucciones Buscamos {A1 }
{A1 } {A1 } ≡ Post[y ← x]
y := x ≡x =Y ∧x =X
{Post : x = Y ∧ y = X }
19. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Segunda aproximaci´n
o
Intentamos con una asignaci´n sobre la variable y . No podemos acceder
o
al valor inicial de X .
Instrucciones Buscamos {A1 }
{A1 } {A1 } ≡ Post[y ← x]
y := x ≡x =Y ∧x =X
{Post : x = Y ∧ y = X } ≡X =Y
20. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Segunda aproximaci´n
o
Intentamos con una asignaci´n sobre la variable y . No podemos acceder
o
al valor inicial de X .
Instrucciones Buscamos {A1 }
{A1 } {A1 } ≡ Post[y ← x]
y := x ≡x =Y ∧x =X
{Post : x = Y ∧ y = X } ≡X =Y
Reflexi´n
o
No podemos asegurarlo. No tenemos esa informaci´n.
o
21. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Tercera aproximaci´n
o
Intentamos con una asignaci´n sobre la variable x. No podemos acceder
o
al valor inicial de Y .
Instrucciones Buscamos {A1 }
{A1 } {A1 } ≡ Post[x ← y ]
x := y ≡y =Y ∧y =X
{Post : x = Y ∧ y = X }
22. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Tercera aproximaci´n
o
Intentamos con una asignaci´n sobre la variable x. No podemos acceder
o
al valor inicial de Y .
Instrucciones Buscamos {A1 }
{A1 } {A1 } ≡ Post[x ← y ]
x := y ≡y =Y ∧y =X
{Post : x = Y ∧ y = X } ≡X =Y
23. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Tercera aproximaci´n
o
Intentamos con una asignaci´n sobre la variable x. No podemos acceder
o
al valor inicial de Y .
Instrucciones Buscamos {A1 }
{A1 } {A1 } ≡ Post[x ← y ]
x := y ≡y =Y ∧y =X
{Post : x = Y ∧ y = X } ≡X =Y
Reflexi´n
o
Ocurrir´ lo mismo. No podemos asegurarlo. No tenemos esa
ıa
informaci´n.
o
24. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional.
Instrucciones Buscamos {A1 }
var z : nat {A1 } ≡ Post[y ← z]
{A1 } ≡x =Y ∧z =X
y := z
{Post : x = Y ∧ y = X }
25. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional.
Instrucciones Buscamos {A1 }
var z : nat {A1 } ≡ Post[y ← z]
{A1 } ≡x =Y ∧z =X
y := z ¿Podemos demostrar esto?
{Post : x = Y ∧ y = X }
26. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional.
Instrucciones Buscamos {A1 }
var z : nat {A1 } ≡ Post[y ← z]
{A1 } ≡x =Y ∧z =X
y := z ¿Podemos demostrar esto?
{Post : x = Y ∧ y = X }
Reflexi´n
o
No podemos demostrarlo. Seguimos operando sobre {A1 }.
27. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A1 }.
Instrucciones Buscamos {A2 }
var z : nat {A2 } ≡ A1 [z ← x]
{A2 } ≡x =Y ∧x =X
z := x;
{A1 : x = Y ∧ z = X }
y := z
{Post : x = Y ∧ y = X }
28. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A1 }.
Instrucciones Buscamos {A2 }
var z : nat {A2 } ≡ A1 [z ← x]
{A2 } ≡x =Y ∧x =X
z := x; ≡X =Y
{A1 : x = Y ∧ z = X }
y := z
{Post : x = Y ∧ y = X }
29. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A1 }.
Instrucciones Buscamos {A2 }
var z : nat {A2 } ≡ A1 [z ← x]
{A2 } ≡x =Y ∧x =X
z := x; ≡X =Y
{A1 : x = Y ∧ z = X }
y := z
{Post : x = Y ∧ y = X }
Reflexi´n
o
No podemos asegurarlo. No tenemos esa informaci´n.
o
30. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A1 }.
Segundo intento.
Instrucciones Buscamos {A2 }
var z : nat {A2 } ≡ A1 [x ← y ]
{A2 } ≡y =Y ∧z =X
x := y ;
{A1 : x = Y ∧ z = X }
y := z
{Post : x = Y ∧ y = X }
31. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A1 }.
Segundo intento.
Instrucciones Buscamos {A2 }
var z : nat {A2 } ≡ A1 [x ← y ]
{A2 } ≡y =Y ∧z =X
x := y ; // Por la Prec
{A1 : x = Y ∧ z = X } ≡z =X
y := z ¿Podemos demostrar esto?
{Post : x = Y ∧ y = X }
32. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A1 }.
Segundo intento.
Instrucciones Buscamos {A2 }
var z : nat {A2 } ≡ A1 [x ← y ]
{A2 } ≡y =Y ∧z =X
x := y ; // Por la Prec
{A1 : x = Y ∧ z = X } ≡z =X
y := z ¿Podemos demostrar esto?
{Post : x = Y ∧ y = X }
Reflexi´n
o
No podemos demostrarlo. Seguimos operando sobre {A2 }.
33. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A2 }.
Instrucciones Verificamos z := x
{Prec : x = X ∧ y = Y } {Prec} ⇒ A2 [z ← x]
var z : nat ≡x =X
z := x
{A2 : z = X }
x := y ;
{A1 : x = Y ∧ z = X }
y := z
{Post : x = Y ∧ y = X }
34. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A2 }.
Instrucciones Verificamos z := x
{Prec : x = X ∧ y = Y } {Prec} ⇒ A2 [z ← x]
var z : nat ≡x =X
z := x // Por la Prec
{A2 : z = X } ≡ True
x := y ;
{A1 : x = Y ∧ z = X }
y := z
{Post : x = Y ∧ y = X }
35. 2.3. Derivaci´n de algoritmos
o
Ejemplo 2. Intercambio de valores
Soluci´n
o
Cuarta aproximaci´n
o
Utilizamos una variable adicional y continuamos operando sobre {A2 }.
Instrucciones Verificamos z := x
{Prec : x = X ∧ y = Y } {Prec} ⇒ A2 [z ← x]
var z : nat ≡x =X
z := x // Por la Prec
{A2 : z = X } ≡ True
x := y ;
{A1 : x = Y ∧ z = X }
y := z
{Post : x = Y ∧ y = X }
Reflexi´n
o
Hemos terminado la derivaci´n.
o
36. 2.3. Derivaci´n de algoritmos
o
Feed-back
Discusi´n
o
This slide is intentionally left blank