Version en ligne

Tutoriel : Apprendre le TI-basic pas-à-pas

Table des matières

Apprendre le TI-basic pas-à-pas
Introduction dans l'univers Texas Intruments
Le TI-Basic
Présentation de la calculatrice : les touches
Présentation de la calculatrice : l'écran
Tout un programme !
Créer un programme
Accéder au code du programme
Exécuter un programme
Gestion des programmes
Afficher du texte
Écrire sur sa calculatrice
Afficher du texte avec Disp
Afficher du texte avec Output
Effacer l'écran
Mini-TP : "Hello World"
Gérer les variables
Vous avez dit variable ?
Utiliser les variables
Interagir avec l'utilisateur
Mini-TP : Calculer le volume d'un cylindre
Les conditions
Le principe
Les tests
La condition "Si"
D'autres conditions
Mini-TP : Loi de Descartes
Les boucles
Le principe
Les boucles simples
La boucle par incrémentation
Mini-TP : Probabilité d'anniversaires identiques
Ordre de lecture du programme
Poser une étiquette
Se rendre à une étiquette
Mettre le programme en pause
Arrêter le programme avant la fin
Gérer l'appui sur les touches
Les numéros de touches
Récupérer le numéro de la touche pressée
Utilisations concrètes
TP : Créer son premier jeu
Le cahier des charges
Quelques indices pour procéder
Correction
Les fonctions en français
Bien utiliser le tableau
Le tableau de traduction

Apprendre le TI-basic pas-à-pas

Bonjour à vous, Zéros lecteurs !

Lors du passage du collège au lycée, vous devez généralement vous équiper d'une calculatrice plus puissante (chez TI, on parle de calculatrices graphiques). Elle gère généralement les graphiques, permet la création de programmes, etc.
Bref, c'est un gros changement, et au début, on s'y perd un peu. :euh:

Nous allons donc essayer de faire en sorte que vous puissiez utiliser tout le potentiel de programmation du TI-BASIC !

Si vous voulez plus de renseignements sur cette marque, je vous invite à aller sur le site officiel de Texas Instruments (en français).

Introduction dans l'univers Texas Intruments

Le TI-Basic

Parler de "l'univers Texas Instruments" est peut-être un peu fort, il s'agit pourtant d'une marque très connue et importante de calculatrices ! Si vous êtes au lycée, vous avez peut-être remarqué qu'une autre marque est en vogue : Casio. Il y a quelques années, les Hewlett Packard était aussi recommandées dans les lycées, mais maintenant on n'en entend presque plus parler. :euh:

Ok, mais moi c'est Texas Instruments qui m'intéresse : ça se passe comment chez eux, alors ?

Le TI-Basic

Introduction dans l'univers Texas Intruments Présentation de la calculatrice : les touches

Le TI-Basic

Qu'est ce que le TI-Basic ?

Comme vous avez pu le lire précédemment, vous êtes ici pour apprendre le TI-Basic !

Et... c'est quoi, le TI-Basic ?

Il s'agit du langage de programmation des calculatrices graphiques de chez TI. On peut décomposer le nom en deux parties : TI, comme le nom du constructeur (quelle originalité :p ), et Basic, qui indique qu'il appartient à la famille des langages BASIC. Autrement dit, c'est un langage qui n'est pas très compliqué à comprendre et à utiliser ; en revanche, il ne sera pas très puissant ! Heureusement, les calculatrices ne sont pas très puissantes ; ce n'est donc pas bien grave.

Le TI-Basic dispose d'un avantage énorme : il est directement programmable sur votre calculatrice. Cela signifie que vous pourrez même programmer en cours. :-°

De quoi est-il capable ?

Bien qu'il soit assez limité (eh oui, hors de question de faire des jeux en 3D), il reste très pratique et fonctionnel. Il vous permettra ainsi de faire :

Comme vous pouvez le constater, vous pourrez faire quelques trucs pouvant être assez sympas. Et croyez-moi, c'est très agréable quand on veut résoudre une équation du second degré sans se casser la tête, et qu'un joli programme vous donne la réponse toute prête !

Et ça marche comment ?

En fait, c'est assez simple : il suffira d'écrire des instructions les unes à la suite des autres et la calculatrice va bêtement faire ce qu'on lui demande. Bien sûr, ces instructions doivent avoir un sens, il ne suffit pas d'écrire ce qu'on veut en français pour que ça marche. Ce sont ces instructions que VOUS allez apprendre !

Bon : allez, comme un exemple vaut mieux qu'un long discours :

:Prompt A
:Disp A

Notez que le code est notifié comme étant du Pascal. Ce n'est pas du tout le cas, mais comme il n'existe pas de coloration syntaxique disponible pour le TI-basic, on utilise celle du langage Pascal pour quand même avoir un peu de couleur. :D

Pour le moment, ne nous intéressons pas au code, mais plutôt à la manière dont il est écrit : votre calculatrice va lire la première ligne et l'interpréter (Prompt A ) puis, quand elle aura fini, elle passera à la seconde ligne (Disp A ) et ainsi de suite (sauf qu'ici, il n'y a que deux lignes, il ne faudrait pas trop vous embrouiller dès le début ;) ).
Pour votre curiosité, ce tout petit programme va vous demander d'entrer un chiffre et vous l'affichera (même si cela ne sert pas à grand-chose :p ), mais vous comprendrez cela plus tard.

Plusieurs types de TI-basic

Eh oui, il existe plusieurs types de TI-basic. En effet, le TI-basic est différent pour chaque génération de calculatrice. Nous étudions ici le TI-basic des calculatrice graphiques 84 et inférieures.


Introduction dans l'univers Texas Intruments Présentation de la calculatrice : les touches

Présentation de la calculatrice : les touches

Le TI-Basic Présentation de la calculatrice : l'écran

Présentation de la calculatrice : les touches

Nous allons dans ce tutoriel prendre comme calculatrice une TI-83 Plus, puisqu'il semble que cela soit le modèle le plus répandu. Si vous avez un autre modèle vous verrez qu'il n'y a pratiquement pas de différences. Sauf pour la TI-82 Stats.fr, dont quasiment tout est traduit en français. Reportez-vous à l'annexe citée ci-dessus pour pouvoir suivre ce tuto. ;)

Les touches graphiques
Touches graphiques

Elles permettent d'accéder à des menus du mode graphique.
On les verra en détail bien plus tard, car le mode graphique est compliqué à assimiler.

Les touches d'édition
Touches d'édition

Elles permettent d'effectuer toutes sortes d'opérations sur le fonctionnement général de la calculatrice.

2ndALPHALes touches seconde () et alpha ()

Ces touches ne font rien en elles-mêmes, à part changer la forme du curseur :

Curseur 2nd

pour la touche

2nd

et

Curseur alpha

pour la touche

ALPHA

. Mais lorsque que le curseur a une de ces formes, la prochaine touche que vous presserez aura un autre effet que celui produit habituellement : vous activerez ce qui est écrit en haut de la touche pressée : en jaune pour

2nd

(on les appelle opérations auxiliaires), et en bleu turquoise pour

ALPHA

.

Les flèches

Les touches

<

,

HAUT

,

>

et

BAS

permettent respectivement de déplacer le curseur à gauche, sur la ligne du dessus, à droite et sur la ligne du dessous.
Presser

HAUT

alors que l'on est tout en haut de l'écran ramène le curseur au début de l'expression.
Presser

BAS

alors que l'on est tout en bas de l'écran ramène le curseur à la fin de l'expression.

DELLa touche supprimer ()

Cette touche est l'abréviation de DELETE, qui veut dire supprimer en anglais.
Cette touche a donc pour effet de supprimer le caractère sur lequel se trouve le curseur.

DEL

, tout comme les flèches, est une touche répétitive.

CLEARLe touche effacer ()

Étrangement, cette touche se nomme "annuler" sur la TI-82 Stats.fr ; pourtant, ne vous y trompez pas, cette touche est une touche de suppression massive :pirate: :

Mais aussi, et c'est ce qui peut justifier pourquoi elle est traduite en "annuler", la touche permet de quitter un menu de fonction avancée (que l'on va voir dans un instant).

2ndDELL'opération auxiliaire insérer ()

Cette combinaison de touche se nomme INS (pour INSERT, insérer en français) et s'obtient en faisant

2nd
DEL

. Elle transforme le curseur en

Curseur INS

et permet d'écrire de nouveaux caractères en repoussant les autres (c'est-à-dire sans réécrire par-dessus).

X,T,0,nLa touche d'inconnue ()

Cette touche permet d'entrer directement l'inconnue du mode dans lequel vous êtes.
Généralement, on est en mode fonction : "Y=f(X)", l'inconnue est alors X, et la touche

X,T,0,n

affichera donc un X.
En paramétrique, l'inconnue est T, en polaire heta, et pour les suites n.

ENTERLa touche de validation ()

Cette touche permet de valider une expression entrée, ou un choix dans un menu. Elle permet aussi de passer à la ligne lorsque l'on édite un programme.

Les touches de fonctions avancées
Touches de  fonctions avancées

Ces touches permettent d'accéder à des menus qui vous présenteront des fonctions bien pratiques.

MODELe menu mode ()

Ce menu permet de gérer les caractéristiques globales de la calculatrice (degrés / radians, écriture normale / scientifique ...). Il est expliqué en détail plus bas dans la page.

STATLe menu statistique ()

Comme son nom l'indique, il permet la gestion d'outils de statistiques (la moyenne...).

MATHLe menu mathématique ()

Il contient plein de fonctions très pratiques pour faire des maths (valeur absolue, PGCD...).

APPSLe menu des applications ()

Ce menu permet de lancer vos applications téléchargées ; la plus connue étant le tableau périodique des éléments.

PRGMLe menu programme ()

Ce menu sert à gérer les programmes, ainsi qu'à la programmation.

VARSLe menu variables ()

Ce menu permet d'accéder à toutes sortes de variables.

Les touches de calcul scientifique
Touches de calcul scientifique

Ces touches vous permettent simplement de faire des calculs, ce sont les mêmes qui apparaissent sur vos calculatrices de collège.

Rapidement :

Touche

Fonction

Opération auxiliaire

Fonction

x-1x-1

Inverse

MATRX

Le menu matrice

SINSIN

Trigonométrie : sinus

SIN-1

Trigonométrie : arcsinus

COSCOS

Trigonométrie : cosinus

COS-1

Trigonométrie : arccosinus

TANTAN

Trigonométrie : tangente

TAN-1

Trigonométrie : arctangente

^^

Puissance

\pi

Le nombre \pi

x²x²

Carré

?

Racine carrée

,,

Ne pas confondre avec la virgule des décimales.
Sert à séparer des arguments dans une fonction

EE

Puissance de 10

((

Ouvrir une parenthèse (pour la priorité)

{

Ouvrir une accolade (pour les listes)

))

Fermer une parenthèse (pour la priorité)

}

Fermer une accolade (pour les listes)

//

Division

e

exp(1)

LOGLOG

Logarithme

10x

Multiplication par une puissance de 10

77

Le chiffre 7

un

Une suite

88

Le chiffre 8

vn

Une suite

99

Le chiffre 9

wn

Une suite

**

Multiplication

[

Ouvrir un crochet (pour les matrices)

LNLN

Logarithme népérien

ex

exp(x)

44

Le chiffre 4

L4

Une liste

55

Le chiffre 5

L5

Une liste

66

Le chiffre 6

L6

Une liste

--

Soustraction

]

Fermer un crochet (pour les matrices)

STOSTO

Stocker une valeur dans un nombre

RCL

Donner la valeur d'une variable lors d'une saisie

11

Le chiffre 1

L1

Une liste

22

Le chiffre 2

L2

Une liste

33

Le chiffre 3

L3

Une liste

++

Addition

MEM

Le menu de gestion de mémoire

ONON

Allumer la calculatrice

OFF

Éteindre la calculatrice

Image utilisateurImage utilisateur

Le chiffre 0

CATALOG

Un catalogue des fonctions

..

La virgule décimale

\iota

Un nombre complexe dont le carré vaut -1

(-)(-)

Opposé

ANS

La dernière valeur calculée


Le TI-Basic Présentation de la calculatrice : l'écran

Présentation de la calculatrice : l'écran

Présentation de la calculatrice : les touches Tout un programme !

Présentation de la calculatrice : l'écran

Différents types d'écrans

On distingue en gros 4 types d'écrans.

Ecran principal
L'écran principal

Vous tombez dessus par défaut lorsque vous allumez votre calculatrice.

C'est l'écran dans lequel vous rentrez vos calculs. La seule différence par rapport à une calculatrice de collège, c'est qu'il contient plusieurs lignes.

Pour accéder à l'écran principal depuis tout autre menu, faites

2nd
MODE

(QUIT).

Le graphique
Ecran graphique

Cet écran est la grande nouveauté de la calculatrice graphique : vous pouvez afficher des fonctions sur votre écran.
Ce type d'écran peut s'obtenir :

Vous pouvez écrire vos fonctions dans la boîte de dialogue que vous obtenez en faisant

Y=

.

Ecran table
La table

C'est un écran qui s'obtient en faisant

2nd
GRAPH

. Il vous donne toutes les valeurs de f(x) pour un x donné.
Vous pouvez modifier les paramètres de la table (le pas et la valeur initiale) en faisant

2nd
WINDOW

.

Les écrans d'options
Menu math

Ce sont les écrans que vous obtenez lorsque vous allez dans un menu (comme "math", par exemple). Ce type d'écran vous propose un choix que vous devez aller chercher avec les flèches et en validant avec

ENTER

. Vous pouvez aussi, lorsque c'est possible, appuyer sur la touche écrit à gauche de la fonction. Par exemple, sur le screen du menu math ci-contre, si vous voulez obtenir le 3 (la fonction cube), vous pouvez faire

BAS
BAS
ENTER

ou tout simplement

3

.

Pour quitter un menu, faites

CLEAR

ou lancez un nouveau menu.

Les modes de la calculatrice
Menu mode

Votre calculatrice réagira différemment selon les paramètres que vous aurez mis dans le menu mode (

MODE

).
Ce menu d'options est un peu spécial : chaque ligne représente un paramètre. Pour vous déplacer, utilisez les flèches, puis validez par

ENTER

.
Voici tous ces paramètres.

Notation numérique

Comme vous le savez sûrement (sinon renseignez-vous ça peut toujours être utile ^^ ), on peut écrire un nombre de 3 façons :

Ça tombe bien, la calculette a justement ce qu'il nous faut :zorro: : elle dispose de 3 modes pour ces trois écritures :

Nombre de décimales

Float signifie virgule flottante : cela signifie que la calculatrice affichera le nombre maximum de chiffres sur l'écran (dans le cas d'un nombre comme 1/3), c'est-à-dire un maximum de 10 chiffres plus le signe et le point décimal.

Les chiffres que vous voyez à droite sur l'écran représentent une virgule fixe, c'est-à-dire qu'après la virgule, il y aura autant de chiffres que le nombre sélectionné dans le menu mode.

Unité de mesure angulaire

C'est tout simplement pour choisir entre des calculs en radians ou en degrés. C'est utile pour la trigonométrie.

Type de représentation graphique

Paramètre vous permettant de choisir le mode de représentation graphique :

Relier éventuellement les points d'un graphe

Connected relie tous les points du graphique tandis que Dot les laisse séparés s'ils sont trop éloignés.

Tracé simultané éventuel

En mode Sequential, la calculatrice va d'abord tracer la première courbe, puis la suivante, et ainsi de suite.
En Simul, la calculatrice va tracer tous les points de même abscisse de toutes les courbes, avant de passer au point d'abscisse suivant.

Réel, forme algébrique, forme exponentielle

Le mode réel ne permet pas d'afficher des nombres complexes, comme les racines carrées de nombres négatifs, mais il affichera un résultat si l'on met un nombre complexe (comme \iota en entrée).
Le mode complexe algébrique (a+b\iota) affichera les nombres complexes sous la forme a + b imes\iota.
Le mode complexe exponentiel (re^ heta\iota) affichera les nombres complexes sous la forme r imes e^{ heta imes\iota}.

Écran entier, deux modes d'écrans partagés

En mode Full, l'écran est normal : il n'est jamais coupé.
Le mode horizontal (Horiz) affiche le graphique dans la partie supérieure de l'écran et l'écran principal ou un éditeur dans la partie inférieure.
Le mode table graphique (G-T) affiche le graphique dans la moitié gauche de l'écran, et l'écran table dans la moitié droite.

Maintenant que vous savez bien à quoi ressemble votre calculatrice de l'extérieur, on va s'intéresser un peu plus à l'intérieur. :ninja:


Présentation de la calculatrice : les touches Tout un programme !

Tout un programme !

Présentation de la calculatrice : l'écran Créer un programme

Bon c'est bien joli tout ça, mais si je veux programmer, je le mets où mon code ?

On a vu que votre calculatrice avait 4 façons de gérer votre écran : l'écran principal, l'écran du graphique, l'écran du tableau de valeurs et les menus d'options.

Mais en fait on vous a menti :-° , il existe un autre type d'écran, l'écran de code. Mais il est un peu caché puisqu'il renferme le code des programmes : ce n'est pas très intéressant de le lire pour l'utilisateur et il ne faut pas effacer accidentellement une ligne. ;)

Créer un programme

Tout un programme ! Accéder au code du programme

Créer un programme

Créer le programme

Nous allons donc voir comment accéder à cet écran de programme.
Mais avant, pour écrire le code d'un programme, il nous faut... un programme ! ^^

Voici donc comment créer un programme :
Depuis l'écran principal, faites

PRGM
<
ENTER

.

La calculatrice vous demande maintenant d'entrer le nom du programme. Il peut contenir de 1 à 8 caractères, des lettres (plus heta) et des chiffres (sauf pour le premier caractère). Nous verrons en détails dans le chapitre suivant comment écrire sur la calculatrice. Pour l'instant, contentez-vous de taper sur les touches

4

,

5

,

4

puis

7

: le texte "TUTO" s'affiche à l'écran ; appuyez alors sur

ENTER

pour continuer.

L'écran d'édition de programme

Vous devez alors obtenir ça sur l'écran :

Nouveau Programme

La première ligne indique que l'on est sur l'écran-type d'édition de programme et nous rappelle le nom du programme que l'on édite.
Les 7 lignes suivantes sont celles où vous pouvez entrer le code.
Si vous sautez plein de lignes (en appuyant sur

ENTER

de façon répétée), vous observerez que la première ligne reste fixe, tandis que les 7 autres peuvent défiler. On peut comparer ceci à une fenêtre sur votre ordinateur : le titre de la fenêtre (là où il y a les boutons agrandir, fermer...) reste fixe, mais vous pouvez faire défiler une page dans la fenêtre. ;)

Quitter l'écran d'édition de programme

Pour quitter, il vous suffit juste d'appuyer sur l'opération auxiliaire QUIT (quitter en français), qui se trouve sur le bouton

MODE

. Faites donc

2nd
MODE

, et vous voici revenu au menu principal. ;)


Tout un programme ! Accéder au code du programme

Accéder au code du programme

Créer un programme Exécuter un programme

Accéder au code du programme

Maintenant que je suis sur le menu principal, comment faire pour retourner éditer mon programme ?

Le menu PRGM

Vous vous souvenez tout à l'heure, pour créer votre programme, vous avez rapidement fait

PRGM
<
ENTER

.

Revenons là-dessus :
Tout d'abord, vous avez cliqué sur

PRGM

, cela a donc ouvert le menu programme. Regardez la première ligne de l'écran, on distingue 3 onglets :

Si vous avez bien tout suivi, vous devriez avoir compris que quand vous avez appuyé sur

<

, on est passé du premier onglet (EXEC) au dernier (NEW). Et quand vous avez appuyé sur

ENTER

, vous avez sélectionné la première option de l'onglet NEW (en l'occurrence, il n'y a qu'une seule option et elle permet de créer un nouveau programme).

Si vous êtes perspicace, vous devriez avoir trouvé comment éditer le programme déjà créé.

Éditer un programme

Il suffit tout simplement de lancer le menu PRGM (

PRGM

), puis de sélectionner l'onglet EDIT (

>

), de choisir votre programme dans la liste avec les flèches

BAS

et

HAUT

(normalement vous n'avez de créé que le programme TUTO), puis de valider votre choix avec

ENTER

.

Et vous revoilà devant l'écran d'édition de programme. :)


Créer un programme Exécuter un programme

Exécuter un programme

Accéder au code du programme Gestion des programmes

Exécuter un programme

Lancer un programme

Pour lancer un programme, rendez-vous sur l'écran principal, puis faites

PRGM

. La liste des programmes que vous possédez apparaît alors. Sélectionnez le vôtre avec

BAS

et

HAUT

puis validez votre sélection avec

ENTER

. Puis votre sélection apparaît sur le menu principal.

Vous obtenez donc "prgmPROGRAM" sur l'écran. Validez l'expression avec

ENTER

.

prgmPROGRAM
Programme en exécution

On reconnaît que la calculatrice est en train d'exécuter un programme grâce à un petit sigle en haut à droite, comme ceci :

programme en marche
Arrêter un programme

Le mieux pour arrêter un programme, c'est d'attendre qu'il s'arrête tout seul. Mais si vous êtes pressé ou si votre programme ne s'arrête jamais, vous pouvez l'arrêter en appuyant sur

ON

.

Il s'affichera alors ceci :

Break

C'est un menu qui permet soit de revenir là où le programme vous avait laissé (sur l'écran principal, le graphique...), soit d'aller dans le code du programme.


Accéder au code du programme Gestion des programmes

Gestion des programmes

Exécuter un programme Afficher du texte

Gestion des programmes

Supprimer un programme

Pour supprimer un programme de votre calculatrice, il va falloir se rendre dans le menu de gestion de mémoire.
Pour y accéder depuis votre calculatrice, faites

2nd
+

.

Vous accédez au menu suivant :

Écran mémoire

Sélectionnez la deuxième option pour arriver à cet écran :

Écran mémoire 2

Sélectionnez ensuite la 7ème ligne : "7:Prgm...". Sélectionnez ensuite le programme à supprimer puis appuyez sur

DEL

pour le supprimer. On vous demandera alors confirmation.

L'archivage

Plutôt que de supprimer votre programme, vous pouvez l'archiver. Cela veut dire que vous le transférez vers un autre type de mémoire qui est beaucoup plus importante en taille. Vous ne pourrez donc plus utiliser votre programme jusqu'à ce que vous le désarchiviez (ce qui est très rapide je vous rassure ^^ ). Vous gagnez donc de la place sur votre mémoire vive.

Pour archiver un programme, suivez la même procédure que pour en supprimer un, sauf qu'il faut que vous appuyez sur

ENTER

au lieu de

DEL

à la fin.

Si tout s'est bien passé, un * apparaît à gauche du nom du programme, vous indiquant qu'il est archivé.

Renommer un programme

Il n'existe pas de fonction toute faite pour renommer un programme, il va falloir utiliser une petite astuce.

Retournez dans le programme TUTO (recréez-le si vous l'avez supprimé) et remplissez une ligne avec quelques chiffres, par exemple tapotez "12304650" dans la première ligne.

Maintenant, si l'on veut que ce programme s'appelle autrement, on va créer un nouveau programme et lui donner ce nouveau nom. On va ensuite faire une sorte de copier/coller du programme que l'on veut renommer.
Pour ce faire, utilisez depuis l'écran d'édition du nouveau programme la fonction RCL (rappel en français) qui s'obtient en faisant

2nd
STO

. Ensuite, faites

PRGM
<

, et sélectionnez le programme à renommer dans la liste. Une fois votre sélection validée, appuyez sur

ENTER

pour valider le RCL.

Et là, sous vos yeux ébahis, le code de l'ancien programme (ici "12304650") se colle dans le nouveau. Vous n'avez plus qu'à supprimer l'ancien et votre programme est renommé. ;)

Vous savez maintenant parfaitement gérer les programmes.

Comment ça, ça ne vous suffit pas ? :euh:
Ah, vous voulez savoir quoi mettre dedans ! :D

Eh bien, passez au chapitre suivant. :pirate:


Exécuter un programme Afficher du texte

Afficher du texte

Gestion des programmes Écrire sur sa calculatrice

Nous allons commencer à programmer avec quelque chose de simple : l'écriture et l'affichage de texte. Je ne parlerais pas de "gestion du texte", on verra ça plus tard car c'est beaucoup plus complexe.
Bien que cela ne paraisse pas très important, cela reste un début et puis, il faut bien commencer quelque part. :)
Allez, en avant chers Zéros, vos premières commandes de TI-Basic vous attendent. :pirate:

Écrire sur sa calculatrice

Afficher du texte Afficher du texte avec Disp

Écrire sur sa calculatrice

Écrire du texte

Lorsque vous souhaitez écrire du texte sur votre calculatrice, il va falloir se servir des jolies lettres au-dessus de la plupart des touches !
Seulement, si vous essayez en appuyant directement sur les touches, cela n'affichera rien de spécial.
Il existe un bouton

ALPHA

, appuyez dessus, le curseur comporte alors un "A".
Vous allez maintenant pouvoir atteindre toutes les lettres du clavier ! En fait, vous allez même atteindre toutes les commandes de la même couleur que votre touche

ALPHA

dont les lettres.

C'est bizarre, je n'arrive à écrire qu'une seule lettre à la fois, c'est normal ?

Tout à fait ! La touche

ALPHA

, comme la touche

2nd

, ne s'active que pour la prochaine pression de touche. Autrement dit, vous allez devoir appuyer sur "ALPHA" avant chaque nouvelle lettre... avec cette méthode. En effet, si vous souhaitez écrire de nombreuses lettres, cela sera vite long !
Il existe donc une solution pour remédier à cela : faites

2nd

+

ALPHA

afin d'atteindre A-LOCK. Essayez alors d'écrire un mot ou deux et... MAGIE ! :magicien: Il n'y a plus aucun souci !

Bravo, vous pouvez maintenant écrire sur votre calculatrice, mais ça ne sert pas à grand-chose (à part donner un nom à un programme, vous pourrez à la rigueur communiquer avec votre voisin, mais guère plus) ; voyons désormais comment s'en servir en programmation.

Les fonctions

Tout langage de programmation dispose de fonctions qui permettent diverses actions (afficher du texte, demander une valeur à l'utilisateur, ...). Contrairement à d'autres langages, vous n'avez pas à taper les fonctions puisqu'elles sont déjà toutes rangées dans les différents menus de la calculatrice (

PRGM

,

MATH

, ...).

Deux fonctions qui se suivent sont séparés par le caractère ":". Lorsque vous retournez à la ligne (par la touche

ENTER

) dans l'écran d'édition de programme, les deux points sont automatiquement ajoutés au début de la ligne (et vous ne pouvez pas les enlever). Mais il est aussi possible d'entrer ces deux points manuellement grâce à la combinaison

ALPHA
.

: Instruction1:Instruction2.


Afficher du texte Afficher du texte avec Disp

Afficher du texte avec Disp

Écrire sur sa calculatrice Afficher du texte avec Output

Afficher du texte avec Disp

Revenons donc à notre programme. Si vous ne l'avez pas déjà fait, créez un nouveau programme puis éditez-le (vous serez automatiquement redirigés vers l'écran de programmation si vous venez de créer le programme). En cas d'oubli, allez relire le chapitre précédent. ;)

Vous allez apprendre la commande Disp. Pour cela, appuyer sur

PRGM

puis sur

>

. Vous arrivez dans le sous-menu "I/O", cela signifie In/Out (Entrée/Sortie en français pour les anglophobes). Vous trouverez donc ici toutes les fonctions pour capter ou afficher des informations à l'écran. C'est parfait, c'est exactement ce qu'on cherchait !
Intéressons-nous à la troisième commande : soit vous appuyez sur

3

, soit vous vous positionnez dessus avec les flèches puis appuyez sur

ENTER

.

Disp s'ajoute alors à l'écran. Si vous tapez le code suivant :

:Disp BONJOUR

vous allez certainement obtenir un beau 0, vous comprendrez pourquoi dans le prochain chapitre.

En fait, pour afficher bêtement votre texte, il faut ajouter des guillemets au début et à la fin, comme ceci :

:Disp "BONJOUR"

Cette fois-ci, vous obtenez bien le résultat voulu :

Disp BONJOUR

Remplacez maintenant BONJOUR par ce que vous voulez (pas forcément des lettres) mais en conservant les guillemets : votre programme affichera exactement ce que vous avez écrit !

Ainsi, si vous voulez écrire un texte de plus de 16 caractères (en comptant les espaces), vous allez devoir le couper.

Mais, ça veut dire que je dois remettre Disp à chaque fois ? C'est long !

Eh bien, non ! La commande Disp est très pratique pour cela : si vous mettez

,

après votre texte, ce que vous réécrirez sera considéré comme dans un nouveau Disp. Je vous montre :

:Disp "BONJOUR LES"
:Disp "ZEROS"

équivaut à ça :

:Disp "BONJOUR LES","ZEROS"

Écrire sur sa calculatrice Afficher du texte avec Output

Afficher du texte avec Output

Afficher du texte avec Disp Effacer l'écran

Afficher du texte avec Output

Disp c'est bien joli, mais comment je fais pour mettre mon texte où je veux ?

Il faut utiliser une autre fonction : Output(. Pour l'atteindre, on retourne dans le menu de tout à l'heure avec

PRGM

puis

>

et il s'agit de la 6e commande.

Output( a l'énorme avantage de choisir où afficher votre texte ; il s'utilise ainsi : Output(ligne,colonne,valeur). Tout comme Disp, la valeur peut être une chaîne de caractères ou d'autres choses que l'on verra dans le chapitre suivant.
Encore une fois vous devez faire attention à la taille de votre écran ! Un petit exemple :

:Output(4,5,"BONJOUR")

va à peu près centrer votre BONJOUR :

Output BONJOUR

En revanche, il vous faudra retaper la fonction si vous désirez ajouter une ligne, contrairement à Disp. Cependant, les guillemets sont obligatoires sinon la calculatrice comprendra qu'il s'agit d'un calcul.

Lorsque vous affichez quelque chose à l'écran sans en choisir l'emplacement (pour le moment, vous ne connaissez que Disp), une sorte de curseur se met en place, revenant à la ligne à chaque fois. Cela permet ainsi à deux Disp de ne pas s'écraser ! Cependant, ce n'est pas le cas pour Output( : le curseur ne bouge pas ; voici un code qui va être problématique :

HELLOUR
:Output(2,1,"BONJOUR")
:Disp "HELLO"

Si vous essayez, vous aurez quelque chose de très moche : le Disp ignorera que l'Output( a déjà affiché quelque chose et il écrira par-dessus, supprimant ainsi "BONJO", on aura donc "HELLOUR" ! Faites donc bien attention.


Afficher du texte avec Disp Effacer l'écran

Effacer l'écran

Afficher du texte avec Output Mini-TP : "Hello World"

Effacer l'écran

Lorsque l'on programme, quel que soit le langage, un peu de propreté est toujours bienvenu !
Il est donc important d'apprendre à effacer l'écran, pour qu'on s'y retrouve un peu, surtout avec la petite taille de celui de la calculatrice.

Pour cela, il suffit d'utiliser une commande déjà existante : c'est donc très facile. Il s'agit de la fonction "ClrHome" que vous pourrez trouver dans le menu I/O (

PRGM

+

>

si vous avez oublié), il s'agit de la 8e ligne.

Il n'y a rien de plus à dire sur cette fonction, car elle ne prend aucun argument, elle se contente d'effacer votre écran, et c'est déjà bien. :D


Afficher du texte avec Output Mini-TP : "Hello World"

Mini-TP : "Hello World"

Effacer l'écran Gérer les variables

Mini-TP : "Hello World"

Bien qu'il s'agisse de la base du TI-Basic, un petit TP ne fait pas de mal !

Cahier des charges

Ce programme sera un bête "Hello World". Il devra ainsi afficher le texte "Hello World".
Il devra répondre aux attentes suivantes :

Bon allez ! C'est à vous de travailler, à vos calculatrices !

Correction

C'est le premier mini-TP, il est donc très facile, tout le monde doit avoir réussi. Si ce n'est pas le cas, ne vous inquiétez pas, relisez ce chapitre et le précédent.

Et... voici le code :

:ClrHome
:Disp "","BONJOUR"
:Output(5,4,"HELLO WORLD")
prgmHELLO

Et voici la source si ça peut vous aider :

Télécharger le fichier .8xp à transférer sur votre calculatrice
(114 octets) (46 octets sur la calculatrice)

Vous remarquerez la ligne vide qui permet en quelque sorte de "sauter une ligne" avec un Disp.
Vous pouviez bien sûr inverser l'ordre du Disp et de l'Output( ou choisir de centrer différemment ce dernier.

Normalement, je ne devrais pas avoir perdu trop de monde en route. Et puis, un peu de courage ! Car le prochain chapitre est déjà moins digeste... On va attaquer les variables !
Pas de panique, la gestion des variables en TI-Basic n'est vraiment pas compliquée. :)


Effacer l'écran Gérer les variables

Gérer les variables

Mini-TP : "Hello World" Vous avez dit variable ?

Ce que nous avons vu pour le moment est vraiment très simple. Normalement, cela devrait très vite devenir intuitif pour vous (si cela ne l'est pas déjà). On va donc pouvoir s'attaquer à des choses plus intéressantes et permettant plus de possibilités (en effet, on ne va pas très loin en n'affichant que du texte :D ).
Bien sûr, ne paniquez pas. Les variables ne constituent pas un élément très complexe, mais plutôt un concept à comprendre.

Vous avez dit variable ?

Gérer les variables Utiliser les variables

Vous avez dit variable ?

S'il y a bien une chose à laquelle on ne peut pas échapper, c'est les variables (mais il n'y a pas que ça d'important non plus :-° ). Vous allez très vite vous rendre compte qu'il n'est pas possible de ne pas les utiliser dès qu'on crée un programme un minimum compliqué.

Certains d'entre vous, s'ils connaissent d'autres langages de programmation, connaissent sûrement les variables. Pour les autres, il s'agit d'un endroit où l'on peut stocker un nombre tout en lui donnant un petit nom pour le retrouver plus rapidement.

Je ne suis pas sûr de bien comprendre, tu aurais un autre exemple ?

Pas de problème. ^^ On va en choisir un plus concret.
Disons que j'ai besoin pour un programme du nombre 45,509. Or, étant flemmard, je décide de le mettre dans une variable pour éviter d'avoir à le retaper. Je vais donc le stocker dans la variable A, et dès lors, A représentera 45,509 jusqu'à ce que je mette une autre valeur dans ma variable A.

Cela peut sembler peu utile, mais c'est tout l'inverse ! Vous allez voir que si vous voulez demander une valeur à l'utilisateur, il faudra passer par une variable pour récupérer la saisie.


Gérer les variables Utiliser les variables

Utiliser les variables

Vous avez dit variable ? Interagir avec l'utilisateur

Utiliser les variables

Stocker un nombre dans une variable

Les variables, c'est bien beau, mais si elles sont vides elles ne servent à rien !
Nous allons en exemple stocker le nombre 47 dans la variable A. Pour cela, on tape 47 que l'on STOcke dans "A". Si vous n'avez pas compris mon indice, il faut utiliser la touche

STO

. Cette touche signifie "Stocker dans". Cela donnera ça :

:47->A
Utiliser les variables dans les expressions

Il est désormais temps de vous prouver combien les variables sont utiles. Vous allez tout d'abord pouvoir utiliser une variable dans un calcul :

:12->A
:36->B
:AB+(B/A)->C

Ainsi, si je veux modifier mes valeurs, je n'ai pas à modifier tout le calcul, juste les variables. Ici, C vaudra 12 imes36+\frac{36}{12}), soit 435.
Vous pouvez également remarquer que vous pouvez stocker des variables DANS des variables (avec un changement, sinon c'est inutile). Il est ainsi possible d'incrémenter une variable (cela signifie lui ajouter un) comme ceci :

:A+1->A
Afficher une variable

Pour afficher une variable, il suffit de retirer les guillemets d'une fonction d'affichage comme Disp ou Output(.
Reprenons le code précédent :

:12->A
:36->B
:Disp AB+(B/A)

Cela m'affichera à l'écran 435. De plus, cela permet d'éviter d'utiliser une variable en plus (C). Vous devriez maintenant comprendre pourquoi le code :

:Disp BONJOUR

affiche souvent 0. En effet, la calculatrice va multiplier la variable B, par O puis par N, ... jusqu'au R. Et comme la plupart des variables valent le plus souvent 0, le résultat sera 0.

Et cela fonctionne exactement pareil avec Output( :

:3->B
:8->A
:Output(5,8,AB)

Vous obtiendrez alors un beau 24 vers le milieu de l'écran.


Vous avez dit variable ? Interagir avec l'utilisateur

Interagir avec l'utilisateur

Utiliser les variables Mini-TP : Calculer le volume d'un cylindre

Interagir avec l'utilisateur

Maintenant que l'on sait se servir des variables, il est très intéressant de parvenir à les modifier. On peut ainsi accéder à tout leur potentiel. Pour cela nous allons interagir avec l'utilisateur.

C'est qui l'utilisateur ?

L'utilisateur, c'est la personne qui utilisera le programme. Cela peut être vous, un de vos amis, un étranger, un collègue, votre poisson rouge, etc.
Il existe donc deux fonctions en TI-Basic qui permettent de demander à l'utilisateur d'entrer des nombres qui seront stockés dans des variables.

La fonction Prompt

Prompt, c'est la plus facile à utiliser, son problème est qu'elle n'est pas personnalisable : le texte écrit pour indiquer ce que l'utilisateur doit entrer est forcément de type variablevariable=?. Pour trouver la fonction, direction le menu I/O. C'est la 2e fonction.
Elle s'utilise comme ceci :

:Prompt A
Prompt A

La variable aura désormais la valeur que l'utilisateur a entré.

À l'instar de Disp, Prompt peut prendre plusieurs variables à la fois, en utilisant la fonction comme ceci : Prompt variableA[,variableB,...,variable n], par exemple :

:Prompt A,B

Il vous sera alors demandé d'entrer A puis B.

Prompt A,B
Input, pour la personnalisation

La différence d'Input (toujours dans le menu I/O mais la 1e fonction) c'est qu'elle prend un argument de plus : le message à afficher.
La syntaxe est la suivante : Input ["texte",variable]
Comme vous pouvez le voir, le groupe texte + variable est facultatif, cela veut dire que l'on peut utiliser Input sans aucun argument. Mais c'est pour une tout autre utilisation que l'on verra plus tard. On peut aussi noter que le "texte" peut être remplacé par une variable contenant du texte, un type de variable que nous verrons plus tard également.

Voici un exemple d'utilisation avec les variables :

:Input "RAYON ?",R
Input

Au lieu de simplement afficher le nom de la variable, votre message sera affiché. Du coup, vous ne savez pas le nom de la variable dans laquelle le nombre est stocké. De plus, il est obligatoire de refaire un Input pour chaque variable.


Utiliser les variables Mini-TP : Calculer le volume d'un cylindre

Mini-TP : Calculer le volume d'un cylindre

Interagir avec l'utilisateur Les conditions

Mini-TP : Calculer le volume d'un cylindre

Il n'y a rien de mieux qu'un mini-TP pour être sûr d'avoir bien compris. Vous allez maintenant créer votre premier programme intéressant : il s'agit un programme de calcul du volume d'un cylindre.

Cahier des charges

Avant tout, je vous rappelle la formule du volume d'un cylindre pour ceux qui auraient oublié : \pi imes R^2 imes H
Le programme va devoir demander R et H (le rayon et la hauteur) puis afficher le volume.
Je vous conseille de stocker le résultat du calcul dans une variable (V par exemple) puis de l'afficher, pour plus de clarté, mais ce n'est pas obligatoire.
Enfin, je rappelle que pour \pi c'est la combinaison

2nd
^

.
À vos calculettes !

Correction

Voilà le code que j'ai obtenu. Si vous n'avez pas du tout compris, relisez le chapitre. Il existe également plusieurs variantes dans le code.

:Input "RAYON:",R
:Input "HAUTEUR:",H
:[PI]R²H->V
:Disp "LE VOLUME:",V

Remplacez bien sûr [PI] par \pi.

Télécharger le fichier .8xp à transférer sur votre calculatrice
(129 octets) (62 octets sur la calculatrice)

Ce qui m'affichera :

prgmCYLINDRE

Vous n'étiez pas obligé d'utiliser de Input, mais c'est plus joli.
Le code le plus léger (mais pas très attractif) aurait été :

:Prompt R,H
:Disp [PI]R²H

Le résultat, au niveau du calcul, sera le même mais ça sera moins beau.
Vous pouviez rajouter une phrase expliquant la fonction du programme avec un Disp ou un Output(.

Vous pouvez maintenant faire des programmes un peu plus évolués et intéressants. Seulement, à part la possibilité de faire des calculs, les variables ne vous apportent pas encore beaucoup.
Le prochain chapitre abordera les conditions. Alliées avec les variables et les boucles (que l'on verra plus tard), elles prendront tout leur intérêt.
Pas de repos moussaillon. :pirate:


Interagir avec l'utilisateur Les conditions

Les conditions

Mini-TP : Calculer le volume d'un cylindre Le principe

Le problème lorsque l'on laisse l'utilisateur entrer des données comme on l'a vu dans le chapitre précedent, c'est qu'ils peuvent mettre n'importe quoi. :colere2:
Nous allons ici voir comment on peut contrôler les saisies de l'utilisateur, et comment adapter le programme à ces saisies.

Le principe

Les conditions Les tests

Le principe

Rien qu'à la lecture, vous devriez avoir compris de quoi nous allons parler. C'est en effet un nom très transparent et un concept facilement compréhensible puisqu'il a une récurrence avec le monde réel.
Une condition va donc effectuer une action à condition que quelque chose (que l'on aura définie) soit vrai.
Pour faire une condition, nous allons devoir nous servir d'opérateurs logiques. Ceux-ci vont nous permettre d'articuler la condition, ils sont le lien entre les différents compartiments.
Prenons un exemple, imaginons que je veuille manger une pomme, nous allons décomposer l'action :

Ceci nous permet d'effuctuer des opérations en fonctions de facteurs externes, ce qui est très pratique.


Les conditions Les tests

Les tests

Le principe La condition "Si"

Les tests

Mais comment je fais pour expliquer à ma calculatrice que je veux savoir si telle variable vaut tant ?

Eh bien on va utiliser ce que l'on appelle des test.
Un test est en quelque sorte une question que l'on va poser à la calculatrice. De son côté, la calculatrice va analyser la question en faisant des calculs puis va nous répondre en nous renvoyant un résultat.

Formuler des tests

Pour formuler un test, on va utiliser le menu éponyme qui s'obtient en faisant

2nd
MATH

. Ce menu contient deux onglets, l'onglet TEST, qui contient tout ce que l'on veut pour faire des tests de comparaison, et l'onglet LOGIC, qui contient les opérateurs logiques.

Les tests de comparaison

Le nom parle de lui-même, ce sont les tests qui comparent deux variables ou valeurs.
On utilise ces opérateurs entre deux variables pour les comparer. Une valeur est alors renvoyée : 1 si la comparaison écrite est vraie, 0 si elle est fausse.

Opérateur

Renvoie 1 lorsque la variable à gauche est ... celle de droite

Notation dans le tuto

=

égale à

=

eq

différente de

!=

>

supérieure à

>

\geq

supérieure ou égale à

>=

<

inférieure à

<

\leq

inférieure ou égale à

<=

Tests de comparaison
Les opérateurs logiques

Cependant, on a généralement besoin de plus d'une condition, on peut alors utiliser les opérateurs logiques qui, combinés aux tests de comparaison, permettent de former des conditions plus complexes.

Tout comme les tests de comparaison, ils sont utilisés (sauf pour un cas particulier) avec un membre à gauche et un à droite.

Opérateurs

À gauche

À droite

Renvoie

and

1

1

1

1

0

0

0

0

0

-

or

1

1

1

1

0

1

0

0

0

-

xor

1

1

0

1

0

1

0

0

0

-

not(

1

0

0

1

Dans ce tableau, j'ai mis 1 lorsque le membre de gauche ou celui de droite valait quelque chose d'autre que 0. Notez bien que ça pourrait tout aussi bien être un tout autre chiffre non nul. En revanche pour la dernière colonne, il s'agit bien uniquement de 1 ou 0.

Si vous n'avez pas bien compris ce tableau, nous allons reprendre différemment :

Combinaison

Les opérateurs logiques ne s'utilisent pas seuls, il faut s'en servir avec des tests. Pour cela, il suffit de suivre le schéma de l'exemple suivant.

: A<3 or A>20

Qui renverra 1 si A est dans l'intervalle ]-\infty ; 3[ \cup ]20 ; +\infty[.


Le principe La condition "Si"

La condition "Si"

Les tests D'autres conditions

La condition "Si"

Commençons avec la condition If, pour la retrouver il vous suffit de taper

PRGM
ENTER

depuis un menu d'édition de programme. En effet, la commande est la première du premier menu CTL (pour Contrôle).
Cette commande a deux syntaxes possibles, que l'on veuille faire une condition simple ou un peu plus complexe.

If, pour les petits tests

Pour la première syntaxe, c'est très facile :

:If A=3
:Disp "A VAUT 3"
:Disp "CETTE LIGNE SERA AFFICHE DANS TOUT LES CAS"

Un test se fera sur une variable, une chaine, une liste ou une matrice (nous n'avons vu que le premier, le reste viendra plus tard ;) ).
Après le If, mettez un test logique (tel que nous venons de le voir).
L'instruction suivant le If ne sera lue que si la condition est vraie.

:If condition
:commande (si vrai)
:commande

Si vous souhaitez donc exécuter plusieurs instructions, vous allez devoir utiliser l'autre syntaxe.

If:Then:Else:End, pour plus de liberté

En plus de permettre l'exécution de plusieurs instructions, cette syntaxe, qui utilise d'autre opérateurs, permet également d'exécuter des instructions si le test est faux. C'est très pratique pour éviter de faire une deuxième condition avec le test inverse.
Tout les nouveaux opérateurs se trouvent dans le menu CTL (

PRGM

) :

La syntaxe est alors la suivante :
:If condition
:Then
:commande (si vrai)
:commande (si vrai)
:Else
:commande (si faux)
:commande (si faux)
:End
:commande

Le plus souvent, on utilisera en effet un code sans Else.
Il n'y a pas grand chose de plus à expliquer, pour les tests, vous avez le droit à la même chose. De même pour les instructions.

:If condition
:Then
:commande (si vrai)
:commande (si vrai)
:End
:commande


Les tests D'autres conditions

D'autres conditions

La condition "Si" Mini-TP : Loi de Descartes

D'autres conditions

La plupart du temps vous utiliserez les conditions telles qu'on vient de le voir. Mais il existent d'autres applications des conditions.

Mettre des test dans les calculs

Généralement on utilise les test logiques avec des fonctions prévues à cet effet, comme If ou d'autres que l'on verra au chapitre suivant. Mais parfois il est plus astucieux d'imbriquer directement ces conditions dans des calculs.

Comme c'est un peu abstrait, voici un exemple : imaginons que vous êtes en train de coder un jeu à deux joueurs, qui jouent à tour de rôle. Vous stockez par exemple le numéro du joueur dont c'est le tour dans la variable J. Comment feriez-vous pour changer cette variable de valeur, c'est à dire pour que dès qu'un joueur ait fini son tour, J prenne la valeur du numéro de l'autre joueur.
Avec les connaissances que vous possédez, vous seriez à coup sûr tentés de faire comme ce qui suit.

:If J=1:2->J
:If J=2:1->J

Ou tout autre raisonnement du même type par exemple avec Then.

Mais il y a plus simple !
Je vais vous mettre sur la piste : rappelez-vous qu'un test logique renvoie 1 s'il est vrai et 0 s'il est faux.
C'est bon, vous avez trouvé ? :D

1+(J=1)->J

Effectivement :

Le code est ainsi plus court, prend moins de place en mémoire, et prend moins de temps à s'exécuter. :)

Des conditions raccourcies

Quand vous faites des conditions, la fonction If va se charger de vérifier que votre test vaut quelque chose. Ce quelque chose est renvoyé par l'opérateur du test, et il s'agit toujours de 0 et 1.

Cela signifie que vous pouvez vous passer d'un opérateur de test pour certaines occasions. En effet, un test est considéré comme vrai s'il vaut quelque chose, et comme faux s'il vaut 0.
Ainsi, pour n'effectuer une commande que si la variable A est différente de 0, il suffit d'écrire :

:If A
:Disp "A NE VAUT PAS 0"
Deux conditions bien particulières

Voilà on a quasiment fait le tour des conditions. Mais il reste encore deux fonctions assez particulières à vous présenter. À priori vous ne vous en servirez jamais, mais si un jour vous tombez sur une situation adaptée à ces fonctions vous serez bien heureux de les connaître. :D
Si jamais vous êtes assez pressés, vous pouvez passer directement au mini-TP ci-dessous, vous n'aurez pas de problème à ne pas connaitre ces deux fonctions.
Bon trève de bavardage, voici les-dites fonctions.

La première, IS>(

La fonction se nomme IS>( >_ Et pourquoi pas JK>@]] tant qu'on y est ?)

Rassurez-vous, sous se nom d'apparence barbare se cachent des initiales bien compréhensibles. ^^ IS>( signifie Increment and Skip (soit Incrémenter et Omettre en français).
En gros cela veut dire que l'on va incrémenter une variable (c'est à dire que l'on va augmenter sa valeur de 1), puis omettre ou non l'action suivante, sous une certaine condition. Cette condition étant décrite dans le tire : on omet l'instruction suivante si la variable incrémentée est plus grande qu'un certain chiffre que l'on donnera.

Pour clarifier un peu plus les choses, voici la syntaxe de IS>( :
:IS>(variable,valeur)
:commande (si résultat <= valeur)
:commande

Ça doit toujours être un peu flou, donc je vais vous montrer comment on pourrait écrire IS>( autrement.
Écrire par exemple :

:IS>(A,5)
:Disp "COMMANDE SOUS CONDITION"
:Disp "COMMANDE TOUJOURS EXECUTEE"

Reviens à écrire :

:A+1->A
:If A<=5
:Disp "COMMANDE SOUS CONDITION"
:Disp "COMMANDE TOUJOURS EXECUTEE"

IS>( est plus rapide non ? ^^ Mais concrètement à quoi ça sert ? Honnêtement on ne l'utilise quasiment jamais mais je vous ai trouvé un exemple où son utilisation est judicieuse :
Imaginons que vous fassiez un jeu de combat : vous devez par exemple tuer un gros méchant, avec X points de vies (avec 0 points de vie il tient toujours debout, il est un peu sonné mais on ne le compte pas comme mort). Le nombre de dégâts que vous lui avez déjà infligé serait stocké dans D. À chaque fois que vous le frapperez, on aura :

:IS>(D,X)
:Disp "TAPE PLUS FORT"
:Disp "LA SUITE DU JEU..."

Voilà c'est fini (enfin ! :D ) pour cette fonction, si vous n'avez pas compris n'hésitez pas à relire, sinon laissez tomber, ce n'est vraiment pas important.

La deuxième, DS<(

Bon je vais aller très vite, cette fonction est tout simplement le contraire de celle que l'on vient de voir : elle s'appelle Decrement and Skip (Décrémenter et Omettre), et a pour fontion de soustraire 1 à la variable et d'omettre l'instruction suivante si elle est plus petite que la valeur indiquée.

:DS<(variable,valeur)
:commande (si réponse >= valeur)
:commande


La condition "Si" Mini-TP : Loi de Descartes

Mini-TP : Loi de Descartes

D'autres conditions Les boucles

Mini-TP : Loi de Descartes

Énoncé

On va dans ce mini-TP faire un programme qui vous sera bien utile si jamais vous êtes en classe de Seconde. Il s'agit de l'application de la loi de Descartes sur les indices de réfraction. Vous savez ce truc qui explique que lorsque l'on plonge un bâton à moitié dans de l'eau, on a l'impression qu'il est tordu.

Si vous n'avez pas encore vu cette formule, la voici : {n}_{1} imes\sin({I}_{1}) = {n}_{2} imes\sin({I}_{2}).

Où n1 et n2 sont les indices des milieux, et I1 et I2 les angles des rayons incidents et réfractés.

Si vous ne comprenez rien à ce que signifie cette relation, aucune importance. ^^ Il vous suffit juste de l'appliquer en sachant qu'une application de cette loi consiste à avoir 3 de ces valeurs données et une inconnue. Le programme doit renvoyer la valeur de l'inconnue.

Vous devez donc demander les 4 valeurs, et demander que l'utilisateur entre 0 pour l'inconnue. Ensuite avec les conditions, vous allez calculer la valeur de renvoi suivant l'inconnue (c'est juste une petite équation à résoudre).

Correction

Ce n'était pas très compliqué, voici toutefois la solution.

:Disp "0 : INCONNUE"
:Input "N1:",N
:Input "I1:",I
:Input "N2:",O
:Input "I2:",J
:If N=0
:Osin(J)/sin(I)->X
:If I=0
:Arcsin(Osin(J)/N)->X
:If O=0
:Nsin(I)/sin(J)->X
:If J=0
:Arcsin(Nsin(I)/O)->X
:Disp "INCONNUE:",X

Télécharger le fichier .8xp à transférer sur votre calculatrice
(175 octets) (144 octets sur la calculatrice)

Les conditions sont essentielles dans un langage de programmation, si vous n'avez pas compris comment utiliser If, il faut absolument que vous relisiez ce chapitre.

Sinon, vous pouvez passeer au chapitre suivant. ^^


D'autres conditions Les boucles

Les boucles

Mini-TP : Loi de Descartes Le principe

Une tâche répétitive, rien de mieux pour ennuyer un être humain. Heureusement, les machines n'ont pas ce problème, on va donc pouvoir tranquillement leur confier des morceaux de codes à répéter, en boucle. Et c'est justement ces boucles, très utiles, que vous allez apprendre dans ce chapitre.
Ainsi, sachez que pour faire un jeu de type "Snake", la grande majorité de votre code se trouvera dans une boucle.

Le principe

Les boucles Les boucles simples

Le principe

Encore une fois, le nom est assez explicite. En effet, ces différentes fonctions vont vous permettre de faire exécuter plusieurs fois le même code à votre calculatrice. De plus, bien que le code reste le même, si une variable change de valeur lors d'un tour de boucle, elle aura cette nouvelle valeur au tour suivant.
Le schéma d'une boucle est toujours le même, et il est très simple :

:Début de boucle avec une condition
:Code à exécuter
:Code à exécuter
:Code à exécuter
:Code à exécuter
:Fin de la boucle

Les mots en gras sont les plus importants :


Les boucles Les boucles simples

Les boucles simples

Le principe La boucle par incrémentation

Les boucles simples

Dans cette sous-partie, nous allons étudier deux des trois boucles qui existent en TI-Basic. Elles ne différent que pour un point ; vous pourrez donc souvent utiliser l'une ou l'autre sans que cela n'ait d'effet sur votre programme.

La boucle While

La boucle While est certainement la plus simple à comprendre, While étant un mot anglais que l'on peut traduire traduire par "tant que".
En effet, avec While votre boucle sera exécuté tant que la condition est vraie. Attention, si dès le début la condition est fausse, la boucle sera tout simplement ignorée. ;)

Voici donc la syntaxe de While :
:While condition
:commande (tant que condition est vraie)
:commande (tant que condition est vraie)
:End
:commande

Les deux premières commandes étant exécutées tant que la condition est vraie. La troisième étant exécutée une fois que la condition n'est plus vraie.

Voici un exemple avec un programme qui va forcer l'utilisateur a rentrer une valeur dans la variable A.

:0->A
:While A=0
:Prompt A
:End

Normalement vous devriez vous souvenir d'où se trouve End dans les menus (si ce n'est pas le cas, je vous renvoie au chapitre précédent). La fonction While est quand à elle la 5e du menu CTL.
Intéressons-nous de plus près à ce qu'il s'est passé :

La boucle Repeat

La fonction Repeat est presque comme While, la syntaxe est donc la même, et c'est la 6e fonction du menu CTL.
Il existe deux différences, qui sont toutes deux liées à la condition : Repeat exécute la boucle jusqu'à ce que la condition soit vraie (la conditions est testée à la fin de la boucle).
:Repeat condition
:commande (jusqu?à ce que condition soit vraie)
:commande (jusqu?à ce que condition soit vraie)
:End
:commande

Ce qui a pour principales conséquences par rapport à While, que Repeat exécutera au moins une fois le code qu'elle contient, et ce même si la condition est fausse !

Je suppose que vous n'y voyiez pas grand intérêt, mais voilà un exemple d'utilisation :

:Repeat A
:Input "QUEL EST TON AGE ?",A
:End
:Disp "TON AGE EST DONC",A

La condition de la première ligne est une simplification de la condition "A!=0 ", si vous avez du mal revoyez le chapitre précédant.
Ici, nous n'avons pas besoin de nous embêter à stocker 0 dans A, puisque même si A est différent de 0, la boucle sera exécutée (bien que l'utilisation d'une boucle ne soit pas obligatoire ici :-° ).


Le principe La boucle par incrémentation

La boucle par incrémentation

Les boucles simples Mini-TP : Probabilité d'anniversaires identiques

La boucle par incrémentation

Voici donc la dernière boucle du TI-Basic, il s'agit de ... For !

Il s'agit d'une boucle un peu différente puisqu'elle ne prend pas de condition comme While ou Repeat ; elle s'auto-incrémente.

Sa syntaxe semble plus complexe à première vue :

:For(variable,départ,arrivée[,incrément])
:commande (tant que arrivée n?est pas dépassée)
:commande (tant que arrivée n?est pas dépassée)
:End
:commande

Pour utiliser correctement For(, il va donc falloir lui donner 3 ou 4 indications.

Si vous n'avez pas bien compris, il faut essayer de traduire For( par Pour. On aurait donc, avec comme code :

:For(F,1,9,2)

Pour F allant de 1 à 9 avec un pas de 2 (c'est à dire allant de 2 en 2), j'exécute le code ...


Les boucles simples Mini-TP : Probabilité d'anniversaires identiques

Mini-TP : Probabilité d'anniversaires identiques

La boucle par incrémentation Ordre de lecture du programme

Mini-TP : Probabilité d'anniversaires identiques

Ce mini-TP se base sur le paradoxe des anniversaires (appelé paradoxe bien que ce n'en soit pas réellement un).
Il s'agit de déterminer le pourcentage de chances de parmi N personnes, deux soient nées le même jour du même mois (peu importe l'année).

Cahier des charges

Pour commencer, je vais donner la formule à utiliser pour calculer la probabilité : \prod_{i=0}^{n-1} \frac{365-i}{365}, autrement dit : (\frac{365-0}{365}) (\frac{365-1}{365}) \ldots (\frac{365-(n-1)}{365}).
Cependant, nous n'avons là que la probabilité que deux anniversaires ne tombe pas en même temps. Nous, nous voulons savoir l'inverse (l'événement complémentaire, si cela vous dit quelque chose). Nous allons devoir faire (1-B) imes100, où B est notre produit de tout à l'heure, pour avoir un joli pourcentage.

Vous allez devoir faire un arrondi de ce résultat (disons, à deux virgules). Pour cela, utilisez la fonction round ( (

MATH
>
2

) qui s'utilise ainsi : round( valeur [,décimal]).

Avant d'utiliser la formule, regardez s le nombre entré est inférieur à 0, dans ce cas arrêtez le programme ; et s'il est supérieur ou égal à 82, affichez 100 puis arrêtez le programme (la calculatrice arrondira à 100% dès 82 personnes, bien que la vraie valeur de 100% soit à 366 personnes).
Enfin, si vous n'aviez pas compris, il faut utiliser la boucle For(. ;)
À vos calculatrices ! :pirate:

Correction

Si vous n'avez pas réussi, n'hésitez pas à relire le chapitre. Sinon, voici le code, qui pouvait bien sûr être modulé (la pointe d'humour quand A est inférieur à 0 n'était pas obligatoire :-° ) :

:Input "NB DE GENS:",N
:If N>82:Disp 100
:If N<0:Disp "TRES DROLE ..."
:If N>=0 and N<83
:Then
:1->B
:For(F,1,N-1
:B(365-F)/365->B
:End
:round(100(1-B),2->B
:Disp B
:End

Télécharger le fichier .8xp à transférer sur votre calculatrice
(187 octets) (125 octets sur la calculatrice)

La partie la plus difficile était l'implémentation de la boucle For(. Pourtant, en dépit d'une formule qui a bien la classe, il suffisait de bien lire la formule pour voir que ça allait tout seul. ^^

Ça y est ! Le chapitre est fini, les boucles sont passées. Et pourtant, j'espère que vous avez bien compris car vous allez très certainement beaucoup les utiliser maintenant. Vous pouvez, grâce à elle, créer de nombreux programmes intéressants.


La boucle par incrémentation Ordre de lecture du programme

Ordre de lecture du programme

Mini-TP : Probabilité d'anniversaires identiques Poser une étiquette

Jusqu'ici la calculatrice interprétait le programme que vous écriviez depuis le début jusqu'à la fin. De temps en temps elle relisait quelques lignes lorsqu'il y avait des boucles. Mais globalement les instructions étaient toutes lues dans l'ordre.

On va voir ici comment mettre un peu de discontinuité dans vos programmes. :pirate:

Poser une étiquette

Ordre de lecture du programme Se rendre à une étiquette

Poser une étiquette

Pour permettre à votre machine de s'y repérer un peu mieux (et donc de faire des choses plus avancées), on va pouvoir poser des étiquettes. Elles agissent comme une sorte de balise en permettant à la machine d'aller directement exécuter le code qui se trouve après elles.
On peut ainsi revenir en arrière (pour recommencer) ou tout simplement sauter une grande partie de votre programme (cela peut être utile pour en sortir).
Le nom de cette fonction est Lbl, qui est un diminutif pour "Label", elle se trouve dans le menu CTL (raccourci

9

).
Afin de différencier les différents Lbl que vous posez, il faut ajouter 1 ou 2 chiffres/lettres à la suite.
Cela nous donne la syntaxe suivante : Lbl étiquette, comme par exemple :

:Lbl A8

Cette combinaison nous permet pas moins de 1369 possibilités (10 chiffres + 26 lettres + thétha = 37, le tout au carré). Ainsi, dans des programmes en général peu imposants, c'est énorme et amplement suffisant, à moins que vous ne souhaitiez mettre 3 Lbl par ligne. :p

Maintenant que vous savez comment poser ces étiquettes, voyons comment s'en servir !


Ordre de lecture du programme Se rendre à une étiquette

Se rendre à une étiquette

Poser une étiquette Mettre le programme en pause

Se rendre à une étiquette

La fonction Goto

La fonction Goto est la fonction la plus simple fonctionnant de pair avec Lbl (ce n'est pas pour autant que les autres sont compliquées).
Vous trouverez la fonction Goto dans le menu CTL (raccourci

Image utilisateur

) et sa syntaxe est la même que pour Lbl : vous devez mettre 1 ou 2 lettres/chiffres à la suite du Goto : Goto étiquette.
Le fonctionnement est alors très simple, votre calculatrice ira au niveau du Lbl de même identification. On pourrait donc avoir :

:Lbl A
:Disp"BOUCLE"
:Goto A

Ici, la calculatrice ignorera la première ligne, exécutera la seconde (elle affichera "BOUCLE") puis, en exécutant la dernière ligne, elle ira au Lbl A. Comme vous l'aurez très certainement compris, ce petit exemple est également un cas particulier puisqu'il agit comme une boucle.

L'un des intérêts de Lbl / Goto est de permettre de ré-exécuter une partie d'un de vos programmes d'une manière plus souple qu'une boucle (pas de balise End nécessaire).

Menu(, pour des programmes plus clairs
Menu

Lorsque vos programmes auront plusieurs fonctionnalités, il est probable que vous vouliez permettre à l'utilisateur de pouvoir en sélectionner une spécifiquement. Pour cela, le TI-Basic dispose d'une fonction toute prête, Menu(, qui vous permet de créer des menus semblables à ceux déjà présents dans la calculatrice (comme

MATH

).

Menu( s'utilise ainsi :

Menu("titre","texte1",étiquette1,"texte2",étiquette2, . . .)

Comme vous pouvez le voir, on commence par donner le titre du menu, il s'agit de la ligne d'en-tête. Ensuite, vous pouvez donner des paires d'arguments : d'abord le nom du sous-menu (une indication pour l'utilisateur), puis le lien vers le Lbl souhaité (lien qui agira comme un Goto).

Il faut alors bien comprendre que chaque sous-menu est lié à un Lbl particulier.
Ainsi, lorsque l'utilisateur choisira un des sous-menu, la calculatrice lira le code à partir de ce Lbl.

En résumé

Voici un schéma pour bien comprendre les redirections vers les Lbl.

Mise en garde

Un Goto ou un Menu( ne permet pas de sortir d'une boucle. Une boucle ne se finira dans tous les cas que par un End. Cette règle s'applique également pour un If ... Then.
Il faut donc faire très attention lorsque vous utilisez des Goto ou Menu( à l'intérieur de blocs (boucles ou conditions).


Poser une étiquette Mettre le programme en pause

Mettre le programme en pause

Se rendre à une étiquette Arrêter le programme avant la fin

Mettre le programme en pause

De temps en temps, la calculatrice va trop vite pour nous. En effet, imaginons que je décide de faire un programme propre qui va nettoyer l'écran avant de s'arrêter. À peine aura-t-il donné le résultat final que celui-ci s'effacera, et ce n'est pas ce que l'on recherche. Afin de remédier à ce problème, il existe en TI-Basic une fonction capable de mettre en pause le programme.

Cette fonction est... Pause, et c'est la 8e du menu CTL. Son utilisation est très simple car elle ne prend aucun argument dans son utilisation classique, il suffit de l'ajouter dans un programme pour qu'à l'exécution, celui-ci se mette en pause jusqu'à ce que l'utilisateur appuie sur la touche entrée.

Il existe également une seconde forme de Pause, qui accepte un argument de la forme :
Pause [valeur]
Ici encore, c'est très simple : la valeur sera tout simplement affichée. Ainsi, les deux codes suivants auront le même effet.

:Disp A
:Pause
:Pause A

Seulement, le second est un peu plus rapide, ;) et plus tard nous y verrons un autre avantage.


Se rendre à une étiquette Arrêter le programme avant la fin

Arrêter le programme avant la fin

Mettre le programme en pause Gérer l'appui sur les touches

Arrêter le programme avant la fin

Imaginons que, pour une quelconque raison, vous ayez besoin d'arrêter un programme avant la fin.

Ce que vous pouvez déjà faire

Grâce à la partie précédente, vous pouvez désormais le faire, à l'aide d'une petite astuce :

:Disp"CODE"
:Goto Q
:Disp"CODE IGNORE"
...
:Lbl Q

Ce code ira directement à la fin du programme et donc celui-ci s'arrêtera. Cependant, il existe une solution plus facile, plus claire, plus rapide... tout simplement meilleure.

La fonction Stop

Il s'agit de la fonction Stop qui se trouve dans le menu CTL (raccourci

ALPHA
COS

).
Cette fonction est particulièrement simple : elle arrête tout simplement le programme, définitivement.

La fonction Stop n'est cependant pas utile à la fin de votre programme. ;)

La fonction Return

La fonction Return a globalement le même effet que Stop. Mais elle a un autre effet bien pratique : contrairement à Stop qui arrête dans tous les cas le programme, Return va seulement arrêter le sous-programme en cours.

Hein ?! o_O C'est quoi un sous-programme ?

C'est une notion que nous n'avons pas encore abordée. Il s'agit d'un programme que vous appelez depuis un autre programme. Tout comme vous appelez un programme depuis le menu principal, vous pouvez en appeler un depuis un programme, en écrivant :
:prgmNOM
Le programme appelé sera alors exécuté et une fois fini le programme appelant continuera son exécution.

Return permet donc de quitter le programme appelé pour revenir tout de suite au programme appelant. Toutes les boucles en cours seront quittées, inutile donc de se préoccuper des boucles actuellement ouvertes. ;)

Vous savez maintenant bien maîtriser les bases du TI-basic. Nous allons dans le prochain chapitre voir une notion bien particulière pour enchaîner sur un gros TP pour faire un vrai et grand programme. Ensuite, nous attaquerons des choses plus avancées.


Mettre le programme en pause Gérer l'appui sur les touches

Gérer l'appui sur les touches

Arrêter le programme avant la fin Les numéros de touches

Ce chapitre est un peu spécial : il est tout entier consacré à une seule fonction ! o_O
Mais bon, elle le mérite, cette fonction ne permet pas moins de savoir sur quelle touche l'utilisateur a appuyé à un moment du programme.
C'est très très utile lorsque l'on veut faire un jeu, ou autre programme à interface développée.

Les numéros de touches

Gérer l'appui sur les touches Récupérer le numéro de la touche pressée

Les numéros de touches

Comment la calculatrice gère-t-elle les touches ?

La question que l'on peut se poser, c'est de savoir comment la calculatrice va nous expliquer clairement quelle est cette touche enfoncée. En effet, vous auriez pu voir au cours de ce tutoriel que pour vous expliquer sur quelle touche appuyer, on doit utiliser des photos des touches. :o
Mais la calculatrice ne peut pas afficher de photos ; et de toute façon, ça serait difficile de gérer une photo dans un programme.

Pour simplifier tout ça, chaque touche se voit attribuer un numéro. C'est très pratique car on peut lui faire subir toutes sortes d'opérations (stocker dans une variable).

L'attribution des numéros

Le numéro de chaque touche est défini comme ceci : (numéro de la ligne de la touche)*10 + (numéro de la colone de la touche).

Plus concrètement, voici l'illustration livrée avec le manuel :

Codes touches

Gérer l'appui sur les touches Récupérer le numéro de la touche pressée

Récupérer le numéro de la touche pressée

Les numéros de touches Utilisations concrètes

Récupérer le numéro de la touche pressée

Maintenant que l'on connaît les conventions d'appellation des touches, on va s'intéresser à la récupération des touches.

Demander la touche pressée

Pour demander la touche pressée, on ne va utiliser ni Prompt ni Input, mais une fonction créée exprès pour ça.
Il s'agit de getKey (

PRMG
>
7

), ce qui signifie en gros « recevoir la clé », c'est-à-dire que l'on va réceptionner la clé (c'est-à-dire le numéro) de la touche pressée.

Contrairement à Prompt ou Input, le programme ne s'arrêtera pas pour attendre que l'on presse une touche. Il réceptionnera le code de la dernière touche pressée depuis le lancement du programme. Faites donc bien attention, il n'est pas rare qu'un programme ne marche pas puisqu'il reçoit le code d'une touche pressée 5 minutes avant (mais depuis le lancement du programme), et que l'on a totalement oublié.
Si aucune touche n'a été pressée depuis le lancement du programme ou depuis le dernier getKey, la fonction renverra 0.

Plus concrètement, le code s'utilise généralement ainsi :

:getKey->K

On stocke donc le numéro de la touche pressée dans une variable. On a plutôt l'habitude d'utiliser la variable K, comme Key. C'est une convention qui permet de mieux nous y retrouver dans nos variables.
Ici, la variable K contiendra donc le code de la touche dernièrement pressée.

Traitement de la valeur reçue

C'est cool tout ça, mais j'en fais quoi de cette variable moi ? :euh:

Au départ cela peut être un peu difficile à comprendre, on veut savoir quelle touche a été pressée et on se retrouve avec une variable contenant un numéro. :waw: Mais il vous suffit tout simplement d'utiliser les conditions pour utiliser cette valeur.

En général, chaque touche a une fonction précise dans un programme, on compare donc souvent K aux différentes valeurs qui activent les fonctionnalités.

Par exemple, si K vaut 23 (la touche

DEL

), on quitte le programme :

:If K=23
:Stop

Les numéros de touches Utilisations concrètes

Utilisations concrètes

Récupérer le numéro de la touche pressée TP : Créer son premier jeu

Utilisations concrètes

Si vous êtes perspicaces, vous aurez compris que ce genre de fonctions s'utilise presque exclusivement dans des boucles.
En effet, on veut généralement permettre à l'utilisateur de presser une touche quand il le veut, et non pas seulement à l'unique moment où l'on a mis le getKey.

L'embryon de la plupart des codes

Je vous conseille de bien vous familiariser avec cette structure car c'est en quelque sorte les fondations pour gérer les codes touches :

:Repeat K
:getKey->K
:End

Comme vous pouvez le voir, on demande le code touche jusqu'à ce qu'il vaille quelque chose.
La première réaction lorsque l'on voit ce code c'est de l'interpréter comme ceci : « on attend que l'utilisateur appuie sur une touche, et une fois qu'il l'a fait, on a le numéro de la touche stocké dans K ».
Eh bien c'est faux ! :diable:
Enfin, en partie ! L'idée générale est bonne mais vous oubliez quelque chose de très important. En effet, rappelez-vous, getKey prend la valeur de la dernière touche pressée. Donc si l'utilisateur a déjà appuyé sur une touche depuis le lancement du programme, la boucle ne fera qu'un tour et puis basta !

Donc, l'embryon de code que vous utiliserez le plus souvent sera plus probablement celui-ci :

:getKey->K
:Repeat K
:getKey->K
:End

Du coup, à la première ligne, on fera en quelque sorte comme vider l'historique. On stocke l'éventuelle touche déjà pressée plus tôt dans une variable que l'on va écraser juste en dessous.
Et les prochains getKey renverront alors 0 jusqu'à ce qu'une nouvelle touche soit pressée.

Application

On va ici voir comment utiliser notre embryon dans un programme. On va créer un programme apprécié par beaucoup de personnes : un programme qui renvoie le code touche d'une touche pressée.
Pourtant, si vous avez bien compris qu'une touche a comme numéro 10 fois sa ligne plus sa colonne, vous n'avez absolument pas besoin de ce programme.

:Repeat K
:getKey->K
:End
:Disp K

C'était tout simple. On avait juste besoin d'un Disp pour afficher le code de la touche. Notez qu'ici on n'a pas besoin de mettre de getKey en première ligne puisque ce code est en début de programme, l'utilisateur n'a pas eu le temps de presser de touche.

Autre méthode

L'embryon que je vous ai donné est bien si on veut attendre que l'on ait une touche. Mais dans un programme qui tourne sans arrêt, le plus souvent des jeux (comme Snake), on ne veut pas attendre, il faut que ça avance ! :p

Par exemple, si l'on veut déplacer un 0 sur l'écran, avec sur la dernière ligne un compteur qui s'incrémente à chaque tour de boucle, pour se rendre compte du temps qui passe. ^^ On ne peut pas arrêter le programme pour attendre qu'on presse une touche, sinon le compteur s'arrêterait. Il faut donc utiliser le getKey dans la boucle globale du programme.

On serait donc tenté de faire une boucle globale, où au début on récupèrerait le code touche. Puis on confronterait cette valeur aux 4 codes touches des 4 touches

<

,

HAUT

,

>

et

BAS

avec 4 If pour appliquer les modifications nécessaires.
Mais plutôt que d'utiliser plein de If, on va rentrer les tests directement dans les calculs de modification. Souvenez-vous qu'un test de comparaison renvoie en 1 ou 0, suivant s'il est vrai ou faux. Nous allons donc incorporer cette valeur de 0 ou de 1 dans nos calculs :

:ClrHome
:1->A:1->B:0->C
:While 1
:getKey->K
:Output(A,B," ")
:A+(K=34)-(K=25)->A
:B+(K=26)-(K=24)->B
:Output(A,B,0)
C+1->C
:Output(8,1,C)
:End

Évidemment, si l'on veut que le code soit utilisable, il faut empêcher que l'on puisse sortir de l'écran ou que l'on rentre dans le compteur. Pour des raisons de simplicité, nous allons interdire toute la ligne du compteur, comme ça vous pourrez le faire tourner très longtemps ( :p ) :

:ClrHome
:1->A:1->B:0->C
:While 1
:getKey->K
:Output(A,B," ")
:A+(K=34 and A<7)-(K=25 and A>1)->A
:B+(K=26 and B<16)-(K=24 and B>1)->B
:Output(A,B,0)
:C+1->C
:Output(8,1,C)
:End
Le mot de la fin

Il arrive souvent que dans un cas comme le précédant, on veuille que la boucle s'interrompe lorsqu'une certaine touche est pressée. Pour cela il suffit simplement d'adapter la condition lors de la formulation de la boucle.
Ainsi, dans notre exemple précédent, si l'on veut arrêter lorsque

ENTER

a été pressé, il faudra faire comme suit.

:ClrHome
:1->A:1->B:0->C
:Repeat K=105
:getKey->K
:Output(A,B," ")
:A+(K=34 and A<7)-(K=25 and A>1)->A
:B+(K=26 and B<16)-(K=24 and B>1)->B
:Output(A,B,0)
:C+1->C
:Output(8,1,C)
:End

À travers l'explication illustrée de cette fonction, vous devriez maintenant bien savoir la manipuler.
Rassemblez vos esprits car nous allons maintenant voir comment créer un programme. Un vrai, un grand, un beau. ^^


Récupérer le numéro de la touche pressée TP : Créer son premier jeu

TP : Créer son premier jeu

Utilisations concrètes Le cahier des charges

Après avoir ingurgité tous ces chapitres, il est temps de mettre toutes vos connaissances en pratique pour créer un programme (un gros, pas un tout petit comme on en avait l'habitude).

Et quoi de plus plaisant comme programme qu'un jeu auquel vous pourrez jouer pendant les cours récréations ? :ange:

Nous allons ici créer un jeu de réflexes, où le but sera d'appuyer sur la touche demandée le plus vite possible.

Le cahier des charges

TP : Créer son premier jeu Quelques indices pour procéder

Le cahier des charges

Je vais ici vous dire comment le programme doit fonctionner, et à quoi il devra ressembler à la fin.

Présentation du jeu

Il s'agit d'un jeu où une grille (type morpion) est affichée sur l'écran. Chaque case de la grille correspond à une touche de la calculatrice.
Un marqueur va alors apparaitre dans une case de la grille. En un certain laps de temps, il va falloir appuyer sur la touche correspondante.
Si on n'appuie pas sur la touche assez vite, on a perdu, :( sinon un nouveau marqueur apparait.

Le graphisme
La grille

Il doit s'agir d'une grille de 3*3 cases, chacune faisant 4 de largeur et 2 de hauteur. Voici à quoi elle doit ressembler :

Grille

Les lignes horizontales ont été faites avec des moins, les verticales avec des I, et les intersections avec des plus.

Les marqueurs

Les marqueurs doivent remplir entièrement la case, comme ceci :

Grille avec marqueur

Le marqueur a été fait avec des X.

Les capacités du jeu

Au démarrage, on doit avoir un écran de présentation.
Le jeu doit ensuite nous proposer entre le niveau facile, moyen ou difficile.
Ensuite, la grille s'affiche avec le marqueur.
Les touches doivent êtres associées aux cases de la grille ainsi :

778899
445566
112233

Si l'on appuie sur la bonne touche à temps, le marqueur doit disparaitre et être aussitôt remplacé par un autre.
Sinon, l'écran s'efface et on nous indique notre nombre de points (nombre de marqueurs qu'on a réussi à faire disparaitre).


TP : Créer son premier jeu Quelques indices pour procéder

Quelques indices pour procéder

Le cahier des charges Correction

Quelques indices pour procéder

Vu que c'est votre premier programme, je vais beaucoup vous aider. ;)

L'écran de présentation

Bon ça ne devrait pas être trop dur, il vous suffit d'effacer l'écran, de noter le nom du programme, du programmateur, de la version éventuellement si vous voulez modifier le programme plus tard. Bref, vous présentez le programme.
Vous faites une belle mise en page, et vous attendez que l'utilisateur appuie sur

ENTER

pour continuer.

Le niveau

Pour choisir le niveau, faites un menu.
Ce menu amènera vers des étiquettes qui stockeront le niveau dans une variable.
Cette variable nous sera utile plus tard pour déterminer la durée pendant laquelle il faut presser la touche.

Afficher la grille

Pour afficher la grille, évitez de le faire ligne par ligne, ça serait beaucoup trop fatiguant et ça prendrait beaucoup plus de place que nécessaire.
Faites donc deux boucles : une pour tracer les droites horizontales, et une pour les verticales. Faites ensuite 4 Output pour les 4 intersections.

Placer le marqueur
Détermination de la case

Il vous faut d'abord déterminer dans quelle case le marqueur va apparaître. Pour cela, vous allez avoir besoin d'une fonction que l'on n'a pas encore vu : randInt (ce qui signifie entier aléatoire). Pour aller la chercher, faites

MATH
<
5

.
Cette fonction s'utilise ainsi : randInt(valeur minimale, valeur maximale).

Stockez donc un nombre aléatoire entre 1 et 9 dans une variable.
Et ensuite, pour chaque valeur de cette variable, associez une case.
Pour ce faire, créez 2 variables qui stockeront les coordonnées de l'origine de la case souhaitée.
L'origine d'une case étant définie comme ceci :

Grille commentée
Afficher le marqueur

Maintenant que vous avez les coordonnées de l'origine, et puique vous connaissez les dimensions d'une case, vous pouvez facilement la remplir de X.

Attendre un certain temps que l'utilisateur presse une touche

Vous vous souvenez de l'embryon de code très utilisé que l'on a vu au chapitre précédent ? Celui avec une boucle qui tournait jusqu'à ce que le code touche vaille quelque chose.
Eh bien ici, vous allez réutiliser le même principe mais en faisant en sorte que la boucle (qui ne sera pas forcément une boucle Repeat) ne tourne qu'un certain nombre de fois, ce nombre dépendant de la facilité du niveau. Ici on joue sur le fait que le TI-basic est lent, ce qui laisse le temps au joueur en une centaine de tours de boucle d'avoir appuyé sur la touche.

Déterminer si la touche pressée est la bonne

Si l'utilisateur a pressé une des touches demandées, associez à cette touches un numéro en 1 et 9 (faites l'inverse de ce que vous aviez fait avec le nombre aléatoire).
Puis comparez ce numéro avec le nombre tiré aléatoirement, afin de déterminer si la bonne touche a été pressée.

Si la bonne touche est pressée

SI l'utilisateur a pressé la bonne touche, il vous faut effacer le marqueur.

Ensuite, il vous faut revenir à l'étape de détermination de l'emplacement du marqueur. Englobez donc toute cette partie du programme dans une boucle infinie.

Si l'utilisateur a échoué

Si l'utilisateur à perdu, :diable: il faut le sortir de la boucle. Utilisez les étiquettes pour ça.
Vous devez ensuite effacer l'écran, et afficher le score que vous aurez pensé à incrémenter dans une variable à chaque tour de la boucle infinie.

Au boulot !

Bon ben maintenant c'est à vous. :-°


Le cahier des charges Correction

Correction

Quelques indices pour procéder Les fonctions en français

Correction

Je vais ici vous détailler la création du programme étape par étape, pour que vous puissiez bien suivre.
Je suppose que vous avez au moins déjà créé un programme, j'ai appelé le mien REFLEXE.

L'écran de présentation

Voici ce que nous allons faire (ce n'est qu'un exemple) :

Ce qui donne donc :

:ClrHome
:Output(1,2,"JEU : REFLEXE")
:Output(3,7,"V1.0")
:Output(5,4,"PAR SHAAC")
:Output(8,2,"SITEDUZERO.COM")
:Pause
Présentation REFLEXE

Bien sûr, remplacez Shaac par votre nom. ^^

Le niveau

On va utiliser un menu à 3 options, qui va nous emmener à l'étiquette 1, 2 ou 3 selon le niveau choisi.

:Menu("QUEL NIVEAU ?","FACILE",1,"MOYEN",2,"DIFFICILE",3)

Maintenant les étiquettes :

:Lbl 1
:1->N
:Lbl 2
:2->N
:Lbl 3
:3->N

Il faut donc faire ceci :

:Lbl 1
:1->N
:Goto 4
:Lbl 2
:2->N
:Goto 4
:Lbl 3
:3->N
:Lbl 4

Comme ça le programme lit l'instruction du niveau choisis, puis saute directement vers la suite du programme.

Afficher la grille

Il suffit d'appliquer le conseil que je vous ai donné plus haut :

:ClrHome
:For(F,2,15)
:Output(3,F,"-")
:Output(6,F,"-")
:End
:For(F,1,8)
:Output(F,6,"I")
:Output(F,11,"I")
:End
:Output(3,6,"+")
:Output(3,11,"+")
:Output(6,6,"+")
:Output(6,11,"+")
Placer le marqueur
Détermination de la case

On va stocker le nombre aléatoire dans A. Et les coordonnées de l'origine de la case dans X et Y, comme pour un repère. Voici un schéma pour bien comprendre :

Repère

Voici le code :

:randInt(1,9)->A
:If A=<3
:1->Y
:If A>3 and A<=6
:4->Y
:If A>6
:7->Y
:If A=1 or A=4 or A=7
:2->X
:If A=2 or A=5 or A=8
:7->X
:If A=3 or A=6 or A=9
:12->X

Bon comme ça, ça peut paraitre un peu lourd toutes ces conditions. Il y a moyen d'en mettre 3 fois moins en réfléchissant à un algorithme, mais ça compliquerait trop pour le moment. ;)

Afficher le marqueur

Comme je vous l'ai dit, on fait une boucle imbriquée dans une autre :

:For(F,0,1)
:For(G,0,3)
:Output(Y+F,X+G,"X")
:End:End

Prenez l'habitude de fermer vos boucles sur la même ligne en cas de boucles imbriquées comme ici.

Attendre un certain temps que l'utilisateur presse une touche

Comme je vous l'ai conseillé, on va reprendre l'embryon du chapitre précédent.

:Repeat K
:getKey->K
:End

Mais cette boucle tournera jusqu'à ce que l'on appuie sur une touche. L'utilisateur a donc tout son temps, ce n'est pas ce que l'on veut. On va donc limiter le nombre de tours de boucle. Et quelle est la boucle qui tourne un nombre de tours prédéfini ? C'est For( ! Il ne nous reste plus qu'à écrire la valeur d'arrivée en fonction de N. Ici j'ai pris 100/N, ça me paraissait un bon timing pour les différents niveaux.

:For(F,1,100/N)
:getKey->K
:End

Cependant, il reste un dernier problème : une fois que l'utilisateur aura pressé sa touche, la boucle va redemander la valeur de getKey, qui vaudra alors 0. C'est plutôt problématique. Comme il n'existe pas de touche dont le code vaut 0, on ne va stocker le code touche dans K que s'il est différent de 0.

:For(F,1,100/N)
:getKey->G
:If G!=0
:G->K
:End
Déterminer si la touche pressée est la bonne

Ici, c'est une partie un petit peu bourrin, mais c'est un passage forcé. Heureusement il n'y a rien de bien difficile ici.

:If K=72
:1->B
:If K=73
:2->B
:If K=74
:3->B
:If K=82
:4->B
:If K=83
:5->B
:If K=84
:6->B
:If K=92
:7->B
:If K=93
:8->B
:If K=94
:9->B

Hop ! Plus qu'un test d'égalité entre A et B et l'affaire est pliée. :)
Nous ferons ce test un peu plus tard, pour le moment on va supposer que l'utilisateur a pressé la bonne touche.

Si la bonne touche est pressée

Pour l'instant on suppose que c'est le cas, on omettra ces instructions dans le cas contraire plus tard.
On cherche donc à effacer le curseur, on reprend donc le code qui affichait des "X", et on fait afficher des " " à la place, comme ça on verra un caractère vide à la place des "X", c'est-à-dire qu'on ne verra plus rien, :p le curseur sera effacé !

:For(F,0,1)
:For(G,0,3)
:Output(Y+F,X+G," ")
:End:End
Gestion de la boucle

Il va falloir mettre en place une boucle qui tourne jusqu'à ce que l'on ait perdu. Il faut donc que la boucle démarre après l'affichage de la grille mais avant la sélection du marqueur. Placez donc ceci juste avant le randInt : :While 1 .

Puis, à la fin du code, mettez un End pour fermer cette boucle.

Les points

Maintenant qu'on a une belle boucle, on va pouvoir compter les points. :) On va les stocker dans la variable P.
Tout d'abord on initialise la variable avant le début de la boucle (:0->P ).
Ensuite, à la fin de chaque tour de jeu (avant d'effacer le marqueur par exemple), on incrémentera ce nombre de points :P+1->P .

La gestion de la fin de jeu

Maintenant on part du principe que l'on a perdu. :'(
Il va donc falloir quitter la boucle infinie du jeu. Avant d'incrémenter les poins, faites donc ceci :

:If A!=B
:Goto 0

Ainsi, si la touche appuyée ne correspond pas à la position du curseur, on va au Lbl 0, que l'on placera après la boucle.

La fin du programme

C'est presque terminé ! :)
À la fin de la boucle ajoutez ceci :

:Lbl 0
:ClrHome
:Disp "NOMBRE DE PTS :",P
:Pause 
:Menu("CONTINUER ?","OUI",5,"NON",6)
:Lbl 6

À la fin du jeu, l'utilisateur aura alors le choix de recommencer s'il le désire.
Il faut ne pas oublier d'ajouter un Lbl 5 après le code de l'écran de présentation du programme.

Le code

Il est possible que vous ayez eu du mal à suivre, surtout sur la fin, voici donc le code en entier :

:ClrHome
:Output(1,2,"JEU : REFLEXE")
:Output(3,7,"V1.0")
:Output(5,5,"PAR SHAAC")
:Output(8,2,"SITEDUZERO.COM")
:Pause 
:Lbl 5
:Menu("QUEL NIVEAU ?","FACILE",1,"MOYEN",2,"DIFFICILE",3)
:Lbl 1
:1->N
:Goto 4
:Lbl 2
:2->N
:Goto 4
:Lbl 3
:3->N
:Lbl 4
:ClrHome
:For(F,2,15)
:Output(3,F,"-")
:Output(6,F,"-")
:End
:For(F,1,8)
:Output(F,6,"I")
:Output(F,11,"I")
:End
:Output(3,6,"+")
:Output(3,11,"+")
:Output(6,6,"+")
:Output(6,11,"+")
:0->P
:While 1
:randInt(1,9)->A
:If A<=3
:1->Y
:If A>3 and A<=6
:4->Y
:If A>6
:7->Y
:If A=1 or A=4 or A=7
:2->X
:If A=2 or A=5 or A=8
:7->X
:If A=3 or A=6 or A=9
:12->X
:For(F,0,1)
:For(G,0,3)
:Output(Y+F,X+G,"X")
:End:End
:For(F,1,100/N)
:getKey->G
:If G!=0
:G->K
:End
:If K=72
:1->B
:If K=73
:2->B
:If K=74
:3->B
:If K=82
:4->B
:If K=83
:5->B
:If K=84
:6->B
:If K=92
:7->B
:If K=93
:8->B
:If K=94
:9->B
:If A!=B
:Goto 0
:P+1->P
:For(F,0,1)
:For(G,0,3)
:Output(Y+F,X+G," ")
:End:End
:End
:Lbl 0
:ClrHome
:Disp "NOMBRE DE PTS :",P
:Pause 
:Menu("CONTINUER ?","OUI",5,"NON",6)
:Lbl 6

Télécharger le fichier .8xp à transférer sur votre calculatrice
(489 octets) (647 octets sur la calculatrice)

Pfiou c'est enfin terminé ! :)
Vous avez maintenant un vrai programme fonctionnel ! Vous pouvez cependant l'améliorer en ajoutant des niveaux de difficulté par exemple ; ça ne pourra que vous entraîner.

Vous pouvez maintenant prendre une petite pause, vous avez fini d'apprendre les bases du TI-basic ! :soleil:

Vous avez maintenant un aperçu de la programmation sur TI. ;)


Quelques indices pour procéder Les fonctions en français

Les fonctions en français

Correction Bien utiliser le tableau

Si vous possèdez une TI-82 stats.fr, vous allez devez avoir du mal à vous repérer dans ce tutoriel, car la majorité des fonctions de votre calculette sont traduites en français. o_O Pour vous aider à vous repérer, voici un tableau donnant l'équivalent français de chaque fontion disponible sur la TI-83 plus.

Bien utiliser le tableau

Les fonctions en français Le tableau de traduction

Bien utiliser le tableau

La tableau est composé de quatre colones :


Les fonctions en français Le tableau de traduction

Le tableau de traduction

Bien utiliser le tableau

Le tableau de traduction

Sur la TI-83 plus

Sur la TI-82 Stats.fr

Comment y accéder ?

Où en parle-t-on dans le tuto ?

a+b\iota

a+b\color{green}{\iota}

MODEBAS>ENTERMODE

6X

Introduction dans l'univers Texas Intruments

abs(

abs(

MATH>1MATH

-

ClrHome

EffEcran

PRMG>8PRMG

Afficher du texte

ClrTable

ClrTable

PRMG>9PRMG

-

Connected

Relié

MODEBASENTERMODE

4X

Introduction dans l'univers Texas Intruments

>Dec

>Déc

MATH2MATH

-

Degree

Degré

MODEBAS>ENTERMODE

2X

Introduction dans l'univers Texas Intruments

DelVar

EffVar

PRMGALPHATANPRMG

-

Disp

Disp

PRMG>3PRMG

Afficher du texte

DispGraph

AffGraph

PRMG>4PRMG

-

DispTable

AffTable

PRMG>5PRMG

-

Dot

NonRelié

MODEBAS>ENTERMODE

4X

Introduction dans l'univers Texas Intruments

DS<(

DS<(

PRMGALPHAAPPSPRMG

Les conditions

Else

Else

PRMG3PRMG

Les conditions

End

End

PRMG7PRMG

Les conditions
Les boucles

Eng

Ing

MODE>ENTERMODE

2X

Introduction dans l'univers Texas Intruments

Float

Flott (Flottant)

MODEBASENTERMODE

Introduction dans l'univers Texas Intruments

fMax(

xfMax(

MATH7MATH

-

fMin(

xfMin(

MATH6MATH

-

fnInt(

fonctIntégr(

MATH9MATH

-

fPart(

partDéc(

MATH>4MATH

-

>Frac

>Frac

MATH1MATH

-

For(

For(

PRMG4PRMG

Les boucles

Full

Plein (PleinEcr)

MODEBASENTERMODE

7X

Introduction dans l'univers Texas Intruments

Func

Fct (Fonct)

MODEBASENTERMODE

3X

Introduction dans l'univers Texas Intruments

Function...

Fonction...

-

-

G-T

G-T

MODEBAS>ENTERMODE

7X

2X

Introduction dans l'univers Texas Intruments

gcd(

pgcd(

MATH>9MATH

-

GDB...

BDG...

-

-

Get(

Capt(

PRMG>ALPHAMATHPRMG

-

GetCalc

CaptVar

PRMG>Image utilisateurPRMG

-

getKey

codeTouche

PRMG>7PRMG

Gérer l'appui sur les touches

Goto

Goto

PRMGImage utilisateurPRMG

Ordre de lecture du programme

Graphstyle(

GraphStyle(

PRMGALPHA^PRMG

-

Horiz

Horiz

MODEBAS>ENTERMODE

7X

Introduction dans l'univers Texas Intruments

If

If

PRMG1PRMG

Les conditions

Input

Input

PRMG>1PRMG

Gérer les variables

iPart(

ent(

MATH>3MATH

-

IS>(

IS>(

PRMGALPHAMATHPRMG

Les conditions

int(

partEnt(

MATH>5MATH

-

Lbl

Lbl

PRMG9PRMG

Ordre de lecture du programme

lcm(

ppcm(

MATH>8MATH

-

max(

max(

MATH>7MATH

-

Menu(

Menu(

PRMGALPHAPRMGPRMG

Ordre de lecture du programme

min(

min(

MATH>6MATH

-

nDeriv(

nbreDérivé(

MATH8MATH

-

Normal

Normal

MODEENTERMODE

Introduction dans l'univers Texas Intruments

On/Off...

On/Off...

-

-

Output(

Output(

PRMG>6PRMG

Afficher du texte

Par (Param)

Par (Param)

MODEBAS>ENTERMODE

3X

Introduction dans l'univers Texas Intruments

Parametric...

Paramétrique...

-

-

Pause

Pause

PRMG8PRMG

Ordre de lecture du programme

Picture...

Image...

-

-

prgm

prgm

PRMGALPHAx-1PRMG

-

Pol (Polar)

Pol (Polaire)

MODEBAS>ENTERMODE

3X

2X

Introduction dans l'univers Texas Intruments

Polar...

Polaire...

-

-

Prompt

Prompt

PRMG>2PRMG

Gérer les variables

Radian

Radian

MODEBASENTERMODE

2X

Introduction dans l'univers Texas Intruments

re^ heta\iota

re^\color{green}{ heta\iota}

MODEBAS>ENTERMODE

6X

2X

Introduction dans l'univers Texas Intruments

Real

Réel

MODEBASENTERMODE

6X

Introduction dans l'univers Texas Intruments

Repeat

Repeat

PRMG6PRMG

Les boucles

Return

Return

PRMGALPHASINPRMG

Ordre de lecture du programme

round(

arrondi(

MATH>2MATH

-

Sci

Sci

MODE>ENTERMODE

Introduction dans l'univers Texas Intruments

Send(

Envoi(

PRMG>ALPHAAPPSPRMG

-

Seq

Suit (Suite)

MODEBAS>ENTERMODE

3X

3X

Introduction dans l'univers Texas Intruments

Sequential

Séquentiel

MODEBASENTERMODE

5X

Introduction dans l'univers Texas Intruments

Simul

Simul

MODEBAS>ENTERMODE

5X

Introduction dans l'univers Texas Intruments

solve(

résoudre(

MATHImage utilisateurMATH

-

Solver...

Solveur...

MATHImage utilisateurMATH

(hors édition prgm)

-

Statistics...

Statistiques...

-

-

Stop

Stop

PRMGALPHACOSPRMG

Ordre de lecture du programme

String...

Chaîne...

-

-

Table...

Table...

-

-

Then

Then

PRMG2PRMG

-

While

While

PRMG5PRMG

Les boucles

Window...

Fenêtre...

-

-

Zoom...

Zoom...

-

-

x?

x?

MATH5MATH

-

3

3

MATH3MATH

-

3?(

3?(

MATH4MATH

-

Maintenant les fonctions en français ne vous poseront plus de problèmes. :)


Bien utiliser le tableau