next up previous
Next: Version 2 Up: Pastas de té Previous: Sección común

Version 1

La gestión del peso de la caja se realiza en el proceso Empaquetador. Se utiliza una variable pesoActual para controlar el peso de la caja. Toma una pasta del Mostrador, determina cual seía el pesoActual resultante al sumar el peso de la pasta. Se dan dos casos:

-----------------------------------------
TASK Empaquetador;
VAR 
    pasta : TipoPasta;
    pesoActual : CARDINAL;
BEGIN 
  pesoActual := 0;
  LOOP 
    Mostrador.TomarPasta (pasta);
    INC(pesoActual, Peso(pasta));
    IF pesoActual  > PesoMaximo
      THEN
         CAJA.ExcedePeso;
         CAJA.AlmacenarPasta (pasta);
         pesoActual := Peso(pasta);
      ELSE
         CAJA.AlmacenarPasta (pasta);
    END (* IF *)
  END (* LOOP *)
END Empaquetador;
--------------------------------------------------------------------------
CAPSULA Caja;
  VAR pesoActual : CARDINAL  (* valor inicial : 0     *);
  VAR reponer : BOOLEAN      (* valor inicial : FALSE *);
  VAR retirar : BOOLEAN      (* valor inicial : FALSE *);
OPERACION ExcedePeso;
  PRE: TRUE
  POST: retirar
OPERACION AlmacenarPasta (pasta : TipoPasta);
  PRE: NOT (retirar) AND NOT (reponer)
  POST: << Pone "pasta" en la caja >>
OPERACION ReponerCaja ();
  PRE: reponer
  POST: NOT (reponer)
OPERACION RetirarCaja ();
  PRE: retirar
  POST: NOT (retirar) AND reponer
--------------------------------------------------------------------------



Angel Herranz Nieva
Thu Oct 31 20:18:28 MET 1996