Posté le 13/12/2017 20:13
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 201 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
Citer : Posté le 13/12/2017 20:54 | #
Il n'y a pas de façon satisfaisante de résoudre ce problème à ma connaissance. Voilà quelques pistes sur ce qui se fait habituellement :
- Utiliser des noms spéciaux pour les sous-programmes, quelque chose qui commence par ., ou bien mettre une espace au début du nom du programme principal, pour influencer le tri. Peu subtil mais concluant en pratique.
- Utiliser des Goto/Lbl pour simuler des fonctions. C'est le seul cas où je trouve justifié de s'en servir ; malheureusement, il n'y aucun moyen de retourner à « l'endroit de l'appel » une fois la procédure terminée.
- Structurer le programme pour ne les appeler qu'une fois, et les intégrer à l'unique endroit où ils sont appelés.
J'ai peut-être oublié des astuces ; je n'ai rien implémenté en Basic depuis des lustres. Mais grosso modo, non, il n'y a rien qu'on puisse faire et auquel tu n'aies pas déjà pensé. (À ma connaissance, toujours.)
Citer : Posté le 13/12/2017 21:06 | #
Ouaip, mettre une tilde (~) au début des sous-programmes les fait trier à la fin, du coup tous les sous programmes seront après les programmes principaux.
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 14/12/2017 10:31 | #
Bonjour,
La tilde est une bonne idée, merci.
Le problème est (de taille) :Lorsque j'ai besoin de ce symbole dans un programme, j'appuie sur "Shift" et "alpha" puis "F3".
Si le veux renommer mes sous programmes, je n'ai pas accès à ce symbole de cette façon. Y a-t'il un autre moyen pour l'obtenir dans les noms de fichiers ?
J'ai trouvé comment l'écrire, mais cela ne change rien à l'ordre des programmes qui semblent être rangés dans l'ordre dans lequel ils ont été écrit dans la calculatrice !
A moins de le supprimer et de les réécrire, je ne vois pas comment faire.
Cordialement,
GUGUSSE.
Citer : Posté le 14/12/2017 15:05 | #
Les programmes sont triés par ordre lexicographique (ie. alphabétique) selon la table des caractères ASCII sur les machines récentes. Tu as peut-être un modèle différent, mais ça me surprendrait...
Citer : Posté le 14/12/2017 21:12 | #
Sur les anciennes Graph (G35+, 65, etc), les programmes ne sont pas triés par ordre alphabétique. Du coup l'astuce ne s'applique malheureusement pas…
Citer : Posté le 14/12/2017 21:58 | #
Une machine à état devrait être suffisante, non (ie. une boucle principale unique comprenant un switch géant portant sur une variable d'état que l'on modifie dans chaque case du switch, qui correspondent à des blocs d'instructions élémentaires) ?
On peut même imaginer que certains états ajoutent leur identifiant dans une pile, et que d'autres, correspondant à des "sous-programmes virtuels", viendraient dépiler pour retrouver les états qui les ont précédemment appelés.
La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
Citer : Posté le 14/12/2017 22:12 | #
Ça marcherait tout à fait, mais c'est une émulation pur et simple du système de sous-programmes qui existe déjà. Et tu es obligé d'introduire un nouvel « état » pour chaque ligne où tu appelles Prog, ce qui transforme les états qui auraient pu être des fonctions en des points d'entrée et des points de retour. (Un gros bordel potentiel, en somme.)
La pile est absolument nécessaire pour ça, heureusement les listes possèdent un append naturel en indexant sur la première case inexistante. Dépiler est peut-être plus subtil par contre.
Je suggère de bien réfléchir au papier avant d'implémenter une méthode avec ce niveau de complexité pour éviter de s'embrouiller sévèrement par la suite. Il y a aussi un petit bout de performance qui risque de partir, à voir si c'est gênant ou pas dans le contexte.
Citer : Posté le 17/12/2017 17:58 | # | Fichier joint
Merci à vous tous de vous être intéressé à mon problème.
Ne pouvant modifier l'ordre d'affichage dans la liste des programmes, j'ai essayé de n'avoir les programmes qu'une fois.
J'y suis allé petit à petit et j'ai galéré un peu pour faire une boucle deux fois dans l'un des trois cas.
Mais j'y suis parvenu. La solution à été de n'écrire qu'une fois la liste des joueurs et de conserver l'affichage à l'écran tout le temps que se déroule le programme !
Si cela intéresse, je joins la solution.
La somme des différents programmes occupait 1193 octets, le programme qui remplace tout cela "fait" 575 octets !
Cordialement,
GUGUSSE.