Les listes (List)

IV - Les listes (List)

Qu’est-ce qu’une liste ? Une liste est un tableau à 1 dimension. Contrairement à une variable qui ne contient qu’une seule valeur, la liste peut contenir jusqu'à 255 ou 999 valeurs (selon votre calculatrice). Toujours selon le modèle de la calculatrice, vous êtes limités entre 6 et 26 listes, définies par un numéro allant de 1 à 6/20/26 (logique !). Pour visualiser les listes, allez dans l’application STAT depuis le menu principal.

Les listes (List) en Basic Casio 6
L'application STAT affiche le contenu des listes

Créer une liste

Contrairement aux variables pour lesquelles on doit entrer une valeur, il faut initialiser la liste en précisant sa taille (sa dimension). Il existe plusieurs façons de les initialiser, les plus courantes étant les méthodes 1 et 2 :

Méthode 1 : la liste des données

La première méthode consiste à donner les valeurs de chaque case de votre liste. Les valeurs sont données dans l'ordre et séparées par des virgules. Cette liste de données est délimitée par des crochets :

{1,2,3,4,5,6,7→List 1

Non, je n'ai pas oublié l'accolade fermante à la fin de ma série. Précédées de → ou en fin de ligne, elles sont facultatives. Un bon moyen pour économiser de précieux octets.

Méthode 2 : la dimension

La seconde méthode consiste à définir la dimension de la liste (le nombre de données). On utilise la fonction Dim ([OPTN] → [F1] → [F3]). Dans notre exemple, on a choisi 7 données pour la liste 1. Initialisées avec Dim, toutes les cases de votre liste ont pour valeur 0 :

7→Dim List 1 //renvoie Liste 1 = {0,0,0,0,0,0,0}

Méthode 3 : la suite de données

La troisième méthode avec Seq(), un peu plus compliquée et moins utilisée dans les programmes. On définit une expression (par exemple « 2*X »), puis la variable principale (ici, X), les bornes (début et fin) et le pas (ex : de 1). Seq() a un fonctionnement similaire à For. Quelques exemples pour mieux cerner cette fonction d'apparence compliquée, mais très simple :

[i]Seq(<expression>,<variable à faire varier>,<valeur de départ>,<valeur de fin>,<pas>)[/i]
Seq(X, X, 0, 5, 1->List 1 //renvoie List 1 = {0,1,2,3,4,5}
Seq(3*X, X, 0, 5, 1->List 1 //renvoie List 1 = {0,3,6,9,12,15}
Seq(X^2, X, 0, 5, 1->List 1 //renvoie List 1 = {0,1,4,9,16,25}

Idem, je ne ferme pas les parenthèses. 3 octets dans la poche !

Faites quelques tests pour assimiler le fonctionnement de Seq(). Une fois comprise, cette fonction peut vous faire gagner beaucoup de temps !

Méthode 4 : rentrer les valeurs manuellement

Enfin, la quatrième méthode consiste à créer la liste manuellement dans l'application LIST. Vous placez le curseur sur la première case et vous entrez la valeur puis appuyer sur [EXE] pour valider. Cette technique est pratique pour des tests rapides et à des fins personnels. En programmation, vous devez créer la liste depuis le programme. Question d'ergonomie pour l'utilisateur.


C'est sympa tout ça, mais comment dois-je m'y prendre pour les utiliser dans mes programmes ?

Patience, j'y arrive ;-)

Récupérer et modifier les valeurs d’une liste

Pour récupérer la valeur contenue dans une liste, on utilise le même symbole -> que les variables, à la différence près qu'une liste comporte plusieurs cases. Il faut donc préciser le numéro de la case (la première case ayant le numéro 1 et ainsi de suite). En reprenant l’image ci-dessus, on souhaite récupérer la valeur de la case 3 de la liste 1 (ici, elle vaut 5).

List 1[3→A //A vaudra 5

Maintenant, on veut modifier la valeur d’une case. Même principe :

9→List 1[3
S→List 2[A
List 1[3→List 1[1    //La case 1 de la liste 1 aura la même valeur que la case 3
5*List 4[45→List 3[A-52

Pareil pour les crochets, je ne les ferme pas.

Pour supprimer une liste ou toutes les listes, on utilise la fonction ClrList ([SHIFT]+[VARS] -> [F6] -> [F1] -> [F3]). ClrList supprime toutes les listes. Pour supprimer une seule liste, on spécifie le numéro de la liste après ClrList.

ClrList //Supprime toutes les listes
ClrList 1 //Supprime uniquement la liste 1

Malheureusement, on ne peut pas supprimer une case en particulier (ClrList 1[2] ne marche pas).

Supprimer une liste

Pour supprimer une liste, on utilise la fonction ClrList (qui supprime toutes les listes). En ajoutant un paramètre après celle-ci, on désigne quelle liste on veut effacer : ClrList 1 efface la List 1. Attention, l'action est irréversible.

ClrList      //Supprime toutes les listes
ClrList 1    //Supprime uniquement la liste 1

Connaitre la dimension d'une liste

Il n’existe aucune fonction pour savoir si une liste est initialisée ou non. On peut connaitre la dimension d’une liste avec Dim, mais elle doit être initialisée. Sinon, la calculatrice vous renvoie une erreur.

{1,2,7,5→List 2
Dim List 2 //renvoie 4

Remarque : à l’aide des chaines de caractères, on peut savoir si une liste existe. On présentera cette astuce un peu plus loin.


Astuces avancées

Auto-incrémentation

Les listes possèdent une fonction cachée : elle s'auto-incrémente si la case désignée dépasse la dimension maximale de 1. Je m’explique, supposons une matrice de 5 cases {2,4,5,1,6}. Je peux ajouter une valeur à la case 6, puis à la 7 et ainsi de suite.

Note : cette fonctionnalité n’existe pas sur les anciennes calculatrices comme les Graph 25/30/35/60/65.

{2,4,5,1,6→List 1
8→List 1[6

//Résultat : List 1 = { 2,4,5,1,6,8 }

Par contre, cela n’aurait pas fonctionné si l’on avait voulu ajouter la valeur 8 à la case 7, la dimension maximale de la liste étant de 5. De même, cette fonctionnalité n’est pas présente sur les anciennes calculatrices.

Calculs avec les listes

Comme les variables, vous pouvez faire des calculs entre listes. Cependant, elles doivent impérativement avoir les mêmes dimensions. Quelques exemples sont présentés ci-dessous :

List 1+List 2→List 3
2*List 1/List 2+10→List 1
2*{2,4,5,1,6}/List 2+10→List 1 //Note : La liste 2 doit avoir une dimension de 5

Tris croissant et décroissant

Triez vos listes avec SortA() et SortD(), respectivement tri par ordre croissant et tri par ordre décroissant. Vous trouverez ces deux fonctions dans le catalogue : [SHIFT] + [4] (Catalog) + [S]. Utilisez les touches du [REPLAY] pour monter ou descendre dans la liste. Le catalogue répertorie toutes les fonctions par ordre alphabétique.

{2,4,5,1,6→List 1
SortA(List 1) //Tri croissant : {1,2,4,5,6

SortD({2,4,5,1,6 //Tri décroissant : {6,5,4,2,1}

Par exemple, SortA() et SortD() sont très utiles pour un système de records. Pour s'entrainer, on va réaliser un petit Top 3.

"Initialiser Top 3"?->A //On initialise la liste qui sera notre top 3. Bien sûr, on ne l'initialise qu'une seule fois dans le programme, sinon les scores seront systématiquement remis à 0.
If A=1
Then 3->Dim List 1
IfEnd

//Votre jeu

//On suppose que le score de la partie est enregistrée dans C

If C>List 1[3 //Si C est supérieur au plus petit des records (le 3e), alors on sait qu'il s'agit d'un nouveau record
Then C->List 1[3 //On remplace le nouveau record
SortD(List 1 //On trie la liste 1 car C peut aussi être supérieur au 1er et au 2e. Ainsi, on s'assure que les scores soient bien classés du plus grand au plus petit (par ordre décroissant).
IfEnd

Fusion, somme, moyenne, maximum et minimum

La fonction Augment() fusionne deux listes. Sa syntaxe est la suivante : Augment(< liste 1 >,< liste 2 >). Les listes peuvent être de dimensions différentes, cela ne pose aucun problème.

Augment({2,4,5,1,6},{2,9,6 //{2,4,5,1,6,2,9,6}

Augment(List 1,List 5 //Combine les listes 1 et 5

Il existe d’autres fonctions telles que Sum et Mean pour calculer la somme et la moyenne d’une liste. Min et Max renvoie respectivement les valeurs minimale et maximale de la liste. Elles fonctionnent toutes sur le même principe < fonction >(< liste >) et sont disponibles dans [OPTN] + [F1] (List).

{1,2,3,4,5,6}->List 2

Sum List 2 //renvoie 21
Mean(List 2 //renvoie 3.5 (les parenthèses sont obligatoires avec Mean)
Min List 2 //renvoie 1
Max List 2 //renvoie 6

Ma question va peut-être te paraitre bête, mais pourquoi doit-on mettre des parenthèses avec certaines fonctions et pas avec d'autres ?

Tout d'abord, ta question n'est pas bête du tout et montre au contraire que tu es attentif/attentive au cours. Pour les parenthèses, que le Basic Casio est vieux et les normes ne sont pas clairement définies. On constate que les fonctions récentes ont tendance à avoir des parenthèses, alors que les anciennes fonctions n'en ont pas. Pour savoir s'il faut en mettre une ou pas, regarde si le nom de la fonction comporte une parenthèse.

Dans certaines situations, la présence de parenthèse permet de bien définir les priorités. Par exemple avec Sum List 1+1. Dans ce cas, la calculatrice calcule-t-elle d'abord la somme des valeurs contenues dans la List 1 et incrémente de 1 cette somme ? Ou bien, incrémente-t-elle de 1 l'ensemble des valeurs contenues dans la List 1 puis en fait la somme ? Entre nous, Basic Casio aurait besoin d'une bonne refonte et d'être mieux normée, cela nous éviterait de nous souvenir des exceptions et niveaux de priorité (la langue française est déjà suffisamment compliquée ^^). Dans le doute, utilisez des parenthèses et testez si elles impactent le résultat. Bref, passons, ceci est un autre débat.

Je pense que nous avons fait le tour des principales fonctions pour les listes.

Conclusion

Les listes permettent un grand nombre de calculs qui grâce à des fonctions prédéfinies, le tri, le calcul d'une somme ou d'une moyenne etc... sont très faciles et rapides à réaliser. Les deux façons les plus simples pour les créer sont :

  • {1,2,3,4→Dim List 2, si on connait les valeurs de la liste,
  • 4→Dim List 3, si on veut juste créer une liste de dimension n,
  • Augment() permet de fusionner deux listes,
  • Il existe de nombreuses fonctions de tri et de calcul rapides : SortA(), SortD(),Sum, Mean etc.

Si vous avez bien compris le fonctionnement des listes, attaquons maintenant les matrices !



<<< Revenir au cours précédent Continuer le cours >>>

Licence Creative Commons
Ce cours est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2018 | Il y a 29 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire indépendant, géré bénévolement et n'est donc pas affilié à Casio | Toute reproduction de Planète Casio, même partielle, est interdite
Les fichiers, programmes et autres publications présents sur Planète Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des licences ou des copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd