Dans ce tuto, je vous présenterai comment fonctionne les conditions en Ruby. Pour commencer, je tiens à vous présenter les
principaux branchements conditionnels. Plus tard, je vous montrerai les autres types de conditions possibles en Ruby.
I) Les branchements conditionnels et les conditions simples
1) if-then
C'est le branchement conditionnel le plus simple à connaître lorsqu'un seul cas est traîté.
1
2
3
| if <condition>
then <expression>
end |
2) if-then-else
Celui-ci permet de traiter deux cas opposés, tout simplement.
1
2
3
4
5
| if <condition>
then <expression_si_vrai>
else
<expression_si_faux>
end |
3) if-then-else
Ce branchement permet non seulement de traiter les deux cas opposés, mais également autant d'autres cas que possible.
1
2
3
4
5
6
7
| if <condition>
then <expression_si_vrai>
elsif <autre_condition>
<expression_liée>
else
<expression_si_faux>
end |
4) Avec un exemple concret
Voici un exemple concret concernant ces trois types de branchement. On va imaginer que l'on veuille acheter un article à 25 €
dans un magasin et que tout dépend de l'argent possédé dans le porte-monnaie.
On va tout d'abord se baser sur le fait que l'on puisse acheter l'article.
1
2
3
4
| if argent>=25
then puts "Vous avez eu pour 25 € d'achat."
end
|
Maintenant, on imagine que l'on puisse ne pas avoir la somme d'argent souhaitée.
1
2
3
4
5
6
| if argent>=25
then puts "Vous avez eu pour 25 € d'achat."
else
puts "Vous n'avez pas assez !"
end
|
Et enfin, on vérifie que l'on puisse avoir une somme d'argent réaliste, c'est-à-dire non négative.
1
2
3
4
5
6
7
8
| if argent>=25
then puts "Vous avez eu pour 25 € d'achat."
elsif argent<0
argent = 0
else
puts "Vous n'avez pas assez !"
end
|
Je vous montre d'autres exemples pour bien comprendre.
5) Avec les booléens
On va se baser sur les phases jour/nuit sous forme de booléens. Simple, non ?
1
2
3
4
5
| if jour == true
puts "C'est le jour !"
else
puts "C'est la nuit !"
end |
6) Avec les chaines de caractères
Ensuite, on imagine que l'on doive avoir un nom spécifique pour qu'il se passe quelque chose de spécial.
1
2
3
4
5
| if nom == "Link"
then puts "Vous êtes le sauveur d'Hyrule !"
else
puts "Vous êtes peut-être un autre héros, on ne sait jamais !"
end |
7) La condition ternaire
L'opérateur ? permet de faire une condition très simple de type if-then-else sur une seule ligne. Voici sa forme
générale :
1
| condition ? si_vrai : si_faux |
Avec nos deux phases jour/nuit, on pourrait avoir :
1
| jour == true ? "Jour" : "Nuit" |
8) Le branchement conditionnel unless-else
Il permet de faire un équivalent négatif du branchement if-then-else.
1
2
3
4
5
| unless condition
<expression_si_faux>
else
<expression_si_vrai>
end |
On va donner un exemple simple avec un nom reconnu.
1
2
3
4
5
| unless nom == "Ganondorf"
puts "Vous êtes à priori un gentilhomme !"
else
puts "Vous êtes le Seigneur du Malin !"
end |
9) Avec les opérateurs logiques
Si vous avez bien compris l'utilité des opérateurs logiques, voici leur exemple d'utilisation pour vous donner une idée.
1
2
3
4
5
6
7
8
9
10
11
| if not (x!=0)
then puts "x vaut zéro !"
end
if x>=20 and x<=50
then puts "x est entre 20 et 50."
end
if x<0 or x>0
then puts "x est négatif ou positif !"
end |
II) Les conditions multiples
Il existe un moyen de faire ce qu'on appelle des conditions multiples de type case-when qui permettent d'éviter les répétitions
du mot elsif dans une condition simple. On peut s'en servir avec une unique valeur, plusieurs et aussi un intervalle.
Voici son concept fondamental :
1
2
3
4
5
6
7
8
9
10
| case var
when cas_1
<expression_cas_1>
when cas_2
<expression_cas_2>
when cas_n
<expression_cas_n>
else
<expression_cas_par_defaut>
end |
Je vais vous donner l'exemple classique des notes pour que vous découvrez les possibilités des clauses conditionnelles.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| note = 10
case note
when 0
puts "Tout est à refaire !"
when 1 .. 6
puts "Pas terrible !"
when 7,8,9
puts "Ce n'est pas encore la moyenne, mais perséverez !"
when 10
puts "Pile la moyenne ! Ouf !"
when 11,12,13
puts "C'est déjà pas mal !"
when 14 .. 16
puts "C'est bien !"
when 17 .. 19
puts "C'est très bien !"
when 20
puts "C'est excellent !"
else
puts "Note incorrecte !"
end |
|