Les expressions
27
4.2.2 Les expressions réelles
Bien entendu, comme les expressions entières, les expressions réelles seront formées de
constantes, de variables et d’opérateurs.
Les opérateurs sont les mêmes que ceux du type entier, avec toutefois une nuance concernant l’opérateur de division : il fournit un résultat de type réel. Ainsi, 5./2. fournit une
valeur de type réel égale à 2,5 (environ, car les réels sont représentés de manière
approchée !), tandis que, rappelons-le, 5/2 fournit une valeur de type entier égale à 2.
En définitive, on dispose donc pour le type réel des mêmes opérateurs que pour le type
entier, à savoir les 4 opérateurs usuels (+, -, * et /) et l’opérateur opposé. Appliqués à des
valeurs de type réel, ils fournissent un résultat de type réel
4.2.3 Les erreurs possibles
Rappelons que le codage d’un réel a lieu dans un emplacement de taille limitée, ce qui
impose obligatoirement des limites sur la valeur du nombre : sa valeur absolue ne doit être ni
trop grande, ni trop petite ; notez qu’en général, on a bien conscience de la limitation du côté
des grandes valeurs, mais que celle sur les petites valeurs paraît moins évidente. En fait, cela
vient de ce que l’on a tendance à considérer qu’un petit nombre comme 10 -50 peut s’assimiler
à 0. Bien entendu, cela peut être justifié dans certaines circonstances et pas dans d’autres.
Dans ces conditions, les opérations sur les réels peuvent conduire à des résultats non représentables dans le type réel (de valeur absolue trop grande ou trop petite). On parle encore de
« dépassement de capacité » dans le premier cas, de « sous-dépassement de capacité » dans
le second. Dans ces situations, le comportement du programme dépend à la fois du langage et
des environnements de programmation utilisés ; en particulier, il peut y avoir arrêt de l’exécution.
Par ailleurs, il ne faudra pas perdre de vue que le système de codage utilisé pour les réels peut
correspondre à une représentation approchée. Là encore, on a bien conscience que, dans
notre système décimal, il n’est pas possible de représenter exactement 10/3 avec un nombre
limité de décimales. Mais, il faut bien voir que, en outre, un nombre qui se représente de
façon exacte dans notre système décimal (par exemple 0,1) peut être représenté de façon
inexacte après codage dans le type réel (car il faut bien l’exprimer dans une base autre que
10, en général 2 !). Dans ces conditions, il est possible que, avec :
a := 1./3.
l’expression 3*a ne soit pas rigoureusement égale à 1 !
Enfin, il se peut qu’à un moment donné vous cherchiez à diviser un réel par zéro, ce qui
conduit, là encore, à un arrêt de l’exécution, accompagné d’un message d’erreur. À ce propos, on notera que, compte tenu de l’approximation inhérente au type réel, la « nullité »
d’une expression peut se produire alors qu’elle n’est pas théoriquement attendue ; l’inverse
est également possible.
Précédent

- 50/370

Suivant