|
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
|
| |
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
|
|