Page 1 of 1

Mise à jour MaClasseTI.fr plateforme TI-83 en ligne gratuite

Unread postPosted: 13 May 2023, 22:39
by critor
La dernière réforme du lycée a commencé à être mise en place à partir de 2018 pour les élèves entrant en Seconde, et a débouché sur le Baccalauréat nouveau format pour la session 2021. Une réforme qui a complètement chamboulé le marché français de la calculatrice scolaire.

Rappelons que dans ce contexte, on distingue :
  • les enseignements faisant encore l'objet d'une évaluation terminale : Français (épreuve anticipée en Première), Philosophie, 2 enseignements de spécialité, grand oral
  • les enseignements évalués en contrôle continu : le reste du tronc commun et les enseignements optionnels
Cela fait une différence importante en terme d'organisation de l'évaluation :
  • les épreuves terminales, peu importe qu'elles soient écrites, pratiques ou orales, sont organisées sous le cadre réglementaire national, ne permettant que l'autorisation de la calculatrice comme seul outil numérique personnel, avec mode examen dans le cas d'une calculatrice graphique
  • les évaluations pour le contrôle continu sont organisées selon des modalités librement choisies par l'enseignant ou établissement concerné, qui à la différence peuvent autoriser tout outil numérique qu'ils jugent pertinent pour l'évaluation (ordinateur, tablette, smartphone, ...) ou au contraire tous les interdire
Parlons spécialités. Les enseignements de spécialité à choisir sont au nombre de 3 pour la rentrée en Première. Une spécialité devant obligatoirement être abandonnée à la fin de la Première, seules 2 spécialités seront conservées en Terminale.

Le choix des enseignements de spécialité est totalement libre pour les élèves décidant de poursuivre en série générale, avec à ce jour jusqu'à 13 spécialités possibles selon les lycées. Pour les élèves décidant de poursuivre en série technologique, l'organisation est similaire, mis à part que les élèves n'ont pas ou très peu de choix. Selon la série choisie, les enseignements de spécialités sont soit imposés, soit n'offrent qu'un nombre très limité de choix spécifiques à la série en question.
Problème, en pratique, les seuls élèves à être concernés par une épreuve terminale autorisant la calculatrice ne sont désormais plus que ceux :
  • faisant le choix de la série générale avec certains enseignements scientifiques en spécialité, et qui de plus conservent ces enseignements jusqu'en Terminale : Mathématiques, Physique-Chimie et/ou Sciences de l'Ingénieur
  • faisant le choix de certaines séries technologiques : STL, STI2D, STMG, ST2S, STHR ou STAV
Effet pervers de la réforme qui n'a pas du tout été anticipé ; entre le choix d'une série et de spécialités à la fin de la Seconde, et en série générale l'abandon d'une spécialité à la fin de la Première, la visibilité des élèves et familles niveau orientation est bien souvent réduite à moins d'une année. Un élève de Seconde ou même Première ne sait pas bien souvent si il sera concerné par une épreuve terminale autorisant la calculatrice. Et comme nous venons de le voir, il ne suffit pas de faire des Mathématiques ou des sciences pour cela, ces enseignements ne faisant pas l'objet d'une épreuve terminale dans le cadre du tronc commun ou des options.

En conséquence :
  • plutôt que de s'équiper dès la Seconde nombre de familles préfèrent différer l'achat d'une calculatrice graphique, en pratique à la Première ou même pire à la Terminale
  • nombre d'enseignants ne se donnent même plus la peine de recommander cet achat en Seconde, et parfois même en Première
Cet équipement plus tardif a bien évidemment des conséquences fort regrettables, avec un temps réduit pour la prise en main l'outil, et une utilisation moins optimale aux épreuves terminales.

Les alternatives en attendant un éventuel équipement mises en oeuvre par les enseignants étaient jusqu'à présent :
  • faire avec la Casio fx-92+ Spéciale Collège apportée du Collège par les élèves, certes excellente au Collège mais avec le défaut comme son nom l'indique de n'être pas parfaitement adaptée aux exigences du lycée
  • faire avec les ordinateur portable, tablette ou smartphone des élèves, avec des applications ou plateformes bien souvent choisis par les enseignants, et l'énorme défaut que ces outils numériques auxquels ils habituent les élèves ne seront pas ceux autorisés aux épreuves terminales
Mais à compter de cette rentrée 2023 fini de souffrir, fini les dilemmes et choix douloureux. Texas Instruments a travaillé très dur avec VittaScience, brillante start-up française deux fois lauréate du prix Edu-up, pour te sortir une plateforme en ligne conçue sur-mesures dans le cadre de la réforme du lycée et du Baccalauréat, MaClasseTI.fr.

Majoritairement opensource, MaClasseTI.fr se compose de différents modules :
  • Calculatrice en ligne (émulateur TI-83 Premium CE)
  • Editeur Python (conception de projets STEM en Python ou en écriture par blocs, avec accès à une bibliothèque de projets)
  • Tutoriels
  • Classe (gestion de classe, banque d'activités et exercices, etc.)



Mais ce qui fait la force phénoménale de la plateforme, c'est son intégration. Les différents modules peuvent être mélangés comme bon te semble :
  • possibilité de faire appel à l'émulateur depuis un tuto afin d'y reproduire les manipulations
  • possibilité d'intégrer l'émulateur ou l'éditeur Python dans les exercices ou activités que tu crées
  • etc.

Majoritairement opensource et intégralement gratuite, la plateforme MaClasseTI.fr libère les enseignants de toute problématique d'équipement. Ils pourront désormais commencer à faire prendre en main les TI-82 Advanced Edition Python et TI-83 Premium CE aux élèves dès le premier jour de leur arrivée en Seconde, et l'achat de la calculatrice pourra quant à lui être réalisé plus tard : en Première, en Terminale, voir même juste avant les épreuves de spécialité ! On pourrait même imaginer des services de location de calculatrices désormais, juste le temps des épreuves.

Nous avions signalé nombre de bugs lors du lancement de la plateforme, particulièrement dans l'éditeur Python.

Rappelons que cet éditeur Python inclut non pas un émulateur mais un simulateur de l'application Python TI-83 Premium CE Edition Python.

Aujourd'hui Texas Instruments et VittaScience nous sortent une mise à jour majeure de la plateforme, alors vérifions ensemble ce qui a changé niveau Python.




Sommaire :





1) Nouveaux projets


Problème avec l'éditeur Python, lors de la sortie il n'y avait pas de bouton de création de projet.

Pour te lancer dans un nouveau projet tu étais obligé de :
  1. ouvrir n'importe lequel des projets offerts par la bibliothèque intégrée
  2. pour tout y effacer
  3. et enfin pouvoir commencer à coder ton projet
C'est bon maintenant, un bouton permettant directement la création d'un nouveau projet vierge a enfin été rajouté !




B) Editeur


L'éditeur Python en ligne n'affiche pas exactement les scripts comme sur calculatrice.
Code: Select all
def fibo(n):
  b, i = 0, 0
  while i <= n:
    if i < 2:
      a = i
    else :
      a, b = a + b, a
    i += 1
  return a

On peut citer par exemple les niveaux d'intentation qui ne sont pas indiqués par des losanges.
Cette mise à jour a souhaité rapprocher l'affichage en ligne des scripts de celui de la calculatrice en rajoutant ces losanges.

Malheureusement, cela semble apporter davantage d'ennuis que cela en corrige.

Si tu utilises des indentations avec 2 espaces, il devient impossible de copier-coller correctement les scripts saisis dans l'éditeur en ligne vers un autre environnement de développement Python. En effet il y a une non homogénéité dans le codage automatique des indentations, certaines utilisant alors des espaces et d'autres des tabulations.

Pour contourner ce problème tu dois utiliser des indentations avec 4 espaces. Reste alors le problème que le nombre de losanges affichés diffère de l'éditeur de la calculatrice, n'étant ici pas proportionnel avec le niveau d'indentation.






C) Variables


Dans la version précédente, l'écran reproduisant l'affichage de la calculatrice n'était accompagné que de 2 touches,
entrer
et
annul
.

Nous avons maintenant droit à une touche supplémentaire
var
. En cliquant dessus après ou même pendant l'exécution d'un script Python, tu obtiens la liste de toutes les variables affectées. Si l'environnement Python n'est pas occupé (exécution du script terminée ou bien attente d'une saisie), cliquer sur l'une de ces variables permet de saisir son nom dans la console, afin par exemple d'en consulter la valeur.



D) Fonction print() et police


Problème avec la fonction print(). Lors des affichages les caractères espace présents en début de chaîne étaient ignorés avec le simulateur, alors que ce n'était pas le cas avec la calculatrice :
Code: Select all
LINES = 4
DELTA = 8
START = 4

def print_stars(i):
  print(" "*(DELTA // 2)*(LINES - i - 1) + "*"*(DELTA*i + START))

for i in range(LINES):
  print_stars(i)
print("Hello TI-World from inside !")
for i in range(LINES - 1, -1, -1):
  print_stars(i)

On pouvait de plus noter en passant l'utilisation d'une police très différente de celle de la calculatrice.
Le comportement dans le simulateur a maintenant été corrigé !

Les espaces sont correctement pris en compte, et on note que la police de caractères utilisée a été changée pour mieux reproduire les affichages de la calculatrice. C'est maintenant la police communautaire TI-84+CSE / 84+CE / 83PCE de jacobly qui est utilisée ! :bj:




E1) Fonction ti_system.disp_at()


La bibliothèque ti_system fournit des fonctions spécifiques à l'environnement Texas Instruments.

Parmi elles, on trouve la fonction disp_at(ligne, texte, alignement), permettant d'afficher une chaîne de caractères sur une ligne précise de l'écran de la calculatice, avec :
  • ligne : le numéro de la ligne de 1 à 11 (numérotation de haut en bas)
  • texte : la chaîne de caractères à afficher
  • alignement : au choix "left", "center" ou "right" pour aligner respectivement à gauche, au centre ou à droite
Sauf que les affichages différaient de ceux de la calculatrice. Prenons par exemple ce script d'affichage du logo Texas Instruments, faisant exprès d'aligner les lignes différemment :
Code: Select all
from ti_system import *
logo = [
  ["WWWWWWW     WWW", "center"],
  ["WWWWWWW       ", "center"],
  ["WWWWWWWWW WWW  WWWWWW  ", "right"],
  ["WWWWWWWWW WWW WWWWWWW  ", "right"],
  ["WWWWWWWWWWWWWWW   WWW    WWWWWW", "left"],
  ["WWWWWWWWWWWWWW  WWW WWWWWWWWWW", "right"],
  ["WWWWWWWWWWWW WWW  WWWWWWWWWW", "right"],
  ["WW     WWW       WWWW", "center"],
  ["     WWWWWWWWWW", "center"],
  ["     WWWWWWWW", "center"],
  ["        WWWWW", "center"]
]

for i in range(len(logo)):
  ligne = logo[i]
  disp_at(i + 1, ligne[0], ligne[1])
disp_wait()

Nous constations 2 problèmes :
  • l'affichage sans effacement de ce qu'il y avait déjà aux positions ciblées
  • et de petits décalages sur certains enchaînements d'alignements, car si tu comptes bien les affichages étaient réalisés non pas sur 32 colonnes comme avec la calculatrice mais sur 33 colonnes
Ces deux problèmes-ci sont corrigés.
Toutefois, un autre problème semble présent.

Il reste un décalage, bizarrement variable, sur la première ligne affichée.

Peut-être le calcul de l'alignement ici au centre, tient-il compte, à tort, de la dernière position du curseur...



E2) Fonction ti_system.wait_key()


La fonction ti_system.wait_key() permet d'attendre l'appui sur une touche du clavier.

Ici contrairement à la calculatrice seulement 2 touches sont disponibles,
annul
et
entrer
.
Sauf que la fonction wait_key() ne renvoyait pas le code de la touche pressée, mais rien.

De plus autre problème, pour ceux qui programmaient exclusivement en mode blocs, cette fonction était inaccessible car aucun bloc ne lui était associé.
Le comportement a été corrigé, la fonction wait_key() renvoie bien maintenant :
  • 5 si l'on active la touche
    entrer
  • 9 si l'on active la touche
    annul
La touche supplémentaire
var
quant à elle n'est pas gérée par la fonction wait_key(), son rôle spécifique se réduisant à ce que nous avons décrit plus haut.

De plus, pour ceux qui programment par blocs, un bloc associé à la fonction wait_key() a enfin été rajouté. On peut toutefois lui reprocher une formulation assez maladroite en Français, comme si issue d'une traduction automatique (le mot clé étant utilisé à la place du mot touche...)




E3) Exportation/importation de valeurs


La bibliothèque ti_system offre plusieurs fonctions permettant d'exporter/importer des valeurs entre l'environnement Python et le système TI-83 Premium CE :
  • store_list(nom, liste) : permet d'exporter les valeurs d'une liste de nombre réels (entiers ou flottants) vers la variable liste TI-83 Premium CE dont on indique le numéro (de 1 à 6 pour L1 à L6) ou le nom sur 5 caractères maximum
  • recall_list(nom) : permet inversement de récupérer dans l'environnement Python les valeurs d'une variable liste TI-83 Premium CE
  • recall_RegEQ : permet de récupérer dans l'environnement Python la chaîne de caracètres avec l'équation de la dernière régression statistique effectuée dans l'environnement TI-83 Premium CE
Problème, ces trois fonctions ne marchaient pas ici, générant une exception NotImplementedError.
Code: Select all
from ti_system import *

store_list(6,[ i**2 + i + 41/2 for i in range(8)])
print(recall_list(6))

store_list("TEST",[ i**2 + i + 41 for i in range(8, 14)])
print(recall_list("TEST"))


Si elles n'ont certes que peu d'intérêt ici où l'environnement Python est à ce jour totalement scindé de l'environnement TI-83 Premium CE, c'était quand même bien embêtant que certains projets parfaitement fonctionnels sur ta calculatrices soient ici inutilisables.
Alors bonne nouvelle, les fonctions store_list() et recall_list ont maintenant été implémentées !
Par contre, recall_RegEQ semble avoir été omise, continuant à interrompre l'exécution sur une exception NotImplementedError.




F) Bibliothèque turtle


La bibliothèque de tracé à la tortue turtle utilisée par l'interface en ligne ne respectait pas rigoureusement le standard. En témoigne le script suivant qui affiche sur calculatrice un superbe tournesol dressé sur un beau ciel bleu, mais donnait sur l'interface en ligne une espèce de chardon écrasé par terre...
Code: Select all
from math import pi, sin, cos, sqrt
from turtle import *
turtle = Turtle()

def spiral():
  phi = (1+sqrt(5))/2
  a  =0
  r = 0
  dr = 0.15
  turtle.penup()
  for i in range(300):
    turtle.forward(r)
    turtle.pencolor(0,0,0)
    turtle.dot(3)
    turtle.pencolor(205,133,63)
    turtle.dot(2)
    turtle.goto(0,0)
    turtle.setheading(0)
    a+=360/phi
    turtle.right(a)
    if a>=360:
      r+=dr
      a-=360   

def feuille(core,a):
    turtle.begin_fill()
    turtle.right(a/2)
    turtle.forward(core)
    turtle.left(a)
    turtle.forward(core)
    turtle.left(180-a)
    turtle.forward(core)
    turtle.left(a)
    turtle.forward(core)
    turtle.end_fill()

turtle.speed(0)
turtle.pencolor(30,144,255)
turtle.dot(320)

d=25
core=40
turtle.pencolor(160,82,45)
turtle.dot(40)

c=((255,215,0),(255,255,0))

for i in range(2):
  turtle.pencolor(c[0][0], c[0][1], c[0][2])
  turtle.fillcolor(c[i][0], c[i][1], c[i][2])
  for h in range(10*i,370,20):
    r=h * pi / 180
    x=d*cos(r)
    y=d*sin(r)
    turtle.penup()
    turtle.goto(x,y)
    turtle.pendown()
    turtle.setheading(h)
    feuille(core,32)

spiral()

turtle.show()

Plusieurs problèmes intervenaient ici :
  • la fonction d'orientation setheading() qui semblait ne pas utiliser la bonne unité d'angle
  • la fonction pencolor() ne retenant pas la bonne couleur dans certains cas
  • la fonction dot(), semblant prendre comme paramètre le diamètre du disque à remplir sur l'interface en ligne, alors qu'elle prend le rayon sur la calculatrice
Le comportement des fonctions setheading() et pencolor() a été corrigé !

Le comportement de la fonction dot() n'a pas été changé comme on peut voir au fond bleu. C'est justifiable, car dans le standard turtle la fonction dot() attend affectivement le diamètre du disque en paramètre et non pas le rayon. C'est ici la calculatrice TI-83 Premium CE qui a tort.




G) Bibliothèque ti_plotlib


ti_plotlib est l'une des bibliothèques de tracé par coordonnées dans un repère offertes par la TI-83 Premium CE
Code: Select all
import ti_plotlib as plt
import math

plt.cls()

def linspace(min2, max2, number):
  time = []
  space = round(max2) + math.fabs(min2)
  step = space / number
  point = min2
  time.append(point)
  for i in range(0, number, 1):
    point = point + step
    time.append(point)
  return time

def Sinus(t):
  sin = []
  for i in range(0, len(t), 1):
    sin.append(math.sin(t[int(i)] / 180.0 * math.pi))
  return sin

NUMBER_OF_POINTS = 50
MINIMUM = -360
MAXIMUM = 360
Angle = linspace(MINIMUM, MAXIMUM, 50)
Sinus2 = Sinus(Angle)
print(str(Angle))
print(str(Sinus2))
plt.cls()
plt.auto_window(Angle, Sinus2)
plt.grid(90, 0.25, "dot")
plt.color(0, 0, 153)
plt.axes("on")
plt.color(0, 0, 0)
plt.labels('Angle (°)', '', 6, 1)
plt.title('f(x) = sin(x)')
plt.color(0, 153, 0)
plt.plot(Angle, Sinus2, "o")
plt.color(255, 0, 0)
plt.scatter(Angle, Sinus2, "o")
plt.show_plot()
Bien que fonctionnelle, son implémentation sur la plateforme en ligne n'en restait pas moins très incomplète, comme on pouvait le constater en interrogeant le contenu de la bibliothèque :
interroge son contenu :
Code: Select all
import ti_plotlib as plt
l = dir(plt)
l.sort()
print(l)

Par exemple, on n'y retrouvait pas de quoi consulter les bornes de la fenêtre, ce qui nous semblait fort problématique dans certains cas.
L'implémentation de ti_plotlib a été un petit peu complétée avec cette mise à jour.

Nous y trouvons enfin de quoi consulter les bornes de la fenêtre : xmin, xmax, ymin et ymax.

Mais ce n'est pas tout, est également tout ce qui concerne les régressions statistiques : fonction lin_reg() ainsi que de quoi consulter les coefficients de la dernière régression linéaire : a, b et m.




H) Bibliothèque ti_draw


En plus des bibliothèque de tracé à la tortue et des bibliothèques de tracé par coordonnées dans un repère, la TI-83 Premium CE offre également une bibliothèque de tracé par pixels, ti_draw.
Sauf que ti_draw était jusqu'ici absente de l'interface en ligne...
Et bien bonne nouvelle, comme on peut s'en rendre compte à une icône supplémentaire dans la barre d'outils de programmation par blocs, ti_draw a été rajouté !

L'essentiel semble être là si l'on interroge le contenu : de quoi allumer des pixels, écrire du texte, tracer des segments, tracer ou remplir des rectangles, tracer des cercles ou disques, ou encore tracer ou remplir des polygones !
Code: Select all
import ti_draw
l = dir(ti_draw)
l.sort()
print(l)




I) Bibliothèques ti_hub et ti_rover


La TI-83 Premium CE Edition Python est un formidable outil polyvalent intégrant plusieurs bibliothèques très utiles dans le cadre de la conception de projets STEM. Ces bibliothèques ciblent divers périphériques pouvant être connectés à ta calculatrice, chacun avec leurs propres capteurs et actionneurs que tu pourras interroger ou commander depuis ton code.

La bibliothèque ti_hub est dédiée TI-Innovator Hub, brique programmable intégrant plusieurs capteurs/actionneurs et permettant d'en connecter d'autres via des ports Grove et breadboard.

Et bien miraculeux, non seulement la bibliothèque ti_hub est présente, mais son importation déclenche l'ajout d'un TI-Innovator Hub dans la partie simulation.

Mais encore mieux que ça, de façon fort intelligente la plateforme arrive à déterminer les différents types de capteurs et actionneurs invoqués par ton code et te les rajoute également, tout en te précisant si il s'agit d'éléments intégrés au TI-Innovator Hub ou d'éléments rajoutés !
Code: Select all
from ti_hub import *
import brightns
from analogout import *

# Analog Write on OUT 1
out1 = analog_out("OUT 1")

def ecl_affine(x):
  k = 1 + x / 100
  return 255 * 1

L = brightns.measurement()
while not L == 100:
  P = ecl_affine(L)
  out1.set(P)
  L = brightns.measurement()
P = ecl_affine(L)
out1.set(P)


La valeur retournée par chaque capteur peut ici être ajustée, de quoi tester tes projets comme en vrai !

C'est de plus un formidable outil si tu souhaites faire développer des projets STEM en classe car il te permet à chaque élève de disposer (virtuellement) de ses propres éléments matériels, plutôt que de faire la queue pour tester avec les éléments matériels de la classe en nombre limité.

De ton côté tu n'as plus besoin de t'embêter avec la logistique, n'ayant pas besoin de prévoir et distribuer les éléments matériels en quantité suffisante pour les séances concernées. Tu peux réserver les éléments matériels pour les tests finaux et présentation du projet.
Petit bug de détection justement, pour chaque valeur numérique intervenant dans ton code, l'interface en ligne te rajoutait un capteur de température avec comme nom la valeur en question. Capteurs de température totalement inutiles puisqu'associés non pas à des variables mais à des constantes...

Cela pouvait vite devenir bien gênant avec du code conséquent.
C'est maintenant corrigé, fini ces ajouts non sollicités de capteurs de température.

Un périphérique remarquable qui peut lui-même être connecté à l'interface TI-Innovator Hub, c'est le robot sur roues TI-Innovator Rover, invocable par la bibliothèque ti_rover.

Ce périphérique intègre lui-même divers capteurs et actionneurs (capteur de distance, capteur de couleur au sol, diode RVB, ...).

C'est ici fantastique sur l'interface en ligne, car non seulement le robot TI-Innovator Rover, lorsque invoqué, est rajouté au simulateur, mais il est même accompagné d'un véritable tapis de tests !
Code: Select all
import ti_rover as rv

def poly(n):
  for i in range(n):
    rv.forward(1)
    rv.left(360//n)

for i in range(3, 6):
  poly(i)

Hautement pertinent, tu pourras ainsi tester aisément comme en vrai tes projets utilisant les couleurs au sol pour influer sur le comportement du TI-Innovator Rover !
Un tapis de plus notamment bien pensé pour le codage d'un projet de"suivi de ligne".

Et en prime, les sens de rotation des deux servomoteurs et même distance restant à parcourir sont reportés en temps réel !
Petit problème toutefois, lorsque l'on voulait contrôler une diode RGB, aussi bien celle intégrée au TI-Innovator Hub que celle intégrée au TI-Innovator Rover.

Dans les deux cas cela faisait appel à une sous-bibliothèque color dont l'invocation déclenchait immédiatement une erreur se plaignant d'un objet robot non défini :
ExternalError: ReferenceError: robot is not defined' lors de l'utilisation de la librairie color
C'est maintenant corrigé, tu peux enfin tester en ligne tous tes projets faisant intervenir une diode RGB !

Lien : https://maclasseti.fr/