Title: Chap
1Chapître 5
2Contenu
- (1) Données simples en SDL
- (2) Constructeurs de types de données
3(1) Données simples en SDL
SIGNAL Cid(integer), Digit(integer) DCL no_dig
integer DCL cardid integer
4Déclaration de variables
- DCL est le mot clé introduisant une déclaration
de variables. Après le(s) nom(s) de variable, il
y a le nom du type (aussi appelé sort en SDL)
de la variable. - Il y a des types prédéfinis Boolean, Character,
Charstring, Integer, Natural, et Real.
5Mise à jour des variables
- Linitalisation peut être définie avec la
déclaration (voir ci-haut) - Pendant une transition, les variables peuvent
être affectées de nouvelles valeurs (voir à
droite). - Une variable est visible dans le processus où
elle est déclarée. - La valeur dune variable peut être exportée et
devient alors visible à dautres processus qui
limportent (voir ci-dessous).
6Le symbole de tâche TASK
- Contient normalement des affectations peut aussi
contenir dautres actions formellement définies
(comme lactivation dune horloge) ou une action
décrite en français ou autre langue.
7Signal dentrée avec de paramètres (données)
- Les valeurs des paramètres doivent être affectées
à des variables pour usage futur (voir
ci-dessous), sinon elles sont perdues. - On ne peut pas accéder aux paramètres dun signal
dans la file dentrée, ni après la consommation
du signal par un symbole dentrée.
8Exemple le processus PanelControl (ii)
9Symbole de décision
- Utilisé pour choisir différentes alternatives
lors de lexécution dune transition.
10(No Transcript)
11Le processus PanelControl (iii)
- À remarquer
- Initialisation
- DCL Trial_no Integer 0
- Symbole de sortie avec indication du nom du
processus de destination
12(2) Constructeurs de types de données
- Comme la plupart des langages de programmation,
SDL a des types de données pré-définis et des
constructeurs qui peuvent être utilisés par le
concepteur pour définir des types de données
nouveaux. - En SDL, un type de données est appelé sort.
- Associés avec les types, il y a des opérateurs
(si vous voulez methods ) qui peuvent être
utilisés avec des types de données particuliers. - Des exemples sont donnés dans la suite.
13Opérateurs généraux
- Pour chaque type pré-défini ou défini par une
définition de type du concepteur, les opérateurs
suivants sont automatiquement définis - Affectation
- Tester légalité
- Tester la non-égalité /
14Des opérateurs peuvent être utilisés en notation
préfixe ou in-fixe
- Integer,Integer -gt Integer
- num Character -gt Integer
- I I1
- N num(X)
- I (I,1)
15Boolean
- "NOT" Boolean -gt Boolean
- "AND" Boolean, Boolean -gt Boolean
- "OR" Boolean, Boolean -gt Boolean
- "XOR" Boolean, Boolean -gt Boolean
- "gt" Boolean, Boolean -gt Boolean
16Character
- "lt" Character, Character -gt Boolean
- "lt" Character, Character -gt Boolean
- "gt" Character, Character -gt Boolean
- "gt" Character, Character -gt Boolean
- Num Character -gt Integer
- Chr Integer -gt Character
17Charstring
- MkString Character -gt Charstring
- Length Charstring -gt Integer
- First Charstring -gt Character
- Last Charstring -gt Character
- "//" Charstring, Charstring -gt Charstring
- SubString Charstring, Integer, Integer
- -gt Charstring
18Duration
- "" Duration, Duration -gt Duration
- "-" Duration -gt Duration
- "-" Duration, Duration -gt Duration
- "" Duration, Real -gt Duration
- "" Real, Duration -gt Duration
- "/" Duration, Real -gt Duration
- "gt" Duration, Duration -gt Boolean
- "lt" Duration, Duration -gt Boolean
- "gt" Duration, Duration -gt Boolean
- "lt" Duration, Duration -gt Boolean
19Time
- "" Time, Duration -gt Time
- "" Duration, Time -gt Time
- "-" Time, Duration -gt Time
- "-" Time, Time -gt Duration
- "lt" Time, Time -gt Boolean
- "lt" Time, Time -gt Boolean
- "gt" Time, Time -gt Boolean
- "gt" Time, Time -gt Boolean
20Integer, Natural
- "-" Integer -gt Integer
- "" Integer, Integer -gt Integer
- "-" Integer, Integer -gt Integer
- "" Integer, Integer -gt Integer
- "/" Integer, Integer -gt Integer
- "mod" Integer, Integer -gt Integer
- "rem" Integer, Integer -gt Integer
- "lt" Integer, Integer -gt Boolean
- "gt" Integer, Integer -gt Boolean
- "lt" Integer, Integer -gt Boolean
- "gt" Integer, Integer -gt Boolean
- Float Integer -gt Real
- Fix Real -gt Integer
21Real
- "-" Real -gt Real
- "" Real, Real -gt Real
- "-" Real, Real -gt Real
- "" Real, Real -gt Real
- "/" Real, Real -gt Real
- "lt" Real, Real -gt Boolean
- "gt" Real, Real -gt Boolean
- "lt" Real, Real -gt Boolean
- "gt" Real, Real -gt Boolean
22Constructeur de nouveaux types
- Les notations NEWTYPE nom-du-type ENDNEWTYPE
nom-du-type et Syntype nom-du-type
type-de-base Endsyntype peuvent être
utilisées pour définir de nouveaux types (voir
exemples plus loin) - Subrange dun type de base (comme en Pascal)
- Type dénumération des valeurs (comme en Pascal)
- Structure
- Tableau
- STRING dun type quelconque
- SET dun type quelconque
- Type abstrait Lidée dun type abstrait est
comme une classe OO avec interface défini et la
définition de propriétés concernant le résultats
dexécution des méthodes (sans donner une
implantation). En SDL, des mots clé OPERATORS et
AXIOMS sont prévus à cet effet, mais cette
notation est rarement utilisée et mal supportée
par les outils.
23Définition dun Subrange
- syntype example2 integer
- constant 010
- endsyntype
24Définition dun type dénumération
- newtype KeyPosition
- literals Off, Stand_by, Service_mode
- endnewtype
25Définition dune structure
- Défintion dun type de structure
- NEWTYPE Code STRUCT
- id Integer
- password Charstring
- ENDNEWTYPE
- Utilisation
- DCL C Code
- C!id 4564
- C!password 'zzzzz'
26Définition de tableaux
- Le générateur ARRAY prend deux paramètres
- Le type de lindice
- Le type des élements
- Il ny a pas de restriction sur les types qui
peuvent être utilisés comme indice. - Exemple
- NEWTYPE IntXChar Array(Character,Integer)
- ENDNEWTYPE IntXChar
- / Declaration d'un tableau / DCL chrval
IntXChar - / Utilisation dans une TASK / chrval('X')
chrval('Y') - 1
27Utilisation de structures et de tableaux