Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Autres questions


Index du Forum » Autres questions » [aide] Pourquoi les goto peuvent donner une erreur dimension
Alesclar Hors ligne Membre Points: 64 Défis: 0 Message

[aide] Pourquoi les goto peuvent donner une erreur dimension

Posté le 01/04/2017 10:45

Si P=1, ce code (qui ne sert à rien) s'exécute normalement, mais si P=2, on obtient une erreur de dimension. Comment est-ce possible?

Lbl0
(menu)
ClearMatB
P=1⇒GotoA
P=2⇒GotoB
LblA
{3,2→DimMatB
2→MatB[1,1
Do
For 1→P To MatB[1,1]
MatB[1+P,1→A
MatB[1+P,2→B
Next
LpWhile (condition)
Goto0
LblB
...
Goto0




Cakeisalie5 Hors ligne Ancien administrateur Points: 1964 Défis: 11 Message

Citer : Posté le 01/04/2017 12:16 | #


Le programme est peut-être trop grand. Comme le dit Drak sur la page dédiée au Goto et ses commentaires :

Drak a écrit :
Après plusieurs essais, il me semble que le Goto dysfonctionne à partir d'une certaine taille de programme.
Sur ma 35+ USB, lorsque j'ai rajouté des éléments dans un programme, qui avait dépassé la barre de 5000 octets, les labels ne fonctionnaient plus. Avant, je n'avais pas de problème.

Initialement, je pensais que la distance entre le Goto et le Label correspondant causait les erreurs, mais il me semble que c'est en réalité à partir d'une certaine TAILLE de programme que des erreurs peuvent être rencontrées. À creuser.


Cela dit, je te conseille d'utiliser des boucles à la place, ou de créer des sous-programmes.
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Alesclar Hors ligne Membre Points: 64 Défis: 0 Message

Citer : Posté le 01/04/2017 20:58 | #


Salut Cakeisalie5!
Effectivement ça buggue de malade et c'est un très gros programme. J'ai essayé de remplacer les goto par une suite de conditions, du style

if mode1
then...
ifend
if mode2
then...
ifend
if mode3
then...
ifend
Goto (menu)

et ça m'a donné une erreur de syntaxe au premier mode alors qu'en enlevant la condition "if mode1"j'ai zéro bug. Je suis un peu bloqué je pense que je fais créer un sous-programme par mode, mais c'est embêtant pour revenir au programme principal
Cakeisalie5 Hors ligne Ancien administrateur Points: 1964 Défis: 11 Message

Citer : Posté le 01/04/2017 23:25 | #


Je ne comprends pas ton exemple. Qu'est-ce que "mode1" est sensé représenter ?
If requiert une condition, donc par exemple If A=1:Then. Est-ce ce qui se cache derrière "mode1" ?
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Alesclar Hors ligne Membre Points: 64 Défis: 0 Message

Citer : Posté le 03/04/2017 12:55 | #


c'est simplement un mode d'un jeu qui tourne parfaitement, sans bug. En gros on sélectionne via un menu un mode, et ensuite le programme exécute le bout de code correspondant. Sauf que si ce code est très long, ça met une erreur de syntaxe
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 03/04/2017 15:17 | #


Ça c'est une limitation bien connue des labels : si le saut est trop grand, pouf erreur.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Alesclar Hors ligne Membre Points: 64 Défis: 0 Message

Citer : Posté le 07/04/2017 13:12 | #


Merci beaucoup! De toute façon j'aime pas les goto... Au pire je peux toujours mettre chaque mode dans un sous-programme

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 240 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