Procedure en pascal

Bonjour,

Je débute en programmation et je dois entaîner les procédures en Pascal.

J'ai le bloc Unit suivant :

Unit echange;
Interface

Procedure echange (a:INTEGER; b:INTEGER);

Implementation

Procedure echange (a:INTEGER; b:INTEGER);

VAR
c:INTEGER;
BEGIN
c:=a;
a:=b;
b:=c;
END;
END.

ça doit être ok, le compilateur a accepté.
J'ai le programme suivant :

Program S1E1;
uses echange;

VAR
d:INTEGER;
e:INTEGER;

BEGIN
WRITELN ('tape 2 chiffres');
READLN (d, e);
WRITELN ('d=',' ',d,' ','e=',' ',e);
echange (d, e);
WRITELN ('d=',' ',d,' ','e=',' ',e);
READLN;
END.

A la ligne 12 celle de (echange), il met -Fatal:syntax error, "." expected but "(" found-. Peux-tu m'aider ?

3 réponses

  1. Modérateur
    Je ne sais pas quel compilateur tu utilises, mais avec Dev-Pascal il me mets des erreurs sur l'unité (alors qu'il n'y a pas de problème avec le programme)

    Ta procédure echange, ne devrait pas porter le même nom que ton unité echange.
    De plus, à la fin de l'unité tu mets END. sans avoir mis de BEGIN , ce n'est pas une erreur en soit, mais ce serait quand même plus propre de mettre le BEGIN.

    Unit EchangeUnit; 
    
    ///////////////////////////////////////// 
    
    Interface 
    
    procedure echange (a:integer; b:integer); 
    
    ///////////////////////////////////////// 
    
    Implementation 
    
    procedure echange (a:integer; b:integer); 
    var c:integer; 
    begin 
        c:=a; 
        a:=b; 
        b:=c; 
    end; 
    
    ///////////////////////////////////////// 
    
    BEGIN 
    END.

    Maintenant que ça compile tu verras que ta procédure echange ne fait pas ce que tu veux... mais je te laisse t'entraîner à trouver l'erreur tout seul ;-)
    La confiance n'exclut pas le contrôle
    1. Salut,

      J'utilise Geany comme compilateur.

      Pour l'erreur. il me semble que je dois mettre VAR pour paramètres d'entrée/sortie. a=2 b=4. en entrée et a=4 b=2 en sortie.
      Je n'ai pas mon compilateur sous la main (je suis au travail :-)

      Alors si je change le nom de mon unité, ça devrait compiler ?
      1. Modérateur
        En effet avec VAR ça marchera mieux, et sinon, changer le nom de l'unité (ou de la procédure) devrait suffire
    2. Effectivement en changeant le nom de l'unité, ça fonctionne. j'ai mis Uechange. D'ailleurs, notre prof nous a conseillé de toujours mettre un signe distinctif (U par ex.) pour les unités et de ne pas avoir le même nom que la procédure !

      C'est pas nos erreurs que l'on apprend ! C'est mon 1er programme en procédure, ça se fête :-)