JeuWeb - Crée ton jeu par navigateur
[Ruby] Les tableaux - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Ruby] Les tableaux (/showthread.php?tid=4102)



[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. Smile



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 Smile
Depuis le temps que je voulais commencer Ruby ^^
Merci