<?xml version="1.0" encoding="UTF-8"?>
<Algo>
    <description texte="Algorithme CORDIC pour calculer une valeur approchée de tan(alpha), cos(alpha) et sin(alpha).&#xa;alpha est saisi par l'utilisateur et doit être compris entre 0 et pi/2.&#xa;On affiche, dans l'ordre, tan(alpha), cos(alpha) et sin(alpha)." courant="resultat EST_DU_TYPE NOMBRE"/>
    <fonction fctcode="" fctetat="inactif"/>
    <F2 F2defaut="" F2lignes="" F2etat="inactif" F2para=""/>
    <repere repetat="inactif" repcode="-10#10#-10#10#2#2"/>
    <item algoitem="VARIABLES" code="100#declarationsvariables">
        <item algoitem="alpha EST_DU_TYPE NOMBRE" code="1#NOMBRE#alpha"/>
        <item algoitem="tab EST_DU_TYPE LISTE" code="1#LISTE#tab"/>
        <item algoitem="k EST_DU_TYPE NOMBRE" code="1#NOMBRE#k"/>
        <item algoitem="x EST_DU_TYPE NOMBRE" code="1#NOMBRE#x"/>
        <item algoitem="resultat EST_DU_TYPE NOMBRE" code="1#NOMBRE#resultat"/>
        <item algoitem="y EST_DU_TYPE NOMBRE" code="1#NOMBRE#y"/>
        <item algoitem="temp EST_DU_TYPE NOMBRE" code="1#NOMBRE#temp"/>
        <item algoitem="cosinus EST_DU_TYPE NOMBRE" code="1#NOMBRE#cosinus"/>
        <item algoitem="sinus EST_DU_TYPE NOMBRE" code="1#NOMBRE#sinus"/>
    </item>
    <item algoitem="DEBUT_ALGORITHME" code="101#debutalgo">
        <item algoitem="k PREND_LA_VALEUR 0" code="5#k#0#pasliste"/>
        <item algoitem="x PREND_LA_VALEUR 1" code="5#x#1#pasliste"/>
        <item algoitem="y PREND_LA_VALEUR 0" code="5#y#0#pasliste"/>
        <item algoitem="//Peuplement de la table de valeurs servant aux calculs" code="19#Peuplement de la table de valeurs servant aux calculs"/>
        <item algoitem="tab[0] PREND_LA_VALEUR atan(1)" code="5#tab#atan(1)#0"/>
        <item algoitem="tab[1] PREND_LA_VALEUR atan(0.1)" code="5#tab#atan(0.1)#1"/>
        <item algoitem="tab[2] PREND_LA_VALEUR atan(0.01)" code="5#tab#atan(0.01)#2"/>
        <item algoitem="tab[3] PREND_LA_VALEUR atan(0.001)" code="5#tab#atan(0.001)#3"/>
        <item algoitem="tab[4] PREND_LA_VALEUR atan(0.0001)" code="5#tab#atan(0.0001)#4"/>
        <item algoitem="LIRE alpha" code="2#alpha#pasliste"/>
        <item algoitem="//la ligne suivante marque le début de" code="19#la ligne suivante marque le début de"/>
        <item algoitem="//l'algorithme de CORDIC" code="19#l'algorithme de CORDIC"/>
        <item algoitem="TANT_QUE (alpha>0.0001) FAIRE" code="15#alpha>0.0001">
            <item algoitem="DEBUT_TANT_QUE" code="16#debuttantque"/>
            <item algoitem="TANT_QUE (alpha&lt;tab[k]) FAIRE" code="15#alpha&lt;tab[k]">
                <item algoitem="DEBUT_TANT_QUE" code="16#debuttantque"/>
                <item algoitem="k PREND_LA_VALEUR k+1" code="5#k#k+1#pasliste"/>
                <item algoitem="FIN_TANT_QUE" code="17#fintantque"/>
            </item>
            <item algoitem="alpha PREND_LA_VALEUR alpha-tab[k]" code="5#alpha#alpha-tab[k]#pasliste"/>
            <item algoitem="temp PREND_LA_VALEUR x" code="5#temp#x#pasliste"/>
            <item algoitem="x PREND_LA_VALEUR x-y*pow(0.1,k)" code="5#x#x-y*pow(0.1,k)#pasliste"/>
            <item algoitem="y PREND_LA_VALEUR y+temp*pow(0.1,k)" code="5#y#y+temp*pow(0.1,k)#pasliste"/>
            <item algoitem="FIN_TANT_QUE" code="17#fintantque"/>
        </item>
        <item algoitem="// Le résultat est calculé et affiché" code="19# Le résultat est calculé et affiché"/>
        <item algoitem="resultat PREND_LA_VALEUR y/x" code="5#resultat#y/x#pasliste"/>
        <item algoitem="cosinus PREND_LA_VALEUR 1/(sqrt(1+pow(resultat,2)))" code="5#cosinus#1/(sqrt(1+pow(resultat,2)))#pasliste"/>
        <item algoitem="sinus PREND_LA_VALEUR resultat/(sqrt(1+pow(resultat,2)))" code="5#sinus#resultat/(sqrt(1+pow(resultat,2)))#pasliste"/>
        <item algoitem="AFFICHER resultat" code="3#resultat#1#pasliste"/>
        <item algoitem="AFFICHER cosinus" code="3#cosinus#1#pasliste"/>
        <item algoitem="AFFICHER sinus" code="3#sinus#1#pasliste"/>
    </item>
    <item algoitem="FIN_ALGORITHME" code="102#finalgo"/>
</Algo>
