b:réel 
c:chaîne 
DEBUT 
b←3,1415927 
a←3,1415927 
c←12345 
FIN
L’exécution de ce pseudo­code provoque quelques surprises, et des erreurs. Tout d’abord b reçoit la valeur de PI, et 
comme b est déclaré en réel (pour l’exemple, le type classique Numérique n’aurait pas été pertinent), c’est  correct. 
Puis a reçoit la même chose. Or a est un entier ! Suivant les langages de programmation, vous obtiendrez soit une 
erreur, soit ça fonctionnera, mais pas parfaitement. La variable a étant un entier, il se peut que a ne contienne que la 
valeur entière de b, soit 3. Notez que certains langages autorisent une conversion explicite d’un type vers un autre. 
On  parle  de  transtypage.  Quant  à  la  variable  c,  elle  doit  contenir  une  chaîne  de  caractères,  délimitée  par  des 
guillemets, absents ici, ce qui provoquerait probablement une erreur. 
Le code Java suivant ne fonctionne pas. Sauriez­vous deviner maintenant pourquoi ? 
class chap2_equal1 { 
public static void main(String[] args) { 
int i_a; 
double f_a; 
f_a=3.1415927; 
i_a=3.1415927; 
System.out.println(f_a); 
System.out.println(i_a); 
} 
}
Voici la réponse donnée par le compilateur javac : 
chap2_equal1.java:7: possible loss of precision 
found
: double 
required: int 
i_a=3.1415927; 
^ 
1 error
Le transtypage en Java consiste à indiquer entre parenthèses avant la valeur à affecter le type final de celle­ci.  La 
valeur sera convertie, si possible, dans ce type avant d’être affectée. Java ne permet pas de faire n’importe quoi et le 
transtypage doit suivre une certaine logique (du genre, on ne peut pas convertir directement une chaîne de caractères 
en entier). De même le transtypage, notamment vers le bas (d’un type de grande taille vers une taille réduite) risque 
de  provoquer  une  perte  de  précision,  voire  même  d’un  grand  nombre  d’informations.  Dans  cet  exemple,  f_a  est 
explicitement convertie en entier. Java ne va donc conserver que la partie entière de f_a et i_a contiendra 3. 
class chap2_equal2 { 
public static void main(String[] args) { 
int i_a; 
double f_a; 
 
f_a=3.1415927; 
i_a=(int)3.1415927; 
System.out.println(f_a); 
System.out.println(i_a); 
} 
}
Ce qui retourne : 
3.1415927 
3
Afin de ne pas vous faire taper sur les doigts par votre professeur d’algorithmique, précisez le bon type dès le début, 
et évitez les affectations douteuses. 
Vous avez le droit de donner une valeur initiale ou par défaut à une variable lors de sa déclaration. Dans ce cas vous 
devez utiliser l’opérateur d’affectation lors de la déclaration. 
Dans la déclaration
- 7 -
© ENI Editions - All rigths reserved - Jonifar lina
28
Précédent

- 28/220

Suivant