Collections de données

Calcul de la somme de trois variables t1, t2 et t3.

Le programme AlgoTouch est :

Do
   s = 0 ;
   s = s + t1 ;
   s = s + t2 ;
   s = s + t3 ;
   Write  "La valeur de s" s ;
End

Constat

Le programme complet est :
Do
s = 0 ;

s = s + t1 ;

s = s + t2 ;

s = s + t3 ;

Write "La valeur de s" s ;

End
 
On observe :
  • une instruction initiale :
s = 0;
  • une répétition d’instructions similaires :
s = s + t? ;
La variable t? change à chaque boucle.
  • une instruction terminale
Write "La valeur de s" s ;

Collection de données

Une collection de données ou tableau est une variable contenant plusieurs valeurs. Par exemple, les trois variables t contenant trois valeurs, 10, 5 et 7. Elles sont respectivement accessibles par t[0], t[1] et t[2]. Une collection de données contient un nombre fini de valeurs, appelé sa longueur et accessible par t.length.
Tableau de 3 valeurs

Le programme d’addition des valeurs d’un tableau devient :

Do
s = 0 ;
s = s + t[0] ;
s = s + t[1] ;
s = s + t[2] ;
Write "La valeur de s" s ;
End

Constat : trois parties

Comme précédemment, le code est divisé en trois parties :
  • une instruction initiale :
s = 0;
  • une répétition d’instructions similaires :
s = s + t[?] ;
La variable t[?] change à chaque boucle.
  • une instruction terminale
Write “La valeur de s” s ;

Indice

Un indice est une variable associée à un tableau. Elle permet d’accéder aux différents élément d’un tableau en fonction de sa valeur. Par exemple soit i l’indice associé au tableau t. Quand i vaut 0, t[i] est équivalent à t[1].
Tableau avec indice i

Utilisation de l’indice

Le programme peut maintenant utiliser une boucle pour parcourir le tableau élément par élément et effectuer la somme au fur et à mesure.

Corps

s = s + t[i] ;
i = i + 1 ;

Condition de sortie

i >= t.length

Initialisation

s = 0 ;
i = 0 ;

Terminaison

Write  "La valeur de s" s ;
Code complet du programme :
Define SommeTableau
From
  s = 0 ;
  i = 0 ;
Until
  (i >= t.length) 
Loop
  s = s + t[i] ;
  i = i + 1 ;
Terminate
  Write  "La valeur de s" s ;
End

Tableaux

Définition et syntaxe

  • Tableau : ensemble de valeurs de même type portant le même nom de variable et repérées par un indice (index en anglais)
  • Syntaxe :
    • déclaration : type nomTableau[n];
      • n nombre de valeurs que le tableau peut contenir (entier positif)
    • accès aux valeurs du tableau : nomTableau[indice]
      • avec 0 ≤ indice < n
      • un élément de tableau (nom+indice) peut être manipulé comme n’importe quelle variable

Exercice : permutation d’éléments d’un tableau

L'objectif de cet exercice est de manipuler un tableau avec plusieurs indices :

  1. créer un tableau de 10 valeurs,
  2. créer un indice i sur ce tableau,
  3. augmenter et diminuer la valeur de cet indice de 1,
  4. créer un deuxième indice j de position différente de j,
  5. permuter les deux valeurs indicées par i et j.

Il est demandé de faire les manipulations à la main, sans créer un programme.

[embedyt]https://youtu.be/Pwk6TkP7vnU[/embedyt]

Exercices

Exercice : incrémentation des valeurs

Soit le tableau (collection) t contenant la suite des valeurs [5, 1, 7, 18, 9, 20]. La longueur de t est de 6. L’idée de cet exercice est d’ajouter la valeur 1 à chaque élément du tableau t. Il n’est pas demandé d’afficher le tableau final. A la fin de l’exécution du programme, le tableau t vaut [6, 2, 8, 19, 10, 21]. Pour cet exercice, l’idée est de parcourir le tableau et d’ajouter à chaque case la valeur de 1. Source AlgoTouch : Plus1
Define Plus1
From
   i = 0 ;
Until
    (t.length < = i) 
Loop
   t[i] = t[i] + 1 ;
   i = i + 1 ;
Terminate

End
[embedyt]https://youtu.be/pi6cduwCqP4[/embedyt]

Exercice : inversion des valeurs

Soit le tableau (collection) t contenant la suite des valeurs [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]. L’idée de cet exercice, est d’inverser l’ordre des éléments du tableau t. A la fin de l’exécution, la valeur de t est [100, 90, 80, 70, 60, 50, 40, 30, 20, 10]. Il est demandé que le programme réordonne les valeurs dans le tableau t sans utiliser un tableau intermédiaire.  
Define Inverse
From
   i = 0 ;
   j = t.length - 1 ;
Until
    (i >= j) 
Loop
   tmp = t[i] ;
   t[i] = t[j] ;
   t[j] = tmp ;
   i = i + 1 ;
   j = j - 1 ;
Terminate

End
[embedyt] https://youtu.be/q18OQBiFAUs[/embedyt]