Nos exercícios seguintes, sempre que o algoritmo especificado não for da sua autoria, indique o autor original e a refêrencia para o local onde o encontrou. Muitos dos exercícios apresentados são retirados de [2] e têm como objectivo esclarecer a diferença de abordagem entre esta disciplina e Métodos de Programação IV.
out y : int where y = 0 local x : bool where x = true P1:: [ l0: while x do l1: y := y + 1; l2: ] || P2:: [ m0: x := false; m1: ] |
local aprox_carro, aprox_comboio : bool where
(aprox_carro, aprox_comboio ) = (false, false);
local cancela_aberta, sinal_verde : bool where
(cancela_aberta, sinal_verde) = (false, false);
% Outras declaracoes
Estrada :: [
e0: loop forever do [
e1: noncritical;
e2: aprox_carro := true;
e3: await cancela_aberta;
e4: critical;
e5: aprox_carro := false
]
]
||
Carril :: [
c0: loop forever do [
c1: noncritical;
c2: aprox_comboio := true;
c3: await sinal_verde;
c4: critical;
c5: aprox_comboio := false
]
]
||
Controlador :: [
% Completar
]
|