Les conditions, on continue dans les basiques
On va voir 4 conditions réparties en deux branches :
- If Else Elif
- Match
Les Conditions
If
La commande la plus utilisée en programmation et universelle sur tout les langages ou presque…
Elle s’utilise de cette façon :
If MA_CONDITION THEN
CE_QUE_FAIT_LA_FONCTION
Exemple: Savoir si un nombre est pair (on regarde si son modulo de 2 est égal à zéro ou pas)
if (chiffre % 2) = 0 then
"pair"
Else
Dans le cas ou la condition dans le if est fausse, on execute le else.
Exemple: la même fonction que ci-dessus mais complète
if (chiffre % 2) = 0 then
"pair"
else
"impair"
Elif
Envie de faire plusieurs conditions ? Le Elif est un intermediaire entre le if et le else
Exemple: jeux pour enfant (ou de soirée entre potes), on doit dire chaque nombre à la suite en remplacant les multiples de 3 et de 5 par Fizz et Buzz, dans le cas d’un multiple des deux, on dit FizzBuzz
if ((chiffre % 5) = 0 && (chiffre % 3) = 0) then
"FizzBuzz"
elif chiffre % 3 = 0 then
"Fizz"
elif chiffre % 5 = 0 then
"Buzz"
else
sprintf "%d" chiffre
C’est lourd n’est ce pas ?
Match
C’est la qu’interviens le match, il permet d’être plus esthétique…
Exemple avec notre premiere fonction (La fonction pair):
match (chiffre % 2) with
| 0 -> "pair"
| _ -> "impair"
On peut cependant avec le mot when améliorer ce que peut comparer la fonction match, pour l’utiliser comme notre jeux FizzBuzz
match chiffre with
| x when x % 5 = 0 && x % 3 = 0 -> "FizzBuzz"
| x when x % 3 = 0 -> "Fizz"
| x when x % 5 = 0 -> "Buzz"
| _ -> (sprintf "%d" chiffre)
On gagne des lignes mais aussi en visibilité ….
En clair on ne fait plus l’operation entre le match et le with mais directement dans les cas possibles.
On n’a donc plus besoin de faire plusieurs fonctions matchs pour obtenir un résultat proche du if elif else
A Retenir
If Else Elif
if CONDITION then
ACTION
elif CONDITION then
ACTION
else
ACTION
Match
Forme Simple
match CONDITION with
| RESULTAT -> ACTION
| RESULTAT2 -> ACTION
| _ -> ACTION //équivaut au else
Forme avancée
match PARAMETRE with
| x when CONDITION_AVEC_X -> ACTION
| x when CONDITION2_AVEC_X -> ACTION
| _ -> ACTION