/*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D ' U N E P R O G R E S S I O N G E O M E T R I Q U E G E N E R A L I S E E : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande genere une suite de */ /* nombres 'X' tel que : */ /* */ /* X = D */ /* 0 */ /* */ /* X = R.X */ /* n n-1 */ /* */ /* ou 'D' designe la valeur de depart... */ /* */ /* On notera qu'une option permet de */ /* passer d'une progression geometrique */ /* a une progression arithmetique.... */ /* */ /* */ /* Author of '$xci/valeurs_ProgressionGeometrique$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20180708102504). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ #define PRAGMA_CPP_____AUTORISER_LE_GooF #define GENERER_LES_GET_ARGUMENTS_DE_CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_FLOTTANTS /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_MINI /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #include xci/sequence.01.I" #define PROGRESSION_GEOMETRIQUE \ VRAI \ /* Est-ce un progression geometrique ('VRAI') ou arithmetique ('FAUX') ? */ #define RAISON \ GRO3(FRA4(FU)) #define RAISON_DE_LA_RAISON \ FU /* Definition des deux raisons. La "raison de la raison" a ete introduite suite a la */ /* creation de 'v $xci/valeurs_ProgressionArithmetique$K RAISON_DE_LA_RAISON'... */ #define X_DE_DEPART \ FDU \ /* Definition de la variable 'x' de depart... */ #include xci/valeurs.01.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ #include xci/valeurs.02.I" /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* G E N E R A T I O N D ' U N E P R O G R E S S I O N G E O M E T R I Q U E G E N E R A L I S E E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE)); /* Numero de la premiere image, */ DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE)); /* Numero de la derniere image. */ DEFV(Int,INIT(numero_d_image,UNDEF)); /* Numero de l'image courante. */ DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES)); /* Pas de passage d'un numero d'image a une autre. */ DEFV(Logical,INIT(progression_geometrique,PROGRESSION_GEOMETRIQUE)); /* Est-ce un progression geometrique ('VRAI') ou arithmetique ('FAUX') ? */ DEFV(Float,INIT(raison,RAISON)); DEFV(Float,INIT(raison_de_la_raison,RAISON_DE_LA_RAISON)); /* Definition des deux raisons. La "raison de la raison" a ete introduite suite a la */ /* creation de 'v $xci/valeurs_ProgressionArithmetique$K RAISON_DE_LA_RAISON'... */ DEFV(Float,INIT(X_de_depart,X_DE_DEPART)); /* Definition de la variable 'x' d'arrivee et de depart... */ DEFV(Float,INIT(X_courant,FLOT__UNDEF)); /* Definition de la variable 'x' de depart... */ #include xci/valeurs.03.I" /*..............................................................................................................................*/ GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_I("premiere=""p=""D=",premiere_image); GET_ARGUMENT_I("derniere=""d=""A=",derniere_image); GET_ARGUMENT_I("pas=",pas_des_images); GET_ARGUMENT_L("progression_geometrique=""pg=",progression_geometrique); GET_ARGUMENT_N("progression_arithmetique=""pa=",progression_geometrique); /* On notera le 20181007113103 qu'une autre facon de calculer une progression */ /* arithmetique est d'utiliser les arguments suivants : */ /* */ /* arithmetique_etendue=VRAI */ /* GooF=VRAI */ /* pxMUL2_MUL2=0 */ /* pxADD2_MUL2=1 */ /* */ /* Et alors, on peut essayer d'autres ponderations du type "px????_MUL2=...". */ GET_ARGUMENT_F("raison=""r=""R=",raison); GET_ARGUMENT_F("raison_raison=""rr=""RR=",raison_de_la_raison); /* Argument introduit le 20250218110422... */ GET_ARGUMENT_F("u0=""U0=""Xd=""XD=""X0=",X_de_depart); PROCESS_ARGUMENTS_DE_PARAMETRAGE_DE_LA_GENERATION_DE_SUITE_DE_VALEURS_1; ) ); Test(IFLE(premiere_image,derniere_image)) Bblock EGAL(X_courant,X_de_depart); /* Initialisation de la suite... */ Test(IL_FAUT(progression_geometrique)) Bblock /* Cas d'une progression geometrique... */ Eblock ATes Bblock /* Cas d'une progression arithmetique : */ EGAL(si_le_GooF_est_activable_utiliser_l_arithmetique_etendue_au_lieu_de_l_arithmetique_de_base,VRAI); EGAL(FfxMUL2_____ponderation_de_MUL2,FZERO); EGAL(FfxMUL2_____ponderation_de_ADD2,FU); /* Je rappelle le 20180818103400 (en completant le 20181007114543) que les quatre */ /* "forcages" ci-dessus equivalent a : */ /* */ /* arithmetique_etendue=VRAI */ /* pxMUL2_MUL2=0 */ /* pxADD2_MUL2=1 */ /* */ /* Et alors, on peut essayer d'autres ponderations du type "px????_MUL2=...". */ Eblock ETes DoIn(numero_d_image,premiere_image,derniere_image,pas_des_images) Bblock Test(IFEQ(numero_d_image,premiere_image)) Bblock Eblock ATes Bblock EGAL(X_courant,FfxMUL2(raison,X_courant)); /* Calcul des elements attendus de la suite suivant : */ /* */ /* X = R.X */ /* n+1 n */ /* */ /* par defaut... */ Eblock ETes CAL2(Prin2(Cara(chain_Aconcaten5(INTRODUCTION_FORMAT,valeurs_signees,".*",format_d_edition,"\n")) ,NOMBRE_DE_DECIMALES_EFFECTIF(nombre_de_decimales) ,MULTIPLE_DE(ENTIER_FLOTTANT(X_courant)) ) ); /* Et enfin, edition de la valeur courante. */ EGAL(raison,MUL2(raison_de_la_raison,raison)); /* Possibilite introduite le 20250218110422, les valeurs par defaut garantissant la */ /* compatibilite anterieure... */ Eblock EDoI Eblock ATes Bblock PRINT_ERREUR("la relation d'ordre stricte ('premier < dernier') n'est pas respectee"); Eblock ETes RETU_Commande; Eblock ECommande