Structures de controle
if ... else ... end
if heure == 7
puts "Je me reveille"
elsif (heure >= 12 && heure <= 14) || (heure >= 19 && heure <= 21)
puts "Je mange"
elsif heure >= 1 && heure < 7
puts "Je dors"
else
puts "Je travaille"
end
case ... end
puts "Merci de saisir un nombre : "
chiffre = gets.chomp.to_i
case chiffre
when 0..9
puts "Vous aimez les tout petits chiffres."
when 42
puts "Vous être un as !"
else
puts "Vous auriez mieux pu choisir... ;)"
end
unless ... end
j = rand(10)
unless (j <= 5)
puts "j vaut plus de 5"
end
while ... end
puts "Je vais compter de 1 a 10"
i = 0
while (i < 10)
i += 1
puts i
end
until ... end
puts "Je vais compter de 1 a 10"
i = 0
until (i >= 10)
puts i
i += 1
end
for ... end
puts "compte de 1 a 10"
for elt1 in (1..10)
puts elt1
end
tableau = [1, 2, 3, 4]
for elt2 in tableau
puts elt2 + 1
end
each { ... } et autres itérateurs
Les possibles de coder les 2 exemples si dessus comme suit:
puts "compte de 1 a 10"
(1..10).each { |elt1|
puts elt1
}
tableau = [1, 2, 3, 4]
tableau.each { |elt2|
puts elt2 + 1
}
tableau = [1, 2, 3, 4]
tableau.each do |elt2|
puts elt2 + 1
end
Parser un à un les caractères d'une chaine:
ma_chaine = "ayu"
ma_chaine.each_byte { |carac|
ascii_sup = carac+1
puts ascii_sup.chr
}
Parser une à une les lignes d'une chaine:
ma_chaine = "toto\ntiti\ntata"
i = 1
ma_chaine.each_line { |ligne|
puts "#{i} : #{ligne}"
i += 1
}
Moyen de repeter une operation X fois:
2000.times do
puts "Moi, j'adore K2000 !" # © Les Nuls
end
Sortie de boucle:
- return: sort complètement de la boucle et de la méthode qui contient la boucle.
- break: sort de la boucle, et continue le code juste après.
- next: passe directement à la prochaine itération de la boucle
- redo: re-passe l'itération courante de la boucle