Poster un nouveau sujet Poster une réponse
CMD: Un traducteur Algorithme scolaire > TI-Basic
Auteur Message
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Jeu 21 Jui 2012, 17:24   Citer 

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éé.

 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 178
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Jeu 21 Jui 2012, 17:32   Citer 

Mais c'est super ingénieux comme programme ça !
Je sais pas si ça sera plus rapide de marquer DEMANDER à chaque fois ou de marquer traduire directement le programme mais en tout cas l'idée est super pour ceux qui n'aurait pas envie de se casser la tête à traduire leurs algorithmes.

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Jeu 21 Jui 2012, 17:46   Citer 

Il y a une erreur dans le "DEMANDER" d'ailleurs, la traduction en Prompt passe pas...

 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 178
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Jeu 21 Jui 2012, 18:09   Citer 

L'erreur ne viendrai pas de cette ligne là par hasard :

Code
:If Ans="DEMANDER":Str1+"Prompt "+sub(Str0,10,length(Str0)-9)+":->Str1


Parce qu'il exécute plusieurs actions sans "Then" ?

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 661
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Jeu 21 Jui 2012, 18:21   Citer 

De toute façon il vaut mieux apprendre le TI BASIC. C'est quand même au programme, donc ça peut tomber au bac! Et puis ce n'est quand même pas très compliqué. On se fait des idées fausses sur la programmation.

 Adresse email Haut de page Bas de page 
 
Maxence
Invité
Posté le : Jeu 21 Jui 2012, 18:23   Citer 

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 happy.gif

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 happy.gif

  Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 178
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Jeu 21 Jui 2012, 18:35   Citer 

Oui, effectivement je viens de vérifier sur émulateur et ça fonctionne parfaitement.
Le Grec : ce sont les algorithmes et la programmation qui sont au programme mais pas le TI-BASIC (dans mon lycée ils ont tous des Casio alors...). Et ce qu'on peut te demander au bac c'est d'écrire un algorithme ou de faire fonctionner un programme mais je pense pas qu'on puisse te demander d'écrire un programme parce que ça serait vraiment trop dur à corriger.

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 661
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Jeu 21 Jui 2012, 18:52   Citer 

Ah bon. Au temps pour moi. Je pensais qu'on était obligés de comprendre et de savoir faire des programmes simples sur Casio ou TI. Dommage, car ça aurait été pas mal de tomber là-dessus au bac. winkle.gif Ça nous aurait fait des points pour pas cher.

 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 178
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Jeu 21 Jui 2012, 19:00   Citer 


Citer
Je pensais qu'on était obligés de comprendre et de savoir faire des programmes simples sur Casio ou TI.


Ma prof nous a jamais parlé de ça en tout cas, mais je pense pas parce que vu qu'on a le droit d'avoir un peu près n'importe quel calculette, il faudrait qu'ils mettent pleins de langages différents. Par contre, il faut savoir faire un programme mais vu que tu ne va pas rendre ta calculette pour qu'on te la corrige (si on me demande ça je la rend pas godgrace.gif ), on ne peut que soit te demander d'écrire un algorithme ou alors de faire un programme et ils vérifieraient qu'ils fonctionne en te demandant des résultats. (Source : ma prof de maths)

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
blg_flg



Autorisation : Membre
Nb de messages : 661
Inscrit le : Mer 23 Mai 2012, 17:28
Posté le : Jeu 21 Jui 2012, 19:03   Citer 

Ainsi on te demanderait un algorithme avec des "demander", des "si", etc.? Si c'est le cas, j'aimerais bien que l'on fasse un programme inverse de celui de Maxence! Je trouve ça beaucoup plus compliqué.

 Adresse email Haut de page Bas de page 
 
Samos



Autorisation : Membre
Nb de messages : 300
Inscrit le : Lun 14 Mai 2012, 18:51
Posté le : Jeu 21 Jui 2012, 19:05   Citer 

Bientôt on pourra programmer dans sa langue maternelle godgrace.gif

 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 178
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Jeu 21 Jui 2012, 19:10   Citer 

Non, c'est pas franchement très difficile, surtout pas au niveau auquel on te le demandera. Normalement, comme tu sais programmer, tu ne devrais pas avoir de problème pour les algorithmes. En fait, c'est quasi la même chose tu verras sauf que pour faire un algorithme, tu n'as pas besoin de connaitre les fonctions de ta calculette. En plus, quand les autres essaieront de comprendre le programme, tu n'auras qu'à te concentrer sur l'algorithme godgrace.gif

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
Persalteas



Autorisation : Membre
Nb de messages : 2164
Inscrit le : Sam 23 Jan 2010, 20:09
Posté le : Jeu 21 Jui 2012, 22:23   Citer 

Mais je rejoins le Grec sur le fait que les "vieux" comme linkakro ou moi, qui n'ont pas appris l'algorithmique en cours de maths, pensent en TI-Basic quand il s'agit de réfléchir a un programme.

Même quand je programme dans d'autres langages, je raisonne en TI-Basic (et c'est pour ça que je suis nul en Axe :p )

 Adresse email Haut de page Bas de page 
 
F-BVXT



Autorisation : Membre
Nb de messages : 178
Inscrit le : Dim 27 Mai 2012, 20:38
Posté le : Jeu 21 Jui 2012, 22:42   Citer 

Oui c'est sûr qu'il doit y avoir un petit temps d'adaptation mais c'est presque comme apprendre un autre langage (beaucoup plus facile qu'un langage complet quand même), donc il y a pas de quoi s'inquiéter, surtout avec l'objectif de l'Etat d'avoir plus de 80% de réussite au Bac, je pense que la plupart des membres de ce forum sont largement capable de faire les algorithmes demandés.

----------------------
Il y a 10 types de personnes dans le monde : celles qui comprennent le binaire et celles qui ne le comprennent pas.
 Adresse email Haut de page Bas de page 
 
Poster un nouveau sujet Poster une réponse





  Powered by Fire-Soft-Board v1.0.10 © 2004 - 2024 Groupe FSB
Page générée en 9 requêtes
BlackOne par Grimmlink