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

Langage Pascal Discussion :

[TP] Problème de syntaxe


Sujet :

Langage Pascal

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Points : 105
    Points
    105
    Par défaut [TP] Problème de syntaxe
    Salut a tous ! Je débute en Pascal et j'ai besoin de votre aide : j'essaye de faire un programme qui traduit du texte en morse. Voila le code source :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    program morse (output,input) ;
    uses crt ;
    var mot : string ;
        f,i,taille,a : integer ;
        lettre : char;
     
    procedure court;
    begin
         f:=500 ;
         write('. ');
         sound(f);
         delay(2000);
         nosound;
         delay(1000);
    end;
    procedure long ;
    begin
         f:=500 ;
         write('_ ');
         sound(f);
         delay(6000);
         nosound;
         delay(1000);
    end;
    begin
         a:=1 ;
         f:=700 ;
         write('Entrer la phrase : ');
         readln(mot);
         taille:=length(mot) ;
         for i:=1 to taille do begin
         lettre:=mot[a] ;
              case lettre of
                   'a' : court ; long ;
                   'b' : long ; court ; court ; court ;
                   'c' : long ; court ; long ; court ;
                   'd' : long ; court ; court ;
                   'e' : court ;
                   'f' : court ; court ; long ; court ;
                   'g' : long ; long ; court ;
                   'h' : court ; court ; court ; court ;
                   'i' : court ; court ;
                   'j' : court ; long ; long ; long ;
                   'k' : long ; court ; long ;
                   'l' : court ; long ; court ; court ;
                   'm' : long ; long ;
                   'n' : long ; court ;
                   'o' : long ; long ; long ;
                   'p' : court ; long ; long ; court;
                   'q' : long ; long ; court ; long ;
                   'r' : court ; long ; court ;
                   's' : court ; court ; court ;
                   't' : long ;
                   'u' : court ; court ; long ;
                   'v' : court ; court ; court ; long ;
                   'w' : court ; long ; long ;
                   'x' : long ; court ; court ; long ;
                   'y' : long ; court ; long ; long ;
                   'z' : long ; long ; court ; court ;
                   a:=a+1 ;
              end;
         end;
         readln ;
    end.
    Mon probleme vient du fait que lorsque je compile tout (le programme n'est pas fini!), turbo pascal m'indique : "error 143 : invalid procedure or function reference". Pourquoi ce message et comment y remedier ??

    Merci !!

  2. #2
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Bonjour,

    Pour spécifier plusieurs instructions à exécuter ensemble, il faut les encadrer par un begin et un end. Donc votre case à une syntaxe erronée :
    Doit être remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'a': begin
           court;
           long;
         end;
    De plus, vous avez spécifié a := a + 1 juste avant le end relatif au case. Que vient faire cette instruction ici ?

    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  3. #3
    Membre éclairé

    Inscrit en
    Avril 2003
    Messages
    284
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 284
    Points : 773
    Points
    773
    Par défaut
    Il serait peut-etre judiceux de se débarasser carrément de a et d'utiliser directement i de la manière suivante...


  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 113
    Points : 105
    Points
    105
    Par défaut
    ok merci pour la synthaxe de cas of. ouai je vais mettre ca : je vais supprimer le a. Merci

  5. #5
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Et pendant qu'on y est, ce peut être l'occasion d'apprendre plus de choses. Par exemple, tu peux déclarer un tableau contenant l'ensemble des codes morses qui t'intéressent.

    Un petit exemple, tu poseras tes questions dessus :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    uses Crt;
     
    type
      TMorseString = String[4];
     
    const
      MorseFreq = 500;
      MorseLongDelay = 300;
      MorseShortDelay = 100;
      MorsePauseDelay = 300;
     
    const
      MorseCodes: array['A'..'Z'] of TMorseString =
        ('._', '_...', '_._.', '_..', '.', '.._.', 
         '__.', '....', '..', '.___', '_._', '._..', 
         '__', '_.', '___', '.__.', '__._', '._.', 
         '...', '_', '.._', '..._', '.__', '_.._', 
         '_.__', '__..');
     
    procedure MorseSound(C: Char);
    begin
      case C of
      '.': begin
             Write(C);
             Sound(MorseFreq);
             Delay(MorseShortDelay);
             NoSound;
           end;
      '_': begin
             Write(C);
             Sound(MorseFreq);
             Delay(MorseLongDelay);
             NoSound;
           end;
      end;
    end;
     
    procedure MorsePause;
    begin
      Write(' ');
      Delay(MorsePauseDelay);
    end;
     
    procedure MorsePlayChar(C: Char);
    var
      i: Integer;
    begin
      C := UpCase(C);
     
      if C in ['A'..'Z'] then
      begin
        for i := 1 to Length(MorseCodes[C]) do
          MorseSound(MorseCodes[C][i]);
      end;
      MorsePause;
    end;
     
    procedure MorsePlayString(S: String);
    var
      i: Integer;
    begin
      for i := 1 to Length(S) do
        MorsePlayChar(S[i]);
    end;
     
     
    var
      S: String;
     
    begin
      repeat
        Write('Chaine morse : ');
        ReadLn(S);
      until S <> '';
      MorsePlayString(S);
    end.
    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

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

Discussions similaires

  1. Problème de syntaxe - elements['x'].value
    Par Equus dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/02/2005, 11h22
  2. [Interbase] Problème de syntaxe SQL
    Par navis84 dans le forum InterBase
    Réponses: 4
    Dernier message: 22/12/2004, 17h07
  3. Problème de syntaxe
    Par Mister_FX dans le forum ASP
    Réponses: 5
    Dernier message: 30/06/2004, 10h01
  4. Problème de syntaxe ADO ...
    Par bendev dans le forum ASP
    Réponses: 2
    Dernier message: 15/04/2004, 14h38
  5. Réponses: 2
    Dernier message: 08/03/2004, 15h10

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