Nous avons réunis dans cette section les instructions et opérateurs de base du langage et qui peuvent être utilisés dans un scenario, un service d'entité, ou dans une fonction d'interaction.
Deux instructions permettent de déclarer une variable et lui affecter une valeur : let
et fix
. La première crée une variable, c'est à dire qu'il est possible de modifier sa valeur par la suite, alors que la seconde crée une constante.
Mot clé du langage qui permet de déclarer une variable.
Syntaxe :
let
identifiant de variable=
valeur initiale
L'identifiant de variable doit impérativement commencer par une lettre (minuscule de préférence) mais peut éventuellement être suivi par des chiffres, et ne pas contenir d'espace ni de caractère spéciaux.
Ocelet possède un mécanisme d'inférence de type, c'est à dire que le type de la variable que l'on déclare est déduit de la valeur initiale qui lui est affectée.
Exemple :
let t=0 // Construit une variable de type Integer, initialisée à 0
let v = 12.4764 // Construit une variable de type Double
let ff = new MyEntity // Construit une variable de type MyEntity
v = v+1 // Changement de la valeur affectée à la variable v
Mot clé du langage permettant de déclarer une constante.
Syntaxe :
fix
identifiant de constante=
valeur
L'identifiant de constante doit impérativement commencer par une lettre (minuscule de préférence) mais peut éventuellement être suivi par des chiffres, et ne pas contenir d'espace ni de caractère spéciaux.
Ocelet possède un mécanisme d'inférence de type, c'est à dire que le type de la constante que l'on déclare est déduit de la valeur initiale qui lui est affectée.
Il n'est pas possible de modifier la valeur affectée à une constante.
Exemple :
fix tmax = 1000
fix ldays = List<String>|of("Lundi","Mardi","Mercredi","Jeudi","Vendredi")
Les opérateurs arithmétiques peuvent être utilisés sur des variables de type numérique.
+
: addition-
: soustraction*
: multiplication/
: division%
: reste de la division entière**
: puissanceExemple :
let a = 15.0
let b = 4.0
let c = a+b // c vaut 19.0
let d = a-b // d vaut 11.0
let e = a*b // e vaut 60.0
let f = a/b // f vaut 3.75
let g = a%b // g vaut 3.0
let h = a**b // h vaut 50625.0
+
: lorsque cet opérateur est appliqué sur des variables de type String il représente une concaténation, c'est à dire un assemblage entre deux textes.Exemple :
let nom = "Martin"
println("Bonjour "+nom+" !") // affiche : Bonjour Martin !
let nom2 = nom+"e"
println("Bonjour "+nom2+" !") // affiche : Bonjour Martine !
Les instructions if
et else
permettent d'effectuer une opération seulement si une condition est remplie.
Syntaxes :
if
(
condition)
expressions
La condition est de type Boolean et s'écrit à l'aide d'opérateurs conditionnels. Les expressions ne seront exécutées que si la condition est vérifiée.
On peut ajouter le mot clé else
pour indiquer les expressions à exécuter dans le cas où la condition est fausse.
if
(
condition)
expressionselse
expressions
Exemples :
if (temperature > 100) etat = "vapeur d'eau"
if (temperature <= 0 ) etat = "glace"
if ((temperature > 0) && (temperature < 100)) etat="liquide"
if (i >= imax) println("Le seuil est atteint.")
else println("Seuil non atteint.")
Si l'on veut exécuter plusieurs expressions dans le cas où la condition est vrai, il faut placer ces expressions entre accolades :
if (i >= imax) {
println("Le seuil est atteint.")
i = 10
}
Pour effectuer un test, ou pour évaluer si l'on continue l'exécution d'une boucle, on doit écire la condition à évaluer. Le résultat de cette évaluation est de type Boolean, c'est à dire soit true
(vrai) soit false
(faux).
Cette condition fait appel à des opérateurs conditionnels :
&&
: ET||
: OU!
: NON==
: Egalité!=
: Inégalité>
: Supérieur<
: Inférieur>=
: Supérieur ou égal<=
: Inférieur ou égalLes instructions de boucle sont des instructions de contrôle qui permettent de répéter une série d'opérations plusieurs fois de suite, jusqu'à ce qu'une condition soit remplie.
Permet de répéter une série d'opérations lorsque l'on peut connaitre à l'avance le nombre d'itérations, ou que l'on souhaite parcourir une collection d'éléments.
Syntaxe :
for
(
variable:
collection)
expressions
L'expression sera exécutée autant de fois qu'il y a d'éléments dans la collection. Pour chaque itération, la variable prendra la valeur d'un élément de la collection et cette variable sera disponible pour être utilisée dans l'expression (ou la série d'expressions).
Exemples :
for (i:1..10) print(i+" ") // Affiche : 1 2 3 4 5 6 7 8 9 10
let lmois = List|of("Mars","Avril","Mai")
for (mois:lmois) {
println("Mois :"+mois) // Affiche successivement les trois valeurs
}
Une autre forme est possible qui permet plus de souplesse sur la variable d'itération, par exemple pour la faire progresser avec un pas différent de 1 :
for
(
let
variable = valeur initiale;
condition d'arrêt;
expression d'incrémentation)
expressions
Exemple :
for (let i=0 ; i <= 20 ; i=i+5) {
println("i="+i)
} // --> 0 5 10 15 20
Permet de répéter une série d'opération tant qu'une condition est vérifiée. La condition est évaluée avant d'exécuter les expressions. Il est donc possible que les expressions placées derrière le while
ne soit jamais exécutées (si la condition est fausse dès le départ).
Syntaxe :
while
(
condition)
expressions
Si l'on souhaite placer plusieurs expressions selon le while
, il faut les encadrer avec des accolades.
Exemple :
let seuil = 55.0
station.temp = 20.0 // Doit être initialisé avant le while
while(station.temp < seuil) {
station.updateTemp() // station.temp est remis à jour par cette fonction
}
Permet de répéter une série d'opérations tant qu'une condition est vérifiée. La condition est évaluée après avoir exécuté les expressions. On est donc certain d'exécuter au moins une fois les expressions situées entre do
et while
.
Syntaxe :
do
expressionswhile
(
condition)
Si l'on souhaite placer plusieurs expressions entre do
et while
, il faut les encadrer avec des accolades.
Exemple :
let seuil = 55.0
do {
station.updateTemp() // la mise à jour de station.temp sert aussi d'initialisation
} while (station.temp < seuil)