π
<-
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 266 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
LephePartner
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 32.4%
 
Posts: 253
Joined: 15 Jun 2018, 19:53
Gender: Male

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

Unread postby Adriweb » 06 Oct 2019, 07:30

Beau travail, félicitations!
User avatar
AdriwebAdmin.
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 52%
 
Posts: 12681
Images: 1081
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
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 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 61%
 
Posts: 664
Images: 20
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):

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
LephePartner
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 32.4%
 
Posts: 253
Joined: 15 Jun 2018, 19:53
Gender: Male

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 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Level up: 61%
 
Posts: 664
Images: 20
Joined: 14 Sep 2011, 12:29
Gender: Male
Calculator(s):

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
LephePartner
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 32.4%
 
Posts: 253
Joined: 15 Jun 2018, 19:53
Gender: Male

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 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Level up: 99.9%
 
Posts: 34101
Images: 8836
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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 18: DC (Deus ex Calculatorum)
Niveau 18: DC (Deus ex Calculatorum)
Level up: 99.9%
 
Posts: 34101
Images: 8836
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

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
ZocipalPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 34%
 
Posts: 82
Joined: 12 Sep 2019, 20:15
Location: Hauts-de-France
Gender: Male
Calculator(s):
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
LephePartner
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 32.4%
 
Posts: 253
Joined: 15 Jun 2018, 19:53
Gender: Male

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 1 guest

-
Search
-
Featured topics
Concours TI-Planet-Casio de rentrée 2019. 3 défis pour plus d'une 15aine de calculatrices graphiques et nombre de goodies sortant de l'ordinaire ! :D
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

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 
-
Stats.
591 utilisateurs:
>484 invités
>101 membres
>6 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)