[Ruby] Les tableaux - Sephi-Chan - 17-06-2009
Les tableaux
Les tableaux (arrays, en anglais) diffèrent beaucoup des entiers et des chaînes de caractères ! En effet, un entier ne contient qu'une donnée. Les tableaux, eux, peuvent contenir plusieurs données ! Et ces données peuvent être de types différents.
Ces structures de données contiennent donc plusieurs cases. Ces cases ont des numéros, qu'on appelle les clés. La clé du premier élément d'un tableau est 0.
- Déclaration
- Accéder aux éléments
- Modifier les éléments
- Ajouter des éléments
- Parcourir les tableaux
Déclaration
Pour déclarer un tableau, plusieurs moyens s'offrent à nous.
puts [ "Pâté en croûte", "Jambon fumé", "Saucisson sec" ].join ", "
puts %w@ Août Septembre Octobre @.join ", "
puts Array.new(4, "1 Euro").join ", "
puts Array.new(4){ |i| i + 1 }.join ", "
Code : Pâté en croûte, Jambon fumé, Saucisson sec
Août, Septembre, Octobre
1 Euro, 1 Euro, 1 Euro, 1 Euro
1, 2, 3, 4
Voyons ce qui se passe sur chaque ligne :- On voit qu'on peut définir un tableau en séparant les éléments par des virgules, le tout entre des crochets.
- Cela doit vous rappeler les %q du chapitre précédent : on définit un délimiteur et c'est l'espace qui sépare chaque élément.
- On peut demander directement d'avoir un nombre d'élément et donner une valeur à ces éléments.
- Voici un itérateur en action. Nous reviendrons sur les itérateurs plus tard dans le chapitre.
Mine de rien, on vient de découvrir la méthode <gras>join</gras> d'un tableau, qui permet de rassembler les éléments du tableau sous forme d'une chaîne de caractère en séparant les éléments par une virgule.
Accéder aux éléments
Pour accéder aux éléments du tableau, il suffit d'indiquer la clé entre crochets.
alphabet = ("a".."z").to_a
puts alphabet.join ", "
puts alphabet[1, 3].join ", " # On récupère 3 éléments à compter du second.
puts alphabet[0..3].join ", " # On récupère les éléments 0 à 4.
puts alphabet[-1] # On récupère le dernier élément.
puts alphabet[-2] # On récupère l'avant-dernier élément.
puts alphabet[-3, 2].join ", " # On récupère 2 éléments à compter de l'antépénultième (l'avant-avant-dernier).
Code : a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
b, c, d
a, b, c, d
z
y
x, y
Remarquez la définition à partir d'une gamme que l'on retourne sous forme de tableau. Nous étudierons les gammes plus loin dans le chapitre.
Modifier les éléments
À nouveau, on peut modifier les éléments en y accédant par leur indice.
courses = [ "Huile d'olive", "Chocolat au lait", "Jus d'orange" ]
puts courses.join ", "
# On modifie le premier élément.
courses[0] = "Pâté en croûte"
puts courses.join ", "
# On modifie 2 éléments à compter du deuxième.
courses[1, 2] = [ "Mandarines", "Pommes" ]
puts courses.join ", "
# On remplace les 3 premiers éléments.
courses[0..2] = [ "Mandarines", "Pommes" ]
puts courses.join ", "
# On change la valeur du troisième élément.
courses[2] = nil
puts courses.join ", "
# On supprime le troisième élément.
courses.delete_at 2
puts courses.join ", "
Notez la différence qu'il y a entre la suppression d'une clé et le remplacement de sa valeur par nil (qui exprime le vide, nous y reviendrons).
Code : Huile d'olive, Chocolat au lait, Jus d'orange
Pâté en croûte, Chocolat au lait, Jus d'orange
Pâté en croûte, Mandarines, Pommes
Mandarines, Pommes
Mandarines, Pommes,
Mandarines, Pommes
Ajouter des éléments
Comme souvent, il y a plusieurs moyens d'ajouter des éléments à un tableau.
taches = [ "Aller chercher le pain", "Continuer le cours" ]
puts taches.join ", "
# On ajoute un élément à la fin.
taches << "Réviser les partielles"
puts taches.join ", "
# On ajoute un élément à la fin.
taches.push "Réviser encore un peu"
puts taches.join ", "
# On insère un élément avant le deuxième élément.
taches.insert(1, "Boire")
puts taches.join ", "
# On insère un élément là où il n'y a rien.
taches[7] = "Arrêter de réviser (…)"
puts taches.join ", "
Code : Aller chercher le pain, Continuer le cours
Aller chercher le pain, Continuer le cours, Réviser les partielles
Aller chercher le pain, Continuer le cours, Réviser les partielles, Réviser encore un peu
Aller chercher le pain, Boire, Continuer le cours, Réviser les partielles, Réviser encore un peu
Aller chercher le pain, Boire, Continuer le cours, Réviser les partielles, Réviser encore un peu, , , Arrêter de réviser (…)
Quand on place du contenu à un index qui n'a pas de prédécesseur direct, Ruby remplit les cases avec du vide. C'est ainsi qu'on obtient les 2 valeurs nil avant le dernier élément.
Parcourir les tableaux
Pour parcourir les tableau, plusieurs solutions s'offrent à nous, en voici quelques unes qui ont exactement le même rendu :
armes = [ "Le dernier sourire", "Pavois du briseur", "Plaie de Veranus" ]
for arme in armes
puts arme
end
armes.each do |arme|
puts arme
end
armes.each { |arme| puts arme }
Code : Le dernier sourire
Pavois du briseur
Plaie de Veranus
Les deuxième et troisième façons de faire sont similaires, seule la forme change. Elles utilisent des itérateurs, que nous verrons plus en détail dans la suite du cours.
Sephi-Chan
RE: [Ruby] Les tableaux - Kishan - 17-06-2009
Youpi
Depuis le temps que je voulais commencer Ruby ^^
Merci
|