Tuples

Les tuples permettent de créer des types composés. C'est un regroupement d'objets qu'on représente en algorithmie avec des parenthèses :

p := (entier, entier) # tuple de 2 entiers
p  (34, 25)  

Un tuple peut être composé de types différents :

anniversaire  (entier, chaîne, entier))  # tuple composé de deux entiers et d'une chaîne de caractères
anniversaire  (10, "janvier", 1938)

On peut accéder à chaque élément du tuple comme un tableau :

(p := (entier, entier))  (34, 25)  # tuple de 2 entiers
affiche à l'écran p[0]  # va afficher 34
affiche à l'écran p[1]  # va afficher 25

Enfin, un tuple peut bien sur être composé d'autres tuples :

ps := ((entier, entier), chaîne)  # tuple composé d'un tuple et d'une chaîne de caractères
ps  ((0, 0), "origine") 
affiche à l'écran p[0]  # va afficher (0, 0)
affiche à l'écran p[1]  # va afficher 25

En revanche, il est impossible de modifier un tuple une fois créé.

Définition

Un tuple est un regroupement fini et ordonné d'objets de types pouvant être différent.

  • Son type est composé des types des différents objets le contenant entre parenthèses et séparé par des virgules. Ce n'est pas un tableau même si on peut accéder à chaque élément d'un tuple par son indice.
  • Un tuple est non mutable : il est impossible de changer l'objet associé à un élément du tuple.

Un tuple est un type utilisable par un algorithme. Par exemple, le type de l'algorithme de la division euclidienne algorithme division_euclidienne(a: entier, b: entier) → [entier] est bien plus explicite si on l'écrit :

algorithme division_euclidienne(a: entier, b: entier)  (entier, entier)

Attention cependant :

À retenir

Ce n'est pas parce que l'on ne peut pas changer d'objet que l'objet lui même ne peut pas être modifié.

Par exemple :

p := ([entier], entier)  # tuple composé d'un tuple et d'une chaîne de caractères
p  ([0, 0], 2) 
affiche à l'écran p[0]  # va afficher [0, 0]
p[0][0]  12
affiche à l'écran p[0]  # va afficher [12, 0]