π
<-

NumWorks Firmware 10.0.0 tiers orienté jeux Python (get_keys)

New postby Admin » 02 Feb 2019, 21:31

jean-baptiste boric avait déjà travaillé à une modification du firmware NumWorks afin d'étendre les possibilités graphiques du module Python kandinsky, lui rajoutant les fonctions :
  • draw_line(x1,y1,x2,y2,color) pour le tracer de lignes
  • fill_rect(x,y,w,h,color) pour le tracer de rectangles pleins
Dans les deux cas ces fonctions n'étaient pas connectées à la fonction Python setpixel(x,y,color) mais à du code C permettant donc des tracés optimaux, notamment pour le rafraichissement de sprites dans des jeux.

Aujourd'hui jean-baptiste boric poursuit son chemin dans le but de nous permettre enfin de coder en Python des jeux graphiques jouables, en nous diffusant une nouvelle version de son firmware amélioré.

Voyons donc ensemble les dernières nouveautés


9895A première vue, bizarrement,pas de nouveauté kandinsky.

L'on note toujours comme seuls et uniques ajouts :
  • draw_line(x1,y1,x2,y2,color)
  • fill_rect(x,y,w,h,color)

Mais histoire d'être sûr, explorons le module kandinsky à l'aide du script suivant :
Code: Select all
#platforms:
#0: MicroPython / TI-Nspire
#1: MicroPython / NumWorks
#2: MicroPython / G90+E
#3: MicroPython / G35+E/USB / G75/85/95
#4: CircuitPython / TI-Python / 83PCE
#5: Xcas / HP Prime
#6: KhiCAS / Graph 90+E
def getplatform():
  id=-1
  try:
    import sys
    try:
      if sys.platform=='nspire':id=0
      if sys.platform=='TI-Python Adapter':id=4
    except:id=3
  except:
    try:
      import kandinsky
      id=1
    except:
      try:
        if chr(256)==chr(0):id=5+(not ("HP" in version()))
      except:
        id=2
  return id
 
platform=getplatform()
#lines shown on screen
plines=[29,12,  7, 9,11,0,0]
#max chars per line
#(error or new line if exceeded)
pcols =[53,99,509,32,32,0,0]

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*ls):
  global curline
  st=""
  for s in ls:
    if not(isinstance(s,str)):
      s=str(s)
    st=st+s
  stlines=1+int(len(st)/ncols)
  if curline+stlines>=nlines:
    input("Input to continue:")
    curline=0
  print(st)
  curline+=stlines

def sstr(obj):
  try:
    s=obj.__name__
  except:
    s=str(obj)
    a=s.find("'")
    b=s.rfind("'")
    if a>=0 and b!=a:
      s=s[a+1:b]
  return s

def isExplorable(obj):
  s=str(obj)
  return s.startswith("<module '") or s.startswith("<class '")

def explmod(pitm,pitmsl=[],reset=True):
  global curline
  if(reset):
    curline=0
    pitmsl=[sstr(pitm)]
  hd="."*(len(pitmsl)-1)
  spath=".".join(pitmsl)
  c=0
  for itms in sorted(dir(pitm)):
    c=c+1
    try:
      itm=eval(spath+"."+itms)
      mprint(hd+itms+"="+str(itm))
      if isExplorable(itm):
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      mprint(hd+itms)
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c

Et bingo, oh que oui il y a des choses, simplement elles ne sont pas listées dans la boîte à outils.

10220Déjà après les sorties graphiques, Jean-Baptise s'attaque maintenant aux entrées clavier en définissant des codes pour l'ensemble des touches du clavier et rajoutant la fonction get_keys() pour connaître la ou les touches pressées ! :bj:
10216102171021810219


10221Mais ce n'est pas tout, nous avons également de nouvelles fonctions de sorties graphiques :
  • get_pixels(x,y,width,data)
  • set_pixels(x,y,width,data)
  • wait_vblank()

10222Alors, mission remplie ou pas avec tout ça ? Peut-on enfin coder un Mario pour la calculatrice NumWorks ?

Nous te proposons d'aller juger par toi-même en testant la fluidité du jeu PONG codé par Jean-Baptiste en exploitant ces nouvelles fonctionnalités, premier jeu Python contrôlable au clavier ! :bj:

Attention au fait que le firmware diffusé par Jean-Baptiste dans ce contexte est basé sur l'état actuel du code source public de la calculatrice NumWorks, et que celui-ci est actuellement en phase bêta de la future version 10.0.0. Des problèmes peuvent donc apparaître même en dehors des points évoqués; il t'est déconseillé de l'installer si tu as de prochains rendez-vous importants (DS, examens, concours...). :#non#:


Téléchargement : firmware 1.10.0 bêta précompilé avec ces améliorations (installable facilement via webdfu_numworks )
Code : https://github.com/numworks/epsilon/pull/746
Source : viewtopic.php?t=22284&p=239388#p239388

TI-z80 Omnicalc, pour des possibilités TI-82 Advanced étendues !

New postby critor » 02 Feb 2019, 18:25

10185La TI-82 Advanced est techniquement une TI-84 Plus, mais a été bridée pour empêcher l'ajout d'applications.

Toutefois dans un article précédent, nous t'annoncions enfin la possibilité d'installer les applications TI-82+/83+/84+ de ton choix sur ta TI-82 Advanced, grâce au formidable travail de parrotgeek1. :bj:

Dans un article précédent, nous traitions de l'ajout de la superbe application Symbolic, et pour qu'elle fonctionne correctement tu avais besoin de l'application Omnicalc.

Il existe toutefois de grandes différences internes entre la version système 5.0.0.0028 du 20 janvier 2015 pour TI-82 Advanced et la dernière version 2.55MP du 19 octobre 2010 pour TI-84 Plus.

Si bien que les applications TI-84 Plus ne fonctionnent pas toujours correctement ou entièrement sur TI-82 Advanced.

C'est notamment le cas de celles qui ont à voir avec le fonctionnement du système ou de l'écran de calcul, et Omnicalc tout comme Symbolic fait justement partie de ces dernières.

Voyons donc aujourd'hui quelles fonctionnalités de Omnicalc sont utilisables sur TI-82 Advanced.

Une fois l'application Omnicalc lancée (et installée), tu disposes dans son menu de configuration de plusieurs options destinées à modifier le comportement de l'écran de calcul et du système.

10186Plusieurs options ne sont pas fonctionnelles : :'(
  • Parentheses Assistant, censé faire clignoter la parenthèse ouvrante correspondant lorsque l'on ferme une parenthèse lors d'une saisie sur l'écran de calcul, et qui ici non seulement ne marche pas mais en plus bloque la saisie des parenthèses fermantes !
  • Entries Menu, censé afficher sur
    2nde
    entrée
    un menu permettant de choisir parmi les saisies précédentes, et qui ici affiche bien un menu mais propose n'importe quoi dedans et finit par planter !
  • RAM Recovery, censé sauvegarder la mémoire à chaque extinction de la calculatrice, pour pouvoir la restaurer immédiatement après un plantage. Ne fait rien de mal, mais en pratique la commande de restauration traitée plus bas semble inutilisable.
  • Virtual Calculators, censé permettre de basculer entre et utiliser deux états mémoire différents de la calculatrice, avec le raccourci
    on
    mode
    . Tu as donc deux calculatrices dans une seule, de quoi mettre les choses pour les maths dans l'une et les choses pour les sciences dans l'autre. Ne fait rien de mal, en pratique le raccourci ne marche tout simplement pas.


Mais d'autres marchent encore à la perfection : :bj:
  • Memory Protection, bloque empêche ton prof/surveillant/voisin d'effacer tes données. Bloque aussi bien l'effacement des variables que le menu de réinitialisation.
  • Base Conversions, permet de convertir les résultats à l'écran de calcul de la base décimale (10) vers n'importe quelle autre base de 2 à 36. La base de destination se choisit via le raccourci
    on
    log
    et est à saisir sur 2 chiffres (donc 02 pour le binaire par exemple).
  • Lowercase Letters, permet de saisir des lettres minuscules via le raccourci
    alpha
    alpha
    .


10187
En deuxième page c'est encore mieux, tout marche : :bj:
  • Thousands Separators, rajoute des séparateurs de milliers aux résultats dans l'écran de calcul.
  • Quick APPS, permet de lister les applications plus rapidement, l'affichage du menu avec nos 12 applications étant maintenant instantané au lieu de prendre une fraction de seconde.
    Mais il y a un autre avantage beaucoup plus important. Si tu as rajouté des applications sur ta TI-82 Advanced, dans le menu
    apps
    si tu tapes
    pour aller en fin de liste, tu as pu remarqué un bug de décalage entre l'affichage de l'application sélectionnée, et l'application effectivement lancée à la validation. Sans doute que TI a tenu compte du nombre d'application préchargées quelque part...
    Une fois l'option Quick APPS activée, plus de problème ! :bj:
  • Hide Finance app, lorsque l'option Quick APPS est activée, permet de masquer l'application intégrée Finance du menu
    apps
    , application qui ne sert pas à grand monde dans le contexte du lycée.


Mais ce n'est pas tout car avec le raccourci
prgm
prgm
, on a accès à de toutes nouvelles fonctions.
Dans l'onglet MISC, les fonctions suivantes ne marchent pas : :(
  • Les fonctions de communication linkGet( et linkSend( ne marchent pas, renvoyant systématiquement -1 pour indiquer une erreur. Elles sont destinées à écrire/lire un octet sur le port de communication de la calculatrice, très probablement non pas le port mini-USB mais le port série mini-Jack 2.5 qui n'existe plus sur TI-82 Advanced.
  • La fonction RestoreMem( destinée à restaurer la mémoire après un plantage. C'est la seule fonction qui selon sa documentation ne prend pas de paramètre. Mais lors de la saisie sur TI-82 Advanced elle se transforme en réel(32,, qui donne une erreur de syntaxe si validé sans paramètre, et une erreur de donnée si on rajoute un nombre.


Par contre, la fonction Rom>Dec(, permet de convertir un nombre écrit en chiffres romains, est fonctionnelle ! :bj:


Dans l'onglet MATH, absolument tout est fonctionnel ! :bj:
  • La fonction !n( pour la fonction sous-factorielle.
  • La fonction baseInput( qui complète la fonctionnalité vue plus haut, en permettant cette fois-ci de convertir en base décimale une saisie effectuée dans n'importe quelle base 2 à 36.
  • La fonction const( qui permet de rappeler les valeurs de plusieurs constantes physiques :
    • NA, pour le nombre d'Avogadro (sans unité)
    • K, pour la constante de Boltzman
      $mathjax$\left(J\cdot K^{-1}\right)$mathjax$
    • CC
    • EC, pour la charge élémentaire (C)
    • RC, pour la constante universelle des gaz parfaits
      $mathjax$\left(J\cdot mol^{-1}\cdot K^{-1}\right)$mathjax$
    • GC, pour la constante gravitationnelle
      $mathjax$\left(N\cdot m^2\cdot kg^{-2}\right)$mathjax$
    • G, pour l'accélération de la pesanteur à la surface de la Terre
      $mathjax$\left(m\cdot s^{-2}\right)$mathjax$
    • ME, pour la masse de l'électron (kg)
    • MP, pour la masse du proton (kg)
    • MN, pour la masse du neutron (kg)
    • H, pour la constante de Planck (J∙s)
    • C, pour la vitesse de la lumière dans le vide
      $mathjax$m\cdot s^{-1}$mathjax$
    • U, pour l'unité de masse atomique unifiée (kg)
  • La fonction factor( pour décomposer un nombre en facteurs premiers.
  • La fonction gamma(.
  • La fonction mod( pour calculer le reste d'une division euclidienne.
    Certes, la fonction remainder( existe déjà à cette fin dans ta TI-82 Advanced, mais ici à la différence la fonction marchera même avec les nombres décimaux et les grands nombres ! :bj:
  • La fonction simp√( pour simplifier les racines carrées.

Enfin dans l'onglet PRGM, nous avons les fonctions suivantes qui marchent : :bj:
  • La fonction sprite( pour afficher non pas une variable image en entier, mais un rectangle découpé dans une des variables images de la calculatrice, fort pratique pour programmer des jeux.
  • La fonction ExecAsm( pour exécuter directement du code machine.

Et puis, il reste cette fonction play(, censée jouer des partitions de musique sur un haut parleur à brancher sur le port mini-Jack 2.5 de la calculatrice, partitions à retranscrire dans une chaîne de caractères au format suivant :
  • P... : joue un silence (1, 2, 4, 8, 16, 32, 64)
  • A-G : joue les notes la, si, do, ré, mi, fa , sol
  • + : augmente la hauteur de la note précédente d'un demi-ton (dièse)
  • - : baisse la hauteur de la note précédente d'un demi-ton (bémol)
  • . : augmente la durée de la note ou pause précédente de moitié
  • T... : règle le tempo (32-255, par défaut 120)
  • L... : règle la longueur des notes suivantes (1, 2, 4, 8, 16, 32, 64, par défaut 4)
  • O... : règle l'octave (0-6, par défaut 2)
  • < : baisse d'un octave
  • > : augmente d'un octave
  • MN : les prochaines notes se termineront par un silence faisant 1/8 de leur durée
  • MS : les prochaines notes se termineront par un silence faisant 1/4 de leur durée
  • ML : les prochaines notes se termineront sans silence

Or, le port mini-Jack 2.5 est inexistant sur TI-82 Advanced. Mais ce n'est pas parce que ça ne peut pas marcher que ça ne fait rien...

Nous avions déjà vu que c'était en fait la diode examen qui avait pris la place du port mini-Jack 2.5 sur TI-82 Advanced. Alors à ton avis, ça fait quoi ? ;)

Réponse ci-dessous :

10212Et oui, pas de musique, mais à la place ça allume la diode examen ! :o

Mais ne t'embête pas à chercher la partition de la mélodie du mode examen, car cela n'a aucun intérêt pour frauder en 2020.

Certes, TI s'est bien embêté à interdire les applis et l'assembleur sur TI-82 Advanced, très probablement pour empêcher ce genre de chose.
Mais ils ont régulièrement tendance à être extrêmes dans leurs protections, et à embêter à bloquer des choses inutilement.

En effet, si tu fais clignoter ta diode avec en mettant par exemple la bonne commande play( dans une boucle, oui tu pourras faire croire que tu es en mode examen alors que tes données n'ont pas été effacées.

Mais, tant que ta calculatrice exécutera la boucle, elle sera inutilisable car n'acceptant aucune entrée. Il faudra bien à un moment où à un autre que tu interrompes la boucle pour pouvoir te servir de ta calculatrice. A ce moment-là la diode cessera de clignoter et les surveillants le verront. :#non#:

Maintenant étendue avec Omnicalc, ta TI-82 mérite enfin d'être qualifiée de Advanced ! :bj:

Téléchargements :Liens :

Examens Mise à jour CAPESOS 2019b; CAPES de Maths 2019 avec NumWorks

New postby critor » 01 Feb 2019, 15:10

CAPESOS, le système d'exploitation Linux embarqué sur clé USB pour les candidats invités aux épreuves orales du concours du CAPES de Mathématiques, est sorti en novembre dernier en version 2019a.

Il vient aujourd'hui d'être mis à jour en version 2019b.

Le changement essentiel est l'inclusion dans les ressources des textes des nouveaux programmes de à la rentrée 2019 :

Les logiciels utilisables pour présenter l'oral restent les mêmes, sans mise à jour :

Sont également disponibles pour la préparation de l'oral :
  • Firefox 52.5.0
  • Atril Document Viewer 1.12.2
  • Calculatrice Gnome

L'émulateur de calcualtrices NumWorks peut être très pertinent pour la deuxième épreuve orale, l'épreuve sur dossier, pour présenter quelque chose du point de vue élève / utilisation en classe, notamment dans le cadre de sa superbe application de Probabilités et Calculs qui respectent le langage et les notations mathématiques ! :bj:

Mais fais attention à son application Python. En effet, cet émulateur ne permet pas de sauvegarder un état. Si tu y saisis des scripts conséquents pendant ta préparation, ils seront perdus lorsque tu débrancheras la clé USB pour l'emporter devant le jury. :#non#:

Nous ne te conseillerions le Python NumWorks que pour l'utilisation interactive de la console, ou bien pour des scripts extrêmement courts que tu auras donc à saisir devant le jury. Au-delà, nous te conseillerions de basculer sur l'une des autres solutions proposées.

Fais attention aussi au fait que l'émulateur reste en version 1.7.0, et ne bénéficie donc pas des dernières grandes nouveautés sur la gestion des variables et le module time en Python.

Tous les téléchargements pour te préparer avec une NumWorks dans les conditions exactes de l'épreuve suivent.

Téléchargements :

Divers Le classement des Pythonnettes : la récursivité

New postby critor » 31 Jan 2019, 21:56

A la rentrée 2019 le Python sera le seul langage de programmation préconisé pour l'enseignement de l'algorithmique au lycée en Seconde et Première.

Plusieurs calculatrices graphiques intègrent déjà une implémentation Python officielle dans leur dernière mise à jour, plus ou moins complète, fidèle et réussie selon le cas :
  • NumWorks avec MicroPython 1.9.4
  • Casio Graph 90+E avec MicroPython 1.9.4
  • HP Prime avec l'écriture Python de Xcas
  • le module externe TI-Python pour TI-83 Premium CE avec CircuitPython (dérivé de MicroPython)
À côté de cela nous avons aussi plusieurs implémentations communautaires, qui à la différence ne fonctionneront pas en mode examen en 2020 :

Ces diverses implémentations ne sont toutefois pas équivalentes.

C'est notamment le cas pour les fonctions récursives (fonctions qui se rappellent dans leur propre code), où certaines "Pythonnettes" nous avaient paru assez mauvaises.

Aujourd'hui, creusons donc les possibilités de nos Pythonnettes en récursivité à l'aide du script suivant :
Code: Select all
def prodr(n):
  if n<=0:
    return 1
  else:
    return n*prodr(n-1)

def maxr(fct):
  n=0
  try:
    while True:
      fct(n)
      n=n+1
  except Exception as ex:
    print(ex)
  return n

La fonction prodr(n) effectue ici récursivement le produits des facteurs 1 à n, c'est la fonction factorielle.

La fonction maxr(fct) va appeler fct(n) avec des valeurs de n croissantes jusqu'à déclenchement d'une erreur, et nous indiquer alors la description de l'erreur et la profondeur de récursion atteinte.

Sur TI-Nspire l'appel maxr(prodr) atteint une profondeur de 130 avant de nous renvoyer l'erreur "maximum recursion depth exceeded". La profondeur maximum spécifiée lors de la compilation de l'interpréteur Python a donc ici été atteinte, impossible d'aller plus loin.

10209La calculatrice NumWorks quant à elle déclenche la même erreur à seulement 27 niveaux de profondeur.

Mais sur la version web de la calculatrice NumWorks ce n'est particulièrement pas joyeux, avec une limite à seulement 10 niveaux de récursion.

Sur Casio Graph 90+E, le script atteint une profondeur de 82 mais en renvoyant une erreur différente, "pystack exhausted", et la limitation n'a donc pas la même raison technique.

Avec l'application KhiCAS, la Graph 90+E fait un peu mieux avec une profondeur de 98. Mais ici la gestion de l'instruction except semble apparemment incomplète puisque la variable ex n'est pas affectée avec le message d'erreur.

La HP Prime qui utilise elle aussi un portage de GIAC, cœur du logiciel Xcas, atteint également une profondeur de récursivité de 98. Nuance toutefois, ici elle continue au-delà mais nous avertissant avec le message "Exécution en mode d'évaluation non récursive". Il semble donc que la calculatrice optimise le code en convertissant les appels récursifs en itératif au-delà de 98 niveaux de profondeur.

Si cela n'a pas été corrigé depuis octobre dernier, le module externe TI-Python pour TI-83 Premium CE que les types de base, soit les flottants uniquement en simple précision, et également les entiers uniquement courts, soit jusqu’à
$mathjax$2^{30}-1=1073741823$mathjax$
. La fonction factorielle produisant rapidement de longs entiers, l'appel maxr(prodr) devrait nous renvoyer :
TI-Python wrote:>>> from recur import *
>>> maxr(prodr)
small int overflow
13
>>>

Mais ici la limite n'a donc rien à voir avec le fonctionnement de la récursivité. Afin de mieux évaluée ce dernier, contentons-nous donc plutôt de la somme récursive des termes de 0 à n :
Code: Select all
def sumr(n):
  if n<=0:
    return 0
  else:
    return n+sumr(n-1)

L'appel maxr(sumr) devrait alors nous renvoyer :
TI-Python wrote:>>> from recur import *
>>> maxr(sumr)
max recursion depth exceeded
21
>>>

L'application CasioPython sur Graph 35+E/75+E et anciens modèles Graph 35+USB/75/95 à processeur SH4 nous atteint des sommets avec l'appel maxr(prodr), plus exactement 674 de profondeur ! L’ascension est ici avortée par l'erreur "memory allocation failed, allocating 672 bytes".

Mais là encore, si c'est une limite de mémoire cela n'a rien à voir spécifiquement avec la récursivité. Passons donc à l'autre fonction qui mettra beaucoup plus de temps avant d'arriver sur des entiers longs, et consommera donc beaucoup moins de mémoire.

Extraordinaire, l'appel maxr(sumr) atteint maintenant une profondeur de 5351. Le message d'erreur "maximum recursion depth exceeded" nous confirme bien cette fois-ci qu'il s'agit de la limite finale.

Toutefois, si l'on installe l'application CasioPython sur les premières Casio Graph 35+USB/75/95 à processeur SH3 ainsi que sur les Graph 85, les résultats sont différents. maxr(prodr) n'atteint que 213 de profondeur avec l'erreur "memory allocation failed, allocating 170 bytes".

Et avec maxr(sumr) l'erreur "maximum recursion depth exceeded" se déclenche à seulement 644 de profondeur.

L'explication de la différence en est simple. Depuis la version 1.6, CasioPython dispose d'un nouveau code d'allocation mémoire lui permettant d'exploiter 256Kio au lieu de 32Kio. Mais hélas, pour le moment ce code n'est activé que sur les machines à processeur SH4, alors que les anciennes calculatrices à processeur SH3 disposaient pourtant déjà de ces mêmes 256Kio.

Petit classement donc de nos Pythonnettes basée sur la profondeur maximale de récursion :
  1. application CasioPython sur Casio Graph 35+E/75+E et Graph 35+USB/75/95 à processeur SH4 avec 5351
  2. application CasioPython sur Casio Graph 35+USB/75/95 à processeur SH3 et Graph 85 avec 644
  3. TI-Nspire avec 130
  4. HP Prime avec 98 (conversion automatique en itératif au-delà)
  5. application KhiCAS sur Casio Graph 90+E avec 98
  6. Casio Graph 90+E avec 82
  7. NumWorks avec 27
  8. module externe TI-Python pour TI-83 Premium CE avec 21
  9. NumWorks pour navigateur avec 10

TI-z80 TI-Python : handshake et autres modules spécifiques

New postby critor » 30 Jan 2019, 18:07

A la rentrée 2019 le Python sera le seul langage de programmation préconisé pour l'enseignement de l'algorithmique au lycée en Seconde et Première.

Plusieurs calculatrices graphiques intègrent déjà une implémentation Python officielle dans leur dernière mise à jour, plus ou moins complète, fidèle et réussie selon le cas :
  • NumWorks avec MicroPython 1.9.4
  • Casio Graph 90+E avec MicroPython 1.9.4
  • HP Prime avec l'écriture Python de Xcas
  • le module externe TI-Python pour TI-83 Premium CE avec CircuitPython (dérivé de MicroPython)
À côté de cela nous avons aussi plusieurs implémentations communautaires, qui à la différence ne fonctionneront pas en mode examen en 2020 :

Ces diverses implémentations ne sont pas équivalentes et diffèrent dans l'éventail de modules qu'elles proposent.

Aussi comme nous l'avons déjà vu, ces implémentations diffèrent également par le contenu proposé dans chaque module.
Nous avons en effet déjà comparé les modules builtins, math, random, time, cmath, sys, array, collections et gc.

Voici un petit récapitulatif des modules disponibles sur chaque implémentation avec le nombre d'entrées offertes à chaque fois :
NumWorks
Casio
Graph 90+E
module externe
TI-Python pour
TI-83 Premium CE
builtins218188175204190
array444
collections2
cmath121212
gc777
math4141254128
random8888
sys151215
time34
spécifique?
(nsp)
?
(kandinsky)
?
(handshake)
Modules76379
Éléments297+252+208288258+


D'où à date le classement suivant :
  1. TI-Nspire avec 7 modules et plus de 297 entrées
  2. Casio Graph 35+E/75+E avec 7 modules et 288 entrées
  3. module externe TI-Python pour TI-83 Premium CE avec 9 modules et plus de 258 entrées
  4. NumWorks avec 6 modules et plus de 252 entrées
  5. Casio Graph 90+E avec 3 modules et 208 entrées

Un classement bien évidemment non final, puisque basé sur la comparaison d'une partie des modules.

Aujourd'hui poursuivons avec la comparaison des modules Python spécifiques à certains implémentations:
  • kandinsky pour le dessin sur NumWorks
  • nsp pour le dessin et le clavier sur TI-Nspire
  • et le mystérieux handshake sur le module externe TI-Python

Pour cela, utilisons le script suivant :
Code: Select all
#platforms:
#0: MicroPython / TI-Nspire
#1: MicroPython / NumWorks
#2: MicroPython / G90+E
#3: MicroPython / G35+E/USB / G75/85/95
#4: CircuitPython / TI-Python / 83PCE
#5: Xcas / HP Prime
#6: KhiCAS / Graph 90+E
def getplatform():
  id=-1
  try:
    import sys
    try:
      if sys.platform=='nspire':id=0
      if sys.platform=='TI-Python Adapter':id=4
    except:id=3
  except:
    try:
      import kandinsky
      id=1
    except:
      try:
        if chr(256)==chr(0):id=5+(not ("HP" in version()))
      except:
        id=2
  return id
 
platform=getplatform()
#lines shown on screen
plines=[29,12,  7, 9,11,0,0]
#max chars per line
#(error or new line if exceeded)
pcols =[53,99,509,32,32,0,0]

nlines=plines[platform]
ncols=pcols[platform]
curline=0

def mprint(*ls):
  global curline
  st=""
  for s in ls:
    if not(isinstance(s,str)):
      s=str(s)
    st=st+s
  stlines=1+int(len(st)/ncols)
  if curline+stlines>=nlines:
    input("Input to continue:")
    curline=0
  print(st)
  curline+=stlines

def sstr(obj):
  try:
    s=obj.__name__
  except:
    s=str(obj)
    a=s.find("'")
    b=s.rfind("'")
    if a>=0 and b!=a:
      s=s[a+1:b]
  return s

def isExplorable(obj):
  s=str(obj)
  return s.startswith("<module '") or s.startswith("<class '")

def explmod(pitm,pitmsl=[],reset=True):
  global curline
  if(reset):
    curline=0
    pitmsl=[sstr(pitm)]
  hd="."*(len(pitmsl)-1)
  spath=".".join(pitmsl)
  c=0
  for itms in sorted(dir(pitm)):
    c=c+1
    try:
      itm=eval(spath+"."+itms)
      mprint(hd+itms+"="+str(itm))
      if isExplorable(itm):
        pitmsl2=pitmsl.copy()
        pitmsl2.append(itms)
        c=c+explmod(itm,pitmsl2,False)
    except:
      mprint(hd+itms)
  if c>0:
    mprint(hd+"Total: "+str(c)+" item(s)")
  return c

Le module nsp spécifique aux TI-Nspire nous révèle 10 éléments.

Le module kandinsky spécifique à la NumWorks nous révèle 5 éléments.

Enfin, voici ci-dessous une reconstitution de ce que le module externe TI-Python devrait afficher à partir de nos observations d'octobre dernier :
TI-Python wrote:>>> from EXPLMOD import *
>>> import handshake
>>> explmod(handshake)
__file__=handshake.py
__name__=handshake
_print=<function>
print=<function>
Total: 4 item(s)
4


Il semble donc s'agir d'un module redéfinissant la fonction print(), peut-être pour que son affichage se produise bien sur l'écran de la calculatrice TI-83 Premium CE qui, rappelons-le, n'est techniquement pas la machine exécutant les scripts puisque c'est le processeur du module externe TI-Python qui s'en charge.
Il sera intéressant d'en consulter le code, ce que nous n'avons pas pu faire la dernière fois. ;)

Suite à cela, mettons à jour notre petit récapitulatif :
NumWorks
Casio
Graph 90+E
module externe
TI-Python pour
TI-83 Premium CE
builtins218188175204190
array444
collections2
cmath121212
gc777
math4141254128
random8888
sys151215
time34
spécifique10
(nsp)
5
(kandinsky)
4
(handshake)
Modules76379
Éléments307257208288262


Voici donc enfin le classement final de la richesse des différentes implémentations Python sur calculatrices: :bj:
  1. TI-Nspire avec 7 modules et 307 entrées
  2. Casio Graph 35+E/75+E avec 7 modules et 288 entrées
  3. module externe TI-Python pour TI-83 Premium CE avec 9 modules et 262 entrées
  4. NumWorks avec 6 modules et 257 entrées
  5. Casio Graph 90+E avec 3 modules et 208 entrées
Enfin final jusqu'à-ce que l'un ou l'autre des constructeurs se décide à nous rajouter de nouveaux modules. ;)

-
Search
-
Social TI-Planet
-
Featured topics
Grand Concours 2024-2025 - Programmation Python
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
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.
1231 utilisateurs:
>1189 invités
>34 membres
>8 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)