Persalteas le 21/06/2012 à 17:24
Bonjour,
Vous qui venez ici, vous êtes peut-être un membre habitué qui avez remarqué tout au long de l'année des gens demander de traduire un algorithme étudié en cours de maths en "langage calculette", ou alors vous êtes peut-être un visiteur venu demander une telle traduction.
CMD est fait pour vous !!
Ce programme élaboré par
maxence sur Espace-TI (
topic officiel) est en fait un IDE de TI-Basic...en TI-Basic.
Il est censé traduire le langage "algorithme" qu'on apprend en cours en TI-Basic.
voici un exemple (quoiqu'assez mauvais et un peu trop simple) du programme en action:
Le code fait assez mal aux yeux. Attention aux erreurs de recopiage. Si vous préférez, téléchargez le 83p
ici.
Dans le code ci-dessous, "->" correspond a la flèche de la touche [sto->] et "=/=" au symbole "différent de" [2nde][maths][2]
Code
:ClrHome
:Lbl MN
:Menu(" (CMD... ) ","(CREER)",CR,"(QUITTER)",QT
:Lbl QT
:Output(1,1,"
:Stop
:Lbl CR
:" ->Str8
:Repeat Str0="STOP
:Input ":",Str0
:If Str0="ANNUL":Then
:ClrHome
:" ->Str8
:Else
:Str8+Str0+"[carré]->Str8 // le [carré] se trouve en faisant [2nde][0] et plusieurs fois fleche du haut
:End:End
:sub(Str8,2,length(Str8)-1->Str8
:ClrHome
:Output(1,1,"(TRADUCTION... )
:Output(2,6,"( I%)
:Output(2,9,"
:length(Str8->[theta] //la lettre [theta] se trouve avec [alpha][3]
:0->Z
:"0:->Str1
:Repeat Str0="STOP
:inString(Str8,"[carré]->A
:sub(Str8,1,A-1->Str0
:If Str0=/="STOP":sub(Str8,A+1,length(Str8)-A->Str8
:inString(Str0,".->A
:If A and "="=/=sub(Str0,2,1:Then
:sub(Str0,1,A-1
:If Ans="AFF":Str1+"Disp "+sub(Str0,A+1,length(Str0)-A)+":->Str1
:If Ans="DEMANDER" and inString(Str0,".",10:Str1+"Input "+sub(Str0,10,length(Str0)-11)+","+sub(Str0,length(Str0),1)+":->Str1
:If Ans="DEMANDER":Str1+"Prompt "+sub(Str0,10,length(Str0)-9)+":->Str1
:If Ans="SI":Str1+"If "+sub(Str0,4,length(Str0)-3)+":->Str1
:If Ans="TANT QUE":Str1+"While "+sub(Str0,10,length(Str0)-9)+":->Str1
:If Ans="PLACER POINT":Then
:Str1+"Pt-On(->Str1
:sub(Str0,14,length(Str0)-13->Str0
:inString(Str0,".->B
:Str1+sub(Str0,1,B-1)+","+sub(Str0,B+1,length(Str0)-B)+",3:->Str1
:End
:If Ans="DEMANDER FONCTION":Then
:Str1+"Input Str0:->Str1
:"FONCTION.Str0."+sub(Str0,19,length(Str0)-18->Str0
:"FONCTION
:End
:If Ans="FONCTION":Then
:Str1+"String>Equ(->Str1
:sub(Str0,10,length(Str0)-9->Str0
:inString(Str0,".->B
:Str1+sub(Str0,1,B-1)+","+sub("Y1Y2Y3Y4Y5Y6Y7Y8Y9Y0",expr(sub(Str0,B+1,length(Str0)-B)),1)+":->Str1
//Y1 etc, il s'agit bien des variables. [vars][>][1]
:End
:If Ans="PLACER":Then
:Str1+"Output(->Str1
:sub(Str0,8,length(Str0)-7->Str0
:For(Y,0,1
:inString(Str0,".->B
:Str1+sub(Str0,1,B-1)+",->Str1
:sub(Str0,B+1,length(Str0)-B->Str0
:End
:Str1+Str0+":->Str1
:End
:If Ans="PART ENT"
:Str1+"For("+sub(Str0,length(Str0),1)+",iPart("+sub(Str0,length(Str0),1)+"),"+sub(Str0,length(Str0),1)+"-1):End:->Str1
:If Ans="PART DEC"
:Str1+"For("+sub(Str0,length(Str0),1)+",fPart("+sub(Str0,length(Str0),1)+"),fPart("+sub(Str0,length(Str0),1)+")-1):End:->Str1
:If Ans="POSITIF"
:Str1+"For("+sub(Str0,length(Str0),1)+",abs("+sub(Str0,length(Str0),1)+"),"+sub(Str0,length(Str0),1)+"-1):End:->Str1
:If Ans="NEGATIF"
:Str1+"For("+sub(Str0,length(Str0),1)+",-abs("+sub(Str0,length(Str0),1)+"),-abs("+sub(Str0,length(Str0),1)+")-1):End:->Str1
//attention, les moins qui se situent devant les "abs" sont des moins de négativité
:If Ans="PRECEDENT":Str1+"For("+sub(Str0,length(Str0),1)+",Ans,Ans-1):End:->Str1
:Else
:If Str0="EFF":Str1+"ClrHome:ClrDraw:->Str1
:If Str0="PAUSE":Str1+"Pause :->Str1
:If "="=sub(Str0,2,1
:Str1+"For("+sub(Str0,1,1)+","+sub(Str0,3,length(Str0)-2)+","+sub(Str0,3,length(Str0)-2)+"-1):End:->Str1
:If Str0="ALORS":Str1+"Then:->Str1
:If Str0="SINON":Str1+"Else:->Str1
:If Str0="FIN":Str1+"End:->Str1
:If "//"=sub(Str0,1,2:Str1+sub(Str0,3,length(Str0)-2)+":->Str1
:If Str0="GRAPH STANDART":Str1+"ZStandard:->Str1
:If Str0="GRAPH AJUSTE":Str1+"ZoomFit:->Str1
:If Str0="AFF GRAPH":Str1+"DispGraph:->Str1
:End
:Output(2,7,iPart(([theta]-length(Str8))(100/[theta]
:End
:Output(2,7,"100
:For([theta],0,400):End
:Str1+"DelVar Str0Output(1,1,->Str1
:DelVar Str0DelVar Str8DelVar Str1
:ClrHome
:Output(1,1,"
Mode d'emploi pour composer un programme:
1) créer son programme
la première ligne du programme en "langage CMD" ou langage "algo" est une description du prog.
Ensuite, il on peut entrer une suite d'instructions.
entrez l'instruction qui correspond a votre souhait, puis les "arguments" en les séparant avec des points comme sur l'exemple animé ci-dessus.
Liste de commandes:
AFF.cequ'ilfautafficher
PLACER.numérodeligne.numérodecolonne.cequ'ilfautafficher pour afficher quelque chose a un endroit précis de l'écran.
DEMANDER.variableademander1.variableademander2.variableademander3.etc... pour stocker des valeurs dans des variables
DEMANDER.textedelaquestion.variableademander pour écrire une question personnalisée en demandant la valeur de la variable
PAUSE (pour que le programme attende que l'utilisateur appuie sur [entrer])
variable=valeur pour assigner une valeur à une variable
SI.condition
ALORS
...
SINON
...
FIN
TANT QUE.condition
...
FIN
EFF pour effacer l'écran et les fonctions tracées
POSITIF.variable pour donner la valeur absolue d'une variable
NEGATIF.variable donne l'opposé de cette valeur absolue
// sert à éxécuter une instruction TI-Basic qui n'est pas en langage algo mais déjà traduite. sert aussi a faire un calcul, si elle est suivie de PRECEDENT.
PRECEDENT.variable assigne à la variable la dernière valeur calculée
PLACER POINT.X.Y où X et Y sont les coordonées du point
GRAPH STANDART initialise les axes standart (X et Y allant de -10 à 10) et trace les fonctions
GRAPH AJUSTE ajuste le graphe aux fonctions en cours et les trace
FONCTION."fonction".numérode0à9 pour enregistrer une fonction dans Y1 a Y9 (qui se traceront automatiquement dès l'affichage du graphique)
AFF GRAPH trace les fonctions sans changer les axes
DEMANDER FONCTION.numérode0à9 demande une fonction a l'utilisateur et l'enregistre dans Y0 à Y9
ANNUL effacer tout ce qu'on a écrit et recommencer.
STOP termine l'écriture du programme et le traduit en TI-basic
Une fois que c'est fait, créez un nouveau programme avec [prgm][<][entrer] et entrez-lui un nom en majuscules.
Dans ce programme, sur la première ligne, tapez [2nde][sto->][2nde][( - )][entrer].
Puis positionnez vous sur le guillemet qui commence le code qui s'affiche et appuyez sur [suppr].
Quittez l'éditeur avec [2nde][mode], puis vous pouvez éxécuter le programme créé.
Maxence le 21/06/2012 à 18:23
Bonjour, désoler je ne suis pas inscrit sur ce forum, mais je suis en fait le "maxence" en question ^^
F-BVXT: L'erreur ne vient pas de cette ligne, car elle n’effectue qu'une seule action je t'assure, regarde bien
En fait, comme je l'ai dit à persaeltas sur espace-ti, je pense que le problème vient du fait qu'il s'est tromper en la testant, car il faut ecrire:
DEMANDER.A,B,C // avec des virgules pour séparer les variables et non pas:
DEMANDER.A.B.C // avec des points entre les variables.
Juste 2 commandes qui n'ont pas été évoquées:
PART ENT.variable // La variable devient égale à sa partie entière
exemple (A est egal à 5.3): PART ENT.A // A vaut désormais 5
PART DEC.variable // le même chose mais avec la partie décimale
