Retour au cours

conditions : if, else, elsif et case

Objectifs

  • Écrire des blocs de code conditionnels avec if, else, et elsif.
  • Utiliser les modificateurs if et unless pour 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 du if est fausse, on teste celle-ci. On peut enchaîner plusieurs elsif.
  • 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 if et unless. C’est très idiomatique en Ruby.
  • Utilisez unless pour améliorer la lisibilité en évitant les négations (if !...).
  • Utilisez case lorsque vous testez la même variable contre plusieurs valeurs distinctes.

Exercices

  1. Vérificateur d’âge :

    • Écrivez un script qui définit une variable age.
    • Utilisez if/elsif/else pour afficher “Enfant”, “Adolescent”, ou “Adulte” en fonction de la valeur.
  2. Ternaire :

    • Reprenez l’exercice précédent, mais utilisez l’opérateur ternaire pour définir une variable status qui contiendra “Majeur” ou “Mineur”.
  3. Jours de la semaine :

    • Écrivez un script avec une variable jour.
    • Utilisez une structure case pour afficher un message différent si le jour est un jour de semaine, un vendredi, ou un jour de week-end.
  4. unless :

    • Créez une variable batterie = 15.
    • Écrivez une ligne de code qui affiche “Veuillez recharger votre appareil” en utilisant unless.