Procedure en pascal

gotomtom Messages postés 63 Statut Membre -  
gotomtom Messages postés 63 Statut Membre -
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. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
    0
  2. gotomtom Messages postés 63 Statut Membre 97
     
    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 ?
    0
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      En effet avec VAR ça marchera mieux, et sinon, changer le nom de l'unité (ou de la procédure) devrait suffire
      0
  3. gotomtom Messages postés 63 Statut Membre 97
     
    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 :-)
    0