PDF de programación - Tema 6 - Tecnología de la Programación

Imágen de pdf Tema 6 - Tecnología de la Programación

Tema 6 - Tecnología de la Programacióngráfica de visualizaciones

Publicado el 13 de Julio del 2017
667 visualizaciones desde el 13 de Julio del 2017
218,9 KB
26 paginas
Creado hace 16a (18/10/2007)
UNIVERSIDAD DE A CORUÑA
FACULTAD DE INFORMÁTICA

DEPARTAMENTO DE COMPUTACIÓN

Tecnología de la Programación

Ingeniería Técnica en Informática de Sistemas

Elena Mª Hernández Pereira

Óscar Fontenla Romero

Bloque didáctico II: Semántica de programas

Tema 6

o Título: El lenguaje GCL, Guarded

Command Language

o Unidades de contenido

• Los comandos skip, abort y composición
• El comando asignación
• La estructura alternativa
• La estructura iterativa
• Llamadas a procedimientos

Tecnología de la programación - Elena Hernández & Oscar Fontenla

2

1

Bloque didáctico II:

Semántica de programas

Tema 6: GCL
Introducción

o GCL: Guarded Command Language [Dijkstra, 1976]

• Sintaxis simple y muy reducida
• Más cómodo para realizar demostraciones formales
• Permite asignaciones simultáneas y no determinismo

o Semántica operacional



Funcionamiento de cada instrucción

• Relación 〈estado, instrucción〉 fi
• Ej: 〈 { (x,1), (y,2) }, “x := 0” 〉 fi

estado

{ (x,0), (y,2) }

o Semántica axiomática

• Caracterización (definción)
• En términos del predicado wp

Tecnología de la programación - Elena Hernández & Oscar Fontenla

3

Bloque didáctico II:

Semántica de programas

Tema 6: GCL

Sintaxis

o

Instrucciones

skip
1.
2. abort
3. Composición secuencial S1;S2
4. Asignación simple x1 := a
5. Asignación múltiple x1, x2, …, xm := a
fi S1 |…Bm
fi S1 |…Bm

Instrucción condicional if B1
Instrucción iterativa do B1

6.

7.

1, a
2, …,a
fi Sm fi
fi Sm od

m

donde m ‡ 0, xi variables o referencias a arrays, a
Bi fórmulas (sin cuantificadores) y Si instrucciones

i expresiones,

Tecnología de la programación - Elena Hernández & Oscar Fontenla

4

2

Bloque didáctico II:

Semántica de programas

Tema 6: GCL
skipy abort

o skip

• Transformación identidad
s

• wp(skip,R) = R

〈s, “skip”〉 fi

o abort

〈s, “abort”〉 fi

s’ para cualquier s y s’


• wp(abort,R) = F
• No existe ningún estado de partida que garantice
que dicho comando termina en un estado definido
y útil

Tecnología de la programación - Elena Hernández & Oscar Fontenla

5

Tema 6: GCL

Composición secuencial

Bloque didáctico II:

Semántica de programas

o S1;S2

s’’ y 〈s’’, S2〉 fi

s’

s’

〈s, (S1;S2)〉 fi


• wp(“S1;S2”,R) = wp(S1,wp(S2,R))
• Es asociativa

〈s, S1〉 fi

 wp(“S1;(S2;S3)”,R) = wp(“(S1;S2);S3”,R)

o Ejemplos:

• wp(“skip;skip”,R)

= wp(skip,wp(skip,R)) = wp(skip,R) = R

• wp(“S;abort”,R) = F

Tecnología de la programación - Elena Hernández & Oscar Fontenla

6

3

Bloque didáctico II:

Semántica de programas

Tema 6: GCL

Comando asignación
o Asignación simple a variables simples

o Asignación múltiple a variables simples

o Asignación a un elemento de un array

o Asignación múltiple general

Tecnología de la programación - Elena Hernández & Oscar Fontenla

7

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación simple a variables simples
x := a

o

x variable simple, a expresión, ambas del mismo tipo


• El identificador x toma el valor de la expresión a


(s; x:s(a )) siempre que s(a ) ˛

〈s, “x := a “〉 fi

rango(x)

• wp(“x:= a ”,R) = dominio(a ) cand Rxa

o Ejemplos

• Dados x,y:integer y s={ (x,1), (y,2) }:


{ (x,1), (y,0) }

〈s, “y := x-1“〉 fi
〈s, “x := y; skip; y := y-1“〉 fi
〈s, “skip; abort“〉 fi





{ (x,2), (y,1) }

no existe estado siguiente

Tecnología de la programación - Elena Hernández & Oscar Fontenla

8

4

Tema 6: GCL

Asignación simple a variables simples

Bloque didáctico II:

Semántica de programas

o Ejemplos

• wp(“x:=5”,x=5) = dominio(5) cand (5=5) = dominio(5)
• wp(“x:=5”,x„ 5) = dominio(5) cand (5 „ 5) =

dominio(5) cand F = F

• Para cualquier predicado p de un argumento

wp(“x:=a/b”,p(x)) = dominio(a/b) cand (p(x)x
= ((b „ 0) cand p(a/b))

a/b)

o Ausencia de efectos colaterales

 Dados x,y distintos y una constante C,

wp(“x:=e”, y=C) = (y=C)

Tecnología de la programación - Elena Hernández & Oscar Fontenla

9

Tema 6: GCL

Asignación simple a variables simples

Bloque didáctico II:

Semántica de programas

o Dada una secuencia de instrucciones

wp(“S1;S2;S3;S4”,R)
= wp(“S1;S2;S3”,wp(“S4”,R))
= wp(“S1;S2”,wp(“S3”,wp(“S4”,R)))
= wp(“S1”,wp(“S2”,wp(“S3”,wp(“S4”,R))))
Lo simplificamos como

o





{wp1} S1 {wp2} S2 {wp3} S3 {wp4} S4 {R}
{wp1} S1;S2;S3;S4 {R}

Tecnología de la programación - Elena Hernández & Oscar Fontenla

10

5

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación simple a variables simples

o Ejercicios: Determina y simplifica wp(S,R)

Tecnología de la programación - Elena Hernández & Oscar Fontenla

11

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación múltiple a variables simples

o





x1, …, xn := a 1,…,a n ⇒‘x = ‘a
xi variables simples distintas, a
〈s, “x1,…, xn := a
siempre que s(a

1,…,a
i) ˛

n“〉 fi

rango(xi)
“,R) = dominio(‘

• wp(“‘ x = ‘

donde dominio(‘

) = ("

i expresiones

(s; x1:s(a

1);…;xn:s(a

n))

I : dominio(a

) cand Rxa
i))

o Ejecución

• Se evalúan las a
• Se asigna v1 a x1, …, vn a xn en este orden

i en cualquier orden para obtener vi

Tecnología de la programación - Elena Hernández & Oscar Fontenla

12

6

a
a
a
Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación múltiple a variables simples

o Ejemplos

• Dados x,y:integer y s={ (x,1), (y,2) }:

〈s, “x := y; y := x“〉 fi
〈s, “x,y := y,x”〉 fi
〈s, “x,y,x := y,x,x-1”〉 fi
〈s, “x,y := 0,y/x”〉 fi









{ (x,2), (y,2) }

{ (x,2), (y,1) }

{ (x,0), (y,1) }

{ (x,0), (y,2) }

o Ejercicios

• wp(“z,y:=z*x,y-1”,((y ‡ 0)
(z*xy =c)))
• wp(“s,i:=s+b[i],i+1”,((i > 0) s=(∑ J ˛

[0,i 〉: b[J])))

Tecnología de la programación - Elena Hernández & Oscar Fontenla

13

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación múltiple a variables simples

o Ejercicios: Determina y simplifica wp(S,R)

Tecnología de la programación - Elena Hernández & Oscar Fontenla

14

7

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación múltiple a variables simples

o Utilidad: Derivación de programas
o Dado b:array, i,m,p:integer con i £ m < i+p

i, (i+p-1) límites de una partición de p


• m índice de esa partición
• Se pretende hacer más pequeña la partición

haciendo i = m+1 sin cambiar p

• ¿Qué valor se asigna a p?

o Dado: { T } a:= a+1; b:= x { a= b }

• Encontrar un valor para x

Tecnología de la programación - Elena Hernández & Oscar Fontenla

15

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación múltiple a variables simples
o Ejercicios: Determina y simplifica wp(S,R)

Tecnología de la programación - Elena Hernández & Oscar Fontenla

16

8

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación a un elemento de un array

o Recordamos

• Array: variable simple que contiene una función







b[i] ⇒ aplicación de la función b sobre el argumento i
(b; i : a ) ⇒ función igual a b excepto en el argumento
i que produce el valor a
b[i] := a
b := (b; i : a )

b := (b; i : a )

o

Tecnología de la programación - Elena Hernández & Oscar Fontenla

17

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación a un elemento de un array
b := (b; i : a )
• Dado un selector s = [e1][e2]…[en] donde cada ei son

expresiones, definimos su evaluación en s

o



s(s ) = [s(e1)] [s(e2)]… [s(en)]

La ejecución de xs
〈 s, “xs
:= a ” 〉 fi
siempre que ei

:= a produce el efecto:

(s; x: (s(x); s(s ):s(a )))
˛ dominioi(x) y a

rango(x)

Tanto a como s se evalúan en el estado s







Tecnología de la programación - Elena Hernández & Oscar Fontenla

18

9


˛
Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación a un elemento de un array

o Ejemplos:

• Dado b[0:2]:integer y s = { (i,1), (b, (0,1,20)) }

〈 s, “b[i+1] := b[b[i]] + 6” 〉 fi

{ (i,1), (b, (0,1,7)) }

〈 s, “b[b[i-1]] := 7” 〉

{ (i,1), (b, (7,1,20)) }

〈 s, “b[i+2] := 7” 〉

no hay estado siguiente







Tecnología de la programación - Elena Hernández & Oscar Fontenla

19

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

o

Asignación a un elemento de un array
b := (b; i : a )
• wp(“b[i] := a ”,R) = wp(“b := (b; i:a )”,R)
(b; i:a )

= dominio((b; i:a )) cand Rb
= enrango(i,b) cand dominio(a ) cand Rb

(b; i:a )

o Ejemplos:

• wp(“b[i] := 5”, b[i]=5)
• wp(“b[i] := 5”, b[i]=b[j])
• wp(“b[b[i]] := i”, b[i]=i)
• wp(“b[n] := x”, ordenado(b[1:n]))

Tecnología de la programación - Elena Hernández & Oscar Fontenla

20

10



Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación a un elemento de un array

o Ejercicios: Determina y simplifica wp(S,R)

Tecnología de la programación - Elena Hernández & Oscar Fontenla

21

Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación múltiple general

o





x1s 1,…, xn s n := a 1,…,a n ⇒‘‘ xs = ‘a

xi identificadores, s
mismo tipo que xi
n := a
n“ 〉 fi
〈 s, “x1
1,…,xn
(s; x1: (s(x1); s(s
1):s(a
˛ dominioi(x) y a
siempre que s
i
,R)= dominio(‘
• wp(“‘xs = ‘a

i selectores y a
1,…,a
1)); …; xn: (s(xn); s(s

) cand Rxs

i

i expresiones del

n):s(a
rango(xi)

a = Rxs

i

n)))

o Ejecución

1. Se evalúan todos los s
2. Se evalúan todas las a
3. Se asigna de izquierda a derecha

i en s
i en s

Tecnología de la programación - Elena Hernández & Oscar Fontenla

22

11

s
s
s
˛
a
a
Tema 6: GCL

Bloque didáctico II:

Semántica de programas

Asignación múltiple general

o Problema:

• Redefinir la sustitución textual ya que‘xs no son

sólo identificadores



o Dos casos:
s
b1
1,…, bn
después a
tanto es equivalente a b := (b; s

s
1 a b1
n: a
• Sean b,c identificadores distintos y s , r dos

n := a
s
1,…,a
s
2,…,a b2

1,
2 y así sucesivamente, por lo

n asigna primero a
1; …;s

1: a

n)

selectores, entonces bs , cr := a ,b debe tener el
mismo efecto que
  • Links de descarga
http://lwp-l.com/pdf5347

Comentarios de: Tema 6 - Tecnología de la Programación (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad