Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Discussions


Index du Forum » Discussions » try/execpt ou un equivalent malin
MactulHors ligneMembrePoints: 640 Défis: 0 Message

try/execpt ou un equivalent malin

Posté le 08/06/2019 19:45

pour un programme, j'aurais besoin de tester si une liste existe;
car si je lui demande "if list1[5]=0", si list1 est vide, ça crache.
donc il faudrait tester si il y a bien un "list1[5]"
j'ai une petite idée de contournement mais je ne sais pas là encore si cette commande existe :
(ma liste contient 12 éléments)
l'idée est de rajouter 12 éléments (des 234 par exemple) à la suite et de regarder si list1[12] est égale ou non à 234
ainsi je saurais si ma liste contenait au moins 12 éléments

Cette commande existe t-elle ?
si oui quelle est-elle ?

PS: @Sentaro, for C-Basic, you should add a "try / except"


LephenixnoirHors ligneAdministrateurPoints: 15492 Défis: 136 Message

Citer : Posté le 08/06/2019 19:55 | #


Il n'y a pas de try/except, et ce que tu proposes ne marchera pas bien parce que si List 1 n'existe pas ton programme va planter. Mais pour ton cas il existe une astuce.

"X"→List 1

Cela attribue un nom à la liste (que tu peux retrouver avec List 1[0]), mais surtout si la liste est vide ça la crée avec un 0 dans la première case. Sinon ça change juste le nom.

La technique serait donc d'avoir un nombre non nul dans la première case. Tu ne peux pas écrire List 1 si tu n'es pas sûr qu'elle existe, parce que si je la supprime le programme va planter, donc tu ne peux pas lire ce nombre directement.

Mais tu peux faire "X"→List 1 et ensuite regarder List 1[1]. Si c'est pas 0, c'est que la liste existait. Si c'est 0, c'est que la liste vient d'être créée. Bien sûr pour que ça marche il faut que ta sauvegarde ait toujours un nombre non nul en première position.
Sentaro21Hors ligneMembrePoints: 565 Défis: 0 Message

Citer : Posté le 09/06/2019 09:03 | #


@Mactul
Lephenixnoir's List test method works well in C.Basic.
Moreover,
You can use the following C.Basic extended command,
[OPTN]-[F2](MAT)-[F6]-[F5](SIZE)-[F4](ColSize(
ColSize(List 1)

If the return value is 0, it can be determined that it is not defined.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
MactulHors ligneMembrePoints: 640 Défis: 0 Message

Citer : Posté le 09/06/2019 13:29 | #


@Lephenixnoir
Merci beaucoup pour ta technique j’essayerai

@Sentaro 21
thank you very much, I think you should add a "try / except" in C-Basic like python, it is very convenient
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Et si vous voulez voir l'envers du décors des IA:
http://reseaux-neurones-a--z.ml/
Sentaro21Hors ligneMembrePoints: 565 Défis: 0 Message

Citer : Posté le 09/06/2019 13:49 | #


Okey.
I will consider whether it can be implemented.

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
KikoodxHors ligneMembrePoints: 1317 Défis: 7 Message

Citer : Posté le 09/06/2019 14:16 | #


I don't really see the point to implement except in C.Basic, I'm against I think people would make more dirty code ("oh if there is a error, who care, don't need to fix, just except").
LephenixnoirHors ligneAdministrateurPoints: 15492 Défis: 136 Message

Citer : Posté le 09/06/2019 15:18 | #


I kind of agree, it feels more natural to have functions that don't raise exceptions and return special values for border cases.
FabcvlrHors ligneMembrePoints: 2128 Défis: 41 Message

Citer : Posté le 11/06/2019 13:43 | #


Dans mes souvenirs, je crois qu'il y avait un truc avec le List1[0] qui permet de donner un nom à une liste. Ce truc permettait de savoir si une liste existait sans provoquer d'erreur dans un prog.
L'expérience des autres, c'est comme une chandelle que l'on tient allumée dans son dos par une nuit de tempête !
Shadow15510Hors ligneAdministrateurPoints: 3737 Défis: 15 Message

Citer : Posté le 11/06/2019 13:44 | #


C'est 'zactement ce que Lephe à dit d'ailleurs !
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Moral
   95%


Sentaro21Hors ligneMembrePoints: 565 Défis: 0 Message

Citer : Posté le 15/06/2019 08:34 | #


C.Basic has been updated.
https://www.planet-casio.com/Fr/forums/topic14738-12-c-basic-projets.html#165993
Instead of IsError(),
Added the exception handling commands Try-Except-TryEnd.

(example)
Try List 1        // Check the existence of List 1
Except           // Except with no argument corresponds to all errors.
  12->Dim List 1
TryEnd            // It is required at the end of the Try command.


Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
MactulHors ligneMembrePoints: 640 Défis: 0 Message

Citer : Posté le 17/06/2019 16:00 | #


VERY GOOD !!!
I love Sentaro21

I hope you will continue this wonderful project
Mes programmes
Cliquer pour enrouler

Venez me rejoindre sur mon nouveau serveur Discord dédié a la programmation sur toutes les plateformes
https://discord.gg/bzfymHQ

Et si vous voulez voir l'envers du décors des IA:
http://reseaux-neurones-a--z.ml/

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

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd