Page 1 of 1

Astuce : Savoir si une liste existe

Unread postPosted: 19 Aug 2008, 12:38
by Adriweb
repris de mon blog


B'jour tout le monde :D

Je vous propose aujourd'hui une astuce pour les programmeurs souhaitant savoir si une liste existe et si celle-ci contient alors des données.

L'astuce est en fait très simple.

Il suffit d'écrire cette routine (et de l'adapter avec le nom de votre liste bien sur) :

Code: Select all
: SetUpEditor
: If not(dim(L1


En fait, on regarde la dimension de la liste. Si c'est 0 (d'ou le "not("), la liste n'a pas de données, elle est vide, et on peut considérer qu'elle n'existe pas ;)

Ceci peut être très intéressant dans des programmes d'analyse de liste de donnes entrées par l'utilisateur, par exemple !

Re: Astuce : Savoir si une liste existe

Unread postPosted: 19 Aug 2008, 12:46
by ProgVal
J'ajoute que la fonction SetUpEditor désarchive les listes.

sinon, au lieu de SetUpEditor, tu peux mettre 0-dim(L1
si la liste existe, cette ligne sera sans effet

Re: Astuce : Savoir si une liste existe

Unread postPosted: 19 Aug 2008, 12:53
by Ver2guerre
-_-"

C'est ce qu'on appelle du leech : http://tamast.actifforum.com/z80-f6/ast ... -t1323.htm

Re: Astuce : Savoir si une liste existe

Unread postPosted: 20 Aug 2008, 00:21
by Adriweb
lol progval qui a tout repris

+1 v2g

Re: Astuce : Savoir si une liste existe

Unread postPosted: 25 Oct 2008, 16:55
by critor
Tester dim(L1)=0 pour savoir si une liste est vide marche bien sur TI-83+/84+.

Par contre, sur TI-82 Stats, appeller dim(L1) si la liste est vide ne renvoie pas 0, mais un superbe "erreur: dimension".
Chouette! :#top#:

Si quelqu'un a une solution sur TI-82 Stats...

Re: Astuce : Savoir si une liste existe

Unread postPosted: 26 Oct 2008, 16:11
by tama
ça marche pas le "->L1 ?

j'avais posté une réponse là-bas, ensuite il suffit de tester la dimension de la liste

(pas mal la collection de calculatrices au passage ^^)

Re: Astuce : Savoir si une liste existe

Unread postPosted: 26 Oct 2008, 17:40
by critor
Merci :;):

J'ai juste commencé à "collectionner" il y a 15 ans.
Et comme je ne jette jamais rien...


Sinon oui, le "{0-L1" marche pour réinitialiser une liste.


Mais par exemple, un programme peut avoir besoin de savoir si une liste est vide ou pas.
(pour savoir si il peut écraser la liste, ou bien si il enregistre ses données en fin de liste par exemple)

Donc normalement, il faut utiliser "dim(L1".

Mais pour une liste existante vide sur TI-82Stats, "dim(L1" ne renvoie pas 0 (il devrait pourtant), mais "ERREUR: DIM INVALIDE".


J'ai essayé de contourner ce problème en faisant direct "append(L1,{mes données})", au lieu de tester "dim(L1" mais si l'une des 2 listes est vide, ça provoque la même erreur.


En fait, je me suis rendu compte de ce problème quand j'ai porté AutoCalc (mon programme pour le concours :D: ) que je développais initialement pour TI-83+/84+ sur TI-82 Stats. J'ai donc du bidouiller un truc.

J'ai fait ce portage, car j'ai l'impression que dans les lycées, les TI-82 Stats sont majoritaires devant les TI-83+/84+.


Conclusion, la TI-83+/84+ n'est pas capricieuse, mais la TI-82 Stats semble allergique aux listes vides... Alors qu'elle pourrait répondre 0 ou ne rien faire, elle balance une erreur qui casse tout le programme... :(

Re: Astuce : Savoir si une liste existe

Unread postPosted: 26 Oct 2008, 18:12
by tama
"->L1 ça marche pas ?
c'est un peu l'équivalent de 0-dim(L1

Re: Astuce : Savoir si une liste existe

Unread postPosted: 26 Oct 2008, 20:14
by Adriweb
exact, je viens de tester sur un 84+