L'emploi de la variable j est en effet incorrect :
Au début, la variable j vaut 1.
Le premier test de parité retourne donc faux et l'instruction " sinx:=sinx-terme; " est exécutée.
Comme terme vaut x, sinx vaut à ce stade -x, ce qui est l'opposé de ce l'on voulait ...
D'autre part, j est incrémenté à chaque fois de 2 : il restera donc impair, ce qui n'est pas non plus ce que l'on voulait ...
Afin que j change de parité à chaque fois, il faut l'incrémenter de 1 et non de 2.
Par contre n doit être incrémenté de 2.
Conclusion : j et n doivent être deux variables indépendantes.
La variable n doit être initialisée à 1, puis incrémentée à chaque fois de 2.
Quant à la variable j, elle doit être initialisée à 1, puis changée de signe à chaque fois.
En effet, plutôt que faire un test de parité, il est plus simple de faire à chaque fois :
1 2 3
|
sinx := sinx + j*terme;
j:=-j; |
D'ailleurs, pour la clarté du code, il est préférable de changer le nom de j et de l'appeler signe ...
Partager