Forum tama's team

cp: ne peut évaluer `brain': Aucun fichier ou dossier de ce type
AccueilPortailGalerieCalendrierFAQRechercherS'enregistrerMembresGroupesConnexion
Connexion
Nom d'utilisateur:
Mot de passe:
Connexion automatique: 
:: Récupérer mon mot de passe
Derniers sujets
» Network, essai 1
par godbod Dim 09 Juil 2017, 02:18

» GODBOD
par godbod Sam 08 Juil 2017, 14:05

» Numbers
par godbod Sam 08 Juil 2017, 13:54

» Mort ?
par godbod Sam 08 Juil 2017, 13:47

» 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

Quick message
Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 367 le Dim 18 Oct 2009, 00:16

Partagez | 
 

 [C] VAT, chapitre I

Voir le sujet précédent Voir le sujet suivant Aller en bas 

Avez-vous compris le tuto ?
Oui :D
100%
 100% [ 1 ]
Presque :)
0%
 0% [ 0 ]
Pas vraiment... :(
0%
 0% [ 0 ]
Pas du tout :'( (pourquoi ?)
0%
 0% [ 0 ]
Total des votes : 1
 

AuteurMessage
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: [C] VAT, chapitre I   Lun 03 Mar 2008, 20:52

Hello tout le monde ! Aujourd'hui on va se pencher (pas trop hein, faut pas tomber Very Happy) sur cet magnifique outil qui s'appelle la VAT

Citation :

Hello. C'est quoi la VAT ?

J'y viens. VAT est un acronyme pour Variable Allocation Table

Citation :

Euh...moi speak english pas très well...

Laisse-moi finir ! Very Happy
Il s'agit donc en français d'une table regroupant des données sur chaque variable présente sur la TI. Elle est constamment changeante lorsque vous modifiez des données, vous en créez ou vous en effacez.
Pour ceux qui sont déjà plus-que-familiers avec le PC, pour ne pas dire les geeks, on retrouve la VAT sous la forme de la FAT.

Citation :

Aaaah...

Bééééé %)
ok ok, je sors, z'aurez pas la suite du tuto :p
[/mode plaisanterie][mode prof]

Citation :

non.
Quoi non ? Bon ok.

[/mode prof][mode plaisanterie]

Allez, on va enfin commencer ce tuto.
Ce tuto se divisera en plusieurs chapitres. Tout d'abord, et c'est la "leçon" d'aujourd'hui, nous allons commencer par la base, c'est-à-dire accéder à une variable...

Chapitre I : Les variables

La TI est faite d'une multitude de variables, d'origines diverses, ce peut être des listes, des matrices, des programmes, des jeux, des anti-sèches (hum Very Happy) ou autre...mais la méthode pour accéder à une variable, quelque soit son type est toujours la même

Citation :

Oui, bon, c'est quoi cette méthode ?

La politesse, tu connais ? on interrompt pas un prof quand il parle ! Il faut lever la main d'abord %)
Bon, trève de plaisanteries, pour accéder à une variable il faut obtenir un pointeur vers cette variable. Pour ceux qui ne sont pas familiers avec les pointeurs, ce n'est pas trop grave pour l'instant, mais il faut quand même connaitre un peu les pointeurs pour plus tard

Il existe 2 types de pointeurs : les pointeurs de type SYM_ENTRY et de type HSym

Citation :

Pourquoi faire compliqué quand on peut faire simple...

Effectivement, pourquoi utiliser 2 pointeurs pour faire la même chose ?
Et bien, ces 2 pointeurs ne font pas exactement la même chose. Un type de pointeur sera préféré à l'autre pour faire telle manipulation car certaines fonctions nécessitent un pointeur HSym et d'autres un pointeur SYM_ENTRY

Il est possible de "convertir" un pointeur HSym en pointeur SYM_ENTRY grâce à la fonction DerefSym(pointeur HSym). Cela s'appelle "déréférencer un pointeur" (si vous ne comprenez pas ce terme, regardez un tuto sur les pointeurs Wink). L'inverse (SYM_ENTRY -> HSym) est plus difficile

Personnellement, je préfère utiliser des pointeurs SYM_ENTRY lorsque je manipule la VAT, mais je n'ai pas encore tout exploré. Il faut savoir adapter selon ce que l'on veut faire

Citation :

Compris :)

Bien. Passons alors à la suite :)
Regardons dans la doc ce qui constitue un pointeur SYM_ENTRY :

Code:

    typedef struct
    {
          char name[8];
          unsigned short compat;
          union
          {
                unsigned short flags_n;
                struct
                {
                      unsigned short busy:1, local:1, flag1_5:1, flag1_4:1,
                      collapsed:1, twin:1, archived:1, in_view:1;
                            unsigend short folder:1, overwritten:1, checked:1,                          hidden:1, locked:1, statvar:1, graph_ref_1:1,                                  graph_ref_0:1;
                }bits;
            }flags;
        HANDLE handle; 
    }_;

Compliqué, huh ?

Citation :

o_O Oui ! O_o

Rassurez-vous, pour la plupart des manipulations, seuls quelques éléments seront utiles :)

Maintenant qu'on a exploré les pointeurs, on va relier ça à notre sujet : comment accéder à une variable ?
Et bah, comme on l'a dit plus tôt, on va utiliser un pointeur HSym ou SYM_ENTRY vers notre variable

Citation :

cela donne donc
Code:

    SYM_ENTRY *sym;
...
et après ?

après, il faut trouver notre variable. Pour cela, on va utiliser une nouvelle fonction, la fonction SymFind()...
2 problèmes se posent alors :
D'abord, la fonction SymFind() retourne un HSym. Facile à résoudre, on utilisera ensuite l'instruction DerefSym() pour convertir en SYM_ENTRY
A noter qu'on peut également résoudre ce problème en utilisant la fonction SymFindPtr() qui retourne directement un pointeur de type SYM_ENTRY. Ainsi, ces 2 codes font exactement la même chose :

Code:

    SYM_ENTRY *sym;
    HSym hsym = SymFind($("test"));
    *sym = DerefSym(hsym);

Code:

    SYM_ENTRY *sym = SymFindPtr($("test"));
Le 2ème problème nécessite d'être plus développé : la fonction attend un argument de type SYM_STR

Citation :

Késako ?

Nan, on dit "qu'est-ce que c'est" !
Eh oui, peut-être que vous aviez pensé qu'en faisant SymFind("test") vous obtiendriez ce que vous voudriez avoir. En fait, ce n'est pas tout à fait ça
Les variables SYM_STR ont une structure bien précise, disons pour simplifier une version évoluée des chaines classiques.
Leur structure est bien particulière :
Code:

      \0nom_de_la_variable taille_du_nom_de_la_variable

Citation :

Euh...et j'vais devoir utiliser ça tout le temps ?

Non. Il existe ce qu'on appelle une "macro constructeur", qui, pour simplifier, se chargera directement de transformer une chaine au bon format. Elle s'utilise grâce au signe $, oui, le signe dollar (à quoi pensait donc le programmeur à ce moment ^^)

Ainsi, pour simplifier, on peut écrire directement SymFind($("test")) qui créera un pointeur HSym vers la variable "test" du répertoire courant.

Attention toutefois, il existe quelques exceptions dans lesquelles l'utilisation de la macro est impossible. Il faut alors le faire "à la main" en utilisant les instructions strcpy() et strlen()

Voilà. On sait maintenant comment utiliser la fonction SymFind(), il ne reste plus qu'à l'utiliser. Pour obtenir un pointeur SYM_ENTRY sur la variable main\test, il faudra donc utiliser le code suivant :
Code:

          HSym hsym;
        SYM_ENTRY sym;
        hsym=SymFind($(main\\test));    //attention, les "\\" sont importants !
        sym=DerefSym(hsym);

On peut condenser ce code en une ligne :
Code:

          SYM_ENTRY sym=DerefSym(SymFind($(main\\test)));

Citation :

Cool, j'ai tout compris :)

Bien. alors le tuto s'arrête là.









Aha ! vous y avez cru, hein ? Very Happy
Il reste une dernière chose à mettre au point avant de terminer ce tuto : les dossiers. On sait maintenant comment accéder aux fichiers, mais pour les dossiers ?
Pas trop de différences, ce sera assez court.
Le principe reste le même, à la différence qu'au lieu d'utiliser SymFind(), on va utiliser la fonction SymFindHome()
Cette fonction prend un argument de type SYM_STR et retourne un pointeur de type HSym. Le reste est pareil.

Avant de clore ce 1er chapitre, précisons qu'en cas d'erreur, les fonctions SymFind() et SymFindHome() retournent NULL. Il faut donc tester que le pointeur a donc été bien crée.



Voilà, c'est tout pour aujourd'hui.
Prochain chapitre : on apprendra à obtenir la liste de tous les dossiers et de toutes les variables présents sur la TI et on apprendra à les manipuler
Un petit aperçu :
Code:

            SYM_ENTRY *sym=SymFindFirst(SYMSTR("main"),0);
               
                char name[];

            while(sym)
            {
                strcpy(name,sym->name);
                printf("%s",name);
                    ngetchx();
                sym = SymFindNext();
            }
Ce bout de code retournera les noms de toutes les variables présentes dans le répertoire main. On en saura plus au prochain tuto Wink

_________________




Dernière édition par tama le Jeu 13 Mar 2008, 00:59, édité 4 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items : p://img364.imageshack.us/img364/6382/ti84plusdm0.png" border="0" alt="" />

Personalized field : 26 jetons
Réputation : 8
Points : 4408
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: Re: [C] VAT, chapitre I   Lun 03 Mar 2008, 21:42

J'ai (presque) tout compris sans posseder de 89, donc je crois pouvoir dire good job!

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: [C] VAT, chapitre I   Lun 03 Mar 2008, 21:44

hmm ^^
qu'est-ce que tu n'as pas compris ?

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items : p://img364.imageshack.us/img364/6382/ti84plusdm0.png" border="0" alt="" />

Personalized field : 26 jetons
Réputation : 8
Points : 4408
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: Re: [C] VAT, chapitre I   Lun 03 Mar 2008, 21:50

Le dereferencement. Mais je suppose que c'est normal que je ne connaisse pas, puisque je n'ai jamais lu de tutos sur les pointeurs en C pour 68k.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: [C] VAT, chapitre I   Lun 03 Mar 2008, 22:11

bah c'est le simple fait d'attribuer une valeur à une variable via un pointeur

Code:

char *pointeur, variable;
pointeur=&variable;
*pointeur=255;                      // <= déréférencement

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items : p://img364.imageshack.us/img364/6382/ti84plusdm0.png" border="0" alt="" />

Personalized field : 26 jetons
Réputation : 8
Points : 4408
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: Re: [C] VAT, chapitre I   Lun 03 Mar 2008, 22:36

Ah ok.
C'est un terme que je ne connaissais pas, l'action si.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: [C] VAT, chapitre I   Lun 03 Mar 2008, 22:42

mais tu fais du C, non ? même si c'est pas sur 68k

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Syfo
Pokémophile
Pokémophile
avatar

Nombre de messages : 1978
Age : 26
Localisation : IYA
items : p://img364.imageshack.us/img364/6382/ti84plusdm0.png" border="0" alt="" />

Personalized field : 26 jetons
Réputation : 8
Points : 4408
Date d'inscription : 09/08/2007

Profil
TI: 80, 82, 83, 83+, 84+
TO: 2 945 [GAIN * 1.1]
Spécialité: Basic z80

MessageSujet: Re: [C] VAT, chapitre I   Mar 04 Mar 2008, 19:50

Oui. Je connais les pointeurs, je sais attribuer une valeur a une variable via un pointeur, mais je ne savais pas que ca s'appelait un dereferencement stou.

_________________
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: [C] VAT, chapitre I   Mar 04 Mar 2008, 20:02

bah voilà tu dormiras moins con ce soir Wink

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
AdRiWeB
amis
amis
avatar

Nombre de messages : 3655
Age : 25
Localisation : Juste sous mes cheveux
Loisirs : Internet, programmation, TI, musique, tennis-de-table ...
Humeur : ^^
items : o
Personalized field :
Réputation : 0
Points : 3927
Date d'inscription : 12/08/2007

Profil
TI: TI-84 Plus, nspire CAS
TO: 2429 {2}
Spécialité: Basic z80

MessageSujet: Re: [C] VAT, chapitre I   Mar 04 Mar 2008, 20:05

excellent tuto, j'ai presque tout compris aussi ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.adriweb.net
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: [C] VAT, chapitre I   Mar 04 Mar 2008, 20:19

Bon bah j'peux supposer qu'il est assez clair alors Very Happy
La suite pour bientôt (aujourd'hui ? demain ? dans 30 ans ? tout dépendra de mon humeur Very Happy)

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
AdRiWeB
amis
amis
avatar

Nombre de messages : 3655
Age : 25
Localisation : Juste sous mes cheveux
Loisirs : Internet, programmation, TI, musique, tennis-de-table ...
Humeur : ^^
items : o
Personalized field :
Réputation : 0
Points : 3927
Date d'inscription : 12/08/2007

Profil
TI: TI-84 Plus, nspire CAS
TO: 2429 {2}
Spécialité: Basic z80

MessageSujet: Re: [C] VAT, chapitre I   Mer 05 Mar 2008, 00:50

(alors rendez-vous au topic humeur pour que tu nous dises ca mdr)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.adriweb.net
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: [C] VAT, chapitre I   Mer 05 Mar 2008, 14:22

fait :p
le soir même

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
AdRiWeB
amis
amis
avatar

Nombre de messages : 3655
Age : 25
Localisation : Juste sous mes cheveux
Loisirs : Internet, programmation, TI, musique, tennis-de-table ...
Humeur : ^^
items : o
Personalized field :
Réputation : 0
Points : 3927
Date d'inscription : 12/08/2007

Profil
TI: TI-84 Plus, nspire CAS
TO: 2429 {2}
Spécialité: Basic z80

MessageSujet: Re: [C] VAT, chapitre I   Mer 05 Mar 2008, 15:13

lol

tres bien ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.adriweb.net
tama
Admin
Admin
avatar

Nombre de messages : 12375
Age : 26
Localisation : DTC ? :triso:
Humeur : =)
items : o
Personalized field : huh ? oO
Réputation : 3
Points : 7085
Date d'inscription : 08/08/2007

Profil
TI: 84+, 89 tita, 89 tita
TO: infini :p
Spécialité: C 68k

MessageSujet: Re: [C] VAT, chapitre I   Mer 05 Mar 2008, 15:43

bon, retour au sujet. (j'le dis souvent ces temps-ci, attention adri !)

_________________


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [C] VAT, chapitre I   

Revenir en haut Aller en bas
 

[C] VAT, chapitre I

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum tama's team :: TI :: TI 68k :: Tutoriels-
Créer un forum | © phpBB | Forum gratuit d'entraide | Contact | Signaler un abus | Forum gratuit