Diferencia entre revisiones de «Programación en Ada/Tareas/Selección de citas»

Contenido eliminado Contenido añadido
mSin resumen de edición
m Plantillas
Línea 12:
 
seleccción_aceptación_cita ::=
{{Ada/Reservada|select}}
[ {{Ada/Reservada|when}} condición => ]
( acceptación_cita | ( {{Ada/Reservada|delay}} [ {{Ada/Reservada|until}} ] expresión )
[ secuencia_de_sentencias ] )
| ( {{Ada/Reservada|terminate}} ; ) )
{ {{Ada/Reservada|or}}
[ {{Ada/Reservada|when}} condición => ]
( acceptación_cita | ( {{Ada/Reservada|delay}} [ {{Ada/Reservada|until}} ] expresión )
[ secuencia_de_sentencias ] )
| ( {{Ada/Reservada|terminate}} ; ) ) }
[ {{Ada/Reservada|else}}
sequencia_sentencias ]
{{Ada/Reservada|end}} {{Ada/Reservada|select}} ;
 
Esta alternativa de sentencia select permite una combinación de espera y
Línea 42:
Por ejemplo:
 
{{Ada/Reservada|task}} Servidor {{Ada/Reservada|is}}
{{Ada/Reservada|entry}} Trabajar;
{{Ada/Reservada|entry}} Cerrar;
{{Ada/Reservada|end}};
{{Ada/Reservada|task}} {{Ada/Reservada|body}} Servidor {{Ada/Reservada|is}}
{{Ada/Reservada|begin}}
{{Ada/Reservada|loop}}
{{Ada/Reservada|select}}
{{Ada/Reservada|accept}} Trabajar {{Ada/Reservada|do}} {{Ada/-- |Se acepta la llamada a trabajar.}}
Trabajando := True; {{Ada/-- |Variable global.}}
{{Ada/Reservada|end}};
Trabajo_servidor; {{Ada/-- |Trabaja.}}
{{Ada/Reservada|or}}
{{Ada/Reservada|accept}} Cerrar; {{Ada/-- |Se cierra el servidor.}}
{{Ada/Reservada|exit}};
{{Ada/Reservada|or}}
{{Ada/Reservada|delay}} (60.0); {{Ada/-- |¿Se han olvidado del servidor?}}
Put ("Estoy esperando trabajar.");
{{Ada/-- |Otra opción en vez de delay:}}
{{Ada/--|{{Ada/Reservada|or}}}}
-- or
-- {{Ada/-- |Terminación normal cuando se destruya el objeto tarea.}}
{{Ada/-- |{{Ada/Reservada|terminate}};}}
{{Ada/Reservada|end}} {{Ada/Reservada|select}};
{{Ada/Reservada|end}} {{Ada/Reservada|loop}};
{{Ada/Reservada|end}} Server;
 
Como otro ejemplo, para garantizar la exclusión mutua a una variable
Línea 72:
de la siguiente manera:
 
{{Ada/Reservada|task}} Variable_protegida {{Ada/Reservada|is}}
{{Ada/Reservada|entry}} Leer (Elem: {{Ada/Reservada|out}} TElemento);
{{Ada/Reservada|entry}} Escribir (Elem: TElemento);
{{Ada/Reservada|end}};
{{Ada/Reservada|task}} {{Ada/Reservada|body}} Variable_protegida {{Ada/Reservada|is}}
ElemLocal: TElemento;
{{Ada/Reservada|begin}}
{{Ada/Reservada|accept}} Escribir (Elem: TElemento) {{Ada/Reservada|do}}
ElemLocal := Elem;
{{Ada/Reservada|end}} Escribir;
{{Ada/Reservada|loop}}
{{Ada/Reservada|select}}
{{Ada/Reservada|accept}} Escribir (Elem: TElemento) {{Ada/Reservada|do}}
ElemLocal := Elem;
{{Ada/Reservada|end}} Escribir;
{{Ada/Reservada|or}}
{{Ada/Reservada|accept}} Leer (Elem: {{Ada/Reservada|out}} TElemento) {{Ada/Reservada|do}}
Elem := ElemLocal;
{{Ada/Reservada|end}} Leer;
{{Ada/Reservada|end}} {{Ada/Reservada|select}};
{{Ada/Reservada|end}} {{Ada/Reservada|loop}};
{{Ada/Reservada|end}} Variable_protegida;
 
La primera sentencia de la tarea es un accept del punto de entrada
Línea 119:
 
== Manual de referencia de Ada ==
*[http:{{Ada//adaic.org/standards/95lrm/html/RM-RM2|9-|7.html 9.7 |Select Statements]}}