Aller au menu - Aller au contenu

Icône Les Listes

Avatar
Mise à jour : 22/08/2008
1 010 visites depuis 7 jours, dont 23 sur ce chapitre classé 126/786
Imaginons que pour un programme, vous deviez enregistrez les 30 premiers scores d'un jeu. Comment faire ?


Vous me répondriez : "Impossible, on n'a que 26 variables"
C'est vrai, mais je vais vous apprendre à utiliser un autre élément : les listes. ;)
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Qu'est ce que c'est ?

Qu'est-ce qu'une liste ?

C'est très simple : c'est un ensemble contenant un nombre variable de nombres.
Chaque nombre contenu dans la liste est repéré par un indice (un nombre appartenant aux entiers naturels).

Mais je crois qu'un schéma parle mieux que des mots. ^^
(i: indice // v: valeur)

Image utilisateur


Le premier indice de la liste est contenu à l'indice 1 : il vaut 12.
Le deuxième indice est contenu à l'indice 1+1 soit 2 : cette fois-ci, il vaut 3.
On peut continuer ! :D
Indice suivant : 3 & il vaut 74...

Je pense que vous avez compris le principe. On peut en quelque sorte dire qu'une liste est une sorte d'étagère où chaque rangement peut contenir une variable. Et pour ne pas s'y perdre, on a collé une étiquette à chaque emplacement.

Mouais... Et à quoi ça sert ?

C'est trop divers et varié pour tout lister. En créant des programmes, vous vous apercevrez que vous ne pourrez pas y couper, à partir du moment où vous devez manipuler un grand nombre de variables.
On peut s'en servir pour enregistrer des scores, retenir les coordonnées du serpent de Snake, ou enregistrer plusieurs nombres entrés par l'utilisateur, etc.

Je pourrais continuer pendant des heures, mais là n'est pas le sujet. Vous trouverez bien à un moment l'utilité de ces tableaux, alors pour le moment je vous laisse lire ce chapitre. Vous verrez, ce n'est pas trop dur ! ^^

Création

C'est bien beau, mais comment on crée une liste ? :o

J'y viens ! :)

La Ti vous fournit exactement 6 listes prêtes à l'emploi. Elles sont numérotés de L1 à L6.
Vous pouvez y accéder en faisant [2nd]+[1] pour la liste 1, [2nd]+[2] pour la liste 2, ..., [2nd]+[6] pour la liste 6.
Vous pouvez aussi faire [2nd]+[STAT].

Il faut maintenant entrer des valeurs dans cette liste.
Vous pouvez le faire à l'initialisation en utilisant les crochets: [2nd]+[(] et [2nd]+[)].
Chaque chiffre doit être séparé d'un autre par une virgule.
Et on réutilise notre fameuse flèche STO. :D
Code : Pascal
1
2
:{12,3,74,5,23,10,59}->L1
:Disp L1

Les listes prennent aux maximum 999 variables (ça devrait suffire non ? ^^ ).


Comment on utilise les éléments de cette liste ?

C'est là qu'interviennent les indices. Si vous voulez accéder à une valeur précise, il va falloir préciser l'indice correspondant. Pour cela, il suffit d'écrire le nom de la liste suivi de l'indice entre parenthèses.
Code : Pascal
1
2
3
4
:{7,8,9}->L1
:Disp L1(1)
:Disp L1(2)
:Disp L1(3)

Code : Console
7

8

9


Si vous demandez une valeur qui n'existe pas, vous vous retrouverez avec une erreur "ERR:INVALID DIM" :(



Vous pouvez ensuite modifier chaque variable indépendamment des autres. :)
Code : Pascal
1
2
3
:{7,8,9}->L1
:9->L1(1)
:Disp L1

Code : Console
{9 8 9}



Si vous voulez rajouter un élément, c'est possible ! Mais si vous avez une liste de n éléments, vous pourrez simplement le rajouter à l'indice n+1. ;)
Code : Pascal
1
2
3
:{7,8,9}->L1
:10->L1(4)
:Disp L1

Code : Console
{7 8 9 10}


Mais pourquoi on a que 6 listes ? C'est nul, j'en veux plus !

Je ne vous ai pas tout dit ! :p
Vous pouvez créer vos propres listes qui portent leurs noms !

Pour cela, il faut l'élément "L". Allez le chercher en faisant [2nd]+[STAT]+[OPS]+B.
Vous l'avez ? Regardez la syntaxe, alors !
Code : Pascal
1
2
3
:{1,2,3}->LABC // le grand L représente le petit l de liste
:Disp LABC
:Disp LABC(1)

La liste se nomme donc ABC. Elle se manie comme une liste normale.
Par contre, le nom de la liste ne doit pas dépasser 5 caractères (ça fait pas mal de possibilités, non ? ^^).

Vous pouvez accéder à l'ensemble de toutes ces listes en faisant [2nd]+[STAT].

N'oubliez pas de supprimer de temps en temps les listes que vous utilisez : elles prennent pas mal de place !
Pour les supprimer : ([2nd]+[+]+2+4)

Quelques fonctions

Bon, on peut manipuler des listes. Mais si je veux faire quelque chose comme la trier, je fais comment ?

La Ti vous fournit pas mal de fonctions toutes faites pour manipuler vos listes !
Abordons-les ! :pirate:
(Je vous conseille de regarder particulièrement les fonctions dim( et Fill( qui permettent de créer rapidement de grandes listes.)

Toutes ces fonctions se trouvent en faisant [2nd]+[STAT]+[>].


Regardons d'abord le premier menu, soit OPS. ;)


SortA(



Cette première fonction permet tout simplement de classer les éléments d'une liste par ordre croissant.
Code : Pascal
1
2
3
:{6,8,4}->L3
:SortA(L3)
:Disp L3 // qui vaut {4,6,8}

On peut mettre plusieurs listes en argument. A ce moment-là, la fonction classe les éléments de la première liste par ordre croissant. Les suivantes verront leurs éléments classés de la même façon que la première. Toutes les listes doivent être de même longueur. (Je sais c'est pas très clair, mais regardez l'exemple. ;) )

Image utilisateur

Image utilisateur

Les éléments de la liste 1 sont classés par ordre croissant. Chaque élément de la liste 2 est classé à la même position que l'élément de la liste 1 de même indice.

SortD(



C'est tout le contraire : cette fonction permet de classer les éléments d'une liste par ordre décroissant.
Code : Pascal
1
2
3
:{6,8,4}->L3
:SortD(L3)
:Disp L3 // qui vaut {8,6,4}

De la même façon que SortA(, cette fonction peut classer les éléments de plusieurs listes par rapport à ceux d'une première, classés par ordre décroissant.

dim(



Cette fonction renvoie quant à elle la taille de la liste. :)
Code : Pascal
1
2
:{6,8,4}->L2
:Disp dim(L2) // soit 3

Cette fonction permet aussi de créer ou d'agrandir une liste. :o

Code : Pascal
1
2
3
// Si la liste n'existe pas, elle se remplit de 0.
:4->dim(L4)
:Disp L4 // ou {0,0,0,0}

Image utilisateur

Code : Pascal
1
2
3
:{6,8,4}->L2
:5->dim(L2)
:Disp L2 // ou {6,8,4,0,0}


Fill(



Très pratique ! Cette fonction remplit toute une liste à la même valeur.
Code : Pascal
1
2
3
:{4,6,8}->L1
:Fill(5,L1
:Disp L1 // qui vaut {5,5,5}


seq(



Seq est une fonction très très pratique ! :D
Elle permet de fournir une liste dont les termes sont les résultats d'une équation, en fonction d'une variable comprise dans un certain intervalle, dont la valeur augmente (ou diminue) d'un certain pas.
Code : Pascal
1
:seq(expression,variable,début,fin[,pas]

Le pas est facultatif, et vaut 1 si rien n'est précisé.
Code : Pascal
1
:seq(A²,A,1,6,2)->L1 // cette liste vaut {1,9,25}

Les éléments correspondent donc à 1² puis à 3² et à 5².
Code : Pascal
1
:seq(X+2,X,3,9)->L1 // cette liste vaut {5, 6, 7, 8, 9, 10, 11}

Les éléments correspondent, dans l'ordre, à 3+2, 4+2, 5+2, 6+2, ...

cumSum(



Cette fonction fournit une liste dont les termes sont les sommes des termes de rang inférieur. :)
Par exemple, L1(3) = L1(2) + L1(1).
Image utilisateur


List(


Cette fonction renvoie une liste contenant les valeurs des différences (~l'écart) entre chaque élément de la liste. Par exemple, les éléments de cette liste peuvent s'exprimer ainsi (on appelle D la liste renvoyée par la fonction, et L la liste envoyée en paramètre) :
D(1) = L(2)-L(1)
D(2) = L(3)-L(1)
Code : Pascal
1
2
:List({20,30,45,70})->L2
:Disp L2

Code : Console
{10,15,25}

La liste renvoyée contient n-1 éléments par rapport à la liste de départ.

Select(



J'ai choisi de ne pas présenter cette fonction, car elle concerne les nuages de points, ce qui n'est pas abordé dans ce tuto. Mais sachez que cette fonction permet de sélectionner plusieurs points d'un nuage de points, pour enregistrer leurs coordonnées dans deux listes. ;)


augment(



Cette fonction permet de concaténer deux listes. Les listes vont être rajoutées les unes à la suite des autres.
Code : Pascal
1
2
3
:{1,2,3}->L1
:augment(L1,{4,5,6})->L1
:Disp L1

Code : Console
{1,2,3,4,5,6}


List>matr( & Matr>list(



Je vous parlerai de ces fonctions dans le prochain chapitre (Les matrices).


> Regardons maintenant le deuxième menu, MATH. ;)


min(


Cette fonction renvoie la valeur de l'élément le plus petit de toute la liste.
Code : Pascal
1
2
:{5,6,8}->L1
:Disp min(L1) // soit 5


max(


Cette fonction renvoie la valeur de l'élément le plus grand de toute la liste.
Code : Pascal
1
2
:{5,6,8}->L1
:min(L1)->A // soit 8


mean(


Cette fonction renvoie la valeur de la moyenne de la liste.
Code : Pascal
1
2
:{10,15,10,15}->L1
:Disp mean(L1) // soit 12.5


median(


Cette fonction renvoie la valeur de la médiane de la liste.
Code : Pascal
1
:median({1,2,3})->A // soit en fait 2


sum(


Cette fonction, quand à elle, fait la somme de tous les éléments de la liste.
Code : Pascal
1
2
:{3,5,7,1}->L1
:sum(L1)->A // soit 3+5+7+1 = 16

Petit truc à savoir : cette expression calcule la somme des 5 premiers termes de X². :)
Code : Pascal
1
:sum(seq(X²,X,0,5))


prod(


Cette fonction fait le produit de tous les éléments de la liste.
Code : Pascal
1
2
:{3,5,7,1}->L1
:sum(L1)->A // soit 3*5*7*1 = 105


stdDev( & variance(



Je ne sais pas de quoi parlent ces fonctions. :D
Mais sachez que ça permet de calculer l'écart-type et la variance d'une liste.
Vous avez trouvé ça compliqué ? :D

Je n'espère pas car, dans le prochain chapitre, on va aborder un autre type de liste un peu plus complexe : les matrices !
Chapitre précédent Sommaire Chapitre suivant

Partager

12 commentaires pour "Les Listes"
Note moyenne : 3.82 / 4 (60 votes)
Pseudo Commentaire
Hors ligne spider-mario # Posté le 25/07/2008 à 15:51:47
Avatar

Ville : Montigny-lès-cormeilles
Pays : France métropolitaine
Études : INSA Rouen

À ta place, j'aurais placé
Citation : Le tuto

Code : Pascal
1
2
3
// Si la liste n'existe pas, elle se remplit de 0.
:4->dim(L4)
:Disp L4 // ou {0,0,0,0}


dans "Création des listes" :o
Hors ligne Kristhal # Posté le 11/09/2008 à 20:30:21

l'écart type et la variance sont des fonctions statistiques.

le calcul de la variance attaché à une série statistique de i nombres de valeur X et d'indices n [soit : (X1, n1) (X2,n2) ... (Xi, ni)] se calcul comme cela (Xm est la moyenne de la suite):

V(X) = [n1(X1-Xm)²+n2(X2-Xm)²+ ... +ni(Xi-Xm)²]/(n1+n2+ ... +ni)

l'écart type sert à savoir si les valeurs sont plutôt proche de la moyenne (par exemple {10, 12, 11, 10, 12}) ou très éloignés (par exemple {2, 400, 2587, 649, 78}) et sa se calcul comme suit :

sigma (X) = racine (V(X))

voila pour éviter les "trous" dans le tuto. Sinon, c'est excellent, continue comme sa, on apprend plein de trucs :)
Hors ligne bidibam # Posté le 03/07/2009 à 16:21:31
jupiter-7 juillet 2010
Avatar

bon tuto !!

seulement je trouve pas la fonction augment (j'ai une TI-82 Stats.fr) sur ma calculatrice.

merci de votre aide...

"Les choses sont ce qu'on pense d'elles"
 
Hors ligne sebsheep # Posté le 13/10/2009 à 23:32:44
Avatar

Études : Universite Paris Sud 11

Pour prendre une partie de liste, tu ne l'as pas dit explicitement, mais on peut utiliser seq.
Par exemple, on a L1={1,6,4,1,4}, mais là de dans, on ne veut que les 3 premières valeurs. On peut alors faire :
seq(L1(I),I,1,3)

Et petit détail sur la partie 'seq', on ne met pas une équation (4x=5+3 est une EQUAtion car tu as une égalité, et tu cherches des conditions pour qu'elle soit vraie), mais une expression (4x+4 est une expression, on peut le calculer explicitement si on connait x).

Merci pour le tuto qui a le mérite de lister la plupart des fonctions en donnant la syntaxe et un exemple à chaque fois.

"Il y a deux choses infinies dans le monde : l'univers et la bêtise humaine ... mais pour l'univers j'ai un doute"
Image utilisateur
Tuto sur l'aléatoire et les probabilités.
Un aperçu de Monte Carlo

 
Hors ligne edweis # Posté le 19/10/2009 à 19:08:15

j'aurai aussi une petite question je voudrais: j'ai une liste L1{a,b,c,d,e,f...}
et je voudrai faire en sorte que L1 soit agale au 3 derniere valeur (elle sont alleatoire)
genre:
{1,7,9,3,0,5}->L1
et optenire a la fin
L1 = {3,0,5}
SANS BOUCLE !!!!

Voir tous les commentaires