PDF de programación - Semántica operacional - Tecnología de la Programación

Imágen de pdf Semántica operacional - Tecnología de la Programación

Semántica operacional - Tecnología de la Programacióngráfica de visualizaciones

Publicado el 5 de Julio del 2017
973 visualizaciones desde el 5 de Julio del 2017
461,9 KB
67 paginas
Creado hace 15a (15/05/2008)
Tecnología de la Programación

Semántica Operacional

David Cabrero Souto

Facultad de Informática
Universidade da Coruña

Curso 2007/2008

Verificación formal

Recordar descriptores BOE:

Diseño de algoritmos
Análisis de algoritmos
Lenguajes de programación
Diseño de programas: Descomposición modular y
documentación
Técnicas de verificación
Pruebas de programas

Pruebas de programas: validación

Ejecución de un conjunto de tests generados sintética o
manualmente.

Prueba formal de propiedades: verificación

Demostración formal de propiedades .
Necesitamos una definición formal del significado (semántica)
de los lenguajes de programación.

Verificación formal

Recordar descriptores BOE:

Diseño de algoritmos
Análisis de algoritmos
Lenguajes de programación
Diseño de programas: Descomposición modular y
documentación
Técnicas de verificación
Pruebas de programas

Pruebas de programas: validación

Ejecución de un conjunto de tests generados sintética o
manualmente.

Prueba formal de propiedades: verificación

Demostración formal de propiedades .
Necesitamos una definición formal del significado (semántica)
de los lenguajes de programación.

Verificación formal

Recordar descriptores BOE:

Diseño de algoritmos
Análisis de algoritmos
Lenguajes de programación
Diseño de programas: Descomposición modular y
documentación
Técnicas de verificación
Pruebas de programas

Pruebas de programas: validación

Ejecución de un conjunto de tests generados sintética o
manualmente.

Prueba formal de propiedades: verificación

Demostración formal de propiedades .
Necesitamos una definición formal del significado (semántica)
de los lenguajes de programación.

Verificación formal

Recordar descriptores BOE:

Diseño de algoritmos
Análisis de algoritmos
Lenguajes de programación
Diseño de programas: Descomposición modular y
documentación
Técnicas de verificación
Pruebas de programas

Pruebas de programas: validación

Ejecución de un conjunto de tests generados sintética o
manualmente.

Prueba formal de propiedades: verificación

Demostración formal de propiedades .
Necesitamos una definición formal del significado (semántica)
de los lenguajes de programación.

Verificación formal

Recordar descriptores BOE:

Diseño de algoritmos
Análisis de algoritmos
Lenguajes de programación
Diseño de programas: Descomposición modular y
documentación
Técnicas de verificación
Pruebas de programas

Pruebas de programas: validación

Ejecución de un conjunto de tests generados sintética o
manualmente.

Prueba formal de propiedades: verificación

Demostración formal (base matemática) de propiedades .
Necesitamos una definición formal del significado (semántica)
de los lenguajes de programación.

Verificación formal

Recordar descriptores BOE:

Diseño de algoritmos
Análisis de algoritmos
Lenguajes de programación
Diseño de programas: Descomposición modular y
documentación
Técnicas de verificación
Pruebas de programas

Pruebas de programas: validación

Ejecución de un conjunto de tests generados sintética o
manualmente.

Prueba formal de propiedades: verificación

Demostración formal (base matemática) de propiedades (para
todos los casos).
Necesitamos una definición formal del significado (semántica)
de los lenguajes de programación.

Verificación formal

Recordar descriptores BOE:

Diseño de algoritmos
Análisis de algoritmos
Lenguajes de programación
Diseño de programas: Descomposición modular y
documentación
Técnicas de verificación
Pruebas de programas

Pruebas de programas: validación

Ejecución de un conjunto de tests generados sintética o
manualmente.

Prueba formal de propiedades: verificación

Demostración formal (base matemática) de propiedades (para
todos los casos).
Necesitamos una definición formal del significado (semántica)
de los lenguajes de programación.

Lenguaje de ejemplo

IMP (IMPerativo)
Estructuras básicas:

Secuencia
Alternativa
Repetición

Cambio de estado: variables y asignación.
Tipos básicos: enteros, strings.
Tipos compuestos: arrays.
Funciones.

IMP. Sintaxis aproximada

IMP ::= ’eof’

| CMDS ’eof’

CMDS ::= CMD ’;’

| CMD ’;’ CMDS

CMD ::= ’skip’

| Type Variable ’:=’ EXP
| Variable ’:=’ EXP
| Type Variable ’[’ Exp ’]’ ’:=’ EXP
| Variable ’[’ Exp ’]’ ’:=’ EXP
| ’if’ EXP ’then’ CMDS ’else’ CMDS ’fi’
| ’while’ EXP ’do’ CMDS ’done’
| ’print’ EXP

Semántica operacional

Define la semántica de un lenguaje de programación en
función de los cambios de estado que producen cada una de
las instrucciones del lenguaje.
No es adecuado para todo tipo de lenguajes.
El estado se representa mediante un modelo o abstracción.

IMP- Definición (I)

Conjuntos sintácticos asociados con IMP.

números N
Booleanos T = {true, false}
Posiciones de memoria Loc
Expresiones aritméticas Aexp
Expresiones booleanas Bexp
Comandos Com

IMP- Definición (I)

Conjuntos sintácticos asociados con IMP.

números N
Booleanos T = {true, false}
Posiciones de memoria Loc
Expresiones aritméticas Aexp
Expresiones booleanas Bexp
Comandos Com

IMP- Definición (I)

Conjuntos sintácticos asociados con IMP.

números N
Booleanos T = {true, false}
Posiciones de memoria Loc
Expresiones aritméticas Aexp
Expresiones booleanas Bexp
Comandos Com

IMP- Definición (I)

Conjuntos sintácticos asociados con IMP.

números N
Booleanos T = {true, false}
Posiciones de memoria Loc
Expresiones aritméticas Aexp
Expresiones booleanas Bexp
Comandos Com

IMP- Definición (I)

Conjuntos sintácticos asociados con IMP.

números N
Booleanos T = {true, false}
Posiciones de memoria Loc
Expresiones aritméticas Aexp
Expresiones booleanas Bexp
Comandos Com

IMP- Definición (I)

Conjuntos sintácticos asociados con IMP.

números N
Booleanos T = {true, false}
Posiciones de memoria Loc
Expresiones aritméticas Aexp
Expresiones booleanas Bexp
Comandos Com

IMP- Definición (II)

Convenciones

n, m son variables en N
X , Y son variables en Loc
ai son variables en Aexp
bi son variables en Bexp
ci son variables en Com

n, m ∈ N
X , Y ∈ Loc
ai ∈ Aexp
bi ∈ Bexp
ci ∈ Com

IMP- Definición (II)

Convenciones

n, m son variables en N
X , Y son variables en Loc
ai son variables en Aexp
bi son variables en Bexp
ci son variables en Com

n, m ∈ N
X , Y ∈ Loc
ai ∈ Aexp
bi ∈ Bexp
ci ∈ Com

IMP- Definición (II)

Convenciones

n, m son variables en N
X , Y son variables en Loc
ai son variables en Aexp
bi son variables en Bexp
ci son variables en Com

n, m ∈ N
X , Y ∈ Loc
ai ∈ Aexp
bi ∈ Bexp
ci ∈ Com

IMP- Definición (II)

Convenciones

n, m son variables en N
X , Y son variables en Loc
ai son variables en Aexp
bi son variables en Bexp
ci son variables en Com

n, m ∈ N
X , Y ∈ Loc
ai ∈ Aexp
bi ∈ Bexp
ci ∈ Com

IMP- Definición (II)

Convenciones

n, m son variables en N
X , Y son variables en Loc
ai son variables en Aexp
bi son variables en Bexp
ci son variables en Com

n, m ∈ N
X , Y ∈ Loc
ai ∈ Aexp
bi ∈ Bexp
ci ∈ Com

IMP- Definición (Aexp)

Expresiones aritméticas
Aexp

::= n
|
X
|
a0 + a1
|
a0 − a1
|
a0 ∗ a1

IMP- Definición (Bexp)

Expresiones booleanas
Bexp

::= true
|
false
|
a0 = a1
|
a0 <= a1
|
not b
|
b0 and b1
|
b0 or b1

IMP- Definición (Comm)

Instrucciones
Comm ::= skip
|
|
|
| while b do c done

X := a
c0; c1
if b then c0 else c1 fi

Estados

El conjunto de estados Σ está formado por las funciones:

σ : Loc− > N

(Sólo variables enteras)
Dado un estado σ, representaremos el valor de la posicion X
como:

σ(X )



Y la extensión de un estado σ[X ← m]:

σ[X ← m](Y ) =

Indistintamente

σ[X ← m]

m
Y = X ,
σ(Y ) si Y = X .
ó

σ[m/X ]

Evaluación

Evaluación de una expresión aritmética a en un estado σ

< a, σ >→ n

Evaluación de una expresión booleana b en un estado σ

< b, σ >→ {true, false}

Ejecución de una instrucción c en un estado σ

< c, σ >→ σ

Secuentes

Si las premisas son ciertas, se puede deducir la conclusión.

< premisas >
< conclusion >
F1 . . . Fn → G1 . . . Gm

F1 . . . Fn
G1 . . . Gm
Las usaremos para definir la semántica operacional.

Evaluación de expresiones aritméticas

Constantes

Variables

Suma

Resta

Multiplicación

< n, σ >→ n

< X , σ >→ σ(X )

< a0, σ >→ n < a1, σ >→ m

< a0 + a1, σ >→ n + m

< a0, σ >→ n < a1, σ >→ m

< a0 − a1, σ >→ n − m

< a0, σ >→ n < a1, σ >→ m

< a0 ∗ a1, σ >→ n ∗ m

Evaluación de expresiones aritméticas

Constantes

Variables

Suma

Resta

Multiplicación

< n, σ >→ n

< X , σ >→ σ(X )

< a0, σ >→ n < a1, σ >→ m

< a0 + a1, σ >→ n + m

< a0, σ >→ n < a1, σ >→ m

< a0 − a1, σ >→ n − m

< a0, σ >→ n < a1, σ >→ m

< a0 ∗ a1, σ >→ n ∗ m

Evaluación de expresiones aritméticas

Constantes

Variables

Suma

Resta

Multiplicación

< n, σ >→ n

< X , σ >→ σ(X )

< a0, σ >→ n < a1, σ >→ m

< a0 + a1, σ >→ n + m

< a0, σ >→ n < a1, σ >→ m

< a0 − a1, σ >→ n − m

< a0, σ >→ n < a1, σ >→ m

< a0 ∗ a1, σ >→ n ∗ m

Evaluación de expresiones aritméticas

Constantes

Variables

Suma

Resta

Multiplicación

< n, σ >→ n

< X , σ >→ σ(X )

< a0, σ >→ n < a1, σ >→ m

< a0 + a1, σ >→ n + m

< a0, σ >→ n < a1, σ >→ m

< a0 − a1, σ >→ n − m

< a0, σ >→ n < a1, σ >→ m

< a0 ∗ a1, σ >→ n ∗ m

Evaluación de expresiones aritméticas

Constantes

Variables

Suma

Resta

Multiplicación

< n, σ >→ n

< X , σ >→ σ(X )

< a0, σ >→ n < a1, σ >→ m

< a0 + a1, σ >→ n + m

< a0, σ >→ n < a1, σ >→ m

< a0 − a1, σ >→ n − m

< a0, σ >→ n < a1, σ >→ m

< a0 ∗ a1, σ >→ n ∗ m

Evaluación de expresiones booleanas (I)

Constantes

< true, σ >→ true
Comparación aritmética

< false, σ >→ false

< a0, σ >→ n < a1, σ >→ m
< a0, σ >→ n < a1, σ >→ m

< a0 = a1, σ >→ true
< a0 = a1, σ >→ false

< a0, σ >→ n < a1, σ >→ m
< a0 <= a1, σ >→ true
< a0, σ >→ n < a1, σ >→ m
< a0 <= a1, σ >→ false

n = m
n = m

n <= m

n > m

Evaluación de expresiones booleanas (I)

Constantes

< true, σ >→ true
Comparación aritmética

< false, σ >→ false

< a0, σ >→ n < a1, σ >→ m
< a0, σ >→ n < a1, σ >→ m

< a0 = a1, σ >→ true
< a0 = a1, σ >→ false

< a0, σ >→ n < a1, σ >→ m
< a0 <= a1, σ >→ true
< a0, σ >→ n < a1, σ >→ m
< a0 <= a1, σ >→ false

n = m
n = m

n <= m

n > m

Evaluación de expresiones booleanas (II)

Negación
  • Links de descarga
http://lwp-l.com/pdf4890

Comentarios de: Semántica operacional - 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