Aller au menu - Aller au contenu

Icône Les chaines de caractères

Avatar
Mise à jour : 22/08/2008
1 010 visites depuis 7 jours, dont 47 sur ce chapitre classé 126/786
Pour le moment, nous n'avons que manier des nombres pour faire des additions, enregistrer des positions, le score des meilleurs joueurs ,...

Mais si je veux enregistrer le nom du meilleur joueur, je fais comment ? :o


C'est là qu'interviennent les chaines de caractères ! :pirate:
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Généralités

En Ti-Basic, les chaînes de caractères sont donc des espaces où l'on peut stocker un ou plusieurs caractères (vous vous en doutiez non ? ^^ ).
Vous pouvez ainsi enregistrer des noms, des lieux, ... comme "BERTRAND", "LAMPADAIRE" ou "123AZERTY"

La Ti vous fournit 10 chaînes, pas plus, pas moins ! Elles sont numérotées de Str0 à Str9.
Vous pouvez y accéder en faisant [VARS]+7.


Vous avez trois manières différentes de récupérer une chaîne de caractères :
  • En l'inscrivant dans le programme :
Code : Pascal
1
:"AZERTY"->Str1

  • En utilisant Input ou en utilisant Prompt :
Code : Pascal
1
2
:Input "NOM?",Str0
:Prompt Str1


Pour l'afficher, rien de plus simple. ^^
Code : Pascal
1
2
:Disp Str1
:Ouput(1,2,Str2


La concaténation de chaîne est autorisée. Vous pouvez donc réaliser des opérations comme :

Code : Pascal
1
2
3
:"ABC"+"CDE"->Str1
:Str1+"A"->Str8
:Str1+Str2->Str3


Manipulation

Bon : on sait initialiser une chaîne & l'écrire, mais on pourrait aller un peu plus loin, non ? :p
Je vais vous montrer plusieurs fonctions qui permettent de faire ce que vous voulez de vos chaînes.

Ces fonctions sont disponibles dans le catalogue de la Ti, qui regroupe toutes les fonctions existantes de votre calculatrice. Vous le trouverez en faisant [2nd]+[0]. :D


length(



Les anglophones ont dû deviner que cette fonction renvoie la longueur de la chaîne.
Code : Pascal
1
2
3
:"ABCD"->Str8
:length(Str8)->L
:Disp L

Code : Console
4



sub(



Cette fonction renvoie une chaîne qui est une partie de la chaine initiale : on appelle ça une sous-chaîne.
début est le numéro de position du premier caractère de la sous-chaîne.
taille est le nombre de caractères de la sous-chaîne.
Code : Pascal
1
:sub(chaîne,début,taille

Code : Pascal
1
2
3
:"BONJOUR JACQUES"->Str2
:sub(Str2,1,7)->Str3
:Disp Str3

Code : Console
BONJOUR



inString(



Cette fonction renvoie la position dans la chaîne initiale du premier caractère de la sous-chaîne. :)
début est facultatif : il indique la position du premier caractère de la chaîne où la recherche doit commencer (sa valeur par défaut est 1).
Code : Pascal
1
:inString(chaîne,sous-chaîne[,début]

Code : Pascal
1
2
:inString("BONJOUR","JOUR")->A
:Disp A

Code : Console
4


2ème exemple, avec le paramètre facultatif :
Code : Pascal
1
:inString("ABCABC","ABC",4)->Str2

Str2 contient donc "ABC" (les 3 dernières lettres de la chaîne). ^^



expr(



Je crois que cette fonction est la plus intéressante ! ;)
Elle permet de convertir une chaîne de caractères en expression, pour ensuite l'exécuter.
Code : Pascal
1
:expr(chaîne


Pas clair ? :o
Je m'explique : imaginons que Str1 vaut "3X" et que X vaut 4. Si j'utilise expr(, alors 3X sera transformé en 3*4, et le calcul sera effectué.
Code : Pascal
1
2
3
4
:"3X"->Str1
:4->X
:expr(Str1)->A
:Disp A

Code : Console
12


On peut donc demander à l'utilisateur de rentrer une fonction contenant une inconnue, et une valeur de l'inconnue (bien sûr, dans ce cas, la fonction devra contenir X :D ).
Code : Pascal
1
2
3
4
:Input "Y=",Str1
:Input "X=",X
:expr(Str1)->A
:Disp A


Un autre exemple (tiré d'un problème du forum).
Pour un programme, on a besoin de connaître le nombre de caractères que fait un nombre avant de le manipuler. Comment faire ? C'est simple ! ^^
Code : Pascal
1
2
3
:"12345"->Str1
:length(Str1)->A
:expr(Str1)->B

A contient donc la taille du nombre, soit 5, & B contient quand à lui la valeur 12345.


String>Equ(



Cette fonction permet de convertir une chaîne en équation. :D

Code : Pascal
1
:String>Equ(chaîne,Yn // n est l'indice de l'équation

En fait, quand je dis équation, je parle de celles qui permettent d'afficher des courbes sur votre écran graphique.
Elles sont numérotés de Y0 à Y9. Vous les trouverez en faisant [VARS]+[Y-VARS]+1.

Code : Pascal
1
:String>Equ("3X+2",Y2

Vous pouvez vérifier que votre équation a bien été ajoutée en faisant [Y=] (en haut).
Vous pouvez ensuite admirer la courbe créée en faisant [TRACE] ou [GRAPH]. ^^
Pour afficher la courbe à partir du programme, faites DispGraph (allez fouiller dans le catalogue !) :) .



Equ>String(



C'est tout simplement le contraire de la fonction du dessus. On passe d'une équation à une chaîne. :)
Code : Pascal
1
:Equ>String(Yn,Strn // n pouvant aller de 0 à 9

Code : Pascal
1
2
:"3X+2"->Y1
:Equ>Str(Y1,Str4

Str4 vaut donc bien "3X+2". :D

Un autre exemple (tiré d'un problème du forum):
Pour un programme, on a besoin de connaitre le nombre de caractère que fait un nombre avant de le manipuler. Comment faire ? C'est simple ! ^^
Code : Pascal
1
2
3
:"12345"->Str1
:length(Str1)->A
:expr(Str1)->B

A contient donc la taille du nombre soit 5 & B contient quand à lui la valeur 12345.
Allez hop, au chapitre suivant ! :p
Chapitre précédent Sommaire Chapitre suivant

Partager

17 commentaires pour "Les chaines de caractères"
Note moyenne : 3.82 / 4 (60 votes)
Pseudo Commentaire
Hors ligne PingouinDesIles # Posté le 12/11/2009 à 20:48:48

Tout ce tutoriel est vraiment sympa, et surtout très utile ! A propos des chaines de caractères, juste une petite précision : sur les nouvelles Ti 83+, la touche VARS est maintenant VAR. Ca peut paraitre futile, mais j'ai 15mn à la trouver ! :euh:
Je suis aussi peut-être un boulet mais... Ca m'a troublé :D !
Hors ligne Dirtcrusher # Posté le 27/02/2010 à 15:57:33
L'ourse belge

Ville : Marcillat en combraille
Pays : France métropolitaine
Études : L.E.G.T. Paul Constans - Montluçon

Ce tutoriel est vraiment bien, mais il ya une petite erreur:
Citation : Lanfeust 313

2ème exemple, avec le paramètre facultatif :
Code : Pascal
1
1:inString("ABCABC","ABC",4)->Str2

Str2 contient donc "ABC" (les 3 dernières lettres de la chaîne). ^^

Mais la valeur renvoyé n'est pas une chaine, mais un nombre! Donc on ne peut pas le stocker dans Str2
Et après, il doit contenir 4, pas "ABC"!

1+1=1
Image utilisateur
Citation : quelqu'un sur un forum

La vitesse de la lumière étant supérieure à la vitesse du son, quelqu'un peut paraître brillant jusqu'à il ouvre sa gueule.

Secret (cliquez pour afficher)
Surtout, n'hésitez pas à corriger mes erreurs d'orthographe dans mes postes!
 
Hors ligne Crypter90 # Posté le 28/11/2010 à 18:17:40
Avatar

Salut a tous et merci pour ce Très bon tuto complet et facile a comprendre. Juste une dernière chose Que j'aimerais savoir : comment intégrer la valeur d' une variable dans une chaîne ?? Des idées svp

Ils ne savaient pas que c' était impossible, alors ils l'on fait :-°

----------Mac Twain----------
 
Hors ligne Progammer # Posté le 02/12/2010 à 19:15:41
Avatar

En fait , il faut passer par une équation ... regarde :

Code : Autre
1
2
3
4
5
6
Ans->X
{X,0}->L1
{0,X}->L2
LinReg (ax+b) L1,L2,Y1
Equ->String(Y1,Str1
sub(Str1,1,(lenght(Str1)-4)->Str1


En espérant t'avoir aidé . @+

Nouveau jeu Axe parser ! WORMSBLOCK v1.0

 
Hors ligne Nall # Posté le 15/10/2011 à 17:19:47
Sois fort, et tu vivras!
Avatar

Le début du tuto était très bien mais la fin n'est que la liste des autres fonctions de la ti. On aurait apprécier plus de TP.

Le Bâtard-au-Vif doit être pendu au dessus de l'eau, découpé en morceau, puis donné à manger au chien. Et brulez leur crottes !

On réfléchit toujours mieux après avoir fait caca qu'avant !
 

Voir tous les commentaires