Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » KhiCAS, add-in calcul formel pour Graph 90+e
ParisseHors ligneMembrePoints: 97 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
ParisseHors ligneMembrePoints: 97 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.
LephenixnoirHors ligneAdministrateurPoints: 14124 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: 97 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: 1922 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: 97 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.
LephenixnoirHors ligneAdministrateurPoints: 14124 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: 97 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
LephenixnoirHors ligneAdministrateurPoints: 14124 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: 97 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.
Pages : Précédente1, 2

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