π
<-
Chat plein-écran
[^]

Outils communautaires de programmation fx-92 SC+

:fxesp32b: :fxesp32n: :fxesp32v:

Outils communautaires de programmation fx-92 SC+

Unread postby Lephe » 06 Oct 2019, 01:29

La fx-92 Scientifique Collège+ possède un menu Algorithmique fort sympathique pour programmer dans un style Scratch. Cependant le seul moyen de tester des programmes avec est de les entrer à la main dans une fx-92 SC+ ou son émulateur, avec le risque de tout gâcher en appuyant par malheur sur ON. Ce n'est pas très pratique.

Plusieurs outils se sont donc présentés pour pallier à ces difficultés :


---

Pour la partie qui me concerne (l'interpréteur indépendant), ça se joue sur PC avec Python et le module PySDL2. Le programme peut lire des URLs wes.casio.com et de l'hexa, mais aussi des scripts textuels avec une syntaxe simple. Voici un des programmes de test, par exemple :

Code: Select all
setvar 0, A

repeat 6
  goto -35,16-7A
  pendown
  goto x+3A+3,y+5
  penup
  goto x+A+3,y
  pendown
  goto x-3A-3,y-5
  penup
  setvar A+1, A
repeat_end

line-patterns.png
line-patterns.png (6.32 KiB) Viewed 4336 times


Pour ce qui est des fonctionnalités, je supporte quasiment toutes les constructions du menu Algorithmique (il manque juste quelques I/O) et une bonne partie des expressions que l'on peut taper sur la calculatrice. Une liste détaillée se trouve sur le dépôt.

À cause du format de nombre qui est différent de celui de la fx-92 (flottant versus décimal), on pourrait s'attendre à des surprises, mais en pratique ça marche très bien car les scripts ne sont pas assez violents pour que les différences ne se voient. :D

Merci au passage à Pavel qui n'a pas attendu pour envoyer une PR! o/
Last edited by Lephe on 12 Oct 2019, 18:02, edited 3 times in total.
User avatar
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 67.7%
 
Posts: 386
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Re: Interpréteur fx-92 SC+ pour PC

Unread postby Adriweb » 06 Oct 2019, 07:30

Beau travail, félicitations!
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 80.3%
 
Posts: 14617
Images: 1218
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: Interpréteur fx-92 SC+ pour PC

Unread postby grosged » 06 Oct 2019, 09:33

Très belle initiative !

A propos du fichier txt contenant l'url casio, doit-il être enregistré d'une certaine façon (utf8 ou autre ...) ?
Je demande ça car j'ai ces messages d'erreur :

Code: Select all
sh-4.4# python3 fx92.py -u url.txt
[urlparser] URL includes protocol, will start after '+E-'
[lexer] Unknown opcode 0x2e
[lexer] Unknown opcode 0x2e
[lexer] Unknown opcode 0x2e
[lexer] Unknown opcode 0x2e
[lexer] Unknown opcode 0x2e
[lexer] Unknown opcode 0x2e
[urlparser] Expected one of ['CONST'], got FUN (at token 445)
Traceback (most recent call last):
  File "fx92.py", line 111, in <module>
    sys.exit(main())
  File "fx92.py", line 93, in main
    ast = parser.parse_program()
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 54, in parse_program
    return self.program()
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 90, in program
    stmt = self.stmt(optional=True)
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 99, in stmt
    st = self.stmt2(optional=optional)
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 146, in stmt2
    prg = self.program()
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 90, in program
    stmt = self.stmt(optional=True)
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 99, in stmt
    st = self.stmt2(optional=optional)
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 117, in stmt2
    return Node(N.FORWARD, self.arg())
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 178, in arg
    e = self.expr()
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 191, in expr
    f = [self.factor()]
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 205, in factor
    atom = self.atom()
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 222, in atom
    factors.append(self.const())
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 254, in const
    const = self.expect(T.CONST).args[0]
  File "/mnt/mmcblk0p1/fx92-interpreter/fx92/parser.py", line 79, in expect
    raise Exception("Syntax error: " + err)
Exception: Syntax error: Expected one of ['CONST'], got FUN (at token 445)
sh-4.4#

(testé sous puppy linux)
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Interpréteur fx-92 SC+ pour PC

Unread postby Lephe » 06 Oct 2019, 09:59

Ah, désolé, c'est un problème dans ma grammaire. La syntaxe avec la multiplication implicite est un peu casse-pieds, et j'ai oublié les cas de la forme `+f(x)` ou `-f(x)` quand j'ai écrit le parser. ^_^"

Au passage il y a des virgules à des endroits où le lexer ne les comprend pas encore -- normalement il ne doit y en avoir que dans des constantes. Si tu en as ailleurs, je veux bien un exemple de ligne pour améliorer ça. ;)

J'ai poussé un nouveau commit avec une correction et un test unitaire pour le problème de syntaxe.
User avatar
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 67.7%
 
Posts: 386
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Re: Interpréteur fx-92 SC+ pour PC

Unread postby grosged » 06 Oct 2019, 10:18

En effet, la fx-92 SC+ accepte de drôles de syntaxes. :p

On peut, par exemple, respectectivement affecter les valeurs 0 0,1 et 1 de cette manière :

Code: Select all
,→A
,1→A
1,→A
User avatar
grosgedVIP++
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 30.2%
 
Posts: 770
Images: 75
Joined: 14 Sep 2011, 12:29
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: Interpréteur fx-92 SC+ pour PC

Unread postby Lephe » 06 Oct 2019, 10:51

Je vois ! J'ai modifié la détection de constantes pour autoriser tout ça. Le code commence à être un peu moche, je referai une passe plus tard. En tous cas c'est poussé ^^

J'ai un test unitaire pour la version texte et j'en ajouterai un également pour la version Bitcode, que j'ai testée à la main. :)
User avatar
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 67.7%
 
Posts: 386
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Re: Interpréteur fx-92 SC+ pour PC

Unread postby critor » 07 Oct 2019, 18:13

Merci.

Le dernier participant utilise le PGCD, dont le token est actuellement commenté dans le lexer :
https://gitea.planet-casio.com/Lephenix ... 2/lexer.py

Et donc on a besoin aussi du séparateur de paramètres, qui est ; sur ce modèle.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.6%
 
Posts: 41501
Images: 14719
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Interpréteur fx-92 SC+ pour PC

Unread postby critor » 08 Oct 2019, 11:17

Il faudrait également l'opérateur puissance ^ nouvellement utilisé dans la dernière participation reçue.

Merci.
Image
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 42.6%
 
Posts: 41501
Images: 14719
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
MyCalcs profile
YouTube: critor3000
Twitter: critor2000
GitHub: critor

Re: Interpréteur fx-92 SC+ pour PC

Unread postby Zocipal » 08 Oct 2019, 19:33

Bonsoir,
J'ai toujours SDL is not defined...
Pourtant j'utilise un des scripts de test fourni.
Une idée ?
Merci d'avance,
Image
User avatar
ZocipalProgrammeur
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 60.7%
 
Posts: 113
Joined: 12 Sep 2019, 20:15
Location: Hauts-de-France
Gender: Male
Calculator(s):
MyCalcs profile
Class: 1ère Maths Physique NSI

Re: Interpréteur fx-92 SC+ pour PC

Unread postby Lephe » 08 Oct 2019, 21:33

Voilà Critor, j'ai ajouté les PGCD, PPCM, et puissances (hexa seulement pour les puissances).

J'ai toujours SDL is not defined...

Quel est le message d'erreur complet ? Peut-être que tu n'as pas le module SDL pour Python que j'utilise, ou qu'il y a une erreur d'import dans le code qui ne se voit pas chez moi. ^^
User avatar
LephePartenaire
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Level up: 67.7%
 
Posts: 386
Joined: 15 Jun 2018, 19:53
Gender: Male
Calculator(s):
MyCalcs profile

Next

Return to Casio (fx-82/83/85/92/95/115/300/350/500/570/991, Collège)

Who is online

Users browsing this forum: No registered users and 28 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1707 utilisateurs:
>1697 invités
>5 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)