Accéder à une valeur


Accès par indices

 Chaque élément d'un tableau peut être accédé par une clé entière.
Exemples:
a[1]
a[x]
a[10 + x / 2]

L'indice peut être toute expression qui s'évalue en un nombre entier.
L'expression ne peut contenir un élément de tableau.
Par exemple:
a[10 + b[5]] ... n'est pas valide

 L'indice utilisé pour retrouver un élément n'est pas nécéssairement celui utilisé quand la valeur est entrée avec un indice. Plusieurs fonctions ou opérations peuvent avoir l'effet de réordonner ou renuméroter les éléments...

Scriptol permet de parcourir un tableau et accéder à une valeur sans connaître sa clé entière, grâce à l'indice vide [] qui retourne l'élément actuellement pointé.
Exemple:
scan a
  print a[]
  a[] = "lu"
/scan

La structure de contrôle scan pointe sur chaque élément successivement et l'indice [] désigne l'élement courant.
On peut aussi parcourir le tableau avec l'itérateur intégré.


Accès par itérateur

 L'itérateur est en fait un ensemble de méthodes des objets de type liste, pour accéder séquentiellement aux élements contenus, en ordre ascendant ou descendant:

begin() pointe sur le premier élement et retourne sa valeur.
end() pointe sur le dernier élement et retourne sa valeur.
inc() déplace sur l'élément suivant. Retourne la valeur pointée avant, ou nil au-dela du dernier élément.
dec() déplace sur l'élément précédant. Retourne la valeur ou nil.
index() retourne l'index de l'élément pointé.
value() retourne la valeur de l'élément pointé.
[] sans index, indice de l'élément courant.
nil signifie "not in list" et est retourné par différentes fonctions
quand aucune valeur ne peut être retournée.


Exemple d'itération array a = (1,2,3)

a.begin()                  ` déplace sur le premier élément
while a[] <> nil        ` teste si la fin de liste est atteinte
  print a[]                  ` affiche l'élément actuellement pointé
  a.inc()                     ` déplace sur l'élément suivant
/while
  > 1
> 2
> 3


On peut afficher le tableau en ordre inverse en remplaçant:
- a.begin() par a.end()
- a.inc() par a.dec()

 Exercices
1) Soit le tableau suivant:
array a = ("x", "y", "z")
Créer un tableau b en suffixant les éléments de a par les lettres "ok" et affichez.
Utilisez une boucle while comme dans le texte.

Réponse