Derniers sujets | » Numbers par Ver2guerre Dim 02 Avr 2023, 00:47
» Mort ? par godbod Dim 22 Aoû 2021, 12:23
» Network, essai 1 par godbod Dim 09 Juil 2017, 02:18
» GODBOD par godbod Sam 08 Juil 2017, 14:05
» mon humeur par Ver2guerre Sam 30 Juil 2016, 19:44
» [A voir] Programme de traduction original : WikiTranslate par AdRiWeB Lun 01 Fév 2016, 04:50
» Reprise ? par Emyl Jeu 14 Juin 2012, 21:17
» Euh, ah ? par Ver2guerre Dim 27 Mai 2012, 12:11
» Problème TI 89 Titanium non visible après mise à jour par abdoukid Mer 23 Mai 2012, 13:37
» Y'a quelqu'un ? par Ver2guerre Sam 21 Avr 2012, 23:10
|
Qui est en ligne ? | Il y a en tout 12 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 12 Invités :: 1 Moteur de recherche Aucun Le record du nombre d'utilisateurs en ligne est de 367 le Dim 18 Oct 2009, 00:16 |
| | [BASIC] Tout ce que vous avez voulu savoir sur... | |
| Auteur | Message |
---|
tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 19 Mar 2008, 19:20 | |
| ...les chaines ! ^^
Leçon du jour : les chaines donc, pas celles avec un boulet au bout, mais les chaines de caractères qu'on trouve dans nos chères TI (ou "string" en anglais, j'vois déjà Xywez arriver d'ici )
Alors, j'vais parler de beaucoup de choses sur les chaines, mais en vrac, parce qu'on me l'a demandé et j'improvise , il n'y aura pas vraiment d'organisation, enfin je dis ça, je dis rien, j'ai même pas encore commencé ^^
...
Allez hop, début du tuto :)Les chaines
Il est rare d'avoir vu un programme qui se passe de chaines, pour afficher du texte, ou encore pour d'autres usages...les chaines sont un magnifique outil de travail une fois qu'on les a maitrisé, elles enrichissent vraiment le programme, et certaines manipulations permettent de tirer le maximum de ces chaines...Quelles manipulations ? C'est ce qu'on va voir maintenant :) Pas de rédaction complète, j'balance les instructions/programmes un peu comme ça, j'avais prévenu ^^
- Trouver les chaines de caractères
Les chaines de caractères se trouvent dans le menu [Vars] puis en tapant [7]
- Concaténer deux chaines de caractères
Il s'agit simplement de mettre 2 chaines à la suite. Pour cela on utilise l'opérateur +Exemple : - Code:
-
"Bonjour->Str1 " tout le monde->Str2 Str1+Str2->Str1 //Str1 = "Bonjour tout le monde"
- Extraire une partie d'une chaine
Pour cela, on utilise la fonction sub() qui prend 3 arguments :
- chaine est la chaine (Str0 -> Str9 ou directement écrite (ex : "bonjour"))
- début est la position du 1er caractère à extraire
- nombre est le nombre de caractères à extraire à partir de début
Cette fonction retourne la sous-chaine constituée de nombre caractères à partir de début/!\ Attention /!\ début et nombre doivent être des nombres entiers ! début+nombre-1 doit être inférieur ou égal à la taille de Str1 (voir comment déterminer la taille d'une chaine)Exemple : - Code:
-
"Bonjour"->Str1 For N,1,7 sub(Str1,N,1->Str0 Disp Str0 End
Ce code retournera - Code:
-
B o n j o u r
- Déterminer la taille d'une chaine de caractères
Ici, on utilise la fonction length()Cette fonction prend 1 argument : la chaineExemple : - Code:
-
"Bonjour"->Str1 length(Str1)->A //A vaut 7
- Rechercher une sous-chaine dans une chaine
Pour rechercher une sous-chaine dans une chaine, on utilise la fonction instring()
Cette fonction prend 3 arguments :
- chaine est la chaine
- sous-chaine est la sous-chaine à trouver dans chaine
- debut indique l'endroit où commencer la recherche
Si le programme retrouve sous-chaine dans la chaine chaine, il retourne la position du premier caractère de sous-chaine, sinon il retourne 0Exemple : recherche de "jour" dans "bonjour" - Code:
-
"Bonjour"->Str1 instring(Str1,"jour")->A //A vaut 4
Remarque : Le programme s'arrêtera dès qu'il trouvera la sous-chaine demandée. Ainsi, s'il y a plusieurs occurences de sous-chaine dans chaine, le programme ne retiendra que la 1ère occurence Ainsi, si on avait voulu trouver "o" dans Bonjour, la fonction aurait retourné 2
Il est possible de trouver toutes les occurences de sous-chaine dans chaine de deux façons différentes : - "Manuellement", on trouve la 1ère occurence, puis on commence à chercher à partir du caractère suivant etc... c'est donc en utilisant le 3ème argument qu'on trouve toutes les occurences.
- Par un programme : Le programme suivant permet de "compléter" la fonction instring(), il est facile à comprendre avec ce qui a été dit précedemment - Code:
-
//Entrée : Str1 = chaine, Str2 = sous-chaine //Sortie : L1 = liste de toutes les occurences de Str2 dans Str1 //Utilise : Z,theta
length(Str2->Z //récupère la taille de Str2 0->N //nombre d'occurences trouvées For theta,1,length(Str2)-Z If sub(Str1,theta,Z)=Str2 //ça correspond Then If N=0 //1ère occurence Then {theta->L1 Else //ce n'est pas la 1ère occurence augment(L1,theta->L1 //rajoute un élément theta à la liste L1 End //fin de la condition N=0 End //fin de la condition sub(Str1,theta,Z)=Str2 End //fin de la boucle
- Convertir une chaine de caractères en expression
Pour cela, on utilise la fonction expr() qui convertit la chaine de caractères en expression puis l'évalue, donc attention à ne pas mettre de caractères invalides !Cette fonction prend 1 argument, la chaine Exemple : - Code:
-
"12*12"->Str1 expr(Str1)->A //A vaut 12*12=144
Remarque : On peut utiliser l'instruction expr() pour "simuler" l'indirection telle qu'elle existe sur les TI68k (c'est-à-dire 89 et +) Le code suivant permet ainsi de stocker {3} dans les listes LA, LB, LC, LD et LE
- Code:
-
//Entrée : rien //Sortie : {3} dans les listes A,B,C,D et E //Utilise : Z, Str1
"ABCDE"->Str1 For Z,1,length(Str1) {3}->expr("L"+sub(Str1,Z,1)) //cf explications End
La ligne "principale" de ce bout de code, qui est la ligne - Code:
-
{3}->expr("L"+sub(Str1,Z,1))
sert à faire ce que l'on veut Elle extrait d'abord le caractère de Str1, "A" puis "B" puis "C"...jusqu'à "E". Elle ajoute ensuite à ce caractère extrait le caractère L (attention : c'est un petit L, celui qu'on trouve dans le catalogue !) qui définit les listes "personnalisés" Enfin, l'instruction expr() évalue le tout
Cela revient donc à faire - Code:
-
{3}->LA {3}->LB {3}->LC {3}->LD {3}->LE
- Convertir un nombre en chaine de caractères
Le code suivant permet de convertir un nombre A en chaine de caractère Str1. Les explications après - Code:
-
//Entrée : A = nombre à convertir //Sortie : Str1 = A en chaine de caractères //Utilise : L1, L2, Y1, B
{A,A->L1 {1,2->L2 LinReg(ax b) L2,L1,Y1 Equ>String(Y1,Str1 length(Str1->B sub(Str1,4,B-3->Str1
Explications : - Code:
-
{A,A->L1 {1,2->L2
Rien de compliqué ici... - Code:
-
LinReg(ax+b) L2,L1,Y1
LA ligne qui pose problème ^^ Pour expliquer la fonction LinReg(ax+b) je prends l'exemple d'une expérience : pour ceux qui ont déjà fait des expériences et ont eu à tracer un graphe, souvent on obtient des valeurs expérimentales qui peuvent s'apparenter à une droite mais ce n'est pas tout à fait une droite, alors on trace une droite qui passe le plus près possible des points obtenus, et bien la régression linéaire permet de trouver l'équation de cette droiteCette fonction prend 2 arguments et 1 facultatif :
- liste1 qui correspond "aux coordonnées Y"
- liste2 qui correspond "aux coordonnées X"
- (facultatif) fonction dans laquelle le résultat va être stocké
Dans notre cas, on cherche l'équation d'une droite passant par les points de coordonnées (1,A) et (2,A)...la réponse n'est pas bien compliqué...On obtient alors dans Y1 une équation de la forme Y1=0X+A - Code:
-
Equ>String(Y1,Str1
Copie le contenu de Y1 dans Str1. On a donc Str1 = Y1=0X(plus)A - Code:
-
length(Str1->B sub(Str1,4,B-3->Str1
Code pour extraire le nombre A de la chaine Str1 obtenue. Un p'tit tableau pour mieux comprendre
Supposons que A = 1337 (au hasard ^^) Après les étapes précédentes, on a Str1 = 0X+1337 Str1 peut donc être représenté ainsi : (en gras, ce qu'on veut, en normal, ce qu'il faut éliminer)Str11.On obtient la taille de Str1 à l'aide de l'instruction length. On le stocke dans la variable BStr1B=7 2.On veut les 4 derniers caractères de la chaine. Cela revient à éliminer les 3 premiers caractères de la chaine Quoiqu'il arrive, la position du 1er caractère de la chaine sera toujours 4 Si on soustrait la taille de la chaine à 3, qui correspond à la taille de "0X+" on obtiendra toujours le nombre de caractères du nombre converti... Il ne reste plus qu'à finir le travail avec sub() Dans ce cas, on extraira 4 caractères à partir du 4ème, on obtient donc bien 1337Remarque : On aurait pu utiliser log() pour cela, mais les nombres négatifs ne passeraient pas... (rappel : int(log(n)) retourne le nombre de chiffres de n, mais ne marche que pour n>0 (term ^^))Voilà, j'ai à peu près fait le tour des chaines de caractères...si quelque chose manque ou que j'ai mal expliqué quelque chose, bah dites-le, je compléterai/corrigerai Ca va, c'est assez nay0w ? ^^ adri>oui, tu peux l'utiliser pour le wiki, je n'ai pas mis de copyright :p
Dernière édition par tama le Jeu 02 Oct 2008, 17:44, édité 3 fois |
| | | Syfo Pokémophile
Nombre de messages : 1978 Age : 33 Localisation : IYA items :
Personalized field : 26 jetons Réputation : 8 Points : 6768 Date d'inscription : 09/08/2007
Profil TI: 80, 82, 83, 83+, 84+ TO: 2 945 [GAIN * 1.1] Spécialité: Basic z80
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 19 Mar 2008, 21:38 | |
| Ah oui. Avec ce tuto, celui du pendu est plus simple. En tout cas, tres bien fait, et l'utilisation des couleurs est judicieuse, bravo.
(au fait, la copie que tu as mise sur tibank, elle a ete tapee en partie sur calculette, non?) |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 19 Mar 2008, 21:54 | |
| non, j'ai tout fait sur ordi, en improvisant, sans brouillon ^^ |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6287 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Jeu 20 Mar 2008, 00:22 | |
| Tama, c'est hallucinant BRAVO |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Jeu 20 Mar 2008, 00:24 | |
| hihi ^^ c'était à la demande de nay0w :) |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6287 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Jeu 20 Mar 2008, 20:08 | |
| lol
on veut ca il donne ca
xD |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Jeu 20 Mar 2008, 23:13 | |
| |
| | | Syfo Pokémophile
Nombre de messages : 1978 Age : 33 Localisation : IYA items :
Personalized field : 26 jetons Réputation : 8 Points : 6768 Date d'inscription : 09/08/2007
Profil TI: 80, 82, 83, 83+, 84+ TO: 2 945 [GAIN * 1.1] Spécialité: Basic z80
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Ven 21 Mar 2008, 17:46 | |
| C'est a propos du "on lui propose un doigt il prend le bras" je suppose. |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Ven 21 Mar 2008, 18:42 | |
| |
| | | AdRiWeB amis
Nombre de messages : 3655 Age : 31 Localisation : Juste sous mes cheveux Loisirs : Internet, programmation, TI, musique, tennis-de-table ... Humeur : ^^ items : o Personalized field : Réputation : 0 Points : 6287 Date d'inscription : 12/08/2007
Profil TI: TI-84 Plus, nspire CAS TO: 2429 {2} Spécialité: Basic z80
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Ven 21 Mar 2008, 20:51 | |
| non non ^^
on demande qqchose a Tama Tame donne le qqchose en question |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Ven 21 Mar 2008, 20:55 | |
| bien sûr j'suis un distributeur automatique |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Lun 24 Mar 2008, 17:46 | |
| |
| | | nay0w légende
Nombre de messages : 797 Age : 30 Localisation : Dans l'coin! Humeur : Bonne x) items : o Personalized field : 10 jetons Réputation : 0 Points : 6257 Date d'inscription : 11/02/2008
Profil TI: 82Fr / 89-Titanium TO: 3 825 Spécialité: Autre
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 09 Avr 2008, 21:16 | |
| Aaaaaaaaaaah mais j'avais pas vu que tu l'avais fait le tuto ! (il s'etait pas mis en vert le ptit icone la ..) J'tiens juste a preciser que c'est tama qui m'a demandé si je voulais un tuto . Donc hein ! Sinan merci bcp pr le tuto ! c'est cool =D
Dernière édition par nay0w le Mer 09 Avr 2008, 21:35, édité 1 fois |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 09 Avr 2008, 21:32 | |
| hmm...j'me souviens t'avoir donné le lien, 'fin bon ^^ en espérant que ce soit utile :) |
| | | nay0w légende
Nombre de messages : 797 Age : 30 Localisation : Dans l'coin! Humeur : Bonne x) items : o Personalized field : 10 jetons Réputation : 0 Points : 6257 Date d'inscription : 11/02/2008
Profil TI: 82Fr / 89-Titanium TO: 3 825 Spécialité: Autre
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 09 Avr 2008, 21:35 | |
| Ah bon ? Msouvient pas |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 09 Avr 2008, 21:37 | |
| regarde dans ton historique des convers' MSN |
| | | nay0w légende
Nombre de messages : 797 Age : 30 Localisation : Dans l'coin! Humeur : Bonne x) items : o Personalized field : 10 jetons Réputation : 0 Points : 6257 Date d'inscription : 11/02/2008
Profil TI: 82Fr / 89-Titanium TO: 3 825 Spécialité: Autre
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Mer 09 Avr 2008, 21:44 | |
| Jles ai plus |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Ven 11 Avr 2008, 14:03 | |
| bah j'dois l'avoir mais ça date déjà de pas mal de temps ça ^^ |
| | | nay0w légende
Nombre de messages : 797 Age : 30 Localisation : Dans l'coin! Humeur : Bonne x) items : o Personalized field : 10 jetons Réputation : 0 Points : 6257 Date d'inscription : 11/02/2008
Profil TI: 82Fr / 89-Titanium TO: 3 825 Spécialité: Autre
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Ven 11 Avr 2008, 14:45 | |
| Bah tfacon c'est pas important |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Ven 11 Avr 2008, 22:36 | |
| |
| | | tama Admin
Nombre de messages : 12376 Age : 32 Localisation : DTC ? :triso: Humeur : =) items : o Personalized field : huh ? oO Réputation : 3 Points : 9446 Date d'inscription : 08/08/2007
Profil TI: 84+, 89 tita, 89 tita TO: infini :p Spécialité: C 68k
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... Jeu 02 Oct 2008, 17:46 | |
| corrigé quelques fautes (oui, up de malade, j'assume ... XD)
...bon, retour au boulot |
| | | Contenu sponsorisé
| Sujet: Re: [BASIC] Tout ce que vous avez voulu savoir sur... | |
| |
| | | | [BASIC] Tout ce que vous avez voulu savoir sur... | |
|
Page 1 sur 1 | |
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
|
|