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

Pascal Discussion :

Une parenthèse agaçante


Sujet :

Pascal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut Une parenthèse agaçante
    Bonjour , lorsque je compile mon programme celui ci me dit qu'il me manque une "(" à un endroit et je ne comprends pas du tt !!
    la variable Sgagnant a été définie comme
    Type Sgagnant =integer;
    j'ai fait 2 essais
    essai 1 :
    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
    Procedure Donnenbrsets(VAR setgagnant:integer);
    Var rep : CHAR;
    Begin
    Writeln
    Writeln('Cat‚gorie de joueurs ?');
    Writeln('1. (F)eminin');
    Writeln('2. (M)asculin');
    Writeln('Choix ?');
    Readln(rep);
    Case rep of
         '1','F','f': Begin
         setgagnant:=2;
         end;
         '2','M','m': Begin
         setgagnant:=3;
         end;
     
    END;
    le 2 ème essai en mettant Sgagnant comme string :

    essai2
    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
    Function Donnenbrsets:integer;
    Var rep : CHAR;
    Begin
    Writeln
    Writeln('Cat‚gorie de joueurs ?');
    Writeln('1. (F)eminin');
    Writeln('2. (M)asculin');
    Writeln('Choix ?');
    Readln(rep);
    Case rep of
         '1','F','f': Begin
         Sgagnant:=2;
         end;
         '2','M','m': Begin
         Sgagnant:=3;
         end;
     
    END;
    à chaque fois que je compile le programme souhaiterai qu'une '(' apparaissent après Sgagnant..

    Quelqu'un a une idée ?
    Merci de l'aide que vous pourriez m'apporter;

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Hie,

    Il manque un end; pour fermer le case.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par droggo Voir le message
    Hie,

    Il manque un end; pour fermer le case.

    ok mais est-ce que cela peut éviter l'histoire de la parenthèse ?

    En fait c'est un projet d'info et j'ose pas mettre tout le prgrm car je sais que le prof traine sur le net :-p .

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Dea,
    Citation Envoyé par Largo62 Voir le message
    ok mais est-ce que cela peut éviter l'histoire de la parenthèse ?

    En fait c'est un projet d'info et j'ose pas mettre tout le prgrm car je sais que le prof traine sur le net :-p .
    Ça fait que le compilateur cherche le end, et trouve celui de la procédure.

    Et à partir de là, il perd un peu les pédales car il est décalé par rapport au code.

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Points : 2 501
    Points
    2 501
    Par défaut
    Citation Envoyé par droggo Voir le message
    Dea,

    Ça fait que le compilateur cherche le end, et trouve celui de la procédure.

    Et à partir de là, il perd un peu les pédales car il est décalé par rapport au code.
    je ne crois pas que ça soit ça. Si le compilateur demande une '(', c' est une parenthese.
    Ce probleme apparait souvent quand on declare un type et qu' on veut l' utiliser comme une variable. Si on le fait, le compilateur crois qu' on veux faire un cast (eh oui ça existe on pascal), et il demande alors les '('.

    De toute façon, on peut rien faire avec ce que tu nous donne. Si tu peux en donner plus, ça aiderait à trouver une solution rapidement (declaration de variables, type, ... )

  6. #6
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Qao,
    Citation Envoyé par darrylsite Voir le message
    je ne crois pas que ça soit ça. Si le compilateur demande une '(', c' est une parenthese.
    Ce probleme apparait souvent quand on declare un type et qu' on veut l' utiliser comme une variable. Si on le fait, le compilateur crois qu' on veux faire un cast (eh oui ça existe on pascal), et il demande alors les '('.

    De toute façon, on peut rien faire avec ce que tu nous donne. Si tu peux en donner plus, ça aiderait à trouver une solution rapidement (declaration de variables, type, ... )
    C'est au contraire très courant : comme il manque un end , et que le compilateur en trouve un plus loin, il est décalé par rapport au code, et il a peu de chances d'être en mesure de comprendre ce qui suit la ligne fautive.
    Il se trouve que dans ce cas, il bute sur un problème de parenthèse, mais ça peut déboucher sur n'importe quelle erreur de compilation, due à une erreur de syntaxe, ou type non déclaré, ou ...

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Bonjour ! suite à vos remarques j'ai observé que j'avais fait un mauvais copié collé.. il y a en fait 2 end ...
    Mais j'ai réalisé quelques modifs et il n'y a plus d'erreur à cet endroit...
    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
    Function Donnenbrsets(var Sgagnant:integer):integer;
    Var rep : CHAR;
    Begin
    Writeln;
    Writeln('Cat‚gorie de joueurs ?');
    Writeln('1. (F)eminin');
    Writeln('2. (M)asculin');
    Writeln('Choix ?');
    Readln(rep);
    Case rep of
         '1','F','f': Begin
                       Sgagnant:=2;
         end;
         '2','M','m': Begin
                       Sgagnant:=3;
         end;
     
    END;
    end;

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Gio,

    Une petite mise en forme ne faisant pas de mal :
    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
    function Donnenbrsets(var Sgagnant : Integer): Integer;
    var 
      rep : Char;
    begin
      Writeln;
      Writeln('Cat‚gorie de joueurs ?');
      Writeln('1. (F)eminin');
      Writeln('2. (M)asculin');
      Writeln('Choix ?');
      Readln(rep);
      case rep of
        '1', 'F', 'f': 
          begin
            Sgagnant := 2;
          end;
        '2', 'M', 'm': 
          begin
            Sgagnant := 3;
          end;
      end;
    end;
    Il manque le retour de la fonction.

    L'erreur ne semble pas provenir de cette procédure, il nous faut donc autre chose.

    Ton compilateur doit te dire sur quelle ligne il trouve l'erreur. Si c'est dans cette fonction, c'est qu'il y en a une plus haut dans le code.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Merci de répondre si vite !
    En fait c'est une partie d'un programme de comptage de points pour un sport

    Je le fais par bloc mais ça n'est pas évident et j'en laisse beaucoup de côté donc si il y a des erreurs c'est normal...
    Par contre j'aimerai bien certains renseignements dessus , j'ai des doutes sur certaines choses et j'aimerai avoir confirmation , est-ce possible de t'envoyer ça par MP ?

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    autre chose .. tu me dis qu'il manque le retour de la fonction, mais moi cette fonction n'a pour but que de mettre telle valeur à la variable Sgagnant c'est tout... Est-ce important ?

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Fao,

    Citation Envoyé par Largo62 Voir le message
    Par contre j'aimerai bien certains renseignements dessus , j'ai des doutes sur certaines choses et j'aimerai avoir confirmation , est-ce possible de t'envoyer ça par MP ?
    Désolé, mais en ce qui me concerne, ce forum étant un forum public d'entraide, je n'apprécie pas d'avoir affaire aux MP pour donner de l'aide.

    Citation Envoyé par Largo62 Voir le message
    autre chose .. tu me dis qu'il manque le retour de la fonction, mais moi cette fonction n'a pour but que de mettre telle valeur à la variable Sgagnant c'est tout... Est-ce important ?
    Oui, c'est important : une fonction qui ne renvoie pas de valeur, c'est un bug.

    La solution est de faire une procédure, mais comme tu mets seulement à jour un Integer, une fonction est préférable (mais pas obligatoire, bien entendu).

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par droggo Voir le message
    Fao,


    Désolé, mais en ce qui me concerne, ce forum étant un forum public d'entraide, je n'apprécie pas d'avoir affaire aux MP pour donner de l'aide.


    Oui, c'est important : une fonction qui ne renvoie pas de valeur, c'est un bug.

    La solution est de faire une procédure, mais comme tu mets seulement à jour un Integer, une fonction est préférable (mais pas obligatoire, bien entendu).

    Pas de problème pour le MP , je comprends cette position.

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

Discussions similaires

  1. [Python 2.X] Requête Python - Extraction caractère à l'intérieur d'une parenthèse
    Par pi_hellz dans le forum Général Python
    Réponses: 17
    Dernier message: 25/02/2015, 17h40
  2. [AC-2010] Saisie d'une parenthèse lors du renommage d'une requête
    Par illight dans le forum Access
    Réponses: 6
    Dernier message: 31/01/2014, 22h05
  3. manque une parenthèse dans un if
    Par sam01 dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2010, 11h11
  4. Réponses: 2
    Dernier message: 26/04/2009, 21h11

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