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 ---
Forum général sur le langage C !

Modérateur : Jérémy

Equivalent d'une boucle "For while"
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » sam. 7 mai 2016 08:41

Bonjour tous,

Savez-vous si il existe l’équivalent d'une boucle "for while" en langage C avec MikroC ?

Je m'explique :

Je souhaite faire une boucle en faisant 250 passage ( pour diminuer le contraste), mais seulement quand on laisse le BP appuyé, si on lâche le BP on doit sortir de la boucle .
Ceci dans le but de faire une petite animation sympa avec mon LCD ( SSD1306).

En rusant j'ai donc imitant la boucle for avec un while , mais je me demandais si il n'y avait pas une autre façon de faire ? Je ne sais pas si on peut combiner des conditions dans la boucle for.

Voila ce que j'ai fait (programme simplifié) :

Code : Tout sélectionner

void animation_chiffre(unsigned char chiffre){

     
250;
     while ((
BP_D==1)  && (i>0)){
          
i--;
          
OLED_M_command(SSD1306_SETCONTRAST);
          
OLED_M_command(i);
          
Delay_ms(4);
       }


Merci à vous
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Equivalent d'une boucle "For while"
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#2 Message par paulfjujo » sam. 7 mai 2016 15:35

bonjour,


C'et pas mal comme cela !

mais d'autres variantes sont effectivement possibles.

Code : Tout sélectionner


     i 
= 250;
     while  i>0)
     {
          i--;
     if (BP_D==0)break;
          OLED_M_command(SSD1306_SETCONTRAST);
          OLED_M_command(i);
          Delay_ms(4);
       }
     
ou 
......

     for (i=250; i>0;i--)
     {
     OLED_M_command(SSD1306_SETCONTRAST);
     OLED_M_command(i);
     Delay_ms(4);
     if (BP_D==0) i=0;  // fait sortir de la boucle if
    }
Aide toi, le ciel ou FantasPic t'aidera

Equivalent d'une boucle "For while"
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » sam. 7 mai 2016 15:47

Merci Paul ,

Pas ma la commande break dans un "while", je ne savais pas que ca faisait sortir de la boucle . il faudra que j'y pense quand je ferais un petit dessus !

merci d'avoir jeter un oeil !
C'est en faisant des erreurs, que l'on apprend le mieux !!!


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 39 invités