Section 13.1.3 : Ruby — Variables, types et boucles
🎯 Objectif pédagogique
Découvrir le langage Ruby, comprendre ses types de données fondamentaux et maîtriser les structures de contrôle. Ruby est le langage au cœur de Ruby on Rails — sa philosophie de « developer happiness » en fait un excellent premier langage.
Pourquoi Ruby ?
Ruby est un langage créé en 1995 par Yukihiro « Matz » Matsumoto au Japon. Sa philosophie : « Ruby is designed to make programmers happy ». Le langage privilégie la lisibilité et l'expressivité, ce qui en fait un excellent choix pour apprendre la programmation.
Variables et types de données
En Ruby, pas besoin de déclarer le type — le langage le déduit automatiquement (typage dynamique).
# Strings
prenom = 'Alice'
nom = "Martin"
message = "Bonjour, #{prenom} #{nom} !" # Interpolation
# Nombres
age = 28 # Integer
prix = 19.99 # Float
quantite = 1_000_000 # Underscore pour lisibilité
# Booléens
majeur = true
inscrit = false
# Nil
resultat = nil
# Symboles
statut = :actif
role = :admin
Opérations sur les strings
nom = 'alice martin'
nom.upcase # 'ALICE MARTIN'
nom.capitalize # 'Alice martin'
nom.length # 12
nom.include?('alice') # true
nom.gsub('alice', 'bob') # 'bob martin'
nom.split(' ') # ['alice', 'martin']
nom.reverse # 'nitram ecila'
nom.empty? # false
nom.start_with?('alice') # true
Opérations sur les nombres
10 + 3 # 13
10 - 3 # 7
10 * 3 # 30
10 / 3 # 3 (division entière !)
10.0 / 3 # 3.333...
10 % 3 # 1 (modulo)
2 ** 10 # 1024 (puissance)
'42'.to_i # 42
42.to_s # '42'
42.to_f # 42.0
-5.abs # 5
42.even? # true
Structures conditionnelles
age = 25
if age >= 18
puts 'Vous êtes majeur'
elsif age >= 16
puts 'Presque majeur'
else
puts 'Vous êtes mineur'
end
# Opérateur ternaire
statut = age >= 18 ? 'majeur' : 'mineur'
# unless (inverse de if)
unless age >= 18
puts 'Accès refusé'
end
# Condition postfix
puts 'Bienvenue !' if age >= 18
# case / when
role = :admin
case role
when :admin then puts 'Accès total'
when :editor then puts 'Accès écriture'
when :viewer then puts 'Accès lecture'
else puts 'Rôle inconnu'
end
Boucles
# while
compteur = 0
while compteur < 5
puts "Tour #{compteur}"
compteur += 1
end
# times (la manière Ruby)
5.times do |i|
puts "Itération #{i}"
end
# upto / downto
1.upto(5) { |i| puts i }
5.downto(1) { |i| puts i }
# loop avec break
loop do
puts 'Entrez votre nom :'
nom = gets.chomp
break if nom.length >= 2
puts 'Nom trop court !'
end
Arrays (tableaux)
fruits = ['pomme', 'banane', 'cerise']
nombres = [1, 2, 3, 4, 5]
fruits[0] # 'pomme'
fruits[-1] # 'cerise'
fruits << 'mangue'
fruits.push('kiwi')
fruits.delete('banane')
fruits.each { |fruit| puts fruit }
nombres.map { |n| n * 2 } # [2, 4, 6, 8, 10]
nombres.select { |n| n.even? } # [2, 4]
nombres.reject { |n| n > 3 } # [1, 2, 3]
nombres.reduce(:+) # 15
nombres.min # 1
nombres.max # 5
Que retourne [1, 2, 3, 4, 5].select { |n| n.even? } ?
En Ruby, quelle est la différence entre puts et print ?
Learn AI, from prompts to agents