Seuls les membres ayant 30 points peuvent parler sur le chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » KhiCAS, add-in calcul formel pour Graph 90+e
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

KhiCAS, add-in calcul formel pour Graph 90+e

Posté le 15/07/2018 12:09

KhiCAS est le portage de Xcas pour Casio Graph 90+e. En résumé, il transforme la Graph 90+e en calculatrice CAS (ce qui en fait la calculatrice CAS la moins chère du marché). Avec en prime la possibilité de programmer en syntaxe Python dès maintenant:
Documentation
Ficher g3a
En raison des contraintes memoire des add-ins Casio, certaines fonctions de Xcas ne sont pas disponibles, mais les commandes utiles pour le lycée, les prépas scientifiques et la fac sont disponibles. Il n'y a pas non plus d'éditeur de script.


Pages : Précédente1, 2, 3Suivante
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 28/07/2018 21:20 | #


Donc il faudrait faire
Bfile_DeleteEntry

sur la conversion de
("\\\\fls0\\@REV2\\CLIP")

avant CLIP_Store?
Ca parait un peu etonnant, mais bon je vais essayer.
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 28/07/2018 21:34 | #


Non, c'est dans la mémoire principale, donc fls0 c'est presque certainement une erreur. La Prizm n'est pas mon terrain de prédilection, mais je parierai facilement qu'il faut utiliser les syscalls dédiés au MCS, lesquels sont assez compliqués. Désolé de ne pas pouvoir en dire plus.
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 28/07/2018 21:43 | #


J'ai essaye:

void delete_clipboard(){
  char filename[]="\\\\fls0\\@REV2\\CLIP";
  unsigned short pFile[MAX_FILENAME_SIZE+1];
  Bfile_StrToName_ncpy(pFile, filename, strlen(filename)+1);
  Bfile_DeleteEntry(pFile);
}  

mais ca ne marche pas. Je vais essayer
MCSDelVar2("@REV2","CLIP");


Ajouté le 29/07/2018 à 09:10 :
Ca n'efface pas, que je mette "@REV2" ou "REV2" en parametre pour le repertoire...

Ajouté le 29/07/2018 à 20:36 :
J'ai donc créé un clipboard interne a KhiCAS.
La version a jour de KhiCAS possede maintenant un editeur de programmes qui devrait suffire au niveau lycee/prepas (numerotation de lignes, coloration syntaxique, parenthese matching sur la meme ligne, copier-coller orienté lignes). C'est certainement l'environnement de programmation (compatible Python) le plus complet sur calculatrices de milieu de gamme a l'heure actuelle:
* tortue Logo pour debuter en programmation
* instructions graphiques pixelisees: set_pixel, draw_line, draw_rectangle, draw_polygon, draw_circle, draw_arc
* instructions graphiques repérées: plot, plotparam, plotpolar, plotcontour, plotfield, plotode, plotseq, plotlist, histogram, barplot, scatterplot, segment, circle, line, polygon
* commande debug pour executer un programme en pas a pas en visualisant l'evolution des variables locales, tres utile pour mettre au point
* fonctions mathematiques de Xcas couvrant les modules Python random, math, cmath, une bonne partie de numpy/scipy, avec en plus le calcul exact et symbolique.

Ajouté le 05/08/2018 à 21:38 :
Ajout d'un editeur de matrice (raccourci shift-MATR).
Ameliorations de l'editeur de programmes: fonction rechercher/remplacer et parenthese matching sur tout le texte source.

Ajouté le 07/08/2018 à 18:02 :
Ajouté dans le répertoire prog de l'archive https://www-fourier.ujf-grenoble.fr/~parisse/casio/khicasio.zip des énoncés de TP d'algorithmique de niveau seconde et des fichiers programmes associés (un TP utilise la tortue Logo de KhiCAS, les autres de l'algorithmique non graphique).

Ajouté le 31/08/2018 à 09:09 :
Mise a jour, corrections de bugs, filtrage pour pouvoir lire correctement les fichiers .py crees par l'editeur Python builtin du nouvel OS 3.20.

Ajouté le 04/09/2018 à 20:07 :
Mise a jour, corrections de bugs.
J'ai modifie les menus PROG (raccourcis shift-PROG) en mettant des le debut les mots-clefs pour creer tests/boucles et definition de fonction (ce dernier n'apparait pas me semble-t-il dans le menu Casio) et deplace plusieurs commandes du menu Graphiques (raccourci shift-SETUP) vers le menu Stats ou commandes de programmation (raccourci shift-OPTN), le menu Graphiques devient ainsi plus lisible en se limitant aux commandes de trace de graphes (fonction, parametrique, polaire, courbe de niveau, etc.)

Ajouté le 22/09/2018 à 14:42 :
Nouvelle mise a jour, encore pas mal de corrections de bugs.
Mais surtout j'ai ajoute l'affichage de l'heure (en principe l'heure est mise a jour a chaque appui de touche, donc faire un deplacement de curseur de temps en temps pour synchroniser l'affichage, OFF/ON synchronise aussi)
Pour mettre a l'heure, il faut utiliser la commande time(h,m) par exemple time(13,45), time est dans le menu shift-PRGM (ou Catalog, Tout, t puis un peu plus bas).
Ca a l'air de bien marcher (je teste depuis ce matin). Du coup, je ne comprends pas trop pourquoi Casio n'affiche pas l'heure, alors qu'un nombre croissant de jeunes qui utilisent leurs smartphones comme montre dans la vie courante, ce qui n'est pas possible en examen/devoir surveille.
DrakHors ligneRédacteurPoints: 1923 Défis: 38 Message

Citer : Posté le 24/09/2018 15:40 | #


Parisse, souhaites-tu qu'on parle de toutes ces avancées et mises à jour sur la prochaine Revue Des Projets ?

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 !
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 24/09/2018 21:20 | #


Je pense que ce serait bien, car KhiCAS a pas mal evolué: il y a deux mois c'etait très oriente calcul formel/numérique, maintenant on peut dire que c'est de l'algorithmique compatible Python intégré avec du calcul formel/numérique et des représentations graphiques.
Ajouté aujourd'hui: la recherche dans le catalogue avec 1 à 4 lettres (un point où KhiCAS était en retrait par rapport à l'UI de Casio), ainsi que l'affichage de camemberts dans les graphes statistiques.

Ajouté le 18/10/2018 à 18:37 :
L'affichage 2-d est devenu un editeur d'expression. Il est maintenant possible de selectionner une partie d'une expression et d'y appliquer une fonction pour faire des simplifications ou factorisations partielles par exemple, de stocker une partie ou toute une expression dans une variable, etc.
Contrairement aux editeurs d'expressions des constructeurs actuels, il suit l'arborescence de l'expression. Il suit la meme philosophie que l'equationwriter de la hp49/50 ou hp40.
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 19/10/2018 07:14 | #


Oh, ça a l'air très pratique cette fonctionnalité de sélection. J'admire l'effort que tu mets dans le portage de KhiCAS

Quelques personnes dans ma classe sont actuellement en train de développer un éditeur d'expressions, justement. Peux-tu expliquer ce que tu entends par « suivre l'arborescence de l'expression » ? À quel point est-ce que tu parses durant l'édition ?
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 19/10/2018 08:58 | #


Suivre l'arborescence s'applique aux touches de deplacement: par exemple fleche vers le haut va selectionner le parent de la selection.
Je parse quand l'utilisateur tape quelque chose au clavier: plus precisement, si on tape un caractere ou un chiffre, on ouvre une ligne de commande qui si elle est validee va etre parsee pour remplacer la selection. Si on saisit une commande (touche sin par exemple ou bien commande depuis le catalogue), le parser est aussi appele mais on pourrait l'eviter (c'est juste plus facile que de reecrire une dichotomie pour chercher dans le tableau des noms de commande).

Ajouté le 10/11/2018 à 16:17 :
Mise a jour. Les changements:
1/ j'ai rajoute les operateurs infixes &=, |=, ^= ainsi que les decalages >> << >>= et <<=
2/ la commande python_compat(2) permet maintenant d'utiliser ^ pour utiliser le ou exclusif bit a bit au lieu de la puissance, elle a ete rajoutee dans le menu Programmes (raccourci shift-PRGM). Ceci est rappele lorsqu'on change de mode.
3/ dans l'editeur d'expression, on peut echanger deux arguments avec shift fleche droite/gauche et etendre la selection dans une somme ou un produit avec alpha fleche droite/gauche


Ajouté le 17/01/2019 à 13:52 :
Mise a jour de KhiCAS, afin de pouvoir adapter un jeu de Mastermind ecrit en Python pour Numworks.

# jeu de Mastermind, md(-1) parametres par defaut, md() pour les definir
# D'apres le script de Aurelien Bossard pour Numworks
# https://workshop.numworks.com/python/aurelienbossard/mastermind
def md(long=0,Color=0,multi=-1,vide=-1):
  larg=4
  if long==-1:
    long=15
    Color=6
    multi=0
    vide=0
  if long==0:
    long=min(15,max(1,int(input("Nombre d'essais ?"))))
  if Color==0:
    Color=min(12,max(4,int(input("Nombre de Couleurs ?"))))
  if multi==-1:
    multi=int(input("Doublons 0/1 ?"))
  if vide==-1:
    vide=int(input("Cases vides 0/1 ?"))
  for y in range(20,20+20*larg+1,20):
    draw_line(0,y, 20*long+1,y,0)
  for x in range(0,20*long+1,20):
    draw_line( x,20,x,20+20*larg,0)
  Colors=[red,blue,green,yellow,magenta,cyan,black,544,63872,28672,10,55296,1760,27,65376,64288,63500,1247,63515,2028]
  Couleur=Colors[0:Color]
  if vide==1:
    Couleur.append(65535)
  for a in range(0,len(Couleur)):
    draw_circle(10+20*a,210,8,Couleur[a]+filled)
    draw_string(str(a+1),20*a,184)
  for x in range(0,20*len(Couleur)+1):
    for y in range(185,221,15):
      if y>200:
        y+=5
      set_pixel(x,y,0)    
  for x in range(0,20*len(Couleur)+1,20):
    draw_line(x,185,x,220,0)
  code=[]
  compteur=0
  while compteur<larg:
    Rand=choice(Couleur)
    if multi==0:
      if Rand not in code:
        code.append(Rand)
        compteur+=1
    else:
      code.append(Rand)
      compteur+=1
  Longueur=-1
  while Longueur<long-1:
    liste=[]
    Longueur+=1
    largueur=0
    while largueur<larg:
      c=int(input(""))-1
      if 0<=c<len(Couleur):
        draw_circle(10+20*Longueur,30+20*largueur,8,Couleur[c]+filled)
        largueur+=1
        liste.append(Couleur[c])
    comp=[]
    copyl=[]
    copyc=[]
    for a in range(0,larg):
      copyc.append(code[a])
      copyl.append(liste[a])
    for a in range(0,larg):
      if copyl[a]==copyc[a]:
        comp.append(0)
        copyc[a]=0
        copyl[a]=1
    for a in range(0,larg):
      for b in range(0,larg):
        if copyl[a]==copyc[b]:
          comp.append(55296)
          copyl[a]=1
          copyc[b]=0
    for a in range(0,len(comp)):
        fill_rect(1+10*(a%2)+20*Longueur,21+20*larg+10*(int(a/2)),10,10,comp[a])
    if liste==code:
      draw_string("Gagne ! :"+str(Longueur+1)+" coups",20,160)
      return 1
  draw_string("Perdu !",20,160)
  for a in range(0,len(code)):
    draw_circle(310,30+20*a,8,code[a]+filled)
  for a in range(0,len(code)):
    draw_rectangle(300,20+20*a,20,20)
  return 0
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 17/01/2019 15:27 | #


Ça c'est du script ! Quel est ton niveau de compatibilité avec l'implémentation Python de Numworks en général ?

J'ai corrigé le bug de mise en page qui laissait le contenu dépasser du cadre.
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 20/01/2019 10:12 | #


J'ai du modifier certains noms de variables qui etaient en conflit avec des commandes ou des constantes KhiCAS, par exemple couleur est devenu Couleur, color est devenu Color. Pour cela, il faut interpreter le script Numworks et regarder les warnings. J'ai aussi du modifier le positionnement vertical du mastermind pour laisser la place de la ligne d'etat en haut et j'ai supprime les from bidule import * qui ne servent pas ici. Apres, cela fonctionnait mais c'etait un peu lent (cela vient du fait que l'interpreteur KhiCAS est 3 a 4 fois plus lent qu'un interpreteur Python normal parce que les regles d'evaluation en calcul formel sont plus complexes, et aussi du fait que le processeur de la graph 90+e est moins rapide que celui de la Numworks). J'ai donc remplace le trace point a point des rectangles et surtout des disques remplis par des instructions KhiCAS draw_rectangle, fill_rect et draw_circle qui n'existent pas chez Numworks (ni dans les portages de Python proposes par les autres constructeurs).
A noter qu'il ne s'agit pas d'un script de niveau debutant, pour un script de niveau de ce qui est attendu au lycee, je pense que la compatibilite Python de KhiCAS est tres bonne maintenant : ca devrait marcher sans modification dans la plupart des cas, il faudra juste changer les noms de variables en conflit avec des noms de commandes KhiCAS.

N'hesitez pas a me faire suivre des problemes eventuels et faites savoir autour de vous si vous utilisez KhiCAS plutot que le MicroPython officiel de Casio. Si beaucoup de personnes utilisent KhiCAS sur la graph 90 et le MicroPython de zezombye sur les Casio monochrome et le font savoir et le font remonter, on diminue le risque de mise en place du mode examen.

Ajouté le 14/05/2019 à 20:33 :
J'ai mis en ligne une version alpha pour la 90 utilisant la meme console que celle de la 35eii, qui est je pense plus intuitive, pour ceux qui veulent tester pour me faire remonter des commentaires mais n'ont pas de 35eii. A terme, je laisserai sans doute en telechargement la version avec l'UI de l'an dernier, mais la version conseillee sera celle qui a la meme interface que la 35eii, avec la possibilite d'echanger des sessions de calcul entre la 35, la 90, Xcas desktop et Xcas pour Firefox (et d'autres calculatrices si on peut porter KhiCAS dessus!).
khicas 90 nouvelle interface
CritorEn ligneAdministrateurPoints: 1263 Défis: 0 Message

Citer : Posté le 14/05/2019 20:41 | #


Merci.

J'ai accès au dossier, mais je ne peux pas télécharger le fichier en question.
Forbidden
You don't have permission to access /~parisse/casio/khicas_n.g3a on this server.

https://www-fourier.ujf-grenoble.fr/~parisse/casio/khicas_n.g3a
SashoHors ligneMembrePoints: 14 Défis: 0 Message

Citer : Posté le 14/05/2019 21:12 | # | Fichier joint


Bonjour,

C'est moi qui ai raté une commande pour factoriser correctement certaines expressions, ou c'est un bug?

Quand j'essaye de factoriser la dérivé d'expressions comme "exp(x)*(-2x^2-x+5)" avec Khicas sur Graph90+ ou Xcas (Win32 et 64) sous windows ca sort des trucs carrément bizarre avec des racines carre , alors qu'avec d'autres logiciel de CAS comme Maxima ou en ligne sur solusmath ca factorise normalement.



https://www.solumaths.com/fr/calculatrice-en-ligne/calculer/factoriser/exp(x)*(-4*x-1)+exp(x)*(-2*x%5E2-x+5)

edit: with_sqrt(0) pour désactiver la factorisation avec les radicaux sur Khikas de la casio.

ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 14/05/2019 21:27 | #


@critor: en effet, j'ai corrige les droits, merci.

@sasho: il n'y a rien de bizarre, le polynome du second degre est factorise. Dans Xcas, on peut choisir si on force la factorisation des polynomes du second degre meme s'il faut introduire des racines carrees en cochant Sqrt dans le menu de configuration du CAS. C'est utile par exemple pour etudier le signe de l'expression.
SashoHors ligneMembrePoints: 14 Défis: 0 Message

Citer : Posté le 14/05/2019 21:41 | #


Ooh. ok. Merci, j'avais pas vu l'option.

Merci
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 15/05/2019 22:19 | #


Attention avec la version alpha nouvelle interface, le cycle OFF/ON dysfonctionne, il faut eteindre la calc depuis le MENU. C'est peut-etre lie a l'utilisation du curseur systeme, j'essaierai en remplacant le code correspondant.

Ajouté le 16/05/2019 à 15:18 :
Le probleme semble resolu, en n'utilisant pas le debut de la RAM qui semble servir a OFF/ON.
LephenixnoirEn ligneAdministrateurPoints: 15231 Défis: 136 Message

Citer : Posté le 16/05/2019 23:02 | #


J'avoue avoir du mal à y croire, la zone est vraiment réservée pour l'utilisateur... >_>
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 17/05/2019 07:50 | #


Je n'ai pas cherche precisement quelle zone est utilisee, mais depuis que j'ai shifte de 4K le debut de la ram utilisable pour KhiCAS, je n'ai plus de problemes. Avant OFF/ON remplissait avec des 0x55 ou des 0xAA certaines zones en ecrasant les variables correspondantes: ca crashait avec affiche en ligne de menu des UUUUUUUUU et avec TARGET=0x555555...
Je pense que la console etait parfois mal restauree avec l'ancienne interface pour les memes raisons (mais sans provoquer autant de crash). Il faudrait tester d'autres addins qui ont suffisamment de variables globales pour etre susceptibles d'etre ecrasees.

Ajouté le 18/05/2019 à 20:17 :
Mise a jour de la version 90 de KhiCAS avec la meme interface que sur la 35, on est proche de la version beta maintenant.
J'ai mis dans le repertoire https://www-fourier.ujf-grenoble.fr/~parisse/casio/sessions quelques sessions au format xw, compatible avec les 90, 35, Xcas desktop et Xcas pour Firefox.
SashoHors ligneMembrePoints: 14 Défis: 0 Message

Citer : Posté le 20/05/2019 17:37 | #


Bonjour, désolé si la question est stupide..

Il y a une raison pour que Khicas sur Casio (Graph90+) n'affiche pas le 0 dans le cas d'un float (0.1234), Khicas affiche ( .1234)?





SI c'est une option, désolé mais je ne l'ai pas trouve dans l'aide de Khicas sur la calculatrice ou cette de Xcas.
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 22/05/2019 07:25 | #


C'est normal, il n'y a pas d'option d'affichage pour les flottants, et c'est plus simple de coder comme ca. Maintenant si c'est important d'avoir un 0 devant le . je peux surement le rajouter!
SashoHors ligneMembrePoints: 14 Défis: 0 Message

Citer : Posté le 22/05/2019 14:47 | #


Oh, c'est pour ça. Je pouvais chercher l'option encore longtemps

Après, non, perso ça ne me dérange pas. C'est juste quand j'ai essayé mon programme d'extremum/limite de Xcas PC sur ma calculatrice, la calculatrice n'affichait pas les 0 devant les . contrairement au programme sur PC, je voulais savoir si c’était normal et s'il y avait une option pour les afficher.


Merci
ParisseHors ligneMembrePoints: 174 Défis: 0 Message

Citer : Posté le 29/05/2019 16:15 | #


Mise a jour de la doc et de l'addin avec la nouvelle interface:
https://www-fourier.ujf-grenoble.fr/~parisse/casio/khicasio.html
https://www-fourier.ujf-grenoble.fr/~parisse/casio/khicas.g3a
La principale nouvelle fonctionnalite, c'est de pouvoir modifier un niveau de l'historique des calculs, les niveaux en-dessous sont alors reevalues.
On peut d'ailleurs creer des curseurs pour faire varier des parametres de maniere plus efficace (assistant de creation dans le menu F6 Parameter), les calculs et les graphes qui suivent sont alors reactualises si on selectionne le niveau contenant la commande assume(...) en tapant sur la touche + ou -. L'exemple de session https://www-fourier.ujf-grenoble.fr/~parisse/casio/sessions/quad.xw illustre ce principe, c'est une version KhiCAS de l'applet quadratic explorer des HP.
SashoHors ligneMembrePoints: 14 Défis: 0 Message

Citer : Posté le 01/06/2019 15:56 | #


Parisse a écrit :
Mise a jour de la doc et de l'addin avec la nouvelle interface:
https://www-fourier.ujf-grenoble.fr/~parisse/casio/khicasio.html
https://www-fourier.ujf-grenoble.fr/~parisse/casio/khicas.g3a
La principale nouvelle fonctionnalite, c'est de pouvoir modifier un niveau de l'historique des calculs, les niveaux en-dessous sont alors reevalues.
On peut d'ailleurs creer des curseurs pour faire varier des parametres de maniere plus efficace (assistant de creation dans le menu F6 Parameter), les calculs et les graphes qui suivent sont alors reactualises si on selectionne le niveau contenant la commande assume(...) en tapant sur la touche + ou -. L'exemple de session https://www-fourier.ujf-grenoble.fr/~parisse/casio/sessions/quad.xw illustre ce principe, c'est une version KhiCAS de l'applet quadratic explorer des HP.


Bonjour,
Il y a ne restriction pour ce qui concerne l'ouverture des ficher? Il faut obligatoirement que les sessions .xw soit a la racine de la calculatrice?
j'avais toutes mes sessions dans un dossier nommé "xw", et l'appli les ouvrait sans probleme. Avec la dernière version (téléchargé hier), l'appli "restart" complètement sans charger la session quand j'essaye de charger une sessions qui est dans un sous-dossier. Aucun problème si je charge la session depuis la racine de la calculatrice.

Pages : Précédente1, 2, 3Suivante

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 32 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