Héhé, j'avais fait ça récemment sur ma TI83+.
La solution la plus évidente est de faire une boucle "
tant que l'angle est > pi, enlever 2pi à l'angle", puis une autre "
tant que l'angle est <= - pi, ajouter 2pi".
Enfin ça, c'est valable pour les mesures en radians. J'avais donc perfectionné le programme pour qu'il le fasse en degré si on est en mode degré dans les préférences de la calculatrice, et en radians si on est en mode radian. Pour ça, il y a un menu "Angle" au-dessus de la touche "Apps" (enfin sur TI83+), qui donne accès à 2 symboles :
- le symbole ° :
à placer après une mesure d'angle en degré, il indique à la calculatrice de convertir le nombre en radians si on est en mode radian ;
- le symbole r (petit R en exposant) :
à placer après une mesure d'angle en radians, il indique à la calculatrice de convertir le nombre en degrés si on est en mode degré (l'inverse de ci-dessus).
Par exemple, "180°" donnera 180 en mode degré, et 2pi en mode radian.
Autre astuce : pour savoir le mode dans lequel on est, on peut tester
cos(90)
qui vaut 0 si on est en degré et une valeur différente de 0 si on est en radian.
Après, il y a une
autre solution encore plus simple, que j'ai adopté ensuite ; elle n'a aucun intérêt algorithmique mais elle est bien plus efficace sur la calculatrice et le programme prend moins de place : on a
MesPrincX= (+/-) cos-¹(cos(X)), et le signe de MesPrincX est celui de sin(X) (X est l'angle donné et MesPrincX sa mesure principale à calculer).
En gros, voici le code de mon programme (en fait, j'y ai rajouté un truc pour qu'en mode radian on doive entrer 3/2 au lieu de 3pi/2 par exemple) :
: Prompt X
: (1 -2(sin(X)<0)) cos-¹(cos(X -> X
: X
Ça tient en une seule ligne de calcul grâce aux booléens (l'expression (sin(X)<0) est un nombre que l'on appelle "booléen" : elle prend la valeur 1 si le test est vrai, 0 s'il est faux).
Explications :
||
cos-¹(cos(X)) renvoie la mesure principale de X, mais uniquement sa valeur absolue (en effet, X et -X ont le même cosinus). J'ai enlevé les 2 parenthèses finales pour économiser des octets.
||
(1-2(sin(X)<0)) permet d'avoir la valeur relative (en effet, le sinus d'un angle est du même signe que sa mesure principale).
* Si sin(X)>=0, alors (sin(X)<0)=0 (la condition est fausse donc vaut 0) donc (1-2(sin(X)<0)) = 1 ; on multiplie par 1, donc on garde la valeur positive.
* Si sin(X)<0, alors (sin(X)<0)=1 (la condition est vraie donc vaut 1) donc (1-2(sin(X)<0)) = -1 ; on multiplie par -1, donc on prend la valeur négative.
|| La 3è et dernière ligne affiche la nouvelle valeur de X ; comme "Disp X", mais comme c'est la toute dernière ligne du programme on a le droit de faire ça, ce qui a 2 avantages : économiser des octets et ne pas afficher le "Done" à la fin de l'exécution du programme.
On économise encore plus d'octets (4 en tout) et on ne modifie pas la variable. C'est basé sur le principe du dernier point de l'explication. Le résultat est juste stocké dans Ans, une variable spéciale qui contient toujours le résultat du dernier calcul effectué. Pour le comportement du programme, c'est donc exactement comme si on avait juste entré et fait le calcul directement depuis l'écran principal.