Home   Archives    Hardware   Programmation   Challenges   Forum   Le Mag    Faq   La Communauté   L'Equipe
 
L'équipe progG de Ti-Fr

Voici les nicks de vos serviteurs ;-)

chickensaver_john
Kevin Kofler
Thibaut
janjan2
TiMad
Iceman89
fréka
Zewoo
Squale92
Verstand
ZdRUbAl
UtOpIaH

et nEUrOne ...

Une idée ?
Une idée pour améliorez cette partie? ou tout simplement vous souhaitez participer à l'élaborations des tutos.
Mailez-nous ici

Les raccourcis
 

Chapitre XIII


   Ce chapitre va nous permettre de voir comment utiliser des pseudo-constantes, afin de créer des programmes compatibles entre la TI-89 et la TI-92plus. En effet, ces deux calculatrices ont deux différences majeures (taille de l'écran, et claviers différents), qui s'avèrent souvent gênantes pour le développement de programmes fonctionnant sur les deux à la fois... C'est pour cette raison que, la plupart du temps, un programme est fait pour une machine, et, ensuite, il est porté pour l'autre. (C'est ce que nous avons été contraint de faire jusqu'à maintenant !).

    La plupart des pseudo-constantes utilisables sous TIGCC sont définies dans la librairie <compat.h>, qui, comme sont nom l'indique, permet d'améliorer la compatibilité entre les deux calculatrices.
    En fait, les pseudo-constantes correspondent à des macros, définies de façon à se comporter comme des constantes. c'est pour cette raison qu'elles portent ce nom.

Table des matières de ce chapitre :

 

I:\ Les différentes pseudo-constantes :

    Il existe 18 pseudo-constantes. Pour les définir, donner leur type et leur utilité, nous allons utiliser le tableau suivant :

Nom Type Utilité
Pseudo-constantes en rapport avec le point de vue logiciel de la TI :
TIOS_entries unsigned long Nombre d'entrées dans la table du TIOS. Cette pseudo-constante peut être utilisée pour déterminer la version de la ROM utilisée sur la calculatrice.
Par exemple, cette pseudo-constante a pour valeur :
  • ROM 1.05 : 972
  • ROM 2.03 : 1463
  • ROM 2.05 : 1519
AMS_1xx short (Boolean) Cette pseudo-constante renvoie TRUE sur les ROM 1.xx, et elle renvoie FALSE sur les ROM 2.xx
AMS_2xx short (Boolean) Cette pseudo-constante est la réciproque de la précédente, ce qui signifie qu'elle renvoie TRUE sur les ROM 2.xx, et FALSE sur les ROM 1.xx
Pseudo-constantes en rapport avec le point de vue matériel de la TI :
ROM_base void * Adresse de base de la ROM. Cette pseudo-constante renvoie 0x200000 sur TI-89, et 0x400000 sur TI-92plus.
CALCULATOR short Cette pseudo-constante renvoie 0 sur une TI-89, et un nombre différent de 0 sur une TI-92plus.
TI89 short (Boolean) Cette pseudo-constante a pour valeur TRUE sur TI-89, et FALSE sur TI-92plus.
TI92 short (Boolean) Cette pseudo-constante est la réciproque de la précédente, ce qui signifie qu'elle a pour valeur TRUE sur une TI-92plus, et FALSE sur une TI-89.
Pseudo-constantes en rapport avec la taille de l'écran de la TI :
LCD_WIDTH unsigned short Cette pseudo-constante a pour valeur la largeur de l'écran de la TI, exprimée en pixels. Elle a pour valeur 160 sur une TI-89, et 240 sur une TI-92plus.
LCD_HEIGHT unsigned short Cette pseudo-constante a pour valeur la hauteur de l'écran de la TI, exprimée en pixels. Elle a pour valeur 100 sur une TI-89, et 128 sur une TI-92plus.
LCD_LINE_BYTES unsigned short Cette pseudo-constante a pour valeur le nombre d'octets contenus dans la partie visible d'une ligne de l'écran. Elle a pour valeur 20 sur une TI-89, et 30 sur une TI-92plus.
Pseudo-constantes en rapport avec la gestion du clavier de la TI :
KEY_LEFT short Cette pseudo-constante a pour valeur un code correspondant à la touche directionnelle de gauche.
KEY_RIGHT short Cette pseudo-constante a pour valeur un code correspondant à la touche directionnelle de droite.
KEY_UP short Cette pseudo-constante a pour valeur un code correspondant à la touche directionnelle du haut.
KEY_DOWN short Cette pseudo-constante a pour valeur un code correspondant à la touche directionnelle du bas.
KEY_UPRIGHT short Cette pseudo-constante a pour valeur un code correspondant à une pression simultanée sur les touches directionnelles du haut et de droite.
KEY_DOWNLEFT short Cette pseudo-constante a pour valeur un code correspondant à une pression simultanée sur les touches directionnelles du bas et de gauche.
KEY_DIAMOND short Cette pseudo-constante correspond à la valeur à ajouter à la valeur du code correspondant à une touche si la touche Diamant ( )est pressée en même temps.
KEY_SHIFT short Cette pseudo-constante correspond à la valeur à ajouter à la valeur du code correspondant à une touche si la touche Shift ( ) est pressée en même temps.

 

II:\ Pseudo-constantes et mémoire :

    Utiliser des pseudo-constantes est une chose très pratique. Cependant, cet usage a tendance à augmenter la taille occupée en mémoire par les programmes. Il vaut donc mieux utiliser l'astuce suivante (tout au moins en mode nostub), qui permet d'économiser de la mémoire :
        short key_right = KEY_RIGHT;
    Ainsi, on déclare la variable key_right de type short, qui aura pour valeur celle de KEY_RIGHT. Utiliser cette technique permet de ne faire appel qu'une seule fois à la macro qu'est la pseudo-constantes. cel économise donc de la mémoire. Cependant, utiliser une autre variable (ici nommée key_right) utilise de la mémoire !!! (Quel paradoxe !). Cette astuce n'est donc à utiliser que si la pseudo-constantes  doit être utilisée plus de 5 fois dans le programme.
    (Cette astuce n'est pas de moi, mais de Zelko Juric, qui nous en fait part dans la doc de TIGCC...)

 

III:\ Inconvénients des pseudo-constantes :

    Les pseudo-constantes apparaissent comme quasiment géniales, puisqu'elle permettent de résoudre la majeure partie des inconvénients liés à la taille de l'écran, et à la gestion des touches directionnelles du clavier. cependant, elles présentent un inconvénient, assez gênant par rapport à ce que nous avons vu auparavant dans ce tutorial...
    En effet, les pseudo-constantes étant des macros, et non pas de simples variables, il n'est pas possible de les utiliser dans le cas d'instructions case...break;

    Ainsi, l'exemple suivant ne fonctionnera pas (en fait, il refusera de se compiler !) :
        short key = 0;
        key = ngetchx();
        switch(key)
        {
            case KEY_LEFT:
            ........
            break;
            case KEY_RIGHT:
            ........
            break;
        }

    Dans ce cas, on ne pourra pas utiliser de boucle switch avec des blocs case...break. il faudra donc faire appel à des boucles conditionnelles. Le "code" présenté ci-dessus devra donc être réécrit de la façon suivante :
        short key = 0;
        key = ngetchx();
        if(key == KEY_LEFT)
        {
            ........
        }
        else if(key == KEY_RIGHT)
        {
            ........
        }
    Cela revient au même, mais écrit de façon différente, et moins claire...

 

    Voilà, à présent vous êtes à même d'utiliser les pseudo-constantes, avec les formidables capacités de compatibilité qu'elles offrent entre TI-89 et TI-92plus...

Retour au menu général

Chapitre XIV


 


Copyright © Ti-Fr v2.0 1999-2002