• Aucun résultat trouvé

2 Le SDL de base

2.10 Exemples

task t3 := 0 /*example*/;

FIGURE 2.10.1/Z.100 Exemple de note (SDL/PR)

---

task ’task1’ comment ’example’;

task ’task2’;

---

FIGURE 2.10.2/Z.100 Exemple de commentaire (SDL/PR)

T1007690-93/d03 T3 := 0 /* example */

FIGURE 2.10.3/Z.100

Même exemple que celui de la Figure 2.10.1 en SDL/GR

T1007700-93/d04

’task1’

’task2’

example

FIGURE 2.10.4/Z.100

Même exemple que celui de la Figure 2.10.2 en SDL/GR

system Daemongame;

signal Newgame, Probe, Result, Endgame, Gameid, Win, Lose,

Score (Integer);

channel Gameserver.in

from env to Game

with Newgame, Probe, Result, Endgame;

endchannel Gameserver.in;

channel Gameserver.out

from Game to env

with Gameid, Win, Lose, Score;

endchannel Gameserver.out;

block Game referenced;

endsystem Daemongame;

FIGURE 2.10.5/Z.100

Exemple de spécification de système (SDL/PR)

T1007710-93/d05 1(1) signal

Newgame, Probe, Result, Endgame, Gameid, Win, Lose, Score(Integer);

Game

Newgame, Probe, Result, Endgame

Gameid, Win, Lose, Score Gameserver.in Gameserver.out

FIGURE 2.10.6/Z.100

Exemple de spécification de système (SDL/GR)

system Daemongame

block Game;

signal Gameover(PId);

connect Gameserver.in and R1,R2;

connect Gameserver.out and R3;

signalroute R1 from env to Monitor with Newgame;

signalroute R2 from env to Game with Probe, Result, Endgame;

signalroute R3 from Game to env with Gameid, Win, Lose, Score;

signalroute R4 from Game to Monitor with Gameover;

process Monitor (1,1) referenced;

process Game (0,) referenced;

endblock Game;

FIGURE 2.10.7/Z.100

Exemple de spécification de bloc (SDL/PR)

R4

R1 R2

R3

T1007720-93/d06 1(1) signal

Gameover(PId);

Gameover

Probe, Result, Endgame

Gameserver.in Gameserver.out

FIGURE 2.10.8/Z.100

Exemple de spécification de bloc (SDL/GR)

block Game

Monitor (1,1) Game (0, )

Gameid, Win, Lose, Score Newgame

FIGURE 2.10.8/Z.100...[D06] = 9 CM

process Game (0, ); fpar player Pid;

dcl count Integer := 0 ; /*counter to keep track of score */

start;

output Gameid to player;

nextstate even;

state even;

input none;

nextstate odd;

input Probe;

output Lose to player;

task count:= count-1;

nextstate -;

state odd;

input Probe;

output Win to player;

task count:= count+1;

nextstate -;

input none;

nextstate even;

state even, odd;

input Result;

output Score(count) to player;

nextstate -;

input Endgame;

output Gameover(player);

stop;

endprocess Game;

FIGURE 2.10.9/Z.100

Exemple de spécification de processus (SDL/PR)

T1007730-93/d07

1(1) process Game

fpar player PId

dcl count Integer := 0;

/* counter to keep /* track of score */

even,odd

Result End_

game

Score(count) to player

Gameover (player)

Gameid to player

even

none Probe

odd Lose

to player

Probe none count :=

count – 1

Win

to player even

The hyphen means that the state is not changed

FIGURE 2.10.10/Z.100

Exemple de spécification de processus (SDL/GR)

count :=

count + 1

FIGURE 2.10.10/Z.100...[D07] = 17 CM

procedure Check;

fpar in/out x, y Integer;

/* The following signal definitions are assumed:

signal sig1(Boolean), sig2, sig3(Integer,PId); */

dcl sum, index Integer, nice Boolean;

start;

task sum := 0, index := 1;

nextstate idle;

state idle;

input sig1(nice);

decision nice;

(True): task ’Calculate sum’;

output sig3(sum, sender);

return;

(False): nextstate problems;

enddecision;

input sig2;

join 1;

...

endprocedure Check;

FIGURE 2.10.11/Z.100

Exemple de fragment de spécification de procédure (SDL/PR)

1

1(3)

T1007740-93/d08 /* The following signal

definitions are assumed signal sig1(Boolean),

signal sig2, sig3(Integer, PId); */

dcl sum, index Integer, dcl nice Boolean;

procedure check fpar in/out x, y Integer

sum := 0, index := 1

idle

sig1(nice) sig2

nice (True)

(False)

problems ‘Calculate

sum’

sig3 (sum, sender)

FIGURE 2.10.12/Z.100

Exemple de fragment de spécification de procédure (SDL/GR) FIGURE 2.10.12/Z.100...[D08] = 19 CM

/* The following signal definition is assumed:

signal inquire(Integer,Integer,Integer); */

process alfa;

dcl a,b,c Integer;

...

...

input inquire (a,b,c);

call check (a,b);

...

endprocess;

FIGURE 2.10.13/Z.100

Exemple d’appel de procédure dans un fragment de définition de processus (SDL/PR)

T1007750-93/d09 /* The following signal

definition is assumed:

signal

inquire (Integer,Integer, Integer); */

dcl

a,b,c Integer;

inquire (a,b,c)

check (a,b) process alfa

FIGURE 2.10.14/Z.100

Exemple d’appel de procédure dans un fragment de définition de processus (SDL/GR) FIGURE 2.10.14/Z.100...[D09] = 8 CM

Les Figures 2.10.15 à 2.10.20 ci-dessous donnent un exemple d'une définition <process definition> contenant des définitions <service definition> avec les définitions <service definition> correspondantes. Ce processus a le même comportement que le processus donné aux Figures 2.10.9 et 2.10.10.

process Game;

fpar player Pid;

signal Proberes (Integer);

signalroute IR1 from Game_handler to env with Score,Gameid;

signalroute IR2 from Game_handler to env with Gameover;

signalroute IR3 from env to Game_handler with Result,Endgame;

signalroute IR4 from env to Probe_handler with Probe;

signalroute IR6 from Probe_handler to env with Lose,Win;

signalroute IR7 from Probe_handler to Game_handler with Proberes;

connect R2 and IR3,IR4;

connect R3 and IR1,IR6;

connect R4 and IR2;

service Game_handler referenced;

service Probe_handler referenced;

endprocess Game;

FIGURE 2.10.15/Z.100

Exemple de processus (le même que celui de la Figure 2.10.9) décomposé en services (SDL/PR)

T1007760-93/d10 R4

IR2 IR3

IR7

IR6 IR4

R2 R3

IR1

FIGURE 2.10.16/Z.100

Exemple de processus (le même que celui de la Figure 2.10.10) décomposé en services (SDL/GR)

signal Proberes (Integer);

process Game fpar player Pid

Proberes Result, Endgame

Probe_handler Game_handler

Probe Score

Gameid Lose

Win

Gameover

FIGURE 2.10.16/Z.100...[D10] = 9 CM service Game_handler;

/* The service handles a game with actions to start a game, to end a game, to keep track of the score and to communicate the score */

dcl count Integer, /*Counter to keep track of the score*/

a Integer; /* counter increment */

start;

output Subscr;

output Gameid to player;

task count:=0;

nextstate started;

state started;

priority input Proberes(a);

task count:=count+a;

nextstate -;

input Result;

output Score(count) to player;

nextstate -;

input Endgame;

output Gameover;

stop;

endstate started;

endservice Game_handler;

FIGURE 2.10.17/Z.100 Exemple de service (SDL/PR)

1(1)

T1007770-93/d11 service Game_handler

/* The service handles a gamewith actions to start a game, to end a game, to keep track of the score and to communicate the score */

dcl count Integer;

/* Counter to keep track of the score */

dcl a Integer; /* counter incr */

Subscr

Gameid to player

Count := 0

started

Proberes

(a) Result Endgame

Count :=

count + a

Score (count)

to player Gameover

FIGURE 2.10.18/Z.100

Exemple de service (le même que celui de la Figure 2.10.17) (SDL/PR)

FIGURE 2.10.18/Z.100...[D11] = 16 CM

service Probe_handler;

/* The service has actions to register the bumps and to handle probes from the player.

The probe result is sent to the player but also to the service Game_handler */

start;

nextstate even;

state even;

input Probe;

output Lose to player;

output Proberes(-1) to self;

nextstate -;

input none;

nextstate Odd;

endstate even;

state odd;

input none;

nextstate even;

input Probe;

output Win to player;

output Proberes(1) to self;

nextstate -;

endstate Odd;

endservice Bump_handler;

FIGURE 2.10.19/Z.100 Exemple de service (SDL/PR)

T1007780-93/d12 service Probe_handler 1(1)

/* The service has actions to register the bumps and to handle probes from the player.

The probe result is sent to the player but also to the service Game_handler */

even

Probe

Lose to player

none

odd

none

even

even Proberes

(–1) to self

Probe

Win to player

Proberes (1) to self

FIGURE 2.10.20/Z.100

Exemple de service (le même que celui de la Figure 2.10.19) (SDL/GR)

FIGURE 2.10.20/Z.100...[D12] = 16.5 CM