Conditions
Dans Ruby, il est possible d’effectuer plusieurs actions en fonction d’une série de conditions, en utilisant le mot magique if. Voici un exemple:
1
if ville == "Toronto"
age_legal_alcool = 19
2
else
age_legal_alcool = 21
end
Ce qui veut dire:
- Si (if) le contenu de la variable ville est égale à (==) la chaîne “Toronto”, alors nous affectons à la variable age_legal_alcool le nombre 19.
- Sinon (else), nous affectons à la variable age_legal_alcool le nombre 21.
Vrai ou faux
Ruby permet de distinguer deux états différents d’une expression:
- vrai (true)
- faux (false)
Le meilleur moyen d’illustrer cette théorie est d’expérimenter quelques exemples. Comme toujours, démarrez IRB et entrez les commandes suivantes:

L’instruction if évalue si une expression quelconque (par exemple, ville == “Toronto”) est soit vraie (true), soit fausse (false) et ensuite agit en conséquence. [Warning] Avertissement
Notez bien la différence entre les opérateurs = et ==:
- = est un opérateur d’affectation (il permet d’assigner une valeur à une variable)
==est un opérateur de comparaison (il permet de comparer l’état de deux expressions)
Opérateurs conditionnels
Voici une liste regroupant la plupart des opérateurs conditionnels:
Tableau 2.1. Opérateurs conditionnels
| Opérateur | Effet |
| == | égal à |
| != | n’est pas égal à |
| > | est plus grand que |
| < | est plus petit que |
| >= | est plus grand ou égal à |
| <= | est plus petit ou égal à |
Comparaison de chaînes de caractères
Comment ces opérateurs se comportent-ils avec des chaînes de caractères? L’opérateur == vérifie si deux chaînes sont exactement identiques. Les autres opérateurs se basent sur la table ASCII pour produire et renvoyer un état de comparaison.
Note :
Qu’est-ce que cette table ASCII? Il s’agit d’une table contenant tous les caractères pouvant être générés par le clavier. Ces caractères sont triés dans cet ordre:
1.
d'abord les chiffres (012...789)
2.
ensuite les lettres majuscules (ABC...XYZ)
3.
et finalement les lettres minuscules (abc...xyz)
*Note du traducteur
« American Standard Code for Information Interchange ». Ce code permet d’échanger des informations entre des ordinateurs construits par différentes entreprises. Il a été conçu pour la langue anglaise à la base. Néanmoins, il ne convient pas pour les autres langues utilisant des caractères spéciaux (comme le japonais, par exemple). Pour remédier à ce problème, Ruby utilise un système d’encodage nommé UTF8, qui permet de combiner des caractères ASCII (codés sur un octet) et des symboles spéciaux (codés sur deux octets).*Maintenant, démarrez IRB et entrez ceci :

Astuce :
Avez-vous remarqué comment IRB peut clarifier les choses? Vous devriez vous habituer à essayer d’abord certaines idées dans IRB. C’est un outil génial, utilisez-le!
L’instruction elsif
L’instruction elsif vous permet de rajouter plus d’une condition dans votre expression. Prenez ceci par exemple:
1
if age >= 60
puts "Prix senior"
2
elsif age >= 14
puts "Prix adulte"
3
elsif age >= 2
puts "Prix enfant"
4
else
puts "Gratuit!"
end
Essayons de comprendre ceci:
- Si la variable age contient une valeur plus grande ou égale à 60, nous donnons un prix senior.
- Si ce n’est pas vrai, mais que age est plus grand ou égal à 14, nous donnons un prix adulte.
- Si ce n’est pas vrai, mais que age est plus grand que 2, nous donnons un prix enfant.
- Sinon, c’est gratuit!
Ruby exécutera cette séquence de conditions une par une. Uniquement la première condition vraie sera exécutée. Vous pouvez rajouter autant de elsif que vous désirez.
Un exemple: prix.rb
Pour rendre les choses plus simple à comprendre, nous allons rajouter ces conditions dans un programme. Il devra demander l’age de l’utilisateur, et ensuite afficher le prix correspondant à cet age :
Ce programme devrait se comporter comme ceci :

Avertissement
Soyez bien conscient de l’ordre dans lequel vous rajoutez vos conditions avec elsif. Seulement le code associé à la première condition évaluée comme étant «vraie» sera exécuté. Cet exemple illustre bien ce danger:
age = 21
if age > 5
puts "Plus vieux que 5 ans"
elsif age > 10
puts "Plus vieux que 10 ans"
elsif age > 20
puts "Plus vieux que 20 ans"
elsif age > 30
puts "Plus vieux que 30 ans"
end
En lisant ce code rapidement, il semblerait logique que le programme affiche “Plus vieux que 20 ans” à l’écran. Il n’en est rien! Comme dit plus haut, seule la première condition valide remporte la mise. Le programme affichera “Plus vieux que 5 ans”.
Voici la bonne méthode à utiliser:
age = 21
if age > 30
puts "Plus vieux que 30 ans"
elsif age > 20
puts "Plus vieux que 20 ans"
elsif age > 10
puts "Plus vieux que 10 ans"
elsif age > 5
puts "Plus vieux que 5 ans"
end
Quelques exercices
- Triez ces caractères en utilisant l’ordre ASCII:
2. Souvenez-vous, la table ASCII contient tous les caractères pouvant être générés par le clavier. Utilisez IRB pour déterminer ou se trouve le caractère «?» (point d’interrogation) ?
- Avant 0 ?
- Après 9 mais avant A ?
- Après Z mais avant a ?
- Après z ?
3. En se basant sur la question précédente, écrivez un programme Ruby qui accepte un caractère quelconque au clavier. Il devra afficher un des messages suivants:
- x se situe avant 0
- x se situe entre 9 et A
- x se situe entre Z et a
- x se situe après z
Saisir des données provenant de l’utilisateur << | Apprenez Ruby | >> Les boucles while

