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 » [Programme] Lbl sur les Menus
Pommy Hors ligne Membre Points: 42 Défis: 0 Message

[Programme] Lbl sur les Menus

Posté le 24/10/2016 20:10

Bonjour !

Pour créer mon programme, j'ai donc décidé d'utiliser la fonction " Menu ", que je trouve assez pratique. Mon programme étant assez long, il y a plus de 9 Lbl. Donc quand je rentre par exemple,

" Menu " Blablabla ","Choix 1",10,"Choix 2",11,"Choix 3",12 "

et bien une fois le programme lancé, si je fais le choix 1, 2 ou 3, ça me met une erreur, et j'ai vu quelque part qu'on ne pouvait à priori pas rentrer des valeurs supérieurs à 9. On peut toujours rentrer les lettre de A à Z, mais c'est pareil, il y aura forcément plus de 26 Lbl dans mon programme, donc ça n'ira pas.

Connaissez vous une solution pour régler ça ? Merci d'avance


Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 24/10/2016 20:45 | #


La fonction Menu ne tolère pas plus de 9 choix.
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Pommy Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 24/10/2016 21:24 | #


Oui je sais, mais je parle des labbels qu'on associe à ces choix, par exemple si je rentre met un label > 9, ça me fait une erreur
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 24/10/2016 21:38 | #


De mémoire tu as le droit aux labels 0 à 9, A à Z, θ et r, et peut-être quelques autres. Mais ça tourne autour de 40 grand max, on peut pas en mettre à l'infini.

Il n'y a pas de solution triviale à implémenter et jolie en même temps, mais tu peux toujours combiner des Lbl auxquels tu saute manuellement en ajoutant un paramètre. Par exemple, en stockant une valeur additionnelle disons, dans la variable A :
Lbl 1
If A=1
Then // du code 1....
Else If A=2
Then // du code 2...
IfEnd
IfEnd

Et ensuite, pour sauter au code que tu veux, tu modifies le paramètre A avant le saut :
1→A
Goto 1 // saute vers le code 1
2→A
Goto 1 // saute vers le code 2

C'est loin d'être excellent cependant. Si ton programme est suffisamment gros pour que tu aies besoin de tant de points de saut, je te conseillerais plutôt d'écrire des sous-programmes.
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Pommy Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 24/10/2016 21:59 | #


M'ouais, je trouve pas ça hyper propre. Quand tu parles de sous programme tu veux dire que dans un programme, il y a possibilité de créer des " sous-programmes " ? Comment on fais ?
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 24/10/2016 22:19 | #


En fait c'est un autre programme... la fonction Prog permet de lancer un autre programme ; lorsque le sous-programme s'arrête, l'exécution reprend après l'instruction Prog (chose rare ; c'est quelque chose qui manque cruellement au Basic Casio, à savoir les fonctions).

Tu peux regarder la doc, mais la description qu'on y trouve est assez décevante é_é
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Pommy Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 24/10/2016 22:46 | #


Après si je fais des programmes un peu partout ma liste de programme va rapidement devenir un fouilli... :/ Je vais voir ce que je peux faire...
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 24/10/2016 22:51 | #


C'est le problème des sous-programmes... c'est toujours un peu compliqué pour s'organiser. Ils auraient pu ajouter des fonctions quand même...
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Fabcvlr Hors ligne Membre Points: 2269 Défis: 41 Message

Citer : Posté le 25/10/2016 10:53 | #


Ma solution est d'imbriquer plusieurs Menus les uns à la suite des autres en affichant page suivante à la fin de chaque Menu et un Retour à la fin du dernier pour revenir au début du programme. C'est la méthode que je viens d'employer dans mon programme Surfaces-Volumes qui n'est pas encore terminé. Un maximum de Lbl !!!
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 !
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 25/10/2016 13:45 | #


Cette solution permet en effet de pallier la limite d'entrées de la fonction Menu, mais elle ne résout pas la limitation en nombre de labels... ^^'
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Pommy Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 25/10/2016 14:22 | #


Oui, puis le nombre de choix dans mes menus ne dépasse pas 9 (le maximum est justement 9 et c'est uniquement dans le tout premier menu). Donc je vais m'organiser comme ça je pense :

S.TRIANG
Lbl 0
Accueil◢
Goto Z
Lbl Z
Menu
1 Pythagore -> Prog " ~~~~01~A "
2 Thalès -> Prog " ~~~~01~B "
3 Trigonométrie -> Prog " ~~~~01~C "
4 ... -> Prog " ~~~~01~D "
5 ... -> Prog " ~~~~01~E "
6 ... -> Prog " ~~~~01~F "
7 ... -> Prog " ~~~~01~G "
8 Mode d'emploi -> Goto 1
9 Retour -> Goto 0
Lbl 1
Menu
1 Mode d'emploi Comment bien utiliser le programme, comprendre les différentes parties, etc -> Goto 2
2 Vocabulaire Traductions de certaines abréviations, certaines évidentes comme " pts " = " points ", mais d'autres qu'on peut chercher (il y aura des abréviations car des fois je n'ai pas tout le temps la place pour faire tenir un texte) -> Goto 3
3 Retour -> Goto Z
Lbl 2
Contenu du mode d'emploi
Goto Z
Lbl 3
Contenu du vocabulaire
Goto Z

~~~~01~A 01 = Premier programme qui utilise ce système de sous-programmes, A = 1ère partie du programme, à savoir Pythagore. Les vaguelettes ne veulent rien dire, c'est juste pour reconnaitre les programmes et qu'ils sois classés dernier par ordre alphabétique dans ma liste, pour pas les voir et pas faire brouillon.

Lbl 1
Contenu du Lbl 1, puis après j'utiliserais les Lbl de A à Z, et si il faut, r, et θ.

Ajouté le 25/10/2016 à 14:42 :
D'ailleurs est ce que vous savez si, quand je met " Prog... " c'est possible, d'en plus de rediriger vers le programme, de le rediriger vers un label précis de ce programme. Si oui comment on fait ?
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 25/10/2016 17:46 | #


Le premier Goto Z est inutile, l'exécution lit linéairement le programme. Tu ne peux pas utiliser Prog comme point de saut pour la fonction menu, seul un label est acceptable. Il faut donc à chaque fois, ajouter un label qui donne sur une instruction Prog, suivie d'un Goto Z.

Voilà une combinaison qui se vaut ; c'est un peu lourd, mais il n'y a pas vraiment moyen de faire autrement. Non, tu ne peux pas indiquer à Prog de sauter à un label connu à ma connaissance. Encore une fois, tu ne peux qu'utiliser une variable pour passer un paramètre, mais le Goto se comporte mal...
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Pommy Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 25/10/2016 18:02 | #


Ah oui, je me suis trompé dans le code que j'ai écris, à chaque fois je redirige vers un Lbl qui contient uniquement la fonction Prog. Sinon dommage, je vais devoir faire avec :/
Lephenixnoir Hors ligne Administrateur Points: 24145 Défis: 170 Message

Citer : Posté le 25/10/2016 18:14 | #


Quand je regarde ton plan, je pense qu'on peut faire mieux ; il faudrait profiter du fait que les sous-programmes offrent de nouveau une quarantaine de labels et les laisser gérer leurs propres menus. L'idée serait plutôt d'associer à chaque sous-programme un menu, et les entrées « simples » (c'est-à-dire, qui ne contiennent pas elle-mêmes de sous-menu), comme ceci :

Programme S.TRIANG
Menu
1 Pythagore v1 → Label local A (juste une description)
2 Pythagore v2 → Sous-programme 1 (contient un menu)
Label A
"AC² = AB² + BC²"

Sous-programme 1
Menu
1 Énoncé du théorème → Label local A (juste une description)
2 Conséquences géométriques → Label local B (juste une description)
3 Preuves du théorème → Sous-programme 1.1 (contient un menu avec plusieurs preuves)
Label A
"AC² = AB² + BC²"
Label B
"Trigonométrie (etc etc)"

Sous-programme 1.1
Menu
(etc etc)

Est-ce que c'est clair ?
Mon graphe (24 Mars): (gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)
Pommy Hors ligne Membre Points: 42 Défis: 0 Message

Citer : Posté le 25/10/2016 19:02 | #


C'est plus dur après pour s'y retrouver, je compte coder chaque " grande partie " sur un sous-programme, et après créer un programme (S.TRIANG) qui possède un menu où sont regroupés chaque grande partie, et pour du coup y acceder. D'ailleurs le contenu de Pythagore ne sera pas des explications mais déjà 4 parties (Théorème, Réciproque, Théorème dans un repère, Réciproque dans un repère) et après on choisis le côté qu'on souhaite calculer, on rentre les valeurs et on obtient le résultat. (pareil pour Thalès, etc) De plus, chaque grande partie ne dépassera à priori pas les 26 labels (A à Z), Pythagore devrais en contenir une quinzaine, etc.
Drak Hors ligne Rédacteur Points: 1925 Défis: 40 Message

Citer : Posté le 25/10/2016 19:08 | #


Voici un lien qui parle des goto/lbl. Si les labels posent trop de problèmes, tente d'en remplacer par des solution alternatives plus propre/rapide à l’exécution. Je te laisse lire le spoiler "éviter goto/lbl", tu pourrais peut-être avoir des pistes intéressantes.
Eon the Dragon : version 1.2
Let's have a look!
Marre de ces RPGs qui t'imposent des classes, des compétences et des sorts ? Crée tes propres capacités sur Eon the Dragon ! Des monstres, des dragons et des combats aussi épiques que difficiles t'attendent !
Un RPG unique et immense t'attend ! Joue dès maintenant à Aventura, le Royaume Poudingue !
Vous aussi, soyez swag et rejoignez Planète Casio !
Fabcvlr Hors ligne Membre Points: 2269 Défis: 41 Message

Citer : Posté le 26/10/2016 08:46 | #


Autant de Menus pour un simple prog sur Pythagore ? Je t'invite à jeter un œil sur mon programme trigonométrie. ça te donnera peut être des idées qui sait ?
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 !

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 102 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