IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Machine d'etats en C


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut Machine d'etats en C
    Bonjour,

    Je travaille sur c++ builder, et j'essaie de faire une machine d'etat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    int a=0;
    while(a=0){
    switch(etat)
    {
    case 1 :
    Fonction1();
    etat=2;
    break;
    case 2 :
    Fonction2(); 
    etat=3;
    break;
    case 3 :
    Fonction3(); 
    a=1;
    break;
    }}
    La forme est-elle bonne ?Parce que mon programme ne fonctionne pas...

  2. #2
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    while(a=0) renvoie toujours 0 donc ton code n'est jamais exécuté. Tu aurais utilisé le mode Debug tu t'en serais aperçu.
    Tu as sûrement voulu faire : while(a==0) ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    Au temps pour moi, faute de frappe :/
    C'est bien a==0. Sinon c'est bon ?

  4. #4
    Membre chevronné
    Avatar de Altau
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    296
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 296
    Par défaut
    Essaie le mode "Debug". C'est peut être la valeur de etat qui va pas.

  5. #5
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut,
    s'il te plait utilise les balise [ CODE ] en appuyant sur le # au dessus de la fenêtre où tu tapes ton message, c'est plus lisible.

    Pour ton problème, que ce passe-t-il?

    Quand tu mets un point d'arret (en appuyant sur F5 sur la ligne) sur le while et que tu exécute ton code pas à pas (en appuyant sur F8 ou F7 pour rentrer dans les fonctions) peux tu nous dire où ton code bloque?

    Comme ca, perso je ne vois pas d'erreur sur cette partie. Le mode pas à pas peux t'aider à plus cobler le problème.

    Affaire à suivre ...

  6. #6
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 341
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    int a=0;
     
    while( a==0 )
    {
      switch(etat)
      {
      case 1 :
        Fonction1();
        etat=2;
        break;
     
      case 2 :
        Fonction2(); 
        etat=3;
        break;
     
      case 3 :
        Fonction3(); 
        a=1;
        break;
      }
    }
    Vu comme ça, il n'y a pas d'erreur apparente.
    Juste une petite inquiétude au niveau de la condition de sortie de boucle.
    J'espère que la variable 'a' est mise à '0' dans une des fonctions appelées car sinon, cette boucle est infinie.
    La question est: que se passe-t-il dans ces fonctions ?
    Si elles attendent sur un évènement d'un composant, il faut penser à traiter les messages Windows avec un 'Application->ProcessMessages()'.

    Mais au fait: qu'est-ce qui ne marche pas dans ce programme ?

  7. #7
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Je me permet de répondre à ta place Jerepain, pour le "a" il est passé à 1 dans l'état 3 (case 3) et le changement de la variable "etat" est bien implémenté.

    Par contre, je te rejoins sur ta dernière question rtg57, Qu'est ce qui ne fonctionne pas?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    C'est bon j'ai reussi a faire fonctionner mon programme
    Merci

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 84
    Par défaut
    En fait c'était pour savoir d'où venait mon erreur, et si ma machine d'états devait bien fonctionner ^^

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/09/2009, 16h12
  2. Sortir a tout moment d'une machine d'etats
    Par Jerepain dans le forum C++Builder
    Réponses: 3
    Dernier message: 08/06/2007, 17h15
  3. machine a etat et timer
    Par Fry dans le forum C++
    Réponses: 2
    Dernier message: 25/06/2006, 14h29
  4. Machines d'etats
    Par Fooshi dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 18/03/2004, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo