Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Syntaxe incorrect graph 35+


arnaud5933 Invité

Syntaxe incorrect graph 35+

Posté le 12/01/2023 22:53

Bonsoir,

je suis en train d'essayer de faire un logiciel de hasard sur ma Casio graph 35+ c'est mon premier essai et systématiquement j'ai une erreur de syntaxe quelqu'un pourrait-il m'aider s'il vous plaît.

Voici le code :

DIM NAMES(1 TO 27) AS STRING
NAMES(1) = "ACTEURDESABYSSES"
NAMES(2) = "ARTISANESORCIERE"
NAMES(3) = "BATOSUSHI"
NAMES(4) = "CHEVALIERGEMME"
NAMES(5) = "CLAIR DE LUNE"
NAMES(6) = "DDD"
NAMES(7) = "FARSTAR"
NAMES(8) = "FLEUR"
NAMES(9) = "FOSSILE"
NAMES(10) = "GHOTI"
NAMES(11) = "HARPIE"
NAMES(12) = "IGNISTER"
NAMES(13) = "INFINI TRAIN"
NAMES(14) = "LYRILUSC"
NAMES(15) = "MATHMECH"
NAMES(16) = "MUSIQUE"
NAMES(17) = "PELUCHIMAL"
NAMES(18) = "PATROLL"
NAMES(19) = "PREDAPLANT"
NAMES(20) = "PRINCESSE DE LA PREDICTION"
NAMES(21) = "PROFONDEUR"
NAMES(22) = "RAIDRAPTOR"
NAMES(23) = "RIKKA"
NAMES(24) = "ROUAGES ANCIENTS"
NAMES(25) = "SOLFACCORD"
NAMES(26) = "SORCIEREVENT"
NAMES(27) = "SUPER QUANTIQUE"

RANDOMIZE TIMER
RANDOM_NAME = NAMES(INT(RND * 27) + 1)
PRINT RANDOM_NAME


Lephenixnoir En ligne Administrateur Points: 22876 Défis: 149 Message

Citer : Posté le 12/01/2023 23:04 | #


Je ne sais pas quelle implémentation de Basic tu utilises habituellement, mais sur la calculatrice l'implémentation diffère pas mal et tu as plusieurs problèmes qui t'attendent ; un peu de syntaxe (à la limite, rien de bien violent) et surtout le fait qu'il n'y a pas de listes de chaînes de caractères, que de valeurs numériques. Comme tes chaînes sont assez longues et la liste complète fait 275 caractères, tu ne peux pas non plus directement stocker la concaténation dans une unique chaîne (il y a une limite de 256). Au pire, tu peux toujours faire du...

"ACTEURDESABYSSESARTISANESORCIEREBATOSUSHICHEVALIERGEMMECLAIR DE LUNEDDDFARSTARFLEURFOSSILEGHOTIHARPIEIGNISTERINFINI TRAINLYRILUSC"→Str 1
"MATHMECHMUSIQUEPELUCHIMALPATROLLPREDAPLANTPRINCESSE DE LA PREDICTIONPROFONDEURRAIDRAPTORRIKKAROUAGES ANCIENTSSOLFACCORDSORCIEREVENTSUPER QUANTIQUE"→Str 2
{0, 16, 32, 41, 55, 68, 71, 78, 83, 90, 95, 101, 109, 121, 129}→List 1
{0, 8, 15, 25, 32, 42, 68, 78, 88, 93, 109, 119, 131, 146}→List 2

Et ensuite pour récupérer la chaîne à la position 0≤P<27 dans Str 3 :

P<14⇒StrMid(Str 1,List 1[P],List 1[P+1]-List 1[P])→Str 3
P≥14⇒StrMid(Str 2,List 2[P],List 2[P+1]-List 2[P])→Str 3

ie. garder la concaténation et ensuite séparer via du slicing indiqué par les listes. Yup, c'est bourrin. (Disclaimer : c'est de tête je n'ai pas testé sur machine.)


arnaud5933 Invité

Citer : Posté le 12/01/2023 23:18 | #


Merci de ta réponse

ce n'est pas mon code j'ai utilisé chat gpt qui me la d'abord générer en Python puis je lui est demander une traduction pour en basic casio qui apparemment ne correspond pas.

je n'y connais absolument rien en codage donc je t'avoue que je suis perdue

mon objectif de base c'est de faire un programme d'aléatoire

je peux essayer de réduire le nombre de caractère s'il faut
Mb88 En ligne Labélisateur Points: 537 Défis: 0 Message
Lephenixnoir En ligne Administrateur Points: 22876 Défis: 149 Message

Citer : Posté le 12/01/2023 23:22 | #


Honnêtement si tu veux programmer c'est sûr que Python c'est mieux... c'est compliqué pour installer Python sur ta calculatrice mais probablement possible si jamais on n'y arrive pas en Basic.

Et du coup, ton programme d'aléatoire, tu peux préciser ce que tu veux faire avec ?


arnaud5933 Invité

Citer : Posté le 12/01/2023 23:30 | #


Tu veux dire que c'est envisageable de mettre python sur une casio ?

Je joue à un jeu de carte (yu-gi-oh) j'ai 27 deck et mon pote 23 on aimerais faire un petit programme qui nous donne de façon aléatoire le nom des deck que nous allons utiliser.
Mb88 En ligne Labélisateur Points: 537 Défis: 0 Message
Chere Hors ligne Membre Points: 1 Défis: 0 Message

Citer : Posté le 13/01/2023 20:53 | #


Bonsoir j'ai un soucis avec ma calcul Casio Graph 35+E II, je suis bloqué dans le menu et seulement certains menus comme Tableur marche mais peu d'autres...
Comment régler ce soucis ?
Srt_demon83 En ligne Membre Points: 78 Défis: 0 Message

Citer : Posté le 13/01/2023 20:58 | #


Essaie de faire un reset
Mais fais un autre topic pour ça
Petit tu es doué, très doué, mais tant que je serais là tu ne seras que le second
"Le temps passe sans s'arrêter mais rien ne se passe."
Sauf erreur je ne me trompe jamais
c'est tout moi qui est inventé
Acrocasio Hors ligne Membre Points: 461 Défis: 0 Message

Citer : Posté le 13/01/2023 21:18 | #


Bienvenue sur le site

Tu peux te présenter ici-> https://www.planet-casio.com/Fr/forums/topic17228-1-depuis-combien-dannees-etes-vous-sur-le-forum-forum-de-presentation.html

Et lire les règles du forum ici->https://www.planet-casio.com/Fr/forums/topic12618-1-charte-dutilisation-du-forum-cuf.html

T'inquiète pas, à ce jour je les ai même pas encore lues (ça fait un an que je suis ici )
Littéralement démon du chat

Jettez un œil à mon journal sur la FX 92+:Ici ici ici ici clique ici

Je soutient Planète Casio
Srt_demon83 En ligne Membre Points: 78 Défis: 0 Message

Citer : Posté le 13/01/2023 21:21 | #


Acrocasio a écrit :
Bienvenue sur le site

Tu peux te présenter ici-> https://www.planet-casio.com/Fr/forums/topic17228-1-depuis-combien-dannees-etes-vous-sur-le-forum-forum-de-presentation.html

Et lire les règles du forum ici->https://www.planet-casio.com/Fr/forums/topic12618-1-charte-dutilisation-du-forum-cuf.html

T'inquiète pas, à ce jour je les ai même pas encore lues (ça fait un an que je suis ici )

Dis, c'est pas dans le sujet là
Petit tu es doué, très doué, mais tant que je serais là tu ne seras que le second
"Le temps passe sans s'arrêter mais rien ne se passe."
Sauf erreur je ne me trompe jamais
c'est tout moi qui est inventé
Lephenixnoir En ligne Administrateur Points: 22876 Défis: 149 Message

Citer : Posté le 15/01/2023 16:15 | #


Arnaud5933 a écrit :
Tu veux dire que c'est envisageable de mettre python sur une casio ?

C'est possible si tu as une Graph 35+ USB, mais bon c'est long (il faut commencer par changer l'OS...) donc pas rentable si c'est juste pour un programme, à mon avis !

Je joue à un jeu de carte (yu-gi-oh) j'ai 27 deck et mon pote 23 on aimerais faire un petit programme qui nous donne de façon aléatoire le nom des deck que nous allons utiliser.

Ok, si c'est juste ça tu peux avoir un programme de ce style :

"DECK1,DECK2,DECK3,DECK4,..."→Str 1
{1}→List 1
For 1→I To StrLen(Str 1)
StrCmp(StrMid(Str 1,I,1),",")=0⇒I+1→List 1[Dim List 1+1]
Next
StrLen(Str 1)+2→List 1[Dim List 1+1]

RanInt#(1,Dim List 1-1)→I
Locate 1,1,StrMid(Str 1,List 1[I],List 1[I+1]-List 1[I]-1)

Tu as juste à changer la chaîne de caractères sur la première ligne et tant que le total occupe moins de 255 caractères ça devrait aller tout seul.


nono59620 Invité

Citer : Posté le 15/01/2023 17:38 | #


bonjour,

j'ai une graph 35+ mais je sais pas si elle est compatible avec la manœuvre dans le doute évitons

"D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,D14,D15,D16,D17,D18,D19,D20,D21,D22,D23,D24,D25,D26,D27,D28,D29,D30,D31,D32,D33,D34,D35,"→Str 1
{1}→List 1
For 1→I To StrLen(Str 1)
StrCmp(StrMid(Str 1,I,1),",")=0⇒I+1→List 1[Dim List 1+1]
Next
StrLen(Str 1)+2→List 1[Dim List 1+1]

RanInt#(1,Dim List 1-1)→I
Locate 1,1,StrMid(Str 1,List 1,List 1[I+1]-List 1-1)

j'en suis a 360 caractère je vois pas trop comment réduire plus
Potter360 Hors ligne Rédacteur Points: 1146 Défis: 0 Message

Citer : Posté le 15/01/2023 18:03 | #


Non les 255 characteres c’est juste pour la première ligne.
Globalement, coder. Mal, mais coder.


nono59620 Invité

Citer : Posté le 15/01/2023 18:52 | #


Je viens de faire quelque essaie toujours "erreur de syntaxe"

J'ai remarqué dans vos formules la présence de flèches qui sont transformé en points d'interrogation quand je colle sur mon éditeur, l'erreur ne vient pas de là ?
Lephenixnoir En ligne Administrateur Points: 22876 Défis: 149 Message

Citer : Posté le 15/01/2023 19:28 | # | Fichier joint


Ah il faut taper à la main, ou alors je peux t'envoyer directement le fichier qui va bien (ci-joint).


nono59620 Invité

Citer : Posté le 17/01/2023 21:41 | #


Bonsoir,

Nickel ça fonctionne

est-ce vous arriveriez a m'expliquer comment faire le même genre de programme qui cette fois donne 2 noms sur 2 listes différentes j'aimerais apprendre
Lephenixnoir En ligne Administrateur Points: 22876 Défis: 149 Message

Citer : Posté le 17/01/2023 23:21 | #


Alors si tu veux apprendre un peu tranquillement à écrire/comprendre du code en Basic CASIO, tu peux regarder le tutoriel, qui est plus détaillé que ce qu'on pourra écrire sur un seul post (Mb88 l'a lié plus haut) : https://www.planet-casio.com/Fr/programmation

Sinon pour ce code, voilà comment il marche :

"DECK1,DECK2,DECK3,DECK4,..."→Str 1

On stocke tous les noms d'un bloc, séparés par des virgules, dans Str 1. Le but c'est donc de tirer un de ces noms au hasard.

La chaîne de caractères Str 1 est découpée par des virgules mais c'est dans l'esprit. Il n'y a pas une fonction tout prête pour récupérer "un segment entre deux virgules", donc on commence par se faire une liste des positions dans la chaîne où les noms des decks sont coupés.

Essentiellement, on va mettre dans la liste les indices de tous les ^ ci-dessous :

DECK1,DECK2,DECK3,DECK4
^     ^     ^     ^     ^

On peut voir que les ^ sont positionnés ainsi : un au début, un après chaque virgule, et un après la fin de la chaîne.

{1}→List 1

Ça c'est le premier au début (les positions dans la chaîne commencent à 1).

For 1→I To StrLen(Str 1)
StrCmp(StrMid(Str 1,I,1),",")=0⇒I+1→List 1[Dim List 1+1]
Next

Ensuite on parcourt la chaîne pour trouver toutes les virgules. StrMid(Str 1,I,1) extrait le caractère à la position I, et on le compare à une virgule avec StrCmp() (qui renvoie 0 en cas d'égalité). Si c'est bien une virgule, alors on ajoute à la liste la position qui suit la virgule. (Le cache un test conditionnel.)

StrLen(Str 1)+2→List 1[Dim List 1+1]

Et enfin on ajoute la position après la fin de la chaîne.

Ainsi, pour extraire le i-ème nom de deck, il suffit de récupérer la section de Str 1 qui commence au i-ème ^ et va jusqu'au suivant (moins 1 caractère).

On génère donc un nombre aléatoire entre 1 et le nombre de decks :

RanInt#(1,Dim List 1-1)→I

Et ensuite on récupère la section concernée de la chaîne avec StrMid(), qu'on affiche à l'écran avec Locate :

Locate 1,1,StrMid(Str 1,List 1[I],List 1[I+1]-List 1[I]-1)

Voilà voilà, c'est un peu bourrin mais c'est l'idée générale

Pour tirer un deuxième deck tu peux donc, à la limite, copier tout le code dans un autre fichier et changer le texte ; ou si tu veux faire un peu plus propre, mettre une autre liste dans Str 2, refaire la génération de la liste à partir de Str 2, et refaire le tirage aléatoire.

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 v42 © créé par Neuronix et Muelsaco 2004 - 2023 | 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