Forum tama's team
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Forum tama's team

cp: ne peut évaluer `brain': Aucun fichier ou dossier de ce type
 
AccueilPortailGalerieRechercherDernières imagesS'enregistrerConnexion
Connexion
Nom d'utilisateur:
Mot de passe:
Connexion automatique: 
:: Récupérer mon mot de passe
Derniers sujets
» Numbers
[C] VAT, chapitre I Icon_minitimepar Ver2guerre Dim 02 Avr 2023, 00:47

» Mort ?
[C] VAT, chapitre I Icon_minitimepar godbod Dim 22 Aoû 2021, 12:23

» Network, essai 1
[C] VAT, chapitre I Icon_minitimepar godbod Dim 09 Juil 2017, 02:18

» GODBOD
[C] VAT, chapitre I Icon_minitimepar godbod Sam 08 Juil 2017, 14:05

» mon humeur
[C] VAT, chapitre I Icon_minitimepar Ver2guerre Sam 30 Juil 2016, 19:44

» [A voir] Programme de traduction original : WikiTranslate
[C] VAT, chapitre I Icon_minitimepar AdRiWeB Lun 01 Fév 2016, 04:50

» Reprise ?
[C] VAT, chapitre I Icon_minitimepar Emyl Jeu 14 Juin 2012, 21:17

» Euh, ah ?
[C] VAT, chapitre I Icon_minitimepar Ver2guerre Dim 27 Mai 2012, 12:11

» Problème TI 89 Titanium non visible après mise à jour
[C] VAT, chapitre I Icon_minitimepar abdoukid Mer 23 Mai 2012, 13:37

» Y'a quelqu'un ?
[C] VAT, chapitre I Icon_minitimepar Ver2guerre Sam 21 Avr 2012, 23:10

Quick message
Qui est en ligne ?
Il y a en tout 4 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 4 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
Le deal à ne pas rater :
Bon plan achat en duo : 2ème robot cuiseur Moulinex Companion ...
600 €
Voir le deal

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
[C] VAT, chapitre I Vote_lcap100%[C] VAT, chapitre I Vote_rcap
 100% [ 1 ]
Presque :)
[C] VAT, chapitre I Vote_lcap0%[C] VAT, chapitre I Vote_rcap
 0% [ 0 ]
Pas vraiment... :(
[C] VAT, chapitre I Vote_lcap0%[C] VAT, chapitre I Vote_rcap
 0% [ 0 ]
Pas du tout :'( (pourquoi ?)
[C] VAT, chapitre I Vote_lcap0%[C] VAT, chapitre I Vote_rcap
 0% [ 0 ]
Total des votes : 1
 

AuteurMessage
tama
Admin
Admin
tama

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

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

[C] VAT, chapitre I Vide
MessageSujet: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeLun 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
Syfo
Pokémophile
Pokémophile
Syfo

Nombre de messages : 1978
Age : 33
Localisation : IYA
items : [C] VAT, chapitre I Syfo1fp7qx4[C] VAT, chapitre I Ti83plusgf8[C] VAT, chapitre I Ti84plusdm0[C] VAT, chapitre I Ti89kb2[C] VAT, chapitre I Ti89titaul9

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

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

[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeLun 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
tama
Admin
Admin
tama

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

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

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

hmm ^^
qu'est-ce que tu n'as pas compris ?
Revenir en haut Aller en bas
Syfo
Pokémophile
Pokémophile
Syfo

Nombre de messages : 1978
Age : 33
Localisation : IYA
items : [C] VAT, chapitre I Syfo1fp7qx4[C] VAT, chapitre I Ti83plusgf8[C] VAT, chapitre I Ti84plusdm0[C] VAT, chapitre I Ti89kb2[C] VAT, chapitre I Ti89titaul9

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

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

[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeLun 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
tama
Admin
Admin
tama

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

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

[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeLun 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
Syfo
Pokémophile
Pokémophile
Syfo

Nombre de messages : 1978
Age : 33
Localisation : IYA
items : [C] VAT, chapitre I Syfo1fp7qx4[C] VAT, chapitre I Ti83plusgf8[C] VAT, chapitre I Ti84plusdm0[C] VAT, chapitre I Ti89kb2[C] VAT, chapitre I Ti89titaul9

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

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

[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeLun 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
tama
Admin
Admin
tama

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

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

[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeLun 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
Syfo
Pokémophile
Pokémophile
Syfo

Nombre de messages : 1978
Age : 33
Localisation : IYA
items : [C] VAT, chapitre I Syfo1fp7qx4[C] VAT, chapitre I Ti83plusgf8[C] VAT, chapitre I Ti84plusdm0[C] VAT, chapitre I Ti89kb2[C] VAT, chapitre I Ti89titaul9

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

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

[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeMar 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
tama
Admin
Admin
tama

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

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

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

bah voilà tu dormiras moins con ce soir Wink
Revenir en haut Aller en bas
AdRiWeB
amis
amis
AdRiWeB

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 : 6298
Date d'inscription : 12/08/2007

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

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

excellent tuto, j'ai presque tout compris aussi ^^
Revenir en haut Aller en bas
http://www.adriweb.net
tama
Admin
Admin
tama

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

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

[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitimeMar 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
AdRiWeB
amis
amis
AdRiWeB

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 : 6298
Date d'inscription : 12/08/2007

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

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

(alors rendez-vous au topic humeur pour que tu nous dises ca mdr)
Revenir en haut Aller en bas
http://www.adriweb.net
tama
Admin
Admin
tama

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

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

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

fait :p
le soir même
Revenir en haut Aller en bas
AdRiWeB
amis
amis
AdRiWeB

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 : 6298
Date d'inscription : 12/08/2007

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

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

lol

tres bien ^^
Revenir en haut Aller en bas
http://www.adriweb.net
tama
Admin
Admin
tama

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

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

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

bon, retour au sujet. (j'le dis souvent ces temps-ci, attention adri !)
Revenir en haut Aller en bas
Contenu sponsorisé




[C] VAT, chapitre I Vide
MessageSujet: Re: [C] VAT, chapitre I   [C] VAT, chapitre I Icon_minitime

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 | Signaler un abus | Forum gratuit