Apprenez à programmer en TI-Basic !
Last updated on Friday, June 21, 2013
  • 1 semaine
  • Facile

Free online content available in this course.

Got it!

Concevoir ses premiers programmes

C'est donc ici que vous allez faire vos premiers pas en TI-Basic. Ne vous inquiétez pas, tout est détaillé et facile à comprendre, mais n'hésitez pas à relire plusieurs fois si nécessaire pour les plus coriaces d'entre vous. :pirate:
De plus, n'oubliez pas que le sujet Apprenez à programmer en TI-Basic ! est là pour vous si vous avez des questions (il faut naturellement être inscrit au site).

Les groupes d'instructions

Bien, prenez votre calculatrice dans les mains, allumez-là, et calculez-moi $$78 \times (54+7)$$. Allez, et que ça saute !
La combinaison de touches est :

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur

Je suppose que vous ne serez pas très étonnés d'avoir en face de vous l'écran suivant :

Image utilisateur

Pourtant, pour calculer cette expression, la calculatrice a dû l'interpréter afin de donner le résultat souhaité. Notez bien que cette expression peut aussi s'appeler une instruction.

Maintenant, admettons que vous vouliez calculer $$\sqrt{78 \times (54+7)} + 78 \times (54+7)$$. On a une même expression qui apparait deux fois. Mais il serait trop fatiguant de la taper les deux fois, non ? Lorsqu'une expression est calculée, le résultat est mémorisé dans quelque chose de spécial se nommant Ans. Et nous allons utiliser ce Ans qui remplacera le résultat de la dernière expression.

Il va alors nous suffire de taper sur l'écran principal √(Ans)+Ans puis ENTER et de lire le résultat :

Image utilisateur

Mais admettons à présent que vous en ayez rien à faire du résultat de $$78 \times (54+7)$$ mais que vous vouliez seulement celui de $$\sqrt{78 \times (54+7)} + 78 \times (54+7)$$.
Commencez alors par taper la première expression, ensuite, insérez les deux-points avec

Image utilisateur
Image utilisateur

puis tapez la seconde expression, et enfin, validez avec ENTER :

Image utilisateur

Que s'est-il passé ? Vous avez tout simplement demandé à la calculatrice de calculer plusieurs expressions, les unes à la suite des autres. Et c'est bien sûr ce qu'elle a fait. La première expression a affecté la valeur de Ans, et cela a permis à la seconde de faire son boulo.

Vous pouvez vous amuser à taper autant d'expressions que vous le souhaitez, du moment que vous les séparez à chaque fois par ":". On appelle ça un groupe d'instructions.

Voici un exemple où l'on calcule $$\left ( \sqrt{78 \times (54+7)} + 78 \times (54+7) \right ) ^2 + \left ( \sqrt{78 \times (54+7)} + 78 \times (54+7) \right ) ^3$$ :

Image utilisateur

La suite d'expressions est ici : 78*(54+7):√(Ans)+Ans:Ans²+Ans³

En encadrant les différentes expressions chacune par une couleur, ça donne ça :

Image utilisateur

En effet, Ans remplace la valeur de la dernière expression calculée. Donc, si on remplace la première expression par une boîte bleue, on peut se permettre dans l'expression suivante d'utiliser la boite bleue sans se préoccuper de ce qu'il y a dedans. De même, en mettant le tout dans une boîte rouge, on peut se permettre de l'utiliser.

Comme vous êtes à présent des AS des groupes d'instructions, on peut s'attaquer aux résultats et nous pourrons enfin en arriver aux programmes !

Les résultats

Sur l'écran principal

Avant de s'attaquer enfin aux programmes, abordons les résultats. Dans nos exemples précédents, les résultats des expressions étaient 4758, 4826.978257, et 1.124905372*1011. Le plus souvent, un groupe d'instructions retournera un résultat.

Quoi !? Parce-qu'un calcul, ça peut retourner... rien du tout ?

Souvenez-vous, je vous ai dit qu'une expression pouvait aussi être appelée une instruction... mais une instruction n'est pas forcément un calcul. Elle peut simplement demander d'effectuer quelque chose de précis sans renvoyer de valeur. Par exemple, entrez la chose suivante sur l'écran principal puis validez (en utilisant le catalogue, détaillé dans le premier chapitre) :

Clear Entries
ou
Efface entrées

Vous obtenez alors l'écran suivant :

Calculatrices
anglaises

Calculatrices
françaises

Image utilisateurImage utilisateurImage utilisateurImage utilisateur

Le Done (ou Fait) indique que l'instruction a bien été exécutée, mais sans rien retourner. Par ailleurs, la valeur de Ans n'a pas été modifiée.

Essayez d'ailleurs de n'entrer que les deux-points :

Image utilisateur

Là aussi, il n'y a pas de résultat. Et s'il y a au moins deux instructions vides après une expression, il n'y a de même pas de résultat :

Image utilisateur

Cependant, la valeur de Ans a été modifiée.

Avec un programme

Enfin ! :p
Alors, pour créer un programme, pressez d'abord

Image utilisateur

, puis allez dans la colonne NEW ou NOUV et validez. Tapez le nom du programme (ALPHA est activé par défaut), et validez. Voici ce que vous obtenez (selon le nom que vous avez choisi) :

Image utilisateur

Vous pouvez voir tout en haut de l'écran le nom de votre programme, et à la ligne d'en dessous, deux-points ":" suivis du curseur. Ne rentrez rien mais sortez plutôt du programme en faisant

Image utilisateur
Image utilisateur

. Exécutons le programme. Il faut pour cela mettre son identification sur l'écran principal. Allez dans le menu

Image utilisateur

, placez le curseur sur votre programme (dans la colonne EXEC) et pressez

Image utilisateur

. Voici alors ce que vous pouvez observer :

Image utilisateur

La mention prgm indique que l'on veut exécuter un programme, et le nom doit suivre cette mention. Pressez à nouveau

Image utilisateur

:

Image utilisateur

Visiblement, il ne s'est rien passé : logique, puisqu'il n'y a pas de contenu. Le Done indique que le programme s'est bien exécuté mais que celui-ci n'a rien renvoyé.

Maintenant, on va lui mettre du contenu, dans ce programme. On va éditer le programme en faisant

Image utilisateur
Image utilisateur

puis en sélectionnant le programme (dans notre exemple : PREMPROG). Pour le contenu, c'est un jeu d'enfant, car toute instruction valable sur l'écran principal marche également dans un programme. On peut par exemple y mettre un calcul, comme "58*74+23". Ensuite, on quitte le programme et on l'exécute :

Code du programme

Résultat du programme

Image utilisateurImage utilisateurImage utilisateurImage utilisateur

Il s'est passé exactement la même chose que si vous l'aviez tapé sur l'écran principal. Pour l'instant, cela peut paraitre inutile. Nous verrons dans la sous-partie suivante quelques commandes qui nous permettent d'améliorer cela.

Dans un programme, comme sur l'écran principal, il est possible d'entrer plusieurs instructions. Pour cela, on peut soit les séparer par ":" (comme avec l'écran principal), soit passer à la ligne suivante avec

Image utilisateur

. Notez d'ailleurs qu'une ligne commence toujours par ":". S'il n'y en a pas, c'est alors ce qui déborde d'une autre ligne.

Les programmes suivants sont ainsi identiques :

:78*(54+7):√(Ans)+Ans

:78*(54+7)
:√(Ans)+Ans

Pour insérer à quelque endroit du programme une nouvelle ligne, il suffit de faire

Image utilisateur
Image utilisateur
Image utilisateur

.
Pour effacer le contenu d'une ligne, il faut faire

Image utilisateur

.
Pour supprimer une ligne, il faut soit que celle-ci soit vide puis taper

Image utilisateur

, soit être à la fin de la ligne précédente puis taper

Image utilisateur

.

Un petit exo

Sans pratique, on ne retient rien. Nous allons donc ici faire un mini-exo qui consiste à automatiser le calcul de l'image d'une fonction. L'interface ne sera pas extra, mais nous verrons comment changer cela plus tard.

Soit la fonction $$f$$ définie par $$f(x) = \sqrt{x - 5} + x^3 - 78x$$
Si l'on veut calculer des images par f, il ne serait pas très confortable de les calculer une par une à la main. Nous allons automatiser cela.

Créer un nouveau programme se nommant CALCFN, et y mettre le contenu suivant :

:√(Ans-5)+Ans³-78Ans

Ans remplace donc ici x. Pour calculer des images, il suffit donc de mettre dans Ans leur antécédent puis l'exécution de prgmCALCFN sur l'écran principal, en validant à chaque fois :

10:prgmCALCFN
15:prgmCALCFN
π+12.3:prgmCALCFN
prgmPREMPROG:prgmCALCFN

Dans chacun des cas, la première valeur sera placée dans Ans qui lui-même sera utilisé par le programme. À chaque validation, le résultat sera affiché.
Les deux derniers exemples montrent que nous ne sommes pas limités à de simples valeurs, mais également aux expressions, ou aux appels de programmes... (ici, PREMPROG que nous avons auparavant construit, met 4315 dans Ans, mais il pourrait tout aussi bien ne pas changer sa valeur)

Les commandes d'exécution

Jusqu'à présent, toutes les instructions de nos programmes étaient uniquement composées d'expressions. Mais une instruction peut contenir autre chose : une commande d'exécution (ce que nous allons voir ici), une commande de structure (qui sert pour les boucles que nous verrons plus tard) ou une commande de stockage (servant pour les variables que nous étudierons également plus tard).

Voici une commande que nous avons déjà rencontrée :

Clear Entries
ou
Efface entrées

Comme de nombreuses commandes d'exécution et de structure, cette commande ne renvoie rien : elle ne change donc pas non plus Ans.
Les commandes permettent de faire diverses choses, comme afficher du texte, par exemple, ou encore demander un nombre à l'utilisateur. Mais ça peut aller beaucoup plus loin ! Nous ne verrons ici que quelques commandes d'exécution basiques.
Mais attention ! Les commandes que nous allons voir ne sont pas exécutables à partir de l'écran principal. Eh oui, celui-ci est bien limité...

Pour les trouver, aller dans le menu

Image utilisateur

à partir de l'édition d'un programme.

Effacer l'écran

Voici la commande : ClrHome ou EffEcr
Elle ne fait qu'effacer l'écran, l'historique des entrées est donc conservé.
La valeur de Ans n'est pas modifiée.

Voici les étapes détaillées pour accéder à cette commande :

Image utilisateurImage utilisateurImage utilisateurImage utilisateurImage utilisateurImage utilisateurImage utilisateurImage utilisateur

Il faut être dans l'édition
d'un programme.

Image utilisateur

Appuyer sur

Image utilisateur

Appuyer sur

Trois possibilités :

  • Image utilisateurImage utilisateur
  • Image utilisateurImage utilisateurImage utilisateur

    *8

  • Image utilisateurImage utilisateurImage utilisateur

    *5

Avec un peu d'habitude, vous connaitrez la position des commandes par cœur, et il sera plus rapide de les insérer en utilisant la première méthode (plutôt que d'appuyer plein de fois sur les touches directionnelles). Je ne détaillerais pas l'emplacement pour les autres commandes, à vous de vous balader dans le menu pour les trouver. Vous trouverez en annexe du tutoriel une liste des commandes de la TI (non exhaustive) qui renseigne à chacune d'entre elles la séquence de touches pour l'insérer ainsi que la correspondance anglais <=> français.

L'affichage

Disp

Jusqu'ici, nous ne pouvions afficher qu'une seule chose dans un programme, grâce au résultat de celui-ci. Voici donc une commande qui permet d'afficher ce que l'on veut, et quand on veut : Disp
Il suffit de la faire suivre par ce que l'on veut afficher. Exemple :

:25*35
:Disp Ans // affiche 875
:Disp 2Ans // affiche 1750

Programme
en anglais

Programme
en français

Résultat

Image utilisateurImage utilisateurImage utilisateurImage utilisateurImage utilisateurImage utilisateur

Le Done est logique : notre programme ne retourne pas de résultat ! Il a cependant affecté Ans.

Il est possible d'afficher plusieurs choses avec Disp en séparant les différents éléments avec la virgule de séparation (et non le point) qui se trouve ici :

Image utilisateur

Notre programme peut donc se simplifier comme ceci :

:25*35
:Disp Ans,2Ans

Le résultat est exactement le même. Notez que l'on peut aussi afficher du texte, il suffit pour cela de mettre l'élément entre guillemets :

:Disp "HELLO !"

Voici le résultat :

Image utilisateur

Vous pouvez aussi mettre plusieurs éléments lorsque vous affichez du texte. Une p'tite restriction : chaque portion de texte ne doit excéder 16 caractères (la largeur de l'écran). Il faut donc diviser un long texte en plusieurs parties :

Ne faites pas ceci :

:Disp "SALUT, COMMENT VAS-TU ?"

Mais :

:Disp "SALUT, COMMENT","VAS-TU ?"

Un affichage avec Disp ne modifie pas la valeur de Ans.

Output

La commande Output( permet d'afficher du texte à un endroit localisé. Elle prend trois arguments : le premier, le numéro de ligne, le deuxième, le numéro de colonne, et le troisième, le texte. Un petit exemple :

:Output(5,2,"HELLO !!")

Résultat :

Image utilisateur

Comme vous pouvez le voir, cela ne change pas le curseur d'emplacement. Les numéros de ligne et de colonne peuvent également être des expressions. Exemple :

:Output(Ans+3,4*2,"HELLO !!")

Mais le résultat doit être un entier strictement supérieur à 0, et inférieur ou égal à 16 pour la colonne et 8 pour la ligne. Le texte peut être aussi long que l'on veut. S'il sort de l'écran, il déborde sur la ligne d'après :

:Output(5,7,"HELLO WORLD !!")

Résultat :

Image utilisateur

On peut également afficher un nombre avec Output, par exemple : Output(5,2,4Ans-5).

Remarque : il n'y a pas de "Done" lorsque la dernière instruction exécutée fait usage de la commande "Output".

Un affichage avec Output ne modifie pas la valeur de Ans.

Les pauses

Ouf ! après tout ce boulo, je ferai bien une pause ! Malheureusement, ce n'est pas de cela que nous allons parler. >_

Voici la commande : Pause
Elle permet de marquer une pause. Des petits pixels clignotent en haut à droite en attendant que l'utilisateur presse ENTER.

Notez qu'il est également possible d'ajouter quelque chose après cette commande : un élément à afficher. Mais un seul. Pour le texte, vous pouvez alors le faire de la longueur que vous souhaitez, l'utilisateur n'aura qu'à le faire défiler avec

Image utilisateur

et

Image utilisateur

.

Un affichage avec Pause modifie la valeur de Ans.

En résumé :
les commandes d'exécution servent à effectuer des actions précises comme par exemple effacer l'écran avec ClrHome ou EffEcr, afficher du texte ou des nombres avec Disp, ou encore marquer une pause avec Pause. Parfois, elles ne nécessitent pas d'arguments, parfois, il faut en mettre, et parfois, on peut choisir d'en mettre ou pas.

L'optimisation

Votre TI n'a pas beaucoup de mémoire RAM dispo (à peine plus de 20Ko). Il serait donc bien de rendre chaque programme le plus léger possible afin qu'il ne prenne pas trop de place dans la mémoire. À votre niveau, je ne peux que vous apprendre quelques techniques bien précises. La première et la plus connue est de ne pas fermer les parenthèses (à la fin d'une instruction). Par exemple :

:Output(1,1,"HELLO !")

devient :

:Output(1,1,"HELLO !"

De plus, il est également possible de ne pas fermer les guillemets. On peut donc même écrire :

:Output(1,1,"HELLO !

En revanche, la fermeture des guillemets reste obligatoire si le changement d'instruction se fait via ":" et non un retour à la ligne. Donc le code suivant :

:Output(1,1,"HELLO !:ClrHome

affiche exactement "HELLO !:ClrHome". On peut en effet afficher en tant que texte des commandes. Si vous ne voulez pas afficher ":ClrHome" mais effacer l'écran, il faut donc passer à la ligne :

:Output(1,1,"HELLO !
:ClrHome

D'autre optimisations sont possibles pour gagner de la place. Par exemple :

Ans/10

devient :

.1Ans

car il est possible de ne pas spécifier le "0" avant la virgule d'un nombre ne possédant pas de partie entière. Ici, non seulement on gagne un octet, mais en plus de la vitesse car les multiplication sont plus rapides que les divisions. Si une même expression est utilisée plusieurs fois, il faut la mettre dans Ans pour l'utiliser par la suite :

:Output(2Ans+5,2Ans+5,"HELLO !

devient :

:2Ans+5
:Output(Ans,Ans,"HELLO !

On gagne des octets et de la rapidité. Ah, au fait, beaucoup de caractères et commandes ne prennent que un octet, mais certaines en prennent 2. C'est le cas de Clear Entries. Essayez donc toujours de grappiller dans la mesure du possible des octets par ci par là, c'est toujours ça de gagné.

Après toutes ces choses que vous avez apprises, vous avez maintenant le niveau pour l'utilisation des variables !
Nous ferons au fur et à mesure du tutoriel des choses de plus en plus avancées.

PS : je vous conseille de pratiquer dès maintenant, c'est-à-dire de faire votre propre programme avec ce qu'on vient d'apprendre histoire de s'en souvenir : afficher des nombres, du texte, marquer une pause...

The author

Check out this course in other formats...

Example of certificate of achievement
Example of certificate of achievement