Les fonctions : définition et syntaxe
Page 1 sur 1
Les fonctions : définition et syntaxe
Règles de traduction
1 Toute fonction ou procédure algorithmique fournissant un seul résultat de type standard sera traduite par une fonction en PASCAL
2 Toute fonction ou procédure algorithmique fournissant zéro, ou plusieurs résultats sera traduite par une procédure en PASCAL
Les FONCTIONS
Structure
La composition d'une fonction est la suivante.
® Une ENTETE composée du mot clé FUNCTION, suivi du nom de la fonction, de la liste des paramètres typés entre parenthèses, et du type du résultat renvoyé par la fonction.
exemple :
FUNCTION Addition (A,B : Integer; C : Real) : Real;
® Une zone facultative de déclaration des variables internes à la fonction.
exemple :
FUNCTION PUISS_ITER(N:real;P:integer) : real;
Var
RES : real;
i :integer;
® Le corps de la fonction délimité par BEGIN et END; qui va contenir la séquence des instructions à exécuter. L'organisation de cette zone respecte le mode d'écriture d'une séquence classique d'instructions .
exemple 1 :
FUNCTION Addition (A,B : Integer; C : Real) : Real;
begin
Addition := A + B + C;
end;
exemple 2 :
FUNCTION PUISS_ITER(N:real;P:byte) : real;
Var RES : real;
i :byte;
begin
RES := 1;
For i := 1 to P do RES := RES * N;
If P < 0 then writeln('Résultat FAUX'); {puisque p de type byte, et ce type est dans l'intervalle 0..255}
PUISS_ITER := RES;
end;
Remarques
++ On note qu'en fin de fonction, il est impératif d'assigner le résultat calculé au nom de la fonction.
pour la fonction Addition
Addition := A + B + C;
pour la fonction PUISS_ITER
PUISS_ITER := RES;
Attention à l'intérieur d'une fonction on ne peut retrouver à droite d'une affectation le nom de la fonction, utilisé comme variable.
exemple :
pour la fonction PUISS_ITER
PUISS_ITER := PUISS_ITER * N; { ERREUR }
++ sauf si on l'utilise comme une fonction récursive c'est à dire une fonction qui s'appelle elle même (phénomène des suites récurentes); dans ce cas il est indispensable de lui passer l'ensemble des paramètres.
exemple :
pour la fonction PUISSANCE
PUISSANCE := PUISSANCE(N,P-1) * N; { Récursivité }
Insertion d'une fonction dans un programme
exemple :
Program TEST_FONCTION;
Var ENT1,ENT2 : integer;
REEL : real;
FUNCTION Addition(A,B:integer;C:real):real;
begin
Addition := A+B+C;
end;
BEGIN {début du programme principal}
REEL := Addition(1,2,1.5); {Appel de la fonction Addition}
writeln('REEL=',REEL);
REEL := Addition(7,3,REEL); {Appel de la fonction Addition}
writeln('REEL=',REEL);
ENT1 := 6;
ENT2 := 3;
REEL := 1.75;
REEL := Addition(ENT1,ENT2,REEL); {Appel de la fonction Addition}
writeln('REEL=',REEL);
END. {fin du programme principal}
Résultats d'exécution.
REEL=4.50
REEL=14.50
REEL=11.75
Remarque :
Il est fondamental que le nombre, et le type des paramètres soient respectés lors de l'appel d'une fonction.
Retour du résultat
Le résultat est toujours rendu à une variable
ou
utilisé dans une condition (instruction conditionnelle ou itération conditionnelle).
Ce qui correspond à des programmations de cet ordre :
REEL := Addition(1,2,1.5);
REEL := Addition(7,3,REEL);
REEL := Addition(ENT1,ENT2,REEL);
if Addition(ENT1,ENT2,REEL) = 16.256 then ...
1 Toute fonction ou procédure algorithmique fournissant un seul résultat de type standard sera traduite par une fonction en PASCAL
2 Toute fonction ou procédure algorithmique fournissant zéro, ou plusieurs résultats sera traduite par une procédure en PASCAL
Les FONCTIONS
Structure
La composition d'une fonction est la suivante.
® Une ENTETE composée du mot clé FUNCTION, suivi du nom de la fonction, de la liste des paramètres typés entre parenthèses, et du type du résultat renvoyé par la fonction.
exemple :
FUNCTION Addition (A,B : Integer; C : Real) : Real;
® Une zone facultative de déclaration des variables internes à la fonction.
exemple :
FUNCTION PUISS_ITER(N:real;P:integer) : real;
Var
RES : real;
i :integer;
® Le corps de la fonction délimité par BEGIN et END; qui va contenir la séquence des instructions à exécuter. L'organisation de cette zone respecte le mode d'écriture d'une séquence classique d'instructions .
exemple 1 :
FUNCTION Addition (A,B : Integer; C : Real) : Real;
begin
Addition := A + B + C;
end;
exemple 2 :
FUNCTION PUISS_ITER(N:real;P:byte) : real;
Var RES : real;
i :byte;
begin
RES := 1;
For i := 1 to P do RES := RES * N;
If P < 0 then writeln('Résultat FAUX'); {puisque p de type byte, et ce type est dans l'intervalle 0..255}
PUISS_ITER := RES;
end;
Remarques
++ On note qu'en fin de fonction, il est impératif d'assigner le résultat calculé au nom de la fonction.
pour la fonction Addition
Addition := A + B + C;
pour la fonction PUISS_ITER
PUISS_ITER := RES;
Attention à l'intérieur d'une fonction on ne peut retrouver à droite d'une affectation le nom de la fonction, utilisé comme variable.
exemple :
pour la fonction PUISS_ITER
PUISS_ITER := PUISS_ITER * N; { ERREUR }
++ sauf si on l'utilise comme une fonction récursive c'est à dire une fonction qui s'appelle elle même (phénomène des suites récurentes); dans ce cas il est indispensable de lui passer l'ensemble des paramètres.
exemple :
pour la fonction PUISSANCE
PUISSANCE := PUISSANCE(N,P-1) * N; { Récursivité }
Insertion d'une fonction dans un programme
exemple :
Program TEST_FONCTION;
Var ENT1,ENT2 : integer;
REEL : real;
FUNCTION Addition(A,B:integer;C:real):real;
begin
Addition := A+B+C;
end;
BEGIN {début du programme principal}
REEL := Addition(1,2,1.5); {Appel de la fonction Addition}
writeln('REEL=',REEL);
REEL := Addition(7,3,REEL); {Appel de la fonction Addition}
writeln('REEL=',REEL);
ENT1 := 6;
ENT2 := 3;
REEL := 1.75;
REEL := Addition(ENT1,ENT2,REEL); {Appel de la fonction Addition}
writeln('REEL=',REEL);
END. {fin du programme principal}
Résultats d'exécution.
REEL=4.50
REEL=14.50
REEL=11.75
Remarque :
Il est fondamental que le nombre, et le type des paramètres soient respectés lors de l'appel d'une fonction.
Retour du résultat
Le résultat est toujours rendu à une variable
ou
utilisé dans une condition (instruction conditionnelle ou itération conditionnelle).
Ce qui correspond à des programmations de cet ordre :
REEL := Addition(1,2,1.5);
REEL := Addition(7,3,REEL);
REEL := Addition(ENT1,ENT2,REEL);
if Addition(ENT1,ENT2,REEL) = 16.256 then ...
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum