Retour au cours

les tableaux (arrays)

Objectifs

  • Créer un tableau pour stocker une liste ordonnée d’éléments.
  • Accéder à des éléments par leur index (position).
  • Ajouter et supprimer des éléments d’un tableau.
  • Itérer sur un tableau pour effectuer une action sur chaque élément.

Le Array (tableau) est l’une des structures de données les plus utiles et les plus utilisées en Ruby. C’est une collection ordonnée d’objets.

Création d’un tableau

Un tableau est créé avec des crochets [], et ses éléments sont séparés par des virgules. Un tableau peut contenir n’importe quel type d’objet, même des types mélangés.

nombres = [1, 2, 5, 10, 20]
fruits = ["pomme", "poire", "banane"]
melange = [42, "réponse", true]

Raccourci %w

Pour créer un tableau de chaînes de caractères simples, le raccourci %w{...} ou %w[...] est très pratique et lisible.

# Équivalent à ["pomme", "poire", "banane"]
fruits = %w[pomme poire banane]

Accéder aux éléments

L’accès se fait par l’index (la position) de l’élément. Le premier élément est à l’index 0.

fruits = ["pomme", "poire", "banane"]

fruits[0]     # => "pomme" (le premier)
fruits[2]     # => "banane" (le troisième)

# L'indexation négative part de la fin
fruits[-1]    # => "banane" (le dernier)
fruits[-2]    # => "poire" (l'avant-dernier)

# Méthodes pratiques
fruits.first  # => "pomme"
fruits.last   # => "banane"

Ajouter et supprimer des éléments

  • Ajouter à la fin (<<) : L’opérateur “shovel” (<<) est la manière la plus idiomatique d’ajouter un élément.

    fruits << "orange"
    # fruits est maintenant ["pomme", "poire", "banane", "orange"]
  • Supprimer le dernier (.pop) : dernier_fruit = fruits.pop # => “orange” # fruits est maintenant ["pomme", "poire", "banane"]

  • Supprimer le premier (.shift) : premier_fruit = fruits.shift # => “pomme” # fruits est maintenant ["poire", "banane"]

  • Supprimer à un index précis (.delete_at) : fruits.delete_at(1) # Supprime “banane” (qui est maintenant à l’index 1)

Méthodes utiles

  • .length (ou .size) : Renvoie le nombre d’éléments. [1, 2, 3].length # => 3

  • .include?(element) : Renvoie true si le tableau contient l’élément. fruits.include?("poire") # => true

  • .sort : Renvoie une nouvelle version triée du tableau. [3, 1, 2].sort # => [1, 2, 3]

  • .uniq : Renvoie une version sans doublons. [1, 2, 2, 3, 1].uniq # => [1, 2, 3]

Itérer sur un tableau avec .each

La manière la plus “Ruby” de parcourir un tableau n’est pas une boucle for classique, mais l’utilisation de l’itérateur .each. Il prend un bloc de code et l’exécute pour chaque élément.

fruits = ["pomme", "poire", "banane"]

fruits.each do |un_fruit|
  # La variable 'un_fruit' contient l'élément pour le tour de boucle actuel
  puts "J'aime les #{un_fruit}s."
end

Sortie :

J'aime les pommes.
J'aime les poires.
J'aime les bananes.

La syntaxe {...} est un raccourci pour do...end, souvent utilisé pour les blocs sur une seule ligne : fruits.each { |fruit| puts fruit.capitalize }

Exercices

  1. Liste de courses :

    • Créez un tableau contenant trois articles à acheter.
    • Affichez le deuxième article de la liste.
    • Ajoutez “chocolat” à la fin de la liste.
    • Affichez la liste complète.
  2. Affichage numéroté :

    • Créez un tableau de vos trois films préférés.
    • Ruby propose un itérateur .each_with_index qui donne accès à l’élément et à son index. Utilisez-le pour afficher une liste numérotée :
      1. Le Seigneur des Anneaux
      2. Star Wars
      3. ...
  3. Filtrage simple :

    • Créez un tableau de nombres [1, 2, 3, 4, 5, 6].
    • Utilisez .each et une condition if pour n’afficher que les nombres pairs.