next up previous contents
Next: Problemas de exclusão mútua Up: A linguagem SPL Previous: Outros

Exemplos

Na figura 1.1 temos um exemplo de um programa para calcular o mínimo múltiplo comum de dois números a e b. Este programa é puramente sequencial. Outro programa sequencial, que serve para calcular o factorial de um número x, é apresentado na figura 1.2.


  
Figure 1.1: Maior divisor comum

in    a, b  : int where (a > 0 /\ b > 0)
local y1, y2: int where y1 = a, y2 = b
out   g     : int


l0: [
l1:     while (y1 != y2) do
l2:         [
l3:             when (y1 > y2) do    
l4:                 y1 := y1 - y2
                or
l5:             when (y2 > y1) do
l6:                 y2 := y2 - y1
            ];
l7:     g := y1    
    ];
l8:





  
Figure 1.2: Factorial de um número x

in     x: int where x >= 0
local  y: int where y=0
out    z: int where z=1

l0: while (~(x=y)) do 
    l1: (y,z) := (y+1, (y+1)*z );
   
l2:




Um exemplo muito simples de um programa concorrente é apresentado na figura 1.3. Este programa incrementa o valor de x em duas unidades.

  
Figure 1.3: Programa concorrente para incrementar 2 unidades

local x : int where x=0

P1 :: [l0: x := x+1;
       l1:
]

||

P2 :: [m0: x := x+1;
       m1:
]







1999-05-25