[pascal] difference entre une procedure et une fonction ??

difference entre une procedure et une fonction ?? [pascal] - Delphi/Pascal - Programmation

Marsh Posté le 27-07-2006 à 11:59:20    

bonjour,
la question est sans doute idiote mais je debute (ou la doc n'est suffisamment explicite) et j'ai du mal à cerner la difference entre une procedure et une fonction, quand choisir l'un ou l'autre ?
merci.

Reply

Marsh Posté le 27-07-2006 à 11:59:20   

Reply

Marsh Posté le 27-07-2006 à 16:21:51    

Une fonction renvoi un resultat, la procedure, non.
 
Grosso modo, si tu veut afficher  "hello World" avec des procedure ou fonction, tu t'y prend comme suit :
 
program HelloWorld;
 

interface
  Function  MaFonction : string;
  procedure MaProcedure;
 
implementation
 
Function  MaFonction : string; //la valeur renvoyé par la fonction sera "hello World"
begin
  MaFonction := 'Hello World";
end;
 
procedure MaProcedure; //ecrit "Hello World"
begin
  writeln('Hello World');
end;
 
begin
  MaProcedure; //ecrit "Hello World"
  writeln(MaFonction);//ecrit "HelloWorld"
end;


 
Bon.... J'ai pas testé le code, et comme ca fait une eternité que je n'ai pas fait de pascal pur, il vas peut etre falloir faire des ajustement. Mais grosso-modo, ce programme affiche 2 fois "hello world". des 2 manières diférente.
 

Reply

Marsh Posté le 28-07-2006 à 14:27:14    

Merci, j'ai saisi le principe... ma confusion venait du fait que "procedure" n'existe pas en C++.

Reply

Marsh Posté le 28-07-2006 à 16:32:47    

gentlefred a écrit :

Merci, j'ai saisi le principe... ma confusion venait du fait que "procedure" n'existe pas en C++.


Arf, ok.. Je pensé avoir affaire au pur débutant.
 
Alors pour rentré dans les détail:
Dans une fonction, une variable nommé "result" est implicitement déclaré. Ainsi, tu peut indiféremment écrire:
 

Function  MaFonction : string; //la valeur renvoyé par la fonction sera "hello World"
begin
  MaFonction := 'Hello World";
end;


ou  

Function  MaFonction : string; //la valeur renvoyé par la fonction sera "hello World"
begin
  Result := 'Hello World;
end;


 
Attention, "result" et le nom de la fonction ne sont interchangeables qu'a gauche de l'affectation. Ca évite de créer une varible temporaire quant tu veut te servir d'une valeur intermédiaire dans ton code.
 

Function  MaFonction : string;
  REsult = 1;
  if result =1 then
    result := result +1; //result = 2  
  MaFonction := MaFonction +1; //appel récursif (et dans ce cas sans fin) de la fonction
end;


 
Je sais plus trop comment ça se passe en C, mais en pascal, le fait d'affecter une valeur à la fonction (que ce soit "normalement" ou par "result" ) ne fait pas sortir de la fonction.
 
Et Evidement, comme en C, on peut appeler une fonction sans récupérer son résultat.


Message édité par el zozo le 02-08-2006 à 09:47:35
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed