Le
tutorial
de programmation
Cette page est destinée
à vous apprendre à programmer sur une TI.
Je vais y tenter d’expliquer la plupart des fonctions utilisables dans
un programme, je vais ensuite expliquer deux types de programmes : l'un
d'entre eux utilisant le graphique, l'autre l'affichage basique.
Remarques : Je montre quand il le
faut l'exemple pour remplir une
commande et ce symbole : / signifie "ou" et X et Y signifient abscisse
et ordonnée ou
rangée et colonne. Exemple : Output(X,Y,valeur/variable/"TEXTE")
il faut accompagner Output, d'une valeur pour la rangée, la
colonne, puis
d'une valeur quelconque ou d'une variable (A, B etc.) ou d'un texte
entre guillemets le tout séparé par des virgules.
Ce
symbole : / signifie "ou". Exemple : Output(X,Y,valeur/variable/"TEXTE"
Ce
symbole : [ ] represente une touche spécifique. Exemple :
[Math], Prb : Appuyer sur Math, se rendre dans le menu prb.
Inutile
de refermer les guillemets ou les parenthèses en fin de ligne.
La plupart des commandes peuvent se contenir les une dans les autres.
Lorsque je donne un exemple, j'écris ce qu'il faut écrire
sur la calculatrice puis j'explique ce à quoi cela
équivaut.
Débuter : Pour
créer un
programme : [Prgm], New, Create New, nommez votre programme, [Enter].
Pour
éditer un programme : [Prgm], Edit, choisissez votre programme.
Trés utile : Pour effacer une ligne de commande : [Clear].
Pour rajouter un
élément dans une ligne [2nd], [Del].
Pour stopper
brutalement un programme : [On].
Si vous ne voyez rien de ce qui se passe, haussez le contraste : [2nd],
[Haut].
Quand le contraste doit atteindre 9 pour y voir
clair, il serait bon de changer les piles...
Pour effacer un programme : [2nd], [+], Delete,
Prgm.
DIFFERENCIEZ BIEN LA VIRGULE "," DU POINT ".".
Maintenant il va falloir construire votre programme grâce entre
autre aux outils suivants :
- Le plus important : Store ([->]) : Store équivaut à
"devient la valeur de", il permet d’associer une valeur à une
variable.
Exemple :
:3->A
En lançant le programme A deviendra égal
à 3.
- Un autre très important : Random ([Math], Prb) : il permet de
donner une valeur au hasard entre 0 et 1 (rand). Pour obtenir une
valeur entre 0 et 292, il suffit de le multiplier par 292 (292rand).
Pour obtenir une valeur entre 6 et 292, il faut le multiplier par 286
et lui ajouter 6 (286rand+6). Pour obtenir un nombre entier
gràce à cette fonction, il faut rajouter Int ([Math],
Num) (int286rand+6). Le nombre obtenu peut être associé
à une variable : int7rand+1->X ou X sera une position sur
l'écran par exemple.
- Les outils Test ([2nd], [Math], Test) : ils permettent de comparer
des variables.
- Les outils Logic ([2nd], [Math], Logic) : ils permettent de lier
plusieurs conditions.
Exemple 1 : A=2 and B=4 équivaut à A=2 ET
B=4.
Exemple 2 : A=2 or A=4 équivaut à A=2 ou
bien A=4.
Exemple 3 : A=2 xor B=4 équivaut à A=2 ou
alors B=4.
Exemple 4 : notA équivaut à A=0
Tous ces outils ne s'utilisent qu'avec If, While ou Repeat.
- Les outils I/O ([Prgm], I/O dans l’éditeur de programme).
- Input : Input équivaut à "demander", il sert
à demander la valeur d’une variable.
Exemple 1 :
:Input A
En lançant le programme vous rentrerez la valeur
que deviendra A.
Exemple 2
:Input "PRESSION:",A
En lançant le programme vous rentrerez la valeur de
la pression que deviendra A.
- Disp variable/chiffre/"TEXTE" : Disp équivaut à
"afficher", il sert à afficher une valeur ou un texte (cependant
le texte doit comporter un
maximum de 16 caractères sinon voir exemple 3).
Exemple 1 :
:Disp A
En lançant le programme vous verrez la valeur
associée à A.
Exemple 2 :
:Disp "TEST"
En lançant le programme vous verrez
apparaître le mot TEST.
Exemple 3 :
Disp "CECI EST UN","TUTORIAL"
En lançant le programme vous verrez
apparaître ceci sur votre écran :
CECI EST UN
TUTORIAL
Exemple 4 :
:Disp "SCORE:",S
En lançant le programme vous verrez ceci sur votre
écran (si la valeur de votre score est 10) :
SCORE:
10
- DispGraph : Dispgraph équivaut à "afficher le
graphique".
Exemple :
:Dispgraph
En lançant le programme vous verrez votre graphique.
- DispTable : DispTable équivaut à "Afficher
le tableau".
Exemple :
:DispTable
En lançant le programme vous verrez votre tableau.
- Output(colonne,rangée,valeur/"TEXTE") : Output
équivaut à "afficher suivant les cordonnées", la
valeur de la colonne doit être comprise entre 1 et 16,
celle de la rangée entre 1 et 8.
Exemple 1 :
:Disp "SCORE:"
:Output(1,7,S
En lançant le programme vous verrez ceci sur votre
écran (si votre score est de 10) :
SCORE:10
- Getkey : Getkey équivaut à "appui de touche".
Getkey prend la valeur de la touche sur laquelle on appuie mais ce
n’est pas simple : la premiere touche
en haut à gauche porte la valeur 11, la suivante la
valeur 12 puis on ajoute 10 par ligne exemple : [2nd] = 21, [Clear] =
45, [Enter]=105
Exemple :
:If Getkey=21
:A+1->A
Si vous appuyez sur [2nd], A+1 deviendra A.
- ClrHome : ClrHome équivaut à "effacer
l’écran".
Exemple
:Disp « SCORE :
:Output(1,7,S
:Pause
:ClrHome
L’écran affichera la valeur de votre score puis il
s’effacera après que vous ayez appuyé sur [Enter].
- ClrTable : ClrTable équivaut à "effacer le
tableau"
Exemple :
:DispTable
:Pause
:ClrTable
L’écran Affichera le tableau puis l’effacera
après que vous ayez appuyé sur [Enter].
- Les outils Ctl ([Prgm], Ctl dans l’éditeur de programme).
- If (condition) : If équivaut à "si", il permet
d’entrainer une conséquence à un fait. Si la
conséquence voulue est simple (une ligne de commande) If peut
s’utiliser seul, sinon, vous aurez besoin de Then et bien
sur de End.
Exemple 1 :
:If A=B
:3->B
Si A est égal à B, B deviendra égal
à 3.
Exemple 2 :
:If A=B and B=4
:3->B
Si A=B=4, B deviendra égal à 3
Exemple 3 :
:If not A
:1->A
Si A=0, A deviendra égal à 1.
- Then : Then équivaut à "alors", il ne s’utilise
que précédé de If. Il sert à inclure une
conséquence plus compliquée que précedement. Il
faut penser à le
faire suivre de End pour ne pas corrompre le programme.
Exemple
:If A=B
:Then
:3->B
:5->C
:End
Si A est égal à B, B deviendra égal
à 3 et C deviendra égal à 5.
- Else : Else équivaut à "sinon", il ne s’utilise
que précéde de If et de Then et suivi de End. Il sert
à introduire une conséquence si le fait n’est pas juste.
Exemple
:If A=B
:Then
:3->B
:Else
:B-1->B
:End
Si A est égal à B, alors B deviendra
égal à 3, sinon, B-1 deviendra B
- For (variable,début,arrivée,écart) : For
contient la notion de boucle : la commande comprise entre For et End
commencera pour la variable égale à la
valeur de début puis continuera avec la même
variable plus l'écart jusqu'à atteindre la valeur
d'arrivée. Si l’on ne donne pas de valeur pour l'écart, il
sera égal à 1. Il faut penser à le
faire suivre de End pour ne pas corrompre le programme. Si par erreur
une de vos boucles est infinie, [On] pour
stopper le programme brutalement.
Exemple
:For(X,1,10,0.5
:Disp X
:End
En lançant le programme, on verra défiler
les chiffres 1, 1.5, 2 jusqu'à 10 sur l’écran (puisque X
adopte la valeur de 1 puis de 1.5 puis de 2 etc…).
Cette fonction peut être utile pour éviter
une Pause :
:Disp "TEST
:For(T,0,200
:End
:ClrHome
L’écran affichera le mot TEST pendant une courte
durée avant de s’effacer (augmenter la valeur de
l’arrivée augmentera la durée).
- While (condition) : While équivaut à "du moment
que" : la commande comprise entre While et End sera executée en
boucle si la condition est vraie, sinon
le programme passera aux commandes écrites
après End.
Exemple :
:While A>0
:A-1->A
:End
:36->A
Du moment que A est supérieur à 0, A-1
deviendra A et ainsi de suite... Quand A sera ne sera plus égal
à 0, 36 deviendra la valeur de A.
- Repeat (condition) : Repeat est très très
semblable à While mais la commande écrite entre Repeat et
End sera executée au moins une fois même si la
condition est fausse
- End : End équivaut à "fin de la commande" et
cette commande peut etre le groupe If, Then, le groupe If, Then, Else
ou bien While, Repeat, For...
- Pause : La pause fige le programme jusqu'à ce que l'on
appuie sur [Enter].
Exemple :
:Disp "SCORE:",S
:Pause
:ClrHome
En lançant le programme, vous verrez la valeur de
votre score jusqu'à ce que vous appuyez sur [Enter] et
l'écran s'effacera.
La pause
peut être évitée grâce à For :
:Disp "SCORE",S
:For(T,0,200
:End
:ClrHome
En lançant le programme, vous verrez la valeur de
votre score pendant une courte durée et l'écran
s'effacera.
- Lbl lettre/nombre : Lbl équivaut à "début
de", il permet de marquer un point de départ.
Exemple :
:Lbl A
:A+1->A
- Goto lettre/nombre : Goto équivaut à "aller
à", il permet de se rendre à un point de départ
s'il est marqué bien evidemment.
Exemple :
:Lbl A
:A+1->A
:If A>100
:Goto 2
:Goto A
:Lbl 2
En lançant le programme, A+1 deviendra A puis le
programme renverra au début, donc A+1 deviendra A etc. mais si A
devient supérieur à 100, le
programme se rendra au point de départ 2 et donc
quittera la première zone.
A EVITER :
:Lbl A
:rand+12->A
:Goto A
En lançant le programme, il tournera en rond ne
cessant de se renvoyer à A si par erreur cela vous arrive, [On]
pour un arrêt brutal du programme.
- Menu("TITRE","OPTION1",lettre/nombre,"OPTION2",lettre/nombre) -
Cette commande permet de créer un menu qui enverra suivant
l'option choisi
à un point de départ précis.
Exemple :
:Menu("JEU","JOUER",J,"QUITTER",Q)
:Lbl J
:tout votre jeu
:Lbl Q
:ClrHome
:Stop
En lançant le programme, si vous choisissez de
jouer, vous jouerez à votre jeu, si vous choisissez de quitter,
l'écran s'effacera et le programme se
terminera.
- Stop : Stop marque la fin du programme.
Exemple :
:Lbl 5
:Disp A
:If A=12
:Stop
:A+1->A
:Goto 5
En lançant le programme, la valeur de A
s'affichera, puis la valeur de A+1 etc. si A est égal à
12, le programme s'arretera.
- Les outils Draw : ils permettent d'afficher un image ou un dessin.
- Comment dessiner?
Pour dessiner, vous avez la fonction Pen, la
fonction Pt-On(X,Y) et Pt-Off(X,Y), les fonctions Vertical(X) et
Horizontal(Y), la fonction
Circle(X,Y,Rayon) et enfin la fonction Line(X1,Y1,X2,Y2),
toutes ces fonctions sont accessibles
ainsi : [2nd], [Prgm], Draw/Points.
Pour un beau dessin, il faut d'abord enlever tout ce qui
est present sur le graphique (effacer les fonctions, les axes
([Window], Format, AxesOff), les
dessins ([2nd], [Prgm], ClrDraw)).
Pour effacer son dessin : [2nd], [Prgm], ClrDraw.
Pour enregistrer son dessin : [2nd], [Prgm], Sto, StorePic,
[Vars], Picture, Pic1/2/3/4/5/6...
Pour ouvrir un dessin enregistré : [2nd], [Prgm], Sto, RecallPic,
[Vars], Picture, Pic1/2/3/4/5/6...
- Les fonctions : Pt-On(X,Y) - dessiner le point de
coordonnées (X,Y).
Pt-Off(X,Y) - effacer le point de coordonnées (X,Y).
Pxl-On(X,Y) - allumer le pixel X,Y (1<X<62 et 1<Y<94).
Pxl-Off(X,Y) - éteindre le pixel X,Y (1<X<62 et 1<Y<94).
Pxl-Test(X,Y) - tester si le pixel X,Y est allumé ou non, s'il
l'est Pxl-Test=1 sinon Pxl-Test=0.
Vertical(X) - tracer la ligne vertical passant par le point d'abscisse
X.
Horizontal(Y) - tracer la ligne horizontale passant par le point
d'ordonnée Y.
Circle(X,Y,R) - tracer un rond de centre (X,Y) est de rayon R.
Line(X1,Y1,X2,Y2) - tracer une ligne du point de coordonnées
(X1,Y1) au point de coordonnées (X2,Y2).
sont toutes utilisables dans un programme : elles permettent de
voir le dessin s'afficher en direct (exemple : tir dans Starwars). Mais
attention au Zoom! Il est parfais sujet à des problèmes
dans le cas d'un dessin qui apparait dans un programme en effet
dessiner le point 1,2 sous un zoom standard et sous un zoom integer ne
reviendra pas du tout au même alors comment changer de zoom dans
un programme : [Zoom] et choisissez! Rien de plus simple... Remarques :
ZoomStandard : -10, 10 l'affichage basique mais l'échelle des
ordonnées n'est pas la même que celle des abscisses...
ZoomInteger : le plus pratique pour le dessin puisque un point = un
pixel !
ZoomSquare : il permet de tracer des ronds ronds (essayer avec
ZoomStandard vous verrez) car l'échelle des ordonnées et
des abscisses est
la même.
- Les outils GDB : ils permettent de rappeler des paramètres de
fenêtre.
A un GDB est associé : la valeur de Xmin, Xmax,
Xscl, Ymin, Ymax, Yscl, CoordOn/Off, AxesOn/Off, GridOn/Off.
Pour enregistrer un GDB : Régler les
paramètres voulus, [2nd], [Prgm], Sto, StoreGDB, [Vars], GDB,
GDB1/2/3/4/5/6...
Pour rappeler un GDB : [2nd], [Prgm], Sto, RecallGDB,
[Vars], GDB, GDB1/2/3/4/5/6...
Maintenant que vous avez compris toutes les commandes utilisables dans
un programme, je vais vous expliquer comment les utiliser en
décortiquant le contenu de deux de mes programmes. Le premier :
SLALOM :
:ClrHome
Toute
cette partie commande la présentation de début.
:Output(4,6,"MAXIME
:Output(5,5,"PRESENTE
:For(T,0,300
:End
:ClrHome
:Output(4,6,"SLALOM
:For(T,0,300
:End
:4->A
A
est en fait la hauteur initiale des skis, pour qu'ils débutent
au milieu de l'écran, A doit être egal à 4.
:0->S
S est en fait le score, il est mis à zéro en début
de partie.
:Lbl 0
Lbl 0 : point de départ du jeu.
:ClrHome
Effacement de l'écran.
:round(7rand+1,0)->X
Toute cette partie sert à donnerune valeur au hasard de la
hauteur de la porte dans laquelle il faut passer.
:If X#1
:Output(X-1,8,"+
:If X#8
:Output(X+1,8,"+
:16->B
:Lbl
1
Lbl 1 : point de
départ du défilement des skis.
:Output(A,B,"=
:B-1->B
:getKey->K
Toute cette partie
commande la réaction des skis si l'on appuie sur une touche.
:If (K=105 or K=25) and
A#1
Si on appuie sur [Enter] ou [Haut] la valeur de la hauteur A monte d'un
cran.
:A-1->A
:If (K=104 or K=34) and A#8
:A+1->A
:If A=X and
B=8
Si au niveau de la porte on est bon, le score monte de 1.
:S+1->S
:If A->X and B=8
Sinon, game over...
:Then
:ClrHome
:Disp ""," TU AS LOUPE"," UNE PORTE!!"," SCORE:
:Output(4,8,S
:Pause
:Lbl Q
:ClrHome
:Goto Q
:End
:If
B=1
Si les skis arrivent au bout de l'écran, retour au début
(sans remise à zéro du score évidemment).
:Goto 0
:Goto 1
Retour
systématique au défilement des skis (faut bien qu'ils
avancent !).
Deuxième programme : BAZOOKA :
:RecallGDB
GDB2
Rappel d'un paramètre de fenêtre
(Xmin, Xmax, Ymin, Ymax, Axes, Coord, Grid...)
:ClrHome
Toute cette partie commande la
présentation de début.
:Output(4,6,"MAXIME
:Output(5,5,"PRESENTE
:For(T,0,300
:End
:ClrHome
:Output(4,5,"BAZOOKA
:For(T,0,300
:End
:ClrHome
:Lbl
0
Lbl 0 : Point de départ du jeu.
:Menu("BAZOOKA","JOUER",J,"QUITTER",Q
Menu de début.
:Lbl J
:ClrDraw
:31->X
Détermination de la position de la minuscule cible à
toucher.
:int (45rand+10)->Z
:For(T,0,50
Début de la boucle (le compte à rebour en fait).
:Pxl-On(Z,1
Dessin du personnage suivant des variables (important pour pouvoir le
faire bouger).
:Pxl-On(X,85
:Pxl-On(X-1,85
:Pxl-On(X-2,85
:...
J'abrège un peu pour le dessin il est très long...
:getKey->K
Cette partie commande la réaction du personnage suivant les
touches appuyées.
:If K
:ClrDraw
:If
K=25
Si l'on appuie sur [Haut] la variable de hauteur descend ce qui fait
remonter le personnage.
:X-1->X
:If
K=34
A l'inverse, il descendra.
:X+1->X
:End
Fin du compte à rebour.
:For(Y,1,77
Le missile se rapprochera de plus en plus de la cible au fur et
à mesure de la boucle.
:80-Y->W
:Pxl-On(X,W
:Pxl-On(X,W-1
:Pxl-Off(X,W+1
:End
Fin du tir.
:If
X=Z
Si le missile est au niveau de la cible c'est gagné sinon c'est
perdu !
:Then
:Text(25,30,"BRAVO!
:Else
:Text(25,30,"TIR MANQUE...
:End
:Pause
:Goto
0
Retour au menu.
:Lbl
Q
Lbl Q : point de départ de la sortie du jeu.
:RecallGDB
GDB1
Rappel des paramètres de fenêtre standard.
- Pour finir : votre programme ne fonctionne pas? Explication des
erreurs les plus fréquentes:
- Argument : il manque des données pour l'execution d'une
commande. Exemple : il manque la valeur de l'abscisse d'un point
à dessiner.
- Syntax : vous avez rentré une donnée
erronée. Exemple : If =3 : il manque quelque chose !
- Domain : vous avez rentré une donnée trop
élevée. Exemple : Output(20,2,"TEST") : l'écran ne
comporte pas plus de 16 colonnes !
- Label : vous demandez l'envoi à un point de
départ qui n'existe pas.
- Overflow : une valeur depasse 10^99
- Undefined : vous demandez l'ouverture d'un fichier qui n'existe
pas (image, GDB...)
- Enfin si votre programme ne fait pas ce qu'il devrait assurez
vous d'avoir bien placé les marqueurs End.
- Comment mettre son programme sur ordinateur?
- Téléchargez TI Graph Link.
- Installez le, démarrez le.
- Onglet "Link", "Receive", "Individual File"
- Envoyez de votre calculatrice à l'ordi par le cable.
gràce à la procédure habituelle ([2nd], [X, T,
Téta], Select Current, Send).
- Si le transfert ne fonctionne pas : onglet "File", "New
program", "Window" ," TI82 Keypad", recopiez au clavier en respectant
les espaces
obligatoires ou à la souris et enregistrez
votre programme.
Voilà je pense que mon tutorial est terminé... Je
n'utilise que ces commandes pour mes jeux mais je sais que
l'utilisation de listes et de matrices que je ne maitrise pas peut
être fort pratique. Mais la programmation en TI Basic a des
limites, certains programmes se voient ralentir au fil du temps pour
une raison inexpliquée voila pourquoi certains de mes programmes
ont un menu et d'autre non, car certains doivent s'arrêter pour
ne pas ralentir encore plus...
J'éspère
vraiment que mes explications vous aideront à créer plein
de petits jeux
sympas ou des programmes de calcul bien utiles...
Faites moi parvenir vos programmes créés ici,
s'ils sont interressants je les mettrait en ligne.
Un ptit mail de
remerciement pour le travail que représente cette page fera
toujours
paisir...
Les jeux
Comment
transférer
les jeux sur votre calculatrice?
Comment
fabriquer son propre
cable de liaison?
Retour à
l'acceuil