Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La référence Basic Casio

Nom : Goto

Localisation :

[ PRGM ] [ JUMP ]
[ SHIFT ] + [ VARS ] + [ F3 ]

Syntaxe de la fonction :

Goto (nom du Lbl : 0 à 9, A à Z, r, [TETA])

Description de la fonction :

Permet de revenir ou sauter vers un Lbl dans un prog.
N'est pas conçu pour créer des boucles. Pour cela utiliser les fonction Do-LpWhile ou While-WhileEnd.
Les labels sont à éviter autant que possible, ils sont lents et peuvent provoquer des bugs dans l'exécution du programme.

Compatibilité :

  • Graph 20/25(+)
  • Graph 35/65/80(+)
  • Graph 100(+)
  • Graph 25+ PRO
  • Graph 85 (SD) OS 1.xx
  • Graph 85 (SD) OS 2.xx
  • Graph 35+ USB/75/95 SD
  • Graph OS 2.04
  • Fx-CG 10/20 OS 1.xx
  • Fx-CG 10/20 OS 2.xx


<<< Retourner à la liste des fonctions

Pages: Précédente | 1, 2, 3

LephenixnoirEn ligneAdministrateurPoints: 21005 Défis: 143 Message
Posté le 10-07-2016 à 17:13 | #
Pour ce que je peux en dire, j'ai déjà fait fonctionner des Goto sur un programme de plus de 10000 octets.
DrakHors ligneRédacteurPoints: 1925 Défis: 40 Message
Posté le 10-07-2016 à 19:00 | #
Ah, bon...
En tous les cas, il est préférable de limiter l'utilisation des labels au strict nécessaire et de préférer l'emploi de boucles, etc. Le Lbl peut paraître très utile et on a tendance à trop l'exploiter quand on commence la programmation en basic
ThebigbadboyHors ligneMembrePoints: 249 Défis: 12 Message
Posté le 16-06-2020 à 20:29 | #
J'écris ici ce que je viens de découvrir (peut-être que qqn le sait déjà, mais en cherchant sur le site je n'ai rien vu de tel).
Tout d'abord, j'utilise un menu (donc aussi des goto et lbl) dans un prog de 6000 octets env. Et lorsque je faisait un saut du début jusqu'à la fin du prog, il y avait une erreur dimension (même erreur que si le goto ne correspond à aucun lbl) sur Graph 75 ... Après des heures et des heures de recherches, je n'ai trouvé aucune incohérence au niveau du prog (pas de "IfEnd" oublié etc). J' ai commencé à décortiquer mon code, et j'ai finalement trouvé la raison de l'erreur ! En fait, toute sorte de boucles, conditions et autres ne doivent pas avoir en condition des des objets null (comme des listes par exemple). Ce code devrait vous éclairer :

ClrList 5↲
Goto 1↲
For 1→X To Dim List 5↲
Next↲
Lbl 1

Si vous essayez ce petit code, vous obtiendrez aussi une erreur (dimension). Tandis que si vous remplacez la première ligne par "{0}→List 5↲", celui-ci fonctionnera à merveille ! Il m'a fallu un temps dingue pour trouver ça, alors j'espère vous avoir fait plaisir grâce à ce partage !
Par contre, je ne comprends pas pourquoi Casio a fait ça.... Allez savoir
LephenixnoirEn ligneAdministrateurPoints: 21005 Défis: 143 Message
Posté le 16-06-2020 à 20:49 | #
Je ne crois pas que ce soit lié à Goto ; toutes les opérations sur les listes sont des Erreur Dimension si la liste est vide. Une technique classique pour ça d'ailleurs est de nommer les listes, un TDM en parle je crois. Le ClrList+Dim suffit pour reproduire l'erreur.
ThebigbadboyHors ligneMembrePoints: 249 Défis: 12 Message
Posté le 16-06-2020 à 21:02 | #
Si si je suis absolument sûr que c'est à cause de Goto, j'ai juste oublié une ligne de code dans le message d'avant pour bien le prouver (désolé ^^') :
ClrList 5↲
Goto 1↲
{0}→List 5↲
For 1→X To Dim List 5↲
Next↲
Lbl 1

Ce code ne fonctionne pas en exécutant "Goto 1", mais fonctionne lorsque vous l'enlevez (ou si vous remplacez la première ligne par "{0}→List 5", il faut que la liste ne soit pas nulle avant de lire le Goto). Donc je pense très sincèrement que c'est la faute du Goto
LephenixnoirEn ligneAdministrateurPoints: 21005 Défis: 143 Message
Posté le 16-06-2020 à 21:06 | #
Wow, intéressant. Je savais que quand tu sautes par-dessus du code il le lit de façon non triviale mais ça c'est nouveau.

Essaie pour voir si tu remplaces Goto 1/Lbl 1 par If 0/IfEnd ?
ThebigbadboyHors ligneMembrePoints: 249 Défis: 12 Message
Posté le 16-06-2020 à 21:06 | #
Et l'erreur dimension met le curseur sur le "Goto 1"
ThebigbadboyHors ligneMembrePoints: 249 Défis: 12 Message
Posté le 16-06-2020 à 21:10 | #
Aucune erreur avec le "If 0 / IfEnd" le programme fonctionne. Donc au final, je ne pense pas qu'il y ait de réelle limite de taille de programme pour les Goto (par contre désolé, mais je n'arrive pas à éditer mon message, il n'y a pas le petit bouton... )
ThebigbadboyHors ligneMembrePoints: 249 Défis: 12 Message
Posté le 29-06-2020 à 19:30 | #
J'ai finalement testé avec d'autres exemples, pour voir si d'autres choses pourraient provoquer ce genre d'erreur non-voulue : il s'avère que de cette manière-là il n'y a que dans une fonction For que cela pose problème (donc aucun problème si on écrit "Dim List 5" dans une condition, un Do/LpWhile ou encore dans While/While-end).
En tout cas, c'est très étrange d'avoir un problème aussi précis

Pages: Précédente | 1, 2, 3

Retour liste des commandes

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 79 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