fbpx
Wikipedia

Lenguaje de Comandos Guardados

El Lenguaje de Comandos Guardados (GCL, Guarded Command Language), o de Órdenes Guardadas, es un modelo de lenguaje definido por Edsger Dijkstra para semántica de transformación de predicados (una extensión lógica diseñada para proporcionar una metodología para desarrollar programas "correctos por construcción" en un lenguaje imperativo).[1]

Tiene un conjunto especial de construcciones de condición y de bucle. El elemento más básico del lenguaje es el comando guardado o comando con guarda.

Comando guardado

Un comando guardado consiste en una orden —un enunciado— que está "guardada" (protegida) por una proposición llamada guarda, cuyo valor debe ser verdadero antes de que se ejecute el comando. Cuando el enunciado se ejecuta, puede asumirse que la proposición de guarda es verdadera. Si la proposición de guarda es falsa, no se ejecutará el enunciado.

El uso de comandos guardados facilita la comprobación de que el programa cumple la especificación.

Sintaxis

Un comando guardado es un enunciado de la forma  , donde

  •   es la proposición de guarda;
  •   es una instrucción.

Semántica

Cuando   se encuentra en un cálculo, se evalúa.

  • Si   es verdadero, se ejecuta  .
  • Si   es falso, lo que se hará dependerá del contexto.

Las sentencias   pueden cambiar estados:

x, z = y, y + 1 el nuevo valor de x es y y el nuevo valor de z es y + 1

o realizar entrada y salida:

print "Salida"

Naturalmente, una implementación de comandos guardados puede permitir cualquier anchura para las condiciones y sentencias.

Un comando guardado se puede presentar por sí solo como una sentencia; en comandos que siempre se ejecutan, la guarda se puede omitir:

true   print 5

es equivalente a:

print 5

Skip y Abort

Skip y Abort son enunciados simples pero importantes en el lenguaje de comandos guardados.

  • Abort es la instrucción indefinida: hacer cualquier cosa. El enunciado Abort no tiene por qué implicar la terminación (aborto) del programa; se usa para describir el programa al formular una demostración, en cuyo caso la demostración generalmente falla.
  • Skip es la instrucción vacía: no hacer nada. Se usa en el programa en sí mismo, cuando la sintaxis requiere un enunciado y el programador no quiere que la máquina cambie estados.

La construcción condicional if

La construcción condicional o de selección es una lista de comandos guardados, de los cuales uno es escogido para ser ejecutado. Si más de una guarda es verdadera, el enunciado que se ejecutará se escoge de forma aleatoria o de forma no determinista. Si ninguna guarda es verdadera, el resultado es indefinido (semánticamente equivalente a una instrucción Abort). Ya que al menos una guarda ha de ser verdadera, es frecuente que se necesite la instrucción Skip.

Sintaxis

 
 
 
 
 
 

Semántica

  • Si ninguna de las guardas es verdadera: Abort;
  • Si solamente la guarda   es verdadera: ejecutar  ;
  • Si las guardas   son verdaderas: ejecutar cualquier  , donde  

Ejemplo

Dada la expresión en pseudocódigo:

if   then print "Mayor ó igual";
else if   then print "Menor";

El equivalente en comandos guardados es:

if
  print "Mayor ó igual"
  print "Menor"
fi

La potencia de los comandos guardados se ilustra en la siguiente expresión:

if
  print "Mayor ó igual"
  print "Menor ó igual"
fi

Cuando  , el resultado del comando puede ser o bien "Mayor ó igual" o bien "Menor ó igual" (pero no los dos).

La construcción de bucle do

La construcción de repetición do se escribe así:

 
 
 
 
 
 

Las guardas de los comandos guardados se evalúan. Si una de ellas es verdadera, se ejecuta el enunciado correspondiente. Si más de una es verdadera, se ejecuta sólo un enunciado escogido de entre los correspondientes de forma aleatoria o no determinista. El proceso se repite hasta que ninguna de las guardas evalúe como verdadera (es decir, después de ejecutar un comando se vuelve a evaluar las guardas desde el principio).

Ejemplo

A continuación se da una implementación del algoritmo de Euclides para hallar el máximo común divisor.

x, y = X, Y
do de nuevo, terminación cuando  
  x:= x-y
  y:= y-x
od
print x

Aplicaciones

Circuitos Asíncronos

Los comandos guardados son adecuados para diseño de circuitos QDI porque la construcción do-od permite retrasos relativos arbitrarios para la selección de comandos diferentes. En esta aplicación, una puerta lógica manejando un nodo y en el circuito consiste en dos comandos guardados, como sigue:

 
 

PulldownGuard y PullupGuard son funciones de la entrada de la puerta lógica, que describen las acciones de salida pull down y pull up respectivamente.

Al contrario que modelos clásicos de evaluación de circuitos, el modelo do-od para un conjunto de comandos guardados (correspondiendo a un circuito asíncrono) puede describir con precisión todos los posibles comportamientos dinámicos del circuito.

Implementaciones

Algunas implementaciones de lenguaje de comandos guardados:

  • es una aproximación a un compilador verificante que genera programas que deben cumplir con su especificación, de lo contrario son interrumpidos durante su ejecución. Esta notación (y su correspondiente traductor al lenguaje Java) está siendo desarrollada en la Universidad Simón Bolívar en Venezuela.

Referencias

  1. Dijkstra, Edsger W. «EWD472: Guarded commands, non-determinacy and formal. derivation of programs.». Consultado el 16 de agosto de 2006. 
  •   Datos: Q2442390

lenguaje, comandos, guardados, guarded, command, language, Órdenes, guardadas, modelo, lenguaje, definido, edsger, dijkstra, para, semántica, transformación, predicados, extensión, lógica, diseñada, para, proporcionar, metodología, para, desarrollar, programas. El Lenguaje de Comandos Guardados GCL Guarded Command Language o de ordenes Guardadas es un modelo de lenguaje definido por Edsger Dijkstra para semantica de transformacion de predicados una extension logica disenada para proporcionar una metodologia para desarrollar programas correctos por construccion en un lenguaje imperativo 1 Tiene un conjunto especial de construcciones de condicion y de bucle El elemento mas basico del lenguaje es el comando guardado o comando con guarda Indice 1 Comando guardado 1 1 Sintaxis 1 2 Semantica 2 Skip y Abort 3 La construccion condicional if 3 1 Sintaxis 3 2 Semantica 3 3 Ejemplo 4 La construccion de bucle do 4 1 Ejemplo 5 Aplicaciones 5 1 Circuitos Asincronos 6 Implementaciones 7 ReferenciasComando guardado EditarUn comando guardado consiste en una orden un enunciado que esta guardada protegida por una proposicion llamada guarda cuyo valor debe ser verdadero antes de que se ejecute el comando Cuando el enunciado se ejecuta puede asumirse que la proposicion de guarda es verdadera Si la proposicion de guarda es falsa no se ejecutara el enunciado El uso de comandos guardados facilita la comprobacion de que el programa cumple la especificacion Sintaxis Editar Un comando guardado es un enunciado de la forma G S displaystyle G rightarrow S donde G displaystyle G es la proposicion de guarda S displaystyle S es una instruccion Semantica Editar Cuando G displaystyle G se encuentra en un calculo se evalua Si G displaystyle G es verdadero se ejecuta S displaystyle S Si G displaystyle G es falso lo que se hara dependera del contexto Las sentencias G displaystyle G pueden cambiar estados x z y y 1 el nuevo valor dexesyy el nuevo valor dezesy 1o realizar entrada y salida print Salida Naturalmente una implementacion de comandos guardados puede permitir cualquier anchura para las condiciones y sentencias Un comando guardado se puede presentar por si solo como una sentencia en comandos que siempre se ejecutan la guarda se puede omitir true displaystyle rightarrow print 5es equivalente a print 5Skip y Abort EditarSkip y Abort son enunciados simples pero importantes en el lenguaje de comandos guardados Abort es la instruccion indefinida hacer cualquier cosa El enunciado Abort no tiene por que implicar la terminacion aborto del programa se usa para describir el programa al formular una demostracion en cuyo caso la demostracion generalmente falla Skip es la instruccion vacia no hacer nada Se usa en el programa en si mismo cuando la sintaxis requiere un enunciado y el programador no quiere que la maquina cambie estados La construccion condicional if EditarLa construccion condicional o de seleccion es una lista de comandos guardados de los cuales uno es escogido para ser ejecutado Si mas de una guarda es verdadera el enunciado que se ejecutara se escoge de forma aleatoria o de forma no determinista Si ninguna guarda es verdadera el resultado es indefinido semanticamente equivalente a una instruccion Abort Ya que al menos una guarda ha de ser verdadera es frecuente que se necesite la instruccion Skip Sintaxis Editar if displaystyle mbox if G 0 S 0 displaystyle G 0 rightarrow S 0 G 1 S 1 displaystyle G 1 rightarrow S 1 displaystyle G n S n displaystyle G n rightarrow S n dd fi displaystyle mbox fi Semantica Editar Si ninguna de las guardas es verdadera Abort Si solamente la guarda G x displaystyle G x es verdadera ejecutar S x displaystyle S x Si las guardas G x 0 G x m displaystyle G x 0 G x m son verdaderas ejecutar cualquier S x y displaystyle S x y donde 0 y m displaystyle 0 leq y leq m Ejemplo Editar Dada la expresion en pseudocodigo if a b displaystyle a geq b then print Mayor o igual else if a lt b displaystyle a lt b then print Menor El equivalente en comandos guardados es ifa b displaystyle a geq b rightarrow print Mayor o igual a lt b displaystyle a lt b rightarrow print Menor dd fiLa potencia de los comandos guardados se ilustra en la siguiente expresion ifa b displaystyle a geq b rightarrow print Mayor o igual a b displaystyle a leq b rightarrow print Menor o igual dd fiCuando a b displaystyle a b el resultado del comando puede ser o bien Mayor o igual o bien Menor o igual pero no los dos La construccion de bucle do EditarLa construccion de repeticion do se escribe asi do displaystyle mbox do G 0 S 0 displaystyle G 0 rightarrow S 0 G 1 S 1 displaystyle G 1 rightarrow S 1 displaystyle G n S n displaystyle G n rightarrow S n dd od displaystyle mbox od Las guardas de los comandos guardados se evaluan Si una de ellas es verdadera se ejecuta el enunciado correspondiente Si mas de una es verdadera se ejecuta solo un enunciado escogido de entre los correspondientes de forma aleatoria o no determinista El proceso se repite hasta que ninguna de las guardas evalue como verdadera es decir despues de ejecutar un comando se vuelve a evaluar las guardas desde el principio Ejemplo Editar A continuacion se da una implementacion del algoritmo de Euclides para hallar el maximo comun divisor x y X Y do de nuevo terminacion cuando x y displaystyle x y x gt y displaystyle x gt y rightarrow x x y y gt x displaystyle y gt x rightarrow y y x dd od print xAplicaciones EditarCircuitos Asincronos Editar Los comandos guardados son adecuados para diseno de circuitos QDI porque la construccion do od permite retrasos relativos arbitrarios para la seleccion de comandos diferentes En esta aplicacion una puerta logica manejando un nodo y en el circuito consiste en dos comandos guardados como sigue P u l l d o w n G u a r d y 0 displaystyle PulldownGuard rightarrow y 0 P u l l u p G u a r d y 1 displaystyle PullupGuard rightarrow y 1 PulldownGuard y PullupGuard son funciones de la entrada de la puerta logica que describen las acciones de salida pull down y pull up respectivamente Al contrario que modelos clasicos de evaluacion de circuitos el modelo do od para un conjunto de comandos guardados correspondiendo a un circuito asincrono puede describir con precision todos los posibles comportamientos dinamicos del circuito Implementaciones EditarAlgunas implementaciones de lenguaje de comandos guardados GaCeLa es una aproximacion a un compilador verificante que genera programas que deben cumplir con su especificacion de lo contrario son interrumpidos durante su ejecucion Esta notacion y su correspondiente traductor al lenguaje Java esta siendo desarrollada en la Universidad Simon Bolivar en Venezuela GCL 1 2 escrita en Prolog y C Referencias Editar Dijkstra Edsger W EWD472 Guarded commands non determinacy and formal derivation of programs Consultado el 16 de agosto de 2006 Datos Q2442390Obtenido de https es wikipedia org w index php title Lenguaje de Comandos Guardados amp oldid 119266317, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos