Ce n'est pas prévu avant la rentrée de septembre 2020, mais nous nous proposons de te faire découvrir aujourd'hui en avant-première la prochaine mise à jour qui rajoutera la programmation en
Python aux
TI-Nspire CX II.
Sauf surprise il s'agira donc de la première solution
Python sur calculatrices haut de gamme, et nous allons voir si elle est bien partie pour être à la hauteur.
La fonctionnalité
Python sera disponible :
- sur les calculatrices TI-Nspire CX II, dont entre autres les modèles TI-Nspire CX II-T et TI-Nspire CX II-T CAS distribués en Europe
- sur tous les logiciels TI-Nspire pour ordinateur, aussi bien dans leur version enseignant qu'élève, aussi bien dans leur version CAS que non-CAS
Attention, le
Python ne sera par contre pas disponible :
- sur les anciens modèles TI-Nspire CX et TI-Nspire CX CAS, qui ne sont plus concernés par les mises à jour depuis la version 5.0
- sur les applications TI-Nspire pour iPad
La force exclusive des calculatrices
TI-Nspire, c'est leur logiciel de Mathématique intégré.
Plusieurs applications sont disponibles et rajoutables :
- sous forme de pages au sein de documents
- même en plusieurs exemplaires
- et il est même possible de regrouper jusqu'à 4 applications sur une même page de document, les applications prenant alors la forme de widgets
Nous remarquons a priori un bon signe niveau intégration, le
Python prenant la forme d'une nouvelle application rajoutable aux documents depuis la calculatrice, la 10
ème.
Sommaire :Plus précisément comme tu le vois l'application
Python peut prendre 2 formes différentes :
- celle d'un éditeur si tu crées un nouveau script ou ouvres un script existant
- et celle de la console (shell) pour importer tes scripts ou taper des commandes Python
L'éditeur pour commencer par lui t'indique comme tu le vois en haut à droite des informations essentielles pour quand le
Python t'indiquera une ligne d'erreur : numéro de ligne sur laquelle se situe actuellement le curseur et nombre total de lignes du script.
Il a également l'avantage de te donner le nom du script en cours d'édition pour t'éviter toute erreur, permet de visualiser simultanément 11 lignes de scripts ce qui est assez confortable pour une vue d'ensemble.
On apprécie la coloration syntaxique, l'indentation automatique, ainsi que la notation spéciale légère mais bien visible pour les espaces d'indentation en début de ligne, comme sur
TI-83 Premium CE.
Notons qu'il n'y a nul besoin de repasser par le menu d'ajout d'application pour obtenir une console si on a fait le choix de l'éditeur, la simple touche
menu
appelée depuis l'éditeur permettra de vérifier la syntaxe du script saisi et d'accéder à la console
Python en lançant le script courant automatiquement ou pas.
Tentons maintenant de créer un nouveau script.
Comme dans la mise à jour
5.5 à venir pour
TI-83 Premium CE Edition Python et qui semble donc développée en parallèle, nous remarquons la possibilité de préciser un type de script :
- Script Vierge / Blank Program
- Calculs Mathématiques / Math Calculations
- Simulation Aléatoire / Random Simulations
- Image Processing (non présent sur TI-83 Premium CE Edition Python 5.5)
- Tracer (x,y) et Texte / Plotting (x,y) & Text
- Partage de Données / Data Sharing
- Projets STEM Hub / Hub Project
- Rover / Rover Coding
Remarquons au passage le choix
Image Processing qui n'était pas proposé sur
TI-83 Premium CE Edition Python 5.5.
A l'exception du premier choix, les autres nous font démarrer avec des scripts déjà préremplis avec les appels d'importation correspondants, et que voici ci-contre pour
Calculs Mathématiques et
Projets STEM Hub.
Une excellente initiative qui permettra aux élèves les plus pressés et passionnés d'aller plus rapidement au coeur du problème, mais également d'aiguiller les plus timides en leur éviter le syndrome de la page blanche !
Mais justement puisque nous parlons d'importation, quels sont les bibliothèques disponibles ? Il nous suffit de taper
menu
. Nous avons donc de listés :
- 4 modules standard
- math
- random
- cmath (non présent sur TI-83 Premium CE Edition Python 5.5)
- time
- 6 modules spécifiques à Texas Instruments :
- ti_plotlib (tracés dans un repère orthogonal)
- ti_hub (projets d'objets connectés avec l'interface TI-Innovator Hub)
- ti_rover (projets de robotique avec le TI-Innovator Rover)
- ti_system
- ti_draw (non présent sur TI-83 Premium CE Edition Python 5.5)
- ti_image(non présent sur TI-83 Premium CE Edition Python 5.5)
On apprécie ici la disponibilité de la bibliothèque standard
cmath pour les fonctions sur les nombres complexes, absente sur
TI-83 Premium CE Edition Python 5.5, et qui sera fort utile aux élèves choisissant l'option
Mathématiques Expertes en
Terminale.
Du côté des bibliothèques de
Texas Instruments, on ne retrouve pas la bibliothèque
ti_graphics de la
TI-83 Premium CE Edition Python 5.5, peut-être ici remplacée et scindée en deux bibliothèques
ti_draw et
ti_image, que nous allons détailler plus loin.
Quelle différence avec ti_plotlib ?
- ti_plotlib te permet de réaliser des tracés dans un repère orthogonal, des diagrammes notamment, repère dont tu choisis librement les unités sur les deux axes.
- alors qu'avec ti_graphics et donc ici ses remplaçants ti_draw et ti_image, tu spécifies à la différence des coordonnées en pixels par rapport au coin supérieur gauche de l'écran
En tous cas un changement de nom qui suggérerait a priori que pour les scripts
Python réalisant des tracés au niveau du pixel, il n'y aurait pas de compatibilité entre les
TI-83 Premium CE Edition Python 5.5 et
TI-Nspire CX II.
5) L'assistant à la saisie, 1ère rencontre
Go to topSi tu penses que chaque entrée te menu te saisit une simple ligne à compléter, attends-toi à être surpris(e).
Déjà c'est tout un bloc de lignes qui peut être saisi automatiquement, notamment pour les boucles et instructions conditionnelles.
Mais surtout regarde bien, tu disposes de tout un dispositif d'aide à la saisie à un niveau jusqu'ici jamais atteint !
C'est un peu comme un texte à trous. Les zones de saisie que tu te dois de compléter te sont notées en gris clair, avec même une étiquette indicative au cas où !
Si ton curseur se trouve dans l'une des zones en question son affichage passe en inversé. Pas besoin non plus de t'acharner sur les touches fléchées pour aller rejoindre les différents bouts à compléter, tu peux passer instantanément de l'un à l'autre à l'aide de la touche
tab
!
Il est à noter que cette formidable assistance à la saisie marche de façon similaire avec l'ensemble des fonctions natives !
Et tout ceci marche aussi bien dans l'éditeur que dans la console !
Poursuivons justement avec d'autres points forts tirant profit de la bonne conception du clavier
TI-Nspire.
Ici dans la console
Python, c'est la touche
var
qui permet de liste les variables existant dans le contexte mémoire courant, évitant ainsi d'avoir taper leurs noms. Avec même en prime un visuel différent pour distinguer les fonctions.
Mais ce qui est remarquable, c'est que ça marche même de façon similaire dans l'éditeur de script, avec la liste cette fois-ci des variables globales au script en question !
Un autre énorme avantage par rapport à la
TI-83 Premium CE Edition Python, c'est que nous avons ici une touche
shift
, qui permet lorsque maintenue enfoncée de sélectionner librement des zones de texte à des fins de
couper-copier-coller. Un confort d'utilisation fabuleux !
On note au passage un autre avantage à ce jour exclusif sur calculatrices au profit de
Texas Instruments, la gestion de la saisie d'un bloc d'instructions sur plusieurs lignes dans la console
Python, comme sur
TI-83 Premium CE Edition Python et sur ordinateur !
Tu vérifieras si ça t'amuse, la concurrence retourne à ce jour une erreur dès la saisie de la première ligne du bloc.7) Bibliothèque ti_system + davantage d'assistance à la saisie
Go to topDécouvrons maintenant la bibliothèque
ti_system de la
TI-Nspire CX II. Selon son menu ci-contre elle a plusieurs rôles comparables à ceux de la bibliothèque de même nom
sur TI-83 Premium CE Edition Python 5.5 :
faire appel avec eval_function('nom',valeur)
à des fonctions existant dans l'environnement TI-Nspire, a priori utile pour les fonctions justement non fournies dans le contexte Python comme tout ce qui touche au calcul formel
- détecter des appuis de touches avec get_key(), particulièrement utile pour la conception d'interfaces de menus ou jeux en Python
- exporter des variables (
store_value('nom',valeur)
) ou listes (store_list('nom',list)
) du contexte Python vers l'environnement TI-Nspire du document courant - inversement récupérer dans le contexte Python des variables (
recall_value('nom')
) ou listes (recall_value('nom')
) de l'environnement TI-Nspire du document courant
Nous anticipions plus haut de l'intégration, et bien avec ces deux derniers points ça n'a pas loupé. Dès sa sortie, le
Python aura donc un accès intégral à l'environnement
TI-Nspire. Via les exportations/importations de variables, tu pourras donc l'interfacer avec n'importe quelle autre application présente dans le même document. Ce décloisonnement du
Python est une formidable opportunité; c'est-à-dire que l'utilisation du
Python sur
TI-Nspire pourra ne pas être une fin en soi, mais servir à résoudre un problème !
Par exemple avec l'application de géométrie dynamique, pour tester si le triangle qui y est construit est rectangle :
Ici on importe donc les valeurs des variables
TI-Nspire globales
a,
b et
c associées aux longueurs des 3 côtés du triangle sur la page de l'application de géométrie.
En passant pensais-tu avoir déjà tout vu niveau assistant de saisie
Python sur
TI-Nspire ? Oh que non, et c'est loin d'être fini tu n'as pas idée. En attendant tu pourras remarquer ici qu'en plus de l'étiquette indicative, la zone à compléter active pourra être accompagnée d'une info-bulle explicative !
Autre exemple, on peut également imaginer des échanges bidirectionnels. Par exemple une exportation de liste
Python vers l'environnement
TI-Nspire pour traitement, puis sa réimportation après traitement.
Tiens, tu as vu ? Les zones à compléter bénéficiant de l'assistance à la saisie ça marche donc non seulement pour les blocs d'instructions et paramètre de fonctions, mais également variables à affecter !
8) Bibliothèque ti_draw + encore plus d'assistance à la saisie
Go to topLe menu associé à la bibliothèque
ti_draw est scindé en deux catégories :
formes et
contrôles.
Comme deviné il s'agit bien d'une bibliothèque de dessin permettant de travailler au niveau du pixel, et donc comparable au
ti_graphics de la
TI-83 Premium CE Edition Python 5.5.
On y retrouve d'ailleurs quasiment toutes les mêmes fonctions de tracé au menu
formes :
draw_line(x1,y1,x2,y2)
: trace un segment entre les pixels (x1,y1) et (x2,y2)draw_poly([(x1,y1),(x2,y2),...])
ou fill_poly([(x1,y1),(x2,y2),...])
: trace une ligne brisée ou remplit un polygonedraw_rect(x,y,w,h)
ou fill_rect(x,y,w,h)
: trace ou remplit un rectangle, de dimensions w×h pixels, avec le pixel (x,y) comme coin supérieur gauchedraw_circle(x,y,r)
ou fill_circle(x,y,r)
: trace un cercle ou remplit un disque, de centre le pixel (x,y) et de rayon r - draw_circle() n'est à ce jour pas présent sur TI-83 Premium CE Edition Python 5.5draw_arc(x,y,w,h,t1,t2)
ou fill_arc(x,y,w,h,t1,t2)
: trace un arc ou remplit un secteur d'ellipse inscrite dans un rectangle de dimensions w×h pixels, avec le pixel (x,y) comme coin supérieur gauche, entre les angles au centre orientés t1 et t2 exprimés en dixièmes de degrésdraw_text('texte',x,y)
: écrit un texte avec le pixel (x,y) comme coin supérieur gauche- et
plot_xy(...)
, ici un ajout par rapport à ti_graphics
Notons en passant hélas que l'incompatibilité entre
ti_draw et
ti_graphics ne s'arrête pas à une simple histoire de noms de bibliothèques différents se réglant en 4 lignes; bien que de même spécifications, les fonctions ont également toutes des noms légèrement différents.
La catégorie
contrôles nous réserve davantage de surprises.
On y retrouve certes de probables équivalents au reste des fonctions de
ti_graphics :
set_color(),
set_pen(), ainsi que
clear() pour
cls().
Mais bien d'autres surprises sont au menu :
- clear_rect() pour n'effacer qu'une partie de l'écran
- set_window()
- get_screen_dim() pour obtenir donc les dimensions de la zone graphique, plus besoin de les détecter avec des boucles de set_pixel et get_pixel; particulièrement utile sur TI-Nspire où comme peuvent coexister jusqu'à 4 applications par page de document, elles n'ont pas forcément accès à une zone graphique maximale
- use_buffer() et paint_buffer(), renvoyant à des fonctions de noms similaires introduites avec les capacités graphiques du langage TI-Basic historique lors de la toute première version 5.0 de la TI-Nspire CX II, et suggérant donc que l'on pourra effectuer des tracés sur un calque initialement invisible, technique du double buffer permettant d'optimiser les affichages complexes d'interfaces de menus ou jeux
Tentons un petit exemple pour voir, commençons donc par régler la plume du stylo avec
set_pen('taille','type')
qui attend dans l'ordre :
- 'thin' (fin), 'medium' (moyen) ou 'thick' (épais) pour la taille
- 'solid' (continu), 'dot' (traits de pointillé courts) ou 'dash' (traits de pointillé longs) pour le type
Bien évidemment ces quelques seules valeurs autorisées ne se devinent pas, et c'est justement là que l'extraordinaire assistant d'aide à la saisie se rappelle à notre bon souvenir, listant et permettant de sélectionner les valeurs autorisées associées à la zone à compléter active !
Choisissons donc
setPen('thick','dash')
pour un tracé épais en traits de pointillé longs, et terminons avec un
draw_line(1,1,120,100)
.
Cela te donne déjà une idée des dimensions de la zone graphique utilisable lorsque l'application
Python est en pleine page.
9) Bibliothèque ti_image + dimensions zone graphique maximale + toujours plus d'assistance à la saisie
Go to topEt enfin dernière inconnue nous avons donc la bibliothèque
ti_image, fournissant sans doute de par son nom et sa séparation de
ti_draw de la gestion d'images bien plus étendue que les quelques rudiments trouvés dans le
ti_graphics de la
TI-83 Premium CE Edition Python 5.5.
A première vue, pas grand chose au menu :
new_image(width,height)
pour créer une image de width×height pixelsload_image('name')
, suggérant le chargement d'images extérieures au contexte Python, peut-être :
- soit rajoutées en tant que ressources du document courant via le logiciel TI-Nspire comme c'est déjà possible dans le contexte des scripts Lua depuis la version 3.0
- soit provenant d'une banque d'images évoquée très récemment pour TI-83 Premium CE Edition Python 5.5
- peut-être les deux...
copy_image(image)
permettant donc un 2ème exemplaire mémoire d'une image déjà créée ou chargée, particulièrement utile à des fins de transformations (symétrie, rotations, inversions de couleurs, extraction de composante couleur, passage en niveaux de gris, ...) et donc fort pertinent dans le cadre de l'enseignement SNT de Seconde
Allez, maintenant la pratique. Créons donc une image rouge de 50x50 pixels.
Pas question ici pour l'assistant d'aide à la saisie de nous ouvrir une liste de toutes les valeurs autorisées, mais il ne nous laisse pas tomber pour autant et adopte un autre comportement supplémentaire : l'info-bulle associée à la zone à compléter active indique les plages de valeurs autorisées :
- de 0 à 318 pour la largeur
- de 0 à 212 pour la hauteur
Ce qui nous donne en passant une belle information; lorsque l'application
Python occupe seule l'intégralité d'une page de document, elle a accès à une zone graphique maximale de
318×212=67416 pixels
(contre 320×210=67200 pixels sur TI-83 Premium CE Edition Python 5.5). Ce sont ici la bordure de l'écran et la barre de statut supérieure qui nous interdisent le reste de l'écran 320×240 pixels.
Nous aurions pu le deviner, puisque c'est à cette même zone graphique maximale de
318×212 pixels qu'ont accès les scripts
Lua depuis la version
3.0, et
TI-Basic depuis la version
5.0.
Bref, terminons donc en précisant la couleur rouge, et ici encore l'assistant d'aide à la saisie nous indique bien gentiment de saisir des codes couleur entre 0 et 255 !
Enfin, si il n'y avait pas beaucoup de fonctions au menu de la bibliothèque
ti_image, c'est parce qu'elles sont en fait associées à l'objet image créé, et l'excellent assistant d'aide à la saisie nous en fournit automatiquement la liste au choix dès que l'on suffixe le nom d'objet créé d'un point.
get_pixel() et
set_pixel() sont notamment au menu de ces
fonctions de classe encore appelées
méthodes !
Texas Instruments semble vraiment avoir travaillé très dur; nous ignorons depuis combien de temps ils ont cogité ça, nous en restons presque sans voix...
Ne repartons pas pour un roman, tentons de résumer l'ensemble avec les qualités caractéristiques et à ce jour exclusives de la solution
Python sur
TI-Nspire CX II :
- L'application Python bénéficie d'une large intégration à l'environnement TI-Nspire, contrairement à d'autres modèles pas besoin en classe de dissocier les tâches numériques en Python du reste de la résolution d'un problème !
- L'aide à la saisie disponible aussi bien dans la console que l'éditeur est absolument époustouflante, de par ses différents comportements d'assistance qui varient et s'adaptent d'une zone à compléter à une autre. L'assistant est toujours de bon conseil, répondant par avance à toutes les questions que se poserait un codeur débutant, on le croirait presque pensant !
Pour une première solution
Python sur calculatrice haut de gamme nous trouvons que c'est plus que réussi; c'est sans commune mesure avec ce qui est proposé à ce jour sur les modèles de milieu de gamme,
Texas Instruments a mis la barre très haut. Ce n'est pas comme si le code
Python se saisissait tout seul, mais presque !
Envie de te faire ta propre opinion ?
Rendez-vous ce
Mercredi 13 Mai de
18h30 à
20h pour une vidéoconférence de présentation de la prochaine mise à jour
Python pour
TI-Nspire CX II, avec cette fois-ci des captures d'écran en français et peut-être même quelques nouvelles informations.
Tu pourras notamment y poser toutes les questions de ton choix !
Attention il est obligatoire de t'inscrire, c'est
par ici.