Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Boucle conditionnelle !
-
Jérémy

Administrateur du site- Messages : 2758
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour à tous ,
Je cherche à simplifier un bout de code, mais je bloque sur un point !.
en effet suivant le résultat d'un test je dois effectuer tel ou tel fonction. C'est fonctions sont plutot proches et j'aurais souhaité les regrouper en une seule et même fonction .
Le hic c'est que dans une, j'ai une boucle de plus que dans l'autre!
Voici la première qui me permet de convertir une lettre de 32 octets :
Et voici la seconde qui me permet de convertir une lettre de 16 octets :
On voit dans la seconde il y a une boucle de moins la boucle m et quelques valeurs qui changent mais ca me j'en chargerais.
Je choisis donc suivant le résultat d’une comparaison d'effectuer soit la première soit la deuxième ;
Comment rendre conditionnelle une boucle ? je ne vois pas comment m'y prendre !
merci
Je cherche à simplifier un bout de code, mais je bloque sur un point !.
en effet suivant le résultat d'un test je dois effectuer tel ou tel fonction. C'est fonctions sont plutot proches et j'aurais souhaité les regrouper en une seule et même fonction .
Le hic c'est que dans une, j'ai une boucle de plus que dans l'autre!
Voici la première qui me permet de convertir une lettre de 32 octets :
Code : Tout sélectionner
//------------------Convertit une lettre composée de 32 Octets -----------------
// Paramètre d'entrée : la position dans le tableau "alphabet" du premier des 32 Octets
void affichage_Lettre2(unsigned int position){
i = j = k = m = valeur = 0;
for (k=0;k<=1;k++){
for (m=0;m<=1;m++){
position += m;
for (i=0;i<=7;i++){
for (j=0;j<=7;j++){
valeur += ( (((font16x8[(position+(k*15)+(j*2))])>>(7-i)) & (0x01)) << j ) ;
}
OLED_M_data(valeur);
valeur = 0 ;
}
}
}
}Et voici la seconde qui me permet de convertir une lettre de 16 octets :
Code : Tout sélectionner
//------------------Convertit une lettre composée de 16 Octets -----------------
// Paramètre d'entrée : la position dans le tableau "alphabet" du premier des 16 Octets
void affichage_Lettre(unsigned int position){
i = j = k = m = valeur = 0;
for (k=0;k<=1;k++){
for (i=0;i<=7;i++){
for (j=0;j<=7;j++){
valeur += ( (((font16x8[(position+(k*8)+j)])>>(7-i)) & (0x01)) << j ) ;
}
OLED_M_data(valeur);
valeur = 0 ;
}
}
}On voit dans la seconde il y a une boucle de moins la boucle m et quelques valeurs qui changent mais ca me j'en chargerais.
Je choisis donc suivant le résultat d’une comparaison d'effectuer soit la première soit la deuxième ;
Comment rendre conditionnelle une boucle ? je ne vois pas comment m'y prendre !
merci
Boucle conditionnelle !
Bonjour
ici viewtopic.php?f=10&t=261&start=20 en #30
un for avec un if
a priori, tu n'as pas compris. Donc, tu fais ton if est dans ton if tu fais ta boucle c'est l'inverse te mon exemple
A+
PS: je trouve que cela commence a faire long cette conversion, il faudrait voir peut -être une autre possibilité .Je sais, tu ne sais pas faire .J'aimerais bien connaître, occupation flash et temps de conversion ,cela serais bien tu ne crois pas
ici viewtopic.php?f=10&t=261&start=20 en #30
un for avec un if
a priori, tu n'as pas compris. Donc, tu fais ton if est dans ton if tu fais ta boucle c'est l'inverse te mon exemple
A+
PS: je trouve que cela commence a faire long cette conversion, il faudrait voir peut -être une autre possibilité .Je sais, tu ne sais pas faire .J'aimerais bien connaître, occupation flash et temps de conversion ,cela serais bien tu ne crois pas
Modifié en dernier par Anonymous le jeu. 26 mai 2016 19:11, modifié 1 fois.
Boucle conditionnelle !
-
Jérémy

Administrateur du site- Messages : 2758
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Hello Maï,
Pour mettre un lien directement d'un post, tu peux directement copier le lien du post en question ! en faisant un clic droit sur le petit chiffre du numéro du post en question celui qui comment par un #, et copier/coller l'adresse du lien :
Si sur ta solution le If se trouve dans la dernière boucle , ce qui n'est pas mon cas ici ! car je ne souhaite pas supprimer les autres blocs imbriqués mais seulement la boucle "m"
Pour mettre un lien directement d'un post, tu peux directement copier le lien du post en question ! en faisant un clic droit sur le petit chiffre du numéro du post en question celui qui comment par un #, et copier/coller l'adresse du lien :
Si sur ta solution le If se trouve dans la dernière boucle , ce qui n'est pas mon cas ici ! car je ne souhaite pas supprimer les autres blocs imbriqués mais seulement la boucle "m"
Boucle conditionnelle !
bon j'ai compris le lien je vais ne coucher moins C.... 
sinon regarde de faire un spg pour la partie commune
bon j'ai voulu modifier ton code directement pas très jolie la présentation pas envie de mettre mplabx en route
A+
sinon regarde de faire un spg pour la partie commune
Code : Tout sélectionner
void affichage_Lettre2(unsigned int position)
{
i = j = k = m = valeur = 0;
for (k=0;k<=1;k++)
{
for (m=0;m<=1;m++)
{
position += m;
call XXX
}
}
}
spg XXX
{
for (i=0;i<=7;i++)
{
for (j=0;j<=7;j++)
{
valeur += ( (((font16x8[(position+(k*15)+(j*2))])>>(7-i)) & (0x01)) << j ) ;
}
OLED_M_data(valeur);
valeur = 0 ;
}
}
bon j'ai voulu modifier ton code directement pas très jolie la présentation pas envie de mettre mplabx en route
A+
Boucle conditionnelle !
Boucle conditionnelle !
-
Jérémy

Administrateur du site- Messages : 2758
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
oui j'avais pensé a l'utilisation d'un SP , mais pas trés élégant. Mon but était de rassembler ces deux fonctions.
oui , pas forcement optimiser niveaux performances, mais simplification . ces 2 fonctions quasiment identiques , c'est dommage de ne pas en faire qu'une seule
tu cherches a optimiser ta conversion ??
oui , pas forcement optimiser niveaux performances, mais simplification . ces 2 fonctions quasiment identiques , c'est dommage de ne pas en faire qu'une seule
Boucle conditionnelle !
Boucle conditionnelle !
bonjour
test ca:
le test
IF M entre boucle K et M
si oui suite
sinon
M=fin de boucle
suite sur boucleI bon je suis sur que tu n'as rien compris alors
test ca:
le test
IF M entre boucle K et M
si oui suite
sinon
M=fin de boucle
suite sur boucleI bon je suis sur que tu n'as rien compris alors
Code : Tout sélectionner
Code : Tout sélectionner
//------------------Convertit une lettre composée de 32 Octets -----------------
// Paramètre d'entrée : la position dans le tableau "alphabet" du premier des 32 Octets
void affichage_Lettre2(unsigned int position){
i = j = k = m = valeur = 0;
for (k=0;k<=1;k++){
TEST m
si oui
for (m=0;m<=1;m++){
position += m;
sinon
m=1;
for (i=0;i<=7;i++){
for (j=0;j<=7;j++){
valeur += ( (((font16x8[(position+(k*15)+(j*2))])>>(7-i)) & (0x01)) << j ) ;
}
OLED_M_data(valeur);
valeur = 0 ;
}
}
}
}
Boucle conditionnelle !
-
Jérémy

Administrateur du site- Messages : 2758
- Âge : 46
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonjour Maï,
J'ai essayé hier et j'avais une erreur de compilation car l'accolade fermante de la boucle "m" pose probléme !
J'entrevois une solution, grâce a ta piste du while .
Si mon test est vrai je ne touche pas à la valeur de "m" , si la condition est fausse je met m=5 ainsi on sortira naturellement de la boucle et elle ne se répétera pas .
Comme ça première valeur =0 ça ne devrait pas déranger qu"elle fasse la première boucle !
A tester !
J'ai essayé hier et j'avais une erreur de compilation car l'accolade fermante de la boucle "m" pose probléme !
J'entrevois une solution, grâce a ta piste du while .
Si mon test est vrai je ne touche pas à la valeur de "m" , si la condition est fausse je met m=5 ainsi on sortira naturellement de la boucle et elle ne se répétera pas .
Comme ça première valeur =0 ça ne devrait pas déranger qu"elle fasse la première boucle !
A tester !
Boucle conditionnelle !
Jérémy a écrit :Bonjour Maï,
J'ai essayé hier et j'avais une erreur de compilation car l'accolade fermante de la boucle "m" pose probléme !
J'entrevois une solution, grâce a ta piste du while .
Si mon test est vrai je ne touche pas à la valeur de "m" , si la condition est fausse je met m=5 ainsi on sortira naturellement de la boucle et elle ne se répétera pas .
Comme ça première valeur =0 ça ne devrait pas déranger qu"elle fasse la première boucle !
A tester !
pas le temps de faire le test je le ferais plus tard
Autre soucis: POURQUOI faire une BOUCLE pour 1 passe ?
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

