Objectifs
- Écrire des blocs de code conditionnels avec
if,else, etelsif. - Utiliser les modificateurs
ifetunlesspour des conditions concises sur une seule ligne. - Choisir entre plusieurs options de manière lisible avec la structure
case.
Les structures conditionnelles sont la base de la logique dans n’importe quel langage. Elles permettent à votre programme de prendre des décisions.
if, elsif, else
C’est la structure de base pour exécuter du code si une condition est vraie. En Ruby, un bloc if se termine toujours par end.
temperature = 25
if temperature > 30
puts "Il fait très chaud."
elsif temperature > 20
puts "Il fait bon."
else
puts "Il fait un peu frais."
end
if: La première condition à tester.elsif: Si la condition duifest fausse, on teste celle-ci. On peut enchaîner plusieurselsif.else: Si toutes les conditions précédentes sont fausses, ce bloc est exécuté.end: Marque la fin de toute la structure.
Rappel : en Ruby, seules les valeurs false et nil sont considérées comme fausses. Tout le reste est vrai.
Modificateurs en fin de ligne : if et unless
Ruby offre une manière très élégante et lisible d’écrire des conditions simples sur une seule ligne.
if en modificateur
action if condition
# Équivalent à : if est_connecte; puts "Bienvenue"; end
puts "Bienvenue" if est_connecte
unless en modificateur
unless est le contraire de if. On peut le lire comme “sauf si”. Il rend le code beaucoup plus lisible en évitant les négations (!).
action unless condition
# Moins lisible
puts "Accès refusé" if !est_connecte
# Beaucoup plus lisible
puts "Accès refusé" unless est_connecte
L’opérateur ternaire
C’est un raccourci pour une structure if/else simple qui retourne une valeur.
Syntaxe : condition ? valeur_si_vrai : valeur_si_faux
age = 20
# Version longue
if age >= 18
message = "Majeur"
else
message = "Mineur"
end
# Version avec l'opérateur ternaire
message = age >= 18 ? "Majeur" : "Mineur"
puts message # => "Majeur"
La structure case
Quand vous avez une série de if/elsif/elsif... qui testent tous la même variable, la structure case est souvent plus claire.
jour = "mardi"
message = case jour
when "samedi", "dimanche"
"C'est le week-end !"
when "vendredi"
"Bientôt le week-end !"
else
"C'est la semaine."
end
puts message # => "C'est la semaine."
La structure case peut aussi utiliser des “ranges” (..), ce qui la rend très puissante.
note = 85
appreciation = case note
when 90..100 then "Excellent"
when 80..89 then "Très bien"
else "Passable"
end
Bonnes pratiques
- Pour une condition simple sur une ligne, privilégiez les modificateurs
ifetunless. C’est très idiomatique en Ruby. - Utilisez
unlesspour améliorer la lisibilité en évitant les négations (if !...). - Utilisez
caselorsque vous testez la même variable contre plusieurs valeurs distinctes.
Exercices
-
Vérificateur d’âge :
- Écrivez un script qui définit une variable
age. - Utilisez
if/elsif/elsepour afficher “Enfant”, “Adolescent”, ou “Adulte” en fonction de la valeur.
- Écrivez un script qui définit une variable
-
Ternaire :
- Reprenez l’exercice précédent, mais utilisez l’opérateur ternaire pour définir une variable
statusqui contiendra “Majeur” ou “Mineur”.
- Reprenez l’exercice précédent, mais utilisez l’opérateur ternaire pour définir une variable
-
Jours de la semaine :
- Écrivez un script avec une variable
jour. - Utilisez une structure
casepour afficher un message différent si le jour est un jour de semaine, un vendredi, ou un jour de week-end.
- Écrivez un script avec une variable
-
unless:- Créez une variable
batterie = 15. - Écrivez une ligne de code qui affiche “Veuillez recharger votre appareil” en utilisant
unless.
- Créez une variable