L'effet de bord (effet secondaire) pour les variables surgit lorsque la variable prend une valeur illogique. Cet effet peut figurer aussi avec les fonctions. (Pour un peu de détail : ici)
Pour les variables, la cause principale est la limite imposée par la taille de la variable.
Cet article vise à donner un exemple sur cet effet.
Démo
Pour démontrer cet effet, nous allons essayer de calculer le factoriel (n!) de quelques nombres. Cette fonction donne, rapidement, des valeurs très grandes.
En Pascal :
L'exécution de ce code :
Nous pouvons voir que le calcul commence à donner des valeurs érronées et illogiques des (8!). En effet, le type Integer ne peut pas contenir des valeurs en dehors de l'intervalle : -32768 .. 32767.
Ce phénomène peut être réduit si on utilise des variables "plus grandes" comme le Longint (Long Integer) :
Ce code donne des valeurs plus correctes :
Un entier de type LongInt peut stocker des données de l'intervalle : -2147483648 .. 2147483647.
Pour plus d'information sur la taille des types de données, il faut consulter la documentation officielle du compilateur que vous utilisez. Par exemple :
Turbo Pascal : (ici)
Free Pascal : (ici)
Pour les variables, la cause principale est la limite imposée par la taille de la variable.
Cet article vise à donner un exemple sur cet effet.
Démo
Pour démontrer cet effet, nous allons essayer de calculer le factoriel (n!) de quelques nombres. Cette fonction donne, rapidement, des valeurs très grandes.
En Pascal :
Program EffetDeBord; Var i, factoriel : Integer; Begin factoriel := 1; For i := 1 to 10 Do Begin factoriel := factoriel * i; WriteLn(i, '! = ', factoriel); End; End.
L'exécution de ce code :
Nous pouvons voir que le calcul commence à donner des valeurs érronées et illogiques des (8!). En effet, le type Integer ne peut pas contenir des valeurs en dehors de l'intervalle : -32768 .. 32767.
Ce phénomène peut être réduit si on utilise des variables "plus grandes" comme le Longint (Long Integer) :
Program EffetDeBord; Var i, factoriel : LongInt; Begin factoriel := 1; For i := 1 to 10 Do Begin factoriel := factoriel * i; WriteLn(i, '! = ', factoriel); End; End.
Ce code donne des valeurs plus correctes :
Un entier de type LongInt peut stocker des données de l'intervalle : -2147483648 .. 2147483647.
Pour plus d'information sur la taille des types de données, il faut consulter la documentation officielle du compilateur que vous utilisez. Par exemple :
Turbo Pascal : (ici)
Free Pascal : (ici)
Aucun commentaire:
La publication de nouveaux commentaires n'est pas autorisée.